<?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>81440</bug_id>
          
          <creation_ts>2012-03-16 18:31:23 -0700</creation_ts>
          <short_desc>extract logic of idb tests</short_desc>
          <delta_ts>2012-03-26 20:51:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Grogan">dgrogan</reporter>
          <assigned_to name="David Grogan">dgrogan</assigned_to>
          <cc>jsbell</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>581185</commentid>
    <comment_count>0</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-03-16 18:31:23 -0700</bug_when>
    <thetext>extract logic of idb tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581186</commentid>
    <comment_count>1</comment_count>
      <attachid>132434</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-03-16 18:32:14 -0700</bug_when>
    <thetext>Created attachment 132434
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581190</commentid>
    <comment_count>2</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-03-16 18:36:01 -0700</bug_when>
    <thetext>not ready for review yet, just FYI</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585911</commentid>
    <comment_count>3</comment_count>
      <attachid>133399</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-03-22 17:35:35 -0700</bug_when>
    <thetext>Created attachment 133399
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586677</commentid>
    <comment_count>4</comment_count>
      <attachid>133549</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-03-23 13:31:07 -0700</bug_when>
    <thetext>Created attachment 133549
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586692</commentid>
    <comment_count>5</comment_count>
      <attachid>133551</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-03-23 13:52:39 -0700</bug_when>
    <thetext>Created attachment 133551
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586698</commentid>
    <comment_count>6</comment_count>
      <attachid>133551</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-03-23 13:55:03 -0700</bug_when>
    <thetext>Comment on attachment 133551
Patch

Josh, this is ready for a look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586773</commentid>
    <comment_count>7</comment_count>
      <attachid>133551</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-03-23 14:47:26 -0700</bug_when>
    <thetext>Comment on attachment 133551
Patch

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

&gt; LayoutTests/ChangeLog:14
&gt; +        The first three simulate mouse events and the last isn&apos;t really a test.

structured-clone.html uses mouse events too (to create File/FileList objects, although those tests are currently disabled). Should it be skipped too?

That test also uses a few more things like ImageData that workers won&apos;t be able to create. We may want to split that test up or make it validate both window and worker cases, passing the cloned values to the worker. (values-odd-types.html does similar work, but is probably a redundant subset now)

&gt; LayoutTests/storage/indexeddb/createObjectStore-name-argument-required.html:-1
&gt; -&lt;!DOCTYPE html&gt;

Just removing the DOCTYPE preamble for consistency? In IE this is used to trigger &quot;standards mode&quot;, I don&apos;t know if WebKit actually does anything with it. It shouldn&apos;t matter either way for the test. It&apos;s strictly required by the HTML5 spec, though - http://dev.w3.org/html5/spec/single-page.html#syntax-doctype

&gt; LayoutTests/storage/indexeddb/list-ordering.html:-7
&gt; -&lt;input type=&quot;file&quot; id=&quot;fileInput&quot; multiple&gt;&lt;/input&gt;

Oops, thanks for deleting this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586775</commentid>
    <comment_count>8</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-03-23 14:47:43 -0700</bug_when>
    <thetext>... and otherwise lgtm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586809</commentid>
    <comment_count>9</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-03-23 15:35:23 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 133551 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=133551&amp;action=review
&gt; 
&gt; &gt; LayoutTests/ChangeLog:14
&gt; &gt; +        The first three simulate mouse events and the last isn&apos;t really a test.
&gt; 
&gt; structured-clone.html uses mouse events too (to create File/FileList objects, although those tests are currently disabled). Should it be skipped too?
&gt; 
&gt; That test also uses a few more things like ImageData that workers won&apos;t be able to create. We may want to split that test up or make it validate both window and worker cases, passing the cloned values to the worker. (values-odd-types.html does similar work, but is probably a redundant subset now)

Structured cloning on workers seems ripe for corner cases so I want to do one of your suggestions, or something intelligent, but will skip it for now.

&gt; &gt; LayoutTests/storage/indexeddb/createObjectStore-name-argument-required.html:-1
&gt; &gt; -&lt;!DOCTYPE html&gt;
&gt; 
&gt; Just removing the DOCTYPE preamble for consistency?

Just for consistency.  All the html files were generated from a single template.

In IE this is used to trigger &quot;standards mode&quot;, I don&apos;t know if WebKit actually does anything with it. It shouldn&apos;t matter either way for the test. It&apos;s strictly required by the HTML5 spec, though - http://dev.w3.org/html5/spec/single-page.html#syntax-doctype
&gt; 
&gt; &gt; LayoutTests/storage/indexeddb/list-ordering.html:-7
&gt; &gt; -&lt;input type=&quot;file&quot; id=&quot;fileInput&quot; multiple&gt;&lt;/input&gt;
&gt; 
&gt; Oops, thanks for deleting this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586826</commentid>
    <comment_count>10</comment_count>
      <attachid>133576</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-03-23 15:48:12 -0700</bug_when>
    <thetext>Created attachment 133576
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586919</commentid>
    <comment_count>11</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-03-23 17:55:20 -0700</bug_when>
    <thetext>Tony, could you review this?

I&apos;m not sure why win-ews can&apos;t apply the patch.  win_layout_rel applied it without problems.
http://build.chromium.org/p/tryserver.chromium/builders/win_layout_rel/builds/152/steps/update/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587815</commentid>
    <comment_count>12</comment_count>
      <attachid>133576</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-03-26 09:24:04 -0700</bug_when>
    <thetext>Comment on attachment 133576
Patch

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

rs=me

&gt; LayoutTests/ChangeLog:29
&gt; +        * storage/indexeddb/constants.html:
&gt; +        * storage/indexeddb/create-and-remove-object-store.html:
&gt; +        * storage/indexeddb/create-object-store-options.html:
&gt; +        * storage/indexeddb/createObjectStore-name-argument-required.html:
&gt; +        * storage/indexeddb/createObjectStore-null-name.html:
&gt; +        * storage/indexeddb/cursor-continue.html:
&gt; +        * storage/indexeddb/cursor-delete.html:

It&apos;s OK to trim this.  You could just list the important files (e.g., the two -expected.txt files where line numbers changed).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588201</commentid>
    <comment_count>13</comment_count>
      <attachid>133907</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-03-26 15:37:55 -0700</bug_when>
    <thetext>Created attachment 133907
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588306</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-26 16:41:21 -0700</bug_when>
    <thetext>Attachment 133907 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/stor...&quot; exit_code: 1
LayoutTests/ChangeLog:26:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Total errors found: 1 in 245 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588307</commentid>
    <comment_count>15</comment_count>
      <attachid>133907</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-26 16:43:39 -0700</bug_when>
    <thetext>Comment on attachment 133907
Patch for landing

Rejecting attachment 133907 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

ERROR: /mnt/git/webkit-commit-queue/LayoutTests/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/12148089</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588317</commentid>
    <comment_count>16</comment_count>
      <attachid>133931</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-03-26 16:49:24 -0700</bug_when>
    <thetext>Created attachment 133931
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588532</commentid>
    <comment_count>17</comment_count>
      <attachid>133931</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-26 20:51:27 -0700</bug_when>
    <thetext>Comment on attachment 133931
Patch for landing

Clearing flags on attachment: 133931

Committed r112202: &lt;http://trac.webkit.org/changeset/112202&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588533</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-26 20:51:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132434</attachid>
            <date>2012-03-16 18:32:14 -0700</date>
            <delta_ts>2012-03-22 17:35:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81440-20120316183213.patch</filename>
            <type>text/plain</type>
            <size>699891</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMDYzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9iYXNpY3MuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2Jhc2ljcy5odG1sCmluZGV4IGJlMzE3NDk1ODk4ZTA1Y2ExOTlhMGRkZWRmYzFiNWQ4NDA3MjJm
YzEuLmE2NmM2YWE3OTdhNGI5OTlmZjg1NWExYTY1YWM3NmY0MGJlMGM1NjQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Jhc2ljcy5odG1sCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Jhc2ljcy5odG1sCkBAIC00LDggKzQsNiBAQAogPHNjcmlw
dCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08
cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgogPHNjcmlw
dCBzcmM9InJlc291cmNlcy9iYXNpY3MuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jb25zdGFudHMuaHRtbCBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2NvbnN0YW50cy5odG1sCmluZGV4IDMyNWNi
YTc0MDUyZmZkZTg5YTYxM2JhMjkyZjA3ZDgzNWNmNjk5YTkuLmQ3ZjBmMTQ0ZGZlN2JhNzhhNjQy
NGIxZTBhNzUzMzkyZjBkYmNmYjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2NvbnN0YW50cy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2NvbnN0YW50cy5odG1sCkBAIC00LDQ2ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
c2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9u
Ij48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9u
KCJUZXN0IEluZGV4ZWREQidzIGNvbnN0YW50cy4iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0g
ICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICBzaG91bGRCZSgiSURCRGF0YWJhc2VFeGNl
cHRpb24uVU5LTk9XTl9FUlIiLCAiMSIpOwotICAgIHNob3VsZEJlKCJJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5OT05fVFJBTlNJRU5UX0VSUiIsICIyIik7Ci0gICAgc2hvdWxkQmUoIklEQkRhdGFiYXNl
RXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiLCAiMyIpOwotICAgIHNob3VsZEJlKCJJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5DT05TVFJBSU5UX0VSUiIsICI0Iik7Ci0gICAgc2hvdWxkQmUoIklEQkRhdGFi
YXNlRXhjZXB0aW9uLkRBVEFfRVJSIiwgIjUiKTsKLSAgICBzaG91bGRCZSgiSURCRGF0YWJhc2VF
eGNlcHRpb24uTk9UX0FMTE9XRURfRVJSIiwgIjYiKTsKLSAgICBzaG91bGRCZSgiSURCRGF0YWJh
c2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIiwgIjciKTsKLSAgICBzaG91bGRC
ZSgiSURCRGF0YWJhc2VFeGNlcHRpb24uQUJPUlRfRVJSIiwgIjgiKTsKLSAgICBzaG91bGRCZSgi
SURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUiIsICI5Iik7Ci0gICAgc2hvdWxkQmUo
IklEQkRhdGFiYXNlRXhjZXB0aW9uLlRJTUVPVVRfRVJSIiwgIjEwIik7Ci0gICAgc2hvdWxkQmUo
IklEQkRhdGFiYXNlRXhjZXB0aW9uLlFVT1RBX0VSUiIsICIxMSIpOwotICAgIHNob3VsZEJlKCJJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5WRVJfRVJSIiwgIjEyIik7Ci0KLSAgICBzaG91bGRCZSgiSURC
UmVxdWVzdC5MT0FESU5HIiwgIjEiKTsKLSAgICBzaG91bGRCZSgiSURCUmVxdWVzdC5ET05FIiwg
IjIiKTsKLQotICAgIHNob3VsZEJlKCJJREJDdXJzb3IuTkVYVCIsICIwIik7Ci0gICAgc2hvdWxk
QmUoIklEQkN1cnNvci5ORVhUX05PX0RVUExJQ0FURSIsICIxIik7Ci0gICAgc2hvdWxkQmUoIklE
QkN1cnNvci5QUkVWIiwgIjIiKTsKLSAgICBzaG91bGRCZSgiSURCQ3Vyc29yLlBSRVZfTk9fRFVQ
TElDQVRFIiwgIjMiKTsKLQotICAgIHNob3VsZEJlKCJJREJUcmFuc2FjdGlvbi5SRUFEX09OTFki
LCAiMCIpOwotICAgIHNob3VsZEJlKCJJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFIiwgIjEiKTsK
LSAgICBzaG91bGRCZSgiSURCVHJhbnNhY3Rpb24uVkVSU0lPTl9DSEFOR0UiLCAiMiIpOwotfQot
Ci10ZXN0KCk7Ci0KLWZpbmlzaEpTVGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvY29uc3RhbnRzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlLWFuZC1y
ZW1vdmUtb2JqZWN0LXN0b3JlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9j
cmVhdGUtYW5kLXJlbW92ZS1vYmplY3Qtc3RvcmUuaHRtbAppbmRleCBiZjFlOGVhNDhlNDZkOTAy
NTVjZDQ1ZDMzYmI1ZmQyMDM0ODc3ZWY0Li43Yzg5ZjVlOTljNmI2ODQ0MzQ3ZDQ2YmFlNTczYjg0
MDljNzQ1YWJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jcmVh
dGUtYW5kLXJlbW92ZS1vYmplY3Qtc3RvcmUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9jcmVhdGUtYW5kLXJlbW92ZS1vYmplY3Qtc3RvcmUuaHRtbApAQCAtNCw3MCAr
NCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hl
YWQ+CiA8Ym9keT4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBjcmVhdGUg
YW5kIHJlbW92ZU9iamVjdFN0b3JlIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92
ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5v
cGVuKCdjcmVhdGUtYW5kLXJlbW92ZS1vYmplY3Qtc3RvcmUnKSIpOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkZWJ1Zygi
b3BlblN1Y2Nlc3MoKToiKTsKLSAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50
YXJnZXQucmVzdWx0Iik7Ci0gICAgdGVzdENyZWF0ZUFuZFJlbW92ZSgpOwotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXN1bHQgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB0ZXN0Q3JlYXRlQW5kUmVtb3ZlKCk7Ci19
Ci0KLWZ1bmN0aW9uIHRlc3RDcmVhdGVBbmRSZW1vdmUoKQotewotICAgIGRlYnVnKCJUcnlpbmcg
Y3JlYXRlIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbignZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoInNvbWUgb3MiKScsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9FUlIiKTsK
LSAgICBkZWJ1ZygiVHJ5aW5nIHJlbW92ZSIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24o
J2RiLmRlbGV0ZU9iamVjdFN0b3JlKCJzb21lIG9zIiknLCAiSURCRGF0YWJhc2VFeGNlcHRpb24u
Tk9UX0FMTE9XRURfRVJSIik7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQotewotICAg
IGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBvcyA9IGV2YWxBbmRMb2coImRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCd0bXAnKSIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRi
LmNyZWF0ZU9iamVjdFN0b3JlKCd0bXAnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5DT05TVFJB
SU5UX0VSUiIpOwotCi0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0
aW9uKFsndG1wJ10pIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0
b3JlKCd0bXAnKS5nZXQoMCkiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHRyeU9uY2VNb3Jl
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1m
dW5jdGlvbiB0cnlPbmNlTW9yZSgpCi17Ci0gICAgc2hvdWxkQmVVbmRlZmluZWQoImV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKLQotICAgIHRlc3RDcmVhdGVBbmRSZW1vdmUoKTsKLQotICAgIGRlYnVn
KCJUcnlpbmcgY3JlYXRlIHdpdGggc3RvcmUgdGhhdCBhbHJlYWR5IGV4aXN0cyIpOwotICAgIGV2
YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLmNyZWF0ZU9iamVjdFN0b3JlKCd0bXAnKSIsICJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9FUlIiKTsKLSAgICBkZWJ1ZygiVHJ5aW5nIHJl
bW92ZSB3aXRoIHN0b3JlIHRoYXQgYWxyZWFkeSBleGlzdHMiKTsKLSAgICBldmFsQW5kRXhwZWN0
RXhjZXB0aW9uKCJkYi5kZWxldGVPYmplY3RTdG9yZSgndG1wJykiLCAiSURCRGF0YWJhc2VFeGNl
cHRpb24uTk9UX0FMTE9XRURfRVJSIik7Ci0KLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10
ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jcmVhdGUtYW5kLXJl
bW92ZS1vYmplY3Qtc3RvcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jcmVhdGUtb2JqZWN0
LXN0b3JlLW9wdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0
ZS1vYmplY3Qtc3RvcmUtb3B0aW9ucy5odG1sCmluZGV4IGJmOTRkMzY2ZTBhMDIxNDgyOGYxNDhi
N2I4NmRhODc4NWU1YzBiN2MuLjc3YzMzM2FiZTlkYWM2OTcwMWU2ZDEwMmI4NWY1ZGMxZmU3MWFh
ZTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZS1vYmpl
Y3Qtc3RvcmUtb3B0aW9ucy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2NyZWF0ZS1vYmplY3Qtc3RvcmUtb3B0aW9ucy5odG1sCkBAIC00LDg1ICs0LDcgQEAKIDxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5Pgot
PHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3Jp
cHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGNyZWF0ZU9iamVjdFN0b3JlJ3Mg
dmFyaW91cyBvcHRpb25zIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRv
clByZWZpeGVzKCk7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4o
J2NyZWF0ZS1vYmplY3Qtc3RvcmUtb3B0aW9ucycsICdkZXNjcmlwdGlvbicpIik7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAg
IGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjbGVhbkRhdGFi
YXNlKCkKLXsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgZXZhbEFuZExv
ZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2EnLCB7a2V5UGF0aDogJ2EnfSkiKTsKLSAgICBldmFs
QW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnYicpIik7Ci0KLSAgICBkZWJ1ZygiZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ2MnLCB7YXV0b0luY3JlbWVudDogdHJ1ZX0pOyIpOwotICAgIGRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCdjJywge2F1dG9JbmNyZW1lbnQ6IHRydWV9KTsKLQotICAgIHRyYW5z
ID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ2EnLCAnYiddLCBJREJUcmFu
c2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIHNob3VsZEJlKCJ0cmFucy5tb2RlIiwgIklEQlRy
YW5zYWN0aW9uLlJFQURfV1JJVEUiKTsKLQotICAgIHJlcSA9IGV2YWxBbmRMb2coInRyYW5zLm9i
amVjdFN0b3JlKCdhJykucHV0KHsnYSc6IDB9KSIpOwotICAgIHJlcS5vbnN1Y2Nlc3MgPSBwdXRC
OwotICAgIHJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0KLSAgICBldmFs
QW5kRXhwZWN0RXhjZXB0aW9uQ2xhc3MoImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdkJywgJ2Jhcicp
OyIsICJUeXBlRXJyb3IiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uQ2xhc3MoImRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCdlJywgZmFsc2UpOyIsICJUeXBlRXJyb3IiKTsKLX0KLQotZnVuY3Rp
b24gcHV0QigpCi17Ci0gICAgcmVxID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2In
KS5wdXQoeydhJzogMH0sIDApIik7ICAvLyBPT1BTCi0gICAgcmVxLm9uc3VjY2VzcyA9IGdldEE7
Ci0gICAgcmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rp
b24gZ2V0QSgpCi17Ci0gICAgcmVxID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2En
KS5nZXQoMCkiKTsKLSAgICByZXEub25zdWNjZXNzID0gZ2V0QjsKLSAgICByZXEub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBnZXRCKCkKLXsKLSAgICBz
aG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5hIiwgInthOiAwfSIpOwotCi0gICAgcmVxID0g
ZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2InKS5nZXQoMCkiKTsKLSAgICByZXEub25z
dWNjZXNzID0gY2hlY2tCOwotICAgIHJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIGNoZWNrQigpCi17Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdl
dC5yZXN1bHQuYSIsICJ7YTogMH0iKTsKLQotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRl
c3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NyZWF0ZS1vYmplY3Qt
c3RvcmUtb3B0aW9ucy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZU9iamVjdFN0b3Jl
LW5hbWUtYXJndW1lbnQtcmVxdWlyZWQuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2NyZWF0ZU9iamVjdFN0b3JlLW5hbWUtYXJndW1lbnQtcmVxdWlyZWQuaHRtbAppbmRleCA0
ODA5MGMyOWI1MDc4Yzk4ZGQ1YTI2NTk5YzZjOWVkZjNlYjFjMDFlLi5lZThmYThlNzdkMjRkZWY4
ODBlNzE2ZTZkOTYxZTg3OTQ0MzAxYjU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9jcmVhdGVPYmplY3RTdG9yZS1uYW1lLWFyZ3VtZW50LXJlcXVpcmVkLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlT2JqZWN0U3RvcmUtbmFt
ZS1hcmd1bWVudC1yZXF1aXJlZC5odG1sCkBAIC0xLDQ4ICsxLDEwIEBACi08IURPQ1RZUEUgaHRt
bD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQu
anMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4K
LTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3Qg
SW5kZXhlZERCIGNyZWF0ZU9iamVjdFN0b3JlIG5hbWUgYXJndW1lbnQgaXMgcmVxdWlyZWQiKTsK
LQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAg
IG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRl
c3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbihu
YW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNz
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1m
dW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
ZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQ
b3B1bGF0ZU9iamVjdFN0b3JlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkK
LXsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgc2hvdWxkVGhyb3coImRi
LmNyZWF0ZU9iamVjdFN0b3JlKCk7Iik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVz
dCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY3JlYXRlT2JqZWN0U3Rv
cmUtbmFtZS1hcmd1bWVudC1yZXF1aXJlZC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4K
IDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0
ZU9iamVjdFN0b3JlLW51bGwtbmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvY3JlYXRlT2JqZWN0U3RvcmUtbnVsbC1uYW1lLmh0bWwKaW5kZXggYmViMTg2ZjM5M2FkMGE2
ZWRjODEzZmVmNmM3MWVlNGFkM2E3MDZkOS4uYjJhYThhMzA4MWExMDBjZDUxMWMxNWU1ZGZjZTEy
MTU3OTE3N2NmYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Jl
YXRlT2JqZWN0U3RvcmUtbnVsbC1uYW1lLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvY3JlYXRlT2JqZWN0U3RvcmUtbnVsbC1uYW1lLmh0bWwKQEAgLTEsNDkgKzEsMTAg
QEAKLTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxwIGlkPSJk
ZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0PgotCi1k
ZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgY3JlYXRlT2JqZWN0U3RvcmUgbnVsbCBoYW5kbGlu
ZyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwot
Ci0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAi
TXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5v
cGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1
Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19
Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVl
c3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0
ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3Rv
cmUoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBvYmplY3RTdG9y
ZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKG51bGwpOyIpOwotICAgIHNob3Vs
ZEJlKCJvYmplY3RTdG9yZS5uYW1lIiwgIidudWxsJyIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwot
fQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NyZWF0
ZU9iamVjdFN0b3JlLW51bGwtbmFtZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1j
b250aW51ZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWNvbnRp
bnVlLmh0bWwKaW5kZXggNDk3ZTFlMTY5ZGU0MTNkZGFiMjIwNGUzMGFiZjEzZjc1MjA0NGY3OS4u
MDZiZjcxNThhNzM5MzFjNDBhOTI3YmYxMDdiZWQ3YmRlMmYxMDBmMyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWNvbnRpbnVlLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWNvbnRpbnVlLmh0bWwKQEAgLTQsMjc3
ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwv
aGVhZD4KIDxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KLTxzY3JpcHQ+IAotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBJREJD
dXJzb3IuY29udGludWUoKSB3aXRoIGEga2V5IHBhcmFtZXRlci4iKTsKLQotdmFyIGRhdGUgPSBu
ZXcgRGF0ZSgpOwotCi0vLyBJbiBvcmRlciBvZiBob3cgaXQgc2hvdWxkIGJlIHNvcnRlZCBieSBJ
bmRleGVkREIuCi1zZWxmLnRlc3REYXRhID0gWwotICAgIDAsCi0gICAgMSwKLSAgICAxLAotICAg
IDMuMTQxNTksCi0gICAgMy4xNDE1OSwKLSAgICAxMCwKLSAgICAxMSwKLSAgICAxMiwKLSAgICAx
MywKLSAgICBkYXRlLAotICAgIGRhdGUsCi0gICAgbmV3IERhdGUoZGF0ZS52YWx1ZU9mKCkgKyAx
MDAwKSwKLSAgICAiQSBiaWcgc3RyaW5nIiwKLSAgICAiQSBiaWcgc3RyaW5nIiwKLSAgICAiQSBi
aXQxIiwKLSAgICAiQSBiaXQyIiwKLSAgICAiQSBiaXQzIiwKLSAgICAidGhlIEJJR0dFU1Qgc3Ry
aW5nIgotXTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMo
KTsKLSAgICBvcGVuRGF0YWJhc2UoKTsKLX0KLQotZnVuY3Rpb24gb3BlbkRhdGFiYXNlKCkKLXsK
LSAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignY3Vyc29yLWNvbnRpbnVl
JykiKTsKLSAgICByZXN1bHQub25zdWNjZXNzID0gc2V0VmVyc2lvbjsKLSAgICByZXN1bHQub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotIAotZnVuY3Rpb24gc2V0VmVyc2lv
bigpCi17Ci0gICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dCIpOwotCi0gICAgcmVzdWx0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNp
b24nKSIpOwotICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKLSAgICByZXN1
bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBkZWxl
dGVFeGlzdGluZygpCi17Ci0gICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsK
LSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0KLSAgICBkZWxl
dGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgc2VsZi5vYmplY3RTdG9yZSA9IGV2YWxBbmRM
b2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzb21lT2JqZWN0U3RvcmUnKSIpOwotICAgIHNlbGYu
aW5kZXhPYmplY3QgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgnc29tZUlu
ZGV4JywgJ3gnKSIpOwotICAgIHNlbGYubmV4dFRvQWRkID0gMDsKLSAgICBhZGREYXRhKCk7Ci19
Ci0KLWZ1bmN0aW9uIGFkZERhdGEoKQotewotICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coIm9iamVj
dFN0b3JlLmFkZCh7J3gnOiB0ZXN0RGF0YVtuZXh0VG9BZGRdfSwgbmV4dFRvQWRkKSIpOwotICAg
IHJlc3VsdC5vbnN1Y2Nlc3MgPSArK3NlbGYubmV4dFRvQWRkIDwgdGVzdERhdGEubGVuZ3RoID8g
YWRkRGF0YSA6IGFzY2VuZGluZ1Rlc3Q7Ci0gICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYXNjZW5kaW5nVGVzdCgpCi17Ci0gICAgZGVi
dWcoIiIpOwotICAgIHZhciByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhPYmplY3Qub3Blbktl
eUN1cnNvcihudWxsLCBJREJDdXJzb3IuTkVYVCkiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGFzY2VuZGluZ0NhbGxiYWNrOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotICAgIHNlbGYuc3RhZ2UgPSAwOwotfQotCi1mdW5jdGlvbiBhc2NlbmRpbmdD
YWxsYmFjaygpCi0KLXsKLSAgICBpZiAoc2VsZi5zdGFnZSA9PSAwKSB7Ci0gICAgICAgIHNob3Vs
ZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMCIpOwotICAgICAgICBldmFs
QW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKDMuMTQxNTkpIik7Ci0gICAgfSBl
bHNlIGlmIChzZWxmLnN0YWdlID09IDEpIHsKLSAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdl
dC5yZXN1bHQucHJpbWFyeUtleSIsICIzIik7Ci0gICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRh
cmdldC5yZXN1bHQuY29udGludWUoKSIpOwotICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSAy
KSB7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAi
NCIpOwotICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCki
KTsKLSAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gMykgewotICAgICAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjUiKTsKLSAgICAgICAgZXZhbEFuZExv
ZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgxMikiKTsKLSAgICB9IGVsc2UgaWYgKHNl
bGYuc3RhZ2UgPT0gNCkgewotICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5w
cmltYXJ5S2V5IiwgIjciKTsKLSAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3Vs
dC5jb250aW51ZShkYXRlKSIpOwotICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSA1KSB7Ci0g
ICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiOSIpOwot
ICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKLSAg
ICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gNikgewotICAgICAgICBzaG91bGRCZSgiZXZlbnQu
dGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjEwIik7Ci0gICAgICAgIGV2YWxBbmRMb2coImV2
ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOwotICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFn
ZSA9PSA3KSB7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlL
ZXkiLCAiMTEiKTsKLSAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250
aW51ZSgnQSBiaXQxJykiKTsKLSAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gOCkgewotICAg
ICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjE0Iik7Ci0g
ICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoJ0EgYml0Mycp
Iik7Ci0gICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDkpIHsKLSAgICAgICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIxNiIpOwotICAgICAgICBldmFsQW5k
TG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCd0aGUgQklHR0VTVCBzdHJpbmcnKSIp
OwotICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSAxMCkgewotICAgICAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjE3Iik7Ci0gICAgICAgIGV2YWxBbmRM
b2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOwotICAgIH0gZWxzZSBpZiAoc2Vs
Zi5zdGFnZSA9PSAxMSkgewotICAgICAgICBzaG91bGRCZU51bGwoImV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKLSAgICAgICAgZGVzY2VuZGluZ1Rlc3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0g
ZWxzZSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIklsbGVnYWwgc3RhZ2UuIik7Ci0gICAgfQotICAg
IHNlbGYuc3RhZ2UrKzsKLX0KLQotZnVuY3Rpb24gZGVzY2VuZGluZ1Rlc3QoKQotewotICAgIGRl
YnVnKCIiKTsKLSAgICB2YXIgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0Lm9wZW5L
ZXlDdXJzb3IobnVsbCwgSURCQ3Vyc29yLlBSRVYpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBkZXNjZW5kaW5nQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci0gICAgc2VsZi5zdGFnZSA9IDA7Ci19Ci0KLWZ1bmN0aW9uIGRlc2NlbmRp
bmdDYWxsYmFjaygpCi17Ci0gICAgaWYgKHNlbGYuc3RhZ2UgPT0gMCkgewotICAgICAgICBzaG91
bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjE3Iik7Ci0gICAgICAgIGV2
YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoJ0EgYml0MicpIik7Ci0gICAg
fSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDEpIHsKLSAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRh
cmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIxNSIpOwotICAgICAgICBldmFsQW5kTG9nKCJldmVu
dC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKLSAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2Ug
PT0gMikgewotICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5
IiwgIjE0Iik7Ci0gICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGlu
dWUoZGF0ZSkiKTsKLSAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gMykgewotICAgICAgICBz
aG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjEwIik7Ci0gICAgICAg
IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOwotICAgIH0gZWxz
ZSBpZiAoc2VsZi5zdGFnZSA9PSA0KSB7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQu
cmVzdWx0LnByaW1hcnlLZXkiLCAiOSIpOwotICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJn
ZXQucmVzdWx0LmNvbnRpbnVlKDEpIik7Ci0gICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDUp
IHsKLSAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIy
Iik7Ci0gICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIp
OwotICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSA2KSB7Ci0gICAgICAgIHNob3VsZEJlKCJl
dmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMSIpOwotICAgICAgICBldmFsQW5kTG9n
KCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKLSAgICB9IGVsc2UgaWYgKHNlbGYu
c3RhZ2UgPT0gNykgewotICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmlt
YXJ5S2V5IiwgIjAiKTsKLSAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5j
b250aW51ZSgpIik7Ci0gICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDgpIHsKLSAgICAgICAg
c2hvdWxkQmVOdWxsKCJldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgICAgIGFzY2VuZGluZ0Vy
cm9yVGVzdExlc3NUaGFuKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9IGVsc2UgewotICAgICAg
ICB0ZXN0RmFpbGVkKCJJbGxlZ2FsIHN0YWdlLiIpOwotICAgIH0KLSAgICBzZWxmLnN0YWdlKys7
Ci19Ci0KLWZ1bmN0aW9uIGFzY2VuZGluZ0Vycm9yVGVzdExlc3NUaGFuKCkKLXsKLSAgICBkZWJ1
ZygiIik7Ci0gICAgdmFyIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5vcGVuS2V5
Q3Vyc29yKG51bGwsIElEQkN1cnNvci5ORVhUKSIpOwotICAgIHNlbGYuc3RhZ2UgPSAwOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmIChzZWxmLnN0YWdlID09PSAwKSB7
Ci0gICAgICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5Iiwg
IjAiKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGlu
dWUoMy4xNDE1OSkiKTsKLSAgICAgICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDEpIHsKLSAg
ICAgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMyIp
OwotICAgICAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZXZlbnQudGFyZ2V0LnJlc3Vs
dC5jb250aW51ZSgxKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotICAgICAg
ICAgICAgYXNjZW5kaW5nRXJyb3JUZXN0RXF1YWwoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgdGVzdEZhaWxlZCgiSWxsZWdhbCBzdGFnZS4iKTsK
LSAgICAgICAgfQotICAgICAgICBzZWxmLnN0YWdlKys7Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24g
YXNjZW5kaW5nRXJyb3JUZXN0RXF1YWwoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICB2YXIgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3IobnVsbCwgSURCQ3Vy
c29yLk5FWFQpIik7Ci0gICAgc2VsZi5zdGFnZSA9IDA7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlv
bigpIHsKLSAgICAgICAgaWYgKHNlbGYuc3RhZ2UgPT09IDApIHsKLSAgICAgICAgICAgIHNob3Vs
ZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMCIpOwotICAgICAgICAgICAg
ZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgzLjE0MTU5KSIpOwotICAg
ICAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gMSkgewotICAgICAgICAgICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIzIik7Ci0gICAgICAgICAgICBldmFs
QW5kRXhwZWN0RXhjZXB0aW9uKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKDMuMTQxNTkp
IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0gICAgICAgICAgICBkZXNjZW5k
aW5nRXJyb3JUZXN0R3JlYXRlclRoYW4oKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgdGVzdEZhaWxlZCgiSWxsZWdhbCBzdGFnZS4iKTsKLSAgICAg
ICAgfQotICAgICAgICBzZWxmLnN0YWdlKys7Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24gZGVzY2Vu
ZGluZ0Vycm9yVGVzdEdyZWF0ZXJUaGFuKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgdmFyIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5vcGVuS2V5Q3Vyc29yKG51bGwsIElEQkN1
cnNvci5QUkVWKSIpOwotICAgIHNlbGYuc3RhZ2UgPSAwOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24oKSB7Ci0gICAgICAgIGlmIChzZWxmLnN0YWdlID09IDApIHsKLSAgICAgICAgICAgIHNob3Vs
ZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMTciKTsKLSAgICAgICAgICAg
IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoJ0EgYml0MicpIik7Ci0g
ICAgICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSAxKSB7Ci0gICAgICAgICAgICBzaG91bGRC
ZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjE1Iik7Ci0gICAgICAgICAgICBl
dmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCdBIGJp
dDMnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotICAgICAgICAgICAgZGVz
Y2VuZGluZ0Vycm9yVGVzdEVxdWFsKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgIHRlc3RGYWlsZWQoIklsbGVnYWwgc3RhZ2UuIik7Ci0gICAgICAg
IH0KLSAgICAgICAgc2VsZi5zdGFnZSsrOwotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIGRlc2NlbmRp
bmdFcnJvclRlc3RFcXVhbCgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIHZhciByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhPYmplY3Qub3BlbktleUN1cnNvcihudWxsLCBJREJDdXJzb3IuUFJF
VikiKTsKLSAgICBzZWxmLnN0YWdlID0gMDsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewot
ICAgICAgICBpZiAoc2VsZi5zdGFnZSA9PSAwKSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgiZXZl
bnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjE3Iik7Ci0gICAgICAgICAgICBldmFsQW5k
TG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCdBIGJpdDInKSIpOwotICAgICAgICB9
IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gMSkgewotICAgICAgICAgICAgc2hvdWxkQmUoImV2ZW50
LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIxNSIpOwotICAgICAgICAgICAgZXZhbEFuZExv
ZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgICAgICAgICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgnQSBiaXQyJykiLCAi
SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLSAgICAgICAgICAgIHNlbGYudHJhbnMu
b25jb21wbGV0ZSA9IG9uVHJhbnNhY3Rpb25Db21wbGV0ZTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgdGVzdEZhaWxlZCgiSWxsZWdhbCBzdGFnZS4i
KTsKLSAgICAgICAgfQotICAgICAgICBzZWxmLnN0YWdlKys7Ci0gICAgfTsKLX0KLQotZnVuY3Rp
b24gb25UcmFuc2FjdGlvbkNvbXBsZXRlKCkKLXsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJjdXJzb3IuY29udGludWUoKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9J
TkFDVElWRV9FUlIiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotdGVzdCgpOwotIAotPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2N1cnNvci1jb250aW51ZS5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1kZWxldGUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2N1cnNvci1kZWxldGUuaHRtbAppbmRleCA1YWFmNDA2MjkyMTVmYTlmZjNjMDNi
MjcxNjRjYzBmZWIyMTE0YjU3Li5lYmQ2YjdmN2MzNTNhODRiMDg1YTdmNDE2YjZiNmE4ODFjZjAz
ZDQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItZGVs
ZXRlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWRlbGV0
ZS5odG1sCkBAIC00LDExMyArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5q
cyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgot
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJ
bmRleGVkREIncyBvcGVuQ3Vyc29yLiIpOwotCi10ZXN0KCk7Ci0KLWZ1bmN0aW9uIHRlc3QoKQot
ewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImluZGV4ZWREQi5vcGVuKCdjdXJzb3ItZGVsZXRlJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgdmFyIGRiID0gZXZh
bEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb25TdWNjZXNzKCkKLXsK
LSAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKLSAgICBzZWxmLnRyYW5zID0gZXZh
bEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVl
KCJ0cmFucyAhPT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRD
YWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gb3BlbkN1cnNvcjsKLQotICAgIGRlbGV0
ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICB2YXIgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCd0ZXN0JykiKTsKLSAgICBldmFs
QW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ215VmFsdWUxJywgJ215S2V5MScpIik7Ci0gICAgZXZh
bEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlMicsICdteUtleTInKSIpOwotICAgIGV2
YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnbXlWYWx1ZTMnLCAnbXlLZXkzJykiKTsKLSAgICBl
dmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ215VmFsdWU0JywgJ215S2V5NCcpIik7Ci19Ci0K
LWZ1bmN0aW9uIG9wZW5DdXJzb3IoKQotewotICAgIGRlYnVnKCJvcGVuQ3Vyc29yMSIpOwotICAg
IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWyd0ZXN0J10sIElEQlRyYW5zYWN0
aW9uLlJFQURfV1JJVEUpIik7Ci0gICAga2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5sb3dlckJvdW5k
KCJteUtleTEiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUo
J3Rlc3QnKS5vcGVuQ3Vyc29yKHtyYW5nZToga2V5UmFuZ2V9KSIpOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gY3Vyc29yU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLSAgICBjb3VudGVyID0gMTsKLX0KLQotZnVuY3Rpb24gY3Vyc29yU3Vj
Y2VzcygpCi17Ci0gICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkgewotICAgICAg
ICBzaG91bGRCZSgiY291bnRlciIsICI1Iik7Ci0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJ0cmFucy5vYmplY3RTdG9yZSgndGVzdCcpLm9wZW5DdXJzb3Ioa2V5UmFuZ2UpIik7Ci0gICAg
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29yRW1wdHk7Ci0gICAgICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuZGVsZXRlKCkiKTsKLSAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUiLCAibXlWYWx1ZSIg
KyBjb3VudGVyKyspOwotICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGlu
dWUoKSIpOwotfQotCi1mdW5jdGlvbiBjdXJzb3JFbXB0eSgpCi17Ci0gICAgc2hvdWxkQmVOdWxs
KCJldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IGFkZE9iamVj
dDsKLX0KLQotZnVuY3Rpb24gYWRkT2JqZWN0KCkKLXsKLSAgICBldmFsQW5kTG9nKCJ0cmFucyA9
IGRiLnRyYW5zYWN0aW9uKFsndGVzdCddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwot
ICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSB0cmFucy5vYmplY3RT
dG9yZSgndGVzdCcpIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFk
ZCgnbXlWYWx1ZTEnLCAnbXlLZXkxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5D
dXJzb3IyOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
fQotCi1mdW5jdGlvbiBvcGVuQ3Vyc29yMigpCi17Ci0gICAgZGVidWcoIm9wZW5DdXJzb3IyIik7
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLm9wZW5DdXJzb3Ioa2V5UmFu
Z2UpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVPYmplY3Q7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0
ZU9iamVjdCgpCi17Ci0gICAgc2hvdWxkQmVOb25OdWxsKGV2ZW50LnRhcmdldC5yZXN1bHQpOwot
ICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuZGVsZXRlKCkiKTsKLSAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUuZ2V0KCdteUtleTEnKSIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gdmVyaWZ5T2JqZWN0RGVsZXRlZDsKLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gdmVyaWZ5T2JqZWN0RGVs
ZXRlZCgpCi17Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAidW5kZWZpbmVk
Iik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL2N1cnNvci1kZWxldGUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3It
aW5jb25zaXN0ZW5jeS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29y
LWluY29uc2lzdGVuY3kuaHRtbAppbmRleCA0MWM0YWI2MTIwZDg1NTcyNDdjMmNhMGNiNWQ2OGJi
MDdhMTM3NDQ0Li5mMmNlYTBiMWFkNzNmMTRkMjZjNWUxYmE0NTdjN2ZlMGFjNTkwYmZhIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItaW5jb25zaXN0ZW5j
eS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1pbmNvbnNp
c3RlbmN5Lmh0bWwKQEAgLTQsOTMgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFy
ZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRl
c3QgY29uc2lzdGVuY3kgb2YgSW5kZXhlZERCJ3MgY3Vyc29yIG9iamVjdHMuIik7Ci0KLXRlc3Qo
KTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2N1cnNvci1pbmNvbnNpc3Rl
bmN5JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVu
U3VjY2VzcygpCi17Ci0gICAgdmFyIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3
IHZlcnNpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1
bmN0aW9uIHNldFZlcnNpb25TdWNjZXNzKCkKLXsKLSAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nl
c3MoKToiKTsKLSAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJn
ZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwotICAgIHRy
YW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBs
ZXRlID0gb3BlbkJhc2ljQ3Vyc29yOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsK
LQotICAgIHZhciBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ2Jhc2ljU3RvcmUnKSIpOwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0
b3JlLmFkZCgnc29tZVZhbHVlMScsICdzb21lS2V5MScpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnc29tZVZhbHVl
MicsICdzb21lS2V5MicpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOwotICAg
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnc29tZVZhbHVlMycsICdzb21lS2V5MycpLm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2coIm9iamVj
dFN0b3JlLmFkZCgnc29tZVZhbHVlNCcsICdzb21lS2V5NCcpLm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjayIpOwotCi19Ci0KLWZ1bmN0aW9uIG9wZW5CYXNpY0N1cnNvcigpCi17Ci0g
ICAgZGVidWcoIm9wZW5CYXNpY0N1cnNvcigpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMgPSBk
Yi50cmFuc2FjdGlvbihbJ2Jhc2ljU3RvcmUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSki
KTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJh
bnMub25jb21wbGV0ZSA9IHRyYW5zYWN0aW9uQ29tcGxldGU7Ci0KLSAgICBrZXlSYW5nZSA9IElE
QktleVJhbmdlLmxvd2VyQm91bmQoInNvbWVLZXkxIik7Ci0gICAgc2VsZi5vYmplY3RTdG9yZSA9
IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdiYXNpY1N0b3JlJykiKTsKLSAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNoZWNrQ3Vyc29yOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIGNvdW50ZXIgPSAxOwotfQotCi1zdG9yZWRD
dXJzb3IgPSBudWxsOwotZnVuY3Rpb24gY2hlY2tDdXJzb3IoKQotewotICAgIGRlYnVnKCIiKQot
ICAgIGRlYnVnKCJjaGVja0N1cnNvcigpIik7Ci0gICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQg
PT0gbnVsbCkgewotICAgICAgICBzaG91bGRCZSgiY291bnRlciIsICI1Iik7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgaWYgKHN0b3JlZEN1cnNvciA9PSBudWxsKQotICAgICAgc3RvcmVk
Q3Vyc29yID0gZXZhbEFuZExvZygic3RvcmVkQ3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIp
OwotCi0gICAgc2hvdWxkQmVUcnVlKCJzdG9yZWRDdXJzb3IgPT09IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInN0b3JlZEN1cnNvci5rZXkiLCAic29t
ZUtleSIgKyBjb3VudGVyKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdl
dC5yZXN1bHQua2V5IiwgInNvbWVLZXkiICsgY291bnRlcik7Ci0gICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJzdG9yZWRDdXJzb3IudmFsdWUiLCAic29tZVZhbHVlIiArIGNvdW50ZXIpOwotICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZSIsICJzb21l
VmFsdWUiICsgY291bnRlcik7Ci0gICAgY291bnRlcisrOwotICAgIGV2YWxBbmRMb2coImV2ZW50
LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOwotfQotCi1mdW5jdGlvbiB0cmFuc2FjdGlvbkNv
bXBsZXRlKCkKLXsKLSAgICBkZWJ1ZygidHJhbnNhY3Rpb25Db21wbGV0ZSgpIik7Ci0gICAgZmlu
aXNoSlNUZXN0KCk7Ci19Ci0KLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2N1
cnNvci1pbmNvbnNpc3RlbmN5LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWluZGV4
LWRlbGV0ZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWluZGV4
LWRlbGV0ZS5odG1sCmluZGV4IGI0NjUyMzEyMzgyMTZjNWEwNjhhODQyNGZiMTNjYWZiYTRhMzIw
OGYuLmFkY2E3OGVjOTRhMjRlNWY4MGJmODg1ZGQxMTJlYTc3NDE3ZjQ5NDggMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1pbmRleC1kZWxldGUuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItaW5kZXgtZGVsZXRlLmh0
bWwKQEAgLTQsMTE3ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48
L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4
ZWREQidzIG9wZW5DdXJzb3IuIik7Ci0KLXRlc3QoKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0g
ICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5k
ZXhlZERCLm9wZW4oJ2N1cnNvci1pbmRleC1kZWxldGUnKSIpOwotICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICB2YXIgZGIgPSBl
dmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQot
ewotICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOwotICAgIHNlbGYudHJhbnMgPSBl
dmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRy
dWUoInRyYW5zICE9PSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9y
dENhbGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBvcGVuQ3Vyc29yOwotCi0gICAgZGVs
ZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygi
b2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgndGVzdCcpIik7Ci0gICAgZXZhbEFu
ZExvZygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ3Rlc3RJbmRleCcsICd4JykiKTsKLQotICAg
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCh7eDogMX0sICdteUtleTEnKSIpOwotICAgIGV2
YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCh7eDogMn0sICdteUtleTInKSIpOwotICAgIGV2YWxB
bmRMb2coIm9iamVjdFN0b3JlLmFkZCh7eDogM30sICdteUtleTMnKSIpOwotICAgIGV2YWxBbmRM
b2coIm9iamVjdFN0b3JlLmFkZCh7eDogNH0sICdteUtleTQnKSIpOwotfQotCi1mdW5jdGlvbiBv
cGVuQ3Vyc29yKCkKLXsKLSAgICBkZWJ1Zygib3BlbkN1cnNvcjEiKTsKLSAgICBldmFsQW5kTG9n
KCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsndGVzdCddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dS
SVRFKSIpOwotICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgxKTsKLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ3Rlc3QnKS5pbmRleCgndGVz
dEluZGV4Jykub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGN1cnNvclN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci0gICAgY291bnRlciA9IDE7Ci19Ci0KLWZ1bmN0aW9uIGN1cnNvclN1Y2Nlc3MoKQot
ewotICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0ID09IG51bGwpIHsKLSAgICAgICAgc2hvdWxk
QmUoImNvdW50ZXIiLCAiNSIpOwotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnMu
b2JqZWN0U3RvcmUoJ3Rlc3QnKS5pbmRleCgndGVzdEluZGV4Jykub3BlbkN1cnNvcihrZXlSYW5n
ZSkiKTsKLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3JFbXB0eTsKLSAgICAgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgdmFyIGRlbGV0ZVJlcXVlc3QgPSBldmFsQW5kTG9nKCJldmVudC50YXJn
ZXQucmVzdWx0LmRlbGV0ZSgpIik7Ci0gICAgZGVsZXRlUmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5
IiwgImNvdW50ZXIrKyIpOwotICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29u
dGludWUoKSIpOwotfQotCi1mdW5jdGlvbiBjdXJzb3JFbXB0eSgpCi17Ci0gICAgc2hvdWxkQmVO
dWxsKCJldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IGFkZE9i
amVjdDsKLX0KLQotZnVuY3Rpb24gYWRkT2JqZWN0KCkKLXsKLSAgICBldmFsQW5kTG9nKCJ0cmFu
cyA9IGRiLnRyYW5zYWN0aW9uKFsndGVzdCddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIp
OwotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSB0cmFucy5vYmpl
Y3RTdG9yZSgndGVzdCcpIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3Jl
LmFkZCh7eDogMX0sICdteUtleTEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbkN1
cnNvcjI7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19
Ci0KLWZ1bmN0aW9uIG9wZW5DdXJzb3IyKCkKLXsKLSAgICBkZWJ1Zygib3BlbkN1cnNvcjIiKTsK
LSAgICBldmFsQW5kTG9nKCJpbmRleCA9IGV2ZW50LnRhcmdldC5zb3VyY2UuaW5kZXgoJ3Rlc3RJ
bmRleCcpIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4Lm9wZW5DdXJzb3Ioa2V5
UmFuZ2UpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVPYmplY3Q7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGRl
bGV0ZU9iamVjdCgpCi17Ci0gICAgc2hvdWxkQmVOb25OdWxsKGV2ZW50LnRhcmdldC5yZXN1bHQp
OwotICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuZGVsZXRlKCkiKTsKLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXguZ2V0KDEpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSB2ZXJpZnlPYmplY3REZWxldGVkOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiB2ZXJpZnlPYmplY3REZWxldGVkKCkKLXsK
LSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ1bmRlZmluZWQiKTsKLSAgICBm
aW5pc2hKU1Rlc3QoKTsKLX0KLQotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
Y3Vyc29yLWluZGV4LWRlbGV0ZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1rZXkt
b3JkZXIuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1rZXktb3Jk
ZXIuaHRtbAppbmRleCBmYTZiNDUyY2I5MzQ0Nzc0OTVmZjA3NGE2OGU4NmFkZjRmNDBhNTY1Li40
MDMwOWRlNDY4M2U2NjY3OGRjMjcwZjY2NzI5NjRlNzMwNTNkYjU2IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3Ita2V5LW9yZGVyLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWtleS1vcmRlci5odG1sCkBAIC00LDIz
MiArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8
L2hlYWQ+CiA8Ym9keT4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIga2V5cyBv
cmRlcmluZyBhbmQgcmVhZGJhY2sgZnJvbSBjdXJzb3JzLiIpOwotCi1mdW5jdGlvbiB0ZXN0KCkK
LXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgcHJlcGFyZURhdGFiYXNlKCk7
Ci19Ci0KLWZ1bmN0aW9uIHByZXBhcmVEYXRhYmFzZSgpCi17Ci0gICAgZGVidWcoIiIpOwotICAg
IGV2YWxBbmRMb2coIm9wZW5yZXEgPSBpbmRleGVkREIub3BlbignY3Vyc29yLWtleS1vcmRlcicp
Iik7Ci0gICAgb3BlbnJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAg
b3BlbnJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgZXZhbEFuZExvZygiZGIg
PSBvcGVucmVxLnJlc3VsdCIpOwotICAgICAgICBldmFsQW5kTG9nKCJ2ZXJyZXEgPSBkYi5zZXRW
ZXJzaW9uKCcxJykiKTsKLSAgICAgICAgdmVycmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLSAgICAgICAgdmVycmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAg
ICAgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKLSAgICAg
ICAgICAgIHZlcnJlcS5yZXN1bHQub25jb21wbGV0ZSA9IHBvcHVsYXRlU3RvcmU7Ci0gICAgICAg
IH07Ci0gICAgfTsKLX0KLQotc2VsZi5rZXlzID0gWwotICAgICItSW5maW5pdHkiLAotICAgICIt
TnVtYmVyLk1BWF9WQUxVRSIsCi0gICAgIi0xIiwKLSAgICAiLU51bWJlci5NSU5fVkFMVUUiLAot
ICAgICIwIiwKLSAgICAiTnVtYmVyLk1JTl9WQUxVRSIsCi0gICAgIjEiLAotICAgICJOdW1iZXIu
TUFYX1ZBTFVFIiwKLSAgICAiSW5maW5pdHkiLAotCi0gICAgIm5ldyBEYXRlKDApIiwKLSAgICAi
bmV3IERhdGUoMTAwMCkiLAotICAgICJuZXcgRGF0ZSgxMzE3Mzk5OTMxMDIzKSIsCi0KLSAgICAi
JyciLAotICAgICInXHgwMCciLAotICAgICInYSciLAotICAgICInYWEnIiwKLSAgICAiJ2InIiwK
LSAgICAiJ2JhJyIsCi0KLSAgICAiJ1x4QTInIiwgLy8gVSswMEEyIENFTlQgU0lHTgotICAgICIn
XHU2QzM0JyIsIC8vIFUrNkMzNCBDSksgVU5JRklFRCBJREVPR1JBUEggKHdhdGVyKQotICAgICIn
XHVEODM0XHVERDFFJyIsIC8vIFUrMUQxMUUgTVVTSUNBTCBTWU1CT0wgRy1DTEVGIChVVEYtMTYg
c3Vycm9nYXRlIHBhaXIpCi0gICAgIidcdUZGRkQnIiwgLy8gVStGRkZEIFJFUExBQ0VNRU5UIENI
QVJBQ1RFUgotCi0gICAgIltdIiwKLQotICAgICJbLUluZmluaXR5XSIsCi0gICAgIlstTnVtYmVy
Lk1BWF9WQUxVRV0iLAotICAgICJbLTFdIiwKLSAgICAiWy1OdW1iZXIuTUlOX1ZBTFVFXSIsCi0g
ICAgIlswXSIsCi0gICAgIltOdW1iZXIuTUlOX1ZBTFVFXSIsCi0gICAgIlsxXSIsCi0gICAgIltO
dW1iZXIuTUFYX1ZBTFVFXSIsCi0gICAgIltJbmZpbml0eV0iLAotCi0gICAgIltuZXcgRGF0ZSgw
KV0iLAotICAgICJbbmV3IERhdGUoMTAwMCldIiwKLSAgICAiW25ldyBEYXRlKDEzMTczOTk5MzEw
MjMpXSIsCi0KLSAgICAiWycnXSIsCi0gICAgIlsnXHgwMCddIiwKLSAgICAiWydhJ10iLAotICAg
ICJbJ2FhJ10iLAotICAgICJbJ2InXSIsCi0gICAgIlsnYmEnXSIsCi0KLSAgICAiWydceEEyJ10i
LCAvLyBVKzAwQTIgQ0VOVCBTSUdOCi0gICAgIlsnXHU2QzM0J10iLCAvLyBVKzZDMzQgQ0pLIFVO
SUZJRUQgSURFT0dSQVBIICh3YXRlcikKLSAgICAiWydcdUQ4MzRcdUREMUUnXSIsIC8vIFUrMUQx
MUUgTVVTSUNBTCBTWU1CT0wgRy1DTEVGIChVVEYtMTYgc3Vycm9nYXRlIHBhaXIpCi0gICAgIlsn
XHVGRkZEJ10iLCAvLyBVK0ZGRkQgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSCi0KLSAgICAiW1tdXSIs
Ci0KLSAgICAiW1tdLCBbXV0iLAotICAgICJbW10sIFtdLCBbXV0iLAotCi0gICAgIltbW11dXSIs
Ci0gICAgIltbW1tdXV1dIgotXTsKLQotZnVuY3Rpb24gY29tcGFyZShhLCBiKQotewotICAgIGlm
ICh0eXBlb2YgYSAhPT0gdHlwZW9mIGIpIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LQotICAgIHN3aXRjaCAodHlwZW9mIGEpIHsKLSAgICAgICAgY2FzZSAndW5kZWZpbmVkJzogLy8g
Tm90IHZhbGlkIGtleXMsIGJ1dCBjb21wYXJlIGFueXdheS4KLSAgICAgICAgY2FzZSAnYm9vbGVh
bic6IC8vIE5vdCB2YWxpZCBrZXlzLCBidXQgY29tcGFyZSBhbnl3YXkuCi0gICAgICAgIGNhc2Ug
J3N0cmluZyc6Ci0gICAgICAgICAgICByZXR1cm4gYSA9PT0gYjsKLSAgICAgICAgY2FzZSAnbnVt
YmVyJzoKLSAgICAgICAgICAgIGlmIChhID09PSBiKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IChhICE9PSAwKSB8fCAoMSAvIGEgPT09IDEgLyBiKTsgLy8gMCBpc24ndCAtMAotICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gYSAhPT0gYSAmJiBiICE9PSBiOyAv
LyBOYU4gaXMgTmFOCi0gICAgICAgICAgICB9Ci0gICAgICAgIGNhc2UgJ29iamVjdCc6Ci0gICAg
ICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIERhdGUgJiYgYiBpbnN0YW5jZW9mIERhdGUpIHsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gK2EgPT09ICtiOwotICAgICAgICAgICAgfSBlbHNlIGlmIChh
IGluc3RhbmNlb2YgQXJyYXkgJiYgYiBpbnN0YW5jZW9mIEFycmF5KSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgYS5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbXBh
cmUoYVtpXSwgYltpXSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIEZvciB0aGUgcHVy
cG9zZXMgb2YgdGhpcyB0ZXN0LCBvdGhlciBvYmplY3RzIGRvbid0IGNvdW50Ci0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBwb3B1bGF0ZVN0b3JlKCkKLXsKLSAgICBkZWJ1Zygi
Iik7Ci0gICAgZGVidWcoInBvcHVsYXRpbmcgc3RvcmUuLi4iKTsKLSAgICBldmFsQW5kTG9nKCJ0
cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUp
Iik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsi
KTsKLSAgICB0cmFucy5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgdHJh
bnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIHZhciBjb3VudCA9IDA7
Ci0gICAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uKGtleSkgewotICAgICAgICBldmFsQW5kTG9nKCJz
dG9yZS5wdXQoIiArIChjb3VudCsrKSArICIsICIgKyBrZXkgKyAiKSIpOwotICAgIH0pOwotICAg
IHRyYW5zLm9uY29tcGxldGUgPSBjaGVja1N0b3JlOwotfQotCi1mdW5jdGlvbiBjaGVja1N0b3Jl
KCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIml0ZXJhdGluZyBjdXJzb3IuLi4iKTsK
LSAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRyYW5z
YWN0aW9uLlJFQURfT05MWSkiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVj
dFN0b3JlKCdzdG9yZScpOyIpOwotICAgIHRyYW5zLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0g
ICAgZXZhbEFuZExvZygiY291bnQgPSAwIik7Ci0gICAgY3VycmVxID0gZXZhbEFuZExvZygiY3Vy
cmVxID0gc3RvcmUub3BlbkN1cnNvcigpIik7Ci0gICAgY3VycmVxLm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLSAgICBjdXJyZXEub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0g
ICAgICAgIGlmIChjdXJyZXEucmVzdWx0KSB7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJz
b3IgPSBjdXJyZXEucmVzdWx0Iik7Ci0gICAgICAgICAgICBzaG91bGRCZVRydWUoImNvbXBhcmUo
Y3Vyc29yLmtleSwgIiArIGtleXNbY291bnRdICsgIikiKTsKLSAgICAgICAgICAgIGV2YWxBbmRM
b2coImdldHJlcSA9IHN0b3JlLmdldChjdXJzb3Iua2V5KSIpOwotICAgICAgICAgICAgZ2V0cmVx
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgICAgIGdldHJlcS5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBzaG91bGRCZVRydWUoImdl
dHJlcS5yZXN1bHQgPT09IGNvdW50KysiKTsKLSAgICAgICAgICAgICAgICBjdXJzb3IuY29udGlu
dWUoKTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzaG91
bGRCZVRydWUoImNvdW50ID09PSBrZXlzLmxlbmd0aCIpOwotICAgICAgICAgICAgZmluaXNoVXAo
KTsKLSAgICAgICAgfQotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIGZpbmlzaFVwKCkKLXsKLSAgICB0
ZXN0S2V5Q29tcGFyZSgpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiB0ZXN0
S2V5Q29tcGFyZSgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJ2YWxpZGF0ZSBjb21w
YXJlIGZ1bmN0aW9uIik7Ci0gICAgdmFyIGNhc2VzID0gWwotICAgICAgICAidW5kZWZpbmVkIiwK
LSAgICAgICAgInRydWUiLAotICAgICAgICAiZmFsc2UiLAotICAgICAgICAiMCIsCi0gICAgICAg
ICItMCIsCi0gICAgICAgICIxMjMiLAotICAgICAgICAiSW5maW5pdHkiLAotICAgICAgICAiLUlu
ZmluaXR5IiwKLSAgICAgICAgIk5hTiIsCi0gICAgICAgICInJyIsCi0gICAgICAgICInYWJjJyIs
Ci0gICAgICAgICIneHl6JyIsCi0gICAgICAgICJuZXcgRGF0ZSgwKSIsCi0gICAgICAgICJuZXcg
RGF0ZSgxZTMpIiwKLSAgICAgICAgIm5ldyBEYXRlKDFlOSkiLAotICAgICAgICAiW10iLAotICAg
ICAgICAiWzEyM10iLAotICAgICAgICAiWydhYmMnXSIsCi0gICAgICAgICJbMTIzLCAnYWJjJ10i
LAotICAgICAgICAiWydhYmMnLCAxMjNdIiwKLSAgICAgICAgIltbXV0iLAotICAgICAgICAiW1sx
MjNdXSIsCi0gICAgICAgICJbWydhYmMnXV0iLAotICAgICAgICAiW1sxMjNdLCAnYWJjJ10iLAot
ICAgICAgICAiW1sxMjNdLCAxMjNdIgotICAgIF07Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGNhc2VzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgY2FzZXMu
bGVuZ3RoOyArK2opIHsKLSAgICAgICAgICAgIGlmIChpID09PSBqKSB7Ci0gICAgICAgICAgICAg
ICAgc2hvdWxkQmVUcnVlKCJjb21wYXJlKCIgKyBjYXNlc1tpXSArICIsICIgKyBjYXNlc1tqXSAr
ICIpIik7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHNob3VsZEJlRmFs
c2UoImNvbXBhcmUoIiArIGNhc2VzW2ldICsgIiwgIiArIGNhc2VzW2pdICsgIikiKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvY3Vyc29yLWtleS1vcmRlci5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2N1cnNvci1wcmltYXJ5LWtleS1vcmRlci5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvY3Vyc29yLXByaW1hcnkta2V5LW9yZGVyLmh0bWwKaW5kZXggYmQ3MTM4NDNh
MDYyODJkM2NkNTMxNTIyOWU3YjUzZTJlZTU4OTMwYS4uM2YxOTNhYmI0Y2ViMmZlMTFmZTE1MzBi
MWJhNzE5YjhjOGFhZTBlZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvY3Vyc29yLXByaW1hcnkta2V5LW9yZGVyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvY3Vyc29yLXByaW1hcnkta2V5LW9yZGVyLmh0bWwKQEAgLTEsMTEwICsxLDEw
IEBACiA8aHRtbD4KIDxoZWFkPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+CiA8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08cCBpZD0i
ZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdD4KLQot
ZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIHByaW1hcnkga2V5IG9yZGVyaW5nIGFuZCByZWFk
YmFjayBmcm9tIGN1cnNvcnMuIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZl
bmRvclByZWZpeGVzKCk7Ci0KLSAgICBwcmVwYXJlRGF0YWJhc2UoKTsKLX0KLQotZnVuY3Rpb24g
cHJlcGFyZURhdGFiYXNlKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZXZhbEFuZExvZygib3Bl
blJlcXVlc3QgPSBpbmRleGVkREIub3BlbignY3Vyc29yLXByaW1hcnkta2V5LW9yZGVyJykiKTsK
LSAgICBvcGVuUmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAg
b3BlblJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGV2YWxBbmRMb2co
ImRiID0gb3BlblJlcXVlc3QucmVzdWx0Iik7Ci0gICAgICAgIGV2YWxBbmRMb2coInZlcnNpb25D
aGFuZ2VSZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgICAgIHZlcnNpb25DaGFu
Z2VSZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgdmVy
c2lvbkNoYW5nZVJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBl
dmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7Ci0gICAg
ICAgICAgICBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleCcsICdp
bmRleEtleScpIik7Ci0KLSAgICAgICAgICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0LnJlc3VsdC5v
bmNvbXBsZXRlID0gcG9wdWxhdGVTdG9yZTsKLSAgICAgICAgfTsKLSAgICB9OwotfQotCi1zZWxm
LmtleXMgPSBbCi0gICAgIi1JbmZpbml0eSIsCi0gICAgIi0yIiwKLSAgICAiLTEiLAotICAgICIw
IiwKLSAgICAiMSIsCi0gICAgIjIiLAotICAgICJJbmZpbml0eSIsCi0KLSAgICAiJzAnIiwKLSAg
ICAiJzEnIiwKLSAgICAiJzInIiwKLSAgICAiJ0EnIiwKLSAgICAiJ0InIiwKLSAgICAiJ0MnIiwK
LSAgICAiJ2EnIiwKLSAgICAiJ2InIiwKLSAgICAiJ2MnIgotXTsKLQotCi1mdW5jdGlvbiBwb3B1
bGF0ZVN0b3JlKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInBvcHVsYXRpbmcgc3Rv
cmUuLi4iKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScs
IElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUgPSB0
cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsiKTsKLSAgICB0cmFucy5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENh
bGxiYWNrOwotICAgIHZhciBjb3VudCA9IDA7Ci0gICAgdmFyIGluZGV4S2V5ID0gMDsKLSAgICB2
YXIga2V5cyA9IHNlbGYua2V5cy5zbGljZSgpOwotICAgIGtleXMucmV2ZXJzZSgpOwotICAgIGtl
eXMuZm9yRWFjaChmdW5jdGlvbihrZXkpIHsKLSAgICAgICAgdmFyIHZhbHVlID0geyBpbmRleEtl
eTogaW5kZXhLZXksIGNvdW50OiBjb3VudCsrIH07Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3Jl
LnB1dCgiICsgSlNPTi5zdHJpbmdpZnkodmFsdWUpICsgIiwgIiArIGtleSArICIpIik7Ci0gICAg
fSk7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IGNoZWNrU3RvcmU7Ci19Ci0KLWZ1bmN0aW9uIGNo
ZWNrU3RvcmUoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiaXRlcmF0aW5nIGN1cnNv
ci4uLiIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywg
SURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKSIpOwotICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJh
bnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7Iik7Ci0gICAgZXZhbEFuZExvZygiaW5kZXggPSBzdG9y
ZS5pbmRleCgnaW5kZXgnKTsiKTsKLSAgICB0cmFucy5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwot
ICAgIGN1cnNvclJlcXVlc3QgPSBldmFsQW5kTG9nKCJjdXJzb3JSZXF1ZXN0ID0gaW5kZXgub3Bl
bkN1cnNvcigpIik7Ci0gICAgZXZhbEFuZExvZygiY291bnQgPSAwIik7Ci0gICAgdmFyIGluZGV4
S2V5ID0gMDsKLSAgICBjdXJzb3JSZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLSAgICBjdXJzb3JSZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAg
ICBpZiAoY3Vyc29yUmVxdWVzdC5yZXN1bHQpIHsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImN1
cnNvciA9IGN1cnNvclJlcXVlc3QucmVzdWx0Iik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vy
c29yLmtleSIsIFN0cmluZyhpbmRleEtleSkpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNv
ci5wcmltYXJ5S2V5Iiwgc2VsZi5rZXlzW2NvdW50KytdKTsKLSAgICAgICAgICAgIGN1cnNvci5j
b250aW51ZSgpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJj
b3VudCA9PT0ga2V5cy5sZW5ndGgiKTsKLSAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAg
ICAgICB9Ci0gICAgfTsKLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvY3Vyc29yLXByaW1hcnkta2V5LW9yZGVyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgog
PC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvY3Vyc29yLXJldmVyc2UtYnVnLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9jdXJzb3ItcmV2ZXJzZS1idWcuaHRtbAppbmRleCA1OTc1YmFjYzk2MWRlN2M5NDk4OTdhNjY5
OTEzMGE5ZTk5NGFiOGM3Li5lYmVmNTkzODgwOTQ3NmE0MDYwYTNhZmQ1MTRhMDRkMDdjMmVjM2Mz
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItcmV2ZXJz
ZS1idWcuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItcmV2
ZXJzZS1idWcuaHRtbApAQCAtNCwxMDkgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9z
aGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08cCBpZD0iZGVzY3JpcHRpb24i
PjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24o
IlRlc3QgSW5kZXhlZERCIGtleXMgb3JkZXJpbmcgYW5kIHJlYWRiYWNrIGZyb20gY3Vyc29ycy4i
KTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQot
ICAgIHByZXBhcmVEYXRhYmFzZSgpOwotfQotCi1mdW5jdGlvbiBwcmVwYXJlRGF0YWJhc2UoKQot
ewotICAgIGRlYnVnKCIiKTsKLSAgICBldmFsQW5kTG9nKCJvcGVucmVxID0gaW5kZXhlZERCLm9w
ZW4oJ2N1cnNvci1yZXZlcnNlLWJ1ZycpIik7Ci0gICAgb3BlbnJlcS5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgb3BlbnJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsK
LSAgICAgICAgZXZhbEFuZExvZygiZGIgPSBvcGVucmVxLnJlc3VsdCIpOwotICAgICAgICBldmFs
QW5kTG9nKCJ2ZXJyZXEgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICAgICAgdmVycmVxLm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgdmVycmVxLm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsK
LSAgICAgICAgICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RT
dG9yZSgnc3RvcmUnKSIpOwotICAgICAgICAgICAgZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5k
ZXgoJ2luZGV4JywgJycpIik7Ci0gICAgICAgICAgICB2ZXJyZXEucmVzdWx0Lm9uY29tcGxldGUg
PSBwb3B1bGF0ZVN0b3JlOwotICAgICAgICB9OwotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIHBvcHVs
YXRlU3RvcmUoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygicG9wdWxhdGluZyBzdG9y
ZS4uLiIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywg
SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRy
YW5zLm9iamVjdFN0b3JlKCdzdG9yZScpOyIpOwotICAgIHRyYW5zLm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2Fs
bGJhY2s7Ci0KLSAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoMSwgMSkiKTsKLSAgICBldmFsQW5k
TG9nKCJzdG9yZS5wdXQoMiwgMikiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoMywgMyki
KTsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gdGVzdEN1cnNvcjsKLX0KLQotdmFyIHRlc3RzID0g
WwotICAgICAgICAgICAgICAgIHt1cHBlckJvdW5kOiA3LCBvcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6
IDN9LAotICAgICAgICAgICAgICAgIHt1cHBlckJvdW5kOiA3LCBvcGVuOiB0cnVlLCAgZXhwZWN0
ZWQ6IDN9LAotICAgICAgICAgICAgICAgIHt1cHBlckJvdW5kOiAzLCBvcGVuOiBmYWxzZSwgZXhw
ZWN0ZWQ6IDN9LAotICAgICAgICAgICAgICAgIHt1cHBlckJvdW5kOiAzLCBvcGVuOiB0cnVlLCAg
ZXhwZWN0ZWQ6IDJ9Ci0gICAgICAgICAgICBdOwotCi1mdW5jdGlvbiB0ZXN0Q3Vyc29yKCkKLXsK
LSAgICBkZWJ1ZygidGVzdEN1cnNvcigpIik7Ci0KLSAgICBpZiAodGVzdHMubGVuZ3RoID09PSAw
KSB7Ci0gICAgICAgIGRlYnVnKCJObyBtb3JlIHRlc3RzLiIpOwotICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHRlc3QgPSB0ZXN0cy5zaGlmdCgp
OwotCi0gICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJU
cmFuc2FjdGlvbi5SRUFEX09OTFkpIik7Ci0gICAgdHJhbnMub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFj
azsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gdGVzdEN1cnNvcjsKLSAgICBldmFsQW5kTG9nKCJz
dG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpOyIpOwotICAgIGV2YWxBbmRMb2coImlu
ZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4Jyk7Iik7Ci0KLSAgICB2YXIgdGVzdEZ1bmN0aW9uID0g
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKLSAgICAgICAgaWYgKGN1cnNvciA9PT0gbnVsbCkgewotICAgICAgICAgICAgZGVi
dWcoImN1cnNvciBzaG91bGQgbm90IGJlIG51bGwiKTsKLSAgICAgICAgICAgIGZhaWwoKTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
a2V5IiwgInRlc3QuZXhwZWN0ZWQiKTsKLSAgICAgICAgaWYgKCJ2YWx1ZSIgaW4gY3Vyc29yKQot
ICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZSIsICJ0ZXN0LmV4cGVjdGVkIik7Ci0g
ICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJ0ZXN0LmV4cGVjdGVkIik7Ci0K
LSAgICAgICAgLy8gTGV0IHRoZSB0cmFuc2FjdGlvbiBmaW5pc2guCi0gICAgfQotCi0gICAgZGVi
dWcoInVwcGVyQm91bmQ6ICIgKyB0ZXN0LnVwcGVyQm91bmQgKyAiIG9wZW46ICIgKyB0ZXN0Lm9w
ZW4gKyAiIGV4cGVjdGVkOiAiICsgdGVzdC5leHBlY3RlZCk7Ci0gICAgc3RvcmVSZXEgPSBldmFs
QW5kTG9nKCJzdG9yZVJlcSA9IHN0b3JlLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3Vu
ZCh0ZXN0LnVwcGVyQm91bmQsIHRlc3Qub3BlbiksIElEQkN1cnNvci5QUkVWKSIpOwotICAgIHN0
b3JlUmVxLm9uc3VjY2VzcyA9IHRlc3RGdW5jdGlvbjsKLQotICAgIGluZGV4UmVxID0gZXZhbEFu
ZExvZygiaW5kZXhSZXEgPSBpbmRleC5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQo
dGVzdC51cHBlckJvdW5kLCB0ZXN0Lm9wZW4pLCBJREJDdXJzb3IuUFJFVikiKTsKLSAgICBpbmRl
eFJlcS5vbnN1Y2Nlc3MgPSB0ZXN0RnVuY3Rpb247Ci0KLSAgICBpbmRleEtleVJlcSA9IGV2YWxB
bmRMb2coImluZGV4S2V5UmVxID0gaW5kZXgub3BlbktleUN1cnNvcihJREJLZXlSYW5nZS51cHBl
ckJvdW5kKHRlc3QudXBwZXJCb3VuZCwgdGVzdC5vcGVuKSwgSURCQ3Vyc29yLlBSRVYpIik7Ci0g
ICAgaW5kZXhLZXlSZXEub25zdWNjZXNzID0gdGVzdEZ1bmN0aW9uOwotfQotCi10ZXN0KCk7Ci0K
LTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jdXJzb3ItcmV2ZXJzZS1idWcuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1za2lwLWRlbGV0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1za2lwLWRlbGV0ZWQuaHRtbAppbmRleCBk
M2FlOWEyYWUwNDczYTEyYTI4ZWYzMDAxOGZkMjkwNmUzZWE4MDFkLi5hMGNkYmJjYWIxZTgzYjNl
OTk3ZWI1MWExMzMxZGNkOWUyOTY5MTQyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9jdXJzb3Itc2tpcC1kZWxldGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvY3Vyc29yLXNraXAtZGVsZXRlZC5odG1sCkBAIC00LDIwMiArNCw3IEBA
CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8
Ym9keT4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBjdXJzb3Igc2tpcHMg
ZGVsZXRlZCBlbnRyaWVzLiIpOwotCi12YXIgbmFtZXMgPSBbJ0FscGhhJywgJ0JyYXZvJywgJ0No
YXJsaWUnLCAnRGVsdGEnLCAnRWNobycsICdGb3h0cm90JywgJ0dvbGYnLAotICAgICAgICAgICAg
ICdIb3RlbCcsICdJbmRpYScsICdKdWxpZXQnLCAnS2lsbycsICdMaW1hJywgJ01pa2UnLCAnTm92
ZW1iZXInLAotICAgICAgICAgICAgICdPc2NhcicsICdQYXBhJywgJ1F1ZWJlYycsICdSb21lbycs
ICdTaWVycmEnLCAnVGFuZ28nLCAnVW5pZm9ybScsCi0gICAgICAgICAgICAgJ1ZpY3RvcicsICdX
aGlza2V5JywgJ1gtcmF5JywgJ1lhbmtlZScsICdadWx1J107Ci0KLXRlc3QoKTsKLQotZnVuY3Rp
b24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2N1cnNvci1za2lwLWRlbGV0ZWQnKSIpOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsK
LSAgICB2YXIgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc2V0VmVy
c2lvblN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOwotICAg
IHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsK
LSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9ydCA9
IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBiYXNpY0N1
cnNvclRlc3Q7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgdmFyIG9i
amVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9y
ZSgnc3RvcmUnLCB7a2V5UGF0aDogJ2lkJ30pIik7Ci0gICAgZXZhbEFuZExvZygib2JqZWN0U3Rv
cmUuY3JlYXRlSW5kZXgoJ25hbWVJbmRleCcsICduYW1lJykiKTsKLSAgICByZXNldE9iamVjdFN0
b3JlKGZ1bmN0aW9uKCkge30pOwotfQotCi12YXIgc2lsZW50RXJyb3JIYW5kbGVyID0gZnVuY3Rp
b24oKSB7IGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IH0KLQotZnVuY3Rpb24gcmVzZXRPYmplY3RT
dG9yZShjYWxsYmFjaykKLXsKLSAgICBkZWJ1ZygiXG5yZXNldE9iamVjdFN0b3JlKCk6Iik7Ci0g
ICAgaWYgKGNhbGxiYWNrID09PSB1bmRlZmluZWQpCi0gICAgICAgIGNhbGxiYWNrID0gZnVuY3Rp
b24gKCkge307Ci0KLSAgICB2YXIgb2JqZWN0U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3Rv
cmUnKTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKQotICAgICAg
ICBvYmplY3RTdG9yZS5kZWxldGUoaSkub25lcnJvciA9IHNpbGVudEVycm9ySGFuZGxlcjsKLSAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKQotICAgICAgICBvYmplY3RT
dG9yZS5hZGQoe2lkOiBpLCBuYW1lOiBuYW1lc1tpXX0pLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLQotICAgIGRlYnVnKCIiKTsKLSAgICBjYWxsYmFjaygpOwotfQotCi1mdW5j
dGlvbiBjb250YWlucyhhcnIsIG9iaikKLXsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5s
ZW5ndGg7IGkrKykgewotICAgICAgICBpZiAoYXJyW2ldID09IG9iaikKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZhciBjdXJzb3I7Ci12
YXIgZGVsZXRlZDsKLXZhciBzZWVuOwotCi1mdW5jdGlvbiB0ZXN0Q3Vyc29yKGRlbGV0ZUxpc3Qs
IGNyZWF0ZUN1cnNvckNvbW1hbmQsIGNhbGxiYWNrKQotewotICAgIGRlYnVnKCJcbnRlc3RDdXJz
b3IoKToiKTsKLSAgICBkZWxldGVkID0gW107Ci0gICAgc2VlbiA9IFtdOwotCi0gICAgLy8gQ3Jl
YXRlIHRoZSBjdXJzb3IuCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coY3JlYXRlQ3Vyc29yQ29t
bWFuZCk7Ci0KLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgaWYgKGV2ZW50
LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkgewotICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGhh
dmUgc2VlbiBldmVyeSBub24tZGVsZXRlZCBpdGVtLgotICAgICAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgICAgIGlmIChjb250YWlu
cyhkZWxldGVkLCBpKSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAg
ICAgICAgICBpZiAoIWNvbnRhaW5zKHNlZW4sIGkpKQotICAgICAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJDdXJzb3IgZGlkIG5vdCBzZWUgaXRlbSB3aXRoIGlkOiAiICsgaSk7Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSB1c2VkIGV2ZXJ5IHJ1bGUgaW4g
fGRlbGV0ZUxpc3R8LgotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZWxldGVMaXN0
Lmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb250YWlucyhzZWVuLCBkZWxl
dGVMaXN0W2ldLmlkKSkKLSAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGVsZXRlTGlz
dCBydWxlIHdpdGggaWQ6ICIgKyBkZWxldGVMaXN0W2ldLmlkICsgIiB3YXMgbmV2ZXIgdXNlZC4i
KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZGVidWcoIiIpOwotICAgICAgICAgICAg
Y2FsbGJhY2soKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGN1
cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Ci0gICAgICAgIGRlYnVnKGV2ZW50LnRhcmdldC5y
ZXN1bHQudmFsdWUuaWQgKyAiOiAiICsgZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS5uYW1lKTsK
LSAgICAgICAgc2Vlbi5wdXNoKGV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUuaWQpOwotCi0gICAg
ICAgIC8vIE1ha2Ugc3VyZSB3ZSBkb24ndCBzZWUgYW55IGRlbGV0ZWQgaXRlbXMuCi0gICAgICAg
IGlmIChjb250YWlucyhkZWxldGVkLCBldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLmlkKSkKLSAg
ICAgICAgICAgIHRlc3RGYWlsZWQoIkN1cnNvciBoaXQgcHJldmlvdXNseSBkZWxldGVkIGVsZW1l
bnQuIik7Ci0KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZWxldGVMaXN0Lmxlbmd0aDsg
aSsrKSB7Ci0gICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS5pZCA9PSBk
ZWxldGVMaXN0W2ldLmlkKSB7Ci0gICAgICAgICAgICAgICAgLy8gRGVsZXRlIG9iamVjdHMgdGFy
Z2V0ZWQgYnkgdGhpcyBpZC4KLSAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0cyA9IGRlbGV0ZUxp
c3RbaV0udGFyZ2V0czsKLSAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHRhcmdl
dHMubGVuZ3RoOyBqKyspIHsKLSAgICAgICAgICAgICAgICAgICAgZGVsZXRlZC5wdXNoKHRhcmdl
dHNbal0pOwotICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpLmRlbGV0ZSgiICsgdGFyZ2V0c1tqXSArICIp
Iik7Ci0gICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotICAgICAgICAgICAgICAgICAgICBpZiAoaiA9PSB0YXJnZXRzLmxlbmd0aCAt
IDEpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KCkgeyBjdXJzb3IuY29udGludWUoKTsgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBjdXJzb3Iu
Y29udGludWUoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGJhc2ljQ3Vyc29yVGVzdCgpCi17Ci0g
ICAgZGVidWcoImJhc2ljQ3Vyc29yVGVzdCgpIik7Ci0KLSAgICBldmFsQW5kTG9nKCJ0cmFucyA9
IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsK
LSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnMu
b25jb21wbGV0ZSA9IHRyYW5zYWN0aW9uQ29tcGxldGU7Ci0KLSAgICB2YXIgZGVsZXRlcyA9IFt7
aWQ6IDEsIHRhcmdldHM6IFswXX0sCi0gICAgICAgICAgICAgICAgICAge2lkOiAyLCB0YXJnZXRz
OiBbbmFtZXMubGVuZ3RoIC0gMV19LAotICAgICAgICAgICAgICAgICAgIHtpZDogMywgdGFyZ2V0
czogWzUsNiw3XX0sCi0gICAgICAgICAgICAgICAgICAge2lkOiAxMCwgdGFyZ2V0czogWzEwXX0s
Ci0gICAgICAgICAgICAgICAgICAge2lkOiAxMiwgdGFyZ2V0czogWzEzXX0sCi0gICAgICAgICAg
ICAgICAgICAge2lkOiAxNSwgdGFyZ2V0czogWzE0XX0sCi0gICAgICAgICAgICAgICAgICAge2lk
OiAyMCwgdGFyZ2V0czogWzE3LDE4XX0KLSAgICAgICAgICAgICAgICAgICBdOwotCi0gICAgdGVz
dEN1cnNvcihkZWxldGVzLCAidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykub3BlbkN1cnNvcihJ
REJLZXlSYW5nZS5sb3dlckJvdW5kKDApKSIsIGZ1bmN0aW9uKCkgeyByZXNldE9iamVjdFN0b3Jl
KHJldmVyc2VDdXJzb3JUZXN0KTsgfSk7Ci19Ci0KLWZ1bmN0aW9uIHJldmVyc2VDdXJzb3JUZXN0
KCkKLXsKLSAgICBkZWJ1ZygicmV2ZXJzZUN1cnNvclRlc3QoKToiKTsKLQotICAgIHZhciBkZWxl
dGVzID0gW3tpZDogMjQsIHRhcmdldHM6IFtuYW1lcy5sZW5ndGggLSAxXX0sCi0gICAgICAgICAg
ICAgICAgICAge2lkOiAyMywgdGFyZ2V0czogWzBdfSwKLSAgICAgICAgICAgICAgICAgICB7aWQ6
IDIyLCB0YXJnZXRzOiBbMjAsIDE5LCAxOF19LAotICAgICAgICAgICAgICAgICAgIHtpZDogMTUs
IHRhcmdldHM6IFsxNV19LAotICAgICAgICAgICAgICAgICAgIHtpZDogMTMsIHRhcmdldHM6IFsx
Ml19LAotICAgICAgICAgICAgICAgICAgIHtpZDogMTAsIHRhcmdldHM6IFsxMV19LAotICAgICAg
ICAgICAgICAgICAgIHtpZDogNSwgdGFyZ2V0czogWzcsOF19Ci0gICAgICAgICAgICAgICAgICAg
XTsKLQotCi0gICAgdGVzdEN1cnNvcihkZWxldGVzLCAidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3Jl
Jykub3BlbkN1cnNvcihJREJLZXlSYW5nZS5sb3dlckJvdW5kKDApLCBJREJDdXJzb3IuUFJFViki
LCBmdW5jdGlvbigpIHsgcmVzZXRPYmplY3RTdG9yZShpbmRleEN1cnNvclRlc3QpOyB9KTsKLX0K
LQotZnVuY3Rpb24gaW5kZXhDdXJzb3JUZXN0KCkKLXsKLSAgICBkZWJ1ZygiaW5kZXhDdXJzb3JU
ZXN0KCk6Iik7Ci0KLSAgICB2YXIgZGVsZXRlcyA9IFt7aWQ6IDEsIHRhcmdldHM6IFswXX0sCi0g
ICAgICAgICAgICAgICAgICAge2lkOiAyLCB0YXJnZXRzOiBbbmFtZXMubGVuZ3RoIC0gMV19LAot
ICAgICAgICAgICAgICAgICAgIHtpZDogMywgdGFyZ2V0czogWzUsNiw3XX0sCi0gICAgICAgICAg
ICAgICAgICAge2lkOiAxMCwgdGFyZ2V0czogWzEwXX0sCi0gICAgICAgICAgICAgICAgICAge2lk
OiAxMiwgdGFyZ2V0czogWzEzXX0sCi0gICAgICAgICAgICAgICAgICAge2lkOiAxNSwgdGFyZ2V0
czogWzE0XX0sCi0gICAgICAgICAgICAgICAgICAge2lkOiAyMCwgdGFyZ2V0czogWzE3LDE4XX0K
LSAgICAgICAgICAgICAgICAgICBdOwotCi0gICAgdGVzdEN1cnNvcihkZWxldGVzLCAidHJhbnMu
b2JqZWN0U3RvcmUoJ3N0b3JlJykuaW5kZXgoJ25hbWVJbmRleCcpLm9wZW5DdXJzb3IoSURCS2V5
UmFuZ2UubG93ZXJCb3VuZCgnQWxwaGEnKSkiLCBmdW5jdGlvbigpIHsgfSk7Ci19Ci0KLWZ1bmN0
aW9uIHRyYW5zYWN0aW9uQ29tcGxldGUoKQotewotICAgIGRlYnVnKCJ0cmFuc2FjdGlvbkNvbXBs
ZXRlKCk6Iik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2N1cnNvci1za2lwLWRlbGV0ZWQuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9jdXJzb3ItdXBkYXRlLXZhbHVlLWFyZ3VtZW50LXJlcXVpcmVkLmh0bWwgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItdXBkYXRlLXZhbHVlLWFyZ3VtZW50LXJlcXVp
cmVkLmh0bWwKaW5kZXggZGFkMzMwZjRhMGUwMjYxZjAyMzI0M2I4YWUzMGViNzBhMjZlNWMwZi4u
Njg1OWM3Y2RmNjRjZmQyZTExZjkwOWFiYmM2OWIxYTE1YWVkNzQ2MiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXVwZGF0ZS12YWx1ZS1hcmd1bWVudC1y
ZXF1aXJlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci11
cGRhdGUtdmFsdWUtYXJndW1lbnQtcmVxdWlyZWQuaHRtbApAQCAtMSw4NiArMSwxMCBAQAotPCFE
T0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHAgaWQ9ImRlc2NyaXB0
aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0
aW9uKCJUZXN0IEluZGV4ZWREQiBjdXJzb3IudXBkYXRlIHJlcXVpcmVkIGFyZ3VtZW50cyIpOwot
Ci1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAg
bmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVz
dCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5h
bWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1
bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBk
Yi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHRlc3RHcm91cDE7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1
bmN0aW9uIHRlc3RHcm91cDEoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0K
LSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdhdXRv
SW5jcmVtZW50JywgeyBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOyIpOwotCi0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgIHRlc3RHcm91cDIoKTsKLSAgICB9
Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDIoKQotewotICAgIGtleXMgPSBldmFsQW5kTG9nKCJr
ZXlzID0gWzEsIC0xLCAwLCAxMCwgMjAwMCwgJ3EnLCAneicsICd0d28nLCAnYicsICdhJ107Iik7
Ci0KLSAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gMDsiKTsKLQotICAgIGZv
ciAoaSBpbiBrZXlzKSB7Ci0gICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9i
amVjdFN0b3JlLmFkZCgnZm9vJywga2V5c1tpXSk7Iik7Ci0gICAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVu
Y3Rpb24oZXZlbnQpIHsKLSAgICAgICAgaWYgKCsra2V5SW5kZXggPT0ga2V5cy5sZW5ndGgpIHsK
LSAgICAgICAgICB0ZXN0R3JvdXAzKCk7Ci0gICAgICAgIH0KLSAgICAgIH07Ci0gICAgfQotfQot
Ci1mdW5jdGlvbiB0ZXN0R3JvdXAzKCkKLXsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVx
dWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0
aW9uIChldmVudCkgewotICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVu
dC50YXJnZXQucmVzdWx0OyIpOwotICAgICAgICBpZiAoY3Vyc29yKSB7Ci0gICAgICAgICAgICBz
aG91bGRUaHJvdygiY3Vyc29yLnVwZGF0ZSgpOyIpOwotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiY3Vyc29yIHdhcyBudWxsIik7Ci0gICAgICAgIH0KLSAgICAgICAg
ZmluaXNoSlNUZXN0KCk7Ci0gICAgfQotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2N1cnNvci11cGRhdGUtdmFsdWUtYXJndW1lbnQtcmVxdWlyZWQu
anMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci11cGRhdGUuaHRtbCBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci11cGRhdGUuaHRtbAppbmRleCAxNzRjOTcwMjk5
MDc2NmM1OWVjYjNjZmU5N2I5ZWRmOTI5ZmQzODRlLi5hNDZhNzBkNDcwZjRjMGQ1MDFjYzJiZWFk
M2JmYWFkN2I4YzI3M2VjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9jdXJzb3ItdXBkYXRlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
Y3Vyc29yLXVwZGF0ZS5odG1sCkBAIC00LDIyNCArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxwIGlkPSJkZXNjcmlw
dGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0PgotCi1kZXNjcmlw
dGlvbigiVGVzdCBJbmRleGVkREIncyBjdXJzb3IgdXBkYXRlLiIpOwotCi10ZXN0KCk7Ci0KLWZ1
bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdjdXJzb3ItdXBkYXRlJykiKTsKLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0g
ICAgdmFyIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNp
b25TdWNjZXNzKCkKLXsKLSAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKLSAgICBz
ZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0g
ICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1
bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gb3BlbkJhc2lj
Q3Vyc29yOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIHZhciBvYmpl
Y3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUo
J2Jhc2ljU3RvcmUnKSIpOwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnbXlWYWx1
ZTEnLCAnbXlLZXkxJykub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7Ci0gICAg
ZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlMicsICdteUtleTInKS5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKLSAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9y
ZS5hZGQoJ215VmFsdWUzJywgJ215S2V5MycpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjayIpOwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnbXlWYWx1ZTQnLCAnbXlL
ZXk0Jykub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7Ci0KLSAgICB2YXIgb2Jq
ZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdhdXRvSW5jcmVtZW50U3RvcmUnLCB7YXV0b0luY3JlbWVudDogdHJ1ZX0pIik7Ci0gICAgZXZh
bEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCdmb28xJykub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrIik7Ci0gICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCdmb28yJykub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7Ci0gICAgZXZhbEFuZExvZygib2JqZWN0
U3RvcmUuYWRkKCdmb28zJykub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7Ci0g
ICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCdmb280Jykub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrIik7Ci0KLSAgICB2YXIgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJv
YmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdrZXlQYXRoU3RvcmUnLCB7a2V5UGF0
aDogJ2lkJ30pIik7Ci0gICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ251
bWJlckluZGV4JywgJ251bWJlcicpIik7Ci0gICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRk
KHtudW1iZXI6IDEsIGlkOiAxfSkub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7
Ci0gICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKHtudW1iZXI6IDIsIGlkOiAyfSkub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7Ci0gICAgZXZhbEFuZExvZygib2JqZWN0
U3RvcmUuYWRkKHtudW1iZXI6IDMsIGlkOiAzfSkub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrIik7Ci0gICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKHtudW1iZXI6IDQsIGlk
OiA0fSkub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7Ci19Ci0KLWZ1bmN0aW9u
IG9wZW5CYXNpY0N1cnNvcigpCi17Ci0gICAgZGVidWcoIm9wZW5CYXNpY0N1cnNvcigpIik7Ci0g
ICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ2Jhc2ljU3RvcmUnLCAnYXV0
b0luY3JlbWVudFN0b3JlJywgJ2tleVBhdGhTdG9yZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dS
SVRFKSIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAg
ICB0cmFucy5vbmNvbXBsZXRlID0gdHJhbnNhY3Rpb25Db21wbGV0ZTsKLQotICAgIGtleVJhbmdl
ID0gSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgibXlLZXkxIik7Ci0gICAgc2VsZi5vYmplY3RTdG9y
ZSA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdiYXNpY1N0b3JlJykiKTsKLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGJhc2ljVXBkYXRlQ3Vyc29yOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIGNvdW50ZXIgPSAxOwotfQot
Ci1mdW5jdGlvbiBiYXNpY1VwZGF0ZUN1cnNvcigpCi17Ci0gICAgZGVidWcoImJhc2ljVXBkYXRl
Q3Vyc29yKCkiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnNvdXJjZSIsICJvYmplY3RT
dG9yZSIpOwotICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0ID09IG51bGwpIHsKLSAgICAgICAg
c2hvdWxkQmUoImNvdW50ZXIiLCAiNSIpOwotICAgICAgICBjb3VudGVyID0gMTsKLQotICAgICAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2Jhc2ljU3RvcmUnKS5v
cGVuQ3Vyc29yKGtleVJhbmdlKSIpOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGJhc2lj
Q2hlY2tDdXJzb3I7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImV2ZW50LnRhcmdldC5yZXN1bHQudXBkYXRlKCdteVVwZGF0ZWRWYWx1ZScgKyBjb3VudGVy
KyspIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgZXZhbEFuZExvZygi
ZXZlbnQudGFyZ2V0LnNvdXJjZS5jb250aW51ZSgpIik7IH0KLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYmFzaWNDaGVja0N1cnNv
cigpCi17Ci0gICAgZGVidWcoImJhc2ljQ2hlY2tDdXJzb3IoKSIpOwotICAgIGlmIChldmVudC50
YXJnZXQucmVzdWx0ID09IG51bGwpIHsKLSAgICAgICAgc2hvdWxkQmUoImNvdW50ZXIiLCAiNSIp
OwotICAgICAgICBjb3VudGVyID0gMTsKLQotICAgICAgICBrZXlSYW5nZSA9IElEQktleVJhbmdl
Lmxvd2VyQm91bmQoMSk7Ci0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmpl
Y3RTdG9yZSgnYXV0b0luY3JlbWVudFN0b3JlJykub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKLSAg
ICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhdXRvSW5jcmVtZW50VXBkYXRlQ3Vyc29yOwotICAg
ICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0
LnJlc3VsdC5rZXkiLCAibXlLZXkiICsgY291bnRlcik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJldmVudC50YXJnZXQucmVzdWx0LnZhbHVlIiwgIm15VXBkYXRlZFZhbHVlIiArIGNvdW50
ZXIrKyk7Ci0gICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7
Ci19Ci0KLWZ1bmN0aW9uIGF1dG9JbmNyZW1lbnRVcGRhdGVDdXJzb3IoKQotewotICAgIGRlYnVn
KCJhdXRvSW5jcmVtZW50VXBkYXRlQ3Vyc29yKCkiKTsKLSAgICBpZiAoZXZlbnQudGFyZ2V0LnJl
c3VsdCA9PSBudWxsKSB7Ci0gICAgICAgIHNob3VsZEJlKCJjb3VudGVyIiwgIjUiKTsKLSAgICAg
ICAgY291bnRlciA9IDE7Ci0KLSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zLm9i
amVjdFN0b3JlKCdhdXRvSW5jcmVtZW50U3RvcmUnKS5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOwot
ICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGF1dG9JbmNyZW1lbnRDaGVja0N1cnNvcjsKLSAg
ICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0
LnJlc3VsdC51cGRhdGUoJ215VXBkYXRlZEZvbycgKyBjb3VudGVyKyspIik7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnNvdXJj
ZS5jb250aW51ZSgpIik7IH0KLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYXV0b0luY3JlbWVudENoZWNrQ3Vyc29yKCkKLXsKLSAg
ICBkZWJ1ZygiYXV0b0luY3JlbWVudENoZWNrQ3Vyc29yKCkiKTsKLSAgICBpZiAoZXZlbnQudGFy
Z2V0LnJlc3VsdCA9PSBudWxsKSB7Ci0gICAgICAgIHNob3VsZEJlKCJjb3VudGVyIiwgIjUiKTsK
LSAgICAgICAgY291bnRlciA9IDE7Ci0KLSAgICAgICAga2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5s
b3dlckJvdW5kKDEpOwotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0
U3RvcmUoJ2tleVBhdGhTdG9yZScpLm9wZW5DdXJzb3Ioa2V5UmFuZ2UpIik7Ci0gICAgICAgIHJl
cXVlc3Qub25zdWNjZXNzID0ga2V5UGF0aFVwZGF0ZUN1cnNvcjsKLSAgICAgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAiY291bnRlciIpOwot
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZSIsICJt
eVVwZGF0ZWRGb28iICsgY291bnRlcisrKTsKLSAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQu
cmVzdWx0LmNvbnRpbnVlKCkiKTsKLX0KLQotZnVuY3Rpb24ga2V5UGF0aFVwZGF0ZUN1cnNvcigp
Ci17Ci0gICAgZGVidWcoImtleVBhdGhVcGRhdGVDdXJzb3IoKSIpOwotICAgIGlmIChldmVudC50
YXJnZXQucmVzdWx0ID09IG51bGwpIHsKLSAgICAgICAgc2hvdWxkQmUoImNvdW50ZXIiLCAiNSIp
OwotICAgICAgICBjb3VudGVyID0gMTsKLQotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
dHJhbnMub2JqZWN0U3RvcmUoJ2tleVBhdGhTdG9yZScpLm9wZW5DdXJzb3Ioa2V5UmFuZ2UpIik7
Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0ga2V5UGF0aENoZWNrQ3Vyc29yOwotICAgICAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImV2ZW50LnRhcmdldC5y
ZXN1bHQudXBkYXRlKHtpZDogMTAwICsgY291bnRlciwgbnVtYmVyOiAxMDAgKyBjb3VudGVyfSki
LCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLQotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LnVwZGF0ZSh7aWQ6IGNvdW50ZXIsIG51bWJlcjog
MTAwICsgY291bnRlcisrfSkiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkg
eyBldmFsQW5kTG9nKCJldmVudC50YXJnZXQuc291cmNlLmNvbnRpbnVlKCkiKSB9OwotICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBr
ZXlQYXRoQ2hlY2tDdXJzb3IoKQotewotICAgIGRlYnVnKCJrZXlQYXRoQ2hlY2tDdXJzb3IoKSIp
OwotICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0ID09IG51bGwpIHsKLSAgICAgICAgc2hvdWxk
QmUoImNvdW50ZXIiLCAiNSIpOwotICAgICAgICBjb3VudGVyID0gMTsKLQotICAgICAgICBrZXlS
YW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQoMTAxKTsKLSAgICAgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdrZXlQYXRoU3RvcmUnKS5pbmRleCgnbnVtYmVy
SW5kZXgnKS5vcGVuS2V5Q3Vyc29yKGtleVJhbmdlKSIpOwotICAgICAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGtleUN1cnNvcjsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBzaG91bGRCZSgiZXZl
bnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAiY291bnRlciIpOwotICAgIHNob3VsZEJlKCJldmVudC50
YXJnZXQucmVzdWx0LnZhbHVlLmlkIiwgImNvdW50ZXIiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQu
dGFyZ2V0LnJlc3VsdC52YWx1ZS5udW1iZXIiLCAoY291bnRlciArIDEwMCkudG9TdHJpbmcoKSk7
Ci0gICAgY291bnRlcisrOwotICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29u
dGludWUoKSIpOwotfQotCi1mdW5jdGlvbiBrZXlDdXJzb3IoKQotewotICAgIGRlYnVnKCJrZXlD
dXJzb3IoKSIpOwotICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0ID09IG51bGwpIHsKLSAgICAg
ICAgc2hvdWxkQmUoImNvdW50ZXIiLCAiNSIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgImNvdW50ZXIgKyAxMDAiKTsK
LSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgImNvdW50ZXIi
KTsKLQotICAgIHRyeSB7Ci0gICAgICAgIGRlYnVnKCJldmVudC50YXJnZXQucmVzdWx0LnVwZGF0
ZSh7aWQ6IGNvdW50ZXIsIG51bWJlcjogY291bnRlciArIDIwMH0pIik7Ci0gICAgICAgIGV2ZW50
LnRhcmdldC5yZXN1bHQudXBkYXRlKHtpZDogY291bnRlciwgbnVtYmVyOiBjb3VudGVyICsgMjAw
fSk7Ci0gICAgICAgIHRlc3RGYWlsZWQoIkV4cGVjdGVkIGV4Y2VwdGlvbi4iKTsKLSAgICB9IGNh
dGNoIChlKSB7Ci0gICAgICAgIGNvZGUgPSBlLmNvZGU7Ci0gICAgICAgIHNob3VsZEJlKCJjb2Rl
IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9BTExPV0VEX0VSUiIpOwotICAgIH0KLQotICAg
IGNvdW50ZXIrKzsKLSAgICBldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCk7Ci19Ci0KLWZ1
bmN0aW9uIHRyYW5zYWN0aW9uQ29tcGxldGUoKQotewotICAgIGRlYnVnKCJ0cmFuc2FjdGlvbkNv
bXBsZXRlKCkiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi08L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvY3Vyc29yLXVwZGF0ZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwv
Ym9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2RhdGEtY29ycnVwdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0
YS1jb3JydXB0aW9uLmh0bWwKaW5kZXggNWFiMzljMzRjY2MyNzY5ZTgxMzZmNjI1OGIwYWIwZTk1
ZTk5NTFjNS4uOTU5N2M1YjM1MzVmYmNmZmQ5NWQ3NzFjOWE4NzlmYjg5NjkxYjE4ZSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YS1jb3JydXB0aW9uLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YS1jb3JydXB0aW9uLmh0bWwK
QEAgLTQsNzMgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2Ny
aXB0PgogPC9oZWFkPgogPGJvZHk+Ci08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBkYXRh
IGluc2VydGVkIGludG8gSW5kZXhlZERCIGRvZXMgbm90IGdldCBjb3JydXB0ZWQgb24gZGlzay4i
KTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2RhdGEtY29ycnVwdGlvbicp
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nl
c3MoKQotewotICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOwotICAgIHNlbGYuZGIgPSBldmFs
QW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQotewot
ICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOwotICAgIHNlbGYudHJhbnMgPSBldmFs
QW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUo
InRyYW5zICE9PSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENh
bGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBhZGREYXRhOwotCi0gICAgZGVsZXRlQWxs
T2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdzdG9yZU5hbWUnKSIpOwotfQotCi12YXIgdGVzdERhdGUgPSBuZXcgRGF0ZSgnRmVicnVhcnkg
MjQsIDE5NTUgMTI6MDA6MDgnKTsKLQotZnVuY3Rpb24gYWRkRGF0YSgpCi17Ci0gICAgZGVidWco
ImFkZERhdGEoKToiKTsKLSAgICB2YXIgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2Fj
dGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIElEQlRyYW5zYWN0aW9uLlJFQURf
V1JJVEUpIik7Ci0gICAgdmFyIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gdHJhbnNh
Y3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpLmFkZCh7eDogdGVzdERhdGV9LCAna2V5Jyki
KTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB0
cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZ2V0RGF0YTsKLX0KLQotZnVuY3Rpb24gZ2V0RGF0YSgp
Ci17Ci0gICAgZGVidWcoImFkZERhdGEoKToiKTsKLSAgICB2YXIgdHJhbnNhY3Rpb24gPSBldmFs
QW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIElEQlRy
YW5zYWN0aW9uLlJFQURfT05MWSkiKTsKLSAgICB2YXIgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykuZ2V0KCdrZXknKSIp
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZG9DaGVjazsKLX0KLQotZnVuY3Rpb24gZG9DaGVjaygpCi17Ci0g
ICAgc2hvdWxkQmVUcnVlKCJldmVudC50YXJnZXQucmVzdWx0LngudG9TdHJpbmcoKSA9PSB0ZXN0
RGF0ZS50b1N0cmluZygpIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXRlc3QoKTsKLQot
Ci08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZGF0YS1jb3JydXB0aW9uLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtYmFzaWNzLmh0bWwgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1iYXNpY3MuaHRtbAppbmRleCA3MjMzMGMxMWMzOTAy
NmVjNDgxOGVmMDVhZTk3ODQ4NDQzZTc0Njk3Li4xMGVjYjA1NDRlMjY5ZjExNzEzN2ZmOTc3Njg1
MDFiMTMxOTViOTQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9k
YXRhYmFzZS1iYXNpY3MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9k
YXRhYmFzZS1iYXNpY3MuaHRtbApAQCAtNCwxMjMgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291
cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08cCBpZD0iZGVzY3Jp
cHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdD4KLQotZGVzY3Jp
cHRpb24oIlRlc3QgdGhlIGJhc2ljcyBvZiBJbmRleGVkREIncyBJREJEYXRhYmFzZS4iKTsKLQot
ZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignZGF0YWJhc2UtYmFzaWNzJykiKTsK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2Vzcygp
Ci17Ci0gICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIp
OwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9u
JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb25TdWNjZXNzOwotICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBz
ZXRWZXJzaW9uU3VjY2VzcygpCi17Ci0gICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7
Ci0gICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dCIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKLSAgICB0cmFucy5vbmFi
b3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9y
ZXMoZGIpOwotCi0gICAgZGVidWcoIlRlc3Rpbmcgc2V0VmVyc2lvbi4iKTsKLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygnZGIuc2V0VmVyc2lvbigidmVyc2lvbiBhIiknKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IHNldFZlcnNpb25BZ2FpbjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvbkFnYWluKCkKLXsK
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygnZGIuc2V0VmVyc2lvbigidmVyc2lvbiBiIiknKTsK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZU9iamVjdFN0b3JlOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjcmVhdGVP
YmplY3RTdG9yZSgpCi17Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkYi52ZXJzaW9uIiwg
InZlcnNpb24gYiIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGIubmFtZSIsICJkYXRh
YmFzZS1iYXNpY3MiKTsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcyIsICJbXSIp
OwotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIwIik7Ci0gICAg
c2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJycpIiwgImZhbHNlIik7Ci0g
ICAgc2hvdWxkQmVOdWxsKCJkYi5vYmplY3RTdG9yZU5hbWVzWzBdIik7Ci0gICAgc2hvdWxkQmVO
dWxsKCJkYi5vYmplY3RTdG9yZU5hbWVzLml0ZW0oMCkiKTsKLQotICAgIG9iamVjdFN0b3JlID0g
ZXZhbEFuZExvZygnZGIuY3JlYXRlT2JqZWN0U3RvcmUoInRlc3QxMjMiKScpOwotICAgIGNoZWNr
T2JqZWN0U3RvcmUoKTsKLSAgICBjb21taXRBbmRDb250aW51ZSgpOwotfQotCi1mdW5jdGlvbiBj
aGVja09iamVjdFN0b3JlKCkKLXsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcyIs
ICJbJ3Rlc3QxMjMnXSIpOwotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0
aCIsICIxIik7Ci0gICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJycp
IiwgImZhbHNlIik7Ci0gICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMo
J3Rlc3Q0NTYnKSIsICJmYWxzZSIpOwotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVz
LmNvbnRhaW5zKCd0ZXN0MTIzJykiLCAidHJ1ZSIpOwotfQotCi1mdW5jdGlvbiBjb21taXRBbmRD
b250aW51ZSgpCi17Ci0gICAgc2VsZi5zZXRUaW1lb3V0KHRlc3RTZXRWZXJzaW9uQWJvcnQsIDAp
OwotfQotCi1mdW5jdGlvbiB0ZXN0U2V0VmVyc2lvbkFib3J0KCkKLXsKLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygnZGIuc2V0VmVyc2lvbigidmVyc2lvbiBjIiknKTsKLSAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGNyZWF0ZUFub3RoZXJPYmplY3RTdG9yZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY3JlYXRlQW5vdGhlck9i
amVjdFN0b3JlKCkKLXsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLnZlcnNpb24iLCAi
dmVyc2lvbiBjIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkYi5uYW1lIiwgImRhdGFi
YXNlLWJhc2ljcyIpOwotICAgIGNoZWNrT2JqZWN0U3RvcmUoKTsKLQotICAgIG9iamVjdFN0b3Jl
ID0gZXZhbEFuZExvZygnZGIuY3JlYXRlT2JqZWN0U3RvcmUoInRlc3Q0NTYiKScpOwotICAgIHZh
ciBzZXRWZXJzaW9uVHJhbnMgPSBldmFsQW5kTG9nKCJzZXRWZXJzaW9uVHJhbnMgPSBldmVudC50
YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJzZXRWZXJzaW9uVHJhbnMgIT09IG51
bGwiKTsKLSAgICBzZXRWZXJzaW9uVHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0
ZUNhbGxiYWNrOwotICAgIHNldFZlcnNpb25UcmFucy5vbmFib3J0ID0gY2hlY2tNZXRhZGF0YTsK
LSAgICBzZXRWZXJzaW9uVHJhbnMuYWJvcnQoKTsKLX0KLQotZnVuY3Rpb24gY2hlY2tNZXRhZGF0
YSgpCi17Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkYi52ZXJzaW9uIiwgInZlcnNpb24g
YiIpOwotICAgIGNoZWNrT2JqZWN0U3RvcmUoKTsKLSAgICB0ZXN0Q2xvc2UoKTsKLX0KLQotZnVu
Y3Rpb24gdGVzdENsb3NlKCkKLXsKLSAgICBldmFsQW5kTG9nKCJkYi5jbG9zZSgpIik7Ci0gICAg
ZGVidWcoIk5vdyB0aGF0IHRoZSBjb25uZWN0aW9uIGlzIGNsb3NlZCwgdHJhbnNhY3Rpb24gY3Jl
YXRpb24gc2hvdWxkIGZhaWwiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFu
c2FjdGlvbigndGVzdDEyMycpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9BTExPV0VEX0VS
UiIpOwotICAgIGRlYnVnKCJDYWxsIHR3aWNlLCBtYWtlIHN1cmUgaXQncyBoYXJtbGVzcyIpOwot
ICAgIGV2YWxBbmRMb2coImRiLmNsb3NlKCkiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQot
dGVzdCgpOwotCi0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9kYXRhYmFzZS1i
YXNpY3MuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1uYW1lLXVuZGVmaW5lZC5o
dG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtbmFtZS11bmRlZmlu
ZWQuaHRtbAppbmRleCAzZjY3YTE3MmM5ZTBhMjAxMTc2YTA2Y2MxN2Q1YmY1NWQ3ZmM1Zjc0Li5i
NmY5MTQ0NWUzZjIxNjdhMGQ4YTJkNTU2MjliODVkOTA2NDhhOGRlIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1uYW1lLXVuZGVmaW5lZC5odG1sCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLW5hbWUtdW5kZWZpbmVk
Lmh0bWwKQEAgLTEsMjcgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4K
IDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hl
YWQ+CiA8Ym9keT4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgdW5kZWZpbmVk
IGFzIHJlY29yZCB2YWx1ZSIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5k
b3JQcmVmaXhlcygpOwotICAgIHNob3VsZFRocm93KCJpbmRleGVkREIub3BlbigpOyIpOwotICAg
IGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2RhdGFiYXNlLW5hbWUtdW5kZWZpbmVkLmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvZGF0YWJhc2Utb2RkLW5hbWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9kYXRhYmFzZS1vZGQtbmFtZXMuaHRtbAppbmRleCBkMThmYmY4NjNiNzU1ZGZmM2E3MjFi
YjIxMzg0ZTY3YTk5NjYxMzNmLi4xM2VlZDllOTc3YzlkNmNhN2JmODAxMzEzNDY3NmM0YjJiMTk5
ZjA1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1v
ZGQtbmFtZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFz
ZS1vZGQtbmFtZXMuaHRtbApAQCAtMSw0MyArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+CiA8aHRt
bD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Nj
cmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWRE
QiBvZGQgdmFsdWUgZGF0YXR5cGVzIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92
ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICB0ZXN0RGF0YSA9IFt7IGRlc2NyaXB0aW9uOiAnbnVs
bCcsICAgICAgICAgICAgICAgbmFtZTogJ1x1MDAwMCcgfSwKLSAgICAgICAgICAgICAgICB7IGRl
c2NyaXB0aW9uOiAnZmFpaHUnLCAgICAgICAgICAgICAgbmFtZTogJ1x1ZDgwMFx1ZGY0NicgfSwK
LSAgICAgICAgICAgICAgICB7IGRlc2NyaXB0aW9uOiAndW5wYWlyZWQgc3Vycm9nYXRlJywgbmFt
ZTogJ1x1ZDgwMCcgfSwKLSAgICAgICAgICAgICAgICB7IGRlc2NyaXB0aW9uOiAnZmZmZScsICAg
ICAgICAgICAgICAgbmFtZTogJ1x1ZmZmZScgfSwKLSAgICAgICAgICAgICAgICB7IGRlc2NyaXB0
aW9uOiAnZmZmZicsICAgICAgICAgICAgICAgbmFtZTogJ1x1ZmZmZicgfSwKLSAgICAgICAgICAg
ICAgICB7IGRlc2NyaXB0aW9uOiAnbGluZSBzZXBhcmF0b3InLCAgICAgbmFtZTogJ1x1MjAyOCcg
fQotICAgIF07Ci0gICAgbmV4dFRvT3BlbiA9IDA7Ci0gICAgb3Blbk5leHREYXRhYmFzZSgpOwot
fQotCi1mdW5jdGlvbiBvcGVuTmV4dERhdGFiYXNlKCkKLXsKLSAgICBkZWJ1Zygib3BlbmluZyBh
IGRhdGFiYXNlIG5hbWVkICIgKyB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5kZXNjcmlwdGlvbik7Ci0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKHRlc3REYXRhW25leHRUb09w
ZW5dLm5hbWUsIHRlc3REYXRhW25leHRUb09wZW5dLmRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gKytuZXh0VG9PcGVuIDwgdGVzdERhdGEubGVuZ3RoID8gb3Blbk5leHREYXRhYmFzZSA6
IGZpbmlzaEpTVGVzdDsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9kYXRhYmFzZS1vZGQtbmFtZXMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2Jv
ZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9k
YXRhYmFzZS1xdW90YS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJh
c2UtcXVvdGEuaHRtbAppbmRleCA1OWM3ZGU1ODM5YzY0ZmE3YjBhZDY5MTUyYmJlMzQyNTdiOWFl
OTMxLi5kZjYzNzZlZmRiOGI1YWFmYjI4ODRmZjA1M2NhOTQxMjBjZmZkNGM2IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1xdW90YS5odG1sCisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLXF1b3RhLmh0bWwKQEAgLTQs
MTA1ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4K
IDwvaGVhZD4KIDxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0cyBJbmRleGVkREIncyBx
dW90YSBlbmZvcmNpbmcgbWVjaGFuaXNtLiIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICBy
ZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVk
REIub3BlbignZGF0YWJhc2UtcXVvdGEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3Bl
blN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBzZWxmLmRiID0gZXZhbEFuZExv
ZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gc2V0VmVyc2lvblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb25TdWNjZXNzKCkKLXsKLSAgICBk
ZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKLSAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExv
ZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFu
cyAhPT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFj
azsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gY2hlY2tRdW90YUVuZm9yY2luZzsKLQotICAgIGRl
bGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRi
LnZlcnNpb24iLCAibmV3IHZlcnNpb24iKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRi
Lm5hbWUiLCAiZGF0YWJhc2UtcXVvdGEiKTsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVO
YW1lcyIsICJbXSIpOwotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIs
ICIwIik7Ci0gICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJycpIiwg
ImZhbHNlIik7Ci0KLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coJ2RiLmNyZWF0ZU9iamVj
dFN0b3JlKCJ0ZXN0MTIzIiknKTsKLSAgICBjaGVja09iamVjdFN0b3JlKCk7Ci19Ci0KLWZ1bmN0
aW9uIGNoZWNrT2JqZWN0U3RvcmUoKQotewotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5h
bWVzIiwgIlsndGVzdDEyMyddIik7Ci0gICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMu
bGVuZ3RoIiwgIjEiKTsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlu
cygnJykiLCAiZmFsc2UiKTsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5jb250
YWlucygndGVzdDQ1NicpIiwgImZhbHNlIik7Ci0gICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3Jl
TmFtZXMuY29udGFpbnMoJ3Rlc3QxMjMnKSIsICJ0cnVlIik7Ci19Ci0KLWZ1bmN0aW9uIGNoZWNr
UXVvdGFFbmZvcmNpbmcoKQotewotICAgIHZhciB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0g
ZGIudHJhbnNhY3Rpb24oWyd0ZXN0MTIzJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7
Ci0gICAgdHJhbnMub25hYm9ydCA9IHRlc3RDb21wbGV0ZTsKLSAgICB0cmFucy5vbmNvbXBsZXRl
ID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7Ci0gICAgZGVidWcoIkNyZWF0aW5nICdkYXRh
JyB3aGljaCBjb250YWlucyA2NEsgb2YgZGF0YSIpOwotICAgIHNlbGYuZGF0YSA9ICJYIjsKLSAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyBpKyspCi0gICAgICAgIGRhdGEgKz0gZGF0YTsKLSAg
ICBzaG91bGRCZSgiZGF0YS5sZW5ndGgiLCAiNjU1MzYiKTsKLSAgICBzZWxmLmRhdGFBZGRlZCA9
IDA7Ci0gICAgc2VsZi5zdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3Rv
cmUoJ3Rlc3QxMjMnKSIpOwotICAgIGFkZERhdGEoKTsKLX0KLQotZnVuY3Rpb24gYWRkRGF0YSgp
Ci17Ci0gICAgaWYgKGRhdGFBZGRlZCA8IDUgKiAxMDI0ICogMTAyNCkgewotICAgICAgICBpZiAo
ZGF0YUFkZGVkID4gMCkKLSAgICAgICAgICAgIHN0b3JlID0gZXZlbnQudGFyZ2V0LnNvdXJjZTsK
LSAgICB9IGVsc2UgewotICAgICAgICB0ZXN0RmFpbGVkKCJhZGRlZCBtb3JlIHRoYW4gcXVvdGEi
KTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
ZGF0YUFkZGVkICs9IDY1NTM2OwotICAgIHJlcXVlc3QgPSBzdG9yZS5hZGQoe3g6IGRhdGF9LCBk
YXRhQWRkZWQpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkRGF0YTsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSBsb2dFcnJvcjsKLX0KLQotZnVuY3Rpb24gbG9nRXJyb3IoKQotewotICAgIGRl
YnVnKCJFcnJvciBmdW5jdGlvbiBjYWxsZWQ6ICgiICsgZXZlbnQudGFyZ2V0LmVycm9yQ29kZSAr
ICIpICIgKyBldmVudC50YXJnZXQud2Via2l0RXJyb3JNZXNzYWdlKTsKLSAgICBldmFsQW5kTG9n
KCJldmVudC5wcmV2ZW50RGVmYXVsdCgpIik7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RDb21wbGV0ZSgp
Ci17Ci0gICAgdGVzdFBhc3NlZCgiQWRkaW5nIGRhdGEgZmFpbGVkIGR1ZSB0byBxdW90YSBlcnJv
ci4gRGF0YSBhZGRlZCB3YXMgYWJvdXQgIiArIE1hdGgucm91bmQoZGF0YUFkZGVkIC8gMTAyNCAv
IDEwMjQpICsgIiBNQiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi10ZXN0KCk7Ci0KLQot
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RhdGFiYXNlLXF1b3RhLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlLWNsb3NlZC1kYXRhYmFzZS1vYmplY3QuaHRtbCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZS1jbG9zZWQtZGF0YWJhc2Utb2JqZWN0
Lmh0bWwKaW5kZXggZjczNmIzMDJkNmZjMzI3YzgyY2Y1ZWIwYTU3MTQyYTczZjAyZTNlZS4uN2Zk
ZjU4ZTFkM2Y4YjIxNzRhNzMyNDc4OGM2OGNhZjY3ODQ5N2RlNyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlLWNsb3NlZC1kYXRhYmFzZS1vYmplY3QuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGUtY2xvc2VkLWRhdGFi
YXNlLW9iamVjdC5odG1sCkBAIC00LDU4ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
c2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9u
Ij48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9u
KCJFbnN1cmUgdGhhdCBJREJEYXRhYmFzZSBvYmplY3RzIGFyZSBkZWxldGVkIHdoZW4gdGhlcmUg
YXJlIG5vIHJldGFpbmluZyBwYXRocyBsZWZ0Iik7Ci0KLQotZnVuY3Rpb24gdGVzdCgpIHsKLSAg
ICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIG9wZW5EQkNvbm5lY3Rpb24oKTsKLX0KLQot
ZnVuY3Rpb24gb3BlbkRCQ29ubmVjdGlvbigpCi17Ci0gICAgZXZhbEFuZExvZygic2VsZi5zdGF0
ZSA9ICdzdGFydGluZyciKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9w
ZW4oJ2RlbGV0ZS1jbG9zZWQtZGF0YWJhc2Utb2JqZWN0JykiKTsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgc2VsZi5kYiA9
IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgLy8gT3BlbiBh
IHNlY29uZCBjb25uZWN0aW9uIHRvIHRoZSBzYW1lIGRhdGFiYXNlLgotICAgIHZhciByZXF1ZXN0
MiA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdkZWxldGUtY2xvc2VkLWRhdGFiYXNlLW9i
amVjdCcpIik7Ci0gICAgcmVxdWVzdDIub25zdWNjZXNzID0gb3BlblN1Y2Nlc3MyOwotICAgIHJl
cXVlc3QyLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24g
b3BlblN1Y2Nlc3MyKCkKLXsKLSAgICBkZWJ1ZygiU2Vjb25kIGNvbm5lY3Rpb24gc3VjY2Vzc2Z1
bGx5IGVzdGFibGlzaGVkLiIpOwotICAgIC8vIEFmdGVyIGxlYXZpbmcgdGhpcyBmdW5jdGlvbiwg
dGhlcmUgYXJlIG5vIHJlbWFpbmluZyByZWZlcmVuY2VzIHRvIHRoZQotICAgIC8vIHNlY29uZCBj
b25uZWN0aW9uLCBzbyBpdCBzaG91bGQgZ2V0IGRlbGV0ZWQuCi0gICAgc2V0VGltZW91dChzZXRW
ZXJzaW9uLCAyKTsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvbigpCi17Ci0gICAgZ2MoKTsKLSAg
ICBkZWJ1ZygiY2FsbGluZyBzZXRWZXJzaW9uKCkgLSBjYWxsYmFjayBzaG91bGQgcnVuIGltbWVk
aWF0ZWx5Iik7Ci0gICAgdmFyIHZlcnNpb25DaGFuZ2VSZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIu
c2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsKLSAgICB2ZXJzaW9uQ2hhbmdlUmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgdmVyc2lvbkNoYW5nZVJlcXVlc3Qu
b25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2NrZWRDYWxsYmFjazsKLSAgICB2ZXJzaW9uQ2hhbmdl
UmVxdWVzdC5vbnN1Y2Nlc3MgPSBmaW5pc2hKU1Rlc3Q7Ci19Ci0KLQotdGVzdCgpOwotCi08L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZGVsZXRlLWNsb3NlZC1kYXRhYmFzZS1vYmpl
Y3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGUtcmFuZ2UuaHRtbCBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZS1yYW5nZS5odG1sCmluZGV4IDZkYWIxYmFlMzg1
MDVjMDQ0MDkxYTM5MzUxNzg5YjI0ZWE1NjE5MWIuLmM4MDA0MTE4ZGRkNTVjOGMxOWFlNzg1MzY5
MzBiNDdjY2I3MDcyMWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2RlbGV0ZS1yYW5nZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Rl
bGV0ZS1yYW5nZS5odG1sCkBAIC00LDk3ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
c2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9u
Ij48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9u
KCJUZXN0IEluZGV4ZWREQidzIElEQk9iamVjdFN0b3JlLmRlbGV0ZShJREJLZXlSYW5nZSkgbWV0
aG9kLiIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygp
OwotCi0gICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgn
ZGVsZXRlLXJhbmdlJykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAg
ZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKCdkZWxldGUtcmFuZ2UnKSIpOwot
ICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICBldmFsQW5k
TG9nKCJkYiA9IHJlcXVlc3QucmVzdWx0Iik7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coInRyYW5zID0gcmVx
dWVzdC5yZXN1bHQiKTsKLSAgICAgICAgICAgICAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3Rl
ZEFib3J0Q2FsbGJhY2s7Ci0KLSAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVP
YmplY3RTdG9yZSgnc3RvcmUnKSIpOwotCi0gICAgICAgICAgICAgICAgdHJhbnMub25jb21wbGV0
ZSA9IHJ1blRlc3RzOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICB9Ci19Ci0KLWZ1
bmN0aW9uIGNoZWNrS2V5cyhleHBlY3RlZCwgY2FsbGJhY2spCi17Ci0gICAgZGVidWcoImdldHRp
bmcga2V5cyBmcm9tIHN0b3JlLi4uIik7Ci0gICAgZGVidWcoImV4cGVjdDogIiArIEpTT04uc3Ry
aW5naWZ5KGV4cGVjdGVkKSk7Ci0gICAgdmFyIGtleXMgPSBbXTsKLSAgICByZXF1ZXN0ID0gc3Rv
cmUub3BlbkN1cnNvcigpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewotICAgICAgICBj
dXJzb3IgPSByZXF1ZXN0LnJlc3VsdDsKLSAgICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICAg
ICAga2V5cy5wdXNoKGN1cnNvci5rZXkpOwotICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBkZWJ1ZygiYWN0dWFsOiAiICsgSlNPTi5z
dHJpbmdpZnkoa2V5cykpOwotICAgICAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KGV4cGVjdGVk
KSA9PT0gSlNPTi5zdHJpbmdpZnkoa2V5cykpIHsKLSAgICAgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCJNYXRjaCEiKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiRG9uJ3QgbWF0Y2ghIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Owot
fQotCi12YXIgdGVzdHMgPSBbCi0gICAgeyBsb3dlcjogMywgdXBwZXI6IDgsIGxvd2VyT3Blbjog
ZmFsc2UsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiBbMSwgMiwgOSwgMTBdfSwKLSAgICB7
IGxvd2VyOiAzLCB1cHBlcjogOCwgbG93ZXJPcGVuOiB0cnVlLCB1cHBlck9wZW46IGZhbHNlLCBl
eHBlY3RlZDogWzEsIDIsIDMsIDksIDEwXX0sCi0gICAgeyBsb3dlcjogMywgdXBwZXI6IDgsIGxv
d2VyT3BlbjogZmFsc2UsIHVwcGVyT3BlbjogdHJ1ZSwgZXhwZWN0ZWQ6IFsxLCAyLCA4LCA5LCAx
MF19LAotICAgIHsgbG93ZXI6IDMsIHVwcGVyOiA4LCBsb3dlck9wZW46IHRydWUsIHVwcGVyT3Bl
bjogdHJ1ZSwgZXhwZWN0ZWQ6IFsxLCAyLCAzLCA4LCA5LCAxMF19Ci1dOwotCi1mdW5jdGlvbiBy
dW5UZXN0cygpCi17Ci0gICAgZnVuY3Rpb24gbmV4dFRlc3QoKSB7Ci0gICAgICAgIHZhciB0ZXN0
ID0gdGVzdHMuc2hpZnQoKTsKLSAgICAgICAgaWYgKHRlc3QpIHsKLSAgICAgICAgICAgIGRlYnVn
KCIiKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0
b3JlJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICAgICAgICAgIGV2YWxBbmRM
b2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKLSAgICAgICAgICAgIGZv
ciAoaSA9IDE7IGkgPD0gMTA7ICsraSkgewotICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coInN0
b3JlLnB1dCgiICsgaSArICIsIiArIGkgKyAiKSIpOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgZXZhbEFuZExvZygic3RvcmUuZGVsZXRlKElEQktleVJhbmdlLmJvdW5kKCIgKwotICAgICAg
ICAgICAgICAgIHRlc3QubG93ZXIgKyAiLCAiICsKLSAgICAgICAgICAgICAgICB0ZXN0LnVwcGVy
ICsgIiwgIiArCi0gICAgICAgICAgICAgICAgdGVzdC5sb3dlck9wZW4gKyAiLCAiICsKLSAgICAg
ICAgICAgICAgICB0ZXN0LnVwcGVyT3BlbiArICIpKSIpOwotICAgICAgICAgICAgY2hlY2tLZXlz
KHRlc3QuZXhwZWN0ZWQsIG5leHRUZXN0KTsKLSAgICAgICAgICAgIHRyYW5zLm9uYWJvcnQgPSB1
bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICAgICAgICAgIHRyYW5zLm9uY29tcGxldGUgPSBu
ZXh0VGVzdDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotICAgIG5leHRUZXN0KCk7Ci19
Ci0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RlbGV0ZS1y
YW5nZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZUluZGV4Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVJbmRleC5odG1sCmluZGV4IDEzY2UxZjM0ZTA4
N2M5ODlhZDk0NzdlMmNhNzAwNjk5OTc2ZmNkYjcuLmIyY2E0NDM1ZTVlM2YxZDI1OGNjMWI0YzY5
ZDMxYTgzYzRhZGYwZDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2RlbGV0ZUluZGV4Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGVs
ZXRlSW5kZXguaHRtbApAQCAtMSw2MSArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4K
IDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Njcmlw
dD4KIDwvaGVhZD4KIDxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBk
ZWxldGVJbmRleCBtZXRob2QiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVu
ZG9yUHJlZml4ZXMoKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4o
J2RlbGV0ZUluZGV4JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5j
dGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIu
c2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0d2lkZGxlSW5kZXhl
czsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQot
ZnVuY3Rpb24gdHdpZGRsZUluZGV4ZXMoKQotewotICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExv
ZygidHJhbnNhY3Rpb24gPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgIHRyYW5zYWN0aW9u
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB0cmFuc2FjdGlvbi5vbmFi
b3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnNhY3Rpb24ub25jb21wbGV0
ZSA9IHBvc3RUd2lkZGxpbmc7Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAg
IG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RT
dG9yZSgnZm9vJyk7Iik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigib2JqZWN0U3RvcmUu
ZGVsZXRlSW5kZXgoJ2ZpcnN0JykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VS
UiIpOwotICAgIHNob3VsZFRocm93KCJvYmplY3RTdG9yZS5kZWxldGVJbmRleCgpIik7IC8vIFR5
cGVFcnJvcjogbm90IGVub3VnaCBhcmd1bWVudHMuCi0gICAgaW5kZXggPSBldmFsQW5kTG9nKCJp
bmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdmaXJzdCcsICdmaXJzdCcpOyIpOwotICAg
IGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIm9iamVjdFN0b3JlLmRlbGV0ZUluZGV4KCdGSVJTVCcp
IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKLSAgICBpbmRleCA9IGV2
YWxBbmRMb2coImluZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ3NlY29uZCcsICdzZWNv
bmQnKTsiKTsKLSAgICByZXR1cm5WYWx1ZSA9IGV2YWxBbmRMb2coInJldHVyblZhbHVlID0gb2Jq
ZWN0U3RvcmUuZGVsZXRlSW5kZXgoJ2ZpcnN0Jyk7Iik7Ci0gICAgc2hvdWxkQmUoInJldHVyblZh
bHVlIiwgInVuZGVmaW5lZCIpOwotfQotCi1mdW5jdGlvbiBwb3N0VHdpZGRsaW5nKCkKLXsKLSAg
ICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnYmFyJyk7Iiwg
IklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9BTExPV0VEX0VSUiIpOwotICAgIGV2YWxBbmRFeHBl
Y3RFeGNlcHRpb24oIm9iamVjdFN0b3JlLmRlbGV0ZUluZGV4KCdzZWNvbmQnKSIsICJJREJEYXRh
YmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsKLSAgICBmaW5pc2hKU1Rl
c3QoKTsKLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
ZGVsZXRlSW5kZXguanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVPYmplY3RTdG9yZS1u
YW1lLWFyZ3VtZW50LXJlcXVpcmVkLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9kZWxldGVPYmplY3RTdG9yZS1uYW1lLWFyZ3VtZW50LXJlcXVpcmVkLmh0bWwKaW5kZXggM2Y5
YmNhNzg0NjViZTBjZmZjY2U3NjU1OWE3YTBkODk1OWUzYjk0Ny4uMTdhODllZGFkZjY3NTQ1YjEz
ZGZjMjBlOWI3OWY3MzYwOTBiODlmOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvZGVsZXRlT2JqZWN0U3RvcmUtbmFtZS1hcmd1bWVudC1yZXF1aXJlZC5odG1sCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZU9iamVjdFN0b3JlLW5hbWUt
YXJndW1lbnQtcmVxdWlyZWQuaHRtbApAQCAtMSw0OCArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+
CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpz
Ij48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IElu
ZGV4ZWREQiBkZWxldGVPYmplY3RTdG9yZSByZXF1aXJlZCBhcmd1bWVudCIpOwotCi1mdW5jdGlv
biB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNl
bGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFz
ZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2Ny
aXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9w
ZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJz
aW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2Jq
ZWN0U3RvcmU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQotewotICAgIGRl
bGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBzaG91bGRUaHJvdygiZGIuZGVsZXRlT2Jq
ZWN0U3RvcmUoKTsiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9kZWxldGVPYmplY3RTdG9yZS1uYW1lLWFy
Z3VtZW50LXJlcXVpcmVkLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlT2JqZWN0U3Rv
cmUtbnVsbC1uYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVP
YmplY3RTdG9yZS1udWxsLW5hbWUuaHRtbAppbmRleCA3ZWNmOWRlNjY2ZmQ2OTdhMmM1Yzg1NTAy
MDYwOTI4ZmJjYzcwZTA0Li4yZjhlNzBiYzAwY2MxMjVlMWUzNTcwZmMxM2JlZDFkMTUzZjkyN2Q4
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVPYmplY3RT
dG9yZS1udWxsLW5hbWUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9k
ZWxldGVPYmplY3RTdG9yZS1udWxsLW5hbWUuaHRtbApAQCAtMSw0OSArMSwxMCBAQAotPCFET0NU
WVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
c2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9u
Ij48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9u
KCJUZXN0IEluZGV4ZWREQiBkZWxldGVPYmplY3RTdG9yZSByZXF1aXJlZCBhcmd1bWVudCIpOwot
Ci1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAg
bmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVz
dCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5h
bWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1
bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBk
Yi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBv
cHVsYXRlT2JqZWN0U3RvcmU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQot
ewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBldmFsQW5kTG9nKCJkYi5j
cmVhdGVPYmplY3RTdG9yZSgnbnVsbCcpOyIpOwotICAgIGV2YWxBbmRMb2coImRiLmRlbGV0ZU9i
amVjdFN0b3JlKG51bGwpOyIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsK
LQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RlbGV0ZU9iamVjdFN0b3JlLW51
bGwtbmFtZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2R1cGxpY2F0ZXMuaHRtbCBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2R1cGxpY2F0ZXMuaHRtbAppbmRleCA4YzU3MjQ4ZTdl
OGU2ZWNhOTM5NGFlZDIxOWEyMzJkNDM1MDBmYzNiLi41ZTk0OWRkOGMyOGFiOGM2MjQ3MDk3NmI2
MjNhNGFlMzE2Y2E5MmI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9kdXBsaWNhdGVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZHVw
bGljYXRlcy5odG1sCkBAIC00LDE3NCArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3No
YXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+
PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigi
VmVyaWZ5IHRoYXQgeW91IGNhbiBwdXQgdGhlIHNhbWUgZGF0YSBpbiAyIGRpZmZlcmVudCBkYXRh
YmFzZXMgd2l0aG91dCB1bmlxdWVuZXNzIGNvbnN0cmFpbnRzIGZpcmluZy4iKTsKLQotdGVzdENv
dW50ID0gMDsKLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIGlmICh0ZXN0Q291bnQrKyA9PSAwKQot
ICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2R1cGxpY2F0ZXMt
MScpIik7Ci0gICAgZWxzZQotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERC
Lm9wZW4oJ2R1cGxpY2F0ZXMtMicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJz
aW9uOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQot
Ci1mdW5jdGlvbiBzZXRWZXJzaW9uKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZl
cnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4
aXN0aW5nOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
fQotCi1mdW5jdGlvbiBkZWxldGVFeGlzdGluZygpCi17Ci0gICAgZGVidWcoInNldFZlcnNpb25T
dWNjZXNzKCk6Iik7Ci0gICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKLSAg
ICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0KLSAgICBkZWxldGVB
bGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgc2VsZi5zdG9yZSA9IGV2YWxBbmRMb2coImRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOwotICAgIHNlbGYuaW5kZXhPYmpl
Y3QgPSBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhOYW1lJywgJ3gnKSIpOwot
ICAgIGFkZERhdGEoKTsKLX0KLQotZnVuY3Rpb24gYWRkRGF0YSgpCi17Ci0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAna2V5JykiKTsK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZE1vcmU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGFkZE1vcmUoKQotewotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJldmVudC50YXJnZXQuc291cmNlLmFkZCh7eDogJ3ZhbHVl
MicsIHk6ICd6enoyJ30sICdrZXkyJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldERh
dGE7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0K
LWZ1bmN0aW9uIGdldERhdGEoKQotewotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9i
amVjdC5nZXRLZXkoJ3ZhbHVlJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldE9iamVj
dERhdGE7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19
Ci0KLWZ1bmN0aW9uIGdldE9iamVjdERhdGEoKQotewotICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJrZXkiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJpbmRleE9iamVjdC5nZXQoJ3ZhbHVlJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGdldERhdGFGYWlsOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotfQotCi1mdW5jdGlvbiBnZXREYXRhRmFpbCgpCi17Ci0gICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LngiLCAidmFsdWUiKTsKLSAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQueSIsICJ6enoiKTsKLQotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5nZXRLZXkoJ2RvZXMgbm90IGV4aXN0JykiKTsK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldE9iamVjdERhdGFGYWlsOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBnZXRPYmpl
Y3REYXRhRmFpbCgpCi17Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAidW5k
ZWZpbmVkIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhPYmplY3QuZ2V0KCdk
b2VzIG5vdCBleGlzdCcpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuS2V5Q3Vyc29y
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1m
dW5jdGlvbiBvcGVuS2V5Q3Vyc29yKCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJl
c3VsdCIsICJ1bmRlZmluZWQiKTsKLQotICAgIHNlbGYucmVxdWVzdCA9IGV2YWxBbmRMb2coImlu
ZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3IoKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Vy
c29yMUNvbnRpbnVlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotfQotCi1mdW5jdGlvbiBjdXJzb3IxQ29udGludWUoKQotewotICAgIHNob3VsZEJlRmFs
c2UoImV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgInZhbHVlIik7Ci0gICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAia2V5Iik7Ci0K
LSAgICAvLyBXZSByZS11c2UgdGhlIGxhc3QgcmVxdWVzdCBvYmplY3QuCi0gICAgZXZhbEFuZExv
ZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7Ci0gICAgc2VsZi5yZXF1ZXN0Lm9u
c3VjY2VzcyA9IGN1cnNvcjFDb250aW51ZTI7Ci19Ci0KLWZ1bmN0aW9uIGN1cnNvcjFDb250aW51
ZTIoKQotewotICAgIHNob3VsZEJlRmFsc2UoImV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwi
KTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5Iiwg
InZhbHVlMiIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3Vs
dC5wcmltYXJ5S2V5IiwgImtleTIiKTsKLQotICAgIC8vIFdlIHJlLXVzZSB0aGUgbGFzdCByZXF1
ZXN0IG9iamVjdC4KLSAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVl
KCkiKTsKLSAgICBzZWxmLnJlcXVlc3Qub25zdWNjZXNzID0gb3Blbk9iamVjdEN1cnNvcjsKLX0K
LQotZnVuY3Rpb24gb3Blbk9iamVjdEN1cnNvcigpCi17Ci0gICAgc2hvdWxkQmVUcnVlKCJldmVu
dC50YXJnZXQucmVzdWx0ID09PSBudWxsIik7Ci0KLSAgICBzZWxmLnJlcXVlc3QgPSBldmFsQW5k
TG9nKCJpbmRleE9iamVjdC5vcGVuQ3Vyc29yKCkiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGN1cnNvcjJDb250aW51ZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY3Vyc29yMkNvbnRpbnVlKCkKLXsKLSAgICBzaG91bGRC
ZUZhbHNlKCJldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsIik7Ci0gICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICJ2YWx1ZSIpOwotICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS54IiwgInZhbHVlIik7
Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLnki
LCAienp6Iik7Ci0KLSAgICAvLyBXZSByZS11c2UgdGhlIGxhc3QgcmVxdWVzdCBvYmplY3QuCi0g
ICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7Ci0gICAgc2Vs
Zi5yZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvcjJDb250aW51ZTI7Ci19Ci0KLWZ1bmN0aW9uIGN1
cnNvcjJDb250aW51ZTIoKQotewotICAgIHNob3VsZEJlRmFsc2UoImV2ZW50LnRhcmdldC5yZXN1
bHQgPT09IG51bGwiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5y
ZXN1bHQua2V5IiwgInZhbHVlMiIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQu
dGFyZ2V0LnJlc3VsdC52YWx1ZS54IiwgInZhbHVlMiIpOyAgICAKLSAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUueSIsICJ6enoyIik7Ci0KLSAgICAv
LyBXZSByZS11c2UgdGhlIGxhc3QgcmVxdWVzdCBvYmplY3QuCi0gICAgZXZhbEFuZExvZygiZXZl
bnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7Ci0gICAgc2VsZi5yZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGxhc3Q7Ci19Ci0KLWZ1bmN0aW9uIGxhc3QoKQotewotICAgIHNob3VsZEJlVHJ1ZSgiZXZl
bnQudGFyZ2V0LnJlc3VsdCA9PT0gbnVsbCIpOwotCi0gICAgaWYgKHRlc3RDb3VudCA9PSAxKQot
ICAgICAgICB0ZXN0KCk7Ci0gICAgZWxzZQotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQot
cmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLXRlc3QoKTsKLQotCi08L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvZHVwbGljYXRlcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4K
IDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Vycm9y
LWNhdXNlcy1hYm9ydC1ieS1kZWZhdWx0Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9lcnJvci1jYXVzZXMtYWJvcnQtYnktZGVmYXVsdC5odG1sCmluZGV4IDk2ZDM0Nzc0N2M1
MzU2Njc0YzQyZWRmOGY1YTgyMWY0ZDQ1NjMxN2EuLmZhNzRkMTI1MjcwNTFmNzE3Y2E0YWYyNGI1
YzI3MDUzNTA3MjE2MGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2Vycm9yLWNhdXNlcy1hYm9ydC1ieS1kZWZhdWx0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvZXJyb3ItY2F1c2VzLWFib3J0LWJ5LWRlZmF1bHQuaHRtbApAQCAtNCwx
MDkgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0Pgog
PC9oZWFkPgogPGJvZHk+Ci08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlZlcmlmeSB0aGF0IGEgdHJhbnNh
Y3Rpb24gd2l0aCBhbiBlcnJvciBhYm9ydHMgdW5sZXNzIHByZXZlbnREZWZhdWx0KCkgaXMgY2Fs
bGVkLiIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygp
OwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignZXJyb3ItY2F1c2Vz
LWFib3J0LWJ5LWRlZmF1bHQnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lv
bjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQot
ZnVuY3Rpb24gc2V0VmVyc2lvbigpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJz
aW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlz
dGluZzsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0K
LQotZnVuY3Rpb24gZGVsZXRlRXhpc3RpbmcoKQotewotICAgIGRlYnVnKCJzZXRWZXJzaW9uU3Vj
Y2VzcygpOiIpOwotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0gICAg
dHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIGV2YWxBbmRMb2co
InRyYW5zLm9uY29tcGxldGUgPSBhZGREYXRhIik7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9y
ZXMoZGIpOwotCi0gICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFt
ZScsIG51bGwpIik7Ci19Ci0KLWZ1bmN0aW9uIGFkZERhdGEoKQotewotICAgIHRyYW5zID0gZXZh
bEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2Fj
dGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSB1bmV4
cGVjdGVkQWJvcnRDYWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUg
PSB0cmFuc2FjdGlvbkNvbXBsZXRlZCIpOwotICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUg
PSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gYWRkTW9yZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYWRkTW9yZSgpCi17Ci0gICAgCi0gICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5zb3VyY2UuYWRkKHt4OiAndmFsdWUn
LCB5OiAnenp6J30sICdrZXknKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3Rl
ZFN1Y2Nlc3NDYWxsYmFjazsKLSAgICByZXF1ZXN0LmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIiwg
cHJldmVudFRoZURlZmF1bHQpOwotfQotCi1mdW5jdGlvbiBwcmV2ZW50VGhlRGVmYXVsdCgpCi17
Ci0gICAgZXZhbEFuZExvZygiZXZlbnQucHJldmVudERlZmF1bHQoKSIpOwotfQotCi1mdW5jdGlv
biB0cmFuc2FjdGlvbkNvbXBsZXRlZCgpCi17Ci0gICAgdGVzdFBhc3NlZCgiVHJhbnNhY3Rpb24g
Y29tcGxldGVkIik7Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCIiKTsKLSAgICB0cmFucyA9
IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJh
bnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmFib3J0ID0g
dHJhbnNhY3Rpb25BYm9ydGVkMSIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUg
PSB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjayIpOwotICAgIHN0b3JlID0gZXZhbEFuZExvZygi
c3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSBhbGxvd0RlZmF1bHQ7Ci19Ci0KLWZ1bmN0aW9uIGFsbG93RGVmYXVs
dCgpCi17Ci0gICAgZGVidWcoIkRvaW5nIG5vdGhpbmcgdG8gcHJldmVudCB0aGUgZGVmYXVsdCBh
Y3Rpb24uLi4iKTsKLX0KLQotZnVuY3Rpb24gdHJhbnNhY3Rpb25BYm9ydGVkMSgpCi17Ci0gICAg
dGVzdFBhc3NlZCgiVHJhbnNhY3Rpb24gYWJvcnRlZCIpOwotICAgIGRlYnVnKCIiKTsKLSAgICBk
ZWJ1ZygiIik7Ci0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9u
KFsnc3RvcmVOYW1lJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFu
ZExvZygidHJhbnMub25hYm9ydCA9IHRyYW5zYWN0aW9uQWJvcnRlZDIiKTsKLSAgICBldmFsQW5k
TG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2siKTsKLSAg
ICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFt
ZScpIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywg
eTogJ3p6eid9LCAna2V5JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRT
dWNjZXNzQ2FsbGJhY2s7Ci0gICAgZGVidWcoIk9taXR0aW5nIGFuIG9uZXJyb3IgaGFuZGxlciIp
OwotfQotCi1mdW5jdGlvbiB0cmFuc2FjdGlvbkFib3J0ZWQyKCkKLXsKLSAgICB0ZXN0UGFzc2Vk
KCJUcmFuc2FjdGlvbiBhYm9ydGVkIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXRlc3Qo
KTsKLQotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZXJyb3ItY2F1c2VzLWFi
b3J0LWJ5LWRlZmF1bHQuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9leGNlcHRpb24taW4tZXZl
bnQtYWJvcnRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2V4
Y2VwdGlvbi1pbi1ldmVudC1hYm9ydHMtZXhwZWN0ZWQudHh0CmluZGV4IGU3Mjc3ZGIzNmE2ZTc5
YmRiMDRlMGYxNmJkNWQ3ZWU5NTYzZDEyOTYuLmEwYTk2MDE0YWMxZDQ1MWZkNDYzYzg5YmM2YWZk
YzY2MGZmOGQzN2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2V4
Y2VwdGlvbi1pbi1ldmVudC1hYm9ydHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2V4Y2VwdGlvbi1pbi1ldmVudC1hYm9ydHMtZXhwZWN0ZWQudHh0CkBA
IC0xLDUgKzEsNSBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDYyOiBVbmNhdWdodCB0aGlzIGV4
Y2VwdGlvbiBpcyBleHBlY3RlZAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDYyOiBVbmNhdWdodCB0
aGlzIGV4Y2VwdGlvbiBpcyBleHBlY3RlZAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDU3OiBVbmNh
dWdodCB0aGlzIGV4Y2VwdGlvbiBpcyBleHBlY3RlZAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDU3
OiBVbmNhdWdodCB0aGlzIGV4Y2VwdGlvbiBpcyBleHBlY3RlZAogVGVzdCBleGNlcHRpb25zIGlu
IElEQlJlcXVlc3QgaGFuZGxlcnMgY2F1c2UgYWJvcnRzLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9leGNlcHRp
b24taW4tZXZlbnQtYWJvcnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9l
eGNlcHRpb24taW4tZXZlbnQtYWJvcnRzLmh0bWwKaW5kZXggNDc1Njc5MzJiZGUyOWY4YTg0NTAz
MTAwYTRmZjAwZmE1M2IyNGE4Mi4uOGNkYmQ2OTY2MTMxNzcwZDM1Y2VkNzMyODFjMDBhNGE0MWI4
Y2U1OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZXhjZXB0aW9u
LWluLWV2ZW50LWFib3J0cy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2V4Y2VwdGlvbi1pbi1ldmVudC1hYm9ydHMuaHRtbApAQCAtNCwxMjkgKzQsNyBAQAogPHNjcmlw
dCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08
cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlw
dD4KLQotZGVzY3JpcHRpb24oIlRlc3QgZXhjZXB0aW9ucyBpbiBJREJSZXF1ZXN0IGhhbmRsZXJz
IGNhdXNlIGFib3J0cy4iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9y
UHJlZml4ZXMoKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2V4
Y2VwdGlvbi1pbi1ldmVudC1hYm9ydHMnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0
VmVyc2lvbjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvbigpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9
IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5z
ZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxl
dGVFeGlzdGluZzsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLX0KLQotZnVuY3Rpb24gZGVsZXRlRXhpc3RpbmcoKQotewotICAgIGRlYnVnKCJzZXRWZXJz
aW9uU3VjY2VzcygpOiIpOwotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7
Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIGV2YWxB
bmRMb2coInRyYW5zLm9uY29tcGxldGUgPSBzdGFydFRlc3QiKTsKLQotICAgIGRlbGV0ZUFsbE9i
amVjdFN0b3JlcyhkYik7Ci0KLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAna2V5JykiKTsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24g
c3RhcnRUZXN0KCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0
cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIElEQlRyYW5zYWN0aW9uLlJFQURf
V1JJVEUpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMub25hYm9ydCA9IHRyYW5zYWN0aW9uQWJv
cnRlZDEiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENv
bXBsZXRlQ2FsbGJhY2siKTsKLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMu
b2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0
b3JlLmFkZCh7eDogJ3ZhbHVlMicsIHk6ICd6enoyJ30sICdrZXkyJykiKTsKLSAgICB0cmFucy5h
ZGRFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgY2F1c2VFeGNlcHRpb24sIHRydWUpOwotICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBj
YXVzZUV4Y2VwdGlvbigpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGV2YWxBbmRMb2coImV2ZW50
LnByZXZlbnREZWZhdWx0KCkiKTsKLSAgICBkZWJ1ZygiVGhyb3dpbmciKTsKLSAgICB0aHJvdyAi
dGhpcyBleGNlcHRpb24gaXMgZXhwZWN0ZWQiOwotfQotCi1mdW5jdGlvbiB0cmFuc2FjdGlvbkFi
b3J0ZWQxKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgc2hvdWxkSGF2ZUhhZEVycm9yKCJ0aGlz
IGV4Y2VwdGlvbiBpcyBleHBlY3RlZCIpOwotICAgIHRlc3RQYXNzZWQoIlRoZSB0cmFuc2FjdGlv
biB3YXMgYWJvcnRlZC4iKTsKLSAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJh
bnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAg
ICBldmFsQW5kTG9nKCJ0cmFucy5vbmFib3J0ID0gdHJhbnNhY3Rpb25BYm9ydGVkMiIpOwotICAg
IGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFj
ayIpOwotICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgn
c3RvcmVOYW1lJykiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAn
dmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5l
eHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKLSAgICBkYi5vbmVycm9yID0gY2F1c2VFeGNlcHRpb247
Ci19Ci0KLWZ1bmN0aW9uIHRyYW5zYWN0aW9uQWJvcnRlZDIoKQotewotICAgIGRlYnVnKCIiKTsK
LSAgICBzaG91bGRIYXZlSGFkRXJyb3IoInRoaXMgZXhjZXB0aW9uIGlzIGV4cGVjdGVkIik7Ci0g
ICAgdGVzdFBhc3NlZCgiVGhlIHRyYW5zYWN0aW9uIHdhcyBhYm9ydGVkLiIpOwotICAgIHRyYW5z
ID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJU
cmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQg
PSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29t
cGxldGUgPSB0cmFuc2FjdGlvbkNvbXBsZXRlZDEiKTsKLSAgICBzdG9yZSA9IGV2YWxBbmRMb2co
InN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlMycsIHk6ICd6enozJ30sICdrZXkzJyki
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHRocm93QW5kQ2F0Y2g7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgZGIub25lcnJvciA9IG51bGw7
Ci19Ci0KLWZ1bmN0aW9uIHRocm93QW5kQ2F0Y2goKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBl
dmFsQW5kTG9nKCJldmVudC5wcmV2ZW50RGVmYXVsdCgpIik7Ci0gICAgZGVidWcoIlRocm93aW5n
IHdpdGhpbiBhIHRyeSBibG9jayIpOwotICAgIHRyeSB7Ci0gICAgICAgIHRocm93ICJBSEhIIjsK
LSAgICB9IGNhdGNoIChlKSB7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0cmFuc2FjdGlvbkNvbXBs
ZXRlZDEoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICB0ZXN0UGFzc2VkKCJUaGUgdHJhbnNhY3Rp
b24gY29tcGxldGVkLiIpOwotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFu
c2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAg
IGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjayIpOwot
ICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSB0cmFuc2FjdGlvbkNvbXBsZXRlZDIi
KTsKLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0
b3JlTmFtZScpIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3Zh
bHVlNCcsIHk6ICd6eno0J30sICdrZXk0JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1
bmN0aW9uKCkgeyB0ZXN0UGFzc2VkKCJrZXk0IGFkZGVkIik7IH0KLSAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gdHJhbnNhY3Rpb25D
b21wbGV0ZWQyKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgdGVzdFBhc3NlZCgiVGhlIHRyYW5z
YWN0aW9uIGNvbXBsZXRlZC4iKTsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7
Ci19Ci0KLXRlc3QoKTsKLQotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZXhj
ZXB0aW9uLWluLWV2ZW50LWFib3J0cy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ZhY3Rvcnkt
YmFzaWNzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9mYWN0b3J5LWJhc2lj
cy5odG1sCmluZGV4IGE1MTdlZGVmZWQ1NTMwY2IwZjA5ZjFhNzY4Zjg0ZWZjMjk5ZDg5NTAuLjJi
NzFkNmNkNjJjZGVjZTE1MDhlNzIyYmZkMmI5NTljNzNlNjQ3NDMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ZhY3RvcnktYmFzaWNzLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZmFjdG9yeS1iYXNpY3MuaHRtbApAQCAtNCw5MCArNCw3
IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+
CiA8Ym9keT4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCB0aGUgYmFzaWNzIG9mIEluZGV4ZWRE
QidzIElEQkZhY3RvcnkuIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRv
clByZWZpeGVzKCk7Ci0KLSAgICBzaG91bGRCZVRydWUoInR5cGVvZiBpbmRleGVkREIub3BlbiA9
PT0gJ2Z1bmN0aW9uJyIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHlwZW9mIGluZGV4ZWREQi5jbXAg
PT09ICdmdW5jdGlvbiciKTsKLSAgICBzaG91bGRCZVRydWUoInR5cGVvZiBpbmRleGVkREIuZ2V0
RGF0YWJhc2VOYW1lcyA9PT0gJ2Z1bmN0aW9uJyIpOwotCi0gICAgc2hvdWxkQmVUcnVlKCJ0eXBl
b2YgaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlID09PSAnZnVuY3Rpb24nIik7Ci0KLSAgICBuYW1l
ID0gJ3N0b3JhZ2UvaW5kZXhlZGRiL2ZhY3RvcnktYmFzaWNzJzsKLSAgICBkZXNjcmlwdGlvbiA9
ICJNeSBUZXN0IERhdGFiYXNlIjsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVk
REIuZ2V0RGF0YWJhc2VOYW1lcygpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXREYXRh
YmFzZU5hbWVzU3VjY2VzczE7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGdldERhdGFiYXNlTmFtZXNTdWNjZXNzMSgpCi17Ci0g
ICAgdmFyIGRhdGFiYXNlTmFtZXM7Ci0gICAgZXZhbEFuZExvZygiZGF0YWJhc2VOYW1lcyA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJkYXRhYmFzZU5hbWVzLmNv
bnRhaW5zKCciICsgbmFtZSArICInKSIpOwotICAgIHNob3VsZEJlRmFsc2UoImRhdGFiYXNlTmFt
ZXMuY29udGFpbnMoJ0RBVEFCQVNFIFRIQVQgRE9FUyBOT1QgRVhJU1QnKSIpOwotCi0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkK
LXsKLSAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNsb3NlKCkiKTsKLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmdldERhdGFiYXNlTmFtZXMoKSIpOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0RGF0YWJhc2VOYW1lc1N1Y2Nlc3MyOwotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBnZXRE
YXRhYmFzZU5hbWVzU3VjY2VzczIoKQotewotICAgIHZhciBkYXRhYmFzZU5hbWVzOwotICAgIGV2
YWxBbmRMb2coImRhdGFiYXNlTmFtZXMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hv
dWxkQmVUcnVlKCJkYXRhYmFzZU5hbWVzLmNvbnRhaW5zKCciICsgbmFtZSArICInKSIpOwotICAg
IHNob3VsZEJlRmFsc2UoImRhdGFiYXNlTmFtZXMuY29udGFpbnMoJ0RBVEFCQVNFIFRIQVQgRE9F
UyBOT1QgRVhJU1QnKSIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5k
ZWxldGVEYXRhYmFzZSgnIiArIG5hbWUgKyAiJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGRlbGV0ZURhdGFiYXNlU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZGVsZXRlRGF0YWJhc2VTdWNjZXNzKCkKLXsK
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmdldERhdGFiYXNlTmFtZXMoKSIp
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0RGF0YWJhc2VOYW1lc1N1Y2Nlc3MzOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlv
biBnZXREYXRhYmFzZU5hbWVzU3VjY2VzczMoKQotewotICAgIHZhciBkYXRhYmFzZU5hbWVzOwot
ICAgIGV2YWxBbmRMb2coImRhdGFiYXNlTmFtZXMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0g
ICAgc2hvdWxkQmVGYWxzZSgiZGF0YWJhc2VOYW1lcy5jb250YWlucygnIiArIG5hbWUgKyAiJyki
KTsKLSAgICBzaG91bGRCZUZhbHNlKCJkYXRhYmFzZU5hbWVzLmNvbnRhaW5zKCdEQVRBQkFTRSBU
SEFUIERPRVMgTk9UIEVYSVNUJykiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRl
eGVkREIuZGVsZXRlRGF0YWJhc2UoJ0RBVEFCQVNFIFRIQVQgRE9FUyBOT1QgRVhJU1QnKSIpOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlRGF0YWJhc2VTdWNjZXNzMjsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZGVs
ZXRlRGF0YWJhc2VTdWNjZXNzMigpCi17Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXRlc3Qo
KTsKLQotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZmFjdG9yeS1iYXNpY3Mu
anMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9mYWN0b3J5LWNtcC5odG1sIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvZmFjdG9yeS1jbXAuaHRtbAppbmRleCBjZDRhNDdmZTAwZGEyM2Nm
YWNkYTdiZGQ0NGYwZmY1YzU5ZjUzYzcyLi40MmYwYWM2MmJlNzJhMDcxNDc1MzU0ZGQ2MWExYzY0
MjVlZWI1NDZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9mYWN0
b3J5LWNtcC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ZhY3Rvcnkt
Y21wLmh0bWwKQEAgLTQsMTQ5ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVk
LmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+
Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0
IEluZGV4ZWREQiBrZXkgY29tcGFyaXNvbiB1c2luZyBJREJGYWN0b3J5LmNtcCgpLiIpOwotCi1m
dW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgc2hv
dWxkQmVUcnVlKCJ0eXBlb2YgaW5kZXhlZERCLmNtcCA9PT0gJ2Z1bmN0aW9uJyIpOwotCi0gICAg
dGVzdFZhbGlkS2V5cygpOwotICAgIHRlc3RJbnZhbGlkS2V5cygpOwotICAgIHRlc3RJZGVudGlj
YWxLZXlzKCk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RWYWxpZEtl
eXMoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiY29tcGFyZSB2YWxpZCBrZXlzIik7
Ci0KLSAgICB2YXIga2V5cyA9IFsKLSAgICAgICAgIi1JbmZpbml0eSIsCi0gICAgICAgICItTnVt
YmVyLk1BWF9WQUxVRSIsCi0gICAgICAgICItMSIsCi0gICAgICAgICItTnVtYmVyLk1JTl9WQUxV
RSIsCi0gICAgICAgICIwIiwKLSAgICAgICAgIk51bWJlci5NSU5fVkFMVUUiLAotICAgICAgICAi
MSIsCi0gICAgICAgICJOdW1iZXIuTUFYX1ZBTFVFIiwKLSAgICAgICAgIkluZmluaXR5IiwKLSAK
LSAgICAgICAgIm5ldyBEYXRlKDApIiwKLSAgICAgICAgIm5ldyBEYXRlKDEwMDApIiwKLSAgICAg
ICAgIm5ldyBEYXRlKDEzMTczOTk5MzEwMjMpIiwKLSAgICAgICAgCi0gICAgICAgICInJyIsCi0g
ICAgICAgICInXHgwMCciLAotICAgICAgICAiJ2EnIiwKLSAgICAgICAgIidhYSciLAotICAgICAg
ICAiJ2InIiwKLSAgICAgICAgIidiYSciLAotCi0gICAgICAgICInXHhBMiciLCAvLyBVKzAwQTIg
Q0VOVCBTSUdOCi0gICAgICAgICInXHU2QzM0JyIsIC8vIFUrNkMzNCBDSksgVU5JRklFRCBJREVP
R1JBUEggKHdhdGVyKQotICAgICAgICAiJ1x1RDgzNFx1REQxRSciLCAvLyBVKzFEMTFFIE1VU0lD
QUwgU1lNQk9MIEctQ0xFRiAoVVRGLTE2IHN1cnJvZ2F0ZSBwYWlyKQotICAgICAgICAiJ1x1RkZG
RCciLCAvLyBVK0ZGRkQgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSCi0KLSAgICAgICAgIltdIiwKLQot
ICAgICAgICAiWy1JbmZpbml0eV0iLAotICAgICAgICAiWy1OdW1iZXIuTUFYX1ZBTFVFXSIsCi0g
ICAgICAgICJbLTFdIiwKLSAgICAgICAgIlstTnVtYmVyLk1JTl9WQUxVRV0iLAotICAgICAgICAi
WzBdIiwKLSAgICAgICAgIltOdW1iZXIuTUlOX1ZBTFVFXSIsCi0gICAgICAgICJbMV0iLAotICAg
ICAgICAiW051bWJlci5NQVhfVkFMVUVdIiwKLSAgICAgICAgIltJbmZpbml0eV0iLAotIAotICAg
ICAgICAiW25ldyBEYXRlKDApXSIsCi0gICAgICAgICJbbmV3IERhdGUoMTAwMCldIiwKLSAgICAg
ICAgIltuZXcgRGF0ZSgxMzE3Mzk5OTMxMDIzKV0iLAotICAgICAgICAKLSAgICAgICAgIlsnJ10i
LAotICAgICAgICAiWydceDAwJ10iLAotICAgICAgICAiWydhJ10iLAotICAgICAgICAiWydhYSdd
IiwKLSAgICAgICAgIlsnYiddIiwKLSAgICAgICAgIlsnYmEnXSIsCi0KLSAgICAgICAgIlsnXHhB
MiddIiwgLy8gVSswMEEyIENFTlQgU0lHTgotICAgICAgICAiWydcdTZDMzQnXSIsIC8vIFUrNkMz
NCBDSksgVU5JRklFRCBJREVPR1JBUEggKHdhdGVyKQotICAgICAgICAiWydcdUQ4MzRcdUREMUUn
XSIsIC8vIFUrMUQxMUUgTVVTSUNBTCBTWU1CT0wgRy1DTEVGIChVVEYtMTYgc3Vycm9nYXRlIHBh
aXIpCi0gICAgICAgICJbJ1x1RkZGRCddIiwgLy8gVStGRkZEIFJFUExBQ0VNRU5UIENIQVJBQ1RF
UgotCi0gICAgICAgICJbW11dIiwKLSAgICAgICAgCi0gICAgICAgICJbW10sIFtdXSIsCi0gICAg
ICAgICJbW10sIFtdLCBbXV0iLAotCi0gICAgICAgICJbW1tdXV0iLAotICAgICAgICAiW1tbW11d
XV0iCi0gICAgXTsKLQotICAgIHZhciBpLCBrZXkxLCBrZXkyOwotICAgIGZvciAoaSA9IDA7IGkg
PCBrZXlzLmxlbmd0aCAtIDE7IGkgKz0gMSkgewotICAgICAgICBrZXkxID0ga2V5c1tpXTsKLSAg
ICAgICAga2V5MiA9IGtleXNbaSArIDFdOwotICAgICAgICBzaG91bGRCZVRydWUoImluZGV4ZWRE
Qi5jbXAoIiArIGtleTEgKyAiLCIgKyBrZXkyICsgIikgPT09IC0xIik7Ci0gICAgICAgIHNob3Vs
ZEJlVHJ1ZSgiaW5kZXhlZERCLmNtcCgiICsga2V5MiArICIsIiArIGtleTEgKyAiKSA9PT0gMSIp
OwotICAgICAgICBzaG91bGRCZVRydWUoImluZGV4ZWREQi5jbXAoIiArIGtleTEgKyAiLCIgKyBr
ZXkxICsgIikgPT09IDAiKTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJpbmRleGVkREIuY21wKCIg
KyBrZXkyICsgIiwiICsga2V5MiArICIpID09PSAwIik7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0
ZXN0SW52YWxpZEtleXMoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiY29tcGFyZSBp
bnZhbGlkIGtleXMiKTsKLQotICAgIHZhciBpbnZhbGlkS2V5cyA9IFsKLSAgICAgICAgInZvaWQg
MCIsIC8vIHVuZGVmaW5lZAotICAgICAgICAidHJ1ZSIsCi0gICAgICAgICJmYWxzZSIsCi0gICAg
ICAgICJOYU4iLAotICAgICAgICAibmV3IERhdGUoTmFOKSIsCi0gICAgICAgICJudWxsIiwKLSAg
ICAgICAgInt9IiwKLSAgICAgICAgImZ1bmN0aW9uICgpIHt9IiwKLSAgICAgICAgIi9yZWdleC8i
LAotICAgICAgICAic2VsZiIsCi0gICAgICAgICJzZWxmLmRvY3VtZW50IiwKLSAgICAgICAgInNl
bGYuZG9jdW1lbnQuYm9keSIKLSAgICBdOwotCi0gICAgdmFyIGksIGtleTEsIGtleTI7Ci0gICAg
Zm9yIChpID0gMDsgaSA8IGludmFsaWRLZXlzLmxlbmd0aCAtIDE7IGkgKz0gMSkgewotICAgICAg
ICBrZXkxID0gaW52YWxpZEtleXNbaV07Ci0gICAgICAgIGtleTIgPSBpbnZhbGlkS2V5c1tpICsg
MV07Ci0gICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4ZWREQi5jbXAoIiArIGtl
eTEgKyAiLCAiICsga2V5MiArICIpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7
Ci0gICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4ZWREQi5jbXAoIiArIGtleTIg
KyAiLCAiICsga2V5MSArICIpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0g
ICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4ZWREQi5jbXAoIiArIGtleTEgKyAi
LCAndmFsaWQnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotICAgICAgICBl
dmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJpbmRleGVkREIuY21wKCd2YWxpZCcsICIgKyBrZXkxICsg
IikiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLSAgICAgICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigiaW5kZXhlZERCLmNtcCgiICsga2V5MiArICIsICd2YWxpZCcpIiwgIklE
QkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0gICAgICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oImluZGV4ZWREQi5jbXAoJ3ZhbGlkJywgIiArIGtleTIgKyAiKSIsICJJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdElkZW50aWNh
bEtleXMoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiY29tcGFyZSBpZGVudGljYWwg
a2V5cyIpOwotCi0gICAgc2hvdWxkQmVUcnVlKCJpbmRleGVkREIuY21wKDAsIC0wKSA9PT0gMCIp
OwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2Zh
Y3RvcnktY21wLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZmFjdG9yeS1kZWxldGVkYXRhYmFz
ZS1pbnRlcmFjdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ZhY3Rv
cnktZGVsZXRlZGF0YWJhc2UtaW50ZXJhY3Rpb25zLmh0bWwKaW5kZXggMzNmZDcyZTdhYWMzYWMx
Mzc2YWMyMDgyY2M3ZTFhZDM4OTM2OWI5MC4uZjBlZjQ3OGRjZGRmNGNjOWM1Y2YzNjA0ZDc5OGMw
MTE4OWFjMTE2YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZmFj
dG9yeS1kZWxldGVkYXRhYmFzZS1pbnRlcmFjdGlvbnMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9mYWN0b3J5LWRlbGV0ZWRhdGFiYXNlLWludGVyYWN0aW9ucy5odG1s
CkBAIC00LDE5MyArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9z
Y3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCB0aGUgZGVs
ZXRlRGF0YWJhc2UgY2FsbCBhbmQgaXRzIGludGVyYWN0aW9uIHdpdGggb3Blbi9zZXRWZXJzaW9u
Iik7Ci0KLWZ1bmN0aW9uIENvbm5lY3Rpb24oaWQpIHsKLSAgICBpZCA9IFN0cmluZyhpZCk7Ci0g
ICAgdmFyIHRoYXQgPSB0aGlzOwotICAgIHRoaXMub3BlbiA9IGZ1bmN0aW9uKG9wdHMpIHsKLSAg
ICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLm9wZW4nIikpOwot
ICAgICAgICB2YXIgcmVxID0gaW5kZXhlZERCLm9wZW4oc2VsZi5kYm5hbWUpOwotICAgICAgICBy
ZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICByZXEub25zdWNj
ZXNzID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAgICAgIHRoYXQuaGFuZGxlID0gZS50YXJnZXQu
cmVzdWx0OwotICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQg
KyAiLm9wZW4ub25zdWNjZXNzJyIpKTsKLSAgICAgICAgICAgIHRoYXQuaGFuZGxlLm9udmVyc2lv
bmNoYW5nZSA9IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICBzZWxmLnN0ZXBzLnB1c2go
ZXZhbEFuZExvZygiJyIgKyBpZCArICIub252ZXJzaW9uY2hhbmdlJyIpKTsKLSAgICAgICAgICAg
ICAgICBpZiAob3B0cyAmJiBvcHRzLm9udmVyc2lvbikgeyBvcHRzLm9udmVyc2lvbi5jYWxsKHRo
YXQpOyB9Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5vbnN1
Y2Nlc3MpIHsgb3B0cy5vbnN1Y2Nlc3MuY2FsbCh0aGF0KTsgfQotICAgICAgICB9OwotICAgIH07
Ci0KLSAgICB0aGlzLmNsb3NlID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIHNlbGYuc3RlcHMucHVz
aChldmFsQW5kTG9nKCInIiArIGlkICsgIi5jbG9zZSciKSk7Ci0gICAgICAgIHRoaXMuaGFuZGxl
LmNsb3NlKCk7Ci0gICAgfTsKLQotICAgIHRoaXMuc2V0VmVyc2lvbiA9IGZ1bmN0aW9uKG9wdHMp
IHsKLSAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLnNldFZl
cnNpb24nIikpOwotICAgICAgICB2YXIgcmVxID0gdGhpcy5oYW5kbGUuc2V0VmVyc2lvbihTdHJp
bmcoc2VsZi52ZXIrKykpOwotICAgICAgICByZXEub25hYm9ydCA9IGZ1bmN0aW9uIChlKSB7Ci0g
ICAgICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIuc2V0VmVy
c2lvbi5vbmFib3J0JyIpKTsKLSAgICAgICAgICAgIGlmIChvcHRzICYmIG9wdHMub25hYm9ydCkg
eyBvcHRzLm9uYWJvcnQuY2FsbCh0aGF0KTsgfQotICAgICAgICB9OwotICAgICAgICByZXEub25i
bG9ja2VkID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFs
QW5kTG9nKCInIiArIGlkICsgIi5zZXRWZXJzaW9uLm9uYmxvY2tlZCciKSk7Ci0gICAgICAgICAg
ICBpZiAob3B0cyAmJiBvcHRzLm9uYmxvY2tlZCkgeyBvcHRzLm9uYmxvY2tlZC5jYWxsKHRoYXQp
OyB9Ci0gICAgICAgIH07Ci0gICAgICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZSkgewot
ICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLnNldFZl
cnNpb24ub25zdWNjZXNzJyIpKTsKLSAgICAgICAgICAgIGlmICh0aGF0LmhhbmRsZS5vYmplY3RT
dG9yZU5hbWVzLmNvbnRhaW5zKCJ0ZXN0LXN0b3JlIiArIHNlbGYudmVyKSkgewotICAgICAgICAg
ICAgICAgIHRoYXQuaGFuZGxlLmRlbGV0ZU9iamVjdFN0b3JlKCJ0ZXN0LXN0b3JlIiArIHNlbGYu
dmVyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZhciBzdG9yZSA9IHRoYXQuaGFuZGxl
LmNyZWF0ZU9iamVjdFN0b3JlKCJ0ZXN0LXN0b3JlIiArIHNlbGYudmVyKTsKLSAgICAgICAgICAg
IHZhciBjb3VudCA9IDA7Ci0gICAgICAgICAgICBkb19hc3luY19wdXRzKCk7IC8vIEtlZXAgdGhp
cyB0cmFuc2FjdGlvbiBydW5uaW5nIGZvciBhIHdoaWxlCi0gICAgICAgICAgICBmdW5jdGlvbiBk
b19hc3luY19wdXRzKCkgewotICAgICAgICAgICAgICAgIHZhciByZXEgPSBzdG9yZS5wdXQoY291
bnQsIGNvdW50KTsKLSAgICAgICAgICAgICAgICByZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotICAgICAgICAgICAgICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZSkg
ewotICAgICAgICAgICAgICAgICAgICBpZiAoKytjb3VudCA8IDEwKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBkb19hc3luY19wdXRzKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIg
KyBpZCArICIuc2V0VmVyc2lvbi50cmFuc2FjdGlvbi1jb21wbGV0ZSciKSk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9uc3VjY2VzcykgeyBvcHRzLm9uc3VjY2Vz
cy5jYWxsKHRoYXQpOyB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9
OwotICAgICAgICAgICAgfQotICAgICAgICB9OwotICAgICAgICByZXEub25lcnJvciA9IGZ1bmN0
aW9uIChlKSB7Ci0gICAgICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBp
ZCArICIuc2V0VmVyc2lvbi5vbmVycm9yJyIpKTsKLSAgICAgICAgICAgIGlmIChvcHRzICYmIG9w
dHMub25lcnJvcikgeyBvcHRzLm9uZXJyb3IuY2FsbCh0aGF0KTsgfQotICAgICAgICB9OwotICAg
IH07Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZURhdGFiYXNlKGlkLCBuYW1lLCBvcHRzKSB7Ci0gICAg
c2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIidkZWxldGVEYXRhYmFzZSgiICsgaWQgKyAiKSci
KSk7Ci0gICAgdmFyIHJlcSA9IGluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShuYW1lKTsKLSAgICBy
ZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2
YWxBbmRMb2coIidkZWxldGVEYXRhYmFzZSgiICsgaWQgKyAiKS5vbnN1Y2Nlc3MnIikpOwotICAg
ICAgICBpZiAob3B0cyAmJiBvcHRzLm9uc3VjY2VzcykgeyBvcHRzLm9uc3VjY2Vzcy5jYWxsKG51
bGwpOyB9Ci0gICAgfTsKLSAgICByZXEub25lcnJvciA9IGZ1bmN0aW9uIChlKSB7Ci0gICAgICAg
IHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInZGVsZXRlRGF0YWJhc2UoIiArIGlkICsgIiku
b25lcnJvciciKSk7Ci0gICAgICAgIGlmIChvcHRzICYmIG9wdHMub25lcnJvcikgeyBvcHRzLm9u
ZXJyb3IuY2FsbChudWxsKTsgfQotICAgIH07Ci0gICAgcmVxLm9uYmxvY2tlZCA9IGZ1bmN0aW9u
IChlKSB7Ci0gICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInZGVsZXRlRGF0YWJh
c2UoIiArIGlkICsgIikub25ibG9ja2VkJyIpKTsKLSAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5v
bmJsb2NrZWQpIHsgb3B0cy5vbmJsb2NrZWQuY2FsbChudWxsKTsgfQotICAgIH07Ci19Ci0KLS8v
IHJ1biBhIHNlcmllcyBvZiBzdGVwcyB0aGF0IHRha2UgYSBjb250aW51YXRpb24gZnVuY3Rpb24K
LWZ1bmN0aW9uIHJ1blN0ZXBzKGNvbW1hbmRzKSB7Ci0gICAgaWYgKGNvbW1hbmRzLmxlbmd0aCkg
ewotICAgICAgICB2YXIgY29tbWFuZCA9IGNvbW1hbmRzLnNoaWZ0KCk7Ci0gICAgICAgIGNvbW1h
bmQoZnVuY3Rpb24oKSB7IHJ1blN0ZXBzKGNvbW1hbmRzKTsgfSk7Ci0gICAgfQotfQotCi1mdW5j
dGlvbiB0ZXN0KCkgewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgdGVzdDEoKTsK
LX0KLQotZnVuY3Rpb24gdGVzdDEoKSB7Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJURVNU
OiBkZWxldGVEYXRhYmFzZSBibG9ja2VkIG9uIG9wZW4gaGFuZGxlcyIpOwotICAgIGV2YWxBbmRM
b2coInNlbGYuZGJuYW1lID0gJ3Rlc3QxJzsgc2VsZi52ZXIgPSAxOyBzZWxmLnN0ZXBzID0gW10i
KTsKLSAgICB2YXIgaCA9IG5ldyBDb25uZWN0aW9uKCJoIik7Ci0gICAgcnVuU3RlcHMoW2Z1bmN0
aW9uKGRvTmV4dCkgeyBoLm9wZW4oe29uc3VjY2VzczogZG9OZXh0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvbnZlcnNpb246IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGVidWcoIiAgICBoIGNsb3NpbmcsIGJ1dCBub3QgaW1tZWRp
YXRlbHkiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IGguY2xvc2UoKTsgfSwgMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH19KTsgfSwKLSAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGRlbGV0ZURhdGFiYXNl
KCIiLCBzZWxmLmRibmFtZSwgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgb25zdWNjZXNz
OiBmaW5pc2hUZXN0fSk7IH0sCi0gICAgICAgIF0pOwotICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3Qo
KSB7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic2VsZi5zdGVwcy50b1N0cmluZygp
IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiaC5vcGVuIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiaC5vcGVuLm9uc3VjY2VzcyIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImRlbGV0ZURhdGFiYXNlKCkiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJoLm9udmVyc2lvbmNoYW5nZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImRlbGV0ZURhdGFiYXNlKCkub25ibG9ja2VkIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiaC5jbG9zZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRl
bGV0ZURhdGFiYXNlKCkub25zdWNjZXNzIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF0udG9TdHJpbmcoKSk7Ci0gICAgICAgIHRlc3QyKCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0
ZXN0MigpIHsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIlRFU1Q6IGRlbGV0ZURhdGFiYXNl
IG5vdCBibG9ja2VkIHdoZW4gaGFuZGxlcyBjbG9zZSBpbW1lZGlhdGVseSIpOwotICAgIGV2YWxB
bmRMb2coInNlbGYuZGJuYW1lID0gJ3Rlc3QyJzsgc2VsZi52ZXIgPSAxOyBzZWxmLnN0ZXBzID0g
W10iKTsKLSAgICB2YXIgaCA9IG5ldyBDb25uZWN0aW9uKCJoIik7Ci0gICAgcnVuU3RlcHMoW2Z1
bmN0aW9uKGRvTmV4dCkgeyBoLm9wZW4oe29uc3VjY2VzczogZG9OZXh0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb252ZXJzaW9uOiBmdW5jdGlvbigpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiICAgIGgg
Y2xvc2luZyBpbW1lZGlhdGVseSIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGguY2xvc2UoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH19KTsgfSwKLSAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGRlbGV0ZURhdGFi
YXNlKCIiLCBzZWxmLmRibmFtZSwgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgb25zdWNj
ZXNzOiBmaW5pc2hUZXN0fSk7IH0sCi0gICAgICAgIF0pOwotICAgIGZ1bmN0aW9uIGZpbmlzaFRl
c3QoKSB7Ci0gICAgICAgIGRlYnVnKCJOT1RFOiBXaWxsIEZBSUwgd2l0aCBleHRyYSBib2d1cyBk
ZWxldGVEYXRhYmFzZSgpLm9uYmxvY2tlZCBzdGVwOyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzExMzAiKTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJz
ZWxmLnN0ZXBzLnRvU3RyaW5nKCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJo
Lm9wZW4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoLm9wZW4ub25zdWNjZXNz
IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVsZXRlRGF0YWJhc2UoKSIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgub252ZXJzaW9uY2hhbmdlIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiaC5jbG9zZSIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImRlbGV0ZURhdGFiYXNlKCkub25zdWNjZXNzIgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF0udG9TdHJpbmcoKSk7Ci0gICAgICAgIHRlc3QzKCk7Ci0gICAgfQot
fQotCi1mdW5jdGlvbiB0ZXN0MygpIHsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIlRFU1Q6
IGRlbGV0ZURhdGFiYXNlIGlzIGRlbGF5ZWQgaWYgYSBWRVJTSU9OX0NIQU5HRSB0cmFuc2FjdGlv
biBpcyBydW5uaW5nIik7Ci0gICAgZXZhbEFuZExvZygic2VsZi5kYm5hbWUgPSAndGVzdDMnOyBz
ZWxmLnZlciA9IDE7IHNlbGYuc3RlcHMgPSBbXSIpOwotICAgIHZhciBoID0gbmV3IENvbm5lY3Rp
b24oImgiKTsKLSAgICBydW5TdGVwcyhbZnVuY3Rpb24oZG9OZXh0KSB7IGgub3Blbih7b25zdWNj
ZXNzOiBkb05leHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9udmVyc2lvbjog
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Zygi
ICAgIGggY2xvc2luZywgYnV0IG5vdCBpbW1lZGlhdGVseSIpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgaC5jbG9zZSgpOyB9LCAw
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0pOyB9LAotICAgICAgICAgICAg
ICBmdW5jdGlvbihkb05leHQpIHsgaC5zZXRWZXJzaW9uKCk7IGRvTmV4dCgpOyB9LAotICAgICAg
ICAgICAgICBmdW5jdGlvbihkb05leHQpIHsgZGVsZXRlRGF0YWJhc2UoIiIsIHNlbGYuZGJuYW1l
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7b25zdWNjZXNzOiBmaW5pc2hUZXN0
fSk7IH0sCi0gICAgICAgICAgICAgIF0pOwotCi0gICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsK
LSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzZWxmLnN0ZXBzLnRvU3RyaW5nKCkiLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJoLm9wZW4iLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJoLm9wZW4ub25zdWNjZXNzIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiaC5zZXRWZXJzaW9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiZGVsZXRlRGF0YWJhc2UoKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgu
c2V0VmVyc2lvbi5vbnN1Y2Nlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJo
LnNldFZlcnNpb24udHJhbnNhY3Rpb24tY29tcGxldGUiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJoLm9udmVyc2lvbmNoYW5nZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImRlbGV0ZURhdGFiYXNlKCkub25ibG9ja2VkIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiaC5jbG9zZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRl
bGV0ZURhdGFiYXNlKCkub25zdWNjZXNzIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF0udG9TdHJpbmcoKSk7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0KLX0KLQotdGVz
dCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZmFjdG9yeS1kZWxldGVk
YXRhYmFzZS1pbnRlcmFjdGlvbnMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9mYWN0b3J5LWRl
bGV0ZWRhdGFiYXNlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9mYWN0b3J5
LWRlbGV0ZWRhdGFiYXNlLmh0bWwKaW5kZXggZjJhZjRlZmZmZTBjYjc4MjM5ZmRlNWI2MjFkZTUx
YTE0ZjRlZjAxNi4uZDBjODI2YmZjNWI4YzI0OTU0YzhkMGVhYjhlOWIzZDBmN2YyMTY1YyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZmFjdG9yeS1kZWxldGVkYXRh
YmFzZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ZhY3RvcnktZGVs
ZXRlZGF0YWJhc2UuaHRtbApAQCAtNCw5NyArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxwIGlkPSJkZXNjcmlwdGlv
biI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlv
bigiVGVzdCBJbmRleGVkREIncyB3ZWJraXRJbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoKS4iKTsK
LQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2RhdGFiYXNlLXRvLWRlbGV0ZScp
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzdGFydFNldFZlcnNpb247Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHN0YXJ0
U2V0VmVyc2lvbigpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcg
dmVyc2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rp
b24gZGVsZXRlRXhpc3RpbmcoKQotewotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFu
cyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBu
dWxsIik7Ci0KLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7Ci0KLSAgICBzZWxmLmluZGV4ID0gZXZhbEFuZExv
Zygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZScsICcnKSIpOwotICAgIHNob3VsZEJlVHJ1
ZSgic3RvcmUuaW5kZXhOYW1lcy5jb250YWlucygnaW5kZXhOYW1lJykiKTsKLQotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoJ3ZhbHVlJywgJ2tleScpIik7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBnZXRWYWx1ZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZ2V0VmFsdWUoKQotewotICAgIHRyYW5zYWN0
aW9uID0gZXZhbEFuZExvZygiZGIudHJhbnNhY3Rpb24oJ3N0b3JlTmFtZScsIElEQlRyYW5zYWN0
aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotICAgIHZhciBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNh
Y3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygic3RvcmUuZ2V0KCdrZXknKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkSW5k
ZXg7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0K
LWZ1bmN0aW9uIGFkZEluZGV4KCkKLXsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50
LnRhcmdldC5yZXN1bHQiLCAidmFsdWUiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJk
Yi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBk
ZWxldGVEYXRhYmFzZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLX0KLQotZnVuY3Rpb24gZGVsZXRlRGF0YWJhc2UoKQotewotICAgIGRiLm9udmVyc2lv
bmNoYW5nZSA9IGZ1bmN0aW9uKCkgeyBkYi5jbG9zZSgpOyB9Ci0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoJ2RhdGFiYXNlLXRvLWRl
bGV0ZScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSByZW9wZW5EYXRhYmFzZTsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24g
cmVvcGVuRGF0YWJhc2UoKQotewotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
b3BlbignZGF0YWJhc2UtdG8tZGVsZXRlJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHN0
YXJ0U2V0VmVyc2lvbkFnYWluOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzdGFydFNldFZlcnNpb25BZ2FpbigpCi17Ci0gICAg
cmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gdmVyaWZ5Tm90Rm91bmQ7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHZlcmlmeU5vdEZvdW5kKCkK
LXsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMCIpOwotCi0g
ICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXRlc3QoKTsKLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9mYWN0b3J5LWRlbGV0ZWRhdGFiYXNlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgog
PC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvaW5kZXgtYmFzaWNzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRl
eC1iYXNpY3MuaHRtbAppbmRleCBhMjQxMTZkNmJiZjdkMDM4NjdlNDQ5NDA5NThmOWM4OWJhMWMy
ZGMxLi40NDZlYjczOThkN2I0M2IwMzcxMDQwMzA3ZGRiNWQyMzFjMzAxYzY3IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3MuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3MuaHRtbApAQCAtNCw4ICs0
LDYgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVh
ZD4KIDxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaW5kZXgtYmFzaWNzLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgogPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvaW5kZXgtY291bnQuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4
LWNvdW50Lmh0bWwKaW5kZXggMzIxMWVjNmE5YTQzNTJlYzJlMDc0ZjE5Y2VlZTRlYTRhZWYwNmIz
My4uZjgwMTE4ZTBjZjJkZGM5MGE3NmExNzlkMmRjODBjMTczYTQ4NzNhYiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtY291bnQuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1jb3VudC5odG1sCkBAIC00LDE2MSArNCw3
IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+
CiA8Ym9keT4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBJREJJbmRleC5j
b3VudCgpLiIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhl
cygpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignaW5kZXgtY291
bnQnKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGRiID0gZXZhbEFu
ZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IHByZXBhcmVEYXRhYmFzZTsKLSAgICB9OwotfQotCi1mdW5jdGlvbiBwcmVwYXJlRGF0
YWJhc2UoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygicHJlcGFyaW5nIGRhdGFiYXNl
Iik7Ci0gICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKLQotICAgIGRlbGV0
ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7Ci0KLSAgICBzZWxmLmlu
ZGV4ID0gZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZScsICcnKSIpOwot
ICAgIHNob3VsZEJlVHJ1ZSgic3RvcmUuaW5kZXhOYW1lcy5jb250YWlucygnaW5kZXhOYW1lJyki
KTsKLQotICAgIGRlYnVnKCJhZGRpbmcgMCAuLi4gOTkiKTsKLSAgICBmb3IgKHZhciBpID0gMDsg
aSA8IDEwMDsgKytpKSB7Ci0gICAgICAgIHJlcXVlc3QgPSBzdG9yZS5hZGQoaSwgaSk7Ci0gICAg
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIH0KLSAg
ICB0cmFucy5vbmNvbXBsZXRlID0gdmVyaWZ5Q291bnQ7Ci19Ci0KLWZ1bmN0aW9uIHZlcmlmeUNv
dW50KCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInZlcmlmeWluZyBjb3VudCB3aXRo
b3V0IHJhbmdlIik7Ci0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0
aW9uKCdzdG9yZU5hbWUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7Ci0gICAgc2hvdWxk
QmVUcnVlKCJ0cmFucyAhPSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRB
Ym9ydENhbGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSB2ZXJpZnlDb3VudFdpdGhSYW5n
ZTsKLQotICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgn
c3RvcmVOYW1lJykiKTsKLSAgICBzaG91bGRCZVRydWUoInN0b3JlICE9IG51bGwiKTsKLSAgICBp
bmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4TmFtZScpIik7Ci0g
ICAgc2hvdWxkQmVUcnVlKCJpbmRleCAhPSBudWxsIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IGluZGV4LmNvdW50KCkiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KCkgewotICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251
bWJlciciKTsKLSAgICAgICAgIHNob3VsZEJlKCJyZXF1ZXN0LnJlc3VsdCIsICIxMDAiKTsKLSAg
ICAgICAgIC8vIGxldCB0aGUgdHJhbnNhY3Rpb24gY29tcGxldGUKLSAgICB9OwotfQotCi1mdW5j
dGlvbiB2ZXJpZnlDb3VudFdpdGhSYW5nZSgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVn
KCJ2ZXJpZnlpbmcgY291bnQgd2l0aCByYW5nZSIpOwotICAgIHRyYW5zID0gZXZhbEFuZExvZygi
dHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9P
TkxZKSIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT0gbnVsbCIpOwotICAgIHRyYW5zLm9u
YWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0g
dmVyaWZ5Q291bnRXaXRoS2V5OwotCi0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRy
YW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotICAgIHNob3VsZEJlVHJ1ZSgic3RvcmUg
IT0gbnVsbCIpOwotICAgIHN0b3JlID0gZXZhbEFuZExvZygiaW5kZXggPSB0cmFucy5vYmplY3RT
dG9yZSgnc3RvcmVOYW1lJykuaW5kZXgoJ2luZGV4TmFtZScpIik7Ci0gICAgc2hvdWxkQmVUcnVl
KCJpbmRleCAhPSBudWxsIik7Ci0KLSAgICB2YXIgdGVzdHMgPSBbCi0gICAgICAgIHsgbG93ZXI6
IDAsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiA5OSwgdXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0
ZWQ6IDEwMCB9LAotICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IHRydWUsIHVwcGVyOiA5
OSwgdXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDk5IH0sCi0gICAgICAgIHsgbG93ZXI6IDAs
IGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiA5OSwgdXBwZXJPcGVuOiB0cnVlLCBleHBlY3RlZDog
OTkgfSwKLSAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiB0cnVlLCB1cHBlcjogOTksIHVw
cGVyT3BlbjogdHJ1ZSwgZXhwZWN0ZWQ6IDk4IH0sCi0gICAgICAgIHsgbG93ZXI6IDAsIGxvd2Vy
T3BlbjogZmFsc2UsIHVwcGVyOiAxMDAsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiAxMDAg
fSwKLSAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDEwMCwgdXBw
ZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDEwMCB9LAotICAgICAgICB7IGxvd2VyOiAxMCwgbG93
ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDEwMCwgdXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDkw
IH0sCi0gICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiAwLCB1cHBl
ck9wZW46IGZhbHNlLCBleHBlY3RlZDogMSB9LAotICAgICAgICB7IGxvd2VyOiA1MDAsIGxvd2Vy
T3BlbjogZmFsc2UsIHVwcGVyOiA1MDAsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiAwIH0K
LSAgICBdOwotCi0gICAgZnVuY3Rpb24gbmV4dFRlc3QoKSB7Ci0gICAgICAgIGRlYnVnKCIiKTsK
LSAgICAgICAgZXZhbEFuZExvZygidGVzdCA9ICIgKyBKU09OLnN0cmluZ2lmeSh0ZXN0cy5zaGlm
dCgpKSk7Ci0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXguY291
bnQoSURCS2V5UmFuZ2UuYm91bmQodGVzdC5sb3dlciwgdGVzdC51cHBlciwgdGVzdC5sb3dlck9w
ZW4sIHRlc3QudXBwZXJPcGVuKSkiKTsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0g
J251bWJlciciKTsKLSAgICAgICAgICAgICBzaG91bGRCZSgicmVxdWVzdC5yZXN1bHQiLCBTdHJp
bmcodGVzdC5leHBlY3RlZCkpOwotCi0gICAgICAgICAgICAgaWYgKHRlc3RzLmxlbmd0aCkgewot
ICAgICAgICAgICAgICAgICBuZXh0VGVzdCgpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAvLyBvdGhlcndpc2UgbGV0IHRoZSB0cmFuc2FjdGlvbiBjb21wbGV0ZQotICAgICAgICB9Owot
ICAgIH0KLQotICAgIG5leHRUZXN0KCk7Ci19Ci0KLWZ1bmN0aW9uIHZlcmlmeUNvdW50V2l0aEtl
eSgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJ2ZXJpZnlpbmcgY291bnQgd2l0aCBr
ZXkiKTsKLSAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0
b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkiKTsKLSAgICBzaG91bGRCZVRydWUo
InRyYW5zICE9IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2Fs
bGJhY2s7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IGZpbmlzaEpTVGVzdDsKLQotICAgIHN0b3Jl
ID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsK
LSAgICBzaG91bGRCZVRydWUoInN0b3JlICE9IG51bGwiKTsKLSAgICBzdG9yZSA9IGV2YWxBbmRM
b2coImluZGV4ID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpLmluZGV4KCdpbmRleE5h
bWUnKSIpOwotICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXggIT0gbnVsbCIpOwotCi0gICAgZXZhbEFu
ZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXguY291bnQoTmFOKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlv
bi5EQVRBX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4LmNvdW50KHt9
KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RF
eGNlcHRpb24oImluZGV4LmNvdW50KC9yZWdleC8pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRB
VEFfRVJSIik7Ci0KLSAgICB2YXIgdGVzdHMgPSBbCi0gICAgICAgIHsga2V5OiAwLCBleHBlY3Rl
ZDogMSB9LAotICAgICAgICB7IGtleTogMTAwLCBleHBlY3RlZDogMCB9LAotICAgICAgICB7IGtl
eTogbnVsbCwgZXhwZWN0ZWQ6IDEwMCB9Ci0gICAgXTsKLQotICAgIGZ1bmN0aW9uIG5leHRUZXN0
KCkgewotICAgICAgICBkZWJ1ZygiIik7Ci0gICAgICAgIGV2YWxBbmRMb2coInRlc3QgPSAiICsg
SlNPTi5zdHJpbmdpZnkodGVzdHMuc2hpZnQoKSkpOwotICAgICAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IGluZGV4LmNvdW50KHRlc3Qua2V5KSIpOwotICAgICAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICBzaG91bGRCZVRydWUoInR5cGVvZiBy
ZXF1ZXN0LnJlc3VsdCA9PSAnbnVtYmVyJyIpOwotICAgICAgICAgICAgIHNob3VsZEJlKCJyZXF1
ZXN0LnJlc3VsdCIsIFN0cmluZyh0ZXN0LmV4cGVjdGVkKSk7Ci0KLSAgICAgICAgICAgICBpZiAo
dGVzdHMubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgIG5leHRUZXN0KCk7Ci0gICAgICAgICAg
ICAgfQotICAgICAgICAgICAgIC8vIG90aGVyd2lzZSBsZXQgdGhlIHRyYW5zYWN0aW9uIGNvbXBs
ZXRlCi0gICAgICAgIH07Ci0gICAgfQotCi0gICAgbmV4dFRlc3QoKTsKLX0KLQotdGVzdCgpOwot
Ci08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaW5kZXgtY291bnQuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9pbmRleC1jdXJzb3IuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2luZGV4LWN1cnNvci5odG1sCmluZGV4IDNmMjA3ZmY4ZDExMmQyZTAzOTIxNjBk
MzIzZmQ3NGNlMjE4MjJiNzAuLmM5ZDk0NDQ2OTc3NjkyMzM3YmFiODIzZGE2N2ExYTc5YjE2ZDlm
NTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWN1cnNv
ci5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWN1cnNvci5o
dG1sCkBAIC00LDI1NiArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+
PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0PiAKLQotZGVzY3JpcHRpb24oIlRlc3QgSW5k
ZXhlZERCJ3Mgd2Via2l0SURCSW5kZXgub3BlbkN1cnNvciArIHRoZSBjdXJzb3IgaXQgcHJvZHVj
ZXMgaW4gZGVwdGguIik7Ci0gCi0vLyBJbiBvcmRlciBvZiBob3cgaXQgc2hvdWxkIGJlIHNvcnRl
ZCBieSBJbmRleGVkREIuCi1zZWxmLnRlc3REYXRhID0gWwotICAgIDEsCi0gICAgMSwKLSAgICAz
LjE0MTU5LAotICAgIDMuMTQxNTksCi0gICAgMTAsCi0gICAgLy8gRklYTUU6IERhdGVzLgotICAg
ICJBIGJpZyBzdHJpbmciLAotICAgICJ0aGUgQklHRVNUIHN0cmluZyIsCi0gICAgInRoZSBCSUdF
U1Qgc3RyaW5nIgotXTsKLSAKLWZ1bmN0aW9uIG9wZW5EYXRhYmFzZSgpCi17Ci0gICAgcmVzdWx0
ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2luZGV4LWN1cnNvcicpIik7Ci0gICAgcmVz
dWx0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb247Ci0gICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLSAKLWZ1bmN0aW9uIHNldFZlcnNpb24oKQotewotICAgIHNl
bGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJl
c3VsdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICBy
ZXN1bHQub25zdWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7Ci0gICAgcmVzdWx0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZGVsZXRlRXhpc3RpbmcoKQot
ewotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0gICAgdHJhbnMub25h
Ym9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3Rv
cmVzKGRiKTsKLQotICAgIHNlbGYub2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVP
YmplY3RTdG9yZSgnc29tZU9iamVjdFN0b3JlJykiKTsKLSAgICBzZWxmLmluZGV4T2JqZWN0ID0g
ZXZhbEFuZExvZygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ3NvbWVJbmRleCcsICd4JykiKTsK
LSAgICBzZWxmLm5leHRUb0FkZCA9IDA7Ci0gICAgYWRkRGF0YSgpOwotfQotCi1mdW5jdGlvbiBh
ZGREYXRhKCkKLXsKLSAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoeyd4
JzogdGVzdERhdGFbbmV4dFRvQWRkXX0sIG5leHRUb0FkZCkiKTsKLSAgICByZXN1bHQub25zdWNj
ZXNzID0gKytzZWxmLm5leHRUb0FkZCA8IHRlc3REYXRhLmxlbmd0aCA/IGFkZERhdGEgOiBzY2hl
ZHVsZVRlc3RzOwotICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci19Ci0KLWZ1bmN0aW9uIHNjaGVkdWxlVGVzdHMoKQotewotICAgIGRlYnVnKCJTY2hlZHVsaW5n
IHRlc3RzLi4uIik7Ci0gICAgc2VsZi5zY2hlZHVsZWRUZXN0cyA9IFtdOwotICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgdGVzdERhdGEubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgLyogbGVmdCBib3Vu
ZCwgaXMgb3BlbiwgcmlnaHQgYm91bmQsIGlzIG9wZW4sIGFzY2VuZGluZyAqLwotICAgICAgICBz
Y2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCB0cnVlLCBudWxsLCBudWxsLCB0cnVlXSk7Ci0gICAg
ICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBudWxsLCBudWxsLCB0cnVlXSk7
Ci0gICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW251bGwsIG51bGwsIGksIHRydWUsIHRy
dWVdKTsKLSAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbbnVsbCwgbnVsbCwgaSwgZmFs
c2UsIHRydWVdKTsKLSAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwgbnVs
bCwgbnVsbCwgZmFsc2VdKTsKLSAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgZmFs
c2UsIG51bGwsIG51bGwsIGZhbHNlXSk7Ci0gICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQo
W251bGwsIG51bGwsIGksIHRydWUsIGZhbHNlXSk7Ci0gICAgICAgIHNjaGVkdWxlZFRlc3RzLnVu
c2hpZnQoW251bGwsIG51bGwsIGksIGZhbHNlLCBmYWxzZV0pOwotICAgICAgICBmb3IgKHZhciBq
ID0gNjsgaiA8IHRlc3REYXRhLmxlbmd0aDsgKytqKSB7Ci0gICAgICAgICAgICBzY2hlZHVsZWRU
ZXN0cy51bnNoaWZ0KFtpLCB0cnVlLCBqLCB0cnVlLCB0cnVlXSk7Ci0gICAgICAgICAgICBzY2hl
ZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCB0cnVlLCBqLCBmYWxzZSwgdHJ1ZV0pOwotICAgICAgICAg
ICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgZmFsc2UsIGosIHRydWUsIHRydWVdKTsKLSAg
ICAgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBqLCBmYWxzZSwgdHJ1
ZV0pOwotICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwgaiwgdHJ1
ZSwgZmFsc2VdKTsKLSAgICAgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIHRydWUs
IGosIGZhbHNlLCBmYWxzZV0pOwotICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChb
aSwgZmFsc2UsIGosIHRydWUsIGZhbHNlXSk7Ci0gICAgICAgICAgICBzY2hlZHVsZWRUZXN0cy51
bnNoaWZ0KFtpLCBmYWxzZSwgaiwgZmFsc2UsIGZhbHNlXSk7Ci0gICAgICAgIH0KLSAgICB9Ci0g
Ci0gICAgZGVidWcoIlJ1bm5pbmcgdGVzdHMuLi4iKTsKLSAgICBydW5OZXh0VGVzdCgpOwotfQot
IAotZnVuY3Rpb24gcnVuTmV4dFRlc3QoKQotewotICAgIGlmICghc2NoZWR1bGVkVGVzdHMubGVu
Z3RoKSB7Ci0gICAgICAgIHRlc3ROdWxsS2V5UmFuZ2UoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAKLSAgICB2YXIgdGVzdCA9IHNjaGVkdWxlZFRlc3RzLnBvcCgpOwotICAgIHNlbGYubG93
ZXIgPSB0ZXN0WzBdOwotICAgIHNlbGYubG93ZXJJc09wZW4gPSB0ZXN0WzFdOwotICAgIHNlbGYu
dXBwZXIgPSB0ZXN0WzJdOwotICAgIHNlbGYudXBwZXJJc09wZW4gPSB0ZXN0WzNdOwotICAgIHNl
bGYuYXNjZW5kaW5nID0gdGVzdFs0XTsKLQotICAgIHN0ciA9ICJOZXh0IHRlc3Q6ICI7Ci0gICAg
aWYgKGxvd2VyICE9PSBudWxsKSB7Ci0gICAgICAgIHN0ciArPSAibG93ZXIgIjsKLSAgICAgICAg
aWYgKGxvd2VySXNPcGVuKQotICAgICAgICAgICAgc3RyICs9ICJvcGVuICI7Ci0gICAgICAgIHN0
ciArPSAiYm91bmQgaXMgIiArIGxvd2VyICsgIjsgIjsKLSAgICB9Ci0gICAgaWYgKHVwcGVyICE9
PSBudWxsKSB7Ci0gICAgICAgIHN0ciArPSAidXBwZXIgIjsKLSAgICAgICAgaWYgKHVwcGVySXNP
cGVuKQotICAgICAgICAgICAgc3RyICs9ICJvcGVuICI7Ci0gICAgICAgIHN0ciArPSAiYm91bmQg
aXMgIiArIHVwcGVyICsgIjsgIjsKLSAgICB9Ci0gICAgaWYgKGFzY2VuZGluZykKLSAgICAgICAg
c3RyICs9ICJzb3J0ZWQgYXNjZW5kaW5nLiI7Ci0gICAgZWxzZQotICAgICAgICBzdHIgKz0gInNv
cnRlZCBkZXNjZW5kaW5nLiI7Ci0KLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoc3RyKTsKLQot
ICAgIC8vIFdvcmsgYXJvdW5kIGZvciBkdXBsaWNhdGUgdmFsdWVzLgotICAgIGlmICh1cHBlciAh
PT0gbnVsbCkgewotICAgICAgICBpZiAodXBwZXJJc09wZW4pIHsKLSAgICAgICAgICAgIHdoaWxl
ICh1cHBlciA+IDAgJiYgdGVzdERhdGFbdXBwZXJdID09PSB0ZXN0RGF0YVt1cHBlciAtIDFdKQot
ICAgICAgICAgICAgICAgIC0tc2VsZi51cHBlcjsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIHdoaWxlICh1cHBlciA8IHRlc3REYXRhLmxlbmd0aCAtIDEgJiYgdGVzdERhdGFbdXBwZXJd
ID09PSB0ZXN0RGF0YVt1cHBlciArIDFdKQotICAgICAgICAgICAgICAgICsrc2VsZi51cHBlcjsK
LSAgICAgICAgfQotICAgIH0KLSAgICBpZiAobG93ZXIgIT09IG51bGwpIHsKLSAgICAgICAgaWYg
KGxvd2VySXNPcGVuKSB7Ci0gICAgICAgICAgICB3aGlsZSAobG93ZXIgPCB0ZXN0RGF0YS5sZW5n
dGggLSAxICYmIHRlc3REYXRhW2xvd2VyXSA9PT0gdGVzdERhdGFbbG93ZXIgKyAxXSkKLSAgICAg
ICAgICAgICAgICArK3NlbGYubG93ZXI7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB3
aGlsZSAobG93ZXIgPiAwICYmIHRlc3REYXRhW2xvd2VyXSA9PT0gdGVzdERhdGFbbG93ZXIgLSAx
XSkKLSAgICAgICAgICAgICAgICAtLXNlbGYubG93ZXI7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBpZiAoYXNjZW5kaW5nKSB7Ci0gICAgICAgIGlmIChsb3dlciAhPT0gbnVsbCkgewotICAgICAg
ICAgICAgaWYgKCFsb3dlcklzT3BlbikKLSAgICAgICAgICAgICAgICBzZWxmLmV4cGVjdGVkSW5k
ZXggPSBsb3dlcjsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBzZWxmLmV4cGVj
dGVkSW5kZXggPSBsb3dlciArIDE7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgc2VsZi5l
eHBlY3RlZEluZGV4ID0gMDsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAodXBwZXIgIT09IG51
bGwpIHsKLSAgICAgICAgICAgIGlmICghdXBwZXJJc09wZW4pCi0gICAgICAgICAgICAgICAgc2Vs
Zi5leHBlY3RlZEluZGV4ID0gdXBwZXI7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgc2VsZi5leHBlY3RlZEluZGV4ID0gdXBwZXIgLSAxOwotICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IHRlc3REYXRhLmxlbmd0aCAtIDE7Ci0gICAgfQot
ICAgIHRlc3RXaXRoaW5Cb3VuZHMoKTsKLSAKLSAgICBpZiAodGVzdERhdGFbbG93ZXJdID09PSB0
ZXN0RGF0YVt1cHBlcl0gJiYgKGxvd2VySXNPcGVuIHx8IHVwcGVySXNPcGVuKSkgewotICAgICAg
ICBkZWJ1ZygiU2tpcHBpbmcgaWxsZWdhbCBrZXkgcmFuZ2UuIik7Ci0gICAgICAgIHJ1bk5leHRU
ZXN0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB2YXIga2V5UmFuZ2U7Ci0gICAg
aWYgKGxvd2VyICE9PSBudWxsICYmIHVwcGVyICE9PSBudWxsKQotICAgICAgICBrZXlSYW5nZSA9
IElEQktleVJhbmdlLmJvdW5kKHRlc3REYXRhW2xvd2VyXSwgdGVzdERhdGFbdXBwZXJdLCBsb3dl
cklzT3BlbiwgdXBwZXJJc09wZW4pOwotICAgIGVsc2UgaWYgKGxvd2VyICE9PSBudWxsKQotICAg
ICAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQodGVzdERhdGFbbG93ZXJdLCBs
b3dlcklzT3Blbik7Ci0gICAgZWxzZQotICAgICAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLnVw
cGVyQm91bmQodGVzdERhdGFbdXBwZXJdLCB1cHBlcklzT3Blbik7Ci0gCi0gICAgdmFyIHJlcXVl
c3QgPSBpbmRleE9iamVjdC5vcGVuS2V5Q3Vyc29yKGtleVJhbmdlLCBhc2NlbmRpbmcgPyBJREJD
dXJzb3IuTkVYVCA6IElEQkN1cnNvci5QUkVWKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1
cnNvckl0ZXJhdGlvbjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLX0KLQotZnVuY3Rpb24gdGVzdFdpdGhpbkJvdW5kcygpCi17Ci0gICAgaWYgKGV4cGVj
dGVkSW5kZXggPCAwIHx8IHRlc3REYXRhLmxlbmd0aCA8PSBleHBlY3RlZEluZGV4KQotICAgICAg
ICBzZWxmLmV4cGVjdGVkSW5kZXggPSBudWxsOwotICAgIGlmIChsb3dlciAhPT0gbnVsbCAmJiBl
eHBlY3RlZEluZGV4IDwgbG93ZXIpCi0gICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IG51bGw7
Ci0gICAgaWYgKHVwcGVyICE9PSBudWxsICYmIHVwcGVyIDwgZXhwZWN0ZWRJbmRleCkKLSAgICAg
ICAgc2VsZi5leHBlY3RlZEluZGV4ID0gbnVsbDsKLSAgICBpZiAobG93ZXIgIT09IG51bGwgJiYg
bG93ZXJJc09wZW4gJiYgZXhwZWN0ZWRJbmRleCA8PSBsb3dlcikKLSAgICAgICAgc2VsZi5leHBl
Y3RlZEluZGV4ID0gbnVsbDsKLSAgICBpZiAodXBwZXIgIT09IG51bGwgJiYgdXBwZXJJc09wZW4g
JiYgdXBwZXIgPD0gZXhwZWN0ZWRJbmRleCkKLSAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0g
bnVsbDsKLX0KLSAKLWZ1bmN0aW9uIGN1cnNvckl0ZXJhdGlvbigpCi17Ci0gICAgaWYgKGV4cGVj
dGVkSW5kZXggPT09IG51bGwpIHsKLSAgICAgICAgc2hvdWxkQmVOdWxsKCJldmVudC50YXJnZXQu
cmVzdWx0Iik7Ci0gICAgICAgIHJ1bk5leHRUZXN0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwpIHsKLSAgICAgICAgdGVzdEZh
aWxlZCgiZXZlbnQudGFyZ2V0LnJlc3VsdCBzaG91bGQgbm90IGJlIG51bGwuIik7Ci0gICAgICAg
IHJ1bk5leHRUZXN0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gCi0gICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICJleHBlY3RlZEluZGV4Iik7Ci0gICAg
c2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgInRlc3REYXRhWyIgKyBleHBlY3Rl
ZEluZGV4ICsgIl0iKTsKLSAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSBhc2NlbmRpbmcgPyBleHBl
Y3RlZEluZGV4ICsgMSA6IGV4cGVjdGVkSW5kZXggLSAxOwotICAgIHRlc3RXaXRoaW5Cb3VuZHMo
KTsKLQotICAgIGV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKTsKLX0KLSAKLXNlbGYubnVs
bEtleVJhbmdlU3RlcCA9IDA7Ci1mdW5jdGlvbiB0ZXN0TnVsbEtleVJhbmdlKCkKLXsKLSAgICBz
ZWxmLmxvd2VyID0gMDsKLSAgICBzZWxmLmxvd2VySXNPcGVuID0gZmFsc2U7Ci0gICAgc2VsZi51
cHBlciA9IHRlc3REYXRhLmxlbmd0aC0xOwotICAgIHNlbGYudXBwZXJJc09wZW4gPSBmYWxzZTsK
LQotICAgIHN0ciA9ICJOZXh0IHRlc3Q6IG51bGwga2V5IHBhdGggIjsKLSAgICBpZiAoc2VsZi5u
dWxsS2V5UmFuZ2VTdGVwID09IDApIHsKLSAgICAgICAgc3RyICs9ICJzb3J0ZWQgYXNjZW5kaW5n
LiI7Ci0gICAgICAgIHNlbGYuYXNjZW5kaW5nID0gdHJ1ZTsKLSAgICAgICAgc2VsZi5leHBlY3Rl
ZEluZGV4ID0gbG93ZXI7Ci0gICAgICAgIHNlbGYubnVsbEtleVJhbmdlU3RlcCA9IDE7Ci0gICAg
fSBlbHNlIGlmIChzZWxmLm51bGxLZXlSYW5nZVN0ZXAgPT0gMSkgewotICAgICAgICBzdHIgKz0g
InNvcnRlZCBkZXNjZW5kaW5nLiI7Ci0gICAgICAgIHNlbGYuYXNjZW5kaW5nID0gZmFsc2U7Ci0g
ICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IHVwcGVyOwotICAgICAgICBzZWxmLm51bGxLZXlS
YW5nZVN0ZXAgPSAyOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKHN0cik7Ci0g
Ci0gICAgdmFyIHJlcXVlc3QgPSBpbmRleE9iamVjdC5vcGVuS2V5Q3Vyc29yKG51bGwsIGFzY2Vu
ZGluZyA/IElEQkN1cnNvci5ORVhUIDogSURCQ3Vyc29yLlBSRVYpOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gY3Vyc29ySXRlcmF0aW9uOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotIAotcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLW9wZW5EYXRh
YmFzZSgpOyAvLyBUaGUgZmlyc3Qgc3RlcC4KLSAKLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9pbmRleC1jdXJzb3IuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1nZXQt
a2V5LWFyZ3VtZW50LXJlcXVpcmVkLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9pbmRleC1nZXQta2V5LWFyZ3VtZW50LXJlcXVpcmVkLmh0bWwKaW5kZXggMDE5ZWRjMjExYjFl
NWM4N2VmZThlNDJmMzlkMjA4MDRiNzA5ZWQ1OS4uZGRiN2NlMzcxNmU2YzhmYWRmN2Q1MThiNGQz
NzBmMjIzZmE1NzQzYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
aW5kZXgtZ2V0LWtleS1hcmd1bWVudC1yZXF1aXJlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWdldC1rZXktYXJndW1lbnQtcmVxdWlyZWQuaHRtbApAQCAt
MSw1MSArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBz
cmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5
PgotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxz
Y3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBpbmRleCAuZ2V0KCkgcmVxdWly
ZWQgYXJndW1lbnQiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJl
Zml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2Ny
aXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5k
TG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0
ZU9iamVjdFN0b3JlKCkKLXsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAg
b2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0
b3JlKCdmb28nLCB7IGtleVBhdGg6ICdpZCcsIGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7Ci0g
ICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdm
aXJzdCcsICdmaXJzdCcpOyIpOwotICAgIHNob3VsZFRocm93KCJpbmRleC5nZXQoKTsiKTsKLSAg
ICBzaG91bGRUaHJvdygiaW5kZXguZ2V0S2V5KCk7Iik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19
Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaW5kZXgt
Z2V0LWtleS1hcmd1bWVudC1yZXF1aXJlZC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4K
IDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4
LW11bHRpZW50cnkuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LW11
bHRpZW50cnkuaHRtbAppbmRleCAzNzAzNjUxOTJhOWNiYzhjZTVlZDZiMWQyYzRmNmI0YWQzM2I5
ZTU0Li5mOGIyZGY1OWY2YjNlODc5YjdjMTA2YjNmNTQ3OTg2N2JiNGNkZWYyIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1tdWx0aWVudHJ5Lmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtbXVsdGllbnRyeS5odG1sCkBA
IC00LDE0OCArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3Jp
cHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBmZWF0dXJlcyBv
ZiBJbmRleGVkREIncyBtdWx0aUVudHJ5IGluZGljZXMuIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQot
ewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiaW5kZXhlZERCLm9wZW4oJ2luZGV4LW11bHRpRW50cnknKSIpOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7Ci0KLSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24o
JzEnKSIpOwotICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwcmVwYXJlRGF0YWJhc2U7Ci0gICAgfTsK
LX0KLQotZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAg
ZGVidWcoIkNyZWF0aW5nIGVtcHR5IHN0b3JlcyBhbmQgaW5kZXhlcyIpOwotICAgIHZhciB0cmFu
cyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3Vs
ZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3Rl
ZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IGFkZERhdGE7Ci0KLSAgICBk
ZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9y
ZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7Ci0gICAgZXZhbEFuZExvZygic3Rv
cmUuY3JlYXRlSW5kZXgoJ2luZGV4JywgJ3gnLCB7bXVsdGlFbnRyeTogdHJ1ZX0pIik7Ci0KLSAg
ICBzdG9yZTIgPSBldmFsQW5kTG9nKCJzdG9yZTIgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3Rv
cmUtdW5pcXVlJykiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZTIuY3JlYXRlSW5kZXgoJ2luZGV4
LXVuaXF1ZScsICd4Jywge211bHRpRW50cnk6IHRydWUsIHVuaXF1ZTogdHJ1ZX0pIik7Ci19Ci0K
LWZ1bmN0aW9uIGFkZERhdGEoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiUG9wdWxh
dGluZyBzdG9yZXMgKGFuZCBpbmRleGVzKSIpOwotICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExv
ZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9u
LlJFQURfV1JJVEUpIik7Ci0gICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9y
dENhbGxiYWNrOwotICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbigpIHsgdmVy
aWZ5SW5kZXhlcygnaW5kZXgnLCB2ZXJpZnlVbmlxdWVDb25zdHJhaW50KTsgfTsKLQotICAgIGRl
YnVnKCJGaXJzdCB0cnkgc29tZSBrZXlzIHRoYXQgYXJlbid0IHdoYXQgd2UncmUgZXhwZWN0aW5n
Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdz
dG9yZScpLnB1dCh7eDogWzcsIDgsIDldLCB5OiAnYSd9LCAnZm9vJykiKTsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICBkZWJ1ZygiTm93IG92ZXJ3
cml0ZSB0aGVtIHdpdGggd2hhdCB3ZSdyZSBleHBlY3RpbmciKTsKLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KHt4OiBbMSwgMiwg
M10sIHk6ICdhJ30sICdmb28nKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmpl
Y3RTdG9yZSgnc3RvcmUnKS5wdXQoe3g6IFs0LCA1LCA2XSwgeTogJ2InfSwgJ2JhcicpIik7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0
aW9uIHZlcmlmeUluZGV4ZXMoaW5kZXhOYW1lLCBjYWxsYmFjaykKLXsKLSAgICBkZWJ1ZygiIik7
Ci0gICAgZGVidWcoIlZlcmlmeWluZyBpbmRleDogIiArIGluZGV4TmFtZSk7Ci0gICAgdHJhbnNh
Y3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUn
XSwgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKSIpOwotICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQg
PSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0g
Y2FsbGJhY2s7Ci0KLSAgICBleHBlY3RlZCA9IFsKLSAgICAgICAgeyBrZXk6IDEsIHByaW1hcnlL
ZXk6ICdmb28nLCB5OiAnYScgfSwKLSAgICAgICAgeyBrZXk6IDIsIHByaW1hcnlLZXk6ICdmb28n
LCB5OiAnYScgfSwKLSAgICAgICAgeyBrZXk6IDMsIHByaW1hcnlLZXk6ICdmb28nLCB5OiAnYScg
fSwKLSAgICAgICAgeyBrZXk6IDQsIHByaW1hcnlLZXk6ICdiYXInLCB5OiAnYicgfSwKLSAgICAg
ICAgeyBrZXk6IDUsIHByaW1hcnlLZXk6ICdiYXInLCB5OiAnYicgfSwKLSAgICAgICAgeyBrZXk6
IDYsIHByaW1hcnlLZXk6ICdiYXInLCB5OiAnYicgfSwKLSAgICBdOwotCi0gICAgdmFyIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKS5pbmRleCgn
IiArIGluZGV4TmFtZSArICInKS5vcGVuQ3Vyc29yKCkiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0
aW9uKGV2ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKLSAgICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICAgICAgZXgg
PSBleHBlY3RlZC5zaGlmdCgpOwotICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJleCAhPSBudWxs
Iik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsIFN0cmluZyhleC5rZXkpKTsK
LSAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY3Vyc29yLnByaW1hcnlLZXkiLCBl
eC5wcmltYXJ5S2V5KTsKLSAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY3Vyc29y
LnZhbHVlLnkiLCBleC55KTsKLSAgICAgICAgICAgIGN1cnNvci5jb250aW51ZSgpOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJleHBlY3RlZC5sZW5ndGggPT09
IDAiKTsKLSAgICAgICAgfQotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIHZlcmlmeVVuaXF1ZUNvbnN0
cmFpbnQoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiVmVyaWZ5aW5nIHVuaXF1ZSBj
b25zdHJhaW50IG9uIG11bHRpRW50cnkgaW5kZXgiKTsKLSAgICB0cmFuc2FjdGlvbiA9IGV2YWxB
bmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZS11bmlxdWUnXSwgSURC
VHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gZnVu
Y3Rpb24gKCkgewotICAgICAgICBkZWJ1ZygiVHJhbnNhY3Rpb24gYWJvcnRlZCBhcyBleHBlY3Rl
ZCIpOwotICAgICAgICBjcmVhdGVJbmRleE9uU3RvcmVXaXRoRGF0YSgpOwotICAgIH07Ci0gICAg
dHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOwotCi0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZS11
bmlxdWUnKS5wdXQoe3g6IFsxLCAyLCAzXSwgeTogJ2EnfSwgJ2ZvbycpIik7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgZGVidWcoInN1Y2Nlc3MhIik7Ci0gICAgICAgIGRl
YnVnKCJSZXBsYWNlIGFuIGV4aXN0aW5nIHJlY29yZCAtIHRoaXMgc2hvdWxkIHdvcmsiKTsKLSAg
ICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9y
ZS11bmlxdWUnKS5wdXQoe3g6IFsxLCAyLCA3XSwgeTogJ2EnfSwgJ2ZvbycpIik7Ci0gICAgICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgZGVidWcoInN1Y2Nlc3Mh
Iik7Ci0gICAgICAgICAgICBkZWJ1ZygiVGhpcyBzaG91bGQgZmFpbCB0aGUgdW5pcXVlbmVzcyBj
b25zdHJhaW50IG9uIHRoZSBpbmRleCwgYW5kIGZhaWw6Iik7Ci0gICAgICAgICAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlLXVuaXF1ZScpLnB1
dCh7eDogWzUsIDJdLCB5OiAnYyd9LCAnc2hvdWxkIGZhaWwnKSIpOwotICAgICAgICAgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOwotICAgICAgICAgICAg
cmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oKSB7IGRlYnVnKCJSZXF1ZXN0IGZhaWxlZCwgYXMg
ZXhwZWN0ZWQiKTsgfTsKLSAgICAgICAgfTsKLSAgICB9OwotfQotCi1mdW5jdGlvbiBjcmVhdGVJ
bmRleE9uU3RvcmVXaXRoRGF0YSgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJDcmVh
dGUgYW4gaW5kZXggb24gYSBwb3B1bGF0ZWQgc3RvcmUiKTsKLQotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJkYi5zZXRWZXJzaW9uKCcyJykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkg
ewotCi0gICAgICAgIHZhciB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOwotICAgICAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0gICAg
ICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICAgICAgdHJh
bnMub25jb21wbGV0ZSA9IGZ1bmN0aW9uKCkgeyB2ZXJpZnlJbmRleGVzKCdpbmRleC1uZXcnLCBm
aW5pc2hKU1Rlc3QpOyB9OwotCi0gICAgICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0
cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5j
cmVhdGVJbmRleCgnaW5kZXgtbmV3JywgJ3gnLCB7bXVsdGlFbnRyeTogdHJ1ZX0pIik7Ci0gICAg
fTsKLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaW5k
ZXgtbXVsdGllbnRyeS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KLQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtcG9wdWxhdGlv
bi5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtcG9wdWxhdGlvbi5o
dG1sCmluZGV4IDQ0MDAxMWY4NTZlNmVmYTdmY2Q4YTA2Mjc5Zjk4MzVjOGUxZjRiNDguLjQ5ZjM4
M2UwMGNlNmEwMzg0M2RhZGMxYjliMTE4MjczMzQ0NWY1NWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LXBvcHVsYXRpb24uaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1wb3B1bGF0aW9uLmh0bWwKQEAgLTQsOTkgKzQs
NyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFk
PgogPGJvZHk+Ci08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGluZGV4IHBvcHVs
YXRpb24uIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVz
KCk7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNl
KCdpbmRleC1wb3B1bGF0aW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZVN1
Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19
Ci0KLWZ1bmN0aW9uIGRlbGV0ZVN1Y2Nlc3MoKQotewotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJpbmRleGVkREIub3BlbignaW5kZXgtcG9wdWxhdGlvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBkb1NldFZlcnNpb24xOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBkb1NldFZlcnNpb24xKCkKLXsKLSAgICBkZWJ1
ZygiIik7Ci0gICAgZGVidWcoImRvU2V0VmVyc2lvbjEoKToiKTsKLSAgICBzZWxmLmRiID0gZXZh
bEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gc2V0VmVyc2lvbjE7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb24xKCkKLXsKLSAgICBk
ZWJ1ZygiIik7Ci0gICAgZGVidWcoInNldFZlcnNpb24xKCk6Iik7Ci0gICAgdHJhbnNhY3Rpb24g
PSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IHJlcXVlc3QucmVzdWx0Iik7Ci0gICAgdHJhbnNh
Y3Rpb24ub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHRyYW5zYWN0aW9u
Lm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICBzdG9yZSA9IGV2YWxBbmRM
b2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlMScpIik7Ci0gICAgZXZhbEFu
ZExvZygic3RvcmUucHV0KHtkYXRhOiAnYScsIGluZGV4S2V5OiAxMH0sIDEpIik7Ci0gICAgZXZh
bEFuZExvZygic3RvcmUucHV0KHtkYXRhOiAnYicsIGluZGV4S2V5OiAyMH0sIDIpIik7Ci0gICAg
ZXZhbEFuZExvZygic3RvcmUucHV0KHtkYXRhOiAnYycsIGluZGV4S2V5OiAxMH0sIDMpIik7Ci0g
ICAgZXZhbEFuZExvZygic3RvcmUucHV0KHtkYXRhOiAnZCcsIGluZGV4S2V5OiAyMH0sIDQpIik7
Ci0gICAgZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXgxJywgJ2lu
ZGV4S2V5JykiKTsKLSAgICBzaG91bGRCZVRydWUoImluZGV4IGluc3RhbmNlb2YgSURCSW5kZXgi
KTsKLSAgICBzaG91bGRCZUZhbHNlKCJpbmRleC51bmlxdWUiKTsKLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygicmVxdWVzdCA9IGluZGV4LmNvdW50KElEQktleVJhbmdlLmJvdW5kKC1JbmZpbml0
eSwgSW5maW5pdHkpKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewotICAgICAgICBz
aG91bGRCZSgicmVxdWVzdC5yZXN1bHQiLCAiNCIpOwotICAgIH07Ci0gICAgdHJhbnNhY3Rpb24u
b25jb21wbGV0ZSA9IGRvU2V0VmVyc2lvbjI7Ci19Ci0KLWZ1bmN0aW9uIGRvU2V0VmVyc2lvbjIo
KSB7Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJkb1NldFZlcnNpb24yKCk6Iik7Ci0gICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDIn
KSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvbjI7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNp
b24yKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInNldFZlcnNpb24yKCk6Iik7Ci0g
ICAgdHJhbnNhY3Rpb24yID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSByZXF1ZXN0LnJlc3Vs
dCIpOwotICAgIHRyYW5zYWN0aW9uMi5vbmFib3J0ID0gc2V0VmVyc2lvbjJBYm9ydDsKLSAgICB0
cmFuc2FjdGlvbjIub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOwotICAg
IHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUy
JykiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoe2RhdGE6ICdhJywgaW5kZXhLZXk6IDEw
fSwgMSkiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoe2RhdGE6ICdiJywgaW5kZXhLZXk6
IDIwfSwgMikiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoe2RhdGE6ICdjJywgaW5kZXhL
ZXk6IDEwfSwgMykiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoe2RhdGE6ICdkJywgaW5k
ZXhLZXk6IDIwfSwgNCkiKTsKLSAgICBldmFsQW5kTG9nKCJpbmRleDIgPSBzdG9yZS5jcmVhdGVJ
bmRleCgnaW5kZXgyJywgJ2luZGV4S2V5JywgeyB1bmlxdWU6IHRydWUgfSkiKTsKLSAgICBzaG91
bGRCZVRydWUoImluZGV4MiBpbnN0YW5jZW9mIElEQkluZGV4Iik7Ci0gICAgc2hvdWxkQmVUcnVl
KCJpbmRleDIudW5pcXVlIik7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb24yQWJvcnQoKQotewot
ICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1Zygic2V0VmVyc2lvbjJBYm9ydCgpOiIpOwotICAgIHNo
b3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIxIik7Ci0gICAgc2hvdWxkQmUo
ImRiLm9iamVjdFN0b3JlTmFtZXNbMF0iLCAiJ3N0b3JlMSciKTsKLSAgICBmaW5pc2hKU1Rlc3Qo
KTsKLX0KLQotdmFyIGpzVGVzdElzQXN5bmMgPSB0cnVlOwotdGVzdCgpOwotCi08L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaW5kZXgtcG9wdWxhdGlvbi5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2luZGV4LXVuaXF1ZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvaW5kZXgtdW5pcXVlLmh0bWwKaW5kZXggMTE0MTMyMTIxNjM2ZTg0OGI1NDI4NTVmMzJjYTJj
OWY0YjQ1ZmVhZS4uYzY2MzhkZjZhMDZiZjNjNGIyZjRiYTgyNzgwZmFkMDRiZDhlYjM4NyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtdW5pcXVlLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtdW5pcXVlLmh0bWwKQEAg
LTQsMTQ1ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Njcmlw
dD4KIDwvaGVhZD4KIDxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IGZlYXR1cmVzIG9m
IEluZGV4ZWREQidzIHVuaXF1ZSBpbmRpY2VzLiIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAg
ICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRl
eGVkREIub3BlbignaW5kZXgtdW5pcXVlJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNl
dFZlcnNpb247Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb24oKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIu
c2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVs
ZXRlRXhpc3Rpbmc7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKLXsKLSAgICBkZWJ1ZygiZGVsZXRl
RXhpc3RpbmcoKToiKTsKLSAgICB2YXIgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0g
ICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIHRyYW5zLm9u
Y29tcGxldGUgPSBzZXRWZXJzaW9uQ29tcGxldGVkOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3Rv
cmVzKGRiKTsKLQotICAgIHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RT
dG9yZSgnc3RvcmUnKSIpOwotICAgIHNlbGYuaW5kZXhPYmplY3QgPSBldmFsQW5kTG9nKCJzdG9y
ZS5jcmVhdGVJbmRleCgnaW5kZXgnLCAneCcsIHt1bmlxdWU6IHRydWV9KSIpOwotCi0gICAgLy8g
TGV0IHNldFZlcnNpb24gdHJhbnNhY3Rpb24gY29tcGxldGUuCi19Ci0KLWZ1bmN0aW9uIHNldFZl
cnNpb25Db21wbGV0ZWQoKQotewotICAgIGRlYnVnKCJzZXRWZXJzaW9uQ29tcGxldGVkKCk6Iik7
Ci0gICAgc2VsZi50cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJh
bnNhY3Rpb24oWydzdG9yZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotCi0gICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLnB1
dCh7eDogMX0sICdmb28nKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkTW9yZURhdGE7Ci19Ci0KLWZ1
bmN0aW9uIGFkZE1vcmVEYXRhKCkKLXsKLSAgICBkZWJ1ZygiYWRkTW9yZURhdGEoKToiKTsKLQot
ICAgIC8vIFRoZSB4IHZhbHVlIHZpb2xhdGVzIHRoZSB1bmlxdWVuZXNzIGNvbnN0cmFpbnQgb2Yg
dGhlIGluZGV4LgotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RT
dG9yZSgnc3RvcmUnKS5wdXQoe3g6IDF9LCAnYmFyJykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSBhZGRNb3JlRGF0YUZhaWxlZDsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRT
dWNjZXNzQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGFkZE1vcmVEYXRhRmFpbGVkKCkKLXsKLSAg
ICBkZWJ1ZygiYWRkTW9yZURhdGFGYWlsZWQoKToiKTsKLQotICAgIC8vIERvbid0IGFib3J0IHRo
ZSB0cmFuc2FjdGlvbi4KLSAgICBldmFsQW5kTG9nKCJldmVudC5wcmV2ZW50RGVmYXVsdCgpIik7
Ci0KLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LmVycm9yQ29kZSIsICJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5DT05TVFJBSU5UX0VSUiIpOwotCi0gICAgLy8gVXBkYXRlIHRoZSAnZm9vJyBlbnRy
eSBpbiBvYmplY3Qgc3RvcmUsIGNoYW5naW5nIHRoZSB2YWx1ZSBvZiB4LgotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKS5wdXQoe3g6IDB9
LCAnZm9vJykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNoYW5nZURhdGFTdWNjZXNzOwotfQotCi1mdW5j
dGlvbiBjaGFuZ2VEYXRhU3VjY2VzcygpCi17Ci0gICAgZGVidWcoImNoYW5nZURhdGFTdWNjZXNz
KCk6Iik7Ci0KLSAgICAvLyBBbiBpbmRleCBjdXJzb3Igc3RhcnRpbmcgYXQgMSBzaG91bGQgbm90
IGZpbmQgYW55dGhpbmcuCi0gICAgdmFyIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlv
bi5vYmplY3RTdG9yZSgnc3RvcmUnKS5pbmRleCgnaW5kZXgnKS5vcGVuQ3Vyc29yKElEQktleVJh
bmdlLmxvd2VyQm91bmQoMSkpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3JTdWNj
ZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQot
Ci1mdW5jdGlvbiBjdXJzb3JTdWNjZXNzKCkKLXsKLSAgICBkZWJ1ZygiY3Vyc29yU3VjY2Vzcygp
OiIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIm51bGwiKTsKLQotICAg
IC8vIEEga2V5IGN1cnNvciBzdGFydGluZyBhdCAxIHNob3VsZCBub3QgZmluZCBhbnl0aGluZy4K
LSAgICB2YXIgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdz
dG9yZScpLmluZGV4KCdpbmRleCcpLm9wZW5LZXlDdXJzb3IoSURCS2V5UmFuZ2UubG93ZXJCb3Vu
ZCgxKSkiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGtleUN1cnNvclN1Y2Nlc3M7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9u
IGtleUN1cnNvclN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJrZXlDdXJzb3JTdWNjZXNzKCk6Iik7
Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAibnVsbCIpOwotCi0gICAgLy8g
Tm93IHdlIHNob3VsZCBiZSBhYmxlIHRvIGFkZCBhIHZhbHVlIHdpdGggeDogMS4KLSAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KHt4
OiAxfSwgJ2JhcicpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRNb3JlRGF0YVN1Y2NlczsKLX0KLQot
ZnVuY3Rpb24gYWRkTW9yZURhdGFTdWNjZXMoKQotewotICAgIGRlYnVnKCJhZGRNb3JlRGF0YVN1
Y2NlcygpOiIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVj
dFN0b3JlKCdzdG9yZScpLmRlbGV0ZSgnYmFyJykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZVN1
Y2Nlc3M7Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZVN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJkZWxl
dGVTdWNjZXNzKCk6Iik7Ci0KLSAgICAvLyBOb3cgd2Ugc2hvdWxkIGJlIGFibGUgdG8gYWRkIGEg
dmFsdWUgd2l0aCB4OiAxIGFnYWluLgotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2Fj
dGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKS5wdXQoe3g6IDF9LCAnYmF6JykiKTsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGZpbmFsQWRkU3VjY2VzczsKLX0KLQotZnVuY3Rpb24gZmluYWxBZGRTdWNjZXNzKCkg
ewotICAgIGRlYnVnKCJmaW5hbEFkZFN1Y2Nlc3MoKToiKTsKLQotICAgIC8vIEFuIG92ZXJ3cml0
ZSBzaG91bGQgYmUgb2suCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9i
amVjdFN0b3JlKCdzdG9yZScpLnB1dCh7eDogMX0sICdiYXonKSIpOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZmluaXNoSlNUZXN0OwotfQotCi10ZXN0KCk7Ci0KLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL2luZGV4LXVuaXF1ZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwv
aHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW52YWxp
ZC1rZXlzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnZhbGlkLWtleXMu
aHRtbAppbmRleCA4ZTIwMGIwNTZjZTUzZjRmMjM2ODA1N2Y4MGM4YjNkNmIxOTFmZmIxLi5lMzVh
YjE4ZmM2MzYwNThkNmJmYWVhNmQ3YjkwNDRlYzNmNTQwZmY0IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnZhbGlkLWtleXMuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnZhbGlkLWtleXMuaHRtbApAQCAtMSw3NiArMSwxMCBAQAot
PCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHAgaWQ9ImRlc2Ny
aXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQ+Ci0KLWRlc2Ny
aXB0aW9uKCJUZXN0IEluZGV4ZWREQiBpbnZhbGlkIGtleXMiKTsKLQotZnVuY3Rpb24gdGVzdCgp
Ci17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0
aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbiki
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2Vz
cygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsK
LQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScp
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0ZXN0R3JvdXAxOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXAx
KCkKLXsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUg
PSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJyk7Iik7Ci0gICAgdGVzdElu
dmFsaWRLZXlzKCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RJbnZhbGlkS2V5cygpCi17Ci0gICAgdmFy
IGludmFsaWRLZXlzID0gWwotICAgICAgICAidm9pZCAwIiwgLy8gVW5kZWZpbmVkCi0gICAgICAg
ICJudWxsIiwgLy8gTnVsbAotICAgICAgICAiKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRz
OyB9KCkpIiwgLy8gQXJndW1lbnRzCi0gICAgICAgICJ0cnVlIiwgLy8gQm9vbGVhbgotICAgICAg
ICAiZmFsc2UiLCAvLyBCb29sZWFuCi0gICAgICAgICJuZXcgRXJyb3IiLCAvLyBFcnJvcgotICAg
ICAgICAiZnVuY3Rpb24gKCkge30iLCAvLyBGdW5jdGlvbgotICAgICAgICAiSlNPTiIsIC8vIEpT
T04KLSAgICAgICAgIk1hdGgiLCAvLyBNYXRoCi0gICAgICAgICJOYU4iLCAvLyBOdW1iZXIgKHNw
ZWNpYWwgY2FzZSkKLSAgICAgICAgIm5ldyBEYXRlKE5hTikiLCAvLyBEYXRlIChzcGVjaWFsIGNh
c2UpCi0gICAgICAgICJ7fSIsIC8vIE9iamVjdAotICAgICAgICAiL3JlZ2V4LyIsIC8vIFJlZ0V4
cAotICAgICAgICAic2VsZiIsIC8vIGdsb2JhbAotICAgICAgICAic2VsZi5kb2N1bWVudCIsIC8v
IEhUTUxEb2N1bWVudAotICAgICAgICAic2VsZi5kb2N1bWVudC5ib2R5IiAvLyBIVE1MQm9keUVs
ZW1lbnQKLSAgICBdOwotCi0gICAgaW52YWxpZEtleXMuZm9yRWFjaChmdW5jdGlvbihrZXkpIHsK
LSAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigicmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1
dCgndmFsdWUnLCAiICsga2V5ICsgIikiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIi
KTsKLSAgICB9KTsKLSAgICAKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0K
LTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9pbnZhbGlkLWtleXMuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9rZXktZ2VuZXJhdG9yLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9rZXktZ2VuZXJhdG9yLmh0bWwKaW5kZXggNjliMjYxNDI0MTFiZDY1NjE0ZTE4
N2ZiZDlkN2FiMTM3YWMyODhlNC4uODQ5ZDRmMjE5MjZjOTU4YmQ0OGQwYmZkMThmMjBkYTc1MmM0
ZGY5OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5LWdlbmVy
YXRvci5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleS1nZW5lcmF0
b3IuaHRtbApAQCAtNCwyMTQgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQu
anMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4K
LTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3Qg
SW5kZXhlZERCJ3Mga2V5IGdlbmVyYXRvciBiZWhhdmlvci4iKTsKLQotZnVuY3Rpb24gdGVzdCgp
Ci17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIHJ1blRlc3RzKCk7Ci19Ci0K
LXZhciB0ZXN0cyA9IFtdOwotZnVuY3Rpb24gZGVmaW5lVGVzdChkZXNjcmlwdGlvbiwgdmVyY2hh
bmdlLCBvcHRpb25hbCkgewotICB0ZXN0cy5wdXNoKAotICAgIHsKLSAgICAgIGRlc2NyaXB0aW9u
OiBkZXNjcmlwdGlvbiwKLSAgICAgIHZlcmNoYW5nZTogdmVyY2hhbmdlLAotICAgICAgb3B0aW9u
YWw6IG9wdGlvbmFsCi0gICAgfQotICApOwotfQotCi0KLWZ1bmN0aW9uIHJ1blRlc3RzKCkgewot
Ci0gICAgZnVuY3Rpb24gbmV4dFRlc3QoKSB7Ci0gICAgICAgIGlmICghdGVzdHMubGVuZ3RoKSB7
Ci0gICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotCi0gICAgICAgIHZhciB0ZXN0ID0gdGVzdHMuc2hpZnQoKTsKLSAgICAgICAgZGVidWco
IiIpOwotICAgICAgICBkZWJ1Zyh0ZXN0LmRlc2NyaXB0aW9uKTsKLQotICAgICAgICBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCdrZXktZ2VuZXJhdG9yJyki
KTsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0g
ICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgZXZh
bEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKCdrZXktZ2VuZXJhdG9yJykiKTsKLSAg
ICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAg
ICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAg
ICAgZXZhbEFuZExvZygiZGIgPSByZXF1ZXN0LnJlc3VsdCIpOwotICAgICAgICAgICAgICAgIGV2
YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICAgICAgICAgICAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgICAg
ICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICAg
ICAgZXZhbEFuZExvZygidHJhbnMgPSByZXF1ZXN0LnJlc3VsdCIpOwotICAgICAgICAgICAgICAg
ICAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgICAgICAg
ICAgICAgICAgIHRlc3QudmVyY2hhbmdlKGRiLCB0cmFucyk7Ci0gICAgICAgICAgICAgICAgICAg
IHRyYW5zLm9uY29tcGxldGUgPSBmdW5jdGlvbiAoKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAg
ICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXZhbEFuZExvZygiZGIuY2xvc2UoKSIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5l
eHRUZXN0KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICh0ZXN0Lm9wdGlvbmFsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGVzdC5vcHRpb25hbChkYiwgZmluaXNoVGVzdCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAg
ICAgICB9OwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICB9Ci0KLSAgICBuZXh0VGVz
dCgpOwotfQotCi1mdW5jdGlvbiBjaGVjayhzdG9yZSwga2V5LCBleHBlY3RlZCkgewotICAgIHNl
bGYuc3RvcmUgPSBzdG9yZTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHN0
b3JlLmdldCgiICsgSlNPTi5zdHJpbmdpZnkoa2V5KSArICIpIik7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbiAoZSkgewotICAgICAgICBzZWxmLmV4cGVjdGVkID0gZXhwZWN0ZWQ7Ci0gICAgICAg
IGlmIChKU09OLnN0cmluZ2lmeShldmVudC50YXJnZXQucmVzdWx0KSA9PT0gSlNPTi5zdHJpbmdp
ZnkoZXhwZWN0ZWQpKSB7Ci0gICAgICAgICAgICB0ZXN0UGFzc2VkKCJHb3QgIiArIEpTT04uc3Ry
aW5naWZ5KGV2ZW50LnRhcmdldC5yZXN1bHQpICsgIiBmb3Iga2V5OiAiICsgSlNPTi5zdHJpbmdp
Znkoa2V5KSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0ZXN0RmFpbGVkKCJHb3Qg
IiArIEpTT04uc3RyaW5naWZ5KGV2ZW50LnRhcmdldC5yZXN1bHQpICsgIiBmb3Iga2V5OiAiICsg
SlNPTi5zdHJpbmdpZnkoa2V5KSArCi0gICAgICAgICAgICAgICAgIiBleHBlY3RlZDogIiArIEpT
T04uc3RyaW5naWZ5KGV4cGVjdGVkKSk7Ci0gICAgICAgIH0KLSAgICB9OwotfQotCi1kZWZpbmVU
ZXN0KAotICAgICdWZXJpZnkgdGhhdCBlYWNoIG9iamVjdCBzdG9yZSBoYXMgYW4gaW5kZXBlbmRl
bnQga2V5IGdlbmVyYXRvci4nLAotICAgIGZ1bmN0aW9uIChkYiwgdHJhbnMpIHsKLSAgICAgICAg
ZXZhbEFuZExvZygic3RvcmUxID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlMScsIHsgYXV0
b0luY3JlbWVudDogdHJ1ZSB9KSIpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZTEucHV0KCdh
JykiKTsKLSAgICAgICAgY2hlY2soc3RvcmUxLCAxLCAnYScpOwotICAgICAgICBldmFsQW5kTG9n
KCJzdG9yZTIgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUyJywgeyBhdXRvSW5jcmVtZW50
OiB0cnVlIH0pIik7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlMi5wdXQoJ2EnKSIpOwotICAg
ICAgICBjaGVjayhzdG9yZTIsIDEsICdhJyk7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlMS5w
dXQoJ2InKSIpOwotICAgICAgICBjaGVjayhzdG9yZTEsIDIsICdiJyk7Ci0gICAgICAgIGV2YWxB
bmRMb2coInN0b3JlMi5wdXQoJ2InKSIpOwotICAgICAgICBjaGVjayhzdG9yZTIsIDIsICdiJyk7
Ci0gICAgfQotKTsKLQotZGVmaW5lVGVzdCgKLSAgICAnVmVyaWZ5IHRoYXQgdGhlIGtleSBnZW5l
cmF0b3IgaXMgbm90IHVwZGF0ZWQgaWYgaW5zZXJ0aW9uIGZhaWxzJywKLSAgICBmdW5jdGlvbiAo
ZGIsIHRyYW5zKSB7Ci0gICAgICAgIHRyYW5zLm9uZXJyb3IgPSBmdW5jdGlvbihlKSB7IGUucHJl
dmVudERlZmF1bHQoKSB9OwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9i
amVjdFN0b3JlKCdzdG9yZTEnLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSkiKTsKLSAgICAgICAg
ZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXgxJywgJ2l4JywgeyB1
bmlxdWU6IHRydWUgfSkiKTsKLSAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KHsgaXg6ICdh
J30pIik7Ci0gICAgICAgIGNoZWNrKHN0b3JlLCAxLCB7aXg6ICdhJ30pOwotICAgICAgICBldmFs
QW5kTG9nKCJzdG9yZS5wdXQoeyBpeDogJ2EnfSkiKTsKLSAgICAgICAgZXZhbEFuZExvZygic3Rv
cmUucHV0KHsgaXg6ICdiJ30pIik7Ci0gICAgICAgIGNoZWNrKHN0b3JlLCAyLCB7aXg6ICdiJ30p
OwotICAgIH0KLSk7Ci0KLWRlZmluZVRlc3QoCi0gICAgJ1ZlcmlmeSB0aGF0IHRoZSBrZXkgZ2Vu
ZXJhdG9yIGlzIG5vdCBhZmZlY3RlZCBieSBpdGVtIHJlbW92YWwgKGRlbGV0ZSBvciBjbGVhciku
JywKLSAgICBmdW5jdGlvbiAoZGIsIHRyYW5zKSB7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3Jl
ID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlMScsIHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9
KSIpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2EnKSIpOwotICAgICAgICBjaGVj
ayhzdG9yZSwgMSwgJ2EnKTsKLSAgICAgICAgZXZhbEFuZExvZygic3RvcmUuZGVsZXRlKDEpIik7
Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgnYicpIik7Ci0gICAgICAgIGNoZWNrKHN0
b3JlLCAyLCAnYicpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5jbGVhcigpIik7Ci0gICAg
ICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgnYycpIik7Ci0gICAgICAgIGNoZWNrKHN0b3JlLCAz
LCAnYycpOwotICAgICAgICAvLyBGSVhNRTogSURCT2JqZWN0U3RvcmUuZGVsZXRlKElEQktleVJh
bmdlKSBpcyBub3QgeWV0IGltcGxlbWVudGVkIGluIENocm9taXVtLgotICAgICAgICAvLyBodHRw
Oi8vY3JidWcuY29tLzEwMTM4NAotICAgICAgICAvL2V2YWxBbmRMb2coInN0b3JlLmRlbGV0ZShJ
REJLZXlSYW5nZS5sb3dlckJvdW5kKDApKSIpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5w
dXQoJ2QnKSIpOwotICAgICAgICBjaGVjayhzdG9yZSwgNCwgJ2QnKTsKLSAgICB9Ci0pOwotCi1k
ZWZpbmVUZXN0KAotICAgICdWZXJpZnkgdGhhdCB0aGUga2V5IGdlbmVyYXRvciBpcyBvbmx5IHNl
dCBpZiBhbmQgb25seSBpZiBhIG51bWVyaWMga2V5IGdyZWF0ZXIgdGhhbiB0aGUgbGFzdCBnZW5l
cmF0ZWQga2V5IGlzIHVzZWQuJywKLSAgICBmdW5jdGlvbiAoZGIsIHRyYW5zKSB7Ci0gICAgICAg
IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlMScsIHsgYXV0
b0luY3JlbWVudDogdHJ1ZSB9KSIpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2En
KSIpOwotICAgICAgICBjaGVjayhzdG9yZSwgMSwgJ2EnKTsKLSAgICAgICAgZXZhbEFuZExvZygi
c3RvcmUucHV0KCdiJywgMykiKTsKLSAgICAgICAgY2hlY2soc3RvcmUsIDMsICdiJyk7Ci0gICAg
ICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgnYycpIik7Ci0gICAgICAgIGNoZWNrKHN0b3JlLCA0
LCAnYycpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2QnLCAtMTApIik7Ci0gICAg
ICAgIGNoZWNrKHN0b3JlLCAtMTAsICdkJyk7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1
dCgnZScpIik7Ci0gICAgICAgIGNoZWNrKHN0b3JlLCA1LCAnZScpOwotICAgICAgICBldmFsQW5k
TG9nKCJzdG9yZS5wdXQoJ2YnLCA2LjAwMDAxKSIpOwotICAgICAgICBjaGVjayhzdG9yZSwgNi4w
MDAwMSwgJ2YnKTsKLSAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdnJykiKTsKLSAgICAg
ICAgY2hlY2soc3RvcmUsIDcsICdnJyk7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgn
ZicsIDguOTk5OSkiKTsKLSAgICAgICAgY2hlY2soc3RvcmUsIDguOTk5OSwgJ2YnKTsKLSAgICAg
ICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdnJykiKTsKLSAgICAgICAgY2hlY2soc3RvcmUsIDks
ICdnJyk7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgnaCcsICdmb28nKSIpOwotICAg
ICAgICBjaGVjayhzdG9yZSwgJ2ZvbycsICdoJyk7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3Jl
LnB1dCgnaScpIik7Ci0gICAgICAgIGNoZWNrKHN0b3JlLCAxMCwgJ2knKTsKLSAgICAgICAgZXZh
bEFuZExvZygic3RvcmUucHV0KCdqJywgWzEwMDBdKSIpOwotICAgICAgICBjaGVjayhzdG9yZSwg
WzEwMDBdLCAnaicpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2snKSIpOwotICAg
ICAgICBjaGVjayhzdG9yZSwgMTEsICdrJyk7Ci0KLSAgICAgICAgLy8gRklYTUU6IFJlcGVhdCB0
aGlzIHRlc3QsIGJ1dCB3aXRoIGEga2V5UGF0aCBhbmQgaW5saW5lIGtleS4KLSAgICB9Ci0pOwot
Ci1kZWZpbmVUZXN0KAotICAgICdWZXJpZnkgdGhhdCBhYm9ydGluZyBhIHRyYW5zYWN0aW9uIHJl
c2V0cyB0aGUga2V5IGdlbmVyYXRvciBzdGF0ZS4nLAotICAgIGZ1bmN0aW9uIChkYiwgdHJhbnMp
IHsKLSAgICAgICAgZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJywgeyBhdXRvSW5jcmVtZW50
OiB0cnVlIH0pOwotICAgIH0sCi0KLSAgICBmdW5jdGlvbiAoZGIsIGNhbGxiYWNrKSB7Ci0gICAg
ICAgIGV2YWxBbmRMb2coInRyYW5zMSA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUnXSwgSURCVHJh
bnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICAgICAgZXZhbEFuZExvZygic3RvcmVfdDEgPSB0
cmFuczEub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKLSAgICAgICAgZXZhbEFuZExvZygic3RvcmVf
dDEucHV0KCdhJykiKTsKLSAgICAgICAgY2hlY2soc3RvcmVfdDEsIDEsICdhJyk7Ci0gICAgICAg
IGV2YWxBbmRMb2coInN0b3JlX3QxLnB1dCgnYicpIik7Ci0gICAgICAgIGNoZWNrKHN0b3JlX3Qx
LCAyLCAnYicpOwotCi0gICAgICAgIC8vIFNjaGVkdWxlIHRoZSBhYm9ydCBhcyBhIHRhc2sgKG5v
dCBydW4gaXQgc3luY2hyb25vdXNseSkKLSAgICAgICAgc3RvcmVfdDEuZ2V0KDApLm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIGRlYnVnKCdhYm9ydGluZy4uLicpOwotICAg
ICAgICAgICAgZXZhbEFuZExvZygidHJhbnMxLmFib3J0KCkiKTsKLSAgICAgICAgICAgIHRyYW5z
MS5vbmFib3J0ID0gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgIGRlYnVnKCdhYm9ydGVk
IScpOwotCi0gICAgICAgICAgICAgICAgZXZhbEFuZExvZygidHJhbnMyID0gZGIudHJhbnNhY3Rp
b24oWydzdG9yZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgICAgICAgICAg
ICAgIGV2YWxBbmRMb2coInN0b3JlX3QyID0gdHJhbnMyLm9iamVjdFN0b3JlKCdzdG9yZScpIik7
Ci0gICAgICAgICAgICAgICAgZXZhbEFuZExvZygic3RvcmVfdDIucHV0KCdjJykiKTsKLSAgICAg
ICAgICAgICAgICBjaGVjayhzdG9yZV90MiwgMSwgJ2MnKTsKLSAgICAgICAgICAgICAgICBldmFs
QW5kTG9nKCJzdG9yZV90Mi5wdXQoJ2QnKSIpOwotICAgICAgICAgICAgICAgIGNoZWNrKHN0b3Jl
X3QyLCAyLCAnZCcpOwotCi0gICAgICAgICAgICAgICAgdHJhbnMyLm9uY29tcGxldGUgPSBjYWxs
YmFjazsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgfQotKTsKLQotdGVzdCgpOwot
Ci08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMva2V5LWdlbmVyYXRvci5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2tleS1zb3J0LW9yZGVyLWFjcm9zcy10eXBlcy5odG1sIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5LXNvcnQtb3JkZXItYWNyb3NzLXR5cGVzLmh0
bWwKaW5kZXggMjQ2NmE1YzVlNTI1YjYyM2VjZTNkZDk2MDk4YzI1Y2FmYTM5Y2UzMy4uNjQzZjdk
Y2Y4MDg1NjAzNzg5Yjk4OTE0MTc2NWMyYTA2YzQxMzgwZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIva2V5LXNvcnQtb3JkZXItYWNyb3NzLXR5cGVzLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5LXNvcnQtb3JkZXItYWNyb3NzLXR5
cGVzLmh0bWwKQEAgLTEsOTcgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVh
ZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8
L2hlYWQ+CiA8Ym9keT4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIga2V5IGNv
bXBhcmlzb24iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4
ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0
aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRl
eGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9n
KCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBhZGRLZXkxOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotfQotCi1mdW5jdGlvbiBhZGRLZXkxKCkKLXsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMo
ZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9y
ZSgnZm9vJyk7Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RT
dG9yZS5hZGQoW10sIEluZmluaXR5KTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEtl
eTI7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0K
LWZ1bmN0aW9uIGFkZEtleTIoKQotewotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gb2JqZWN0U3RvcmUuYWRkKFtdLCAtSW5maW5pdHkpOyIpOwotICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gYWRkS2V5MzsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLX0KLQotZnVuY3Rpb24gYWRkS2V5MygpCi17Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoW10sIDEuMCk7Iik7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBhZGRLZXk0OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBhZGRLZXk0KCkKLXsKLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChbXSwgJycpOyIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gYWRkS2V5NTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYWRkS2V5NSgpCi17Ci0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoW10sICcxLjAnKTsiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5BQ3Vyc29yOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuQUN1cnNvcigpCi17
Ci0gICAga2V5SW5kZXggPSAwOwotICAgIHNvcnRlZEtleXMgPSBldmFsQW5kTG9nKCJzb3J0ZWRL
ZXkgPSBbLUluZmluaXR5LCAxLjAsIEluZmluaXR5LCAnJywgJzEuMCddOyIpOwotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOwot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2YWxB
bmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICAgIGlmIChjdXJz
b3IpIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgInNvcnRlZEtleXNba2V5
SW5kZXhdIik7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsK
LSAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7Ci0gICAgICAgIH0KLSAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAgICAgfQotICAgIH0K
LX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9rZXkt
c29ydC1vcmRlci1hY3Jvc3MtdHlwZXMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXktc29y
dC1vcmRlci1kYXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXktc29y
dC1vcmRlci1kYXRlLmh0bWwKaW5kZXggZDZkZWNmM2QwNTE2ZThkM2Y2YmJlNWE1ZGRkNDc1NDQw
NGI0NzMzMi4uMmYwZTRlYzZmNmRkNjdlYzY2M2JkMzM3MTY3Yjg5M2E4M2UyY2IzMCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5LXNvcnQtb3JkZXItZGF0ZS5o
dG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleS1zb3J0LW9yZGVyLWRh
dGUuaHRtbApAQCAtMSw5NCArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFk
PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwv
aGVhZD4KIDxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBrZXkgY29t
cGFyaXNvbiIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhl
cygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRp
b24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4
ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
b3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2co
ImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGFkZEtleTE7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci19Ci0KLWZ1bmN0aW9uIGFkZEtleTEoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jlcyhk
Yik7Ci0KLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdmb28nKTsiKTsKLSAgICBkYXRlMSA9IGV2YWxBbmRMb2coImRhdGUxID0gbmV3IERhdGUoMTAw
MCk7Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5h
ZGQoW10sIGRhdGUxKTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEtleTI7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9u
IGFkZEtleTIoKQotewotICAgIGRhdGUwID0gZXZhbEFuZExvZygiZGF0ZTAgPSBuZXcgRGF0ZSgw
KTsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFk
ZChbXSwgZGF0ZTApOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkS2V5MzsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24g
YWRkS2V5MygpCi17Ci0gICAgZGF0ZTMgPSBldmFsQW5kTG9nKCJkYXRlMyA9IG5ldyBEYXRlKDMw
MDApOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
YWRkKFtdLCBkYXRlMyk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRLZXk0OwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlv
biBhZGRLZXk0KCkKLXsKLSAgICBkYXRlMiA9IGV2YWxBbmRMb2coImRhdGUyID0gbmV3IERhdGUo
MjAwMCk7Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9y
ZS5hZGQoW10sIGRhdGUyKTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5BQ3Vyc29y
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1m
dW5jdGlvbiBvcGVuQUN1cnNvcigpCi17Ci0gICAga2V5SW5kZXggPSAwOwotICAgIHNvcnRlZEtl
eXMgPSBldmFsQW5kTG9nKCJzb3J0ZWRLZXlzID0gW2RhdGUwLnRvU3RyaW5nKCksIGRhdGUxLnRv
U3RyaW5nKCksIGRhdGUyLnRvU3RyaW5nKCksIGRhdGUzLnRvU3RyaW5nKCldOyIpOwotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIp
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2
YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICAgIGlmIChj
dXJzb3IpIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5LnRvU3RyaW5nKCkiLCAi
c29ydGVkS2V5c1trZXlJbmRleF0iKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5j
b250aW51ZSgpOyIpOwotICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKLSAg
ICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAg
ICAgICB9Ci0gICAgfQotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL2tleS1zb3J0LW9yZGVyLWRhdGUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2Jv
ZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9r
ZXktdHlwZS1hcnJheS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5LXR5
cGUtYXJyYXkuaHRtbAppbmRleCAyYTU5NDU0NDFmODhlOGJmOGM3NTY1ZWViOWUwODEwNDcyYmNk
MDFiLi5hYjUwZDFhMTRmYjRiOTVlMzBlYjM3YTI1ZGZmOGM4Njk0MmYzMDMxIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXktdHlwZS1hcnJheS5odG1sCisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleS10eXBlLWFycmF5Lmh0bWwKQEAgLTEs
MjEwICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNy
Yz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+
Ci08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNj
cmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGtleSB0eXBlcyIpOwotCi1mdW5j
dGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgZXZhbEFu
ZExvZygiSURCVHJhbnNhY3Rpb24gPSBzZWxmLklEQlRyYW5zYWN0aW9uIHx8IHNlbGYuSURCVHJh
bnNhY3Rpb247Iik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiSURCVHJhbnNhY3Rpb24gPT0gbnVsbCIp
OwotCi0gICAgZXZhbEFuZExvZygiSURCRGF0YWJhc2VFeGNlcHRpb24gPSBzZWxmLklEQkRhdGFi
YXNlRXhjZXB0aW9uIHx8IHNlbGYuSURCRGF0YWJhc2VFeGNlcHRpb247Iik7Ci0gICAgc2hvdWxk
QmVGYWxzZSgiSURCRGF0YWJhc2VFeGNlcHRpb24gPT0gbnVsbCIpOwotCi0KLSAgICBuYW1lID0g
c2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFi
YXNlIjsKLSAgICBvcGVucmVxID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVz
Y3JpcHRpb24pIik7Ci0gICAgb3BlbnJlcS5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICBv
cGVucmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24g
b3BlblN1Y2Nlc3MoKQotewotICAgIGV2YWxBbmRMb2coImRiID0gb3BlbnJlcS5yZXN1bHQiKTsK
LSAgICBzZXR2ZXJyZXEgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScp
Iik7Ci0gICAgc2V0dmVycmVxLm9uc3VjY2VzcyA9IHNldFZlcnNpb25TdWNjZXNzOwotICAgIHNl
dHZlcnJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9u
IHNldFZlcnNpb25TdWNjZXNzKCkKLXsKLSAgICBkZWJ1ZygicHJlcGFyaW5nIGRhdGFiYXNlIik7
Ci0gICAgdHJhbnMgPSBzZXR2ZXJyZXEucmVzdWx0OwotICAgIHRyYW5zLm9uY29tcGxldGUgPSB0
ZXN0VmFsaWRBcnJheUtleXM7Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLSAgICBv
YmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpOyIp
OwotICAgIGRlYnVnKCIiKTsKLX0KLQotZnVuY3Rpb24gdGVzdFZhbGlkQXJyYXlLZXlzKCkKLXsK
LSAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRyYW5z
YWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmpl
Y3RTdG9yZSgnc3RvcmUnKSIpOwotICAgIGRlYnVnKCIiKTsKLQotICAgIGV2YWxBbmRMb2coImxv
bmdfYXJyYXkgPSBbXTsgZm9yIChpID0gMDsgaSA8IDEwMDA7ICsraSkgeyBsb25nX2FycmF5LnB1
c2goJ2FiYycsIDEyMywgbmV3IERhdGUoMCksIFtdKTsgfSIpOwotICAgIGRlYnVnKCIiKTsKLQot
ICAgIGRlYnVnKCJhcnJheSB0aGF0IGNvbnRhaW5zIG5vbi1udW1lcmljIHNlbGYtcmVmZXJlbmNl
Iik7Ci0gICAgZXZhbEFuZExvZygic2VsZl9yZWZlcnJlbnRpYWxfYXJyYXkgPSBbXTsgc2VsZl9y
ZWZlcnJlbnRpYWxfYXJyYXkuc2VsZiA9IHNlbGZfcmVmZXJyZW50aWFsX2FycmF5OyIpOwotICAg
IGRlYnVnKCIiKTsKLQotICAgIHZhciBuID0gMCwgY2FzZXMgPSBbCi0gICAgICAgICJbXSIsCi0K
LSAgICAgICAgIlstSW5maW5pdHldIiwKLSAgICAgICAgIlstTnVtYmVyLk1BWF9WQUxVRV0iLAot
ICAgICAgICAiWy0xXSIsCi0gICAgICAgICJbLU51bWJlci5NSU5fVkFMVUVdIiwKLSAgICAgICAg
IlswXSIsCi0gICAgICAgICJbTnVtYmVyLk1JTl9WQUxVRV0iLAotICAgICAgICAiWzFdIiwKLSAg
ICAgICAgIltOdW1iZXIuTUFYX1ZBTFVFXSIsCi0gICAgICAgICJbSW5maW5pdHldIiwKLQotICAg
ICAgICAiWzEsMiwzXSIsCi0KLSAgICAgICAgIltuZXcgRGF0ZSgwKV0iLAotICAgICAgICAiW25l
dyBEYXRlKCcyNTI1LTAxLTAxVDAwOjAwOjAwWicpXSIsCi0KLSAgICAgICAgIltuZXcgRGF0ZSgw
KSwgbmV3IERhdGUoJzI1MjUtMDEtMDFUMDA6MDA6MDBaJyldIiwKLQotICAgICAgICAiWycnXSIs
Ci0gICAgICAgICJbJ1x4MDAnXSIsCi0gICAgICAgICJbJ2FiYzEyMyddIiwKLQotICAgICAgICAi
WydhYmMnLCAxMjNdIiwKLQotICAgICAgICAiW1tdXSIsCi0KLSAgICAgICAgIltbXSwgW11dIiwK
LSAgICAgICAgIltbXSwgW10sIFtdXSIsCi0KLSAgICAgICAgIltbW11dXSIsCi0gICAgICAgICJb
W1tbXV1dXSIsCi0KLSAgICAgICAgIlsxMjMsICdhYmMnLCBuZXcgRGF0ZSgwKSwgW11dIiwKLSAg
ICAgICAgIltbMTIzLCAnYWJjJywgbmV3IERhdGUoMCksIFtdXSwgWzQ1NiwgJ2RlZicsIG5ldyBE
YXRlKDk5OSksIFtbXV1dXSIsCi0KLSAgICAgICAgImxvbmdfYXJyYXkiLAotICAgICAgICAic2Vs
Zl9yZWZlcnJlbnRpYWxfYXJyYXkiCi0gICAgXTsKLQotICAgIGZ1bmN0aW9uIHRlc3RBcnJheVB1
dEdldCh2YWx1ZSwga2V5LCBjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIGRlYnVnKCJ0ZXN0aW5n
IGFycmF5IGtleTogIiArIGtleSk7Ci0gICAgICAgIHB1dHJlcSA9IGV2YWxBbmRMb2coInN0b3Jl
LnB1dCgnIiArIHZhbHVlICsgIicsICIgKyBrZXkgKyAiKTsiKTsKLSAgICAgICAgcHV0cmVxLm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcHV0cmVxLm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgZ2V0cmVxID0gZXZhbEFuZExvZygic3RvcmUu
Z2V0KCIgKyBrZXkgKyAiKTsiKTsKLSAgICAgICAgICAgIGdldHJlcS5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgICAgICBnZXRyZXEub25zdWNjZXNzID0gZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJnZXRyZXEucmVz
dWx0IiwgdmFsdWUpOwotICAgICAgICAgICAgICAgIGRlYnVnKCIiKTsKLSAgICAgICAgICAgICAg
ICBjYWxsYmFjaygpOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICB9Ci0KLSAgICBm
dW5jdGlvbiBuZXh0VGVzdCgpCi0gICAgewotICAgICAgICB2YXIgdGVzdGNhc2UgPSBjYXNlcy5z
aGlmdCgpOwotICAgICAgICBpZiAodGVzdGNhc2UpIHsKLSAgICAgICAgICAgIHRlc3RBcnJheVB1
dEdldCgidmFsdWUiICsgKCsrbiksIHRlc3RjYXNlLCBuZXh0VGVzdCk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICBuZXh0VGVzdCgpOwotCi0gICAgdHJhbnMub25jb21wbGV0ZSA9IHRlc3RJbnZh
bGlkQXJyYXlLZXlzOwotfQotCi0KLWZ1bmN0aW9uIHRlc3RJbnZhbGlkQXJyYXlLZXlzKCkKLXsK
LSAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRyYW5z
YWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmpl
Y3RTdG9yZSgnc3RvcmUnKSIpOwotICAgIGRlYnVnKCIiKTsKLQotICAgIGRlYnVnKCJhcnJheSB0
aGF0IGNvbnRhaW5zIGl0c2VsZjogYXJyYXkgPSBbIGFycmF5IF0iKTsKLSAgICBldmFsQW5kTG9n
KCJjeWNsaWNfYXJyYXkgPSBbXTsgY3ljbGljX2FycmF5LnB1c2goY3ljbGljX2FycmF5KSIpOwot
ICAgIHNob3VsZFRocm93KCJKU09OLnN0cmluZ2lmeShjeWNsaWNfYXJyYXkpIik7Ci0KLSAgICBk
ZWJ1ZygiYXJyYXkgdGhhdCBjb250YWlucyBpdHNlbGYsIG9uZSBsZXZlbCBkb3duOiBhcnJheSA9
IFsgWyBhcnJheSBdIF0iKTsKLSAgICBldmFsQW5kTG9nKCJjeWNsaWNfYXJyYXkyID0gW107IGN5
Y2xpY19hcnJheTIucHVzaChbY3ljbGljX2FycmF5Ml0pIik7Ci0gICAgc2hvdWxkVGhyb3coIkpT
T04uc3RyaW5naWZ5KGN5Y2xpY19hcnJheTIpIik7Ci0KLSAgICBkZWJ1ZygiYXJyYXkgdGhhdCBj
b250YWlucyBpdHNlbGYsIG5vdCBhcyBmaXJzdCBlbGVtZW50OiBhcnJheSA9IFsxLCAnYicsIFtd
LCBhcnJheV0iKTsKLSAgICBldmFsQW5kTG9nKCJjeWNsaWNfYXJyYXkzID0gWzEsICdiJywgW11d
OyBjeWNsaWNfYXJyYXkzLnB1c2goY3ljbGljX2FycmF5MykiKTsKLSAgICBzaG91bGRUaHJvdygi
SlNPTi5zdHJpbmdpZnkoY3ljbGljX2FycmF5MykiKTsKLSAgICBkZWJ1ZygiIik7Ci0KLSAgICBk
ZWJ1ZygiYXJyYXkgdGhhdCBjb250YWlucyBhcnJheSB0aGF0IGNvbnRhaW5zIGl0c2VsZiIpOwot
ICAgIGV2YWxBbmRMb2coImN5Y2xpY19hcnJheTQgPSBbY3ljbGljX2FycmF5XTsiKTsKLSAgICBz
aG91bGRUaHJvdygiSlNPTi5zdHJpbmdpZnkoY3ljbGljX2FycmF5NCkiKTsKLSAgICBkZWJ1Zygi
Iik7Ci0KLSAgICB2YXIgaW52YWxpZEtleXMgPSBbCi0gICAgICAgICJbIHZvaWQgMCBdIiwgLy8g
dW5kZWZpbmVkCi0gICAgICAgICJbIHRydWUgXSIsCi0gICAgICAgICJbIGZhbHNlIF0iLAotICAg
ICAgICAiWyBOYU4gXSIsCi0gICAgICAgICJbIG51bGwgXSIsCi0gICAgICAgICJbIHt9IF0iLAot
ICAgICAgICAiWyBmdW5jdGlvbiAoKSB7fSBdIiwKLSAgICAgICAgIlsgL3JlZ2V4LyBdIiwKLSAg
ICAgICAgIlsgc2VsZiBdIiwKLSAgICAgICAgIlsgc2VsZi5kb2N1bWVudCBdIiwKLSAgICAgICAg
Ilsgc2VsZi5kb2N1bWVudC5ib2R5IF0iLAotICAgICAgICAiY3ljbGljX2FycmF5IiwKLSAgICAg
ICAgImN5Y2xpY19hcnJheTIiLAotICAgICAgICAiY3ljbGljX2FycmF5MyIsCi0gICAgICAgICJj
eWNsaWNfYXJyYXk0IiwKLSAgICAgICAgIkFycmF5KDEwMDApIiAvLyBzcGFyc2UKLSAgICBdOwot
Ci0gICAgaW52YWxpZEtleXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7Ci0gICAgICAgIGRlYnVn
KCJ0ZXN0aW5nIGludmFsaWQgYXJyYXkga2V5OiAiICsga2V5KTsKLSAgICAgICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KCd2YWx1ZScsICIgKyBrZXkgKyAiKTsiLCAiSURCRGF0
YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLSAgICAgICAgZGVidWcoIiIpOwotICAgIH0pOwot
Ci0gICAgdGVzdERlcHRoTGltaXRzKCk7Ci19Ci0KLWZ1bmN0aW9uIG1ha2VBcnJheU9mRGVwdGgo
bikKLXsKLSAgICB2YXIgYXJyYXkgPSBbXTsKLSAgICB3aGlsZSAoLS1uKSB7Ci0gICAgICAgIGFy
cmF5ID0gW2FycmF5XTsKLSAgICB9Ci0gICAgcmV0dXJuIGFycmF5OwotfQotCi1mdW5jdGlvbiB0
ZXN0RGVwdGhMaW1pdHMoKQotewotICAgIHNob3VsZEJlKCJpbmRleGVkREIuY21wKG1ha2VBcnJh
eU9mRGVwdGgoMjUpLCAwKSIsICIxIik7Ci0gICAgc2hvdWxkQmUoImluZGV4ZWREQi5jbXAobWFr
ZUFycmF5T2ZEZXB0aCgyNTApLCAwKSIsICIxIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlv
bigiaW5kZXhlZERCLmNtcChtYWtlQXJyYXlPZkRlcHRoKDI1MDApLCAwKSIsICJJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotICAgIGRlYnVnKCIiKTsKLQotICAgIGZpbmlzaEpTVGVz
dCgpOwotfQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9r
ZXktdHlwZS1hcnJheS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleS10eXBlLWluZmluaXR5
Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXktdHlwZS1pbmZpbml0eS5o
dG1sCmluZGV4IGJjMWVkZTU3ZDVhZjJhNzMzNWNkMjljZDJiZTFjZDJiYjA3Yzc0NWMuLjA1MDc1
YWMxNjlmOWQ4NjlhYWI0ODUzNzNmZGIzZjg2NDJhMTUyZGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleS10eXBlLWluZmluaXR5Lmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5LXR5cGUtaW5maW5pdHkuaHRtbApAQCAtMSw2NCAr
MSwxMCBAQAotPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHAg
aWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQ+
Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBrZXkgdHlwZXMiKTsKLQotZnVuY3Rpb24g
dGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxm
LmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2Ui
OwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlw
dGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVu
U3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lv
bignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0ZXN0R3JvdXAxOwotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiB0ZXN0
R3JvdXAxKCkKLXsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0
U3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJyk7Iik7Ci0gICAg
ZGVidWcoInRlc3Qga2V5IGFzIGluZmluaXR5Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoW10sIEluZmluaXR5KTsiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IHRlc3RHcm91cDI7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDIoKQotewotICAgIGRlYnVn
KCJ0ZXN0IGtleSBhcyBuZWdhdGl2ZSBpbmZpbml0eSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKFtdLCAtSW5maW5pdHkpOyIpOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gdGVzdEdyb3VwMzsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gdGVzdEdyb3VwMygpCi17Ci0gICAg
ZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMva2V5LXR5cGUtaW5maW5pdHkuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2Jv
ZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9r
ZXlwYXRoLWJhc2ljcy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0
aC1iYXNpY3MuaHRtbAppbmRleCBhNjVjMzMyOTgwOGMxZTMyNDYxNDFkZDE4MGM1MGEwMjM0MDE5
NDQxLi43MDRjY2M5MmM1NDRkZTIyZTViMTkyZjRjZjg3NTMzYjliNjQxYjc4IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWJhc2ljcy5odG1sCisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtYmFzaWNzLmh0bWwKQEAgLTEs
MTAzICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNy
Yz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+
Ci08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNj
cmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgZm9yIHZhbGlkIGFuZCBpbnZhbGlkIGtleXBhdGhz
Iik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0g
ICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkg
VGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVu
KG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nl
c3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0K
LWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHRlc3RWYWxp
ZEtleVBhdGhzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotfQotCi1mdW5jdGlvbiB0ZXN0VmFsaWRLZXlQYXRocygpCi17Ci0gICAgZGVsZXRlQWxsT2Jq
ZWN0U3RvcmVzKGRiKTsKLQotICAgIHRlc3RLZXlQYXRocyA9IFtudWxsLCB1bmRlZmluZWQsICcn
XTsKLSAgICB0ZXN0S2V5UGF0aHMuZm9yRWFjaChmdW5jdGlvbiAoa2V5UGF0aCkgewotICAgICAg
ICBnbG9iYWxLZXlQYXRoID0ga2V5UGF0aDsKLSAgICAgICAgZGVidWcoImdsb2JhbEtleVBhdGgg
PSAnIiArIGdsb2JhbEtleVBhdGggKyAiJyIpOwotICAgICAgICBldmFsQW5kTG9nKCJkYi5jcmVh
dGVPYmplY3RTdG9yZSgnbmFtZScsIHtrZXlQYXRoOiBnbG9iYWxLZXlQYXRofSkiKTsKLSAgICAg
ICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLSAgICB9KTsKLQotICAgIHRlc3RLZXlQYXRo
cyA9IFsnZm9vJywgJ2Zvby5iYXIuYmF6J107Ci0gICAgdGVzdEtleVBhdGhzLmZvckVhY2goZnVu
Y3Rpb24gKGtleVBhdGgpIHsKLSAgICAgICAgZ2xvYmFsS2V5UGF0aCA9IGtleVBhdGg7Ci0gICAg
ICAgIGRlYnVnKCJnbG9iYWxLZXlQYXRoID0gJyIgKyBnbG9iYWxLZXlQYXRoICsgIiciKTsKLSAg
ICAgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDog
Z2xvYmFsS2V5UGF0aH0pIik7Ci0gICAgICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0g
ICAgfSk7Ci0KLSAgICB0ZXN0S2V5UGF0aHMgPSBbbnVsbCwgdW5kZWZpbmVkLCAnJywgJ2Zvbycs
ICdmb28uYmFyLmJheiddOwotICAgIHRlc3RLZXlQYXRocy5mb3JFYWNoKGZ1bmN0aW9uIChrZXlQ
YXRoKSB7Ci0gICAgICAgIGdsb2JhbEtleVBhdGggPSBrZXlQYXRoOwotICAgICAgICBkZWJ1Zygi
Z2xvYmFsS2V5UGF0aCA9ICciICsgZ2xvYmFsS2V5UGF0aCArICInIik7Ci0gICAgICAgIHN0b3Jl
ID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJyki
KTsKLSAgICAgICAgZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ25hbWUnLCBnbG9iYWxL
ZXlQYXRoKSIpOwotICAgICAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotICAgIH0pOwot
Ci0gICAgdGVzdEludmFsaWRLZXlQYXRocygpOwotfQotCi1mdW5jdGlvbiB0ZXN0SW52YWxpZEtl
eVBhdGhzKCkKLXsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgdGVzdEtl
eVBhdGhzID0gWydbXScsICdbImZvbyJdJywgJ1siZm9vIiwgImJhciJdJywgJ1siIiwgIiJdJywg
J1sxLjAsIDIuMF0nLCAnW1siZm9vIl1dJywgJ1siZm9vIiwgWyJiYXIiXV0nXTsKLSAgICB0ZXN0
S2V5UGF0aHMuZm9yRWFjaChmdW5jdGlvbiAoa2V5UGF0aCkgewotICAgICAgICBnbG9iYWxLZXlQ
YXRoID0ga2V5UGF0aDsKLSAgICAgICAgZGVidWcoImdsb2JhbEtleVBhdGggPSAnIiArIGdsb2Jh
bEtleVBhdGggKyAiJyIpOwotICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi5jcmVh
dGVPYmplY3RTdG9yZSgnbmFtZScsIHtrZXlQYXRoOiBnbG9iYWxLZXlQYXRofSkiLCAiSURCRGF0
YWJhc2VFeGNlcHRpb24uTk9OX1RSQU5TSUVOVF9FUlIiKTsKLSAgICAgICAgZGVsZXRlQWxsT2Jq
ZWN0U3RvcmVzKGRiKTsKLSAgICB9KTsKLQotICAgIHRlc3RLZXlQYXRocyA9IFsnICcsICdmb28g
JywgJ2ZvbyBiYXInLCAnZm9vLiBiYXInLCAnZm9vIC5iYXInLCAnZm9vLi5iYXInLCAnK2Zvbycs
ICdmb28lJ107Ci0gICAgdGVzdEtleVBhdGhzLmZvckVhY2goZnVuY3Rpb24gKGtleVBhdGgpIHsK
LSAgICAgICAgZ2xvYmFsS2V5UGF0aCA9IGtleVBhdGg7Ci0gICAgICAgIGRlYnVnKCJnbG9iYWxL
ZXlQYXRoID0gJyIgKyBnbG9iYWxLZXlQYXRoICsgIiciKTsKLSAgICAgICAgZXZhbEFuZEV4cGVj
dEV4Y2VwdGlvbigiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDogZ2xvYmFs
S2V5UGF0aH0pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PTl9UUkFOU0lFTlRfRVJSIik7Ci0g
ICAgICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0gICAgfSk7Ci0KLSAgICB0ZXN0S2V5
UGF0aHMgPSBbJyAnLCAnZm9vICcsICdmb28gYmFyJywgJ2Zvby4gYmFyJywgJ2ZvbyAuYmFyJywg
J2Zvby4uYmFyJywgJytmb28nLCAnZm9vJSddOwotICAgIHRlc3RLZXlQYXRocy5mb3JFYWNoKGZ1
bmN0aW9uIChrZXlQYXRoKSB7Ci0gICAgICAgIGdsb2JhbEtleVBhdGggPSBrZXlQYXRoOwotICAg
ICAgICBkZWJ1ZygiZ2xvYmFsS2V5UGF0aCA9ICciICsgZ2xvYmFsS2V5UGF0aCArICInIik7Ci0g
ICAgICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgn
c3RvcmVOYW1lJykiKTsKLSAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuY3Jl
YXRlSW5kZXgoJ25hbWUnLCBnbG9iYWxLZXlQYXRoKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5O
T05fVFJBTlNJRU5UX0VSUiIpOwotICAgICAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwot
ICAgIH0pOwotCi0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMva2V5cGF0aC1iYXNpY3MuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9rZXlwYXRoLWVkZ2VzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9rZXlwYXRoLWVkZ2VzLmh0bWwKaW5kZXggY2ZjMzY5MDNiMzY1ODlkODAwNzIzODdlNGM4
MGY2YjNmYjU5ZGUxNC4uZmY5ZGFkZDI0NDhkNWMzMjViOTNkZWFiM2E3ODhhMjk2ZTI0NWUyMCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1lZGdlcy5o
dG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtZWRnZXMuaHRt
bApAQCAtMSwxMjEgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+
CiA8Ym9keT4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIga2V5UGF0aCBlZGdl
IGNhc2VzIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVz
KCk7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNl
KCdrZXlwYXRoLWVkZ2VzJykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKLSAgICAg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdrZXlwYXRoLWVkZ2VzJyki
KTsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0g
ICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgfTsKLX0KLQotZnVu
Y3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1Zygib3BlblN1
Y2Nlc3MoKToiKTsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dCIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbign
MScpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHRyYW5zYWN0aW9u
ID0gcmVxdWVzdC5yZXN1bHQ7Ci0gICAgICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVj
dGVkQWJvcnRDYWxsYmFjazsKLSAgICAgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ3N0b3JlLXdpdGgtcGF0aCcsIHtrZXlQYXRoOiAnZm9vJ30pIik7Ci0gICAgICAgIGV2YWxB
bmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZS13aXRoLXBhdGgtYW5kLWdlbmVyYXRv
cicsIHtrZXlQYXRoOiAnZm9vJywgYXV0b0luY3JlbWVudDogdHJ1ZX0pIik7Ci0gICAgICAgIHRy
YW5zYWN0aW9uLm9uY29tcGxldGUgPSB0ZXN0S2V5UGF0aHM7Ci0gICAgfTsKLX0KLQotZnVuY3Rp
b24gdGVzdEtleVBhdGhzKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInRlc3RLZXlQ
YXRocygpOiIpOwotCi0gICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9
IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUtd2l0aC1wYXRoJ10sIElEQlRyYW5zYWN0aW9uLlJFQURf
V1JJVEUpIik7Ci0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9i
amVjdFN0b3JlKCdzdG9yZS13aXRoLXBhdGgnKSIpOwotCi0gICAgZGVidWcoIiIpOwotICAgIGRl
YnVnKCJLZXkgcGF0aCBkb2Vzbid0IHJlc29sdmUgdG8gYSB2YWx1ZTsgc2hvdWxkIHlpZWxkIG51
bGwsIHNob3VsZCB0aHJvdyBEQVRBX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24o
InN0b3JlLnB1dChudWxsKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotCi0g
ICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJLZXkgcGF0aCBkb2Vzbid0IHJlc29sdmUgdG8gYSB2
YWx1ZTsgc2hvdWxkIHlpZWxkIG51bGwsIHNob3VsZCB0aHJvdyBEQVRBX0VSUiIpOwotICAgIGV2
YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLnB1dCh7fSkiLCAiSURCRGF0YWJhc2VFeGNlcHRp
b24uREFUQV9FUlIiKTsKLQotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiS2V5IHBhdGggcmVz
b2x2ZXMgdG8gYSB2YWx1ZSB0aGF0IGlzIGludmFsaWQga2V5OyBzaG91bGQgeWllbGQgJ2ludmFs
aWQnIGtleSwgc2hvdWxkIHRocm93IERBVEFfRVJSIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2Vw
dGlvbigic3RvcmUucHV0KHtmb286IG51bGx9KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRB
X0VSUiIpOwotCi0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJLZXkgcGF0aCByZXNvbHZlcyB0
byBhIHZhbHVlIHRoYXQgaXMgdmFsaWQga2V5OyBzaG91bGQgeWllbGQgJ3N0cmluZycga2V5LCBz
aG91bGQgc3VjY2VlZCIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5wdXQoe2Zv
bzogJ3pvbyd9KSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewotICAgICAgICB0ZXN0
UGFzc2VkKCJzdG9yZS5wdXQgc3VjY2VlZGVkIik7Ci0gICAgfTsKLQotICAgIHRyYW5zYWN0aW9u
Lm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFuc2FjdGlvbi5vbmNv
bXBsZXRlID0gdGVzdEtleVBhdGhzQW5kR2VuZXJhdG9yOwotfQotCi1mdW5jdGlvbiB0ZXN0S2V5
UGF0aHNBbmRHZW5lcmF0b3IoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygidGVzdEtl
eVBhdGhzQW5kR2VuZXJhdG9yKCk6Iik7Ci0KLSAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2co
InRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZS13aXRoLXBhdGgtYW5kLWdlbmVy
YXRvciddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIHN0b3JlID0gZXZhbEFu
ZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUtd2l0aC1wYXRoLWFu
ZC1nZW5lcmF0b3InKSIpOwotCi0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJLZXkgcGF0aCBk
b2Vzbid0IHJlc29sdmUgdG8gYSB2YWx1ZTsgc2hvdWxkIHlpZWxkIG51bGwgYnV0IGluc2VydGlv
biB3b3VsZCBmYWlsLCBzbyBwdXQgcmVxdWVzdCBzaG91bGQgcmFpc2UgZXhjZXB0aW9uIik7Ci0g
ICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KG51bGwpIiwgIklEQkRhdGFiYXNl
RXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0KLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIktleSBw
YXRoIGRvZXNuJ3QgcmVzb2x2ZSB0byBhIHZhbHVlOyBzaG91bGQgeWllbGQgbnVsbCBidXQgaW5z
ZXJ0aW9uIHdvdWxkIGZhaWwsIHNvIHB1dCByZXF1ZXN0IHNob3VsZCByYWlzZSBleGNlcHRpb24i
KTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5wdXQoJ3N0cmluZycpIiwgIklE
QkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0KLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVi
dWcoIktleSBwYXRoIGRvZXNuJ3QgcmVzb2x2ZSB0byBhIHZhbHVlOyBzaG91bGQgeWllbGQgbnVs
bCwga2V5IHNob3VsZCBiZSBnZW5lcmF0ZWQsIHB1dCByZXF1ZXN0IHNob3VsZCBzdWNjZWVkIik7
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLnB1dCh7fSkiKTsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgdGVzdFBhc3NlZCgic3RvcmUucHV0IHN1Y2NlZWRl
ZCIpOwotCi0gICAgICAgIGRlYnVnKCIiKTsKLSAgICAgICAgZGVidWcoIktleSBwYXRoIHJlc29s
dmVzIHRvIGEgdmFsdWUgdGhhdCBpcyBpbnZhbGlkIGtleTsgc2hvdWxkIHlpZWxkICdpbnZhbGlk
JyBrZXksIHNob3VsZCB0aHJvdyBEQVRBX0VSUiIpOwotICAgICAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJzdG9yZS5wdXQoe2ZvbzogbnVsbH0pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRB
VEFfRVJSIik7Ci0KLSAgICAgICAgZGVidWcoIiIpOwotICAgICAgICBkZWJ1ZygiS2V5IHBhdGgg
cmVzb2x2ZXMgdG8gYSB2YWx1ZSB0aGF0IGlzIHZhbGlkIGtleTsgc2hvdWxkIHlpZWxkICdzdHJp
bmcnIGtleSwgc2hvdWxkIHN1Y2NlZWQiKTsKLSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InN0b3JlLnB1dCh7Zm9vOiAnem9vJ30pIik7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0
aW9uICgpIHsKLSAgICAgICAgICAgIHRlc3RQYXNzZWQoInN0b3JlLnB1dCBzdWNjZWVkZWQiKTsK
LQotICAgICAgICB9OwotICAgIH07Ci0KLSAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBl
Y3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZpbmlzaEpT
VGVzdDsKLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
a2V5cGF0aC1lZGdlcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtZmV0Y2gta2V5
Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWZldGNoLWtleS5o
dG1sCmluZGV4IDlmNjUwZTQ5YzE4ZTgxZmFjNjEzOTEzNjQ0MWQ0NTkyNzQ3MzJhMmEuLmM4Yzgw
OGUzYjYzNTRjZGRlNjgwNDRmZTEzZDUzNzA0NDlmNWQ0M2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtZmV0Y2gta2V5Lmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1mZXRjaC1rZXkuaHRtbApAQCAtMSw5NCAr
MSwxMCBAQAotPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHAg
aWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQ+
Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBrZXlQYXRocyIpOwotCi1mdW5jdGlvbiB0
ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYu
bG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0
aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5T
dWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9u
KCcxJykiKTsKLQotICAgIHRlc3REYXRhID0gW3sgbmFtZTogInNpbXBsZSBpZGVudGlmaWVyIiwK
LSAgICAgICAgICAgICAgICAgIHZhbHVlOiB7aWQ6MTB9LAotICAgICAgICAgICAgICAgICAga2V5
UGF0aDogImlkIiwKLSAgICAgICAgICAgICAgICAgIGtleTogMTAgfSwKLSAgICAgICAgICAgICAg
ICB7IG5hbWU6ICJzaW1wbGUgaWRlbnRpZmllcnMiLAotICAgICAgICAgICAgICAgICAgdmFsdWU6
IHtpZDE6MTAsIGlkMjoyMH0sCi0gICAgICAgICAgICAgICAgICBrZXlQYXRoOiAiaWQxIiwKLSAg
ICAgICAgICAgICAgICAgIGtleTogMTAgfSwKLSAgICAgICAgICAgICAgICB7IG5hbWU6ICJuZXN0
ZWQgaWRlbnRpZmllcnMiLAotICAgICAgICAgICAgICAgICAgdmFsdWU6IHtvdXRlcjp7aW5uZXI6
MTB9fSwKLSAgICAgICAgICAgICAgICAgIGtleVBhdGg6ICJvdXRlci5pbm5lciIsCi0gICAgICAg
ICAgICAgICAgICBrZXk6IDEwIH0sCi0gICAgICAgICAgICAgICAgeyBuYW1lOiAibmVzdGVkIGlk
ZW50aWZpZXJzIHdpdGggZGlzdHJhY3Rpb25zIiwKLSAgICAgICAgICAgICAgICAgIHZhbHVlOiB7
b3V0ZXI6e2lubmVyOjEwfSwgaW5uZXI6e291dGVyOjIwfX0sCi0gICAgICAgICAgICAgICAgICBr
ZXlQYXRoOiAib3V0ZXIuaW5uZXIiLAotICAgICAgICAgICAgICAgICAga2V5OiAxMCB9LAotICAg
IF07Ci0gICAgbmV4dFRvT3BlbiA9IDA7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVB
bmRQb3B1bGF0ZU9iamVjdFN0b3JlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3Jl
KCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInRlc3RpbmcgIiArIHRlc3REYXRhW25l
eHRUb09wZW5dLm5hbWUpOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAg
IG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RT
dG9yZSh0ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1lLCB7a2V5UGF0aDogdGVzdERhdGFbbmV4dFRv
T3Blbl0ua2V5UGF0aH0pOyIpOwotICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coInJlc3VsdCA9IG9i
amVjdFN0b3JlLmFkZCh0ZXN0RGF0YVtuZXh0VG9PcGVuXS52YWx1ZSk7Iik7Ci0gICAgcmVzdWx0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXN1bHQub25zdWNjZXNz
ID0gb3BlbkN1cnNvcjsKLX0KLQotZnVuY3Rpb24gb3BlbkN1cnNvcigpCi17Ci0gICAgcmVzdWx0
ID0gZXZhbEFuZExvZygicmVzdWx0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOwotICAg
IHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVzdWx0Lm9u
c3VjY2VzcyA9IGNoZWNrQ3Vyc29yOwotfQotCi1mdW5jdGlvbiBjaGVja0N1cnNvcigpCi17Ci0g
ICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsK
LSAgICBpZiAoY3Vyc29yKSB7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgInRlc3RE
YXRhW25leHRUb09wZW5dLmtleSIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHRlc3RGYWlsZWQo
ImN1cnNvciBpcyBudWxsIik7Ci0gICAgfQotICAgIGlmICgrK25leHRUb09wZW4gPCB0ZXN0RGF0
YS5sZW5ndGgpIHsKLSAgICAgICAgY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSgpOwotICAg
IH0gZWxzZSB7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0KLX0KLQotCi10ZXN0KCk7
Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9rZXlwYXRoLWZldGNoLWtleS5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleXJhbmdlLXJlcXVpcmVkLWFyZ3VtZW50cy5odG1s
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cmFuZ2UtcmVxdWlyZWQtYXJndW1l
bnRzLmh0bWwKaW5kZXggMGEwNGIyYzNjZTg5Njc4MTg0NGVhOTY4MTA0NmRkNjU3NzdhZWIxNC4u
MDViOTk3YWYxNDNmYmM4ZDE2ZjViMDYyNWZhMmI2YTUxOTM0NjZhNCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cmFuZ2UtcmVxdWlyZWQtYXJndW1lbnRzLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cmFuZ2UtcmVxdWlyZWQt
YXJndW1lbnRzLmh0bWwKQEAgLTEsMzMgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgogPGh0bWw+
CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3Jp
cHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIg
a2V5cmFuZ2UgcmVxdWlyZWQgYXJndW1lbnRzIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAg
IHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBzaG91bGRUaHJvdygiSURCS2V5UmFuZ2Uu
b25seSgpOyIpOwotICAgIHNob3VsZFRocm93KCJJREJLZXlSYW5nZS5sb3dlckJvdW5kKCk7Iik7
Ci0gICAgc2hvdWxkVGhyb3coIklEQktleVJhbmdlLnVwcGVyQm91bmQoKTsiKTsKLSAgICBzaG91
bGRUaHJvdygiSURCS2V5UmFuZ2UuYm91bmQoMSk7Iik7Ci0gICAgc2hvdWxkVGhyb3coIklEQktl
eVJhbmdlLmJvdW5kKCk7Iik7Ci0KLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7
Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9rZXlyYW5nZS1yZXF1aXJlZC1h
cmd1bWVudHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlyYW5nZS5odG1sIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cmFuZ2UuaHRtbAppbmRleCBhZGE4MjcwODZlOTVi
MThjYTRkYmY0NmYyNDhiOTUwOGE2MWE3YTczLi45ZmRjMWNiZWYxMzdiNDYwZTA1ZjExMjNmY2Vm
M2UyYzBmNTc4OGY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9r
ZXlyYW5nZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleXJhbmdl
Lmh0bWwKQEAgLTQsMTk0ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpz
Ij48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IElu
ZGV4ZWREQidzIEtleVJhbmdlLiIpOwotCi1mdW5jdGlvbiBjaGVja1NpbmdsZUtleVJhbmdlKHZh
bHVlKQotewotICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygiSURCS2V5UmFuZ2Uub25seSgiICsg
dmFsdWUgKyAiKSIpOwotICAgIHNob3VsZEJlKCJrZXlSYW5nZS5sb3dlciIsICIiICsgdmFsdWUp
OwotICAgIHNob3VsZEJlKCJrZXlSYW5nZS51cHBlciIsICIiICsgdmFsdWUpOwotICAgIHNob3Vs
ZEJlRmFsc2UoImtleVJhbmdlLmxvd2VyT3BlbiIpOwotICAgIHNob3VsZEJlRmFsc2UoImtleVJh
bmdlLnVwcGVyT3BlbiIpOwotfQotCi1mdW5jdGlvbiBjaGVja0xvd2VyQm91bmRLZXlSYW5nZSh2
YWx1ZSwgb3BlbikKLXsKLSAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coIklEQktleVJhbmdlLmxv
d2VyQm91bmQoIiArIHZhbHVlICsgIiwiICsgb3BlbiArICIpIik7Ci0gICAgc2hvdWxkQmUoImtl
eVJhbmdlLmxvd2VyIiwgIiIgKyB2YWx1ZSk7Ci0gICAgaWYgKG9wZW4gPT09IHVuZGVmaW5lZCkK
LSAgICAgICAgb3BlbiA9IGZhbHNlOwotICAgIHNob3VsZEJlKCJrZXlSYW5nZS5sb3dlck9wZW4i
LCAiIiArIG9wZW4pOwotICAgIHNob3VsZEJlTnVsbCgia2V5UmFuZ2UudXBwZXIiKTsKLSAgICBz
aG91bGRCZUZhbHNlKCJrZXlSYW5nZS51cHBlck9wZW4iKTsKLX0KLQotZnVuY3Rpb24gY2hlY2tV
cHBlckJvdW5kS2V5UmFuZ2UodmFsdWUsIG9wZW4pCi17Ci0gICAga2V5UmFuZ2UgPSBldmFsQW5k
TG9nKCJJREJLZXlSYW5nZS51cHBlckJvdW5kKCIgKyB2YWx1ZSArICIsIiArIG9wZW4gKyAiKSIp
OwotICAgIHNob3VsZEJlKCJrZXlSYW5nZS51cHBlciIsICIiICsgdmFsdWUpOwotICAgIGlmIChv
cGVuID09PSB1bmRlZmluZWQpCi0gICAgICAgIG9wZW4gPSBmYWxzZTsKLSAgICBzaG91bGRCZSgi
a2V5UmFuZ2UudXBwZXJPcGVuIiwgIiIgKyBvcGVuKTsKLSAgICBzaG91bGRCZU51bGwoImtleVJh
bmdlLmxvd2VyIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgia2V5UmFuZ2UubG93ZXJPcGVuIik7Ci19
Ci0KLWZ1bmN0aW9uIGNoZWNrQm91bmRLZXlSYW5nZShsb3dlciwgdXBwZXIsIGxvd2VyT3Blbiwg
dXBwZXJPcGVuKQotewotICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygiSURCS2V5UmFuZ2UuYm91
bmQoIiArIGxvd2VyICsgIiwiICsgdXBwZXIgKyAiLCAiICsgbG93ZXJPcGVuICsgIiwgIiArIHVw
cGVyT3BlbiArICIpIik7Ci0gICAgc2hvdWxkQmUoImtleVJhbmdlLmxvd2VyIiwgIiIgKyBsb3dl
cik7Ci0gICAgc2hvdWxkQmUoImtleVJhbmdlLnVwcGVyIiwgIiIgKyB1cHBlcik7Ci0gICAgaWYg
KGxvd2VyT3BlbiA9PT0gdW5kZWZpbmVkKQotICAgICAgICBsb3dlck9wZW4gPSBmYWxzZTsKLSAg
ICBpZiAodXBwZXJPcGVuID09PSB1bmRlZmluZWQpCi0gICAgICAgIHVwcGVyT3BlbiA9IGZhbHNl
OwotICAgIHNob3VsZEJlKCJrZXlSYW5nZS5sb3dlck9wZW4iLCAiIiArIGxvd2VyT3Blbik7Ci0g
ICAgc2hvdWxkQmUoImtleVJhbmdlLnVwcGVyT3BlbiIsICIiICsgdXBwZXJPcGVuKTsKLX0KLQot
ZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICBzaG91
bGRCZUZhbHNlKCInbG93ZXInIGluIElEQktleVJhbmdlIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgi
J3VwcGVyJyBpbiBJREJLZXlSYW5nZSIpOwotICAgIHNob3VsZEJlRmFsc2UoIidsb3dlck9wZW4n
IGluIElEQktleVJhbmdlIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiJ3VwcGVyT3BlbicgaW4gSURC
S2V5UmFuZ2UiKTsKLSAgICBzaG91bGRCZVRydWUoIidvbmx5JyBpbiBJREJLZXlSYW5nZSIpOwot
ICAgIHNob3VsZEJlVHJ1ZSgiJ2xvd2VyQm91bmQnIGluIElEQktleVJhbmdlIik7Ci0gICAgc2hv
dWxkQmVUcnVlKCIndXBwZXJCb3VuZCcgaW4gSURCS2V5UmFuZ2UiKTsKLSAgICBzaG91bGRCZVRy
dWUoIidib3VuZCcgaW4gSURCS2V5UmFuZ2UiKTsKLQotICAgIGRlYnVnKCIiKTsKLQotICAgIHZh
ciBpbnN0YW5jZSA9IGV2YWxBbmRMb2coImluc3RhbmNlID0gSURCS2V5UmFuZ2Uub25seSgxKSIp
OwotICAgIHNob3VsZEJlVHJ1ZSgiJ2xvd2VyJyBpbiBpbnN0YW5jZSIpOwotICAgIHNob3VsZEJl
VHJ1ZSgiJ3VwcGVyJyBpbiBpbnN0YW5jZSIpOwotICAgIHNob3VsZEJlVHJ1ZSgiJ2xvd2VyT3Bl
bicgaW4gaW5zdGFuY2UiKTsKLSAgICBzaG91bGRCZVRydWUoIid1cHBlck9wZW4nIGluIGluc3Rh
bmNlIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiJ29ubHknIGluIGluc3RhbmNlIik7Ci0gICAgc2hv
dWxkQmVGYWxzZSgiJ2xvd2VyQm91bmQnIGluIGluc3RhbmNlIik7Ci0gICAgc2hvdWxkQmVGYWxz
ZSgiJ3VwcGVyQm91bmQnIGluIGluc3RhbmNlIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiJ2JvdW5k
JyBpbiBpbnN0YW5jZSIpOwotCi0gICAgZGVidWcoIiIpOwotCi0gICAgY2hlY2tTaW5nbGVLZXlS
YW5nZSgxKTsKLSAgICBjaGVja1NpbmdsZUtleVJhbmdlKDMuMTQpOwotICAgIGNoZWNrU2luZ2xl
S2V5UmFuZ2UoIidhJyIpOwotCi0gICAgY2hlY2tMb3dlckJvdW5kS2V5UmFuZ2UoMTAsIHRydWUp
OwotICAgIGNoZWNrTG93ZXJCb3VuZEtleVJhbmdlKDExLCBmYWxzZSk7Ci0gICAgY2hlY2tMb3dl
ckJvdW5kS2V5UmFuZ2UoMTIpOwotICAgIGNoZWNrTG93ZXJCb3VuZEtleVJhbmdlKDEwLjEsIHRy
dWUpOwotICAgIGNoZWNrTG93ZXJCb3VuZEtleVJhbmdlKDExLjIsIGZhbHNlKTsKLSAgICBjaGVj
a0xvd2VyQm91bmRLZXlSYW5nZSgxMi4zKTsKLSAgICBjaGVja0xvd2VyQm91bmRLZXlSYW5nZSgi
J2FhJyIsIHRydWUpOwotICAgIGNoZWNrTG93ZXJCb3VuZEtleVJhbmdlKCInYWInIiwgZmFsc2Up
OwotICAgIGNoZWNrTG93ZXJCb3VuZEtleVJhbmdlKCInYWMnIik7Ci0KLSAgICBjaGVja1VwcGVy
Qm91bmRLZXlSYW5nZSgyMCwgdHJ1ZSk7Ci0gICAgY2hlY2tVcHBlckJvdW5kS2V5UmFuZ2UoMjEs
IGZhbHNlKTsKLSAgICBjaGVja1VwcGVyQm91bmRLZXlSYW5nZSgyMik7Ci0gICAgY2hlY2tVcHBl
ckJvdW5kS2V5UmFuZ2UoMjAuMiwgdHJ1ZSk7Ci0gICAgY2hlY2tVcHBlckJvdW5kS2V5UmFuZ2Uo
MjEuMywgZmFsc2UpOwotICAgIGNoZWNrVXBwZXJCb3VuZEtleVJhbmdlKDIyLjQpOwotICAgIGNo
ZWNrVXBwZXJCb3VuZEtleVJhbmdlKCInYmEnIiwgdHJ1ZSk7Ci0gICAgY2hlY2tVcHBlckJvdW5k
S2V5UmFuZ2UoIidiYiciLCBmYWxzZSk7Ci0gICAgY2hlY2tVcHBlckJvdW5kS2V5UmFuZ2UoIidi
YyciKTsKLQotICAgIGNoZWNrQm91bmRLZXlSYW5nZSgzMCwgNDApOwotICAgIGNoZWNrQm91bmRL
ZXlSYW5nZSgzMSwgNDEsIGZhbHNlLCBmYWxzZSk7Ci0gICAgY2hlY2tCb3VuZEtleVJhbmdlKDMy
LCA0MiwgZmFsc2UsIHRydWUpOwotICAgIGNoZWNrQm91bmRLZXlSYW5nZSgzMywgNDMsIHRydWUs
IGZhbHNlKTsKLSAgICBjaGVja0JvdW5kS2V5UmFuZ2UoMzQsIDQ0LCB0cnVlLCB0cnVlKTsKLQot
ICAgIGNoZWNrQm91bmRLZXlSYW5nZSgzMC4xLCA0MC4yKTsKLSAgICBjaGVja0JvdW5kS2V5UmFu
Z2UoMzEuMywgNDEuNCwgZmFsc2UsIGZhbHNlKTsKLSAgICBjaGVja0JvdW5kS2V5UmFuZ2UoMzIu
NSwgNDIuNiwgZmFsc2UsIHRydWUpOwotICAgIGNoZWNrQm91bmRLZXlSYW5nZSgzMy43LCA0My44
LCB0cnVlLCBmYWxzZSk7Ci0gICAgY2hlY2tCb3VuZEtleVJhbmdlKDM0LjksIDQ0LjAsIHRydWUs
IHRydWUpOwotCi0gICAgY2hlY2tCb3VuZEtleVJhbmdlKCInYWFhJyIsICInYWJhJyIsIGZhbHNl
LCBmYWxzZSk7Ci0gICAgY2hlY2tCb3VuZEtleVJhbmdlKCInYWFiJyIsICInYWJiJyIpOwotICAg
IGNoZWNrQm91bmRLZXlSYW5nZSgiJ2FhYyciLCAiJ2FiYyciLCBmYWxzZSwgZmFsc2UpOwotICAg
IGNoZWNrQm91bmRLZXlSYW5nZSgiJ2FhZCciLCAiJ2FiZCciLCBmYWxzZSwgdHJ1ZSk7Ci0gICAg
Y2hlY2tCb3VuZEtleVJhbmdlKCInYWFlJyIsICInYWJlJyIsIHRydWUsIGZhbHNlKTsKLSAgICBj
aGVja0JvdW5kS2V5UmFuZ2UoIidhYWYnIiwgIidhYmYnIiwgdHJ1ZSwgdHJ1ZSk7Ci0KLSAgICB0
cnkgewotICAgICAgICBkZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIG9ubHkoe30p
Iik7Ci0gICAgICAgIElEQktleVJhbmdlLm9ubHkoe30pOwotICAgICAgICB0ZXN0RmFpbGVkKCJO
byBleGNlcHRpb24gdGhyb3duIik7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICB0ZXN0UGFz
c2VkKCJDYXVnaHQgZXhjZXB0aW9uOiAiICsgZS50b1N0cmluZygpKTsKLSAgICB9Ci0KLSAgICB0
cnkgewotICAgICAgICBkZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIHVwcGVyQm91
bmQoe30pIik7Ci0gICAgICAgIElEQktleVJhbmdlLnVwcGVyQm91bmQoe30pOwotICAgICAgICB0
ZXN0RmFpbGVkKCJObyBleGNlcHRpb24gdGhyb3duIik7Ci0gICAgfSBjYXRjaCAoZSkgewotICAg
ICAgICB0ZXN0UGFzc2VkKCJDYXVnaHQgZXhjZXB0aW9uOiAiICsgZS50b1N0cmluZygpKTsKLSAg
ICB9Ci0gCi0gICAgdHJ5IHsKLSAgICAgICAgZGVidWcoIlBhc3NpbmcgYW4gaW52YWxpZCBrZXkg
aW50byBsb3dlckJvdW5kKHt9KSIpOwotICAgICAgICBJREJLZXlSYW5nZS5sb3dlckJvdW5kKHt9
KTsKLSAgICAgICAgdGVzdEZhaWxlZCgiTm8gZXhjZXB0aW9uIHRocm93biIpOwotICAgIH0gY2F0
Y2ggKGUpIHsKLSAgICAgICAgdGVzdFBhc3NlZCgiQ2F1Z2h0IGV4Y2VwdGlvbjogIiArIGUudG9T
dHJpbmcoKSk7Ci0gICAgfQotCi0gICAgdHJ5IHsKLSAgICAgICAgZGVidWcoIlBhc3NpbmcgYW4g
aW52YWxpZCBrZXkgaW50byBib3VuZChudWxsLCB7fSkiKTsKLSAgICAgICAgSURCS2V5UmFuZ2Uu
Ym91bmQobnVsbCwge30pOwotICAgICAgICB0ZXN0RmFpbGVkKCJObyBleGNlcHRpb24gdGhyb3du
Iik7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICB0ZXN0UGFzc2VkKCJDYXVnaHQgZXhjZXB0
aW9uOiAiICsgZS50b1N0cmluZygpKTsKLSAgICB9Ci0KLSAgICB0cnkgewotICAgICAgICBkZWJ1
ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIGJvdW5kKHt9LG51bGwpIik7Ci0gICAgICAg
IElEQktleVJhbmdlLmJvdW5kKHt9LCBudWxsKTsKLSAgICAgICAgdGVzdEZhaWxlZCgiTm8gZXhj
ZXB0aW9uIHRocm93biIpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgdGVzdFBhc3NlZCgi
Q2F1Z2h0IGV4Y2VwdGlvbjogIiArIGUudG9TdHJpbmcoKSk7Ci0gICAgfQotCi0gICAgdHJ5IHsK
LSAgICAgICAgZGVidWcoIlBhc3NpbmcgYW4gaW52YWxpZCBrZXkgaW50byBib3VuZCh7fSwge30p
Iik7Ci0gICAgICAgIElEQktleVJhbmdlLmJvdW5kKHt9LCB7fSk7Ci0gICAgICAgIHRlc3RGYWls
ZWQoIk5vIGV4Y2VwdGlvbiB0aHJvd24iKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIHRl
c3RQYXNzZWQoIkNhdWdodCBleGNlcHRpb246ICIgKyBlLnRvU3RyaW5nKCkpOwotICAgIH0KLQot
ICAgIGRlYnVnKCJMb3dlciBrZXkgZ3JlYXRlciB0aGFuIGhpZ2hlciBrZXksIGJvdW5kKDQsIDMp
Iik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiSURCS2V5UmFuZ2UuYm91bmQoNCwgMyki
LCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLQotICAgIGRlYnVnKCJFcXVhbCBr
ZXlzLCBlaXRoZXIgb2YgdGhlIGJvdW5kcyBpcyBvcGVuLCBib3VuZCg0LCA0LCB0cnVlLCBmYWxz
ZSkiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJJREJLZXlSYW5nZS5ib3VuZCg0LCA0
LCB0cnVlLCBmYWxzZSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLQotICAg
IGRlYnVnKCJFcXVhbCBrZXlzLCBlaXRoZXIgb2YgdGhlIGJvdW5kcyBpcyBvcGVuLCBib3VuZCg0
LCA0LCBmYWxzZSwgdHJ1ZSkiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJJREJLZXlS
YW5nZS5ib3VuZCg0LCA0LCBmYWxzZSwgdHJ1ZSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFU
QV9FUlIiKTsKLQotICAgIGRlYnVnKCJFcXVhbCBrZXlzLCBlaXRoZXIgb2YgdGhlIGJvdW5kcyBp
cyBvcGVuLCBib3VuZCg0LCA0LCB0cnVlLCB0cnVlKSIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oIklEQktleVJhbmdlLmJvdW5kKDQsIDQsIHRydWUsIHRydWUpIiwgIklEQkRhdGFiYXNl
RXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0KLSAgICBkZWJ1ZygiRXF1YWwga2V5cywgbm9uZSBvZiB0
aGUgYm91bmRzIGlzIG9wZW4sIGJvdW5kKDQsIDQsIGZhbHNlLCBmYWxzZSkiKTsKLSAgICBJREJL
ZXlSYW5nZS5ib3VuZCg0LCA0LCBmYWxzZSwgZmFsc2UpOwotfQotCi10ZXN0KCk7Ci0KLWZpbmlz
aEpTVGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMva2V5cmFuZ2Uu
anMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9saXN0LW9yZGVyaW5nLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2xpc3Qtb3JkZXJpbmctZXhwZWN0ZWQudHh0Cmlu
ZGV4IDMyN2Q3ZWUxYmI5OTA3Zjk0MmU4ZDVlMGFlZTAwNGZiZTU2NzgyN2QuLjk2OGZmYTBmYTll
ZGM5MWIxZWViOGUwMGIzMmZlMjNlZTI5ZmYxOTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2xpc3Qtb3JkZXJpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2xpc3Qtb3JkZXJpbmctZXhwZWN0ZWQudHh0CkBAIC0xLDQg
KzEsMyBAQAotCiBUZXN0IHN0cmluZyBsaXN0IG9yZGVyaW5nIGluIEluZGV4ZWREQi4KIAogT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbGlzdC1vcmRlcmluZy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbGlzdC1vcmRlcmluZy5odG1sCmluZGV4IGE0OGQ5ZDg5YjZhYzJiNzZmMjg2ZjMzNTkxYWQz
YzA1NDQxODQ1NzkuLmI5ZDliMzU5MTk1MzRiODZlMDVkZmY5NDJmZjZmODVlMzM2M2E1NTggMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2xpc3Qtb3JkZXJpbmcuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9saXN0LW9yZGVyaW5nLmh0bWwK
QEAgLTQsOTQgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2Ny
aXB0PgogPC9oZWFkPgogPGJvZHk+Ci08aW5wdXQgdHlwZT0iZmlsZSIgaWQ9ImZpbGVJbnB1dCIg
bXVsdGlwbGU+PC9pbnB1dD4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBzdHJpbmcgbGlzdCBv
cmRlcmluZyBpbiBJbmRleGVkREIuIik7Ci0KLXZhciBleHBlY3RlZF9vcmRlciA9IFsKLSAgIiIs
Ci0gICJceDAwIiwgLy8gJ05VTEwnIChVKzAwMDApCi0gICIwIiwKLSAgIjEiLAotICAiQSIsCi0g
ICJCIiwKLSAgImEiLAotICAiYiIsCi0gICJceDdGIiwgLy8gJ0RFTEVURScgKFUrMDA3RikKLSAg
Ilx4QzAiLCAvLyAnTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEdSQVZFJyAoVSswMEMwKQot
ICAiXHhDMSIsIC8vICdMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQUNVVEUnIChVKzAwQzEp
Ci0gICJceEUwIiwgLy8gJ0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggR1JBVkUnIChVKzAwRTAp
Ci0gICJceEUxIiwgLy8gJ0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQUNVVEUnIChVKzAwRTEp
Ci0gICJceEZGIiwgLy8gJ0xBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTJyAoVSsw
MEZGKQotICAiXHUwMTAwIiwgLy8gJ0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBNQUNST04n
IChVKzAxMDApCi0gICJcdTEwMDAiLCAvLyAnTVlBTk1BUiBMRVRURVIgS0EnIChVKzEwMDApCi0g
ICJcdUQ4MzRcdUREMUUiLCAvLyAnTVVTSUNBTCBTWU1CT0wgRy1DTEVGJyAoVSsxRDExRSksIFVU
Ri0xNiBzdXJyb2dhdGUgcGFpcnMKLSAgIlx1RkZGRCIgLy8gJ1JFUExBQ0VNRU5UIENIQVJBQ1RF
UicgKFUrRkZGRCkKLV07Ci12YXIgaSwgdG1wLCBwZXJtdXRlZF9vcmRlciA9IGV4cGVjdGVkX29y
ZGVyLnNsaWNlKCk7IHBlcm11dGVkX29yZGVyLnJldmVyc2UoKTsKLWZvciAoaSA9IDA7IGkgPCBw
ZXJtdXRlZF9vcmRlci5sZW5ndGggLSAyOyBpICs9IDIpIHsKLSAgICB0bXAgPSBwZXJtdXRlZF9v
cmRlcltpXTsKLSAgICBwZXJtdXRlZF9vcmRlcltpXSA9IHBlcm11dGVkX29yZGVyW2kgKyAxXTsK
LSAgICBwZXJtdXRlZF9vcmRlcltpICsgMV0gPSB0bXA7Ci19Ci0KLWZ1bmN0aW9uIHRlc3QoKQot
ewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgZGVidWcoImNoZWNrIHRoYXQgdGhl
IGV4cGVjdGVkIG9yZGVyIGlzIHRoZSBjYW5vbmljYWwgSlMgc29ydCBvcmRlcjoiKTsKLSAgICBl
dmFsQW5kTG9nKCJzb3J0ZWRfb3JkZXIgPSBleHBlY3RlZF9vcmRlci5zbGljZSgpOyBzb3J0ZWRf
b3JkZXIuc29ydCgpIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJhcmVBcnJheXNFcXVhbChzb3J0ZWRf
b3JkZXIsIGV4cGVjdGVkX29yZGVyKSIpOwotICAgIHRlc3RTdG9yZXNBbmRJbmRleGVzKCk7Ci19
Ci0KLQotCi1mdW5jdGlvbiB0ZXN0U3RvcmVzQW5kSW5kZXhlcygpCi17Ci0gICAgZGVidWcoIiIp
OwotICAgIGRlYnVnKCJ0ZXN0U3RvcmVzQW5kSW5kZXhlcygpOiIpOwotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoJ2xpc3Qtb3JkZXJpbmcnKSIpOwot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZSkgewotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiaW5kZXhlZERCLm9wZW4oJ2xpc3Qtb3JkZXJpbmcnKSIpOwotICAgICAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJkYiA9IHJlcXVlc3Qu
cmVzdWx0Iik7Ci0gICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLnZlcnNpb24i
LCAiIik7Ci0gICAgICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbign
MScpIik7Ci0gICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLSAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZSkgewotICAg
ICAgICAgICAgICAgIHRyYW5zID0gcmVxdWVzdC5yZXN1bHQ7Ci0KLSAgICAgICAgICAgICAgICBk
ZWJ1ZygiIik7Ci0gICAgICAgICAgICAgICAgZGVidWcoIk9iamVjdCBzdG9yZXM6Iik7Ci0gICAg
ICAgICAgICAgICAgcGVybXV0ZWRfb3JkZXIuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkgewotICAg
ICAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgiICsgSlNP
Ti5zdHJpbmdpZnkobmFtZSkgKyIpIik7Ci0gICAgICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAg
ICAgICAgICBzaG91bGRCZVRydWUoImFyZUFycmF5c0VxdWFsKGRiLm9iamVjdFN0b3JlTmFtZXMs
IGV4cGVjdGVkX29yZGVyKSIpOwotCi0gICAgICAgICAgICAgICAgZGVidWcoIiIpOwotICAgICAg
ICAgICAgICAgIGRlYnVnKCJJbmRleGVzOiIpOwotICAgICAgICAgICAgICAgIHN0b3JlID0gZXZh
bEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOwotICAgICAg
ICAgICAgICAgIHBlcm11dGVkX29yZGVyLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHsKLSAgICAg
ICAgICAgICAgICAgICAgZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoIiArIEpTT04uc3Ry
aW5naWZ5KG5hbWUpICsiLCAna2V5UGF0aCcpIik7Ci0gICAgICAgICAgICAgICAgfSk7Ci0KLSAg
ICAgICAgICAgICAgICBzaG91bGRCZVRydWUoImFyZUFycmF5c0VxdWFsKHN0b3JlLmluZGV4TmFt
ZXMsIGV4cGVjdGVkX29yZGVyKSIpOwotCi0gICAgICAgICAgICAgICAgdHJhbnMub25jb21wbGV0
ZSA9IGZpbmlzaEpTVGVzdDsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgfTsKLX0K
LQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbGlzdC1vcmRl
cmluZy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL211dGF0aW5nLWN1cnNvci5odG1sIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbXV0YXRpbmctY3Vyc29yLmh0bWwKaW5kZXggODNl
MDQwOGZjNjMzNDUyMjQ3ODZiNzRjY2E1MzViOWY0MDc5MGMxNi4uNDJlZjAzMGNlM2E1NDFjNTJk
MzVhNGY0ZGU0MDEyZTY2YjQwYWU3MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbXV0YXRpbmctY3Vyc29yLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbXV0YXRpbmctY3Vyc29yLmh0bWwKQEAgLTQsMTQwICs0LDcgQEAKIDxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHAg
aWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQ+
Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IG11dGF0aW5nIGFuIEluZGV4ZWREQidzIG9iamVjdHN0b3Jl
IGZyb20gYSBjdXJzb3IuIik7Ci0KLXRlc3QoKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAg
cmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhl
ZERCLm9wZW4oJ211dGF0aW5nLWN1cnNvcicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBv
cGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIHZhciBkYiA9IGV2YWxBbmRM
b2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVy
c2lvblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb25TdWNjZXNzKCkKLXsKLSAgICBkZWJ1Zygic2V0
VmVyc2lvblN1Y2Nlc3MoKToiKTsKLSAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVs
bCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0
cmFucy5vbmNvbXBsZXRlID0gb3BlbkZvcndhcmRDdXJzb3I7Ci0KLSAgICBkZWxldGVBbGxPYmpl
Y3RTdG9yZXMoZGIpOwotCi0gICAgdmFyIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0
U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOwotICAgIGV2YWxBbmRMb2co
Im9iamVjdFN0b3JlLmFkZCgxLCAxKS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2si
KTsKLSAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoMiwgMikub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrIik7Ci0gICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKDMs
IDMpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2co
Im9iamVjdFN0b3JlLmFkZCg0LCA0KS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2si
KTsKLX0KLQotZnVuY3Rpb24gb3BlbkZvcndhcmRDdXJzb3IoKQotewotICAgIGRlYnVnKCJvcGVu
Rm9yd2FyZEN1cnNvcigpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlv
bihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgdHJhbnMub25h
Ym9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBm
b3J3YXJkQ3Vyc29yQ29tcGxldGU7Ci0KLSAgICBzZWxmLm9iamVjdFN0b3JlID0gZXZhbEFuZExv
ZygidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
Zygib2JqZWN0U3RvcmUub3BlbkN1cnNvcigpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
b3J3YXJkQ3Vyc29yOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotICAgIHNlbGYuY3Vyc29yU3RlcHMgPSAwOwotfQotCi1mdW5jdGlvbiBmb3J3YXJkQ3Vy
c29yKCkKLXsKLSAgICBkZWJ1ZygiZm9yd2FyZEN1cnNvcigpIik7Ci0gICAgc2VsZi5jdXJzb3Ig
PSBldmVudC50YXJnZXQucmVzdWx0OwotCi0gICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0g
bnVsbCkgewotICAgICAgICBzaG91bGRCZSgiY3Vyc29yU3RlcHMiLCAiNSIpOwotCi0gICAgICAg
IC8vIExldCB0aGUgdHJhbnNhY3Rpb24gZmluaXNoLgotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgZGVidWcoKytjdXJzb3JTdGVwcyk7Ci0gICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAi
Y3Vyc29yU3RlcHMiKTsKLSAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgImN1cnNvclN0ZXBz
Iik7Ci0KLSAgICBpZiAoY3Vyc29yU3RlcHMgPT0gMSkgewotICAgICAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiZXZlbnQudGFyZ2V0LnNvdXJjZS5hZGQoNSwgNSkiKTsKLSAgICAgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCki
KTsgfQotICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LSAgICB9IGVsc2UgewotICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKSIpOwot
ICAgIH0KLX0KLQotZnVuY3Rpb24gZm9yd2FyZEN1cnNvckNvbXBsZXRlKCkKLXsKLSAgICBkZWJ1
ZygiZm9yd2FyZEN1cnNvckNvbXBsZXRlKCkiKTsKLSAgICBvcGVuUmV2ZXJzZUN1cnNvcigpCi19
Ci0KLWZ1bmN0aW9uIG9wZW5SZXZlcnNlQ3Vyc29yKCkKLXsKLSAgICBkZWJ1Zygib3BlblJldmVy
c2VDdXJzb3IoKSIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydz
dG9yZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIHRyYW5zLm9uYWJvcnQg
PSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gcmV2ZXJz
ZUN1cnNvckNvbXBsZXRlOwotCi0gICAgc2VsZi5vYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coInRy
YW5zLm9iamVjdFN0b3JlKCdzdG9yZScpIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIm9i
amVjdFN0b3JlLm9wZW5DdXJzb3IobnVsbCwgSURCQ3Vyc29yLlBSRVYpIik7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSByZXZlcnNlQ3Vyc29yOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHNlbGYuY3Vyc29yU3RlcHMgPSA2OwotfQotCi1mdW5j
dGlvbiByZXZlcnNlQ3Vyc29yKCkKLXsKLSAgICBkZWJ1ZygicmV2ZXJzZUN1cnNvcigpIik7Ci0g
ICAgc2VsZi5jdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OwotCi0gICAgaWYgKGV2ZW50LnRh
cmdldC5yZXN1bHQgPT0gbnVsbCkgewotICAgICAgICBzaG91bGRCZSgiY3Vyc29yU3RlcHMiLCAi
MCIpOwotCi0gICAgICAgIC8vIExldCB0aGUgdHJhbnNhY3Rpb24gZmluaXNoLgotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgZGVidWcoLS1jdXJzb3JTdGVwcyk7Ci0gICAgc2hvdWxkQmUo
ImN1cnNvci5rZXkiLCAiY3Vyc29yU3RlcHMiKTsKLSAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVl
IiwgImN1cnNvclN0ZXBzIik7Ci0KLSAgICBpZiAoY3Vyc29yU3RlcHMgPT0gMikgewotICAgICAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnNvdXJjZS5hZGQoMCwgMCkiKTsK
LSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgZXZhbEFuZExvZygiY3Vy
c29yLmNvbnRpbnVlKCkiKTsgfQotICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLSAgICB9IGVsc2UgewotICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3Iu
Y29udGludWUoKSIpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gcmV2ZXJzZUN1cnNvckNvbXBsZXRl
KCkKLXsKLSAgICBkZWJ1ZygicmV2ZXJzZUN1cnNvckNvbXBsZXRlKCkiKTsKLSAgICBmaW5pc2hK
U1Rlc3QoKTsKLX0KLQotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbXV0YXRp
bmctY3Vyc29yLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0U3RvcmUtcmVxdWlyZWQt
YXJndW1lbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RTdG9y
ZS1yZXF1aXJlZC1hcmd1bWVudHMuaHRtbAppbmRleCAwNDIyNWEyODE2ZTIxMWJkNDFjMTNiMTRl
MjFkZWNiZGI0MDM1MGY4Li44MTFjNGUwMzkzZGExYTYxOWQ1ZGRmYjUzNDUzNWFjZGQ2NjhmOGUz
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RTdG9yZS1y
ZXF1aXJlZC1hcmd1bWVudHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9vYmplY3RTdG9yZS1yZXF1aXJlZC1hcmd1bWVudHMuaHRtbApAQCAtMSw1NiArMSwxMCBAQAot
PCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHAgaWQ9ImRlc2Ny
aXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQ+Ci0KLWRlc2Ny
aXB0aW9uKCJUZXN0IEluZGV4ZWREQiBvYmplY3Qgc3RvcmUgcmVxdWlyZWQgYXJndW1lbnRzIik7
Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAg
ICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBU
ZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4o
bmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2Vz
czsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQot
ZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5k
UG9wdWxhdGVPYmplY3RTdG9yZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSgp
Ci17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9iamVjdFN0b3JlID0g
ZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJyk7Iik7
Ci0gICAgc2hvdWxkVGhyb3coIm9iamVjdFN0b3JlLnB1dCgpOyIpOwotICAgIHNob3VsZFRocm93
KCJvYmplY3RTdG9yZS5hZGQoKTsiKTsKLSAgICBzaG91bGRUaHJvdygib2JqZWN0U3RvcmUuZGVs
ZXRlKCk7Iik7Ci0gICAgc2hvdWxkVGhyb3coIm9iamVjdFN0b3JlLmdldCgpOyIpOwotICAgIHNo
b3VsZFRocm93KCJvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgpOyIpOwotICAgIHNob3VsZFRocm93
KCJvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgnZm9vJyk7Iik7Ci0gICAgc2hvdWxkVGhyb3coIm9i
amVjdFN0b3JlLmluZGV4KCk7Iik7Ci0gICAgc2hvdWxkVGhyb3coIm9iamVjdFN0b3JlLmRlbGV0
ZUluZGV4KCk7Iik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb2JqZWN0U3RvcmUtcmVxdWlyZWQtYXJndW1l
bnRzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYXV0b2luY3JlbWVudC5o
dG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYXV0b2luY3Jl
bWVudC5odG1sCmluZGV4IDlmODgyNWFhNzdlZTZlMmZiNGY2NzM4MjA2ZTBlNDAzZjZiYjhkYzgu
LmRiZjY4NTllNTgzNjM1NmRkMWRhYWMzYmI3YTJiMmIzMDYxYzM3ODAgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWF1dG9pbmNyZW1lbnQuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1hdXRvaW5j
cmVtZW50Lmh0bWwKQEAgLTQsMjAyICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hh
cmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9uIj48
L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJU
ZXN0IEluZGV4ZWREQidzIElEQk9iamVjdFN0b3JlIGF1dG8taW5jcmVtZW50IGZlYXR1cmUuIik7
Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdvYmplY3RzdG9yZS1hdXRvaW5j
cmVtZW50JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBv
cGVuU3VjY2VzcygpCi17Ci0gICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7Ci0gICAgc2VsZi5k
YiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb25TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2Vz
cygpCi17Ci0gICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7Ci0gICAgc2VsZi50cmFu
cyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3Vs
ZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3Rl
ZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IHNldFZlcnNpb25Db21wbGV0
ZWQ7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgZGVidWcoImNyZWF0
ZU9iamVjdFN0b3JlKCk6Iik7Ci0gICAgc2VsZi5zdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ1N0b3JlV2l0aEtleVBhdGgnLCB7a2V5UGF0aDogJ2lkJywg
YXV0b0luY3JlbWVudDogdHJ1ZX0pIik7Ci0gICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ1N0b3JlV2l0aEF1dG9JbmNyZW1lbnQnLCB7YXV0b0luY3JlbWVudDogdHJ1ZX0pIik7
Ci0gICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ1BsYWluT2xkU3RvcmUnLCB7
YXV0b0luY3JlbWVudDogZmFsc2V9KSIpOwotICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVj
dFN0b3JlKCdTdG9yZVdpdGhMb25nS2V5UGF0aCcsIHtrZXlQYXRoOiAnYS5iLmMuaWQnLCBhdXRv
SW5jcmVtZW50OiB0cnVlfSkiKTsKLSAgICB2YXIgc3RvcmVOYW1lcyA9IGV2YWxBbmRMb2coInN0
b3JlTmFtZXMgPSBkYi5vYmplY3RTdG9yZU5hbWVzIik7Ci0KLSAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoInN0b3JlLm5hbWUiLCAiU3RvcmVXaXRoS2V5UGF0aCIpOwotICAgIHNob3VsZEJlKCJz
dG9yZS5rZXlQYXRoIiwgIidpZCciKTsKLSAgICBzaG91bGRCZSgic3RvcmVOYW1lcy5jb250YWlu
cygnU3RvcmVXaXRoS2V5UGF0aCcpIiwgInRydWUiKTsKLSAgICBzaG91bGRCZSgic3RvcmVOYW1l
cy5jb250YWlucygnU3RvcmVXaXRoQXV0b0luY3JlbWVudCcpIiwgInRydWUiKTsKLSAgICBzaG91
bGRCZSgic3RvcmVOYW1lcy5jb250YWlucygnUGxhaW5PbGRTdG9yZScpIiwgInRydWUiKTsKLSAg
ICBzaG91bGRCZSgic3RvcmVOYW1lcy5sZW5ndGgiLCAiNCIpOwotCi0gICAgLy8gTGV0IHRoZSBz
ZXRWZXJzaW9uIHRyYW5zYWN0aW9uIGNvbXBsZXRlLgotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9u
Q29tcGxldGVkKCkKLXsKLSAgICBkZWJ1Zygic2V0VmVyc2lvbkNvbXBsZXRlZCgpOiIpOwotCi0g
ICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydTdG9y
ZVdpdGhLZXlQYXRoJywgJ1N0b3JlV2l0aEF1dG9JbmNyZW1lbnQnLCAnUGxhaW5PbGRTdG9yZSdd
LCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4
cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gdGVzdExvbmdLZXlQ
YXRoOwotCi0gICAgc2VsZi5zdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0
U3RvcmUoJ1N0b3JlV2l0aEtleVBhdGgnKSIpOwotCi0gICAgZGVidWcoIkluc2VydCBpbnRvIG9i
amVjdCBzdG9yZSB3aXRoIGF1dG8gaW5jcmVtZW50IGFuZCBrZXkgcGF0aCwgd2l0aCBrZXkgaW4g
dGhlIG9iamVjdC4iKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHtuYW1l
OiAnSmVmZmVyc3NvbicsIG51bWJlcjogJzcwMTAnLCBpZDogM30pIik7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBhZGRKZWZmZXJzc29uU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYWRkSmVmZmVyc3NvblN1Y2Nl
c3MoKQotewotICAgIGRlYnVnKCJhZGRKZWZmZXJzc29uU3VjY2VzcygpOiIpOwotICAgIHNob3Vs
ZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIjMiKTsKLQotICAgIGRlYnVnKCJJbnNlcnQgaW50
byBvYmplY3Qgc3RvcmUgd2l0aCBhdXRvIGluY3JlbWVudCBhbmQga2V5IHBhdGgsIHdpdGhvdXQg
a2V5IGluIHRoZSBvYmplY3QuIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFk
ZCh7bmFtZTogJ0xpbmNvbG4nLCBudW1iZXI6ICc3MDEyJ30pIik7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBhZGRMaW5jb2xuV2l0aEluamVjdEtleVN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGFkZExpbmNvbG5X
aXRoSW5qZWN0S2V5U3VjY2VzcygpCi17Ci0gICAgZGVidWcoImFkZExpbmNvbG5XaXRoSW5qZWN0
S2V5U3VjY2VzcygpOiIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIjQi
KTsKLQotICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coInN0b3JlLmdldCg0KSIpOwotICAgIHJlc3Vs
dC5vbnN1Y2Nlc3MgPSBnZXRMaW5jb2xuQWZ0ZXJJbmplY3RlZEtleVN1Y2Nlc3M7Ci0gICAgcmVz
dWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZ2V0
TGluY29sbkFmdGVySW5qZWN0ZWRLZXlTdWNjZXNzKCkKLXsKLSAgICBkZWJ1ZygiZ2V0TGluY29s
bkFmdGVySW5qZWN0ZWRLZXlTdWNjZXNzKCk6Iik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJldmVudC50YXJnZXQucmVzdWx0Lm5hbWUiLCAiTGluY29sbiIpOwotICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5udW1iZXIiLCAiNzAxMiIpOwotICAgIHNo
b3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LmlkIiwgIjQiKTsKLQotICAgIHNlbGYuc3RvcmUg
PSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdTdG9yZVdpdGhBdXRvSW5j
cmVtZW50JykiKTsKLSAgICBkZWJ1ZygiSW5zZXJ0IGludG8gb2JqZWN0IHN0b3JlIHdpdGgga2V5
IGdlbiB1c2luZyBleHBsaWNpdCBrZXkiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3Rv
cmUuYWRkKHtuYW1lOiAnTGluY29sbicsIG51bWJlcjogJzcwMTInfSwgNSkiKTsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGFkZExpbmNvbG5XaXRoRXhwbGljaXRLZXlTdWNjZXNzOwotICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBh
ZGRMaW5jb2xuV2l0aEV4cGxpY2l0S2V5U3VjY2VzcygpCi17Ci0gICAgZGVidWcoImFkZExpbmNv
bG5XaXRoRXhwbGljaXRLZXlTdWNjZXNzKCk6Iik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdl
dC5yZXN1bHQiLCAiNSIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmdldCg1
KSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0TGluY29sblN1Y2Nlc3M7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGdl
dExpbmNvbG5TdWNjZXNzKCkKLXsKLSAgICBkZWJ1ZygiZ2V0TGluY29sblN1Y2Nlc3MoKToiKTsK
LSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQubmFtZSIsICJM
aW5jb2xuIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0
Lm51bWJlciIsICI3MDEyIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUucHV0
KHtuYW1lOiAnQWJyYWhhbScsIG51bWJlcjogJzIxMDcnfSkiKTsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IHB1dEFicmFoYW1TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBwdXRBYnJhaGFtU3VjY2VzcygpCi17Ci0g
ICAgZGVidWcoInB1dEFicmFoYW1TdWNjZXNzKCk6Iik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRh
cmdldC5yZXN1bHQiLCAiNiIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmdl
dCg2KSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0QWJyYWhhbVN1Y2Nlc3M7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9u
IGdldEFicmFoYW1TdWNjZXNzKCkKLXsKLSAgICBkZWJ1ZygiZ2V0QWJyYWhhbVN1Y2Nlc3MoKToi
KTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQubmFtZSIs
ICJBYnJhaGFtIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVz
dWx0Lm51bWJlciIsICIyMTA3Iik7Ci0KLSAgICBzZWxmLnN0b3JlID0gZXZhbEFuZExvZygic3Rv
cmUgPSB0cmFucy5vYmplY3RTdG9yZSgnUGxhaW5PbGRTdG9yZScpIik7Ci0gICAgZGVidWcoIlRy
eSBhZGRpbmcgd2l0aCBubyBrZXkgdG8gb2JqZWN0IHN0b3JlIHdpdGhvdXQgYXV0byBpbmNyZW1l
bnQuIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuYWRkKHtuYW1lOiAnQWRh
bSd9KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJzdG9yZS5hZGQoe25hbWU6ICdBZGFtJ30sIDEpIik7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBhZGRBZGFtU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYWRkQWRhbVN1Y2Nlc3MoKQotewotICAg
IGRlYnVnKCJhZGRBZGFtU3VjY2VzcygpOiIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQu
cmVzdWx0IiwgIjEiKTsKLX0KLQotZnVuY3Rpb24gdGVzdExvbmdLZXlQYXRoKCkKLXsKLSAgICBk
ZWJ1ZygidGVzdExvbmdLZXlQYXRoKCk6Iik7Ci0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFu
cyA9IGRiLnRyYW5zYWN0aW9uKCdTdG9yZVdpdGhMb25nS2V5UGF0aCcsIElEQlRyYW5zYWN0aW9u
LlJFQURfV1JJVEUpIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxi
YWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBmaW5pc2hKU1Rlc3Q7Ci0KLSAgICBzdG9yZSA9
IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ1N0b3JlV2l0aExvbmdLZXlQ
YXRoJykiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHtmb286ICdiYXIn
fSkiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHtmb286ICdiYXInLCBhOiB7fX0pIik7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7Zm9vOiAnYmFyJywgYToge2I6IHt9fX0pIik7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7Zm9vOiAnYmFyJywgYToge2I6IHtjOiB7fX19
fSkiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAg
ICBjdXJzb3JSZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUub3BlbkN1cnNvcigpIik7Ci0gICAg
Y3Vyc29yUmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgZXZh
bEFuZExvZygiZXhwZWN0ZWQgPSBudWxsIik7Ci0gICAgZXZhbEFuZExvZygiY291bnQgPSAwIik7
Ci0gICAgY3Vyc29yUmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIGN1
cnNvciA9IGN1cnNvclJlcXVlc3QucmVzdWx0OwotICAgICAgICBpZiAoIWN1cnNvcikgewotICAg
ICAgICAgICAgc2hvdWxkQmUoImNvdW50IiwgIjQiKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotICAgICAgICBpZiAoZXhwZWN0ZWQgPT09IG51bGwpIHsKLSAgICAgICAgICAgIGV2
YWxBbmRMb2coImV4cGVjdGVkID0gY3Vyc29yLnZhbHVlLmEuYi5jLmlkICsgMSIpOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5mb28iLCAiJ2Jh
ciciKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuYS5iLmMuaWQiLCAiZXhw
ZWN0ZWQiKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImV4cGVjdGVkID0gY3Vyc29yLnZhbHVl
LmEuYi5jLmlkICsgMSIpOwotICAgICAgICB9Ci0gICAgICAgIGNvdW50Kys7Ci0gICAgICAgIGN1
cnNvci5jb250aW51ZSgpOwotICAgIH07Ci19Ci0KLQotdGVzdCgpOwotCi0KLTwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9vYmplY3RzdG9yZS1hdXRvaW5jcmVtZW50LmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLmh0bWwgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MuaHRtbAppbmRleCA0YWI0NDFlZDBi
ZjUyMzI5MjcwZTI5ZmNlYzFmMDU2MWEzMWI2YWI5Li5jY2MxZWFhN2RjMTBmM2RjMzMxZTY2YWRm
ZWM3Mzc5OTQwYjcxNGI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9vYmplY3RzdG9yZS1iYXNpY3MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MuaHRtbApAQCAtNCw4ICs0LDYgQEAKIDxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHAgaWQ9
ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KIDxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvb2JqZWN0c3RvcmUtYmFzaWNzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3Jj
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9i
b2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3Rv
cmUtY2xlYXIuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3Jl
LWNsZWFyLmh0bWwKaW5kZXggYzc4YzVkMjc1ODQ4ZjgwZjQ0Mzc2OGM2MzlmZjkzYWNlNjBiNmU4
Zi4uNjg4YTM1OGMzZDlhNTMxYWJmY2EwYzZhYzg0NjA5NGY2MmQ0MTQ1ZCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY2xlYXIuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jbGVhci5odG1sCkBA
IC00LDEwNSArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3Jp
cHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIn
cyB3ZWJraXRJREJPYmplY3RTdG9yZS5jbGVhcigpLiIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsK
LSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIub3Blbignb2JqZWN0c3RvcmUtY2xlYXInKSIpOwotICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gc3RhcnRTZXRWZXJzaW9uOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzdGFydFNldFZlcnNpb24oKQotewotICAgIGRi
ID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKLXsK
LSAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwotCi0gICAgZGVsZXRlQWxs
T2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5j
cmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKLQotICAgIHNlbGYuaW5kZXgg
PSBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhOYW1lJywgJycpIik7Ci0gICAg
c2hvdWxkQmVUcnVlKCJzdG9yZS5pbmRleE5hbWVzLmNvbnRhaW5zKCdpbmRleE5hbWUnKSIpOwot
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCgndmFsdWUnLCAna2V5JykiKTsK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZVNlY29uZE9iamVjdFN0b3JlQW5kQWRkVmFs
dWU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0K
LWZ1bmN0aW9uIGNyZWF0ZVNlY29uZE9iamVjdFN0b3JlQW5kQWRkVmFsdWUoKQotewotICAgIG90
aGVyU3RvcmUgPSBldmFsQW5kTG9nKCJvdGhlclN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUo
J290aGVyU3RvcmVOYW1lJywgbnVsbCkiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJv
dGhlclN0b3JlLmFkZCgndmFsdWUnLCAna2V5JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGNsZWFyT2JqZWN0U3RvcmU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFyT2JqZWN0U3RvcmUoKQotewotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJzdG9yZS5jbGVhcigpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBjbGVhclN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFyU3VjY2VzcygpCi17Ci0gICAgc2hvdWxkQmVVbmRl
ZmluZWQoImV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJzdG9yZS5vcGVuQ3Vyc29yKCkiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5DdXJz
b3JTdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotfQotCi1mdW5jdGlvbiBvcGVuQ3Vyc29yU3VjY2VzcygpCi17Ci0gICAgc2hvdWxkQmVOdWxs
KCJldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4
ID0gc3RvcmUuaW5kZXgoJ2luZGV4TmFtZScpIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImluZGV4Lm9wZW5LZXlDdXJzb3IoKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3Blbktl
eUN1cnNvclN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5LZXlDdXJzb3JTdWNjZXNzKCkKLXsKLSAgICBkZWJ1
Zygib3BlbktleUN1cnNvclN1Y2Nlc3MoKToiKTsKLSAgICBzaG91bGRCZU51bGwoImV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKLQotICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygiZGIudHJhbnNh
Y3Rpb24oWydvdGhlclN0b3JlTmFtZSddKSIpOwotICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB2YXIgb3RoZXJTdG9yZSA9IGV2YWxBbmRMb2co
Im90aGVyU3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnb3RoZXJTdG9yZU5hbWUnKSIp
OwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIm90aGVyU3RvcmUuZ2V0KCdrZXknKSIpOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0U3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZ2V0U3VjY2VzcygpCi17
Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0IiwgInZhbHVl
Iik7Ci0KLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvb2JqZWN0c3RvcmUtY2xlYXIuanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9vYmplY3RzdG9yZS1jb3VudC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvb2JqZWN0c3RvcmUtY291bnQuaHRtbAppbmRleCA3YWU5MWMyYjA4MGU2MDFlMTdhZDlm
YmZiMmYxOWQxN2MzYmY5YWJhLi5kYTQyM2ZlNGI2N2Q4NWEzMTlkMTllM2Q0Nzg3OTk1YTA4NzY1
Yjk0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9y
ZS1jb3VudC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0
b3JlLWNvdW50Lmh0bWwKQEAgLTQsMTUxICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
c2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9u
Ij48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9u
KCJUZXN0IEluZGV4ZWREQidzIElEQk9iamVjdFN0b3JlLmNvdW50KCkuIik7Ci0KLWZ1bmN0aW9u
IHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdvYmplY3RzdG9yZS1jb3VudCcpIik7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKLSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZl
cnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcHJlcGFyZURh
dGFiYXNlOwotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIHByZXBhcmVEYXRhYmFzZSgpCi17Ci0gICAg
ZGVidWcoIiIpOwotICAgIGRlYnVnKCJwcmVwYXJpbmcgZGF0YWJhc2UiKTsKLSAgICBzZWxmLnRy
YW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hv
dWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVz
KGRiKTsKLQotICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RT
dG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKLQotICAgIGRlYnVnKCJhZGRpbmcgMCAuLi4gOTki
KTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKSB7Ci0gICAgICAgIHJlcXVlc3Qg
PSBzdG9yZS5hZGQoaSwgaSk7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotICAgIH0KLSAgICB0cmFucy5vbmNvbXBsZXRlID0gdmVyaWZ5Q291bnQ7
Ci19Ci0KLWZ1bmN0aW9uIHZlcmlmeUNvdW50KCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVi
dWcoInZlcmlmeWluZyBjb3VudCB3aXRob3V0IHJhbmdlIik7Ci0gICAgdHJhbnMgPSBldmFsQW5k
TG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZU5hbWUnLCBJREJUcmFuc2FjdGlvbi5S
RUFEX09OTFkpIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPSBudWxsIik7Ci0gICAgdHJh
bnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxl
dGUgPSB2ZXJpZnlDb3VudFdpdGhSYW5nZTsKLQotICAgIHN0b3JlID0gZXZhbEFuZExvZygic3Rv
cmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLSAgICBzaG91bGRCZVRydWUo
InN0b3JlICE9IG51bGwiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
c3RvcmUuY291bnQoKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICBz
aG91bGRCZVRydWUoInR5cGVvZiByZXF1ZXN0LnJlc3VsdCA9PSAnbnVtYmVyJyIpOwotICAgICAg
ICAgc2hvdWxkQmUoInJlcXVlc3QucmVzdWx0IiwgIjEwMCIpOwotICAgICAgICAgLy8gbGV0IHRo
ZSB0cmFuc2FjdGlvbiBjb21wbGV0ZQotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIHZlcmlmeUNvdW50
V2l0aFJhbmdlKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInZlcmlmeWluZyBjb3Vu
dCB3aXRoIHJhbmdlIik7Ci0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5z
YWN0aW9uKCdzdG9yZU5hbWUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7Ci0gICAgc2hv
dWxkQmVUcnVlKCJ0cmFucyAhPSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0
ZWRBYm9ydENhbGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSB2ZXJpZnlDb3VudFdpdGhL
ZXk7Ci0KLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUo
J3N0b3JlTmFtZScpIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJzdG9yZSAhPSBudWxsIik7Ci0KLSAg
ICB2YXIgdGVzdHMgPSBbCi0gICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogZmFsc2UsIHVw
cGVyOiA5OSwgdXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDEwMCB9LAotICAgICAgICB7IGxv
d2VyOiAwLCBsb3dlck9wZW46IHRydWUsIHVwcGVyOiA5OSwgdXBwZXJPcGVuOiBmYWxzZSwgZXhw
ZWN0ZWQ6IDk5IH0sCi0gICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVy
OiA5OSwgdXBwZXJPcGVuOiB0cnVlLCBleHBlY3RlZDogOTkgfSwKLSAgICAgICAgeyBsb3dlcjog
MCwgbG93ZXJPcGVuOiB0cnVlLCB1cHBlcjogOTksIHVwcGVyT3BlbjogdHJ1ZSwgZXhwZWN0ZWQ6
IDk4IH0sCi0gICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiAxMDAs
IHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiAxMDAgfSwKLSAgICAgICAgeyBsb3dlcjogMCwg
bG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDEwMCwgdXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6
IDEwMCB9LAotICAgICAgICB7IGxvd2VyOiAxMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDEw
MCwgdXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDkwIH0sCi0gICAgICAgIHsgbG93ZXI6IDAs
IGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiAwLCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDog
MSB9LAotICAgICAgICB7IGxvd2VyOiA1MDAsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiA1MDAs
IHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiAwIH0KLSAgICBdOwotCi0gICAgZnVuY3Rpb24g
bmV4dFRlc3QoKSB7Ci0gICAgICAgIGRlYnVnKCIiKTsKLSAgICAgICAgZXZhbEFuZExvZygidGVz
dCA9ICIgKyBKU09OLnN0cmluZ2lmeSh0ZXN0cy5zaGlmdCgpKSk7Ci0gICAgICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gc3RvcmUuY291bnQoSURCS2V5UmFuZ2UuYm91bmQodGVz
dC5sb3dlciwgdGVzdC51cHBlciwgdGVzdC5sb3dlck9wZW4sIHRlc3QudXBwZXJPcGVuKSkiKTsK
LSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAg
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgc2hvdWxk
QmVUcnVlKCJ0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251bWJlciciKTsKLSAgICAgICAgICAg
ICBzaG91bGRCZSgicmVxdWVzdC5yZXN1bHQiLCBTdHJpbmcodGVzdC5leHBlY3RlZCkpOwotCi0g
ICAgICAgICAgICAgaWYgKHRlc3RzLmxlbmd0aCkgewotICAgICAgICAgICAgICAgICBuZXh0VGVz
dCgpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAvLyBvdGhlcndpc2UgbGV0IHRoZSB0
cmFuc2FjdGlvbiBjb21wbGV0ZQotICAgICAgICB9OwotICAgIH0KLQotICAgIG5leHRUZXN0KCk7
Ci19Ci0KLWZ1bmN0aW9uIHZlcmlmeUNvdW50V2l0aEtleSgpCi17Ci0gICAgZGVidWcoIiIpOwot
ICAgIGRlYnVnKCJ2ZXJpZnlpbmcgY291bnQgd2l0aCBrZXkiKTsKLSAgICB0cmFucyA9IGV2YWxB
bmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlTmFtZScsIElEQlRyYW5zYWN0aW9u
LlJFQURfT05MWSkiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9IG51bGwiKTsKLSAgICB0
cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21w
bGV0ZSA9IGZpbmlzaEpTVGVzdDsKLQotICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0
cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLSAgICBzaG91bGRCZVRydWUoInN0b3Jl
ICE9IG51bGwiKTsKLQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmNvdW50KE5h
TikiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLSAgICBldmFsQW5kRXhwZWN0
RXhjZXB0aW9uKCJzdG9yZS5jb3VudCh7fSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9F
UlIiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5jb3VudCgvcmVnZXgvKSIs
ICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotCi0gICAgdmFyIHRlc3RzID0gWwot
ICAgICAgICB7IGtleTogMCwgZXhwZWN0ZWQ6IDEgfSwKLSAgICAgICAgeyBrZXk6IDEwMCwgZXhw
ZWN0ZWQ6IDAgfSwKLSAgICAgICAgeyBrZXk6IG51bGwsIGV4cGVjdGVkOiAxMDAgfQotICAgIF07
Ci0KLSAgICBmdW5jdGlvbiBuZXh0VGVzdCgpIHsKLSAgICAgICAgZGVidWcoIiIpOwotICAgICAg
ICBldmFsQW5kTG9nKCJ0ZXN0ID0gIiArIEpTT04uc3RyaW5naWZ5KHRlc3RzLnNoaWZ0KCkpKTsK
LSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdG9yZS5jb3VudCh0ZXN0
LmtleSkiKTsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg
ICBzaG91bGRCZVRydWUoInR5cGVvZiByZXF1ZXN0LnJlc3VsdCA9PSAnbnVtYmVyJyIpOwotICAg
ICAgICAgICAgc2hvdWxkQmUoInJlcXVlc3QucmVzdWx0IiwgU3RyaW5nKHRlc3QuZXhwZWN0ZWQp
KTsKLSAgICAgICAgICAgICBpZiAodGVzdHMubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgIG5l
eHRUZXN0KCk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICAgIC8vIG90aGVyd2lzZSBsZXQg
dGhlIHRyYW5zYWN0aW9uIGNvbXBsZXRlCi0gICAgICAgIH07Ci0gICAgfQotCi0gICAgbmV4dFRl
c3QoKTsKLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
b2JqZWN0c3RvcmUtY291bnQuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1j
dXJzb3IuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWN1
cnNvci5odG1sCmluZGV4IGFjN2Q3ZDY4OWYzZDY0YTkzZmI2ZjExYjRiYmM4NDQ5MTlkYmY3ZGYu
LjU5NDA3YzRhMWE1YTgwMzFmYjFjNTliNzI2MzdkNmU5MjVjNmY0NDAgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWN1cnNvci5odG1sCisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWN1cnNvci5odG1sCkBA
IC00LDIzMyArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3Jp
cHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Ci08c2NyaXB0PiAKLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERC
J3Mgb2JqZWN0U3RvcmUub3BlbkN1cnNvciArIHRoZSBjdXJzb3IgaXQgcHJvZHVjZXMgaW4gZGVw
dGguIik7Ci0gCi0vLyBJbiBvcmRlciBvZiBob3cgaXQgc2hvdWxkIGJlIHNvcnRlZCBieSBJbmRl
eGVkREIuCi1zZWxmLnRlc3REYXRhID0gWwotICAgIDIuNzE4MjgxODI4NDU5LAotICAgIDMsCi0g
ICAgMy4xNDE1OTI2NSwKLSAgICAxMCwKLSAgICAvLyBGSVhNRTogRGF0ZXMuCi0gICAgIkEgYmln
Z2VyIHN0cmluZyIsCi0gICAgIlRoZSBiaWdnZXN0IiwKLSAgICAiYSBsb3cgc3RyaW5nIgotXTsK
LSAKLWZ1bmN0aW9uIG9wZW5EYXRhYmFzZSgpCi17Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImluZGV4ZWREQi5vcGVuKCdvYmplY3RzdG9yZS1jdXJzb3InKSIpOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gc2V0VmVyc2lvbjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLX0KLSAKLWZ1bmN0aW9uIHNldFZlcnNpb24oKQotewotICAgIHNlbGYuZGIg
PSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZGVsZXRlRXhpc3RpbmcoKQotewot
ICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9y
dCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVz
KGRiKTsKLQotICAgIHNlbGYub2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnc29tZU9iamVjdFN0b3JlJykiKTsKLSAgICBzZWxmLm5leHRUb0FkZCA9IDA7Ci0g
ICAgYWRkRGF0YSgpOwotfQotCi1mdW5jdGlvbiBhZGREYXRhKCkKLXsKLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCcnLCB0ZXN0RGF0YVtuZXh0VG9BZGRdKSIpOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gKytzZWxmLm5leHRUb0FkZCA8IHRlc3REYXRhLmxlbmd0
aCA/IGFkZERhdGEgOiBzY2hlZHVsZVRlc3RzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzY2hlZHVsZVRlc3RzKCkKLXsKLSAg
ICBkZWJ1ZygiU2NoZWR1bGluZyB0ZXN0cy4uLiIpOwotICAgIHNlbGYuc2NoZWR1bGVkVGVzdHMg
PSBbXTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRlc3REYXRhLmxlbmd0aDsgKytpKSB7Ci0g
ICAgICAgIC8qIGxlZnQgYm91bmQsIGlzIG9wZW4sIHJpZ2h0IGJvdW5kLCBpcyBvcGVuLCBhc2Nl
bmRpbmcgKi8KLSAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwgbnVsbCwg
bnVsbCwgdHJ1ZV0pOwotICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCBmYWxzZSwg
bnVsbCwgbnVsbCwgdHJ1ZV0pOwotICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtudWxs
LCBudWxsLCBpLCB0cnVlLCB0cnVlXSk7Ci0gICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQo
W251bGwsIG51bGwsIGksIGZhbHNlLCB0cnVlXSk7Ci0gICAgICAgIHNjaGVkdWxlZFRlc3RzLnVu
c2hpZnQoW2ksIHRydWUsIG51bGwsIG51bGwsIGZhbHNlXSk7Ci0gICAgICAgIHNjaGVkdWxlZFRl
c3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBudWxsLCBudWxsLCBmYWxzZV0pOwotICAgICAgICBzY2hl
ZHVsZWRUZXN0cy51bnNoaWZ0KFtudWxsLCBudWxsLCBpLCB0cnVlLCBmYWxzZV0pOwotICAgICAg
ICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtudWxsLCBudWxsLCBpLCBmYWxzZSwgZmFsc2VdKTsK
LSAgICAgICAgZm9yICh2YXIgaiA9IDY7IGogPCB0ZXN0RGF0YS5sZW5ndGg7ICsraikgewotICAg
ICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwgaiwgdHJ1ZSwgdHJ1ZV0p
OwotICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwgaiwgZmFsc2Us
IHRydWVdKTsKLSAgICAgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBq
LCB0cnVlLCB0cnVlXSk7Ci0gICAgICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCBm
YWxzZSwgaiwgZmFsc2UsIHRydWVdKTsKLSAgICAgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hp
ZnQoW2ksIHRydWUsIGosIHRydWUsIGZhbHNlXSk7Ci0gICAgICAgICAgICBzY2hlZHVsZWRUZXN0
cy51bnNoaWZ0KFtpLCB0cnVlLCBqLCBmYWxzZSwgZmFsc2VdKTsKLSAgICAgICAgICAgIHNjaGVk
dWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBqLCB0cnVlLCBmYWxzZV0pOwotICAgICAgICAg
ICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgZmFsc2UsIGosIGZhbHNlLCBmYWxzZV0pOwot
ICAgICAgICB9Ci0gICAgfQotIAotICAgIGRlYnVnKCJSdW5uaW5nIHRlc3RzLi4uIik7Ci0gICAg
cnVuTmV4dFRlc3QoKTsKLX0KLSAKLWZ1bmN0aW9uIHJ1bk5leHRUZXN0KCkKLXsKLSAgICBpZiAo
IXNjaGVkdWxlZFRlc3RzLmxlbmd0aCkgewotICAgICAgICB0ZXN0TnVsbEtleVJhbmdlKCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gCi0gICAgdmFyIHRlc3QgPSBzY2hlZHVsZWRUZXN0cy5w
b3AoKTsKLSAgICBzZWxmLmxvd2VyID0gdGVzdFswXTsKLSAgICBzZWxmLmxvd2VySXNPcGVuID0g
dGVzdFsxXTsKLSAgICBzZWxmLnVwcGVyID0gdGVzdFsyXTsKLSAgICBzZWxmLnVwcGVySXNPcGVu
ID0gdGVzdFszXTsKLSAgICBzZWxmLmFzY2VuZGluZyA9IHRlc3RbNF07Ci0KLSAgICBzdHIgPSAi
TmV4dCB0ZXN0OiAiOwotICAgIGlmIChsb3dlciAhPT0gbnVsbCkgewotICAgICAgICBzdHIgKz0g
Imxvd2VyICI7Ci0gICAgICAgIGlmIChsb3dlcklzT3BlbikKLSAgICAgICAgICAgIHN0ciArPSAi
b3BlbiAiOwotICAgICAgICBzdHIgKz0gImJvdW5kIGlzICIgKyBsb3dlciArICI7ICI7Ci0gICAg
fQotICAgIGlmICh1cHBlciAhPT0gbnVsbCkgewotICAgICAgICBzdHIgKz0gInVwcGVyICI7Ci0g
ICAgICAgIGlmICh1cHBlcklzT3BlbikKLSAgICAgICAgICAgIHN0ciArPSAib3BlbiAiOwotICAg
ICAgICBzdHIgKz0gImJvdW5kIGlzICIgKyB1cHBlciArICI7ICI7Ci0gICAgfQotICAgIGlmIChh
c2NlbmRpbmcpCi0gICAgICAgIHN0ciArPSAic29ydGVkIGFzY2VuZGluZy4iOwotICAgIGVsc2UK
LSAgICAgICAgc3RyICs9ICJzb3J0ZWQgZGVzY2VuZGluZy4iOwotCi0gICAgZGVidWcoIiIpOwot
ICAgIGRlYnVnKHN0cik7Ci0gCi0gICAgaWYgKGFzY2VuZGluZykgewotICAgICAgICBpZiAobG93
ZXIgIT09IG51bGwpIHsKLSAgICAgICAgICAgIGlmICghbG93ZXJJc09wZW4pCi0gICAgICAgICAg
ICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gbG93ZXI7Ci0gICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gbG93ZXIrMTsKLSAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSAwOwotICAgIH0gZWxzZSB7Ci0gICAg
ICAgIGlmICh1cHBlciAhPT0gbnVsbCkgewotICAgICAgICAgICAgaWYgKCF1cHBlcklzT3BlbikK
LSAgICAgICAgICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSB1cHBlcjsKLSAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSB1cHBlci0xOwotICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IHRlc3REYXRhLmxl
bmd0aC0xOwotICAgIH0KLSAgICB0ZXN0V2l0aGluQm91bmRzKCk7Ci0gCi0gICAgaWYgKHRlc3RE
YXRhW2xvd2VyXSA9PT0gdGVzdERhdGFbdXBwZXJdICYmIChsb3dlcklzT3BlbiB8fCB1cHBlcklz
T3BlbikpIHsKLSAgICAgICAgZGVidWcoIlNraXBwaW5nIGlsbGVnYWwga2V5IHJhbmdlLiIpOwot
ICAgICAgICBydW5OZXh0VGVzdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdmFy
IGtleVJhbmdlOwotICAgIGlmIChsb3dlciAhPT0gbnVsbCAmJiB1cHBlciAhPT0gbnVsbCkKLSAg
ICAgICAga2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5ib3VuZCh0ZXN0RGF0YVtsb3dlcl0sIHRlc3RE
YXRhW3VwcGVyXSwgbG93ZXJJc09wZW4sIHVwcGVySXNPcGVuKTsKLSAgICBlbHNlIGlmIChsb3dl
ciAhPT0gbnVsbCkKLSAgICAgICAga2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKHRl
c3REYXRhW2xvd2VyXSwgbG93ZXJJc09wZW4pOwotICAgIGVsc2UKLSAgICAgICAga2V5UmFuZ2Ug
PSBJREJLZXlSYW5nZS51cHBlckJvdW5kKHRlc3REYXRhW3VwcGVyXSwgdXBwZXJJc09wZW4pOwot
IAotICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcihrZXlSYW5nZSwgYXNj
ZW5kaW5nID8gSURCQ3Vyc29yLk5FWFQgOiBJREJDdXJzb3IuUFJFVik7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBjdXJzb3JJdGVyYXRpb247Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RXaXRoaW5Cb3VuZHMoKQotewot
ICAgIGlmIChleHBlY3RlZEluZGV4IDwgMCB8fCB0ZXN0RGF0YS5sZW5ndGggPD0gZXhwZWN0ZWRJ
bmRleCkKLSAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gbnVsbDsKLSAgICBpZiAobG93ZXIg
IT09IG51bGwgJiYgZXhwZWN0ZWRJbmRleCA8IGxvd2VyKQotICAgICAgICBzZWxmLmV4cGVjdGVk
SW5kZXggPSBudWxsOwotICAgIGlmICh1cHBlciAhPT0gbnVsbCAmJiB1cHBlciA8IGV4cGVjdGVk
SW5kZXgpCi0gICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IG51bGw7Ci0gICAgaWYgKGxvd2Vy
ICE9PSBudWxsICYmIGxvd2VySXNPcGVuICYmIGV4cGVjdGVkSW5kZXggPD0gbG93ZXIpCi0gICAg
ICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IG51bGw7Ci0gICAgaWYgKHVwcGVyICE9PSBudWxsICYm
IHVwcGVySXNPcGVuICYmIHVwcGVyIDw9IGV4cGVjdGVkSW5kZXgpCi0gICAgICAgIHNlbGYuZXhw
ZWN0ZWRJbmRleCA9IG51bGw7Ci19Ci0gCi1mdW5jdGlvbiBjdXJzb3JJdGVyYXRpb24oKQotewot
ICAgIGlmIChleHBlY3RlZEluZGV4ID09PSBudWxsKSB7Ci0gICAgICAgIHNob3VsZEJlTnVsbCgi
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgICAgICBydW5OZXh0VGVzdCgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsKSB7Ci0g
ICAgICAgIHRlc3RGYWlsZWQoImV2ZW50LnRhcmdldC5yZXN1bHQgc2hvdWxkIG5vdCBiZSBudWxs
LiIpOwotICAgICAgICBydW5OZXh0VGVzdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotIAot
ICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICJ0ZXN0RGF0YVsiICsgZXhw
ZWN0ZWRJbmRleCArICJdIik7Ci0gICAgc2VsZi5leHBlY3RlZEluZGV4ID0gYXNjZW5kaW5nID8g
ZXhwZWN0ZWRJbmRleCsxIDogZXhwZWN0ZWRJbmRleC0xOwotICAgIHRlc3RXaXRoaW5Cb3VuZHMo
KTsKLQotICAgIGV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKTsKLX0KLSAKLXNlbGYubnVs
bEtleVJhbmdlU3RlcCA9IDA7Ci1mdW5jdGlvbiB0ZXN0TnVsbEtleVJhbmdlKCkKLXsKLSAgICBz
ZWxmLmxvd2VyID0gMDsKLSAgICBzZWxmLmxvd2VySXNPcGVuID0gZmFsc2U7Ci0gICAgc2VsZi51
cHBlciA9IHRlc3REYXRhLmxlbmd0aC0xOwotICAgIHNlbGYudXBwZXJJc09wZW4gPSBmYWxzZTsK
LQotICAgIHN0ciA9ICJOZXh0IHRlc3Q6IG51bGwga2V5IHBhdGggIjsKLSAgICBpZiAoc2VsZi5u
dWxsS2V5UmFuZ2VTdGVwID09IDApIHsKLSAgICAgICAgc3RyICs9ICJzb3J0ZWQgYXNjZW5kaW5n
LiI7Ci0gICAgICAgIHNlbGYuYXNjZW5kaW5nID0gdHJ1ZTsKLSAgICAgICAgc2VsZi5leHBlY3Rl
ZEluZGV4ID0gbG93ZXI7Ci0gICAgICAgIHNlbGYubnVsbEtleVJhbmdlU3RlcCA9IDE7Ci0gICAg
fSBlbHNlIGlmIChzZWxmLm51bGxLZXlSYW5nZVN0ZXAgPT0gMSkgewotICAgICAgICBzdHIgKz0g
InNvcnRlZCBkZXNjZW5kaW5nLiI7Ci0gICAgICAgIHNlbGYuYXNjZW5kaW5nID0gZmFsc2U7Ci0g
ICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IHVwcGVyOwotICAgICAgICBzZWxmLm51bGxLZXlS
YW5nZVN0ZXAgPSAyOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKHN0cik7Ci0g
Ci0gICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKG51bGwsIGFzY2VuZGlu
ZyA/IElEQkN1cnNvci5ORVhUIDogSURCQ3Vyc29yLlBSRVYpOwotICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gY3Vyc29ySXRlcmF0aW9uOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotfQotIAotcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLW9wZW5EYXRhYmFz
ZSgpOyAvLyBUaGUgZmlyc3Qgc3RlcC4KLSAKLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy9vYmplY3RzdG9yZS1jdXJzb3IuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3Rz
dG9yZS1yZW1vdmVvYmplY3RzdG9yZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvb2JqZWN0c3RvcmUtcmVtb3Zlb2JqZWN0c3RvcmUuaHRtbAppbmRleCA3NDhlY2Q0OTFmODE0
YTJkNjhkZjE4Y2VjY2ViMzIzN2ZiNmJhOGQ1Li40NzMxMTE0MDBiMDhmMGJlMzlhNWRkMzJmMmIy
ODMzYTI5MzRmZjAxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9v
YmplY3RzdG9yZS1yZW1vdmVvYmplY3RzdG9yZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLXJlbW92ZW9iamVjdHN0b3JlLmh0bWwKQEAgLTQsMTA0
ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwv
aGVhZD4KIDxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIHdlYmtp
dElEQk9iamVjdFN0b3JlLmRlbGV0ZU9iamVjdFN0b3JlKCkuIik7Ci0KLWZ1bmN0aW9uIHRlc3Qo
KQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImluZGV4ZWREQi5vcGVuKCdvYmplY3RzdG9yZS1yZW1vdmVvYmplY3RzdG9yZScpIik7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzdGFydFNldFZlcnNpb247Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHN0YXJ0U2V0VmVy
c2lvbigpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lv
bicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZGVs
ZXRlRXhpc3RpbmcoKQotewotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7
Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgc3RvcmUgPSBldmFsQW5k
TG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOwot
Ci0gICAgc2VsZi5pbmRleCA9IGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleE5h
bWUnLCAnJykiKTsKLSAgICBzaG91bGRCZVRydWUoInN0b3JlLmluZGV4TmFtZXMuY29udGFpbnMo
J2luZGV4TmFtZScpIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKCd2
YWx1ZScsICdrZXknKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0VmFsdWU7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9u
IGdldFZhbHVlKCkKLXsKLSAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coImRiLnRyYW5zYWN0
aW9uKFsnc3RvcmVOYW1lJ10pIik7Ci0gICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotICAgIHZhciBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJh
bnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygic3RvcmUuZ2V0KCdrZXknKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRk
SW5kZXg7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19
Ci0KLWZ1bmN0aW9uIGFkZEluZGV4KCkKLXsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2
ZW50LnRhcmdldC5yZXN1bHQiLCAidmFsdWUiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBkZWxldGVPYmplY3RTdG9yZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZGVsZXRlT2JqZWN0U3RvcmUoKQotewotICAgIHNl
bGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAg
ICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVu
ZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotCi0gICAgZXZhbEFuZExvZygiZGIuZGVsZXRlT2JqZWN0
U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0gICAgY3JlYXRlT2JqZWN0U3RvcmVBZ2FpbigpOwotfQot
Ci1mdW5jdGlvbiBjcmVhdGVPYmplY3RTdG9yZUFnYWluKCkKLXsKLSAgICBldmFsQW5kTG9nKCJk
Yi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKLSAgICBnZXRWYWx1ZUFn
YWluKCk7Ci19Ci0KLWZ1bmN0aW9uIGdldFZhbHVlQWdhaW4oKQotewotICAgIHRyYW5zYWN0aW9u
ID0gZXZhbEFuZExvZygiZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSkiKTsKLSAgICB0cmFu
c2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgdmFyIHN0b3Jl
ID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1l
JykiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5nZXQoJ2tleScpIik7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB2ZXJpZnlOb3RGb3VuZDsKLSAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gdmVyaWZ5Tm90Rm91
bmQoKQotewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgInVuZGVmaW5lZCIp
OwotICAgIHNob3VsZEJlRmFsc2UoImV2ZW50LnRhcmdldC5zb3VyY2UuaW5kZXhOYW1lcy5jb250
YWlucygnaW5kZXhOYW1lJykiKTsKLQotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi10ZXN0KCk7
Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vYmplY3RzdG9yZS1yZW1vdmVv
YmplY3RzdG9yZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29kZC1zdHJpbmdzLmh0bWwgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vZGQtc3RyaW5ncy5odG1sCmluZGV4IGNlNTU5
ZmFiNTJiMzAxZDJjNTJkMmYyNzQyODY5NTk1MTM1MzFkYjUuLjY1YTM2M2JkMGQ5ZjA5OTQ0OTQy
YjA1OWI3Yjc2MTVlNDBkYTdmYTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL29kZC1zdHJpbmdzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvb2RkLXN0cmluZ3MuaHRtbApAQCAtMSwxMTMgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgog
PGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+
PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRl
eGVkREIgb2RkIHZhbHVlIGRhdGF0eXBlcyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICBy
ZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgdGVzdERhdGEgPSBbeyBkZXNjcmlwdGlvbjog
J251bGwnLCAgICAgICAgICAgICAgIG5hbWU6ICdcdTAwMDAnIH0sCi0gICAgICAgICAgICAgICAg
eyBkZXNjcmlwdGlvbjogJ2ZhaWh1JywgICAgICAgICAgICAgIG5hbWU6ICdcdWQ4MDBcdWRmNDYn
IH0sCi0gICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ3VucGFpcmVkIHN1cnJvZ2F0ZScs
IG5hbWU6ICdcdWQ4MDAnIH0sCi0gICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ2ZmZmUn
LCAgICAgICAgICAgICAgIG5hbWU6ICdcdWZmZmUnIH0sCi0gICAgICAgICAgICAgICAgeyBkZXNj
cmlwdGlvbjogJ2ZmZmYnLCAgICAgICAgICAgICAgIG5hbWU6ICdcdWZmZmYnIH0sCi0gICAgICAg
ICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ2xpbmUgc2VwYXJhdG9yJywgICAgIG5hbWU6ICdcdTIw
MjgnIH0KLSAgICBdOwotICAgIG5leHRUb09wZW4gPSAwOwotICAgIG9wZW5OZXh0RGF0YWJhc2Uo
KTsKLX0KLQotZnVuY3Rpb24gb3Blbk5leHREYXRhYmFzZSgpCi17Ci0gICAgZGVidWcoIm9wZW5p
bmcgYSBkYXRhYmFzZSBuYW1lZCAiICsgdGVzdERhdGFbbmV4dFRvT3Blbl0uZGVzY3JpcHRpb24p
OwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbih0ZXN0RGF0YVtuZXh0
VG9PcGVuXS5uYW1lLCB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5kZXNjcmlwdGlvbikiKTsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0g
ICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gYWRkQUtleTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYWRkQUtleSgpCi17Ci0gICAgZGVsZXRl
QWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2Jq
ZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSh0ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1l
KTsiKTsKLSAgICBrZXkgPSBldmFsQW5kTG9nKCJrZXkgPSB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5u
YW1lIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5h
ZGQoa2V5LCBrZXkpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xvc2VEYXRhYmFzZTsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVu
Y3Rpb24gY2xvc2VEYXRhYmFzZSgpCi17Ci0gICAgZXZhbEFuZExvZygiZGIuY2xvc2UoKSIpOwot
ICAgIGRlYnVnKCIiKTsKLSAgICBpZiAoKytuZXh0VG9PcGVuIDwgdGVzdERhdGEubGVuZ3RoKSB7
Ci0gICAgICAgIG9wZW5OZXh0RGF0YWJhc2UoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBuZXh0
VG9PcGVuID0gMDsKLSAgICAgICAgdmVyaWZ5TmV4dERhdGFiYXNlKCk7Ci0gICAgfQotfQotCi1m
dW5jdGlvbiB2ZXJpZnlOZXh0RGF0YWJhc2UoKQotewotICAgIGRlYnVnKCJyZW9wZW5pbmcgYSBk
YXRhYmFzZSBuYW1lZCAiICsgdGVzdERhdGFbbmV4dFRvT3Blbl0uZGVzY3JpcHRpb24pOwotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbih0ZXN0RGF0YVtuZXh0VG9PcGVu
XS5uYW1lLCB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5kZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IG9wZW5TdWNjZXNzMjsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MyKCkKLXsKLSAgICBk
YiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBnZXRBS2V5OwotfQotCi1mdW5jdGlvbiBnZXRBS2V5KCkKLXsKLSAgICB0cmFucyA9IGV2
YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIG9iamVjdFN0b3Jl
ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSh0ZXN0RGF0YVtu
ZXh0VG9PcGVuXS5uYW1lKTsiKTsKLSAgICBrZXkgPSBldmFsQW5kTG9nKCJrZXkgPSB0ZXN0RGF0
YVtuZXh0VG9PcGVuXS5uYW1lIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuQ3Vyc29y
U3VjY2VzczsKLX0KLQotZnVuY3Rpb24gb3BlbkN1cnNvclN1Y2Nlc3MoKQotewotICAgIGN1cnNv
ciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgc2hv
dWxkQmUoImN1cnNvci5rZXkiLCAidGVzdERhdGFbbmV4dFRvT3Blbl0ubmFtZSIpOwotICAgIHNo
b3VsZEJlKCJjdXJzb3IudmFsdWUiLCAidGVzdERhdGFbbmV4dFRvT3Blbl0ubmFtZSIpOwotICAg
IGlmICgrK25leHRUb09wZW4gPCB0ZXN0RGF0YS5sZW5ndGgpIHsKLSAgICAgICAgZGVidWcoIiIp
OwotICAgICAgICB2ZXJpZnlOZXh0RGF0YWJhc2UoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKLSAgICB9Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvb2RkLXN0cmluZ3MuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2Jv
ZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9v
cGVuLWNsb3NlLXZlcnNpb24uaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29w
ZW4tY2xvc2UtdmVyc2lvbi5odG1sCmluZGV4IDUxZjUyYjAyODAyNWQ4ZjJkM2Y1ZmU0ODRiMmU5
YzYwN2NkMjI1YWYuLjI5ZDNhZjNjZTczYWY5NTdiMzM2NTY2OTg1MTQ0ODlkZjFiMjllM2EgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4tY2xvc2UtdmVyc2lv
bi5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4tY2xvc2UtdmVy
c2lvbi5odG1sCkBAIC00LDI5MSArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJl
ZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9w
PgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVz
dCBpbnRlcmxlYXZlZCBvcGVuL2Nsb3NlL3NldFZlcnNpb24gY2FsbHMgaW4gdmFyaW91cyBwZXJt
dXRhdGlvbnMiKTsKLQotZnVuY3Rpb24gQ29ubmVjdGlvbihpZCkgewotICAgIGlkID0gU3RyaW5n
KGlkKTsKLSAgICB2YXIgdGhhdCA9IHRoaXM7Ci0gICAgdGhpcy5vcGVuID0gZnVuY3Rpb24ob3B0
cykgewotICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIub3Bl
biciKSk7Ci0gICAgICAgIHZhciByZXEgPSBpbmRleGVkREIub3BlbihzZWxmLmRibmFtZSk7Ci0g
ICAgICAgIHJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgIHJl
cS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZSkgewotICAgICAgICAgICAgdGhhdC5oYW5kbGUgPSBl
LnRhcmdldC5yZXN1bHQ7Ci0gICAgICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygi
JyIgKyBpZCArICIub3Blbi5vbnN1Y2Nlc3MnIikpOwotICAgICAgICAgICAgdGhhdC5oYW5kbGUu
b252ZXJzaW9uY2hhbmdlID0gZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgIHNlbGYuc3Rl
cHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5vbnZlcnNpb25jaGFuZ2UnIikpOwotICAg
ICAgICAgICAgICAgIGlmIChvcHRzICYmIG9wdHMub252ZXJzaW9uKSB7IG9wdHMub252ZXJzaW9u
LmNhbGwodGhhdCk7IH0KLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBpZiAob3B0cyAmJiBv
cHRzLm9uc3VjY2VzcykgeyBvcHRzLm9uc3VjY2Vzcy5jYWxsKHRoYXQpOyB9Ci0gICAgICAgIH07
Ci0gICAgfTsKLQotICAgIHRoaXMuY2xvc2UgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgc2VsZi5z
dGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLmNsb3NlJyIpKTsKLSAgICAgICAgdGhp
cy5oYW5kbGUuY2xvc2UoKTsKLSAgICB9OwotCi0gICAgdGhpcy5zZXRWZXJzaW9uID0gZnVuY3Rp
b24ob3B0cykgewotICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCAr
ICIuc2V0VmVyc2lvbiciKSk7Ci0gICAgICAgIHZhciByZXEgPSB0aGlzLmhhbmRsZS5zZXRWZXJz
aW9uKFN0cmluZyhzZWxmLnZlcisrKSk7Ci0gICAgICAgIHJlcS5vbmFib3J0ID0gZnVuY3Rpb24g
KGUpIHsKLSAgICAgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsg
Ii5zZXRWZXJzaW9uLm9uYWJvcnQnIikpOwotICAgICAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5v
bmFib3J0KSB7IG9wdHMub25hYm9ydC5jYWxsKHRoYXQpOyB9Ci0gICAgICAgIH07Ci0gICAgICAg
IHJlcS5vbmJsb2NrZWQgPSBmdW5jdGlvbiAoZSkgewotICAgICAgICAgICAgc2VsZi5zdGVwcy5w
dXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLnNldFZlcnNpb24ub25ibG9ja2VkJyIpKTsKLSAg
ICAgICAgICAgIGlmIChvcHRzICYmIG9wdHMub25ibG9ja2VkKSB7IG9wdHMub25ibG9ja2VkLmNh
bGwodGhhdCk7IH0KLSAgICAgICAgfTsKLSAgICAgICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9u
IChlKSB7Ci0gICAgICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCAr
ICIuc2V0VmVyc2lvbi5vbnN1Y2Nlc3MnIikpOwotICAgICAgICAgICAgaWYgKHRoYXQuaGFuZGxl
Lm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoInRlc3Qtc3RvcmUiICsgc2VsZi52ZXIpKSB7Ci0g
ICAgICAgICAgICAgICAgdGhhdC5oYW5kbGUuZGVsZXRlT2JqZWN0U3RvcmUoInRlc3Qtc3RvcmUi
ICsgc2VsZi52ZXIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdmFyIHN0b3JlID0gdGhh
dC5oYW5kbGUuY3JlYXRlT2JqZWN0U3RvcmUoInRlc3Qtc3RvcmUiICsgc2VsZi52ZXIpOwotICAg
ICAgICAgICAgdmFyIGNvdW50ID0gMDsKLSAgICAgICAgICAgIGRvX2FzeW5jX3B1dHMoKTsgLy8g
S2VlcCB0aGlzIHRyYW5zYWN0aW9uIHJ1bm5pbmcgZm9yIGEgd2hpbGUKLSAgICAgICAgICAgIGZ1
bmN0aW9uIGRvX2FzeW5jX3B1dHMoKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHJlcSA9IHN0b3Jl
LnB1dChjb3VudCwgY291bnQpOwotICAgICAgICAgICAgICAgIHJlcS5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgICAgICAgICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0
aW9uIChlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgrK2NvdW50IDwgMTApIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGRvX2FzeW5jX3B1dHMoKTsKLSAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5k
TG9nKCInIiArIGlkICsgIi5zZXRWZXJzaW9uLnRyYW5zYWN0aW9uLWNvbXBsZXRlJyIpKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRzICYmIG9wdHMub25zdWNjZXNzKSB7IG9wdHMu
b25zdWNjZXNzLmNhbGwodGhhdCk7IH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIH07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0gICAgICAgIHJlcS5vbmVycm9y
ID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9n
KCInIiArIGlkICsgIi5zZXRWZXJzaW9uLm9uZXJyb3InIikpOwotICAgICAgICAgICAgaWYgKG9w
dHMgJiYgb3B0cy5vbmVycm9yKSB7IG9wdHMub25lcnJvci5jYWxsKHRoYXQpOyB9Ci0gICAgICAg
IH07Ci0gICAgfTsKLX0KLQotLy8gcnVuIGEgc2VyaWVzIG9mIHN0ZXBzIHRoYXQgdGFrZSBhIGNv
bnRpbnVhdGlvbiBmdW5jdGlvbgotZnVuY3Rpb24gcnVuU3RlcHMoY29tbWFuZHMpIHsKLSAgICBp
ZiAoY29tbWFuZHMubGVuZ3RoKSB7Ci0gICAgICAgIHZhciBjb21tYW5kID0gY29tbWFuZHMuc2hp
ZnQoKTsKLSAgICAgICAgY29tbWFuZChmdW5jdGlvbigpIHsgcnVuU3RlcHMoY29tbWFuZHMpOyB9
KTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4
ZXMoKTsKLSAgICB0ZXN0MSgpOwotfQotCi1mdW5jdGlvbiB0ZXN0MSgpIHsKLSAgICBkZWJ1Zygi
Iik7Ci0gICAgZGVidWcoIlRFU1Q6IHNldFZlcnNpb24gYmxvY2tlZCBvbiBvcGVuIGhhbmRsZXMi
KTsKLSAgICBldmFsQW5kTG9nKCJzZWxmLmRibmFtZSA9ICd0ZXN0MSc7IHNlbGYudmVyID0gMTsg
c2VsZi5zdGVwcyA9IFtdIik7Ci0gICAgdmFyIGgxID0gbmV3IENvbm5lY3Rpb24oImgxIik7Ci0g
ICAgdmFyIGgyID0gbmV3IENvbm5lY3Rpb24oImgyIik7Ci0gICAgcnVuU3RlcHMoW2Z1bmN0aW9u
KGRvTmV4dCkgeyBoMS5vcGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dH0pOyB9LAotICAgICAgICAgZnVu
Y3Rpb24oZG9OZXh0KSB7IGgyLm9wZW4oe29uc3VjY2VzczogZG9OZXh0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvbnZlcnNpb246IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoIiAgICBoMiBjbG9zaW5nLCBidXQgbm90IGlt
bWVkaWF0ZWx5Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBoMi5jbG9zZSgpOyB9LCAwKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfX0pOyB9LAotICAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGgxLnNldFZl
cnNpb24oe29uc3VjY2VzczogZmluaXNoVGVzdH0pOyB9LAotICAgICAgICAgXSk7Ci0gICAgZnVu
Y3Rpb24gZmluaXNoVGVzdCgpIHsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzZWxm
LnN0ZXBzLnRvU3RyaW5nKCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJoMS5v
cGVuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEub3Blbi5vbnN1Y2Nlc3Mi
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5vcGVuIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiaDIub3Blbi5vbnN1Y2Nlc3MiLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiaDIub252ZXJzaW9uY2hhbmdlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiaDEuc2V0VmVyc2lvbi5vbmJsb2NrZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJoMi5jbG9zZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNl
dFZlcnNpb24ub25zdWNjZXNzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEu
c2V0VmVyc2lvbi50cmFuc2FjdGlvbi1jb21wbGV0ZSIKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBdLnRvU3RyaW5nKCkpOwotICAgICAgICB0ZXN0MigpOwotICAgIH0KLX0KLQotZnVu
Y3Rpb24gdGVzdDIoKSB7Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJURVNUOiBzZXRWZXJz
aW9uIG5vdCBibG9ja2VkIGlmIGhhbmRsZSBjbG9zZWQgaW1tZWRpYXRlbHkiKTsKLSAgICBldmFs
QW5kTG9nKCJzZWxmLmRibmFtZSA9ICd0ZXN0Mic7IHNlbGYudmVyID0gMTsgc2VsZi5zdGVwcyA9
IFtdIik7Ci0gICAgdmFyIGgxID0gbmV3IENvbm5lY3Rpb24oImgxIik7Ci0gICAgdmFyIGgyID0g
bmV3IENvbm5lY3Rpb24oImgyIik7Ci0gICAgcnVuU3RlcHMoW2Z1bmN0aW9uKGRvTmV4dCkgeyBo
MS5vcGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dH0pOyB9LAotICAgICAgICAgICAgICBmdW5jdGlvbihk
b05leHQpIHsgaDIub3Blbih7b25zdWNjZXNzOiBkb05leHQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvbnZlcnNpb246IGZ1bmN0aW9uKCkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKCIgICAgaDIgY2xvc2lu
ZyBpbW1lZGlhdGVseSIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGgyLmNsb3NlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9fSk7IH0sCi0gICAgICAgICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBoMS5zZXRWZXJz
aW9uKHtvbnN1Y2Nlc3M6IGRvTmV4dH0pOyB9LAotICAgICAgICAgICAgICBmaW5pc2hUZXN0Ci0g
ICAgICAgICAgICAgIF0pOwotCi0gICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKLSAgICAgICAg
ZGVidWcoIk5PVEU6IFdpbGwgRkFJTCB3aXRoIGV4dHJhIGJvZ3VzIGgxLnNldFZlcnNpb24ub25i
bG9ja2VkIHN0ZXA7IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTEz
MCIpOwotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNlbGYuc3RlcHMudG9TdHJpbmco
KSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImgxLm9wZW4iLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJoMS5vcGVuLm9uc3VjY2VzcyIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImgyLm9wZW4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJoMi5vcGVuLm9uc3VjY2VzcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImgxLnNldFZlcnNpb24iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5vbnZl
cnNpb25jaGFuZ2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5jbG9zZSIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24ub25zdWNjZXNz
IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbi50cmFuc2Fj
dGlvbi1jb21wbGV0ZSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnRvU3RyaW5n
KCkpOwotICAgICAgICB0ZXN0MygpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdDMoKSB7Ci0g
ICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJURVNUOiBvcGVuIGFuZCBzZXRWZXJzaW9uIGJsb2Nr
ZWQgaWYgYSBWRVJTSU9OX0NIQU5HRSB0cmFuc2FjdGlvbiBpcyBydW5uaW5nIC0gY2xvc2Ugd2hl
biBibG9ja2VkIik7Ci0gICAgZXZhbEFuZExvZygic2VsZi5kYm5hbWUgPSAndGVzdDMnOyBzZWxm
LnZlciA9IDE7IHNlbGYuc3RlcHMgPSBbXSIpOwotICAgIHZhciBoMSA9IG5ldyBDb25uZWN0aW9u
KCJoMSIpOwotICAgIHZhciBoMiA9IG5ldyBDb25uZWN0aW9uKCJoMiIpOwotICAgIHZhciBoMyA9
IG5ldyBDb25uZWN0aW9uKCJoMyIpOwotICAgIHJ1blN0ZXBzKFtmdW5jdGlvbihkb05leHQpIHsg
aDEub3Blbih7b25zdWNjZXNzOiBkb05leHR9KTsgfSwKLSAgICAgICAgICAgICAgZnVuY3Rpb24o
ZG9OZXh0KSB7IGgyLm9wZW4oe29uc3VjY2VzczogZG9OZXh0fSk7IH0sCi0gICAgICAgICAgICAg
IGZ1bmN0aW9uKGRvTmV4dCkgeyBoMS5zZXRWZXJzaW9uKCk7IGRvTmV4dCgpOyB9LAotICAgICAg
ICAgICAgICBmdW5jdGlvbihkb05leHQpIHsgaDIuc2V0VmVyc2lvbih7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmJsb2NrZWQ6IGZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRlYnVnKCIgICAgaDIgYmxvY2tlZCBzbyBjbG9zaW5nIik7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaDIuY2xvc2UoKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb05leHQo
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19
KTsgfSwKLSAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7IGgzLm9wZW4oe29uc3VjY2VzczogZmlu
aXNoVGVzdH0pO30KLSAgICAgICAgICAgICAgXSk7Ci0KLSAgICBmdW5jdGlvbiBmaW5pc2hUZXN0
KCkgewotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNlbGYuc3RlcHMudG9TdHJpbmco
KSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImgxLm9wZW4iLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJoMS5vcGVuLm9uc3VjY2VzcyIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImgyLm9wZW4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJoMi5vcGVuLm9uc3VjY2VzcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImgxLnNldFZlcnNpb24iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5zZXRW
ZXJzaW9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIub252ZXJzaW9uY2hh
bmdlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbi5vbmJs
b2NrZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5vbnZlcnNpb25jaGFu
Z2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5zZXRWZXJzaW9uLm9uYmxv
Y2tlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLmNsb3NlIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiaDMub3BlbiIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImgyLnNldFZlcnNpb24ub25lcnJvciIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImgxLnNldFZlcnNpb24ub25zdWNjZXNzIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbi50cmFuc2FjdGlvbi1jb21wbGV0ZSIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImgzLm9wZW4ub25zdWNjZXNzIgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF0udG9TdHJpbmcoKSk7Ci0gICAgICAgIHRlc3Q0KCk7Ci0g
ICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0NCgpIHsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWco
IlRFU1Q6IG9wZW4gYW5kIHNldFZlcnNpb24gYmxvY2tlZCBpZiBhIFZFUlNJT05fQ0hBTkdFIHRy
YW5zYWN0aW9uIGlzIHJ1bm5pbmcgLSBqdXN0IGNsb3NlIik7Ci0gICAgZXZhbEFuZExvZygic2Vs
Zi5kYm5hbWUgPSAndGVzdDQnOyBzZWxmLnZlciA9IDE7IHNlbGYuc3RlcHMgPSBbXSIpOwotICAg
IHZhciBoMSA9IG5ldyBDb25uZWN0aW9uKCJoMSIpOwotICAgIHZhciBoMiA9IG5ldyBDb25uZWN0
aW9uKCJoMiIpOwotICAgIHZhciBoMyA9IG5ldyBDb25uZWN0aW9uKCJoMyIpOwotICAgIHJ1blN0
ZXBzKFtmdW5jdGlvbihkb05leHQpIHsgaDEub3Blbih7b25zdWNjZXNzOiBkb05leHR9KTsgfSwK
LSAgICAgICAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGgyLm9wZW4oe29uc3VjY2VzczogZG9O
ZXh0fSk7IH0sCi0gICAgICAgICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBoMS5zZXRWZXJzaW9u
KCk7IGRvTmV4dCgpOyB9LAotICAgICAgICAgICAgICBmdW5jdGlvbihkb05leHQpIHsgaDMub3Bl
bih7b25zdWNjZXNzOiBmaW5pc2hUZXN0fSk7IGRvTmV4dCgpOyB9LAotICAgICAgICAgICAgICBm
dW5jdGlvbihkb05leHQpIHsgaDIuY2xvc2UoKTsgfSwKLSAgICAgICAgICAgICAgXSk7Ci0KLSAg
ICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgewotICAgICAgICBkZWJ1ZygiTk9URTogV2lsbCBGQUlM
IHdpdGggZXh0cmEgYm9ndXMgaDEuc2V0VmVyc2lvbi5vbmJsb2NrZWQgc3RlcDsgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMTMwIik7Ci0gICAgICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygic2VsZi5zdGVwcy50b1N0cmluZygpIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFsiaDEub3BlbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImgxLm9wZW4ub25zdWNjZXNzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIu
b3BlbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLm9wZW4ub25zdWNjZXNz
IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbiIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImgzLm9wZW4iLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJoMi5jbG9zZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImgxLnNldFZlcnNpb24ub25zdWNjZXNzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiaDEuc2V0VmVyc2lvbi50cmFuc2FjdGlvbi1jb21wbGV0ZSIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImgzLm9wZW4ub25zdWNjZXNzIgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0udG9TdHJpbmcoKSk7Ci0gICAgICAgIHRlc3Q1KCk7Ci0gICAgfQotfQotCi1m
dW5jdGlvbiB0ZXN0NSgpIHsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIlRFU1Q6IG9wZW4g
YmxvY2tlZCBpZiBhIFZFUlNJT05fQ0hBTkdFIHRyYW5zYWN0aW9uIGlzIHJ1bm5pbmciKTsKLSAg
ICBldmFsQW5kTG9nKCJzZWxmLmRibmFtZSA9ICd0ZXN0NSc7IHNlbGYudmVyID0gMTsgc2VsZi5z
dGVwcyA9IFtdIik7Ci0gICAgdmFyIGgxID0gbmV3IENvbm5lY3Rpb24oImgxIik7Ci0gICAgdmFy
IGgyID0gbmV3IENvbm5lY3Rpb24oImgyIik7Ci0KLSAgICBydW5TdGVwcyhbZnVuY3Rpb24oZG9O
ZXh0KSB7IGgxLm9wZW4oe29uc3VjY2VzczogZG9OZXh0fSk7IH0sCi0gICAgICAgICAgICAgIGZ1
bmN0aW9uKGRvTmV4dCkgeyBoMS5zZXRWZXJzaW9uKCk7IGRvTmV4dCgpOyB9LAotICAgICAgICAg
ICAgICBmdW5jdGlvbihkb05leHQpIHsgaDIub3Blbih7b25zdWNjZXNzOiBmaW5pc2hUZXN0fSk7
IH0KLSAgICAgICAgICAgICAgXSk7Ci0KLSAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgewotICAg
ICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNlbGYuc3RlcHMudG9TdHJpbmcoKSIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbImgxLm9wZW4iLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJoMS5vcGVuLm9uc3VjY2VzcyIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImgxLnNldFZlcnNpb24iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJoMi5vcGVuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lv
bi5vbnN1Y2Nlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJz
aW9uLnRyYW5zYWN0aW9uLWNvbXBsZXRlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiaDIub3Blbi5vbnN1Y2Nlc3MiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS50
b1N0cmluZygpKTsKLSAgICAgICAgdGVzdDYoKTsKLSAgICB9Ci19Ci0KLQotZnVuY3Rpb24gdGVz
dDYoKSB7Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJURVNUOiB0d28gc2V0VmVyc2lvbnMg
ZnJvbSB0aGUgc2FtZSBjb25uZWN0aW9uIik7Ci0gICAgZXZhbEFuZExvZygic2VsZi5kYm5hbWUg
PSAndGVzdDYnOyBzZWxmLnZlciA9IDE7IHNlbGYuc3RlcHMgPSBbXSIpOwotICAgIHZhciBoMSA9
IG5ldyBDb25uZWN0aW9uKCJoMSIpOwotCi0gICAgcnVuU3RlcHMoW2Z1bmN0aW9uKGRvTmV4dCkg
eyBoMS5vcGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dH0pOyB9LCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGgxLnNldFZlcnNp
b24oe29uc3VjY2VzczogaGFsZkRvbmV9KTsgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBoMS5zZXRWZXJzaW9uKHtvbnN1Y2Nlc3M6IGhhbGZEb25lfSk7IH0KLSAgICAgICAgICAg
ICAgXSk7Ci0KLSAgICB2YXIgY291bnRlciA9IDA7Ci0gICAgZnVuY3Rpb24gaGFsZkRvbmUoKSB7
Ci0gICAgICAgIGNvdW50ZXIrKzsKLSAgICAgICAgaWYgKGNvdW50ZXIgPCAyKSB7Ci0gICAgICAg
ICAgICBkZWJ1ZygnaGFsZiBkb25lJyk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBm
aW5pc2hUZXN0KCk7Ci0gICAgICAgIH0KLSAgICB9ICAKLQotICAgIGZ1bmN0aW9uIGZpbmlzaFRl
c3QoKSB7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic2VsZi5zdGVwcy50b1N0cmlu
ZygpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiaDEub3BlbiIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImgxLm9wZW4ub25zdWNjZXNzIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbiIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImgxLnNldFZlcnNpb24iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJoMS5zZXRWZXJzaW9uLm9uc3VjY2VzcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImgxLnNldFZlcnNpb24udHJhbnNhY3Rpb24tY29tcGxldGUiLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLm9uc3VjY2VzcyIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24udHJhbnNhY3Rpb24tY29tcGxldGUi
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS50b1N0cmluZygpKTsKLSAgICAgICAg
ZmluaXNoSlNUZXN0KCk7Ci0gICAgfQotfQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9vcGVuLWNsb3NlLXZlcnNpb24uanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9vcGVuLWN1cnNvci5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Bl
bi1jdXJzb3IuaHRtbAppbmRleCBmNGIzOGNjZDdlY2M2Zjg0OTk0Y2RlZTYwZmFkMzY5MTE5Mzk3
OTEwLi5lNGViMTgyYjgwNWQ5MGJlZTk1MGZmYjMyYTlhMzY2NGFkYzlkYjY0IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVuLWN1cnNvci5odG1sCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4tY3Vyc29yLmh0bWwKQEAgLTQsOTIgKzQs
NyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFk
PgogPGJvZHk+Ci08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mgb3BlbkN1cnNv
ci4iKTsKLQotZnVuY3Rpb24gZW1wdHlDdXJzb3JTdWNjZXNzKCkKLXsKLSAgICBkZWJ1ZygiRW1w
dHkgY3Vyc29yIG9wZW5lZCBzdWNjZXNzZnVsbHkuIikKLSAgICAvLyBGSVhNRTogY2hlY2sgdGhh
dCB3ZSBjYW4gaXRlcmF0ZSB0aGUgY3Vyc29yLgotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1m
dW5jdGlvbiBvcGVuRW1wdHlDdXJzb3IoKQotewotICAgIGRlYnVnKCJPcGVuaW5nIGFuIGVtcHR5
IGN1cnNvci4iKTsKLSAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQoIkluZXhp
c3RlbnRLZXkiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUub3BlbkN1
cnNvcihrZXlSYW5nZSkiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGVtcHR5Q3Vyc29yU3Vj
Y2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0K
LQotZnVuY3Rpb24gY3Vyc29yU3VjY2VzcygpCi17Ci0gICAgZGVidWcoIkN1cnNvciBvcGVuZWQg
c3VjY2Vzc2Z1bGx5LiIpCi0gICAgLy8gRklYTUU6IGNoZWNrIHRoYXQgd2UgY2FuIGl0ZXJhdGUg
dGhlIGN1cnNvci4KLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5kaXJlY3Rpb24i
LCAiMCIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICInbXlLZXkn
Iik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUiLCAiJ215VmFsdWUn
Iik7Ci0gICAgZGVidWcoIiIpOwotICAgIHRyeSB7Ci0gICAgICAgIGRlYnVnKCJQYXNzaW5nIGFu
IGludmFsaWQga2V5IGludG8gLmNvbnRpbnVlKHt9KS4iKTsKLSAgICAgICAgZXZlbnQudGFyZ2V0
LnJlc3VsdC5jb250aW51ZSh7fSk7Ci0gICAgICAgIHRlc3RGYWlsZWQoIk5vIGV4Y2VwdGlvbiB0
aHJvd24iKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIHRlc3RQYXNzZWQoIkNhdWdodCBl
eGNlcHRpb246ICIgKyBlLnRvU3RyaW5nKCkpOwotICAgIH0KLSAgICBkZWJ1ZygiIik7Ci0gICAg
b3BlbkVtcHR5Q3Vyc29yKCk7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5DdXJzb3IoKQotewotICAgIGRl
YnVnKCJPcGVuaW5nIGN1cnNvciIpOwotICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2UubG93ZXJC
b3VuZCgibXlLZXkiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnNv
dXJjZS5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Vy
c29yU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJzZXRW
ZXJzaW9uU3VjY2VzcygpOiIpOwotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9
IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxs
Iik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotCi0gICAg
ZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIHZhciBvYmplY3RTdG9yZSA9IGV2YWxB
bmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Rlc3QnKSIpOwotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ215VmFsdWUnLCAnbXlLZXkn
KSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbkN1cnNvcjsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLSAKLWZ1bmN0aW9uIG9wZW5TdWNj
ZXNzKCkKLXsKLSAgICB2YXIgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKLSAKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZl
cnNpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0gCi1mdW5j
dGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbignb3Blbi1jdXJzb3InKSIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLXRlc3QoKTsKLQotCi08L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvb3Blbi1jdXJzb3IuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+
CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVu
LWR1cmluZy10cmFuc2FjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
b3Blbi1kdXJpbmctdHJhbnNhY3Rpb24uaHRtbAppbmRleCBiMDI4MDJhMGI4NjJjZWFiYzE2YzI3
OWY2Nzg2OTkzNmU5NDYwMWE1Li5jZDVmOGY2ZGMzNDg2OTM3YTliNGFmODE3ZjQ0NTEyNGEwOGU1
OWY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVuLWR1cmlu
Zy10cmFuc2FjdGlvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29w
ZW4tZHVyaW5nLXRyYW5zYWN0aW9uLmh0bWwKQEAgLTEsODkgKzEsMTAgQEAKLTwhRE9DVFlQRSBo
dG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJl
ZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9w
PgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVz
dCBJbmRleGVkREIgb3BlbmluZyBkYXRhYmFzZSBjb25uZWN0aW9ucyBkdXJpbmcgdHJhbnNhY3Rp
b25zIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7
Ci0gICAgcHJlcGFyZURhdGFiYXNlKCk7Ci19Ci0KLWZ1bmN0aW9uIHByZXBhcmVEYXRhYmFzZSgp
Ci17Ci0gICAgZGVidWcoInByZXBhcmUgZGF0YWJhc2UiKTsKLSAgICBldmFsQW5kTG9nKCJvcGVu
cmVxMSA9IGluZGV4ZWREQi5vcGVuKCdkYjEnKSIpOwotICAgIG9wZW5yZXExLm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICBvcGVucmVxMS5vbnN1Y2Nlc3MgPSBmdW5jdGlv
biAoZSkgewotICAgICAgICBldmFsQW5kTG9nKCJkYmMxID0gb3BlbnJlcTEucmVzdWx0Iik7Ci0g
ICAgICAgIGV2YWxBbmRMb2coInNldHZlcnJlcSA9IGRiYzEuc2V0VmVyc2lvbignMS4wJykiKTsK
LSAgICAgICAgc2V0dmVycmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAg
ICAgICAgc2V0dmVycmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7Ci0gICAgICAgICAgICBl
dmFsQW5kTG9nKCJkYmMxLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotICAgICAg
ICAgICAgc2V0dmVycmVxLnJlc3VsdC5vbmNvbXBsZXRlID0gZnVuY3Rpb24gKGUpIHsKLSAgICAg
ICAgICAgICAgICBkZWJ1ZygiZGF0YWJhc2UgcHJlcGFyYXRpb24gY29tcGxldGUiKTsKLSAgICAg
ICAgICAgICAgICBkZWJ1ZygiIik7Ci0gICAgICAgICAgICAgICAgc3RhcnRUcmFuc2FjdGlvbigp
OwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICB9OwotfQotCi1mdW5jdGlvbiBzdGFy
dFRyYW5zYWN0aW9uKCkKLXsKLSAgICBkZWJ1Zygic3RhcnRpbmcgdHJhbnNhY3Rpb24iKTsKLSAg
ICBldmFsQW5kTG9nKCJzdGF0ZSA9ICdzdGFydGluZyciKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFu
cyA9IGRiYzEudHJhbnNhY3Rpb24oJ3N0b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJ
VEUpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpLnB1
dCgndmFsdWUnLCAna2V5JykiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0
Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
ICAgIHRyYW5zLm9uY29tcGxldGUgPSBmdW5jdGlvbiAoZSkgewotICAgICAgICBkZWJ1ZygidHJh
bnNhY3Rpb24gY29tcGxldGUiKTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzdGF0
ZSIsICJvcGVuM2NvbXBsZXRlIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH07Ci0K
LSAgICBkZWJ1ZygiIik7Ci0gICAgdHJ5T3BlbnMoKTsKLX0KLQotCi1mdW5jdGlvbiB0cnlPcGVu
cygpCi17Ci0gICAgZGVidWcoInRyeWluZyB0byBvcGVuIHRoZSBzYW1lIGRhdGFiYXNlIik7Ci0g
ICAgZXZhbEFuZExvZygib3BlbnJlcTIgPSBpbmRleGVkREIub3BlbignZGIxJykiKTsKLSAgICBv
cGVucmVxMi5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgb3BlbnJlcTIu
b25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAgZGVidWcoIm9wZW5yZXEyLm9uc3Vj
Y2VzcyIpOwotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInN0YXRlIiwgInN0YXJ0aW5n
Iik7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0YXRlID0gJ29wZW4yY29tcGxldGUnIik7Ci0gICAg
ICAgIGRlYnVnKCIiKTsKLSAgICB9Ci0gICAgZGVidWcoIiIpOwotCi0gICAgZGVidWcoInRyeWlu
ZyB0byBvcGVuIGEgZGlmZmVyZW50IGRhdGFiYXNlIik7Ci0gICAgZXZhbEFuZExvZygib3BlbnJl
cTMgPSBpbmRleGVkREIub3BlbignZGIyJykiKTsKLSAgICBvcGVucmVxMy5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgb3BlbnJlcTMub25zdWNjZXNzID0gZnVuY3Rpb24g
KGUpIHsKLSAgICAgICAgZGVidWcoIm9wZW5yZXEzLm9uc3VjY2VzcyIpOwotICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoInN0YXRlIiwgIm9wZW4yY29tcGxldGUiKTsKLSAgICAgICAgZXZh
bEFuZExvZygic3RhdGUgPSAnb3BlbjNjb21wbGV0ZSciKTsKLSAgICAgICAgZGVidWcoIiIpOwot
ICAgIH0KLSAgICBkZWJ1ZygiIik7Ci19Ci0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL29wZW4tZHVyaW5nLXRyYW5zYWN0aW9uLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcHJlZmV0Y2gtYnVnZml4LTEwODA3MS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcHJlZmV0Y2gtYnVnZml4LTEwODA3MS5odG1sCmluZGV4IDIyNzgyNmU0NmE2
N2ZjZWI2MmNhY2U3MTRjNjc5YjMyYjA1MzA0ZjguLjg0YzdhNjU1N2VjYTJlZWE3YzRlZmQ3MjIy
NGUwOTJiNzcwOTc5YzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3ByZWZldGNoLWJ1Z2ZpeC0xMDgwNzEuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9wcmVmZXRjaC1idWdmaXgtMTA4MDcxLmh0bWwKQEAgLTQsMTI2ICs0LDcgQEAKIDxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5
PgotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxz
Y3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IGZvciBjcmJ1Zy5jb20vMTA4MDcxIik7Ci0KLS8v
IEhhdmUgdG8gYmUgYXQgbGVhc3QgNSBoZXJlOiAxIGluaXRpYWwsIDMgY29udGludWVzIHRvIHRy
aWdnZXIgcHJlZmV0Y2ggYW5kIDEKLS8vIHBvc3QtYWJvcnQgb3V0c3RhbmRpbmcgY29udGludWUu
Ci12YXIgbmFtZXMgPSBbJ0FscGhhJywgJ0JyYXZvJywgJ0NoYXJsaWUnLCAnRGVsdGEnLCAnRWNo
byddOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwot
ICAgIERCTkFNRSA9ICdwcmVmZXRjaC1idWdmaXgtMTA4MDcxJzsKLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKERCTkFNRSkiKTsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uYmxvY2tl
ZCA9IHVuZXhwZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbiAoZSkgewotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9w
ZW4oREJOQU1FKSIpOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwot
ICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB9
OwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgdmFyIGRiID0gZXZhbEFuZExv
ZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gc2V0VmVyc2lvblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb25TdWNjZXNzKCkKLXsKLSAgICBk
ZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKLSAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExv
ZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFu
cyAhPT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFj
azsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gaXRlcmF0ZUFuZERlbGV0ZUZpcnN0RWxlbWVudDsK
LQotICAgIHZhciBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ3N0b3JlJywge2tleVBhdGg6ICdpZCd9KSIpOwotICAgIHJlc2V0T2Jq
ZWN0U3RvcmUoKTsKLX0KLQotZnVuY3Rpb24gcmVzZXRPYmplY3RTdG9yZSgpCi17Ci0gICAgZGVi
dWcoIlxucmVzZXRPYmplY3RTdG9yZSgpOiIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSB0cmFucy5v
YmplY3RTdG9yZSgnc3RvcmUnKTsKLSAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5jbGVhcigp
Iik7Ci0gICAgZm9yIChpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoe2lkOiAiICsgaSArICIsIG5hbWU6
IFwiIiArIG5hbWVzW2ldICsgIlwifSkiKTsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgfQotCi0gICAgZGVidWcoIiIpOwotfQotCi1mdW5j
dGlvbiBpdGVyYXRlQW5kRGVsZXRlRmlyc3RFbGVtZW50KCkKLXsKLSAgICBkZWJ1ZygiaXRlcmF0
ZUFuZERlbGV0ZUZpcnN0RWxlbWVudCgpOiIpOwotCi0gICAgZXZhbEFuZExvZygidHJhbnMgPSBk
Yi50cmFuc2FjdGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0g
ICAgdHJhbnMub25hYm9ydCA9IHRyYW5zYWN0aW9uQWJvcnRlZDsKLSAgICB0cmFucy5vbmNvbXBs
ZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7Ci0KLSAgICAvLyBDcmVhdGUgdGhlIGN1
cnNvciBhbmQgaXRlcmF0ZSBvdmVyIHRoZSB3aG9sZSB0aGluZy4KLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykub3BlbkN1cnNvcigpIik7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHZhciBjdXJzb3IgPSBldmVudC50YXJn
ZXQucmVzdWx0OwotICAgICAgICBpZiAoY3Vyc29yID09IG51bGwpIHsKLSAgICAgICAgICAgIHJl
c2V0T2JqZWN0U3RvcmUoKTsKLSAgICAgICAgICAgIHByZWZldGNoQW5kQWJvcnQoKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGRlYnVnKGN1cnNvci52YWx1ZS5p
ZCArICI6ICIgKyBjdXJzb3IudmFsdWUubmFtZSk7Ci0KLSAgICAgICAgaWYgKGN1cnNvci52YWx1
ZS5pZCA9PSAwKSB7Ci0gICAgICAgICAgICAvLyBEZWxldGUgdGhlIGZpcnN0IGVsZW1lbnQgd2hl
biB3ZSBzZWUgaXQuCi0gICAgICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnMub2Jq
ZWN0U3RvcmUoJ3N0b3JlJykuZGVsZXRlKDApIik7Ci0gICAgICAgICAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZnVuY3Rpb24oKSB7IGN1cnNvci5jb250aW51ZSgpOyB9OwotICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0K
LWZ1bmN0aW9uIHByZWZldGNoQW5kQWJvcnQoKQotewotICAgIGRlYnVnKCJwcmVmZXRjaEFuZEFi
b3J0KCk6Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUo
J3N0b3JlJykub3BlbkN1cnNvcigpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7Ci0g
ICAgICAgIHZhciBjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OwotICAgICAgICBkZWJ1Zyhj
dXJzb3IudmFsdWUuaWQgKyAiOiAiICsgY3Vyc29yLnZhbHVlLm5hbWUpOwotICAgICAgICAvLyBI
YXZlIHRvIGl0ZXJhdGUgdG8gMyBpbiBvcmRlciB0byBwcmVmZXRjaCwgYnV0IGNhbid0IGl0ZXJh
dGUgcGFzdCAzCi0gICAgICAgIC8vIHNvIHRoYXQgdGhlcmUgd2lsbCBiZSBhIGNvbnRpbnVlIHJl
bWFpbmluZy4KLSAgICAgICAgaWYgKGN1cnNvci52YWx1ZS5pZCA9PSAzKSB7Ci0gICAgICAgICAg
ICBldmFsQW5kTG9nKCJ0cmFucy5hYm9ydCgpIik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBjdXJzb3IuY29udGludWUoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24g
dHJhbnNhY3Rpb25BYm9ydGVkKCkKLXsKLSAgICB0ZXN0UGFzc2VkKCJUcmFuc2FjdGlvbiBhYm9y
dGVkIGFzIGV4cGVjdGVkIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXZhciBqc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3ByZWZldGNoLWJ1Z2ZpeC0xMDgwNzEuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+
CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9xdWV1
ZWQtY29tbWFuZHMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3F1ZXVlZC1j
b21tYW5kcy5odG1sCmluZGV4IGU3YTlhYzcxMTVhMDY3OWQzOWEwNzRlNWY3OGI4YjNiMzU3ZDc1
NjYuLjU3OGRjZGVhMDhhZTU2OTJhMjc0M2ViMGI0OWM0NDI2Y2JkZjdiYTEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3F1ZXVlZC1jb21tYW5kcy5odG1sCisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3F1ZXVlZC1jb21tYW5kcy5odG1sCkBAIC00
LDcwICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4K
IDwvaGVhZD4KIDxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJWZXJpZnkgdGhhdCBxdWV1aW5n
IHVwIHNldmVyYWwgY29tbWFuZHMgd29ya3MgKGFuZCB0aGV5IGFsbCBmaXJlKS4iKTsKLQotZnVu
Y3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3F1ZXVlZC1jb21tYW5kcycpIik7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uKCkKLXsKLSAg
ICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4aXN0aW5nOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBkZWxldGVFeGlzdGluZygp
Ci17Ci0gICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7Ci0gICAgc2VsZi50cmFucyA9
IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJl
VHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFi
b3J0Q2FsbGJhY2s7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgc2Vs
Zi5zdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIp
OwotICAgIHNlbGYuaW5kZXhPYmplY3QgPSBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgn
aW5kZXhOYW1lJywgJ3gnKSIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFk
ZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAna2V5JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uKCkgeyB2ZXJpZnlBZGQoMCk7IH07Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3Rv
cmUuYWRkKHt4OiAndmFsdWUyJywgeTogJ3p6ejInfSwgJ2tleTInKSIpOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24oKSB7IHZlcmlmeUFkZCgxKTsgfTsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJzdG9yZS5wdXQoe3g6ICd2YWx1MicsIHk6ICd6ejInfSwgJ2t5MicpIik7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgdmVyaWZ5QWRkKDIpOyB9OwotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotCi0gICAgc2VsZi5hZGRDb3Vu
dCA9IDA7Ci19Ci0KLWZ1bmN0aW9uIHZlcmlmeUFkZChleHBlY3RlZCkKLXsKLSAgICBzaG91bGRC
ZSgiIiArIGFkZENvdW50KyssICIiICsgZXhwZWN0ZWQpOwotCi0gICAgaWYgKGFkZENvdW50ID09
IDMpCi0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIGlmIChhZGRDb3VudCA+IDMpCi0gICAg
ICAgIHRlc3RGYWlsZWQoIlVuZXhwZWN0ZWQgY2FsbCB0byB2ZXJpZnlBZGQhIik7Ci19Ci0KLXRl
c3QoKTsKLQotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcXVldWVkLWNvbW1h
bmRzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVhZG9ubHktcHJvcGVydGllcy5odG1sIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVhZG9ubHktcHJvcGVydGllcy5odG1sCmlu
ZGV4IDJlZDMzN2JhY2U2MWI0ODdlNjg0MzRiNzZlYzcwMzExYjc3YjUwYWMuLmQ0OGJiMDA4ZjJk
ZjE5NThmMTI3NjdjNjlkYzVhY2Q2ZTY3MzZlNzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3JlYWRvbmx5LXByb3BlcnRpZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZWFkb25seS1wcm9wZXJ0aWVzLmh0bWwKQEAgLTEsNjAgKzEs
MTAgQEAKLTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxwIGlk
PSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0Pgot
ZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIHJlYWRvbmx5IHByb3BlcnRpZXMiKTsKLQotZnVu
Y3Rpb24gc2V0UmVhZG9ubHlQcm9wZXJ0eShwcm9wZXJ0eSwgdmFsdWUpCi17Ci0gICAgb2xkVmFs
dWUgPSBldmFsKHByb3BlcnR5KTsKLSAgICBkZWJ1ZygidHJ5aW5nIHRvIHNldCByZWFkb25seSBw
cm9wZXJ0eSAiICsgcHJvcGVydHkpOwotICAgIGV2YWxBbmRMb2cocHJvcGVydHkgKyAiID0gIiAr
IHZhbHVlKTsKLSAgICBuZXdWYWx1ZSA9IGV2YWwocHJvcGVydHkpOwotICAgIGlmIChvbGRWYWx1
ZSA9PSBuZXdWYWx1ZSkgewotICAgICAgICB0ZXN0UGFzc2VkKHByb3BlcnR5ICsgIiBpcyBzdGls
bCAiICsgb2xkVmFsdWUpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHRlc3RGYWlsZWQocHJvcGVy
dHkgKyAiIHZhbHVlIHdhcyBjaGFuZ2VkIHRvICIgKyBuZXdWYWx1ZSk7Ci0gICAgfQotfQotCi1m
dW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFt
ZSA9ICJmb28iOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2Vzcygp
Ci17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZTsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rp
b24gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSgpCi17Ci0gICAgdHJhbnNhY3Rpb24gPSBl
dmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgZGVs
ZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9i
amVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycpOyIpOwotICAgIHNldFJlYWRv
bmx5UHJvcGVydHkoIm9iamVjdFN0b3JlLnRyYW5zYWN0aW9uIiwgInRoaXMiKTsKLSAgICBmaW5p
c2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9yZWFkb25seS1wcm9wZXJ0aWVzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIu
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5
PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVh
ZG9ubHkuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3JlYWRvbmx5Lmh0bWwK
aW5kZXggMmZhNjZjZDNmYmYwNzZkM2RlMTYwMTc4MWNlZjk4ZGE1OGE5N2ZiMC4uMWUxMTYyMDNi
NTZlODk5ZDBiNTFkM2I3M2MwZjk1YjRlZWFlYzhhYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVhZG9ubHkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZWFkb25seS5odG1sCkBAIC0xLDExNyArMSwxMCBAQAotPCFET0NUWVBFIGh0
bWw+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVk
LmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+
Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQ+Ci1kZXNjcmlwdGlvbigiVGVzdCBJ
bmRleGVkREIgcmVhZG9ubHkgcHJvcGVydGllcyIpOwotCi1mdW5jdGlvbiBzZXRSZWFkb25seVBy
b3BlcnR5KHByb3BlcnR5LCB2YWx1ZSkKLXsKLSAgICBvbGRWYWx1ZSA9IGV2YWwocHJvcGVydHkp
OwotICAgIGRlYnVnKCJ0cnlpbmcgdG8gc2V0IHJlYWRvbmx5IHByb3BlcnR5ICIgKyBwcm9wZXJ0
eSk7Ci0gICAgZXZhbEFuZExvZyhwcm9wZXJ0eSArICIgPSAiICsgdmFsdWUpOwotICAgIG5ld1Zh
bHVlID0gZXZhbChwcm9wZXJ0eSk7Ci0gICAgaWYgKG9sZFZhbHVlID09IG5ld1ZhbHVlKSB7Ci0g
ICAgICAgIHRlc3RQYXNzZWQocHJvcGVydHkgKyAiIGlzIHN0aWxsICIgKyBvbGRWYWx1ZSk7Ci0g
ICAgfSBlbHNlIHsKLSAgICAgICAgdGVzdEZhaWxlZChwcm9wZXJ0eSArICIgdmFsdWUgd2FzIGNo
YW5nZWQiKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRv
clByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gImZvbyI7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkg
VGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVu
KG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nl
c3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0K
LWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBzZXRSZWFkb25seVByb3BlcnR5KCJyZXF1
ZXN0LnJlc3VsdCIsICJJbmZpbml0eSIpOwotICAgIHNldFJlYWRvbmx5UHJvcGVydHkoInJlcXVl
c3QuZXJyb3JDb2RlIiwgIjY2NiIpOwotICAgIHNldFJlYWRvbmx5UHJvcGVydHkoInJlcXVlc3Qu
c291cmNlIiwgInRoaXMiKTsKLSAgICBzZXRSZWFkb25seVByb3BlcnR5KCJyZXF1ZXN0LnRyYW5z
YWN0aW9uIiwgInRoaXMiKTsKLSAgICBzZXRSZWFkb25seVByb3BlcnR5KCJyZXF1ZXN0LnJlYWR5
U3RhdGUiLCAiNjY2Iik7Ci0KLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOwotICAgIHNldFJlYWRvbmx5UHJvcGVydHkoImRiLm5hbWUiLCAiJ2JhciciKTsK
LQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScp
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3Jl
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1m
dW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKLXsKLSAgICB0cmFuc2FjdGlv
biA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAg
ICBzZXRSZWFkb25seVByb3BlcnR5KCJ0cmFuc2FjdGlvbi5tb2RlIiwgIjY2NiIpOwotICAgIHNl
dFJlYWRvbmx5UHJvcGVydHkoInRyYW5zYWN0aW9uLmRiIiwgInRoaXMiKTsKLQotICAgIGRlbGV0
ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9i
amVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycpOyIpOwotCi0gICAgc2V0UmVh
ZG9ubHlQcm9wZXJ0eSgib2JqZWN0U3RvcmUubmFtZSIsICInYmFyJyIpOwotICAgIHNldFJlYWRv
bmx5UHJvcGVydHkoIm9iamVjdFN0b3JlLmtleVBhdGgiLCAiJ2JhciciKTsKLS8qIGZhaWxzLCBz
cGxpdCBpbnRvIHNlcGFyYXRlIHRlc3QKLSAgICBzZXRSZWFkb25seVByb3BlcnR5KCJvYmplY3RT
dG9yZS5pbmRleE5hbWVzIiwgIlsnYmFyJ10iKTsKLSovCi0vKiBmYWlscywgc3BsaXQgaW50byBz
ZXBhcmF0ZSB0ZXN0Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgib2JqZWN0U3RvcmUudHJhbnNh
Y3Rpb24iLCAidGhpcyIpOwotKi8KLQotICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coInJlc3VsdCA9
IG9iamVjdFN0b3JlLmFkZCh7fSwgJ2ZpcnN0Jyk7Iik7Ci0gICAgcmVzdWx0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXN1bHQub25zdWNjZXNzID0gYWRkU3VjY2Vz
czsKLX0KLQotZnVuY3Rpb24gYWRkU3VjY2VzcygpCi17Ci0gICAgcmVzdWx0ID0gZXZhbEFuZExv
ZygicmVzdWx0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOwotICAgIHJlc3VsdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGNo
ZWNrQ3Vyc29yOwotfQotCi1mdW5jdGlvbiBjaGVja0N1cnNvcigpCi17Ci0gICAgY3Vyc29yID0g
ZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICBpZiAoY3Vy
c29yKSB7Ci0gICAgICAgIHNldFJlYWRvbmx5UHJvcGVydHkoImN1cnNvci5zb3VyY2UiLCAidGhp
cyIpOwotICAgICAgICBzZXRSZWFkb25seVByb3BlcnR5KCJjdXJzb3IuZGlyZWN0aW9uIiwgIjY2
NiIpOwotICAgICAgICBzZXRSZWFkb25seVByb3BlcnR5KCJjdXJzb3Iua2V5IiwgIkluZmluaXR5
Iik7Ci0gICAgICAgIHNldFJlYWRvbmx5UHJvcGVydHkoImN1cnNvci5wcmltYXJ5S2V5IiwgIklu
ZmluaXR5Iik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiY3Vyc29yIGlzIG51
bGwiKTsKLSAgICB9Ci0KLSAgICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gb2JqZWN0U3Rv
cmUuY3JlYXRlSW5kZXgoJ2ZpcnN0JywgJ2ZpcnN0Jyk7Iik7Ci0gICAgc2V0UmVhZG9ubHlQcm9w
ZXJ0eSgiaW5kZXgubmFtZSIsICInYmFyJyIpOwotICAgIHNldFJlYWRvbmx5UHJvcGVydHkoImlu
ZGV4Lm9iamVjdFN0b3JlIiwgInRoaXMiKTsKLSAgICBzZXRSZWFkb25seVByb3BlcnR5KCJpbmRl
eC5rZXlQYXRoIiwgIidiYXInIik7Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgiaW5kZXgudW5p
cXVlIiwgInRydWUiKTsKLQotICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2Uub25seSgiZmlyc3Qi
KTsKLSAgICBzZXRSZWFkb25seVByb3BlcnR5KCJrZXlSYW5nZS5sb3dlciIsICJJbmZpbml0eSIp
OwotICAgIHNldFJlYWRvbmx5UHJvcGVydHkoImtleVJhbmdlLnVwcGVyIiwgIkluZmluaXR5Iik7
Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgia2V5UmFuZ2UubG93ZXJPcGVuIiwgInRydWUiKTsK
LSAgICBzZXRSZWFkb25seVByb3BlcnR5KCJrZXlSYW5nZS51cHBlck9wZW4iLCAidHJ1ZSIpOwot
Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvcmVhZG9ubHkuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+
CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXF1
ZXN0LWV2ZW50LXByb3BhZ2F0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXF1ZXN0LWV2ZW50LXByb3BhZ2F0aW9uLmh0bWwKaW5kZXggMjE1NzI3MGZhMTM2YTJlNTE0
N2E4NGIzYjUxN2EwYTBmZTJlMTllMS4uYjExMTFiZDJjMzZjNDZjZTQzYjFhODliOGQ5OTgwNmIx
MDU4NjcwNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVxdWVz
dC1ldmVudC1wcm9wYWdhdGlvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3JlcXVlc3QtZXZlbnQtcHJvcGFnYXRpb24uaHRtbApAQCAtNCwyNzUgKzQsNyBAQAogPHNj
cmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+
Ci08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNj
cmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgZXZlbnQgcHJvcG9nYXRpb24gb24gSURCUmVxdWVz
dC4iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsK
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3JlcXVlc3QtZXZlbnQt
cHJvcGFnYXRpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvbjsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rp
b24gc2V0VmVyc2lvbigpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCdu
ZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVu
Y3Rpb24gZGVsZXRlRXhpc3RpbmcoKQotewotICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2Vzcygp
OiIpOwotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0gICAgdHJhbnMu
b25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIGV2YWxBbmRMb2coInRyYW5z
Lm9uY29tcGxldGUgPSBzdGFydFRlc3QiKTsKLQotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jlcyhk
Yik7Ci0KLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ3N0b3JlTmFtZScsIG51bGwpIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3Jl
LmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAna2V5JykiKTsKLSAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc3RhcnRUZXN0KCkK
LXsKLSAgICBkZWJ1ZygiVmVyaWZ5IHRoYXQgaGFuZGxlciBmaXJlcyBhbmQgdGhhdCBub3QgcHJl
dmVudGluZyBkZWZhdWx0IHdpbGwgcmVzdWx0IGluIGFuIGFib3J0Iik7Ci0gICAgdHJhbnMgPSBl
dmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIElEQlRyYW5z
YWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMub25hYm9ydCA9IHRy
YW5zYWN0aW9uQWJvcnRlZCIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSB1
bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9uZXJy
b3IgPSBhbGxvd0RlZmF1bHQiKTsKLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJh
bnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAna2V5JykiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7Ci0gICAgaGFuZGxlckZpcmVk
ID0gZmFsc2U7Ci19Ci0KLWZ1bmN0aW9uIGFsbG93RGVmYXVsdCgpCi17Ci0gICAgdGVzdFBhc3Nl
ZCgiRXZlbnQgaGFuZGxlciBmaXJlZCIpOwotICAgIGRlYnVnKCJEb2luZyBub3RoaW5nIHRvIHBy
ZXZlbnQgdGhlIGRlZmF1bHQgYWN0aW9uLi4uIik7Ci0gICAgaGFuZGxlckZpcmVkID0gdHJ1ZTsK
LX0KLQotZnVuY3Rpb24gdHJhbnNhY3Rpb25BYm9ydGVkKCkKLXsKLSAgICBzaG91bGRCZVRydWUo
ImhhbmRsZXJGaXJlZCIpOwotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiVmVyaWZpbmcgZXJy
b3IiKTsKLSAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydz
dG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICBldmFsQW5kTG9n
KCJ0cmFucy5vbmFib3J0ID0gdHJhbnNhY3Rpb25BYm9ydGVkMiIpOwotICAgIGV2YWxBbmRMb2co
InRyYW5zLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjayIpOwotICAgIGV2YWxB
bmRMb2coInRyYW5zLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZXJyb3JDYXB0dXJlQ2FsbGJh
Y2ssIHRydWUpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignZXJy
b3InLCBlcnJvckJ1YmJsZUNhbGxiYWNrLCBmYWxzZSkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFu
cy5hZGRFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjaywg
dHJ1ZSkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5hZGRFdmVudExpc3RlbmVyKCdzdWNjZXNz
JywgdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjaywgZmFsc2UpIik7Ci0gICAgZXZhbEFuZExvZygi
ZGIuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBkYkVycm9yQ2FwdHVyZUNhbGxiYWNrLCB0cnVl
KSIpOwotICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZGJFcnJv
ckJ1YmJsZUNhbGxiYWNrLCBmYWxzZSkiKTsKLSAgICBldmFsQW5kTG9nKCJkYi5hZGRFdmVudExp
c3RlbmVyKCdzdWNjZXNzJywgdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjaywgdHJ1ZSkiKTsKLSAg
ICBldmFsQW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgdW5leHBlY3RlZFN1
Y2Nlc3NDYWxsYmFjaywgZmFsc2UpIik7Ci0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9
IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IGVycm9yRmlyZWRDYWxsYmFjazsKLSAgICBkYkNhcHR1cmVGaXJlZCA9IGZhbHNl
OwotICAgIGNhcHR1cmVGaXJlZCA9IGZhbHNlOwotICAgIHJlcXVlc3RGaXJlZCA9IGZhbHNlOwot
ICAgIGJ1YmJsZUZpcmVkID0gZmFsc2U7Ci0gICAgZGJCdWJibGVGaXJlZCA9IGZhbHNlOwotfQot
Ci1mdW5jdGlvbiBkYkVycm9yQ2FwdHVyZUNhbGxiYWNrKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0g
ICAgZGVidWcoIkluIElEQkRhdGFiYXNlIGVycm9yIGNhcHR1cmUiKTsKLSAgICBzaG91bGRCZUZh
bHNlKCJkYkNhcHR1cmVGaXJlZCIpOwotICAgIHNob3VsZEJlRmFsc2UoImNhcHR1cmVGaXJlZCIp
OwotICAgIHNob3VsZEJlRmFsc2UoInJlcXVlc3RGaXJlZCIpOwotICAgIHNob3VsZEJlRmFsc2Uo
ImJ1YmJsZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVGaXJlZCIpOwotICAg
IHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAicmVxdWVzdCIpOwotICAgIHNob3VsZEJlKCJldmVu
dC5jdXJyZW50VGFyZ2V0IiwgImRiIik7Ci0gICAgZGJDYXB0dXJlRmlyZWQgPSB0cnVlOwotfQot
Ci1mdW5jdGlvbiBlcnJvckNhcHR1cmVDYWxsYmFjaygpCi17Ci0gICAgZGVidWcoIiIpOwotICAg
IGRlYnVnKCJJbiBJREJUcmFuc2FjdGlvbiBlcnJvciBjYXB0dXJlIik7Ci0gICAgc2hvdWxkQmVU
cnVlKCJkYkNhcHR1cmVGaXJlZCIpOwotICAgIHNob3VsZEJlRmFsc2UoImNhcHR1cmVGaXJlZCIp
OwotICAgIHNob3VsZEJlRmFsc2UoInJlcXVlc3RGaXJlZCIpOwotICAgIHNob3VsZEJlRmFsc2Uo
ImJ1YmJsZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVGaXJlZCIpOwotICAg
IHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAicmVxdWVzdCIpOwotICAgIHNob3VsZEJlKCJldmVu
dC5jdXJyZW50VGFyZ2V0IiwgInRyYW5zIik7Ci0gICAgY2FwdHVyZUZpcmVkID0gdHJ1ZTsKLX0K
LQotZnVuY3Rpb24gZXJyb3JGaXJlZENhbGxiYWNrKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAg
ZGVidWcoIkluIElEQlJlcXVlc3QgaGFuZGxlciIpOwotICAgIHNob3VsZEJlVHJ1ZSgiZGJDYXB0
dXJlRmlyZWQiKTsKLSAgICBzaG91bGRCZVRydWUoImNhcHR1cmVGaXJlZCIpOwotICAgIHNob3Vs
ZEJlRmFsc2UoInJlcXVlc3RGaXJlZCIpOwotICAgIHNob3VsZEJlRmFsc2UoImJ1YmJsZUZpcmVk
Iik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVGaXJlZCIpOwotICAgIHNob3VsZEJlKCJl
dmVudC50YXJnZXQiLCAicmVxdWVzdCIpOwotICAgIHNob3VsZEJlKCJldmVudC5jdXJyZW50VGFy
Z2V0IiwgInJlcXVlc3QiKTsKLSAgICByZXF1ZXN0RmlyZWQgPSB0cnVlOwotfQotCi1mdW5jdGlv
biBlcnJvckJ1YmJsZUNhbGxiYWNrKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIklu
IElEQlRyYW5zYWN0aW9uIGVycm9yIGJ1YmJsZSIpOwotICAgIHNob3VsZEJlVHJ1ZSgiZGJDYXB0
dXJlRmlyZWQiKTsKLSAgICBzaG91bGRCZVRydWUoImNhcHR1cmVGaXJlZCIpOwotICAgIHNob3Vs
ZEJlVHJ1ZSgicmVxdWVzdEZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiYnViYmxlRmlyZWQi
KTsKLSAgICBzaG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVkIik7Ci0gICAgc2hvdWxkQmUoImV2
ZW50LnRhcmdldCIsICJyZXF1ZXN0Iik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LmN1cnJlbnRUYXJn
ZXQiLCAidHJhbnMiKTsKLSAgICBidWJibGVGaXJlZCA9IHRydWU7Ci19Ci0KLWZ1bmN0aW9uIGRi
RXJyb3JCdWJibGVDYWxsYmFjaygpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJJbiBJ
REJEYXRhYmFzZSBlcnJvciBidWJibGUiKTsKLSAgICBzaG91bGRCZVRydWUoImRiQ2FwdHVyZUZp
cmVkIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJjYXB0dXJlRmlyZWQiKTsKLSAgICBzaG91bGRCZVRy
dWUoInJlcXVlc3RGaXJlZCIpOwotICAgIHNob3VsZEJlVHJ1ZSgiYnViYmxlRmlyZWQiKTsKLSAg
ICBzaG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVkIik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRh
cmdldCIsICJyZXF1ZXN0Iik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LmN1cnJlbnRUYXJnZXQiLCAi
ZGIiKTsKLSAgICBkYkJ1YmJsZUZpcmVkID0gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gdHJhbnNhY3Rp
b25BYm9ydGVkMigpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJUcmFuc2FjdGlvbiBh
Ym9ydGVkIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJkYkNhcHR1cmVGaXJlZCIpOwotICAgIHNob3Vs
ZEJlVHJ1ZSgiY2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJyZXF1ZXN0RmlyZWQi
KTsKLSAgICBzaG91bGRCZVRydWUoImJ1YmJsZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJk
YkJ1YmJsZUZpcmVkIik7Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJWZXJpZmluZyBzdWNj
ZXNzLiIpOwotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihb
J3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIGV2YWxBbmRM
b2coInRyYW5zLm9uY29tcGxldGUgPSB0cmFuc2FjdGlvbkNvbXBsZXRlIik7Ci0gICAgZXZhbEFu
ZExvZygidHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrIik7Ci0gICAgZXZh
bEFuZExvZygidHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignc3VjY2VzcycsIHN1Y2Nlc3NDYXB0dXJl
Q2FsbGJhY2ssIHRydWUpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMuYWRkRXZlbnRMaXN0ZW5l
cignc3VjY2VzcycsIHN1Y2Nlc3NCdWJibGVDYWxsYmFjaywgZmFsc2UpIik7Ci0gICAgZXZhbEFu
ZExvZygidHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjaywgdHJ1ZSkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5hZGRFdmVudExpc3RlbmVyKCdl
cnJvcicsIHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrLCBmYWxzZSkiKTsKLSAgICBldmFsQW5kTG9n
KCJkYi5yZW1vdmVFdmVudExpc3RlbmVyKCdlcnJvcicsIGRiRXJyb3JDYXB0dXJlQ2FsbGJhY2ss
IHRydWUpIik7Ci0gICAgZXZhbEFuZExvZygiZGIucmVtb3ZlRXZlbnRMaXN0ZW5lcignZXJyb3In
LCBkYkVycm9yQnViYmxlQ2FsbGJhY2ssIGZhbHNlKSIpOwotICAgIGV2YWxBbmRMb2coImRiLnJl
bW92ZUV2ZW50TGlzdGVuZXIoJ3N1Y2Nlc3MnLCB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrLCB0
cnVlKSIpOwotICAgIGV2YWxBbmRMb2coImRiLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3N1Y2Nlc3Mn
LCB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrLCBmYWxzZSkiKTsKLSAgICBldmFsQW5kTG9nKCJk
Yi5hZGRFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgZGJTdWNjZXNzQ2FwdHVyZUNhbGxiYWNrLCB0
cnVlKSIpOwotICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50TGlzdGVuZXIoJ3N1Y2Nlc3MnLCBk
YlN1Y2Nlc3NCdWJibGVDYWxsYmFjaywgZmFsc2UpIik7Ci0gICAgZXZhbEFuZExvZygiZGIuYWRk
RXZlbnRMaXN0ZW5lcignZXJyb3InLCB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjaywgdHJ1ZSkiKTsK
LSAgICBldmFsQW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrLCBmYWxzZSkiKTsKLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0g
dHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAna2V5MicpIik7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBzdWNjZXNzRmlyZWRDYWxsYmFjazsKLSAgICBkYkNhcHR1cmVGaXJlZCA9IGZhbHNl
OwotICAgIGNhcHR1cmVGaXJlZCA9IGZhbHNlOwotICAgIHJlcXVlc3RGaXJlZCA9IGZhbHNlOwot
ICAgIGJ1YmJsZUZpcmVkID0gZmFsc2U7Ci0gICAgZGJCdWJibGVGaXJlZCA9IGZhbHNlOwotfQot
Ci1mdW5jdGlvbiBkYlN1Y2Nlc3NDYXB0dXJlQ2FsbGJhY2soKQotewotICAgIGRlYnVnKCIiKTsK
LSAgICBkZWJ1ZygiSW4gSURCRGF0YWJhc2Ugc3VjY2VzcyBjYXB0dXJlIik7Ci0gICAgc2hvdWxk
QmVGYWxzZSgiZGJDYXB0dXJlRmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJjYXB0dXJlRmly
ZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJyZXF1ZXN0RmlyZWQiKTsKLSAgICBzaG91bGRCZUZh
bHNlKCJidWJibGVGaXJlZCIpOwotICAgIHNob3VsZEJlRmFsc2UoImRiQnViYmxlRmlyZWQiKTsK
LSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0IiwgInJlcXVlc3QiKTsKLSAgICBzaG91bGRCZSgi
ZXZlbnQuY3VycmVudFRhcmdldCIsICJkYiIpOwotICAgIGRiQ2FwdHVyZUZpcmVkID0gdHJ1ZTsK
LX0KLQotZnVuY3Rpb24gc3VjY2Vzc0NhcHR1cmVDYWxsYmFjaygpCi17Ci0gICAgZGVidWcoIiIp
OwotICAgIGRlYnVnKCJJbiBJREJUcmFuc2FjdGlvbiBzdWNjZXNzIGNhcHR1cmUiKTsKLSAgICBz
aG91bGRCZVRydWUoImRiQ2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiY2FwdHVy
ZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgicmVxdWVzdEZpcmVkIik7Ci0gICAgc2hvdWxk
QmVGYWxzZSgiYnViYmxlRmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVk
Iik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldCIsICJyZXF1ZXN0Iik7Ci0gICAgc2hvdWxk
QmUoImV2ZW50LmN1cnJlbnRUYXJnZXQiLCAidHJhbnMiKTsKLSAgICBjYXB0dXJlRmlyZWQgPSB0
cnVlOwotfQotCi1mdW5jdGlvbiBzdWNjZXNzRmlyZWRDYWxsYmFjaygpCi17Ci0gICAgZGVidWco
IiIpOwotICAgIGRlYnVnKCJJbiBJREJSZXF1ZXN0IGhhbmRsZXIiKTsKLSAgICBzaG91bGRCZVRy
dWUoImRiQ2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJjYXB0dXJlRmlyZWQiKTsK
LSAgICBzaG91bGRCZUZhbHNlKCJyZXF1ZXN0RmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJi
dWJibGVGaXJlZCIpOwotICAgIHNob3VsZEJlRmFsc2UoImRiQnViYmxlRmlyZWQiKTsKLSAgICBz
aG91bGRCZSgiZXZlbnQudGFyZ2V0IiwgInJlcXVlc3QiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQu
Y3VycmVudFRhcmdldCIsICJyZXF1ZXN0Iik7Ci0gICAgcmVxdWVzdEZpcmVkID0gdHJ1ZTsKLX0K
LQotZnVuY3Rpb24gc3VjY2Vzc0J1YmJsZUNhbGxiYWNrKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0g
ICAgZGVidWcoIkluIElEQlRyYW5zYWN0aW9uIHN1Y2Nlc3MgYnViYmxlIik7Ci0gICAgdGVzdEZh
aWxlZCgiU3VjY2VzcyBidWJibGUgY2FsbGJhY2sgc2hvdWxkIE5PVCBmaXJlIik7Ci0gICAgYnVi
YmxlRmlyZWQgPSB0cnVlOwotfQotCi1mdW5jdGlvbiBkYlN1Y2Nlc3NCdWJibGVDYWxsYmFjaygp
Ci17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJJbiBJREJEYXRhYmFzZSBzdWNjZXNzIGJ1
YmJsZSIpOwotICAgIHRlc3RGYWlsZWQoIlN1Y2Nlc3MgYnViYmxlIGNhbGxiYWNrIHNob3VsZCBO
T1QgZmlyZSIpOwotICAgIGRiQnViYmxlRmlyZWQgPSB0cnVlOwotfQotCi1mdW5jdGlvbiB0cmFu
c2FjdGlvbkNvbXBsZXRlKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIlRyYW5zYWN0
aW9uIGNvbXBsZXRlZCIpOwotICAgIHNob3VsZEJlVHJ1ZSgiZGJDYXB0dXJlRmlyZWQiKTsKLSAg
ICBzaG91bGRCZVRydWUoImNhcHR1cmVGaXJlZCIpOwotICAgIHNob3VsZEJlVHJ1ZSgicmVxdWVz
dEZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiYnViYmxlRmlyZWQiKTsKLSAgICBzaG91bGRC
ZUZhbHNlKCJkYkJ1YmJsZUZpcmVkIik7Ci0gICAgZGVidWcoIiIpOwotCi0gICAgZmluaXNoSlNU
ZXN0KCk7Ci0gICAgcmV0dXJuOwotfQotCi10ZXN0KCk7Ci0KLQotPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL3JlcXVlc3QtZXZlbnQtcHJvcGFnYXRpb24uanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvY29uc3RhbnRzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL2NvbnN0YW50cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTUyOWMwYmYxMjNi
NmE2Y2RiYWJiY2JiNWJhODExN2FkNDc3YWFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2NvbnN0YW50cy5qcwpAQCAtMCwwICsxLDM5
IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRz
KCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgY29uc3Rh
bnRzLiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygp
OworICAgIHNob3VsZEJlKCJJREJEYXRhYmFzZUV4Y2VwdGlvbi5VTktOT1dOX0VSUiIsICIxIik7
CisgICAgc2hvdWxkQmUoIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PTl9UUkFOU0lFTlRfRVJSIiwg
IjIiKTsKKyAgICBzaG91bGRCZSgiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIs
ICIzIik7CisgICAgc2hvdWxkQmUoIklEQkRhdGFiYXNlRXhjZXB0aW9uLkNPTlNUUkFJTlRfRVJS
IiwgIjQiKTsKKyAgICBzaG91bGRCZSgiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiLCAi
NSIpOworICAgIHNob3VsZEJlKCJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9FUlIi
LCAiNiIpOworICAgIHNob3VsZEJlKCJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9J
TkFDVElWRV9FUlIiLCAiNyIpOworICAgIHNob3VsZEJlKCJJREJEYXRhYmFzZUV4Y2VwdGlvbi5B
Qk9SVF9FUlIiLCAiOCIpOworICAgIHNob3VsZEJlKCJJREJEYXRhYmFzZUV4Y2VwdGlvbi5SRUFE
X09OTFlfRVJSIiwgIjkiKTsKKyAgICBzaG91bGRCZSgiSURCRGF0YWJhc2VFeGNlcHRpb24uVElN
RU9VVF9FUlIiLCAiMTAiKTsKKyAgICBzaG91bGRCZSgiSURCRGF0YWJhc2VFeGNlcHRpb24uUVVP
VEFfRVJSIiwgIjExIik7CisgICAgc2hvdWxkQmUoIklEQkRhdGFiYXNlRXhjZXB0aW9uLlZFUl9F
UlIiLCAiMTIiKTsKKworICAgIHNob3VsZEJlKCJJREJSZXF1ZXN0LkxPQURJTkciLCAiMSIpOwor
ICAgIHNob3VsZEJlKCJJREJSZXF1ZXN0LkRPTkUiLCAiMiIpOworCisgICAgc2hvdWxkQmUoIklE
QkN1cnNvci5ORVhUIiwgIjAiKTsKKyAgICBzaG91bGRCZSgiSURCQ3Vyc29yLk5FWFRfTk9fRFVQ
TElDQVRFIiwgIjEiKTsKKyAgICBzaG91bGRCZSgiSURCQ3Vyc29yLlBSRVYiLCAiMiIpOworICAg
IHNob3VsZEJlKCJJREJDdXJzb3IuUFJFVl9OT19EVVBMSUNBVEUiLCAiMyIpOworCisgICAgc2hv
dWxkQmUoIklEQlRyYW5zYWN0aW9uLlJFQURfT05MWSIsICIwIik7CisgICAgc2hvdWxkQmUoIklE
QlRyYW5zYWN0aW9uLlJFQURfV1JJVEUiLCAiMSIpOworICAgIHNob3VsZEJlKCJJREJUcmFuc2Fj
dGlvbi5WRVJTSU9OX0NIQU5HRSIsICIyIik7Cit9CisKK3Rlc3QoKTsKKworZmluaXNoSlNUZXN0
KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2NyZWF0ZS1hbmQtcmVtb3ZlLW9iamVjdC1zdG9y
ZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jcmVhdGUtYW5k
LXJlbW92ZS1vYmplY3Qtc3RvcmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjViYmUwZDI3ZDJmNDA0NjJiODY1
N2EzODJkNTQ5NWNlZGQzMDRjYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jcmVhdGUtYW5kLXJlbW92ZS1vYmplY3Qtc3RvcmUuanMK
QEAgLTAsMCArMSw2MiBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNj
cmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAg
aW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4
ZWREQidzIGNyZWF0ZSBhbmQgcmVtb3ZlT2JqZWN0U3RvcmUiKTsKKworZnVuY3Rpb24gdGVzdCgp
Cit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiaW5kZXhlZERCLm9wZW4oJ2NyZWF0ZS1hbmQtcmVtb3ZlLW9iamVjdC1zdG9yZScpIik7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQor
eworICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOworICAgIHNlbGYuZGIgPSBldmFsQW5kTG9n
KCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICB0ZXN0Q3JlYXRlQW5kUmVtb3ZlKCk7
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlc3VsdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNp
b24gMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRlc3RDcmVhdGVB
bmRSZW1vdmUoKTsKK30KKworZnVuY3Rpb24gdGVzdENyZWF0ZUFuZFJlbW92ZSgpCit7CisgICAg
ZGVidWcoIlRyeWluZyBjcmVhdGUiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCdkYi5j
cmVhdGVPYmplY3RTdG9yZSgic29tZSBvcyIpJywgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9B
TExPV0VEX0VSUiIpOworICAgIGRlYnVnKCJUcnlpbmcgcmVtb3ZlIik7CisgICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbignZGIuZGVsZXRlT2JqZWN0U3RvcmUoInNvbWUgb3MiKScsICJJREJEYXRh
YmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9FUlIiKTsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRh
YmFzZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9zID0gZXZh
bEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3RtcCcpIik7CisgICAgZXZhbEFuZEV4cGVj
dEV4Y2VwdGlvbigiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3RtcCcpIiwgIklEQkRhdGFiYXNlRXhj
ZXB0aW9uLkNPTlNUUkFJTlRfRVJSIik7CisKKyAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5z
ID0gZGIudHJhbnNhY3Rpb24oWyd0bXAnXSkiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
dHJhbnMub2JqZWN0U3RvcmUoJ3RtcCcpLmdldCgwKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gdHJ5T25jZU1vcmU7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIHRyeU9uY2VNb3JlKCkKK3sKKyAgICBzaG91bGRCZVVuZGVm
aW5lZCgiZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgdGVzdENyZWF0ZUFuZFJlbW92ZSgp
OworCisgICAgZGVidWcoIlRyeWluZyBjcmVhdGUgd2l0aCBzdG9yZSB0aGF0IGFscmVhZHkgZXhp
c3RzIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIuY3JlYXRlT2JqZWN0U3RvcmUo
J3RtcCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9BTExPV0VEX0VSUiIpOworICAgIGRl
YnVnKCJUcnlpbmcgcmVtb3ZlIHdpdGggc3RvcmUgdGhhdCBhbHJlYWR5IGV4aXN0cyIpOworICAg
IGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLmRlbGV0ZU9iamVjdFN0b3JlKCd0bXAnKSIsICJJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9FUlIiKTsKKworICAgIGZpbmlzaEpTVGVz
dCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2NyZWF0ZS1vYmplY3Qt
c3RvcmUtb3B0aW9ucy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9jcmVhdGUtb2JqZWN0LXN0b3JlLW9wdGlvbnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzEwZWJmYzgzMWNl
ZTJjMjZmYWVkMzRmN2RiMzI5NGQ3ZDYzNzhiMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jcmVhdGUtb2JqZWN0LXN0b3JlLW9wdGlv
bnMuanMKQEAgLTAsMCArMSw3NyBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGlt
cG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7
CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0
IEluZGV4ZWREQidzIGNyZWF0ZU9iamVjdFN0b3JlJ3MgdmFyaW91cyBvcHRpb25zIik7CisKK2Z1
bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2NyZWF0ZS1vYmplY3Qtc3RvcmUtb3B0
aW9ucycsICdkZXNjcmlwdGlvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3Vj
Y2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30K
KworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBl
dmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBjbGVhbkRhdGFiYXNlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKK3sKKyAgICBkZWxldGVBbGxP
YmplY3RTdG9yZXMoZGIpOworCisgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUo
J2EnLCB7a2V5UGF0aDogJ2EnfSkiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RT
dG9yZSgnYicpIik7CisKKyAgICBkZWJ1ZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2MnLCB7YXV0
b0luY3JlbWVudDogdHJ1ZX0pOyIpOworICAgIGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdjJywge2F1
dG9JbmNyZW1lbnQ6IHRydWV9KTsKKworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBk
Yi50cmFuc2FjdGlvbihbJ2EnLCAnYiddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwor
ICAgIHNob3VsZEJlKCJ0cmFucy5tb2RlIiwgIklEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUiKTsK
KworICAgIHJlcSA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdhJykucHV0KHsnYSc6
IDB9KSIpOworICAgIHJlcS5vbnN1Y2Nlc3MgPSBwdXRCOworICAgIHJlcS5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7CisKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uQ2xhc3Mo
ImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdkJywgJ2JhcicpOyIsICJUeXBlRXJyb3IiKTsKKyAgICBl
dmFsQW5kRXhwZWN0RXhjZXB0aW9uQ2xhc3MoImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdlJywgZmFs
c2UpOyIsICJUeXBlRXJyb3IiKTsKK30KKworZnVuY3Rpb24gcHV0QigpCit7CisgICAgcmVxID0g
ZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2InKS5wdXQoeydhJzogMH0sIDApIik7ICAv
LyBPT1BTCisgICAgcmVxLm9uc3VjY2VzcyA9IGdldEE7CisgICAgcmVxLm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZ2V0QSgpCit7CisgICAgcmVxID0g
ZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2EnKS5nZXQoMCkiKTsKKyAgICByZXEub25z
dWNjZXNzID0gZ2V0QjsKKyAgICByZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworfQorCitmdW5jdGlvbiBnZXRCKCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJl
c3VsdC5hIiwgInthOiAwfSIpOworCisgICAgcmVxID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0
U3RvcmUoJ2InKS5nZXQoMCkiKTsKKyAgICByZXEub25zdWNjZXNzID0gY2hlY2tCOworICAgIHJl
cS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNoZWNr
QigpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQuYSIsICJ7YTogMH0iKTsK
KworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL2NyZWF0ZU9iamVjdFN0b3JlLW5hbWUtYXJndW1lbnQtcmVxdWlyZWQuanMgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3JlYXRlT2JqZWN0U3RvcmUtbmFtZS1h
cmd1bWVudC1yZXF1aXJlZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOTU5ZmE3MjBlMmM0M2MwYmRhOGE2ZTU4
OTI2NjY1ODI3ODg0MzA2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL2NyZWF0ZU9iamVjdFN0b3JlLW5hbWUtYXJndW1lbnQtcmVxdWly
ZWQuanMKQEAgLTAsMCArMSwzNiBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGlt
cG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7
CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0
IEluZGV4ZWREQiBjcmVhdGVPYmplY3RTdG9yZSBuYW1lIGFyZ3VtZW50IGlzIHJlcXVpcmVkIik7
CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAg
ICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBU
ZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4o
bmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2Vz
czsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKwor
ZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5k
UG9wdWxhdGVPYmplY3RTdG9yZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSgp
Cit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIHNob3VsZFRocm93KCJk
Yi5jcmVhdGVPYmplY3RTdG9yZSgpOyIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0
KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2NyZWF0ZU9iamVjdFN0b3JlLW51bGwtbmFtZS5q
cyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jcmVhdGVPYmplY3RT
dG9yZS1udWxsLW5hbWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTE1NWE1MDM4ZDZlMDBhOTZmMmY4NWJkZmNk
OGI2MzdhYzI1YjllOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9jcmVhdGVPYmplY3RTdG9yZS1udWxsLW5hbWUuanMKQEAgLTAsMCAr
MSwzNyBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4u
Ly4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2Ny
aXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBjcmVh
dGVPYmplY3RTdG9yZSBudWxsIGhhbmRsaW5nIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAg
IHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRo
bmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQorewor
ICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZTsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
Y3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3Rv
cmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0
U3RvcmUobnVsbCk7Iik7CisgICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLm5hbWUiLCAiJ251bGwn
Iik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvY3Vyc29yLWNvbnRpbnVlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL2N1cnNvci1jb250aW51ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NGIwZWY4YTc4ZmY0N2Vj
NjNmMDQ1OGMzZGU2MDAyZGNlNTUzOTRkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1jb250aW51ZS5qcwpAQCAtMCwwICsx
LDI3MCBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4u
Ly4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2Ny
aXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIElE
QkN1cnNvci5jb250aW51ZSgpIHdpdGggYSBrZXkgcGFyYW1ldGVyLiIpOworCit2YXIgZGF0ZSA9
IG5ldyBEYXRlKCk7CisKKy8vIEluIG9yZGVyIG9mIGhvdyBpdCBzaG91bGQgYmUgc29ydGVkIGJ5
IEluZGV4ZWREQi4KK3NlbGYudGVzdERhdGEgPSBbCisgICAgMCwKKyAgICAxLAorICAgIDEsCisg
ICAgMy4xNDE1OSwKKyAgICAzLjE0MTU5LAorICAgIDEwLAorICAgIDExLAorICAgIDEyLAorICAg
IDEzLAorICAgIGRhdGUsCisgICAgZGF0ZSwKKyAgICBuZXcgRGF0ZShkYXRlLnZhbHVlT2YoKSAr
IDEwMDApLAorICAgICJBIGJpZyBzdHJpbmciLAorICAgICJBIGJpZyBzdHJpbmciLAorICAgICJB
IGJpdDEiLAorICAgICJBIGJpdDIiLAorICAgICJBIGJpdDMiLAorICAgICJ0aGUgQklHR0VTVCBz
dHJpbmciCitdOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhl
cygpOworICAgIG9wZW5EYXRhYmFzZSgpOworfQorCitmdW5jdGlvbiBvcGVuRGF0YWJhc2UoKQor
eworICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdjdXJzb3ItY29udGlu
dWUnKSIpOworICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uOworICAgIHJlc3VsdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNp
b24oKQoreworICAgIHNlbGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKKworICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJz
aW9uJykiKTsKKyAgICByZXN1bHQub25zdWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7CisgICAgcmVz
dWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVs
ZXRlRXhpc3RpbmcoKQoreworICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7
CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworCisgICAgZGVs
ZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIHNlbGYub2JqZWN0U3RvcmUgPSBldmFsQW5k
TG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc29tZU9iamVjdFN0b3JlJykiKTsKKyAgICBzZWxm
LmluZGV4T2JqZWN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ3NvbWVJ
bmRleCcsICd4JykiKTsKKyAgICBzZWxmLm5leHRUb0FkZCA9IDA7CisgICAgYWRkRGF0YSgpOwor
fQorCitmdW5jdGlvbiBhZGREYXRhKCkKK3sKKyAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZS5hZGQoeyd4JzogdGVzdERhdGFbbmV4dFRvQWRkXX0sIG5leHRUb0FkZCkiKTsKKyAg
ICByZXN1bHQub25zdWNjZXNzID0gKytzZWxmLm5leHRUb0FkZCA8IHRlc3REYXRhLmxlbmd0aCA/
IGFkZERhdGEgOiBhc2NlbmRpbmdUZXN0OworICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGFzY2VuZGluZ1Rlc3QoKQoreworICAgIGRl
YnVnKCIiKTsKKyAgICB2YXIgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0Lm9wZW5L
ZXlDdXJzb3IobnVsbCwgSURCQ3Vyc29yLk5FWFQpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBhc2NlbmRpbmdDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICBzZWxmLnN0YWdlID0gMDsKK30KKworZnVuY3Rpb24gYXNjZW5kaW5n
Q2FsbGJhY2soKQorCit7CisgICAgaWYgKHNlbGYuc3RhZ2UgPT0gMCkgeworICAgICAgICBzaG91
bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjAiKTsKKyAgICAgICAgZXZh
bEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgzLjE0MTU5KSIpOworICAgIH0g
ZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSAxKSB7CisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJn
ZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMyIpOworICAgICAgICBldmFsQW5kTG9nKCJldmVudC50
YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKKyAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0g
MikgeworICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5Iiwg
IjQiKTsKKyAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgp
Iik7CisgICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDMpIHsKKyAgICAgICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICI1Iik7CisgICAgICAgIGV2YWxBbmRM
b2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoMTIpIik7CisgICAgfSBlbHNlIGlmIChz
ZWxmLnN0YWdlID09IDQpIHsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQu
cHJpbWFyeUtleSIsICI3Iik7CisgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1
bHQuY29udGludWUoZGF0ZSkiKTsKKyAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gNSkgewor
ICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjkiKTsK
KyAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7Cisg
ICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDYpIHsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50
LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIxMCIpOworICAgICAgICBldmFsQW5kTG9nKCJl
dmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKKyAgICB9IGVsc2UgaWYgKHNlbGYuc3Rh
Z2UgPT0gNykgeworICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5
S2V5IiwgIjExIik7CisgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29u
dGludWUoJ0EgYml0MScpIik7CisgICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDgpIHsKKyAg
ICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIxNCIpOwor
ICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCdBIGJpdDMn
KSIpOworICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSA5KSB7CisgICAgICAgIHNob3VsZEJl
KCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMTYiKTsKKyAgICAgICAgZXZhbEFu
ZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgndGhlIEJJR0dFU1Qgc3RyaW5nJyki
KTsKKyAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gMTApIHsKKyAgICAgICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIxNyIpOworICAgICAgICBldmFsQW5k
TG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKKyAgICB9IGVsc2UgaWYgKHNl
bGYuc3RhZ2UgPT0gMTEpIHsKKyAgICAgICAgc2hvdWxkQmVOdWxsKCJldmVudC50YXJnZXQucmVz
dWx0Iik7CisgICAgICAgIGRlc2NlbmRpbmdUZXN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
IGVsc2UgeworICAgICAgICB0ZXN0RmFpbGVkKCJJbGxlZ2FsIHN0YWdlLiIpOworICAgIH0KKyAg
ICBzZWxmLnN0YWdlKys7Cit9CisKK2Z1bmN0aW9uIGRlc2NlbmRpbmdUZXN0KCkKK3sKKyAgICBk
ZWJ1ZygiIik7CisgICAgdmFyIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5vcGVu
S2V5Q3Vyc29yKG51bGwsIElEQkN1cnNvci5QUkVWKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZGVzY2VuZGluZ0NhbGxiYWNrOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworICAgIHNlbGYuc3RhZ2UgPSAwOworfQorCitmdW5jdGlvbiBkZXNjZW5k
aW5nQ2FsbGJhY2soKQoreworICAgIGlmIChzZWxmLnN0YWdlID09IDApIHsKKyAgICAgICAgc2hv
dWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIxNyIpOworICAgICAgICBl
dmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCdBIGJpdDInKSIpOworICAg
IH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSAxKSB7CisgICAgICAgIHNob3VsZEJlKCJldmVudC50
YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMTUiKTsKKyAgICAgICAgZXZhbEFuZExvZygiZXZl
bnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7CisgICAgfSBlbHNlIGlmIChzZWxmLnN0YWdl
ID09IDIpIHsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtl
eSIsICIxNCIpOworICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRp
bnVlKGRhdGUpIik7CisgICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDMpIHsKKyAgICAgICAg
c2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIxMCIpOworICAgICAg
ICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKKyAgICB9IGVs
c2UgaWYgKHNlbGYuc3RhZ2UgPT0gNCkgeworICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0
LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjkiKTsKKyAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFy
Z2V0LnJlc3VsdC5jb250aW51ZSgxKSIpOworICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSA1
KSB7CisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAi
MiIpOworICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCki
KTsKKyAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gNikgeworICAgICAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjEiKTsKKyAgICAgICAgZXZhbEFuZExv
ZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7CisgICAgfSBlbHNlIGlmIChzZWxm
LnN0YWdlID09IDcpIHsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJp
bWFyeUtleSIsICIwIik7CisgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQu
Y29udGludWUoKSIpOworICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSA4KSB7CisgICAgICAg
IHNob3VsZEJlTnVsbCgiZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgICAgICBhc2NlbmRpbmdF
cnJvclRlc3RMZXNzVGhhbigpOworICAgICAgICByZXR1cm47CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgdGVzdEZhaWxlZCgiSWxsZWdhbCBzdGFnZS4iKTsKKyAgICB9CisgICAgc2VsZi5zdGFnZSsr
OworfQorCitmdW5jdGlvbiBhc2NlbmRpbmdFcnJvclRlc3RMZXNzVGhhbigpCit7CisgICAgZGVi
dWcoIiIpOworICAgIHZhciByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhPYmplY3Qub3Blbktl
eUN1cnNvcihudWxsLCBJREJDdXJzb3IuTkVYVCkiKTsKKyAgICBzZWxmLnN0YWdlID0gMDsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAoc2VsZi5zdGFnZSA9PT0gMCkg
eworICAgICAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIs
ICIwIik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRp
bnVlKDMuMTQxNTkpIik7CisgICAgICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSAxKSB7Cisg
ICAgICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjMi
KTsKKyAgICAgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImV2ZW50LnRhcmdldC5yZXN1
bHQuY29udGludWUoMSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKyAgICAg
ICAgICAgIGFzY2VuZGluZ0Vycm9yVGVzdEVxdWFsKCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgIHRlc3RGYWlsZWQoIklsbGVnYWwgc3RhZ2UuIik7
CisgICAgICAgIH0KKyAgICAgICAgc2VsZi5zdGFnZSsrOworICAgIH07Cit9CisKK2Z1bmN0aW9u
IGFzY2VuZGluZ0Vycm9yVGVzdEVxdWFsKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgdmFyIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5vcGVuS2V5Q3Vyc29yKG51bGwsIElEQkN1
cnNvci5ORVhUKSIpOworICAgIHNlbGYuc3RhZ2UgPSAwOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24oKSB7CisgICAgICAgIGlmIChzZWxmLnN0YWdlID09PSAwKSB7CisgICAgICAgICAgICBzaG91
bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjAiKTsKKyAgICAgICAgICAg
IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoMy4xNDE1OSkiKTsKKyAg
ICAgICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDEpIHsKKyAgICAgICAgICAgIHNob3VsZEJl
KCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMyIpOworICAgICAgICAgICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgzLjE0MTU5
KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworICAgICAgICAgICAgZGVzY2Vu
ZGluZ0Vycm9yVGVzdEdyZWF0ZXJUaGFuKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgIHRlc3RGYWlsZWQoIklsbGVnYWwgc3RhZ2UuIik7CisgICAg
ICAgIH0KKyAgICAgICAgc2VsZi5zdGFnZSsrOworICAgIH07Cit9CisKK2Z1bmN0aW9uIGRlc2Nl
bmRpbmdFcnJvclRlc3RHcmVhdGVyVGhhbigpCit7CisgICAgZGVidWcoIiIpOworICAgIHZhciBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhPYmplY3Qub3BlbktleUN1cnNvcihudWxsLCBJREJD
dXJzb3IuUFJFVikiKTsKKyAgICBzZWxmLnN0YWdlID0gMDsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0
aW9uKCkgeworICAgICAgICBpZiAoc2VsZi5zdGFnZSA9PSAwKSB7CisgICAgICAgICAgICBzaG91
bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjE3Iik7CisgICAgICAgICAg
ICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCdBIGJpdDInKSIpOwor
ICAgICAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gMSkgeworICAgICAgICAgICAgc2hvdWxk
QmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIxNSIpOworICAgICAgICAgICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgnQSBi
aXQzJykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKyAgICAgICAgICAgIGRl
c2NlbmRpbmdFcnJvclRlc3RFcXVhbCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICB0ZXN0RmFpbGVkKCJJbGxlZ2FsIHN0YWdlLiIpOworICAgICAg
ICB9CisgICAgICAgIHNlbGYuc3RhZ2UrKzsKKyAgICB9OworfQorCitmdW5jdGlvbiBkZXNjZW5k
aW5nRXJyb3JUZXN0RXF1YWwoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICB2YXIgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImluZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3IobnVsbCwgSURCQ3Vyc29yLlBS
RVYpIik7CisgICAgc2VsZi5zdGFnZSA9IDA7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsK
KyAgICAgICAgaWYgKHNlbGYuc3RhZ2UgPT0gMCkgeworICAgICAgICAgICAgc2hvdWxkQmUoImV2
ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIxNyIpOworICAgICAgICAgICAgZXZhbEFu
ZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgnQSBiaXQyJykiKTsKKyAgICAgICAg
fSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDEpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJldmVu
dC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMTUiKTsKKyAgICAgICAgICAgIGV2YWxBbmRM
b2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICAgICAgICAgIGV2YWxBbmRF
eHBlY3RFeGNlcHRpb24oImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoJ0EgYml0MicpIiwg
IklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisgICAgICAgICAgICBzZWxmLnRyYW5z
Lm9uY29tcGxldGUgPSBvblRyYW5zYWN0aW9uQ29tcGxldGU7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgIHRlc3RGYWlsZWQoIklsbGVnYWwgc3RhZ2Uu
Iik7CisgICAgICAgIH0KKyAgICAgICAgc2VsZi5zdGFnZSsrOworICAgIH07Cit9CisKK2Z1bmN0
aW9uIG9uVHJhbnNhY3Rpb25Db21wbGV0ZSgpCit7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlv
bigiY3Vyc29yLmNvbnRpbnVlKCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05f
SU5BQ1RJVkVfRVJSIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItZGVs
ZXRlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1k
ZWxldGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZGI2ZTJiOTM1NDhhM2E0OWRiNTRiMGQ3MjAwMTU4ODRjMTJl
YjMzNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9jdXJzb3ItZGVsZXRlLmpzCkBAIC0wLDAgKzEsMTA1IEBACitpZiAodGhpcy5pbXBv
cnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30K
KworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mgb3BlbkN1cnNvci4iKTsKKwordGVzdCgp
OworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignY3Vyc29yLWRlbGV0ZScpIik7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3Mo
KQoreworICAgIHZhciBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIp
OworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9u
JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb25TdWNjZXNzOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBz
ZXRWZXJzaW9uU3VjY2VzcygpCit7CisgICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7
CisgICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKyAgICB0cmFucy5vbmFi
b3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IG9w
ZW5DdXJzb3I7CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgdmFyIG9i
amVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9y
ZSgndGVzdCcpIik7CisgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlMScs
ICdteUtleTEnKSIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnbXlWYWx1ZTIn
LCAnbXlLZXkyJykiKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ215VmFsdWUz
JywgJ215S2V5MycpIik7CisgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCdteVZhbHVl
NCcsICdteUtleTQnKSIpOworfQorCitmdW5jdGlvbiBvcGVuQ3Vyc29yKCkKK3sKKyAgICBkZWJ1
Zygib3BlbkN1cnNvcjEiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9u
KFsndGVzdCddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIGtleVJhbmdlID0g
SURCS2V5UmFuZ2UubG93ZXJCb3VuZCgibXlLZXkxIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInRyYW5zLm9iamVjdFN0b3JlKCd0ZXN0Jykub3BlbkN1cnNvcih7cmFuZ2U6IGtleVJhbmdl
fSkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvclN1Y2Nlc3M7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgY291bnRlciA9IDE7Cit9
CisKK2Z1bmN0aW9uIGN1cnNvclN1Y2Nlc3MoKQoreworICAgIGlmIChldmVudC50YXJnZXQucmVz
dWx0ID09IG51bGwpIHsKKyAgICAgICAgc2hvdWxkQmUoImNvdW50ZXIiLCAiNSIpOworICAgICAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ3Rlc3QnKS5vcGVuQ3Vy
c29yKGtleVJhbmdlKSIpOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvckVtcHR5
OworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0
LmRlbGV0ZSgpIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVz
dWx0LnZhbHVlIiwgIm15VmFsdWUiICsgY291bnRlcisrKTsKKyAgICBldmFsQW5kTG9nKCJldmVu
dC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKK30KKworZnVuY3Rpb24gY3Vyc29yRW1wdHko
KQoreworICAgIHNob3VsZEJlTnVsbCgiZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHRyYW5z
Lm9uY29tcGxldGUgPSBhZGRPYmplY3Q7Cit9CisKK2Z1bmN0aW9uIGFkZE9iamVjdCgpCit7Cisg
ICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3Rlc3QnXSwgSURCVHJhbnNh
Y3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVj
dFN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3Rlc3QnKSIpOworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ215VmFsdWUxJywgJ215S2V5MScpIik7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBvcGVuQ3Vyc29yMjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlbkN1cnNvcjIoKQoreworICAg
IGRlYnVnKCJvcGVuQ3Vyc29yMiIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZS5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVs
ZXRlT2JqZWN0OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworfQorCitmdW5jdGlvbiBkZWxldGVPYmplY3QoKQoreworICAgIHNob3VsZEJlTm9uTnVsbChl
dmVudC50YXJnZXQucmVzdWx0KTsKKyAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0
LmRlbGV0ZSgpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmdldCgn
bXlLZXkxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHZlcmlmeU9iamVjdERlbGV0ZWQ7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIHZlcmlmeU9iamVjdERlbGV0ZWQoKQoreworICAgIHNob3VsZEJlKCJldmVudC50YXJn
ZXQucmVzdWx0IiwgInVuZGVmaW5lZCIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItaW5jb25zaXN0ZW5jeS5qcyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItaW5jb25zaXN0ZW5jeS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lMDY3NzlkN2I1ZTNmOTlkZjZjNTg2ZWRjMjdlNzQzYjk4MGVhNWI3Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1p
bmNvbnNpc3RlbmN5LmpzCkBAIC0wLDAgKzEsODUgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMp
IHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlw
dGlvbigiVGVzdCBjb25zaXN0ZW5jeSBvZiBJbmRleGVkREIncyBjdXJzb3Igb2JqZWN0cy4iKTsK
KwordGVzdCgpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhl
cygpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignY3Vyc29yLWlu
Y29uc2lzdGVuY3knKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0
aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICB2YXIgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJz
aW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9u
U3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
K30KKworZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJzZXRWZXJz
aW9uU3VjY2VzcygpOiIpOworICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7
CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5z
Lm9uY29tcGxldGUgPSBvcGVuQmFzaWNDdXJzb3I7CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9y
ZXMoZGIpOworCisgICAgdmFyIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUg
PSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnYmFzaWNTdG9yZScpIik7CisgICAgZXZhbEFuZExvZygi
b2JqZWN0U3RvcmUuYWRkKCdzb21lVmFsdWUxJywgJ3NvbWVLZXkxJykub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrIik7CisgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCdz
b21lVmFsdWUyJywgJ3NvbWVLZXkyJykub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
Iik7CisgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCdzb21lVmFsdWUzJywgJ3NvbWVL
ZXkzJykub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7CisgICAgZXZhbEFuZExv
Zygib2JqZWN0U3RvcmUuYWRkKCdzb21lVmFsdWU0JywgJ3NvbWVLZXk0Jykub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7CisKK30KKworZnVuY3Rpb24gb3BlbkJhc2ljQ3Vyc29y
KCkKK3sKKyAgICBkZWJ1Zygib3BlbkJhc2ljQ3Vyc29yKCkiKTsKKyAgICBldmFsQW5kTG9nKCJ0
cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnYmFzaWNTdG9yZSddLCBJREJUcmFuc2FjdGlvbi5SRUFE
X1dSSVRFKSIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsK
KyAgICB0cmFucy5vbmNvbXBsZXRlID0gdHJhbnNhY3Rpb25Db21wbGV0ZTsKKworICAgIGtleVJh
bmdlID0gSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgic29tZUtleTEiKTsKKyAgICBzZWxmLm9iamVj
dFN0b3JlID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2Jhc2ljU3RvcmUnKSIpOwor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKGtleVJhbmdl
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2hlY2tDdXJzb3I7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgY291bnRlciA9IDE7Cit9CisK
K3N0b3JlZEN1cnNvciA9IG51bGw7CitmdW5jdGlvbiBjaGVja0N1cnNvcigpCit7CisgICAgZGVi
dWcoIiIpCisgICAgZGVidWcoImNoZWNrQ3Vyc29yKCkiKTsKKyAgICBpZiAoZXZlbnQudGFyZ2V0
LnJlc3VsdCA9PSBudWxsKSB7CisgICAgICAgIHNob3VsZEJlKCJjb3VudGVyIiwgIjUiKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoc3RvcmVkQ3Vyc29yID09IG51bGwpCisgICAg
ICBzdG9yZWRDdXJzb3IgPSBldmFsQW5kTG9nKCJzdG9yZWRDdXJzb3IgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7CisKKyAgICBzaG91bGRCZVRydWUoInN0b3JlZEN1cnNvciA9PT0gZXZlbnQudGFy
Z2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3RvcmVkQ3Vyc29yLmtl
eSIsICJzb21lS2V5IiArIGNvdW50ZXIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZl
bnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAic29tZUtleSIgKyBjb3VudGVyKTsKKyAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoInN0b3JlZEN1cnNvci52YWx1ZSIsICJzb21lVmFsdWUiICsgY291bnRl
cik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LnZhbHVl
IiwgInNvbWVWYWx1ZSIgKyBjb3VudGVyKTsKKyAgICBjb3VudGVyKys7CisgICAgZXZhbEFuZExv
ZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7Cit9CisKK2Z1bmN0aW9uIHRyYW5z
YWN0aW9uQ29tcGxldGUoKQoreworICAgIGRlYnVnKCJ0cmFuc2FjdGlvbkNvbXBsZXRlKCkiKTsK
KyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWlu
ZGV4LWRlbGV0ZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9j
dXJzb3ItaW5kZXgtZGVsZXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZiZWVlYTIzYTEwZmY4MzE2YTQwNTUz
OTkxZDI5YmU1YmM4NjI3MGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWluZGV4LWRlbGV0ZS5qcwpAQCAtMCwwICsxLDEw
OSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0
cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIG9wZW5D
dXJzb3IuIik7CisKK3Rlc3QoKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVu
ZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4o
J2N1cnNvci1pbmRleC1kZWxldGUnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1
Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICB2YXIgZGIgPSBldmFsQW5kTG9nKCJk
YiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJk
Yi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBz
ZXRWZXJzaW9uU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQoreworICAgIGRlYnVn
KCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOworICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0
cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9
PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwor
ICAgIHRyYW5zLm9uY29tcGxldGUgPSBvcGVuQ3Vyc29yOworCisgICAgZGVsZXRlQWxsT2JqZWN0
U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUg
PSBkYi5jcmVhdGVPYmplY3RTdG9yZSgndGVzdCcpIik7CisgICAgZXZhbEFuZExvZygib2JqZWN0
U3RvcmUuY3JlYXRlSW5kZXgoJ3Rlc3RJbmRleCcsICd4JykiKTsKKworICAgIGV2YWxBbmRMb2co
Im9iamVjdFN0b3JlLmFkZCh7eDogMX0sICdteUtleTEnKSIpOworICAgIGV2YWxBbmRMb2coIm9i
amVjdFN0b3JlLmFkZCh7eDogMn0sICdteUtleTInKSIpOworICAgIGV2YWxBbmRMb2coIm9iamVj
dFN0b3JlLmFkZCh7eDogM30sICdteUtleTMnKSIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0
b3JlLmFkZCh7eDogNH0sICdteUtleTQnKSIpOworfQorCitmdW5jdGlvbiBvcGVuQ3Vyc29yKCkK
K3sKKyAgICBkZWJ1Zygib3BlbkN1cnNvcjEiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRi
LnRyYW5zYWN0aW9uKFsndGVzdCddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAg
IGtleVJhbmdlID0gSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgxKTsKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ3Rlc3QnKS5pbmRleCgndGVzdEluZGV4Jykub3Bl
bkN1cnNvcihrZXlSYW5nZSkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvclN1Y2Nl
c3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAg
Y291bnRlciA9IDE7Cit9CisKK2Z1bmN0aW9uIGN1cnNvclN1Y2Nlc3MoKQoreworICAgIGlmIChl
dmVudC50YXJnZXQucmVzdWx0ID09IG51bGwpIHsKKyAgICAgICAgc2hvdWxkQmUoImNvdW50ZXIi
LCAiNSIpOworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUo
J3Rlc3QnKS5pbmRleCgndGVzdEluZGV4Jykub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKKyAgICAg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3JFbXB0eTsKKyAgICAgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgdmFyIGRlbGV0ZVJlcXVlc3QgPSBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmRl
bGV0ZSgpIik7CisgICAgZGVsZXRlUmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgImNvdW50ZXIr
KyIpOworICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOwor
fQorCitmdW5jdGlvbiBjdXJzb3JFbXB0eSgpCit7CisgICAgc2hvdWxkQmVOdWxsKCJldmVudC50
YXJnZXQucmVzdWx0Iik7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IGFkZE9iamVjdDsKK30KKwor
ZnVuY3Rpb24gYWRkT2JqZWN0KCkKK3sKKyAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5z
YWN0aW9uKFsndGVzdCddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIG9iamVj
dFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgndGVz
dCcpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCh7eDogMX0s
ICdteUtleTEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbkN1cnNvcjI7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IG9wZW5DdXJzb3IyKCkKK3sKKyAgICBkZWJ1Zygib3BlbkN1cnNvcjIiKTsKKyAgICBldmFsQW5k
TG9nKCJpbmRleCA9IGV2ZW50LnRhcmdldC5zb3VyY2UuaW5kZXgoJ3Rlc3RJbmRleCcpIik7Cisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4Lm9wZW5DdXJzb3Ioa2V5UmFuZ2UpIik7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVPYmplY3Q7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZU9iamVjdCgp
Cit7CisgICAgc2hvdWxkQmVOb25OdWxsKGV2ZW50LnRhcmdldC5yZXN1bHQpOworICAgIGV2YWxB
bmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuZGVsZXRlKCkiKTsKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiaW5kZXguZ2V0KDEpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB2ZXJpZnlP
YmplY3REZWxldGVkOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworfQorCitmdW5jdGlvbiB2ZXJpZnlPYmplY3REZWxldGVkKCkKK3sKKyAgICBzaG91bGRC
ZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ1bmRlZmluZWQiKTsKKyAgICBmaW5pc2hKU1Rlc3Qo
KTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWtleS1vcmRlci5qcyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3Ita2V5LW9yZGVyLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjc1YzIxOTkzZmQ3MjBhYWY3NTUwNzY5NDExZWVhYmI1NmY0YzQwNjcKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vy
c29yLWtleS1vcmRlci5qcwpAQCAtMCwwICsxLDIyNSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0
cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2Ny
aXB0aW9uKCJUZXN0IEluZGV4ZWREQiBrZXlzIG9yZGVyaW5nIGFuZCByZWFkYmFjayBmcm9tIGN1
cnNvcnMuIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVz
KCk7CisKKyAgICBwcmVwYXJlRGF0YWJhc2UoKTsKK30KKworZnVuY3Rpb24gcHJlcGFyZURhdGFi
YXNlKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZXZhbEFuZExvZygib3BlbnJlcSA9IGluZGV4
ZWREQi5vcGVuKCdjdXJzb3Ita2V5LW9yZGVyJykiKTsKKyAgICBvcGVucmVxLm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBvcGVucmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KCkgeworICAgICAgICBldmFsQW5kTG9nKCJkYiA9IG9wZW5yZXEucmVzdWx0Iik7CisgICAgICAg
IGV2YWxBbmRMb2coInZlcnJlcSA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAgICAgICB2ZXJy
ZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICB2ZXJyZXEub25z
dWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVP
YmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgICAgICAgICAgdmVycmVxLnJlc3VsdC5vbmNvbXBs
ZXRlID0gcG9wdWxhdGVTdG9yZTsKKyAgICAgICAgfTsKKyAgICB9OworfQorCitzZWxmLmtleXMg
PSBbCisgICAgIi1JbmZpbml0eSIsCisgICAgIi1OdW1iZXIuTUFYX1ZBTFVFIiwKKyAgICAiLTEi
LAorICAgICItTnVtYmVyLk1JTl9WQUxVRSIsCisgICAgIjAiLAorICAgICJOdW1iZXIuTUlOX1ZB
TFVFIiwKKyAgICAiMSIsCisgICAgIk51bWJlci5NQVhfVkFMVUUiLAorICAgICJJbmZpbml0eSIs
CisKKyAgICAibmV3IERhdGUoMCkiLAorICAgICJuZXcgRGF0ZSgxMDAwKSIsCisgICAgIm5ldyBE
YXRlKDEzMTczOTk5MzEwMjMpIiwKKworICAgICInJyIsCisgICAgIidceDAwJyIsCisgICAgIidh
JyIsCisgICAgIidhYSciLAorICAgICInYiciLAorICAgICInYmEnIiwKKworICAgICInXHhBMici
LCAvLyBVKzAwQTIgQ0VOVCBTSUdOCisgICAgIidcdTZDMzQnIiwgLy8gVSs2QzM0IENKSyBVTklG
SUVEIElERU9HUkFQSCAod2F0ZXIpCisgICAgIidcdUQ4MzRcdUREMUUnIiwgLy8gVSsxRDExRSBN
VVNJQ0FMIFNZTUJPTCBHLUNMRUYgKFVURi0xNiBzdXJyb2dhdGUgcGFpcikKKyAgICAiJ1x1RkZG
RCciLCAvLyBVK0ZGRkQgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSCisKKyAgICAiW10iLAorCisgICAg
IlstSW5maW5pdHldIiwKKyAgICAiWy1OdW1iZXIuTUFYX1ZBTFVFXSIsCisgICAgIlstMV0iLAor
ICAgICJbLU51bWJlci5NSU5fVkFMVUVdIiwKKyAgICAiWzBdIiwKKyAgICAiW051bWJlci5NSU5f
VkFMVUVdIiwKKyAgICAiWzFdIiwKKyAgICAiW051bWJlci5NQVhfVkFMVUVdIiwKKyAgICAiW0lu
ZmluaXR5XSIsCisKKyAgICAiW25ldyBEYXRlKDApXSIsCisgICAgIltuZXcgRGF0ZSgxMDAwKV0i
LAorICAgICJbbmV3IERhdGUoMTMxNzM5OTkzMTAyMyldIiwKKworICAgICJbJyddIiwKKyAgICAi
WydceDAwJ10iLAorICAgICJbJ2EnXSIsCisgICAgIlsnYWEnXSIsCisgICAgIlsnYiddIiwKKyAg
ICAiWydiYSddIiwKKworICAgICJbJ1x4QTInXSIsIC8vIFUrMDBBMiBDRU5UIFNJR04KKyAgICAi
WydcdTZDMzQnXSIsIC8vIFUrNkMzNCBDSksgVU5JRklFRCBJREVPR1JBUEggKHdhdGVyKQorICAg
ICJbJ1x1RDgzNFx1REQxRSddIiwgLy8gVSsxRDExRSBNVVNJQ0FMIFNZTUJPTCBHLUNMRUYgKFVU
Ri0xNiBzdXJyb2dhdGUgcGFpcikKKyAgICAiWydcdUZGRkQnXSIsIC8vIFUrRkZGRCBSRVBMQUNF
TUVOVCBDSEFSQUNURVIKKworICAgICJbW11dIiwKKworICAgICJbW10sIFtdXSIsCisgICAgIltb
XSwgW10sIFtdXSIsCisKKyAgICAiW1tbXV1dIiwKKyAgICAiW1tbW11dXV0iCitdOworCitmdW5j
dGlvbiBjb21wYXJlKGEsIGIpCit7CisgICAgaWYgKHR5cGVvZiBhICE9PSB0eXBlb2YgYikgewor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc3dpdGNoICh0eXBlb2YgYSkgewor
ICAgICAgICBjYXNlICd1bmRlZmluZWQnOiAvLyBOb3QgdmFsaWQga2V5cywgYnV0IGNvbXBhcmUg
YW55d2F5LgorICAgICAgICBjYXNlICdib29sZWFuJzogLy8gTm90IHZhbGlkIGtleXMsIGJ1dCBj
b21wYXJlIGFueXdheS4KKyAgICAgICAgY2FzZSAnc3RyaW5nJzoKKyAgICAgICAgICAgIHJldHVy
biBhID09PSBiOworICAgICAgICBjYXNlICdudW1iZXInOgorICAgICAgICAgICAgaWYgKGEgPT09
IGIpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gKGEgIT09IDApIHx8ICgxIC8gYSA9PT0gMSAv
IGIpOyAvLyAwIGlzbid0IC0wCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IHJldHVybiBhICE9PSBhICYmIGIgIT09IGI7IC8vIE5hTiBpcyBOYU4KKyAgICAgICAgICAgIH0K
KyAgICAgICAgY2FzZSAnb2JqZWN0JzoKKyAgICAgICAgICAgIGlmIChhIGluc3RhbmNlb2YgRGF0
ZSAmJiBiIGluc3RhbmNlb2YgRGF0ZSkgeworICAgICAgICAgICAgICAgIHJldHVybiArYSA9PT0g
K2I7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGEgaW5zdGFuY2VvZiBBcnJheSAmJiBiIGluc3Rh
bmNlb2YgQXJyYXkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3Ro
KSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGlmICghY29tcGFyZShhW2ldLCBiW2ldKSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgLy8gRm9yIHRoZSBwdXJwb3NlcyBvZiB0aGlzIHRlc3QsIG90aGVyIG9i
amVjdHMgZG9uJ3QgY291bnQKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHBv
cHVsYXRlU3RvcmUoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygicG9wdWxhdGluZyBz
dG9yZS4uLiIpOworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3Jl
JywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9
IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpOyIpOworICAgIHRyYW5zLm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0
Q2FsbGJhY2s7CisgICAgdmFyIGNvdW50ID0gMDsKKyAgICBrZXlzLmZvckVhY2goZnVuY3Rpb24o
a2V5KSB7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgiICsgKGNvdW50KyspICsgIiwg
IiArIGtleSArICIpIik7CisgICAgfSk7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IGNoZWNrU3Rv
cmU7Cit9CisKK2Z1bmN0aW9uIGNoZWNrU3RvcmUoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBk
ZWJ1ZygiaXRlcmF0aW5nIGN1cnNvci4uLiIpOworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIu
dHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKSIpOworICAgIGV2
YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7Iik7CisgICAgdHJh
bnMub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRyYW5zLm9uYWJvcnQg
PSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICBldmFsQW5kTG9nKCJjb3VudCA9IDAiKTsK
KyAgICBjdXJyZXEgPSBldmFsQW5kTG9nKCJjdXJyZXEgPSBzdG9yZS5vcGVuQ3Vyc29yKCkiKTsK
KyAgICBjdXJyZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIGN1cnJl
cS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKGN1cnJlcS5yZXN1bHQpIHsK
KyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvciA9IGN1cnJlcS5yZXN1bHQiKTsKKyAgICAg
ICAgICAgIHNob3VsZEJlVHJ1ZSgiY29tcGFyZShjdXJzb3Iua2V5LCAiICsga2V5c1tjb3VudF0g
KyAiKSIpOworICAgICAgICAgICAgZXZhbEFuZExvZygiZ2V0cmVxID0gc3RvcmUuZ2V0KGN1cnNv
ci5rZXkpIik7CisgICAgICAgICAgICBnZXRyZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworICAgICAgICAgICAgZ2V0cmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiZ2V0cmVxLnJlc3VsdCA9PT0gY291bnQrKyIpOwor
ICAgICAgICAgICAgICAgIGN1cnNvci5jb250aW51ZSgpOworICAgICAgICAgICAgfTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiY291bnQgPT09IGtleXMubGVu
Z3RoIik7CisgICAgICAgICAgICBmaW5pc2hVcCgpOworICAgICAgICB9CisgICAgfTsKK30KKwor
ZnVuY3Rpb24gZmluaXNoVXAoKQoreworICAgIHRlc3RLZXlDb21wYXJlKCk7CisgICAgZmluaXNo
SlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RLZXlDb21wYXJlKCkKK3sKKyAgICBkZWJ1Zygi
Iik7CisgICAgZGVidWcoInZhbGlkYXRlIGNvbXBhcmUgZnVuY3Rpb24iKTsKKyAgICB2YXIgY2Fz
ZXMgPSBbCisgICAgICAgICJ1bmRlZmluZWQiLAorICAgICAgICAidHJ1ZSIsCisgICAgICAgICJm
YWxzZSIsCisgICAgICAgICIwIiwKKyAgICAgICAgIi0wIiwKKyAgICAgICAgIjEyMyIsCisgICAg
ICAgICJJbmZpbml0eSIsCisgICAgICAgICItSW5maW5pdHkiLAorICAgICAgICAiTmFOIiwKKyAg
ICAgICAgIicnIiwKKyAgICAgICAgIidhYmMnIiwKKyAgICAgICAgIid4eXonIiwKKyAgICAgICAg
Im5ldyBEYXRlKDApIiwKKyAgICAgICAgIm5ldyBEYXRlKDFlMykiLAorICAgICAgICAibmV3IERh
dGUoMWU5KSIsCisgICAgICAgICJbXSIsCisgICAgICAgICJbMTIzXSIsCisgICAgICAgICJbJ2Fi
YyddIiwKKyAgICAgICAgIlsxMjMsICdhYmMnXSIsCisgICAgICAgICJbJ2FiYycsIDEyM10iLAor
ICAgICAgICAiW1tdXSIsCisgICAgICAgICJbWzEyM11dIiwKKyAgICAgICAgIltbJ2FiYyddXSIs
CisgICAgICAgICJbWzEyM10sICdhYmMnXSIsCisgICAgICAgICJbWzEyM10sIDEyM10iCisgICAg
XTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2FzZXMubGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgZm9yICh2YXIgaiA9IDA7IGogPCBjYXNlcy5sZW5ndGg7ICsraikgeworICAgICAgICAgICAg
aWYgKGkgPT09IGopIHsKKyAgICAgICAgICAgICAgICBzaG91bGRCZVRydWUoImNvbXBhcmUoIiAr
IGNhc2VzW2ldICsgIiwgIiArIGNhc2VzW2pdICsgIikiKTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgc2hvdWxkQmVGYWxzZSgiY29tcGFyZSgiICsgY2FzZXNbaV0gKyAi
LCAiICsgY2FzZXNbal0gKyAiKSIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
fQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1wcmltYXJ5LWtleS1v
cmRlci5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3It
cHJpbWFyeS1rZXktb3JkZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODkyOTEwYzM2YmQzNGJiZGY4ODlmMzcy
YzY2NTZlMjVmYzQ2Y2Y0YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItcHJpbWFyeS1rZXktb3JkZXIuanMKQEAgLTAsMCAr
MSw5OCBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4u
Ly4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2Ny
aXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBwcmlt
YXJ5IGtleSBvcmRlcmluZyBhbmQgcmVhZGJhY2sgZnJvbSBjdXJzb3JzLiIpOworCitmdW5jdGlv
biB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgcHJlcGFyZURh
dGFiYXNlKCk7Cit9CisKK2Z1bmN0aW9uIHByZXBhcmVEYXRhYmFzZSgpCit7CisgICAgZGVidWco
IiIpOworICAgIGV2YWxBbmRMb2coIm9wZW5SZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oJ2N1cnNv
ci1wcmltYXJ5LWtleS1vcmRlcicpIik7CisgICAgb3BlblJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIG9wZW5SZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KCkgeworICAgICAgICBldmFsQW5kTG9nKCJkYiA9IG9wZW5SZXF1ZXN0LnJlc3VsdCIpOworICAg
ICAgICBldmFsQW5kTG9nKCJ2ZXJzaW9uQ2hhbmdlUmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEn
KSIpOworICAgICAgICB2ZXJzaW9uQ2hhbmdlUmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisgICAgICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnc3RvcmUnKSIpOworICAgICAgICAgICAgZXZhbEFuZExvZygiaW5kZXggPSBzdG9y
ZS5jcmVhdGVJbmRleCgnaW5kZXgnLCAnaW5kZXhLZXknKSIpOworCisgICAgICAgICAgICB2ZXJz
aW9uQ2hhbmdlUmVxdWVzdC5yZXN1bHQub25jb21wbGV0ZSA9IHBvcHVsYXRlU3RvcmU7CisgICAg
ICAgIH07CisgICAgfTsKK30KKworc2VsZi5rZXlzID0gWworICAgICItSW5maW5pdHkiLAorICAg
ICItMiIsCisgICAgIi0xIiwKKyAgICAiMCIsCisgICAgIjEiLAorICAgICIyIiwKKyAgICAiSW5m
aW5pdHkiLAorCisgICAgIicwJyIsCisgICAgIicxJyIsCisgICAgIicyJyIsCisgICAgIidBJyIs
CisgICAgIidCJyIsCisgICAgIidDJyIsCisgICAgIidhJyIsCisgICAgIidiJyIsCisgICAgIidj
JyIKK107CisKK2Z1bmN0aW9uIHBvcHVsYXRlU3RvcmUoKQoreworICAgIGRlYnVnKCIiKTsKKyAg
ICBkZWJ1ZygicG9wdWxhdGluZyBzdG9yZS4uLiIpOworICAgIGV2YWxBbmRMb2coInRyYW5zID0g
ZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAg
ICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpOyIpOworICAg
IHRyYW5zLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB0cmFucy5vbmFi
b3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdmFyIGNvdW50ID0gMDsKKyAgICB2
YXIgaW5kZXhLZXkgPSAwOworICAgIHZhciBrZXlzID0gc2VsZi5rZXlzLnNsaWNlKCk7CisgICAg
a2V5cy5yZXZlcnNlKCk7CisgICAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uKGtleSkgeworICAgICAg
ICB2YXIgdmFsdWUgPSB7IGluZGV4S2V5OiBpbmRleEtleSwgY291bnQ6IGNvdW50KysgfTsKKyAg
ICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCIgKyBKU09OLnN0cmluZ2lmeSh2YWx1ZSkgKyAi
LCAiICsga2V5ICsgIikiKTsKKyAgICB9KTsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gY2hlY2tT
dG9yZTsKK30KKworZnVuY3Rpb24gY2hlY2tTdG9yZSgpCit7CisgICAgZGVidWcoIiIpOworICAg
IGRlYnVnKCJpdGVyYXRpbmcgY3Vyc29yLi4uIik7CisgICAgZXZhbEFuZExvZygidHJhbnMgPSBk
Yi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7CisgICAg
ZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsiKTsKKyAgICBl
dmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmluZGV4KCdpbmRleCcpOyIpOworICAgIHRyYW5zLm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5l
eHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgY3Vyc29yUmVxdWVzdCA9IGV2YWxBbmRMb2coImN1
cnNvclJlcXVlc3QgPSBpbmRleC5vcGVuQ3Vyc29yKCkiKTsKKyAgICBldmFsQW5kTG9nKCJjb3Vu
dCA9IDAiKTsKKyAgICB2YXIgaW5kZXhLZXkgPSAwOworICAgIGN1cnNvclJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIGN1cnNvclJlcXVlc3Qub25zdWNjZXNz
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGlmIChjdXJzb3JSZXF1ZXN0LnJlc3VsdCkgeworICAg
ICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yID0gY3Vyc29yUmVxdWVzdC5yZXN1bHQiKTsKKyAg
ICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgU3RyaW5nKGluZGV4S2V5KSk7CisgICAg
ICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCBzZWxmLmtleXNbY291bnQrK10p
OworICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBzaG91bGRCZVRydWUoImNvdW50ID09PSBrZXlzLmxlbmd0aCIpOworICAgICAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKyAgICB9OworfQorCit0ZXN0KCk7ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1yZXZlcnNlLWJ1Zy5qcyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItcmV2ZXJzZS1idWcuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzA4ZWFkZWE4YzgzZGU0ODJmMTBmMDhkOGYwMjNiYmYwZjljMjk0MwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItcmV2
ZXJzZS1idWcuanMKQEAgLTAsMCArMSwxMDEgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsK
KyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlv
bigiVGVzdCBJbmRleGVkREIga2V5cyBvcmRlcmluZyBhbmQgcmVhZGJhY2sgZnJvbSBjdXJzb3Jz
LiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwor
CisgICAgcHJlcGFyZURhdGFiYXNlKCk7Cit9CisKK2Z1bmN0aW9uIHByZXBhcmVEYXRhYmFzZSgp
Cit7CisgICAgZGVidWcoIiIpOworICAgIGV2YWxBbmRMb2coIm9wZW5yZXEgPSBpbmRleGVkREIu
b3BlbignY3Vyc29yLXJldmVyc2UtYnVnJykiKTsKKyAgICBvcGVucmVxLm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBvcGVucmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkg
eworICAgICAgICBldmFsQW5kTG9nKCJkYiA9IG9wZW5yZXEucmVzdWx0Iik7CisgICAgICAgIGV2
YWxBbmRMb2coInZlcnJlcSA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAgICAgICB2ZXJyZXEu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICB2ZXJyZXEub25zdWNj
ZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIp
OworICAgICAgICAgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVj
dFN0b3JlKCdzdG9yZScpIik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJ
bmRleCgnaW5kZXgnLCAnJykiKTsKKyAgICAgICAgICAgIHZlcnJlcS5yZXN1bHQub25jb21wbGV0
ZSA9IHBvcHVsYXRlU3RvcmU7CisgICAgICAgIH07CisgICAgfTsKK30KKworZnVuY3Rpb24gcG9w
dWxhdGVTdG9yZSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJwb3B1bGF0aW5nIHN0
b3JlLi4uIik7CisgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUn
LCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlID0g
dHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7Iik7CisgICAgdHJhbnMub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRD
YWxsYmFjazsKKworICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgxLCAxKSIpOworICAgIGV2YWxB
bmRMb2coInN0b3JlLnB1dCgyLCAyKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgzLCAz
KSIpOworICAgIHRyYW5zLm9uY29tcGxldGUgPSB0ZXN0Q3Vyc29yOworfQorCit2YXIgdGVzdHMg
PSBbCisgICAgICAgICAgICAgICAge3VwcGVyQm91bmQ6IDcsIG9wZW46IGZhbHNlLCBleHBlY3Rl
ZDogM30sCisgICAgICAgICAgICAgICAge3VwcGVyQm91bmQ6IDcsIG9wZW46IHRydWUsICBleHBl
Y3RlZDogM30sCisgICAgICAgICAgICAgICAge3VwcGVyQm91bmQ6IDMsIG9wZW46IGZhbHNlLCBl
eHBlY3RlZDogM30sCisgICAgICAgICAgICAgICAge3VwcGVyQm91bmQ6IDMsIG9wZW46IHRydWUs
ICBleHBlY3RlZDogMn0KKyAgICAgICAgICAgIF07CisKK2Z1bmN0aW9uIHRlc3RDdXJzb3IoKQor
eworICAgIGRlYnVnKCJ0ZXN0Q3Vyc29yKCkiKTsKKworICAgIGlmICh0ZXN0cy5sZW5ndGggPT09
IDApIHsKKyAgICAgICAgZGVidWcoIk5vIG1vcmUgdGVzdHMuIik7CisgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdGVzdCA9IHRlc3RzLnNoaWZ0
KCk7CisKKyAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElE
QlRyYW5zYWN0aW9uLlJFQURfT05MWSkiKTsKKyAgICB0cmFucy5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxi
YWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSB0ZXN0Q3Vyc29yOworICAgIGV2YWxBbmRMb2co
InN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7Iik7CisgICAgZXZhbEFuZExvZygi
aW5kZXggPSBzdG9yZS5pbmRleCgnaW5kZXgnKTsiKTsKKworICAgIHZhciB0ZXN0RnVuY3Rpb24g
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOworICAgICAgICBpZiAoY3Vyc29yID09PSBudWxsKSB7CisgICAgICAgICAgICBk
ZWJ1ZygiY3Vyc29yIHNob3VsZCBub3QgYmUgbnVsbCIpOworICAgICAgICAgICAgZmFpbCgpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgc2hvdWxkQmUoImN1cnNv
ci5rZXkiLCAidGVzdC5leHBlY3RlZCIpOworICAgICAgICBpZiAoInZhbHVlIiBpbiBjdXJzb3Ip
CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgInRlc3QuZXhwZWN0ZWQiKTsK
KyAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgInRlc3QuZXhwZWN0ZWQiKTsK
KworICAgICAgICAvLyBMZXQgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaC4KKyAgICB9CisKKyAgICBk
ZWJ1ZygidXBwZXJCb3VuZDogIiArIHRlc3QudXBwZXJCb3VuZCArICIgb3BlbjogIiArIHRlc3Qu
b3BlbiArICIgZXhwZWN0ZWQ6ICIgKyB0ZXN0LmV4cGVjdGVkKTsKKyAgICBzdG9yZVJlcSA9IGV2
YWxBbmRMb2coInN0b3JlUmVxID0gc3RvcmUub3BlbkN1cnNvcihJREJLZXlSYW5nZS51cHBlckJv
dW5kKHRlc3QudXBwZXJCb3VuZCwgdGVzdC5vcGVuKSwgSURCQ3Vyc29yLlBSRVYpIik7CisgICAg
c3RvcmVSZXEub25zdWNjZXNzID0gdGVzdEZ1bmN0aW9uOworCisgICAgaW5kZXhSZXEgPSBldmFs
QW5kTG9nKCJpbmRleFJlcSA9IGluZGV4Lm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3Vu
ZCh0ZXN0LnVwcGVyQm91bmQsIHRlc3Qub3BlbiksIElEQkN1cnNvci5QUkVWKSIpOworICAgIGlu
ZGV4UmVxLm9uc3VjY2VzcyA9IHRlc3RGdW5jdGlvbjsKKworICAgIGluZGV4S2V5UmVxID0gZXZh
bEFuZExvZygiaW5kZXhLZXlSZXEgPSBpbmRleC5vcGVuS2V5Q3Vyc29yKElEQktleVJhbmdlLnVw
cGVyQm91bmQodGVzdC51cHBlckJvdW5kLCB0ZXN0Lm9wZW4pLCBJREJDdXJzb3IuUFJFVikiKTsK
KyAgICBpbmRleEtleVJlcS5vbnN1Y2Nlc3MgPSB0ZXN0RnVuY3Rpb247Cit9CisKK3Rlc3QoKTsK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXNraXAtZGVsZXRlZC5qcyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3Itc2tpcC1kZWxldGVkLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjYwZTRkNDFiYzUyNDRhNWQ1MzQ4YzFjMDMxNDk0ODAxM2E1MmI3ZDcKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vy
c29yLXNraXAtZGVsZXRlZC5qcwpAQCAtMCwwICsxLDE5MyBAQAoraWYgKHRoaXMuaW1wb3J0U2Ny
aXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rl
c2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGN1cnNvciBza2lwcyBkZWxldGVkIGVudHJpZXMu
Iik7CisKK3ZhciBuYW1lcyA9IFsnQWxwaGEnLCAnQnJhdm8nLCAnQ2hhcmxpZScsICdEZWx0YScs
ICdFY2hvJywgJ0ZveHRyb3QnLCAnR29sZicsCisgICAgICAgICAgICAgJ0hvdGVsJywgJ0luZGlh
JywgJ0p1bGlldCcsICdLaWxvJywgJ0xpbWEnLCAnTWlrZScsICdOb3ZlbWJlcicsCisgICAgICAg
ICAgICAgJ09zY2FyJywgJ1BhcGEnLCAnUXVlYmVjJywgJ1JvbWVvJywgJ1NpZXJyYScsICdUYW5n
bycsICdVbmlmb3JtJywKKyAgICAgICAgICAgICAnVmljdG9yJywgJ1doaXNrZXknLCAnWC1yYXkn
LCAnWWFua2VlJywgJ1p1bHUnXTsKKwordGVzdCgpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRl
eGVkREIub3BlbignY3Vyc29yLXNraXAtZGVsZXRlZCcpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIHZhciBkYiA9IGV2
YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IHNldFZlcnNpb25TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCit7
CisgICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7CisgICAgc2VsZi50cmFucyA9IGV2
YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1
ZSgidHJhbnMgIT09IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0
Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IGJhc2ljQ3Vyc29yVGVzdDsKKworICAg
IGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICB2YXIgb2JqZWN0U3RvcmUgPSBldmFs
QW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScsIHtrZXlQ
YXRoOiAnaWQnfSkiKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgn
bmFtZUluZGV4JywgJ25hbWUnKSIpOworICAgIHJlc2V0T2JqZWN0U3RvcmUoZnVuY3Rpb24oKSB7
fSk7Cit9CisKK3ZhciBzaWxlbnRFcnJvckhhbmRsZXIgPSBmdW5jdGlvbigpIHsgZXZlbnQucHJl
dmVudERlZmF1bHQoKTsgfQorCitmdW5jdGlvbiByZXNldE9iamVjdFN0b3JlKGNhbGxiYWNrKQor
eworICAgIGRlYnVnKCJcbnJlc2V0T2JqZWN0U3RvcmUoKToiKTsKKyAgICBpZiAoY2FsbGJhY2sg
PT09IHVuZGVmaW5lZCkKKyAgICAgICAgY2FsbGJhY2sgPSBmdW5jdGlvbiAoKSB7fTsKKworICAg
IHZhciBvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpOworICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspCisgICAgICAgIG9iamVjdFN0b3JlLmRl
bGV0ZShpKS5vbmVycm9yID0gc2lsZW50RXJyb3JIYW5kbGVyOworICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspCisgICAgICAgIG9iamVjdFN0b3JlLmFkZCh7aWQ6IGks
IG5hbWU6IG5hbWVzW2ldfSkub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworCisg
ICAgZGVidWcoIiIpOworICAgIGNhbGxiYWNrKCk7Cit9CisKK2Z1bmN0aW9uIGNvbnRhaW5zKGFy
ciwgb2JqKQoreworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICAgIGlmIChhcnJbaV0gPT0gb2JqKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorICAgIHJldHVybiBmYWxzZTsKK30KKwordmFyIGN1cnNvcjsKK3ZhciBkZWxldGVkOwordmFy
IHNlZW47CisKK2Z1bmN0aW9uIHRlc3RDdXJzb3IoZGVsZXRlTGlzdCwgY3JlYXRlQ3Vyc29yQ29t
bWFuZCwgY2FsbGJhY2spCit7CisgICAgZGVidWcoIlxudGVzdEN1cnNvcigpOiIpOworICAgIGRl
bGV0ZWQgPSBbXTsKKyAgICBzZWVuID0gW107CisKKyAgICAvLyBDcmVhdGUgdGhlIGN1cnNvci4K
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZyhjcmVhdGVDdXJzb3JDb21tYW5kKTsKKworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9
PSBudWxsKSB7CisgICAgICAgICAgICAvLyBNYWtlIHN1cmUgd2UgaGF2ZSBzZWVuIGV2ZXJ5IG5v
bi1kZWxldGVkIGl0ZW0uCisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWVzLmxl
bmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKGNvbnRhaW5zKGRlbGV0ZWQsIGkpKQor
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIGlmICghY29u
dGFpbnMoc2VlbiwgaSkpCisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkN1cnNvciBk
aWQgbm90IHNlZSBpdGVtIHdpdGggaWQ6ICIgKyBpKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgLy8gTWFrZSBzdXJlIHdlIHVzZWQgZXZlcnkgcnVsZSBpbiB8ZGVsZXRlTGlzdHwuCisg
ICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0ZUxpc3QubGVuZ3RoOyBpKyspIHsK
KyAgICAgICAgICAgICAgICBpZiAoIWNvbnRhaW5zKHNlZW4sIGRlbGV0ZUxpc3RbaV0uaWQpKQor
ICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkZWxldGVMaXN0IHJ1bGUgd2l0aCBpZDog
IiArIGRlbGV0ZUxpc3RbaV0uaWQgKyAiIHdhcyBuZXZlciB1c2VkLiIpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgICAgICBjYWxsYmFjaygpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY3Vyc29yID0gZXZlbnQudGFy
Z2V0LnJlc3VsdDsKKyAgICAgICAgZGVidWcoZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS5pZCAr
ICI6ICIgKyBldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLm5hbWUpOworICAgICAgICBzZWVuLnB1
c2goZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS5pZCk7CisKKyAgICAgICAgLy8gTWFrZSBzdXJl
IHdlIGRvbid0IHNlZSBhbnkgZGVsZXRlZCBpdGVtcy4KKyAgICAgICAgaWYgKGNvbnRhaW5zKGRl
bGV0ZWQsIGV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUuaWQpKQorICAgICAgICAgICAgdGVzdEZh
aWxlZCgiQ3Vyc29yIGhpdCBwcmV2aW91c2x5IGRlbGV0ZWQgZWxlbWVudC4iKTsKKworICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0ZUxpc3QubGVuZ3RoOyBpKyspIHsKKyAgICAgICAg
ICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLmlkID09IGRlbGV0ZUxpc3RbaV0uaWQp
IHsKKyAgICAgICAgICAgICAgICAvLyBEZWxldGUgb2JqZWN0cyB0YXJnZXRlZCBieSB0aGlzIGlk
LgorICAgICAgICAgICAgICAgIHZhciB0YXJnZXRzID0gZGVsZXRlTGlzdFtpXS50YXJnZXRzOwor
ICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdGFyZ2V0cy5sZW5ndGg7IGorKykg
eworICAgICAgICAgICAgICAgICAgICBkZWxldGVkLnB1c2godGFyZ2V0c1tqXSk7CisgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gdHJhbnMub2JqZWN0
U3RvcmUoJ3N0b3JlJykuZGVsZXRlKCIgKyB0YXJnZXRzW2pdICsgIikiKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChqID09IHRhcmdldHMubGVuZ3RoIC0gMSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7IGN1cnNvci5jb250
aW51ZSgpOyB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGN1cnNvci5jb250aW51ZSgpOworICAg
IH0KK30KKworZnVuY3Rpb24gYmFzaWNDdXJzb3JUZXN0KCkKK3sKKyAgICBkZWJ1ZygiYmFzaWND
dXJzb3JUZXN0KCkiKTsKKworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24o
WydzdG9yZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIHRyYW5zLm9uYWJv
cnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gdHJh
bnNhY3Rpb25Db21wbGV0ZTsKKworICAgIHZhciBkZWxldGVzID0gW3tpZDogMSwgdGFyZ2V0czog
WzBdfSwKKyAgICAgICAgICAgICAgICAgICB7aWQ6IDIsIHRhcmdldHM6IFtuYW1lcy5sZW5ndGgg
LSAxXX0sCisgICAgICAgICAgICAgICAgICAge2lkOiAzLCB0YXJnZXRzOiBbNSw2LDddfSwKKyAg
ICAgICAgICAgICAgICAgICB7aWQ6IDEwLCB0YXJnZXRzOiBbMTBdfSwKKyAgICAgICAgICAgICAg
ICAgICB7aWQ6IDEyLCB0YXJnZXRzOiBbMTNdfSwKKyAgICAgICAgICAgICAgICAgICB7aWQ6IDE1
LCB0YXJnZXRzOiBbMTRdfSwKKyAgICAgICAgICAgICAgICAgICB7aWQ6IDIwLCB0YXJnZXRzOiBb
MTcsMThdfQorICAgICAgICAgICAgICAgICAgIF07CisKKyAgICB0ZXN0Q3Vyc29yKGRlbGV0ZXMs
ICJ0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLmxvd2Vy
Qm91bmQoMCkpIiwgZnVuY3Rpb24oKSB7IHJlc2V0T2JqZWN0U3RvcmUocmV2ZXJzZUN1cnNvclRl
c3QpOyB9KTsKK30KKworZnVuY3Rpb24gcmV2ZXJzZUN1cnNvclRlc3QoKQoreworICAgIGRlYnVn
KCJyZXZlcnNlQ3Vyc29yVGVzdCgpOiIpOworCisgICAgdmFyIGRlbGV0ZXMgPSBbe2lkOiAyNCwg
dGFyZ2V0czogW25hbWVzLmxlbmd0aCAtIDFdfSwKKyAgICAgICAgICAgICAgICAgICB7aWQ6IDIz
LCB0YXJnZXRzOiBbMF19LAorICAgICAgICAgICAgICAgICAgIHtpZDogMjIsIHRhcmdldHM6IFsy
MCwgMTksIDE4XX0sCisgICAgICAgICAgICAgICAgICAge2lkOiAxNSwgdGFyZ2V0czogWzE1XX0s
CisgICAgICAgICAgICAgICAgICAge2lkOiAxMywgdGFyZ2V0czogWzEyXX0sCisgICAgICAgICAg
ICAgICAgICAge2lkOiAxMCwgdGFyZ2V0czogWzExXX0sCisgICAgICAgICAgICAgICAgICAge2lk
OiA1LCB0YXJnZXRzOiBbNyw4XX0KKyAgICAgICAgICAgICAgICAgICBdOworCisgICAgdGVzdEN1
cnNvcihkZWxldGVzLCAidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykub3BlbkN1cnNvcihJREJL
ZXlSYW5nZS5sb3dlckJvdW5kKDApLCBJREJDdXJzb3IuUFJFVikiLCBmdW5jdGlvbigpIHsgcmVz
ZXRPYmplY3RTdG9yZShpbmRleEN1cnNvclRlc3QpOyB9KTsKK30KKworZnVuY3Rpb24gaW5kZXhD
dXJzb3JUZXN0KCkKK3sKKyAgICBkZWJ1ZygiaW5kZXhDdXJzb3JUZXN0KCk6Iik7CisKKyAgICB2
YXIgZGVsZXRlcyA9IFt7aWQ6IDEsIHRhcmdldHM6IFswXX0sCisgICAgICAgICAgICAgICAgICAg
e2lkOiAyLCB0YXJnZXRzOiBbbmFtZXMubGVuZ3RoIC0gMV19LAorICAgICAgICAgICAgICAgICAg
IHtpZDogMywgdGFyZ2V0czogWzUsNiw3XX0sCisgICAgICAgICAgICAgICAgICAge2lkOiAxMCwg
dGFyZ2V0czogWzEwXX0sCisgICAgICAgICAgICAgICAgICAge2lkOiAxMiwgdGFyZ2V0czogWzEz
XX0sCisgICAgICAgICAgICAgICAgICAge2lkOiAxNSwgdGFyZ2V0czogWzE0XX0sCisgICAgICAg
ICAgICAgICAgICAge2lkOiAyMCwgdGFyZ2V0czogWzE3LDE4XX0KKyAgICAgICAgICAgICAgICAg
ICBdOworCisgICAgdGVzdEN1cnNvcihkZWxldGVzLCAidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3Jl
JykuaW5kZXgoJ25hbWVJbmRleCcpLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgn
QWxwaGEnKSkiLCBmdW5jdGlvbigpIHsgfSk7Cit9CisKK2Z1bmN0aW9uIHRyYW5zYWN0aW9uQ29t
cGxldGUoKQoreworICAgIGRlYnVnKCJ0cmFuc2FjdGlvbkNvbXBsZXRlKCk6Iik7CisgICAgZmlu
aXNoSlNUZXN0KCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci11cGRhdGUtdmFs
dWUtYXJndW1lbnQtcmVxdWlyZWQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvY3Vyc29yLXVwZGF0ZS12YWx1ZS1hcmd1bWVudC1yZXF1aXJlZC5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hMWMyNzNkMmJlOGJlY2E2ZTBjYTBlNDljZDU0NzZjYTUwMGQ3ODNjCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci11
cGRhdGUtdmFsdWUtYXJndW1lbnQtcmVxdWlyZWQuanMKQEAgLTAsMCArMSw3MyBAQAoraWYgKHRo
aXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpz
Jyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBjdXJzb3IudXBkYXRlIHJlcXVp
cmVkIGFyZ3VtZW50cyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQ
cmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVz
Y3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxB
bmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IHRlc3RHcm91cDE7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDEoKQoreworICAgIGRlbGV0ZUFsbE9i
amVjdFN0b3JlcyhkYik7CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdhdXRvSW5jcmVtZW50JywgeyBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOyIp
OworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVu
Q3Vyc29yKCk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgIHRl
c3RHcm91cDIoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDIoKQoreworICAgIGtl
eXMgPSBldmFsQW5kTG9nKCJrZXlzID0gWzEsIC0xLCAwLCAxMCwgMjAwMCwgJ3EnLCAneicsICd0
d28nLCAnYicsICdhJ107Iik7CisKKyAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4
ID0gMDsiKTsKKworICAgIGZvciAoaSBpbiBrZXlzKSB7CisgICAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZCgnZm9vJywga2V5c1tpXSk7Iik7CisgICAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgaWYgKCsra2V5SW5kZXgg
PT0ga2V5cy5sZW5ndGgpIHsKKyAgICAgICAgICB0ZXN0R3JvdXAzKCk7CisgICAgICAgIH0KKyAg
ICAgIH07CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0R3JvdXAzKCkKK3sKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgeworICAgICAgICBjdXJzb3IgPSBldmFsQW5k
TG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgICAgICBpZiAoY3Vyc29y
KSB7CisgICAgICAgICAgICBzaG91bGRUaHJvdygiY3Vyc29yLnVwZGF0ZSgpOyIpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiY3Vyc29yIHdhcyBudWxsIik7Cisg
ICAgICAgIH0KKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQorfQorCit0ZXN0KCk7Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci11cGRhdGUuanMgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXVwZGF0ZS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YzBk
NTFiMTIxZGFiZWMzZWFlZGRiMjMxOWEyMDMwYzJmMGRmYWRhCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci11cGRhdGUuanMK
QEAgLTAsMCArMSwyMTYgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRT
Y3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAg
IGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRl
eGVkREIncyBjdXJzb3IgdXBkYXRlLiIpOworCit0ZXN0KCk7CisKK2Z1bmN0aW9uIHRlc3QoKQor
eworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImluZGV4ZWREQi5vcGVuKCdjdXJzb3ItdXBkYXRlJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgdmFyIGRiID0gZXZh
bEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb25TdWNjZXNzKCkKK3sK
KyAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKKyAgICBzZWxmLnRyYW5zID0gZXZh
bEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVl
KCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRD
YWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gb3BlbkJhc2ljQ3Vyc29yOworCisgICAg
ZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIHZhciBvYmplY3RTdG9yZSA9IGV2YWxB
bmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2Jhc2ljU3RvcmUnKSIp
OworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnbXlWYWx1ZTEnLCAnbXlLZXkxJyku
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7CisgICAgZXZhbEFuZExvZygib2Jq
ZWN0U3RvcmUuYWRkKCdteVZhbHVlMicsICdteUtleTInKS5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2siKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ215VmFsdWUz
JywgJ215S2V5MycpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOworICAgIGV2
YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnbXlWYWx1ZTQnLCAnbXlLZXk0Jykub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7CisKKyAgICB2YXIgb2JqZWN0U3RvcmUgPSBldmFs
QW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdhdXRvSW5jcmVtZW50
U3RvcmUnLCB7YXV0b0luY3JlbWVudDogdHJ1ZX0pIik7CisgICAgZXZhbEFuZExvZygib2JqZWN0
U3RvcmUuYWRkKCdmb28xJykub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7Cisg
ICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCdmb28yJykub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrIik7CisgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCdmb28z
Jykub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7CisgICAgZXZhbEFuZExvZygi
b2JqZWN0U3RvcmUuYWRkKCdmb280Jykub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
Iik7CisKKyAgICB2YXIgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdrZXlQYXRoU3RvcmUnLCB7a2V5UGF0aDogJ2lkJ30pIik7Cisg
ICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ251bWJlckluZGV4JywgJ251
bWJlcicpIik7CisgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKHtudW1iZXI6IDEsIGlk
OiAxfSkub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7CisgICAgZXZhbEFuZExv
Zygib2JqZWN0U3RvcmUuYWRkKHtudW1iZXI6IDIsIGlkOiAyfSkub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrIik7CisgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKHtudW1i
ZXI6IDMsIGlkOiAzfSkub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7CisgICAg
ZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKHtudW1iZXI6IDQsIGlkOiA0fSkub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7Cit9CisKK2Z1bmN0aW9uIG9wZW5CYXNpY0N1cnNv
cigpCit7CisgICAgZGVidWcoIm9wZW5CYXNpY0N1cnNvcigpIik7CisgICAgZXZhbEFuZExvZygi
dHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ2Jhc2ljU3RvcmUnLCAnYXV0b0luY3JlbWVudFN0b3Jl
JywgJ2tleVBhdGhTdG9yZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIHRy
YW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBs
ZXRlID0gdHJhbnNhY3Rpb25Db21wbGV0ZTsKKworICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2Uu
bG93ZXJCb3VuZCgibXlLZXkxIik7CisgICAgc2VsZi5vYmplY3RTdG9yZSA9IGV2YWxBbmRMb2co
InRyYW5zLm9iamVjdFN0b3JlKCdiYXNpY1N0b3JlJykiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygib2JqZWN0U3RvcmUub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGJhc2ljVXBkYXRlQ3Vyc29yOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIGNvdW50ZXIgPSAxOworfQorCitmdW5jdGlvbiBiYXNp
Y1VwZGF0ZUN1cnNvcigpCit7CisgICAgZGVidWcoImJhc2ljVXBkYXRlQ3Vyc29yKCkiKTsKKyAg
ICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnNvdXJjZSIsICJvYmplY3RTdG9yZSIpOworICAgIGlm
IChldmVudC50YXJnZXQucmVzdWx0ID09IG51bGwpIHsKKyAgICAgICAgc2hvdWxkQmUoImNvdW50
ZXIiLCAiNSIpOworICAgICAgICBjb3VudGVyID0gMTsKKworICAgICAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2Jhc2ljU3RvcmUnKS5vcGVuQ3Vyc29yKGtleVJh
bmdlKSIpOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGJhc2ljQ2hlY2tDdXJzb3I7Cisg
ICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImV2ZW50LnRhcmdl
dC5yZXN1bHQudXBkYXRlKCdteVVwZGF0ZWRWYWx1ZScgKyBjb3VudGVyKyspIik7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnNv
dXJjZS5jb250aW51ZSgpIik7IH0KKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gYmFzaWNDaGVja0N1cnNvcigpCit7CisgICAgZGVi
dWcoImJhc2ljQ2hlY2tDdXJzb3IoKSIpOworICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0ID09
IG51bGwpIHsKKyAgICAgICAgc2hvdWxkQmUoImNvdW50ZXIiLCAiNSIpOworICAgICAgICBjb3Vu
dGVyID0gMTsKKworICAgICAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQoMSk7
CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYXV0b0lu
Y3JlbWVudFN0b3JlJykub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKKyAgICAgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBhdXRvSW5jcmVtZW50VXBkYXRlQ3Vyc29yOworICAgICAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAi
bXlLZXkiICsgY291bnRlcik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJn
ZXQucmVzdWx0LnZhbHVlIiwgIm15VXBkYXRlZFZhbHVlIiArIGNvdW50ZXIrKyk7CisgICAgZXZh
bEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7Cit9CisKK2Z1bmN0aW9u
IGF1dG9JbmNyZW1lbnRVcGRhdGVDdXJzb3IoKQoreworICAgIGRlYnVnKCJhdXRvSW5jcmVtZW50
VXBkYXRlQ3Vyc29yKCkiKTsKKyAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBudWxsKSB7
CisgICAgICAgIHNob3VsZEJlKCJjb3VudGVyIiwgIjUiKTsKKyAgICAgICAgY291bnRlciA9IDE7
CisKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdhdXRv
SW5jcmVtZW50U3RvcmUnKS5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOworICAgICAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGF1dG9JbmNyZW1lbnRDaGVja0N1cnNvcjsKKyAgICAgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC51cGRhdGUo
J215VXBkYXRlZEZvbycgKyBjb3VudGVyKyspIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbigpIHsgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnNvdXJjZS5jb250aW51ZSgpIik7
IH0KKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKwor
ZnVuY3Rpb24gYXV0b0luY3JlbWVudENoZWNrQ3Vyc29yKCkKK3sKKyAgICBkZWJ1ZygiYXV0b0lu
Y3JlbWVudENoZWNrQ3Vyc29yKCkiKTsKKyAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBu
dWxsKSB7CisgICAgICAgIHNob3VsZEJlKCJjb3VudGVyIiwgIjUiKTsKKyAgICAgICAgY291bnRl
ciA9IDE7CisKKyAgICAgICAga2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKDEpOwor
ICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2tleVBhdGhT
dG9yZScpLm9wZW5DdXJzb3Ioa2V5UmFuZ2UpIik7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0ga2V5UGF0aFVwZGF0ZUN1cnNvcjsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaG91bGRC
ZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAiY291bnRlciIpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZSIsICJteVVwZGF0ZWRGb28iICsg
Y291bnRlcisrKTsKKyAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVl
KCkiKTsKK30KKworZnVuY3Rpb24ga2V5UGF0aFVwZGF0ZUN1cnNvcigpCit7CisgICAgZGVidWco
ImtleVBhdGhVcGRhdGVDdXJzb3IoKSIpOworICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0ID09
IG51bGwpIHsKKyAgICAgICAgc2hvdWxkQmUoImNvdW50ZXIiLCAiNSIpOworICAgICAgICBjb3Vu
dGVyID0gMTsKKworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3Rv
cmUoJ2tleVBhdGhTdG9yZScpLm9wZW5DdXJzb3Ioa2V5UmFuZ2UpIik7CisgICAgICAgIHJlcXVl
c3Qub25zdWNjZXNzID0ga2V5UGF0aENoZWNrQ3Vyc29yOworICAgICAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImV2ZW50LnRhcmdldC5yZXN1bHQudXBkYXRlKHtp
ZDogMTAwICsgY291bnRlciwgbnVtYmVyOiAxMDAgKyBjb3VudGVyfSkiLCAiSURCRGF0YWJhc2VF
eGNlcHRpb24uREFUQV9FUlIiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJldmVudC50
YXJnZXQucmVzdWx0LnVwZGF0ZSh7aWQ6IGNvdW50ZXIsIG51bWJlcjogMTAwICsgY291bnRlcisr
fSkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeyBldmFsQW5kTG9nKCJl
dmVudC50YXJnZXQuc291cmNlLmNvbnRpbnVlKCkiKSB9OworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBrZXlQYXRoQ2hlY2tDdXJz
b3IoKQoreworICAgIGRlYnVnKCJrZXlQYXRoQ2hlY2tDdXJzb3IoKSIpOworICAgIGlmIChldmVu
dC50YXJnZXQucmVzdWx0ID09IG51bGwpIHsKKyAgICAgICAgc2hvdWxkQmUoImNvdW50ZXIiLCAi
NSIpOworICAgICAgICBjb3VudGVyID0gMTsKKworICAgICAgICBrZXlSYW5nZSA9IElEQktleVJh
bmdlLmxvd2VyQm91bmQoMTAxKTsKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5z
Lm9iamVjdFN0b3JlKCdrZXlQYXRoU3RvcmUnKS5pbmRleCgnbnVtYmVySW5kZXgnKS5vcGVuS2V5
Q3Vyc29yKGtleVJhbmdlKSIpOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGtleUN1cnNv
cjsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3Vs
dC5rZXkiLCAiY291bnRlciIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnZh
bHVlLmlkIiwgImNvdW50ZXIiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC52
YWx1ZS5udW1iZXIiLCAoY291bnRlciArIDEwMCkudG9TdHJpbmcoKSk7CisgICAgY291bnRlcisr
OworICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOworfQor
CitmdW5jdGlvbiBrZXlDdXJzb3IoKQoreworICAgIGRlYnVnKCJrZXlDdXJzb3IoKSIpOworICAg
IGlmIChldmVudC50YXJnZXQucmVzdWx0ID09IG51bGwpIHsKKyAgICAgICAgc2hvdWxkQmUoImNv
dW50ZXIiLCAiNSIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2hvdWxkQmUoImV2
ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgImNvdW50ZXIgKyAxMDAiKTsKKyAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgImNvdW50ZXIiKTsKKworICAgIHRyeSB7
CisgICAgICAgIGRlYnVnKCJldmVudC50YXJnZXQucmVzdWx0LnVwZGF0ZSh7aWQ6IGNvdW50ZXIs
IG51bWJlcjogY291bnRlciArIDIwMH0pIik7CisgICAgICAgIGV2ZW50LnRhcmdldC5yZXN1bHQu
dXBkYXRlKHtpZDogY291bnRlciwgbnVtYmVyOiBjb3VudGVyICsgMjAwfSk7CisgICAgICAgIHRl
c3RGYWlsZWQoIkV4cGVjdGVkIGV4Y2VwdGlvbi4iKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAg
ICAgIGNvZGUgPSBlLmNvZGU7CisgICAgICAgIHNob3VsZEJlKCJjb2RlIiwgIklEQkRhdGFiYXNl
RXhjZXB0aW9uLk5PVF9BTExPV0VEX0VSUiIpOworICAgIH0KKworICAgIGNvdW50ZXIrKzsKKyAg
ICBldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCk7Cit9CisKK2Z1bmN0aW9uIHRyYW5zYWN0
aW9uQ29tcGxldGUoKQoreworICAgIGRlYnVnKCJ0cmFuc2FjdGlvbkNvbXBsZXRlKCkiKTsKKyAg
ICBmaW5pc2hKU1Rlc3QoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGF0YS1jb3JydXB0
aW9uLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGEtY29y
cnVwdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMTU1YjgzOGQyYTA3YTljNWNlNjRkMDNjNTZkY2Y4N2Uy
OWM1ODZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL2RhdGEtY29ycnVwdGlvbi5qcwpAQCAtMCwwICsxLDY1IEBACitpZiAodGhpcy5p
bXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsK
K30KKworZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBkYXRhIGluc2VydGVkIGludG8gSW5kZXhlZERC
IGRvZXMgbm90IGdldCBjb3JydXB0ZWQgb24gZGlzay4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7
CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
aW5kZXhlZERCLm9wZW4oJ2RhdGEtY29ycnVwdGlvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJvcGVu
U3VjY2VzcygpOiIpOworICAgIHNlbGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCdu
ZXcgdmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2Vz
czsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKwor
ZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJzZXRWZXJzaW9uU3Vj
Y2VzcygpOiIpOworICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAg
dHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zLm9uY29t
cGxldGUgPSBhZGREYXRhOworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAg
IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworfQorCit2
YXIgdGVzdERhdGUgPSBuZXcgRGF0ZSgnRmVicnVhcnkgMjQsIDE5NTUgMTI6MDA6MDgnKTsKKwor
ZnVuY3Rpb24gYWRkRGF0YSgpCit7CisgICAgZGVidWcoImFkZERhdGEoKToiKTsKKyAgICB2YXIg
dHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsn
c3RvcmVOYW1lJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgdmFyIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3Jl
TmFtZScpLmFkZCh7eDogdGVzdERhdGV9LCAna2V5JykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0g
Z2V0RGF0YTsKK30KKworZnVuY3Rpb24gZ2V0RGF0YSgpCit7CisgICAgZGVidWcoImFkZERhdGEo
KToiKTsKKyAgICB2YXIgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRi
LnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkiKTsK
KyAgICB2YXIgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSB0cmFuc2FjdGlvbi5vYmpl
Y3RTdG9yZSgnc3RvcmVOYW1lJykuZ2V0KCdrZXknKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZG9DaGVj
azsKK30KKworZnVuY3Rpb24gZG9DaGVjaygpCit7CisgICAgc2hvdWxkQmVUcnVlKCJldmVudC50
YXJnZXQucmVzdWx0LngudG9TdHJpbmcoKSA9PSB0ZXN0RGF0ZS50b1N0cmluZygpIik7CisgICAg
ZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGF0
YWJhc2UtYmFzaWNzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L2RhdGFiYXNlLWJhc2ljcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYTVhN2E3M2UxNGFlNTY1N2MxYTVhYzRm
NTQ1Njk3MGVkMmFiNDhkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL2RhdGFiYXNlLWJhc2ljcy5qcwpAQCAtMCwwICsxLDExNSBAQAor
aWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hh
cmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoZSBiYXNpY3Mgb2YgSW5kZXhlZERC
J3MgSURCRGF0YWJhc2UuIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRv
clByZWZpeGVzKCk7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4o
J2RhdGFiYXNlLWJhc2ljcycpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2Vz
czsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKwor
ZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIHNlbGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9
IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5z
ZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRW
ZXJzaW9uU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJz
ZXRWZXJzaW9uU3VjY2VzcygpOiIpOworICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFu
cyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBu
dWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworCisg
ICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIGRlYnVnKCJUZXN0aW5nIHNldFZl
cnNpb24uIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coJ2RiLnNldFZlcnNpb24oInZlcnNp
b24gYSIpJyk7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uQWdhaW47CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IHNldFZlcnNpb25BZ2FpbigpCit7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coJ2RiLnNldFZl
cnNpb24oInZlcnNpb24gYiIpJyk7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVPYmpl
Y3RTdG9yZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
K30KKworZnVuY3Rpb24gY3JlYXRlT2JqZWN0U3RvcmUoKQoreworICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygiZGIudmVyc2lvbiIsICJ2ZXJzaW9uIGIiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImRiLm5hbWUiLCAiZGF0YWJhc2UtYmFzaWNzIik7CisgICAgc2hvdWxkQmUoImRiLm9i
amVjdFN0b3JlTmFtZXMiLCAiW10iKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1l
cy5sZW5ndGgiLCAiMCIpOworICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRh
aW5zKCcnKSIsICJmYWxzZSIpOworICAgIHNob3VsZEJlTnVsbCgiZGIub2JqZWN0U3RvcmVOYW1l
c1swXSIpOworICAgIHNob3VsZEJlTnVsbCgiZGIub2JqZWN0U3RvcmVOYW1lcy5pdGVtKDApIik7
CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coJ2RiLmNyZWF0ZU9iamVjdFN0b3JlKCJ0
ZXN0MTIzIiknKTsKKyAgICBjaGVja09iamVjdFN0b3JlKCk7CisgICAgY29tbWl0QW5kQ29udGlu
dWUoKTsKK30KKworZnVuY3Rpb24gY2hlY2tPYmplY3RTdG9yZSgpCit7CisgICAgc2hvdWxkQmUo
ImRiLm9iamVjdFN0b3JlTmFtZXMiLCAiWyd0ZXN0MTIzJ10iKTsKKyAgICBzaG91bGRCZSgiZGIu
b2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMSIpOworICAgIHNob3VsZEJlKCJkYi5vYmplY3RT
dG9yZU5hbWVzLmNvbnRhaW5zKCcnKSIsICJmYWxzZSIpOworICAgIHNob3VsZEJlKCJkYi5vYmpl
Y3RTdG9yZU5hbWVzLmNvbnRhaW5zKCd0ZXN0NDU2JykiLCAiZmFsc2UiKTsKKyAgICBzaG91bGRC
ZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucygndGVzdDEyMycpIiwgInRydWUiKTsKK30K
KworZnVuY3Rpb24gY29tbWl0QW5kQ29udGludWUoKQoreworICAgIHNlbGYuc2V0VGltZW91dCh0
ZXN0U2V0VmVyc2lvbkFib3J0LCAwKTsKK30KKworZnVuY3Rpb24gdGVzdFNldFZlcnNpb25BYm9y
dCgpCit7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coJ2RiLnNldFZlcnNpb24oInZlcnNpb24g
YyIpJyk7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbm90aGVyT2JqZWN0U3RvcmU7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIGNyZWF0ZUFub3RoZXJPYmplY3RTdG9yZSgpCit7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJkYi52ZXJzaW9uIiwgInZlcnNpb24gYyIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygiZGIubmFtZSIsICJkYXRhYmFzZS1iYXNpY3MiKTsKKyAgICBjaGVja09iamVjdFN0b3Jl
KCk7CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coJ2RiLmNyZWF0ZU9iamVjdFN0b3Jl
KCJ0ZXN0NDU2IiknKTsKKyAgICB2YXIgc2V0VmVyc2lvblRyYW5zID0gZXZhbEFuZExvZygic2V0
VmVyc2lvblRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgi
c2V0VmVyc2lvblRyYW5zICE9PSBudWxsIik7CisgICAgc2V0VmVyc2lvblRyYW5zLm9uY29tcGxl
dGUgPSB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjazsKKyAgICBzZXRWZXJzaW9uVHJhbnMub25h
Ym9ydCA9IGNoZWNrTWV0YWRhdGE7CisgICAgc2V0VmVyc2lvblRyYW5zLmFib3J0KCk7Cit9CisK
K2Z1bmN0aW9uIGNoZWNrTWV0YWRhdGEoKQoreworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
ZGIudmVyc2lvbiIsICJ2ZXJzaW9uIGIiKTsKKyAgICBjaGVja09iamVjdFN0b3JlKCk7CisgICAg
dGVzdENsb3NlKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RDbG9zZSgpCit7CisgICAgZXZhbEFuZExv
ZygiZGIuY2xvc2UoKSIpOworICAgIGRlYnVnKCJOb3cgdGhhdCB0aGUgY29ubmVjdGlvbiBpcyBj
bG9zZWQsIHRyYW5zYWN0aW9uIGNyZWF0aW9uIHNob3VsZCBmYWlsIik7CisgICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oJ3Rlc3QxMjMnKSIsICJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5OT1RfQUxMT1dFRF9FUlIiKTsKKyAgICBkZWJ1ZygiQ2FsbCB0d2ljZSwgbWFrZSBz
dXJlIGl0J3MgaGFybWxlc3MiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5jbG9zZSgpIik7CisgICAg
ZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGF0
YWJhc2UtbmFtZS11bmRlZmluZWQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvZGF0YWJhc2UtbmFtZS11bmRlZmluZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGI2NDljYzVj
YTU3MzVmM2I0NWNlNTJhODBjNzk2ZGU4ZDJiYmFmNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kYXRhYmFzZS1uYW1lLXVuZGVmaW5l
ZC5qcwpAQCAtMCwwICsxLDE1IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1w
b3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsK
KyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3Qg
SW5kZXhlZERCIHVuZGVmaW5lZCBhcyByZWNvcmQgdmFsdWUiKTsKKworZnVuY3Rpb24gdGVzdCgp
Cit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBzaG91bGRUaHJvdygiaW5kZXhl
ZERCLm9wZW4oKTsiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9kYXRhYmFzZS1vZGQtbmFtZXMuanMgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGF0YWJhc2Utb2RkLW5hbWVzLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjM5NGYxZTc2ZWUyNTBjMjgwY2YxNTEyMDljOTJmMGE2NDIzMmE3NjMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGF0YWJhc2Utb2Rk
LW5hbWVzLmpzCkBAIC0wLDAgKzEsMzEgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAg
ICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigi
VGVzdCBJbmRleGVkREIgb2RkIHZhbHVlIGRhdGF0eXBlcyIpOworCitmdW5jdGlvbiB0ZXN0KCkK
K3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgdGVzdERhdGEgPSBbeyBkZXNj
cmlwdGlvbjogJ251bGwnLCAgICAgICAgICAgICAgIG5hbWU6ICdcdTAwMDAnIH0sCisgICAgICAg
ICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ2ZhaWh1JywgICAgICAgICAgICAgIG5hbWU6ICdcdWQ4
MDBcdWRmNDYnIH0sCisgICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ3VucGFpcmVkIHN1
cnJvZ2F0ZScsIG5hbWU6ICdcdWQ4MDAnIH0sCisgICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlv
bjogJ2ZmZmUnLCAgICAgICAgICAgICAgIG5hbWU6ICdcdWZmZmUnIH0sCisgICAgICAgICAgICAg
ICAgeyBkZXNjcmlwdGlvbjogJ2ZmZmYnLCAgICAgICAgICAgICAgIG5hbWU6ICdcdWZmZmYnIH0s
CisgICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ2xpbmUgc2VwYXJhdG9yJywgICAgIG5h
bWU6ICdcdTIwMjgnIH0KKyAgICBdOworICAgIG5leHRUb09wZW4gPSAwOworICAgIG9wZW5OZXh0
RGF0YWJhc2UoKTsKK30KKworZnVuY3Rpb24gb3Blbk5leHREYXRhYmFzZSgpCit7CisgICAgZGVi
dWcoIm9wZW5pbmcgYSBkYXRhYmFzZSBuYW1lZCAiICsgdGVzdERhdGFbbmV4dFRvT3Blbl0uZGVz
Y3JpcHRpb24pOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbih0ZXN0
RGF0YVtuZXh0VG9PcGVuXS5uYW1lLCB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5kZXNjcmlwdGlvbiki
KTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9ICsrbmV4dFRvT3BlbiA8IHRlc3REYXRhLmxlbmd0aCA/IG9wZW5O
ZXh0RGF0YWJhc2UgOiBmaW5pc2hKU1Rlc3Q7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvZGF0YWJhc2UtcXVvdGEuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvZGF0YWJhc2UtcXVvdGEuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWUwOTE1ZmQwMjI4ZTk5
MjlmZmNjNTZhMzA4ZDYwODQ4OTg2MGFlOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kYXRhYmFzZS1xdW90YS5qcwpAQCAtMCwwICsx
LDk3IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3Jp
cHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3RzIEluZGV4ZWREQidzIHF1
b3RhIGVuZm9yY2luZyBtZWNoYW5pc20uIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJl
bW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWRE
Qi5vcGVuKCdkYXRhYmFzZS1xdW90YScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVu
U3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
K30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIHNlbGYuZGIgPSBldmFsQW5kTG9n
KCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBzZXRWZXJzaW9uU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQoreworICAgIGRl
YnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOworICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9n
KCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5z
ICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNr
OworICAgIHRyYW5zLm9uY29tcGxldGUgPSBjaGVja1F1b3RhRW5mb3JjaW5nOworCisgICAgZGVs
ZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGIu
dmVyc2lvbiIsICJuZXcgdmVyc2lvbiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGIu
bmFtZSIsICJkYXRhYmFzZS1xdW90YSIpOworICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5h
bWVzIiwgIltdIik7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwg
IjAiKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucygnJykiLCAi
ZmFsc2UiKTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygnZGIuY3JlYXRlT2JqZWN0
U3RvcmUoInRlc3QxMjMiKScpOworICAgIGNoZWNrT2JqZWN0U3RvcmUoKTsKK30KKworZnVuY3Rp
b24gY2hlY2tPYmplY3RTdG9yZSgpCit7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFt
ZXMiLCAiWyd0ZXN0MTIzJ10iKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5s
ZW5ndGgiLCAiMSIpOworICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5z
KCcnKSIsICJmYWxzZSIpOworICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRh
aW5zKCd0ZXN0NDU2JykiLCAiZmFsc2UiKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVO
YW1lcy5jb250YWlucygndGVzdDEyMycpIiwgInRydWUiKTsKK30KKworZnVuY3Rpb24gY2hlY2tR
dW90YUVuZm9yY2luZygpCit7CisgICAgdmFyIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBk
Yi50cmFuc2FjdGlvbihbJ3Rlc3QxMjMnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsK
KyAgICB0cmFucy5vbmFib3J0ID0gdGVzdENvbXBsZXRlOworICAgIHRyYW5zLm9uY29tcGxldGUg
PSB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjazsKKyAgICBkZWJ1ZygiQ3JlYXRpbmcgJ2RhdGEn
IHdoaWNoIGNvbnRhaW5zIDY0SyBvZiBkYXRhIik7CisgICAgc2VsZi5kYXRhID0gIlgiOworICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgMTY7IGkrKykKKyAgICAgICAgZGF0YSArPSBkYXRhOworICAg
IHNob3VsZEJlKCJkYXRhLmxlbmd0aCIsICI2NTUzNiIpOworICAgIHNlbGYuZGF0YUFkZGVkID0g
MDsKKyAgICBzZWxmLnN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9y
ZSgndGVzdDEyMycpIik7CisgICAgYWRkRGF0YSgpOworfQorCitmdW5jdGlvbiBhZGREYXRhKCkK
K3sKKyAgICBpZiAoZGF0YUFkZGVkIDwgNSAqIDEwMjQgKiAxMDI0KSB7CisgICAgICAgIGlmIChk
YXRhQWRkZWQgPiAwKQorICAgICAgICAgICAgc3RvcmUgPSBldmVudC50YXJnZXQuc291cmNlOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQoImFkZGVkIG1vcmUgdGhhbiBxdW90YSIp
OworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBk
YXRhQWRkZWQgKz0gNjU1MzY7CisgICAgcmVxdWVzdCA9IHN0b3JlLmFkZCh7eDogZGF0YX0sIGRh
dGFBZGRlZCk7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGREYXRhOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IGxvZ0Vycm9yOworfQorCitmdW5jdGlvbiBsb2dFcnJvcigpCit7CisgICAgZGVi
dWcoIkVycm9yIGZ1bmN0aW9uIGNhbGxlZDogKCIgKyBldmVudC50YXJnZXQuZXJyb3JDb2RlICsg
IikgIiArIGV2ZW50LnRhcmdldC53ZWJraXRFcnJvck1lc3NhZ2UpOworICAgIGV2YWxBbmRMb2co
ImV2ZW50LnByZXZlbnREZWZhdWx0KCkiKTsKK30KKworZnVuY3Rpb24gdGVzdENvbXBsZXRlKCkK
K3sKKyAgICB0ZXN0UGFzc2VkKCJBZGRpbmcgZGF0YSBmYWlsZWQgZHVlIHRvIHF1b3RhIGVycm9y
LiBEYXRhIGFkZGVkIHdhcyBhYm91dCAiICsgTWF0aC5yb3VuZChkYXRhQWRkZWQgLyAxMDI0IC8g
MTAyNCkgKyAiIE1CIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvZGVsZXRlLWNsb3NlZC1kYXRhYmFzZS1vYmplY3QuanMgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGVsZXRlLWNsb3NlZC1kYXRhYmFz
ZS1vYmplY3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWQzMjlhMmI3YTNiNzBjMDdlMWZmZjhiNmQ2ZWJhMThk
Mjg0MDNiOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9kZWxldGUtY2xvc2VkLWRhdGFiYXNlLW9iamVjdC5qcwpAQCAtMCwwICsxLDQ5
IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRz
KCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIkVuc3VyZSB0aGF0IElEQkRhdGFiYXNl
IG9iamVjdHMgYXJlIGRlbGV0ZWQgd2hlbiB0aGVyZSBhcmUgbm8gcmV0YWluaW5nIHBhdGhzIGxl
ZnQiKTsKKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwor
ICAgIG9wZW5EQkNvbm5lY3Rpb24oKTsKK30KKworZnVuY3Rpb24gb3BlbkRCQ29ubmVjdGlvbigp
Cit7CisgICAgZXZhbEFuZExvZygic2VsZi5zdGF0ZSA9ICdzdGFydGluZyciKTsKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2RlbGV0ZS1jbG9zZWQtZGF0YWJhc2Ut
b2JqZWN0JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBv
cGVuU3VjY2VzcygpCit7CisgICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFy
Z2V0LnJlc3VsdCIpOworCisgICAgLy8gT3BlbiBhIHNlY29uZCBjb25uZWN0aW9uIHRvIHRoZSBz
YW1lIGRhdGFiYXNlLgorICAgIHZhciByZXF1ZXN0MiA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5v
cGVuKCdkZWxldGUtY2xvc2VkLWRhdGFiYXNlLW9iamVjdCcpIik7CisgICAgcmVxdWVzdDIub25z
dWNjZXNzID0gb3BlblN1Y2Nlc3MyOworICAgIHJlcXVlc3QyLm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MyKCkKK3sKKyAgICBkZWJ1
ZygiU2Vjb25kIGNvbm5lY3Rpb24gc3VjY2Vzc2Z1bGx5IGVzdGFibGlzaGVkLiIpOworICAgIC8v
IEFmdGVyIGxlYXZpbmcgdGhpcyBmdW5jdGlvbiwgdGhlcmUgYXJlIG5vIHJlbWFpbmluZyByZWZl
cmVuY2VzIHRvIHRoZQorICAgIC8vIHNlY29uZCBjb25uZWN0aW9uLCBzbyBpdCBzaG91bGQgZ2V0
IGRlbGV0ZWQuCisgICAgc2V0VGltZW91dChzZXRWZXJzaW9uLCAyKTsKK30KKworZnVuY3Rpb24g
c2V0VmVyc2lvbigpCit7CisgICAgZ2MoKTsKKyAgICBkZWJ1ZygiY2FsbGluZyBzZXRWZXJzaW9u
KCkgLSBjYWxsYmFjayBzaG91bGQgcnVuIGltbWVkaWF0ZWx5Iik7CisgICAgdmFyIHZlcnNpb25D
aGFuZ2VSZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsK
KyAgICB2ZXJzaW9uQ2hhbmdlUmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgdmVyc2lvbkNoYW5nZVJlcXVlc3Qub25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2Nr
ZWRDYWxsYmFjazsKKyAgICB2ZXJzaW9uQ2hhbmdlUmVxdWVzdC5vbnN1Y2Nlc3MgPSBmaW5pc2hK
U1Rlc3Q7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGVsZXRlLXJhbmdl
LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RlbGV0ZS1yYW5n
ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hNWRmNzdmMjM0NzM2ODk4Nzg0OWRjNmUxYzU3ZDc4NjJjMzFmNmU5
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL2RlbGV0ZS1yYW5nZS5qcwpAQCAtMCwwICsxLDkwIEBACitpZiAodGhpcy5pbXBvcnRTY3Jp
cHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVz
Y3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgSURCT2JqZWN0U3RvcmUuZGVsZXRlKElEQktleVJh
bmdlKSBtZXRob2QuIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclBy
ZWZpeGVzKCk7CisKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLmRlbGV0ZURh
dGFiYXNlKCdkZWxldGUtcmFuZ2UnKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewor
ICAgICAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oJ2RlbGV0ZS1yYW5n
ZScpIik7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
IGV2YWxBbmRMb2coImRiID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgICAgIGV2YWxBbmRM
b2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICAgICAgICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICAgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygidHJh
bnMgPSByZXF1ZXN0LnJlc3VsdCIpOworICAgICAgICAgICAgICAgIHRyYW5zLm9uYWJvcnQgPSB1
bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7CisKKyAgICAgICAgICAgICAgICB0cmFucy5v
bmNvbXBsZXRlID0gcnVuVGVzdHM7CisgICAgICAgICAgICB9OworICAgICAgICB9OworICAgIH0K
K30KKworZnVuY3Rpb24gY2hlY2tLZXlzKGV4cGVjdGVkLCBjYWxsYmFjaykKK3sKKyAgICBkZWJ1
ZygiZ2V0dGluZyBrZXlzIGZyb20gc3RvcmUuLi4iKTsKKyAgICBkZWJ1ZygiZXhwZWN0OiAiICsg
SlNPTi5zdHJpbmdpZnkoZXhwZWN0ZWQpKTsKKyAgICB2YXIga2V5cyA9IFtdOworICAgIHJlcXVl
c3QgPSBzdG9yZS5vcGVuQ3Vyc29yKCk7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgIGN1cnNvciA9IHJlcXVlc3QucmVzdWx0OworICAgICAgICBpZiAoY3Vyc29yKSB7Cisg
ICAgICAgICAgICBrZXlzLnB1c2goY3Vyc29yLmtleSk7CisgICAgICAgICAgICBjdXJzb3IuY29u
dGludWUoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGRlYnVnKCJhY3R1YWw6ICIg
KyBKU09OLnN0cmluZ2lmeShrZXlzKSk7CisgICAgICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnko
ZXhwZWN0ZWQpID09PSBKU09OLnN0cmluZ2lmeShrZXlzKSkgeworICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoIk1hdGNoISIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJEb24ndCBtYXRjaCEiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH07Cit9CisKK3ZhciB0ZXN0cyA9IFsKKyAgICB7IGxvd2VyOiAzLCB1cHBlcjogOCwgbG93
ZXJPcGVuOiBmYWxzZSwgdXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IFsxLCAyLCA5LCAxMF19
LAorICAgIHsgbG93ZXI6IDMsIHVwcGVyOiA4LCBsb3dlck9wZW46IHRydWUsIHVwcGVyT3Blbjog
ZmFsc2UsIGV4cGVjdGVkOiBbMSwgMiwgMywgOSwgMTBdfSwKKyAgICB7IGxvd2VyOiAzLCB1cHBl
cjogOCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXJPcGVuOiB0cnVlLCBleHBlY3RlZDogWzEsIDIs
IDgsIDksIDEwXX0sCisgICAgeyBsb3dlcjogMywgdXBwZXI6IDgsIGxvd2VyT3BlbjogdHJ1ZSwg
dXBwZXJPcGVuOiB0cnVlLCBleHBlY3RlZDogWzEsIDIsIDMsIDgsIDksIDEwXX0KK107CisKK2Z1
bmN0aW9uIHJ1blRlc3RzKCkKK3sKKyAgICBmdW5jdGlvbiBuZXh0VGVzdCgpIHsKKyAgICAgICAg
dmFyIHRlc3QgPSB0ZXN0cy5zaGlmdCgpOworICAgICAgICBpZiAodGVzdCkgeworICAgICAgICAg
ICAgZGVidWcoIiIpOworICAgICAgICAgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2Fj
dGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgICAgICAgICAg
ZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgICAg
ICAgICAgZm9yIChpID0gMTsgaSA8PSAxMDsgKytpKSB7CisgICAgICAgICAgICAgICAgZXZhbEFu
ZExvZygic3RvcmUucHV0KCIgKyBpICsgIiwiICsgaSArICIpIik7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5kZWxldGUoSURCS2V5UmFuZ2UuYm91bmQoIiAr
CisgICAgICAgICAgICAgICAgdGVzdC5sb3dlciArICIsICIgKworICAgICAgICAgICAgICAgIHRl
c3QudXBwZXIgKyAiLCAiICsKKyAgICAgICAgICAgICAgICB0ZXN0Lmxvd2VyT3BlbiArICIsICIg
KworICAgICAgICAgICAgICAgIHRlc3QudXBwZXJPcGVuICsgIikpIik7CisgICAgICAgICAgICBj
aGVja0tleXModGVzdC5leHBlY3RlZCwgbmV4dFRlc3QpOworICAgICAgICAgICAgdHJhbnMub25h
Ym9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgICAgICAgICAgdHJhbnMub25jb21w
bGV0ZSA9IG5leHRUZXN0OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgbmV4dFRl
c3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kZWxldGVJbmRleC5q
cyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kZWxldGVJbmRleC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40Y2I1YmVkYzYwMDgyM2NlOWJmOWMzYmFhNGU4NmY3YWZkMTE3MmU5Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L2RlbGV0ZUluZGV4LmpzCkBAIC0wLDAgKzEsNTAgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMp
IHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlw
dGlvbigiVGVzdCBJbmRleGVkREIgZGVsZXRlSW5kZXggbWV0aG9kIik7CisKK2Z1bmN0aW9uIHRl
c3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImluZGV4ZWREQi5vcGVuKCdkZWxldGVJbmRleCcpIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZh
bEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gdHdpZGRsZUluZGV4ZXM7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHR3aWRkbGVJbmRleGVzKCkKK3sKKyAgICB0
cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dDsiKTsKKyAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAg
IHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBwb3N0VHdpZGRsaW5nOworICAgIGRlbGV0ZUFsbE9i
amVjdFN0b3JlcyhkYik7CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0
b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycpOyIpOworICAgIGV2YWxBbmRFeHBlY3RF
eGNlcHRpb24oIm9iamVjdFN0b3JlLmRlbGV0ZUluZGV4KCdmaXJzdCcpIiwgIklEQkRhdGFiYXNl
RXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKKyAgICBzaG91bGRUaHJvdygib2JqZWN0U3RvcmUu
ZGVsZXRlSW5kZXgoKSIpOyAvLyBUeXBlRXJyb3I6IG5vdCBlbm91Z2ggYXJndW1lbnRzLgorICAg
IGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgnZmly
c3QnLCAnZmlyc3QnKTsiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJvYmplY3RTdG9y
ZS5kZWxldGVJbmRleCgnRklSU1QnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRf
RVJSIik7CisgICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0
ZUluZGV4KCdzZWNvbmQnLCAnc2Vjb25kJyk7Iik7CisgICAgcmV0dXJuVmFsdWUgPSBldmFsQW5k
TG9nKCJyZXR1cm5WYWx1ZSA9IG9iamVjdFN0b3JlLmRlbGV0ZUluZGV4KCdmaXJzdCcpOyIpOwor
ICAgIHNob3VsZEJlKCJyZXR1cm5WYWx1ZSIsICJ1bmRlZmluZWQiKTsKK30KKworZnVuY3Rpb24g
cG9zdFR3aWRkbGluZygpCit7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ2JhcicpOyIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9F
UlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJvYmplY3RTdG9yZS5kZWxldGVJbmRl
eCgnc2Vjb25kJykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVf
RVJSIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvZGVsZXRlT2JqZWN0U3RvcmUtbmFtZS1hcmd1bWVudC1yZXF1aXJlZC5qcyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kZWxldGVPYmplY3RTdG9yZS1u
YW1lLWFyZ3VtZW50LXJlcXVpcmVkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY2MDkyYTEzNTg5Mjc2NmM2ZjIy
MWUyNWU1ZGVhOTJlZGMyMjNjMjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGVsZXRlT2JqZWN0U3RvcmUtbmFtZS1hcmd1bWVudC1y
ZXF1aXJlZC5qcwpAQCAtMCwwICsxLDM2IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Cisg
ICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24o
IlRlc3QgSW5kZXhlZERCIGRlbGV0ZU9iamVjdFN0b3JlIHJlcXVpcmVkIGFyZ3VtZW50Iik7CisK
K2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBu
YW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0
IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFt
ZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50
YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRi
LnNldFZlcnNpb24oJzEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5kUG9w
dWxhdGVPYmplY3RTdG9yZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSgpCit7
CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIHNob3VsZFRocm93KCJkYi5k
ZWxldGVPYmplY3RTdG9yZSgpOyIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RlbGV0ZU9iamVjdFN0b3JlLW51bGwtbmFtZS5qcyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kZWxldGVPYmplY3RTdG9y
ZS1udWxsLW5hbWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzRhODMzNWFiNzFkNDVmZDFlMzQ2YTljNzZhOWUy
YzAyNWVjMWQ0YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9kZWxldGVPYmplY3RTdG9yZS1udWxsLW5hbWUuanMKQEAgLTAsMCArMSwz
NyBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0
cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBkZWxldGVP
YmplY3RTdG9yZSByZXF1aXJlZCBhcmd1bWVudCIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0
aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sK
KyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0
b3JlcyhkYik7CisKKyAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnbnVsbCcp
OyIpOworICAgIGV2YWxBbmRMb2coImRiLmRlbGV0ZU9iamVjdFN0b3JlKG51bGwpOyIpOworICAg
IGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2R1
cGxpY2F0ZXMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZHVw
bGljYXRlcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMTMzYWU4ZDFjNGQ5NWU3NWMzN2M5NzU3MTRhZGZjOWFl
MmY3NjNlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL2R1cGxpY2F0ZXMuanMKQEAgLTAsMCArMSwxNjYgQEAKK2lmICh0aGlzLmltcG9y
dFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQor
CitkZXNjcmlwdGlvbigiVmVyaWZ5IHRoYXQgeW91IGNhbiBwdXQgdGhlIHNhbWUgZGF0YSBpbiAy
IGRpZmZlcmVudCBkYXRhYmFzZXMgd2l0aG91dCB1bmlxdWVuZXNzIGNvbnN0cmFpbnRzIGZpcmlu
Zy4iKTsKKwordGVzdENvdW50ID0gMDsKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGlmICh0ZXN0
Q291bnQrKyA9PSAwKQorICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9w
ZW4oJ2R1cGxpY2F0ZXMtMScpIik7CisgICAgZWxzZQorICAgICAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCLm9wZW4oJ2R1cGxpY2F0ZXMtMicpIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBzZXRWZXJzaW9uOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uKCkKK3sKKyAgICBkYiA9IGV2YWxB
bmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGRlbGV0ZUV4aXN0aW5nOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxldGVFeGlzdGluZygpCit7CisgICAgZGVi
dWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7CisgICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2co
InRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMg
IT09IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7
CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgc2VsZi5zdG9yZSA9IGV2
YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOworICAg
IHNlbGYuaW5kZXhPYmplY3QgPSBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhO
YW1lJywgJ3gnKSIpOworICAgIGFkZERhdGEoKTsKK30KKworZnVuY3Rpb24gYWRkRGF0YSgpCit7
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6
eid9LCAna2V5JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZE1vcmU7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGFk
ZE1vcmUoKQoreworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJldmVudC50YXJnZXQuc291cmNl
LmFkZCh7eDogJ3ZhbHVlMicsIHk6ICd6enoyJ30sICdrZXkyJykiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGdldERhdGE7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGdldERhdGEoKQoreworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJpbmRleE9iamVjdC5nZXRLZXkoJ3ZhbHVlJykiKTsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGdldE9iamVjdERhdGE7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGdldE9iamVjdERhdGEoKQoreworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJrZXkiKTsKKworICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5nZXQoJ3ZhbHVlJykiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGdldERhdGFGYWlsOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBnZXREYXRhRmFpbCgpCit7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LngiLCAidmFsdWUiKTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQueSIsICJ6enoi
KTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5nZXRLZXkoJ2RvZXMg
bm90IGV4aXN0JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldE9iamVjdERhdGFGYWls
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiBnZXRPYmplY3REYXRhRmFpbCgpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdl
dC5yZXN1bHQiLCAidW5kZWZpbmVkIik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5k
ZXhPYmplY3QuZ2V0KCdkb2VzIG5vdCBleGlzdCcpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBvcGVuS2V5Q3Vyc29yOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuS2V5Q3Vyc29yKCkKK3sKKyAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ1bmRlZmluZWQiKTsKKworICAgIHNlbGYucmVxdWVzdCA9
IGV2YWxBbmRMb2coImluZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3IoKSIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gY3Vyc29yMUNvbnRpbnVlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjdXJzb3IxQ29udGludWUoKQorewor
ICAgIHNob3VsZEJlRmFsc2UoImV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwiKTsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgInZhbHVlIik7
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlL
ZXkiLCAia2V5Iik7CisKKyAgICAvLyBXZSByZS11c2UgdGhlIGxhc3QgcmVxdWVzdCBvYmplY3Qu
CisgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7CisgICAg
c2VsZi5yZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvcjFDb250aW51ZTI7Cit9CisKK2Z1bmN0aW9u
IGN1cnNvcjFDb250aW51ZTIoKQoreworICAgIHNob3VsZEJlRmFsc2UoImV2ZW50LnRhcmdldC5y
ZXN1bHQgPT09IG51bGwiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdl
dC5yZXN1bHQua2V5IiwgInZhbHVlMiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZl
bnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgImtleTIiKTsKKworICAgIC8vIFdlIHJlLXVz
ZSB0aGUgbGFzdCByZXF1ZXN0IG9iamVjdC4KKyAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQu
cmVzdWx0LmNvbnRpbnVlKCkiKTsKKyAgICBzZWxmLnJlcXVlc3Qub25zdWNjZXNzID0gb3Blbk9i
amVjdEN1cnNvcjsKK30KKworZnVuY3Rpb24gb3Blbk9iamVjdEN1cnNvcigpCit7CisgICAgc2hv
dWxkQmVUcnVlKCJldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsIik7CisKKyAgICBzZWxmLnJl
cXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5vcGVuQ3Vyc29yKCkiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvcjJDb250aW51ZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY3Vyc29yMkNvbnRpbnVlKCkK
K3sKKyAgICBzaG91bGRCZUZhbHNlKCJldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsIik7Cisg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICJ2YWx1
ZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1
ZS54IiwgInZhbHVlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQu
cmVzdWx0LnZhbHVlLnkiLCAienp6Iik7CisKKyAgICAvLyBXZSByZS11c2UgdGhlIGxhc3QgcmVx
dWVzdCBvYmplY3QuCisgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51
ZSgpIik7CisgICAgc2VsZi5yZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvcjJDb250aW51ZTI7Cit9
CisKK2Z1bmN0aW9uIGN1cnNvcjJDb250aW51ZTIoKQoreworICAgIHNob3VsZEJlRmFsc2UoImV2
ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
ImV2ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgInZhbHVlMiIpOworICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS54IiwgInZhbHVlMiIpOyAgICAKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUueSIsICJ6
enoyIik7CisKKyAgICAvLyBXZSByZS11c2UgdGhlIGxhc3QgcmVxdWVzdCBvYmplY3QuCisgICAg
ZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7CisgICAgc2VsZi5y
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGxhc3Q7Cit9CisKK2Z1bmN0aW9uIGxhc3QoKQoreworICAgIHNo
b3VsZEJlVHJ1ZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCA9PT0gbnVsbCIpOworCisgICAgaWYgKHRl
c3RDb3VudCA9PSAxKQorICAgICAgICB0ZXN0KCk7CisgICAgZWxzZQorICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKK30KKworcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKK3Rlc3QoKTsKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvZXJyb3ItY2F1c2VzLWFib3J0LWJ5LWRlZmF1bHQuanMgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZXJyb3ItY2F1c2VzLWFib3J0LWJ5LWRl
ZmF1bHQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQzYTdjZGY0MTc1NTliM2NmMzgyN2EwYTc4N2Y0M2YyNjVk
ZTNiNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9lcnJvci1jYXVzZXMtYWJvcnQtYnktZGVmYXVsdC5qcwpAQCAtMCwwICsxLDEwMSBA
QAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygn
c2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJWZXJpZnkgdGhhdCBhIHRyYW5zYWN0aW9u
IHdpdGggYW4gZXJyb3IgYWJvcnRzIHVubGVzcyBwcmV2ZW50RGVmYXVsdCgpIGlzIGNhbGxlZC4i
KTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2Vycm9yLWNhdXNlcy1hYm9y
dC1ieS1kZWZhdWx0JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb247Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0
aW9uIHNldFZlcnNpb24oKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJn
ZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbign
bmV3IHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3Mo
KToiKTsKKyAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5z
Lm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICBldmFsQW5kTG9nKCJ0cmFu
cy5vbmNvbXBsZXRlID0gYWRkRGF0YSIpOworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRi
KTsKKworICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBu
dWxsKSIpOworfQorCitmdW5jdGlvbiBhZGREYXRhKCkKK3sKKyAgICB0cmFucyA9IGV2YWxBbmRM
b2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rpb24u
UkVBRF9XUklURSkiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmFib3J0ID0gdW5leHBlY3Rl
ZEFib3J0Q2FsbGJhY2siKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gdHJh
bnNhY3Rpb25Db21wbGV0ZWQiKTsKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJh
bnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAna2V5JykiKTsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGFkZE1vcmU7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGFkZE1vcmUoKQoreworICAgIAorICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJldmVudC50YXJnZXQuc291cmNlLmFkZCh7eDogJ3ZhbHVlJywgeTog
J3p6eid9LCAna2V5JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNj
ZXNzQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsIHByZXZl
bnRUaGVEZWZhdWx0KTsKK30KKworZnVuY3Rpb24gcHJldmVudFRoZURlZmF1bHQoKQoreworICAg
IGV2YWxBbmRMb2coImV2ZW50LnByZXZlbnREZWZhdWx0KCkiKTsKK30KKworZnVuY3Rpb24gdHJh
bnNhY3Rpb25Db21wbGV0ZWQoKQoreworICAgIHRlc3RQYXNzZWQoIlRyYW5zYWN0aW9uIGNvbXBs
ZXRlZCIpOworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiIik7CisgICAgdHJhbnMgPSBldmFs
QW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIElEQlRyYW5zYWN0
aW9uLlJFQURfV1JJVEUpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMub25hYm9ydCA9IHRyYW5z
YWN0aW9uQWJvcnRlZDEiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gdW5l
eHBlY3RlZENvbXBsZXRlQ2FsbGJhY2siKTsKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3Jl
ID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAna2V5JykiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gYWxsb3dEZWZhdWx0OworfQorCitmdW5jdGlvbiBhbGxvd0RlZmF1bHQoKQor
eworICAgIGRlYnVnKCJEb2luZyBub3RoaW5nIHRvIHByZXZlbnQgdGhlIGRlZmF1bHQgYWN0aW9u
Li4uIik7Cit9CisKK2Z1bmN0aW9uIHRyYW5zYWN0aW9uQWJvcnRlZDEoKQoreworICAgIHRlc3RQ
YXNzZWQoIlRyYW5zYWN0aW9uIGFib3J0ZWQiKTsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWco
IiIpOworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0
b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIGV2YWxBbmRMb2co
InRyYW5zLm9uYWJvcnQgPSB0cmFuc2FjdGlvbkFib3J0ZWQyIik7CisgICAgZXZhbEFuZExvZygi
dHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrIik7CisgICAgc3Rv
cmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIp
OworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6
enonfSwgJ2tleScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vz
c0NhbGxiYWNrOworICAgIGRlYnVnKCJPbWl0dGluZyBhbiBvbmVycm9yIGhhbmRsZXIiKTsKK30K
KworZnVuY3Rpb24gdHJhbnNhY3Rpb25BYm9ydGVkMigpCit7CisgICAgdGVzdFBhc3NlZCgiVHJh
bnNhY3Rpb24gYWJvcnRlZCIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL2V4Y2VwdGlvbi1pbi1ldmVudC1hYm9ydHMuanMgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZXhjZXB0aW9uLWluLWV2ZW50LWFi
b3J0cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45YjA1ODZmYmEwYTI4M2U5ZWU1ZTM0NmI1OTA3NTBmNGQwMDE3
N2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL2V4Y2VwdGlvbi1pbi1ldmVudC1hYm9ydHMuanMKQEAgLTAsMCArMSwxMjEgQEAKK2lm
ICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJl
ZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBleGNlcHRpb25zIGluIElEQlJlcXVlc3Qg
aGFuZGxlcnMgY2F1c2UgYWJvcnRzLiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1v
dmVWZW5kb3JQcmVmaXhlcygpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
b3BlbignZXhjZXB0aW9uLWluLWV2ZW50LWFib3J0cycpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBzZXRWZXJzaW9uOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRM
b2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGRlbGV0ZUV4aXN0aW5nOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxldGVFeGlzdGluZygpCit7CisgICAgZGVidWco
InNldFZlcnNpb25TdWNjZXNzKCk6Iik7CisgICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRy
YW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09
IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Cisg
ICAgZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IHN0YXJ0VGVzdCIpOworCisgICAgZGVs
ZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUg
PSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIp
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiBzdGFydFRlc3QoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICB0cmFucyA9IGV2YWxB
bmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rp
b24uUkVBRF9XUklURSkiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmFib3J0ID0gdHJhbnNh
Y3Rpb25BYm9ydGVkMSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSB1bmV4
cGVjdGVkQ29tcGxldGVDYWxsYmFjayIpOworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUg
PSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWUyJywgeTogJ3p6ejInfSwgJ2tleTInKSIpOworICAg
IHRyYW5zLmFkZEV2ZW50TGlzdGVuZXIoJ3N1Y2Nlc3MnLCBjYXVzZUV4Y2VwdGlvbiwgdHJ1ZSk7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIGNhdXNlRXhjZXB0aW9uKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZXZhbEFuZExv
ZygiZXZlbnQucHJldmVudERlZmF1bHQoKSIpOworICAgIGRlYnVnKCJUaHJvd2luZyIpOworICAg
IHRocm93ICJ0aGlzIGV4Y2VwdGlvbiBpcyBleHBlY3RlZCI7Cit9CisKK2Z1bmN0aW9uIHRyYW5z
YWN0aW9uQWJvcnRlZDEoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBzaG91bGRIYXZlSGFkRXJy
b3IoInRoaXMgZXhjZXB0aW9uIGlzIGV4cGVjdGVkIik7CisgICAgdGVzdFBhc3NlZCgiVGhlIHRy
YW5zYWN0aW9uIHdhcyBhYm9ydGVkLiIpOworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMg
PSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRF
KSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSB0cmFuc2FjdGlvbkFib3J0ZWQy
Iik7CisgICAgZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0
ZUNhbGxiYWNrIik7CisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVj
dFN0b3JlKCdzdG9yZU5hbWUnKSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5h
ZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOworICAgIGRiLm9uZXJyb3IgPSBjYXVzZUV4
Y2VwdGlvbjsKK30KKworZnVuY3Rpb24gdHJhbnNhY3Rpb25BYm9ydGVkMigpCit7CisgICAgZGVi
dWcoIiIpOworICAgIHNob3VsZEhhdmVIYWRFcnJvcigidGhpcyBleGNlcHRpb24gaXMgZXhwZWN0
ZWQiKTsKKyAgICB0ZXN0UGFzc2VkKCJUaGUgdHJhbnNhY3Rpb24gd2FzIGFib3J0ZWQuIik7Cisg
ICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1l
J10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMu
b25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrIik7CisgICAgZXZhbEFuZExvZygidHJh
bnMub25jb21wbGV0ZSA9IHRyYW5zYWN0aW9uQ29tcGxldGVkMSIpOworICAgIHN0b3JlID0gZXZh
bEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWUzJywgeTogJ3p6ejMnfSwg
J2tleTMnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdGhyb3dBbmRDYXRjaDsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBkYi5vbmVycm9y
ID0gbnVsbDsKK30KKworZnVuY3Rpb24gdGhyb3dBbmRDYXRjaCgpCit7CisgICAgZGVidWcoIiIp
OworICAgIGV2YWxBbmRMb2coImV2ZW50LnByZXZlbnREZWZhdWx0KCkiKTsKKyAgICBkZWJ1Zygi
VGhyb3dpbmcgd2l0aGluIGEgdHJ5IGJsb2NrIik7CisgICAgdHJ5IHsKKyAgICAgICAgdGhyb3cg
IkFISEgiOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRyYW5zYWN0
aW9uQ29tcGxldGVkMSgpCit7CisgICAgZGVidWcoIiIpOworICAgIHRlc3RQYXNzZWQoIlRoZSB0
cmFuc2FjdGlvbiBjb21wbGV0ZWQuIik7CisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9
IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUp
Iik7CisgICAgZXZhbEFuZExvZygidHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxi
YWNrIik7CisgICAgZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IHRyYW5zYWN0aW9uQ29t
cGxldGVkMiIpOworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RT
dG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRk
KHt4OiAndmFsdWU0JywgeTogJ3p6ejQnfSwgJ2tleTQnKSIpOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZnVuY3Rpb24oKSB7IHRlc3RQYXNzZWQoImtleTQgYWRkZWQiKTsgfQorICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiB0cmFu
c2FjdGlvbkNvbXBsZXRlZDIoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICB0ZXN0UGFzc2VkKCJU
aGUgdHJhbnNhY3Rpb24gY29tcGxldGVkLiIpOworICAgIGRlYnVnKCIiKTsKKyAgICBmaW5pc2hK
U1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9mYWN0b3J5LWJh
c2ljcy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9mYWN0b3J5
LWJhc2ljcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDA3Y2ZhNzIzZTg5YmQ1YzllYjQ3Y2M4ODVkYmQ5YWRm
ZmJmNzAwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL2ZhY3RvcnktYmFzaWNzLmpzCkBAIC0wLDAgKzEsODIgQEAKK2lmICh0aGlzLmlt
cG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOwor
fQorCitkZXNjcmlwdGlvbigiVGVzdCB0aGUgYmFzaWNzIG9mIEluZGV4ZWREQidzIElEQkZhY3Rv
cnkuIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7
CisKKyAgICBzaG91bGRCZVRydWUoInR5cGVvZiBpbmRleGVkREIub3BlbiA9PT0gJ2Z1bmN0aW9u
JyIpOworICAgIHNob3VsZEJlVHJ1ZSgidHlwZW9mIGluZGV4ZWREQi5jbXAgPT09ICdmdW5jdGlv
biciKTsKKyAgICBzaG91bGRCZVRydWUoInR5cGVvZiBpbmRleGVkREIuZ2V0RGF0YWJhc2VOYW1l
cyA9PT0gJ2Z1bmN0aW9uJyIpOworCisgICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2YgaW5kZXhlZERC
LmRlbGV0ZURhdGFiYXNlID09PSAnZnVuY3Rpb24nIik7CisKKyAgICBuYW1lID0gJ3N0b3JhZ2Uv
aW5kZXhlZGRiL2ZhY3RvcnktYmFzaWNzJzsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERh
dGFiYXNlIjsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIuZ2V0RGF0YWJh
c2VOYW1lcygpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXREYXRhYmFzZU5hbWVzU3Vj
Y2VzczE7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIGdldERhdGFiYXNlTmFtZXNTdWNjZXNzMSgpCit7CisgICAgdmFyIGRhdGFi
YXNlTmFtZXM7CisgICAgZXZhbEFuZExvZygiZGF0YWJhc2VOYW1lcyA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJkYXRhYmFzZU5hbWVzLmNvbnRhaW5zKCciICsg
bmFtZSArICInKSIpOworICAgIHNob3VsZEJlRmFsc2UoImRhdGFiYXNlTmFtZXMuY29udGFpbnMo
J0RBVEFCQVNFIFRIQVQgRE9FUyBOT1QgRVhJU1QnKSIpOworCisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBldmFs
QW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNsb3NlKCkiKTsKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiaW5kZXhlZERCLmdldERhdGFiYXNlTmFtZXMoKSIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZ2V0RGF0YWJhc2VOYW1lc1N1Y2Nlc3MyOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBnZXREYXRhYmFzZU5hbWVz
U3VjY2VzczIoKQoreworICAgIHZhciBkYXRhYmFzZU5hbWVzOworICAgIGV2YWxBbmRMb2coImRh
dGFiYXNlTmFtZXMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJk
YXRhYmFzZU5hbWVzLmNvbnRhaW5zKCciICsgbmFtZSArICInKSIpOworICAgIHNob3VsZEJlRmFs
c2UoImRhdGFiYXNlTmFtZXMuY29udGFpbnMoJ0RBVEFCQVNFIFRIQVQgRE9FUyBOT1QgRVhJU1Qn
KSIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFz
ZSgnIiArIG5hbWUgKyAiJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZURhdGFi
YXNlU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gZGVsZXRlRGF0YWJhc2VTdWNjZXNzKCkKK3sKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmdldERhdGFiYXNlTmFtZXMoKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZ2V0RGF0YWJhc2VOYW1lc1N1Y2Nlc3MzOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBnZXREYXRhYmFz
ZU5hbWVzU3VjY2VzczMoKQoreworICAgIHZhciBkYXRhYmFzZU5hbWVzOworICAgIGV2YWxBbmRM
b2coImRhdGFiYXNlTmFtZXMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVG
YWxzZSgiZGF0YWJhc2VOYW1lcy5jb250YWlucygnIiArIG5hbWUgKyAiJykiKTsKKyAgICBzaG91
bGRCZUZhbHNlKCJkYXRhYmFzZU5hbWVzLmNvbnRhaW5zKCdEQVRBQkFTRSBUSEFUIERPRVMgTk9U
IEVYSVNUJykiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIuZGVsZXRl
RGF0YWJhc2UoJ0RBVEFCQVNFIFRIQVQgRE9FUyBOT1QgRVhJU1QnKSIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZGVsZXRlRGF0YWJhc2VTdWNjZXNzMjsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVsZXRlRGF0YWJhc2VT
dWNjZXNzMigpCit7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvZmFjdG9yeS1jbXAuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvZmFjdG9yeS1jbXAuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQyNjc2YWMyNGIyOWMw
ODhjMDZkYmMyMTJlMzI3YzAyYTE3M2U3NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9mYWN0b3J5LWNtcC5qcwpAQCAtMCwwICsxLDE0
MSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0
cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBrZXkgY29t
cGFyaXNvbiB1c2luZyBJREJGYWN0b3J5LmNtcCgpLiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sK
KyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2Yg
aW5kZXhlZERCLmNtcCA9PT0gJ2Z1bmN0aW9uJyIpOworCisgICAgdGVzdFZhbGlkS2V5cygpOwor
ICAgIHRlc3RJbnZhbGlkS2V5cygpOworICAgIHRlc3RJZGVudGljYWxLZXlzKCk7CisgICAgZmlu
aXNoSlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RWYWxpZEtleXMoKQoreworICAgIGRlYnVn
KCIiKTsKKyAgICBkZWJ1ZygiY29tcGFyZSB2YWxpZCBrZXlzIik7CisKKyAgICB2YXIga2V5cyA9
IFsKKyAgICAgICAgIi1JbmZpbml0eSIsCisgICAgICAgICItTnVtYmVyLk1BWF9WQUxVRSIsCisg
ICAgICAgICItMSIsCisgICAgICAgICItTnVtYmVyLk1JTl9WQUxVRSIsCisgICAgICAgICIwIiwK
KyAgICAgICAgIk51bWJlci5NSU5fVkFMVUUiLAorICAgICAgICAiMSIsCisgICAgICAgICJOdW1i
ZXIuTUFYX1ZBTFVFIiwKKyAgICAgICAgIkluZmluaXR5IiwKKworICAgICAgICAibmV3IERhdGUo
MCkiLAorICAgICAgICAibmV3IERhdGUoMTAwMCkiLAorICAgICAgICAibmV3IERhdGUoMTMxNzM5
OTkzMTAyMykiLAorICAgICAgICAKKyAgICAgICAgIicnIiwKKyAgICAgICAgIidceDAwJyIsCisg
ICAgICAgICInYSciLAorICAgICAgICAiJ2FhJyIsCisgICAgICAgICInYiciLAorICAgICAgICAi
J2JhJyIsCisKKyAgICAgICAgIidceEEyJyIsIC8vIFUrMDBBMiBDRU5UIFNJR04KKyAgICAgICAg
IidcdTZDMzQnIiwgLy8gVSs2QzM0IENKSyBVTklGSUVEIElERU9HUkFQSCAod2F0ZXIpCisgICAg
ICAgICInXHVEODM0XHVERDFFJyIsIC8vIFUrMUQxMUUgTVVTSUNBTCBTWU1CT0wgRy1DTEVGIChV
VEYtMTYgc3Vycm9nYXRlIHBhaXIpCisgICAgICAgICInXHVGRkZEJyIsIC8vIFUrRkZGRCBSRVBM
QUNFTUVOVCBDSEFSQUNURVIKKworICAgICAgICAiW10iLAorCisgICAgICAgICJbLUluZmluaXR5
XSIsCisgICAgICAgICJbLU51bWJlci5NQVhfVkFMVUVdIiwKKyAgICAgICAgIlstMV0iLAorICAg
ICAgICAiWy1OdW1iZXIuTUlOX1ZBTFVFXSIsCisgICAgICAgICJbMF0iLAorICAgICAgICAiW051
bWJlci5NSU5fVkFMVUVdIiwKKyAgICAgICAgIlsxXSIsCisgICAgICAgICJbTnVtYmVyLk1BWF9W
QUxVRV0iLAorICAgICAgICAiW0luZmluaXR5XSIsCisKKyAgICAgICAgIltuZXcgRGF0ZSgwKV0i
LAorICAgICAgICAiW25ldyBEYXRlKDEwMDApXSIsCisgICAgICAgICJbbmV3IERhdGUoMTMxNzM5
OTkzMTAyMyldIiwKKyAgICAgICAgCisgICAgICAgICJbJyddIiwKKyAgICAgICAgIlsnXHgwMCdd
IiwKKyAgICAgICAgIlsnYSddIiwKKyAgICAgICAgIlsnYWEnXSIsCisgICAgICAgICJbJ2InXSIs
CisgICAgICAgICJbJ2JhJ10iLAorCisgICAgICAgICJbJ1x4QTInXSIsIC8vIFUrMDBBMiBDRU5U
IFNJR04KKyAgICAgICAgIlsnXHU2QzM0J10iLCAvLyBVKzZDMzQgQ0pLIFVOSUZJRUQgSURFT0dS
QVBIICh3YXRlcikKKyAgICAgICAgIlsnXHVEODM0XHVERDFFJ10iLCAvLyBVKzFEMTFFIE1VU0lD
QUwgU1lNQk9MIEctQ0xFRiAoVVRGLTE2IHN1cnJvZ2F0ZSBwYWlyKQorICAgICAgICAiWydcdUZG
RkQnXSIsIC8vIFUrRkZGRCBSRVBMQUNFTUVOVCBDSEFSQUNURVIKKworICAgICAgICAiW1tdXSIs
CisgICAgICAgIAorICAgICAgICAiW1tdLCBbXV0iLAorICAgICAgICAiW1tdLCBbXSwgW11dIiwK
KworICAgICAgICAiW1tbXV1dIiwKKyAgICAgICAgIltbW1tdXV1dIgorICAgIF07CisKKyAgICB2
YXIgaSwga2V5MSwga2V5MjsKKyAgICBmb3IgKGkgPSAwOyBpIDwga2V5cy5sZW5ndGggLSAxOyBp
ICs9IDEpIHsKKyAgICAgICAga2V5MSA9IGtleXNbaV07CisgICAgICAgIGtleTIgPSBrZXlzW2kg
KyAxXTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJpbmRleGVkREIuY21wKCIgKyBrZXkxICsgIiwi
ICsga2V5MiArICIpID09PSAtMSIpOworICAgICAgICBzaG91bGRCZVRydWUoImluZGV4ZWREQi5j
bXAoIiArIGtleTIgKyAiLCIgKyBrZXkxICsgIikgPT09IDEiKTsKKyAgICAgICAgc2hvdWxkQmVU
cnVlKCJpbmRleGVkREIuY21wKCIgKyBrZXkxICsgIiwiICsga2V5MSArICIpID09PSAwIik7Cisg
ICAgICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXhlZERCLmNtcCgiICsga2V5MiArICIsIiArIGtleTIg
KyAiKSA9PT0gMCIpOworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdEludmFsaWRLZXlzKCkKK3sK
KyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImNvbXBhcmUgaW52YWxpZCBrZXlzIik7CisKKyAg
ICB2YXIgaW52YWxpZEtleXMgPSBbCisgICAgICAgICJ2b2lkIDAiLCAvLyB1bmRlZmluZWQKKyAg
ICAgICAgInRydWUiLAorICAgICAgICAiZmFsc2UiLAorICAgICAgICAiTmFOIiwKKyAgICAgICAg
Im5ldyBEYXRlKE5hTikiLAorICAgICAgICAibnVsbCIsCisgICAgICAgICJ7fSIsCisgICAgICAg
ICJmdW5jdGlvbiAoKSB7fSIsCisgICAgICAgICIvcmVnZXgvIiwKKyAgICAgICAgInNlbGYiLAor
ICAgICAgICAic2VsZi5kb2N1bWVudCIsCisgICAgICAgICJzZWxmLmRvY3VtZW50LmJvZHkiCisg
ICAgXTsKKworICAgIHZhciBpLCBrZXkxLCBrZXkyOworICAgIGZvciAoaSA9IDA7IGkgPCBpbnZh
bGlkS2V5cy5sZW5ndGggLSAxOyBpICs9IDEpIHsKKyAgICAgICAga2V5MSA9IGludmFsaWRLZXlz
W2ldOworICAgICAgICBrZXkyID0gaW52YWxpZEtleXNbaSArIDFdOworICAgICAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKCJpbmRleGVkREIuY21wKCIgKyBrZXkxICsgIiwgIiArIGtleTIgKyAi
KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworICAgICAgICBldmFsQW5kRXhw
ZWN0RXhjZXB0aW9uKCJpbmRleGVkREIuY21wKCIgKyBrZXkyICsgIiwgIiArIGtleTEgKyAiKSIs
ICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworICAgICAgICBldmFsQW5kRXhwZWN0
RXhjZXB0aW9uKCJpbmRleGVkREIuY21wKCIgKyBrZXkxICsgIiwgJ3ZhbGlkJykiLCAiSURCRGF0
YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlv
bigiaW5kZXhlZERCLmNtcCgndmFsaWQnLCAiICsga2V5MSArICIpIiwgIklEQkRhdGFiYXNlRXhj
ZXB0aW9uLkRBVEFfRVJSIik7CisgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4
ZWREQi5jbXAoIiArIGtleTIgKyAiLCAndmFsaWQnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5E
QVRBX0VSUiIpOworICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJpbmRleGVkREIuY21w
KCd2YWxpZCcsICIgKyBrZXkyICsgIikiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIi
KTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RJZGVudGljYWxLZXlzKCkKK3sKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoImNvbXBhcmUgaWRlbnRpY2FsIGtleXMiKTsKKworICAgIHNob3Vs
ZEJlVHJ1ZSgiaW5kZXhlZERCLmNtcCgwLCAtMCkgPT09IDAiKTsKK30KKwordGVzdCgpOwpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9mYWN0b3J5LWRlbGV0ZWRhdGFiYXNlLWludGVyYWN0aW9ucy5q
cyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9mYWN0b3J5LWRlbGV0
ZWRhdGFiYXNlLWludGVyYWN0aW9ucy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOWQ5Yjc5NDNkZWE1ZjNlNjY5
YjU0ZTgyZjM1N2Q5NmIyODRmYjBjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ZhY3RvcnktZGVsZXRlZGF0YWJhc2UtaW50ZXJhY3Rp
b25zLmpzCkBAIC0wLDAgKzEsMTg2IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAg
aW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMn
KTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRl
c3QgdGhlIGRlbGV0ZURhdGFiYXNlIGNhbGwgYW5kIGl0cyBpbnRlcmFjdGlvbiB3aXRoIG9wZW4v
c2V0VmVyc2lvbiIpOworCitmdW5jdGlvbiBDb25uZWN0aW9uKGlkKSB7CisgICAgaWQgPSBTdHJp
bmcoaWQpOworICAgIHZhciB0aGF0ID0gdGhpczsKKyAgICB0aGlzLm9wZW4gPSBmdW5jdGlvbihv
cHRzKSB7CisgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5v
cGVuJyIpKTsKKyAgICAgICAgdmFyIHJlcSA9IGluZGV4ZWREQi5vcGVuKHNlbGYuZGJuYW1lKTsK
KyAgICAgICAgcmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAg
cmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgICAgICB0aGF0LmhhbmRsZSA9
IGUudGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9n
KCInIiArIGlkICsgIi5vcGVuLm9uc3VjY2VzcyciKSk7CisgICAgICAgICAgICB0aGF0LmhhbmRs
ZS5vbnZlcnNpb25jaGFuZ2UgPSBmdW5jdGlvbihlKSB7CisgICAgICAgICAgICAgICAgc2VsZi5z
dGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLm9udmVyc2lvbmNoYW5nZSciKSk7Cisg
ICAgICAgICAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5vbnZlcnNpb24pIHsgb3B0cy5vbnZlcnNp
b24uY2FsbCh0aGF0KTsgfQorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGlmIChvcHRzICYm
IG9wdHMub25zdWNjZXNzKSB7IG9wdHMub25zdWNjZXNzLmNhbGwodGhhdCk7IH0KKyAgICAgICAg
fTsKKyAgICB9OworCisgICAgdGhpcy5jbG9zZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICBzZWxm
LnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIuY2xvc2UnIikpOworICAgICAgICB0
aGlzLmhhbmRsZS5jbG9zZSgpOworICAgIH07CisKKyAgICB0aGlzLnNldFZlcnNpb24gPSBmdW5j
dGlvbihvcHRzKSB7CisgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlk
ICsgIi5zZXRWZXJzaW9uJyIpKTsKKyAgICAgICAgdmFyIHJlcSA9IHRoaXMuaGFuZGxlLnNldFZl
cnNpb24oU3RyaW5nKHNlbGYudmVyKyspKTsKKyAgICAgICAgcmVxLm9uYWJvcnQgPSBmdW5jdGlv
biAoZSkgeworICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQg
KyAiLnNldFZlcnNpb24ub25hYm9ydCciKSk7CisgICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRz
Lm9uYWJvcnQpIHsgb3B0cy5vbmFib3J0LmNhbGwodGhhdCk7IH0KKyAgICAgICAgfTsKKyAgICAg
ICAgcmVxLm9uYmxvY2tlZCA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgICAgICBzZWxmLnN0ZXBz
LnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIuc2V0VmVyc2lvbi5vbmJsb2NrZWQnIikpOwor
ICAgICAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5vbmJsb2NrZWQpIHsgb3B0cy5vbmJsb2NrZWQu
Y2FsbCh0aGF0KTsgfQorICAgICAgICB9OworICAgICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rp
b24gKGUpIHsKKyAgICAgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlk
ICsgIi5zZXRWZXJzaW9uLm9uc3VjY2VzcyciKSk7CisgICAgICAgICAgICBpZiAodGhhdC5oYW5k
bGUub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucygidGVzdC1zdG9yZSIgKyBzZWxmLnZlcikpIHsK
KyAgICAgICAgICAgICAgICB0aGF0LmhhbmRsZS5kZWxldGVPYmplY3RTdG9yZSgidGVzdC1zdG9y
ZSIgKyBzZWxmLnZlcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2YXIgc3RvcmUgPSB0
aGF0LmhhbmRsZS5jcmVhdGVPYmplY3RTdG9yZSgidGVzdC1zdG9yZSIgKyBzZWxmLnZlcik7Cisg
ICAgICAgICAgICB2YXIgY291bnQgPSAwOworICAgICAgICAgICAgZG9fYXN5bmNfcHV0cygpOyAv
LyBLZWVwIHRoaXMgdHJhbnNhY3Rpb24gcnVubmluZyBmb3IgYSB3aGlsZQorICAgICAgICAgICAg
ZnVuY3Rpb24gZG9fYXN5bmNfcHV0cygpIHsKKyAgICAgICAgICAgICAgICB2YXIgcmVxID0gc3Rv
cmUucHV0KGNvdW50LCBjb3VudCk7CisgICAgICAgICAgICAgICAgcmVxLm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgICAgICAgICByZXEub25zdWNjZXNzID0gZnVu
Y3Rpb24gKGUpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCsrY291bnQgPCAxMCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgZG9fYXN5bmNfcHV0cygpOworICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxB
bmRMb2coIiciICsgaWQgKyAiLnNldFZlcnNpb24udHJhbnNhY3Rpb24tY29tcGxldGUnIikpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5vbnN1Y2Nlc3MpIHsgb3B0
cy5vbnN1Y2Nlc3MuY2FsbCh0aGF0KTsgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgcmVxLm9uZXJy
b3IgPSBmdW5jdGlvbiAoZSkgeworICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRM
b2coIiciICsgaWQgKyAiLnNldFZlcnNpb24ub25lcnJvciciKSk7CisgICAgICAgICAgICBpZiAo
b3B0cyAmJiBvcHRzLm9uZXJyb3IpIHsgb3B0cy5vbmVycm9yLmNhbGwodGhhdCk7IH0KKyAgICAg
ICAgfTsKKyAgICB9OworfQorCitmdW5jdGlvbiBkZWxldGVEYXRhYmFzZShpZCwgbmFtZSwgb3B0
cykgeworICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInZGVsZXRlRGF0YWJhc2UoIiAr
IGlkICsgIiknIikpOworICAgIHZhciByZXEgPSBpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UobmFt
ZSk7CisgICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgIHNlbGYuc3Rl
cHMucHVzaChldmFsQW5kTG9nKCInZGVsZXRlRGF0YWJhc2UoIiArIGlkICsgIikub25zdWNjZXNz
JyIpKTsKKyAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5vbnN1Y2Nlc3MpIHsgb3B0cy5vbnN1Y2Nl
c3MuY2FsbChudWxsKTsgfQorICAgIH07CisgICAgcmVxLm9uZXJyb3IgPSBmdW5jdGlvbiAoZSkg
eworICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJ2RlbGV0ZURhdGFiYXNlKCIg
KyBpZCArICIpLm9uZXJyb3InIikpOworICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9uZXJyb3Ip
IHsgb3B0cy5vbmVycm9yLmNhbGwobnVsbCk7IH0KKyAgICB9OworICAgIHJlcS5vbmJsb2NrZWQg
PSBmdW5jdGlvbiAoZSkgeworICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJ2Rl
bGV0ZURhdGFiYXNlKCIgKyBpZCArICIpLm9uYmxvY2tlZCciKSk7CisgICAgICAgIGlmIChvcHRz
ICYmIG9wdHMub25ibG9ja2VkKSB7IG9wdHMub25ibG9ja2VkLmNhbGwobnVsbCk7IH0KKyAgICB9
OworfQorCisvLyBydW4gYSBzZXJpZXMgb2Ygc3RlcHMgdGhhdCB0YWtlIGEgY29udGludWF0aW9u
IGZ1bmN0aW9uCitmdW5jdGlvbiBydW5TdGVwcyhjb21tYW5kcykgeworICAgIGlmIChjb21tYW5k
cy5sZW5ndGgpIHsKKyAgICAgICAgdmFyIGNvbW1hbmQgPSBjb21tYW5kcy5zaGlmdCgpOworICAg
ICAgICBjb21tYW5kKGZ1bmN0aW9uKCkgeyBydW5TdGVwcyhjb21tYW5kcyk7IH0pOworICAgIH0K
K30KKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAg
IHRlc3QxKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QxKCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBk
ZWJ1ZygiVEVTVDogZGVsZXRlRGF0YWJhc2UgYmxvY2tlZCBvbiBvcGVuIGhhbmRsZXMiKTsKKyAg
ICBldmFsQW5kTG9nKCJzZWxmLmRibmFtZSA9ICd0ZXN0MSc7IHNlbGYudmVyID0gMTsgc2VsZi5z
dGVwcyA9IFtdIik7CisgICAgdmFyIGggPSBuZXcgQ29ubmVjdGlvbigiaCIpOworICAgIHJ1blN0
ZXBzKFtmdW5jdGlvbihkb05leHQpIHsgaC5vcGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb252ZXJzaW9uOiBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKCIgICAgaCBjbG9zaW5nLCBidXQg
bm90IGltbWVkaWF0ZWx5Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBoLmNsb3NlKCk7IH0sIDApOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9fSk7IH0sCisgICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBkZWxl
dGVEYXRhYmFzZSgiIiwgc2VsZi5kYm5hbWUsIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IG9uc3VjY2VzczogZmluaXNoVGVzdH0pOyB9LAorICAgICAgICBdKTsKKyAgICBmdW5jdGlvbiBm
aW5pc2hUZXN0KCkgeworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNlbGYuc3RlcHMu
dG9TdHJpbmcoKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImgub3BlbiIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgub3Blbi5vbnN1Y2Nlc3MiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJkZWxldGVEYXRhYmFzZSgpIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiaC5vbnZlcnNpb25jaGFuZ2UiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJkZWxldGVEYXRhYmFzZSgpLm9uYmxvY2tlZCIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImguY2xvc2UiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJkZWxldGVEYXRhYmFzZSgpLm9uc3VjY2VzcyIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBdLnRvU3RyaW5nKCkpOworICAgICAgICB0ZXN0MigpOworICAgIH0KK30KKwor
ZnVuY3Rpb24gdGVzdDIoKSB7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJURVNUOiBkZWxl
dGVEYXRhYmFzZSBub3QgYmxvY2tlZCB3aGVuIGhhbmRsZXMgY2xvc2UgaW1tZWRpYXRlbHkiKTsK
KyAgICBldmFsQW5kTG9nKCJzZWxmLmRibmFtZSA9ICd0ZXN0Mic7IHNlbGYudmVyID0gMTsgc2Vs
Zi5zdGVwcyA9IFtdIik7CisgICAgdmFyIGggPSBuZXcgQ29ubmVjdGlvbigiaCIpOworICAgIHJ1
blN0ZXBzKFtmdW5jdGlvbihkb05leHQpIHsgaC5vcGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9udmVyc2lvbjogZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVi
dWcoIiAgICBoIGNsb3NpbmcgaW1tZWRpYXRlbHkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBoLmNsb3NlKCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9fSk7IH0sCisgICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBk
ZWxldGVEYXRhYmFzZSgiIiwgc2VsZi5kYm5hbWUsIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9uc3VjY2VzczogZmluaXNoVGVzdH0pOyB9LAorICAgICAgICBdKTsKKyAgICBmdW5jdGlv
biBmaW5pc2hUZXN0KCkgeworICAgICAgICBkZWJ1ZygiTk9URTogV2lsbCBGQUlMIHdpdGggZXh0
cmEgYm9ndXMgZGVsZXRlRGF0YWJhc2UoKS5vbmJsb2NrZWQgc3RlcDsgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMTMwIik7CisgICAgICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygic2VsZi5zdGVwcy50b1N0cmluZygpIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFsiaC5vcGVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaC5vcGVu
Lm9uc3VjY2VzcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlbGV0ZURhdGFi
YXNlKCkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoLm9udmVyc2lvbmNoYW5n
ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImguY2xvc2UiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJkZWxldGVEYXRhYmFzZSgpLm9uc3VjY2VzcyIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBdLnRvU3RyaW5nKCkpOworICAgICAgICB0ZXN0Mygp
OworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdDMoKSB7CisgICAgZGVidWcoIiIpOworICAgIGRl
YnVnKCJURVNUOiBkZWxldGVEYXRhYmFzZSBpcyBkZWxheWVkIGlmIGEgVkVSU0lPTl9DSEFOR0Ug
dHJhbnNhY3Rpb24gaXMgcnVubmluZyIpOworICAgIGV2YWxBbmRMb2coInNlbGYuZGJuYW1lID0g
J3Rlc3QzJzsgc2VsZi52ZXIgPSAxOyBzZWxmLnN0ZXBzID0gW10iKTsKKyAgICB2YXIgaCA9IG5l
dyBDb25uZWN0aW9uKCJoIik7CisgICAgcnVuU3RlcHMoW2Z1bmN0aW9uKGRvTmV4dCkgeyBoLm9w
ZW4oe29uc3VjY2VzczogZG9OZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv
bnZlcnNpb246IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGVidWcoIiAgICBoIGNsb3NpbmcsIGJ1dCBub3QgaW1tZWRpYXRlbHkiKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGguY2xv
c2UoKTsgfSwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19KTsgfSwKKyAg
ICAgICAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGguc2V0VmVyc2lvbigpOyBkb05leHQoKTsg
fSwKKyAgICAgICAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGRlbGV0ZURhdGFiYXNlKCIiLCBz
ZWxmLmRibmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge29uc3VjY2Vzczog
ZmluaXNoVGVzdH0pOyB9LAorICAgICAgICAgICAgICBdKTsKKworICAgIGZ1bmN0aW9uIGZpbmlz
aFRlc3QoKSB7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic2VsZi5zdGVwcy50b1N0
cmluZygpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiaC5vcGVuIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiaC5vcGVuLm9uc3VjY2VzcyIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImguc2V0VmVyc2lvbiIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImRlbGV0ZURhdGFiYXNlKCkiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJoLnNldFZlcnNpb24ub25zdWNjZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiaC5zZXRWZXJzaW9uLnRyYW5zYWN0aW9uLWNvbXBsZXRlIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiaC5vbnZlcnNpb25jaGFuZ2UiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJkZWxldGVEYXRhYmFzZSgpLm9uYmxvY2tlZCIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImguY2xvc2UiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJkZWxldGVEYXRhYmFzZSgpLm9uc3VjY2VzcyIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBdLnRvU3RyaW5nKCkpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9
Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZmFjdG9yeS1kZWxldGVkYXRh
YmFzZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9mYWN0b3J5
LWRlbGV0ZWRhdGFiYXNlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5NzVkOWM5YzZjOGM4NDhjZWJlNTJkZDc3
MDQzZTNkZmQwYjQ0YjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvZmFjdG9yeS1kZWxldGVkYXRhYmFzZS5qcwpAQCAtMCwwICsxLDkx
IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRz
KCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mgd2Via2l0
SW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCkuIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAg
IHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4
ZWREQi5vcGVuKCdkYXRhYmFzZS10by1kZWxldGUnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gc3RhcnRTZXRWZXJzaW9uOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzdGFydFNldFZlcnNpb24oKQoreworICAgIGRiID0g
ZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKK3sKKyAg
ICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworCisgICAgc3RvcmUgPSBldmFs
QW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIp
OworCisgICAgc2VsZi5pbmRleCA9IGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdpbmRl
eE5hbWUnLCAnJykiKTsKKyAgICBzaG91bGRCZVRydWUoInN0b3JlLmluZGV4TmFtZXMuY29udGFp
bnMoJ2luZGV4TmFtZScpIik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRk
KCd2YWx1ZScsICdrZXknKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0VmFsdWU7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0
aW9uIGdldFZhbHVlKCkKK3sKKyAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coImRiLnRyYW5z
YWN0aW9uKCdzdG9yZU5hbWUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIHRy
YW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB2YXIgc3Rv
cmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5h
bWUnKSIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmdldCgna2V5JykiKTsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEluZGV4OworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBhZGRJbmRleCgpCit7Cisg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0IiwgInZhbHVlIik7
CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24n
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlRGF0YWJhc2U7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0
ZURhdGFiYXNlKCkKK3sKKyAgICBkYi5vbnZlcnNpb25jaGFuZ2UgPSBmdW5jdGlvbigpIHsgZGIu
Y2xvc2UoKTsgfQorICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERC
LmRlbGV0ZURhdGFiYXNlKCdkYXRhYmFzZS10by1kZWxldGUnKSIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gcmVvcGVuRGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHJlb3BlbkRhdGFiYXNlKCkKK3sKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2RhdGFiYXNlLXRvLWRlbGV0ZScp
Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzdGFydFNldFZlcnNpb25BZ2FpbjsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
c3RhcnRTZXRWZXJzaW9uQWdhaW4oKQoreworICAgIHJkYiA9IGV2YWxBbmRMb2coImRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZl
cnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHZlcmlmeU5v
dEZvdW5kOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiB2ZXJpZnlOb3RGb3VuZCgpCit7CisgICAgc2hvdWxkQmUoImRiLm9iamVj
dFN0b3JlTmFtZXMubGVuZ3RoIiwgIjAiKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0
ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4LWNvdW50LmpzIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4LWNvdW50LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjJiMGU0ZWYwOTg0NTAxOWY3ZTFmZGZhZDdkNDZjNmFiYWJiNDZhN2YKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW5kZXgtY291bnQu
anMKQEAgLTAsMCArMSwxNTQgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBv
cnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwor
ICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJ
bmRleGVkREIncyBJREJJbmRleC5jb3VudCgpLiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRl
eGVkREIub3BlbignaW5kZXgtY291bnQnKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7
CisgICAgICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Cisg
ICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicp
Iik7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
ICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHByZXBhcmVEYXRhYmFzZTsKKyAgICB9OworfQor
CitmdW5jdGlvbiBwcmVwYXJlRGF0YWJhc2UoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1
ZygicHJlcGFyaW5nIGRhdGFiYXNlIik7CisgICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRy
YW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09
IG51bGwiKTsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBzdG9yZSA9
IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51
bGwpIik7CisKKyAgICBzZWxmLmluZGV4ID0gZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgo
J2luZGV4TmFtZScsICcnKSIpOworICAgIHNob3VsZEJlVHJ1ZSgic3RvcmUuaW5kZXhOYW1lcy5j
b250YWlucygnaW5kZXhOYW1lJykiKTsKKworICAgIGRlYnVnKCJhZGRpbmcgMCAuLi4gOTkiKTsK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgIHJlcXVlc3QgPSBz
dG9yZS5hZGQoaSwgaSk7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworICAgIH0KKyAgICB0cmFucy5vbmNvbXBsZXRlID0gdmVyaWZ5Q291bnQ7Cit9
CisKK2Z1bmN0aW9uIHZlcmlmeUNvdW50KCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWco
InZlcmlmeWluZyBjb3VudCB3aXRob3V0IHJhbmdlIik7CisgICAgdHJhbnMgPSBldmFsQW5kTG9n
KCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZU5hbWUnLCBJREJUcmFuc2FjdGlvbi5SRUFE
X09OTFkpIik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPSBudWxsIik7CisgICAgdHJhbnMu
b25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxldGUg
PSB2ZXJpZnlDb3VudFdpdGhSYW5nZTsKKworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUg
PSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICBzaG91bGRCZVRydWUoInN0
b3JlICE9IG51bGwiKTsKKyAgICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuaW5k
ZXgoJ2luZGV4TmFtZScpIik7CisgICAgc2hvdWxkQmVUcnVlKCJpbmRleCAhPSBudWxsIik7CisK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4LmNvdW50KCkiKTsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2Yg
cmVxdWVzdC5yZXN1bHQgPT0gJ251bWJlciciKTsKKyAgICAgICAgIHNob3VsZEJlKCJyZXF1ZXN0
LnJlc3VsdCIsICIxMDAiKTsKKyAgICAgICAgIC8vIGxldCB0aGUgdHJhbnNhY3Rpb24gY29tcGxl
dGUKKyAgICB9OworfQorCitmdW5jdGlvbiB2ZXJpZnlDb3VudFdpdGhSYW5nZSgpCit7CisgICAg
ZGVidWcoIiIpOworICAgIGRlYnVnKCJ2ZXJpZnlpbmcgY291bnQgd2l0aCByYW5nZSIpOworICAg
IHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmVOYW1lJywg
SURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKSIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT0g
bnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAg
ICB0cmFucy5vbmNvbXBsZXRlID0gdmVyaWZ5Q291bnRXaXRoS2V5OworCisgICAgc3RvcmUgPSBl
dmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworICAg
IHNob3VsZEJlVHJ1ZSgic3RvcmUgIT0gbnVsbCIpOworICAgIHN0b3JlID0gZXZhbEFuZExvZygi
aW5kZXggPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykuaW5kZXgoJ2luZGV4TmFtZScp
Iik7CisgICAgc2hvdWxkQmVUcnVlKCJpbmRleCAhPSBudWxsIik7CisKKyAgICB2YXIgdGVzdHMg
PSBbCisgICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiA5OSwgdXBw
ZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDEwMCB9LAorICAgICAgICB7IGxvd2VyOiAwLCBsb3dl
ck9wZW46IHRydWUsIHVwcGVyOiA5OSwgdXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDk5IH0s
CisgICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiA5OSwgdXBwZXJP
cGVuOiB0cnVlLCBleHBlY3RlZDogOTkgfSwKKyAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVu
OiB0cnVlLCB1cHBlcjogOTksIHVwcGVyT3BlbjogdHJ1ZSwgZXhwZWN0ZWQ6IDk4IH0sCisgICAg
ICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiAxMDAsIHVwcGVyT3Blbjog
ZmFsc2UsIGV4cGVjdGVkOiAxMDAgfSwKKyAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiBm
YWxzZSwgdXBwZXI6IDEwMCwgdXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDEwMCB9LAorICAg
ICAgICB7IGxvd2VyOiAxMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDEwMCwgdXBwZXJPcGVu
OiBmYWxzZSwgZXhwZWN0ZWQ6IDkwIH0sCisgICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3Blbjog
ZmFsc2UsIHVwcGVyOiAwLCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogMSB9LAorICAgICAg
ICB7IGxvd2VyOiA1MDAsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiA1MDAsIHVwcGVyT3Blbjog
ZmFsc2UsIGV4cGVjdGVkOiAwIH0KKyAgICBdOworCisgICAgZnVuY3Rpb24gbmV4dFRlc3QoKSB7
CisgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgZXZhbEFuZExvZygidGVzdCA9ICIgKyBKU09O
LnN0cmluZ2lmeSh0ZXN0cy5zaGlmdCgpKSk7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gaW5kZXguY291bnQoSURCS2V5UmFuZ2UuYm91bmQodGVzdC5sb3dlciwgdGVz
dC51cHBlciwgdGVzdC5sb3dlck9wZW4sIHRlc3QudXBwZXJPcGVuKSkiKTsKKyAgICAgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0eXBl
b2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251bWJlciciKTsKKyAgICAgICAgICAgICBzaG91bGRCZSgi
cmVxdWVzdC5yZXN1bHQiLCBTdHJpbmcodGVzdC5leHBlY3RlZCkpOworCisgICAgICAgICAgICAg
aWYgKHRlc3RzLmxlbmd0aCkgeworICAgICAgICAgICAgICAgICBuZXh0VGVzdCgpOworICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAvLyBvdGhlcndpc2UgbGV0IHRoZSB0cmFuc2FjdGlvbiBj
b21wbGV0ZQorICAgICAgICB9OworICAgIH0KKworICAgIG5leHRUZXN0KCk7Cit9CisKK2Z1bmN0
aW9uIHZlcmlmeUNvdW50V2l0aEtleSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ2
ZXJpZnlpbmcgY291bnQgd2l0aCBrZXkiKTsKKyAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5z
ID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSki
KTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0
ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IGZpbmlz
aEpTVGVzdDsKKworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RT
dG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICBzaG91bGRCZVRydWUoInN0b3JlICE9IG51bGwiKTsK
KyAgICBzdG9yZSA9IGV2YWxBbmRMb2coImluZGV4ID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3Jl
TmFtZScpLmluZGV4KCdpbmRleE5hbWUnKSIpOworICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXggIT0g
bnVsbCIpOworCisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXguY291bnQoTmFOKSIs
ICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oImluZGV4LmNvdW50KHt9KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIp
OworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4LmNvdW50KC9yZWdleC8pIiwgIklE
QkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICB2YXIgdGVzdHMgPSBbCisgICAg
ICAgIHsga2V5OiAwLCBleHBlY3RlZDogMSB9LAorICAgICAgICB7IGtleTogMTAwLCBleHBlY3Rl
ZDogMCB9LAorICAgICAgICB7IGtleTogbnVsbCwgZXhwZWN0ZWQ6IDEwMCB9CisgICAgXTsKKwor
ICAgIGZ1bmN0aW9uIG5leHRUZXN0KCkgeworICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgIGV2
YWxBbmRMb2coInRlc3QgPSAiICsgSlNPTi5zdHJpbmdpZnkodGVzdHMuc2hpZnQoKSkpOworICAg
ICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4LmNvdW50KHRlc3Qua2V5
KSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICBz
aG91bGRCZVRydWUoInR5cGVvZiByZXF1ZXN0LnJlc3VsdCA9PSAnbnVtYmVyJyIpOworICAgICAg
ICAgICAgIHNob3VsZEJlKCJyZXF1ZXN0LnJlc3VsdCIsIFN0cmluZyh0ZXN0LmV4cGVjdGVkKSk7
CisKKyAgICAgICAgICAgICBpZiAodGVzdHMubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgIG5l
eHRUZXN0KCk7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIC8vIG90aGVyd2lzZSBsZXQg
dGhlIHRyYW5zYWN0aW9uIGNvbXBsZXRlCisgICAgICAgIH07CisgICAgfQorCisgICAgbmV4dFRl
c3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbmRleC1jdXJzb3Iu
anMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW5kZXgtY3Vyc29y
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmM5ODhlYmMxOGM0NmU4ODgxYzRmMTUwMzM4ZjcyN2JmNDg3NTI0ZjcK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvaW5kZXgtY3Vyc29yLmpzCkBAIC0wLDAgKzEsMjQ5IEBACitpZiAodGhpcy5pbXBvcnRTY3Jp
cHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVz
Y3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mgd2Via2l0SURCSW5kZXgub3BlbkN1cnNvciArIHRo
ZSBjdXJzb3IgaXQgcHJvZHVjZXMgaW4gZGVwdGguIik7CisKKy8vIEluIG9yZGVyIG9mIGhvdyBp
dCBzaG91bGQgYmUgc29ydGVkIGJ5IEluZGV4ZWREQi4KK3NlbGYudGVzdERhdGEgPSBbCisgICAg
MSwKKyAgICAxLAorICAgIDMuMTQxNTksCisgICAgMy4xNDE1OSwKKyAgICAxMCwKKyAgICAvLyBG
SVhNRTogRGF0ZXMuCisgICAgIkEgYmlnIHN0cmluZyIsCisgICAgInRoZSBCSUdFU1Qgc3RyaW5n
IiwKKyAgICAidGhlIEJJR0VTVCBzdHJpbmciCitdOworCitmdW5jdGlvbiBvcGVuRGF0YWJhc2Uo
KQoreworICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdpbmRleC1jdXJz
b3InKSIpOworICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uOworICAgIHJlc3VsdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNp
b24oKQoreworICAgIHNlbGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKKworICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJz
aW9uJykiKTsKKyAgICByZXN1bHQub25zdWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7CisgICAgcmVz
dWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVs
ZXRlRXhpc3RpbmcoKQoreworICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7
CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworCisgICAgZGVs
ZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIHNlbGYub2JqZWN0U3RvcmUgPSBldmFsQW5k
TG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc29tZU9iamVjdFN0b3JlJykiKTsKKyAgICBzZWxm
LmluZGV4T2JqZWN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ3NvbWVJ
bmRleCcsICd4JykiKTsKKyAgICBzZWxmLm5leHRUb0FkZCA9IDA7CisgICAgYWRkRGF0YSgpOwor
fQorCitmdW5jdGlvbiBhZGREYXRhKCkKK3sKKyAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZS5hZGQoeyd4JzogdGVzdERhdGFbbmV4dFRvQWRkXX0sIG5leHRUb0FkZCkiKTsKKyAg
ICByZXN1bHQub25zdWNjZXNzID0gKytzZWxmLm5leHRUb0FkZCA8IHRlc3REYXRhLmxlbmd0aCA/
IGFkZERhdGEgOiBzY2hlZHVsZVRlc3RzOworICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNjaGVkdWxlVGVzdHMoKQoreworICAgIGRl
YnVnKCJTY2hlZHVsaW5nIHRlc3RzLi4uIik7CisgICAgc2VsZi5zY2hlZHVsZWRUZXN0cyA9IFtd
OworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdERhdGEubGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgLyogbGVmdCBib3VuZCwgaXMgb3BlbiwgcmlnaHQgYm91bmQsIGlzIG9wZW4sIGFzY2VuZGlu
ZyAqLworICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCB0cnVlLCBudWxsLCBudWxs
LCB0cnVlXSk7CisgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBudWxs
LCBudWxsLCB0cnVlXSk7CisgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW251bGwsIG51
bGwsIGksIHRydWUsIHRydWVdKTsKKyAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbbnVs
bCwgbnVsbCwgaSwgZmFsc2UsIHRydWVdKTsKKyAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlm
dChbaSwgdHJ1ZSwgbnVsbCwgbnVsbCwgZmFsc2VdKTsKKyAgICAgICAgc2NoZWR1bGVkVGVzdHMu
dW5zaGlmdChbaSwgZmFsc2UsIG51bGwsIG51bGwsIGZhbHNlXSk7CisgICAgICAgIHNjaGVkdWxl
ZFRlc3RzLnVuc2hpZnQoW251bGwsIG51bGwsIGksIHRydWUsIGZhbHNlXSk7CisgICAgICAgIHNj
aGVkdWxlZFRlc3RzLnVuc2hpZnQoW251bGwsIG51bGwsIGksIGZhbHNlLCBmYWxzZV0pOworICAg
ICAgICBmb3IgKHZhciBqID0gNjsgaiA8IHRlc3REYXRhLmxlbmd0aDsgKytqKSB7CisgICAgICAg
ICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCB0cnVlLCBqLCB0cnVlLCB0cnVlXSk7Cisg
ICAgICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCB0cnVlLCBqLCBmYWxzZSwgdHJ1
ZV0pOworICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgZmFsc2UsIGosIHRy
dWUsIHRydWVdKTsKKyAgICAgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNl
LCBqLCBmYWxzZSwgdHJ1ZV0pOworICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChb
aSwgdHJ1ZSwgaiwgdHJ1ZSwgZmFsc2VdKTsKKyAgICAgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVu
c2hpZnQoW2ksIHRydWUsIGosIGZhbHNlLCBmYWxzZV0pOworICAgICAgICAgICAgc2NoZWR1bGVk
VGVzdHMudW5zaGlmdChbaSwgZmFsc2UsIGosIHRydWUsIGZhbHNlXSk7CisgICAgICAgICAgICBz
Y2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCBmYWxzZSwgaiwgZmFsc2UsIGZhbHNlXSk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBkZWJ1ZygiUnVubmluZyB0ZXN0cy4uLiIpOworICAgIHJ1bk5l
eHRUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHJ1bk5leHRUZXN0KCkKK3sKKyAgICBpZiAoIXNjaGVk
dWxlZFRlc3RzLmxlbmd0aCkgeworICAgICAgICB0ZXN0TnVsbEtleVJhbmdlKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICB2YXIgdGVzdCA9IHNjaGVkdWxlZFRlc3RzLnBvcCgpOwor
ICAgIHNlbGYubG93ZXIgPSB0ZXN0WzBdOworICAgIHNlbGYubG93ZXJJc09wZW4gPSB0ZXN0WzFd
OworICAgIHNlbGYudXBwZXIgPSB0ZXN0WzJdOworICAgIHNlbGYudXBwZXJJc09wZW4gPSB0ZXN0
WzNdOworICAgIHNlbGYuYXNjZW5kaW5nID0gdGVzdFs0XTsKKworICAgIHN0ciA9ICJOZXh0IHRl
c3Q6ICI7CisgICAgaWYgKGxvd2VyICE9PSBudWxsKSB7CisgICAgICAgIHN0ciArPSAibG93ZXIg
IjsKKyAgICAgICAgaWYgKGxvd2VySXNPcGVuKQorICAgICAgICAgICAgc3RyICs9ICJvcGVuICI7
CisgICAgICAgIHN0ciArPSAiYm91bmQgaXMgIiArIGxvd2VyICsgIjsgIjsKKyAgICB9CisgICAg
aWYgKHVwcGVyICE9PSBudWxsKSB7CisgICAgICAgIHN0ciArPSAidXBwZXIgIjsKKyAgICAgICAg
aWYgKHVwcGVySXNPcGVuKQorICAgICAgICAgICAgc3RyICs9ICJvcGVuICI7CisgICAgICAgIHN0
ciArPSAiYm91bmQgaXMgIiArIHVwcGVyICsgIjsgIjsKKyAgICB9CisgICAgaWYgKGFzY2VuZGlu
ZykKKyAgICAgICAgc3RyICs9ICJzb3J0ZWQgYXNjZW5kaW5nLiI7CisgICAgZWxzZQorICAgICAg
ICBzdHIgKz0gInNvcnRlZCBkZXNjZW5kaW5nLiI7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVi
dWcoc3RyKTsKKworICAgIC8vIFdvcmsgYXJvdW5kIGZvciBkdXBsaWNhdGUgdmFsdWVzLgorICAg
IGlmICh1cHBlciAhPT0gbnVsbCkgeworICAgICAgICBpZiAodXBwZXJJc09wZW4pIHsKKyAgICAg
ICAgICAgIHdoaWxlICh1cHBlciA+IDAgJiYgdGVzdERhdGFbdXBwZXJdID09PSB0ZXN0RGF0YVt1
cHBlciAtIDFdKQorICAgICAgICAgICAgICAgIC0tc2VsZi51cHBlcjsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIHdoaWxlICh1cHBlciA8IHRlc3REYXRhLmxlbmd0aCAtIDEgJiYgdGVz
dERhdGFbdXBwZXJdID09PSB0ZXN0RGF0YVt1cHBlciArIDFdKQorICAgICAgICAgICAgICAgICsr
c2VsZi51cHBlcjsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAobG93ZXIgIT09IG51bGwpIHsK
KyAgICAgICAgaWYgKGxvd2VySXNPcGVuKSB7CisgICAgICAgICAgICB3aGlsZSAobG93ZXIgPCB0
ZXN0RGF0YS5sZW5ndGggLSAxICYmIHRlc3REYXRhW2xvd2VyXSA9PT0gdGVzdERhdGFbbG93ZXIg
KyAxXSkKKyAgICAgICAgICAgICAgICArK3NlbGYubG93ZXI7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICB3aGlsZSAobG93ZXIgPiAwICYmIHRlc3REYXRhW2xvd2VyXSA9PT0gdGVzdERh
dGFbbG93ZXIgLSAxXSkKKyAgICAgICAgICAgICAgICAtLXNlbGYubG93ZXI7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBpZiAoYXNjZW5kaW5nKSB7CisgICAgICAgIGlmIChsb3dlciAhPT0gbnVs
bCkgeworICAgICAgICAgICAgaWYgKCFsb3dlcklzT3BlbikKKyAgICAgICAgICAgICAgICBzZWxm
LmV4cGVjdGVkSW5kZXggPSBsb3dlcjsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBzZWxmLmV4cGVjdGVkSW5kZXggPSBsb3dlciArIDE7CisgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gMDsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAo
dXBwZXIgIT09IG51bGwpIHsKKyAgICAgICAgICAgIGlmICghdXBwZXJJc09wZW4pCisgICAgICAg
ICAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gdXBwZXI7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gdXBwZXIgLSAxOworICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IHRlc3REYXRhLmxlbmd0aCAt
IDE7CisgICAgfQorICAgIHRlc3RXaXRoaW5Cb3VuZHMoKTsKKworICAgIGlmICh0ZXN0RGF0YVts
b3dlcl0gPT09IHRlc3REYXRhW3VwcGVyXSAmJiAobG93ZXJJc09wZW4gfHwgdXBwZXJJc09wZW4p
KSB7CisgICAgICAgIGRlYnVnKCJTa2lwcGluZyBpbGxlZ2FsIGtleSByYW5nZS4iKTsKKyAgICAg
ICAgcnVuTmV4dFRlc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZhciBrZXlS
YW5nZTsKKyAgICBpZiAobG93ZXIgIT09IG51bGwgJiYgdXBwZXIgIT09IG51bGwpCisgICAgICAg
IGtleVJhbmdlID0gSURCS2V5UmFuZ2UuYm91bmQodGVzdERhdGFbbG93ZXJdLCB0ZXN0RGF0YVt1
cHBlcl0sIGxvd2VySXNPcGVuLCB1cHBlcklzT3Blbik7CisgICAgZWxzZSBpZiAobG93ZXIgIT09
IG51bGwpCisgICAgICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2UubG93ZXJCb3VuZCh0ZXN0RGF0
YVtsb3dlcl0sIGxvd2VySXNPcGVuKTsKKyAgICBlbHNlCisgICAgICAgIGtleVJhbmdlID0gSURC
S2V5UmFuZ2UudXBwZXJCb3VuZCh0ZXN0RGF0YVt1cHBlcl0sIHVwcGVySXNPcGVuKTsKKworICAg
IHZhciByZXF1ZXN0ID0gaW5kZXhPYmplY3Qub3BlbktleUN1cnNvcihrZXlSYW5nZSwgYXNjZW5k
aW5nID8gSURCQ3Vyc29yLk5FWFQgOiBJREJDdXJzb3IuUFJFVik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBjdXJzb3JJdGVyYXRpb247CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHRlc3RXaXRoaW5Cb3VuZHMoKQoreworICAg
IGlmIChleHBlY3RlZEluZGV4IDwgMCB8fCB0ZXN0RGF0YS5sZW5ndGggPD0gZXhwZWN0ZWRJbmRl
eCkKKyAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gbnVsbDsKKyAgICBpZiAobG93ZXIgIT09
IG51bGwgJiYgZXhwZWN0ZWRJbmRleCA8IGxvd2VyKQorICAgICAgICBzZWxmLmV4cGVjdGVkSW5k
ZXggPSBudWxsOworICAgIGlmICh1cHBlciAhPT0gbnVsbCAmJiB1cHBlciA8IGV4cGVjdGVkSW5k
ZXgpCisgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IG51bGw7CisgICAgaWYgKGxvd2VyICE9
PSBudWxsICYmIGxvd2VySXNPcGVuICYmIGV4cGVjdGVkSW5kZXggPD0gbG93ZXIpCisgICAgICAg
IHNlbGYuZXhwZWN0ZWRJbmRleCA9IG51bGw7CisgICAgaWYgKHVwcGVyICE9PSBudWxsICYmIHVw
cGVySXNPcGVuICYmIHVwcGVyIDw9IGV4cGVjdGVkSW5kZXgpCisgICAgICAgIHNlbGYuZXhwZWN0
ZWRJbmRleCA9IG51bGw7Cit9CisKK2Z1bmN0aW9uIGN1cnNvckl0ZXJhdGlvbigpCit7CisgICAg
aWYgKGV4cGVjdGVkSW5kZXggPT09IG51bGwpIHsKKyAgICAgICAgc2hvdWxkQmVOdWxsKCJldmVu
dC50YXJnZXQucmVzdWx0Iik7CisgICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwpIHsKKyAgICAg
ICAgdGVzdEZhaWxlZCgiZXZlbnQudGFyZ2V0LnJlc3VsdCBzaG91bGQgbm90IGJlIG51bGwuIik7
CisgICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBz
aG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgImV4cGVjdGVkSW5kZXgi
KTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAidGVzdERhdGFbIiAr
IGV4cGVjdGVkSW5kZXggKyAiXSIpOworICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IGFzY2VuZGlu
ZyA/IGV4cGVjdGVkSW5kZXggKyAxIDogZXhwZWN0ZWRJbmRleCAtIDE7CisgICAgdGVzdFdpdGhp
bkJvdW5kcygpOworCisgICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpOworfQorCitz
ZWxmLm51bGxLZXlSYW5nZVN0ZXAgPSAwOworZnVuY3Rpb24gdGVzdE51bGxLZXlSYW5nZSgpCit7
CisgICAgc2VsZi5sb3dlciA9IDA7CisgICAgc2VsZi5sb3dlcklzT3BlbiA9IGZhbHNlOworICAg
IHNlbGYudXBwZXIgPSB0ZXN0RGF0YS5sZW5ndGgtMTsKKyAgICBzZWxmLnVwcGVySXNPcGVuID0g
ZmFsc2U7CisKKyAgICBzdHIgPSAiTmV4dCB0ZXN0OiBudWxsIGtleSBwYXRoICI7CisgICAgaWYg
KHNlbGYubnVsbEtleVJhbmdlU3RlcCA9PSAwKSB7CisgICAgICAgIHN0ciArPSAic29ydGVkIGFz
Y2VuZGluZy4iOworICAgICAgICBzZWxmLmFzY2VuZGluZyA9IHRydWU7CisgICAgICAgIHNlbGYu
ZXhwZWN0ZWRJbmRleCA9IGxvd2VyOworICAgICAgICBzZWxmLm51bGxLZXlSYW5nZVN0ZXAgPSAx
OworICAgIH0gZWxzZSBpZiAoc2VsZi5udWxsS2V5UmFuZ2VTdGVwID09IDEpIHsKKyAgICAgICAg
c3RyICs9ICJzb3J0ZWQgZGVzY2VuZGluZy4iOworICAgICAgICBzZWxmLmFzY2VuZGluZyA9IGZh
bHNlOworICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSB1cHBlcjsKKyAgICAgICAgc2VsZi5u
dWxsS2V5UmFuZ2VTdGVwID0gMjsKKyAgICB9IGVsc2UgeworICAgICAgICBmaW5pc2hKU1Rlc3Qo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zyhz
dHIpOworCisgICAgdmFyIHJlcXVlc3QgPSBpbmRleE9iamVjdC5vcGVuS2V5Q3Vyc29yKG51bGws
IGFzY2VuZGluZyA/IElEQkN1cnNvci5ORVhUIDogSURCQ3Vyc29yLlBSRVYpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gY3Vyc29ySXRlcmF0aW9uOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCityZW1vdmVWZW5kb3JQcmVmaXhlcygpOworb3Bl
bkRhdGFiYXNlKCk7IC8vIFRoZSBmaXJzdCBzdGVwLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4LWdldC1rZXktYXJndW1lbnQtcmVxdWly
ZWQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW5kZXgtZ2V0
LWtleS1hcmd1bWVudC1yZXF1aXJlZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xM2QzODcwZWVlOWY0ZWJhOTAx
NTY4ZWYwOTdiMzBkZmRlYzliOTdhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4LWdldC1rZXktYXJndW1lbnQtcmVxdWlyZWQu
anMKQEAgLTAsMCArMSwzOSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9y
dFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Cisg
ICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IElu
ZGV4ZWREQiBpbmRleCAuZ2V0KCkgcmVxdWlyZWQgYXJndW1lbnQiKTsKKworZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxv
Y2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlv
bikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3Vj
Y2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbign
MScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0
b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKK3sKKyAgICBkZWxldGVB
bGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7IGtleVBhdGg6ICdpZCcsIGF1
dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7CisgICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9
IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdmaXJzdCcsICdmaXJzdCcpOyIpOworICAgIHNob3Vs
ZFRocm93KCJpbmRleC5nZXQoKTsiKTsKKyAgICBzaG91bGRUaHJvdygiaW5kZXguZ2V0S2V5KCk7
Iik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvaW5kZXgtbXVsdGllbnRyeS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9pbmRleC1tdWx0aWVudHJ5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAzY2RkOGE5MTU5ZWYx
OWUxOWE3NjcyMGFjZjk2ZTYwN2IxNzkzZDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW5kZXgtbXVsdGllbnRyeS5qcwpAQCAtMCww
ICsxLDE0MCBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMo
Jy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0
U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IGZlYXR1cmVzIG9m
IEluZGV4ZWREQidzIG11bHRpRW50cnkgaW5kaWNlcy4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7
CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJpbmRleGVkREIub3BlbignaW5kZXgtbXVsdGlFbnRyeScpIik7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbigpIHsKKyAgICAgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKKworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbign
MScpIik7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHByZXBhcmVEYXRhYmFzZTsKKyAgICB9Owor
fQorCitmdW5jdGlvbiBwcmVwYXJlRGF0YWJhc2UoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBk
ZWJ1ZygiQ3JlYXRpbmcgZW1wdHkgc3RvcmVzIGFuZCBpbmRleGVzIik7CisgICAgdmFyIHRyYW5z
ID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxk
QmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVk
QWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gYWRkRGF0YTsKKworICAgIGRl
bGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3Jl
ID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9y
ZS5jcmVhdGVJbmRleCgnaW5kZXgnLCAneCcsIHttdWx0aUVudHJ5OiB0cnVlfSkiKTsKKworICAg
IHN0b3JlMiA9IGV2YWxBbmRMb2coInN0b3JlMiA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9y
ZS11bmlxdWUnKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlMi5jcmVhdGVJbmRleCgnaW5kZXgt
dW5pcXVlJywgJ3gnLCB7bXVsdGlFbnRyeTogdHJ1ZSwgdW5pcXVlOiB0cnVlfSkiKTsKK30KKwor
ZnVuY3Rpb24gYWRkRGF0YSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJQb3B1bGF0
aW5nIHN0b3JlcyAoYW5kIGluZGV4ZXMpIik7CisgICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9n
KCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUnXSwgSURCVHJhbnNhY3Rpb24u
UkVBRF9XUklURSkiKTsKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0
Q2FsbGJhY2s7CisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKCkgeyB2ZXJp
ZnlJbmRleGVzKCdpbmRleCcsIHZlcmlmeVVuaXF1ZUNvbnN0cmFpbnQpOyB9OworCisgICAgZGVi
dWcoIkZpcnN0IHRyeSBzb21lIGtleXMgdGhhdCBhcmVuJ3Qgd2hhdCB3ZSdyZSBleHBlY3Rpbmci
KTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0
b3JlJykucHV0KHt4OiBbNywgOCwgOV0sIHk6ICdhJ30sICdmb28nKSIpOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIGRlYnVnKCJOb3cgb3Zlcndy
aXRlIHRoZW0gd2l0aCB3aGF0IHdlJ3JlIGV4cGVjdGluZyIpOworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKS5wdXQoe3g6IFsxLCAyLCAz
XSwgeTogJ2EnfSwgJ2ZvbycpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVj
dFN0b3JlKCdzdG9yZScpLnB1dCh7eDogWzQsIDUsIDZdLCB5OiAnYid9LCAnYmFyJykiKTsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rp
b24gdmVyaWZ5SW5kZXhlcyhpbmRleE5hbWUsIGNhbGxiYWNrKQoreworICAgIGRlYnVnKCIiKTsK
KyAgICBkZWJ1ZygiVmVyaWZ5aW5nIGluZGV4OiAiICsgaW5kZXhOYW1lKTsKKyAgICB0cmFuc2Fj
dGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZSdd
LCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9
IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBj
YWxsYmFjazsKKworICAgIGV4cGVjdGVkID0gWworICAgICAgICB7IGtleTogMSwgcHJpbWFyeUtl
eTogJ2ZvbycsIHk6ICdhJyB9LAorICAgICAgICB7IGtleTogMiwgcHJpbWFyeUtleTogJ2Zvbycs
IHk6ICdhJyB9LAorICAgICAgICB7IGtleTogMywgcHJpbWFyeUtleTogJ2ZvbycsIHk6ICdhJyB9
LAorICAgICAgICB7IGtleTogNCwgcHJpbWFyeUtleTogJ2JhcicsIHk6ICdiJyB9LAorICAgICAg
ICB7IGtleTogNSwgcHJpbWFyeUtleTogJ2JhcicsIHk6ICdiJyB9LAorICAgICAgICB7IGtleTog
NiwgcHJpbWFyeUtleTogJ2JhcicsIHk6ICdiJyB9LAorICAgIF07CisKKyAgICB2YXIgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLmluZGV4KCci
ICsgaW5kZXhOYW1lICsgIicpLm9wZW5DdXJzb3IoKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24oZXZlbnQpIHsKKyAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdCIpOworICAgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgICAgICBleCA9
IGV4cGVjdGVkLnNoaWZ0KCk7CisgICAgICAgICAgICBzaG91bGRCZVRydWUoImV4ICE9IG51bGwi
KTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgU3RyaW5nKGV4LmtleSkpOwor
ICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjdXJzb3IucHJpbWFyeUtleSIsIGV4
LnByaW1hcnlLZXkpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjdXJzb3Iu
dmFsdWUueSIsIGV4LnkpOworICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBzaG91bGRCZVRydWUoImV4cGVjdGVkLmxlbmd0aCA9PT0g
MCIpOworICAgICAgICB9CisgICAgfTsKK30KKworZnVuY3Rpb24gdmVyaWZ5VW5pcXVlQ29uc3Ry
YWludCgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJWZXJpZnlpbmcgdW5pcXVlIGNv
bnN0cmFpbnQgb24gbXVsdGlFbnRyeSBpbmRleCIpOworICAgIHRyYW5zYWN0aW9uID0gZXZhbEFu
ZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlLXVuaXF1ZSddLCBJREJU
cmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5j
dGlvbiAoKSB7CisgICAgICAgIGRlYnVnKCJUcmFuc2FjdGlvbiBhYm9ydGVkIGFzIGV4cGVjdGVk
Iik7CisgICAgICAgIGNyZWF0ZUluZGV4T25TdG9yZVdpdGhEYXRhKCk7CisgICAgfTsKKyAgICB0
cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7CisKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlLXVu
aXF1ZScpLnB1dCh7eDogWzEsIDIsIDNdLCB5OiAnYSd9LCAnZm9vJykiKTsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBkZWJ1Zygic3VjY2VzcyEiKTsKKyAgICAgICAgZGVi
dWcoIlJlcGxhY2UgYW4gZXhpc3RpbmcgcmVjb3JkIC0gdGhpcyBzaG91bGQgd29yayIpOworICAg
ICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3Jl
LXVuaXF1ZScpLnB1dCh7eDogWzEsIDIsIDddLCB5OiAnYSd9LCAnZm9vJykiKTsKKyAgICAgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBkZWJ1Zygic3VjY2VzcyEi
KTsKKyAgICAgICAgICAgIGRlYnVnKCJUaGlzIHNob3VsZCBmYWlsIHRoZSB1bmlxdWVuZXNzIGNv
bnN0cmFpbnQgb24gdGhlIGluZGV4LCBhbmQgZmFpbDoiKTsKKyAgICAgICAgICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUtdW5pcXVlJykucHV0
KHt4OiBbNSwgMl0sIHk6ICdjJ30sICdzaG91bGQgZmFpbCcpIik7CisgICAgICAgICAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7CisgICAgICAgICAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbigpIHsgZGVidWcoIlJlcXVlc3QgZmFpbGVkLCBhcyBl
eHBlY3RlZCIpOyB9OworICAgICAgICB9OworICAgIH07Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUlu
ZGV4T25TdG9yZVdpdGhEYXRhKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIkNyZWF0
ZSBhbiBpbmRleCBvbiBhIHBvcHVsYXRlZCBzdG9yZSIpOworCisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImRiLnNldFZlcnNpb24oJzInKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7
CisKKyAgICAgICAgdmFyIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKyAgICAg
ICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgICAgICB0cmFu
cy5vbmNvbXBsZXRlID0gZnVuY3Rpb24oKSB7IHZlcmlmeUluZGV4ZXMoJ2luZGV4LW5ldycsIGZp
bmlzaEpTVGVzdCk7IH07CisKKyAgICAgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRy
YW5zLm9iamVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLmNy
ZWF0ZUluZGV4KCdpbmRleC1uZXcnLCAneCcsIHttdWx0aUVudHJ5OiB0cnVlfSkiKTsKKyAgICB9
OworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4LXBvcHVsYXRpb24u
anMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW5kZXgtcG9wdWxh
dGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41YThiMTc2OTFjZTNkZmE2MDdiYTg0ZjYwNGUxMTgwZTY4OTcx
ZGRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL2luZGV4LXBvcHVsYXRpb24uanMKQEAgLTAsMCArMSw5MiBAQAoraWYgKHRoaXMuaW1w
b3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9
CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBpbmRleCBwb3B1bGF0aW9uLiIpOworCitm
dW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgnaW5kZXgtcG9wdWxh
dGlvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVTdWNjZXNzOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBk
ZWxldGVTdWNjZXNzKCkKK3sKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9w
ZW4oJ2luZGV4LXBvcHVsYXRpb24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZG9TZXRW
ZXJzaW9uMTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
K30KKworZnVuY3Rpb24gZG9TZXRWZXJzaW9uMSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRl
YnVnKCJkb1NldFZlcnNpb24xKCk6Iik7CisgICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IHNldFZlcnNpb24xOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uMSgpCit7CisgICAgZGVidWcoIiIpOworICAg
IGRlYnVnKCJzZXRWZXJzaW9uMSgpOiIpOworICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygi
dHJhbnNhY3Rpb24gPSByZXF1ZXN0LnJlc3VsdCIpOworICAgIHRyYW5zYWN0aW9uLm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5l
eHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTEnKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlLnB1
dCh7ZGF0YTogJ2EnLCBpbmRleEtleTogMTB9LCAxKSIpOworICAgIGV2YWxBbmRMb2coInN0b3Jl
LnB1dCh7ZGF0YTogJ2InLCBpbmRleEtleTogMjB9LCAyKSIpOworICAgIGV2YWxBbmRMb2coInN0
b3JlLnB1dCh7ZGF0YTogJ2MnLCBpbmRleEtleTogMTB9LCAzKSIpOworICAgIGV2YWxBbmRMb2co
InN0b3JlLnB1dCh7ZGF0YTogJ2QnLCBpbmRleEtleTogMjB9LCA0KSIpOworICAgIGV2YWxBbmRM
b2coImluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4MScsICdpbmRleEtleScpIik7Cisg
ICAgc2hvdWxkQmVUcnVlKCJpbmRleCBpbnN0YW5jZW9mIElEQkluZGV4Iik7CisgICAgc2hvdWxk
QmVGYWxzZSgiaW5kZXgudW5pcXVlIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVl
c3QgPSBpbmRleC5jb3VudChJREJLZXlSYW5nZS5ib3VuZCgtSW5maW5pdHksIEluZmluaXR5KSki
KTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgc2hvdWxkQmUoInJlcXVl
c3QucmVzdWx0IiwgIjQiKTsKKyAgICB9OworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBk
b1NldFZlcnNpb24yOworfQorCitmdW5jdGlvbiBkb1NldFZlcnNpb24yKCkgeworICAgIGRlYnVn
KCIiKTsKKyAgICBkZWJ1ZygiZG9TZXRWZXJzaW9uMigpOiIpOworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAyJykiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb24yOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uMigpCit7CisgICAg
ZGVidWcoIiIpOworICAgIGRlYnVnKCJzZXRWZXJzaW9uMigpOiIpOworICAgIHRyYW5zYWN0aW9u
MiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICB0cmFu
c2FjdGlvbjIub25hYm9ydCA9IHNldFZlcnNpb24yQWJvcnQ7CisgICAgdHJhbnNhY3Rpb24yLm9u
Y29tcGxldGUgPSB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjazsKKyAgICBzdG9yZSA9IGV2YWxB
bmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlMicpIik7CisgICAgZXZh
bEFuZExvZygic3RvcmUucHV0KHtkYXRhOiAnYScsIGluZGV4S2V5OiAxMH0sIDEpIik7CisgICAg
ZXZhbEFuZExvZygic3RvcmUucHV0KHtkYXRhOiAnYicsIGluZGV4S2V5OiAyMH0sIDIpIik7Cisg
ICAgZXZhbEFuZExvZygic3RvcmUucHV0KHtkYXRhOiAnYycsIGluZGV4S2V5OiAxMH0sIDMpIik7
CisgICAgZXZhbEFuZExvZygic3RvcmUucHV0KHtkYXRhOiAnZCcsIGluZGV4S2V5OiAyMH0sIDQp
Iik7CisgICAgZXZhbEFuZExvZygiaW5kZXgyID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4Mics
ICdpbmRleEtleScsIHsgdW5pcXVlOiB0cnVlIH0pIik7CisgICAgc2hvdWxkQmVUcnVlKCJpbmRl
eDIgaW5zdGFuY2VvZiBJREJJbmRleCIpOworICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXgyLnVuaXF1
ZSIpOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uMkFib3J0KCkKK3sKKyAgICBkZWJ1ZygiIik7
CisgICAgZGVidWcoInNldFZlcnNpb24yQWJvcnQoKToiKTsKKyAgICBzaG91bGRCZSgiZGIub2Jq
ZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMSIpOworICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9y
ZU5hbWVzWzBdIiwgIidzdG9yZTEnIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3ZhciBq
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW5k
ZXgtdW5pcXVlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2lu
ZGV4LXVuaXF1ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZGI4NWI2OWU0ODA4NTQxYzBiNGE5YzI2NmY3Njcw
ZWI2OGZhZTRiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL2luZGV4LXVuaXF1ZS5qcwpAQCAtMCwwICsxLDEzNiBAQAoraWYgKHRoaXMu
aW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7
Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IGZlYXR1cmVzIG9mIEluZGV4ZWREQidzIHVuaXF1ZSBp
bmRpY2VzLiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhl
cygpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignaW5kZXgtdW5p
cXVlJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb247CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZl
cnNpb24oKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNp
b24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRl
bGV0ZUV4aXN0aW5nKCkKK3sKKyAgICBkZWJ1ZygiZGVsZXRlRXhpc3RpbmcoKToiKTsKKyAgICB2
YXIgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAg
ICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVu
ZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSBzZXRWZXJzaW9u
Q29tcGxldGVkOworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIHNlbGYu
c3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAg
IHNlbGYuaW5kZXhPYmplY3QgPSBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXgn
LCAneCcsIHt1bmlxdWU6IHRydWV9KSIpOworCisgICAgLy8gTGV0IHNldFZlcnNpb24gdHJhbnNh
Y3Rpb24gY29tcGxldGUuCit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb25Db21wbGV0ZWQoKQorewor
ICAgIGRlYnVnKCJzZXRWZXJzaW9uQ29tcGxldGVkKCk6Iik7CisgICAgc2VsZi50cmFuc2FjdGlv
biA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZSddLCBJ
REJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLnB1dCh7eDogMX0sICdmb28nKSIpOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gYWRkTW9yZURhdGE7Cit9CisKK2Z1bmN0aW9uIGFkZE1vcmVEYXRhKCkK
K3sKKyAgICBkZWJ1ZygiYWRkTW9yZURhdGEoKToiKTsKKworICAgIC8vIFRoZSB4IHZhbHVlIHZp
b2xhdGVzIHRoZSB1bmlxdWVuZXNzIGNvbnN0cmFpbnQgb2YgdGhlIGluZGV4LgorICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKS5wdXQoe3g6
IDF9LCAnYmFyJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBhZGRNb3JlRGF0YUZhaWxlZDsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIGFkZE1vcmVEYXRhRmFpbGVkKCkKK3sKKyAgICBkZWJ1ZygiYWRkTW9yZURhdGFG
YWlsZWQoKToiKTsKKworICAgIC8vIERvbid0IGFib3J0IHRoZSB0cmFuc2FjdGlvbi4KKyAgICBl
dmFsQW5kTG9nKCJldmVudC5wcmV2ZW50RGVmYXVsdCgpIik7CisKKyAgICBzaG91bGRCZSgiZXZl
bnQudGFyZ2V0LmVycm9yQ29kZSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5DT05TVFJBSU5UX0VS
UiIpOworCisgICAgLy8gVXBkYXRlIHRoZSAnZm9vJyBlbnRyeSBpbiBvYmplY3Qgc3RvcmUsIGNo
YW5naW5nIHRoZSB2YWx1ZSBvZiB4LgorICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2Fj
dGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKS5wdXQoe3g6IDB9LCAnZm9vJykiKTsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGNoYW5nZURhdGFTdWNjZXNzOworfQorCitmdW5jdGlvbiBjaGFuZ2VEYXRhU3VjY2Vz
cygpCit7CisgICAgZGVidWcoImNoYW5nZURhdGFTdWNjZXNzKCk6Iik7CisKKyAgICAvLyBBbiBp
bmRleCBjdXJzb3Igc3RhcnRpbmcgYXQgMSBzaG91bGQgbm90IGZpbmQgYW55dGhpbmcuCisgICAg
dmFyIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUn
KS5pbmRleCgnaW5kZXgnKS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLmxvd2VyQm91bmQoMSkpIik7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3JTdWNjZXNzOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjdXJzb3JTdWNj
ZXNzKCkKK3sKKyAgICBkZWJ1ZygiY3Vyc29yU3VjY2VzcygpOiIpOworICAgIHNob3VsZEJlKCJl
dmVudC50YXJnZXQucmVzdWx0IiwgIm51bGwiKTsKKworICAgIC8vIEEga2V5IGN1cnNvciBzdGFy
dGluZyBhdCAxIHNob3VsZCBub3QgZmluZCBhbnl0aGluZy4KKyAgICB2YXIgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLmluZGV4KCdpbmRleCcp
Lm9wZW5LZXlDdXJzb3IoSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgxKSkiKTsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGtleUN1cnNvclN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGtleUN1cnNvclN1Y2Nlc3MoKQor
eworICAgIGRlYnVnKCJrZXlDdXJzb3JTdWNjZXNzKCk6Iik7CisgICAgc2hvdWxkQmUoImV2ZW50
LnRhcmdldC5yZXN1bHQiLCAibnVsbCIpOworCisgICAgLy8gTm93IHdlIHNob3VsZCBiZSBhYmxl
IHRvIGFkZCBhIHZhbHVlIHdpdGggeDogMS4KKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJh
bnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KHt4OiAxfSwgJ2JhcicpIik7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBhZGRNb3JlRGF0YVN1Y2NlczsKK30KKworZnVuY3Rpb24gYWRkTW9yZURhdGFT
dWNjZXMoKQoreworICAgIGRlYnVnKCJhZGRNb3JlRGF0YVN1Y2NlcygpOiIpOworCisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLmRlbGV0
ZSgnYmFyJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZVN1Y2Nlc3M7Cit9CisKK2Z1bmN0aW9u
IGRlbGV0ZVN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJkZWxldGVTdWNjZXNzKCk6Iik7CisKKyAg
ICAvLyBOb3cgd2Ugc2hvdWxkIGJlIGFibGUgdG8gYWRkIGEgdmFsdWUgd2l0aCB4OiAxIGFnYWlu
LgorICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3Rv
cmUnKS5wdXQoe3g6IDF9LCAnYmF6JykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZpbmFsQWRkU3VjY2Vz
czsKK30KKworZnVuY3Rpb24gZmluYWxBZGRTdWNjZXNzKCkgeworICAgIGRlYnVnKCJmaW5hbEFk
ZFN1Y2Nlc3MoKToiKTsKKworICAgIC8vIEFuIG92ZXJ3cml0ZSBzaG91bGQgYmUgb2suCisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLnB1
dCh7eDogMX0sICdiYXonKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZmluaXNoSlNUZXN0OworfQorCit0
ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ludmFsaWQta2V5cy5qcyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbnZhbGlkLWtleXMuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYjZjMTc1NzY3NDBiM2Q1N2Y5OTYzMGVlMmE3MDM4NjA1NjU0YTZmNAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbnZhbGlkLWtl
eXMuanMKQEAgLTAsMCArMSw2NCBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGlt
cG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7
CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0
IEluZGV4ZWREQiBpbnZhbGlkIGtleXMiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVt
b3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1l
OworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAg
ZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSB0ZXN0R3JvdXAxOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiB0ZXN0R3JvdXAxKCkKK3sKKyAgICBk
ZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9n
KCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJyk7Iik7CisgICAgdGVzdEludmFsaWRLZXlzKCk7
Cit9CisKK2Z1bmN0aW9uIHRlc3RJbnZhbGlkS2V5cygpCit7CisgICAgdmFyIGludmFsaWRLZXlz
ID0gWworICAgICAgICAidm9pZCAwIiwgLy8gVW5kZWZpbmVkCisgICAgICAgICJudWxsIiwgLy8g
TnVsbAorICAgICAgICAiKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpIiwgLy8g
QXJndW1lbnRzCisgICAgICAgICJ0cnVlIiwgLy8gQm9vbGVhbgorICAgICAgICAiZmFsc2UiLCAv
LyBCb29sZWFuCisgICAgICAgICJuZXcgRXJyb3IiLCAvLyBFcnJvcgorICAgICAgICAiZnVuY3Rp
b24gKCkge30iLCAvLyBGdW5jdGlvbgorICAgICAgICAiSlNPTiIsIC8vIEpTT04KKyAgICAgICAg
Ik1hdGgiLCAvLyBNYXRoCisgICAgICAgICJOYU4iLCAvLyBOdW1iZXIgKHNwZWNpYWwgY2FzZSkK
KyAgICAgICAgIm5ldyBEYXRlKE5hTikiLCAvLyBEYXRlIChzcGVjaWFsIGNhc2UpCisgICAgICAg
ICJ7fSIsIC8vIE9iamVjdAorICAgICAgICAiL3JlZ2V4LyIsIC8vIFJlZ0V4cAorICAgICAgICAi
c2VsZiIsIC8vIGdsb2JhbAorICAgICAgICAic2VsZi5kb2N1bWVudCIsIC8vIEhUTUxEb2N1bWVu
dAorICAgICAgICAic2VsZi5kb2N1bWVudC5ib2R5IiAvLyBIVE1MQm9keUVsZW1lbnQKKyAgICBd
OworCisgICAgaW52YWxpZEtleXMuZm9yRWFjaChmdW5jdGlvbihrZXkpIHsKKyAgICAgICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigicmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgndmFsdWUnLCAi
ICsga2V5ICsgIikiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKyAgICB9KTsK
KyAgICAKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9rZXktZ2VuZXJhdG9yLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL2tleS1nZW5lcmF0b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjFiMTc1MThjZTExYjA2MWUx
YzVmZjhmOTBjMGJjY2JmMTE2YmI5ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXktZ2VuZXJhdG9yLmpzCkBAIC0wLDAgKzEsMjA2
IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRz
KCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mga2V5IGdl
bmVyYXRvciBiZWhhdmlvci4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVu
ZG9yUHJlZml4ZXMoKTsKKworICAgIHJ1blRlc3RzKCk7Cit9CisKK3ZhciB0ZXN0cyA9IFtdOwor
ZnVuY3Rpb24gZGVmaW5lVGVzdChkZXNjcmlwdGlvbiwgdmVyY2hhbmdlLCBvcHRpb25hbCkgewor
ICB0ZXN0cy5wdXNoKAorICAgIHsKKyAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiwKKyAg
ICAgIHZlcmNoYW5nZTogdmVyY2hhbmdlLAorICAgICAgb3B0aW9uYWw6IG9wdGlvbmFsCisgICAg
fQorICApOworfQorCitmdW5jdGlvbiBydW5UZXN0cygpIHsKKworICAgIGZ1bmN0aW9uIG5leHRU
ZXN0KCkgeworICAgICAgICBpZiAoIXRlc3RzLmxlbmd0aCkgeworICAgICAgICAgICAgZmluaXNo
SlNUZXN0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB2YXIg
dGVzdCA9IHRlc3RzLnNoaWZ0KCk7CisgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgZGVidWco
dGVzdC5kZXNjcmlwdGlvbik7CisKKyAgICAgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4
ZWREQi5kZWxldGVEYXRhYmFzZSgna2V5LWdlbmVyYXRvcicpIik7CisgICAgICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBp
bmRleGVkREIub3Blbigna2V5LWdlbmVyYXRvcicpIik7CisgICAgICAgICAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImRiID0g
cmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
ZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coInRyYW5z
ID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgICAgICAgICAgICAgdHJhbnMub25hYm9ydCA9
IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgICAgICAgICAgICAgICAgICB0ZXN0LnZlcmNo
YW5nZShkYiwgdHJhbnMpOworICAgICAgICAgICAgICAgICAgICB0cmFucy5vbmNvbXBsZXRlID0g
ZnVuY3Rpb24gKCkgeworCisgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBmaW5pc2hU
ZXN0KCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImRiLmNsb3Nl
KCkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0VGVzdCgpOworICAgICAgICAg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGVzdC5vcHRp
b25hbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Qub3B0aW9uYWwoZGIsIGZp
bmlzaFRlc3QpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAg
IH07CisgICAgICAgIH07CisgICAgfQorCisgICAgbmV4dFRlc3QoKTsKK30KKworZnVuY3Rpb24g
Y2hlY2soc3RvcmUsIGtleSwgZXhwZWN0ZWQpIHsKKyAgICBzZWxmLnN0b3JlID0gc3RvcmU7Cisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdG9yZS5nZXQoIiArIEpTT04uc3Ry
aW5naWZ5KGtleSkgKyAiKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKKyAgICAg
ICAgc2VsZi5leHBlY3RlZCA9IGV4cGVjdGVkOworICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnko
ZXZlbnQudGFyZ2V0LnJlc3VsdCkgPT09IEpTT04uc3RyaW5naWZ5KGV4cGVjdGVkKSkgeworICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiR290ICIgKyBKU09OLnN0cmluZ2lmeShldmVudC50YXJnZXQu
cmVzdWx0KSArICIgZm9yIGtleTogIiArIEpTT04uc3RyaW5naWZ5KGtleSkpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiR290ICIgKyBKU09OLnN0cmluZ2lmeShl
dmVudC50YXJnZXQucmVzdWx0KSArICIgZm9yIGtleTogIiArIEpTT04uc3RyaW5naWZ5KGtleSkg
KworICAgICAgICAgICAgICAgICIgZXhwZWN0ZWQ6ICIgKyBKU09OLnN0cmluZ2lmeShleHBlY3Rl
ZCkpOworICAgICAgICB9CisgICAgfTsKK30KKworZGVmaW5lVGVzdCgKKyAgICAnVmVyaWZ5IHRo
YXQgZWFjaCBvYmplY3Qgc3RvcmUgaGFzIGFuIGluZGVwZW5kZW50IGtleSBnZW5lcmF0b3IuJywK
KyAgICBmdW5jdGlvbiAoZGIsIHRyYW5zKSB7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlMSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTEnLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSki
KTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUxLnB1dCgnYScpIik7CisgICAgICAgIGNoZWNr
KHN0b3JlMSwgMSwgJ2EnKTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUyID0gZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ3N0b3JlMicsIHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9KSIpOworICAgICAg
ICBldmFsQW5kTG9nKCJzdG9yZTIucHV0KCdhJykiKTsKKyAgICAgICAgY2hlY2soc3RvcmUyLCAx
LCAnYScpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZTEucHV0KCdiJykiKTsKKyAgICAgICAg
Y2hlY2soc3RvcmUxLCAyLCAnYicpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZTIucHV0KCdi
JykiKTsKKyAgICAgICAgY2hlY2soc3RvcmUyLCAyLCAnYicpOworICAgIH0KKyk7CisKK2RlZmlu
ZVRlc3QoCisgICAgJ1ZlcmlmeSB0aGF0IHRoZSBrZXkgZ2VuZXJhdG9yIGlzIG5vdCB1cGRhdGVk
IGlmIGluc2VydGlvbiBmYWlscycsCisgICAgZnVuY3Rpb24gKGRiLCB0cmFucykgeworICAgICAg
ICB0cmFucy5vbmVycm9yID0gZnVuY3Rpb24oZSkgeyBlLnByZXZlbnREZWZhdWx0KCkgfTsKKyAg
ICAgICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUxJywg
eyBhdXRvSW5jcmVtZW50OiB0cnVlIH0pIik7CisgICAgICAgIGV2YWxBbmRMb2coImluZGV4ID0g
c3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4MScsICdpeCcsIHsgdW5pcXVlOiB0cnVlIH0pIik7Cisg
ICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCh7IGl4OiAnYSd9KSIpOworICAgICAgICBjaGVj
ayhzdG9yZSwgMSwge2l4OiAnYSd9KTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KHsg
aXg6ICdhJ30pIik7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCh7IGl4OiAnYid9KSIp
OworICAgICAgICBjaGVjayhzdG9yZSwgMiwge2l4OiAnYid9KTsKKyAgICB9CispOworCitkZWZp
bmVUZXN0KAorICAgICdWZXJpZnkgdGhhdCB0aGUga2V5IGdlbmVyYXRvciBpcyBub3QgYWZmZWN0
ZWQgYnkgaXRlbSByZW1vdmFsIChkZWxldGUgb3IgY2xlYXIpLicsCisgICAgZnVuY3Rpb24gKGRi
LCB0cmFucykgeworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0
b3JlKCdzdG9yZTEnLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSkiKTsKKyAgICAgICAgZXZhbEFu
ZExvZygic3RvcmUucHV0KCdhJykiKTsKKyAgICAgICAgY2hlY2soc3RvcmUsIDEsICdhJyk7Cisg
ICAgICAgIGV2YWxBbmRMb2coInN0b3JlLmRlbGV0ZSgxKSIpOworICAgICAgICBldmFsQW5kTG9n
KCJzdG9yZS5wdXQoJ2InKSIpOworICAgICAgICBjaGVjayhzdG9yZSwgMiwgJ2InKTsKKyAgICAg
ICAgZXZhbEFuZExvZygic3RvcmUuY2xlYXIoKSIpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9y
ZS5wdXQoJ2MnKSIpOworICAgICAgICBjaGVjayhzdG9yZSwgMywgJ2MnKTsKKyAgICAgICAgLy8g
RklYTUU6IElEQk9iamVjdFN0b3JlLmRlbGV0ZShJREJLZXlSYW5nZSkgaXMgbm90IHlldCBpbXBs
ZW1lbnRlZCBpbiBDaHJvbWl1bS4KKyAgICAgICAgLy8gaHR0cDovL2NyYnVnLmNvbS8xMDEzODQK
KyAgICAgICAgLy9ldmFsQW5kTG9nKCJzdG9yZS5kZWxldGUoSURCS2V5UmFuZ2UubG93ZXJCb3Vu
ZCgwKSkiKTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdkJykiKTsKKyAgICAgICAg
Y2hlY2soc3RvcmUsIDQsICdkJyk7CisgICAgfQorKTsKKworZGVmaW5lVGVzdCgKKyAgICAnVmVy
aWZ5IHRoYXQgdGhlIGtleSBnZW5lcmF0b3IgaXMgb25seSBzZXQgaWYgYW5kIG9ubHkgaWYgYSBu
dW1lcmljIGtleSBncmVhdGVyIHRoYW4gdGhlIGxhc3QgZ2VuZXJhdGVkIGtleSBpcyB1c2VkLics
CisgICAgZnVuY3Rpb24gKGRiLCB0cmFucykgeworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTEnLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSki
KTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdhJykiKTsKKyAgICAgICAgY2hlY2so
c3RvcmUsIDEsICdhJyk7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgnYicsIDMpIik7
CisgICAgICAgIGNoZWNrKHN0b3JlLCAzLCAnYicpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9y
ZS5wdXQoJ2MnKSIpOworICAgICAgICBjaGVjayhzdG9yZSwgNCwgJ2MnKTsKKyAgICAgICAgZXZh
bEFuZExvZygic3RvcmUucHV0KCdkJywgLTEwKSIpOworICAgICAgICBjaGVjayhzdG9yZSwgLTEw
LCAnZCcpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2UnKSIpOworICAgICAgICBj
aGVjayhzdG9yZSwgNSwgJ2UnKTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdmJywg
Ni4wMDAwMSkiKTsKKyAgICAgICAgY2hlY2soc3RvcmUsIDYuMDAwMDEsICdmJyk7CisgICAgICAg
IGV2YWxBbmRMb2coInN0b3JlLnB1dCgnZycpIik7CisgICAgICAgIGNoZWNrKHN0b3JlLCA3LCAn
ZycpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2YnLCA4Ljk5OTkpIik7CisgICAg
ICAgIGNoZWNrKHN0b3JlLCA4Ljk5OTksICdmJyk7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3Jl
LnB1dCgnZycpIik7CisgICAgICAgIGNoZWNrKHN0b3JlLCA5LCAnZycpOworICAgICAgICBldmFs
QW5kTG9nKCJzdG9yZS5wdXQoJ2gnLCAnZm9vJykiKTsKKyAgICAgICAgY2hlY2soc3RvcmUsICdm
b28nLCAnaCcpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2knKSIpOworICAgICAg
ICBjaGVjayhzdG9yZSwgMTAsICdpJyk7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgn
aicsIFsxMDAwXSkiKTsKKyAgICAgICAgY2hlY2soc3RvcmUsIFsxMDAwXSwgJ2onKTsKKyAgICAg
ICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdrJykiKTsKKyAgICAgICAgY2hlY2soc3RvcmUsIDEx
LCAnaycpOworCisgICAgICAgIC8vIEZJWE1FOiBSZXBlYXQgdGhpcyB0ZXN0LCBidXQgd2l0aCBh
IGtleVBhdGggYW5kIGlubGluZSBrZXkuCisgICAgfQorKTsKKworZGVmaW5lVGVzdCgKKyAgICAn
VmVyaWZ5IHRoYXQgYWJvcnRpbmcgYSB0cmFuc2FjdGlvbiByZXNldHMgdGhlIGtleSBnZW5lcmF0
b3Igc3RhdGUuJywKKyAgICBmdW5jdGlvbiAoZGIsIHRyYW5zKSB7CisgICAgICAgIGRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdzdG9yZScsIHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9KTsKKyAgICB9LAor
CisgICAgZnVuY3Rpb24gKGRiLCBjYWxsYmFjaykgeworICAgICAgICBldmFsQW5kTG9nKCJ0cmFu
czEgPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUp
Iik7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlX3QxID0gdHJhbnMxLm9iamVjdFN0b3JlKCdz
dG9yZScpIik7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlX3QxLnB1dCgnYScpIik7CisgICAg
ICAgIGNoZWNrKHN0b3JlX3QxLCAxLCAnYScpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZV90
MS5wdXQoJ2InKSIpOworICAgICAgICBjaGVjayhzdG9yZV90MSwgMiwgJ2InKTsKKworICAgICAg
ICAvLyBTY2hlZHVsZSB0aGUgYWJvcnQgYXMgYSB0YXNrIChub3QgcnVuIGl0IHN5bmNocm9ub3Vz
bHkpCisgICAgICAgIHN0b3JlX3QxLmdldCgwKS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICBkZWJ1ZygnYWJvcnRpbmcuLi4nKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2co
InRyYW5zMS5hYm9ydCgpIik7CisgICAgICAgICAgICB0cmFuczEub25hYm9ydCA9IGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICBkZWJ1ZygnYWJvcnRlZCEnKTsKKworICAgICAgICAgICAg
ICAgIGV2YWxBbmRMb2coInRyYW5zMiA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUnXSwgSURCVHJh
bnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJzdG9y
ZV90MiA9IHRyYW5zMi5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgICAgICAgICAgICAgIGV2
YWxBbmRMb2coInN0b3JlX3QyLnB1dCgnYycpIik7CisgICAgICAgICAgICAgICAgY2hlY2soc3Rv
cmVfdDIsIDEsICdjJyk7CisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygic3RvcmVfdDIucHV0
KCdkJykiKTsKKyAgICAgICAgICAgICAgICBjaGVjayhzdG9yZV90MiwgMiwgJ2QnKTsKKworICAg
ICAgICAgICAgICAgIHRyYW5zMi5vbmNvbXBsZXRlID0gY2FsbGJhY2s7CisgICAgICAgICAgICB9
OworICAgICAgICB9OworICAgIH0KKyk7CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMva2V5LXNvcnQtb3JkZXItYWNyb3NzLXR5cGVzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL2tleS1zb3J0LW9yZGVyLWFjcm9zcy10eXBlcy5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43YzdmZjhlNDcwZmUxZjAyZGU4MTJmZjlmNTFmZjdiMDY1MjZkOTE1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleS1zb3J0
LW9yZGVyLWFjcm9zcy10eXBlcy5qcwpAQCAtMCwwICsxLDg1IEBACitpZiAodGhpcy5pbXBvcnRT
Y3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKwor
ZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGtleSBjb21wYXJpc29uIik7CisKK2Z1bmN0aW9u
IHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2Vs
Zi5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNl
IjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3Jp
cHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3Bl
blN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVz
dWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNp
b24oJzEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkS2V5MTsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gYWRkS2V5
MSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3Jl
ID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycpOyIpOworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKFtdLCBJbmZpbml0eSk7
Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRLZXkyOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBhZGRLZXkyKCkKK3sK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChbXSwg
LUluZmluaXR5KTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEtleTM7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGFk
ZEtleTMoKQoreworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3Rv
cmUuYWRkKFtdLCAxLjApOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkS2V5NDsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rp
b24gYWRkS2V5NCgpCit7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmpl
Y3RTdG9yZS5hZGQoW10sICcnKTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEtleTU7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIGFkZEtleTUoKQoreworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
b2JqZWN0U3RvcmUuYWRkKFtdLCAnMS4wJyk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBv
cGVuQUN1cnNvcjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gb3BlbkFDdXJzb3IoKQoreworICAgIGtleUluZGV4ID0gMDsKKyAg
ICBzb3J0ZWRLZXlzID0gZXZhbEFuZExvZygic29ydGVkS2V5ID0gWy1JbmZpbml0eSwgMS4wLCBJ
bmZpbml0eSwgJycsICcxLjAnXTsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
IChldmVudCkgeworICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50
YXJnZXQucmVzdWx0OyIpOworICAgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLmtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOworICAgICAgICAgICAg
ZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisgICAgICAgICAgICBldmFsQW5kTG9n
KCJrZXlJbmRleCsrOyIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3Rlc3QoKTsKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMva2V5LXNvcnQtb3JkZXItZGF0ZS5qcyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXktc29ydC1vcmRlci1kYXRlLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmExZmZmMzcyOWQxOGQ1NzFlNWZmYmY3Zjc3Mjg0ZjI3Yjk2ZTY4NDUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5LXNvcnQtb3Jk
ZXItZGF0ZS5qcwpAQCAtMCwwICsxLDgyIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Cisg
ICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24o
IlRlc3QgSW5kZXhlZERCIGtleSBjb21wYXJpc29uIik7CisKK2Z1bmN0aW9uIHRlc3QoKQorewor
ICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5w
YXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQor
eworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkS2V5MTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gYWRkS2V5MSgpCit7CisgICAg
ZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExv
ZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycpOyIpOworICAgIGRhdGUxID0gZXZhbEFuZExv
ZygiZGF0ZTEgPSBuZXcgRGF0ZSgxMDAwKTsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChbXSwgZGF0ZTEpOyIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gYWRkS2V5MjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gYWRkS2V5MigpCit7CisgICAgZGF0ZTAgPSBldmFsQW5k
TG9nKCJkYXRlMCA9IG5ldyBEYXRlKDApOyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKFtdLCBkYXRlMCk7Iik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBhZGRLZXkzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBhZGRLZXkzKCkKK3sKKyAgICBkYXRlMyA9IGV2YWxBbmRM
b2coImRhdGUzID0gbmV3IERhdGUoMzAwMCk7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoW10sIGRhdGUzKTsiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGFkZEtleTQ7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGFkZEtleTQoKQoreworICAgIGRhdGUyID0gZXZhbEFu
ZExvZygiZGF0ZTIgPSBuZXcgRGF0ZSgyMDAwKTsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChbXSwgZGF0ZTIpOyIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gb3BlbkFDdXJzb3I7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5BQ3Vyc29yKCkKK3sKKyAgICBrZXlJ
bmRleCA9IDA7CisgICAgc29ydGVkS2V5cyA9IGV2YWxBbmRMb2coInNvcnRlZEtleXMgPSBbZGF0
ZTAudG9TdHJpbmcoKSwgZGF0ZTEudG9TdHJpbmcoKSwgZGF0ZTIudG9TdHJpbmcoKSwgZGF0ZTMu
dG9TdHJpbmcoKV07Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmpl
Y3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQp
IHsKKyAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJl
c3VsdDsiKTsKKyAgICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICAgICAgc2hvdWxkQmUoImN1
cnNvci5rZXkudG9TdHJpbmcoKSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOworICAgICAgICAg
ICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisgICAgICAgICAgICBldmFsQW5k
TG9nKCJrZXlJbmRleCsrOyIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3Rlc3QoKTsKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMva2V5LXR5cGUtYXJyYXkuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5LXR5cGUtYXJyYXkuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWI2MDM4
MTJkZDM2MzJkYzJjZDA0MjQ4MjZjZTUyMGRjZmI4YjlkYwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXktdHlwZS1hcnJheS5qcwpA
QCAtMCwwICsxLDE5NyBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNj
cmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAg
aW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4
ZWREQiBrZXkgdHlwZXMiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9y
UHJlZml4ZXMoKTsKKworICAgIGV2YWxBbmRMb2coIklEQlRyYW5zYWN0aW9uID0gc2VsZi5JREJU
cmFuc2FjdGlvbiB8fCBzZWxmLklEQlRyYW5zYWN0aW9uOyIpOworICAgIHNob3VsZEJlRmFsc2Uo
IklEQlRyYW5zYWN0aW9uID09IG51bGwiKTsKKworICAgIGV2YWxBbmRMb2coIklEQkRhdGFiYXNl
RXhjZXB0aW9uID0gc2VsZi5JREJEYXRhYmFzZUV4Y2VwdGlvbiB8fCBzZWxmLklEQkRhdGFiYXNl
RXhjZXB0aW9uOyIpOworICAgIHNob3VsZEJlRmFsc2UoIklEQkRhdGFiYXNlRXhjZXB0aW9uID09
IG51bGwiKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2Ny
aXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIG9wZW5yZXEgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICBvcGVucmVxLm9uc3VjY2Vz
cyA9IG9wZW5TdWNjZXNzOworICAgIG9wZW5yZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZXZhbEFuZExvZygi
ZGIgPSBvcGVucmVxLnJlc3VsdCIpOworICAgIHNldHZlcnJlcSA9IGV2YWxBbmRMb2coInJlcXVl
c3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICBzZXR2ZXJyZXEub25zdWNjZXNzID0gc2V0
VmVyc2lvblN1Y2Nlc3M7CisgICAgc2V0dmVycmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQoreworICAgIGRlYnVn
KCJwcmVwYXJpbmcgZGF0YWJhc2UiKTsKKyAgICB0cmFucyA9IHNldHZlcnJlcS5yZXN1bHQ7Cisg
ICAgdHJhbnMub25jb21wbGV0ZSA9IHRlc3RWYWxpZEFycmF5S2V5czsKKyAgICBkZWxldGVBbGxP
YmplY3RTdG9yZXMoZGIpOworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ3N0b3JlJyk7Iik7CisgICAgZGVidWcoIiIpOworfQorCitmdW5jdGlvbiB0
ZXN0VmFsaWRBcnJheUtleXMoKQoreworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNh
Y3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICBldmFsQW5k
TG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgZGVidWcoIiIp
OworCisgICAgZXZhbEFuZExvZygibG9uZ19hcnJheSA9IFtdOyBmb3IgKGkgPSAwOyBpIDwgMTAw
MDsgKytpKSB7IGxvbmdfYXJyYXkucHVzaCgnYWJjJywgMTIzLCBuZXcgRGF0ZSgwKSwgW10pOyB9
Iik7CisgICAgZGVidWcoIiIpOworCisgICAgZGVidWcoImFycmF5IHRoYXQgY29udGFpbnMgbm9u
LW51bWVyaWMgc2VsZi1yZWZlcmVuY2UiKTsKKyAgICBldmFsQW5kTG9nKCJzZWxmX3JlZmVycmVu
dGlhbF9hcnJheSA9IFtdOyBzZWxmX3JlZmVycmVudGlhbF9hcnJheS5zZWxmID0gc2VsZl9yZWZl
cnJlbnRpYWxfYXJyYXk7Iik7CisgICAgZGVidWcoIiIpOworCisgICAgdmFyIG4gPSAwLCBjYXNl
cyA9IFsKKyAgICAgICAgIltdIiwKKworICAgICAgICAiWy1JbmZpbml0eV0iLAorICAgICAgICAi
Wy1OdW1iZXIuTUFYX1ZBTFVFXSIsCisgICAgICAgICJbLTFdIiwKKyAgICAgICAgIlstTnVtYmVy
Lk1JTl9WQUxVRV0iLAorICAgICAgICAiWzBdIiwKKyAgICAgICAgIltOdW1iZXIuTUlOX1ZBTFVF
XSIsCisgICAgICAgICJbMV0iLAorICAgICAgICAiW051bWJlci5NQVhfVkFMVUVdIiwKKyAgICAg
ICAgIltJbmZpbml0eV0iLAorCisgICAgICAgICJbMSwyLDNdIiwKKworICAgICAgICAiW25ldyBE
YXRlKDApXSIsCisgICAgICAgICJbbmV3IERhdGUoJzI1MjUtMDEtMDFUMDA6MDA6MDBaJyldIiwK
KworICAgICAgICAiW25ldyBEYXRlKDApLCBuZXcgRGF0ZSgnMjUyNS0wMS0wMVQwMDowMDowMFon
KV0iLAorCisgICAgICAgICJbJyddIiwKKyAgICAgICAgIlsnXHgwMCddIiwKKyAgICAgICAgIlsn
YWJjMTIzJ10iLAorCisgICAgICAgICJbJ2FiYycsIDEyM10iLAorCisgICAgICAgICJbW11dIiwK
KworICAgICAgICAiW1tdLCBbXV0iLAorICAgICAgICAiW1tdLCBbXSwgW11dIiwKKworICAgICAg
ICAiW1tbXV1dIiwKKyAgICAgICAgIltbW1tdXV1dIiwKKworICAgICAgICAiWzEyMywgJ2FiYycs
IG5ldyBEYXRlKDApLCBbXV0iLAorICAgICAgICAiW1sxMjMsICdhYmMnLCBuZXcgRGF0ZSgwKSwg
W11dLCBbNDU2LCAnZGVmJywgbmV3IERhdGUoOTk5KSwgW1tdXV1dIiwKKworICAgICAgICAibG9u
Z19hcnJheSIsCisgICAgICAgICJzZWxmX3JlZmVycmVudGlhbF9hcnJheSIKKyAgICBdOworCisg
ICAgZnVuY3Rpb24gdGVzdEFycmF5UHV0R2V0KHZhbHVlLCBrZXksIGNhbGxiYWNrKQorICAgIHsK
KyAgICAgICAgZGVidWcoInRlc3RpbmcgYXJyYXkga2V5OiAiICsga2V5KTsKKyAgICAgICAgcHV0
cmVxID0gZXZhbEFuZExvZygic3RvcmUucHV0KCciICsgdmFsdWUgKyAiJywgIiArIGtleSArICIp
OyIpOworICAgICAgICBwdXRyZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
ICAgICAgICBwdXRyZXEub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBnZXRy
ZXEgPSBldmFsQW5kTG9nKCJzdG9yZS5nZXQoIiArIGtleSArICIpOyIpOworICAgICAgICAgICAg
Z2V0cmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgICAgIGdl
dHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImdldHJlcS5yZXN1bHQiLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgZGVi
dWcoIiIpOworICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgICAgICB9OworICAg
ICAgICB9OworICAgIH0KKworICAgIGZ1bmN0aW9uIG5leHRUZXN0KCkKKyAgICB7CisgICAgICAg
IHZhciB0ZXN0Y2FzZSA9IGNhc2VzLnNoaWZ0KCk7CisgICAgICAgIGlmICh0ZXN0Y2FzZSkgewor
ICAgICAgICAgICAgdGVzdEFycmF5UHV0R2V0KCJ2YWx1ZSIgKyAoKytuKSwgdGVzdGNhc2UsIG5l
eHRUZXN0KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG5leHRUZXN0KCk7CisKKyAgICB0cmFu
cy5vbmNvbXBsZXRlID0gdGVzdEludmFsaWRBcnJheUtleXM7Cit9CisKK2Z1bmN0aW9uIHRlc3RJ
bnZhbGlkQXJyYXlLZXlzKCkKK3sKKyAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0
aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgZXZhbEFuZExv
Zygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgIGRlYnVnKCIiKTsK
KworICAgIGRlYnVnKCJhcnJheSB0aGF0IGNvbnRhaW5zIGl0c2VsZjogYXJyYXkgPSBbIGFycmF5
IF0iKTsKKyAgICBldmFsQW5kTG9nKCJjeWNsaWNfYXJyYXkgPSBbXTsgY3ljbGljX2FycmF5LnB1
c2goY3ljbGljX2FycmF5KSIpOworICAgIHNob3VsZFRocm93KCJKU09OLnN0cmluZ2lmeShjeWNs
aWNfYXJyYXkpIik7CisKKyAgICBkZWJ1ZygiYXJyYXkgdGhhdCBjb250YWlucyBpdHNlbGYsIG9u
ZSBsZXZlbCBkb3duOiBhcnJheSA9IFsgWyBhcnJheSBdIF0iKTsKKyAgICBldmFsQW5kTG9nKCJj
eWNsaWNfYXJyYXkyID0gW107IGN5Y2xpY19hcnJheTIucHVzaChbY3ljbGljX2FycmF5Ml0pIik7
CisgICAgc2hvdWxkVGhyb3coIkpTT04uc3RyaW5naWZ5KGN5Y2xpY19hcnJheTIpIik7CisKKyAg
ICBkZWJ1ZygiYXJyYXkgdGhhdCBjb250YWlucyBpdHNlbGYsIG5vdCBhcyBmaXJzdCBlbGVtZW50
OiBhcnJheSA9IFsxLCAnYicsIFtdLCBhcnJheV0iKTsKKyAgICBldmFsQW5kTG9nKCJjeWNsaWNf
YXJyYXkzID0gWzEsICdiJywgW11dOyBjeWNsaWNfYXJyYXkzLnB1c2goY3ljbGljX2FycmF5Myki
KTsKKyAgICBzaG91bGRUaHJvdygiSlNPTi5zdHJpbmdpZnkoY3ljbGljX2FycmF5MykiKTsKKyAg
ICBkZWJ1ZygiIik7CisKKyAgICBkZWJ1ZygiYXJyYXkgdGhhdCBjb250YWlucyBhcnJheSB0aGF0
IGNvbnRhaW5zIGl0c2VsZiIpOworICAgIGV2YWxBbmRMb2coImN5Y2xpY19hcnJheTQgPSBbY3lj
bGljX2FycmF5XTsiKTsKKyAgICBzaG91bGRUaHJvdygiSlNPTi5zdHJpbmdpZnkoY3ljbGljX2Fy
cmF5NCkiKTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICB2YXIgaW52YWxpZEtleXMgPSBbCisgICAg
ICAgICJbIHZvaWQgMCBdIiwgLy8gdW5kZWZpbmVkCisgICAgICAgICJbIHRydWUgXSIsCisgICAg
ICAgICJbIGZhbHNlIF0iLAorICAgICAgICAiWyBOYU4gXSIsCisgICAgICAgICJbIG51bGwgXSIs
CisgICAgICAgICJbIHt9IF0iLAorICAgICAgICAiWyBmdW5jdGlvbiAoKSB7fSBdIiwKKyAgICAg
ICAgIlsgL3JlZ2V4LyBdIiwKKyAgICAgICAgIlsgc2VsZiBdIiwKKyAgICAgICAgIlsgc2VsZi5k
b2N1bWVudCBdIiwKKyAgICAgICAgIlsgc2VsZi5kb2N1bWVudC5ib2R5IF0iLAorICAgICAgICAi
Y3ljbGljX2FycmF5IiwKKyAgICAgICAgImN5Y2xpY19hcnJheTIiLAorICAgICAgICAiY3ljbGlj
X2FycmF5MyIsCisgICAgICAgICJjeWNsaWNfYXJyYXk0IiwKKyAgICAgICAgIkFycmF5KDEwMDAp
IiAvLyBzcGFyc2UKKyAgICBdOworCisgICAgaW52YWxpZEtleXMuZm9yRWFjaChmdW5jdGlvbiAo
a2V5KSB7CisgICAgICAgIGRlYnVnKCJ0ZXN0aW5nIGludmFsaWQgYXJyYXkga2V5OiAiICsga2V5
KTsKKyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KCd2YWx1ZScsICIg
KyBrZXkgKyAiKTsiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKyAgICAgICAg
ZGVidWcoIiIpOworICAgIH0pOworCisgICAgdGVzdERlcHRoTGltaXRzKCk7Cit9CisKK2Z1bmN0
aW9uIG1ha2VBcnJheU9mRGVwdGgobikKK3sKKyAgICB2YXIgYXJyYXkgPSBbXTsKKyAgICB3aGls
ZSAoLS1uKSB7CisgICAgICAgIGFycmF5ID0gW2FycmF5XTsKKyAgICB9CisgICAgcmV0dXJuIGFy
cmF5OworfQorCitmdW5jdGlvbiB0ZXN0RGVwdGhMaW1pdHMoKQoreworICAgIHNob3VsZEJlKCJp
bmRleGVkREIuY21wKG1ha2VBcnJheU9mRGVwdGgoMjUpLCAwKSIsICIxIik7CisgICAgc2hvdWxk
QmUoImluZGV4ZWREQi5jbXAobWFrZUFycmF5T2ZEZXB0aCgyNTApLCAwKSIsICIxIik7CisgICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXhlZERCLmNtcChtYWtlQXJyYXlPZkRlcHRoKDI1
MDApLCAwKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworICAgIGRlYnVnKCIi
KTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL2tleS10eXBlLWluZmluaXR5LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL2tleS10eXBlLWluZmluaXR5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzMzc2ZTEwNjc3
MzIwNjQ2ZDg4ZGM5ZGE1ZDU4NGJlY2UyZjcwMzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5LXR5cGUtaW5maW5pdHkuanMKQEAg
LTAsMCArMSw1MiBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlw
dHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1w
b3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWRE
QiBrZXkgdHlwZXMiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJl
Zml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2Ny
aXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5k
TG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSB0ZXN0R3JvdXAxOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiB0ZXN0R3JvdXAxKCkKK3sKKyAgICBkZWxldGVBbGxPYmpl
Y3RTdG9yZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVP
YmplY3RTdG9yZSgnZm9vJyk7Iik7CisgICAgZGVidWcoInRlc3Qga2V5IGFzIGluZmluaXR5Iik7
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoW10s
IEluZmluaXR5KTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHRlc3RHcm91cDI7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IHRlc3RHcm91cDIoKQoreworICAgIGRlYnVnKCJ0ZXN0IGtleSBhcyBuZWdhdGl2ZSBpbmZpbml0
eSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRk
KFtdLCAtSW5maW5pdHkpOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdGVzdEdyb3VwMzsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gdGVzdEdyb3VwMygpCit7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5cGF0aC1iYXNpY3MuanMgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5cGF0aC1iYXNpY3MuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Y2M3ODE3YmI2ZDA2YzAwNDc2OTA5MGZjZWE2ODhjNzk1YTg1NDhjYwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXlwYXRoLWJhc2lj
cy5qcwpAQCAtMCwwICsxLDkxIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1w
b3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsK
KyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3Qg
Zm9yIHZhbGlkIGFuZCBpbnZhbGlkIGtleXBhdGhzIik7CisKK2Z1bmN0aW9uIHRlc3QoKQorewor
ICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0
aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sK
KyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHRlc3RWYWxpZEtleVBhdGhzOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiB0ZXN0VmFsaWRL
ZXlQYXRocygpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIHRlc3RL
ZXlQYXRocyA9IFtudWxsLCB1bmRlZmluZWQsICcnXTsKKyAgICB0ZXN0S2V5UGF0aHMuZm9yRWFj
aChmdW5jdGlvbiAoa2V5UGF0aCkgeworICAgICAgICBnbG9iYWxLZXlQYXRoID0ga2V5UGF0aDsK
KyAgICAgICAgZGVidWcoImdsb2JhbEtleVBhdGggPSAnIiArIGdsb2JhbEtleVBhdGggKyAiJyIp
OworICAgICAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScsIHtrZXlQ
YXRoOiBnbG9iYWxLZXlQYXRofSkiKTsKKyAgICAgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRi
KTsKKyAgICB9KTsKKworICAgIHRlc3RLZXlQYXRocyA9IFsnZm9vJywgJ2Zvby5iYXIuYmF6J107
CisgICAgdGVzdEtleVBhdGhzLmZvckVhY2goZnVuY3Rpb24gKGtleVBhdGgpIHsKKyAgICAgICAg
Z2xvYmFsS2V5UGF0aCA9IGtleVBhdGg7CisgICAgICAgIGRlYnVnKCJnbG9iYWxLZXlQYXRoID0g
JyIgKyBnbG9iYWxLZXlQYXRoICsgIiciKTsKKyAgICAgICAgZXZhbEFuZExvZygiZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDogZ2xvYmFsS2V5UGF0aH0pIik7CisgICAgICAg
IGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisgICAgfSk7CisKKyAgICB0ZXN0S2V5UGF0aHMg
PSBbbnVsbCwgdW5kZWZpbmVkLCAnJywgJ2ZvbycsICdmb28uYmFyLmJheiddOworICAgIHRlc3RL
ZXlQYXRocy5mb3JFYWNoKGZ1bmN0aW9uIChrZXlQYXRoKSB7CisgICAgICAgIGdsb2JhbEtleVBh
dGggPSBrZXlQYXRoOworICAgICAgICBkZWJ1ZygiZ2xvYmFsS2V5UGF0aCA9ICciICsgZ2xvYmFs
S2V5UGF0aCArICInIik7CisgICAgICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5j
cmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICAgICAgZXZhbEFuZExvZygic3Rv
cmUuY3JlYXRlSW5kZXgoJ25hbWUnLCBnbG9iYWxLZXlQYXRoKSIpOworICAgICAgICBkZWxldGVB
bGxPYmplY3RTdG9yZXMoZGIpOworICAgIH0pOworCisgICAgdGVzdEludmFsaWRLZXlQYXRocygp
OworfQorCitmdW5jdGlvbiB0ZXN0SW52YWxpZEtleVBhdGhzKCkKK3sKKyAgICBkZWxldGVBbGxP
YmplY3RTdG9yZXMoZGIpOworCisgICAgdGVzdEtleVBhdGhzID0gWydbXScsICdbImZvbyJdJywg
J1siZm9vIiwgImJhciJdJywgJ1siIiwgIiJdJywgJ1sxLjAsIDIuMF0nLCAnW1siZm9vIl1dJywg
J1siZm9vIiwgWyJiYXIiXV0nXTsKKyAgICB0ZXN0S2V5UGF0aHMuZm9yRWFjaChmdW5jdGlvbiAo
a2V5UGF0aCkgeworICAgICAgICBnbG9iYWxLZXlQYXRoID0ga2V5UGF0aDsKKyAgICAgICAgZGVi
dWcoImdsb2JhbEtleVBhdGggPSAnIiArIGdsb2JhbEtleVBhdGggKyAiJyIpOworICAgICAgICBl
dmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScsIHtrZXlQ
YXRoOiBnbG9iYWxLZXlQYXRofSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9OX1RSQU5TSUVO
VF9FUlIiKTsKKyAgICAgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKyAgICB9KTsKKwor
ICAgIHRlc3RLZXlQYXRocyA9IFsnICcsICdmb28gJywgJ2ZvbyBiYXInLCAnZm9vLiBiYXInLCAn
Zm9vIC5iYXInLCAnZm9vLi5iYXInLCAnK2ZvbycsICdmb28lJ107CisgICAgdGVzdEtleVBhdGhz
LmZvckVhY2goZnVuY3Rpb24gKGtleVBhdGgpIHsKKyAgICAgICAgZ2xvYmFsS2V5UGF0aCA9IGtl
eVBhdGg7CisgICAgICAgIGRlYnVnKCJnbG9iYWxLZXlQYXRoID0gJyIgKyBnbG9iYWxLZXlQYXRo
ICsgIiciKTsKKyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDogZ2xvYmFsS2V5UGF0aH0pIiwgIklEQkRhdGFiYXNlRXhj
ZXB0aW9uLk5PTl9UUkFOU0lFTlRfRVJSIik7CisgICAgICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jl
cyhkYik7CisgICAgfSk7CisKKyAgICB0ZXN0S2V5UGF0aHMgPSBbJyAnLCAnZm9vICcsICdmb28g
YmFyJywgJ2Zvby4gYmFyJywgJ2ZvbyAuYmFyJywgJ2Zvby4uYmFyJywgJytmb28nLCAnZm9vJSdd
OworICAgIHRlc3RLZXlQYXRocy5mb3JFYWNoKGZ1bmN0aW9uIChrZXlQYXRoKSB7CisgICAgICAg
IGdsb2JhbEtleVBhdGggPSBrZXlQYXRoOworICAgICAgICBkZWJ1ZygiZ2xvYmFsS2V5UGF0aCA9
ICciICsgZ2xvYmFsS2V5UGF0aCArICInIik7CisgICAgICAgIHN0b3JlID0gZXZhbEFuZExvZygi
c3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICAgICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuY3JlYXRlSW5kZXgoJ25hbWUnLCBnbG9iYWxLZXlQ
YXRoKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT05fVFJBTlNJRU5UX0VSUiIpOworICAgICAg
ICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworICAgIH0pOworCisgICAgZmluaXNoSlNUZXN0
KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5cGF0aC1lZGdlcy5q
cyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXlwYXRoLWVkZ2Vz
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmViZjExYmI2ZGNlMjc2NDcxMTA1YjgzZTFjZDQ5NDEyMmZjOGI1MDEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMva2V5cGF0aC1lZGdlcy5qcwpAQCAtMCwwICsxLDExMCBAQAoraWYgKHRoaXMuaW1wb3J0U2Ny
aXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rl
c2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBrZXlQYXRoIGVkZ2UgY2FzZXMiKTsKKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoJ2tleXBhdGgtZWRnZXMnKSIp
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCLm9wZW4oJ2tleXBhdGgtZWRnZXMnKSIpOworICAgICAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICB9OworfQorCitmdW5jdGlvbiBvcGVuU3VjY2Vzcygp
Cit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOworICAgIGRi
ID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdHJhbnNhY3Rpb24gPSByZXF1ZXN0LnJlc3VsdDsK
KyAgICAgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwor
ICAgICAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUtd2l0aC1wYXRo
Jywge2tleVBhdGg6ICdmb28nfSkiKTsKKyAgICAgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ3N0b3JlLXdpdGgtcGF0aC1hbmQtZ2VuZXJhdG9yJywge2tleVBhdGg6ICdmb28n
LCBhdXRvSW5jcmVtZW50OiB0cnVlfSkiKTsKKyAgICAgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0
ZSA9IHRlc3RLZXlQYXRoczsKKyAgICB9OworfQorCitmdW5jdGlvbiB0ZXN0S2V5UGF0aHMoKQor
eworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidGVzdEtleVBhdGhzKCk6Iik7CisKKyAgICB0
cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydz
dG9yZS13aXRoLXBhdGgnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICBzdG9y
ZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlLXdp
dGgtcGF0aCcpIik7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIktleSBwYXRoIGRvZXNu
J3QgcmVzb2x2ZSB0byBhIHZhbHVlOyBzaG91bGQgeWllbGQgbnVsbCwgc2hvdWxkIHRocm93IERB
VEFfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KG51bGwpIiwg
IklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICBkZWJ1ZygiIik7CisgICAg
ZGVidWcoIktleSBwYXRoIGRvZXNuJ3QgcmVzb2x2ZSB0byBhIHZhbHVlOyBzaG91bGQgeWllbGQg
bnVsbCwgc2hvdWxkIHRocm93IERBVEFfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlv
bigic3RvcmUucHV0KHt9KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworCisg
ICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJLZXkgcGF0aCByZXNvbHZlcyB0byBhIHZhbHVlIHRo
YXQgaXMgaW52YWxpZCBrZXk7IHNob3VsZCB5aWVsZCAnaW52YWxpZCcga2V5LCBzaG91bGQgdGhy
b3cgREFUQV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5wdXQoe2Zv
bzogbnVsbH0pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoIktleSBwYXRoIHJlc29sdmVzIHRvIGEgdmFsdWUgdGhhdCBpcyB2
YWxpZCBrZXk7IHNob3VsZCB5aWVsZCAnc3RyaW5nJyBrZXksIHNob3VsZCBzdWNjZWVkIik7Cisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLnB1dCh7Zm9vOiAnem9vJ30pIik7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgIHRlc3RQYXNzZWQoInN0b3JlLnB1dCBz
dWNjZWVkZWQiKTsKKyAgICB9OworCisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0
ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB0ZXN0S2V5UGF0
aHNBbmRHZW5lcmF0b3I7Cit9CisKK2Z1bmN0aW9uIHRlc3RLZXlQYXRoc0FuZEdlbmVyYXRvcigp
Cit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0S2V5UGF0aHNBbmRHZW5lcmF0b3Io
KToiKTsKKworICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50
cmFuc2FjdGlvbihbJ3N0b3JlLXdpdGgtcGF0aC1hbmQtZ2VuZXJhdG9yJ10sIElEQlRyYW5zYWN0
aW9uLlJFQURfV1JJVEUpIik7CisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5z
YWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZS13aXRoLXBhdGgtYW5kLWdlbmVyYXRvcicpIik7CisK
KyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIktleSBwYXRoIGRvZXNuJ3QgcmVzb2x2ZSB0byBh
IHZhbHVlOyBzaG91bGQgeWllbGQgbnVsbCBidXQgaW5zZXJ0aW9uIHdvdWxkIGZhaWwsIHNvIHB1
dCByZXF1ZXN0IHNob3VsZCByYWlzZSBleGNlcHRpb24iKTsKKyAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJzdG9yZS5wdXQobnVsbCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIi
KTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiS2V5IHBhdGggZG9lc24ndCByZXNvbHZl
IHRvIGEgdmFsdWU7IHNob3VsZCB5aWVsZCBudWxsIGJ1dCBpbnNlcnRpb24gd291bGQgZmFpbCwg
c28gcHV0IHJlcXVlc3Qgc2hvdWxkIHJhaXNlIGV4Y2VwdGlvbiIpOworICAgIGV2YWxBbmRFeHBl
Y3RFeGNlcHRpb24oInN0b3JlLnB1dCgnc3RyaW5nJykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24u
REFUQV9FUlIiKTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiS2V5IHBhdGggZG9lc24n
dCByZXNvbHZlIHRvIGEgdmFsdWU7IHNob3VsZCB5aWVsZCBudWxsLCBrZXkgc2hvdWxkIGJlIGdl
bmVyYXRlZCwgcHV0IHJlcXVlc3Qgc2hvdWxkIHN1Y2NlZWQiKTsKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygic3RvcmUucHV0KHt9KSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewor
ICAgICAgICB0ZXN0UGFzc2VkKCJzdG9yZS5wdXQgc3VjY2VlZGVkIik7CisKKyAgICAgICAgZGVi
dWcoIiIpOworICAgICAgICBkZWJ1ZygiS2V5IHBhdGggcmVzb2x2ZXMgdG8gYSB2YWx1ZSB0aGF0
IGlzIGludmFsaWQga2V5OyBzaG91bGQgeWllbGQgJ2ludmFsaWQnIGtleSwgc2hvdWxkIHRocm93
IERBVEFfRVJSIik7CisgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLnB1dCh7
Zm9vOiBudWxsfSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKworICAgICAg
ICBkZWJ1ZygiIik7CisgICAgICAgIGRlYnVnKCJLZXkgcGF0aCByZXNvbHZlcyB0byBhIHZhbHVl
IHRoYXQgaXMgdmFsaWQga2V5OyBzaG91bGQgeWllbGQgJ3N0cmluZycga2V5LCBzaG91bGQgc3Vj
Y2VlZCIpOworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUucHV0KHtmb286ICd6
b28nfSkiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgdGVzdFBhc3NlZCgic3RvcmUucHV0IHN1Y2NlZWRlZCIpOworCisgICAgICAgIH07CisgICAg
fTsKKworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsK
KyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZmluaXNoSlNUZXN0OworfQorCit0ZXN0KCk7
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleXBhdGgtZmV0Y2gta2V5LmpzIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleXBhdGgtZmV0Y2gta2V5LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQwMjMzNTNjMzM2NDQxNDBiYWZjNzZiYzQ3OTdhYWVjNDFlNWEzZDcKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5cGF0
aC1mZXRjaC1rZXkuanMKQEAgLTAsMCArMSw4MiBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykg
eworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0
aW9uKCJUZXN0IEluZGV4ZWREQiBrZXlQYXRocyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0
aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sK
KyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKwor
ICAgIHRlc3REYXRhID0gW3sgbmFtZTogInNpbXBsZSBpZGVudGlmaWVyIiwKKyAgICAgICAgICAg
ICAgICAgIHZhbHVlOiB7aWQ6MTB9LAorICAgICAgICAgICAgICAgICAga2V5UGF0aDogImlkIiwK
KyAgICAgICAgICAgICAgICAgIGtleTogMTAgfSwKKyAgICAgICAgICAgICAgICB7IG5hbWU6ICJz
aW1wbGUgaWRlbnRpZmllcnMiLAorICAgICAgICAgICAgICAgICAgdmFsdWU6IHtpZDE6MTAsIGlk
MjoyMH0sCisgICAgICAgICAgICAgICAgICBrZXlQYXRoOiAiaWQxIiwKKyAgICAgICAgICAgICAg
ICAgIGtleTogMTAgfSwKKyAgICAgICAgICAgICAgICB7IG5hbWU6ICJuZXN0ZWQgaWRlbnRpZmll
cnMiLAorICAgICAgICAgICAgICAgICAgdmFsdWU6IHtvdXRlcjp7aW5uZXI6MTB9fSwKKyAgICAg
ICAgICAgICAgICAgIGtleVBhdGg6ICJvdXRlci5pbm5lciIsCisgICAgICAgICAgICAgICAgICBr
ZXk6IDEwIH0sCisgICAgICAgICAgICAgICAgeyBuYW1lOiAibmVzdGVkIGlkZW50aWZpZXJzIHdp
dGggZGlzdHJhY3Rpb25zIiwKKyAgICAgICAgICAgICAgICAgIHZhbHVlOiB7b3V0ZXI6e2lubmVy
OjEwfSwgaW5uZXI6e291dGVyOjIwfX0sCisgICAgICAgICAgICAgICAgICBrZXlQYXRoOiAib3V0
ZXIuaW5uZXIiLAorICAgICAgICAgICAgICAgICAga2V5OiAxMCB9LAorICAgIF07CisgICAgbmV4
dFRvT3BlbiA9IDA7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9i
amVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworfQorCitmdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKK3sKKyAgICBk
ZWJ1ZygiIik7CisgICAgZGVidWcoInRlc3RpbmcgIiArIHRlc3REYXRhW25leHRUb09wZW5dLm5h
bWUpOworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3Jl
ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSh0ZXN0RGF0
YVtuZXh0VG9PcGVuXS5uYW1lLCB7a2V5UGF0aDogdGVzdERhdGFbbmV4dFRvT3Blbl0ua2V5UGF0
aH0pOyIpOworICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coInJlc3VsdCA9IG9iamVjdFN0b3JlLmFk
ZCh0ZXN0RGF0YVtuZXh0VG9PcGVuXS52YWx1ZSk7Iik7CisgICAgcmVzdWx0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXN1bHQub25zdWNjZXNzID0gb3BlbkN1cnNv
cjsKK30KKworZnVuY3Rpb24gb3BlbkN1cnNvcigpCit7CisgICAgcmVzdWx0ID0gZXZhbEFuZExv
ZygicmVzdWx0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOworICAgIHJlc3VsdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGNo
ZWNrQ3Vyc29yOworfQorCitmdW5jdGlvbiBjaGVja0N1cnNvcigpCit7CisgICAgY3Vyc29yID0g
ZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICBpZiAoY3Vy
c29yKSB7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgInRlc3REYXRhW25leHRUb09w
ZW5dLmtleSIpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQoImN1cnNvciBpcyBu
dWxsIik7CisgICAgfQorICAgIGlmICgrK25leHRUb09wZW4gPCB0ZXN0RGF0YS5sZW5ndGgpIHsK
KyAgICAgICAgY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSgpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0KK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9rZXlyYW5nZS1yZXF1aXJlZC1hcmd1bWVudHMuanMgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5cmFuZ2UtcmVxdWlyZWQtYXJndW1lbnRzLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjgxMzIwOTkwMjViZjU3ZjU3ZWY5ZWJkY2RkNDhkMzcwYzBiZWZmN2IKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
a2V5cmFuZ2UtcmVxdWlyZWQtYXJndW1lbnRzLmpzCkBAIC0wLDAgKzEsMjEgQEAKK2lmICh0aGlz
LmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycp
OworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIga2V5cmFuZ2UgcmVxdWlyZWQgYXJn
dW1lbnRzIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVz
KCk7CisKKyAgICBzaG91bGRUaHJvdygiSURCS2V5UmFuZ2Uub25seSgpOyIpOworICAgIHNob3Vs
ZFRocm93KCJJREJLZXlSYW5nZS5sb3dlckJvdW5kKCk7Iik7CisgICAgc2hvdWxkVGhyb3coIklE
QktleVJhbmdlLnVwcGVyQm91bmQoKTsiKTsKKyAgICBzaG91bGRUaHJvdygiSURCS2V5UmFuZ2Uu
Ym91bmQoMSk7Iik7CisgICAgc2hvdWxkVGhyb3coIklEQktleVJhbmdlLmJvdW5kKCk7Iik7CisK
KyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9rZXlyYW5nZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9r
ZXlyYW5nZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMmY1ZjY1NjZkNjE4MWM5MDhhMzQ3MDIxNmI4ZjMwOTQ1
NWNlN2Y0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL2tleXJhbmdlLmpzCkBAIC0wLDAgKzEsMTg3IEBACitpZiAodGhpcy5pbXBvcnRT
Y3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKwor
ZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgS2V5UmFuZ2UuIik7CisKK2Z1bmN0aW9uIGNo
ZWNrU2luZ2xlS2V5UmFuZ2UodmFsdWUpCit7CisgICAga2V5UmFuZ2UgPSBldmFsQW5kTG9nKCJJ
REJLZXlSYW5nZS5vbmx5KCIgKyB2YWx1ZSArICIpIik7CisgICAgc2hvdWxkQmUoImtleVJhbmdl
Lmxvd2VyIiwgIiIgKyB2YWx1ZSk7CisgICAgc2hvdWxkQmUoImtleVJhbmdlLnVwcGVyIiwgIiIg
KyB2YWx1ZSk7CisgICAgc2hvdWxkQmVGYWxzZSgia2V5UmFuZ2UubG93ZXJPcGVuIik7CisgICAg
c2hvdWxkQmVGYWxzZSgia2V5UmFuZ2UudXBwZXJPcGVuIik7Cit9CisKK2Z1bmN0aW9uIGNoZWNr
TG93ZXJCb3VuZEtleVJhbmdlKHZhbHVlLCBvcGVuKQoreworICAgIGtleVJhbmdlID0gZXZhbEFu
ZExvZygiSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgiICsgdmFsdWUgKyAiLCIgKyBvcGVuICsgIiki
KTsKKyAgICBzaG91bGRCZSgia2V5UmFuZ2UubG93ZXIiLCAiIiArIHZhbHVlKTsKKyAgICBpZiAo
b3BlbiA9PT0gdW5kZWZpbmVkKQorICAgICAgICBvcGVuID0gZmFsc2U7CisgICAgc2hvdWxkQmUo
ImtleVJhbmdlLmxvd2VyT3BlbiIsICIiICsgb3Blbik7CisgICAgc2hvdWxkQmVOdWxsKCJrZXlS
YW5nZS51cHBlciIpOworICAgIHNob3VsZEJlRmFsc2UoImtleVJhbmdlLnVwcGVyT3BlbiIpOwor
fQorCitmdW5jdGlvbiBjaGVja1VwcGVyQm91bmRLZXlSYW5nZSh2YWx1ZSwgb3BlbikKK3sKKyAg
ICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coIklEQktleVJhbmdlLnVwcGVyQm91bmQoIiArIHZhbHVl
ICsgIiwiICsgb3BlbiArICIpIik7CisgICAgc2hvdWxkQmUoImtleVJhbmdlLnVwcGVyIiwgIiIg
KyB2YWx1ZSk7CisgICAgaWYgKG9wZW4gPT09IHVuZGVmaW5lZCkKKyAgICAgICAgb3BlbiA9IGZh
bHNlOworICAgIHNob3VsZEJlKCJrZXlSYW5nZS51cHBlck9wZW4iLCAiIiArIG9wZW4pOworICAg
IHNob3VsZEJlTnVsbCgia2V5UmFuZ2UubG93ZXIiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJrZXlS
YW5nZS5sb3dlck9wZW4iKTsKK30KKworZnVuY3Rpb24gY2hlY2tCb3VuZEtleVJhbmdlKGxvd2Vy
LCB1cHBlciwgbG93ZXJPcGVuLCB1cHBlck9wZW4pCit7CisgICAga2V5UmFuZ2UgPSBldmFsQW5k
TG9nKCJJREJLZXlSYW5nZS5ib3VuZCgiICsgbG93ZXIgKyAiLCIgKyB1cHBlciArICIsICIgKyBs
b3dlck9wZW4gKyAiLCAiICsgdXBwZXJPcGVuICsgIikiKTsKKyAgICBzaG91bGRCZSgia2V5UmFu
Z2UubG93ZXIiLCAiIiArIGxvd2VyKTsKKyAgICBzaG91bGRCZSgia2V5UmFuZ2UudXBwZXIiLCAi
IiArIHVwcGVyKTsKKyAgICBpZiAobG93ZXJPcGVuID09PSB1bmRlZmluZWQpCisgICAgICAgIGxv
d2VyT3BlbiA9IGZhbHNlOworICAgIGlmICh1cHBlck9wZW4gPT09IHVuZGVmaW5lZCkKKyAgICAg
ICAgdXBwZXJPcGVuID0gZmFsc2U7CisgICAgc2hvdWxkQmUoImtleVJhbmdlLmxvd2VyT3BlbiIs
ICIiICsgbG93ZXJPcGVuKTsKKyAgICBzaG91bGRCZSgia2V5UmFuZ2UudXBwZXJPcGVuIiwgIiIg
KyB1cHBlck9wZW4pOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQ
cmVmaXhlcygpOworICAgIHNob3VsZEJlRmFsc2UoIidsb3dlcicgaW4gSURCS2V5UmFuZ2UiKTsK
KyAgICBzaG91bGRCZUZhbHNlKCIndXBwZXInIGluIElEQktleVJhbmdlIik7CisgICAgc2hvdWxk
QmVGYWxzZSgiJ2xvd2VyT3BlbicgaW4gSURCS2V5UmFuZ2UiKTsKKyAgICBzaG91bGRCZUZhbHNl
KCIndXBwZXJPcGVuJyBpbiBJREJLZXlSYW5nZSIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ29ubHkn
IGluIElEQktleVJhbmdlIik7CisgICAgc2hvdWxkQmVUcnVlKCInbG93ZXJCb3VuZCcgaW4gSURC
S2V5UmFuZ2UiKTsKKyAgICBzaG91bGRCZVRydWUoIid1cHBlckJvdW5kJyBpbiBJREJLZXlSYW5n
ZSIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ2JvdW5kJyBpbiBJREJLZXlSYW5nZSIpOworCisgICAg
ZGVidWcoIiIpOworCisgICAgdmFyIGluc3RhbmNlID0gZXZhbEFuZExvZygiaW5zdGFuY2UgPSBJ
REJLZXlSYW5nZS5vbmx5KDEpIik7CisgICAgc2hvdWxkQmVUcnVlKCInbG93ZXInIGluIGluc3Rh
bmNlIik7CisgICAgc2hvdWxkQmVUcnVlKCIndXBwZXInIGluIGluc3RhbmNlIik7CisgICAgc2hv
dWxkQmVUcnVlKCInbG93ZXJPcGVuJyBpbiBpbnN0YW5jZSIpOworICAgIHNob3VsZEJlVHJ1ZSgi
J3VwcGVyT3BlbicgaW4gaW5zdGFuY2UiKTsKKyAgICBzaG91bGRCZUZhbHNlKCInb25seScgaW4g
aW5zdGFuY2UiKTsKKyAgICBzaG91bGRCZUZhbHNlKCInbG93ZXJCb3VuZCcgaW4gaW5zdGFuY2Ui
KTsKKyAgICBzaG91bGRCZUZhbHNlKCIndXBwZXJCb3VuZCcgaW4gaW5zdGFuY2UiKTsKKyAgICBz
aG91bGRCZUZhbHNlKCInYm91bmQnIGluIGluc3RhbmNlIik7CisKKyAgICBkZWJ1ZygiIik7CisK
KyAgICBjaGVja1NpbmdsZUtleVJhbmdlKDEpOworICAgIGNoZWNrU2luZ2xlS2V5UmFuZ2UoMy4x
NCk7CisgICAgY2hlY2tTaW5nbGVLZXlSYW5nZSgiJ2EnIik7CisKKyAgICBjaGVja0xvd2VyQm91
bmRLZXlSYW5nZSgxMCwgdHJ1ZSk7CisgICAgY2hlY2tMb3dlckJvdW5kS2V5UmFuZ2UoMTEsIGZh
bHNlKTsKKyAgICBjaGVja0xvd2VyQm91bmRLZXlSYW5nZSgxMik7CisgICAgY2hlY2tMb3dlckJv
dW5kS2V5UmFuZ2UoMTAuMSwgdHJ1ZSk7CisgICAgY2hlY2tMb3dlckJvdW5kS2V5UmFuZ2UoMTEu
MiwgZmFsc2UpOworICAgIGNoZWNrTG93ZXJCb3VuZEtleVJhbmdlKDEyLjMpOworICAgIGNoZWNr
TG93ZXJCb3VuZEtleVJhbmdlKCInYWEnIiwgdHJ1ZSk7CisgICAgY2hlY2tMb3dlckJvdW5kS2V5
UmFuZ2UoIidhYiciLCBmYWxzZSk7CisgICAgY2hlY2tMb3dlckJvdW5kS2V5UmFuZ2UoIidhYyci
KTsKKworICAgIGNoZWNrVXBwZXJCb3VuZEtleVJhbmdlKDIwLCB0cnVlKTsKKyAgICBjaGVja1Vw
cGVyQm91bmRLZXlSYW5nZSgyMSwgZmFsc2UpOworICAgIGNoZWNrVXBwZXJCb3VuZEtleVJhbmdl
KDIyKTsKKyAgICBjaGVja1VwcGVyQm91bmRLZXlSYW5nZSgyMC4yLCB0cnVlKTsKKyAgICBjaGVj
a1VwcGVyQm91bmRLZXlSYW5nZSgyMS4zLCBmYWxzZSk7CisgICAgY2hlY2tVcHBlckJvdW5kS2V5
UmFuZ2UoMjIuNCk7CisgICAgY2hlY2tVcHBlckJvdW5kS2V5UmFuZ2UoIidiYSciLCB0cnVlKTsK
KyAgICBjaGVja1VwcGVyQm91bmRLZXlSYW5nZSgiJ2JiJyIsIGZhbHNlKTsKKyAgICBjaGVja1Vw
cGVyQm91bmRLZXlSYW5nZSgiJ2JjJyIpOworCisgICAgY2hlY2tCb3VuZEtleVJhbmdlKDMwLCA0
MCk7CisgICAgY2hlY2tCb3VuZEtleVJhbmdlKDMxLCA0MSwgZmFsc2UsIGZhbHNlKTsKKyAgICBj
aGVja0JvdW5kS2V5UmFuZ2UoMzIsIDQyLCBmYWxzZSwgdHJ1ZSk7CisgICAgY2hlY2tCb3VuZEtl
eVJhbmdlKDMzLCA0MywgdHJ1ZSwgZmFsc2UpOworICAgIGNoZWNrQm91bmRLZXlSYW5nZSgzNCwg
NDQsIHRydWUsIHRydWUpOworCisgICAgY2hlY2tCb3VuZEtleVJhbmdlKDMwLjEsIDQwLjIpOwor
ICAgIGNoZWNrQm91bmRLZXlSYW5nZSgzMS4zLCA0MS40LCBmYWxzZSwgZmFsc2UpOworICAgIGNo
ZWNrQm91bmRLZXlSYW5nZSgzMi41LCA0Mi42LCBmYWxzZSwgdHJ1ZSk7CisgICAgY2hlY2tCb3Vu
ZEtleVJhbmdlKDMzLjcsIDQzLjgsIHRydWUsIGZhbHNlKTsKKyAgICBjaGVja0JvdW5kS2V5UmFu
Z2UoMzQuOSwgNDQuMCwgdHJ1ZSwgdHJ1ZSk7CisKKyAgICBjaGVja0JvdW5kS2V5UmFuZ2UoIidh
YWEnIiwgIidhYmEnIiwgZmFsc2UsIGZhbHNlKTsKKyAgICBjaGVja0JvdW5kS2V5UmFuZ2UoIidh
YWInIiwgIidhYmInIik7CisgICAgY2hlY2tCb3VuZEtleVJhbmdlKCInYWFjJyIsICInYWJjJyIs
IGZhbHNlLCBmYWxzZSk7CisgICAgY2hlY2tCb3VuZEtleVJhbmdlKCInYWFkJyIsICInYWJkJyIs
IGZhbHNlLCB0cnVlKTsKKyAgICBjaGVja0JvdW5kS2V5UmFuZ2UoIidhYWUnIiwgIidhYmUnIiwg
dHJ1ZSwgZmFsc2UpOworICAgIGNoZWNrQm91bmRLZXlSYW5nZSgiJ2FhZiciLCAiJ2FiZiciLCB0
cnVlLCB0cnVlKTsKKworICAgIHRyeSB7CisgICAgICAgIGRlYnVnKCJQYXNzaW5nIGFuIGludmFs
aWQga2V5IGludG8gb25seSh7fSkiKTsKKyAgICAgICAgSURCS2V5UmFuZ2Uub25seSh7fSk7Cisg
ICAgICAgIHRlc3RGYWlsZWQoIk5vIGV4Y2VwdGlvbiB0aHJvd24iKTsKKyAgICB9IGNhdGNoIChl
KSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkNhdWdodCBleGNlcHRpb246ICIgKyBlLnRvU3RyaW5n
KCkpOworICAgIH0KKworICAgIHRyeSB7CisgICAgICAgIGRlYnVnKCJQYXNzaW5nIGFuIGludmFs
aWQga2V5IGludG8gdXBwZXJCb3VuZCh7fSkiKTsKKyAgICAgICAgSURCS2V5UmFuZ2UudXBwZXJC
b3VuZCh7fSk7CisgICAgICAgIHRlc3RGYWlsZWQoIk5vIGV4Y2VwdGlvbiB0aHJvd24iKTsKKyAg
ICB9IGNhdGNoIChlKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkNhdWdodCBleGNlcHRpb246ICIg
KyBlLnRvU3RyaW5nKCkpOworICAgIH0KKworICAgIHRyeSB7CisgICAgICAgIGRlYnVnKCJQYXNz
aW5nIGFuIGludmFsaWQga2V5IGludG8gbG93ZXJCb3VuZCh7fSkiKTsKKyAgICAgICAgSURCS2V5
UmFuZ2UubG93ZXJCb3VuZCh7fSk7CisgICAgICAgIHRlc3RGYWlsZWQoIk5vIGV4Y2VwdGlvbiB0
aHJvd24iKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkNhdWdodCBl
eGNlcHRpb246ICIgKyBlLnRvU3RyaW5nKCkpOworICAgIH0KKworICAgIHRyeSB7CisgICAgICAg
IGRlYnVnKCJQYXNzaW5nIGFuIGludmFsaWQga2V5IGludG8gYm91bmQobnVsbCwge30pIik7Cisg
ICAgICAgIElEQktleVJhbmdlLmJvdW5kKG51bGwsIHt9KTsKKyAgICAgICAgdGVzdEZhaWxlZCgi
Tm8gZXhjZXB0aW9uIHRocm93biIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgdGVzdFBh
c3NlZCgiQ2F1Z2h0IGV4Y2VwdGlvbjogIiArIGUudG9TdHJpbmcoKSk7CisgICAgfQorCisgICAg
dHJ5IHsKKyAgICAgICAgZGVidWcoIlBhc3NpbmcgYW4gaW52YWxpZCBrZXkgaW50byBib3VuZCh7
fSxudWxsKSIpOworICAgICAgICBJREJLZXlSYW5nZS5ib3VuZCh7fSwgbnVsbCk7CisgICAgICAg
IHRlc3RGYWlsZWQoIk5vIGV4Y2VwdGlvbiB0aHJvd24iKTsKKyAgICB9IGNhdGNoIChlKSB7Cisg
ICAgICAgIHRlc3RQYXNzZWQoIkNhdWdodCBleGNlcHRpb246ICIgKyBlLnRvU3RyaW5nKCkpOwor
ICAgIH0KKworICAgIHRyeSB7CisgICAgICAgIGRlYnVnKCJQYXNzaW5nIGFuIGludmFsaWQga2V5
IGludG8gYm91bmQoe30sIHt9KSIpOworICAgICAgICBJREJLZXlSYW5nZS5ib3VuZCh7fSwge30p
OworICAgICAgICB0ZXN0RmFpbGVkKCJObyBleGNlcHRpb24gdGhyb3duIik7CisgICAgfSBjYXRj
aCAoZSkgeworICAgICAgICB0ZXN0UGFzc2VkKCJDYXVnaHQgZXhjZXB0aW9uOiAiICsgZS50b1N0
cmluZygpKTsKKyAgICB9CisKKyAgICBkZWJ1ZygiTG93ZXIga2V5IGdyZWF0ZXIgdGhhbiBoaWdo
ZXIga2V5LCBib3VuZCg0LCAzKSIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIklEQktl
eVJhbmdlLmJvdW5kKDQsIDMpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisK
KyAgICBkZWJ1ZygiRXF1YWwga2V5cywgZWl0aGVyIG9mIHRoZSBib3VuZHMgaXMgb3BlbiwgYm91
bmQoNCwgNCwgdHJ1ZSwgZmFsc2UpIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiSURC
S2V5UmFuZ2UuYm91bmQoNCwgNCwgdHJ1ZSwgZmFsc2UpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9u
LkRBVEFfRVJSIik7CisKKyAgICBkZWJ1ZygiRXF1YWwga2V5cywgZWl0aGVyIG9mIHRoZSBib3Vu
ZHMgaXMgb3BlbiwgYm91bmQoNCwgNCwgZmFsc2UsIHRydWUpIik7CisgICAgZXZhbEFuZEV4cGVj
dEV4Y2VwdGlvbigiSURCS2V5UmFuZ2UuYm91bmQoNCwgNCwgZmFsc2UsIHRydWUpIiwgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICBkZWJ1ZygiRXF1YWwga2V5cywgZWl0
aGVyIG9mIHRoZSBib3VuZHMgaXMgb3BlbiwgYm91bmQoNCwgNCwgdHJ1ZSwgdHJ1ZSkiKTsKKyAg
ICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJJREJLZXlSYW5nZS5ib3VuZCg0LCA0LCB0cnVlLCB0
cnVlKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworCisgICAgZGVidWcoIkVx
dWFsIGtleXMsIG5vbmUgb2YgdGhlIGJvdW5kcyBpcyBvcGVuLCBib3VuZCg0LCA0LCBmYWxzZSwg
ZmFsc2UpIik7CisgICAgSURCS2V5UmFuZ2UuYm91bmQoNCwgNCwgZmFsc2UsIGZhbHNlKTsKK30K
KwordGVzdCgpOworCitmaW5pc2hKU1Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvbGlz
dC1vcmRlcmluZy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9s
aXN0LW9yZGVyaW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczNTk4ZmQ3MjM1ODYwZWRhNzhiMmYxNzFlZTE0
ZGIwYzBjMWFjY2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvbGlzdC1vcmRlcmluZy5qcwpAQCAtMCwwICsxLDg0IEBACitpZiAodGhp
cy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMn
KTsKK30KKworZGVzY3JpcHRpb24oIlRlc3Qgc3RyaW5nIGxpc3Qgb3JkZXJpbmcgaW4gSW5kZXhl
ZERCLiIpOworCit2YXIgZXhwZWN0ZWRfb3JkZXIgPSBbCisgICIiLAorICAiXHgwMCIsIC8vICdO
VUxMJyAoVSswMDAwKQorICAiMCIsCisgICIxIiwKKyAgIkEiLAorICAiQiIsCisgICJhIiwKKyAg
ImIiLAorICAiXHg3RiIsIC8vICdERUxFVEUnIChVKzAwN0YpCisgICJceEMwIiwgLy8gJ0xBVElO
IENBUElUQUwgTEVUVEVSIEEgV0lUSCBHUkFWRScgKFUrMDBDMCkKKyAgIlx4QzEiLCAvLyAnTEFU
SU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEFDVVRFJyAoVSswMEMxKQorICAiXHhFMCIsIC8vICdM
QVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEdSQVZFJyAoVSswMEUwKQorICAiXHhFMSIsIC8vICdM
QVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEFDVVRFJyAoVSswMEUxKQorICAiXHhGRiIsIC8vICdM
QVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIERJQUVSRVNJUycgKFUrMDBGRikKKyAgIlx1MDEwMCIs
IC8vICdMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggTUFDUk9OJyAoVSswMTAwKQorICAiXHUx
MDAwIiwgLy8gJ01ZQU5NQVIgTEVUVEVSIEtBJyAoVSsxMDAwKQorICAiXHVEODM0XHVERDFFIiwg
Ly8gJ01VU0lDQUwgU1lNQk9MIEctQ0xFRicgKFUrMUQxMUUpLCBVVEYtMTYgc3Vycm9nYXRlIHBh
aXJzCisgICJcdUZGRkQiIC8vICdSRVBMQUNFTUVOVCBDSEFSQUNURVInIChVK0ZGRkQpCitdOwor
dmFyIGksIHRtcCwgcGVybXV0ZWRfb3JkZXIgPSBleHBlY3RlZF9vcmRlci5zbGljZSgpOyBwZXJt
dXRlZF9vcmRlci5yZXZlcnNlKCk7Citmb3IgKGkgPSAwOyBpIDwgcGVybXV0ZWRfb3JkZXIubGVu
Z3RoIC0gMjsgaSArPSAyKSB7CisgICAgdG1wID0gcGVybXV0ZWRfb3JkZXJbaV07CisgICAgcGVy
bXV0ZWRfb3JkZXJbaV0gPSBwZXJtdXRlZF9vcmRlcltpICsgMV07CisgICAgcGVybXV0ZWRfb3Jk
ZXJbaSArIDFdID0gdG1wOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5k
b3JQcmVmaXhlcygpOworICAgIGRlYnVnKCJjaGVjayB0aGF0IHRoZSBleHBlY3RlZCBvcmRlciBp
cyB0aGUgY2Fub25pY2FsIEpTIHNvcnQgb3JkZXI6Iik7CisgICAgZXZhbEFuZExvZygic29ydGVk
X29yZGVyID0gZXhwZWN0ZWRfb3JkZXIuc2xpY2UoKTsgc29ydGVkX29yZGVyLnNvcnQoKSIpOwor
ICAgIHNob3VsZEJlVHJ1ZSgiYXJlQXJyYXlzRXF1YWwoc29ydGVkX29yZGVyLCBleHBlY3RlZF9v
cmRlcikiKTsKKyAgICB0ZXN0U3RvcmVzQW5kSW5kZXhlcygpOworfQorCitmdW5jdGlvbiB0ZXN0
U3RvcmVzQW5kSW5kZXhlcygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0U3Rv
cmVzQW5kSW5kZXhlcygpOiIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
ZGVsZXRlRGF0YWJhc2UoJ2xpc3Qtb3JkZXJpbmcnKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24oZSkgeworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2xp
c3Qtb3JkZXJpbmcnKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihlKSB7Cisg
ICAgICAgICAgICBldmFsQW5kTG9nKCJkYiA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAgICAgICAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLnZlcnNpb24iLCAiIik7CisgICAgICAgICAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgICAgICAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgICAgIHRyYW5zID0g
cmVxdWVzdC5yZXN1bHQ7CisKKyAgICAgICAgICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgICAg
ICAgICAgZGVidWcoIk9iamVjdCBzdG9yZXM6Iik7CisgICAgICAgICAgICAgICAgcGVybXV0ZWRf
b3JkZXIuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkgeworICAgICAgICAgICAgICAgICAgICBldmFs
QW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgiICsgSlNPTi5zdHJpbmdpZnkobmFtZSkgKyIp
Iik7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBzaG91bGRCZVRydWUo
ImFyZUFycmF5c0VxdWFsKGRiLm9iamVjdFN0b3JlTmFtZXMsIGV4cGVjdGVkX29yZGVyKSIpOwor
CisgICAgICAgICAgICAgICAgZGVidWcoIiIpOworICAgICAgICAgICAgICAgIGRlYnVnKCJJbmRl
eGVzOiIpOworICAgICAgICAgICAgICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5j
cmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgICAgICAgICAgICAgIHBlcm11dGVkX29y
ZGVyLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgZXZhbEFu
ZExvZygic3RvcmUuY3JlYXRlSW5kZXgoIiArIEpTT04uc3RyaW5naWZ5KG5hbWUpICsiLCAna2V5
UGF0aCcpIik7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBzaG91bGRC
ZVRydWUoImFyZUFycmF5c0VxdWFsKHN0b3JlLmluZGV4TmFtZXMsIGV4cGVjdGVkX29yZGVyKSIp
OworCisgICAgICAgICAgICAgICAgdHJhbnMub25jb21wbGV0ZSA9IGZpbmlzaEpTVGVzdDsKKyAg
ICAgICAgICAgIH07CisgICAgICAgIH07CisgICAgfTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9tdXRhdGluZy1jdXJzb3IuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvbXV0YXRpbmctY3Vyc29yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3ZDYxZjZj
YzQwYjA2NjA4MGFmMTFkZTY1MWYxODMxMTY3ZmEwY2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvbXV0YXRpbmctY3Vyc29yLmpzCkBA
IC0wLDAgKzEsMTMyIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2Ny
aXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBp
bXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgbXV0YXRp
bmcgYW4gSW5kZXhlZERCJ3Mgb2JqZWN0c3RvcmUgZnJvbSBhIGN1cnNvci4iKTsKKwordGVzdCgp
OworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignbXV0YXRpbmctY3Vyc29yJyki
KTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2Vz
cygpCit7CisgICAgdmFyIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignMScpIik7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lv
blN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOworICAgIHNl
bGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAg
ICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVu
ZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSBvcGVuRm9yd2Fy
ZEN1cnNvcjsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICB2YXIgb2Jq
ZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdzdG9yZScpIik7CisgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKDEsIDEpLm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0
b3JlLmFkZCgyLCAyKS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKKyAgICBl
dmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoMywgMykub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrIik7CisgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKDQsIDQpLm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOworfQorCitmdW5jdGlvbiBvcGVuRm9yd2Fy
ZEN1cnNvcigpCit7CisgICAgZGVidWcoIm9wZW5Gb3J3YXJkQ3Vyc29yKCkiKTsKKyAgICBldmFs
QW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUnXSwgSURCVHJhbnNhY3Rpb24u
UkVBRF9XUklURSkiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJh
Y2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IGZvcndhcmRDdXJzb3JDb21wbGV0ZTsKKworICAg
IHNlbGYub2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUn
KSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCki
KTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZvcndhcmRDdXJzb3I7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgc2VsZi5jdXJzb3JTdGVwcyA9
IDA7Cit9CisKK2Z1bmN0aW9uIGZvcndhcmRDdXJzb3IoKQoreworICAgIGRlYnVnKCJmb3J3YXJk
Q3Vyc29yKCkiKTsKKyAgICBzZWxmLmN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisKKyAg
ICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBudWxsKSB7CisgICAgICAgIHNob3VsZEJlKCJj
dXJzb3JTdGVwcyIsICI1Iik7CisKKyAgICAgICAgLy8gTGV0IHRoZSB0cmFuc2FjdGlvbiBmaW5p
c2guCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBkZWJ1ZygrK2N1cnNvclN0ZXBzKTsK
KyAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJjdXJzb3JTdGVwcyIpOworICAgIHNob3VsZEJl
KCJjdXJzb3IudmFsdWUiLCAiY3Vyc29yU3RlcHMiKTsKKworICAgIGlmIChjdXJzb3JTdGVwcyA9
PSAxKSB7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJldmVudC50YXJnZXQuc291cmNl
LmFkZCg1LCA1KSIpOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeyBl
dmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKSIpOyB9CisgICAgICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIH0gZWxzZSB7CisgICAgICAgIGV2YWxB
bmRMb2coImN1cnNvci5jb250aW51ZSgpIik7CisgICAgfQorfQorCitmdW5jdGlvbiBmb3J3YXJk
Q3Vyc29yQ29tcGxldGUoKQoreworICAgIGRlYnVnKCJmb3J3YXJkQ3Vyc29yQ29tcGxldGUoKSIp
OworICAgIG9wZW5SZXZlcnNlQ3Vyc29yKCkKK30KKworZnVuY3Rpb24gb3BlblJldmVyc2VDdXJz
b3IoKQoreworICAgIGRlYnVnKCJvcGVuUmV2ZXJzZUN1cnNvcigpIik7CisgICAgZXZhbEFuZExv
ZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURf
V1JJVEUpIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwor
ICAgIHRyYW5zLm9uY29tcGxldGUgPSByZXZlcnNlQ3Vyc29yQ29tcGxldGU7CisKKyAgICBzZWxm
Lm9iamVjdFN0b3JlID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUub3BlbkN1cnNvcihudWxsLCBJ
REJDdXJzb3IuUFJFVikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHJldmVyc2VDdXJzb3I7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgc2Vs
Zi5jdXJzb3JTdGVwcyA9IDY7Cit9CisKK2Z1bmN0aW9uIHJldmVyc2VDdXJzb3IoKQoreworICAg
IGRlYnVnKCJyZXZlcnNlQ3Vyc29yKCkiKTsKKyAgICBzZWxmLmN1cnNvciA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQ7CisKKyAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBudWxsKSB7CisgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3JTdGVwcyIsICIwIik7CisKKyAgICAgICAgLy8gTGV0IHRoZSB0
cmFuc2FjdGlvbiBmaW5pc2guCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBkZWJ1Zygt
LWN1cnNvclN0ZXBzKTsKKyAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJjdXJzb3JTdGVwcyIp
OworICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAiY3Vyc29yU3RlcHMiKTsKKworICAgIGlm
IChjdXJzb3JTdGVwcyA9PSAyKSB7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJldmVu
dC50YXJnZXQuc291cmNlLmFkZCgwLCAwKSIpOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGZ1bmN0aW9uKCkgeyBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKSIpOyB9CisgICAgICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIH0gZWxzZSB7
CisgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpIik7CisgICAgfQorfQorCitm
dW5jdGlvbiByZXZlcnNlQ3Vyc29yQ29tcGxldGUoKQoreworICAgIGRlYnVnKCJyZXZlcnNlQ3Vy
c29yQ29tcGxldGUoKSIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9vYmplY3RTdG9yZS1yZXF1aXJlZC1hcmd1bWVudHMuanMgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0U3RvcmUtcmVxdWlyZWQtYXJndW1lbnRz
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjdkZjhiNzA1YzgyOWFlZGM2NjlhYjFhYjUyNTYxMmE4NmI2MDk5NjMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvb2JqZWN0U3RvcmUtcmVxdWlyZWQtYXJndW1lbnRzLmpzCkBAIC0wLDAgKzEsNDQgQEAKK2lm
ICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJl
ZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgb2JqZWN0IHN0b3JlIHJl
cXVpcmVkIGFyZ3VtZW50cyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5k
b3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAg
ZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2
YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUFuZFBv
cHVsYXRlT2JqZWN0U3RvcmUoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisK
KyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ2ZvbycpOyIpOworICAgIHNob3VsZFRocm93KCJvYmplY3RTdG9yZS5wdXQoKTsi
KTsKKyAgICBzaG91bGRUaHJvdygib2JqZWN0U3RvcmUuYWRkKCk7Iik7CisgICAgc2hvdWxkVGhy
b3coIm9iamVjdFN0b3JlLmRlbGV0ZSgpOyIpOworICAgIHNob3VsZFRocm93KCJvYmplY3RTdG9y
ZS5nZXQoKTsiKTsKKyAgICBzaG91bGRUaHJvdygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoKTsi
KTsKKyAgICBzaG91bGRUaHJvdygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ2ZvbycpOyIpOwor
ICAgIHNob3VsZFRocm93KCJvYmplY3RTdG9yZS5pbmRleCgpOyIpOworICAgIHNob3VsZFRocm93
KCJvYmplY3RTdG9yZS5kZWxldGVJbmRleCgpOyIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQor
Cit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3JlLWF1dG9pbmNyZW1l
bnQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3Rv
cmUtYXV0b2luY3JlbWVudC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YjFiNDlhMzEzZGNkMTBlMzdmZjZjZDc3
YmVmZWI4YjA0NmM1ZGI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3JlLWF1dG9pbmNyZW1lbnQuanMKQEAgLTAsMCAr
MSwxOTMgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcu
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNj
cmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBJ
REJPYmplY3RTdG9yZSBhdXRvLWluY3JlbWVudCBmZWF0dXJlLiIpOworCitmdW5jdGlvbiB0ZXN0
KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJpbmRleGVkREIub3Blbignb2JqZWN0c3RvcmUtYXV0b2luY3JlbWVudCcpIik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQorewor
ICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOworICAgIHNlbGYuZGIgPSBldmFsQW5kTG9nKCJk
YiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJk
Yi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBz
ZXRWZXJzaW9uU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQoreworICAgIGRlYnVn
KCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOworICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0
cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9
PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwor
ICAgIHRyYW5zLm9uY29tcGxldGUgPSBzZXRWZXJzaW9uQ29tcGxldGVkOworCisgICAgZGVsZXRl
QWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIGRlYnVnKCJjcmVhdGVPYmplY3RTdG9yZSgpOiIp
OworICAgIHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0
b3JlKCdTdG9yZVdpdGhLZXlQYXRoJywge2tleVBhdGg6ICdpZCcsIGF1dG9JbmNyZW1lbnQ6IHRy
dWV9KSIpOworICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdTdG9yZVdpdGhB
dXRvSW5jcmVtZW50Jywge2F1dG9JbmNyZW1lbnQ6IHRydWV9KSIpOworICAgIGV2YWxBbmRMb2co
ImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdQbGFpbk9sZFN0b3JlJywge2F1dG9JbmNyZW1lbnQ6IGZh
bHNlfSkiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnU3RvcmVXaXRo
TG9uZ0tleVBhdGgnLCB7a2V5UGF0aDogJ2EuYi5jLmlkJywgYXV0b0luY3JlbWVudDogdHJ1ZX0p
Iik7CisgICAgdmFyIHN0b3JlTmFtZXMgPSBldmFsQW5kTG9nKCJzdG9yZU5hbWVzID0gZGIub2Jq
ZWN0U3RvcmVOYW1lcyIpOworCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzdG9yZS5uYW1l
IiwgIlN0b3JlV2l0aEtleVBhdGgiKTsKKyAgICBzaG91bGRCZSgic3RvcmUua2V5UGF0aCIsICIn
aWQnIik7CisgICAgc2hvdWxkQmUoInN0b3JlTmFtZXMuY29udGFpbnMoJ1N0b3JlV2l0aEtleVBh
dGgnKSIsICJ0cnVlIik7CisgICAgc2hvdWxkQmUoInN0b3JlTmFtZXMuY29udGFpbnMoJ1N0b3Jl
V2l0aEF1dG9JbmNyZW1lbnQnKSIsICJ0cnVlIik7CisgICAgc2hvdWxkQmUoInN0b3JlTmFtZXMu
Y29udGFpbnMoJ1BsYWluT2xkU3RvcmUnKSIsICJ0cnVlIik7CisgICAgc2hvdWxkQmUoInN0b3Jl
TmFtZXMubGVuZ3RoIiwgIjQiKTsKKworICAgIC8vIExldCB0aGUgc2V0VmVyc2lvbiB0cmFuc2Fj
dGlvbiBjb21wbGV0ZS4KK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbkNvbXBsZXRlZCgpCit7Cisg
ICAgZGVidWcoInNldFZlcnNpb25Db21wbGV0ZWQoKToiKTsKKworICAgIHNlbGYudHJhbnMgPSBl
dmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnU3RvcmVXaXRoS2V5UGF0aCcsICdT
dG9yZVdpdGhBdXRvSW5jcmVtZW50JywgJ1BsYWluT2xkU3RvcmUnXSwgSURCVHJhbnNhY3Rpb24u
UkVBRF9XUklURSkiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJh
Y2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHRlc3RMb25nS2V5UGF0aDsKKworICAgIHNlbGYu
c3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdTdG9yZVdpdGhL
ZXlQYXRoJykiKTsKKworICAgIGRlYnVnKCJJbnNlcnQgaW50byBvYmplY3Qgc3RvcmUgd2l0aCBh
dXRvIGluY3JlbWVudCBhbmQga2V5IHBhdGgsIHdpdGgga2V5IGluIHRoZSBvYmplY3QuIik7Cisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7bmFtZTogJ0plZmZlcnNzb24nLCBu
dW1iZXI6ICc3MDEwJywgaWQ6IDN9KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkSmVm
ZmVyc3NvblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIGFkZEplZmZlcnNzb25TdWNjZXNzKCkKK3sKKyAgICBkZWJ1
ZygiYWRkSmVmZmVyc3NvblN1Y2Nlc3MoKToiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0
LnJlc3VsdCIsICIzIik7CisKKyAgICBkZWJ1ZygiSW5zZXJ0IGludG8gb2JqZWN0IHN0b3JlIHdp
dGggYXV0byBpbmNyZW1lbnQgYW5kIGtleSBwYXRoLCB3aXRob3V0IGtleSBpbiB0aGUgb2JqZWN0
LiIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe25hbWU6ICdMaW5jb2xu
JywgbnVtYmVyOiAnNzAxMid9KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkTGluY29s
bldpdGhJbmplY3RLZXlTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBhZGRMaW5jb2xuV2l0aEluamVjdEtleVN1Y2Nl
c3MoKQoreworICAgIGRlYnVnKCJhZGRMaW5jb2xuV2l0aEluamVjdEtleVN1Y2Nlc3MoKToiKTsK
KyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICI0Iik7CisKKyAgICByZXN1bHQg
PSBldmFsQW5kTG9nKCJzdG9yZS5nZXQoNCkiKTsKKyAgICByZXN1bHQub25zdWNjZXNzID0gZ2V0
TGluY29sbkFmdGVySW5qZWN0ZWRLZXlTdWNjZXNzOworICAgIHJlc3VsdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGdldExpbmNvbG5BZnRlckluamVj
dGVkS2V5U3VjY2VzcygpCit7CisgICAgZGVidWcoImdldExpbmNvbG5BZnRlckluamVjdGVkS2V5
U3VjY2VzcygpOiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJl
c3VsdC5uYW1lIiwgIkxpbmNvbG4iKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50
LnRhcmdldC5yZXN1bHQubnVtYmVyIiwgIjcwMTIiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFy
Z2V0LnJlc3VsdC5pZCIsICI0Iik7CisKKyAgICBzZWxmLnN0b3JlID0gZXZhbEFuZExvZygic3Rv
cmUgPSB0cmFucy5vYmplY3RTdG9yZSgnU3RvcmVXaXRoQXV0b0luY3JlbWVudCcpIik7CisgICAg
ZGVidWcoIkluc2VydCBpbnRvIG9iamVjdCBzdG9yZSB3aXRoIGtleSBnZW4gdXNpbmcgZXhwbGlj
aXQga2V5Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7bmFtZTogJ0xp
bmNvbG4nLCBudW1iZXI6ICc3MDEyJ30sIDUpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBh
ZGRMaW5jb2xuV2l0aEV4cGxpY2l0S2V5U3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gYWRkTGluY29sbldpdGhFeHBs
aWNpdEtleVN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJhZGRMaW5jb2xuV2l0aEV4cGxpY2l0S2V5
U3VjY2VzcygpOiIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIjUiKTsK
KworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5nZXQoNSkiKTsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGdldExpbmNvbG5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBnZXRMaW5jb2xuU3VjY2Vzcygp
Cit7CisgICAgZGVidWcoImdldExpbmNvbG5TdWNjZXNzKCk6Iik7CisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0Lm5hbWUiLCAiTGluY29sbiIpOworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5udW1iZXIiLCAiNzAxMiIp
OworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLnB1dCh7bmFtZTogJ0FicmFoYW0n
LCBudW1iZXI6ICcyMTA3J30pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwdXRBYnJhaGFt
U3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
K30KKworZnVuY3Rpb24gcHV0QWJyYWhhbVN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJwdXRBYnJh
aGFtU3VjY2VzcygpOiIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIjYi
KTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5nZXQoNikiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGdldEFicmFoYW1TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBnZXRBYnJhaGFtU3VjY2Vz
cygpCit7CisgICAgZGVidWcoImdldEFicmFoYW1TdWNjZXNzKCk6Iik7CisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0Lm5hbWUiLCAiQWJyYWhhbSIpOworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5udW1iZXIiLCAiMjEw
NyIpOworCisgICAgc2VsZi5zdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0
U3RvcmUoJ1BsYWluT2xkU3RvcmUnKSIpOworICAgIGRlYnVnKCJUcnkgYWRkaW5nIHdpdGggbm8g
a2V5IHRvIG9iamVjdCBzdG9yZSB3aXRob3V0IGF1dG8gaW5jcmVtZW50LiIpOworICAgIGV2YWxB
bmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmFkZCh7bmFtZTogJ0FkYW0nfSkiLCAiSURCRGF0YWJh
c2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUu
YWRkKHtuYW1lOiAnQWRhbSd9LCAxKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkQWRh
bVN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Cit9CisKK2Z1bmN0aW9uIGFkZEFkYW1TdWNjZXNzKCkKK3sKKyAgICBkZWJ1ZygiYWRkQWRhbVN1
Y2Nlc3MoKToiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICIxIik7Cit9
CisKK2Z1bmN0aW9uIHRlc3RMb25nS2V5UGF0aCgpCit7CisgICAgZGVidWcoInRlc3RMb25nS2V5
UGF0aCgpOiIpOworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlv
bignU3RvcmVXaXRoTG9uZ0tleVBhdGgnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwor
ICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5v
bmNvbXBsZXRlID0gZmluaXNoSlNUZXN0OworCisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9y
ZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdTdG9yZVdpdGhMb25nS2V5UGF0aCcpIik7CisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7Zm9vOiAnYmFyJ30pIik7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInN0b3JlLmFkZCh7Zm9vOiAnYmFyJywgYToge319KSIpOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJzdG9yZS5hZGQoe2ZvbzogJ2JhcicsIGE6IHtiOiB7fX19KSIpOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJzdG9yZS5hZGQoe2ZvbzogJ2JhcicsIGE6IHtiOiB7Yzoge319fX0pIik7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgY3Vyc29yUmVxdWVzdCA9
IGV2YWxBbmRMb2coInN0b3JlLm9wZW5DdXJzb3IoKSIpOworICAgIGN1cnNvclJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIGV2YWxBbmRMb2coImV4cGVjdGVk
ID0gbnVsbCIpOworICAgIGV2YWxBbmRMb2coImNvdW50ID0gMCIpOworICAgIGN1cnNvclJlcXVl
c3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICBjdXJzb3IgPSBjdXJzb3JSZXF1
ZXN0LnJlc3VsdDsKKyAgICAgICAgaWYgKCFjdXJzb3IpIHsKKyAgICAgICAgICAgIHNob3VsZEJl
KCJjb3VudCIsICI0Iik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
aWYgKGV4cGVjdGVkID09PSBudWxsKSB7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJleHBlY3Rl
ZCA9IGN1cnNvci52YWx1ZS5hLmIuYy5pZCArIDEiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuZm9vIiwgIidiYXInIik7CisgICAgICAgICAg
ICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmEuYi5jLmlkIiwgImV4cGVjdGVkIik7CisgICAgICAg
ICAgICBldmFsQW5kTG9nKCJleHBlY3RlZCA9IGN1cnNvci52YWx1ZS5hLmIuYy5pZCArIDEiKTsK
KyAgICAgICAgfQorICAgICAgICBjb3VudCsrOworICAgICAgICBjdXJzb3IuY29udGludWUoKTsK
KyAgICB9OworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3Jl
LWNsZWFyLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVj
dHN0b3JlLWNsZWFyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwMjU2ZjRkN2QzMzBiNzU3ZDVlZTE1MTA4MWQ3
OTM4NmMwOTE2ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3RvcmUtY2xlYXIuanMKQEAgLTAsMCArMSw5OCBAQAoraWYg
KHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVk
LmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIHdlYmtpdElEQk9iamVj
dFN0b3JlLmNsZWFyKCkuIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRv
clByZWZpeGVzKCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdv
YmplY3RzdG9yZS1jbGVhcicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzdGFydFNldFZl
cnNpb247CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIHN0YXJ0U2V0VmVyc2lvbigpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJk
YiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJk
Yi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBk
ZWxldGVFeGlzdGluZzsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKK30KKworZnVuY3Rpb24gZGVsZXRlRXhpc3RpbmcoKQoreworICAgIHNlbGYudHJhbnMg
PSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRC
ZVRydWUoInRyYW5zICE9PSBudWxsIik7CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIp
OworCisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdzdG9yZU5hbWUnLCBudWxsKSIpOworCisgICAgc2VsZi5pbmRleCA9IGV2YWxBbmRMb2coInN0
b3JlLmNyZWF0ZUluZGV4KCdpbmRleE5hbWUnLCAnJykiKTsKKyAgICBzaG91bGRCZVRydWUoInN0
b3JlLmluZGV4TmFtZXMuY29udGFpbnMoJ2luZGV4TmFtZScpIik7CisKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygic3RvcmUuYWRkKCd2YWx1ZScsICdrZXknKSIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gY3JlYXRlU2Vjb25kT2JqZWN0U3RvcmVBbmRBZGRWYWx1ZTsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY3JlYXRl
U2Vjb25kT2JqZWN0U3RvcmVBbmRBZGRWYWx1ZSgpCit7CisgICAgb3RoZXJTdG9yZSA9IGV2YWxB
bmRMb2coIm90aGVyU3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnb3RoZXJTdG9yZU5hbWUn
LCBudWxsKSIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIm90aGVyU3RvcmUuYWRkKCd2
YWx1ZScsICdrZXknKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYXJPYmplY3RTdG9y
ZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKwor
ZnVuY3Rpb24gY2xlYXJPYmplY3RTdG9yZSgpCit7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InN0b3JlLmNsZWFyKCkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFyU3VjY2VzczsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gY2xlYXJTdWNjZXNzKCkKK3sKKyAgICBzaG91bGRCZVVuZGVmaW5lZCgiZXZlbnQudGFy
Z2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLm9wZW5DdXJz
b3IoKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbkN1cnNvclN1Y2Nlc3M7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IG9wZW5DdXJzb3JTdWNjZXNzKCkKK3sKKyAgICBzaG91bGRCZU51bGwoImV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKKworICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5pbmRleCgn
aW5kZXhOYW1lJykiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXgub3BlbktleUN1
cnNvcigpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuS2V5Q3Vyc29yU3VjY2VzczsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gb3BlbktleUN1cnNvclN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJvcGVuS2V5Q3Vyc29y
U3VjY2VzcygpOiIpOworICAgIHNob3VsZEJlTnVsbCgiZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwor
CisgICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJkYi50cmFuc2FjdGlvbihbJ290aGVyU3Rv
cmVOYW1lJ10pIik7CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworICAgIHZhciBvdGhlclN0b3JlID0gZXZhbEFuZExvZygib3RoZXJTdG9yZSA9IHRy
YW5zYWN0aW9uLm9iamVjdFN0b3JlKCdvdGhlclN0b3JlTmFtZScpIik7CisKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygib3RoZXJTdG9yZS5nZXQoJ2tleScpIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBnZXRTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBnZXRTdWNjZXNzKCkKK3sKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAidmFsdWUiKTsKKworICAgIGZpbmlz
aEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0
b3JlLWNvdW50LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29i
amVjdHN0b3JlLWNvdW50LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5ZGFlMTc2NTY0MTY4M2E1MGQ5NmJjYjE1
MTBjMjg1ZjIzOTUyZjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3RvcmUtY291bnQuanMKQEAgLTAsMCArMSwxNDQgQEAK
K2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3No
YXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBJREJPYmplY3RT
dG9yZS5jb3VudCgpLiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQ
cmVmaXhlcygpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbignb2Jq
ZWN0c3RvcmUtY291bnQnKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAg
IGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAg
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IHByZXBhcmVEYXRhYmFzZTsKKyAgICB9OworfQorCitmdW5jdGlv
biBwcmVwYXJlRGF0YWJhc2UoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygicHJlcGFy
aW5nIGRhdGFiYXNlIik7CisgICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsK
KworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBzdG9yZSA9IGV2YWxBbmRM
b2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7CisK
KyAgICBkZWJ1ZygiYWRkaW5nIDAgLi4uIDk5Iik7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAx
MDA7ICsraSkgeworICAgICAgICByZXF1ZXN0ID0gc3RvcmUuYWRkKGksIGkpOworICAgICAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB9CisgICAgdHJh
bnMub25jb21wbGV0ZSA9IHZlcmlmeUNvdW50OworfQorCitmdW5jdGlvbiB2ZXJpZnlDb3VudCgp
Cit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ2ZXJpZnlpbmcgY291bnQgd2l0aG91dCBy
YW5nZSIpOworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbign
c3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKSIpOworICAgIHNob3VsZEJlVHJ1
ZSgidHJhbnMgIT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRD
YWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gdmVyaWZ5Q291bnRXaXRoUmFuZ2U7CisK
KyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3Jl
TmFtZScpIik7CisgICAgc2hvdWxkQmVUcnVlKCJzdG9yZSAhPSBudWxsIik7CisKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHN0b3JlLmNvdW50KCkiKTsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2YgcmVxdWVzdC5y
ZXN1bHQgPT0gJ251bWJlciciKTsKKyAgICAgICAgIHNob3VsZEJlKCJyZXF1ZXN0LnJlc3VsdCIs
ICIxMDAiKTsKKyAgICAgICAgIC8vIGxldCB0aGUgdHJhbnNhY3Rpb24gY29tcGxldGUKKyAgICB9
OworfQorCitmdW5jdGlvbiB2ZXJpZnlDb3VudFdpdGhSYW5nZSgpCit7CisgICAgZGVidWcoIiIp
OworICAgIGRlYnVnKCJ2ZXJpZnlpbmcgY291bnQgd2l0aCByYW5nZSIpOworICAgIHRyYW5zID0g
ZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNh
Y3Rpb24uUkVBRF9PTkxZKSIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT0gbnVsbCIpOwor
ICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5v
bmNvbXBsZXRlID0gdmVyaWZ5Q291bnRXaXRoS2V5OworCisgICAgc3RvcmUgPSBldmFsQW5kTG9n
KCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworICAgIHNob3VsZEJl
VHJ1ZSgic3RvcmUgIT0gbnVsbCIpOworCisgICAgdmFyIHRlc3RzID0gWworICAgICAgICB7IGxv
d2VyOiAwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogOTksIHVwcGVyT3BlbjogZmFsc2UsIGV4
cGVjdGVkOiAxMDAgfSwKKyAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiB0cnVlLCB1cHBl
cjogOTksIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiA5OSB9LAorICAgICAgICB7IGxvd2Vy
OiAwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogOTksIHVwcGVyT3BlbjogdHJ1ZSwgZXhwZWN0
ZWQ6IDk5IH0sCisgICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogdHJ1ZSwgdXBwZXI6IDk5
LCB1cHBlck9wZW46IHRydWUsIGV4cGVjdGVkOiA5OCB9LAorICAgICAgICB7IGxvd2VyOiAwLCBs
b3dlck9wZW46IGZhbHNlLCB1cHBlcjogMTAwLCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDog
MTAwIH0sCisgICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiAxMDAs
IHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiAxMDAgfSwKKyAgICAgICAgeyBsb3dlcjogMTAs
IGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiAxMDAsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVk
OiA5MCB9LAorICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogMCwg
dXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDEgfSwKKyAgICAgICAgeyBsb3dlcjogNTAwLCBs
b3dlck9wZW46IGZhbHNlLCB1cHBlcjogNTAwLCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDog
MCB9CisgICAgXTsKKworICAgIGZ1bmN0aW9uIG5leHRUZXN0KCkgeworICAgICAgICBkZWJ1Zygi
Iik7CisgICAgICAgIGV2YWxBbmRMb2coInRlc3QgPSAiICsgSlNPTi5zdHJpbmdpZnkodGVzdHMu
c2hpZnQoKSkpOworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHN0b3Jl
LmNvdW50KElEQktleVJhbmdlLmJvdW5kKHRlc3QubG93ZXIsIHRlc3QudXBwZXIsIHRlc3QubG93
ZXJPcGVuLCB0ZXN0LnVwcGVyT3BlbikpIik7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgidHlwZW9mIHJlcXVlc3QucmVzdWx0
ID09ICdudW1iZXInIik7CisgICAgICAgICAgICAgc2hvdWxkQmUoInJlcXVlc3QucmVzdWx0Iiwg
U3RyaW5nKHRlc3QuZXhwZWN0ZWQpKTsKKworICAgICAgICAgICAgIGlmICh0ZXN0cy5sZW5ndGgp
IHsKKyAgICAgICAgICAgICAgICAgbmV4dFRlc3QoKTsKKyAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgLy8gb3RoZXJ3aXNlIGxldCB0aGUgdHJhbnNhY3Rpb24gY29tcGxldGUKKyAgICAgICAg
fTsKKyAgICB9CisKKyAgICBuZXh0VGVzdCgpOworfQorCitmdW5jdGlvbiB2ZXJpZnlDb3VudFdp
dGhLZXkoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidmVyaWZ5aW5nIGNvdW50IHdp
dGgga2V5Iik7CisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9u
KCdzdG9yZU5hbWUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7CisgICAgc2hvdWxkQmVU
cnVlKCJ0cmFucyAhPSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9y
dENhbGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSBmaW5pc2hKU1Rlc3Q7CisKKyAgICBz
dG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScp
Iik7CisgICAgc2hvdWxkQmVUcnVlKCJzdG9yZSAhPSBudWxsIik7CisKKyAgICBldmFsQW5kRXhw
ZWN0RXhjZXB0aW9uKCJzdG9yZS5jb3VudChOYU4pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRB
VEFfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuY291bnQoe30pIiwg
IklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2Vw
dGlvbigic3RvcmUuY291bnQoL3JlZ2V4LykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9F
UlIiKTsKKworICAgIHZhciB0ZXN0cyA9IFsKKyAgICAgICAgeyBrZXk6IDAsIGV4cGVjdGVkOiAx
IH0sCisgICAgICAgIHsga2V5OiAxMDAsIGV4cGVjdGVkOiAwIH0sCisgICAgICAgIHsga2V5OiBu
dWxsLCBleHBlY3RlZDogMTAwIH0KKyAgICBdOworCisgICAgZnVuY3Rpb24gbmV4dFRlc3QoKSB7
CisgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgZXZhbEFuZExvZygidGVzdCA9ICIgKyBKU09O
LnN0cmluZ2lmeSh0ZXN0cy5zaGlmdCgpKSk7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gc3RvcmUuY291bnQodGVzdC5rZXkpIik7CisgICAgICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2YgcmVxdWVz
dC5yZXN1bHQgPT0gJ251bWJlciciKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJyZXF1ZXN0LnJl
c3VsdCIsIFN0cmluZyh0ZXN0LmV4cGVjdGVkKSk7CisgICAgICAgICAgICAgaWYgKHRlc3RzLmxl
bmd0aCkgeworICAgICAgICAgICAgICAgICBuZXh0VGVzdCgpOworICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAvLyBvdGhlcndpc2UgbGV0IHRoZSB0cmFuc2FjdGlvbiBjb21wbGV0ZQorICAg
ICAgICB9OworICAgIH0KKworICAgIG5leHRUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3RvcmUtY3Vyc29yLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3JlLWN1cnNvci5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
MmMwMmFjNjFhNjM0ZmEzY2NmZTRhZDI0ZTA0MWE5ODc0NmFiMjhhCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3JlLWN1
cnNvci5qcwpAQCAtMCwwICsxLDIyNiBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAg
IGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Jyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJU
ZXN0IEluZGV4ZWREQidzIG9iamVjdFN0b3JlLm9wZW5DdXJzb3IgKyB0aGUgY3Vyc29yIGl0IHBy
b2R1Y2VzIGluIGRlcHRoLiIpOworCisvLyBJbiBvcmRlciBvZiBob3cgaXQgc2hvdWxkIGJlIHNv
cnRlZCBieSBJbmRleGVkREIuCitzZWxmLnRlc3REYXRhID0gWworICAgIDIuNzE4MjgxODI4NDU5
LAorICAgIDMsCisgICAgMy4xNDE1OTI2NSwKKyAgICAxMCwKKyAgICAvLyBGSVhNRTogRGF0ZXMu
CisgICAgIkEgYmlnZ2VyIHN0cmluZyIsCisgICAgIlRoZSBiaWdnZXN0IiwKKyAgICAiYSBsb3cg
c3RyaW5nIgorXTsKKworZnVuY3Rpb24gb3BlbkRhdGFiYXNlKCkKK3sKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ29iamVjdHN0b3JlLWN1cnNvcicpIik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uKCkKK3sKKyAg
ICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZUV4aXN0
aW5nKCkKK3sKKyAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJn
ZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRy
YW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKworICAgIGRlbGV0ZUFsbE9i
amVjdFN0b3JlcyhkYik7CisKKyAgICBzZWxmLm9iamVjdFN0b3JlID0gZXZhbEFuZExvZygiZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ3NvbWVPYmplY3RTdG9yZScpIik7CisgICAgc2VsZi5uZXh0VG9B
ZGQgPSAwOworICAgIGFkZERhdGEoKTsKK30KKworZnVuY3Rpb24gYWRkRGF0YSgpCit7CisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnJywgdGVzdERhdGFbbmV4dFRv
QWRkXSkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9ICsrc2VsZi5uZXh0VG9BZGQgPCB0ZXN0
RGF0YS5sZW5ndGggPyBhZGREYXRhIDogc2NoZWR1bGVUZXN0czsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2NoZWR1bGVUZXN0
cygpCit7CisgICAgZGVidWcoIlNjaGVkdWxpbmcgdGVzdHMuLi4iKTsKKyAgICBzZWxmLnNjaGVk
dWxlZFRlc3RzID0gW107CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0RGF0YS5sZW5ndGg7
ICsraSkgeworICAgICAgICAvKiBsZWZ0IGJvdW5kLCBpcyBvcGVuLCByaWdodCBib3VuZCwgaXMg
b3BlbiwgYXNjZW5kaW5nICovCisgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIHRy
dWUsIG51bGwsIG51bGwsIHRydWVdKTsKKyAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChb
aSwgZmFsc2UsIG51bGwsIG51bGwsIHRydWVdKTsKKyAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5z
aGlmdChbbnVsbCwgbnVsbCwgaSwgdHJ1ZSwgdHJ1ZV0pOworICAgICAgICBzY2hlZHVsZWRUZXN0
cy51bnNoaWZ0KFtudWxsLCBudWxsLCBpLCBmYWxzZSwgdHJ1ZV0pOworICAgICAgICBzY2hlZHVs
ZWRUZXN0cy51bnNoaWZ0KFtpLCB0cnVlLCBudWxsLCBudWxsLCBmYWxzZV0pOworICAgICAgICBz
Y2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCBmYWxzZSwgbnVsbCwgbnVsbCwgZmFsc2VdKTsKKyAg
ICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbbnVsbCwgbnVsbCwgaSwgdHJ1ZSwgZmFsc2Vd
KTsKKyAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbbnVsbCwgbnVsbCwgaSwgZmFsc2Us
IGZhbHNlXSk7CisgICAgICAgIGZvciAodmFyIGogPSA2OyBqIDwgdGVzdERhdGEubGVuZ3RoOyAr
K2opIHsKKyAgICAgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIHRydWUsIGosIHRy
dWUsIHRydWVdKTsKKyAgICAgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIHRydWUs
IGosIGZhbHNlLCB0cnVlXSk7CisgICAgICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtp
LCBmYWxzZSwgaiwgdHJ1ZSwgdHJ1ZV0pOworICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5z
aGlmdChbaSwgZmFsc2UsIGosIGZhbHNlLCB0cnVlXSk7CisgICAgICAgICAgICBzY2hlZHVsZWRU
ZXN0cy51bnNoaWZ0KFtpLCB0cnVlLCBqLCB0cnVlLCBmYWxzZV0pOworICAgICAgICAgICAgc2No
ZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwgaiwgZmFsc2UsIGZhbHNlXSk7CisgICAgICAg
ICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCBmYWxzZSwgaiwgdHJ1ZSwgZmFsc2VdKTsK
KyAgICAgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBqLCBmYWxzZSwg
ZmFsc2VdKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGRlYnVnKCJSdW5uaW5nIHRlc3RzLi4u
Iik7CisgICAgcnVuTmV4dFRlc3QoKTsKK30KKworZnVuY3Rpb24gcnVuTmV4dFRlc3QoKQorewor
ICAgIGlmICghc2NoZWR1bGVkVGVzdHMubGVuZ3RoKSB7CisgICAgICAgIHRlc3ROdWxsS2V5UmFu
Z2UoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZhciB0ZXN0ID0gc2NoZWR1bGVk
VGVzdHMucG9wKCk7CisgICAgc2VsZi5sb3dlciA9IHRlc3RbMF07CisgICAgc2VsZi5sb3dlcklz
T3BlbiA9IHRlc3RbMV07CisgICAgc2VsZi51cHBlciA9IHRlc3RbMl07CisgICAgc2VsZi51cHBl
cklzT3BlbiA9IHRlc3RbM107CisgICAgc2VsZi5hc2NlbmRpbmcgPSB0ZXN0WzRdOworCisgICAg
c3RyID0gIk5leHQgdGVzdDogIjsKKyAgICBpZiAobG93ZXIgIT09IG51bGwpIHsKKyAgICAgICAg
c3RyICs9ICJsb3dlciAiOworICAgICAgICBpZiAobG93ZXJJc09wZW4pCisgICAgICAgICAgICBz
dHIgKz0gIm9wZW4gIjsKKyAgICAgICAgc3RyICs9ICJib3VuZCBpcyAiICsgbG93ZXIgKyAiOyAi
OworICAgIH0KKyAgICBpZiAodXBwZXIgIT09IG51bGwpIHsKKyAgICAgICAgc3RyICs9ICJ1cHBl
ciAiOworICAgICAgICBpZiAodXBwZXJJc09wZW4pCisgICAgICAgICAgICBzdHIgKz0gIm9wZW4g
IjsKKyAgICAgICAgc3RyICs9ICJib3VuZCBpcyAiICsgdXBwZXIgKyAiOyAiOworICAgIH0KKyAg
ICBpZiAoYXNjZW5kaW5nKQorICAgICAgICBzdHIgKz0gInNvcnRlZCBhc2NlbmRpbmcuIjsKKyAg
ICBlbHNlCisgICAgICAgIHN0ciArPSAic29ydGVkIGRlc2NlbmRpbmcuIjsKKworICAgIGRlYnVn
KCIiKTsKKyAgICBkZWJ1ZyhzdHIpOworCisgICAgaWYgKGFzY2VuZGluZykgeworICAgICAgICBp
ZiAobG93ZXIgIT09IG51bGwpIHsKKyAgICAgICAgICAgIGlmICghbG93ZXJJc09wZW4pCisgICAg
ICAgICAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gbG93ZXI7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gbG93ZXIrMTsKKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSAwOworICAgIH0gZWxzZSB7
CisgICAgICAgIGlmICh1cHBlciAhPT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKCF1cHBlcklz
T3BlbikKKyAgICAgICAgICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSB1cHBlcjsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSB1cHBlci0x
OworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IHRlc3RE
YXRhLmxlbmd0aC0xOworICAgIH0KKyAgICB0ZXN0V2l0aGluQm91bmRzKCk7CisKKyAgICBpZiAo
dGVzdERhdGFbbG93ZXJdID09PSB0ZXN0RGF0YVt1cHBlcl0gJiYgKGxvd2VySXNPcGVuIHx8IHVw
cGVySXNPcGVuKSkgeworICAgICAgICBkZWJ1ZygiU2tpcHBpbmcgaWxsZWdhbCBrZXkgcmFuZ2Uu
Iik7CisgICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICB2YXIga2V5UmFuZ2U7CisgICAgaWYgKGxvd2VyICE9PSBudWxsICYmIHVwcGVyICE9PSBudWxs
KQorICAgICAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmJvdW5kKHRlc3REYXRhW2xvd2VyXSwg
dGVzdERhdGFbdXBwZXJdLCBsb3dlcklzT3BlbiwgdXBwZXJJc09wZW4pOworICAgIGVsc2UgaWYg
KGxvd2VyICE9PSBudWxsKQorICAgICAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91
bmQodGVzdERhdGFbbG93ZXJdLCBsb3dlcklzT3Blbik7CisgICAgZWxzZQorICAgICAgICBrZXlS
YW5nZSA9IElEQktleVJhbmdlLnVwcGVyQm91bmQodGVzdERhdGFbdXBwZXJdLCB1cHBlcklzT3Bl
bik7CisKKyAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3Ioa2V5UmFuZ2Us
IGFzY2VuZGluZyA/IElEQkN1cnNvci5ORVhUIDogSURCQ3Vyc29yLlBSRVYpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gY3Vyc29ySXRlcmF0aW9uOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiB0ZXN0V2l0aGluQm91bmRzKCkK
K3sKKyAgICBpZiAoZXhwZWN0ZWRJbmRleCA8IDAgfHwgdGVzdERhdGEubGVuZ3RoIDw9IGV4cGVj
dGVkSW5kZXgpCisgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IG51bGw7CisgICAgaWYgKGxv
d2VyICE9PSBudWxsICYmIGV4cGVjdGVkSW5kZXggPCBsb3dlcikKKyAgICAgICAgc2VsZi5leHBl
Y3RlZEluZGV4ID0gbnVsbDsKKyAgICBpZiAodXBwZXIgIT09IG51bGwgJiYgdXBwZXIgPCBleHBl
Y3RlZEluZGV4KQorICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSBudWxsOworICAgIGlmIChs
b3dlciAhPT0gbnVsbCAmJiBsb3dlcklzT3BlbiAmJiBleHBlY3RlZEluZGV4IDw9IGxvd2VyKQor
ICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSBudWxsOworICAgIGlmICh1cHBlciAhPT0gbnVs
bCAmJiB1cHBlcklzT3BlbiAmJiB1cHBlciA8PSBleHBlY3RlZEluZGV4KQorICAgICAgICBzZWxm
LmV4cGVjdGVkSW5kZXggPSBudWxsOworfQorCitmdW5jdGlvbiBjdXJzb3JJdGVyYXRpb24oKQor
eworICAgIGlmIChleHBlY3RlZEluZGV4ID09PSBudWxsKSB7CisgICAgICAgIHNob3VsZEJlTnVs
bCgiZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgICAgICBydW5OZXh0VGVzdCgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsKSB7
CisgICAgICAgIHRlc3RGYWlsZWQoImV2ZW50LnRhcmdldC5yZXN1bHQgc2hvdWxkIG5vdCBiZSBu
dWxsLiIpOworICAgICAgICBydW5OZXh0VGVzdCgpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgInRlc3REYXRhWyIgKyBl
eHBlY3RlZEluZGV4ICsgIl0iKTsKKyAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSBhc2NlbmRpbmcg
PyBleHBlY3RlZEluZGV4KzEgOiBleHBlY3RlZEluZGV4LTE7CisgICAgdGVzdFdpdGhpbkJvdW5k
cygpOworCisgICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpOworfQorCitzZWxmLm51
bGxLZXlSYW5nZVN0ZXAgPSAwOworZnVuY3Rpb24gdGVzdE51bGxLZXlSYW5nZSgpCit7CisgICAg
c2VsZi5sb3dlciA9IDA7CisgICAgc2VsZi5sb3dlcklzT3BlbiA9IGZhbHNlOworICAgIHNlbGYu
dXBwZXIgPSB0ZXN0RGF0YS5sZW5ndGgtMTsKKyAgICBzZWxmLnVwcGVySXNPcGVuID0gZmFsc2U7
CisKKyAgICBzdHIgPSAiTmV4dCB0ZXN0OiBudWxsIGtleSBwYXRoICI7CisgICAgaWYgKHNlbGYu
bnVsbEtleVJhbmdlU3RlcCA9PSAwKSB7CisgICAgICAgIHN0ciArPSAic29ydGVkIGFzY2VuZGlu
Zy4iOworICAgICAgICBzZWxmLmFzY2VuZGluZyA9IHRydWU7CisgICAgICAgIHNlbGYuZXhwZWN0
ZWRJbmRleCA9IGxvd2VyOworICAgICAgICBzZWxmLm51bGxLZXlSYW5nZVN0ZXAgPSAxOworICAg
IH0gZWxzZSBpZiAoc2VsZi5udWxsS2V5UmFuZ2VTdGVwID09IDEpIHsKKyAgICAgICAgc3RyICs9
ICJzb3J0ZWQgZGVzY2VuZGluZy4iOworICAgICAgICBzZWxmLmFzY2VuZGluZyA9IGZhbHNlOwor
ICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSB1cHBlcjsKKyAgICAgICAgc2VsZi5udWxsS2V5
UmFuZ2VTdGVwID0gMjsKKyAgICB9IGVsc2UgeworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZyhzdHIpOwor
CisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKG51bGwsIGFzY2VuZGlu
ZyA/IElEQkN1cnNvci5ORVhUIDogSURCQ3Vyc29yLlBSRVYpOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gY3Vyc29ySXRlcmF0aW9uOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCityZW1vdmVWZW5kb3JQcmVmaXhlcygpOworb3BlbkRhdGFiYXNl
KCk7IC8vIFRoZSBmaXJzdCBzdGVwLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3JlLXJlbW92ZW9iamVjdHN0b3JlLmpzIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3JlLXJlbW92ZW9i
amVjdHN0b3JlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZkYmJiMTYxYjRmMTc4NjhlM2RlMGJiMTViZTRlNjgz
NmUwZGIyYTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvb2JqZWN0c3RvcmUtcmVtb3Zlb2JqZWN0c3RvcmUuanMKQEAgLTAsMCArMSw5
NyBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0
cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIHdlYmtp
dElEQk9iamVjdFN0b3JlLmRlbGV0ZU9iamVjdFN0b3JlKCkuIik7CisKK2Z1bmN0aW9uIHRlc3Qo
KQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImluZGV4ZWREQi5vcGVuKCdvYmplY3RzdG9yZS1yZW1vdmVvYmplY3RzdG9yZScpIik7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzdGFydFNldFZlcnNpb247CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0U2V0VmVy
c2lvbigpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lv
bicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVs
ZXRlRXhpc3RpbmcoKQoreworICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7
CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgc3RvcmUgPSBldmFsQW5k
TG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOwor
CisgICAgc2VsZi5pbmRleCA9IGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleE5h
bWUnLCAnJykiKTsKKyAgICBzaG91bGRCZVRydWUoInN0b3JlLmluZGV4TmFtZXMuY29udGFpbnMo
J2luZGV4TmFtZScpIik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKCd2
YWx1ZScsICdrZXknKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0VmFsdWU7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IGdldFZhbHVlKCkKK3sKKyAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coImRiLnRyYW5zYWN0
aW9uKFsnc3RvcmVOYW1lJ10pIik7CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworICAgIHZhciBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJh
bnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygic3RvcmUuZ2V0KCdrZXknKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRk
SW5kZXg7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIGFkZEluZGV4KCkKK3sKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2
ZW50LnRhcmdldC5yZXN1bHQiLCAidmFsdWUiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBkZWxldGVPYmplY3RTdG9yZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVsZXRlT2JqZWN0U3RvcmUoKQoreworICAgIHNl
bGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAg
ICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVu
ZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworCisgICAgZXZhbEFuZExvZygiZGIuZGVsZXRlT2JqZWN0
U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgY3JlYXRlT2JqZWN0U3RvcmVBZ2FpbigpOworfQor
CitmdW5jdGlvbiBjcmVhdGVPYmplY3RTdG9yZUFnYWluKCkKK3sKKyAgICBldmFsQW5kTG9nKCJk
Yi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKKyAgICBnZXRWYWx1ZUFn
YWluKCk7Cit9CisKK2Z1bmN0aW9uIGdldFZhbHVlQWdhaW4oKQoreworICAgIHRyYW5zYWN0aW9u
ID0gZXZhbEFuZExvZygiZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSkiKTsKKyAgICB0cmFu
c2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgdmFyIHN0b3Jl
ID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1l
JykiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5nZXQoJ2tleScpIik7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB2ZXJpZnlOb3RGb3VuZDsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gdmVyaWZ5Tm90Rm91
bmQoKQoreworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgInVuZGVmaW5lZCIp
OworICAgIHNob3VsZEJlRmFsc2UoImV2ZW50LnRhcmdldC5zb3VyY2UuaW5kZXhOYW1lcy5jb250
YWlucygnaW5kZXhOYW1lJykiKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29kZC1zdHJpbmdzLmpzIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29kZC1zdHJpbmdzLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzMWM1
MGVmZmJiZmFlMmI2NDdjNmU0MTdlMjM5NWFkZDI0OWUyNDgKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2RkLXN0cmluZ3MuanMKQEAg
LTAsMCArMSwxMDEgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3Jp
cHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGlt
cG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVk
REIgb2RkIHZhbHVlIGRhdGF0eXBlcyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1v
dmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgdGVzdERhdGEgPSBbeyBkZXNjcmlwdGlvbjogJ251
bGwnLCAgICAgICAgICAgICAgIG5hbWU6ICdcdTAwMDAnIH0sCisgICAgICAgICAgICAgICAgeyBk
ZXNjcmlwdGlvbjogJ2ZhaWh1JywgICAgICAgICAgICAgIG5hbWU6ICdcdWQ4MDBcdWRmNDYnIH0s
CisgICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ3VucGFpcmVkIHN1cnJvZ2F0ZScsIG5h
bWU6ICdcdWQ4MDAnIH0sCisgICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ2ZmZmUnLCAg
ICAgICAgICAgICAgIG5hbWU6ICdcdWZmZmUnIH0sCisgICAgICAgICAgICAgICAgeyBkZXNjcmlw
dGlvbjogJ2ZmZmYnLCAgICAgICAgICAgICAgIG5hbWU6ICdcdWZmZmYnIH0sCisgICAgICAgICAg
ICAgICAgeyBkZXNjcmlwdGlvbjogJ2xpbmUgc2VwYXJhdG9yJywgICAgIG5hbWU6ICdcdTIwMjgn
IH0KKyAgICBdOworICAgIG5leHRUb09wZW4gPSAwOworICAgIG9wZW5OZXh0RGF0YWJhc2UoKTsK
K30KKworZnVuY3Rpb24gb3Blbk5leHREYXRhYmFzZSgpCit7CisgICAgZGVidWcoIm9wZW5pbmcg
YSBkYXRhYmFzZSBuYW1lZCAiICsgdGVzdERhdGFbbmV4dFRvT3Blbl0uZGVzY3JpcHRpb24pOwor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbih0ZXN0RGF0YVtuZXh0VG9P
cGVuXS5uYW1lLCB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5kZXNjcmlwdGlvbikiKTsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IG9wZW5TdWNjZXNzOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAg
ZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gYWRkQUtleTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gYWRkQUtleSgpCit7CisgICAgZGVsZXRlQWxs
T2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0
U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSh0ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1lKTsi
KTsKKyAgICBrZXkgPSBldmFsQW5kTG9nKCJrZXkgPSB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1l
Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQo
a2V5LCBrZXkpOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xvc2VEYXRhYmFzZTsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rp
b24gY2xvc2VEYXRhYmFzZSgpCit7CisgICAgZXZhbEFuZExvZygiZGIuY2xvc2UoKSIpOworICAg
IGRlYnVnKCIiKTsKKyAgICBpZiAoKytuZXh0VG9PcGVuIDwgdGVzdERhdGEubGVuZ3RoKSB7Cisg
ICAgICAgIG9wZW5OZXh0RGF0YWJhc2UoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBuZXh0VG9P
cGVuID0gMDsKKyAgICAgICAgdmVyaWZ5TmV4dERhdGFiYXNlKCk7CisgICAgfQorfQorCitmdW5j
dGlvbiB2ZXJpZnlOZXh0RGF0YWJhc2UoKQoreworICAgIGRlYnVnKCJyZW9wZW5pbmcgYSBkYXRh
YmFzZSBuYW1lZCAiICsgdGVzdERhdGFbbmV4dFRvT3Blbl0uZGVzY3JpcHRpb24pOworICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbih0ZXN0RGF0YVtuZXh0VG9PcGVuXS5u
YW1lLCB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5kZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IG9wZW5TdWNjZXNzMjsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MyKCkKK3sKKyAgICBkYiA9
IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBnZXRBS2V5OworfQorCitmdW5jdGlvbiBnZXRBS2V5KCkKK3sKKyAgICB0cmFucyA9IGV2YWxB
bmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIG9iamVjdFN0b3JlID0g
ZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSh0ZXN0RGF0YVtuZXh0
VG9PcGVuXS5uYW1lKTsiKTsKKyAgICBrZXkgPSBldmFsQW5kTG9nKCJrZXkgPSB0ZXN0RGF0YVtu
ZXh0VG9PcGVuXS5uYW1lIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBv
YmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuQ3Vyc29yU3Vj
Y2VzczsKK30KKworZnVuY3Rpb24gb3BlbkN1cnNvclN1Y2Nlc3MoKQoreworICAgIGN1cnNvciA9
IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgc2hvdWxk
QmUoImN1cnNvci5rZXkiLCAidGVzdERhdGFbbmV4dFRvT3Blbl0ubmFtZSIpOworICAgIHNob3Vs
ZEJlKCJjdXJzb3IudmFsdWUiLCAidGVzdERhdGFbbmV4dFRvT3Blbl0ubmFtZSIpOworICAgIGlm
ICgrK25leHRUb09wZW4gPCB0ZXN0RGF0YS5sZW5ndGgpIHsKKyAgICAgICAgZGVidWcoIiIpOwor
ICAgICAgICB2ZXJpZnlOZXh0RGF0YWJhc2UoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKKyAgICB9Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
b3Blbi1jbG9zZS12ZXJzaW9uLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL29wZW4tY2xvc2UtdmVyc2lvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMjNlMWQ4YjkyOTUyZjgy
Zjg1ZDU5ZGEyYTMyNWUwMWExMTEzMzNiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4tY2xvc2UtdmVyc2lvbi5qcwpAQCAtMCww
ICsxLDI4MyBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMo
Jy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0
U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IGludGVybGVhdmVk
IG9wZW4vY2xvc2Uvc2V0VmVyc2lvbiBjYWxscyBpbiB2YXJpb3VzIHBlcm11dGF0aW9ucyIpOwor
CitmdW5jdGlvbiBDb25uZWN0aW9uKGlkKSB7CisgICAgaWQgPSBTdHJpbmcoaWQpOworICAgIHZh
ciB0aGF0ID0gdGhpczsKKyAgICB0aGlzLm9wZW4gPSBmdW5jdGlvbihvcHRzKSB7CisgICAgICAg
IHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5vcGVuJyIpKTsKKyAgICAg
ICAgdmFyIHJlcSA9IGluZGV4ZWREQi5vcGVuKHNlbGYuZGJuYW1lKTsKKyAgICAgICAgcmVxLm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxLm9uc3VjY2VzcyA9
IGZ1bmN0aW9uIChlKSB7CisgICAgICAgICAgICB0aGF0LmhhbmRsZSA9IGUudGFyZ2V0LnJlc3Vs
dDsKKyAgICAgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5v
cGVuLm9uc3VjY2VzcyciKSk7CisgICAgICAgICAgICB0aGF0LmhhbmRsZS5vbnZlcnNpb25jaGFu
Z2UgPSBmdW5jdGlvbihlKSB7CisgICAgICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxB
bmRMb2coIiciICsgaWQgKyAiLm9udmVyc2lvbmNoYW5nZSciKSk7CisgICAgICAgICAgICAgICAg
aWYgKG9wdHMgJiYgb3B0cy5vbnZlcnNpb24pIHsgb3B0cy5vbnZlcnNpb24uY2FsbCh0aGF0KTsg
fQorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGlmIChvcHRzICYmIG9wdHMub25zdWNjZXNz
KSB7IG9wdHMub25zdWNjZXNzLmNhbGwodGhhdCk7IH0KKyAgICAgICAgfTsKKyAgICB9OworCisg
ICAgdGhpcy5jbG9zZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZh
bEFuZExvZygiJyIgKyBpZCArICIuY2xvc2UnIikpOworICAgICAgICB0aGlzLmhhbmRsZS5jbG9z
ZSgpOworICAgIH07CisKKyAgICB0aGlzLnNldFZlcnNpb24gPSBmdW5jdGlvbihvcHRzKSB7Cisg
ICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5zZXRWZXJzaW9u
JyIpKTsKKyAgICAgICAgdmFyIHJlcSA9IHRoaXMuaGFuZGxlLnNldFZlcnNpb24oU3RyaW5nKHNl
bGYudmVyKyspKTsKKyAgICAgICAgcmVxLm9uYWJvcnQgPSBmdW5jdGlvbiAoZSkgeworICAgICAg
ICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLnNldFZlcnNpb24u
b25hYm9ydCciKSk7CisgICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9uYWJvcnQpIHsgb3B0
cy5vbmFib3J0LmNhbGwodGhhdCk7IH0KKyAgICAgICAgfTsKKyAgICAgICAgcmVxLm9uYmxvY2tl
ZCA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExv
ZygiJyIgKyBpZCArICIuc2V0VmVyc2lvbi5vbmJsb2NrZWQnIikpOworICAgICAgICAgICAgaWYg
KG9wdHMgJiYgb3B0cy5vbmJsb2NrZWQpIHsgb3B0cy5vbmJsb2NrZWQuY2FsbCh0aGF0KTsgfQor
ICAgICAgICB9OworICAgICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKKyAgICAg
ICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5zZXRWZXJzaW9u
Lm9uc3VjY2VzcyciKSk7CisgICAgICAgICAgICBpZiAodGhhdC5oYW5kbGUub2JqZWN0U3RvcmVO
YW1lcy5jb250YWlucygidGVzdC1zdG9yZSIgKyBzZWxmLnZlcikpIHsKKyAgICAgICAgICAgICAg
ICB0aGF0LmhhbmRsZS5kZWxldGVPYmplY3RTdG9yZSgidGVzdC1zdG9yZSIgKyBzZWxmLnZlcik7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2YXIgc3RvcmUgPSB0aGF0LmhhbmRsZS5jcmVh
dGVPYmplY3RTdG9yZSgidGVzdC1zdG9yZSIgKyBzZWxmLnZlcik7CisgICAgICAgICAgICB2YXIg
Y291bnQgPSAwOworICAgICAgICAgICAgZG9fYXN5bmNfcHV0cygpOyAvLyBLZWVwIHRoaXMgdHJh
bnNhY3Rpb24gcnVubmluZyBmb3IgYSB3aGlsZQorICAgICAgICAgICAgZnVuY3Rpb24gZG9fYXN5
bmNfcHV0cygpIHsKKyAgICAgICAgICAgICAgICB2YXIgcmVxID0gc3RvcmUucHV0KGNvdW50LCBj
b3VudCk7CisgICAgICAgICAgICAgICAgcmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKKyAgICAgICAgICAgICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCsrY291bnQgPCAxMCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgZG9fYXN5bmNfcHV0cygpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQg
KyAiLnNldFZlcnNpb24udHJhbnNhY3Rpb24tY29tcGxldGUnIikpOworICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5vbnN1Y2Nlc3MpIHsgb3B0cy5vbnN1Y2Nlc3MuY2Fs
bCh0aGF0KTsgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgcmVxLm9uZXJyb3IgPSBmdW5jdGlvbiAo
ZSkgeworICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAi
LnNldFZlcnNpb24ub25lcnJvciciKSk7CisgICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9u
ZXJyb3IpIHsgb3B0cy5vbmVycm9yLmNhbGwodGhhdCk7IH0KKyAgICAgICAgfTsKKyAgICB9Owor
fQorCisvLyBydW4gYSBzZXJpZXMgb2Ygc3RlcHMgdGhhdCB0YWtlIGEgY29udGludWF0aW9uIGZ1
bmN0aW9uCitmdW5jdGlvbiBydW5TdGVwcyhjb21tYW5kcykgeworICAgIGlmIChjb21tYW5kcy5s
ZW5ndGgpIHsKKyAgICAgICAgdmFyIGNvbW1hbmQgPSBjb21tYW5kcy5zaGlmdCgpOworICAgICAg
ICBjb21tYW5kKGZ1bmN0aW9uKCkgeyBydW5TdGVwcyhjb21tYW5kcyk7IH0pOworICAgIH0KK30K
KworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAgIHRl
c3QxKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QxKCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1
ZygiVEVTVDogc2V0VmVyc2lvbiBibG9ja2VkIG9uIG9wZW4gaGFuZGxlcyIpOworICAgIGV2YWxB
bmRMb2coInNlbGYuZGJuYW1lID0gJ3Rlc3QxJzsgc2VsZi52ZXIgPSAxOyBzZWxmLnN0ZXBzID0g
W10iKTsKKyAgICB2YXIgaDEgPSBuZXcgQ29ubmVjdGlvbigiaDEiKTsKKyAgICB2YXIgaDIgPSBu
ZXcgQ29ubmVjdGlvbigiaDIiKTsKKyAgICBydW5TdGVwcyhbZnVuY3Rpb24oZG9OZXh0KSB7IGgx
Lm9wZW4oe29uc3VjY2VzczogZG9OZXh0fSk7IH0sCisgICAgICAgICBmdW5jdGlvbihkb05leHQp
IHsgaDIub3Blbih7b25zdWNjZXNzOiBkb05leHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9udmVyc2lvbjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZWJ1ZygiICAgIGgyIGNsb3NpbmcsIGJ1dCBub3QgaW1tZWRpYXRlbHkiKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IGgyLmNsb3NlKCk7IH0sIDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
fSk7IH0sCisgICAgICAgICBmdW5jdGlvbihkb05leHQpIHsgaDEuc2V0VmVyc2lvbih7b25zdWNj
ZXNzOiBmaW5pc2hUZXN0fSk7IH0sCisgICAgICAgICBdKTsKKyAgICBmdW5jdGlvbiBmaW5pc2hU
ZXN0KCkgeworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNlbGYuc3RlcHMudG9TdHJp
bmcoKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImgxLm9wZW4iLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5vcGVuLm9uc3VjY2VzcyIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImgyLm9wZW4iLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJoMi5vcGVuLm9uc3VjY2VzcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImgxLnNldFZlcnNpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5v
bnZlcnNpb25jaGFuZ2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRW
ZXJzaW9uLm9uYmxvY2tlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLmNs
b3NlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbi5vbnN1
Y2Nlc3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLnRy
YW5zYWN0aW9uLWNvbXBsZXRlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udG9T
dHJpbmcoKSk7CisgICAgICAgIHRlc3QyKCk7CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0Migp
IHsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRFU1Q6IHNldFZlcnNpb24gbm90IGJsb2Nr
ZWQgaWYgaGFuZGxlIGNsb3NlZCBpbW1lZGlhdGVseSIpOworICAgIGV2YWxBbmRMb2coInNlbGYu
ZGJuYW1lID0gJ3Rlc3QyJzsgc2VsZi52ZXIgPSAxOyBzZWxmLnN0ZXBzID0gW10iKTsKKyAgICB2
YXIgaDEgPSBuZXcgQ29ubmVjdGlvbigiaDEiKTsKKyAgICB2YXIgaDIgPSBuZXcgQ29ubmVjdGlv
bigiaDIiKTsKKyAgICBydW5TdGVwcyhbZnVuY3Rpb24oZG9OZXh0KSB7IGgxLm9wZW4oe29uc3Vj
Y2VzczogZG9OZXh0fSk7IH0sCisgICAgICAgICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBoMi5v
cGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9udmVyc2lvbjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoIiAgICBoMiBjbG9zaW5nIGltbWVkaWF0ZWx5
Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaDIuY2xv
c2UoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19KTsgfSwK
KyAgICAgICAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGgxLnNldFZlcnNpb24oe29uc3VjY2Vz
czogZG9OZXh0fSk7IH0sCisgICAgICAgICAgICAgIGZpbmlzaFRlc3QKKyAgICAgICAgICAgICAg
XSk7CisKKyAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgeworICAgICAgICBkZWJ1ZygiTk9URTog
V2lsbCBGQUlMIHdpdGggZXh0cmEgYm9ndXMgaDEuc2V0VmVyc2lvbi5vbmJsb2NrZWQgc3RlcDsg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMTMwIik7CisgICAgICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygic2VsZi5zdGVwcy50b1N0cmluZygpIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFsiaDEub3BlbiIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImgxLm9wZW4ub25zdWNjZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiaDIub3BlbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLm9wZW4u
b25zdWNjZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lv
biIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLm9udmVyc2lvbmNoYW5nZSIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLmNsb3NlIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbi5vbnN1Y2Nlc3MiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLnRyYW5zYWN0aW9uLWNvbXBsZXRl
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udG9TdHJpbmcoKSk7CisgICAgICAg
IHRlc3QzKCk7CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0MygpIHsKKyAgICBkZWJ1ZygiIik7
CisgICAgZGVidWcoIlRFU1Q6IG9wZW4gYW5kIHNldFZlcnNpb24gYmxvY2tlZCBpZiBhIFZFUlNJ
T05fQ0hBTkdFIHRyYW5zYWN0aW9uIGlzIHJ1bm5pbmcgLSBjbG9zZSB3aGVuIGJsb2NrZWQiKTsK
KyAgICBldmFsQW5kTG9nKCJzZWxmLmRibmFtZSA9ICd0ZXN0Myc7IHNlbGYudmVyID0gMTsgc2Vs
Zi5zdGVwcyA9IFtdIik7CisgICAgdmFyIGgxID0gbmV3IENvbm5lY3Rpb24oImgxIik7CisgICAg
dmFyIGgyID0gbmV3IENvbm5lY3Rpb24oImgyIik7CisgICAgdmFyIGgzID0gbmV3IENvbm5lY3Rp
b24oImgzIik7CisgICAgcnVuU3RlcHMoW2Z1bmN0aW9uKGRvTmV4dCkgeyBoMS5vcGVuKHtvbnN1
Y2Nlc3M6IGRvTmV4dH0pOyB9LAorICAgICAgICAgICAgICBmdW5jdGlvbihkb05leHQpIHsgaDIu
b3Blbih7b25zdWNjZXNzOiBkb05leHR9KTsgfSwKKyAgICAgICAgICAgICAgZnVuY3Rpb24oZG9O
ZXh0KSB7IGgxLnNldFZlcnNpb24oKTsgZG9OZXh0KCk7IH0sCisgICAgICAgICAgICAgIGZ1bmN0
aW9uKGRvTmV4dCkgeyBoMi5zZXRWZXJzaW9uKHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG9uYmxvY2tlZDogZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoIiAg
ICBoMiBibG9ja2VkIHNvIGNsb3NpbmciKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBoMi5jbG9zZSgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvTmV4dCgpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0pOyB9LAorICAgICAg
ICAgICAgICBmdW5jdGlvbigpIHsgaDMub3Blbih7b25zdWNjZXNzOiBmaW5pc2hUZXN0fSk7fQor
ICAgICAgICAgICAgICBdKTsKKworICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygic2VsZi5zdGVwcy50b1N0cmluZygpIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFsiaDEub3BlbiIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImgxLm9wZW4ub25zdWNjZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiaDIub3BlbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLm9wZW4u
b25zdWNjZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lv
biIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLnNldFZlcnNpb24iLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5vbnZlcnNpb25jaGFuZ2UiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLm9uYmxvY2tlZCIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLm9udmVyc2lvbmNoYW5nZSIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImgyLnNldFZlcnNpb24ub25ibG9ja2VkIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIuY2xvc2UiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJoMy5vcGVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
aDIuc2V0VmVyc2lvbi5vbmVycm9yIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
aDEuc2V0VmVyc2lvbi5vbnN1Y2Nlc3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJoMS5zZXRWZXJzaW9uLnRyYW5zYWN0aW9uLWNvbXBsZXRlIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiaDMub3Blbi5vbnN1Y2Nlc3MiCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXS50b1N0cmluZygpKTsKKyAgICAgICAgdGVzdDQoKTsKKyAgICB9Cit9CisKK2Z1
bmN0aW9uIHRlc3Q0KCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVEVTVDogb3BlbiBh
bmQgc2V0VmVyc2lvbiBibG9ja2VkIGlmIGEgVkVSU0lPTl9DSEFOR0UgdHJhbnNhY3Rpb24gaXMg
cnVubmluZyAtIGp1c3QgY2xvc2UiKTsKKyAgICBldmFsQW5kTG9nKCJzZWxmLmRibmFtZSA9ICd0
ZXN0NCc7IHNlbGYudmVyID0gMTsgc2VsZi5zdGVwcyA9IFtdIik7CisgICAgdmFyIGgxID0gbmV3
IENvbm5lY3Rpb24oImgxIik7CisgICAgdmFyIGgyID0gbmV3IENvbm5lY3Rpb24oImgyIik7Cisg
ICAgdmFyIGgzID0gbmV3IENvbm5lY3Rpb24oImgzIik7CisgICAgcnVuU3RlcHMoW2Z1bmN0aW9u
KGRvTmV4dCkgeyBoMS5vcGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dH0pOyB9LAorICAgICAgICAgICAg
ICBmdW5jdGlvbihkb05leHQpIHsgaDIub3Blbih7b25zdWNjZXNzOiBkb05leHR9KTsgfSwKKyAg
ICAgICAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGgxLnNldFZlcnNpb24oKTsgZG9OZXh0KCk7
IH0sCisgICAgICAgICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBoMy5vcGVuKHtvbnN1Y2Nlc3M6
IGZpbmlzaFRlc3R9KTsgZG9OZXh0KCk7IH0sCisgICAgICAgICAgICAgIGZ1bmN0aW9uKGRvTmV4
dCkgeyBoMi5jbG9zZSgpOyB9LAorICAgICAgICAgICAgICBdKTsKKworICAgIGZ1bmN0aW9uIGZp
bmlzaFRlc3QoKSB7CisgICAgICAgIGRlYnVnKCJOT1RFOiBXaWxsIEZBSUwgd2l0aCBleHRyYSBi
b2d1cyBoMS5zZXRWZXJzaW9uLm9uYmxvY2tlZCBzdGVwOyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzExMzAiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJzZWxmLnN0ZXBzLnRvU3RyaW5nKCkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
WyJoMS5vcGVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEub3Blbi5vbnN1
Y2Nlc3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5vcGVuIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIub3Blbi5vbnN1Y2Nlc3MiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiaDMub3BlbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImgyLmNsb3NlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lv
bi5vbnN1Y2Nlc3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJz
aW9uLnRyYW5zYWN0aW9uLWNvbXBsZXRlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiaDMub3Blbi5vbnN1Y2Nlc3MiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS50
b1N0cmluZygpKTsKKyAgICAgICAgdGVzdDUoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3Q1
KCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVEVTVDogb3BlbiBibG9ja2VkIGlmIGEg
VkVSU0lPTl9DSEFOR0UgdHJhbnNhY3Rpb24gaXMgcnVubmluZyIpOworICAgIGV2YWxBbmRMb2co
InNlbGYuZGJuYW1lID0gJ3Rlc3Q1Jzsgc2VsZi52ZXIgPSAxOyBzZWxmLnN0ZXBzID0gW10iKTsK
KyAgICB2YXIgaDEgPSBuZXcgQ29ubmVjdGlvbigiaDEiKTsKKyAgICB2YXIgaDIgPSBuZXcgQ29u
bmVjdGlvbigiaDIiKTsKKworICAgIHJ1blN0ZXBzKFtmdW5jdGlvbihkb05leHQpIHsgaDEub3Bl
bih7b25zdWNjZXNzOiBkb05leHR9KTsgfSwKKyAgICAgICAgICAgICAgZnVuY3Rpb24oZG9OZXh0
KSB7IGgxLnNldFZlcnNpb24oKTsgZG9OZXh0KCk7IH0sCisgICAgICAgICAgICAgIGZ1bmN0aW9u
KGRvTmV4dCkgeyBoMi5vcGVuKHtvbnN1Y2Nlc3M6IGZpbmlzaFRlc3R9KTsgfQorICAgICAgICAg
ICAgICBdKTsKKworICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygic2VsZi5zdGVwcy50b1N0cmluZygpIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFsiaDEub3BlbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImgxLm9wZW4ub25zdWNjZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEu
c2V0VmVyc2lvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLm9wZW4iLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLm9uc3VjY2VzcyIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24udHJhbnNhY3Rp
b24tY29tcGxldGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5vcGVuLm9u
c3VjY2VzcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnRvU3RyaW5nKCkpOwor
ICAgICAgICB0ZXN0NigpOworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdDYoKSB7CisgICAgZGVi
dWcoIiIpOworICAgIGRlYnVnKCJURVNUOiB0d28gc2V0VmVyc2lvbnMgZnJvbSB0aGUgc2FtZSBj
b25uZWN0aW9uIik7CisgICAgZXZhbEFuZExvZygic2VsZi5kYm5hbWUgPSAndGVzdDYnOyBzZWxm
LnZlciA9IDE7IHNlbGYuc3RlcHMgPSBbXSIpOworICAgIHZhciBoMSA9IG5ldyBDb25uZWN0aW9u
KCJoMSIpOworCisgICAgcnVuU3RlcHMoW2Z1bmN0aW9uKGRvTmV4dCkgeyBoMS5vcGVuKHtvbnN1
Y2Nlc3M6IGRvTmV4dH0pOyB9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGgxLnNldFZlcnNpb24oe29uc3VjY2Vzczog
aGFsZkRvbmV9KTsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoMS5zZXRWZXJz
aW9uKHtvbnN1Y2Nlc3M6IGhhbGZEb25lfSk7IH0KKyAgICAgICAgICAgICAgXSk7CisKKyAgICB2
YXIgY291bnRlciA9IDA7CisgICAgZnVuY3Rpb24gaGFsZkRvbmUoKSB7CisgICAgICAgIGNvdW50
ZXIrKzsKKyAgICAgICAgaWYgKGNvdW50ZXIgPCAyKSB7CisgICAgICAgICAgICBkZWJ1ZygnaGFs
ZiBkb25lJyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmaW5pc2hUZXN0KCk7Cisg
ICAgICAgIH0KKyAgICB9ICAKKworICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygic2VsZi5zdGVwcy50b1N0cmluZygpIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFsiaDEub3BlbiIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImgxLm9wZW4ub25zdWNjZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiaDEuc2V0VmVyc2lvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgx
LnNldFZlcnNpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJz
aW9uLm9uc3VjY2VzcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZl
cnNpb24udHJhbnNhY3Rpb24tY29tcGxldGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJoMS5zZXRWZXJzaW9uLm9uc3VjY2VzcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImgxLnNldFZlcnNpb24udHJhbnNhY3Rpb24tY29tcGxldGUiCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXS50b1N0cmluZygpKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgfQorfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4tY3Vyc29y
LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4tY3Vyc29y
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjlmOWRjM2I2Yjc5NWJmMGVkOWU5MzY0ZjdhYmY4OGNkMGU2Y2I4N2MK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvb3Blbi1jdXJzb3IuanMKQEAgLTAsMCArMSw4NCBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0
cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2Ny
aXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIG9wZW5DdXJzb3IuIik7CisKK2Z1bmN0aW9uIGVtcHR5
Q3Vyc29yU3VjY2VzcygpCit7CisgICAgZGVidWcoIkVtcHR5IGN1cnNvciBvcGVuZWQgc3VjY2Vz
c2Z1bGx5LiIpCisgICAgLy8gRklYTUU6IGNoZWNrIHRoYXQgd2UgY2FuIGl0ZXJhdGUgdGhlIGN1
cnNvci4KKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gb3BlbkVtcHR5Q3Vyc29y
KCkKK3sKKyAgICBkZWJ1ZygiT3BlbmluZyBhbiBlbXB0eSBjdXJzb3IuIik7CisgICAga2V5UmFu
Z2UgPSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKCJJbmV4aXN0ZW50S2V5Iik7CisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLm9wZW5DdXJzb3Ioa2V5UmFuZ2UpIik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBlbXB0eUN1cnNvclN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGN1cnNvclN1Y2Nl
c3MoKQoreworICAgIGRlYnVnKCJDdXJzb3Igb3BlbmVkIHN1Y2Nlc3NmdWxseS4iKQorICAgIC8v
IEZJWE1FOiBjaGVjayB0aGF0IHdlIGNhbiBpdGVyYXRlIHRoZSBjdXJzb3IuCisgICAgc2hvdWxk
QmUoImV2ZW50LnRhcmdldC5yZXN1bHQuZGlyZWN0aW9uIiwgIjAiKTsKKyAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAiJ215S2V5JyIpOworICAgIHNob3VsZEJlKCJldmVu
dC50YXJnZXQucmVzdWx0LnZhbHVlIiwgIidteVZhbHVlJyIpOworICAgIGRlYnVnKCIiKTsKKyAg
ICB0cnkgeworICAgICAgICBkZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIC5jb250
aW51ZSh7fSkuIik7CisgICAgICAgIGV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoe30pOwor
ICAgICAgICB0ZXN0RmFpbGVkKCJObyBleGNlcHRpb24gdGhyb3duIik7CisgICAgfSBjYXRjaCAo
ZSkgeworICAgICAgICB0ZXN0UGFzc2VkKCJDYXVnaHQgZXhjZXB0aW9uOiAiICsgZS50b1N0cmlu
ZygpKTsKKyAgICB9CisgICAgZGVidWcoIiIpOworICAgIG9wZW5FbXB0eUN1cnNvcigpOworfQor
CitmdW5jdGlvbiBvcGVuQ3Vyc29yKCkKK3sKKyAgICBkZWJ1ZygiT3BlbmluZyBjdXJzb3IiKTsK
KyAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQoIm15S2V5Iik7CisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5zb3VyY2Uub3BlbkN1cnNvcihrZXlSYW5n
ZSkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvclN1Y2Nlc3M7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZl
cnNpb25TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKKyAg
ICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQg
PSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jlcyhk
Yik7CisKKyAgICB2YXIgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCd0ZXN0JykiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
b2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlJywgJ215S2V5JykiKTsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IG9wZW5DdXJzb3I7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICB2YXIgZGIgPSBl
dmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3Zl
VmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9w
ZW4oJ29wZW4tY3Vyc29yJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNz
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCit0
ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4tZHVyaW5nLXRyYW5zYWN0aW9uLmpz
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4tZHVyaW5nLXRy
YW5zYWN0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUzYzE5ZDdkOWYwNGFiMTM2NDUwYjczMTI2ZWI3MDBl
MjMzYjUwMjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvb3Blbi1kdXJpbmctdHJhbnNhY3Rpb24uanMKQEAgLTAsMCArMSw3NyBAQAor
aWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hh
cmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBvcGVuaW5nIGRhdGFi
YXNlIGNvbm5lY3Rpb25zIGR1cmluZyB0cmFuc2FjdGlvbnMiKTsKKworZnVuY3Rpb24gdGVzdCgp
Cit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBwcmVwYXJlRGF0YWJhc2UoKTsK
K30KKworZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKCkKK3sKKyAgICBkZWJ1ZygicHJlcGFyZSBk
YXRhYmFzZSIpOworICAgIGV2YWxBbmRMb2coIm9wZW5yZXExID0gaW5kZXhlZERCLm9wZW4oJ2Ri
MScpIik7CisgICAgb3BlbnJlcTEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
ICAgIG9wZW5yZXExLm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgIGV2YWxBbmRM
b2coImRiYzEgPSBvcGVucmVxMS5yZXN1bHQiKTsKKyAgICAgICAgZXZhbEFuZExvZygic2V0dmVy
cmVxID0gZGJjMS5zZXRWZXJzaW9uKCcxLjAnKSIpOworICAgICAgICBzZXR2ZXJyZXEub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICBzZXR2ZXJyZXEub25zdWNjZXNz
ID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImRiYzEuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgICAgICAgICBzZXR2ZXJyZXEucmVzdWx0Lm9u
Y29tcGxldGUgPSBmdW5jdGlvbiAoZSkgeworICAgICAgICAgICAgICAgIGRlYnVnKCJkYXRhYmFz
ZSBwcmVwYXJhdGlvbiBjb21wbGV0ZSIpOworICAgICAgICAgICAgICAgIGRlYnVnKCIiKTsKKyAg
ICAgICAgICAgICAgICBzdGFydFRyYW5zYWN0aW9uKCk7CisgICAgICAgICAgICB9OworICAgICAg
ICB9OworICAgIH07Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VHJhbnNhY3Rpb24oKQoreworICAgIGRl
YnVnKCJzdGFydGluZyB0cmFuc2FjdGlvbiIpOworICAgIGV2YWxBbmRMb2coInN0YXRlID0gJ3N0
YXJ0aW5nJyIpOworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGJjMS50cmFuc2FjdGlvbignc3Rv
cmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICBldmFsQW5kTG9nKCJ0
cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykucHV0KCd2YWx1ZScsICdrZXknKSIpOworICAg
IHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IGZ1
bmN0aW9uIChlKSB7CisgICAgICAgIGRlYnVnKCJ0cmFuc2FjdGlvbiBjb21wbGV0ZSIpOworICAg
ICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInN0YXRlIiwgIm9wZW4zY29tcGxldGUiKTsKKyAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfTsKKworICAgIGRlYnVnKCIiKTsKKyAgICB0cnlP
cGVucygpOworfQorCitmdW5jdGlvbiB0cnlPcGVucygpCit7CisgICAgZGVidWcoInRyeWluZyB0
byBvcGVuIHRoZSBzYW1lIGRhdGFiYXNlIik7CisgICAgZXZhbEFuZExvZygib3BlbnJlcTIgPSBp
bmRleGVkREIub3BlbignZGIxJykiKTsKKyAgICBvcGVucmVxMi5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7CisgICAgb3BlbnJlcTIub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsK
KyAgICAgICAgZGVidWcoIm9wZW5yZXEyLm9uc3VjY2VzcyIpOworICAgICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoInN0YXRlIiwgInN0YXJ0aW5nIik7CisgICAgICAgIGV2YWxBbmRMb2coInN0
YXRlID0gJ29wZW4yY29tcGxldGUnIik7CisgICAgICAgIGRlYnVnKCIiKTsKKyAgICB9CisgICAg
ZGVidWcoIiIpOworCisgICAgZGVidWcoInRyeWluZyB0byBvcGVuIGEgZGlmZmVyZW50IGRhdGFi
YXNlIik7CisgICAgZXZhbEFuZExvZygib3BlbnJlcTMgPSBpbmRleGVkREIub3BlbignZGIyJyki
KTsKKyAgICBvcGVucmVxMy5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAg
b3BlbnJlcTMub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgZGVidWcoIm9wZW5y
ZXEzLm9uc3VjY2VzcyIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInN0YXRlIiwg
Im9wZW4yY29tcGxldGUiKTsKKyAgICAgICAgZXZhbEFuZExvZygic3RhdGUgPSAnb3BlbjNjb21w
bGV0ZSciKTsKKyAgICAgICAgZGVidWcoIiIpOworICAgIH0KKyAgICBkZWJ1ZygiIik7Cit9CisK
K3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvcHJlZmV0Y2gtYnVnZml4LTEwODA3MS5q
cyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9wcmVmZXRjaC1idWdm
aXgtMTA4MDcxLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlYzhiMGNjZjAyNTU4ODdmNGY2N2E3OWQ3ODdiOGZh
ODI0NzJmMDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvcHJlZmV0Y2gtYnVnZml4LTEwODA3MS5qcwpAQCAtMCwwICsxLDExOSBAQAor
aWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hh
cmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IGZvciBjcmJ1Zy5jb20vMTA4MDcxIik7
CisKKy8vIEhhdmUgdG8gYmUgYXQgbGVhc3QgNSBoZXJlOiAxIGluaXRpYWwsIDMgY29udGludWVz
IHRvIHRyaWdnZXIgcHJlZmV0Y2ggYW5kIDEKKy8vIHBvc3QtYWJvcnQgb3V0c3RhbmRpbmcgY29u
dGludWUuCit2YXIgbmFtZXMgPSBbJ0FscGhhJywgJ0JyYXZvJywgJ0NoYXJsaWUnLCAnRGVsdGEn
LCAnRWNobyddOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhl
cygpOworICAgIERCTkFNRSA9ICdwcmVmZXRjaC1idWdmaXgtMTA4MDcxJzsKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKERCTkFNRSkiKTsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9u
YmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbiAoZSkgeworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhl
ZERCLm9wZW4oREJOQU1FKSIpOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNj
ZXNzOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICB9OworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgdmFyIGRiID0gZXZh
bEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb25TdWNjZXNzKCkKK3sK
KyAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKKyAgICBzZWxmLnRyYW5zID0gZXZh
bEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVl
KCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRD
YWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gaXRlcmF0ZUFuZERlbGV0ZUZpcnN0RWxl
bWVudDsKKworICAgIHZhciBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJywge2tleVBhdGg6ICdpZCd9KSIpOworICAgIHJl
c2V0T2JqZWN0U3RvcmUoKTsKK30KKworZnVuY3Rpb24gcmVzZXRPYmplY3RTdG9yZSgpCit7Cisg
ICAgZGVidWcoIlxucmVzZXRPYmplY3RTdG9yZSgpOiIpOworCisgICAgb2JqZWN0U3RvcmUgPSB0
cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5j
bGVhcigpIik7CisgICAgZm9yIChpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoe2lkOiAiICsgaSArICIs
IG5hbWU6IFwiIiArIG5hbWVzW2ldICsgIlwifSkiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgfQorCisgICAgZGVidWcoIiIpOworfQor
CitmdW5jdGlvbiBpdGVyYXRlQW5kRGVsZXRlRmlyc3RFbGVtZW50KCkKK3sKKyAgICBkZWJ1Zygi
aXRlcmF0ZUFuZERlbGV0ZUZpcnN0RWxlbWVudCgpOiIpOworCisgICAgZXZhbEFuZExvZygidHJh
bnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUp
Iik7CisgICAgdHJhbnMub25hYm9ydCA9IHRyYW5zYWN0aW9uQWJvcnRlZDsKKyAgICB0cmFucy5v
bmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7CisKKyAgICAvLyBDcmVhdGUg
dGhlIGN1cnNvciBhbmQgaXRlcmF0ZSBvdmVyIHRoZSB3aG9sZSB0aGluZy4KKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykub3BlbkN1cnNvcigpIik7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgIHZhciBjdXJzb3IgPSBldmVu
dC50YXJnZXQucmVzdWx0OworICAgICAgICBpZiAoY3Vyc29yID09IG51bGwpIHsKKyAgICAgICAg
ICAgIHJlc2V0T2JqZWN0U3RvcmUoKTsKKyAgICAgICAgICAgIHByZWZldGNoQW5kQWJvcnQoKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGRlYnVnKGN1cnNvci52
YWx1ZS5pZCArICI6ICIgKyBjdXJzb3IudmFsdWUubmFtZSk7CisKKyAgICAgICAgaWYgKGN1cnNv
ci52YWx1ZS5pZCA9PSAwKSB7CisgICAgICAgICAgICAvLyBEZWxldGUgdGhlIGZpcnN0IGVsZW1l
bnQgd2hlbiB3ZSBzZWUgaXQuCisgICAgICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJh
bnMub2JqZWN0U3RvcmUoJ3N0b3JlJykuZGVsZXRlKDApIik7CisgICAgICAgICAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24oKSB7IGN1cnNvci5jb250aW51ZSgpOyB9OworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7CisgICAgICAgIH0KKyAgICB9
Cit9CisKK2Z1bmN0aW9uIHByZWZldGNoQW5kQWJvcnQoKQoreworICAgIGRlYnVnKCJwcmVmZXRj
aEFuZEFib3J0KCk6Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0
U3RvcmUoJ3N0b3JlJykub3BlbkN1cnNvcigpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAo
KSB7CisgICAgICAgIHZhciBjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgICAgICBk
ZWJ1ZyhjdXJzb3IudmFsdWUuaWQgKyAiOiAiICsgY3Vyc29yLnZhbHVlLm5hbWUpOworICAgICAg
ICAvLyBIYXZlIHRvIGl0ZXJhdGUgdG8gMyBpbiBvcmRlciB0byBwcmVmZXRjaCwgYnV0IGNhbid0
IGl0ZXJhdGUgcGFzdCAzCisgICAgICAgIC8vIHNvIHRoYXQgdGhlcmUgd2lsbCBiZSBhIGNvbnRp
bnVlIHJlbWFpbmluZy4KKyAgICAgICAgaWYgKGN1cnNvci52YWx1ZS5pZCA9PSAzKSB7CisgICAg
ICAgICAgICBldmFsQW5kTG9nKCJ0cmFucy5hYm9ydCgpIik7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBjdXJzb3IuY29udGludWUoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVu
Y3Rpb24gdHJhbnNhY3Rpb25BYm9ydGVkKCkKK3sKKyAgICB0ZXN0UGFzc2VkKCJUcmFuc2FjdGlv
biBhYm9ydGVkIGFzIGV4cGVjdGVkIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3ZhciBq
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvcXVl
dWVkLWNvbW1hbmRzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L3F1ZXVlZC1jb21tYW5kcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDBiZmQ1YTE2Y2VjZTEwNDc1MjEyNjdm
NmEyYTk5MzE5YjQ4MmIyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL3F1ZXVlZC1jb21tYW5kcy5qcwpAQCAtMCwwICsxLDYyIEBACitp
ZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFy
ZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlZlcmlmeSB0aGF0IHF1ZXVpbmcgdXAgc2V2ZXJh
bCBjb21tYW5kcyB3b3JrcyAoYW5kIHRoZXkgYWxsIGZpcmUpLiIpOworCitmdW5jdGlvbiB0ZXN0
KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJpbmRleGVkREIub3BlbigncXVldWVkLWNvbW1hbmRzJykiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IHNldFZlcnNpb247CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb24oKQoreworICAgIGRiID0gZXZh
bEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKK3sKKyAgICBk
ZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKKyAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExv
ZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFu
cyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFj
azsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBzZWxmLnN0b3JlID0g
ZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgc2Vs
Zi5pbmRleE9iamVjdCA9IGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleE5hbWUn
LCAneCcpIik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAndmFs
dWUnLCB5OiAnenp6J30sICdrZXknKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24oKSB7IHZlcmlmeUFkZCgwKTsgfTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6
ICd2YWx1ZTInLCB5OiAnenp6Mid9LCAna2V5MicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbigpIHsgdmVyaWZ5QWRkKDEpOyB9OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3Jl
LnB1dCh7eDogJ3ZhbHUyJywgeTogJ3p6Mid9LCAna3kyJykiKTsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGZ1bmN0aW9uKCkgeyB2ZXJpZnlBZGQoMik7IH07CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisKKyAgICBzZWxmLmFkZENvdW50ID0gMDsKK30K
KworZnVuY3Rpb24gdmVyaWZ5QWRkKGV4cGVjdGVkKQoreworICAgIHNob3VsZEJlKCIiICsgYWRk
Q291bnQrKywgIiIgKyBleHBlY3RlZCk7CisKKyAgICBpZiAoYWRkQ291bnQgPT0gMykKKyAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CisgICAgaWYgKGFkZENvdW50ID4gMykKKyAgICAgICAgdGVzdEZh
aWxlZCgiVW5leHBlY3RlZCBjYWxsIHRvIHZlcmlmeUFkZCEiKTsKK30KKwordGVzdCgpOwpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9yZWFkb25seS1wcm9wZXJ0aWVzLmpzIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3JlYWRvbmx5LXByb3BlcnRpZXMuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzI1YzA0MWIwMTgxOWMxNDZlMmI2M2ExNjY5YWQzOThkNzdhYjJjNgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9yZWFkb25s
eS1wcm9wZXJ0aWVzLmpzCkBAIC0wLDAgKzEsNDkgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMp
IHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlw
dGlvbigiVGVzdCBJbmRleGVkREIgcmVhZG9ubHkgcHJvcGVydGllcyIpOworCitmdW5jdGlvbiBz
ZXRSZWFkb25seVByb3BlcnR5KHByb3BlcnR5LCB2YWx1ZSkKK3sKKyAgICBvbGRWYWx1ZSA9IGV2
YWwocHJvcGVydHkpOworICAgIGRlYnVnKCJ0cnlpbmcgdG8gc2V0IHJlYWRvbmx5IHByb3BlcnR5
ICIgKyBwcm9wZXJ0eSk7CisgICAgZXZhbEFuZExvZyhwcm9wZXJ0eSArICIgPSAiICsgdmFsdWUp
OworICAgIG5ld1ZhbHVlID0gZXZhbChwcm9wZXJ0eSk7CisgICAgaWYgKG9sZFZhbHVlID09IG5l
d1ZhbHVlKSB7CisgICAgICAgIHRlc3RQYXNzZWQocHJvcGVydHkgKyAiIGlzIHN0aWxsICIgKyBv
bGRWYWx1ZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZChwcm9wZXJ0eSArICIg
dmFsdWUgd2FzIGNoYW5nZWQgdG8gIiArIG5ld1ZhbHVlKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9u
IHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gImZv
byI7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAg
ICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjcmVh
dGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKK3sKKyAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRM
b2coInRyYW5zYWN0aW9uID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICBkZWxldGVBbGxP
YmplY3RTdG9yZXMoZGIpOworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3Rv
cmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJyk7Iik7CisgICAgc2V0UmVhZG9ubHlQcm9w
ZXJ0eSgib2JqZWN0U3RvcmUudHJhbnNhY3Rpb24iLCAidGhpcyIpOworICAgIGZpbmlzaEpTVGVz
dCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3JlYWRvbmx5LmpzIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3JlYWRvbmx5LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQ2ZDMxY2Y4ODkyZGIxNGNhMzY5ODBhYWY4Y2QzMWZmYTVmOWNmMmMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvcmVhZG9u
bHkuanMKQEAgLTAsMCArMSwxMDYgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBp
bXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycp
OworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVz
dCBJbmRleGVkREIgcmVhZG9ubHkgcHJvcGVydGllcyIpOworCitmdW5jdGlvbiBzZXRSZWFkb25s
eVByb3BlcnR5KHByb3BlcnR5LCB2YWx1ZSkKK3sKKyAgICBvbGRWYWx1ZSA9IGV2YWwocHJvcGVy
dHkpOworICAgIGRlYnVnKCJ0cnlpbmcgdG8gc2V0IHJlYWRvbmx5IHByb3BlcnR5ICIgKyBwcm9w
ZXJ0eSk7CisgICAgZXZhbEFuZExvZyhwcm9wZXJ0eSArICIgPSAiICsgdmFsdWUpOworICAgIG5l
d1ZhbHVlID0gZXZhbChwcm9wZXJ0eSk7CisgICAgaWYgKG9sZFZhbHVlID09IG5ld1ZhbHVlKSB7
CisgICAgICAgIHRlc3RQYXNzZWQocHJvcGVydHkgKyAiIGlzIHN0aWxsICIgKyBvbGRWYWx1ZSk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZChwcm9wZXJ0eSArICIgdmFsdWUgd2Fz
IGNoYW5nZWQiKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZl
bmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gImZvbyI7CisgICAgZGVzY3JpcHRpb24gPSAi
TXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5v
cGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1
Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBzZXRSZWFkb25seVByb3BlcnR5KCJy
ZXF1ZXN0LnJlc3VsdCIsICJJbmZpbml0eSIpOworICAgIHNldFJlYWRvbmx5UHJvcGVydHkoInJl
cXVlc3QuZXJyb3JDb2RlIiwgIjY2NiIpOworICAgIHNldFJlYWRvbmx5UHJvcGVydHkoInJlcXVl
c3Quc291cmNlIiwgInRoaXMiKTsKKyAgICBzZXRSZWFkb25seVByb3BlcnR5KCJyZXF1ZXN0LnRy
YW5zYWN0aW9uIiwgInRoaXMiKTsKKyAgICBzZXRSZWFkb25seVByb3BlcnR5KCJyZXF1ZXN0LnJl
YWR5U3RhdGUiLCAiNjY2Iik7CisKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFy
Z2V0LnJlc3VsdCIpOworICAgIHNldFJlYWRvbmx5UHJvcGVydHkoImRiLm5hbWUiLCAiJ2Jhcici
KTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbign
MScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0
b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKK3sKKyAgICB0cmFuc2Fj
dGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsK
KyAgICBzZXRSZWFkb25seVByb3BlcnR5KCJ0cmFuc2FjdGlvbi5tb2RlIiwgIjY2NiIpOworICAg
IHNldFJlYWRvbmx5UHJvcGVydHkoInRyYW5zYWN0aW9uLmRiIiwgInRoaXMiKTsKKworICAgIGRl
bGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2co
Im9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycpOyIpOworCisgICAgc2V0
UmVhZG9ubHlQcm9wZXJ0eSgib2JqZWN0U3RvcmUubmFtZSIsICInYmFyJyIpOworICAgIHNldFJl
YWRvbmx5UHJvcGVydHkoIm9iamVjdFN0b3JlLmtleVBhdGgiLCAiJ2JhciciKTsKKy8qIGZhaWxz
LCBzcGxpdCBpbnRvIHNlcGFyYXRlIHRlc3QKKyAgICBzZXRSZWFkb25seVByb3BlcnR5KCJvYmpl
Y3RTdG9yZS5pbmRleE5hbWVzIiwgIlsnYmFyJ10iKTsKKyovCisvKiBmYWlscywgc3BsaXQgaW50
byBzZXBhcmF0ZSB0ZXN0CisgICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgib2JqZWN0U3RvcmUudHJh
bnNhY3Rpb24iLCAidGhpcyIpOworKi8KKworICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coInJlc3Vs
dCA9IG9iamVjdFN0b3JlLmFkZCh7fSwgJ2ZpcnN0Jyk7Iik7CisgICAgcmVzdWx0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXN1bHQub25zdWNjZXNzID0gYWRkU3Vj
Y2VzczsKK30KKworZnVuY3Rpb24gYWRkU3VjY2VzcygpCit7CisgICAgcmVzdWx0ID0gZXZhbEFu
ZExvZygicmVzdWx0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOworICAgIHJlc3VsdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9
IGNoZWNrQ3Vyc29yOworfQorCitmdW5jdGlvbiBjaGVja0N1cnNvcigpCit7CisgICAgY3Vyc29y
ID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICBpZiAo
Y3Vyc29yKSB7CisgICAgICAgIHNldFJlYWRvbmx5UHJvcGVydHkoImN1cnNvci5zb3VyY2UiLCAi
dGhpcyIpOworICAgICAgICBzZXRSZWFkb25seVByb3BlcnR5KCJjdXJzb3IuZGlyZWN0aW9uIiwg
IjY2NiIpOworICAgICAgICBzZXRSZWFkb25seVByb3BlcnR5KCJjdXJzb3Iua2V5IiwgIkluZmlu
aXR5Iik7CisgICAgICAgIHNldFJlYWRvbmx5UHJvcGVydHkoImN1cnNvci5wcmltYXJ5S2V5Iiwg
IkluZmluaXR5Iik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiY3Vyc29yIGlz
IG51bGwiKTsKKyAgICB9CisKKyAgICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gb2JqZWN0
U3RvcmUuY3JlYXRlSW5kZXgoJ2ZpcnN0JywgJ2ZpcnN0Jyk7Iik7CisgICAgc2V0UmVhZG9ubHlQ
cm9wZXJ0eSgiaW5kZXgubmFtZSIsICInYmFyJyIpOworICAgIHNldFJlYWRvbmx5UHJvcGVydHko
ImluZGV4Lm9iamVjdFN0b3JlIiwgInRoaXMiKTsKKyAgICBzZXRSZWFkb25seVByb3BlcnR5KCJp
bmRleC5rZXlQYXRoIiwgIidiYXInIik7CisgICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgiaW5kZXgu
dW5pcXVlIiwgInRydWUiKTsKKworICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2Uub25seSgiZmly
c3QiKTsKKyAgICBzZXRSZWFkb25seVByb3BlcnR5KCJrZXlSYW5nZS5sb3dlciIsICJJbmZpbml0
eSIpOworICAgIHNldFJlYWRvbmx5UHJvcGVydHkoImtleVJhbmdlLnVwcGVyIiwgIkluZmluaXR5
Iik7CisgICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgia2V5UmFuZ2UubG93ZXJPcGVuIiwgInRydWUi
KTsKKyAgICBzZXRSZWFkb25seVByb3BlcnR5KCJrZXlSYW5nZS51cHBlck9wZW4iLCAidHJ1ZSIp
OworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvcmVxdWVzdC1ldmVudC1wcm9wYWdhdGlvbi5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9yZXF1ZXN0LWV2ZW50LXByb3BhZ2F0aW9uLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjM5NjcyMzVlMjBiZmRmOGY2MGYwMDQyYmFhNzgxNjdiYjFjYzUyNzMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvcmVxdWVzdC1l
dmVudC1wcm9wYWdhdGlvbi5qcwpAQCAtMCwwICsxLDI2NyBAQAoraWYgKHRoaXMuaW1wb3J0U2Ny
aXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rl
c2NyaXB0aW9uKCJUZXN0IGV2ZW50IHByb3BvZ2F0aW9uIG9uIElEQlJlcXVlc3QuIik7CisKK2Z1
bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdyZXF1ZXN0LWV2ZW50LXByb3BhZ2F0aW9u
JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb247CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNp
b24oKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24n
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0
ZUV4aXN0aW5nKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKKyAgICBz
ZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Cisg
ICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1
bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRl
ID0gc3RhcnRUZXN0Iik7CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAg
c3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5h
bWUnLCBudWxsKSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2
YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgpCit7CisgICAgZGVi
dWcoIlZlcmlmeSB0aGF0IGhhbmRsZXIgZmlyZXMgYW5kIHRoYXQgbm90IHByZXZlbnRpbmcgZGVm
YXVsdCB3aWxsIHJlc3VsdCBpbiBhbiBhYm9ydCIpOworICAgIHRyYW5zID0gZXZhbEFuZExvZygi
dHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFE
X1dSSVRFKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSB0cmFuc2FjdGlvbkFi
b3J0ZWQiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENv
bXBsZXRlQ2FsbGJhY2siKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmVycm9yID0gYWxsb3dE
ZWZhdWx0Iik7CisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0
b3JlKCdzdG9yZU5hbWUnKSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQo
e3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOworICAgIGhhbmRsZXJGaXJlZCA9IGZhbHNlOwor
fQorCitmdW5jdGlvbiBhbGxvd0RlZmF1bHQoKQoreworICAgIHRlc3RQYXNzZWQoIkV2ZW50IGhh
bmRsZXIgZmlyZWQiKTsKKyAgICBkZWJ1ZygiRG9pbmcgbm90aGluZyB0byBwcmV2ZW50IHRoZSBk
ZWZhdWx0IGFjdGlvbi4uLiIpOworICAgIGhhbmRsZXJGaXJlZCA9IHRydWU7Cit9CisKK2Z1bmN0
aW9uIHRyYW5zYWN0aW9uQWJvcnRlZCgpCit7CisgICAgc2hvdWxkQmVUcnVlKCJoYW5kbGVyRmly
ZWQiKTsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlZlcmlmaW5nIGVycm9yIik7CisgICAg
dHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10s
IElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMub25h
Ym9ydCA9IHRyYW5zYWN0aW9uQWJvcnRlZDIiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNv
bXBsZXRlID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2siKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFu
cy5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGVycm9yQ2FwdHVyZUNhbGxiYWNrLCB0cnVlKSIp
OworICAgIGV2YWxBbmRMb2coInRyYW5zLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZXJyb3JC
dWJibGVDYWxsYmFjaywgZmFsc2UpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMuYWRkRXZlbnRM
aXN0ZW5lcignc3VjY2VzcycsIHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2ssIHRydWUpIik7Cisg
ICAgZXZhbEFuZExvZygidHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignc3VjY2VzcycsIHVuZXhwZWN0
ZWRTdWNjZXNzQ2FsbGJhY2ssIGZhbHNlKSIpOworICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50
TGlzdGVuZXIoJ2Vycm9yJywgZGJFcnJvckNhcHR1cmVDYWxsYmFjaywgdHJ1ZSkiKTsKKyAgICBl
dmFsQW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGRiRXJyb3JCdWJibGVDYWxs
YmFjaywgZmFsc2UpIik7CisgICAgZXZhbEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignc3Vj
Y2VzcycsIHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2ssIHRydWUpIik7CisgICAgZXZhbEFuZExv
ZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignc3VjY2VzcycsIHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJh
Y2ssIGZhbHNlKSIpOworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmpl
Y3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUu
YWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBl
cnJvckZpcmVkQ2FsbGJhY2s7CisgICAgZGJDYXB0dXJlRmlyZWQgPSBmYWxzZTsKKyAgICBjYXB0
dXJlRmlyZWQgPSBmYWxzZTsKKyAgICByZXF1ZXN0RmlyZWQgPSBmYWxzZTsKKyAgICBidWJibGVG
aXJlZCA9IGZhbHNlOworICAgIGRiQnViYmxlRmlyZWQgPSBmYWxzZTsKK30KKworZnVuY3Rpb24g
ZGJFcnJvckNhcHR1cmVDYWxsYmFjaygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJJ
biBJREJEYXRhYmFzZSBlcnJvciBjYXB0dXJlIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGJDYXB0
dXJlRmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJjYXB0dXJlRmlyZWQiKTsKKyAgICBzaG91
bGRCZUZhbHNlKCJyZXF1ZXN0RmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJidWJibGVGaXJl
ZCIpOworICAgIHNob3VsZEJlRmFsc2UoImRiQnViYmxlRmlyZWQiKTsKKyAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0IiwgInJlcXVlc3QiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQuY3VycmVudFRh
cmdldCIsICJkYiIpOworICAgIGRiQ2FwdHVyZUZpcmVkID0gdHJ1ZTsKK30KKworZnVuY3Rpb24g
ZXJyb3JDYXB0dXJlQ2FsbGJhY2soKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiSW4g
SURCVHJhbnNhY3Rpb24gZXJyb3IgY2FwdHVyZSIpOworICAgIHNob3VsZEJlVHJ1ZSgiZGJDYXB0
dXJlRmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJjYXB0dXJlRmlyZWQiKTsKKyAgICBzaG91
bGRCZUZhbHNlKCJyZXF1ZXN0RmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJidWJibGVGaXJl
ZCIpOworICAgIHNob3VsZEJlRmFsc2UoImRiQnViYmxlRmlyZWQiKTsKKyAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0IiwgInJlcXVlc3QiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQuY3VycmVudFRh
cmdldCIsICJ0cmFucyIpOworICAgIGNhcHR1cmVGaXJlZCA9IHRydWU7Cit9CisKK2Z1bmN0aW9u
IGVycm9yRmlyZWRDYWxsYmFjaygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJJbiBJ
REJSZXF1ZXN0IGhhbmRsZXIiKTsKKyAgICBzaG91bGRCZVRydWUoImRiQ2FwdHVyZUZpcmVkIik7
CisgICAgc2hvdWxkQmVUcnVlKCJjYXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJy
ZXF1ZXN0RmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJidWJibGVGaXJlZCIpOworICAgIHNo
b3VsZEJlRmFsc2UoImRiQnViYmxlRmlyZWQiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0
IiwgInJlcXVlc3QiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQuY3VycmVudFRhcmdldCIsICJyZXF1
ZXN0Iik7CisgICAgcmVxdWVzdEZpcmVkID0gdHJ1ZTsKK30KKworZnVuY3Rpb24gZXJyb3JCdWJi
bGVDYWxsYmFjaygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJJbiBJREJUcmFuc2Fj
dGlvbiBlcnJvciBidWJibGUiKTsKKyAgICBzaG91bGRCZVRydWUoImRiQ2FwdHVyZUZpcmVkIik7
CisgICAgc2hvdWxkQmVUcnVlKCJjYXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRCZVRydWUoInJl
cXVlc3RGaXJlZCIpOworICAgIHNob3VsZEJlRmFsc2UoImJ1YmJsZUZpcmVkIik7CisgICAgc2hv
dWxkQmVGYWxzZSgiZGJCdWJibGVGaXJlZCIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQi
LCAicmVxdWVzdCIpOworICAgIHNob3VsZEJlKCJldmVudC5jdXJyZW50VGFyZ2V0IiwgInRyYW5z
Iik7CisgICAgYnViYmxlRmlyZWQgPSB0cnVlOworfQorCitmdW5jdGlvbiBkYkVycm9yQnViYmxl
Q2FsbGJhY2soKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiSW4gSURCRGF0YWJhc2Ug
ZXJyb3IgYnViYmxlIik7CisgICAgc2hvdWxkQmVUcnVlKCJkYkNhcHR1cmVGaXJlZCIpOworICAg
IHNob3VsZEJlVHJ1ZSgiY2FwdHVyZUZpcmVkIik7CisgICAgc2hvdWxkQmVUcnVlKCJyZXF1ZXN0
RmlyZWQiKTsKKyAgICBzaG91bGRCZVRydWUoImJ1YmJsZUZpcmVkIik7CisgICAgc2hvdWxkQmVG
YWxzZSgiZGJCdWJibGVGaXJlZCIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAicmVx
dWVzdCIpOworICAgIHNob3VsZEJlKCJldmVudC5jdXJyZW50VGFyZ2V0IiwgImRiIik7CisgICAg
ZGJCdWJibGVGaXJlZCA9IHRydWU7Cit9CisKK2Z1bmN0aW9uIHRyYW5zYWN0aW9uQWJvcnRlZDIo
KQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVHJhbnNhY3Rpb24gYWJvcnRlZCIpOwor
ICAgIHNob3VsZEJlVHJ1ZSgiZGJDYXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRCZVRydWUoImNh
cHR1cmVGaXJlZCIpOworICAgIHNob3VsZEJlVHJ1ZSgicmVxdWVzdEZpcmVkIik7CisgICAgc2hv
dWxkQmVUcnVlKCJidWJibGVGaXJlZCIpOworICAgIHNob3VsZEJlVHJ1ZSgiZGJCdWJibGVGaXJl
ZCIpOworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVmVyaWZpbmcgc3VjY2Vzcy4iKTsKKyAg
ICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUn
XSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5v
bmNvbXBsZXRlID0gdHJhbnNhY3Rpb25Db21wbGV0ZSIpOworICAgIGV2YWxBbmRMb2coInRyYW5z
Lm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coInRy
YW5zLmFkZEV2ZW50TGlzdGVuZXIoJ3N1Y2Nlc3MnLCBzdWNjZXNzQ2FwdHVyZUNhbGxiYWNrLCB0
cnVlKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLmFkZEV2ZW50TGlzdGVuZXIoJ3N1Y2Nlc3Mn
LCBzdWNjZXNzQnViYmxlQ2FsbGJhY2ssIGZhbHNlKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5z
LmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgdW5leHBlY3RlZEVycm9yQ2FsbGJhY2ssIHRydWUp
Iik7CisgICAgZXZhbEFuZExvZygidHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjaywgZmFsc2UpIik7CisgICAgZXZhbEFuZExvZygiZGIucmVtb3Zl
RXZlbnRMaXN0ZW5lcignZXJyb3InLCBkYkVycm9yQ2FwdHVyZUNhbGxiYWNrLCB0cnVlKSIpOwor
ICAgIGV2YWxBbmRMb2coImRiLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZGJFcnJvckJ1
YmJsZUNhbGxiYWNrLCBmYWxzZSkiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5yZW1vdmVFdmVudExp
c3RlbmVyKCdzdWNjZXNzJywgdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjaywgdHJ1ZSkiKTsKKyAg
ICBldmFsQW5kTG9nKCJkYi5yZW1vdmVFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgdW5leHBlY3Rl
ZFN1Y2Nlc3NDYWxsYmFjaywgZmFsc2UpIik7CisgICAgZXZhbEFuZExvZygiZGIuYWRkRXZlbnRM
aXN0ZW5lcignc3VjY2VzcycsIGRiU3VjY2Vzc0NhcHR1cmVDYWxsYmFjaywgdHJ1ZSkiKTsKKyAg
ICBldmFsQW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgZGJTdWNjZXNzQnVi
YmxlQ2FsbGJhY2ssIGZhbHNlKSIpOworICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50TGlzdGVu
ZXIoJ2Vycm9yJywgdW5leHBlY3RlZEVycm9yQ2FsbGJhY2ssIHRydWUpIik7CisgICAgZXZhbEFu
ZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
aywgZmFsc2UpIik7CisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVj
dFN0b3JlKCdzdG9yZU5hbWUnKSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5h
ZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleTInKSIpOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc3Vj
Y2Vzc0ZpcmVkQ2FsbGJhY2s7CisgICAgZGJDYXB0dXJlRmlyZWQgPSBmYWxzZTsKKyAgICBjYXB0
dXJlRmlyZWQgPSBmYWxzZTsKKyAgICByZXF1ZXN0RmlyZWQgPSBmYWxzZTsKKyAgICBidWJibGVG
aXJlZCA9IGZhbHNlOworICAgIGRiQnViYmxlRmlyZWQgPSBmYWxzZTsKK30KKworZnVuY3Rpb24g
ZGJTdWNjZXNzQ2FwdHVyZUNhbGxiYWNrKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWco
IkluIElEQkRhdGFiYXNlIHN1Y2Nlc3MgY2FwdHVyZSIpOworICAgIHNob3VsZEJlRmFsc2UoImRi
Q2FwdHVyZUZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiY2FwdHVyZUZpcmVkIik7CisgICAg
c2hvdWxkQmVGYWxzZSgicmVxdWVzdEZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiYnViYmxl
RmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVkIik7CisgICAgc2hvdWxk
QmUoImV2ZW50LnRhcmdldCIsICJyZXF1ZXN0Iik7CisgICAgc2hvdWxkQmUoImV2ZW50LmN1cnJl
bnRUYXJnZXQiLCAiZGIiKTsKKyAgICBkYkNhcHR1cmVGaXJlZCA9IHRydWU7Cit9CisKK2Z1bmN0
aW9uIHN1Y2Nlc3NDYXB0dXJlQ2FsbGJhY2soKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1
ZygiSW4gSURCVHJhbnNhY3Rpb24gc3VjY2VzcyBjYXB0dXJlIik7CisgICAgc2hvdWxkQmVUcnVl
KCJkYkNhcHR1cmVGaXJlZCIpOworICAgIHNob3VsZEJlRmFsc2UoImNhcHR1cmVGaXJlZCIpOwor
ICAgIHNob3VsZEJlRmFsc2UoInJlcXVlc3RGaXJlZCIpOworICAgIHNob3VsZEJlRmFsc2UoImJ1
YmJsZUZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVGaXJlZCIpOworICAgIHNo
b3VsZEJlKCJldmVudC50YXJnZXQiLCAicmVxdWVzdCIpOworICAgIHNob3VsZEJlKCJldmVudC5j
dXJyZW50VGFyZ2V0IiwgInRyYW5zIik7CisgICAgY2FwdHVyZUZpcmVkID0gdHJ1ZTsKK30KKwor
ZnVuY3Rpb24gc3VjY2Vzc0ZpcmVkQ2FsbGJhY2soKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBk
ZWJ1ZygiSW4gSURCUmVxdWVzdCBoYW5kbGVyIik7CisgICAgc2hvdWxkQmVUcnVlKCJkYkNhcHR1
cmVGaXJlZCIpOworICAgIHNob3VsZEJlVHJ1ZSgiY2FwdHVyZUZpcmVkIik7CisgICAgc2hvdWxk
QmVGYWxzZSgicmVxdWVzdEZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiYnViYmxlRmlyZWQi
KTsKKyAgICBzaG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVkIik7CisgICAgc2hvdWxkQmUoImV2
ZW50LnRhcmdldCIsICJyZXF1ZXN0Iik7CisgICAgc2hvdWxkQmUoImV2ZW50LmN1cnJlbnRUYXJn
ZXQiLCAicmVxdWVzdCIpOworICAgIHJlcXVlc3RGaXJlZCA9IHRydWU7Cit9CisKK2Z1bmN0aW9u
IHN1Y2Nlc3NCdWJibGVDYWxsYmFjaygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJJ
biBJREJUcmFuc2FjdGlvbiBzdWNjZXNzIGJ1YmJsZSIpOworICAgIHRlc3RGYWlsZWQoIlN1Y2Nl
c3MgYnViYmxlIGNhbGxiYWNrIHNob3VsZCBOT1QgZmlyZSIpOworICAgIGJ1YmJsZUZpcmVkID0g
dHJ1ZTsKK30KKworZnVuY3Rpb24gZGJTdWNjZXNzQnViYmxlQ2FsbGJhY2soKQoreworICAgIGRl
YnVnKCIiKTsKKyAgICBkZWJ1ZygiSW4gSURCRGF0YWJhc2Ugc3VjY2VzcyBidWJibGUiKTsKKyAg
ICB0ZXN0RmFpbGVkKCJTdWNjZXNzIGJ1YmJsZSBjYWxsYmFjayBzaG91bGQgTk9UIGZpcmUiKTsK
KyAgICBkYkJ1YmJsZUZpcmVkID0gdHJ1ZTsKK30KKworZnVuY3Rpb24gdHJhbnNhY3Rpb25Db21w
bGV0ZSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUcmFuc2FjdGlvbiBjb21wbGV0
ZWQiKTsKKyAgICBzaG91bGRCZVRydWUoImRiQ2FwdHVyZUZpcmVkIik7CisgICAgc2hvdWxkQmVU
cnVlKCJjYXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRCZVRydWUoInJlcXVlc3RGaXJlZCIpOwor
ICAgIHNob3VsZEJlRmFsc2UoImJ1YmJsZUZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGJC
dWJibGVGaXJlZCIpOworICAgIGRlYnVnKCIiKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworICAg
IHJldHVybjsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zZXRWZXJzaW9u
LW51bGwuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2V0VmVy
c2lvbi1udWxsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4OGEzYzc1ZjYyYzQ2ZTRhMmMzNzg4ZTgwMjFjM2Uz
OWYzY2QzZWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvc2V0VmVyc2lvbi1udWxsLmpzCkBAIC0wLDAgKzEsMzUgQEAKK2lmICh0aGlz
LmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycp
OworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgd2l0aCBudWxsIHZlcnNpb24gc3Ry
aW5nIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7
CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9
ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERC
Lm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVu
U3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
K30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIu
c2V0VmVyc2lvbihudWxsKTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RTZXRWZXJz
aW9uOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBwb3N0U2V0VmVyc2lvbigpCit7CisgICAgc2hvdWxkQmUoImRiLnZlcnNpb24i
LCAiJ251bGwnIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKKwordGVzdCgpOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NldFZlcnNpb24t
dW5kZWZpbmVkLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3Nl
dFZlcnNpb24tdW5kZWZpbmVkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3ODMzNmUzODg0MzQwZjgzMWE3NTdj
NmM2MDkwYmMzNWQzMmE0MTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvc2V0VmVyc2lvbi11bmRlZmluZWQuanMKQEAgLTAsMCArMSwy
OCBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0
cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiB2ZXJzaW9u
IHN0cmluZyBpcyByZXF1aXJlZCIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVW
ZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Cisg
ICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9
IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgc2hvdWxkVGhy
b3coImRiLnNldFZlcnNpb24oKTsiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworCit0ZXN0
KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
c2V0X3ZlcnNpb25fYmxvY2tlZC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9zZXRfdmVyc2lvbl9ibG9ja2VkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzM2ViN2M5OTg4MjQ2
MmI0NjZiMTA4ZWZlODRmNGU3NzJlNGYwNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2V0X3ZlcnNpb25fYmxvY2tlZC5qcwpAQCAt
MCwwICsxLDU1IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0
cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBv
cnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIkFuIG9wZW4gY29ubmVj
dGlvbiBibG9ja3MgYSBzZXBhcmF0ZSBjb25uZWN0aW9uJ3Mgc2V0VmVyc2lvbiBjYWxsIik7CisK
K2Nvbm5lY3Rpb25zID0gW10KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclBy
ZWZpeGVzKCk7CisgICAgb3BlbkRCQ29ubmVjdGlvbigpOworfQorCitmdW5jdGlvbiBvcGVuREJD
b25uZWN0aW9uKCkKK3sKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4o
J3NldC12ZXJzaW9uLWJsb2NrZWQnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1
Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBjb25uZWN0aW9uID0gZXZlbnQudGFy
Z2V0LnJlc3VsdDsKKyAgICBjb25uZWN0aW9ucy5wdXNoKGNvbm5lY3Rpb24pOworICAgIG9yaWdp
bmFsX3ZlcnNpb24gPSBjb25uZWN0aW9uLnZlcnNpb247CisgICAgaWYgKGNvbm5lY3Rpb25zLmxl
bmd0aCA8IDIpCisgICAgICAgIG9wZW5EQkNvbm5lY3Rpb24oKTsKKyAgICBlbHNlIHsKKyAgICAg
ICAgdmFyIHZlcnNpb25DaGFuZ2VSZXF1ZXN0ID0gZXZhbEFuZExvZygiY29ubmVjdGlvbnNbMF0u
c2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsKKyAgICAgICAgdmVyc2lvbkNoYW5nZVJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICB2ZXJzaW9uQ2hhbmdl
UmVxdWVzdC5vbnN1Y2Nlc3MgPSBpblNldFZlcnNpb247CisgICAgICAgIHZlcnNpb25DaGFuZ2VS
ZXF1ZXN0Lm9uYmxvY2tlZCA9IGJsb2NrZWQ7CisgICAgfQorfQorCitzZWVuX2Jsb2NrZWRfZXZl
bnQgPSBmYWxzZTsKK2Z1bmN0aW9uIGJsb2NrZWQoKQoreworICAgIGV2YWxBbmRMb2coInNlZW5f
YmxvY2tlZF9ldmVudCA9IHRydWUiKTsKKyAgICBibG9ja2VkX2V2ZW50ID0gZXZlbnQ7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJibG9ja2VkX2V2ZW50LnZlcnNpb24iLCAidmVyc2lvbiAx
Iik7CisgICAgc2hvdWxkRXZhbHVhdGVUbygiYmxvY2tlZF9ldmVudC50YXJnZXQucmVhZHlTdGF0
ZSIsIDEpOworICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb25zWzFdLmNsb3NlKCkiKTsKK30KKwor
ZnVuY3Rpb24gaW5TZXRWZXJzaW9uKCkKK3sKKyAgICBkZWJ1ZygiaW4gc2V0VmVyc2lvbi5vbnN1
Y2Nlc3MiKTsKKyAgICBzaG91bGRCZVRydWUoInNlZW5fYmxvY2tlZF9ldmVudCIpOworICAgIGRl
bGV0ZUFsbE9iamVjdFN0b3Jlcyhjb25uZWN0aW9uc1swXSk7CisgICAgZmluaXNoSlNUZXN0KCk7
Cit9CisKK3Rlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9zZXRfdmVyc2lvbl9xdWV1ZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9zZXRfdmVyc2lvbl9xdWV1ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYWEzNDVk
NDM3YzY4NThiYWRhMzc2MmQ5OTY2MWZlZDExYjY1YzYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NldF92ZXJzaW9uX3F1ZXVlLmpz
CkBAIC0wLDAgKzEsMTIyIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0
U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAg
ICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIjQgb3BlbiBj
b25uZWN0aW9ucyB0cnkgdG8gc2V0VmVyc2lvbiBhdCB0aGUgc2FtZSB0aW1lLiAgMyBjb25uZWN0
aW9ucyBldmVudHVhbGx5IGNsb3NlLCBhbGxvd2luZyAxIHNldFZlcnNpb24gY2FsbCB0byBwcm9j
ZWVkLiIpOworCitjb25uZWN0aW9ucyA9IFtdCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1v
dmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgb3BlbkRCQ29ubmVjdGlvbigpOworfQorCitmdW5j
dGlvbiBvcGVuREJDb25uZWN0aW9uKCkKK3sKKyAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJpbmRl
eGVkREIub3Blbignc2V0LXZlcnNpb24tcXVldWUnKSIpOworICAgIHJlc3VsdC5vbnN1Y2Nlc3Mg
PSBvcGVuU3VjY2VzczsKKyAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgY29ubmVjdGlvbiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgY29ubmVjdGlvbi5vbnZlcnNpb25jaGFuZ2UgPSBnZW5l
cmF0ZVZlcnNpb25DaGFuZ2VIYW5kbGVyKCk7CisgICAgY29ubmVjdGlvbnMucHVzaChjb25uZWN0
aW9uKTsKKyAgICBpZiAoY29ubmVjdGlvbnMubGVuZ3RoIDwgNCkKKyAgICAgICAgb3BlbkRCQ29u
bmVjdGlvbigpOworICAgIGVsc2UgeworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiY29u
bmVjdGlvbnNbMF0uc2V0VmVyc2lvbigndmVyc2lvbiAwJykiKTsKKyAgICAgICAgcmVxdWVzdC5v
bmVycm9yID0gZnVuY3Rpb24oZXZlbnQpeyBjb25uZWN0aW9uRXJyb3IoZXZlbnQsIDApIH07Cisg
ICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKKyAg
ICAgICAgcmVxdWVzdC5vbmJsb2NrZWQgPSBibG9ja2VkMDsKKyAgICAgICAgcmVxdWVzdDEgPSBl
dmFsQW5kTG9nKCJjb25uZWN0aW9uc1sxXS5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAg
ICAgICByZXF1ZXN0MS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAg
IHJlcXVlc3QxLm9uc3VjY2VzcyA9IGluU2V0VmVyc2lvbjE7CisgICAgICAgIHJlcXVlc3QxLm9u
YmxvY2tlZCA9IGJsb2NrZWQxOworICAgICAgICByZXF1ZXN0MiA9IGV2YWxBbmRMb2coImNvbm5l
Y3Rpb25zWzJdLnNldFZlcnNpb24oJ3ZlcnNpb24gMicpIik7CisgICAgICAgIHJlcXVlc3QyLm9u
ZXJyb3IgPSBmdW5jdGlvbihldmVudCl7IGNvbm5lY3Rpb25FcnJvcihldmVudCwgMikgfTsKKyAg
ICAgICAgcmVxdWVzdDIub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKKyAg
ICAgICAgcmVxdWVzdDIub25ibG9ja2VkID0gYmxvY2tlZDI7CisgICAgICAgIHJlcXVlc3QzID0g
ZXZhbEFuZExvZygiY29ubmVjdGlvbnNbM10uc2V0VmVyc2lvbigndmVyc2lvbiAzJykiKTsKKyAg
ICAgICAgcmVxdWVzdDMub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KXsgY29ubmVjdGlvbkVycm9y
KGV2ZW50LCAzKSB9OworICAgICAgICByZXF1ZXN0My5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3Vj
Y2Vzc0NhbGxiYWNrOworICAgICAgICByZXF1ZXN0My5vbmJsb2NrZWQgPSBibG9ja2VkMzsKKyAg
ICAgICAgZGVidWcoIiIpOworICAgIH0KK30KKworZnVuY3Rpb24gZ2VuZXJhdGVWZXJzaW9uQ2hh
bmdlSGFuZGxlcigpCit7CisgICAgdmFyIGNvbm5lY3Rpb25OdW0gPSBjb25uZWN0aW9ucy5sZW5n
dGg7CisgICAgcmV0dXJuIGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgc2hvdWxkQmVU
cnVlKCJldmVudC52ZXJzaW9uLmxlbmd0aCA+IDAiKTsKKyAgICAgICAgZGVidWcoImNvbm5lY3Rp
b25bIiArIGNvbm5lY3Rpb25OdW0gKyAiXSByZWNlaXZlZCB2ZXJzaW9uQ2hhbmdlRXZlbnQ6ICIg
KyBldmVudC52ZXJzaW9uKTsKKyAgICB9Cit9CisKK2Jsb2NrZWQwZmlyZWQgPSBmYWxzZTsKK2Js
b2NrZWQyZmlyZWQgPSBmYWxzZTsKK2Z1bmN0aW9uIGJsb2NrZWQwKGV2ZW50KQoreworICAgIGRl
YnVnKCIiKTsKKyAgICB0ZXN0UGFzc2VkKCJjb25uZWN0aW9uWzBdIGdvdCBibG9ja2VkIGV2ZW50
Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC52ZXJzaW9uIiwgInZlcnNpb24g
MCIpOworICAgIGRlYnVnKCJDbG9zZSB0aGUgY29ubmVjdGlvbiB0aGF0IHJlY2VpdmVkIHRoZSBi
bG9jayBldmVudDoiKTsKKyAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uc1swXS5jbG9zZSgpIik7
CisgICAgZGVidWcoIkNsb3NlIGFub3RoZXIgY29ubmVjdGlvbiBhcyB3ZWxsLCB0byB0ZXN0IDQu
Ny40LW5vdGU6Iik7CisgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbnNbM10uY2xvc2UoKSIpOwor
ICAgIGV2YWxBbmRMb2coImJsb2NrZWQwZmlyZWQgPSB0cnVlIik7CisgICAgZGVidWcoIiIpOwor
fQorCitmdW5jdGlvbiBibG9ja2VkMShldmVudCkKK3sKKyAgICBkZWJ1ZygiIikKKyAgICB0ZXN0
UGFzc2VkKCJjb25uZWN0aW9uWzFdIGdvdCBibG9ja2VkIGV2ZW50Iik7CisgICAgZGVidWcoIkVu
c3VyZSB0aGF0IHRoaXMgYmxvY2tlZCBldmVudCBpcyBpbiBvcmRlcjoiKTsKKyAgICBzaG91bGRC
ZVRydWUoImJsb2NrZWQwZmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJibG9ja2VkMmZpcmVk
Iik7CisgICAgZGVidWcoIiIpCit9CisKK2Z1bmN0aW9uIGJsb2NrZWQyKGV2ZW50KQoreworICAg
IGRlYnVnKCIiKQorICAgIHRlc3RQYXNzZWQoImNvbm5lY3Rpb25bMl0gZ290IGJsb2NrZWQgZXZl
bnQiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnZlcnNpb24iLCAidmVyc2lv
biAyIik7CisgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbnNbMl0uY2xvc2UoKSIpOworICAgIGV2
YWxBbmRMb2coImJsb2NrZWQyZmlyZWQgPSB0cnVlIik7CisgICAgZGVidWcoIiIpCit9CisKK2Z1
bmN0aW9uIGJsb2NrZWQzKGV2ZW50KQoreworICAgIGRlYnVnKCIiKQorICAgIHRlc3RQYXNzZWQo
ImNvbm5lY3Rpb25bM10gZ290IGJsb2NrZWQgZXZlbnQiKTsKKyAgICBkZWJ1ZygiTm90ZTogVGhp
cyBtZWFucyB0aGF0IGEgY29ubmVjdGlvbiBjYW4gcmVjZWl2ZSBhIGJsb2NrZWQgZXZlbnQgYWZ0
ZXIgaXRzIGNsb3NlKCkgbWV0aG9kIGhhcyBiZWVuIGNhbGxlZC4gIFNwZWMgaXMgc2lsZW50IG9u
IHRoZSBpc3N1ZSBhbmQgdGhpcyBpcyBlYXNpZXN0IHRvIGltcGxlbWVudC4iKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnZlcnNpb24iLCAidmVyc2lvbiAzIik7Cit9CisKK2Z1
bmN0aW9uIGNvbm5lY3Rpb25FcnJvcihldmVudCwgY29ubmVjdGlvbklkKQoreworICAgIGRlYnVn
KCIiKQorICAgIHRlc3RQYXNzZWQoImNvbm5lY3Rpb25bIiArIGNvbm5lY3Rpb25JZCArICJdIGdv
dCBlcnJvciBldmVudCIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuZXJyb3JDb2RlIiwg
IklEQkRhdGFiYXNlRXhjZXB0aW9uLkFCT1JUX0VSUiIpCisgICAgaWYgKCd3ZWJraXRFcnJvck1l
c3NhZ2UnIGluIGV2ZW50LnRhcmdldCkgeworICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0
LndlYmtpdEVycm9yTWVzc2FnZS5sZW5ndGggPiAwIiwgInRydWUiKTsKKyAgICAgICAgZGVidWco
ZXZlbnQudGFyZ2V0LndlYmtpdEVycm9yTWVzc2FnZSk7CisgICAgfQorfQorCitmdW5jdGlvbiBp
blNldFZlcnNpb24xKGV2ZW50KQoreworICAgIGRlYnVnKCIiKQorICAgIHRlc3RQYXNzZWQoImNv
bm5lY3Rpb25bMV0gZ290IGludG8gU2V0VmVyc2lvbiIpOworICAgIGZpbmlzaEpTVGVzdCgpOwor
fQorCit0ZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvc3RydWN0dXJlZC1jbG9uZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9zdHJ1Y3R1cmVkLWNsb25lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2NzU5MzI3NGIw
MTIyYTU3Mzg2YjViNGQzYTQ3NjQ0YzJkNTAxZDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc3RydWN0dXJlZC1jbG9uZS5qcwpAQCAt
MCwwICsxLDUzMSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlw
dHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1w
b3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IHN0cnVjdHVy
ZWQgY2xvbmUgcGVybXV0YXRpb25zIGluIEluZGV4ZWREQi4gRmlsZS9GaWxlTGlzdCB0ZXN0cyBy
ZXF1aXJlIER1bXBSZW5kZXJUcmVlLiIpOworCitpZiAoc2VsZi5ldmVudFNlbmRlcikgeworICAg
IHZhciBmaWxlSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmlsZUlucHV0Iik7Cisg
ICAgdmFyIGZpbGVSZWN0ID0gZmlsZUlucHV0LmdldENsaWVudFJlY3RzKClbMF07CisgICAgdmFy
IHRhcmdldFggPSBmaWxlUmVjdC5sZWZ0ICsgZmlsZVJlY3Qud2lkdGggLyAyOworICAgIHZhciB0
YXJnZXRZID0gZmlsZVJlY3QudG9wICsgZmlsZVJlY3QuaGVpZ2h0IC8gMjsKKyAgICBldmVudFNl
bmRlci5iZWdpbkRyYWdXaXRoRmlsZXMoWydyZXNvdXJjZXMvdGVzdC1kYXRhLmh0bWwnLCAncmVz
b3VyY2VzL3Rlc3QtZGF0YS50eHQnXSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8odGFy
Z2V0WCwgdGFyZ2V0WSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorCitmdW5jdGlv
biB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAgIHByZXBhcmVEYXRh
YmFzZSgpOworfQorCitmdW5jdGlvbiBwcmVwYXJlRGF0YWJhc2UoKQoreworICAgIGRlYnVnKCIi
KTsKKyAgICBkZWJ1ZygiUHJlcGFyZSBEYXRhYmFzZSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoJ3N0cnVjdHVyZWQtY2xvbmUnKSIpOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24oZSkgeworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
aW5kZXhlZERCLm9wZW4oJ3N0cnVjdHVyZWQtY2xvbmUnKSIpOworICAgICAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbihlKSB7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJkYiA9IHJlcXVlc3Qu
cmVzdWx0Iik7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLnZlcnNpb24i
LCAiIik7CisgICAgICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbign
MScpIik7CisgICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKKyAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZSkgeworICAg
ICAgICAgICAgICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUn
KSIpOworICAgICAgICAgICAgICAgIHZhciB0cmFucyA9IHJlcXVlc3QucmVzdWx0OworICAgICAg
ICAgICAgICAgIHRyYW5zLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAg
ICAgICAgICAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAg
ICAgICAgICAgICAgdHJhbnMub25jb21wbGV0ZSA9IHN0YXJ0VGVzdHM7CisgICAgICAgICAgICB9
OworICAgICAgICB9OworICAgIH07Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdHMoKQoreworICAg
IGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiUnVubmluZyB0ZXN0cy4uLiIpOworICAgIHZhciB0ZXN0
c190b19ydW4gPSBbCisgICAgICAgIHRlc3RVbmRlZmluZWQsCisgICAgICAgIHRlc3ROdWxsLAor
ICAgICAgICB0ZXN0Qm9vbGVhbiwKKyAgICAgICAgdGVzdE51bWJlciwKKyAgICAgICAgdGVzdFN0
cmluZywKKyAgICAgICAgdGVzdEJvb2xlYW5PYmplY3QsCisgICAgICAgIHRlc3ROdW1iZXJPYmpl
Y3QsCisgICAgICAgIHRlc3RTdHJpbmdPYmplY3QsCisgICAgICAgIHRlc3REYXRlT2JqZWN0LAor
ICAgICAgICB0ZXN0UmVnRXhwT2JqZWN0LAorICAgICAgICB0ZXN0SW1hZ2VEYXRhLAorICAgICAg
ICB0ZXN0QmxvYiwKKyAgICAgICAgdGVzdEZpbGUsCisgICAgICAgIHRlc3RGaWxlTGlzdCwKKyAg
ICAgICAgdGVzdEFycmF5LAorICAgICAgICB0ZXN0T2JqZWN0CisgICAgXTsKKworICAgIGZ1bmN0
aW9uIG5leHRUZXN0KCkgeworICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgIGlmICh0ZXN0c190
b19ydW4ubGVuZ3RoKSB7CisgICAgICAgICAgICB2YXIgdGVzdCA9IHRlc3RzX3RvX3J1bi5zaGlm
dCgpOworICAgICAgICAgICAgdGVzdChuZXh0VGVzdCk7IC8vIFdoZW4gZG9uZSwgY2FsbCB0aGlz
IGFnYWluLgorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGVzdEJhZFR5cGVzKCk7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgbmV4dFRlc3QoKTsKK30KKworZnVuY3Rpb24gZm9yRWFjaFdp
dGhDYWxsYmFjayh0ZXN0RnVuY3Rpb24sIHZhbHVlcywgY2FsbGJhY2spCit7CisgICAgZnVuY3Rp
b24gbmV4dFZhbHVlKCkgeworICAgICAgICBpZiAodmFsdWVzLmxlbmd0aCkgeworICAgICAgICAg
ICAgdGVzdEZ1bmN0aW9uKHZhbHVlcy5zaGlmdCgpLCBuZXh0VmFsdWUpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG5l
eHRWYWx1ZSgpOworfQorCitmdW5jdGlvbiB0ZXN0VmFsdWUodmFsdWUsIGNhbGxiYWNrKQorewor
ICAgIC8vIE9uZSB0cmFuc2FjdGlvbiBwZXIgdGVzdCwgc2luY2Ugc29tZSB0ZXN0cyByZXF1aXJl
IGFzeW5jaHJvbm91cworICAgIC8vIG9wZXJhdGlvbnMgdG8gdmVyaWZ5IHRoZSByZXN1bHQgKGUu
Zy4gdmlhIEZpbGVSZWFkZXIpCisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFu
c2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICB0
cmFuc2FjdGlvbi5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgdHJhbnNh
Y3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIGV2YWxBbmRMb2co
InN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisKKyAgICBz
ZWxmLnZhbHVlID0gdmFsdWU7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLnB1dCh2
YWx1ZSwgJ2tleScpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihlKSB7CisgICAgICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5nZXQoJ2tleScpIik7CisgICAgICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKHJlcXVlc3QucmVzdWx0
KTsKKyAgICAgICAgfTsKKyAgICB9OworfQorCisvLyBJZGVudGl0eSB0ZXN0aW5nLCBzZW5zaXRp
dmUgdG8gTmFOIGFuZCAtMAorZnVuY3Rpb24gaXMoeCwgeSkgeworICAgIGlmICh4ID09PSB5KSB7
CisgICAgICAgIHJldHVybiB4ICE9PSAwIHx8IDEgLyB4ID09PSAxIC8geTsKKyAgICB9CisgICAg
cmV0dXJuIHggIT09IHggJiYgeSAhPT0geTsKK30KKworZnVuY3Rpb24gYXJyYXlDb21wYXJlKGEs
IGIpIHsKKyAgICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSB7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhLmxlbmd0aDsgKytpKSB7Cisg
ICAgICAgIGlmICghaXMoYVtpXSwgYltpXSkpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZnVuY3Rpb24gdGVzdFBy
aW1pdGl2ZVZhbHVlKHN0cmluZywgY2FsbGJhY2spCit7CisgICAgZGVidWcoIlRlc3Rpbmc6ICIg
KyBzdHJpbmcpOworICAgIHZhciB2YWx1ZSA9IGV2YWwoInZhbHVlID0gKCIgKyBzdHJpbmcgKyAi
KSIpOworICAgIHRlc3RfZGF0YSA9IHZhbHVlOworICAgIHRlc3RWYWx1ZSh0ZXN0X2RhdGEsIGZ1
bmN0aW9uKHJlc3VsdCkgeworICAgICAgICBzZWxmLnJlc3VsdCA9IHJlc3VsdDsKKyAgICAgICAg
c2hvdWxkQmVUcnVlKCJpcyh0ZXN0X2RhdGEsIHJlc3VsdCkiKTsKKyAgICAgICAgZGVidWcoIiIp
OworICAgICAgICBjYWxsYmFjaygpOworICAgIH0pOworfQorCitmdW5jdGlvbiB0ZXN0T2JqZWN0
V2l0aFZhbHVlKHN0cmluZywgY2FsbGJhY2spCit7CisgICAgZGVidWcoIlRlc3Rpbmc6ICIgKyBz
dHJpbmcpOworICAgIHZhciB2YWx1ZSA9IGV2YWwoInZhbHVlID0gKCIgKyBzdHJpbmcgKyAiKSIp
OworICAgIHRlc3RfZGF0YSA9IHZhbHVlOworICAgIHRlc3RWYWx1ZSh0ZXN0X2RhdGEsIGZ1bmN0
aW9uKHJlc3VsdCkgeworICAgICAgICBzZWxmLnJlc3VsdCA9IHJlc3VsdDsKKyAgICAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJ0eXBlb2YgcmVzdWx0IiwgIm9iamVjdCIpOworICAgICAgICBz
aG91bGRCZSgiT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHJlc3VsdCkiLCAiT2JqZWN0
LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHRlc3RfZGF0YSkiKTsKKyAgICAgICAgc2hvdWxkQmVU
cnVlKCJ0ZXN0X2RhdGEgIT09IHJlc3VsdCIpOworICAgICAgICBzaG91bGRCZSgicmVzdWx0LnRv
U3RyaW5nKCkiLCAidGVzdF9kYXRhLnRvU3RyaW5nKCkiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVl
KCJpcyh0ZXN0X2RhdGEudmFsdWVPZigpLCByZXN1bHQudmFsdWVPZigpKSIpOworICAgICAgICBk
ZWJ1ZygiIik7CisgICAgICAgIGNhbGxiYWNrKCk7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIHRl
c3RVbmRlZmluZWQoY2FsbGJhY2spCit7CisgICAgdGVzdFByaW1pdGl2ZVZhbHVlKCJ1bmRlZmlu
ZWQiLCBjYWxsYmFjayk7Cit9CisKK2Z1bmN0aW9uIHRlc3ROdWxsKGNhbGxiYWNrKQoreworICAg
IHRlc3RQcmltaXRpdmVWYWx1ZSgibnVsbCIsIGNhbGxiYWNrKTsKK30KKworZnVuY3Rpb24gdGVz
dEJvb2xlYW4oY2FsbGJhY2spCit7CisgICAgZGVidWcoIlRlc3RpbmcgYm9vbGVhbiBwcmltaXRp
dmVzIik7CisgICAgZGVidWcoIiIpOworICAgIGZvckVhY2hXaXRoQ2FsbGJhY2sodGVzdFByaW1p
dGl2ZVZhbHVlLCBbInRydWUiLCAiZmFsc2UiXSwgY2FsbGJhY2spOworfQorCitmdW5jdGlvbiB0
ZXN0Qm9vbGVhbk9iamVjdChjYWxsYmFjaykKK3sKKyAgICBkZWJ1ZygiVGVzdGluZyBCb29sZWFu
IG9iamVjdHMiKTsKKyAgICBkZWJ1ZygiIik7CisgICAgZm9yRWFjaFdpdGhDYWxsYmFjayh0ZXN0
T2JqZWN0V2l0aFZhbHVlLCBbCisgICAgICAgICJuZXcgQm9vbGVhbih0cnVlKSIsCisgICAgICAg
ICJuZXcgQm9vbGVhbihmYWxzZSkiCisgICAgXSwgY2FsbGJhY2spOworfQorCitmdW5jdGlvbiB0
ZXN0U3RyaW5nKGNhbGxiYWNrKQoreworICAgIGRlYnVnKCJUZXN0aW5nIHN0cmluZyBwcmltaXRp
dmVzIik7CisgICAgZGVidWcoIiIpOworICAgIGZvckVhY2hXaXRoQ2FsbGJhY2sodGVzdFByaW1p
dGl2ZVZhbHVlLCBbCisgICAgICAgICInJyIsCisgICAgICAgICIndGhpcyBpcyBhIHNhbXBsZSBz
dHJpbmcnIiwKKyAgICAgICAgIidudWxsKFxcMCknIgorICAgIF0sIGNhbGxiYWNrKTsKK30KKwor
ZnVuY3Rpb24gdGVzdFN0cmluZ09iamVjdChjYWxsYmFjaykKK3sKKyAgICBkZWJ1ZygiVGVzdGlu
ZyBTdHJpbmcgb2JqZWN0cyIpOworICAgIGRlYnVnKCIiKTsKKyAgICBmb3JFYWNoV2l0aENhbGxi
YWNrKHRlc3RPYmplY3RXaXRoVmFsdWUsIFsKKyAgICAgICAgIm5ldyBTdHJpbmcoKSIsCisgICAg
ICAgICJuZXcgU3RyaW5nKCd0aGlzIGlzIGEgc2FtcGxlIHN0cmluZycpIiwKKyAgICAgICAgIm5l
dyBTdHJpbmcoJ251bGwoXFwwKScpIgorICAgIF0sIGNhbGxiYWNrKTsKK30KKworZnVuY3Rpb24g
dGVzdE51bWJlcihjYWxsYmFjaykKK3sKKyAgICBkZWJ1ZygiVGVzdGluZyBudW1iZXIgcHJpbWl0
aXZlcyIpOworICAgIGRlYnVnKCIiKTsKKyAgICBmb3JFYWNoV2l0aENhbGxiYWNrKHRlc3RQcmlt
aXRpdmVWYWx1ZSwgWworICAgICAgICAiTmFOIiwKKyAgICAgICAgIi1JbmZpbml0eSIsCisgICAg
ICAgICItTnVtYmVyLk1BWF9WQUxVRSIsCisgICAgICAgICItTnVtYmVyLk1JTl9WQUxVRSIsCisg
ICAgICAgICItMCIsCisgICAgICAgICIwIiwKKyAgICAgICAgIk51bWJlci5NSU5fVkFMVUUiLAor
ICAgICAgICAiTnVtYmVyLk1BWF9WQUxVRSIsCisgICAgICAgICJJbmZpbml0eSIKKyAgICBdLCBj
YWxsYmFjayk7Cit9CisKK2Z1bmN0aW9uIHRlc3ROdW1iZXJPYmplY3QoY2FsbGJhY2spCit7Cisg
ICAgZGVidWcoIlRlc3RpbmcgTnVtYmVyIG9iamVjdHMiKTsKKyAgICBkZWJ1ZygiIik7CisgICAg
Zm9yRWFjaFdpdGhDYWxsYmFjayh0ZXN0T2JqZWN0V2l0aFZhbHVlLCBbCisgICAgICAgICJuZXcg
TnVtYmVyKE5hTikiLAorICAgICAgICAibmV3IE51bWJlcigtSW5maW5pdHkpIiwKKyAgICAgICAg
Im5ldyBOdW1iZXIoLU51bWJlci5NQVhfVkFMVUUpIiwKKyAgICAgICAgIm5ldyBOdW1iZXIoLU51
bWJlci5NSU5fVkFMVUUpIiwKKyAgICAgICAgIm5ldyBOdW1iZXIoLTApIiwKKyAgICAgICAgIm5l
dyBOdW1iZXIoMCkiLAorICAgICAgICAibmV3IE51bWJlcihOdW1iZXIuTUlOX1ZBTFVFKSIsCisg
ICAgICAgICJuZXcgTnVtYmVyKE51bWJlci5NQVhfVkFMVUUpIiwKKyAgICAgICAgIm5ldyBOdW1i
ZXIoSW5maW5pdHkpIgorICAgIF0sIGNhbGxiYWNrKTsKK30KKworZnVuY3Rpb24gdGVzdERhdGVP
YmplY3QoY2FsbGJhY2spCit7CisgICAgZGVidWcoIlRlc3RpbmcgRGF0ZSBvYmplY3RzIik7Cisg
ICAgZGVidWcoIiIpOworICAgIGZvckVhY2hXaXRoQ2FsbGJhY2sodGVzdE9iamVjdFdpdGhWYWx1
ZSwgWworICAgICAgICAibmV3IERhdGUoLTFlMTMpIiwKKyAgICAgICAgIm5ldyBEYXRlKC0xZTEy
KSIsCisgICAgICAgICJuZXcgRGF0ZSgtMWU5KSIsCisgICAgICAgICJuZXcgRGF0ZSgtMWU2KSIs
CisgICAgICAgICJuZXcgRGF0ZSgtMWUzKSIsCisgICAgICAgICJuZXcgRGF0ZSgwKSIsCisgICAg
ICAgICJuZXcgRGF0ZSgxZTMpIiwKKyAgICAgICAgIm5ldyBEYXRlKDFlNikiLAorICAgICAgICAi
bmV3IERhdGUoMWU5KSIsCisgICAgICAgICJuZXcgRGF0ZSgxZTEyKSIsCisgICAgICAgICJuZXcg
RGF0ZSgxZTEzKSIKKyAgICBdLCBjYWxsYmFjayk7Cit9CisKK2Z1bmN0aW9uIHRlc3RSZWdFeHBP
YmplY3QoY2FsbGJhY2spCit7CisgICAgZGVidWcoIlRlc3RpbmcgUmVnRXhwIG9iamVjdHMiKTsK
KyAgICBkZWJ1ZygiIik7CisgICAgZnVuY3Rpb24gdGVzdFJlZ0V4cChzdHJpbmcsIGNhbGxiYWNr
KSB7CisgICAgICAgIGRlYnVnKCJUZXN0aW5nIFJlZ0V4cDogIiArIHN0cmluZyk7CisgICAgICAg
IHZhciB2YWx1ZSA9IGV2YWwoInZhbHVlID0gKCIgKyBzdHJpbmcgKyAiKSIpOworICAgICAgICB0
ZXN0X2RhdGEgPSB2YWx1ZTsKKyAgICAgICAgdGVzdFZhbHVlKHRlc3RfZGF0YSwgZnVuY3Rpb24o
cmVzdWx0KSB7CisgICAgICAgICAgICBzZWxmLnJlc3VsdCA9IHJlc3VsdDsKKyAgICAgICAgICAg
IHNob3VsZEJlVHJ1ZSgidGVzdF9kYXRhICE9PSByZXN1bHQiKTsKKyAgICAgICAgICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHJlc3VsdCki
LCAiW29iamVjdCBSZWdFeHBdIik7CisgICAgICAgICAgICBzaG91bGRCZSgicmVzdWx0LnRvU3Ry
aW5nKCkiLCAidGVzdF9kYXRhLnRvU3RyaW5nKCkiKTsKKyAgICAgICAgICAgIGRlYnVnKCIiKTsK
KyAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZvckVh
Y2hXaXRoQ2FsbGJhY2sodGVzdFJlZ0V4cCwgWworICAgICAgICAibmV3IFJlZ0V4cCgpIiwKKyAg
ICAgICAgIi9hYmMvIiwKKyAgICAgICAgIi9hYmMvZyIsCisgICAgICAgICIvYWJjL2kiLAorICAg
ICAgICAiL2FiYy9naSIsCisgICAgICAgICIvYWJjL20iLAorICAgICAgICAiL2FiYy9tZyIsCisg
ICAgICAgICIvYWJjL21pIiwKKyAgICAgICAgIi9hYmMvbWdpIgorICAgIF0sIGNhbGxiYWNrKTsK
K30KKworZnVuY3Rpb24gdGVzdEltYWdlRGF0YShjYWxsYmFjaykKK3sKKyAgICBkZWJ1ZygiVGVz
dGluZyBJbWFnZURhdGEiKTsKKyAgICBldmFsQW5kTG9nKCJjYW52YXMgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdjYW52YXMnKSIpOworICAgIGV2YWxBbmRMb2coImNhbnZhcy53aWR0aCA9IDgi
KTsKKyAgICBldmFsQW5kTG9nKCJjYW52YXMuaGVpZ2h0ID0gOCIpOworICAgIGV2YWxBbmRMb2co
InRlc3RfZGF0YSA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpLmdldEltYWdlRGF0YSgwLCAwLCA4
LCA4KSIpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyNTY7ICsraSkgeworICAgICAgICB0
ZXN0X2RhdGEuZGF0YVtpXSA9IGk7CisgICAgfQorCisgICAgdGVzdFZhbHVlKHRlc3RfZGF0YSwg
ZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgIHNlbGYucmVzdWx0ID0gcmVzdWx0OworICAgICAg
ICBzaG91bGRCZVRydWUoInRlc3RfZGF0YSAhPT0gcmVzdWx0Iik7CisgICAgICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHJlc3VsdCkiLCAi
W29iamVjdCBJbWFnZURhdGFdIik7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHQud2lkdGgiLCAi
dGVzdF9kYXRhLndpZHRoIik7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHQuaGVpZ2h0IiwgInRl
c3RfZGF0YS5oZWlnaHQiKTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdC5kYXRhLmxlbmd0aCIs
ICJ0ZXN0X2RhdGEuZGF0YS5sZW5ndGgiKTsKKyAgICAgICAgaWYgKGFycmF5Q29tcGFyZSh0ZXN0
X2RhdGEuZGF0YSwgcmVzdWx0LmRhdGEpKSB7CisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJyZXN1
bHQgZGF0YSBtYXRjaGVzIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJyZXN1bHQgZGF0YSBkb2Vzbid0IG1hdGNoIik7CisgICAgICAgIH0KKyAgICAgICAgY2Fs
bGJhY2soKTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gcmVhZEJsb2JBc1RleHQoYmxvYiwgY2Fs
bGJhY2spCit7CisgICAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7CisgICAgcmVhZGVy
Lm9ubG9hZCA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgaWYgKGUudGFyZ2V0LnJlYWR5U3RhdGUg
PT09IEZpbGVSZWFkZXIuRE9ORSkgeworICAgICAgICAgICAgY2FsbGJhY2soZS50YXJnZXQucmVz
dWx0KTsKKyAgICAgICAgfQorICAgIH07CisgICAgcmVhZGVyLm9uZXJyb3IgPSBmdW5jdGlvbihl
KSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkVycm9yIHJlYWRpbmcgYmxvYiBhcyB0ZXh0OiAiICsg
ZSk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH07CisgICAgcmVhZGVyLnJlYWRBc1Rl
eHQoYmxvYik7Cit9CisKK2Z1bmN0aW9uIGNoZWNrQmxvYkNvbnRlbnRzKGJsb2IsIGV4cGVjdGVk
LCBjYWxsYmFjaykKK3sKKyAgICByZWFkQmxvYkFzVGV4dChibG9iLCBmdW5jdGlvbih0ZXh0KSB7
CisgICAgICAgIHNlbGYudGV4dCA9IHRleHQ7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygidGV4dCIsIGV4cGVjdGVkKTsKKyAgICAgICAgY2FsbGJhY2soKTsKKyAgICB9KTsKK30KKwor
ZnVuY3Rpb24gY29tcGFyZUJsb2JzKGJsb2IxLCBibG9iMiwgY2FsbGJhY2spCit7CisgICAgcmVh
ZEJsb2JBc1RleHQoYmxvYjEsIGZ1bmN0aW9uKHRleHQxKSB7CisgICAgICAgIHJlYWRCbG9iQXNU
ZXh0KGJsb2IyLCBmdW5jdGlvbih0ZXh0MikgeworICAgICAgICAgICAgc2VsZi50ZXh0MSA9IHRl
eHQxOworICAgICAgICAgICAgc2VsZi50ZXh0MiA9IHRleHQyOworICAgICAgICAgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJ0ZXh0MiIsIHRleHQxKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKCk7
CisgICAgICAgIH0pOworICAgIH0pOworfQorCitmdW5jdGlvbiB0ZXN0QmxvYihjYWxsYmFjaykK
K3sKKyAgICBkZWJ1ZygiVGVzdGluZyBCbG9iIik7CisKKyAgICAvLyBGSVhNRTogQmxvYiwgRmls
ZSwgYW5kIEZpbGVMaXN0IHN1cHBvcnQgaXMgaW5jb21wbGV0ZS4KKyAgICAvLyBodHRwOi8vY3Ji
dWcuY29tLzEwODAxMgorICAgIGRlYnVnKCJTa2lwcGluZyB0ZXN0Iik7CisgICAgY2FsbGJhY2so
KTsKKyAgICByZXR1cm47CisKKyAgICBldmFsQW5kTG9nKCJCbG9iQnVpbGRlciA9IHNlbGYuQmxv
YkJ1aWxkZXIgfHwgc2VsZi5XZWJLaXRCbG9iQnVpbGRlciIpOworICAgIHNob3VsZEJlVHJ1ZSgi
QmxvYkJ1aWxkZXIgIT0gbnVsbCIpOworICAgIHNob3VsZEJlVHJ1ZSgiRmlsZVJlYWRlciAhPSBu
dWxsIik7CisgICAgZXZhbEFuZExvZygiYnVpbGRlciA9IG5ldyBCbG9iQnVpbGRlcigpIik7Cisg
ICAgZXZhbEFuZExvZygidGVzdF9jb250ZW50ID0gJ1RoaXMgaXMgYSB0ZXN0LiBUaGlzIGlzIG9u
bHkgYSB0ZXN0LiciKTsKKyAgICBldmFsQW5kTG9nKCJidWlsZGVyLmFwcGVuZCh0ZXN0X2NvbnRl
bnQpIik7CisgICAgZXZhbEFuZExvZygidGVzdF9kYXRhID0gYnVpbGRlci5nZXRCbG9iKCkiKTsK
KyAgICB0ZXN0VmFsdWUodGVzdF9kYXRhLCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgICAgc2Vs
Zi5yZXN1bHQgPSByZXN1bHQ7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgidGVzdF9kYXRhICE9PSBy
ZXN1bHQiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJPYmplY3QucHJvdG90eXBl
LnRvU3RyaW5nLmNhbGwocmVzdWx0KSIsICJbb2JqZWN0IEJsb2JdIik7CisgICAgICAgIHNob3Vs
ZEJlKCJyZXN1bHQuc2l6ZSIsICJ0ZXN0X2RhdGEuc2l6ZSIpOworICAgICAgICBzaG91bGRCZSgi
cmVzdWx0LnR5cGUiLCAidGVzdF9kYXRhLnR5cGUiKTsKKyAgICAgICAgY2hlY2tCbG9iQ29udGVu
dHMocmVzdWx0LCB0ZXN0X2NvbnRlbnQsIGNhbGxiYWNrKTsKKyAgICB9KTsKK30KKworZnVuY3Rp
b24gY29tcGFyZUZpbGVzKGZpbGUxLCBmaWxlMiwgY2FsbGJhY2spCit7CisgICAgc2VsZi5maWxl
MSA9IGZpbGUxOworICAgIHNlbGYuZmlsZTIgPSBmaWxlMjsKKyAgICBzaG91bGRCZVRydWUoImZp
bGUxICE9PSBmaWxlMiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiT2JqZWN0LnByb3Rv
dHlwZS50b1N0cmluZy5jYWxsKGZpbGUxKSIsICJbb2JqZWN0IEZpbGVdIik7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZmlsZTIpIiwg
IltvYmplY3QgRmlsZV0iKTsKKyAgICBkZWJ1ZygiZmlsZTEuc2l6ZTogIiArIGZpbGUxLnNpemUp
OworICAgIHNob3VsZEJlKCJmaWxlMS5zaXplIiwgImZpbGUyLnNpemUiKTsKKyAgICBkZWJ1Zygi
ZmlsZTEudHlwZTogIiArIGZpbGUxLnR5cGUpOworICAgIHNob3VsZEJlKCJmaWxlMS50eXBlIiwg
ImZpbGUyLnR5cGUiKTsKKyAgICBkZWJ1ZygiZmlsZTEubmFtZTogIiArIGZpbGUxLm5hbWUpOwor
ICAgIHNob3VsZEJlKCJmaWxlMS5uYW1lIiwgImZpbGUyLm5hbWUiKTsKKyAgICBzaG91bGRCZSgi
U3RyaW5nKGZpbGUxLmxhc3RNb2RpZmllZERhdGUpIiwgIlN0cmluZyhmaWxlMi5sYXN0TW9kaWZp
ZWREYXRlKSIpOworICAgIGlmIChjYWxsYmFjaykgeworICAgICAgICBjb21wYXJlQmxvYnMoZmls
ZTEsIGZpbGUyLCBjYWxsYmFjayk7CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0RmlsZShjYWxs
YmFjaykKK3sKKyAgICBkZWJ1ZygiVGVzdGluZyBGaWxlIik7CisKKyAgICAvLyBGSVhNRTogQmxv
YiwgRmlsZSwgYW5kIEZpbGVMaXN0IHN1cHBvcnQgaXMgaW5jb21wbGV0ZS4KKyAgICAvLyBodHRw
Oi8vY3JidWcuY29tLzEwODAxMgorICAgIGRlYnVnKCJTa2lwcGluZyB0ZXN0Iik7CisgICAgY2Fs
bGJhY2soKTsKKyAgICByZXR1cm47CisKKyAgICBldmFsQW5kTG9nKCJ0ZXN0X2NvbnRlbnQgPSBm
aWxlSW5wdXQuZmlsZXNbMF0iKTsKKworICAgIHNlbGYudGVzdF9kYXRhID0gdGVzdF9jb250ZW50
OworICAgIHRlc3RWYWx1ZSh0ZXN0X2RhdGEsIGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICBz
ZWxmLnJlc3VsdCA9IHJlc3VsdDsKKyAgICAgICAgY29tcGFyZUZpbGVzKHJlc3VsdCwgdGVzdF9k
YXRhLCBjYWxsYmFjayk7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIHRlc3RGaWxlTGlzdChjYWxs
YmFjaykKK3sKKyAgICBkZWJ1ZygiVGVzdGluZyBGaWxlTGlzdCIpOworCisgICAgLy8gRklYTUU6
IEJsb2IsIEZpbGUsIGFuZCBGaWxlTGlzdCBzdXBwb3J0IGlzIGluY29tcGxldGUuCisgICAgLy8g
aHR0cDovL2NyYnVnLmNvbS8xMDgwMTIKKyAgICBkZWJ1ZygiU2tpcHBpbmcgdGVzdCIpOworICAg
IGNhbGxiYWNrKCk7CisgICAgcmV0dXJuOworCisgICAgZXZhbEFuZExvZygidGVzdF9jb250ZW50
ID0gZmlsZUlucHV0LmZpbGVzIik7CisKKyAgICBzZWxmLnRlc3RfZGF0YSA9IHRlc3RfY29udGVu
dDsKKyAgICB0ZXN0VmFsdWUodGVzdF9kYXRhLCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgICAg
c2VsZi5yZXN1bHQgPSByZXN1bHQ7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgidGVzdF9kYXRhICE9
PSByZXN1bHQiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJPYmplY3QucHJvdG90
eXBlLnRvU3RyaW5nLmNhbGwocmVzdWx0KSIsICJbb2JqZWN0IEZpbGVMaXN0XSIpOworICAgICAg
ICBzaG91bGRCZSgicmVzdWx0Lmxlbmd0aCIsICJ0ZXN0X2RhdGEubGVuZ3RoIik7CisgICAgICAg
IGkgPSAwOworICAgICAgICBmdW5jdGlvbiBkb05leHQoKSB7CisgICAgICAgICAgICBpZiAoaSA+
PSB0ZXN0X2RhdGEubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGVidWcoImNvbXBhcmluZyBmaWxlWyIg
KyBpICsgIl0iKTsKKyAgICAgICAgICAgICAgICBjb21wYXJlRmlsZXMocmVzdWx0W2ldLCB0ZXN0
X2RhdGFbaSsrXSwgZG9OZXh0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBk
b05leHQoKTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gdGVzdEFycmF5KGNhbGxiYWNrKSB7Cisg
ICAgZGVidWcoIlRlc3RpbmcgQXJyYXkiKTsKKyAgICBldmFsQW5kTG9nKCJ0ZXN0X2RhdGEgPSBb
XSIpOworICAgIGV2YWxBbmRMb2coInRlc3RfZGF0YVswXSA9ICdmb28nIik7CisgICAgZXZhbEFu
ZExvZygidGVzdF9kYXRhWzFdID0gJ2JhciciKTsKKyAgICBldmFsQW5kTG9nKCJ0ZXN0X2RhdGFb
MTBdID0gdHJ1ZSIpOworICAgIGV2YWxBbmRMb2coInRlc3RfZGF0YVsxMV0gPSBmYWxzZSIpOwor
ICAgIGV2YWxBbmRMb2coInRlc3RfZGF0YVsyMF0gPSAxMjMiKTsKKyAgICBldmFsQW5kTG9nKCJ0
ZXN0X2RhdGFbMjFdID0gNDU2Iik7CisgICAgZXZhbEFuZExvZygidGVzdF9kYXRhWzMwXSA9IG51
bGwiKTsKKworICAgIHRlc3RWYWx1ZSh0ZXN0X2RhdGEsIGZ1bmN0aW9uKHJlc3VsdCkgeworICAg
ICAgICBzZWxmLnJlc3VsdCA9IHJlc3VsdDsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXN0X2Rh
dGEgIT09IHJlc3VsdCIpOworICAgICAgICBzaG91bGRCZVRydWUoInRlc3RfZGF0YS5sZW5ndGgg
PT09IHJlc3VsdC5sZW5ndGgiKTsKKyAgICAgICAgT2JqZWN0LmtleXModGVzdF9kYXRhKS5mb3JF
YWNoKAorICAgICAgICAgICAgZnVuY3Rpb24oa2V5KSB7CisgICAgICAgICAgICAgICAgc2hvdWxk
QmUoInRlc3RfZGF0YVsiICsga2V5ICsgIl0iLCAicmVzdWx0WyIgKyBrZXkgKyAiXSIpOworICAg
ICAgICAgICAgfSk7CisgICAgICAgIGNhbGxiYWNrKCk7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9u
IHRlc3RPYmplY3QoY2FsbGJhY2spIHsKKyAgICBkZWJ1ZygiVGVzdGluZyBPYmplY3QiKTsKKyAg
ICBldmFsQW5kTG9nKCJ0ZXN0X2RhdGEgPSBbXSIpOworICAgIGV2YWxBbmRMb2coInRlc3RfZGF0
YVswXSA9ICdmb28nIik7CisgICAgZXZhbEFuZExvZygidGVzdF9kYXRhWzFdID0gJ2JhciciKTsK
KyAgICBldmFsQW5kTG9nKCJ0ZXN0X2RhdGFbJ2EnXSA9IHRydWUiKTsKKyAgICBldmFsQW5kTG9n
KCJ0ZXN0X2RhdGFbJ2InXSA9IGZhbHNlIik7CisgICAgZXZhbEFuZExvZygidGVzdF9kYXRhWydm
b28nXSA9IDEyMyIpOworICAgIGV2YWxBbmRMb2coInRlc3RfZGF0YVsnYmFyJ10gPSA0NTYiKTsK
KyAgICBldmFsQW5kTG9nKCJ0ZXN0X2RhdGFbJyddID0gbnVsbCIpOworCisgICAgdGVzdFZhbHVl
KHRlc3RfZGF0YSwgZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgIHNlbGYucmVzdWx0ID0gcmVz
dWx0OworICAgICAgICBzaG91bGRCZVRydWUoInRlc3RfZGF0YSAhPT0gcmVzdWx0Iik7CisgICAg
ICAgIHNob3VsZEJlVHJ1ZSgiYXJyYXlDb21wYXJlKE9iamVjdC5rZXlzKHJlc3VsdCkuc29ydCgp
LCBPYmplY3Qua2V5cyh0ZXN0X2RhdGEpLnNvcnQoKSkiKTsKKyAgICAgICAgT2JqZWN0LmtleXMo
dGVzdF9kYXRhKS5mb3JFYWNoKAorICAgICAgICAgICAgZnVuY3Rpb24oa2V5KSB7CisgICAgICAg
ICAgICAgICAgc2hvdWxkQmUoInRlc3RfZGF0YVsiICsgSlNPTi5zdHJpbmdpZnkoa2V5KSArICJd
IiwgInJlc3VsdFsiICsgSlNPTi5zdHJpbmdpZnkoa2V5KSArICJdIik7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgY2FsbGJhY2soKTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gdGVzdEJhZFR5
cGVzKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRlc3QgdHlwZXMgdGhhdCBjYW4n
dCBiZSBjbG9uZWQ6Iik7CisgICAgZGVidWcoIiIpOworCisgICAgZXZhbEFuZExvZygidHJhbnNh
Y3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9X
UklURSkiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3Jl
KCdzdG9yZU5hbWUnKSIpOworICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBs
ZXRlQ2FsbGJhY2s7CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IGZpbmlzaEpTVGVzdDsKKwor
ICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiT3RoZXIgSmF2YVNjcmlwdCBvYmplY3QgdHlwZXM6
Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KG5ldyBFcnJvciwgJ2tl
eScpIiwgIkRPTUV4Y2VwdGlvbi5EQVRBX0NMT05FX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RF
eGNlcHRpb24oInN0b3JlLnB1dChuZXcgRnVuY3Rpb24sICdrZXknKSIsICJET01FeGNlcHRpb24u
REFUQV9DTE9ORV9FUlIiKTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiT3RoZXIgaG9z
dCBvYmplY3QgdHlwZXM6Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0
KHNlbGYsICdrZXknKSIsICJET01FeGNlcHRpb24uREFUQV9DTE9ORV9FUlIiKTsKKyAgICBldmFs
QW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5wdXQoZG9jdW1lbnQsICdrZXknKSIsICJET01FeGNl
cHRpb24uREFUQV9DTE9ORV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9y
ZS5wdXQoZG9jdW1lbnQuYm9keSwgJ2tleScpIiwgIkRPTUV4Y2VwdGlvbi5EQVRBX0NMT05FX0VS
UiIpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWFi
b3J0LXdpdGgtanMtcmVjdXJzaW9uLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL3RyYW5zYWN0aW9uLWFib3J0LXdpdGgtanMtcmVjdXJzaW9uLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmM1NmU5YTEyNzQzMThmZmFkNjg1ODE5ZTdkMmE0NDFiOGVmM2Y3NDAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rp
b24tYWJvcnQtd2l0aC1qcy1yZWN1cnNpb24uanMKQEAgLTAsMCArMSw1NiBAQAoraWYgKHRoaXMu
aW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7
Cit9CisKK3ZhciB0cmFuc2FjdGlvbjsKK3ZhciBzdG9yZTsKK3ZhciBkYjsKK3ZhciBib2R5ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXTsKKworZGVzY3JpcHRpb24o
IlRlc3QgdGhhdCBwZW5kaW5nIHRyYW5zYWN0aW9ucyBhcmUgbm90IGFib3J0ZWQgZHVyaW5nIHJl
Y3Vyc2l2ZSBKUyBjYWxscyB1bnRpbCBhbGwgSlMgaXMgZmluaXNoZWQuIik7CisKK2Z1bmN0aW9u
IHNldHVwKCkgeworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0aW9uLWFib3J0LXdpdGgtanMtcmVj
dXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb247CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNl
dFZlcnNpb24oKSB7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNp
b24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xpY2s7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNsaWNrKCkgewor
ICAgIHN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ29iamVjdFN0b3JlJywgbnVsbCk7Cisg
ICAgYm9keS5vbmNsaWNrID0gdGVzdDsKKyAgICB2YXIgcGVuZGluZ1RyYW5zYWN0aW9uID0gZXZh
bEFuZExvZygicGVuZGluZ1RyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydvYmplY3RTdG9y
ZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIHBlbmRpbmdUcmFuc2FjdGlv
bi5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBwZW5kaW5nVHJhbnNh
Y3Rpb24ub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHBlbmRpbmdUcmFu
c2FjdGlvbi5vbmFib3J0ID0gYWJvcnRDYWxsYmFjazsKKyAgICB2YXIgZXZlbnQgPSBkb2N1bWVu
dC5jcmVhdGVFdmVudCgiTW91c2VFdmVudCIpOworICAgIGV2ZW50LmluaXRNb3VzZUV2ZW50KCJj
bGljayIsIHRydWUsIHRydWUsIGRvY3VtZW50LmRlZmF1bHRWaWV3LCAwLCAwLCAwLCAwLCAwLCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCwgbnVsbCk7CisgICAgYm9keS5kaXNwYXRjaEV2
ZW50KGV2ZW50KTsKKyAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHBlbmRpbmdU
cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnb2JqZWN0U3RvcmUnKSIpOworICAgIHNob3VsZEJlVHJ1
ZSgic3RvcmUgIT09IHVuZGVmaW5lZCIpOworICAgIGJvZHkub25jbGljayA9IHVuZGVmaW5lZDsK
K30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgZGVidWcoIlN0YXJ0IHJlLWVudHJhbnQgSlMi
KTsKKyAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNh
Y3Rpb24oWydvYmplY3RTdG9yZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAg
IGRlYnVnKCJFbmQgcmUtZW50cmFudCBKUyIpOworfQorCitmdW5jdGlvbiBhYm9ydENhbGxiYWNr
KCkKK3sKKyAgICBkZWJ1ZygiUGVuZGluZyB0cmFuc2FjdGlvbiBhYm9ydGVkIik7CisgICAgZmlu
aXNoSlNUZXN0KCk7Cit9CisKK3NldHVwKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tYWJvcnQuanMgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tYWJvcnQuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNTg2OGU4NzllM2M0NDk0NmM5ZDkxMWJjZThiZTY5NjAyMDczMzc2MwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2Fj
dGlvbi1hYm9ydC5qcwpAQCAtMCwwICsxLDkwIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7
CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRp
b24oIlRlc3QgdHJhbnNhY3Rpb24gYWJvcnRzIHNlbmQgdGhlIHByb3BlciBvbmFib3J0IG1lc3Nh
Z2VzLi4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMo
KTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignbmFtZScpIik7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uKCkK
K3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4aXN0aW5nOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxldGVFeGlz
dGluZygpCit7CisgICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7CisgICAgc2VsZi50
cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNo
b3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBl
Y3RlZEFib3J0Q2FsbGJhY2s7CisgICAgZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IHN0
YXJ0VGVzdCIpOworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIHN0b3Jl
ID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywg
bnVsbCkiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWUn
LCB5OiAnenp6J30sICdrZXknKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzdGFydFRlc3QoKQoreworICAgIHRyYW5zID0g
ZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFu
c2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSB0
cmFuc2FjdGlvbkFib3J0ZWQiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0g
dW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2siKTsKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0
b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlMicsIHk6ICd6enoyJ30sICdrZXkyJykiKTsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmaXJzdEFkZDsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0
b3JlLmFkZCh7eDogJ3ZhbHVlMycsIHk6ICd6enozJ30sICdrZXkzJykiKTsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSBzZWNvbmRBZGQ7CisgICAgdHJhbnMuYWJvcnQoKTsKKworICAgIGZpcnN0RXJy
b3IgPSBmYWxzZTsKKyAgICBzZWNvbmRFcnJvciA9IGZhbHNlOworICAgIGFib3J0RmlyZWQgPSBm
YWxzZTsKK30KKworZnVuY3Rpb24gZmlyc3RBZGQoKQoreworICAgIHNob3VsZEJlKCJldmVudC50
YXJnZXQuZXJyb3JDb2RlIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkFCT1JUX0VSUiIpOworICAg
IHNob3VsZEJlRmFsc2UoImZpcnN0RXJyb3IiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJzZWNvbmRF
cnJvciIpOworICAgIHNob3VsZEJlRmFsc2UoImFib3J0RmlyZWQiKTsKKyAgICBmaXJzdEVycm9y
ID0gdHJ1ZTsKKworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmFkZCh7eDogJ3Zh
bHVlNCcsIHk6ICd6eno0J30sICdrZXk0JykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNB
Q1RJT05fSU5BQ1RJVkVfRVJSIik7Cit9CisKK2Z1bmN0aW9uIHNlY29uZEFkZCgpCit7CisgICAg
c2hvdWxkQmUoImV2ZW50LnRhcmdldC5lcnJvckNvZGUiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24u
QUJPUlRfRVJSIik7CisgICAgc2hvdWxkQmVUcnVlKCJmaXJzdEVycm9yIik7CisgICAgc2hvdWxk
QmVGYWxzZSgic2Vjb25kRXJyb3IiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJhYm9ydEZpcmVkIik7
CisgICAgc2Vjb25kRXJyb3IgPSB0cnVlOworfQorCitmdW5jdGlvbiB0cmFuc2FjdGlvbkFib3J0
ZWQoKQoreworICAgIHNob3VsZEJlVHJ1ZSgiZmlyc3RFcnJvciIpOworICAgIHNob3VsZEJlVHJ1
ZSgic2Vjb25kRXJyb3IiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJhYm9ydEZpcmVkIik7CisgICAg
YWJvcnRGaXJlZCA9IHRydWU7CisKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5h
ZGQoe3g6ICd2YWx1ZTUnLCB5OiAnenp6NSd9LCAna2V5NScpIiwgIklEQkRhdGFiYXNlRXhjZXB0
aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQor
Cit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWFmdGVyLWNsb3Nl
LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9u
LWFmdGVyLWNsb3NlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2MGY2ZGJkNWI5YzlhZWFiYjRhNTBmMjQ1YjQx
YWQ3OTM1YWZlNzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tYWZ0ZXItY2xvc2UuanMKQEAgLTAsMCArMSw4MSBA
QAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygn
c2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IGNsb3NpbmcgYSBkYXRhYmFzZSBj
b25uZWN0aW9uIGluIEluZGV4ZWREQi4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVt
b3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVk
REIub3BlbigndHJhbnNhY3Rpb24tYWZ0ZXItY2xvc2UnKSIpOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygib3Bl
blN1Y2Nlc3MoKToiKTsKKyAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJn
ZXQucmVzdWx0Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRW
ZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gaW5TZXRWZXJz
aW9uOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBpblNldFZlcnNpb24oKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jlcyhk
Yik7CisKKyAgICBldmVudC50YXJnZXQucmVzdWx0Lm9uY29tcGxldGUgPSBydW5GaXJzdFJlZ3Vs
YXJUcmFuc2FjdGlvbjsKKyAgICBldmVudC50YXJnZXQucmVzdWx0Lm9uYWJvcnQgPSB1bmV4cGVj
dGVkQWJvcnRDYWxsYmFjazsKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVx
dWVzdCA9IHN0b3JlLnB1dCgneCcsICd5JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9u
UHV0U3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gb25QdXRTdWNjZXNzKCkKK3sKKyAgICB0ZXN0UGFzc2VkKCJQdXQg
c3VjY2VzcyIpCit9CisKK2Z1bmN0aW9uIHJ1bkZpcnN0UmVndWxhclRyYW5zYWN0aW9uKCkKK3sK
KyAgICBkZWJ1ZygicnVubmluZyBmaXJzdCB0cmFuc2FjdGlvbiIpCisgICAgY3VycmVudFRyYW5z
YWN0aW9uID0gZXZhbEFuZExvZygiY3VycmVudFRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24o
WydzdG9yZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIGN1cnJlbnRUcmFu
c2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgY3VycmVudFRy
YW5zYWN0aW9uLm9uY29tcGxldGUgPSBmaXJzdFRyYW5zYWN0aW9uQ29tcGxldGU7CisgICAgb2Jq
ZWN0U3RvcmUgPSBjdXJyZW50VHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJyk7CisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLnB1dCgnYScsICdiJykiKTsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
Zmlyc3RUcmFuc2FjdGlvbkNvbXBsZXRlKCkKK3sKKyAgICBldmFsQW5kTG9nKCJkYi5jbG9zZSgp
Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oWydzdG9yZSdd
LCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1Rf
QUxMT1dFRF9FUlIiKTsKKworICAgIGRlYnVnKCIiKQorICAgIGRlYnVnKCJ2ZXJpZnkgdGhhdCB3
ZSBjYW4gcmVvcGVuIHRoZSBkYiBhZnRlciBjYWxsaW5nIGNsb3NlIikKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0aW9uLWFmdGVyLWNsb3NlJykiKTsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9uU2Vjb25kT3BlbgorICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvblNlY29uZE9wZW4o
KSB7CisgICAgc2Vjb25kX2RiID0gZXZhbEFuZExvZygic2Vjb25kX2RiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOworICAgIGN1cnJlbnRUcmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coImN1cnJlbnRU
cmFuc2FjdGlvbiA9IHNlY29uZF9kYi50cmFuc2FjdGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0
aW9uLlJFQURfV1JJVEUpIik7CisgICAgc3RvcmUgPSBjdXJyZW50VHJhbnNhY3Rpb24ub2JqZWN0
U3RvcmUoJ3N0b3JlJyk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdG9y
ZS5wdXQoJzEnLCAnMicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvbkZpbmFsUHV0U3Vj
Y2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICBjdXJyZW50VHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZpbmlzaEpTVGVzdDsKKyAgICBjdXJy
ZW50VHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworfQorCitm
dW5jdGlvbiBvbkZpbmFsUHV0U3VjY2VzcygpIHsKKyAgICB0ZXN0UGFzc2VkKCJmaW5hbCBwdXQg
c3VjY2VzcyIpOworfQorCit0ZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tYW5kLW9iamVjdHN0b3JlLWNhbGxzLmpz
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWFu
ZC1vYmplY3RzdG9yZS1jYWxscy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YWM2MWQ4MzJiOTdmMzNjYTZmMDI2
MjlkYjQ4YWMxM2UyMzc2MjI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWFuZC1vYmplY3RzdG9yZS1jYWxscy5q
cwpAQCAtMCwwICsxLDEyNCBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9y
dFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Cisg
ICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IElu
ZGV4ZWREQidzIHRyYW5zYWN0aW9uIGFuZCBvYmplY3RTdG9yZSBjYWxscyIpOworCitmdW5jdGlv
biB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCd0cmFuc2FjdGlvbi1hbmQtb2JqZWN0c3RvcmUt
Y2FsbHMnLCAnZGVzY3JpcHRpb24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1
Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBzZWxmLmRiID0gZXZhbEFuZExvZygi
ZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
c3VsdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBjbGVhbkRhdGFiYXNlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKK3sKKyAgICB0cmFucyA9
IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIGRlbGV0ZUFs
bE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9y
ZSgnYScpIik7CisgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2InKSIpOwor
ICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpLmNyZWF0ZUluZGV4
KCdpbmRleCcsICdzb21lX3BhdGgnKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLmFkZEV2ZW50
TGlzdGVuZXIoJ2NvbXBsZXRlJywgY3JlYXRlZCwgdHJ1ZSkiKTsKKyAgICBkZWJ1ZygiIik7Cit9
CisKK2Z1bmN0aW9uIGNyZWF0ZWQoKQoreworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMg
PSBkYi50cmFuc2FjdGlvbihbJ2EnXSkiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RT
dG9yZSgnYScpIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigidHJhbnMub2JqZWN0U3Rv
cmUoJ2InKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7CisgICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ3gnKSIsICJJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7CisgICAgZGVidWcoIiIpOworCisgICAgdHJhbnMg
PSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnYSddKSIpOworICAgIGV2YWxB
bmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdhJykiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJ0cmFucy5vYmplY3RTdG9yZSgnYicpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9G
T1VORF9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0cmFucy5vYmplY3RTdG9y
ZSgneCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKKyAgICBkZWJ1
ZygiIik7CisKKyAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24o
WydiJ10pIik7CisgICAgZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2InKSIpOworICAg
IGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInRyYW5zLm9iamVjdFN0b3JlKCdhJykiLCAiSURCRGF0
YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRp
b24oInRyYW5zLm9iamVjdFN0b3JlKCd4JykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZP
VU5EX0VSUiIpOworICAgIGRlYnVnKCIiKTsKKworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJh
bnMgPSBkYi50cmFuc2FjdGlvbihbJ2EnLCAnYiddKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5z
Lm9iamVjdFN0b3JlKCdhJykiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgn
YicpIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ3gn
KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7CisgICAgZGVidWcoIiIp
OworCisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnYics
ICdhJ10pIik7CisgICAgZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2EnKSIpOworICAg
IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdiJykiKTsKKyAgICBldmFsQW5kRXhwZWN0
RXhjZXB0aW9uKCJ0cmFucy5vYmplY3RTdG9yZSgneCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9u
Lk5PVF9GT1VORF9FUlIiKTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICBkZWJ1ZygiUGFzc2luZyBh
IHN0cmluZyBhcyB0aGUgZmlyc3QgYXJndW1lbnQgaXMgYSBzaG9ydGN1dCBmb3IganVzdCBvbmUg
b2JqZWN0IHN0b3JlOiIpOworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFu
c2FjdGlvbignYScpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2EnKSIp
OworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInRyYW5zLm9iamVjdFN0b3JlKCdiJykiLCAi
SURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RF
eGNlcHRpb24oInRyYW5zLm9iamVjdFN0b3JlKCd4JykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24u
Tk9UX0ZPVU5EX0VSUiIpOworICAgIGRlYnVnKCIiKTsKKworICAgIHNob3VsZFRocm93KCJ0cmFu
cyA9IGRiLnRyYW5zYWN0aW9uKCkiKTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICBldmFsQW5kRXhw
ZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbihbJ3gnXSkiLCAiSURCRGF0YWJhc2VFeGNlcHRp
b24uTk9UX0ZPVU5EX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5z
YWN0aW9uKFsneCddKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7Cisg
ICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oWydhJywgJ3gnXSkiLCAi
SURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RF
eGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKFsneCcsICd4J10pIiwgIklEQkRhdGFiYXNlRXhjZXB0
aW9uLk5PVF9GT1VORF9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFu
c2FjdGlvbihbJ2EnLCAneCcsICdiJ10pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VO
RF9FUlIiKTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICBkZWJ1ZygiRXhjZXB0aW9uIHRocm93biB3
aGVuIG5vIHN0b3JlcyBzcGVjaWZpZWQ6Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigi
ZGIudHJhbnNhY3Rpb24oW10pIiwgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19FUlIiKTsK
KyAgICBkZWJ1ZygiIik7CisKKyAgICBkZWJ1Zygie30gY29lcmNlcyB0byBhIHN0cmluZyAtIHNv
IG5vIG1hdGNoLCBidXQgbm90IGEgdHlwZSBlcnJvcjoiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJkYi50cmFuc2FjdGlvbih7fSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZP
VU5EX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKHtt
b2RlOjB9KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7CisgICAgZGVi
dWcoIiIpOworCisgICAgZGVidWcoIk92ZXJyaWRpbmcgdGhlIGRlZmF1bHQgc3RyaW5nIGNvZXJj
aW9uIG1ha2VzIHRoZXNlIHdvcms6Iik7CisgICAgZXZhbEFuZExvZygiZGIudHJhbnNhY3Rpb24o
e3RvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuICdhJzt9fSkiKTsKKyAgICBldmFsQW5kTG9nKCJk
Yi50cmFuc2FjdGlvbihbe3RvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuICdhJzt9fV0pIik7Cisg
ICAgZGVidWcoIi4uLiBidXQgeW91IHN0aWxsIG5lZWQgdG8gc3BlY2lmeSBhIHJlYWwgc3RvcmU6
Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oW3t0b1N0cmlu
ZzpmdW5jdGlvbigpe3JldHVybiAneCc7fX1dKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1Rf
Rk9VTkRfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24o
W3t0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiAneCc7fX1dKSIsICJJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5OT1RfRk9VTkRfRVJSIik7CisgICAgZGVidWcoIiIpOworCisgICAgdHJhbnMgPSBldmFs
QW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUnXSkiKTsKKyAgICBzaG91bGRC
ZVRydWUoInRyYW5zICE9IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFi
b3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworICAgIHRyYW5zLm9uY29tcGxldGUgPSBhZnRlckNvbXBsZXRlOworICAgIGV2YWxBbmRMb2co
InN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICBzaG91bGRCZVRydWUo
InN0b3JlICE9IG51bGwiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZS5nZXQoJ3NvbWVfa2V5Jyki
KTsKK30KKworZnVuY3Rpb24gYWZ0ZXJDb21wbGV0ZSgpCit7CisgICAgZGVidWcoInRyYW5zYWN0
aW9uIGNvbXBsZXRlLCBlbnN1cmluZyBtZXRob2RzIGZhaWwiKTsKKyAgICBzaG91bGRCZVRydWUo
InRyYW5zICE9IG51bGwiKTsKKyAgICBzaG91bGRCZVRydWUoInN0b3JlICE9IG51bGwiKTsKKyAg
ICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKSIsICJJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0
RXhjZXB0aW9uKCJzdG9yZS5pbmRleCgnaW5kZXgnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5O
T1RfQUxMT1dFRF9FUlIiKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWJhc2ljcy5qcyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1iYXNpY3MuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDZjMmI2Y2NjZTlhNjEzZTNmN2ZkOTBlNDQ4ZWQzMThjMDE5ZDY1MQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2Fj
dGlvbi1iYXNpY3MuanMKQEAgLTAsMCArMSwyODcgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMp
IHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlw
dGlvbigiVGVzdCBJbmRleGVkREIgdHJhbnNhY3Rpb24gYmFzaWNzLiIpOworCitmdW5jdGlvbiB0
ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCd0cmFuc2FjdGlvbi1iYXNpY3MnKSIpOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAg
ICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVl
c3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7CisgICAgZGVsZXRlQWxs
T2JqZWN0U3RvcmVzKGRiLCBjaGVja01ldGFkYXRhRW1wdHkpOworICAgIGV2ZW50LnRhcmdldC5y
ZXN1bHQub25jb21wbGV0ZSA9IHRlc3RTZXRWZXJzaW9uQWJvcnQxOworfQorCitmdW5jdGlvbiB0
ZXN0U2V0VmVyc2lvbkFib3J0MSgpCit7CisgICAgY2hlY2tNZXRhZGF0YUVtcHR5KCk7CisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdGFydFNldFZlcnNpb24oJ3ZlcnNpb24g
ZmFpbCcpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRSZW1vdmVJREJPYmplY3RzOwor
fQorCitmdW5jdGlvbiBhZGRSZW1vdmVJREJPYmplY3RzKCkKK3sKKyAgICBkZWJ1ZygiYWRkUmVt
b3ZlSURCT2JqZWN0cygpOiIpOworICAgIHZhciB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwi
KTsKKyAgICB0cmFucy5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIHRlc3RTZXRWZXJzaW9uQWJv
cnQyLCB0cnVlKTsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2Fs
bGJhY2s7CisKKyAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9i
amVjdFN0b3JlKCdzdG9yZUZhaWwnLCBudWxsKSIpOworICAgIHZhciBpbmRleCA9IGV2YWxBbmRM
b2coImluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4RmFpbCcsICd4JykiKTsKKworICAg
IGV2YWxBbmRMb2coImRiLmRlbGV0ZU9iamVjdFN0b3JlKCdzdG9yZUZhaWwnKSIpOworICAgIGV2
YWxBbmRMb2coInN0b3JlLmRlbGV0ZUluZGV4KCdpbmRleEZhaWwnKSIpOworCisgICAgdHJhbnMu
YWJvcnQoKTsKK30KKworZnVuY3Rpb24gdGVzdFNldFZlcnNpb25BYm9ydDIoKQoreworICAgIGRl
YnVnKCIiKTsKKyAgICBkZWJ1ZygidGVzdFNldFZlcnNpb25BYm9ydDIoKToiKTsKKyAgICBjaGVj
a01ldGFkYXRhRW1wdHkoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHN0
YXJ0U2V0VmVyc2lvbigndmVyc2lvbiBmYWlsJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGFkZFJlbW92ZUFkZElEQk9iamVjdHM7Cit9CisKK2Z1bmN0aW9uIGFkZFJlbW92ZUFkZElEQk9i
amVjdHMoKQoreworICAgIGRlYnVnKCJhZGRSZW1vdmVBZGRJREJPYmplY3RzKCk6Iik7CisgICAg
dmFyIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Cisg
ICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLmFkZEV2ZW50TGlz
dGVuZXIoJ2Fib3J0JywgdGVzdFNldFZlcnNpb25BYm9ydDMsIGZhbHNlKTsKKyAgICB0cmFucy5v
bmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7CisKKyAgICB2YXIgc3RvcmUg
PSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZUZhaWwnLCBu
dWxsKSIpOworICAgIHZhciBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuY3JlYXRl
SW5kZXgoJ2luZGV4RmFpbCcsICd4JykiKTsKKworICAgIGV2YWxBbmRMb2coImRiLmRlbGV0ZU9i
amVjdFN0b3JlKCdzdG9yZUZhaWwnKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlLmRlbGV0ZUlu
ZGV4KCdpbmRleEZhaWwnKSIpOworCisgICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUg
PSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVGYWlsJywgbnVsbCkiKTsKKyAgICB2YXIgaW5k
ZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleEZhaWwnLCAn
eCcpIik7CisKKyAgICB0cmFucy5hYm9ydCgpOworfQorCitmdW5jdGlvbiB0ZXN0U2V0VmVyc2lv
bkFib3J0MygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0U2V0VmVyc2lvbkFi
b3J0MygpOiIpOworICAgIHNob3VsZEJlRmFsc2UoImV2ZW50LmNhbmNlbGFibGUiKTsKKyAgICBj
aGVja01ldGFkYXRhRW1wdHkoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IHN0YXJ0U2V0VmVyc2lvbigndmVyc2lvbiBmYWlsJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGFkZElEQk9iamVjdHM7Cit9CisKK2Z1bmN0aW9uIGFkZElEQk9iamVjdHMoKQoreworICAg
IGRlYnVnKCJhZGRJREJPYmplY3RzKCk6Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiZXZlbnQuY2Fu
Y2VsYWJsZSIpOworICAgIHZhciB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFy
Z2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKyAgICB0
cmFucy5vbmFib3J0ID0gdGVzdEluYWN0aXZlQWJvcnRlZFRyYW5zYWN0aW9uOworICAgIHRyYW5z
Lm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjazsKKworICAgIHN0b3JlID0g
ZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVGYWlsJywgbnVs
bCkiKTsKKyAgICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgo
J2luZGV4RmFpbCcsICd4JykiKTsKKworICAgIHRyYW5zLmFib3J0KCk7Cit9CisKK2Z1bmN0aW9u
IHRlc3RJbmFjdGl2ZUFib3J0ZWRUcmFuc2FjdGlvbigpCit7CisgICAgZGVidWcoIiIpOworICAg
IGRlYnVnKCJ0ZXN0SW5hY3RpdmVBYm9ydGVkVHJhbnNhY3Rpb24oKToiKTsKKyAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKCJpbmRleC5vcGVuQ3Vyc29yKCkiLCAiSURCRGF0YWJhc2VFeGNlcHRp
b24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlv
bigiaW5kZXgub3BlbktleUN1cnNvcigpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNU
SU9OX0lOQUNUSVZFX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4Lmdl
dCgwKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsK
KyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJpbmRleC5nZXRLZXkoMCkiLCAiSURCRGF0YWJh
c2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7CisgICAgZXZhbEFuZEV4cGVj
dEV4Y2VwdGlvbigiaW5kZXguY291bnQoKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FD
VElPTl9JTkFDVElWRV9FUlIiKTsKKworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3Jl
LnB1dCgwLCAwKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9F
UlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5hZGQoMCwgMCkiLCAiSURC
RGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7CisgICAgZXZhbEFu
ZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuZGVsZXRlKDApIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9u
LlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24o
InN0b3JlLmNsZWFyKCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJ
VkVfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuZ2V0KDApIiwgIklE
QkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOworICAgIGV2YWxB
bmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLm9wZW5DdXJzb3IoKSIsICJJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsKKworICAgIHRlc3RTZXRWZXJzaW9uQWJv
cnQ0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTZXRWZXJzaW9uQWJvcnQ0KCkKK3sKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoInRlc3RTZXRWZXJzaW9uQWJvcnQ0KCk6Iik7CisgICAgY2hlY2tN
ZXRhZGF0YUVtcHR5KCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdGFy
dFNldFZlcnNpb24oJ3ZlcnNpb24gZmFpbCcpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBh
ZGRJREJPYmplY3RzQW5kQ29tbWl0OworfQorCitmdW5jdGlvbiBhZGRJREJPYmplY3RzQW5kQ29t
bWl0KCkKK3sKKyAgICBkZWJ1ZygiYWRkSURCT2JqZWN0c0FuZENvbW1pdCgpOiIpOworICAgIHZh
ciB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAg
IHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5l
eHBlY3RlZEFib3J0Q2FsbGJhY2s7CisKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlRmFpbCcsIG51bGwpIik7CisgICAgaW5kZXggPSBl
dmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleEZhaWwnLCAneCcpIik7
CisKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gdGVzdEluYWN0aXZlQ29tcGxldGVkVHJhbnNhY3Rp
b247Cit9CisKK2Z1bmN0aW9uIHRlc3RJbmFjdGl2ZUNvbXBsZXRlZFRyYW5zYWN0aW9uKCkKK3sK
KyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInRlc3RJbmFjdGl2ZUNvbXBsZXRlZFRyYW5zYWN0
aW9uKCk6Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXgub3BlbkN1cnNvcigp
IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOworICAg
IGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4Lm9wZW5LZXlDdXJzb3IoKSIsICJJREJEYXRh
YmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsKKyAgICBldmFsQW5kRXhw
ZWN0RXhjZXB0aW9uKCJpbmRleC5nZXQoMCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNB
Q1RJT05fSU5BQ1RJVkVfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXgu
Z2V0S2V5KDApIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VS
UiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4LmNvdW50KCkiLCAiSURCRGF0
YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7CisKKyAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5wdXQoMCwgMCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24u
VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigi
c3RvcmUuYWRkKDAsIDApIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNU
SVZFX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmRlbGV0ZSgwKSIs
ICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsKKyAgICBl
dmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5jbGVhcigpIiwgIklEQkRhdGFiYXNlRXhjZXB0
aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRp
b24oInN0b3JlLmdldCgwKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFD
VElWRV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5vcGVuQ3Vyc29y
KCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7CisK
KyAgICB0ZXN0U2V0VmVyc2lvbkFib3J0NSgpOworfQorCitmdW5jdGlvbiB0ZXN0U2V0VmVyc2lv
bkFib3J0NSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0U2V0VmVyc2lvbkFi
b3J0NSgpOiIpOworICAgIGNoZWNrTWV0YWRhdGFFeGlzdGluZ09iamVjdFN0b3JlKCk7CisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdGFydFNldFZlcnNpb24oJ3ZlcnNpb24g
ZmFpbCcpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSByZW1vdmVJREJPYmplY3RzOworfQor
CitmdW5jdGlvbiByZW1vdmVJREJPYmplY3RzKCkKK3sKKyAgICBkZWJ1ZygicmVtb3ZlSURCT2Jq
ZWN0cygpOiIpOworICAgIHZhciB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFy
Z2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKyAgICB0
cmFucy5vbmFib3J0ID0gdGVzdFNldFZlcnNpb25BYm9ydDY7CisgICAgdHJhbnMub25jb21wbGV0
ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOworCisgICAgdmFyIHN0b3JlID0gZXZhbEFu
ZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVGYWlsJykiKTsKKyAgICBldmFs
QW5kTG9nKCJzdG9yZS5kZWxldGVJbmRleCgnaW5kZXhGYWlsJykiKTsKKyAgICBldmFsQW5kTG9n
KCJkYi5kZWxldGVPYmplY3RTdG9yZSgnc3RvcmVGYWlsJykiKTsKKworICAgIHRyYW5zLmFib3J0
KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTZXRWZXJzaW9uQWJvcnQ2KCkKK3sKKyAgICBkZWJ1Zygi
Iik7CisgICAgZGVidWcoInRlc3RTZXRWZXJzaW9uQWJvcnQ2KCk6Iik7CisgICAgY2hlY2tNZXRh
ZGF0YUV4aXN0aW5nT2JqZWN0U3RvcmUoKTsKKyAgICBzZXROZXdWZXJzaW9uKCk7Cit9CisKK2Z1
bmN0aW9uIHN0YXJ0U2V0VmVyc2lvbih2ZXJzaW9uTmFtZSkKK3sKKyAgICByZXF1ZXN0ID0gZGIu
c2V0VmVyc2lvbih2ZXJzaW9uTmFtZSk7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7CisgICAgcmV0dXJuIHJlcXVlc3Q7Cit9CisKK2Z1bmN0aW9uIGNoZWNr
TWV0YWRhdGFFbXB0eSgpCit7CisgICAgc2hvdWxkQmUoInNlbGYuZGIub2JqZWN0U3RvcmVOYW1l
cyIsICJbXSIpOworICAgIHNob3VsZEJlKCJzZWxmLmRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3Ro
IiwgIjAiKTsKKyAgICBzaG91bGRCZSgic2VsZi5kYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5z
KCdzdG9yZUZhaWwnKSIsICJmYWxzZSIpOworfQorCitmdW5jdGlvbiBjaGVja01ldGFkYXRhRXhp
c3RpbmdPYmplY3RTdG9yZSgpCit7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMi
LCAiWydzdG9yZUZhaWwnXSIpOworICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxl
bmd0aCIsICIxIik7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMo
J3N0b3JlRmFpbCcpIiwgInRydWUiKTsKK30KKworZnVuY3Rpb24gc2V0TmV3VmVyc2lvbigpCit7
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJyki
KTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb25TdWNjZXNzOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXRW
ZXJzaW9uU3VjY2VzcygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJzZXRWZXJzaW9u
U3VjY2VzcygpOiIpOworICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Cisg
ICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zLmFk
ZEV2ZW50TGlzdGVuZXIoJ2NvbXBsZXRlJywgY29tcGxldGVDYWxsYmFjaywgZmFsc2UpOworICAg
IHNlbGYuY29tcGxldGVFdmVudEZpcmVkID0gZmFsc2U7CisKKyAgICBkZWxldGVBbGxPYmplY3RT
dG9yZXMoZGIpOworCisgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3Jl
TmFtZScsIG51bGwpIik7Cit9CisKK2Z1bmN0aW9uIGNvbXBsZXRlQ2FsbGJhY2soKQoreworICAg
IHNob3VsZEJlRmFsc2UoImV2ZW50LmNhbmNlbGFibGUiKTsKKyAgICB0ZXN0UGFzc2VkKCJjb21w
bGV0ZSBldmVudCBmaXJlZCIpOworICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygiZGIudHJh
bnNhY3Rpb24oWydzdG9yZU5hbWUnXSkiKTsKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gYWJv
cnRDYWxsYmFjazsKKyAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0
aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
Zygic3RvcmUubmFtZSIsICJzdG9yZU5hbWUiKTsKK30KKworZnVuY3Rpb24gYWJvcnRDYWxsYmFj
aygpCit7CisgICAgdGVzdFBhc3NlZCgiYWJvcnQgZXZlbnQgZmlyZWQiKTsKKyAgICB0ZXN0RE9N
U3RyaW5nTGlzdCgpOworfQorCitmdW5jdGlvbiB0ZXN0RE9NU3RyaW5nTGlzdCgpCit7CisgICAg
ZGVidWcoIiIpOworICAgIGRlYnVnKCJWZXJpZnlpbmcgRE9NU3RyaW5nTGlzdCB3b3JrcyBhcyBh
cmd1bWVudCBmb3IgSURCRGF0YWJhc2UudHJhbnNhY3Rpb24oKSIpOworICAgIGRlYnVnKCJkYi5v
YmplY3RTdG9yZU5hbWVzIGlzICIgKyBkYi5vYmplY3RTdG9yZU5hbWVzKTsKKyAgICBkZWJ1Zygi
Li4uIHdoaWNoIGNvbnRhaW5zOiAiICsgSlNPTi5zdHJpbmdpZnkoQXJyYXkucHJvdG90eXBlLnNs
aWNlLmNhbGwoZGIub2JqZWN0U3RvcmVOYW1lcykpKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFuc2Fj
dGlvbiA9IGRiLnRyYW5zYWN0aW9uKGRiLm9iamVjdFN0b3JlTmFtZXMpIik7CisgICAgdGVzdFBh
c3NlZCgibm8gZXhjZXB0aW9uIHRocm93biIpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGIu
b2JqZWN0U3RvcmVOYW1lcy5sZW5ndGg7ICsraSkgeworICAgICAgc2hvdWxkQmVUcnVlKCJ0cmFu
c2FjdGlvbi5vYmplY3RTdG9yZSgiICsgSlNPTi5zdHJpbmdpZnkoZGIub2JqZWN0U3RvcmVOYW1l
c1tpXSkgKyAiKSAhPSBudWxsIik7CisgICAgfQorICAgIHRlc3RQYXNzZWQoImFsbCBzdG9yZXMg
cHJlc2VudCBpbiB0cmFuc2FjdGlvbiIpOworICAgIHRlc3RJbnZhbGlkTW9kZSgpOworfQorCitm
dW5jdGlvbiB0ZXN0SW52YWxpZE1vZGUoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygi
VmVyaWZ5IHRoYXQgc3BlY2lmeWluZyBhbiBpbnZhbGlkIG1vZGUgcmFpc2VzIGFuIGV4Y2VwdGlv
biIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKFsnc3RvcmVO
YW1lJ10sIDMpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PTl9UUkFOU0lFTlRfRVJSIik7Cisg
ICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3ZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3Rlc3Qo
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90
cmFuc2FjdGlvbi1jcmFzaC1vbi1hYm9ydC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1jcmFzaC1vbi1hYm9ydC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
NDkzMjEyY2U3Y2FmNjQxMzQ3NjMzYTQzOGVjMzQ1MDBiMWRlNGJhCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWNy
YXNoLW9uLWFib3J0LmpzCkBAIC0wLDAgKzEsMzQgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMp
IHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlw
dGlvbigiVGVzdCBJbmRleGVkREIgdHJhbnNhY3Rpb24gZG9lcyBub3QgY3Jhc2ggb24gYWJvcnQu
Iik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0aW9uLWNy
YXNoLW9uLWFib3J0JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7CisgICAg
ZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignMS4wJykiKTsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IHNldFZlcnNpb25TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCit7Cisg
ICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycpIik7CisgICAgZXZhbEFu
ZExvZygiZGIudHJhbnNhY3Rpb24oJ2ZvbycpIik7CisgICAgZXZhbEFuZExvZygic2VsZi5nYygp
Iik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvdHJhbnNhY3Rpb24tZXZlbnQtcHJvcGFnYXRpb24uanMgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tZXZlbnQtcHJvcGFnYXRpb24uanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZmQ1YzYxYWJlNWNkMWNkN2ZhZDY4ZjkzM2Y5MDZiNTk5ZWVmYjVmZgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90
cmFuc2FjdGlvbi1ldmVudC1wcm9wYWdhdGlvbi5qcwpAQCAtMCwwICsxLDE0NCBAQAoraWYgKHRo
aXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpz
Jyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IGV2ZW50IHByb3BvZ2F0aW9uIG9uIElEQlRyYW5z
YWN0aW9uLiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhl
cygpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndHJhbnNhY3Rp
b24tZXZlbnQtcHJvcGFnYXRpb24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVy
c2lvbjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30K
KworZnVuY3Rpb24gc2V0VmVyc2lvbigpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRW
ZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVF
eGlzdGluZzsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
K30KKworZnVuY3Rpb24gZGVsZXRlRXhpc3RpbmcoKQoreworICAgIHNlbGYudHJhbnMgPSBldmFs
QW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUo
InRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENh
bGxiYWNrOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSBzdGFydFRlc3QiKTsK
KworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBzdG9yZSA9IGV2YWxBbmRM
b2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7Cisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9
LCAna2V5JykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gc3RhcnRUZXN0KCkKK3sKKyAgICBkZWJ1ZygiVmVyaWZpbmcgYWJv
cnQiKTsKKyAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydz
dG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICBldmFsQW5kTG9n
KCJ0cmFucy5vbmFib3J0ID0gYWJvcnRGaXJlZENhbGxiYWNrIik7CisgICAgZXZhbEFuZExvZygi
dHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrIik7CisgICAgZXZhbEFu
ZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBkYkFib3J0Q2FwdHVyZUNhbGxiYWNr
LCB0cnVlKSIpOworICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywg
ZGJBYm9ydEJ1YmJsZUNhbGxiYWNrLCBmYWxzZSkiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5hZGRF
dmVudExpc3RlbmVyKCdjb21wbGV0ZScsIHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrLCB0cnVl
KSIpOworICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50TGlzdGVuZXIoJ2NvbXBsZXRlJywgdW5l
eHBlY3RlZENvbXBsZXRlQ2FsbGJhY2ssIGZhbHNlKSIpOworICAgIHN0b3JlID0gZXZhbEFuZExv
Zygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICBldmFsQW5k
TG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7CisgICAgZGJD
YXB0dXJlRmlyZWQgPSBmYWxzZTsKKyAgICBhYm9ydEZpcmVkID0gZmFsc2U7CisgICAgZGJCdWJi
bGVGaXJlZDEgPSBmYWxzZTsKK30KKworZnVuY3Rpb24gZGJBYm9ydENhcHR1cmVDYWxsYmFjaygp
Cit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJJbiBJREJEYXRhYmFzZSBhYm9ydCBjYXB0
dXJlIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGJDYXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRC
ZUZhbHNlKCJhYm9ydEZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVGaXJlZDEi
KTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0IiwgInRyYW5zIik7CisgICAgc2hvdWxkQmUo
ImV2ZW50LmN1cnJlbnRUYXJnZXQiLCAiZGIiKTsKKyAgICBkYkNhcHR1cmVGaXJlZCA9IHRydWU7
Cit9CisKK2Z1bmN0aW9uIGFib3J0RmlyZWRDYWxsYmFjaygpCit7CisgICAgZGVidWcoIiIpOwor
ICAgIGRlYnVnKCJJbiBhYm9ydCBoYW5kbGVyIik7CisgICAgc2hvdWxkQmVUcnVlKCJkYkNhcHR1
cmVGaXJlZCIpOworICAgIHNob3VsZEJlRmFsc2UoImFib3J0RmlyZWQiKTsKKyAgICBzaG91bGRC
ZUZhbHNlKCJkYkJ1YmJsZUZpcmVkMSIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAi
dHJhbnMiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQuY3VycmVudFRhcmdldCIsICJ0cmFucyIpOwor
ICAgIGFib3J0RmlyZWQgPSB0cnVlOworfQorCitmdW5jdGlvbiBkYkFib3J0QnViYmxlQ2FsbGJh
Y2soKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiSW4gSURCRGF0YWJhc2UgZXJyb3Ig
YnViYmxlIik7CisgICAgc2hvdWxkQmVUcnVlKCJkYkNhcHR1cmVGaXJlZCIpOworICAgIHNob3Vs
ZEJlVHJ1ZSgiYWJvcnRGaXJlZCIpOworICAgIHNob3VsZEJlRmFsc2UoImRiQnViYmxlRmlyZWQx
Iik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldCIsICJ0cmFucyIpOworICAgIHNob3VsZEJl
KCJldmVudC5jdXJyZW50VGFyZ2V0IiwgImRiIik7CisgICAgZGJCdWJibGVGaXJlZDEgPSB0cnVl
OworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVmVyaWZpbmcgc3VjY2Vzcy4iKTsKKyAgICB0
cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwg
SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNv
bXBsZXRlID0gY29tcGxldGVGaXJlZENhbGxiYWNrIik7CisgICAgZXZhbEFuZExvZygidHJhbnMu
b25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrIik7CisgICAgZXZhbEFuZExvZygiZGIu
cmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBkYkFib3J0Q2FwdHVyZUNhbGxiYWNrLCB0cnVl
KSIpOworICAgIGV2YWxBbmRMb2coImRiLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgZGJB
Ym9ydEJ1YmJsZUNhbGxiYWNrLCBmYWxzZSkiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5yZW1vdmVF
dmVudExpc3RlbmVyKCdjb21wbGV0ZScsIHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrLCB0cnVl
KSIpOworICAgIGV2YWxBbmRMb2coImRiLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NvbXBsZXRlJywg
dW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2ssIGZhbHNlKSIpOworICAgIGV2YWxBbmRMb2coImRi
LmFkZEV2ZW50TGlzdGVuZXIoJ2NvbXBsZXRlJywgZGJDb21wbGV0ZUNhcHR1cmVDYWxsYmFjaywg
dHJ1ZSkiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdjb21wbGV0ZScs
IGRiQ29tcGxldGVCdWJibGVDYWxsYmFjaywgZmFsc2UpIik7CisgICAgZXZhbEFuZExvZygiZGIu
YWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjaywgdHJ1ZSki
KTsKKyAgICBldmFsQW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIHVuZXhwZWN0
ZWRBYm9ydENhbGxiYWNrLCBmYWxzZSkiKTsKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3Jl
ID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgZXZhbEFuZExvZygic3Rv
cmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXkyJykiKTsKKyAgICBkYkNhcHR1cmVG
aXJlZCA9IGZhbHNlOworICAgIGNvbXBsZXRlRmlyZWQgPSBmYWxzZTsKKyAgICBkYkJ1YmJsZUZp
cmVkMiA9IGZhbHNlOworfQorCitmdW5jdGlvbiBkYkNvbXBsZXRlQ2FwdHVyZUNhbGxiYWNrKCkK
K3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIkluIElEQkRhdGFiYXNlIGNvbXBsZXRlIGNh
cHR1cmUiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJkYkNhcHR1cmVGaXJlZCIpOworICAgIHNob3Vs
ZEJlRmFsc2UoImNvbXBsZXRlRmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZp
cmVkMiIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAidHJhbnMiKTsKKyAgICBzaG91
bGRCZSgiZXZlbnQuY3VycmVudFRhcmdldCIsICJkYiIpOworICAgIGRiQ2FwdHVyZUZpcmVkID0g
dHJ1ZTsKK30KKworZnVuY3Rpb24gY29tcGxldGVGaXJlZENhbGxiYWNrKCkKK3sKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoIkluIElEQlJlcXVlc3QgaGFuZGxlciIpOworICAgIHNob3VsZEJl
VHJ1ZSgiZGJDYXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJjb21wbGV0ZUZpcmVk
Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVGaXJlZDIiKTsKKyAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0IiwgInRyYW5zIik7CisgICAgc2hvdWxkQmUoImV2ZW50LmN1cnJlbnRUYXJn
ZXQiLCAidHJhbnMiKTsKKyAgICBjb21wbGV0ZUZpcmVkID0gdHJ1ZTsKKyAgICBkZWJ1ZygiIik7
CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIGRiQ29tcGxldGVCdWJibGVDYWxs
YmFjaygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJJbiBJREJEYXRhYmFzZSBjb21w
bGV0ZSBidWJibGUiKTsKKyAgICB0ZXN0RmFpbGVkKCJDb21wbGV0ZSBidWJibGUgY2FsbGJhY2sg
c2hvdWxkIE5PVCBmaXJlIik7CisgICAgZGJCdWJibGVGaXJlZDIgPSB0cnVlOworfQorCit0ZXN0
KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLXJlYWQtb25seS5qcyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1yZWFkLW9u
bHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZDk0M2EzMWNmZDdiNWFhMGM3MTdkYTEzZDdhZmQwOWYxMGEzOWJh
ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy90cmFuc2FjdGlvbi1yZWFkLW9ubHkuanMKQEAgLTAsMCArMSw1OCBAQAoraWYgKHRoaXMu
aW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7
Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IHJlYWQtb25seSB0cmFuc2FjdGlvbnMgaW4gSW5kZXhl
ZERCLiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygp
OworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCd0cmFuc2FjdGlv
bi1yZWFkLW9ubHknKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0
aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBz
ZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInJlc3VsdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVhbkRhdGFi
YXNlKCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgZXZlbnQudGFy
Z2V0LnJlc3VsdC5vbmNvbXBsZXRlID0gc2V0VmVyc2lvbkRvbmU7CisgICAgZXZlbnQudGFyZ2V0
LnJlc3VsdC5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgc3RvcmUgPSBl
dmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7CisgICAg
ZXZhbEFuZExvZygic3RvcmUucHV0KCd4JywgJ3knKSIpOworfQorCitmdW5jdGlvbiBzZXRWZXJz
aW9uRG9uZSgpCit7CisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0
aW9uKCdzdG9yZScpIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigidHJhbnMub2JqZWN0
U3RvcmUoJ3N0b3JlJykucHV0KCdhJywgJ2InKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5SRUFE
X09OTFlfRVJSIik7CisKKyAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNh
Y3Rpb24oJ3N0b3JlJykiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0cmFucy5vYmpl
Y3RTdG9yZSgnc3RvcmUnKS5kZWxldGUoJ3gnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5SRUFE
X09OTFlfRVJSIik7CisKKyAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNh
Y3Rpb24oJ3N0b3JlJykiKTsKKyAgICBjdXIgPSBldmFsQW5kTG9nKCJjdXIgPSB0cmFucy5vYmpl
Y3RTdG9yZSgnc3RvcmUnKS5vcGVuQ3Vyc29yKCkiKTsKKyAgICBjdXIub25zdWNjZXNzID0gZ290
Q3Vyc29yOworICAgIGN1ci5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIGdvdEN1cnNvcigpCit7CisgICAgc2hvdWxkQmVGYWxzZSgiIWV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJldmVudC50YXJnZXQucmVz
dWx0LmRlbGV0ZSgpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlJFQURfT05MWV9FUlIiKTsKKwor
ICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tcm9sbGJhY2suanMgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tcm9sbGJh
Y2suanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMGQ4NDgzM2FiNjA5ZjMyNDU1OWE1YWU0NTc2NGJjOGE2NmE0NTEw
MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy90cmFuc2FjdGlvbi1yb2xsYmFjay5qcwpAQCAtMCwwICsxLDkxIEBACitpZiAodGhpcy5p
bXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsK
K30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIHRyYW5zYWN0aW9uIHJvbGxiYWNrLiIp
OworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCd0cmFuc2FjdGlvbi1yb2xs
YmFjaycpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3Bl
blN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOworICAgIHNlbGYuZGIg
PSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkK
K3sKKyAgICBkZWJ1ZygiY2xlYW5EYXRhYmFzZSgpOiIpOworICAgIHNlbGYudHJhbnNhY3Rpb24g
PSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICB0
cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgdHJhbnNh
Y3Rpb24ub25jb21wbGV0ZSA9IHNldFZlcnNpb25Db21wbGV0ZTsKKworICAgIGRlbGV0ZUFsbE9i
amVjdFN0b3JlcyhkYik7CisgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ215
T2JqZWN0U3RvcmUnKSIpOworICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0
aCIsICIxIik7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb25Db21wbGV0ZSgpCit7CisgICAgZGVi
dWcoInNldFZlcnNpb25Db21wbGV0ZSgpOiIpOworCisgICAgc2VsZi50cmFuc2FjdGlvbiA9IGV2
YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydteU9iamVjdFN0b3JlJ10s
IElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9
IGFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRD
b21wbGV0ZUNhbGxiYWNrOworCisgICAgc2VsZi5zdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0g
dHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ215T2JqZWN0U3RvcmUnKSIpOworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoJ3JvbGxiYWNrVmFsdWUnLCAncm9sbGJhY2tLZXkxMjMn
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gYWRkU3VjY2Vz
cygpCit7CisgICAgZGVidWcoImFkZFN1Y2Nlc3MoKToiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQu
dGFyZ2V0LnJlc3VsdCIsICIncm9sbGJhY2tLZXkxMjMnIik7CisKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygic3RvcmUub3BlbkN1cnNvcigpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBv
cGVuQ3Vyc29yU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlbkN1cnNvclN1Y2Nlc3MoKQoreworICAgIGRlYnVn
KCJvcGVuQ3Vyc29yU3VjY2VzcygpOiIpOworICAgIHNlbGYuY3Vyc29yID0gZXZhbEFuZExvZygi
Y3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgdHJhbnNhY3Rpb24uYWJvcnQo
KTsKK30KKworZnVuY3Rpb24gYWJvcnRDYWxsYmFjaygpCit7CisgICAgZGVidWcoImFib3J0Q2Fs
bGJhY2soKToiKTsKKyAgICBkZWJ1ZygnVHJhbnNhY3Rpb24gd2FzIGFib3J0ZWQuJyk7CisKKyAg
ICBzZWxmLnRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2Fj
dGlvbihbJ215T2JqZWN0U3RvcmUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRCkiKTsKKyAgICBzZWxm
LnN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnbXlP
YmplY3RTdG9yZScpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmdldCgncm9s
bGJhY2tLZXkxMjMnKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0U3VjY2VzczsKK30KKworZnVuY3Rp
b24gZ2V0U3VjY2VzcygpCit7CisgICAgZGVidWcoImdldFN1Y2Nlc3MoKToiKTsKKyAgICBzaG91
bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ1bmRlZmluZWQiKTsKKworICAgIHNob3VsZEJl
KCJjdXJzb3IudmFsdWUiLCAiJ3JvbGxiYWNrVmFsdWUnIik7CisgICAgZmluaXNoSlNUZXN0KCk7
Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tc3RvcmVO
YW1lcy1yZXF1aXJlZC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy90cmFuc2FjdGlvbi1zdG9yZU5hbWVzLXJlcXVpcmVkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1YTNlZDEy
YWFjOGE4MDQ5Yjk4ODc3NDA5NWQ1YmUyZTVhNjQyZWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tc3RvcmVOYW1l
cy1yZXF1aXJlZC5qcwpAQCAtMCwwICsxLDM2IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7
CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRp
b24oIlRlc3QgSW5kZXhlZERCOiB0cmFuc2FjdGlvbiBzdG9yZU5hbWVzIHJlcXVpcmVkIGFyZ3Vt
ZW50cyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygp
OworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24g
PSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWRE
Qi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3Bl
blN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRi
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNy
ZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0
U3RvcmUoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBzaG91bGRU
aHJvdygiZGIudHJhbnNhY3Rpb24oKTsiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVz
dCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90d28tdmVyc2lvbi1jaGFuZ2VzLmpzIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3R3by12ZXJzaW9uLWNoYW5nZXMu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMWUxMGYyYmYxOWYzNDYyNGE1M2E3MDNiMWE5NWVjMmM4OTJiYWFlYgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy90d28tdmVyc2lvbi1jaGFuZ2VzLmpzCkBAIC0wLDAgKzEsOTkgQEAKK2lmICh0aGlzLmltcG9y
dFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQor
CitkZXNjcmlwdGlvbigiVGVzdCBiZWhhdmlvciB3aGVuIHRoZSBzYW1lIGNvbm5lY3Rpb24gY2Fs
bHMgc2V0VmVyc2lvbiB0d2ljZSIpOworCitmdW5jdGlvbiB0ZXN0KCkgeworICAgIHJlbW92ZVZl
bmRvclByZWZpeGVzKCk7CisKKyAgICBzaG91bGRCZUZhbHNlKCJpbmRleGVkREIgPT0gbnVsbCIp
OworICAgIHNob3VsZEJlRmFsc2UoIklEQlRyYW5zYWN0aW9uID09IG51bGwiKTsKKyAgICBvcGVu
REJDb25uZWN0aW9uKCk7Cit9CisKK2Z1bmN0aW9uIG9wZW5EQkNvbm5lY3Rpb24oKQoreworICAg
IGV2YWxBbmRMb2coInNlbGYuc3RhdGUgPSAnc3RhcnRpbmcnIik7CisgICAgdmFyIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndHdvLXZlcnNpb25zLW9uZS1jb25uZWN0aW9u
JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3Vj
Y2VzcygpCit7CisgICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOworICAgIGV2YWxBbmRMb2coInNlbGYuc3RhdGUgPSAwIik7CisKKyAgICB2YXIgdmVy
c2lvbkNoYW5nZVJlcXVlc3QxID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbigndmVyc2lvbiAx
JykiKTsKKyAgICB2ZXJzaW9uQ2hhbmdlUmVxdWVzdDEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0MS5vbnN1Y2Nlc3MgPSBpblNldFZl
cnNpb24xOworCisgICAgLy8gYW5kIGNvbmN1cnJlbnRseS4uLgorCisgICAgdmFyIHZlcnNpb25D
aGFuZ2VSZXF1ZXN0MiA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMicpIik7
CisgICAgdmVyc2lvbkNoYW5nZVJlcXVlc3QyLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKKyAgICB2ZXJzaW9uQ2hhbmdlUmVxdWVzdDIub25zdWNjZXNzID0gaW5TZXRWZXJzaW9u
MjsKK30KKworZnVuY3Rpb24gaW5TZXRWZXJzaW9uMSgpCit7CisgICAgZGVidWcoInNldFZlcnNp
b24oKSAjMSBjYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coInNlbGYuc3RvcmUxID0gZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ3Rlc3Qtc3RvcmUxJykiKTsKKyAgICBzaG91bGRCZSgiKytzZWxmLnN0
YXRlIiwgIjEiKTsKKyAgICB2YXIgcmVxID0gZXZhbEFuZExvZygic2VsZi5zdG9yZTEucHV0KCdh
YWEnLCAxMTEpIik7CisgICAgcmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgc2hvdWxkQmUoIisr
c2VsZi5zdGF0ZSIsICIyIik7CisgICAgICAgIGhhbGZ3YXlEb25lKCk7CisgICAgfTsKK30KKwor
ZnVuY3Rpb24gaW5TZXRWZXJzaW9uMigpCit7CisgICAgZGVidWcoInNldFZlcnNpb24oKSAjMiBj
YWxsYmFjayIpOworICAgIHNob3VsZEJlKCIrK3NlbGYuc3RhdGUiLCAiNCIpOworICAgIGV2YWxB
bmRMb2coInNlbGYuc3RvcmUyID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Rlc3Qtc3RvcmUyJyki
KTsKKworICAgIHZhciByZXEgPSBldmFsQW5kTG9nKCJzZWxmLnN0b3JlMi5wdXQoJ2JiYicsIDIy
MikiKTsKKyAgICByZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJl
cS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZSkgeworICAgICAgICBzaG91bGRCZSgiKytzZWxmLnN0
YXRlIiwgIjUiKTsKKyAgICAgICAgaGFsZndheURvbmUoKTsKKyAgICB9OworfQorCit2YXIgY291
bnRlciA9IDA7CitmdW5jdGlvbiBoYWxmd2F5RG9uZSgpIAoreworICAgIGNvdW50ZXIgKz0gMTsK
KyAgICBpZiAoY291bnRlciA8IDIpIHsKKyAgICAgICAgc2hvdWxkQmUoIisrc2VsZi5zdGF0ZSIs
ICIzIik7CisgICAgICAgIGRlYnVnKCJoYWxmd2F5IHRoZXJlLi4uIiApOworICAgIH0gZWxzZSB7
CisgICAgICAgIHNob3VsZEJlKCIrK3NlbGYuc3RhdGUiLCAiNiIpOworICAgICAgICBjaGVja1Jl
c3VsdHMoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNoZWNrUmVzdWx0cygpIHsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoInNlbGYuZGIudmVyc2lvbiIsICJ2ZXJzaW9uIDIiKTsKKyAgICB0
cmFucyA9IGV2YWxBbmRMb2coInNlbGYudHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3Rlc3Qtc3Rv
cmUxJywgJ3Rlc3Qtc3RvcmUyJ10pIik7CisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzZWxmLnN0
b3JlID0gc2VsZi50cmFucy5vYmplY3RTdG9yZSgndGVzdC1zdG9yZTEnKSIpOworICAgIHJlcSA9
IGV2YWxBbmRMb2coInNlbGYucmVxID0gc2VsZi5zdG9yZS5nZXQoMTExKSIpOworICAgIHJlcS5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxLm9uc3VjY2VzcyA9IGZ1
bmN0aW9uIChlKSB7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0
LnJlc3VsdCIsICJhYWEiKTsKKworICAgICAgICBzdG9yZSA9IGV2YWxBbmRMb2coInNlbGYuc3Rv
cmUgPSBzZWxmLnRyYW5zLm9iamVjdFN0b3JlKCd0ZXN0LXN0b3JlMicpIik7CisgICAgICAgIHJl
cSA9IGV2YWxBbmRMb2coInNlbGYucmVxID0gc2VsZi5zdG9yZS5nZXQoMjIyKSIpOworICAgICAg
ICByZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXEub25z
dWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJiYmIiKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworICAgICAgICB9OworICAgIH07Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvdmFsdWUtdW5kZWZpbmVkLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL3ZhbHVlLXVuZGVmaW5lZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOTcwMzNjNzg3Y2ZkYWI2
NTVkMzdjMTY2MTM1Y2Y4ZDcxZDcwYjRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3ZhbHVlLXVuZGVmaW5lZC5qcwpAQCAtMCwwICsx
LDY2IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3Jp
cHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIHVuZGVm
aW5lZCBhcyByZWNvcmQgdmFsdWUiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3Zl
VmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwor
ICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIg
PSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjcmVhdGVB
bmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIp
OworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdmb28nKTsiKTsKKyAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJyZXN1bHQg
PSBvYmplY3RTdG9yZS5hZGQodW5kZWZpbmVkLCBJbmZpbml0eSk7Iik7CisgICAgcmVzdWx0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXN1bHQub25zdWNjZXNzID0g
Z2V0VmFsdWU7Cit9CisKK2Z1bmN0aW9uIGdldFZhbHVlKCkKK3sKKyAgICByZXN1bHQgPSBldmFs
QW5kTG9nKCJyZXN1bHQgPSBvYmplY3RTdG9yZS5nZXQoSW5maW5pdHkpOyIpOworICAgIHJlc3Vs
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVzdWx0Lm9uc3VjY2Vz
cyA9IGNoZWNrVmFsdWU7Cit9CisKK2Z1bmN0aW9uIGNoZWNrVmFsdWUoKQoreworICAgIHZhbHVl
ID0gZXZhbEFuZExvZygidmFsdWUgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgIHNob3Vs
ZEJlKCJ2YWx1ZSIsICJ1bmRlZmluZWQiKTsKKyAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJyZXN1
bHQgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7CisgICAgcmVzdWx0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXN1bHQub25zdWNjZXNzID0gY2hlY2tDdXJz
b3I7Cit9CisKK2Z1bmN0aW9uIGNoZWNrQ3Vyc29yKCkKK3sKKyAgICBjdXJzb3IgPSBldmFsQW5k
TG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgIGlmIChjdXJzb3IpIHsK
KyAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAiSW5maW5pdHkiKTsKKyAgICAgICAgc2hv
dWxkQmUoImN1cnNvci52YWx1ZSIsICJ1bmRlZmluZWQiKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICB0ZXN0RmFpbGVkKCJjdXJzb3IgaXMgbnVsbCIpOworICAgIH0KKyAgICBmaW5pc2hKU1Rlc3Qo
KTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy92YWx1ZXMtb2RkLXR5cGVz
LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3ZhbHVlcy1vZGQt
dHlwZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uY2FlMTE1YmNkZWIwYmY2ZmYyNjVkOTFhYTk5NDRlNTY4YjU2
ZjRkNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy92YWx1ZXMtb2RkLXR5cGVzLmpzCkBAIC0wLDAgKzEsNzggQEAKK2lmICh0aGlzLmlt
cG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOwor
fQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgb2RkIHZhbHVlIGRhdGF0eXBlcyIpOwor
CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAg
bmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVz
dCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5h
bWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBk
Yi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEtleTE7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0
aW9uIGFkZEtleTEoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBv
YmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7YXV0
b0luY3JlbWVudDogdHJ1ZX0pOyIpOworCisgICAgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnY2FudmFzJyk7CisgICAgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOwor
ICAgIGltYWdlZGF0YSA9IGNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKDEsIDEpOworICAgIHZhbGlk
VHlwZXMgPSBbeyBkZXNjcmlwdGlvbjogJ3JlZ2V4cCcsICAgIHZhbHVlOiBuZXcgUmVnRXhwKCdc
XFxcJykgfSwKKyAgICAgICAgICAgICAgICAgIHsgZGVzY3JpcHRpb246ICdkYXRlJywgICAgICB2
YWx1ZTogbmV3IERhdGUoMCkgfSwKKyAgICAgICAgICAgICAgICAgIHsgZGVzY3JpcHRpb246ICdv
YmplY3QnLCAgICB2YWx1ZTogbmV3IE9iamVjdCgpIH0sCisgICAgICAgICAgICAgICAgICB7IGRl
c2NyaXB0aW9uOiAnaW1hZ2VkYXRhJywgdmFsdWU6IGltYWdlZGF0YSB9LAorICAgIF07CisgICAg
bmV4dFRvQWRkID0gMDsKKyAgICBhZGREYXRhKCk7Cit9CisKK2Z1bmN0aW9uIGFkZERhdGEoKQor
eworICAgIGRlYnVnKCJhZGRpbmcgIiArIHZhbGlkVHlwZXNbbmV4dFRvQWRkXS5kZXNjcmlwdGlv
biArICIgdmFsdWUiKTsKKyAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQo
dmFsaWRUeXBlc1tuZXh0VG9BZGRdLnZhbHVlKSIpOworICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSAr
K25leHRUb0FkZCA8IHZhbGlkVHlwZXMubGVuZ3RoID8gYWRkRGF0YSA6IG9wZW5BQ3Vyc29yOwor
ICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0
aW9uIG9wZW5BQ3Vyc29yKCkKK3sKKyAgICB2YWx1ZUluZGV4ID0gMDsKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgeworICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9n
KCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgICAgICBpZiAoY3Vyc29yKSB7
CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLnRvU3RyaW5nKCkiLCAidmFsaWRU
eXBlc1t2YWx1ZUluZGV4XS52YWx1ZS50b1N0cmluZygpIik7CisgICAgICAgICAgICBpZiAodmFs
dWVJbmRleCA9PSAxKSB7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS50
b1VUQ1N0cmluZygpIiwgIidUaHUsIDAxIEphbiAxOTcwIDAwOjAwOjAwIEdNVCciKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGlmICh2YWx1ZUluZGV4ID09IDMpIHsKKyAgICAgICAgICAg
ICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndpZHRoIiwgIjEiKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOworICAgICAgICAg
ICAgZXZhbEFuZExvZygidmFsdWVJbmRleCsrOyIpOworICAgICAgICB9CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3Rl
c3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdmVyc2lvbi1jaGFuZ2UtYWJvcnQuanMgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdmVyc2lvbi1jaGFuZ2UtYWJv
cnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMGI0NDcxNzJmYmU4MGYxY2UxZGUyODNhMzVmZGNkYzE4MDQ1MGQ5
MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy92ZXJzaW9uLWNoYW5nZS1hYm9ydC5qcwpAQCAtMCwwICsxLDg5IEBACitpZiAodGhpcy5p
bXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsK
K30KKworZGVzY3JpcHRpb24oIkVuc3VyZSB0aGF0IGFib3J0ZWQgVkVSU0lPTl9DSEFOR0UgdHJh
bnNhY3Rpb25zIGFyZSBjb21wbGV0ZWx5IHJvbGxlZCBiYWNrIik7CisKK2Z1bmN0aW9uIHRlc3Qo
KSB7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBvcGVuREJDb25uZWN0aW9uKCk7
Cit9CisKK2Z1bmN0aW9uIG9wZW5EQkNvbm5lY3Rpb24oKQoreworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJpbmRleGVkREIub3BlbigndmVyc2lvbi1jaGFuZ2UtYWJvcnQnKSIpOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAg
ICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAg
ZGVidWcoIiIpOworCisgICAgZXZhbEFuZExvZygidmNyZXEgPSBkYi5zZXRWZXJzaW9uKCd2ZXJz
aW9uIDEnKSIpOworICAgIHZjcmVxLm9uc3VjY2VzcyA9IGluU2V0VmVyc2lvbjE7CisgICAgdmNy
ZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBpblNl
dFZlcnNpb24xKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvbjEoKSBjYWxsYmFjayIpOworICAg
IHNob3VsZEJlVHJ1ZSgidmNyZXEucmVzdWx0IGluc3RhbmNlb2YgSURCVHJhbnNhY3Rpb24iKTsK
KyAgICB0cmFucyA9IHZjcmVxLnJlc3VsdDsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3Rl
ZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSBzZXRWZXJzaW9uMUNvbXBsZXRlOworCisgICAg
ZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUxJykiKTsKK30K
KworZnVuY3Rpb24gc2V0VmVyc2lvbjFDb21wbGV0ZSgpCit7CisgICAgZGVidWcoInNldFZlcnNp
b24xIGNvbXBsZXRlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkYi52ZXJzaW9uIiwg
InZlcnNpb24gMSIpOworICAgIGRlYnVnKCIiKTsKKworICAgIGV2YWxBbmRMb2coInZjcmVxID0g
ZGIuc2V0VmVyc2lvbigndmVyc2lvbiAyJykiKTsKKyAgICB2Y3JlcS5vbnN1Y2Nlc3MgPSBpblNl
dFZlcnNpb24yOworICAgIHZjcmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
K30KKworZnVuY3Rpb24gaW5TZXRWZXJzaW9uMigpCit7CisgICAgZGVidWcoInNldFZlcnNpb24y
KCkgY2FsbGJhY2siKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLnZlcnNpb24iLCAi
dmVyc2lvbiAyIik7CisgICAgc2hvdWxkQmVUcnVlKCJ2Y3JlcS5yZXN1bHQgaW5zdGFuY2VvZiBJ
REJUcmFuc2FjdGlvbiIpOworICAgIHRyYW5zID0gdmNyZXEucmVzdWx0OworICAgIHRyYW5zLm9u
YWJvcnQgPSBzZXRWZXJzaW9uMkFib3J0OworICAgIHRyYW5zLm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRl
Q2FsbGJhY2s7CisKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmRlbGV0ZU9iamVjdFN0b3Jl
KCdzdG9yZTEnKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ3N0b3JlMicpIik7CisKKyAgICAvLyBFbnN1cmUgdGhlIHRlc3QgaGFybmVzcyBlcnJvciBo
YW5kbGVyIGlzIG5vdCBpbnZva2VkLgorICAgIHNlbGYub3JpZ2luYWxXaW5kb3dPbkVycm9yID0g
c2VsZi5vbmVycm9yOworICAgIHNlbGYub25lcnJvciA9IG51bGw7CisKKyAgICBkZWJ1ZygicmFp
c2luZyBleGNlcHRpb24iKTsKKyAgICB0aHJvdyBuZXcgRXJyb3IoIlRoaXMgc2hvdWxkICpOT1Qq
IGJlIGNhdWdodCEiKTsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbjJBYm9ydCgpCit7CisgICAg
ZGVidWcoIiIpOworICAgIGRlYnVnKCJzZXRWZXJzaW9uMkFib3J0KCkgY2FsbGJhY2siKTsKKwor
ICAgIC8vIFJlc3RvcmUgdGVzdCBoYXJuZXNzIGVycm9yIGhhbmRsZXIuCisgICAgc2VsZi5vbmVy
cm9yID0gc2VsZi5vcmlnaW5hbFdpbmRvd09uRXJyb3I7CisKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImRiLnZlcnNpb24iLCAidmVyc2lvbiAxIik7CisgICAgc2hvdWxkQmVUcnVlKCJkYi5v
YmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCdzdG9yZTEnKSIpOworICAgIHNob3VsZEJlRmFsc2Uo
ImRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJ3N0b3JlMicpIik7CisKKyAgICBmaW5pc2hK
U1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy92ZXJzaW9uLWNo
YW5nZS1leGNsdXNpdmUuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvdmVyc2lvbi1jaGFuZ2UtZXhjbHVzaXZlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxYWE1OGE4ODMyOTVl
NDcxMjdkNmE5MzE2NGJiY2VkODM5YjA5MWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdmVyc2lvbi1jaGFuZ2UtZXhjbHVzaXZlLmpz
CkBAIC0wLDAgKzEsNzAgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRT
Y3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAg
IGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiRW5zdXJlIFZF
UlNJT05fQ0hBTkdFIHRyYW5zYWN0aW9uIGRvZXNuJ3QgcnVuIGNvbmN1cnJlbnRseSB3aXRoIG90
aGVyIHRyYW5zYWN0aW9ucyIpOworCitmdW5jdGlvbiB0ZXN0KCkgeworICAgIHJlbW92ZVZlbmRv
clByZWZpeGVzKCk7CisgICAgb3BlbkRCQ29ubmVjdGlvbigpOworfQorCitmdW5jdGlvbiBvcGVu
REJDb25uZWN0aW9uKCkKK3sKKyAgICBldmFsQW5kTG9nKCJzZWxmLnN0YXRlID0gJ3N0YXJ0aW5n
JyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndmVyc2lvbi1j
aGFuZ2UtZXhjbHVzaXZlJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNz
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgZGVidWcoImNhbGxpbmcgc2V0VmVyc2lvbigp
IC0gY2FsbGJhY2sgc2hvdWxkIHJ1biBpbW1lZGlhdGVseSIpOworICAgIHZhciB2ZXJzaW9uQ2hh
bmdlUmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7Cisg
ICAgdmVyc2lvbkNoYW5nZVJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uc3VjY2VzcyA9IGluU2V0VmVyc2lvbjsKKwor
ICAgIC8vIGFuZCBjb25jdXJyZW50bHkuLi4KKworICAgIGRlYnVnKCJjYWxsaW5nIG9wZW4oKSAt
IGNhbGxiYWNrIHNob3VsZCB3YWl0IHVudGlsIFZFUlNJT05fQ0hBTkdFIHRyYW5zYWN0aW9uIGlz
IGNvbXBsZXRlIik7CisgICAgdmFyIG9wZW5SZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERC
Lm9wZW4oJ3ZlcnNpb24tY2hhbmdlLWV4Y2x1c2l2ZScpIik7CisgICAgb3BlblJlcXVlc3Qub25z
dWNjZXNzID0gb3BlbkFnYWluU3VjY2VzczsKKyAgICBvcGVuUmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGluU2V0VmVyc2lvbigpCit7Cisg
ICAgZGVidWcoInNldFZlcnNpb24oKSBjYWxsYmFjayIpOworICAgIGRlYnVnKCJzdGFydGluZyB3
b3JrIGluIFZFUlNJT05fQ0hBTkdFIHRyYW5zYWN0aW9uIik7CisgICAgZXZhbEFuZExvZygic2Vs
Zi5zdGF0ZSA9ICdWRVJTSU9OX0NIQU5HRSBzdGFydGVkJyIpOworCisgICAgc2VsZi5zdG9yZSA9
IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Rlc3Qtc3RvcmUnKSIp
OworICAgIHNlbGYuY291bnQgPSAwOworICAgIGRvX2FzeW5jX3B1dHMoKTsKKworICAgIGZ1bmN0
aW9uIGRvX2FzeW5jX3B1dHMoKSB7CisgICAgICAgIHZhciByZXEgPSBldmFsQW5kTG9nKCJzdG9y
ZS5wdXQoIiArIGNvdW50ICsgIiwgIiArIGNvdW50ICsgIikiKTsKKyAgICAgICAgcmVxLm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxLm9uc3VjY2VzcyA9IGZ1
bmN0aW9uIChlKSB7CisgICAgICAgICAgICBkZWJ1ZygiaW4gcHV0J3Mgb25zdWNjZXNzIik7Cisg
ICAgICAgICAgICBpZiAoKytzZWxmLmNvdW50IDwgMTApIHsKKyAgICAgICAgICAgICAgICBkb19h
c3luY19wdXRzKCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRlYnVn
KCJlbmRpbmcgd29yayBpbiBWRVJTSU9OX0NIQU5HRSB0cmFuc2FjdGlvbiIpOworICAgICAgICAg
ICAgICAgIGV2YWxBbmRMb2coInNlbGYuc3RhdGUgPSAnVkVSU0lPTl9DSEFOR0UgZmluaXNoZWQn
Iik7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorfQorCitmdW5jdGlvbiBvcGVu
QWdhaW5TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygib3BlbigpIGNhbGxiYWNrIC0gdGhpcyBzaG91
bGQgYXBwZWFyIGFmdGVyIFZFUlNJT05fQ0hBTkdFIHRyYW5zYWN0aW9uIGVuZHMiKTsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoInNlbGYuc3RhdGUiLCAiVkVSU0lPTl9DSEFOR0UgZmluaXNo
ZWQiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy92ZXJzaW9uY2hhbmdlcmVxdWVzdC1hY3RpdmVkb21vYmplY3QuanMgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdmVyc2lvbmNoYW5nZXJlcXVlc3QtYWN0
aXZlZG9tb2JqZWN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1YWFiNDE0YTUwMmE4MTQzYzMzYzZjYmFkMTE0
NTgyNTg2OWNjZTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvdmVyc2lvbmNoYW5nZXJlcXVlc3QtYWN0aXZlZG9tb2JqZWN0LmpzCkBA
IC0wLDAgKzEsNjcgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3Jp
cHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGlt
cG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiRW5zdXJlIHRoYXQg
SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Qgb2JqZWN0cyBhcmUgbm90IEdDJ2QgaWYgdGhleSBoYXZl
IHBlbmRpbmcgZXZlbnRzIik7CisKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgcmVtb3ZlVmVuZG9y
UHJlZml4ZXMoKTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBldmFsQW5kTG9nKCJzZWxmLmRibmFt
ZSA9ICd2ZXJzaW9uY2hhbmdlcmVxdWVzdC1hY3RpdmVkb21vYmplY3QnIik7CisKKyAgICB0ZXN0
RGVsZXRlRGF0YWJhc2UoKTsKK30KKworZnVuY3Rpb24gdGVzdERlbGV0ZURhdGFiYXNlKCkKK3sK
KyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInRlc3REZWxldGVEYXRhYmFzZSgpOiIpOworICAg
IC8vIE5PVEU6IGRlbGV0ZVJlcXVlc3QgaXMgbG9jYWwgdmFyaWFibGUgc28gaXQgaXMgbm90IGNh
cHR1cmVkIGluIGdsb2JhbCBzY29wZS4KKyAgICB2YXIgZGVsZXRlUmVxdWVzdCA9IGV2YWxBbmRM
b2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShzZWxmLmRibmFtZSkiKTsKKyAgICBkZWxldGVS
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBkZWxldGVSZXF1
ZXN0Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7CisgICAgZGVsZXRlUmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgZGVsZXRlU3VjY2VzcygpOyB9OworICAgIGRl
bGV0ZVJlcXVlc3QgPSBudWxsOworICAgIGlmIChzZWxmLmdjKSB7CisgICAgICAgIGV2YWxBbmRM
b2coInNlbGYuZ2MoKSIpOworICAgIH0KK30KKworZnVuY3Rpb24gZGVsZXRlU3VjY2VzcygpCit7
CisgICAgdGVzdFBhc3NlZCgiZGVsZXRlRGF0YWJhc2UncyBJREJWZXJzaW9uQ2hhbmdlUmVxdWVz
dC5vbnN1Y2Nlc3MgZXZlbnQgZmlyZWQiKTsKKyAgICB0ZXN0U2V0VmVyc2lvbigpOworfQorCitm
dW5jdGlvbiB0ZXN0U2V0VmVyc2lvbigpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0
ZXN0U2V0VmVyc2lvbigpOiIpOworCisgICAgLy8gTk9URTogVGhpcyBpcyBqdXN0IGFuIElEQlJl
cXVlc3QsIGl0IGNhbiBiZSBnbG9iYWwuCisgICAgZXZhbEFuZExvZygib3BlblJlcXVlc3QgPSBp
bmRleGVkREIub3BlbihzZWxmLmRibmFtZSkiKTsKKyAgICBvcGVuUmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgb3BlblJlcXVlc3Qub25zdWNjZXNzID0gZnVu
Y3Rpb24gKCkgeworICAgICAgICBldmFsQW5kTG9nKCJkYiA9IG9wZW5SZXF1ZXN0LnJlc3VsdCIp
OworCisgICAgICAgIC8vIE5PVEU6IHZlcnNpb25SZXF1ZXN0IGlzIGxvY2FsIHZhcmlhYmxlIHNv
IGl0IGlzIG5vdCBjYXB0dXJlZCBpbiBnbG9iYWwgc2NvcGUuCisgICAgICAgIHZhciB2ZXJzaW9u
UmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJzEnKSIpOworICAgICAgICB2ZXJz
aW9uUmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHZl
cnNpb25SZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7CisgICAg
ICAgIHZlcnNpb25SZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeyB2ZXJzaW9uU3VjY2Vz
cygpOyB9OworICAgICAgICB2ZXJzaW9uUmVxdWVzdCA9IG51bGw7CisgICAgICAgIGlmIChzZWxm
LmdjKSB7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJzZWxmLmdjKCkiKTsKKyAgICAgICAgfQor
ICAgIH07Cit9CisKK2Z1bmN0aW9uIHZlcnNpb25TdWNjZXNzKCkKK3sKKyAgICB0ZXN0UGFzc2Vk
KCJzZXRWZXJzaW9uJ3MgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Qub25zdWNjZXNzIGV2ZW50IGZp
cmVkIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9z
ZXRWZXJzaW9uLW51bGwuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldFZl
cnNpb24tbnVsbC5odG1sCmluZGV4IDZhODgwMTQwZmY1MTYzMzQxZTRmNzc4ZDc0ZDM4NmFkNWZh
MjgxMDYuLmRmM2YzZDA4NzAyZGM1OTU1YjA5YjJlMTJhYjY5ZGFjYzRiMGM2MTAgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldFZlcnNpb24tbnVsbC5odG1sCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldFZlcnNpb24tbnVsbC5odG1sCkBA
IC0xLDQ2ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4gCi08aHRtbD4gCis8aHRtbD4KIDxoZWFk
PgotPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4gCi08c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+IAot
PC9oZWFkPiAKLTxib2R5PiAKLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPiAKLTxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PiAKLTxzY3JpcHQ+IAotIAotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERC
IHdpdGggbnVsbCB2ZXJzaW9uIHN0cmluZyIpOwotIAotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAg
cmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAKLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRo
bmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLSAKLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsK
LSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotIAotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKG51bGwpOyIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gcG9zdFNldFZlcnNpb247Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHBvc3RTZXRWZXJzaW9uKCkKLXsK
LSAgICBzaG91bGRCZSgiZGIudmVyc2lvbiIsICInbnVsbCciKTsKLSAgICBmaW5pc2hKU1Rlc3Qo
KTsKLX0KLSAKLSAKLXRlc3QoKTsKLSAKLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9zZXRWZXJzaW9uLW51bGwuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2Jv
ZHk+IAorPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvc2V0VmVyc2lvbi11bmRlZmluZWQuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3NldFZlcnNpb24tdW5kZWZpbmVkLmh0bWwKaW5kZXggZGZhOGE1MWM4Y2NmMGE5
MWQ0OTI0NTU0NGY3YjY0NGJiOTE2MWE2NS4uYWU2MGYxYzVlOTM4NDdhMDRhMjM3Y2QzZmIzMjky
OWNmZGY1NWM4ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0
VmVyc2lvbi11bmRlZmluZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9zZXRWZXJzaW9uLXVuZGVmaW5lZC5odG1sCkBAIC0xLDM5ICsxLDEwIEBACi08IURPQ1RZUEUg
aHRtbD4gCi08aHRtbD4gCis8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4gCi08c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+IAotPC9oZWFkPiAKLTxib2R5PiAKLTxwIGlkPSJk
ZXNjcmlwdGlvbiI+PC9wPiAKLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PiAKLTxzY3JpcHQ+IAot
IAotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIHZlcnNpb24gc3RyaW5nIGlzIHJlcXVpcmVk
Iik7Ci0gCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwot
IAotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0g
Ik15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
b3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5T
dWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
fQotIAotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gCi0gICAgc2hvdWxkVGhyb3coImRiLnNldFZlcnNp
b24oKTsiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLSAKLSAKLXRlc3QoKTsKLSAKLTwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zZXRWZXJzaW9uLXVuZGVm
aW5lZC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4gCis8L2JvZHk+CiA8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9ibG9j
a2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9ibG9j
a2VkLmh0bWwKaW5kZXggOWE4MjgyMmY1YjRjZjdhZDBkNWQwZDllMjI3ZmZjYTc2MjUyMTMyZS4u
NDA4ZTZmYTI5N2JiN2NkMjg3ODViYjA2NTJiYjk2MmFkOWVjMDkwNCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNpb25fYmxvY2tlZC5odG1sCisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJzaW9uX2Jsb2NrZWQuaHRtbApA
QCAtMSw2NiArMSwxMCBAQAotPGh0bWw+DQotPGhlYWQ+DQotPHNjcmlwdCBzcmM9Ii4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4NCi08c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+DQotPC9oZWFkPg0KLTxib2R5Pg0KLTxwIGlk
PSJkZXNjcmlwdGlvbiI+PC9wPg0KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pg0KLTxzY3JpcHQ+
DQotDQotZGVzY3JpcHRpb24oIkFuIG9wZW4gY29ubmVjdGlvbiBibG9ja3MgYSBzZXBhcmF0ZSBj
b25uZWN0aW9uJ3Mgc2V0VmVyc2lvbiBjYWxsIik7DQotDQotY29ubmVjdGlvbnMgPSBbXQ0KLWZ1
bmN0aW9uIHRlc3QoKQ0KLXsNCi0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsNCi0gICAgb3Bl
bkRCQ29ubmVjdGlvbigpOw0KLX0NCi0NCi1mdW5jdGlvbiBvcGVuREJDb25uZWN0aW9uKCkNCi17
DQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbignc2V0LXZlcnNpb24t
YmxvY2tlZCcpIik7DQotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7DQotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOw0KLX0NCi0NCi1mdW5j
dGlvbiBvcGVuU3VjY2VzcygpDQotew0KLSAgICBjb25uZWN0aW9uID0gZXZlbnQudGFyZ2V0LnJl
c3VsdDsNCi0gICAgY29ubmVjdGlvbnMucHVzaChjb25uZWN0aW9uKTsNCi0gICAgb3JpZ2luYWxf
dmVyc2lvbiA9IGNvbm5lY3Rpb24udmVyc2lvbjsNCi0gICAgaWYgKGNvbm5lY3Rpb25zLmxlbmd0
aCA8IDIpDQotICAgICAgICBvcGVuREJDb25uZWN0aW9uKCk7DQotICAgIGVsc2Ugew0KLSAgICAg
ICAgdmFyIHZlcnNpb25DaGFuZ2VSZXF1ZXN0ID0gZXZhbEFuZExvZygiY29ubmVjdGlvbnNbMF0u
c2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsNCi0gICAgICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsNCi0gICAgICAgIHZlcnNpb25DaGFu
Z2VSZXF1ZXN0Lm9uc3VjY2VzcyA9IGluU2V0VmVyc2lvbjsNCi0gICAgICAgIHZlcnNpb25DaGFu
Z2VSZXF1ZXN0Lm9uYmxvY2tlZCA9IGJsb2NrZWQ7DQotICAgIH0NCi19DQotDQotc2Vlbl9ibG9j
a2VkX2V2ZW50ID0gZmFsc2U7DQotZnVuY3Rpb24gYmxvY2tlZCgpDQotew0KLSAgICBldmFsQW5k
TG9nKCJzZWVuX2Jsb2NrZWRfZXZlbnQgPSB0cnVlIik7DQotICAgIGJsb2NrZWRfZXZlbnQgPSBl
dmVudDsNCi0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJibG9ja2VkX2V2ZW50LnZlcnNpb24i
LCAidmVyc2lvbiAxIik7DQotICAgIHNob3VsZEV2YWx1YXRlVG8oImJsb2NrZWRfZXZlbnQudGFy
Z2V0LnJlYWR5U3RhdGUiLCAxKTsNCi0gICAgZXZhbEFuZExvZygiY29ubmVjdGlvbnNbMV0uY2xv
c2UoKSIpOw0KLX0NCi0NCi1mdW5jdGlvbiBpblNldFZlcnNpb24oKQ0KLXsNCi0gICAgZGVidWco
ImluIHNldFZlcnNpb24ub25zdWNjZXNzIik7DQotICAgIHNob3VsZEJlVHJ1ZSgic2Vlbl9ibG9j
a2VkX2V2ZW50Iik7DQotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jlcyhjb25uZWN0aW9uc1swXSk7
DQotICAgIGZpbmlzaEpTVGVzdCgpOw0KLX0NCi0NCi0NCi10ZXN0KCk7DQotDQotPC9zY3JpcHQ+
DQotPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+DQotPC9ib2R5Pg0KLTwvaHRtbD4NCis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zZXRfdmVyc2lvbl9ibG9ja2VkLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNpb25fcXVldWUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3NldF92ZXJzaW9uX3F1ZXVlLmh0bWwKaW5kZXggZmY1NjBhZjA4NDNiNmNk
OTQxMTljNWIwMTNjZTc2Y2I4MTVhYWNlNS4uYzE2Y2RkNzFjMDdiYzUyMDYwNzhhMzEzNGU5MDgx
MWJkNzJkY2VmMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0
X3ZlcnNpb25fcXVldWUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9z
ZXRfdmVyc2lvbl9xdWV1ZS5odG1sCkBAIC0xLDEzMyArMSwxMCBAQAotPGh0bWw+DQotPGhlYWQ+
DQotPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4NCi08c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+DQot
PC9oZWFkPg0KLTxib2R5Pg0KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPg0KLTxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2Pg0KLTxzY3JpcHQ+DQotDQotZGVzY3JpcHRpb24oIjQgb3BlbiBjb25uZWN0
aW9ucyB0cnkgdG8gc2V0VmVyc2lvbiBhdCB0aGUgc2FtZSB0aW1lLiAgMyBjb25uZWN0aW9ucyBl
dmVudHVhbGx5IGNsb3NlLCBhbGxvd2luZyAxIHNldFZlcnNpb24gY2FsbCB0byBwcm9jZWVkLiIp
Ow0KLQ0KLWNvbm5lY3Rpb25zID0gW10NCi1mdW5jdGlvbiB0ZXN0KCkNCi17DQotICAgIHJlbW92
ZVZlbmRvclByZWZpeGVzKCk7DQotDQotICAgIG9wZW5EQkNvbm5lY3Rpb24oKTsNCi19DQotDQot
ZnVuY3Rpb24gb3BlbkRCQ29ubmVjdGlvbigpDQotew0KLSAgICByZXN1bHQgPSBldmFsQW5kTG9n
KCJpbmRleGVkREIub3Blbignc2V0LXZlcnNpb24tcXVldWUnKSIpOw0KLSAgICByZXN1bHQub25z
dWNjZXNzID0gb3BlblN1Y2Nlc3M7DQotICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7DQotfQ0KLQ0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkNCi17DQotICAgIGNv
bm5lY3Rpb24gPSBldmVudC50YXJnZXQucmVzdWx0Ow0KLSAgICBjb25uZWN0aW9uLm9udmVyc2lv
bmNoYW5nZSA9IGdlbmVyYXRlVmVyc2lvbkNoYW5nZUhhbmRsZXIoKTsNCi0gICAgY29ubmVjdGlv
bnMucHVzaChjb25uZWN0aW9uKTsNCi0gICAgaWYgKGNvbm5lY3Rpb25zLmxlbmd0aCA8IDQpDQot
ICAgICAgICBvcGVuREJDb25uZWN0aW9uKCk7DQotICAgIGVsc2Ugew0KLSAgICAgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImNvbm5lY3Rpb25zWzBdLnNldFZlcnNpb24oJ3ZlcnNpb24gMCcpIik7
DQotICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCl7IGNvbm5lY3Rpb25F
cnJvcihldmVudCwgMCkgfTsNCi0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3Rl
ZFN1Y2Nlc3NDYWxsYmFjazsNCi0gICAgICAgIHJlcXVlc3Qub25ibG9ja2VkID0gYmxvY2tlZDA7
DQotICAgICAgICByZXF1ZXN0MSA9IGV2YWxBbmRMb2coImNvbm5lY3Rpb25zWzFdLnNldFZlcnNp
b24oJ3ZlcnNpb24gMScpIik7DQotICAgICAgICByZXF1ZXN0MS5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7DQotICAgICAgICByZXF1ZXN0MS5vbnN1Y2Nlc3MgPSBpblNldFZlcnNp
b24xOw0KLSAgICAgICAgcmVxdWVzdDEub25ibG9ja2VkID0gYmxvY2tlZDE7DQotICAgICAgICBy
ZXF1ZXN0MiA9IGV2YWxBbmRMb2coImNvbm5lY3Rpb25zWzJdLnNldFZlcnNpb24oJ3ZlcnNpb24g
MicpIik7DQotICAgICAgICByZXF1ZXN0Mi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpeyBjb25u
ZWN0aW9uRXJyb3IoZXZlbnQsIDIpIH07DQotICAgICAgICByZXF1ZXN0Mi5vbnN1Y2Nlc3MgPSB1
bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOw0KLSAgICAgICAgcmVxdWVzdDIub25ibG9ja2VkID0g
YmxvY2tlZDI7DQotICAgICAgICByZXF1ZXN0MyA9IGV2YWxBbmRMb2coImNvbm5lY3Rpb25zWzNd
LnNldFZlcnNpb24oJ3ZlcnNpb24gMycpIik7DQotICAgICAgICByZXF1ZXN0My5vbmVycm9yID0g
ZnVuY3Rpb24oZXZlbnQpeyBjb25uZWN0aW9uRXJyb3IoZXZlbnQsIDMpIH07DQotICAgICAgICBy
ZXF1ZXN0My5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOw0KLSAgICAgICAg
cmVxdWVzdDMub25ibG9ja2VkID0gYmxvY2tlZDM7DQotICAgICAgICBkZWJ1ZygiIik7DQotICAg
IH0NCi19DQotDQotZnVuY3Rpb24gZ2VuZXJhdGVWZXJzaW9uQ2hhbmdlSGFuZGxlcigpDQotew0K
LSAgICB2YXIgY29ubmVjdGlvbk51bSA9IGNvbm5lY3Rpb25zLmxlbmd0aDsNCi0gICAgcmV0dXJu
IGZ1bmN0aW9uKGV2ZW50KQ0KLSAgICB7DQotICAgICAgICBzaG91bGRCZVRydWUoImV2ZW50LnZl
cnNpb24ubGVuZ3RoID4gMCIpOw0KLSAgICAgICAgZGVidWcoImNvbm5lY3Rpb25bIiArIGNvbm5l
Y3Rpb25OdW0gKyAiXSByZWNlaXZlZCB2ZXJzaW9uQ2hhbmdlRXZlbnQ6ICIgKyBldmVudC52ZXJz
aW9uKTsNCi0gICAgfQ0KLX0NCi0NCi1ibG9ja2VkMGZpcmVkID0gZmFsc2U7DQotYmxvY2tlZDJm
aXJlZCA9IGZhbHNlOw0KLWZ1bmN0aW9uIGJsb2NrZWQwKGV2ZW50KQ0KLXsNCi0gICAgZGVidWco
IiIpOw0KLSAgICB0ZXN0UGFzc2VkKCJjb25uZWN0aW9uWzBdIGdvdCBibG9ja2VkIGV2ZW50Iik7
DQotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudmVyc2lvbiIsICJ2ZXJzaW9uIDAi
KTsNCi0gICAgZGVidWcoIkNsb3NlIHRoZSBjb25uZWN0aW9uIHRoYXQgcmVjZWl2ZWQgdGhlIGJs
b2NrIGV2ZW50OiIpOw0KLSAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uc1swXS5jbG9zZSgpIik7
DQotICAgIGRlYnVnKCJDbG9zZSBhbm90aGVyIGNvbm5lY3Rpb24gYXMgd2VsbCwgdG8gdGVzdCA0
LjcuNC1ub3RlOiIpOw0KLSAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uc1szXS5jbG9zZSgpIik7
DQotICAgIGV2YWxBbmRMb2coImJsb2NrZWQwZmlyZWQgPSB0cnVlIik7DQotICAgIGRlYnVnKCIi
KTsNCi19DQotDQotZnVuY3Rpb24gYmxvY2tlZDEoZXZlbnQpDQotew0KLSAgICBkZWJ1ZygiIikN
Ci0gICAgdGVzdFBhc3NlZCgiY29ubmVjdGlvblsxXSBnb3QgYmxvY2tlZCBldmVudCIpOw0KLSAg
ICBkZWJ1ZygiRW5zdXJlIHRoYXQgdGhpcyBibG9ja2VkIGV2ZW50IGlzIGluIG9yZGVyOiIpOw0K
LSAgICBzaG91bGRCZVRydWUoImJsb2NrZWQwZmlyZWQiKTsNCi0gICAgc2hvdWxkQmVGYWxzZSgi
YmxvY2tlZDJmaXJlZCIpOw0KLSAgICBkZWJ1ZygiIikNCi19DQotDQotZnVuY3Rpb24gYmxvY2tl
ZDIoZXZlbnQpDQotew0KLSAgICBkZWJ1ZygiIikNCi0gICAgdGVzdFBhc3NlZCgiY29ubmVjdGlv
blsyXSBnb3QgYmxvY2tlZCBldmVudCIpOw0KLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2
ZW50LnZlcnNpb24iLCAidmVyc2lvbiAyIik7DQotICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb25z
WzJdLmNsb3NlKCkiKTsNCi0gICAgZXZhbEFuZExvZygiYmxvY2tlZDJmaXJlZCA9IHRydWUiKTsN
Ci0gICAgZGVidWcoIiIpDQotfQ0KLQ0KLWZ1bmN0aW9uIGJsb2NrZWQzKGV2ZW50KQ0KLXsNCi0g
ICAgZGVidWcoIiIpDQotICAgIHRlc3RQYXNzZWQoImNvbm5lY3Rpb25bM10gZ290IGJsb2NrZWQg
ZXZlbnQiKTsNCi0gICAgZGVidWcoIk5vdGU6IFRoaXMgbWVhbnMgdGhhdCBhIGNvbm5lY3Rpb24g
Y2FuIHJlY2VpdmUgYSBibG9ja2VkIGV2ZW50IGFmdGVyIGl0cyBjbG9zZSgpIG1ldGhvZCBoYXMg
YmVlbiBjYWxsZWQuICBTcGVjIGlzIHNpbGVudCBvbiB0aGUgaXNzdWUgYW5kIHRoaXMgaXMgZWFz
aWVzdCB0byBpbXBsZW1lbnQuIik7DQotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQu
dmVyc2lvbiIsICJ2ZXJzaW9uIDMiKTsNCi19DQotDQotZnVuY3Rpb24gY29ubmVjdGlvbkVycm9y
KGV2ZW50LCBjb25uZWN0aW9uSWQpDQotew0KLSAgICBkZWJ1ZygiIikNCi0gICAgdGVzdFBhc3Nl
ZCgiY29ubmVjdGlvblsiICsgY29ubmVjdGlvbklkICsgIl0gZ290IGVycm9yIGV2ZW50Iik7DQot
ICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuZXJyb3JDb2RlIiwgIklEQkRhdGFiYXNlRXhjZXB0
aW9uLkFCT1JUX0VSUiIpDQotICAgIGlmICgnd2Via2l0RXJyb3JNZXNzYWdlJyBpbiBldmVudC50
YXJnZXQpIHsNCi0gICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQud2Via2l0RXJyb3JNZXNz
YWdlLmxlbmd0aCA+IDAiLCAidHJ1ZSIpOw0KLSAgICAgICAgZGVidWcoZXZlbnQudGFyZ2V0Lndl
YmtpdEVycm9yTWVzc2FnZSk7DQotICAgIH0NCi19DQotDQotZnVuY3Rpb24gaW5TZXRWZXJzaW9u
MShldmVudCkNCi17DQotICAgIGRlYnVnKCIiKQ0KLSAgICB0ZXN0UGFzc2VkKCJjb25uZWN0aW9u
WzFdIGdvdCBpbnRvIFNldFZlcnNpb24iKTsNCi0gICAgZmluaXNoSlNUZXN0KCk7DQotfQ0KLQ0K
LQ0KLXRlc3QoKTsNCi0NCi08L3NjcmlwdD4NCi08c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4NCi08L2JvZHk+DQotPC9odG1sPg0K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NldF92
ZXJzaW9uX3F1ZXVlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc3RydWN0dXJlZC1jbG9uZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zdHJ1Y3R1cmVkLWNs
b25lLWV4cGVjdGVkLnR4dAppbmRleCBhODE5YThlZTNjYTI2MmU0OWYyN2Y4YmU5ZGI1ZDE4Njdi
MDIxZTFjLi41YTY0YTI2MTE4YTQ4ZWRlOTQ2Mjg4ZmYyMmNjZmEzYzhiOWQwYWFkIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zdHJ1Y3R1cmVkLWNsb25lLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zdHJ1Y3R1cmVkLWNs
b25lLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLQogVGVzdCBzdHJ1Y3R1cmVkIGNsb25l
IHBlcm11dGF0aW9ucyBpbiBJbmRleGVkREIuIEZpbGUvRmlsZUxpc3QgdGVzdHMgcmVxdWlyZSBE
dW1wUmVuZGVyVHJlZS4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc3RydWN0dXJlZC1jbG9uZS5odG1sIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc3RydWN0dXJlZC1jbG9uZS5odG1sCmluZGV4IDdk
NjQ5OWYyNzRkMTNmNDg3YmJmODM2ZDAzYWQ5OTBjYTQ4MTM0NDUuLmIyMTc5YWIwYmY3ZWM0NmQ3
ZmUxMzQ3NTA3ODQzMThhMTMxMDJlNmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3N0cnVjdHVyZWQtY2xvbmUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9zdHJ1Y3R1cmVkLWNsb25lLmh0bWwKQEAgLTUsNTM5ICs1LDcgQEAKIDwvaGVh
ZD4KIDxib2R5PgogPGlucHV0IHR5cGU9ImZpbGUiIGlkPSJmaWxlSW5wdXQiIG11bHRpcGxlPjwv
aW5wdXQ+Ci08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3Qgc3RydWN0dXJlZCBjbG9uZSBwZXJtdXRh
dGlvbnMgaW4gSW5kZXhlZERCLiBGaWxlL0ZpbGVMaXN0IHRlc3RzIHJlcXVpcmUgRHVtcFJlbmRl
clRyZWUuIik7Ci0KLWlmIChzZWxmLmV2ZW50U2VuZGVyKSB7Ci0gICAgdmFyIGZpbGVJbnB1dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmaWxlSW5wdXQiKTsKLSAgICB2YXIgZmlsZVJlY3Qg
PSBmaWxlSW5wdXQuZ2V0Q2xpZW50UmVjdHMoKVswXTsKLSAgICB2YXIgdGFyZ2V0WCA9IGZpbGVS
ZWN0LmxlZnQgKyBmaWxlUmVjdC53aWR0aCAvIDI7Ci0gICAgdmFyIHRhcmdldFkgPSBmaWxlUmVj
dC50b3AgKyBmaWxlUmVjdC5oZWlnaHQgLyAyOwotICAgIGV2ZW50U2VuZGVyLmJlZ2luRHJhZ1dp
dGhGaWxlcyhbJ3Jlc291cmNlcy90ZXN0LWRhdGEuaHRtbCcsICdyZXNvdXJjZXMvdGVzdC1kYXRh
LnR4dCddKTsKLSAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh0YXJnZXRYLCB0YXJnZXRZKTsK
LSAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAg
IHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgcHJlcGFyZURhdGFiYXNlKCk7Ci19Ci0KLWZ1
bmN0aW9uIHByZXBhcmVEYXRhYmFzZSgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJQ
cmVwYXJlIERhdGFiYXNlIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5k
ZWxldGVEYXRhYmFzZSgnc3RydWN0dXJlZC1jbG9uZScpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbihlKSB7Ci0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbign
c3RydWN0dXJlZC1jbG9uZScpIik7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUp
IHsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImRiID0gcmVxdWVzdC5yZXN1bHQiKTsKLSAgICAg
ICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGIudmVyc2lvbiIsICIiKTsKLSAgICAgICAg
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICAgICAg
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICAg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgZXZh
bEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0gICAgICAgICAg
ICAgICAgdmFyIHRyYW5zID0gcmVxdWVzdC5yZXN1bHQ7Ci0gICAgICAgICAgICAgICAgdHJhbnMu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICAgICAgICAgIHRyYW5z
Lm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICAgICAgICAgICAgICB0cmFu
cy5vbmNvbXBsZXRlID0gc3RhcnRUZXN0czsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0g
ICAgfTsKLX0KLQotZnVuY3Rpb24gc3RhcnRUZXN0cygpCi17Ci0gICAgZGVidWcoIiIpOwotICAg
IGRlYnVnKCJSdW5uaW5nIHRlc3RzLi4uIik7Ci0gICAgdmFyIHRlc3RzX3RvX3J1biA9IFsKLSAg
ICAgICAgdGVzdFVuZGVmaW5lZCwKLSAgICAgICAgdGVzdE51bGwsCi0gICAgICAgIHRlc3RCb29s
ZWFuLAotICAgICAgICB0ZXN0TnVtYmVyLAotICAgICAgICB0ZXN0U3RyaW5nLAotICAgICAgICB0
ZXN0Qm9vbGVhbk9iamVjdCwKLSAgICAgICAgdGVzdE51bWJlck9iamVjdCwKLSAgICAgICAgdGVz
dFN0cmluZ09iamVjdCwKLSAgICAgICAgdGVzdERhdGVPYmplY3QsCi0gICAgICAgIHRlc3RSZWdF
eHBPYmplY3QsCi0gICAgICAgIHRlc3RJbWFnZURhdGEsCi0gICAgICAgIHRlc3RCbG9iLAotICAg
ICAgICB0ZXN0RmlsZSwKLSAgICAgICAgdGVzdEZpbGVMaXN0LAotICAgICAgICB0ZXN0QXJyYXks
Ci0gICAgICAgIHRlc3RPYmplY3QKLSAgICBdOwotCi0gICAgZnVuY3Rpb24gbmV4dFRlc3QoKSB7
Ci0gICAgICAgIGRlYnVnKCIiKTsKLSAgICAgICAgaWYgKHRlc3RzX3RvX3J1bi5sZW5ndGgpIHsK
LSAgICAgICAgICAgIHZhciB0ZXN0ID0gdGVzdHNfdG9fcnVuLnNoaWZ0KCk7Ci0gICAgICAgICAg
ICB0ZXN0KG5leHRUZXN0KTsgLy8gV2hlbiBkb25lLCBjYWxsIHRoaXMgYWdhaW4uCi0gICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICB0ZXN0QmFkVHlwZXMoKTsKLSAgICAgICAgfQotICAgIH0K
LSAgICBuZXh0VGVzdCgpOwotfQotCi1mdW5jdGlvbiBmb3JFYWNoV2l0aENhbGxiYWNrKHRlc3RG
dW5jdGlvbiwgdmFsdWVzLCBjYWxsYmFjaykKLXsKLSAgICBmdW5jdGlvbiBuZXh0VmFsdWUoKSB7
Ci0gICAgICAgIGlmICh2YWx1ZXMubGVuZ3RoKSB7Ci0gICAgICAgICAgICB0ZXN0RnVuY3Rpb24o
dmFsdWVzLnNoaWZ0KCksIG5leHRWYWx1ZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBjYWxsYmFjaygpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbmV4dFZhbHVlKCk7Ci19Ci0K
LWZ1bmN0aW9uIHRlc3RWYWx1ZSh2YWx1ZSwgY2FsbGJhY2spCi17Ci0gICAgLy8gT25lIHRyYW5z
YWN0aW9uIHBlciB0ZXN0LCBzaW5jZSBzb21lIHRlc3RzIHJlcXVpcmUgYXN5bmNocm9ub3VzCi0g
ICAgLy8gb3BlcmF0aW9ucyB0byB2ZXJpZnkgdGhlIHJlc3VsdCAoZS5nLiB2aWEgRmlsZVJlYWRl
cikKLSAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZU5h
bWUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIHRyYW5zYWN0aW9uLm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0g
dW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2Fj
dGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLQotICAgIHNlbGYudmFsdWUgPSB2YWx1
ZTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUucHV0KHZhbHVlLCAna2V5JykiKTsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInN0b3JlLmdldCgna2V5JykiKTsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24o
ZSkgewotICAgICAgICAgICAgY2FsbGJhY2socmVxdWVzdC5yZXN1bHQpOwotICAgICAgICB9Owot
ICAgIH07Ci19Ci0KLS8vIElkZW50aXR5IHRlc3RpbmcsIHNlbnNpdGl2ZSB0byBOYU4gYW5kIC0w
Ci1mdW5jdGlvbiBpcyh4LCB5KSB7Ci0gICAgaWYgKHggPT09IHkpIHsKLSAgICAgICAgcmV0dXJu
IHggIT09IDAgfHwgMSAvIHggPT09IDEgLyB5OwotICAgIH0KLSAgICByZXR1cm4geCAhPT0geCAm
JiB5ICE9PSB5OwotfQotCi1mdW5jdGlvbiBhcnJheUNvbXBhcmUoYSwgYikgewotICAgIGlmIChh
Lmxlbmd0aCAhPT0gYi5sZW5ndGgpIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKCFpcyhh
W2ldLCBiW2ldKSkgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAg
fQotICAgIHJldHVybiB0cnVlOwotfQotCi1mdW5jdGlvbiB0ZXN0UHJpbWl0aXZlVmFsdWUoc3Ry
aW5nLCBjYWxsYmFjaykKLXsKLSAgICBkZWJ1ZygiVGVzdGluZzogIiArIHN0cmluZyk7Ci0gICAg
dmFyIHZhbHVlID0gZXZhbCgidmFsdWUgPSAoIiArIHN0cmluZyArICIpIik7Ci0gICAgdGVzdF9k
YXRhID0gdmFsdWU7Ci0gICAgdGVzdFZhbHVlKHRlc3RfZGF0YSwgZnVuY3Rpb24ocmVzdWx0KSB7
Ci0gICAgICAgIHNlbGYucmVzdWx0ID0gcmVzdWx0OwotICAgICAgICBzaG91bGRCZVRydWUoImlz
KHRlc3RfZGF0YSwgcmVzdWx0KSIpOwotICAgICAgICBkZWJ1ZygiIik7Ci0gICAgICAgIGNhbGxi
YWNrKCk7Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RPYmplY3RXaXRoVmFsdWUoc3RyaW5n
LCBjYWxsYmFjaykKLXsKLSAgICBkZWJ1ZygiVGVzdGluZzogIiArIHN0cmluZyk7Ci0gICAgdmFy
IHZhbHVlID0gZXZhbCgidmFsdWUgPSAoIiArIHN0cmluZyArICIpIik7Ci0gICAgdGVzdF9kYXRh
ID0gdmFsdWU7Ci0gICAgdGVzdFZhbHVlKHRlc3RfZGF0YSwgZnVuY3Rpb24ocmVzdWx0KSB7Ci0g
ICAgICAgIHNlbGYucmVzdWx0ID0gcmVzdWx0OwotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoInR5cGVvZiByZXN1bHQiLCAib2JqZWN0Iik7Ci0gICAgICAgIHNob3VsZEJlKCJPYmplY3Qu
cHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocmVzdWx0KSIsICJPYmplY3QucHJvdG90eXBlLnRvU3Ry
aW5nLmNhbGwodGVzdF9kYXRhKSIpOwotICAgICAgICBzaG91bGRCZVRydWUoInRlc3RfZGF0YSAh
PT0gcmVzdWx0Iik7Ci0gICAgICAgIHNob3VsZEJlKCJyZXN1bHQudG9TdHJpbmcoKSIsICJ0ZXN0
X2RhdGEudG9TdHJpbmcoKSIpOwotICAgICAgICBzaG91bGRCZVRydWUoImlzKHRlc3RfZGF0YS52
YWx1ZU9mKCksIHJlc3VsdC52YWx1ZU9mKCkpIik7Ci0gICAgICAgIGRlYnVnKCIiKTsKLSAgICAg
ICAgY2FsbGJhY2soKTsKLSAgICB9KTsKLX0KLQotZnVuY3Rpb24gdGVzdFVuZGVmaW5lZChjYWxs
YmFjaykKLXsKLSAgICB0ZXN0UHJpbWl0aXZlVmFsdWUoInVuZGVmaW5lZCIsIGNhbGxiYWNrKTsK
LX0KLQotZnVuY3Rpb24gdGVzdE51bGwoY2FsbGJhY2spCi17Ci0gICAgdGVzdFByaW1pdGl2ZVZh
bHVlKCJudWxsIiwgY2FsbGJhY2spOwotfQotCi1mdW5jdGlvbiB0ZXN0Qm9vbGVhbihjYWxsYmFj
aykKLXsKLSAgICBkZWJ1ZygiVGVzdGluZyBib29sZWFuIHByaW1pdGl2ZXMiKTsKLSAgICBkZWJ1
ZygiIik7Ci0gICAgZm9yRWFjaFdpdGhDYWxsYmFjayh0ZXN0UHJpbWl0aXZlVmFsdWUsIFsidHJ1
ZSIsICJmYWxzZSJdLCBjYWxsYmFjayk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RCb29sZWFuT2JqZWN0
KGNhbGxiYWNrKQotewotICAgIGRlYnVnKCJUZXN0aW5nIEJvb2xlYW4gb2JqZWN0cyIpOwotICAg
IGRlYnVnKCIiKTsKLSAgICBmb3JFYWNoV2l0aENhbGxiYWNrKHRlc3RPYmplY3RXaXRoVmFsdWUs
IFsKLSAgICAgICAgIm5ldyBCb29sZWFuKHRydWUpIiwKLSAgICAgICAgIm5ldyBCb29sZWFuKGZh
bHNlKSIKLSAgICBdLCBjYWxsYmFjayk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RTdHJpbmcoY2FsbGJh
Y2spCi17Ci0gICAgZGVidWcoIlRlc3Rpbmcgc3RyaW5nIHByaW1pdGl2ZXMiKTsKLSAgICBkZWJ1
ZygiIik7Ci0gICAgZm9yRWFjaFdpdGhDYWxsYmFjayh0ZXN0UHJpbWl0aXZlVmFsdWUsIFsKLSAg
ICAgICAgIicnIiwKLSAgICAgICAgIid0aGlzIGlzIGEgc2FtcGxlIHN0cmluZyciLAotICAgICAg
ICAiJ251bGwoXFwwKSciCi0gICAgXSwgY2FsbGJhY2spOwotfQotCi1mdW5jdGlvbiB0ZXN0U3Ry
aW5nT2JqZWN0KGNhbGxiYWNrKQotewotICAgIGRlYnVnKCJUZXN0aW5nIFN0cmluZyBvYmplY3Rz
Iik7Ci0gICAgZGVidWcoIiIpOwotICAgIGZvckVhY2hXaXRoQ2FsbGJhY2sodGVzdE9iamVjdFdp
dGhWYWx1ZSwgWwotICAgICAgICAibmV3IFN0cmluZygpIiwKLSAgICAgICAgIm5ldyBTdHJpbmco
J3RoaXMgaXMgYSBzYW1wbGUgc3RyaW5nJykiLAotICAgICAgICAibmV3IFN0cmluZygnbnVsbChc
XDApJykiCi0gICAgXSwgY2FsbGJhY2spOwotfQotCi1mdW5jdGlvbiB0ZXN0TnVtYmVyKGNhbGxi
YWNrKQotewotICAgIGRlYnVnKCJUZXN0aW5nIG51bWJlciBwcmltaXRpdmVzIik7Ci0gICAgZGVi
dWcoIiIpOwotICAgIGZvckVhY2hXaXRoQ2FsbGJhY2sodGVzdFByaW1pdGl2ZVZhbHVlLCBbCi0g
ICAgICAgICJOYU4iLAotICAgICAgICAiLUluZmluaXR5IiwKLSAgICAgICAgIi1OdW1iZXIuTUFY
X1ZBTFVFIiwKLSAgICAgICAgIi1OdW1iZXIuTUlOX1ZBTFVFIiwKLSAgICAgICAgIi0wIiwKLSAg
ICAgICAgIjAiLAotICAgICAgICAiTnVtYmVyLk1JTl9WQUxVRSIsCi0gICAgICAgICJOdW1iZXIu
TUFYX1ZBTFVFIiwKLSAgICAgICAgIkluZmluaXR5IgotICAgIF0sIGNhbGxiYWNrKTsKLX0KLQot
ZnVuY3Rpb24gdGVzdE51bWJlck9iamVjdChjYWxsYmFjaykKLXsKLSAgICBkZWJ1ZygiVGVzdGlu
ZyBOdW1iZXIgb2JqZWN0cyIpOwotICAgIGRlYnVnKCIiKTsKLSAgICBmb3JFYWNoV2l0aENhbGxi
YWNrKHRlc3RPYmplY3RXaXRoVmFsdWUsIFsKLSAgICAgICAgIm5ldyBOdW1iZXIoTmFOKSIsCi0g
ICAgICAgICJuZXcgTnVtYmVyKC1JbmZpbml0eSkiLAotICAgICAgICAibmV3IE51bWJlcigtTnVt
YmVyLk1BWF9WQUxVRSkiLAotICAgICAgICAibmV3IE51bWJlcigtTnVtYmVyLk1JTl9WQUxVRSki
LAotICAgICAgICAibmV3IE51bWJlcigtMCkiLAotICAgICAgICAibmV3IE51bWJlcigwKSIsCi0g
ICAgICAgICJuZXcgTnVtYmVyKE51bWJlci5NSU5fVkFMVUUpIiwKLSAgICAgICAgIm5ldyBOdW1i
ZXIoTnVtYmVyLk1BWF9WQUxVRSkiLAotICAgICAgICAibmV3IE51bWJlcihJbmZpbml0eSkiCi0g
ICAgXSwgY2FsbGJhY2spOwotfQotCi1mdW5jdGlvbiB0ZXN0RGF0ZU9iamVjdChjYWxsYmFjaykK
LXsKLSAgICBkZWJ1ZygiVGVzdGluZyBEYXRlIG9iamVjdHMiKTsKLSAgICBkZWJ1ZygiIik7Ci0g
ICAgZm9yRWFjaFdpdGhDYWxsYmFjayh0ZXN0T2JqZWN0V2l0aFZhbHVlLCBbCi0gICAgICAgICJu
ZXcgRGF0ZSgtMWUxMykiLAotICAgICAgICAibmV3IERhdGUoLTFlMTIpIiwKLSAgICAgICAgIm5l
dyBEYXRlKC0xZTkpIiwKLSAgICAgICAgIm5ldyBEYXRlKC0xZTYpIiwKLSAgICAgICAgIm5ldyBE
YXRlKC0xZTMpIiwKLSAgICAgICAgIm5ldyBEYXRlKDApIiwKLSAgICAgICAgIm5ldyBEYXRlKDFl
MykiLAotICAgICAgICAibmV3IERhdGUoMWU2KSIsCi0gICAgICAgICJuZXcgRGF0ZSgxZTkpIiwK
LSAgICAgICAgIm5ldyBEYXRlKDFlMTIpIiwKLSAgICAgICAgIm5ldyBEYXRlKDFlMTMpIgotICAg
IF0sIGNhbGxiYWNrKTsKLX0KLQotZnVuY3Rpb24gdGVzdFJlZ0V4cE9iamVjdChjYWxsYmFjaykK
LXsKLSAgICBkZWJ1ZygiVGVzdGluZyBSZWdFeHAgb2JqZWN0cyIpOwotICAgIGRlYnVnKCIiKTsK
LSAgICBmdW5jdGlvbiB0ZXN0UmVnRXhwKHN0cmluZywgY2FsbGJhY2spIHsKLSAgICAgICAgZGVi
dWcoIlRlc3RpbmcgUmVnRXhwOiAiICsgc3RyaW5nKTsKLSAgICAgICAgdmFyIHZhbHVlID0gZXZh
bCgidmFsdWUgPSAoIiArIHN0cmluZyArICIpIik7Ci0gICAgICAgIHRlc3RfZGF0YSA9IHZhbHVl
OwotICAgICAgICB0ZXN0VmFsdWUodGVzdF9kYXRhLCBmdW5jdGlvbihyZXN1bHQpIHsKLSAgICAg
ICAgICAgIHNlbGYucmVzdWx0ID0gcmVzdWx0OwotICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0
ZXN0X2RhdGEgIT09IHJlc3VsdCIpOwotICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocmVzdWx0KSIsICJbb2JqZWN0IFJlZ0V4
cF0iKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJyZXN1bHQudG9TdHJpbmcoKSIsICJ0ZXN0X2Rh
dGEudG9TdHJpbmcoKSIpOwotICAgICAgICAgICAgZGVidWcoIiIpOwotICAgICAgICAgICAgY2Fs
bGJhY2soKTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgZm9yRWFjaFdpdGhDYWxsYmFjayh0
ZXN0UmVnRXhwLCBbCi0gICAgICAgICJuZXcgUmVnRXhwKCkiLAotICAgICAgICAiL2FiYy8iLAot
ICAgICAgICAiL2FiYy9nIiwKLSAgICAgICAgIi9hYmMvaSIsCi0gICAgICAgICIvYWJjL2dpIiwK
LSAgICAgICAgIi9hYmMvbSIsCi0gICAgICAgICIvYWJjL21nIiwKLSAgICAgICAgIi9hYmMvbWki
LAotICAgICAgICAiL2FiYy9tZ2kiCi0gICAgXSwgY2FsbGJhY2spOwotfQotCi1mdW5jdGlvbiB0
ZXN0SW1hZ2VEYXRhKGNhbGxiYWNrKQotewotICAgIGRlYnVnKCJUZXN0aW5nIEltYWdlRGF0YSIp
OwotICAgIGV2YWxBbmRMb2coImNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZh
cycpIik7Ci0gICAgZXZhbEFuZExvZygiY2FudmFzLndpZHRoID0gOCIpOwotICAgIGV2YWxBbmRM
b2coImNhbnZhcy5oZWlnaHQgPSA4Iik7Ci0gICAgZXZhbEFuZExvZygidGVzdF9kYXRhID0gY2Fu
dmFzLmdldENvbnRleHQoJzJkJykuZ2V0SW1hZ2VEYXRhKDAsIDAsIDgsIDgpIik7Ci0KLSAgICBm
b3IgKHZhciBpID0gMDsgaSA8IDI1NjsgKytpKSB7Ci0gICAgICAgIHRlc3RfZGF0YS5kYXRhW2ld
ID0gaTsKLSAgICB9Ci0KLSAgICB0ZXN0VmFsdWUodGVzdF9kYXRhLCBmdW5jdGlvbihyZXN1bHQp
IHsKLSAgICAgICAgc2VsZi5yZXN1bHQgPSByZXN1bHQ7Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgi
dGVzdF9kYXRhICE9PSByZXN1bHQiKTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJP
YmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocmVzdWx0KSIsICJbb2JqZWN0IEltYWdlRGF0
YV0iKTsKLSAgICAgICAgc2hvdWxkQmUoInJlc3VsdC53aWR0aCIsICJ0ZXN0X2RhdGEud2lkdGgi
KTsKLSAgICAgICAgc2hvdWxkQmUoInJlc3VsdC5oZWlnaHQiLCAidGVzdF9kYXRhLmhlaWdodCIp
OwotICAgICAgICBzaG91bGRCZSgicmVzdWx0LmRhdGEubGVuZ3RoIiwgInRlc3RfZGF0YS5kYXRh
Lmxlbmd0aCIpOwotICAgICAgICBpZiAoYXJyYXlDb21wYXJlKHRlc3RfZGF0YS5kYXRhLCByZXN1
bHQuZGF0YSkpIHsKLSAgICAgICAgICAgIHRlc3RQYXNzZWQoInJlc3VsdCBkYXRhIG1hdGNoZXMi
KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRlc3RGYWlsZWQoInJlc3VsdCBkYXRh
IGRvZXNuJ3QgbWF0Y2giKTsKLSAgICAgICAgfQotICAgICAgICBjYWxsYmFjaygpOwotICAgIH0p
OwotfQotCi1mdW5jdGlvbiByZWFkQmxvYkFzVGV4dChibG9iLCBjYWxsYmFjaykKLXsKLSAgICB2
YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsKLSAgICByZWFkZXIub25sb2FkID0gZnVuY3Rp
b24oZSkgewotICAgICAgICBpZiAoZS50YXJnZXQucmVhZHlTdGF0ZSA9PT0gRmlsZVJlYWRlci5E
T05FKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhlLnRhcmdldC5yZXN1bHQpOwotICAgICAgICB9
Ci0gICAgfTsKLSAgICByZWFkZXIub25lcnJvciA9IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgdGVz
dEZhaWxlZCgiRXJyb3IgcmVhZGluZyBibG9iIGFzIHRleHQ6ICIgKyBlKTsKLSAgICAgICAgZmlu
aXNoSlNUZXN0KCk7Ci0gICAgfTsKLSAgICByZWFkZXIucmVhZEFzVGV4dChibG9iKTsKLX0KLQot
ZnVuY3Rpb24gY2hlY2tCbG9iQ29udGVudHMoYmxvYiwgZXhwZWN0ZWQsIGNhbGxiYWNrKQotewot
ICAgIHJlYWRCbG9iQXNUZXh0KGJsb2IsIGZ1bmN0aW9uKHRleHQpIHsKLSAgICAgICAgc2VsZi50
ZXh0ID0gdGV4dDsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0ZXh0IiwgZXhwZWN0
ZWQpOwotICAgICAgICBjYWxsYmFjaygpOwotICAgIH0pOwotfQotCi1mdW5jdGlvbiBjb21wYXJl
QmxvYnMoYmxvYjEsIGJsb2IyLCBjYWxsYmFjaykKLXsKLSAgICByZWFkQmxvYkFzVGV4dChibG9i
MSwgZnVuY3Rpb24odGV4dDEpIHsKLSAgICAgICAgcmVhZEJsb2JBc1RleHQoYmxvYjIsIGZ1bmN0
aW9uKHRleHQyKSB7Ci0gICAgICAgICAgICBzZWxmLnRleHQxID0gdGV4dDE7Ci0gICAgICAgICAg
ICBzZWxmLnRleHQyID0gdGV4dDI7Ci0gICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
InRleHQyIiwgdGV4dDEpOwotICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAgfSk7Ci0g
ICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RCbG9iKGNhbGxiYWNrKQotewotICAgIGRlYnVnKCJU
ZXN0aW5nIEJsb2IiKTsKLQotICAgIC8vIEZJWE1FOiBCbG9iLCBGaWxlLCBhbmQgRmlsZUxpc3Qg
c3VwcG9ydCBpcyBpbmNvbXBsZXRlLgotICAgIC8vIGh0dHA6Ly9jcmJ1Zy5jb20vMTA4MDEyCi0g
ICAgZGVidWcoIlNraXBwaW5nIHRlc3QiKTsKLSAgICBjYWxsYmFjaygpOwotICAgIHJldHVybjsK
LQotICAgIGV2YWxBbmRMb2coIkJsb2JCdWlsZGVyID0gc2VsZi5CbG9iQnVpbGRlciB8fCBzZWxm
LldlYktpdEJsb2JCdWlsZGVyIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJCbG9iQnVpbGRlciAhPSBu
dWxsIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJGaWxlUmVhZGVyICE9IG51bGwiKTsKLSAgICBldmFs
QW5kTG9nKCJidWlsZGVyID0gbmV3IEJsb2JCdWlsZGVyKCkiKTsKLSAgICBldmFsQW5kTG9nKCJ0
ZXN0X2NvbnRlbnQgPSAnVGhpcyBpcyBhIHRlc3QuIFRoaXMgaXMgb25seSBhIHRlc3QuJyIpOwot
ICAgIGV2YWxBbmRMb2coImJ1aWxkZXIuYXBwZW5kKHRlc3RfY29udGVudCkiKTsKLSAgICBldmFs
QW5kTG9nKCJ0ZXN0X2RhdGEgPSBidWlsZGVyLmdldEJsb2IoKSIpOwotICAgIHRlc3RWYWx1ZSh0
ZXN0X2RhdGEsIGZ1bmN0aW9uKHJlc3VsdCkgewotICAgICAgICBzZWxmLnJlc3VsdCA9IHJlc3Vs
dDsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXN0X2RhdGEgIT09IHJlc3VsdCIpOwotICAgICAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChy
ZXN1bHQpIiwgIltvYmplY3QgQmxvYl0iKTsKLSAgICAgICAgc2hvdWxkQmUoInJlc3VsdC5zaXpl
IiwgInRlc3RfZGF0YS5zaXplIik7Ci0gICAgICAgIHNob3VsZEJlKCJyZXN1bHQudHlwZSIsICJ0
ZXN0X2RhdGEudHlwZSIpOwotICAgICAgICBjaGVja0Jsb2JDb250ZW50cyhyZXN1bHQsIHRlc3Rf
Y29udGVudCwgY2FsbGJhY2spOwotICAgIH0pOwotfQotCi1mdW5jdGlvbiBjb21wYXJlRmlsZXMo
ZmlsZTEsIGZpbGUyLCBjYWxsYmFjaykKLXsKLSAgICBzZWxmLmZpbGUxID0gZmlsZTE7Ci0gICAg
c2VsZi5maWxlMiA9IGZpbGUyOwotICAgIHNob3VsZEJlVHJ1ZSgiZmlsZTEgIT09IGZpbGUyIik7
Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNh
bGwoZmlsZTEpIiwgIltvYmplY3QgRmlsZV0iKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
Ik9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChmaWxlMikiLCAiW29iamVjdCBGaWxlXSIp
OwotICAgIGRlYnVnKCJmaWxlMS5zaXplOiAiICsgZmlsZTEuc2l6ZSk7Ci0gICAgc2hvdWxkQmUo
ImZpbGUxLnNpemUiLCAiZmlsZTIuc2l6ZSIpOwotICAgIGRlYnVnKCJmaWxlMS50eXBlOiAiICsg
ZmlsZTEudHlwZSk7Ci0gICAgc2hvdWxkQmUoImZpbGUxLnR5cGUiLCAiZmlsZTIudHlwZSIpOwot
ICAgIGRlYnVnKCJmaWxlMS5uYW1lOiAiICsgZmlsZTEubmFtZSk7Ci0gICAgc2hvdWxkQmUoImZp
bGUxLm5hbWUiLCAiZmlsZTIubmFtZSIpOwotICAgIHNob3VsZEJlKCJTdHJpbmcoZmlsZTEubGFz
dE1vZGlmaWVkRGF0ZSkiLCAiU3RyaW5nKGZpbGUyLmxhc3RNb2RpZmllZERhdGUpIik7Ci0gICAg
aWYgKGNhbGxiYWNrKSB7Ci0gICAgICAgIGNvbXBhcmVCbG9icyhmaWxlMSwgZmlsZTIsIGNhbGxi
YWNrKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RGaWxlKGNhbGxiYWNrKQotewotICAgIGRl
YnVnKCJUZXN0aW5nIEZpbGUiKTsKLQotICAgIC8vIEZJWE1FOiBCbG9iLCBGaWxlLCBhbmQgRmls
ZUxpc3Qgc3VwcG9ydCBpcyBpbmNvbXBsZXRlLgotICAgIC8vIGh0dHA6Ly9jcmJ1Zy5jb20vMTA4
MDEyCi0gICAgZGVidWcoIlNraXBwaW5nIHRlc3QiKTsKLSAgICBjYWxsYmFjaygpOwotICAgIHJl
dHVybjsKLQotICAgIGV2YWxBbmRMb2coInRlc3RfY29udGVudCA9IGZpbGVJbnB1dC5maWxlc1sw
XSIpOwotCi0gICAgc2VsZi50ZXN0X2RhdGEgPSB0ZXN0X2NvbnRlbnQ7Ci0gICAgdGVzdFZhbHVl
KHRlc3RfZGF0YSwgZnVuY3Rpb24ocmVzdWx0KSB7Ci0gICAgICAgIHNlbGYucmVzdWx0ID0gcmVz
dWx0OwotICAgICAgICBjb21wYXJlRmlsZXMocmVzdWx0LCB0ZXN0X2RhdGEsIGNhbGxiYWNrKTsK
LSAgICB9KTsKLX0KLQotCi1mdW5jdGlvbiB0ZXN0RmlsZUxpc3QoY2FsbGJhY2spCi17Ci0gICAg
ZGVidWcoIlRlc3RpbmcgRmlsZUxpc3QiKTsKLQotICAgIC8vIEZJWE1FOiBCbG9iLCBGaWxlLCBh
bmQgRmlsZUxpc3Qgc3VwcG9ydCBpcyBpbmNvbXBsZXRlLgotICAgIC8vIGh0dHA6Ly9jcmJ1Zy5j
b20vMTA4MDEyCi0gICAgZGVidWcoIlNraXBwaW5nIHRlc3QiKTsKLSAgICBjYWxsYmFjaygpOwot
ICAgIHJldHVybjsKLQotICAgIGV2YWxBbmRMb2coInRlc3RfY29udGVudCA9IGZpbGVJbnB1dC5m
aWxlcyIpOwotCi0gICAgc2VsZi50ZXN0X2RhdGEgPSB0ZXN0X2NvbnRlbnQ7Ci0gICAgdGVzdFZh
bHVlKHRlc3RfZGF0YSwgZnVuY3Rpb24ocmVzdWx0KSB7Ci0gICAgICAgIHNlbGYucmVzdWx0ID0g
cmVzdWx0OwotICAgICAgICBzaG91bGRCZVRydWUoInRlc3RfZGF0YSAhPT0gcmVzdWx0Iik7Ci0g
ICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5j
YWxsKHJlc3VsdCkiLCAiW29iamVjdCBGaWxlTGlzdF0iKTsKLSAgICAgICAgc2hvdWxkQmUoInJl
c3VsdC5sZW5ndGgiLCAidGVzdF9kYXRhLmxlbmd0aCIpOwotICAgICAgICBpID0gMDsKLSAgICAg
ICAgZnVuY3Rpb24gZG9OZXh0KCkgewotICAgICAgICAgICAgaWYgKGkgPj0gdGVzdF9kYXRhLmxl
bmd0aCkgewotICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgIGRlYnVnKCJjb21wYXJpbmcgZmlsZVsiICsgaSArICJdIik7Ci0g
ICAgICAgICAgICAgICAgY29tcGFyZUZpbGVzKHJlc3VsdFtpXSwgdGVzdF9kYXRhW2krK10sIGRv
TmV4dCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZG9OZXh0KCk7Ci0gICAg
fSk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RBcnJheShjYWxsYmFjaykgewotICAgIGRlYnVnKCJUZXN0
aW5nIEFycmF5Iik7Ci0gICAgZXZhbEFuZExvZygidGVzdF9kYXRhID0gW10iKTsKLSAgICBldmFs
QW5kTG9nKCJ0ZXN0X2RhdGFbMF0gPSAnZm9vJyIpOwotICAgIGV2YWxBbmRMb2coInRlc3RfZGF0
YVsxXSA9ICdiYXInIik7Ci0gICAgZXZhbEFuZExvZygidGVzdF9kYXRhWzEwXSA9IHRydWUiKTsK
LSAgICBldmFsQW5kTG9nKCJ0ZXN0X2RhdGFbMTFdID0gZmFsc2UiKTsKLSAgICBldmFsQW5kTG9n
KCJ0ZXN0X2RhdGFbMjBdID0gMTIzIik7Ci0gICAgZXZhbEFuZExvZygidGVzdF9kYXRhWzIxXSA9
IDQ1NiIpOwotICAgIGV2YWxBbmRMb2coInRlc3RfZGF0YVszMF0gPSBudWxsIik7Ci0KLSAgICB0
ZXN0VmFsdWUodGVzdF9kYXRhLCBmdW5jdGlvbihyZXN1bHQpIHsKLSAgICAgICAgc2VsZi5yZXN1
bHQgPSByZXN1bHQ7Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgidGVzdF9kYXRhICE9PSByZXN1bHQi
KTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXN0X2RhdGEubGVuZ3RoID09PSByZXN1bHQubGVu
Z3RoIik7Ci0gICAgICAgIE9iamVjdC5rZXlzKHRlc3RfZGF0YSkuZm9yRWFjaCgKLSAgICAgICAg
ICAgIGZ1bmN0aW9uKGtleSkgewotICAgICAgICAgICAgICAgIHNob3VsZEJlKCJ0ZXN0X2RhdGFb
IiArIGtleSArICJdIiwgInJlc3VsdFsiICsga2V5ICsgIl0iKTsKLSAgICAgICAgICAgIH0pOwot
ICAgICAgICBjYWxsYmFjaygpOwotICAgIH0pOwotfQotCi1mdW5jdGlvbiB0ZXN0T2JqZWN0KGNh
bGxiYWNrKSB7Ci0gICAgZGVidWcoIlRlc3RpbmcgT2JqZWN0Iik7Ci0gICAgZXZhbEFuZExvZygi
dGVzdF9kYXRhID0gW10iKTsKLSAgICBldmFsQW5kTG9nKCJ0ZXN0X2RhdGFbMF0gPSAnZm9vJyIp
OwotICAgIGV2YWxBbmRMb2coInRlc3RfZGF0YVsxXSA9ICdiYXInIik7Ci0gICAgZXZhbEFuZExv
ZygidGVzdF9kYXRhWydhJ10gPSB0cnVlIik7Ci0gICAgZXZhbEFuZExvZygidGVzdF9kYXRhWydi
J10gPSBmYWxzZSIpOwotICAgIGV2YWxBbmRMb2coInRlc3RfZGF0YVsnZm9vJ10gPSAxMjMiKTsK
LSAgICBldmFsQW5kTG9nKCJ0ZXN0X2RhdGFbJ2JhciddID0gNDU2Iik7Ci0gICAgZXZhbEFuZExv
ZygidGVzdF9kYXRhWycnXSA9IG51bGwiKTsKLQotICAgIHRlc3RWYWx1ZSh0ZXN0X2RhdGEsIGZ1
bmN0aW9uKHJlc3VsdCkgewotICAgICAgICBzZWxmLnJlc3VsdCA9IHJlc3VsdDsKLSAgICAgICAg
c2hvdWxkQmVUcnVlKCJ0ZXN0X2RhdGEgIT09IHJlc3VsdCIpOwotICAgICAgICBzaG91bGRCZVRy
dWUoImFycmF5Q29tcGFyZShPYmplY3Qua2V5cyhyZXN1bHQpLnNvcnQoKSwgT2JqZWN0LmtleXMo
dGVzdF9kYXRhKS5zb3J0KCkpIik7Ci0gICAgICAgIE9iamVjdC5rZXlzKHRlc3RfZGF0YSkuZm9y
RWFjaCgKLSAgICAgICAgICAgIGZ1bmN0aW9uKGtleSkgewotICAgICAgICAgICAgICAgIHNob3Vs
ZEJlKCJ0ZXN0X2RhdGFbIiArIEpTT04uc3RyaW5naWZ5KGtleSkgKyAiXSIsICJyZXN1bHRbIiAr
IEpTT04uc3RyaW5naWZ5KGtleSkgKyAiXSIpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIGNh
bGxiYWNrKCk7Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RCYWRUeXBlcygpCi17Ci0gICAg
ZGVidWcoIiIpOwotICAgIGRlYnVnKCJUZXN0IHR5cGVzIHRoYXQgY2FuJ3QgYmUgY2xvbmVkOiIp
OwotICAgIGRlYnVnKCIiKTsKLQotICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJh
bnNhY3Rpb24oJ3N0b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAg
ZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJyki
KTsKLSAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0g
ICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOwot
ICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmaW5pc2hKU1Rlc3Q7Ci0KLSAgICBkZWJ1ZygiIik7
Ci0gICAgZGVidWcoIk90aGVyIEphdmFTY3JpcHQgb2JqZWN0IHR5cGVzOiIpOwotICAgIGV2YWxB
bmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLnB1dChuZXcgRXJyb3IsICdrZXknKSIsICJET01FeGNl
cHRpb24uREFUQV9DTE9ORV9FUlIiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9y
ZS5wdXQobmV3IEZ1bmN0aW9uLCAna2V5JykiLCAiRE9NRXhjZXB0aW9uLkRBVEFfQ0xPTkVfRVJS
Iik7Ci0KLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIk90aGVyIGhvc3Qgb2JqZWN0IHR5cGVz
OiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLnB1dChzZWxmLCAna2V5Jyki
LCAiRE9NRXhjZXB0aW9uLkRBVEFfQ0xPTkVfRVJSIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2Vw
dGlvbigic3RvcmUucHV0KGRvY3VtZW50LCAna2V5JykiLCAiRE9NRXhjZXB0aW9uLkRBVEFfQ0xP
TkVfRVJSIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KGRvY3VtZW50
LmJvZHksICdrZXknKSIsICJET01FeGNlcHRpb24uREFUQV9DTE9ORV9FUlIiKTsKLX0KLQotdGVz
dCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc3RydWN0dXJlZC1jbG9u
ZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFib3J0LXdpdGgtanMtcmVj
dXJzaW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1h
Ym9ydC13aXRoLWpzLXJlY3Vyc2lvbi5odG1sCmluZGV4IDc5OGU4MjcwM2Y4NmM4YjA4ZjZkZTQ3
MWU1NmMxZmM1MGE0ZjJkODIuLjIwMGZjNjdiZDJhZWVkNzIzMWFjNTM1MDk5MTVjMjRkNzNiNWQz
YTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9u
LWFib3J0LXdpdGgtanMtcmVjdXJzaW9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQtd2l0aC1qcy1yZWN1cnNpb24uaHRtbApAQCAtMSw2
NyArMSwxMCBAQAotPGh0bWw+DQotPGhlYWQ+DQotPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4NCi08c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+DQotPC9oZWFkPg0KLTxib2R5Pg0KLTxwIGlkPSJkZXNj
cmlwdGlvbiI+PC9wPg0KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pg0KLTxzY3JpcHQ+DQotDQot
dmFyIHRyYW5zYWN0aW9uOw0KLXZhciBzdG9yZTsNCi12YXIgZGI7DQotdmFyIGJvZHkgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdOw0KLQ0KLWRlc2NyaXB0aW9uKCJU
ZXN0IHRoYXQgcGVuZGluZyB0cmFuc2FjdGlvbnMgYXJlIG5vdCBhYm9ydGVkIGR1cmluZyByZWN1
cnNpdmUgSlMgY2FsbHMgdW50aWwgYWxsIEpTIGlzIGZpbmlzaGVkLiIpOw0KLQ0KLWZ1bmN0aW9u
IHNldHVwKCkgew0KLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOw0KLQ0KLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0aW9uLWFib3J0LXdpdGgtanMt
cmVjdXJzaW9uJykiKTsNCi0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uOw0KLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsNCi19DQotDQotZnVu
Y3Rpb24gc2V0VmVyc2lvbigpIHsNCi0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsNCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24o
J25ldyB2ZXJzaW9uJykiKTsNCi0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGljazsNCi0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQotfQ0KLQ0KLWZ1bmN0
aW9uIGNsaWNrKCkgew0KLSAgICBzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdvYmplY3RT
dG9yZScsIG51bGwpOw0KLSAgICBib2R5Lm9uY2xpY2sgPSB0ZXN0Ow0KLSAgICB2YXIgcGVuZGlu
Z1RyYW5zYWN0aW9uID0gZXZhbEFuZExvZygicGVuZGluZ1RyYW5zYWN0aW9uID0gZGIudHJhbnNh
Y3Rpb24oWydvYmplY3RTdG9yZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOw0KLSAg
ICBwZW5kaW5nVHJhbnNhY3Rpb24ub25zdWNjZXNzID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
DQotICAgIHBlbmRpbmdUcmFuc2FjdGlvbi5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7DQotICAgIHBlbmRpbmdUcmFuc2FjdGlvbi5vbmFib3J0ID0gYWJvcnRDYWxsYmFjazsNCi0g
ICAgdmFyIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoIk1vdXNlRXZlbnQiKTsNCi0gICAg
ZXZlbnQuaW5pdE1vdXNlRXZlbnQoImNsaWNrIiwgdHJ1ZSwgdHJ1ZSwgZG9jdW1lbnQuZGVmYXVs
dFZpZXcsIDAsIDAsIDAsIDAsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAwLCBudWxs
KTsNCi0gICAgYm9keS5kaXNwYXRjaEV2ZW50KGV2ZW50KTsNCi0gICAgdmFyIHN0b3JlID0gZXZh
bEFuZExvZygic3RvcmUgPSBwZW5kaW5nVHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ29iamVjdFN0
b3JlJykiKTsNCi0gICAgc2hvdWxkQmVUcnVlKCJzdG9yZSAhPT0gdW5kZWZpbmVkIik7DQotICAg
IGJvZHkub25jbGljayA9IHVuZGVmaW5lZDsNCi19DQotDQotZnVuY3Rpb24gdGVzdCgpDQotew0K
LSAgICBkZWJ1ZygiU3RhcnQgcmUtZW50cmFudCBKUyIpOw0KLSAgICB0cmFuc2FjdGlvbiA9IGV2
YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydvYmplY3RTdG9yZSddLCBJ
REJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOw0KLSAgICBkZWJ1ZygiRW5kIHJlLWVudHJhbnQg
SlMiKTsNCi19DQotDQotDQotZnVuY3Rpb24gYWJvcnRDYWxsYmFjaygpDQotew0KLSAgICBkZWJ1
ZygiUGVuZGluZyB0cmFuc2FjdGlvbiBhYm9ydGVkIik7DQotICAgIGZpbmlzaEpTVGVzdCgpOw0K
LX0NCi0NCi1zZXR1cCgpOw0KLQ0KLTwvc2NyaXB0Pg0KLTxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pg0KLTwvYm9keT4NCi08L2h0
bWw+DQorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJl
ZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
dHJhbnNhY3Rpb24tYWJvcnQtd2l0aC1qcy1yZWN1cnNpb24uanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi90cmFuc2FjdGlvbi1hYm9ydC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvdHJhbnNhY3Rpb24tYWJvcnQuaHRtbAppbmRleCA0NTU0NTc3NmNjM2FlNTEwY2U2MDBiMTQ4
ODNiMzMxOWQ0ODFhYTNlLi4xYmFjYjVmYjc4Y2E1MjMyMzRkZmVkZmRjYjNjYjJhMzcwZTliYzNk
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1h
Ym9ydC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9u
LWFib3J0Lmh0bWwKQEAgLTQsOTggKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFy
ZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRl
c3QgdHJhbnNhY3Rpb24gYWJvcnRzIHNlbmQgdGhlIHByb3BlciBvbmFib3J0IG1lc3NhZ2VzLi4i
KTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignbmFtZScpIik7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uKCkKLXsKLSAg
ICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4aXN0aW5nOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBkZWxldGVFeGlzdGluZygp
Ci17Ci0gICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7Ci0gICAgc2VsZi50cmFucyA9
IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJl
VHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFi
b3J0Q2FsbGJhY2s7Ci0gICAgZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IHN0YXJ0VGVz
dCIpOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIHN0b3JlID0gZXZh
bEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCki
KTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAn
enp6J30sICdrZXknKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotfQotCi1mdW5jdGlvbiBzdGFydFRlc3QoKQotewotICAgIHRyYW5zID0gZXZhbEFu
ZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlv
bi5SRUFEX1dSSVRFKSIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSB0cmFuc2Fj
dGlvbkFib3J0ZWQiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gdW5leHBl
Y3RlZENvbXBsZXRlQ2FsbGJhY2siKTsKLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0g
dHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlMicsIHk6ICd6enoyJ30sICdrZXkyJykiKTsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSBmaXJzdEFkZDsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVuZXhw
ZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFk
ZCh7eDogJ3ZhbHVlMycsIHk6ICd6enozJ30sICdrZXkzJykiKTsKLSAgICByZXF1ZXN0Lm9uZXJy
b3IgPSBzZWNvbmRBZGQ7Ci0gICAgdHJhbnMuYWJvcnQoKTsKLQotICAgIGZpcnN0RXJyb3IgPSBm
YWxzZTsKLSAgICBzZWNvbmRFcnJvciA9IGZhbHNlOwotICAgIGFib3J0RmlyZWQgPSBmYWxzZTsK
LX0KLQotZnVuY3Rpb24gZmlyc3RBZGQoKQotewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQu
ZXJyb3JDb2RlIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkFCT1JUX0VSUiIpOwotICAgIHNob3Vs
ZEJlRmFsc2UoImZpcnN0RXJyb3IiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJzZWNvbmRFcnJvciIp
OwotICAgIHNob3VsZEJlRmFsc2UoImFib3J0RmlyZWQiKTsKLSAgICBmaXJzdEVycm9yID0gdHJ1
ZTsKLQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmFkZCh7eDogJ3ZhbHVlNCcs
IHk6ICd6eno0J30sICdrZXk0JykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05f
SU5BQ1RJVkVfRVJSIik7Ci19Ci0KLWZ1bmN0aW9uIHNlY29uZEFkZCgpCi17Ci0gICAgc2hvdWxk
QmUoImV2ZW50LnRhcmdldC5lcnJvckNvZGUiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uQUJPUlRf
RVJSIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJmaXJzdEVycm9yIik7Ci0gICAgc2hvdWxkQmVGYWxz
ZSgic2Vjb25kRXJyb3IiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJhYm9ydEZpcmVkIik7Ci0gICAg
c2Vjb25kRXJyb3IgPSB0cnVlOwotfQotCi1mdW5jdGlvbiB0cmFuc2FjdGlvbkFib3J0ZWQoKQot
ewotICAgIHNob3VsZEJlVHJ1ZSgiZmlyc3RFcnJvciIpOwotICAgIHNob3VsZEJlVHJ1ZSgic2Vj
b25kRXJyb3IiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJhYm9ydEZpcmVkIik7Ci0gICAgYWJvcnRG
aXJlZCA9IHRydWU7Ci0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5hZGQoe3g6
ICd2YWx1ZTUnLCB5OiAnenp6NSd9LCAna2V5NScpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRS
QU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi10ZXN0
KCk7Ci0KLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3RyYW5zYWN0aW9uLWFi
b3J0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWZ0ZXItY2xvc2UuaHRt
bCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFmdGVyLWNsb3Nl
Lmh0bWwKaW5kZXggYjFmMjViOWE5NmU1NzE5YWMyZDQ5YWRjYmJhZjk2YTlhYTUxMTY5MC4uM2E0
MTYxNGNjMGZjN2VhMTA2OWQ0OTg1YjdhMzEyOTNmZTkyNTI1MCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWZ0ZXItY2xvc2UuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hZnRlci1jbG9zZS5o
dG1sCkBAIC0xLDkyICsxLDEwIEBACi08aHRtbD4NCi08aGVhZD4NCi08c2NyaXB0IHNyYz0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pg0KLTxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4NCi08L2hlYWQ+DQotPGJvZHk+DQot
PHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+DQotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+DQotPHNj
cmlwdD4NCi0NCi1kZXNjcmlwdGlvbigiVGVzdCBjbG9zaW5nIGEgZGF0YWJhc2UgY29ubmVjdGlv
biBpbiBJbmRleGVkREIuIik7DQotDQotZnVuY3Rpb24gdGVzdCgpDQotew0KLSAgICByZW1vdmVW
ZW5kb3JQcmVmaXhlcygpOw0KLQ0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERC
Lm9wZW4oJ3RyYW5zYWN0aW9uLWFmdGVyLWNsb3NlJykiKTsNCi0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBvcGVuU3VjY2VzczsNCi0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7DQotfQ0KLQ0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkNCi17DQotICAgIGRlYnVn
KCJvcGVuU3VjY2VzcygpOiIpOw0KLSAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7DQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
ZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsNCi0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBp
blNldFZlcnNpb247DQotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOw0KLX0NCi0NCi1mdW5jdGlvbiBpblNldFZlcnNpb24oKQ0KLXsNCi0gICAgZGVsZXRlQWxs
T2JqZWN0U3RvcmVzKGRiKTsNCi0NCi0gICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5vbmNvbXBsZXRl
ID0gcnVuRmlyc3RSZWd1bGFyVHJhbnNhY3Rpb247DQotICAgIGV2ZW50LnRhcmdldC5yZXN1bHQu
b25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOw0KLSAgICBzdG9yZSA9IGV2YWxBbmRM
b2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsNCi0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdG9yZS5wdXQoJ3gnLCAneScpIik7DQotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gb25QdXRTdWNjZXNzOw0KLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsNCi19DQotDQotZnVuY3Rpb24gb25QdXRTdWNjZXNzKCkN
Ci17DQotICAgIHRlc3RQYXNzZWQoIlB1dCBzdWNjZXNzIikNCi19DQotDQotZnVuY3Rpb24gcnVu
Rmlyc3RSZWd1bGFyVHJhbnNhY3Rpb24oKQ0KLXsNCi0gICAgZGVidWcoInJ1bm5pbmcgZmlyc3Qg
dHJhbnNhY3Rpb24iKQ0KLSAgICBjdXJyZW50VHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJjdXJy
ZW50VHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9u
LlJFQURfV1JJVEUpIik7DQotICAgIGN1cnJlbnRUcmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBl
Y3RlZEFib3J0Q2FsbGJhY2s7DQotICAgIGN1cnJlbnRUcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0g
Zmlyc3RUcmFuc2FjdGlvbkNvbXBsZXRlOw0KLSAgICBvYmplY3RTdG9yZSA9IGN1cnJlbnRUcmFu
c2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKTsNCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
Im9iamVjdFN0b3JlLnB1dCgnYScsICdiJykiKTsNCi0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7DQotfQ0KLQ0KLWZ1bmN0aW9uIGZpcnN0VHJhbnNhY3Rpb25D
b21wbGV0ZSgpDQotew0KLSAgICBldmFsQW5kTG9nKCJkYi5jbG9zZSgpIik7DQotICAgIGV2YWxB
bmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKFsnc3RvcmUnXSwgSURCVHJhbnNhY3Rp
b24uUkVBRF9XUklURSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0FMTE9XRURfRVJSIik7
DQotDQotICAgIGRlYnVnKCIiKQ0KLSAgICBkZWJ1ZygidmVyaWZ5IHRoYXQgd2UgY2FuIHJlb3Bl
biB0aGUgZGIgYWZ0ZXIgY2FsbGluZyBjbG9zZSIpDQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJpbmRleGVkREIub3BlbigndHJhbnNhY3Rpb24tYWZ0ZXItY2xvc2UnKSIpOw0KLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IG9uU2Vjb25kT3Blbg0KLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsNCi19DQotDQotZnVuY3Rpb24gb25TZWNvbmRPcGVuKCkgew0K
LSAgICBzZWNvbmRfZGIgPSBldmFsQW5kTG9nKCJzZWNvbmRfZGIgPSBldmVudC50YXJnZXQucmVz
dWx0Iik7DQotICAgIGN1cnJlbnRUcmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coImN1cnJlbnRUcmFu
c2FjdGlvbiA9IHNlY29uZF9kYi50cmFuc2FjdGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9u
LlJFQURfV1JJVEUpIik7DQotICAgIHN0b3JlID0gY3VycmVudFRyYW5zYWN0aW9uLm9iamVjdFN0
b3JlKCdzdG9yZScpOw0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHN0b3Jl
LnB1dCgnMScsICcyJykiKTsNCi0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvbkZpbmFsUHV0U3Vj
Y2VzczsNCi0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQot
ICAgIGN1cnJlbnRUcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZmluaXNoSlNUZXN0Ow0KLSAgICBj
dXJyZW50VHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOw0KLX0N
Ci0NCi1mdW5jdGlvbiBvbkZpbmFsUHV0U3VjY2VzcygpIHsNCi0gICAgdGVzdFBhc3NlZCgiZmlu
YWwgcHV0IHN1Y2Nlc3MiKTsNCi19DQotDQotDQotdGVzdCgpOw0KLQ0KLTwvc2NyaXB0Pg0KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0Pg0KLTwvYm9keT4NCi08L2h0bWw+DQorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvdHJhbnNhY3Rpb24tYWZ0ZXItY2xvc2UuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hbmQtb2JqZWN0c3RvcmUtY2FsbHMuaHRtbCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFuZC1vYmplY3RzdG9yZS1j
YWxscy5odG1sCmluZGV4IDFkNTc0ZGMyNjNhNDE1MTlhYWQ0ZmE4MjM0YjYzMWY0NDI1NmJhOGQu
LjFhMGI1ZWY5OGJkZTI2ZjQwZGJiODgwMTQ1NzM4YjEyNDZmNWJjZWYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFuZC1vYmplY3RzdG9yZS1j
YWxscy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9u
LWFuZC1vYmplY3RzdG9yZS1jYWxscy5odG1sCkBAIC00LDEzMSArNCw3IEBACiA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxwIGlk
PSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0Pgot
Ci1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyB0cmFuc2FjdGlvbiBhbmQgb2JqZWN0U3Rv
cmUgY2FsbHMiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4
ZXMoKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndHJhbnNh
Y3Rpb24tYW5kLW9iamVjdHN0b3JlLWNhbGxzJywgJ2Rlc2NyaXB0aW9uJykiKTsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAg
c2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJyZXN1bHQgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIp
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY2xlYW5EYXRh
YmFzZSgpCi17Ci0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgZXZhbEFuZExv
ZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2EnKSIpOwotICAgIGV2YWxBbmRMb2coImRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdiJykiKTsKLSAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9y
ZSgnc3RvcmUnKS5jcmVhdGVJbmRleCgnaW5kZXgnLCAnc29tZV9wYXRoJykiKTsKLSAgICBldmFs
QW5kTG9nKCJ0cmFucy5hZGRFdmVudExpc3RlbmVyKCdjb21wbGV0ZScsIGNyZWF0ZWQsIHRydWUp
Iik7Ci0gICAgZGVidWcoIiIpOwotfQotCi1mdW5jdGlvbiBjcmVhdGVkKCkKLXsKLSAgICB0cmFu
cyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydhJ10pIik7Ci0gICAgZXZh
bEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2EnKSIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oInRyYW5zLm9iamVjdFN0b3JlKCdiJykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9U
X0ZPVU5EX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInRyYW5zLm9iamVjdFN0
b3JlKCd4JykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOwotICAgIGRl
YnVnKCIiKTsKLQotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlv
bihbJ2EnXSkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYScpIik7Ci0g
ICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ2InKSIsICJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2Vw
dGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ3gnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1Rf
Rk9VTkRfRVJSIik7Ci0gICAgZGVidWcoIiIpOwotCi0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0
cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnYiddKSIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9i
amVjdFN0b3JlKCdiJykiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0cmFucy5vYmpl
Y3RTdG9yZSgnYScpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKLSAg
ICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0cmFucy5vYmplY3RTdG9yZSgneCcpIiwgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKLSAgICBkZWJ1ZygiIik7Ci0KLSAgICB0
cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydhJywgJ2InXSkiKTsK
LSAgICBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYScpIik7Ci0gICAgZXZhbEFuZExv
ZygidHJhbnMub2JqZWN0U3RvcmUoJ2InKSIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24o
InRyYW5zLm9iamVjdFN0b3JlKCd4JykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5E
X0VSUiIpOwotICAgIGRlYnVnKCIiKTsKLQotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMg
PSBkYi50cmFuc2FjdGlvbihbJ2InLCAnYSddKSIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9i
amVjdFN0b3JlKCdhJykiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYicp
Iik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ3gnKSIs
ICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7Ci0gICAgZGVidWcoIiIpOwot
Ci0gICAgZGVidWcoIlBhc3NpbmcgYSBzdHJpbmcgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIGEg
c2hvcnRjdXQgZm9yIGp1c3Qgb25lIG9iamVjdCBzdG9yZToiKTsKLSAgICB0cmFucyA9IGV2YWxB
bmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ2EnKSIpOwotICAgIGV2YWxBbmRMb2coInRy
YW5zLm9iamVjdFN0b3JlKCdhJykiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0cmFu
cy5vYmplY3RTdG9yZSgnYicpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIi
KTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0cmFucy5vYmplY3RTdG9yZSgneCcpIiwg
IklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKLSAgICBkZWJ1ZygiIik7Ci0K
LSAgICBzaG91bGRUaHJvdygidHJhbnMgPSBkYi50cmFuc2FjdGlvbigpIik7Ci0gICAgZGVidWco
IiIpOwotCi0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oWyd4J10p
IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKLSAgICBldmFsQW5kRXhw
ZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbihbJ3gnXSkiLCAiSURCRGF0YWJhc2VFeGNlcHRp
b24uTk9UX0ZPVU5EX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5z
YWN0aW9uKFsnYScsICd4J10pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIi
KTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbihbJ3gnLCAneCdd
KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7Ci0gICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oWydhJywgJ3gnLCAnYiddKSIsICJJREJEYXRh
YmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7Ci0gICAgZGVidWcoIiIpOwotCi0gICAgZGVi
dWcoIkV4Y2VwdGlvbiB0aHJvd24gd2hlbiBubyBzdG9yZXMgc3BlY2lmaWVkOiIpOwotICAgIGV2
YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKFtdKSIsICJET01FeGNlcHRpb24u
SU5WQUxJRF9BQ0NFU1NfRVJSIik7Ci0gICAgZGVidWcoIiIpOwotCi0gICAgZGVidWcoInt9IGNv
ZXJjZXMgdG8gYSBzdHJpbmcgLSBzbyBubyBtYXRjaCwgYnV0IG5vdCBhIHR5cGUgZXJyb3I6Iik7
Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oe30pIiwgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJkYi50cmFuc2FjdGlvbih7bW9kZTowfSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9U
X0ZPVU5EX0VSUiIpOwotICAgIGRlYnVnKCIiKTsKLQotICAgIGRlYnVnKCJPdmVycmlkaW5nIHRo
ZSBkZWZhdWx0IHN0cmluZyBjb2VyY2lvbiBtYWtlcyB0aGVzZSB3b3JrOiIpOwotICAgIGV2YWxB
bmRMb2coImRiLnRyYW5zYWN0aW9uKHt0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiAnYSc7fX0p
Iik7Ci0gICAgZXZhbEFuZExvZygiZGIudHJhbnNhY3Rpb24oW3t0b1N0cmluZzpmdW5jdGlvbigp
e3JldHVybiAnYSc7fX1dKSIpOwotICAgIGRlYnVnKCIuLi4gYnV0IHlvdSBzdGlsbCBuZWVkIHRv
IHNwZWNpZnkgYSByZWFsIHN0b3JlOiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRi
LnRyYW5zYWN0aW9uKFt7dG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gJ3gnO319XSkiLCAiSURC
RGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oImRiLnRyYW5zYWN0aW9uKFt7dG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gJ3gnO319
XSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOwotICAgIGRlYnVnKCIi
KTsKLQotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0
b3JlJ10pIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPSBudWxsIik7Ci0gICAgdHJhbnMu
b25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIHRyYW5zLm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gYWZ0ZXJDb21w
bGV0ZTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScp
Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJzdG9yZSAhPSBudWxsIik7Ci0gICAgZXZhbEFuZExvZygi
c3RvcmUuZ2V0KCdzb21lX2tleScpIik7Ci19Ci0KLWZ1bmN0aW9uIGFmdGVyQ29tcGxldGUoKQot
ewotICAgIGRlYnVnKCJ0cmFuc2FjdGlvbiBjb21wbGV0ZSwgZW5zdXJpbmcgbWV0aG9kcyBmYWls
Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPSBudWxsIik7Ci0gICAgc2hvdWxkQmVUcnVl
KCJzdG9yZSAhPSBudWxsIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigidHJhbnMub2Jq
ZWN0U3RvcmUoJ3N0b3JlJykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0FMTE9XRURfRVJS
Iik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuaW5kZXgoJ2luZGV4JykiLCAi
SURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0FMTE9XRURfRVJSIik7Ci0KLSAgICBmaW5pc2hKU1Rl
c3QoKTsKLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
dHJhbnNhY3Rpb24tYW5kLW9iamVjdHN0b3JlLWNhbGxzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgog
PC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvdHJhbnNhY3Rpb24tYmFzaWNzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi90cmFuc2FjdGlvbi1iYXNpY3MuaHRtbAppbmRleCAzOWI4NDhjNzFiMzE5NzZiYWRhODM5NzI5
MzAwODZiMzE5YjBmODc4Li5kNWE3ZDIzYmNlMTE1M2QzNzdlZDAyM2U5MTdmZDExYTBiNmFiZWI1
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1i
YXNpY3MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlv
bi1iYXNpY3MuaHRtbApAQCAtMSwyOTcgKzEsMTAgQEAKLTxodG1sPg0KLTxoZWFkPg0KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
DQotPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0Pg0KLTwvaGVhZD4N
Ci08Ym9keT4NCi08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4NCi08ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4NCi08c2NyaXB0Pg0KLQ0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiB0cmFuc2Fj
dGlvbiBiYXNpY3MuIik7DQotDQotZnVuY3Rpb24gdGVzdCgpDQotew0KLSAgICByZW1vdmVWZW5k
b3JQcmVmaXhlcygpOw0KLQ0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9w
ZW4oJ3RyYW5zYWN0aW9uLWJhc2ljcycpIik7DQotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3Bl
blN1Y2Nlc3M7DQotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
Ow0KLX0NCi0NCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpDQotew0KLSAgICBkZWJ1Zygib3BlblN1
Y2Nlc3MoKToiKTsNCi0gICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOw0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZl
cnNpb24oJ3ZlcnNpb24gMScpIik7DQotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRh
YmFzZTsNCi0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQot
fQ0KLQ0KLWZ1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQ0KLXsNCi0gICAgZGVsZXRlQWxsT2JqZWN0
U3RvcmVzKGRiLCBjaGVja01ldGFkYXRhRW1wdHkpOw0KLSAgICBldmVudC50YXJnZXQucmVzdWx0
Lm9uY29tcGxldGUgPSB0ZXN0U2V0VmVyc2lvbkFib3J0MTsNCi19DQotDQotZnVuY3Rpb24gdGVz
dFNldFZlcnNpb25BYm9ydDEoKQ0KLXsNCi0gICAgY2hlY2tNZXRhZGF0YUVtcHR5KCk7DQotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gc3RhcnRTZXRWZXJzaW9uKCd2ZXJzaW9u
IGZhaWwnKSIpOw0KLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZFJlbW92ZUlEQk9iamVjdHM7
DQotfQ0KLQ0KLWZ1bmN0aW9uIGFkZFJlbW92ZUlEQk9iamVjdHMoKQ0KLXsNCi0gICAgZGVidWco
ImFkZFJlbW92ZUlEQk9iamVjdHMoKToiKTsNCi0gICAgdmFyIHRyYW5zID0gZXZhbEFuZExvZygi
dHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7DQotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMg
IT09IG51bGwiKTsNCi0gICAgdHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCB0ZXN0U2V0
VmVyc2lvbkFib3J0MiwgdHJ1ZSk7DQotICAgIHRyYW5zLm9uY29tcGxldGUgPSB1bmV4cGVjdGVk
Q29tcGxldGVDYWxsYmFjazsNCi0NCi0gICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUg
PSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVGYWlsJywgbnVsbCkiKTsNCi0gICAgdmFyIGlu
ZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhGYWlsJywg
J3gnKSIpOw0KLQ0KLSAgICBldmFsQW5kTG9nKCJkYi5kZWxldGVPYmplY3RTdG9yZSgnc3RvcmVG
YWlsJykiKTsNCi0gICAgZXZhbEFuZExvZygic3RvcmUuZGVsZXRlSW5kZXgoJ2luZGV4RmFpbCcp
Iik7DQotDQotICAgIHRyYW5zLmFib3J0KCk7DQotfQ0KLQ0KLWZ1bmN0aW9uIHRlc3RTZXRWZXJz
aW9uQWJvcnQyKCkNCi17DQotICAgIGRlYnVnKCIiKTsNCi0gICAgZGVidWcoInRlc3RTZXRWZXJz
aW9uQWJvcnQyKCk6Iik7DQotICAgIGNoZWNrTWV0YWRhdGFFbXB0eSgpOw0KLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHN0YXJ0U2V0VmVyc2lvbigndmVyc2lvbiBmYWlsJyki
KTsNCi0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRSZW1vdmVBZGRJREJPYmplY3RzOw0KLX0N
Ci0NCi1mdW5jdGlvbiBhZGRSZW1vdmVBZGRJREJPYmplY3RzKCkNCi17DQotICAgIGRlYnVnKCJh
ZGRSZW1vdmVBZGRJREJPYmplY3RzKCk6Iik7DQotICAgIHZhciB0cmFucyA9IGV2YWxBbmRMb2co
InRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOw0KLSAgICBzaG91bGRCZVRydWUoInRyYW5z
ICE9PSBudWxsIik7DQotICAgIHRyYW5zLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgdGVzdFNl
dFZlcnNpb25BYm9ydDMsIGZhbHNlKTsNCi0gICAgdHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0
ZWRDb21wbGV0ZUNhbGxiYWNrOw0KLQ0KLSAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9y
ZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZUZhaWwnLCBudWxsKSIpOw0KLSAgICB2YXIg
aW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleEZhaWwn
LCAneCcpIik7DQotDQotICAgIGV2YWxBbmRMb2coImRiLmRlbGV0ZU9iamVjdFN0b3JlKCdzdG9y
ZUZhaWwnKSIpOw0KLSAgICBldmFsQW5kTG9nKCJzdG9yZS5kZWxldGVJbmRleCgnaW5kZXhGYWls
JykiKTsNCi0NCi0gICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVP
YmplY3RTdG9yZSgnc3RvcmVGYWlsJywgbnVsbCkiKTsNCi0gICAgdmFyIGluZGV4ID0gZXZhbEFu
ZExvZygiaW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhGYWlsJywgJ3gnKSIpOw0KLQ0K
LSAgICB0cmFucy5hYm9ydCgpOw0KLX0NCi0NCi1mdW5jdGlvbiB0ZXN0U2V0VmVyc2lvbkFib3J0
MygpDQotew0KLSAgICBkZWJ1ZygiIik7DQotICAgIGRlYnVnKCJ0ZXN0U2V0VmVyc2lvbkFib3J0
MygpOiIpOw0KLSAgICBzaG91bGRCZUZhbHNlKCJldmVudC5jYW5jZWxhYmxlIik7DQotICAgIGNo
ZWNrTWV0YWRhdGFFbXB0eSgpOw0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IHN0YXJ0U2V0VmVyc2lvbigndmVyc2lvbiBmYWlsJykiKTsNCi0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBhZGRJREJPYmplY3RzOw0KLX0NCi0NCi1mdW5jdGlvbiBhZGRJREJPYmplY3RzKCkNCi17
DQotICAgIGRlYnVnKCJhZGRJREJPYmplY3RzKCk6Iik7DQotICAgIHNob3VsZEJlRmFsc2UoImV2
ZW50LmNhbmNlbGFibGUiKTsNCi0gICAgdmFyIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBl
dmVudC50YXJnZXQucmVzdWx0Iik7DQotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwi
KTsNCi0gICAgdHJhbnMub25hYm9ydCA9IHRlc3RJbmFjdGl2ZUFib3J0ZWRUcmFuc2FjdGlvbjsN
Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOw0KLQ0K
LSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0
b3JlRmFpbCcsIG51bGwpIik7DQotICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBzdG9y
ZS5jcmVhdGVJbmRleCgnaW5kZXhGYWlsJywgJ3gnKSIpOw0KLQ0KLSAgICB0cmFucy5hYm9ydCgp
Ow0KLX0NCi0NCi1mdW5jdGlvbiB0ZXN0SW5hY3RpdmVBYm9ydGVkVHJhbnNhY3Rpb24oKQ0KLXsN
Ci0gICAgZGVidWcoIiIpOw0KLSAgICBkZWJ1ZygidGVzdEluYWN0aXZlQWJvcnRlZFRyYW5zYWN0
aW9uKCk6Iik7DQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4Lm9wZW5DdXJzb3Io
KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsNCi0g
ICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXgub3BlbktleUN1cnNvcigpIiwgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOw0KLSAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKCJpbmRleC5nZXQoMCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJB
TlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7DQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImlu
ZGV4LmdldEtleSgwKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElW
RV9FUlIiKTsNCi0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXguY291bnQoKSIsICJJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsNCi0NCi0gICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KDAsIDApIiwgIklEQkRhdGFiYXNlRXhj
ZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOw0KLSAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJzdG9yZS5hZGQoMCwgMCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJ
T05fSU5BQ1RJVkVfRVJSIik7DQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmRl
bGV0ZSgwKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIi
KTsNCi0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuY2xlYXIoKSIsICJJREJEYXRh
YmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsNCi0gICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigic3RvcmUuZ2V0KDApIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5T
QUNUSU9OX0lOQUNUSVZFX0VSUiIpOw0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9y
ZS5vcGVuQ3Vyc29yKCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJ
VkVfRVJSIik7DQotDQotICAgIHRlc3RTZXRWZXJzaW9uQWJvcnQ0KCk7DQotfQ0KLQ0KLWZ1bmN0
aW9uIHRlc3RTZXRWZXJzaW9uQWJvcnQ0KCkNCi17DQotICAgIGRlYnVnKCIiKTsNCi0gICAgZGVi
dWcoInRlc3RTZXRWZXJzaW9uQWJvcnQ0KCk6Iik7DQotICAgIGNoZWNrTWV0YWRhdGFFbXB0eSgp
Ow0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHN0YXJ0U2V0VmVyc2lvbign
dmVyc2lvbiBmYWlsJykiKTsNCi0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRJREJPYmplY3Rz
QW5kQ29tbWl0Ow0KLX0NCi0NCi1mdW5jdGlvbiBhZGRJREJPYmplY3RzQW5kQ29tbWl0KCkNCi17
DQotICAgIGRlYnVnKCJhZGRJREJPYmplY3RzQW5kQ29tbWl0KCk6Iik7DQotICAgIHZhciB0cmFu
cyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOw0KLSAgICBzaG91
bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7DQotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVj
dGVkQWJvcnRDYWxsYmFjazsNCi0NCi0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZUZhaWwnLCBudWxsKSIpOw0KLSAgICBpbmRleCA9IGV2
YWxBbmRMb2coImluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4RmFpbCcsICd4JykiKTsN
Ci0NCi0gICAgdHJhbnMub25jb21wbGV0ZSA9IHRlc3RJbmFjdGl2ZUNvbXBsZXRlZFRyYW5zYWN0
aW9uOw0KLX0NCi0NCi1mdW5jdGlvbiB0ZXN0SW5hY3RpdmVDb21wbGV0ZWRUcmFuc2FjdGlvbigp
DQotew0KLSAgICBkZWJ1ZygiIik7DQotICAgIGRlYnVnKCJ0ZXN0SW5hY3RpdmVDb21wbGV0ZWRU
cmFuc2FjdGlvbigpOiIpOw0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJpbmRleC5vcGVu
Q3Vyc29yKCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJS
Iik7DQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4Lm9wZW5LZXlDdXJzb3IoKSIs
ICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsNCi0gICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXguZ2V0KDApIiwgIklEQkRhdGFiYXNlRXhjZXB0
aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOw0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJpbmRleC5nZXRLZXkoMCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05f
SU5BQ1RJVkVfRVJSIik7DQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4LmNvdW50
KCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7DQot
DQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLnB1dCgwLCAwKSIsICJJREJEYXRh
YmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsNCi0gICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigic3RvcmUuYWRkKDAsIDApIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRS
QU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOw0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJz
dG9yZS5kZWxldGUoMCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJ
VkVfRVJSIik7DQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmNsZWFyKCkiLCAi
SURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7DQotICAgIGV2
YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmdldCgwKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlv
bi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsNCi0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlv
bigic3RvcmUub3BlbkN1cnNvcigpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9O
X0lOQUNUSVZFX0VSUiIpOw0KLQ0KLSAgICB0ZXN0U2V0VmVyc2lvbkFib3J0NSgpOw0KLX0NCi0N
Ci1mdW5jdGlvbiB0ZXN0U2V0VmVyc2lvbkFib3J0NSgpDQotew0KLSAgICBkZWJ1ZygiIik7DQot
ICAgIGRlYnVnKCJ0ZXN0U2V0VmVyc2lvbkFib3J0NSgpOiIpOw0KLSAgICBjaGVja01ldGFkYXRh
RXhpc3RpbmdPYmplY3RTdG9yZSgpOw0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IHN0YXJ0U2V0VmVyc2lvbigndmVyc2lvbiBmYWlsJykiKTsNCi0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSByZW1vdmVJREJPYmplY3RzOw0KLX0NCi0NCi1mdW5jdGlvbiByZW1vdmVJREJPYmpl
Y3RzKCkNCi17DQotICAgIGRlYnVnKCJyZW1vdmVJREJPYmplY3RzKCk6Iik7DQotICAgIHZhciB0
cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOw0KLSAgICBz
aG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7DQotICAgIHRyYW5zLm9uYWJvcnQgPSB0ZXN0
U2V0VmVyc2lvbkFib3J0NjsNCi0gICAgdHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21w
bGV0ZUNhbGxiYWNrOw0KLQ0KLSAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRy
YW5zLm9iamVjdFN0b3JlKCdzdG9yZUZhaWwnKSIpOw0KLSAgICBldmFsQW5kTG9nKCJzdG9yZS5k
ZWxldGVJbmRleCgnaW5kZXhGYWlsJykiKTsNCi0gICAgZXZhbEFuZExvZygiZGIuZGVsZXRlT2Jq
ZWN0U3RvcmUoJ3N0b3JlRmFpbCcpIik7DQotDQotICAgIHRyYW5zLmFib3J0KCk7DQotfQ0KLQ0K
LWZ1bmN0aW9uIHRlc3RTZXRWZXJzaW9uQWJvcnQ2KCkNCi17DQotICAgIGRlYnVnKCIiKTsNCi0g
ICAgZGVidWcoInRlc3RTZXRWZXJzaW9uQWJvcnQ2KCk6Iik7DQotICAgIGNoZWNrTWV0YWRhdGFF
eGlzdGluZ09iamVjdFN0b3JlKCk7DQotICAgIHNldE5ld1ZlcnNpb24oKTsNCi19DQotDQotZnVu
Y3Rpb24gc3RhcnRTZXRWZXJzaW9uKHZlcnNpb25OYW1lKQ0KLXsNCi0gICAgcmVxdWVzdCA9IGRi
LnNldFZlcnNpb24odmVyc2lvbk5hbWUpOw0KLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsNCi0gICAgcmV0dXJuIHJlcXVlc3Q7DQotfQ0KLQ0KLWZ1bmN0aW9u
IGNoZWNrTWV0YWRhdGFFbXB0eSgpDQotew0KLSAgICBzaG91bGRCZSgic2VsZi5kYi5vYmplY3RT
dG9yZU5hbWVzIiwgIltdIik7DQotICAgIHNob3VsZEJlKCJzZWxmLmRiLm9iamVjdFN0b3JlTmFt
ZXMubGVuZ3RoIiwgIjAiKTsNCi0gICAgc2hvdWxkQmUoInNlbGYuZGIub2JqZWN0U3RvcmVOYW1l
cy5jb250YWlucygnc3RvcmVGYWlsJykiLCAiZmFsc2UiKTsNCi19DQotDQotZnVuY3Rpb24gY2hl
Y2tNZXRhZGF0YUV4aXN0aW5nT2JqZWN0U3RvcmUoKQ0KLXsNCi0gICAgc2hvdWxkQmUoImRiLm9i
amVjdFN0b3JlTmFtZXMiLCAiWydzdG9yZUZhaWwnXSIpOw0KLSAgICBzaG91bGRCZSgiZGIub2Jq
ZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMSIpOw0KLSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3Rv
cmVOYW1lcy5jb250YWlucygnc3RvcmVGYWlsJykiLCAidHJ1ZSIpOw0KLX0NCi0NCi1mdW5jdGlv
biBzZXROZXdWZXJzaW9uKCkNCi17DQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRW
ZXJzaW9uKCduZXcgdmVyc2lvbicpIik7DQotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVy
c2lvblN1Y2Nlc3M7DQotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOw0KLX0NCi0NCi1mdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpDQotew0KLSAgICBkZWJ1
ZygiIik7DQotICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOw0KLSAgICBzZWxmLnRy
YW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7DQotICAgIHNo
b3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsNCi0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhw
ZWN0ZWRBYm9ydENhbGxiYWNrOw0KLSAgICB0cmFucy5hZGRFdmVudExpc3RlbmVyKCdjb21wbGV0
ZScsIGNvbXBsZXRlQ2FsbGJhY2ssIGZhbHNlKTsNCi0gICAgc2VsZi5jb21wbGV0ZUV2ZW50Rmly
ZWQgPSBmYWxzZTsNCi0NCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsNCi0NCi0gICAg
ZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7DQot
fQ0KLQ0KLWZ1bmN0aW9uIGNvbXBsZXRlQ2FsbGJhY2soKQ0KLXsNCi0gICAgc2hvdWxkQmVGYWxz
ZSgiZXZlbnQuY2FuY2VsYWJsZSIpOw0KLSAgICB0ZXN0UGFzc2VkKCJjb21wbGV0ZSBldmVudCBm
aXJlZCIpOw0KLSAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coImRiLnRyYW5zYWN0aW9uKFsn
c3RvcmVOYW1lJ10pIik7DQotICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSBhYm9ydENhbGxiYWNr
Ow0KLSAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVj
dFN0b3JlKCdzdG9yZU5hbWUnKSIpOw0KLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInN0b3Jl
Lm5hbWUiLCAic3RvcmVOYW1lIik7DQotfQ0KLQ0KLWZ1bmN0aW9uIGFib3J0Q2FsbGJhY2soKQ0K
LXsNCi0gICAgdGVzdFBhc3NlZCgiYWJvcnQgZXZlbnQgZmlyZWQiKTsNCi0gICAgdGVzdERPTVN0
cmluZ0xpc3QoKTsNCi19DQotDQotZnVuY3Rpb24gdGVzdERPTVN0cmluZ0xpc3QoKQ0KLXsNCi0g
ICAgZGVidWcoIiIpOw0KLSAgICBkZWJ1ZygiVmVyaWZ5aW5nIERPTVN0cmluZ0xpc3Qgd29ya3Mg
YXMgYXJndW1lbnQgZm9yIElEQkRhdGFiYXNlLnRyYW5zYWN0aW9uKCkiKTsNCi0gICAgZGVidWco
ImRiLm9iamVjdFN0b3JlTmFtZXMgaXMgIiArIGRiLm9iamVjdFN0b3JlTmFtZXMpOw0KLSAgICBk
ZWJ1ZygiLi4uIHdoaWNoIGNvbnRhaW5zOiAiICsgSlNPTi5zdHJpbmdpZnkoQXJyYXkucHJvdG90
eXBlLnNsaWNlLmNhbGwoZGIub2JqZWN0U3RvcmVOYW1lcykpKTsNCi0gICAgZXZhbEFuZExvZygi
dHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihkYi5vYmplY3RTdG9yZU5hbWVzKSIpOw0KLSAg
ICB0ZXN0UGFzc2VkKCJubyBleGNlcHRpb24gdGhyb3duIik7DQotICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGg7ICsraSkgew0KLSAgICAgIHNob3VsZEJl
VHJ1ZSgidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoIiArIEpTT04uc3RyaW5naWZ5KGRiLm9iamVj
dFN0b3JlTmFtZXNbaV0pICsgIikgIT0gbnVsbCIpOw0KLSAgICB9DQotICAgIHRlc3RQYXNzZWQo
ImFsbCBzdG9yZXMgcHJlc2VudCBpbiB0cmFuc2FjdGlvbiIpOw0KLSAgICB0ZXN0SW52YWxpZE1v
ZGUoKTsNCi19DQotDQotZnVuY3Rpb24gdGVzdEludmFsaWRNb2RlKCkNCi17DQotICAgIGRlYnVn
KCIiKTsNCi0gICAgZGVidWcoIlZlcmlmeSB0aGF0IHNwZWNpZnlpbmcgYW4gaW52YWxpZCBtb2Rl
IHJhaXNlcyBhbiBleGNlcHRpb24iKTsNCi0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIu
dHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgMykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9O
X1RSQU5TSUVOVF9FUlIiKTsNCi0gICAgZmluaXNoSlNUZXN0KCk7DQotfQ0KLQ0KLXZhciBqc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsNCi10ZXN0KCk7DQotDQotPC9zY3JpcHQ+DQotPHNjcmlwdCBzcmM9
Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+DQotPC9i
b2R5Pg0KLTwvaHRtbD4NCis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy90cmFuc2FjdGlvbi1iYXNpY3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90
cmFuc2FjdGlvbi1jcmFzaC1vbi1hYm9ydC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvdHJhbnNhY3Rpb24tY3Jhc2gtb24tYWJvcnQuaHRtbAppbmRleCAxY2Y1MjdiZWIzYjEw
YjgwMGMzZDk2Mzc2ODZiOTYwYTdiZmY3NDlkLi4xMTU5ZDI5NDIwN2NlYjRlOTZlMzUwYzAyN2Ri
ZDFjYTlhZDU1MjZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90
cmFuc2FjdGlvbi1jcmFzaC1vbi1hYm9ydC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNyYXNoLW9uLWFib3J0Lmh0bWwKQEAgLTQsNDIgKzQsNyBA
QAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgog
PGJvZHk+Ci08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIHRyYW5zYWN0aW9uIGRv
ZXMgbm90IGNyYXNoIG9uIGFib3J0LiIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1v
dmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWRE
Qi5vcGVuKCd0cmFuc2FjdGlvbi1jcmFzaC1vbi1hYm9ydCcpIik7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJv
cGVuU3VjY2VzcygpOiIpOwotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJzEuMCcp
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc2V0
VmVyc2lvblN1Y2Nlc3MoKQotewotICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdmb28nKSIpOwotICAgIGV2YWxBbmRMb2coImRiLnRyYW5zYWN0aW9uKCdmb28nKSIpOwotICAg
IGV2YWxBbmRMb2coInNlbGYuZ2MoKSIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRl
c3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3RyYW5zYWN0aW9uLWNy
YXNoLW9uLWFib3J0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tZXZlbnQt
cHJvcGFnYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0
aW9uLWV2ZW50LXByb3BhZ2F0aW9uLmh0bWwKaW5kZXggYjZiN2VkZDg2ZTJkMjdiYzA1ZTRhOGE0
YjNlM2JmMjU5NmQ2YTQ5Ny4uZjAzZWEzMTcyYWQyZjdiNzgyMzAzYmMzNmY1OGFkNTFmZmJlY2Mz
NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24t
ZXZlbnQtcHJvcGFnYXRpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi90cmFuc2FjdGlvbi1ldmVudC1wcm9wYWdhdGlvbi5odG1sCkBAIC00LDE1MiArNCw3IEBACiA8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9k
eT4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08
c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBldmVudCBwcm9wb2dhdGlvbiBvbiBJREJUcmFu
c2FjdGlvbi4iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4
ZXMoKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0
aW9uLWV2ZW50LXByb3BhZ2F0aW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZl
cnNpb247Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19
Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb24oKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBl
dmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0
VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRl
RXhpc3Rpbmc7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKLXsKLSAgICBzZWxmLnRyYW5zID0gZXZh
bEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVl
KCJ0cmFucyAhPT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRD
YWxsYmFjazsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gc3RhcnRUZXN0Iik7
Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgc3RvcmUgPSBldmFsQW5k
TG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOwot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enon
fSwgJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIHN0YXJ0VGVzdCgpCi17Ci0gICAgZGVidWcoIlZlcmlmaW5nIGFi
b3J0Iik7Ci0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsn
c3RvcmVOYW1lJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFuZExv
ZygidHJhbnMub25hYm9ydCA9IGFib3J0RmlyZWRDYWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2co
InRyYW5zLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjayIpOwotICAgIGV2YWxB
bmRMb2coImRiLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgZGJBYm9ydENhcHR1cmVDYWxsYmFj
aywgdHJ1ZSkiKTsKLSAgICBldmFsQW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcs
IGRiQWJvcnRCdWJibGVDYWxsYmFjaywgZmFsc2UpIik7Ci0gICAgZXZhbEFuZExvZygiZGIuYWRk
RXZlbnRMaXN0ZW5lcignY29tcGxldGUnLCB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjaywgdHJ1
ZSkiKTsKLSAgICBldmFsQW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdjb21wbGV0ZScsIHVu
ZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrLCBmYWxzZSkiKTsKLSAgICBzdG9yZSA9IGV2YWxBbmRM
b2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0gICAgZXZhbEFu
ZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOwotICAgIGRi
Q2FwdHVyZUZpcmVkID0gZmFsc2U7Ci0gICAgYWJvcnRGaXJlZCA9IGZhbHNlOwotICAgIGRiQnVi
YmxlRmlyZWQxID0gZmFsc2U7Ci19Ci0KLWZ1bmN0aW9uIGRiQWJvcnRDYXB0dXJlQ2FsbGJhY2so
KQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiSW4gSURCRGF0YWJhc2UgYWJvcnQgY2Fw
dHVyZSIpOwotICAgIHNob3VsZEJlRmFsc2UoImRiQ2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxk
QmVGYWxzZSgiYWJvcnRGaXJlZCIpOwotICAgIHNob3VsZEJlRmFsc2UoImRiQnViYmxlRmlyZWQx
Iik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldCIsICJ0cmFucyIpOwotICAgIHNob3VsZEJl
KCJldmVudC5jdXJyZW50VGFyZ2V0IiwgImRiIik7Ci0gICAgZGJDYXB0dXJlRmlyZWQgPSB0cnVl
OwotfQotCi1mdW5jdGlvbiBhYm9ydEZpcmVkQ2FsbGJhY2soKQotewotICAgIGRlYnVnKCIiKTsK
LSAgICBkZWJ1ZygiSW4gYWJvcnQgaGFuZGxlciIpOwotICAgIHNob3VsZEJlVHJ1ZSgiZGJDYXB0
dXJlRmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJhYm9ydEZpcmVkIik7Ci0gICAgc2hvdWxk
QmVGYWxzZSgiZGJCdWJibGVGaXJlZDEiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0Iiwg
InRyYW5zIik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LmN1cnJlbnRUYXJnZXQiLCAidHJhbnMiKTsK
LSAgICBhYm9ydEZpcmVkID0gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gZGJBYm9ydEJ1YmJsZUNhbGxi
YWNrKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIkluIElEQkRhdGFiYXNlIGVycm9y
IGJ1YmJsZSIpOwotICAgIHNob3VsZEJlVHJ1ZSgiZGJDYXB0dXJlRmlyZWQiKTsKLSAgICBzaG91
bGRCZVRydWUoImFib3J0RmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVk
MSIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAidHJhbnMiKTsKLSAgICBzaG91bGRC
ZSgiZXZlbnQuY3VycmVudFRhcmdldCIsICJkYiIpOwotICAgIGRiQnViYmxlRmlyZWQxID0gdHJ1
ZTsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIlZlcmlmaW5nIHN1Y2Nlc3MuIik7Ci0gICAg
dHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10s
IElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMub25j
b21wbGV0ZSA9IGNvbXBsZXRlRmlyZWRDYWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2coInRyYW5z
Lm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2coImRi
LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgZGJBYm9ydENhcHR1cmVDYWxsYmFjaywgdHJ1
ZSkiKTsKLSAgICBldmFsQW5kTG9nKCJkYi5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIGRi
QWJvcnRCdWJibGVDYWxsYmFjaywgZmFsc2UpIik7Ci0gICAgZXZhbEFuZExvZygiZGIucmVtb3Zl
RXZlbnRMaXN0ZW5lcignY29tcGxldGUnLCB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjaywgdHJ1
ZSkiKTsKLSAgICBldmFsQW5kTG9nKCJkYi5yZW1vdmVFdmVudExpc3RlbmVyKCdjb21wbGV0ZScs
IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrLCBmYWxzZSkiKTsKLSAgICBldmFsQW5kTG9nKCJk
Yi5hZGRFdmVudExpc3RlbmVyKCdjb21wbGV0ZScsIGRiQ29tcGxldGVDYXB0dXJlQ2FsbGJhY2ss
IHRydWUpIik7Ci0gICAgZXZhbEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignY29tcGxldGUn
LCBkYkNvbXBsZXRlQnViYmxlQ2FsbGJhY2ssIGZhbHNlKSIpOwotICAgIGV2YWxBbmRMb2coImRi
LmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgdW5leHBlY3RlZEFib3J0Q2FsbGJhY2ssIHRydWUp
Iik7Ci0gICAgZXZhbEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCB1bmV4cGVj
dGVkQWJvcnRDYWxsYmFjaywgZmFsc2UpIik7Ci0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9y
ZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotICAgIGV2YWxBbmRMb2coInN0
b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAna2V5MicpIik7Ci0gICAgZGJDYXB0dXJl
RmlyZWQgPSBmYWxzZTsKLSAgICBjb21wbGV0ZUZpcmVkID0gZmFsc2U7Ci0gICAgZGJCdWJibGVG
aXJlZDIgPSBmYWxzZTsKLX0KLQotZnVuY3Rpb24gZGJDb21wbGV0ZUNhcHR1cmVDYWxsYmFjaygp
Ci17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJJbiBJREJEYXRhYmFzZSBjb21wbGV0ZSBj
YXB0dXJlIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGJDYXB0dXJlRmlyZWQiKTsKLSAgICBzaG91
bGRCZUZhbHNlKCJjb21wbGV0ZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVG
aXJlZDIiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0IiwgInRyYW5zIik7Ci0gICAgc2hv
dWxkQmUoImV2ZW50LmN1cnJlbnRUYXJnZXQiLCAiZGIiKTsKLSAgICBkYkNhcHR1cmVGaXJlZCA9
IHRydWU7Ci19Ci0KLWZ1bmN0aW9uIGNvbXBsZXRlRmlyZWRDYWxsYmFjaygpCi17Ci0gICAgZGVi
dWcoIiIpOwotICAgIGRlYnVnKCJJbiBJREJSZXF1ZXN0IGhhbmRsZXIiKTsKLSAgICBzaG91bGRC
ZVRydWUoImRiQ2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiY29tcGxldGVGaXJl
ZCIpOwotICAgIHNob3VsZEJlRmFsc2UoImRiQnViYmxlRmlyZWQyIik7Ci0gICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldCIsICJ0cmFucyIpOwotICAgIHNob3VsZEJlKCJldmVudC5jdXJyZW50VGFy
Z2V0IiwgInRyYW5zIik7Ci0gICAgY29tcGxldGVGaXJlZCA9IHRydWU7Ci0gICAgZGVidWcoIiIp
OwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBkYkNvbXBsZXRlQnViYmxlQ2Fs
bGJhY2soKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiSW4gSURCRGF0YWJhc2UgY29t
cGxldGUgYnViYmxlIik7Ci0gICAgdGVzdEZhaWxlZCgiQ29tcGxldGUgYnViYmxlIGNhbGxiYWNr
IHNob3VsZCBOT1QgZmlyZSIpOwotICAgIGRiQnViYmxlRmlyZWQyID0gdHJ1ZTsKLX0KLQotdGVz
dCgpOwotCi0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90cmFuc2FjdGlvbi1l
dmVudC1wcm9wYWdhdGlvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXJl
YWQtb25seS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24t
cmVhZC1vbmx5Lmh0bWwKaW5kZXggMDEyNTRlNDRiOGI2MWNjNjVkZTg2MjQyNGY3M2U3MTk2Mjg4
ZDA3NS4uYTkwY2M3YTE2NmNjYWE3NDQ4ZmQ1M2QwZGI0ZjYxNDRlMmY4ZDYwMyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tcmVhZC1vbmx5Lmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tcmVhZC1v
bmx5Lmh0bWwKQEAgLTEsNjkgKzEsMTAgQEAKLTxodG1sPg0KLTxoZWFkPg0KLTxzY3JpcHQgc3Jj
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+DQotPHNj
cmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0Pg0KLTwvaGVhZD4NCi08Ym9k
eT4NCi08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4NCi08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4N
Ci08c2NyaXB0Pg0KLQ0KLWRlc2NyaXB0aW9uKCJUZXN0IHJlYWQtb25seSB0cmFuc2FjdGlvbnMg
aW4gSW5kZXhlZERCLiIpOw0KLQ0KLWZ1bmN0aW9uIHRlc3QoKQ0KLXsNCi0gICAgcmVtb3ZlVmVu
ZG9yUHJlZml4ZXMoKTsNCi0NCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5v
cGVuKCd0cmFuc2FjdGlvbi1yZWFkLW9ubHknKSIpOw0KLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IG9wZW5TdWNjZXNzOw0KLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsNCi19DQotDQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQ0KLXsNCi0gICAgZGVidWcoIm9w
ZW5TdWNjZXNzKCk6Iik7DQotICAgIHNlbGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsNCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlc3VsdCA9IGRiLnNl
dFZlcnNpb24oJ3ZlcnNpb24gMScpIik7DQotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5E
YXRhYmFzZTsNCi0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
DQotfQ0KLQ0KLWZ1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQ0KLXsNCi0gICAgZGVsZXRlQWxsT2Jq
ZWN0U3RvcmVzKGRiKTsNCi0NCi0gICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5vbmNvbXBsZXRlID0g
c2V0VmVyc2lvbkRvbmU7DQotICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25hYm9ydCA9IHVuZXhw
ZWN0ZWRBYm9ydENhbGxiYWNrOw0KLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsNCi0gICAgZXZhbEFuZExvZygic3RvcmUucHV0
KCd4JywgJ3knKSIpOw0KLX0NCi0NCi1mdW5jdGlvbiBzZXRWZXJzaW9uRG9uZSgpDQotew0KLSAg
ICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJykiKTsN
Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyku
cHV0KCdhJywgJ2InKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5SRUFEX09OTFlfRVJSIik7DQot
DQotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUn
KSIpOw0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0cmFucy5vYmplY3RTdG9yZSgnc3Rv
cmUnKS5kZWxldGUoJ3gnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5SRUFEX09OTFlfRVJSIik7
DQotDQotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3Rv
cmUnKSIpOw0KLSAgICBjdXIgPSBldmFsQW5kTG9nKCJjdXIgPSB0cmFucy5vYmplY3RTdG9yZSgn
c3RvcmUnKS5vcGVuQ3Vyc29yKCkiKTsNCi0gICAgY3VyLm9uc3VjY2VzcyA9IGdvdEN1cnNvcjsN
Ci0gICAgY3VyLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsNCi19DQotDQotZnVu
Y3Rpb24gZ290Q3Vyc29yKCkNCi17DQotICAgIHNob3VsZEJlRmFsc2UoIiFldmVudC50YXJnZXQu
cmVzdWx0Iik7DQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImV2ZW50LnRhcmdldC5yZXN1
bHQuZGVsZXRlKCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUiIpOw0KLQ0K
LSAgICBmaW5pc2hKU1Rlc3QoKTsNCi19DQotDQotDQotdGVzdCgpOw0KLQ0KLTwvc2NyaXB0Pg0K
LTxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0Pg0KLTwvYm9keT4NCi08L2h0bWw+DQorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdHJhbnNhY3Rpb24tcmVhZC1vbmx5LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tcm9sbGJhY2suaHRtbCBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXJvbGxiYWNrLmh0bWwKaW5kZXggODY0MWVlMzEz
NDVjMThkNTA4MDkyMjgxNjU4NzllODY3ZTRjMGIzMC4uN2RiZDgwNGFjNjU5NGUyNmRlNDNmMzU3
MmIzOTFiMmYzOTBiMWI3NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvdHJhbnNhY3Rpb24tcm9sbGJhY2suaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi90cmFuc2FjdGlvbi1yb2xsYmFjay5odG1sCkBAIC00LDk5ICs0LDcgQEAKIDxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5Pgot
PHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3Jp
cHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiB0cmFuc2FjdGlvbiByb2xsYmFjay4i
KTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndHJhbnNhY3Rpb24tcm9s
bGJhY2snKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9w
ZW5TdWNjZXNzKCkKLXsKLSAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKLSAgICBzZWxmLmRi
ID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgp
Ci17Ci0gICAgZGVidWcoImNsZWFuRGF0YWJhc2UoKToiKTsKLSAgICBzZWxmLnRyYW5zYWN0aW9u
ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAg
dHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHRyYW5z
YWN0aW9uLm9uY29tcGxldGUgPSBzZXRWZXJzaW9uQ29tcGxldGU7Ci0KLSAgICBkZWxldGVBbGxP
YmplY3RTdG9yZXMoZGIpOwotICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdt
eU9iamVjdFN0b3JlJykiKTsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5n
dGgiLCAiMSIpOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uQ29tcGxldGUoKQotewotICAgIGRl
YnVnKCJzZXRWZXJzaW9uQ29tcGxldGUoKToiKTsKLQotICAgIHNlbGYudHJhbnNhY3Rpb24gPSBl
dmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnbXlPYmplY3RTdG9yZSdd
LCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQg
PSBhYm9ydENhbGxiYWNrOwotICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB1bmV4cGVjdGVk
Q29tcGxldGVDYWxsYmFjazsKLQotICAgIHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9
IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdteU9iamVjdFN0b3JlJykiKTsKLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKCdyb2xsYmFja1ZhbHVlJywgJ3JvbGxiYWNrS2V5MTIz
JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZFN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGFkZFN1Y2Nl
c3MoKQotewotICAgIGRlYnVnKCJhZGRTdWNjZXNzKCk6Iik7Ci0gICAgc2hvdWxkQmUoImV2ZW50
LnRhcmdldC5yZXN1bHQiLCAiJ3JvbGxiYWNrS2V5MTIzJyIpOwotCi0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInN0b3JlLm9wZW5DdXJzb3IoKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
b3BlbkN1cnNvclN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5DdXJzb3JTdWNjZXNzKCkKLXsKLSAgICBkZWJ1
Zygib3BlbkN1cnNvclN1Y2Nlc3MoKToiKTsKLSAgICBzZWxmLmN1cnNvciA9IGV2YWxBbmRMb2co
ImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHRyYW5zYWN0aW9uLmFib3J0
KCk7Ci19Ci0KLWZ1bmN0aW9uIGFib3J0Q2FsbGJhY2soKQotewotICAgIGRlYnVnKCJhYm9ydENh
bGxiYWNrKCk6Iik7Ci0gICAgZGVidWcoJ1RyYW5zYWN0aW9uIHdhcyBhYm9ydGVkLicpOwotCi0g
ICAgc2VsZi50cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNh
Y3Rpb24oWydteU9iamVjdFN0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQUQpIik7Ci0gICAgc2Vs
Zi5zdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ215
T2JqZWN0U3RvcmUnKSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5nZXQoJ3Jv
bGxiYWNrS2V5MTIzJykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldFN1Y2Nlc3M7Ci19Ci0KLWZ1bmN0
aW9uIGdldFN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJnZXRTdWNjZXNzKCk6Iik7Ci0gICAgc2hv
dWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAidW5kZWZpbmVkIik7Ci0KLSAgICBzaG91bGRC
ZSgiY3Vyc29yLnZhbHVlIiwgIidyb2xsYmFja1ZhbHVlJyIpOwotICAgIGZpbmlzaEpTVGVzdCgp
OwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Ry
YW5zYWN0aW9uLXJvbGxiYWNrLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24t
c3RvcmVOYW1lcy1yZXF1aXJlZC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
dHJhbnNhY3Rpb24tc3RvcmVOYW1lcy1yZXF1aXJlZC5odG1sCmluZGV4IDJmNjAxNWE5MDMyMzJj
YWQ4NDFiNTAyMWIzYTc0MDQxZjQ4OTkxZWQuLmIyYWNjYzM3NjZmYWRmYzNkM2IyMTg3MjAyMmY0
OTgxOGVlODc4YmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Ry
YW5zYWN0aW9uLXN0b3JlTmFtZXMtcmVxdWlyZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1zdG9yZU5hbWVzLXJlcXVpcmVkLmh0bWwKQEAgLTEs
NDggKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3Jj
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4K
LTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2Ny
aXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREI6IHRyYW5zYWN0aW9uIHN0b3JlTmFt
ZXMgcmVxdWlyZWQgYXJndW1lbnRzIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92
ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsK
LSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRi
ID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZTsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY3JlYXRl
QW5kUG9wdWxhdGVPYmplY3RTdG9yZSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRi
KTsKLQotICAgIHNob3VsZFRocm93KCJkYi50cmFuc2FjdGlvbigpOyIpOwotICAgIGZpbmlzaEpT
VGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3RyYW5zYWN0aW9uLXN0b3JlTmFtZXMtcmVxdWlyZWQuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi90d28tdmVyc2lvbi1jaGFuZ2VzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi90d28tdmVyc2lvbi1jaGFuZ2VzLmh0bWwKaW5kZXggYTIxYWI3MDEwY2Q5NTZiMzQ3ZTEy
NTBmMTI0MTk2MzE0MGI5OGRjZi4uYzU2OTA5YTRmNGIzOTE5YmFiNzRkMTY0MDVlODhlYzdjZDI2
YzczMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHdvLXZlcnNp
b24tY2hhbmdlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3R3by12
ZXJzaW9uLWNoYW5nZXMuaHRtbApAQCAtNCwxMDggKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291
cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08cCBpZD0iZGVzY3Jp
cHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdD4KLQotZGVzY3Jp
cHRpb24oIlRlc3QgYmVoYXZpb3Igd2hlbiB0aGUgc2FtZSBjb25uZWN0aW9uIGNhbGxzIHNldFZl
cnNpb24gdHdpY2UiKTsKLQotCi1mdW5jdGlvbiB0ZXN0KCkgewotICAgIHJlbW92ZVZlbmRvclBy
ZWZpeGVzKCk7Ci0KLSAgICBzaG91bGRCZUZhbHNlKCJpbmRleGVkREIgPT0gbnVsbCIpOwotICAg
IHNob3VsZEJlRmFsc2UoIklEQlRyYW5zYWN0aW9uID09IG51bGwiKTsKLSAgICBvcGVuREJDb25u
ZWN0aW9uKCk7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5EQkNvbm5lY3Rpb24oKQotewotICAgIGV2YWxB
bmRMb2coInNlbGYuc3RhdGUgPSAnc3RhcnRpbmcnIik7Ci0gICAgdmFyIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJpbmRleGVkREIub3BlbigndHdvLXZlcnNpb25zLW9uZS1jb25uZWN0aW9uJykiKTsK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2Vzcygp
Ci17Ci0gICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIp
OwotICAgIGV2YWxBbmRMb2coInNlbGYuc3RhdGUgPSAwIik7Ci0KLSAgICB2YXIgdmVyc2lvbkNo
YW5nZVJlcXVlc3QxID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsK
LSAgICB2ZXJzaW9uQ2hhbmdlUmVxdWVzdDEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0MS5vbnN1Y2Nlc3MgPSBpblNldFZlcnNpb24x
OwotCi0gICAgLy8gYW5kIGNvbmN1cnJlbnRseS4uLgotCi0gICAgdmFyIHZlcnNpb25DaGFuZ2VS
ZXF1ZXN0MiA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMicpIik7Ci0gICAg
dmVyc2lvbkNoYW5nZVJlcXVlc3QyLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LSAgICB2ZXJzaW9uQ2hhbmdlUmVxdWVzdDIub25zdWNjZXNzID0gaW5TZXRWZXJzaW9uMjsKLX0K
LQotZnVuY3Rpb24gaW5TZXRWZXJzaW9uMSgpCi17Ci0gICAgZGVidWcoInNldFZlcnNpb24oKSAj
MSBjYWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2coInNlbGYuc3RvcmUxID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ3Rlc3Qtc3RvcmUxJykiKTsKLSAgICBzaG91bGRCZSgiKytzZWxmLnN0YXRlIiwg
IjEiKTsKLSAgICB2YXIgcmVxID0gZXZhbEFuZExvZygic2VsZi5zdG9yZTEucHV0KCdhYWEnLCAx
MTEpIik7Ci0gICAgcmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICBy
ZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAgc2hvdWxkQmUoIisrc2VsZi5z
dGF0ZSIsICIyIik7Ci0gICAgICAgIGhhbGZ3YXlEb25lKCk7Ci0gICAgfTsKLX0KLQotZnVuY3Rp
b24gaW5TZXRWZXJzaW9uMigpCi17Ci0gICAgZGVidWcoInNldFZlcnNpb24oKSAjMiBjYWxsYmFj
ayIpOwotICAgIHNob3VsZEJlKCIrK3NlbGYuc3RhdGUiLCAiNCIpOwotICAgIGV2YWxBbmRMb2co
InNlbGYuc3RvcmUyID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Rlc3Qtc3RvcmUyJykiKTsKLQot
ICAgIHZhciByZXEgPSBldmFsQW5kTG9nKCJzZWxmLnN0b3JlMi5wdXQoJ2JiYicsIDIyMikiKTsK
LSAgICByZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcS5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbiAoZSkgewotICAgICAgICBzaG91bGRCZSgiKytzZWxmLnN0YXRlIiwg
IjUiKTsKLSAgICAgICAgaGFsZndheURvbmUoKTsKLSAgICB9OwotfQotCi12YXIgY291bnRlciA9
IDA7Ci1mdW5jdGlvbiBoYWxmd2F5RG9uZSgpIAotewotICAgIGNvdW50ZXIgKz0gMTsKLSAgICBp
ZiAoY291bnRlciA8IDIpIHsKLSAgICAgICAgc2hvdWxkQmUoIisrc2VsZi5zdGF0ZSIsICIzIik7
Ci0gICAgICAgIGRlYnVnKCJoYWxmd2F5IHRoZXJlLi4uIiApOwotICAgIH0gZWxzZSB7Ci0gICAg
ICAgIHNob3VsZEJlKCIrK3NlbGYuc3RhdGUiLCAiNiIpOwotICAgICAgICBjaGVja1Jlc3VsdHMo
KTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGNoZWNrUmVzdWx0cygpIHsKLSAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoInNlbGYuZGIudmVyc2lvbiIsICJ2ZXJzaW9uIDIiKTsKLSAgICB0cmFucyA9
IGV2YWxBbmRMb2coInNlbGYudHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3Rlc3Qtc3RvcmUxJywg
J3Rlc3Qtc3RvcmUyJ10pIik7Ci0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzZWxmLnN0b3JlID0g
c2VsZi50cmFucy5vYmplY3RTdG9yZSgndGVzdC1zdG9yZTEnKSIpOwotICAgIHJlcSA9IGV2YWxB
bmRMb2coInNlbGYucmVxID0gc2VsZi5zdG9yZS5nZXQoMTExKSIpOwotICAgIHJlcS5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9u
IChlKSB7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3Vs
dCIsICJhYWEiKTsKLQotICAgICAgICBzdG9yZSA9IGV2YWxBbmRMb2coInNlbGYuc3RvcmUgPSBz
ZWxmLnRyYW5zLm9iamVjdFN0b3JlKCd0ZXN0LXN0b3JlMicpIik7Ci0gICAgICAgIHJlcSA9IGV2
YWxBbmRMb2coInNlbGYucmVxID0gc2VsZi5zdG9yZS5nZXQoMjIyKSIpOwotICAgICAgICByZXEu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICByZXEub25zdWNjZXNz
ID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZl
bnQudGFyZ2V0LnJlc3VsdCIsICJiYmIiKTsKLSAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwot
ICAgICAgICB9OwotICAgIH07Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvdHdvLXZlcnNpb24tY2hhbmdlcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
IDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3ZhbHVlLXVuZGVmaW5lZC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
dmFsdWUtdW5kZWZpbmVkLmh0bWwKaW5kZXggOTYwODk3ZDUwNTI2OWI3ZTAzNGI0MDI0YmE4NmY1
NWZmNWY1ODg1ZS4uMzkzYWI0NDU4MGY4NWE0MWJkMDcxYzliZWYzZDYwY2YwMGQ3YjNkZiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmFsdWUtdW5kZWZpbmVkLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmFsdWUtdW5kZWZpbmVkLmh0
bWwKQEAgLTEsNzggKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+
CiA8Ym9keT4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgdW5kZWZpbmVkIGFz
IHJlY29yZCB2YWx1ZSIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQ
cmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVz
Y3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxB
bmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUFuZFBvcHVs
YXRlT2JqZWN0U3RvcmUoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAg
ICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ2ZvbycpOyIpOwotICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coInJlc3VsdCA9IG9iamVj
dFN0b3JlLmFkZCh1bmRlZmluZWQsIEluZmluaXR5KTsiKTsKLSAgICByZXN1bHQub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBnZXRWYWx1
ZTsKLX0KLQotZnVuY3Rpb24gZ2V0VmFsdWUoKQotewotICAgIHJlc3VsdCA9IGV2YWxBbmRMb2co
InJlc3VsdCA9IG9iamVjdFN0b3JlLmdldChJbmZpbml0eSk7Iik7Ci0gICAgcmVzdWx0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXN1bHQub25zdWNjZXNzID0gY2hl
Y2tWYWx1ZTsKLX0KLQotZnVuY3Rpb24gY2hlY2tWYWx1ZSgpCi17Ci0gICAgdmFsdWUgPSBldmFs
QW5kTG9nKCJ2YWx1ZSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgc2hvdWxkQmUoInZh
bHVlIiwgInVuZGVmaW5lZCIpOwotICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coInJlc3VsdCA9IG9i
amVjdFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsKLSAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBjaGVja0N1cnNvcjsKLX0K
LQotZnVuY3Rpb24gY2hlY2tDdXJzb3IoKQotewotICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1
cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgaWYgKGN1cnNvcikgewotICAgICAg
ICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJJbmZpbml0eSIpOwotICAgICAgICBzaG91bGRCZSgi
Y3Vyc29yLnZhbHVlIiwgInVuZGVmaW5lZCIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHRlc3RG
YWlsZWQoImN1cnNvciBpcyBudWxsIik7Ci0gICAgfQotICAgIGZpbmlzaEpTVGVzdCgpOwotfQot
Ci0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3ZhbHVlLXVu
ZGVmaW5lZC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ZhbHVlcy1vZGQtdHlwZXMuaHRtbCBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ZhbHVlcy1vZGQtdHlwZXMuaHRtbAppbmRl
eCBmZGVhMGM1YmYwMmQwNzBmYjg4YjY3MDg1YmFmMGVlZDJkZjZhOTA4Li44NDhhYzdjOWU4OWQ0
ZmEyZWNmZmMyYjhjMjZjYTFhMTQ2Mjc3YmRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi92YWx1ZXMtb2RkLXR5cGVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvdmFsdWVzLW9kZC10eXBlcy5odG1sCkBAIC0xLDkwICsxLDEwIEBACi08
IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291
cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08cCBpZD0iZGVzY3Jp
cHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdD4KLQotZGVzY3Jp
cHRpb24oIlRlc3QgSW5kZXhlZERCIG9kZCB2YWx1ZSBkYXRhdHlwZXMiKTsKLQotZnVuY3Rpb24g
dGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxm
LmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2Ui
OwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlw
dGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVu
U3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lv
bignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRLZXkxOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBhZGRLZXkx
KCkKLXsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUg
PSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJywge2F1dG9JbmNyZW1lbnQ6
IHRydWV9KTsiKTsKLQotICAgIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZh
cycpOwotICAgIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTsKLSAgICBpbWFnZWRh
dGEgPSBjb250ZXh0LmNyZWF0ZUltYWdlRGF0YSgxLCAxKTsKLSAgICB2YWxpZFR5cGVzID0gW3sg
ZGVzY3JpcHRpb246ICdyZWdleHAnLCAgICB2YWx1ZTogbmV3IFJlZ0V4cCgnXFxcXCcpIH0sCi0g
ICAgICAgICAgICAgICAgICB7IGRlc2NyaXB0aW9uOiAnZGF0ZScsICAgICAgdmFsdWU6IG5ldyBE
YXRlKDApIH0sCi0gICAgICAgICAgICAgICAgICB7IGRlc2NyaXB0aW9uOiAnb2JqZWN0JywgICAg
dmFsdWU6IG5ldyBPYmplY3QoKSB9LAotICAgICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbjog
J2ltYWdlZGF0YScsIHZhbHVlOiBpbWFnZWRhdGEgfSwKLSAgICBdOwotICAgIG5leHRUb0FkZCA9
IDA7Ci0gICAgYWRkRGF0YSgpOwotfQotCi1mdW5jdGlvbiBhZGREYXRhKCkKLXsKLSAgICBkZWJ1
ZygiYWRkaW5nICIgKyB2YWxpZFR5cGVzW25leHRUb0FkZF0uZGVzY3JpcHRpb24gKyAiIHZhbHVl
Iik7Ci0gICAgcmVzdWx0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKHZhbGlkVHlwZXNb
bmV4dFRvQWRkXS52YWx1ZSkiKTsKLSAgICByZXN1bHQub25zdWNjZXNzID0gKytuZXh0VG9BZGQg
PCB2YWxpZFR5cGVzLmxlbmd0aCA/IGFkZERhdGEgOiBvcGVuQUN1cnNvcjsKLSAgICByZXN1bHQu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuQUN1
cnNvcigpCi17Ci0gICAgdmFsdWVJbmRleCA9IDA7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICAg
ICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS50b1N0cmluZygpIiwgInZhbGlkVHlwZXNbdmFsdWVJ
bmRleF0udmFsdWUudG9TdHJpbmcoKSIpOwotICAgICAgICAgICAgaWYgKHZhbHVlSW5kZXggPT0g
MSkgewotICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUudG9VVENTdHJpbmco
KSIsICInVGh1LCAwMSBKYW4gMTk3MCAwMDowMDowMCBHTVQnIik7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBpZiAodmFsdWVJbmRleCA9PSAzKSB7Ci0gICAgICAgICAgICAgICAgc2hvdWxk
QmUoImN1cnNvci52YWx1ZS53aWR0aCIsICIxIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKLSAgICAgICAgICAgIGV2YWxBbmRM
b2coInZhbHVlSW5kZXgrKzsiKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOwotICAgICAgICB9Ci0gICAgfQotfQotCi0KLXRlc3QoKTsKLQot
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3ZhbHVlcy1vZGQtdHlwZXMuanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9uLWNoYW5nZS1hYm9ydC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9uLWNoYW5nZS1hYm9ydC1leHBlY3Rl
ZC50eHQKaW5kZXggOWYxYzI1NTk0YWYzZGM0M2IwMmM1MDZiYjJkMTRjZDI3N2YwZGI3NS4uMzFl
YmQ2MTNhYmU2N2Y0NGFmMDdiMzg1MmUyZjk0MjEyMDc2YjAyYiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1jaGFuZ2UtYWJvcnQtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWFib3J0
LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA3ODog
VW5jYXVnaHQgRXJyb3I6IFRoaXMgc2hvdWxkICpOT1QqIGJlIGNhdWdodCEKK0NPTlNPTEUgTUVT
U0FHRTogbGluZSA3MTogVW5jYXVnaHQgRXJyb3I6IFRoaXMgc2hvdWxkICpOT1QqIGJlIGNhdWdo
dCEKIEVuc3VyZSB0aGF0IGFib3J0ZWQgVkVSU0lPTl9DSEFOR0UgdHJhbnNhY3Rpb25zIGFyZSBj
b21wbGV0ZWx5IHJvbGxlZCBiYWNrCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWFib3J0
Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9uLWNoYW5nZS1hYm9y
dC5odG1sCmluZGV4IGY2MzI3MGI3M2ZhM2MyNDY1MThhNTYzNDc5MzNlODVjMTVhNjBmMmEuLjU3
ZGUwMDkwYTU2ZDU5NTU2YWI0OWI5OWQ1MmY4NDUxZjljM2MyZWEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWFib3J0Lmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1jaGFuZ2UtYWJvcnQuaHRtbApA
QCAtMSwxMDEgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3Jp
cHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8
Ym9keT4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiRW5zdXJlIHRoYXQgYWJvcnRlZCBWRVJTSU9OX0NI
QU5HRSB0cmFuc2FjdGlvbnMgYXJlIGNvbXBsZXRlbHkgcm9sbGVkIGJhY2siKTsKLQotCi1mdW5j
dGlvbiB0ZXN0KCkgewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgb3BlbkRCQ29u
bmVjdGlvbigpOwotfQotCi1mdW5jdGlvbiBvcGVuREJDb25uZWN0aW9uKCkKLXsKLSAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3ZlcnNpb24tY2hhbmdlLWFib3J0Jyki
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2Vz
cygpCi17Ci0gICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dCIpOwotICAgIGRlYnVnKCIiKTsKLQotICAgIGV2YWxBbmRMb2coInZjcmVxID0gZGIuc2V0VmVy
c2lvbigndmVyc2lvbiAxJykiKTsKLSAgICB2Y3JlcS5vbnN1Y2Nlc3MgPSBpblNldFZlcnNpb24x
OwotICAgIHZjcmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVu
Y3Rpb24gaW5TZXRWZXJzaW9uMSgpCi17Ci0gICAgZGVidWcoInNldFZlcnNpb24xKCkgY2FsbGJh
Y2siKTsKLSAgICBzaG91bGRCZVRydWUoInZjcmVxLnJlc3VsdCBpbnN0YW5jZW9mIElEQlRyYW5z
YWN0aW9uIik7Ci0gICAgdHJhbnMgPSB2Y3JlcS5yZXN1bHQ7Ci0gICAgdHJhbnMub25hYm9ydCA9
IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIHRyYW5zLm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gc2V0VmVyc2lvbjFDb21wbGV0
ZTsKLQotICAgIGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3Jl
MScpIik7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb24xQ29tcGxldGUoKQotewotICAgIGRlYnVn
KCJzZXRWZXJzaW9uMSBjb21wbGV0ZSIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGIu
dmVyc2lvbiIsICJ2ZXJzaW9uIDEiKTsKLSAgICBkZWJ1ZygiIik7Ci0KLSAgICBldmFsQW5kTG9n
KCJ2Y3JlcSA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMicpIik7Ci0gICAgdmNyZXEub25zdWNj
ZXNzID0gaW5TZXRWZXJzaW9uMjsKLSAgICB2Y3JlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGluU2V0VmVyc2lvbjIoKQotewotICAgIGRlYnVnKCJz
ZXRWZXJzaW9uMigpIGNhbGxiYWNrIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkYi52
ZXJzaW9uIiwgInZlcnNpb24gMiIpOwotICAgIHNob3VsZEJlVHJ1ZSgidmNyZXEucmVzdWx0IGlu
c3RhbmNlb2YgSURCVHJhbnNhY3Rpb24iKTsKLSAgICB0cmFucyA9IHZjcmVxLnJlc3VsdDsKLSAg
ICB0cmFucy5vbmFib3J0ID0gc2V0VmVyc2lvbjJBYm9ydDsKLSAgICB0cmFucy5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0
ZWRDb21wbGV0ZUNhbGxiYWNrOwotCi0gICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5kZWxldGVP
YmplY3RTdG9yZSgnc3RvcmUxJykiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdzdG9yZTInKSIpOwotCi0gICAgLy8gRW5zdXJlIHRoZSB0ZXN0IGhhcm5l
c3MgZXJyb3IgaGFuZGxlciBpcyBub3QgaW52b2tlZC4KLSAgICBzZWxmLm9yaWdpbmFsV2luZG93
T25FcnJvciA9IHNlbGYub25lcnJvcjsKLSAgICBzZWxmLm9uZXJyb3IgPSBudWxsOwotCi0gICAg
ZGVidWcoInJhaXNpbmcgZXhjZXB0aW9uIik7Ci0gICAgdGhyb3cgbmV3IEVycm9yKCJUaGlzIHNo
b3VsZCAqTk9UKiBiZSBjYXVnaHQhIik7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb24yQWJvcnQo
KQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1Zygic2V0VmVyc2lvbjJBYm9ydCgpIGNhbGxi
YWNrIik7Ci0KLSAgICAvLyBSZXN0b3JlIHRlc3QgaGFybmVzcyBlcnJvciBoYW5kbGVyLgotICAg
IHNlbGYub25lcnJvciA9IHNlbGYub3JpZ2luYWxXaW5kb3dPbkVycm9yOwotCi0gICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJkYi52ZXJzaW9uIiwgInZlcnNpb24gMSIpOwotICAgIHNob3VsZEJl
VHJ1ZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucygnc3RvcmUxJykiKTsKLSAgICBzaG91
bGRCZUZhbHNlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCdzdG9yZTInKSIpOwotCi0g
ICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3ZlcnNpb24tY2hhbmdlLWFib3J0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgog
PC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvdmVyc2lvbi1jaGFuZ2UtZXhjbHVzaXZlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi92ZXJzaW9uLWNoYW5nZS1leGNsdXNpdmUuaHRtbAppbmRleCAyZmMyNWZiYWE1MGNj
ZDcwNTVkNGI4MTNlMDg2YjY1NjhlMTViYzg0Li40YTBlNDYyYTY3YWI5YTEyODMxMDFjNzZmODY0
Njc4OTg1NTRkOWZlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi92
ZXJzaW9uLWNoYW5nZS1leGNsdXNpdmUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi92ZXJzaW9uLWNoYW5nZS1leGNsdXNpdmUuaHRtbApAQCAtNCw3OSArNCw3IEBACiA8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9k
eT4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08
c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiRW5zdXJlIFZFUlNJT05fQ0hBTkdFIHRyYW5zYWN0aW9u
IGRvZXNuJ3QgcnVuIGNvbmN1cnJlbnRseSB3aXRoIG90aGVyIHRyYW5zYWN0aW9ucyIpOwotCi0K
LWZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICBvcGVu
REJDb25uZWN0aW9uKCk7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5EQkNvbm5lY3Rpb24oKQotewotICAg
IGV2YWxBbmRMb2coInNlbGYuc3RhdGUgPSAnc3RhcnRpbmcnIik7Ci0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCd2ZXJzaW9uLWNoYW5nZS1leGNsdXNpdmUnKSIpOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkK
LXsKLSAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
Ci0KLSAgICBkZWJ1ZygiY2FsbGluZyBzZXRWZXJzaW9uKCkgLSBjYWxsYmFjayBzaG91bGQgcnVu
IGltbWVkaWF0ZWx5Iik7Ci0gICAgdmFyIHZlcnNpb25DaGFuZ2VSZXF1ZXN0ID0gZXZhbEFuZExv
ZygiZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsKLSAgICB2ZXJzaW9uQ2hhbmdlUmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgdmVyc2lvbkNoYW5nZVJl
cXVlc3Qub25zdWNjZXNzID0gaW5TZXRWZXJzaW9uOwotCi0gICAgLy8gYW5kIGNvbmN1cnJlbnRs
eS4uLgotCi0gICAgZGVidWcoImNhbGxpbmcgb3BlbigpIC0gY2FsbGJhY2sgc2hvdWxkIHdhaXQg
dW50aWwgVkVSU0lPTl9DSEFOR0UgdHJhbnNhY3Rpb24gaXMgY29tcGxldGUiKTsKLSAgICB2YXIg
b3BlblJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndmVyc2lvbi1jaGFuZ2Ut
ZXhjbHVzaXZlJykiKTsKLSAgICBvcGVuUmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuQWdhaW5TdWNj
ZXNzOwotICAgIG9wZW5SZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LX0KLQotZnVuY3Rpb24gaW5TZXRWZXJzaW9uKCkKLXsKLSAgICBkZWJ1Zygic2V0VmVyc2lvbigp
IGNhbGxiYWNrIik7Ci0gICAgZGVidWcoInN0YXJ0aW5nIHdvcmsgaW4gVkVSU0lPTl9DSEFOR0Ug
dHJhbnNhY3Rpb24iKTsKLSAgICBldmFsQW5kTG9nKCJzZWxmLnN0YXRlID0gJ1ZFUlNJT05fQ0hB
TkdFIHN0YXJ0ZWQnIik7Ci0KLSAgICBzZWxmLnN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBk
Yi5jcmVhdGVPYmplY3RTdG9yZSgndGVzdC1zdG9yZScpIik7Ci0gICAgc2VsZi5jb3VudCA9IDA7
Ci0gICAgZG9fYXN5bmNfcHV0cygpOwotCi0gICAgZnVuY3Rpb24gZG9fYXN5bmNfcHV0cygpIHsK
LSAgICAgICAgdmFyIHJlcSA9IGV2YWxBbmRMb2coInN0b3JlLnB1dCgiICsgY291bnQgKyAiLCAi
ICsgY291bnQgKyAiKSIpOwotICAgICAgICByZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotICAgICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAg
ICAgIGRlYnVnKCJpbiBwdXQncyBvbnN1Y2Nlc3MiKTsKLSAgICAgICAgICAgIGlmICgrK3NlbGYu
Y291bnQgPCAxMCkgewotICAgICAgICAgICAgICAgIGRvX2FzeW5jX3B1dHMoKTsKLSAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZGVidWcoImVuZGluZyB3b3JrIGluIFZFUlNJ
T05fQ0hBTkdFIHRyYW5zYWN0aW9uIik7Ci0gICAgICAgICAgICAgICAgZXZhbEFuZExvZygic2Vs
Zi5zdGF0ZSA9ICdWRVJTSU9OX0NIQU5HRSBmaW5pc2hlZCciKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIG9wZW5BZ2FpblN1Y2Nlc3MoKQotewotICAg
IGRlYnVnKCJvcGVuKCkgY2FsbGJhY2sgLSB0aGlzIHNob3VsZCBhcHBlYXIgYWZ0ZXIgVkVSU0lP
Tl9DSEFOR0UgdHJhbnNhY3Rpb24gZW5kcyIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
c2VsZi5zdGF0ZSIsICJWRVJTSU9OX0NIQU5HRSBmaW5pc2hlZCIpOwotICAgIGZpbmlzaEpTVGVz
dCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3ZlcnNpb24tY2hhbmdlLWV4Y2x1c2l2ZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4K
IDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNp
b25jaGFuZ2VyZXF1ZXN0LWFjdGl2ZWRvbW9iamVjdC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvdmVyc2lvbmNoYW5nZXJlcXVlc3QtYWN0aXZlZG9tb2JqZWN0Lmh0bWwKaW5k
ZXggZDEwYTZhN2Q1OTczNTRmYTU3YzVkMjE3ZjkwODE4NmNkNTY1NTYxYS4uNTQ3NDVkNzAxNmIw
NTY5NzQ4N2ZmYTA4ODAyM2Y1NWZkYTZiMzU2NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvdmVyc2lvbmNoYW5nZXJlcXVlc3QtYWN0aXZlZG9tb2JqZWN0Lmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbmNoYW5nZXJlcXVlc3Qt
YWN0aXZlZG9tb2JqZWN0Lmh0bWwKQEAgLTEsNzggKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgog
PGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+
PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiRW5zdXJlIHRo
YXQgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Qgb2JqZWN0cyBhcmUgbm90IEdDJ2QgaWYgdGhleSBo
YXZlIHBlbmRpbmcgZXZlbnRzIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgcmVtb3ZlVmVu
ZG9yUHJlZml4ZXMoKTsKLQotICAgIGRlYnVnKCIiKTsKLSAgICBldmFsQW5kTG9nKCJzZWxmLmRi
bmFtZSA9ICd2ZXJzaW9uY2hhbmdlcmVxdWVzdC1hY3RpdmVkb21vYmplY3QnIik7Ci0KLSAgICB0
ZXN0RGVsZXRlRGF0YWJhc2UoKTsKLX0KLQotZnVuY3Rpb24gdGVzdERlbGV0ZURhdGFiYXNlKCkK
LXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInRlc3REZWxldGVEYXRhYmFzZSgpOiIpOwot
ICAgIC8vIE5PVEU6IGRlbGV0ZVJlcXVlc3QgaXMgbG9jYWwgdmFyaWFibGUgc28gaXQgaXMgbm90
IGNhcHR1cmVkIGluIGdsb2JhbCBzY29wZS4KLSAgICB2YXIgZGVsZXRlUmVxdWVzdCA9IGV2YWxB
bmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShzZWxmLmRibmFtZSkiKTsKLSAgICBkZWxl
dGVSZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICBkZWxldGVS
ZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7Ci0gICAgZGVsZXRl
UmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgZGVsZXRlU3VjY2VzcygpOyB9OwotICAg
IGRlbGV0ZVJlcXVlc3QgPSBudWxsOwotICAgIGlmIChzZWxmLmdjKSB7Ci0gICAgICAgIGV2YWxB
bmRMb2coInNlbGYuZ2MoKSIpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gZGVsZXRlU3VjY2Vzcygp
Ci17Ci0gICAgdGVzdFBhc3NlZCgiZGVsZXRlRGF0YWJhc2UncyBJREJWZXJzaW9uQ2hhbmdlUmVx
dWVzdC5vbnN1Y2Nlc3MgZXZlbnQgZmlyZWQiKTsKLSAgICB0ZXN0U2V0VmVyc2lvbigpOwotfQot
Ci1mdW5jdGlvbiB0ZXN0U2V0VmVyc2lvbigpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVn
KCJ0ZXN0U2V0VmVyc2lvbigpOiIpOwotCi0gICAgLy8gTk9URTogVGhpcyBpcyBqdXN0IGFuIElE
QlJlcXVlc3QsIGl0IGNhbiBiZSBnbG9iYWwuCi0gICAgZXZhbEFuZExvZygib3BlblJlcXVlc3Qg
PSBpbmRleGVkREIub3BlbihzZWxmLmRibmFtZSkiKTsKLSAgICBvcGVuUmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgb3BlblJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24gKCkgewotICAgICAgICBldmFsQW5kTG9nKCJkYiA9IG9wZW5SZXF1ZXN0LnJlc3Vs
dCIpOwotCi0gICAgICAgIC8vIE5PVEU6IHZlcnNpb25SZXF1ZXN0IGlzIGxvY2FsIHZhcmlhYmxl
IHNvIGl0IGlzIG5vdCBjYXB0dXJlZCBpbiBnbG9iYWwgc2NvcGUuCi0gICAgICAgIHZhciB2ZXJz
aW9uUmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgICAgICB2
ZXJzaW9uUmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAg
IHZlcnNpb25SZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7Ci0g
ICAgICAgIHZlcnNpb25SZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeyB2ZXJzaW9uU3Vj
Y2VzcygpOyB9OwotICAgICAgICB2ZXJzaW9uUmVxdWVzdCA9IG51bGw7Ci0gICAgICAgIGlmIChz
ZWxmLmdjKSB7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJzZWxmLmdjKCkiKTsKLSAgICAgICAg
fQotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIHZlcnNpb25TdWNjZXNzKCkKLXsKLSAgICB0ZXN0UGFz
c2VkKCJzZXRWZXJzaW9uJ3MgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Qub25zdWNjZXNzIGV2ZW50
IGZpcmVkIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3ZlcnNpb25jaGFuZ2VyZXF1ZXN0LWFjdGl2ZWRvbW9i
amVjdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133399</attachid>
            <date>2012-03-22 17:35:35 -0700</date>
            <delta_ts>2012-03-23 13:31:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81440-20120322173534.patch</filename>
            <type>text/plain</type>
            <size>688458</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNjA4CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9jb25zdGFudHMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2NvbnN0YW50cy5odG1sCmluZGV4IGZlOGFjYWIzODE5NWNkY2JkNzkyMDg4N2EwYmYwYzRk
YTcyYjRjNDEuLmQ3ZjBmMTQ0ZGZlN2JhNzhhNjQyNGIxZTBhNzUzMzkyZjBkYmNmYjAgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2NvbnN0YW50cy5odG1sCisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2NvbnN0YW50cy5odG1sCkBAIC00LDQ0ICs0
LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVh
ZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgY29u
c3RhbnRzLiIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhl
cygpOwotICAgIHNob3VsZEJlKCJJREJEYXRhYmFzZUV4Y2VwdGlvbi5VTktOT1dOX0VSUiIsICIx
Iik7Ci0gICAgc2hvdWxkQmUoIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PTl9UUkFOU0lFTlRfRVJS
IiwgIjIiKTsKLSAgICBzaG91bGRCZSgiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VS
UiIsICIzIik7Ci0gICAgc2hvdWxkQmUoIklEQkRhdGFiYXNlRXhjZXB0aW9uLkNPTlNUUkFJTlRf
RVJSIiwgIjQiKTsKLSAgICBzaG91bGRCZSgiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIi
LCAiNSIpOwotICAgIHNob3VsZEJlKCJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9F
UlIiLCAiNiIpOwotICAgIHNob3VsZEJlKCJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElP
Tl9JTkFDVElWRV9FUlIiLCAiNyIpOwotICAgIHNob3VsZEJlKCJJREJEYXRhYmFzZUV4Y2VwdGlv
bi5BQk9SVF9FUlIiLCAiOCIpOwotICAgIHNob3VsZEJlKCJJREJEYXRhYmFzZUV4Y2VwdGlvbi5S
RUFEX09OTFlfRVJSIiwgIjkiKTsKLSAgICBzaG91bGRCZSgiSURCRGF0YWJhc2VFeGNlcHRpb24u
VElNRU9VVF9FUlIiLCAiMTAiKTsKLSAgICBzaG91bGRCZSgiSURCRGF0YWJhc2VFeGNlcHRpb24u
UVVPVEFfRVJSIiwgIjExIik7Ci0gICAgc2hvdWxkQmUoIklEQkRhdGFiYXNlRXhjZXB0aW9uLlZF
Ul9FUlIiLCAiMTIiKTsKLQotICAgIHNob3VsZEJlKCJJREJSZXF1ZXN0LkxPQURJTkciLCAiMSIp
OwotICAgIHNob3VsZEJlKCJJREJSZXF1ZXN0LkRPTkUiLCAiMiIpOwotCi0gICAgc2hvdWxkQmUo
IklEQkN1cnNvci5ORVhUIiwgIjAiKTsKLSAgICBzaG91bGRCZSgiSURCQ3Vyc29yLk5FWFRfTk9f
RFVQTElDQVRFIiwgIjEiKTsKLSAgICBzaG91bGRCZSgiSURCQ3Vyc29yLlBSRVYiLCAiMiIpOwot
ICAgIHNob3VsZEJlKCJJREJDdXJzb3IuUFJFVl9OT19EVVBMSUNBVEUiLCAiMyIpOwotCi0gICAg
c2hvdWxkQmUoIklEQlRyYW5zYWN0aW9uLlJFQURfT05MWSIsICIwIik7Ci0gICAgc2hvdWxkQmUo
IklEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUiLCAiMSIpOwotICAgIHNob3VsZEJlKCJJREJUcmFu
c2FjdGlvbi5WRVJTSU9OX0NIQU5HRSIsICIyIik7Ci19Ci0KLXRlc3QoKTsKLQotZmluaXNoSlNU
ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jb25zdGFudHMuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jcmVhdGUtYW5kLXJlbW92ZS1vYmplY3Qtc3RvcmUuaHRt
bCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZS1hbmQtcmVtb3ZlLW9iamVj
dC1zdG9yZS5odG1sCmluZGV4IDcxNjk1YzBkNTc4ZGRlY2ZiY2E2NWJiNWEyNmUwYmRiNmY3NDg3
M2UuLjdjODlmNWU5OWM2YjY4NDQzNDdkNDZiYWU1NzNiODQwOWM3NDVhYmYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZS1hbmQtcmVtb3ZlLW9iamVjdC1z
dG9yZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZS1hbmQt
cmVtb3ZlLW9iamVjdC1zdG9yZS5odG1sCkBAIC00LDcyICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4K
LQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgY3JlYXRlIGFuZCByZW1vdmVPYmplY3RT
dG9yZSIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygp
OwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignY3JlYXRlLWFuZC1y
ZW1vdmUtb2JqZWN0LXN0b3JlJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNj
ZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQot
Ci1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7
Ci0gICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwot
ICAgIHRlc3RDcmVhdGVBbmRSZW1vdmUoKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVz
dWx0ID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGNsZWFuRGF0YWJhc2U7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci0gICAgdGVzdENyZWF0ZUFuZFJlbW92ZSgpOwotfQotCi1mdW5jdGlvbiB0ZXN0
Q3JlYXRlQW5kUmVtb3ZlKCkKLXsKLSAgICBkZWJ1ZygiVHJ5aW5nIGNyZWF0ZSIpOwotICAgIGV2
YWxBbmRFeHBlY3RFeGNlcHRpb24oJ2RiLmNyZWF0ZU9iamVjdFN0b3JlKCJzb21lIG9zIiknLCAi
SURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0FMTE9XRURfRVJSIik7Ci0gICAgZGVidWcoIlRyeWlu
ZyByZW1vdmUiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCdkYi5kZWxldGVPYmplY3RT
dG9yZSgic29tZSBvcyIpJywgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9BTExPV0VEX0VSUiIp
OwotfQotCi1mdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKLXsKLSAgICBkZWxldGVBbGxPYmplY3RT
dG9yZXMoZGIpOwotCi0gICAgb3MgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgn
dG1wJykiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi5jcmVhdGVPYmplY3RTdG9y
ZSgndG1wJykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uQ09OU1RSQUlOVF9FUlIiKTsKLSAgICBl
dmVudC50YXJnZXQucmVzdWx0Lm9uY29tcGxldGUgPSBzZXRWZXJzaW9uQ29tcGxldGU7Ci19Ci0K
LWZ1bmN0aW9uIHNldFZlcnNpb25Db21wbGV0ZSgpCi17Ci0gICAgdHJhbnMgPSBldmFsQW5kTG9n
KCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsndG1wJ10pIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCd0bXAnKS5nZXQoMCkiKTsKLSAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IHRyeU9uY2VNb3JlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiB0cnlPbmNlTW9yZSgpCi17Ci0gICAgc2hvdWxk
QmVVbmRlZmluZWQoImV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHRlc3RDcmVhdGVBbmRS
ZW1vdmUoKTsKLQotICAgIGRlYnVnKCJUcnlpbmcgY3JlYXRlIHdpdGggc3RvcmUgdGhhdCBhbHJl
YWR5IGV4aXN0cyIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLmNyZWF0ZU9iamVj
dFN0b3JlKCd0bXAnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9FUlIiKTsK
LSAgICBkZWJ1ZygiVHJ5aW5nIHJlbW92ZSB3aXRoIHN0b3JlIHRoYXQgYWxyZWFkeSBleGlzdHMi
KTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi5kZWxldGVPYmplY3RTdG9yZSgndG1w
JykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0FMTE9XRURfRVJSIik7Ci0KLSAgICBmaW5p
c2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9jcmVhdGUtYW5kLXJlbW92ZS1vYmplY3Qtc3RvcmUuanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9jcmVhdGUtb2JqZWN0LXN0b3JlLW9wdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZS1vYmplY3Qtc3RvcmUtb3B0aW9ucy5odG1sCmluZGV4IGRk
YWIwZjJjOGFkODlkMmI2OWE2MmYzNjA5NWMxNmEwOWE2YjdjMzUuLjc3YzMzM2FiZTlkYWM2OTcw
MWU2ZDEwMmI4NWY1ZGMxZmU3MWFhZTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2NyZWF0ZS1vYmplY3Qtc3RvcmUtb3B0aW9ucy5odG1sCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZS1vYmplY3Qtc3RvcmUtb3B0aW9ucy5odG1sCkBA
IC00LDg3ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Njcmlw
dD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhl
ZERCJ3MgY3JlYXRlT2JqZWN0U3RvcmUncyB2YXJpb3VzIG9wdGlvbnMiKTsKLQotZnVuY3Rpb24g
dGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignY3JlYXRlLW9iamVjdC1zdG9yZS1vcHRpb25zJywg
J2Rlc2NyaXB0aW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5j
dGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIu
c2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFu
RGF0YWJhc2U7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci19Ci0KLWZ1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0
b3JlcyhkYik7Ci0KLSAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnYScsIHtr
ZXlQYXRoOiAnYSd9KSIpOwotICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdi
JykiKTsKLQotICAgIGRlYnVnKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnYycsIHthdXRvSW5jcmVt
ZW50OiB0cnVlfSk7Iik7Ci0gICAgZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2MnLCB7YXV0b0luY3Jl
bWVudDogdHJ1ZX0pOwotICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25jb21wbGV0ZSA9IHNldFZl
cnNpb25Db21wbGV0ZTsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvbkNvbXBsZXRlKCkKLXsKLSAg
ICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydhJywgJ2InXSwg
SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICBzaG91bGRCZSgidHJhbnMubW9kZSIs
ICJJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFIik7Ci0KLSAgICByZXEgPSBldmFsQW5kTG9nKCJ0
cmFucy5vYmplY3RTdG9yZSgnYScpLnB1dCh7J2EnOiAwfSkiKTsKLSAgICByZXEub25zdWNjZXNz
ID0gcHV0QjsKLSAgICByZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotCi0g
ICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbkNsYXNzKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnZCcs
ICdiYXInKTsiLCAiVHlwZUVycm9yIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbkNsYXNz
KCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnZScsIGZhbHNlKTsiLCAiVHlwZUVycm9yIik7Ci19Ci0K
LWZ1bmN0aW9uIHB1dEIoKQotewotICAgIHJlcSA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0
b3JlKCdiJykucHV0KHsnYSc6IDB9LCAwKSIpOyAgLy8gT09QUwotICAgIHJlcS5vbnN1Y2Nlc3Mg
PSBnZXRBOwotICAgIHJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0K
LWZ1bmN0aW9uIGdldEEoKQotewotICAgIHJlcSA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0
b3JlKCdhJykuZ2V0KDApIik7Ci0gICAgcmVxLm9uc3VjY2VzcyA9IGdldEI7Ci0gICAgcmVxLm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZ2V0QigpCi17
Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQuYSIsICJ7YTogMH0iKTsKLQotICAg
IHJlcSA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdiJykuZ2V0KDApIik7Ci0gICAg
cmVxLm9uc3VjY2VzcyA9IGNoZWNrQjsKLSAgICByZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjaGVja0IoKQotewotICAgIHNob3VsZEJlKCJldmVu
dC50YXJnZXQucmVzdWx0LmEiLCAie2E6IDB9Iik7Ci0KLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0K
LQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jcmVhdGUt
b2JqZWN0LXN0b3JlLW9wdGlvbnMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jcmVhdGVPYmpl
Y3RTdG9yZS1uYW1lLWFyZ3VtZW50LXJlcXVpcmVkLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9jcmVhdGVPYmplY3RTdG9yZS1uYW1lLWFyZ3VtZW50LXJlcXVpcmVkLmh0bWwK
aW5kZXggMjcyZmM0MzA5YWNjZDU2NGYyYmZjN2ZkMTFkYjk2YzcxNmUyNmU4Yy4uZWU4ZmE4ZTc3
ZDI0ZGVmODgwZTcxNmU2ZDk2MWU4Nzk0NDMwMWI1NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlT2JqZWN0U3RvcmUtbmFtZS1hcmd1bWVudC1yZXF1aXJl
ZC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZU9iamVjdFN0
b3JlLW5hbWUtYXJndW1lbnQtcmVxdWlyZWQuaHRtbApAQCAtMSw0NiArMSwxMCBAQAotPCFET0NU
WVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
c2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3Jp
cHRpb24oIlRlc3QgSW5kZXhlZERCIGNyZWF0ZU9iamVjdFN0b3JlIG5hbWUgYXJndW1lbnQgaXMg
cmVxdWlyZWQiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4
ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0
aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRl
eGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9n
KCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9i
amVjdFN0b3JlKCkKLXsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgc2hv
dWxkVGhyb3coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCk7Iik7Ci0gICAgZmluaXNoSlNUZXN0KCk7
Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY3Jl
YXRlT2JqZWN0U3RvcmUtbmFtZS1hcmd1bWVudC1yZXF1aXJlZC5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2NyZWF0ZU9iamVjdFN0b3JlLW51bGwtbmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvY3JlYXRlT2JqZWN0U3RvcmUtbnVsbC1uYW1lLmh0bWwKaW5kZXggNGIy
NWUxNDRhODgwNTA4MDJiZTI1ZjhhMWFjN2FjYWMwYzAxMDllOS4uYjJhYThhMzA4MWExMDBjZDUx
MWMxNWU1ZGZjZTEyMTU3OTE3N2NmYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvY3JlYXRlT2JqZWN0U3RvcmUtbnVsbC1uYW1lLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlT2JqZWN0U3RvcmUtbnVsbC1uYW1lLmh0bWwKQEAg
LTEsNDcgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQg
c3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9k
eT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBjcmVhdGVPYmplY3RT
dG9yZSBudWxsIGhhbmRsaW5nIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZl
bmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAg
ICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRiID0g
ZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZTsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY3JlYXRlQW5k
UG9wdWxhdGVPYmplY3RTdG9yZSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsK
LQotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUobnVs
bCk7Iik7Ci0gICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLm5hbWUiLCAiJ251bGwnIik7Ci0gICAg
ZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvY3JlYXRlT2JqZWN0U3RvcmUtbnVsbC1uYW1lLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvY3Vyc29yLWNvbnRpbnVlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9jdXJzb3ItY29udGludWUuaHRtbAppbmRleCA3MTJjZDJiMzlkNjJkYTI3OTNhZmU2NjIz
MDE1NmNjZTEzMTA3NTFjLi4wNmJmNzE1OGE3MzkzMWM0MGE5MjdiZjEwN2JlZDdiZGUyZjEwMGYz
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItY29udGlu
dWUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItY29udGlu
dWUuaHRtbApAQCAtNCwyNzUgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQu
anMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PiAKLQotZGVzY3JpcHRpb24o
IlRlc3QgSW5kZXhlZERCJ3MgSURCQ3Vyc29yLmNvbnRpbnVlKCkgd2l0aCBhIGtleSBwYXJhbWV0
ZXIuIik7Ci0KLXZhciBkYXRlID0gbmV3IERhdGUoKTsKLQotLy8gSW4gb3JkZXIgb2YgaG93IGl0
IHNob3VsZCBiZSBzb3J0ZWQgYnkgSW5kZXhlZERCLgotc2VsZi50ZXN0RGF0YSA9IFsKLSAgICAw
LAotICAgIDEsCi0gICAgMSwKLSAgICAzLjE0MTU5LAotICAgIDMuMTQxNTksCi0gICAgMTAsCi0g
ICAgMTEsCi0gICAgMTIsCi0gICAgMTMsCi0gICAgZGF0ZSwKLSAgICBkYXRlLAotICAgIG5ldyBE
YXRlKGRhdGUudmFsdWVPZigpICsgMTAwMCksCi0gICAgIkEgYmlnIHN0cmluZyIsCi0gICAgIkEg
YmlnIHN0cmluZyIsCi0gICAgIkEgYml0MSIsCi0gICAgIkEgYml0MiIsCi0gICAgIkEgYml0MyIs
Ci0gICAgInRoZSBCSUdHRVNUIHN0cmluZyIKLV07Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAg
IHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgb3BlbkRhdGFiYXNlKCk7Ci19Ci0KLWZ1bmN0
aW9uIG9wZW5EYXRhYmFzZSgpCi17Ci0gICAgcmVzdWx0ID0gZXZhbEFuZExvZygiaW5kZXhlZERC
Lm9wZW4oJ2N1cnNvci1jb250aW51ZScpIik7Ci0gICAgcmVzdWx0Lm9uc3VjY2VzcyA9IHNldFZl
cnNpb247Ci0gICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0K
LSAKLWZ1bmN0aW9uIHNldFZlcnNpb24oKQotewotICAgIHNlbGYuZGIgPSBldmFsQW5kTG9nKCJk
YiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coImRi
LnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXN1bHQub25zdWNjZXNzID0gZGVs
ZXRlRXhpc3Rpbmc7Ci0gICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLX0KLQotZnVuY3Rpb24gZGVsZXRlRXhpc3RpbmcoKQotewotICAgIHNlbGYudHJhbnMgPSBl
dmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRy
dWUoInRyYW5zICE9PSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9y
dENhbGxiYWNrOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIHNlbGYu
b2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc29tZU9iamVj
dFN0b3JlJykiKTsKLSAgICBzZWxmLmluZGV4T2JqZWN0ID0gZXZhbEFuZExvZygib2JqZWN0U3Rv
cmUuY3JlYXRlSW5kZXgoJ3NvbWVJbmRleCcsICd4JykiKTsKLSAgICBzZWxmLm5leHRUb0FkZCA9
IDA7Ci0gICAgYWRkRGF0YSgpOwotfQotCi1mdW5jdGlvbiBhZGREYXRhKCkKLXsKLSAgICByZXN1
bHQgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoeyd4JzogdGVzdERhdGFbbmV4dFRvQWRk
XX0sIG5leHRUb0FkZCkiKTsKLSAgICByZXN1bHQub25zdWNjZXNzID0gKytzZWxmLm5leHRUb0Fk
ZCA8IHRlc3REYXRhLmxlbmd0aCA/IGFkZERhdGEgOiBhc2NlbmRpbmdUZXN0OwotICAgIHJlc3Vs
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGFzY2Vu
ZGluZ1Rlc3QoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICB2YXIgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImluZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3IobnVsbCwgSURCQ3Vyc29yLk5FWFQpIik7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhc2NlbmRpbmdDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICBzZWxmLnN0YWdlID0gMDsKLX0K
LQotZnVuY3Rpb24gYXNjZW5kaW5nQ2FsbGJhY2soKQotCi17Ci0gICAgaWYgKHNlbGYuc3RhZ2Ug
PT0gMCkgewotICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5
IiwgIjAiKTsKLSAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51
ZSgzLjE0MTU5KSIpOwotICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSAxKSB7Ci0gICAgICAg
IHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMyIpOwotICAgICAg
ICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKLSAgICB9IGVs
c2UgaWYgKHNlbGYuc3RhZ2UgPT0gMikgewotICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0
LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjQiKTsKLSAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFy
Z2V0LnJlc3VsdC5jb250aW51ZSgpIik7Ci0gICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDMp
IHsKLSAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICI1
Iik7Ci0gICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoMTIp
Iik7Ci0gICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDQpIHsKLSAgICAgICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICI3Iik7Ci0gICAgICAgIGV2YWxBbmRM
b2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoZGF0ZSkiKTsKLSAgICB9IGVsc2UgaWYg
KHNlbGYuc3RhZ2UgPT0gNSkgewotICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3Vs
dC5wcmltYXJ5S2V5IiwgIjkiKTsKLSAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJl
c3VsdC5jb250aW51ZSgpIik7Ci0gICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDYpIHsKLSAg
ICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIxMCIpOwot
ICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKLSAg
ICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gNykgewotICAgICAgICBzaG91bGRCZSgiZXZlbnQu
dGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjExIik7Ci0gICAgICAgIGV2YWxBbmRMb2coImV2
ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoJ0EgYml0MScpIik7Ci0gICAgfSBlbHNlIGlmIChz
ZWxmLnN0YWdlID09IDgpIHsKLSAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQu
cHJpbWFyeUtleSIsICIxNCIpOwotICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVz
dWx0LmNvbnRpbnVlKCdBIGJpdDMnKSIpOwotICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSA5
KSB7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAi
MTYiKTsKLSAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgn
dGhlIEJJR0dFU1Qgc3RyaW5nJykiKTsKLSAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gMTAp
IHsKLSAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIx
NyIpOwotICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCki
KTsKLSAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gMTEpIHsKLSAgICAgICAgc2hvdWxkQmVO
dWxsKCJldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgICAgIGRlc2NlbmRpbmdUZXN0KCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9IGVsc2UgewotICAgICAgICB0ZXN0RmFpbGVkKCJJbGxlZ2Fs
IHN0YWdlLiIpOwotICAgIH0KLSAgICBzZWxmLnN0YWdlKys7Ci19Ci0KLWZ1bmN0aW9uIGRlc2Nl
bmRpbmdUZXN0KCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgdmFyIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJpbmRleE9iamVjdC5vcGVuS2V5Q3Vyc29yKG51bGwsIElEQkN1cnNvci5QUkVWKSIpOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVzY2VuZGluZ0NhbGxiYWNrOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHNlbGYuc3RhZ2UgPSAwOwot
fQotCi1mdW5jdGlvbiBkZXNjZW5kaW5nQ2FsbGJhY2soKQotewotICAgIGlmIChzZWxmLnN0YWdl
ID09IDApIHsKLSAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtl
eSIsICIxNyIpOwotICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRp
bnVlKCdBIGJpdDInKSIpOwotICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSAxKSB7Ci0gICAg
ICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMTUiKTsKLSAg
ICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7Ci0gICAg
fSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDIpIHsKLSAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRh
cmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIxNCIpOwotICAgICAgICBldmFsQW5kTG9nKCJldmVu
dC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKGRhdGUpIik7Ci0gICAgfSBlbHNlIGlmIChzZWxmLnN0
YWdlID09IDMpIHsKLSAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFy
eUtleSIsICIxMCIpOwotICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNv
bnRpbnVlKCkiKTsKLSAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gNCkgewotICAgICAgICBz
aG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjkiKTsKLSAgICAgICAg
ZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgxKSIpOwotICAgIH0gZWxz
ZSBpZiAoc2VsZi5zdGFnZSA9PSA1KSB7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQu
cmVzdWx0LnByaW1hcnlLZXkiLCAiMiIpOwotICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJn
ZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKLSAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gNikg
ewotICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjEi
KTsKLSAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7
Ci0gICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDcpIHsKLSAgICAgICAgc2hvdWxkQmUoImV2
ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIwIik7Ci0gICAgICAgIGV2YWxBbmRMb2co
ImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOwotICAgIH0gZWxzZSBpZiAoc2VsZi5z
dGFnZSA9PSA4KSB7Ci0gICAgICAgIHNob3VsZEJlTnVsbCgiZXZlbnQudGFyZ2V0LnJlc3VsdCIp
OwotICAgICAgICBhc2NlbmRpbmdFcnJvclRlc3RMZXNzVGhhbigpOwotICAgICAgICByZXR1cm47
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiSWxsZWdhbCBzdGFnZS4iKTsKLSAg
ICB9Ci0gICAgc2VsZi5zdGFnZSsrOwotfQotCi1mdW5jdGlvbiBhc2NlbmRpbmdFcnJvclRlc3RM
ZXNzVGhhbigpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIHZhciByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiaW5kZXhPYmplY3Qub3BlbktleUN1cnNvcihudWxsLCBJREJDdXJzb3IuTkVYVCkiKTsKLSAg
ICBzZWxmLnN0YWdlID0gMDsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAgICBp
ZiAoc2VsZi5zdGFnZSA9PT0gMCkgewotICAgICAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdl
dC5yZXN1bHQucHJpbWFyeUtleSIsICIwIik7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJldmVu
dC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKDMuMTQxNTkpIik7Ci0gICAgICAgIH0gZWxzZSBpZiAo
c2VsZi5zdGFnZSA9PSAxKSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJl
c3VsdC5wcmltYXJ5S2V5IiwgIjMiKTsKLSAgICAgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRp
b24oImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoMSkiLCAiSURCRGF0YWJhc2VFeGNlcHRp
b24uREFUQV9FUlIiKTsKLSAgICAgICAgICAgIGFzY2VuZGluZ0Vycm9yVGVzdEVxdWFsKCk7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgIHRlc3RGYWls
ZWQoIklsbGVnYWwgc3RhZ2UuIik7Ci0gICAgICAgIH0KLSAgICAgICAgc2VsZi5zdGFnZSsrOwot
ICAgIH07Ci19Ci0KLWZ1bmN0aW9uIGFzY2VuZGluZ0Vycm9yVGVzdEVxdWFsKCkKLXsKLSAgICBk
ZWJ1ZygiIik7Ci0gICAgdmFyIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5vcGVu
S2V5Q3Vyc29yKG51bGwsIElEQkN1cnNvci5ORVhUKSIpOwotICAgIHNlbGYuc3RhZ2UgPSAwOwot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmIChzZWxmLnN0YWdlID09PSAw
KSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5
IiwgIjAiKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29u
dGludWUoMy4xNDE1OSkiKTsKLSAgICAgICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDEpIHsK
LSAgICAgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAi
MyIpOwotICAgICAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZXZlbnQudGFyZ2V0LnJl
c3VsdC5jb250aW51ZSgzLjE0MTU5KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIp
OwotICAgICAgICAgICAgZGVzY2VuZGluZ0Vycm9yVGVzdEdyZWF0ZXJUaGFuKCk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgIHRlc3RGYWlsZWQoIkls
bGVnYWwgc3RhZ2UuIik7Ci0gICAgICAgIH0KLSAgICAgICAgc2VsZi5zdGFnZSsrOwotICAgIH07
Ci19Ci0KLWZ1bmN0aW9uIGRlc2NlbmRpbmdFcnJvclRlc3RHcmVhdGVyVGhhbigpCi17Ci0gICAg
ZGVidWcoIiIpOwotICAgIHZhciByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhPYmplY3Qub3Bl
bktleUN1cnNvcihudWxsLCBJREJDdXJzb3IuUFJFVikiKTsKLSAgICBzZWxmLnN0YWdlID0gMDsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAoc2VsZi5zdGFnZSA9PSAw
KSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5
IiwgIjE3Iik7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNv
bnRpbnVlKCdBIGJpdDInKSIpOwotICAgICAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gMSkg
ewotICAgICAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIs
ICIxNSIpOwotICAgICAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZXZlbnQudGFyZ2V0
LnJlc3VsdC5jb250aW51ZSgnQSBiaXQzJykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9F
UlIiKTsKLSAgICAgICAgICAgIGRlc2NlbmRpbmdFcnJvclRlc3RFcXVhbCgpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICB0ZXN0RmFpbGVkKCJJbGxl
Z2FsIHN0YWdlLiIpOwotICAgICAgICB9Ci0gICAgICAgIHNlbGYuc3RhZ2UrKzsKLSAgICB9Owot
fQotCi1mdW5jdGlvbiBkZXNjZW5kaW5nRXJyb3JUZXN0RXF1YWwoKQotewotICAgIGRlYnVnKCIi
KTsKLSAgICB2YXIgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0Lm9wZW5LZXlDdXJz
b3IobnVsbCwgSURCQ3Vyc29yLlBSRVYpIik7Ci0gICAgc2VsZi5zdGFnZSA9IDA7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHNlbGYuc3RhZ2UgPT0gMCkgewotICAg
ICAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIxNyIp
OwotICAgICAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgn
QSBiaXQyJykiKTsKLSAgICAgICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDEpIHsKLSAgICAg
ICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMTUiKTsK
LSAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsK
LSAgICAgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImV2ZW50LnRhcmdldC5yZXN1bHQu
Y29udGludWUoJ0EgYml0MicpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0g
ICAgICAgICAgICBzZWxmLnRyYW5zLm9uY29tcGxldGUgPSBvblRyYW5zYWN0aW9uQ29tcGxldGU7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgIHRlc3RG
YWlsZWQoIklsbGVnYWwgc3RhZ2UuIik7Ci0gICAgICAgIH0KLSAgICAgICAgc2VsZi5zdGFnZSsr
OwotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIG9uVHJhbnNhY3Rpb25Db21wbGV0ZSgpCi17Ci0gICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiY3Vyc29yLmNvbnRpbnVlKCkiLCAiSURCRGF0YWJhc2VF
eGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7
Ci19Ci0KLXRlc3QoKTsKLSAKLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jdXJz
b3ItY29udGludWUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItZGVsZXRlLmh0bWwg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItZGVsZXRlLmh0bWwKaW5kZXgg
ZDc0MDczYWI3ZjlhYzE5Y2I3MDI3YWVmN2EyYmMxYWIzYWUwNmIzYy4uZWJkNmI3ZjdjMzUzYTg0
YjA4NWE3ZjQxNmI2YjZhODgxY2YwM2Q0MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvY3Vyc29yLWRlbGV0ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2N1cnNvci1kZWxldGUuaHRtbApAQCAtNCwxMTEgKzQsNyBAQAogPHNjcmlwdCBz
cmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2Ny
aXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBvcGVuQ3Vyc29yLiIpOwotCi10
ZXN0KCk7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdjdXJzb3ItZGVsZXRl
JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3Vj
Y2VzcygpCi17Ci0gICAgdmFyIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVz
dWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZl
cnNpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0
aW9uIHNldFZlcnNpb25TdWNjZXNzKCkKLXsKLSAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3Mo
KToiKTsKLSAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwotICAgIHRyYW5z
Lm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBsZXRl
ID0gb3BlbkN1cnNvcjsKLQotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICB2
YXIgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVj
dFN0b3JlKCd0ZXN0JykiKTsKLSAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ215VmFs
dWUxJywgJ215S2V5MScpIik7Ci0gICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCdteVZh
bHVlMicsICdteUtleTInKSIpOwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnbXlW
YWx1ZTMnLCAnbXlLZXkzJykiKTsKLSAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ215
VmFsdWU0JywgJ215S2V5NCcpIik7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5DdXJzb3IoKQotewotICAg
IGRlYnVnKCJvcGVuQ3Vyc29yMSIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNh
Y3Rpb24oWyd0ZXN0J10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAga2V5UmFu
Z2UgPSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKCJteUtleTEiKTsKLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ3Rlc3QnKS5vcGVuQ3Vyc29yKHtyYW5nZToga2V5
UmFuZ2V9KSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29yU3VjY2VzczsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICBjb3VudGVyID0g
MTsKLX0KLQotZnVuY3Rpb24gY3Vyc29yU3VjY2VzcygpCi17Ci0gICAgaWYgKGV2ZW50LnRhcmdl
dC5yZXN1bHQgPT0gbnVsbCkgewotICAgICAgICBzaG91bGRCZSgiY291bnRlciIsICI1Iik7Ci0g
ICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgndGVzdCcpLm9w
ZW5DdXJzb3Ioa2V5UmFuZ2UpIik7Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29y
RW1wdHk7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5y
ZXN1bHQuZGVsZXRlKCkiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdl
dC5yZXN1bHQudmFsdWUiLCAibXlWYWx1ZSIgKyBjb3VudGVyKyspOwotICAgIGV2YWxBbmRMb2co
ImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOwotfQotCi1mdW5jdGlvbiBjdXJzb3JF
bXB0eSgpCi17Ci0gICAgc2hvdWxkQmVOdWxsKCJldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAg
dHJhbnMub25jb21wbGV0ZSA9IGFkZE9iamVjdDsKLX0KLQotZnVuY3Rpb24gYWRkT2JqZWN0KCkK
LXsKLSAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsndGVzdCddLCBJREJU
cmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygi
b2JqZWN0U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgndGVzdCcpIik7Ci0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnbXlWYWx1ZTEnLCAnbXlLZXkxJykiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5DdXJzb3IyOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuQ3Vyc29yMigpCi17
Ci0gICAgZGVidWcoIm9wZW5DdXJzb3IyIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIm9i
amVjdFN0b3JlLm9wZW5DdXJzb3Ioa2V5UmFuZ2UpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBkZWxldGVPYmplY3Q7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZU9iamVjdCgpCi17Ci0gICAgc2hvdWxkQmVOb25O
dWxsKGV2ZW50LnRhcmdldC5yZXN1bHQpOwotICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5y
ZXN1bHQuZGVsZXRlKCkiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUu
Z2V0KCdteUtleTEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdmVyaWZ5T2JqZWN0RGVs
ZXRlZDsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0K
LQotZnVuY3Rpb24gdmVyaWZ5T2JqZWN0RGVsZXRlZCgpCi17Ci0gICAgc2hvdWxkQmUoImV2ZW50
LnRhcmdldC5yZXN1bHQiLCAidW5kZWZpbmVkIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0K
LQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2N1cnNvci1kZWxldGUuanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItaW5jb25zaXN0ZW5jeS5odG1sIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWluY29uc2lzdGVuY3kuaHRtbAppbmRleCBhNDg1
NzZjODBjOTY0ZWQ4OTdmMmFkZGY2NGIzZTZkYjRjZTg1M2U2Li5mMmNlYTBiMWFkNzNmMTRkMjZj
NWUxYmE0NTdjN2ZlMGFjNTkwYmZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9jdXJzb3ItaW5jb25zaXN0ZW5jeS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL2N1cnNvci1pbmNvbnNpc3RlbmN5Lmh0bWwKQEAgLTQsOTEgKzQsNyBAQAog
PHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJv
ZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBjb25zaXN0ZW5jeSBvZiBJbmRleGVk
REIncyBjdXJzb3Igb2JqZWN0cy4iKTsKLQotdGVzdCgpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsK
LSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIub3BlbignY3Vyc29yLWluY29uc2lzdGVuY3knKSIpOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICB2YXIgZGIg
PSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3Mo
KQotewotICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOwotICAgIHNlbGYudHJhbnMg
PSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRC
ZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRB
Ym9ydENhbGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBvcGVuQmFzaWNDdXJzb3I7Ci0K
LSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgdmFyIG9iamVjdFN0b3JlID0g
ZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnYmFzaWNTdG9y
ZScpIik7Ci0gICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCdzb21lVmFsdWUxJywgJ3Nv
bWVLZXkxJykub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7Ci0gICAgZXZhbEFu
ZExvZygib2JqZWN0U3RvcmUuYWRkKCdzb21lVmFsdWUyJywgJ3NvbWVLZXkyJykub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7Ci0gICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUu
YWRkKCdzb21lVmFsdWUzJywgJ3NvbWVLZXkzJykub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrIik7Ci0gICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCdzb21lVmFsdWU0Jywg
J3NvbWVLZXk0Jykub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7Ci0KLX0KLQot
ZnVuY3Rpb24gb3BlbkJhc2ljQ3Vyc29yKCkKLXsKLSAgICBkZWJ1Zygib3BlbkJhc2ljQ3Vyc29y
KCkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnYmFzaWNTdG9y
ZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1
bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gdHJhbnNhY3Rp
b25Db21wbGV0ZTsKLQotICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgic29t
ZUtleTEiKTsKLSAgICBzZWxmLm9iamVjdFN0b3JlID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0
U3RvcmUoJ2Jhc2ljU3RvcmUnKSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZS5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2hl
Y2tDdXJzb3I7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci0gICAgY291bnRlciA9IDE7Ci19Ci0KLXN0b3JlZEN1cnNvciA9IG51bGw7Ci1mdW5jdGlvbiBj
aGVja0N1cnNvcigpCi17Ci0gICAgZGVidWcoIiIpCi0gICAgZGVidWcoImNoZWNrQ3Vyc29yKCki
KTsKLSAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBudWxsKSB7Ci0gICAgICAgIHNob3Vs
ZEJlKCJjb3VudGVyIiwgIjUiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoc3Rv
cmVkQ3Vyc29yID09IG51bGwpCi0gICAgICBzdG9yZWRDdXJzb3IgPSBldmFsQW5kTG9nKCJzdG9y
ZWRDdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICBzaG91bGRCZVRydWUoInN0
b3JlZEN1cnNvciA9PT0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygic3RvcmVkQ3Vyc29yLmtleSIsICJzb21lS2V5IiArIGNvdW50ZXIpOwotICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAic29tZUtleSIg
KyBjb3VudGVyKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInN0b3JlZEN1cnNvci52YWx1
ZSIsICJzb21lVmFsdWUiICsgY291bnRlcik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJl
dmVudC50YXJnZXQucmVzdWx0LnZhbHVlIiwgInNvbWVWYWx1ZSIgKyBjb3VudGVyKTsKLSAgICBj
b3VudGVyKys7Ci0gICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgp
Iik7Ci19Ci0KLWZ1bmN0aW9uIHRyYW5zYWN0aW9uQ29tcGxldGUoKQotewotICAgIGRlYnVnKCJ0
cmFuc2FjdGlvbkNvbXBsZXRlKCkiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi08L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY3Vyc29yLWluY29uc2lzdGVuY3kuanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItaW5kZXgtZGVsZXRlLmh0bWwgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItaW5kZXgtZGVsZXRlLmh0bWwKaW5kZXggMWM2MzAw
NzNmNTczMTliYTU3ZDE3M2FhNzQyYjc5MjhjMTJmNTlhYy4uYWRjYTc4ZWM5NGEyNGU1ZjgwYmY4
ODVkZDExMmVhNzc0MTdmNDk0OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvY3Vyc29yLWluZGV4LWRlbGV0ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2N1cnNvci1pbmRleC1kZWxldGUuaHRtbApAQCAtNCwxMTUgKzQsNyBAQAogPHNj
cmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+
Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBvcGVuQ3Vyc29yLiIp
OwotCi10ZXN0KCk7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZp
eGVzKCk7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdjdXJzb3It
aW5kZXgtZGVsZXRlJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5j
dGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgdmFyIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVy
c2lvbignbmV3IHZlcnNpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lv
blN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb25TdWNjZXNzKCkKLXsKLSAgICBkZWJ1Zygic2V0VmVy
c2lvblN1Y2Nlc3MoKToiKTsKLSAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBl
dmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIp
OwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFu
cy5vbmNvbXBsZXRlID0gb3BlbkN1cnNvcjsKLQotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jlcyhk
Yik7Ci0KLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ3Rlc3QnKSIpOwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmNy
ZWF0ZUluZGV4KCd0ZXN0SW5kZXgnLCAneCcpIik7Ci0KLSAgICBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZS5hZGQoe3g6IDF9LCAnbXlLZXkxJykiKTsKLSAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9y
ZS5hZGQoe3g6IDJ9LCAnbXlLZXkyJykiKTsKLSAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5h
ZGQoe3g6IDN9LCAnbXlLZXkzJykiKTsKLSAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQo
e3g6IDR9LCAnbXlLZXk0JykiKTsKLX0KLQotZnVuY3Rpb24gb3BlbkN1cnNvcigpCi17Ci0gICAg
ZGVidWcoIm9wZW5DdXJzb3IxIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2Fj
dGlvbihbJ3Rlc3QnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICBrZXlSYW5n
ZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQoMSk7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InRyYW5zLm9iamVjdFN0b3JlKCd0ZXN0JykuaW5kZXgoJ3Rlc3RJbmRleCcpLm9wZW5DdXJzb3Io
a2V5UmFuZ2UpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3JTdWNjZXNzOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIGNvdW50ZXIg
PSAxOwotfQotCi1mdW5jdGlvbiBjdXJzb3JTdWNjZXNzKCkKLXsKLSAgICBpZiAoZXZlbnQudGFy
Z2V0LnJlc3VsdCA9PSBudWxsKSB7Ci0gICAgICAgIHNob3VsZEJlKCJjb3VudGVyIiwgIjUiKTsK
LSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCd0ZXN0Jyku
aW5kZXgoJ3Rlc3RJbmRleCcpLm9wZW5DdXJzb3Ioa2V5UmFuZ2UpIik7Ci0gICAgICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gY3Vyc29yRW1wdHk7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIHZhciBk
ZWxldGVSZXF1ZXN0ID0gZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5kZWxldGUoKSIp
OwotICAgIGRlbGV0ZVJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
ICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICJjb3VudGVyKysiKTsKLSAg
ICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKLX0KLQotZnVu
Y3Rpb24gY3Vyc29yRW1wdHkoKQotewotICAgIHNob3VsZEJlTnVsbCgiZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBhZGRPYmplY3Q7Ci19Ci0KLWZ1bmN0aW9u
IGFkZE9iamVjdCgpCi17Ci0gICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihb
J3Rlc3QnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICBvYmplY3RTdG9yZSA9
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3Rlc3QnKSIpOwot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoe3g6IDF9LCAnbXlLZXkx
JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5DdXJzb3IyOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuQ3Vy
c29yMigpCi17Ci0gICAgZGVidWcoIm9wZW5DdXJzb3IyIik7Ci0gICAgZXZhbEFuZExvZygiaW5k
ZXggPSBldmVudC50YXJnZXQuc291cmNlLmluZGV4KCd0ZXN0SW5kZXgnKSIpOwotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJpbmRleC5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZGVsZXRlT2JqZWN0OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBkZWxldGVPYmplY3QoKQotewotICAg
IHNob3VsZEJlTm9uTnVsbChldmVudC50YXJnZXQucmVzdWx0KTsKLSAgICBldmFsQW5kTG9nKCJl
dmVudC50YXJnZXQucmVzdWx0LmRlbGV0ZSgpIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImluZGV4LmdldCgxKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdmVyaWZ5T2JqZWN0RGVs
ZXRlZDsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0K
LQotZnVuY3Rpb24gdmVyaWZ5T2JqZWN0RGVsZXRlZCgpCi17Ci0gICAgc2hvdWxkQmUoImV2ZW50
LnRhcmdldC5yZXN1bHQiLCAidW5kZWZpbmVkIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0K
LQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2N1cnNvci1pbmRleC1kZWxldGUu
anMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3Ita2V5LW9yZGVyLmh0bWwgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3Ita2V5LW9yZGVyLmh0bWwKaW5kZXggM2ExMWU2
OTI5YjljNGJjOWNkYjNjM2FiMjEyYTcwYzYyOWRhNzAwOC4uNDAzMDlkZTQ2ODNlNjY2NzhkYzI3
MGY2NjcyOTY0ZTczMDUzZGI1NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvY3Vyc29yLWtleS1vcmRlci5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2N1cnNvci1rZXktb3JkZXIuaHRtbApAQCAtNCwyMzAgKzQsNyBAQAogPHNjcmlwdCBz
cmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2Ny
aXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIga2V5cyBvcmRlcmluZyBhbmQgcmVh
ZGJhY2sgZnJvbSBjdXJzb3JzLiIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVW
ZW5kb3JQcmVmaXhlcygpOwotCi0gICAgcHJlcGFyZURhdGFiYXNlKCk7Ci19Ci0KLWZ1bmN0aW9u
IHByZXBhcmVEYXRhYmFzZSgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGV2YWxBbmRMb2coIm9w
ZW5yZXEgPSBpbmRleGVkREIub3BlbignY3Vyc29yLWtleS1vcmRlcicpIik7Ci0gICAgb3BlbnJl
cS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgb3BlbnJlcS5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgZXZhbEFuZExvZygiZGIgPSBvcGVucmVxLnJlc3Vs
dCIpOwotICAgICAgICBldmFsQW5kTG9nKCJ2ZXJyZXEgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsK
LSAgICAgICAgdmVycmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAg
ICAgdmVycmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgZXZhbEFuZExv
ZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKLSAgICAgICAgICAgIHZlcnJlcS5y
ZXN1bHQub25jb21wbGV0ZSA9IHBvcHVsYXRlU3RvcmU7Ci0gICAgICAgIH07Ci0gICAgfTsKLX0K
LQotc2VsZi5rZXlzID0gWwotICAgICItSW5maW5pdHkiLAotICAgICItTnVtYmVyLk1BWF9WQUxV
RSIsCi0gICAgIi0xIiwKLSAgICAiLU51bWJlci5NSU5fVkFMVUUiLAotICAgICIwIiwKLSAgICAi
TnVtYmVyLk1JTl9WQUxVRSIsCi0gICAgIjEiLAotICAgICJOdW1iZXIuTUFYX1ZBTFVFIiwKLSAg
ICAiSW5maW5pdHkiLAotCi0gICAgIm5ldyBEYXRlKDApIiwKLSAgICAibmV3IERhdGUoMTAwMCki
LAotICAgICJuZXcgRGF0ZSgxMzE3Mzk5OTMxMDIzKSIsCi0KLSAgICAiJyciLAotICAgICInXHgw
MCciLAotICAgICInYSciLAotICAgICInYWEnIiwKLSAgICAiJ2InIiwKLSAgICAiJ2JhJyIsCi0K
LSAgICAiJ1x4QTInIiwgLy8gVSswMEEyIENFTlQgU0lHTgotICAgICInXHU2QzM0JyIsIC8vIFUr
NkMzNCBDSksgVU5JRklFRCBJREVPR1JBUEggKHdhdGVyKQotICAgICInXHVEODM0XHVERDFFJyIs
IC8vIFUrMUQxMUUgTVVTSUNBTCBTWU1CT0wgRy1DTEVGIChVVEYtMTYgc3Vycm9nYXRlIHBhaXIp
Ci0gICAgIidcdUZGRkQnIiwgLy8gVStGRkZEIFJFUExBQ0VNRU5UIENIQVJBQ1RFUgotCi0gICAg
IltdIiwKLQotICAgICJbLUluZmluaXR5XSIsCi0gICAgIlstTnVtYmVyLk1BWF9WQUxVRV0iLAot
ICAgICJbLTFdIiwKLSAgICAiWy1OdW1iZXIuTUlOX1ZBTFVFXSIsCi0gICAgIlswXSIsCi0gICAg
IltOdW1iZXIuTUlOX1ZBTFVFXSIsCi0gICAgIlsxXSIsCi0gICAgIltOdW1iZXIuTUFYX1ZBTFVF
XSIsCi0gICAgIltJbmZpbml0eV0iLAotCi0gICAgIltuZXcgRGF0ZSgwKV0iLAotICAgICJbbmV3
IERhdGUoMTAwMCldIiwKLSAgICAiW25ldyBEYXRlKDEzMTczOTk5MzEwMjMpXSIsCi0KLSAgICAi
WycnXSIsCi0gICAgIlsnXHgwMCddIiwKLSAgICAiWydhJ10iLAotICAgICJbJ2FhJ10iLAotICAg
ICJbJ2InXSIsCi0gICAgIlsnYmEnXSIsCi0KLSAgICAiWydceEEyJ10iLCAvLyBVKzAwQTIgQ0VO
VCBTSUdOCi0gICAgIlsnXHU2QzM0J10iLCAvLyBVKzZDMzQgQ0pLIFVOSUZJRUQgSURFT0dSQVBI
ICh3YXRlcikKLSAgICAiWydcdUQ4MzRcdUREMUUnXSIsIC8vIFUrMUQxMUUgTVVTSUNBTCBTWU1C
T0wgRy1DTEVGIChVVEYtMTYgc3Vycm9nYXRlIHBhaXIpCi0gICAgIlsnXHVGRkZEJ10iLCAvLyBV
K0ZGRkQgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSCi0KLSAgICAiW1tdXSIsCi0KLSAgICAiW1tdLCBb
XV0iLAotICAgICJbW10sIFtdLCBbXV0iLAotCi0gICAgIltbW11dXSIsCi0gICAgIltbW1tdXV1d
IgotXTsKLQotZnVuY3Rpb24gY29tcGFyZShhLCBiKQotewotICAgIGlmICh0eXBlb2YgYSAhPT0g
dHlwZW9mIGIpIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHN3aXRjaCAo
dHlwZW9mIGEpIHsKLSAgICAgICAgY2FzZSAndW5kZWZpbmVkJzogLy8gTm90IHZhbGlkIGtleXMs
IGJ1dCBjb21wYXJlIGFueXdheS4KLSAgICAgICAgY2FzZSAnYm9vbGVhbic6IC8vIE5vdCB2YWxp
ZCBrZXlzLCBidXQgY29tcGFyZSBhbnl3YXkuCi0gICAgICAgIGNhc2UgJ3N0cmluZyc6Ci0gICAg
ICAgICAgICByZXR1cm4gYSA9PT0gYjsKLSAgICAgICAgY2FzZSAnbnVtYmVyJzoKLSAgICAgICAg
ICAgIGlmIChhID09PSBiKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIChhICE9PSAwKSB8fCAo
MSAvIGEgPT09IDEgLyBiKTsgLy8gMCBpc24ndCAtMAotICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gYSAhPT0gYSAmJiBiICE9PSBiOyAvLyBOYU4gaXMgTmFOCi0g
ICAgICAgICAgICB9Ci0gICAgICAgIGNhc2UgJ29iamVjdCc6Ci0gICAgICAgICAgICBpZiAoYSBp
bnN0YW5jZW9mIERhdGUgJiYgYiBpbnN0YW5jZW9mIERhdGUpIHsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gK2EgPT09ICtiOwotICAgICAgICAgICAgfSBlbHNlIGlmIChhIGluc3RhbmNlb2YgQXJy
YXkgJiYgYiBpbnN0YW5jZW9mIEFycmF5KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGEubGVuZ3Ro
ICE9PSBiLmxlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYS5sZW5n
dGg7IGkrKykgewotICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbXBhcmUoYVtpXSwgYltpXSkp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIEZvciB0aGUgcHVycG9zZXMgb2YgdGhpcyB0
ZXN0LCBvdGhlciBvYmplY3RzIGRvbid0IGNvdW50Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfQot
Ci1mdW5jdGlvbiBwb3B1bGF0ZVN0b3JlKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWco
InBvcHVsYXRpbmcgc3RvcmUuLi4iKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5z
YWN0aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFu
ZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsiKTsKLSAgICB0cmFucy5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVu
ZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIHZhciBjb3VudCA9IDA7Ci0gICAga2V5cy5mb3JF
YWNoKGZ1bmN0aW9uKGtleSkgewotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoIiArIChj
b3VudCsrKSArICIsICIgKyBrZXkgKyAiKSIpOwotICAgIH0pOwotICAgIHRyYW5zLm9uY29tcGxl
dGUgPSBjaGVja1N0b3JlOwotfQotCi1mdW5jdGlvbiBjaGVja1N0b3JlKCkKLXsKLSAgICBkZWJ1
ZygiIik7Ci0gICAgZGVidWcoIml0ZXJhdGluZyBjdXJzb3IuLi4iKTsKLSAgICBldmFsQW5kTG9n
KCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05M
WSkiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScp
OyIpOwotICAgIHRyYW5zLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB0
cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgZXZhbEFuZExvZygi
Y291bnQgPSAwIik7Ci0gICAgY3VycmVxID0gZXZhbEFuZExvZygiY3VycmVxID0gc3RvcmUub3Bl
bkN1cnNvcigpIik7Ci0gICAgY3VycmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLSAgICBjdXJyZXEub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmIChjdXJy
ZXEucmVzdWx0KSB7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IgPSBjdXJyZXEucmVz
dWx0Iik7Ci0gICAgICAgICAgICBzaG91bGRCZVRydWUoImNvbXBhcmUoY3Vyc29yLmtleSwgIiAr
IGtleXNbY291bnRdICsgIikiKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImdldHJlcSA9IHN0
b3JlLmdldChjdXJzb3Iua2V5KSIpOwotICAgICAgICAgICAgZ2V0cmVxLm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgICAgIGdldHJlcS5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbigpIHsKLSAgICAgICAgICAgICAgICBzaG91bGRCZVRydWUoImdldHJlcS5yZXN1bHQgPT09
IGNvdW50KysiKTsKLSAgICAgICAgICAgICAgICBjdXJzb3IuY29udGludWUoKTsKLSAgICAgICAg
ICAgIH07Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzaG91bGRCZVRydWUoImNvdW50
ID09PSBrZXlzLmxlbmd0aCIpOwotICAgICAgICAgICAgZmluaXNoVXAoKTsKLSAgICAgICAgfQot
ICAgIH07Ci19Ci0KLWZ1bmN0aW9uIGZpbmlzaFVwKCkKLXsKLSAgICB0ZXN0S2V5Q29tcGFyZSgp
OwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiB0ZXN0S2V5Q29tcGFyZSgpCi17
Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJ2YWxpZGF0ZSBjb21wYXJlIGZ1bmN0aW9uIik7
Ci0gICAgdmFyIGNhc2VzID0gWwotICAgICAgICAidW5kZWZpbmVkIiwKLSAgICAgICAgInRydWUi
LAotICAgICAgICAiZmFsc2UiLAotICAgICAgICAiMCIsCi0gICAgICAgICItMCIsCi0gICAgICAg
ICIxMjMiLAotICAgICAgICAiSW5maW5pdHkiLAotICAgICAgICAiLUluZmluaXR5IiwKLSAgICAg
ICAgIk5hTiIsCi0gICAgICAgICInJyIsCi0gICAgICAgICInYWJjJyIsCi0gICAgICAgICIneHl6
JyIsCi0gICAgICAgICJuZXcgRGF0ZSgwKSIsCi0gICAgICAgICJuZXcgRGF0ZSgxZTMpIiwKLSAg
ICAgICAgIm5ldyBEYXRlKDFlOSkiLAotICAgICAgICAiW10iLAotICAgICAgICAiWzEyM10iLAot
ICAgICAgICAiWydhYmMnXSIsCi0gICAgICAgICJbMTIzLCAnYWJjJ10iLAotICAgICAgICAiWydh
YmMnLCAxMjNdIiwKLSAgICAgICAgIltbXV0iLAotICAgICAgICAiW1sxMjNdXSIsCi0gICAgICAg
ICJbWydhYmMnXV0iLAotICAgICAgICAiW1sxMjNdLCAnYWJjJ10iLAotICAgICAgICAiW1sxMjNd
LCAxMjNdIgotICAgIF07Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNhc2VzLmxlbmd0aDsg
KytpKSB7Ci0gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgY2FzZXMubGVuZ3RoOyArK2opIHsK
LSAgICAgICAgICAgIGlmIChpID09PSBqKSB7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVl
KCJjb21wYXJlKCIgKyBjYXNlc1tpXSArICIsICIgKyBjYXNlc1tqXSArICIpIik7Ci0gICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHNob3VsZEJlRmFsc2UoImNvbXBhcmUoIiAr
IGNhc2VzW2ldICsgIiwgIiArIGNhc2VzW2pdICsgIikiKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgIH0KLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvY3Vyc29yLWtleS1vcmRlci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1w
cmltYXJ5LWtleS1vcmRlci5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vy
c29yLXByaW1hcnkta2V5LW9yZGVyLmh0bWwKaW5kZXggYTdjMzVlNzliOTI5YTQ1M2Q0YTNhODI2
MTNkZTg4ZTI0MWMzYWZhZS4uM2YxOTNhYmI0Y2ViMmZlMTFmZTE1MzBiMWJhNzE5YjhjOGFhZTBl
ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXByaW1h
cnkta2V5LW9yZGVyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vy
c29yLXByaW1hcnkta2V5LW9yZGVyLmh0bWwKQEAgLTEsMTA4ICsxLDEwIEBACiA8aHRtbD4KIDxo
ZWFkPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyI+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFy
ZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlv
bigiVGVzdCBJbmRleGVkREIgcHJpbWFyeSBrZXkgb3JkZXJpbmcgYW5kIHJlYWRiYWNrIGZyb20g
Y3Vyc29ycy4iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4
ZXMoKTsKLQotICAgIHByZXBhcmVEYXRhYmFzZSgpOwotfQotCi1mdW5jdGlvbiBwcmVwYXJlRGF0
YWJhc2UoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBldmFsQW5kTG9nKCJvcGVuUmVxdWVzdCA9
IGluZGV4ZWREQi5vcGVuKCdjdXJzb3ItcHJpbWFyeS1rZXktb3JkZXInKSIpOwotICAgIG9wZW5S
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICBvcGVuUmVxdWVz
dC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgZXZhbEFuZExvZygiZGIgPSBvcGVu
UmVxdWVzdC5yZXN1bHQiKTsKLSAgICAgICAgZXZhbEFuZExvZygidmVyc2lvbkNoYW5nZVJlcXVl
c3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICAgICAgdmVyc2lvbkNoYW5nZVJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICB2ZXJzaW9uQ2hhbmdl
UmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGV2YWxBbmRMb2co
InN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKLSAgICAgICAgICAgIGV2
YWxBbmRMb2coImluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4JywgJ2luZGV4S2V5Jyki
KTsKLQotICAgICAgICAgICAgdmVyc2lvbkNoYW5nZVJlcXVlc3QucmVzdWx0Lm9uY29tcGxldGUg
PSBwb3B1bGF0ZVN0b3JlOwotICAgICAgICB9OwotICAgIH07Ci19Ci0KLXNlbGYua2V5cyA9IFsK
LSAgICAiLUluZmluaXR5IiwKLSAgICAiLTIiLAotICAgICItMSIsCi0gICAgIjAiLAotICAgICIx
IiwKLSAgICAiMiIsCi0gICAgIkluZmluaXR5IiwKLQotICAgICInMCciLAotICAgICInMSciLAot
ICAgICInMiciLAotICAgICInQSciLAotICAgICInQiciLAotICAgICInQyciLAotICAgICInYSci
LAotICAgICInYiciLAotICAgICInYyciCi1dOwotCi0KLWZ1bmN0aW9uIHBvcHVsYXRlU3RvcmUo
KQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygicG9wdWxhdGluZyBzdG9yZS4uLiIpOwot
ICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNh
Y3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVj
dFN0b3JlKCdzdG9yZScpOyIpOwotICAgIHRyYW5zLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0g
ICAgdmFyIGNvdW50ID0gMDsKLSAgICB2YXIgaW5kZXhLZXkgPSAwOwotICAgIHZhciBrZXlzID0g
c2VsZi5rZXlzLnNsaWNlKCk7Ci0gICAga2V5cy5yZXZlcnNlKCk7Ci0gICAga2V5cy5mb3JFYWNo
KGZ1bmN0aW9uKGtleSkgewotICAgICAgICB2YXIgdmFsdWUgPSB7IGluZGV4S2V5OiBpbmRleEtl
eSwgY291bnQ6IGNvdW50KysgfTsKLSAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCIgKyBK
U09OLnN0cmluZ2lmeSh2YWx1ZSkgKyAiLCAiICsga2V5ICsgIikiKTsKLSAgICB9KTsKLSAgICB0
cmFucy5vbmNvbXBsZXRlID0gY2hlY2tTdG9yZTsKLX0KLQotZnVuY3Rpb24gY2hlY2tTdG9yZSgp
Ci17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJpdGVyYXRpbmcgY3Vyc29yLi4uIik7Ci0g
ICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2Fj
dGlvbi5SRUFEX09OTFkpIik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RT
dG9yZSgnc3RvcmUnKTsiKTsKLSAgICBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmluZGV4KCdp
bmRleCcpOyIpOwotICAgIHRyYW5zLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgY3Vyc29y
UmVxdWVzdCA9IGV2YWxBbmRMb2coImN1cnNvclJlcXVlc3QgPSBpbmRleC5vcGVuQ3Vyc29yKCki
KTsKLSAgICBldmFsQW5kTG9nKCJjb3VudCA9IDAiKTsKLSAgICB2YXIgaW5kZXhLZXkgPSAwOwot
ICAgIGN1cnNvclJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAg
IGN1cnNvclJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmIChjdXJz
b3JSZXF1ZXN0LnJlc3VsdCkgewotICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yID0gY3Vy
c29yUmVxdWVzdC5yZXN1bHQiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5Iiwg
U3RyaW5nKGluZGV4S2V5KSk7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlL
ZXkiLCBzZWxmLmtleXNbY291bnQrK10pOwotICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzaG91bGRCZVRydWUoImNvdW50ID09PSBr
ZXlzLmxlbmd0aCIpOwotICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgICAgIH0KLSAg
ICB9OwotfQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9j
dXJzb3ItcHJpbWFyeS1rZXktb3JkZXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3It
cmV2ZXJzZS1idWcuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1y
ZXZlcnNlLWJ1Zy5odG1sCmluZGV4IDFhNjYxYzQ2ZTAwODIzZDk2MWY1NzVlNzk1MTA1OTUyN2M1
NWY3MDMuLmViZWY1OTM4ODA5NDc2YTQwNjBhM2FmZDUxNGEwNGQwN2MyZWMzYzMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1yZXZlcnNlLWJ1Zy5odG1s
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1yZXZlcnNlLWJ1Zy5o
dG1sCkBAIC00LDEwNyArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+
PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0
IEluZGV4ZWREQiBrZXlzIG9yZGVyaW5nIGFuZCByZWFkYmFjayBmcm9tIGN1cnNvcnMuIik7Ci0K
LWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBw
cmVwYXJlRGF0YWJhc2UoKTsKLX0KLQotZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKCkKLXsKLSAg
ICBkZWJ1ZygiIik7Ci0gICAgZXZhbEFuZExvZygib3BlbnJlcSA9IGluZGV4ZWREQi5vcGVuKCdj
dXJzb3ItcmV2ZXJzZS1idWcnKSIpOwotICAgIG9wZW5yZXEub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotICAgIG9wZW5yZXEub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAg
ICAgIGV2YWxBbmRMb2coImRiID0gb3BlbnJlcS5yZXN1bHQiKTsKLSAgICAgICAgZXZhbEFuZExv
ZygidmVycmVxID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgICAgIHZlcnJlcS5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgIHZlcnJlcS5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbigpIHsKLSAgICAgICAgICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0gICAg
ICAgICAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUo
J3N0b3JlJykiKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdp
bmRleCcsICcnKSIpOwotICAgICAgICAgICAgdmVycmVxLnJlc3VsdC5vbmNvbXBsZXRlID0gcG9w
dWxhdGVTdG9yZTsKLSAgICAgICAgfTsKLSAgICB9OwotfQotCi1mdW5jdGlvbiBwb3B1bGF0ZVN0
b3JlKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInBvcHVsYXRpbmcgc3RvcmUuLi4i
KTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRy
YW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5v
YmplY3RTdG9yZSgnc3RvcmUnKTsiKTsKLSAgICB0cmFucy5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNr
OwotCi0gICAgZXZhbEFuZExvZygic3RvcmUucHV0KDEsIDEpIik7Ci0gICAgZXZhbEFuZExvZygi
c3RvcmUucHV0KDIsIDIpIik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUucHV0KDMsIDMpIik7Ci0g
ICAgdHJhbnMub25jb21wbGV0ZSA9IHRlc3RDdXJzb3I7Ci19Ci0KLXZhciB0ZXN0cyA9IFsKLSAg
ICAgICAgICAgICAgICB7dXBwZXJCb3VuZDogNywgb3BlbjogZmFsc2UsIGV4cGVjdGVkOiAzfSwK
LSAgICAgICAgICAgICAgICB7dXBwZXJCb3VuZDogNywgb3BlbjogdHJ1ZSwgIGV4cGVjdGVkOiAz
fSwKLSAgICAgICAgICAgICAgICB7dXBwZXJCb3VuZDogMywgb3BlbjogZmFsc2UsIGV4cGVjdGVk
OiAzfSwKLSAgICAgICAgICAgICAgICB7dXBwZXJCb3VuZDogMywgb3BlbjogdHJ1ZSwgIGV4cGVj
dGVkOiAyfQotICAgICAgICAgICAgXTsKLQotZnVuY3Rpb24gdGVzdEN1cnNvcigpCi17Ci0gICAg
ZGVidWcoInRlc3RDdXJzb3IoKSIpOwotCi0gICAgaWYgKHRlc3RzLmxlbmd0aCA9PT0gMCkgewot
ICAgICAgICBkZWJ1ZygiTm8gbW9yZSB0ZXN0cy4iKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB0ZXN0ID0gdGVzdHMuc2hpZnQoKTsKLQot
ICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNh
Y3Rpb24uUkVBRF9PTkxZKSIpOwotICAgIHRyYW5zLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0g
ICAgdHJhbnMub25jb21wbGV0ZSA9IHRlc3RDdXJzb3I7Ci0gICAgZXZhbEFuZExvZygic3RvcmUg
PSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsiKTsKLSAgICBldmFsQW5kTG9nKCJpbmRleCA9
IHN0b3JlLmluZGV4KCdpbmRleCcpOyIpOwotCi0gICAgdmFyIHRlc3RGdW5jdGlvbiA9IGZ1bmN0
aW9uKCkgewotICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7Ci0gICAgICAgIGlmIChjdXJzb3IgPT09IG51bGwpIHsKLSAgICAgICAgICAgIGRlYnVnKCJj
dXJzb3Igc2hvdWxkIG5vdCBiZSBudWxsIik7Ci0gICAgICAgICAgICBmYWlsKCk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIs
ICJ0ZXN0LmV4cGVjdGVkIik7Ci0gICAgICAgIGlmICgidmFsdWUiIGluIGN1cnNvcikKLSAgICAg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAidGVzdC5leHBlY3RlZCIpOwotICAgICAg
ICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAidGVzdC5leHBlY3RlZCIpOwotCi0gICAg
ICAgIC8vIExldCB0aGUgdHJhbnNhY3Rpb24gZmluaXNoLgotICAgIH0KLQotICAgIGRlYnVnKCJ1
cHBlckJvdW5kOiAiICsgdGVzdC51cHBlckJvdW5kICsgIiBvcGVuOiAiICsgdGVzdC5vcGVuICsg
IiBleHBlY3RlZDogIiArIHRlc3QuZXhwZWN0ZWQpOwotICAgIHN0b3JlUmVxID0gZXZhbEFuZExv
Zygic3RvcmVSZXEgPSBzdG9yZS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQodGVz
dC51cHBlckJvdW5kLCB0ZXN0Lm9wZW4pLCBJREJDdXJzb3IuUFJFVikiKTsKLSAgICBzdG9yZVJl
cS5vbnN1Y2Nlc3MgPSB0ZXN0RnVuY3Rpb247Ci0KLSAgICBpbmRleFJlcSA9IGV2YWxBbmRMb2co
ImluZGV4UmVxID0gaW5kZXgub3BlbkN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKHRlc3Qu
dXBwZXJCb3VuZCwgdGVzdC5vcGVuKSwgSURCQ3Vyc29yLlBSRVYpIik7Ci0gICAgaW5kZXhSZXEu
b25zdWNjZXNzID0gdGVzdEZ1bmN0aW9uOwotCi0gICAgaW5kZXhLZXlSZXEgPSBldmFsQW5kTG9n
KCJpbmRleEtleVJlcSA9IGluZGV4Lm9wZW5LZXlDdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3Vu
ZCh0ZXN0LnVwcGVyQm91bmQsIHRlc3Qub3BlbiksIElEQkN1cnNvci5QUkVWKSIpOwotICAgIGlu
ZGV4S2V5UmVxLm9uc3VjY2VzcyA9IHRlc3RGdW5jdGlvbjsKLX0KLQotdGVzdCgpOwotCi08L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY3Vyc29yLXJldmVyc2UtYnVnLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3Itc2tpcC1kZWxldGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3Itc2tpcC1kZWxldGVkLmh0bWwKaW5kZXggNTFhY2Qz
NGQ2NDVlYmRlMTM2YjcyMmI0MDJjZWY5M2U4YWZlNjI4Mi4uYTBjZGJiY2FiMWU4M2IzZTk5N2Vi
NTFhMTMzMWRjZDllMjk2OTE0MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvY3Vyc29yLXNraXAtZGVsZXRlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2N1cnNvci1za2lwLWRlbGV0ZWQuaHRtbApAQCAtNCwyMDAgKzQsNyBAQAogPHNj
cmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+
Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBjdXJzb3Igc2tpcHMg
ZGVsZXRlZCBlbnRyaWVzLiIpOwotCi12YXIgbmFtZXMgPSBbJ0FscGhhJywgJ0JyYXZvJywgJ0No
YXJsaWUnLCAnRGVsdGEnLCAnRWNobycsICdGb3h0cm90JywgJ0dvbGYnLAotICAgICAgICAgICAg
ICdIb3RlbCcsICdJbmRpYScsICdKdWxpZXQnLCAnS2lsbycsICdMaW1hJywgJ01pa2UnLCAnTm92
ZW1iZXInLAotICAgICAgICAgICAgICdPc2NhcicsICdQYXBhJywgJ1F1ZWJlYycsICdSb21lbycs
ICdTaWVycmEnLCAnVGFuZ28nLCAnVW5pZm9ybScsCi0gICAgICAgICAgICAgJ1ZpY3RvcicsICdX
aGlza2V5JywgJ1gtcmF5JywgJ1lhbmtlZScsICdadWx1J107Ci0KLXRlc3QoKTsKLQotZnVuY3Rp
b24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2N1cnNvci1za2lwLWRlbGV0ZWQnKSIpOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsK
LSAgICB2YXIgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc2V0VmVy
c2lvblN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOwotICAg
IHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsK
LSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9ydCA9
IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBiYXNpY0N1
cnNvclRlc3Q7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgdmFyIG9i
amVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9y
ZSgnc3RvcmUnLCB7a2V5UGF0aDogJ2lkJ30pIik7Ci0gICAgZXZhbEFuZExvZygib2JqZWN0U3Rv
cmUuY3JlYXRlSW5kZXgoJ25hbWVJbmRleCcsICduYW1lJykiKTsKLSAgICByZXNldE9iamVjdFN0
b3JlKGZ1bmN0aW9uKCkge30pOwotfQotCi12YXIgc2lsZW50RXJyb3JIYW5kbGVyID0gZnVuY3Rp
b24oKSB7IGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IH0KLQotZnVuY3Rpb24gcmVzZXRPYmplY3RT
dG9yZShjYWxsYmFjaykKLXsKLSAgICBkZWJ1ZygiXG5yZXNldE9iamVjdFN0b3JlKCk6Iik7Ci0g
ICAgaWYgKGNhbGxiYWNrID09PSB1bmRlZmluZWQpCi0gICAgICAgIGNhbGxiYWNrID0gZnVuY3Rp
b24gKCkge307Ci0KLSAgICB2YXIgb2JqZWN0U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3Rv
cmUnKTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKQotICAgICAg
ICBvYmplY3RTdG9yZS5kZWxldGUoaSkub25lcnJvciA9IHNpbGVudEVycm9ySGFuZGxlcjsKLSAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKQotICAgICAgICBvYmplY3RT
dG9yZS5hZGQoe2lkOiBpLCBuYW1lOiBuYW1lc1tpXX0pLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLQotICAgIGRlYnVnKCIiKTsKLSAgICBjYWxsYmFjaygpOwotfQotCi1mdW5j
dGlvbiBjb250YWlucyhhcnIsIG9iaikKLXsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5s
ZW5ndGg7IGkrKykgewotICAgICAgICBpZiAoYXJyW2ldID09IG9iaikKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZhciBjdXJzb3I7Ci12
YXIgZGVsZXRlZDsKLXZhciBzZWVuOwotCi1mdW5jdGlvbiB0ZXN0Q3Vyc29yKGRlbGV0ZUxpc3Qs
IGNyZWF0ZUN1cnNvckNvbW1hbmQsIGNhbGxiYWNrKQotewotICAgIGRlYnVnKCJcbnRlc3RDdXJz
b3IoKToiKTsKLSAgICBkZWxldGVkID0gW107Ci0gICAgc2VlbiA9IFtdOwotCi0gICAgLy8gQ3Jl
YXRlIHRoZSBjdXJzb3IuCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coY3JlYXRlQ3Vyc29yQ29t
bWFuZCk7Ci0KLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgaWYgKGV2ZW50
LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkgewotICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGhh
dmUgc2VlbiBldmVyeSBub24tZGVsZXRlZCBpdGVtLgotICAgICAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgICAgIGlmIChjb250YWlu
cyhkZWxldGVkLCBpKSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAg
ICAgICAgICBpZiAoIWNvbnRhaW5zKHNlZW4sIGkpKQotICAgICAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJDdXJzb3IgZGlkIG5vdCBzZWUgaXRlbSB3aXRoIGlkOiAiICsgaSk7Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSB1c2VkIGV2ZXJ5IHJ1bGUgaW4g
fGRlbGV0ZUxpc3R8LgotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZWxldGVMaXN0
Lmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb250YWlucyhzZWVuLCBkZWxl
dGVMaXN0W2ldLmlkKSkKLSAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGVsZXRlTGlz
dCBydWxlIHdpdGggaWQ6ICIgKyBkZWxldGVMaXN0W2ldLmlkICsgIiB3YXMgbmV2ZXIgdXNlZC4i
KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZGVidWcoIiIpOwotICAgICAgICAgICAg
Y2FsbGJhY2soKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGN1
cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Ci0gICAgICAgIGRlYnVnKGV2ZW50LnRhcmdldC5y
ZXN1bHQudmFsdWUuaWQgKyAiOiAiICsgZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS5uYW1lKTsK
LSAgICAgICAgc2Vlbi5wdXNoKGV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUuaWQpOwotCi0gICAg
ICAgIC8vIE1ha2Ugc3VyZSB3ZSBkb24ndCBzZWUgYW55IGRlbGV0ZWQgaXRlbXMuCi0gICAgICAg
IGlmIChjb250YWlucyhkZWxldGVkLCBldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLmlkKSkKLSAg
ICAgICAgICAgIHRlc3RGYWlsZWQoIkN1cnNvciBoaXQgcHJldmlvdXNseSBkZWxldGVkIGVsZW1l
bnQuIik7Ci0KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZWxldGVMaXN0Lmxlbmd0aDsg
aSsrKSB7Ci0gICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS5pZCA9PSBk
ZWxldGVMaXN0W2ldLmlkKSB7Ci0gICAgICAgICAgICAgICAgLy8gRGVsZXRlIG9iamVjdHMgdGFy
Z2V0ZWQgYnkgdGhpcyBpZC4KLSAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0cyA9IGRlbGV0ZUxp
c3RbaV0udGFyZ2V0czsKLSAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHRhcmdl
dHMubGVuZ3RoOyBqKyspIHsKLSAgICAgICAgICAgICAgICAgICAgZGVsZXRlZC5wdXNoKHRhcmdl
dHNbal0pOwotICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpLmRlbGV0ZSgiICsgdGFyZ2V0c1tqXSArICIp
Iik7Ci0gICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotICAgICAgICAgICAgICAgICAgICBpZiAoaiA9PSB0YXJnZXRzLmxlbmd0aCAt
IDEpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KCkgeyBjdXJzb3IuY29udGludWUoKTsgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBjdXJzb3Iu
Y29udGludWUoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGJhc2ljQ3Vyc29yVGVzdCgpCi17Ci0g
ICAgZGVidWcoImJhc2ljQ3Vyc29yVGVzdCgpIik7Ci0KLSAgICBldmFsQW5kTG9nKCJ0cmFucyA9
IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsK
LSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnMu
b25jb21wbGV0ZSA9IHRyYW5zYWN0aW9uQ29tcGxldGU7Ci0KLSAgICB2YXIgZGVsZXRlcyA9IFt7
aWQ6IDEsIHRhcmdldHM6IFswXX0sCi0gICAgICAgICAgICAgICAgICAge2lkOiAyLCB0YXJnZXRz
OiBbbmFtZXMubGVuZ3RoIC0gMV19LAotICAgICAgICAgICAgICAgICAgIHtpZDogMywgdGFyZ2V0
czogWzUsNiw3XX0sCi0gICAgICAgICAgICAgICAgICAge2lkOiAxMCwgdGFyZ2V0czogWzEwXX0s
Ci0gICAgICAgICAgICAgICAgICAge2lkOiAxMiwgdGFyZ2V0czogWzEzXX0sCi0gICAgICAgICAg
ICAgICAgICAge2lkOiAxNSwgdGFyZ2V0czogWzE0XX0sCi0gICAgICAgICAgICAgICAgICAge2lk
OiAyMCwgdGFyZ2V0czogWzE3LDE4XX0KLSAgICAgICAgICAgICAgICAgICBdOwotCi0gICAgdGVz
dEN1cnNvcihkZWxldGVzLCAidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykub3BlbkN1cnNvcihJ
REJLZXlSYW5nZS5sb3dlckJvdW5kKDApKSIsIGZ1bmN0aW9uKCkgeyByZXNldE9iamVjdFN0b3Jl
KHJldmVyc2VDdXJzb3JUZXN0KTsgfSk7Ci19Ci0KLWZ1bmN0aW9uIHJldmVyc2VDdXJzb3JUZXN0
KCkKLXsKLSAgICBkZWJ1ZygicmV2ZXJzZUN1cnNvclRlc3QoKToiKTsKLQotICAgIHZhciBkZWxl
dGVzID0gW3tpZDogMjQsIHRhcmdldHM6IFtuYW1lcy5sZW5ndGggLSAxXX0sCi0gICAgICAgICAg
ICAgICAgICAge2lkOiAyMywgdGFyZ2V0czogWzBdfSwKLSAgICAgICAgICAgICAgICAgICB7aWQ6
IDIyLCB0YXJnZXRzOiBbMjAsIDE5LCAxOF19LAotICAgICAgICAgICAgICAgICAgIHtpZDogMTUs
IHRhcmdldHM6IFsxNV19LAotICAgICAgICAgICAgICAgICAgIHtpZDogMTMsIHRhcmdldHM6IFsx
Ml19LAotICAgICAgICAgICAgICAgICAgIHtpZDogMTAsIHRhcmdldHM6IFsxMV19LAotICAgICAg
ICAgICAgICAgICAgIHtpZDogNSwgdGFyZ2V0czogWzcsOF19Ci0gICAgICAgICAgICAgICAgICAg
XTsKLQotCi0gICAgdGVzdEN1cnNvcihkZWxldGVzLCAidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3Jl
Jykub3BlbkN1cnNvcihJREJLZXlSYW5nZS5sb3dlckJvdW5kKDApLCBJREJDdXJzb3IuUFJFViki
LCBmdW5jdGlvbigpIHsgcmVzZXRPYmplY3RTdG9yZShpbmRleEN1cnNvclRlc3QpOyB9KTsKLX0K
LQotZnVuY3Rpb24gaW5kZXhDdXJzb3JUZXN0KCkKLXsKLSAgICBkZWJ1ZygiaW5kZXhDdXJzb3JU
ZXN0KCk6Iik7Ci0KLSAgICB2YXIgZGVsZXRlcyA9IFt7aWQ6IDEsIHRhcmdldHM6IFswXX0sCi0g
ICAgICAgICAgICAgICAgICAge2lkOiAyLCB0YXJnZXRzOiBbbmFtZXMubGVuZ3RoIC0gMV19LAot
ICAgICAgICAgICAgICAgICAgIHtpZDogMywgdGFyZ2V0czogWzUsNiw3XX0sCi0gICAgICAgICAg
ICAgICAgICAge2lkOiAxMCwgdGFyZ2V0czogWzEwXX0sCi0gICAgICAgICAgICAgICAgICAge2lk
OiAxMiwgdGFyZ2V0czogWzEzXX0sCi0gICAgICAgICAgICAgICAgICAge2lkOiAxNSwgdGFyZ2V0
czogWzE0XX0sCi0gICAgICAgICAgICAgICAgICAge2lkOiAyMCwgdGFyZ2V0czogWzE3LDE4XX0K
LSAgICAgICAgICAgICAgICAgICBdOwotCi0gICAgdGVzdEN1cnNvcihkZWxldGVzLCAidHJhbnMu
b2JqZWN0U3RvcmUoJ3N0b3JlJykuaW5kZXgoJ25hbWVJbmRleCcpLm9wZW5DdXJzb3IoSURCS2V5
UmFuZ2UubG93ZXJCb3VuZCgnQWxwaGEnKSkiLCBmdW5jdGlvbigpIHsgfSk7Ci19Ci0KLWZ1bmN0
aW9uIHRyYW5zYWN0aW9uQ29tcGxldGUoKQotewotICAgIGRlYnVnKCJ0cmFuc2FjdGlvbkNvbXBs
ZXRlKCk6Iik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2N1cnNvci1za2lwLWRlbGV0ZWQuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9jdXJzb3ItdXBkYXRlLXZhbHVlLWFyZ3VtZW50LXJlcXVpcmVkLmh0bWwgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItdXBkYXRlLXZhbHVlLWFyZ3VtZW50LXJlcXVp
cmVkLmh0bWwKaW5kZXggYzNmZGM3ZWM4YWFiY2ExZjBiY2I0NmM3NGZkMjlmN2U5ZjdkNzIzZS4u
Njg1OWM3Y2RmNjRjZmQyZTExZjkwOWFiYmM2OWIxYTE1YWVkNzQ2MiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXVwZGF0ZS12YWx1ZS1hcmd1bWVudC1y
ZXF1aXJlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci11
cGRhdGUtdmFsdWUtYXJndW1lbnQtcmVxdWlyZWQuaHRtbApAQCAtMSw4NCArMSwxMCBAQAotPCFE
T0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVz
Y3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGN1cnNvci51cGRhdGUgcmVxdWlyZWQgYXJndW1lbnRz
Iik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0K
LSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJN
eSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9w
ZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3Vj
Y2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0K
LQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBl
dmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdGVzdEdy
b3VwMTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0K
LQotZnVuY3Rpb24gdGVzdEdyb3VwMSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRi
KTsKLQotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUo
J2F1dG9JbmNyZW1lbnQnLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7Ci0KLSAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewotICAgICAgdGVzdEdyb3VwMigpOwot
ICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdEdyb3VwMigpCi17Ci0gICAga2V5cyA9IGV2YWxBbmRM
b2coImtleXMgPSBbMSwgLTEsIDAsIDEwLCAyMDAwLCAncScsICd6JywgJ3R3bycsICdiJywgJ2En
XTsiKTsKLQotICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAwOyIpOwotCi0g
ICAgZm9yIChpIGluIGtleXMpIHsKLSAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gb2JqZWN0U3RvcmUuYWRkKCdmb28nLCBrZXlzW2ldKTsiKTsKLSAgICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBpZiAoKytrZXlJbmRleCA9PSBrZXlzLmxlbmd0
aCkgewotICAgICAgICAgIHRlc3RHcm91cDMoKTsKLSAgICAgICAgfQotICAgICAgfTsKLSAgICB9
Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDMoKQotewotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9
IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAg
ICAgIHNob3VsZFRocm93KCJjdXJzb3IudXBkYXRlKCk7Iik7Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJjdXJzb3Igd2FzIG51bGwiKTsKLSAgICAgICAgfQotICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY3Vyc29yLXVwZGF0ZS12YWx1ZS1hcmd1bWVudC1yZXF1
aXJlZC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXVwZGF0ZS5odG1sIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXVwZGF0ZS5odG1sCmluZGV4IDk2NTRj
NjI1MGY4MTBmMTUwMTQ1YjJkODY5NzBiNzE0NjZlNjMxN2QuLmE0NmE3MGQ0NzBmNGMwZDUwMWNj
MmJlYWQzYmZhYWQ3YjhjMjczZWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2N1cnNvci11cGRhdGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9jdXJzb3ItdXBkYXRlLmh0bWwKQEAgLTQsMjIyICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4K
LQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgY3Vyc29yIHVwZGF0ZS4iKTsKLQotdGVz
dCgpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignY3Vyc29yLXVwZGF0ZScp
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nl
c3MoKQotewotICAgIHZhciBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJz
aW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb25TdWNjZXNzOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlv
biBzZXRWZXJzaW9uU3VjY2VzcygpCi17Ci0gICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6
Iik7Ci0gICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKLSAgICB0cmFucy5v
bmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9
IG9wZW5CYXNpY0N1cnNvcjsKLQotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAg
ICB2YXIgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9i
amVjdFN0b3JlKCdiYXNpY1N0b3JlJykiKTsKLSAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5h
ZGQoJ215VmFsdWUxJywgJ215S2V5MScpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
ayIpOwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnbXlWYWx1ZTInLCAnbXlLZXky
Jykub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7Ci0gICAgZXZhbEFuZExvZygi
b2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlMycsICdteUtleTMnKS5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2siKTsKLSAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ215VmFs
dWU0JywgJ215S2V5NCcpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOwotCi0g
ICAgdmFyIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVP
YmplY3RTdG9yZSgnYXV0b0luY3JlbWVudFN0b3JlJywge2F1dG9JbmNyZW1lbnQ6IHRydWV9KSIp
OwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnZm9vMScpLm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgn
Zm9vMicpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOwotICAgIGV2YWxBbmRM
b2coIm9iamVjdFN0b3JlLmFkZCgnZm9vMycpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjayIpOwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnZm9vNCcpLm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOwotCi0gICAgdmFyIG9iamVjdFN0b3JlID0gZXZh
bEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgna2V5UGF0aFN0b3Jl
Jywge2tleVBhdGg6ICdpZCd9KSIpOwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmNyZWF0
ZUluZGV4KCdudW1iZXJJbmRleCcsICdudW1iZXInKSIpOwotICAgIGV2YWxBbmRMb2coIm9iamVj
dFN0b3JlLmFkZCh7bnVtYmVyOiAxLCBpZDogMX0pLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCh7bnVtYmVyOiAyLCBp
ZDogMn0pLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOwotICAgIGV2YWxBbmRM
b2coIm9iamVjdFN0b3JlLmFkZCh7bnVtYmVyOiAzLCBpZDogM30pLm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCh7bnVt
YmVyOiA0LCBpZDogNH0pLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOwotfQot
Ci1mdW5jdGlvbiBvcGVuQmFzaWNDdXJzb3IoKQotewotICAgIGRlYnVnKCJvcGVuQmFzaWNDdXJz
b3IoKSIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydiYXNpY1N0
b3JlJywgJ2F1dG9JbmNyZW1lbnRTdG9yZScsICdrZXlQYXRoU3RvcmUnXSwgSURCVHJhbnNhY3Rp
b24uUkVBRF9XUklURSkiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2Fs
bGJhY2s7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IHRyYW5zYWN0aW9uQ29tcGxldGU7Ci0KLSAg
ICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQoIm15S2V5MSIpOwotICAgIHNlbGYu
b2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYmFzaWNTdG9yZScp
Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLm9wZW5DdXJzb3Ioa2V5
UmFuZ2UpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBiYXNpY1VwZGF0ZUN1cnNvcjsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICBjb3VudGVy
ID0gMTsKLX0KLQotZnVuY3Rpb24gYmFzaWNVcGRhdGVDdXJzb3IoKQotewotICAgIGRlYnVnKCJi
YXNpY1VwZGF0ZUN1cnNvcigpIik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5zb3VyY2Ui
LCAib2JqZWN0U3RvcmUiKTsKLSAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBudWxsKSB7
Ci0gICAgICAgIHNob3VsZEJlKCJjb3VudGVyIiwgIjUiKTsKLSAgICAgICAgY291bnRlciA9IDE7
Ci0KLSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdiYXNp
Y1N0b3JlJykub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBiYXNpY0NoZWNrQ3Vyc29yOwotICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LnVwZGF0ZSgnbXlVcGRhdGVkVmFsdWUn
ICsgY291bnRlcisrKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7IGV2
YWxBbmRMb2coImV2ZW50LnRhcmdldC5zb3VyY2UuY29udGludWUoKSIpOyB9Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGJhc2lj
Q2hlY2tDdXJzb3IoKQotewotICAgIGRlYnVnKCJiYXNpY0NoZWNrQ3Vyc29yKCkiKTsKLSAgICBp
ZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBudWxsKSB7Ci0gICAgICAgIHNob3VsZEJlKCJjb3Vu
dGVyIiwgIjUiKTsKLSAgICAgICAgY291bnRlciA9IDE7Ci0KLSAgICAgICAga2V5UmFuZ2UgPSBJ
REJLZXlSYW5nZS5sb3dlckJvdW5kKDEpOwotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
dHJhbnMub2JqZWN0U3RvcmUoJ2F1dG9JbmNyZW1lbnRTdG9yZScpLm9wZW5DdXJzb3Ioa2V5UmFu
Z2UpIik7Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYXV0b0luY3JlbWVudFVwZGF0ZUN1
cnNvcjsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2
ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgIm15S2V5IiArIGNvdW50ZXIpOwotICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZSIsICJteVVwZGF0ZWRWYWx1
ZSIgKyBjb3VudGVyKyspOwotICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29u
dGludWUoKSIpOwotfQotCi1mdW5jdGlvbiBhdXRvSW5jcmVtZW50VXBkYXRlQ3Vyc29yKCkKLXsK
LSAgICBkZWJ1ZygiYXV0b0luY3JlbWVudFVwZGF0ZUN1cnNvcigpIik7Ci0gICAgaWYgKGV2ZW50
LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkgewotICAgICAgICBzaG91bGRCZSgiY291bnRlciIsICI1
Iik7Ci0gICAgICAgIGNvdW50ZXIgPSAxOwotCi0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJ0cmFucy5vYmplY3RTdG9yZSgnYXV0b0luY3JlbWVudFN0b3JlJykub3BlbkN1cnNvcihrZXlS
YW5nZSkiKTsKLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhdXRvSW5jcmVtZW50Q2hlY2tD
dXJzb3I7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImV2
ZW50LnRhcmdldC5yZXN1bHQudXBkYXRlKCdteVVwZGF0ZWRGb28nICsgY291bnRlcisrKSIpOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7IGV2YWxBbmRMb2coImV2ZW50LnRh
cmdldC5zb3VyY2UuY29udGludWUoKSIpOyB9Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGF1dG9JbmNyZW1lbnRDaGVja0N1cnNv
cigpCi17Ci0gICAgZGVidWcoImF1dG9JbmNyZW1lbnRDaGVja0N1cnNvcigpIik7Ci0gICAgaWYg
KGV2ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkgewotICAgICAgICBzaG91bGRCZSgiY291bnRl
ciIsICI1Iik7Ci0gICAgICAgIGNvdW50ZXIgPSAxOwotCi0gICAgICAgIGtleVJhbmdlID0gSURC
S2V5UmFuZ2UubG93ZXJCb3VuZCgxKTsKLSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRy
YW5zLm9iamVjdFN0b3JlKCdrZXlQYXRoU3RvcmUnKS5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOwot
ICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGtleVBhdGhVcGRhdGVDdXJzb3I7Ci0gICAgICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgImNv
dW50ZXIiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQu
dmFsdWUiLCAibXlVcGRhdGVkRm9vIiArIGNvdW50ZXIrKyk7Ci0gICAgZXZhbEFuZExvZygiZXZl
bnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7Ci19Ci0KLWZ1bmN0aW9uIGtleVBhdGhVcGRh
dGVDdXJzb3IoKQotewotICAgIGRlYnVnKCJrZXlQYXRoVXBkYXRlQ3Vyc29yKCkiKTsKLSAgICBp
ZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBudWxsKSB7Ci0gICAgICAgIHNob3VsZEJlKCJjb3Vu
dGVyIiwgIjUiKTsKLSAgICAgICAgY291bnRlciA9IDE7Ci0KLSAgICAgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdrZXlQYXRoU3RvcmUnKS5vcGVuQ3Vyc29yKGtl
eVJhbmdlKSIpOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGtleVBhdGhDaGVja0N1cnNv
cjsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJldmVu
dC50YXJnZXQucmVzdWx0LnVwZGF0ZSh7aWQ6IDEwMCArIGNvdW50ZXIsIG51bWJlcjogMTAwICsg
Y291bnRlcn0pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0KLSAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC51cGRhdGUoe2lkOiBjb3VudGVy
LCBudW1iZXI6IDEwMCArIGNvdW50ZXIrK30pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbigpIHsgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnNvdXJjZS5jb250aW51ZSgpIikg
fTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQot
ZnVuY3Rpb24ga2V5UGF0aENoZWNrQ3Vyc29yKCkKLXsKLSAgICBkZWJ1Zygia2V5UGF0aENoZWNr
Q3Vyc29yKCkiKTsKLSAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBudWxsKSB7Ci0gICAg
ICAgIHNob3VsZEJlKCJjb3VudGVyIiwgIjUiKTsKLSAgICAgICAgY291bnRlciA9IDE7Ci0KLSAg
ICAgICAga2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKDEwMSk7Ci0gICAgICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgna2V5UGF0aFN0b3JlJykuaW5k
ZXgoJ251bWJlckluZGV4Jykub3BlbktleUN1cnNvcihrZXlSYW5nZSkiKTsKLSAgICAgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBrZXlDdXJzb3I7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc2hv
dWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgImNvdW50ZXIiKTsKLSAgICBzaG91bGRC
ZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS5pZCIsICJjb3VudGVyIik7Ci0gICAgc2hvdWxk
QmUoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUubnVtYmVyIiwgKGNvdW50ZXIgKyAxMDApLnRv
U3RyaW5nKCkpOwotICAgIGNvdW50ZXIrKzsKLSAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQu
cmVzdWx0LmNvbnRpbnVlKCkiKTsKLX0KLQotZnVuY3Rpb24ga2V5Q3Vyc29yKCkKLXsKLSAgICBk
ZWJ1Zygia2V5Q3Vyc29yKCkiKTsKLSAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBudWxs
KSB7Ci0gICAgICAgIHNob3VsZEJlKCJjb3VudGVyIiwgIjUiKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICJjb3VudGVy
ICsgMTAwIik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIs
ICJjb3VudGVyIik7Ci0KLSAgICB0cnkgewotICAgICAgICBkZWJ1ZygiZXZlbnQudGFyZ2V0LnJl
c3VsdC51cGRhdGUoe2lkOiBjb3VudGVyLCBudW1iZXI6IGNvdW50ZXIgKyAyMDB9KSIpOwotICAg
ICAgICBldmVudC50YXJnZXQucmVzdWx0LnVwZGF0ZSh7aWQ6IGNvdW50ZXIsIG51bWJlcjogY291
bnRlciArIDIwMH0pOwotICAgICAgICB0ZXN0RmFpbGVkKCJFeHBlY3RlZCBleGNlcHRpb24uIik7
Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICBjb2RlID0gZS5jb2RlOwotICAgICAgICBzaG91
bGRCZSgiY29kZSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9FUlIiKTsKLSAg
ICB9Ci0KLSAgICBjb3VudGVyKys7Ci0gICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgp
OwotfQotCi1mdW5jdGlvbiB0cmFuc2FjdGlvbkNvbXBsZXRlKCkKLXsKLSAgICBkZWJ1ZygidHJh
bnNhY3Rpb25Db21wbGV0ZSgpIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2N1cnNvci11cGRhdGUuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9kYXRhLWNvcnJ1cHRpb24uaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2RhdGEtY29ycnVwdGlvbi5odG1sCmluZGV4IDVjNjIyZTdjNzg0MmU3MjI2NWZlZDAy
Yjc1N2UwODUxNTRmMGYwZjIuLjk1OTdjNWIzNTM1ZmJjZmZkOTVkNzcxYzlhODc5ZmI4OTY5MWIx
OGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGEtY29ycnVw
dGlvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGEtY29ycnVw
dGlvbi5odG1sCkBAIC00LDcxICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVk
LmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24o
IlRlc3QgdGhhdCBkYXRhIGluc2VydGVkIGludG8gSW5kZXhlZERCIGRvZXMgbm90IGdldCBjb3Jy
dXB0ZWQgb24gZGlzay4iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9y
UHJlZml4ZXMoKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2Rh
dGEtY29ycnVwdGlvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVu
Y3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOwotICAg
IHNlbGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lv
blN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOwotICAgIHNl
bGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAg
ICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVu
ZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBhZGREYXRhOwot
Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIGV2YWxBbmRMb2coImRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotfQotCi12YXIgdGVzdERhdGUgPSBuZXcg
RGF0ZSgnRmVicnVhcnkgMjQsIDE5NTUgMTI6MDA6MDgnKTsKLQotZnVuY3Rpb24gYWRkRGF0YSgp
Ci17Ci0gICAgZGVidWcoImFkZERhdGEoKToiKTsKLSAgICB2YXIgdHJhbnNhY3Rpb24gPSBldmFs
QW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIElEQlRy
YW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgdmFyIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpLmFkZCh7eDogdGVz
dERhdGV9LCAna2V5JykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLSAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZ2V0RGF0YTsKLX0KLQotZnVu
Y3Rpb24gZ2V0RGF0YSgpCi17Ci0gICAgZGVidWcoImFkZERhdGEoKToiKTsKLSAgICB2YXIgdHJh
bnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnc3Rv
cmVOYW1lJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkiKTsKLSAgICB2YXIgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1l
JykuZ2V0KCdrZXknKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZG9DaGVjazsKLX0KLQotZnVuY3Rpb24g
ZG9DaGVjaygpCi17Ci0gICAgc2hvdWxkQmVUcnVlKCJldmVudC50YXJnZXQucmVzdWx0LngudG9T
dHJpbmcoKSA9PSB0ZXN0RGF0ZS50b1N0cmluZygpIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19
Ci0KLXRlc3QoKTsKLQotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZGF0YS1j
b3JydXB0aW9uLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtYmFzaWNzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1iYXNpY3MuaHRtbAppbmRl
eCA3MWU1ZTU2ODRmNGYxNDlkMWJkODBiYjEzOGQ3MWNmZmU5YTBmOWQ5Li4xMGVjYjA1NDRlMjY5
ZjExNzEzN2ZmOTc3Njg1MDFiMTMxOTViOTQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1iYXNpY3MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1iYXNpY3MuaHRtbApAQCAtNCwxMjEgKzQsNyBAQAogPHNj
cmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+
Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCB0aGUgYmFzaWNzIG9mIEluZGV4ZWREQidz
IElEQkRhdGFiYXNlLiIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQ
cmVmaXhlcygpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdk
YXRhYmFzZS1iYXNpY3MnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1
bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBl
dmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0
VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVy
c2lvblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb25TdWNjZXNzKCkKLXsKLSAgICBkZWJ1Zygic2V0
VmVyc2lvblN1Y2Nlc3MoKToiKTsKLSAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVs
bCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLQotICAg
IGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBkZWJ1ZygiVGVzdGluZyBzZXRWZXJz
aW9uLiIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCdkYi5zZXRWZXJzaW9uKCJ2ZXJzaW9u
IGEiKScpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvbkFnYWluOwotICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBz
ZXRWZXJzaW9uQWdhaW4oKQotewotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCdkYi5zZXRWZXJz
aW9uKCJ2ZXJzaW9uIGIiKScpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlT2JqZWN0
U3RvcmU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19
Ci0KLWZ1bmN0aW9uIGNyZWF0ZU9iamVjdFN0b3JlKCkKLXsKLSAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImRiLnZlcnNpb24iLCAidmVyc2lvbiBiIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJkYi5uYW1lIiwgImRhdGFiYXNlLWJhc2ljcyIpOwotICAgIHNob3VsZEJlKCJkYi5vYmpl
Y3RTdG9yZU5hbWVzIiwgIltdIik7Ci0gICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMu
bGVuZ3RoIiwgIjAiKTsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlu
cygnJykiLCAiZmFsc2UiKTsKLSAgICBzaG91bGRCZU51bGwoImRiLm9iamVjdFN0b3JlTmFtZXNb
MF0iKTsKLSAgICBzaG91bGRCZU51bGwoImRiLm9iamVjdFN0b3JlTmFtZXMuaXRlbSgwKSIpOwot
Ci0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCdkYi5jcmVhdGVPYmplY3RTdG9yZSgidGVz
dDEyMyIpJyk7Ci0gICAgY2hlY2tPYmplY3RTdG9yZSgpOwotICAgIGNvbW1pdEFuZENvbnRpbnVl
KCk7Ci19Ci0KLWZ1bmN0aW9uIGNoZWNrT2JqZWN0U3RvcmUoKQotewotICAgIHNob3VsZEJlKCJk
Yi5vYmplY3RTdG9yZU5hbWVzIiwgIlsndGVzdDEyMyddIik7Ci0gICAgc2hvdWxkQmUoImRiLm9i
amVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjEiKTsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3Rv
cmVOYW1lcy5jb250YWlucygnJykiLCAiZmFsc2UiKTsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0
U3RvcmVOYW1lcy5jb250YWlucygndGVzdDQ1NicpIiwgImZhbHNlIik7Ci0gICAgc2hvdWxkQmUo
ImRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJ3Rlc3QxMjMnKSIsICJ0cnVlIik7Ci19Ci0K
LWZ1bmN0aW9uIGNvbW1pdEFuZENvbnRpbnVlKCkKLXsKLSAgICBzZWxmLnNldFRpbWVvdXQodGVz
dFNldFZlcnNpb25BYm9ydCwgMCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RTZXRWZXJzaW9uQWJvcnQo
KQotewotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCdkYi5zZXRWZXJzaW9uKCJ2ZXJzaW9uIGMi
KScpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5vdGhlck9iamVjdFN0b3JlOwot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5j
dGlvbiBjcmVhdGVBbm90aGVyT2JqZWN0U3RvcmUoKQotewotICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygiZGIudmVyc2lvbiIsICJ2ZXJzaW9uIGMiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoImRiLm5hbWUiLCAiZGF0YWJhc2UtYmFzaWNzIik7Ci0gICAgY2hlY2tPYmplY3RTdG9yZSgp
OwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCdkYi5jcmVhdGVPYmplY3RTdG9yZSgi
dGVzdDQ1NiIpJyk7Ci0gICAgdmFyIHNldFZlcnNpb25UcmFucyA9IGV2YWxBbmRMb2coInNldFZl
cnNpb25UcmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInNl
dFZlcnNpb25UcmFucyAhPT0gbnVsbCIpOwotICAgIHNldFZlcnNpb25UcmFucy5vbmNvbXBsZXRl
ID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7Ci0gICAgc2V0VmVyc2lvblRyYW5zLm9uYWJv
cnQgPSBjaGVja01ldGFkYXRhOwotICAgIHNldFZlcnNpb25UcmFucy5hYm9ydCgpOwotfQotCi1m
dW5jdGlvbiBjaGVja01ldGFkYXRhKCkKLXsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRi
LnZlcnNpb24iLCAidmVyc2lvbiBiIik7Ci0gICAgY2hlY2tPYmplY3RTdG9yZSgpOwotICAgIHRl
c3RDbG9zZSgpOwotfQotCi1mdW5jdGlvbiB0ZXN0Q2xvc2UoKQotewotICAgIGV2YWxBbmRMb2co
ImRiLmNsb3NlKCkiKTsKLSAgICBkZWJ1ZygiTm93IHRoYXQgdGhlIGNvbm5lY3Rpb24gaXMgY2xv
c2VkLCB0cmFuc2FjdGlvbiBjcmVhdGlvbiBzaG91bGQgZmFpbCIpOwotICAgIGV2YWxBbmRFeHBl
Y3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKCd0ZXN0MTIzJykiLCAiSURCRGF0YWJhc2VFeGNl
cHRpb24uTk9UX0FMTE9XRURfRVJSIik7Ci0gICAgZGVidWcoIkNhbGwgdHdpY2UsIG1ha2Ugc3Vy
ZSBpdCdzIGhhcm1sZXNzIik7Ci0gICAgZXZhbEFuZExvZygiZGIuY2xvc2UoKSIpOwotICAgIGZp
bmlzaEpTVGVzdCgpOwotfQotCi10ZXN0KCk7Ci0KLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL2RhdGFiYXNlLWJhc2ljcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4K
IDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFi
YXNlLW5hbWUtdW5kZWZpbmVkLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9k
YXRhYmFzZS1uYW1lLXVuZGVmaW5lZC5odG1sCmluZGV4IDc4MDAyODZkOWYxYzEwMzY1MTA1MmJj
MDMyMDc3ODVjZDJjNGExMDUuLmI2ZjkxNDQ1ZTNmMjE2N2EwZDhhMmQ1NTYyOWI4NWQ5MDY0OGE4
ZGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLW5h
bWUtdW5kZWZpbmVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0
YWJhc2UtbmFtZS11bmRlZmluZWQuaHRtbApAQCAtMSwyNSArMSwxMCBAQAotPCFET0NUWVBFIGh0
bWw+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVk
LmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24o
IlRlc3QgSW5kZXhlZERCIHVuZGVmaW5lZCBhcyByZWNvcmQgdmFsdWUiKTsKLQotZnVuY3Rpb24g
dGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICBzaG91bGRUaHJvdygi
aW5kZXhlZERCLm9wZW4oKTsiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7
Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9kYXRhYmFzZS1uYW1lLXVuZGVm
aW5lZC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLW9kZC1uYW1lcy5odG1sIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2Utb2RkLW5hbWVzLmh0bWwKaW5k
ZXggZjMzMTI5MmYzNWE5ZGNkMzQ5ZTE5YzU1YzQxYWE0MWE0Y2YzOTFiMy4uMTNlZWQ5ZTk3N2M5
ZDZjYTdiZjgwMTMxMzQ2NzZjNGIyYjE5OWYwNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvZGF0YWJhc2Utb2RkLW5hbWVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2Utb2RkLW5hbWVzLmh0bWwKQEAgLTEsNDEgKzEsMTAg
QEAKLTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+
Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBvZGQgdmFsdWUgZGF0YXR5cGVzIik7Ci0K
LWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICB0
ZXN0RGF0YSA9IFt7IGRlc2NyaXB0aW9uOiAnbnVsbCcsICAgICAgICAgICAgICAgbmFtZTogJ1x1
MDAwMCcgfSwKLSAgICAgICAgICAgICAgICB7IGRlc2NyaXB0aW9uOiAnZmFpaHUnLCAgICAgICAg
ICAgICAgbmFtZTogJ1x1ZDgwMFx1ZGY0NicgfSwKLSAgICAgICAgICAgICAgICB7IGRlc2NyaXB0
aW9uOiAndW5wYWlyZWQgc3Vycm9nYXRlJywgbmFtZTogJ1x1ZDgwMCcgfSwKLSAgICAgICAgICAg
ICAgICB7IGRlc2NyaXB0aW9uOiAnZmZmZScsICAgICAgICAgICAgICAgbmFtZTogJ1x1ZmZmZScg
fSwKLSAgICAgICAgICAgICAgICB7IGRlc2NyaXB0aW9uOiAnZmZmZicsICAgICAgICAgICAgICAg
bmFtZTogJ1x1ZmZmZicgfSwKLSAgICAgICAgICAgICAgICB7IGRlc2NyaXB0aW9uOiAnbGluZSBz
ZXBhcmF0b3InLCAgICAgbmFtZTogJ1x1MjAyOCcgfQotICAgIF07Ci0gICAgbmV4dFRvT3BlbiA9
IDA7Ci0gICAgb3Blbk5leHREYXRhYmFzZSgpOwotfQotCi1mdW5jdGlvbiBvcGVuTmV4dERhdGFi
YXNlKCkKLXsKLSAgICBkZWJ1Zygib3BlbmluZyBhIGRhdGFiYXNlIG5hbWVkICIgKyB0ZXN0RGF0
YVtuZXh0VG9PcGVuXS5kZXNjcmlwdGlvbik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImlu
ZGV4ZWREQi5vcGVuKHRlc3REYXRhW25leHRUb09wZW5dLm5hbWUsIHRlc3REYXRhW25leHRUb09w
ZW5dLmRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gKytuZXh0VG9PcGVuIDwgdGVzdERh
dGEubGVuZ3RoID8gb3Blbk5leHREYXRhYmFzZSA6IGZpbmlzaEpTVGVzdDsKLX0KLQotCi10ZXN0
KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9kYXRhYmFzZS1vZGQtbmFt
ZXMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1xdW90YS5odG1sIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtcXVvdGEuaHRtbAppbmRleCAzMzc2ODky
NGY1N2NiNTkwYmIwMjBiZTI0NTY2NzdhMTlhYjMxMDUyLi5kZjYzNzZlZmRiOGI1YWFmYjI4ODRm
ZjA1M2NhOTQxMjBjZmZkNGM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9kYXRhYmFzZS1xdW90YS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2RhdGFiYXNlLXF1b3RhLmh0bWwKQEAgLTQsMTAzICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4K
LQotZGVzY3JpcHRpb24oIlRlc3RzIEluZGV4ZWREQidzIHF1b3RhIGVuZm9yY2luZyBtZWNoYW5p
c20uIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdkYXRhYmFzZS1xdW90
YScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1
Y2Nlc3MoKQotewotICAgIHNlbGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcg
dmVyc2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVu
Y3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2Vz
cygpOiIpOwotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0gICAgdHJh
bnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxl
dGUgPSBjaGVja1F1b3RhRW5mb3JjaW5nOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRi
KTsKLQotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGIudmVyc2lvbiIsICJuZXcgdmVyc2lv
biIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGIubmFtZSIsICJkYXRhYmFzZS1xdW90
YSIpOwotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzIiwgIltdIik7Ci0gICAgc2hv
dWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjAiKTsKLSAgICBzaG91bGRCZSgi
ZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucygnJykiLCAiZmFsc2UiKTsKLQotICAgIG9iamVj
dFN0b3JlID0gZXZhbEFuZExvZygnZGIuY3JlYXRlT2JqZWN0U3RvcmUoInRlc3QxMjMiKScpOwot
ICAgIGNoZWNrT2JqZWN0U3RvcmUoKTsKLX0KLQotZnVuY3Rpb24gY2hlY2tPYmplY3RTdG9yZSgp
Ci17Ci0gICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMiLCAiWyd0ZXN0MTIzJ10iKTsK
LSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMSIpOwotICAgIHNo
b3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCcnKSIsICJmYWxzZSIpOwotICAg
IHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCd0ZXN0NDU2JykiLCAiZmFs
c2UiKTsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucygndGVzdDEy
MycpIiwgInRydWUiKTsKLX0KLQotZnVuY3Rpb24gY2hlY2tRdW90YUVuZm9yY2luZygpCi17Ci0g
ICAgdmFyIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3Rlc3Qx
MjMnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICB0cmFucy5vbmFib3J0ID0g
dGVzdENvbXBsZXRlOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQ29tcGxldGVD
YWxsYmFjazsKLSAgICBkZWJ1ZygiQ3JlYXRpbmcgJ2RhdGEnIHdoaWNoIGNvbnRhaW5zIDY0SyBv
ZiBkYXRhIik7Ci0gICAgc2VsZi5kYXRhID0gIlgiOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
MTY7IGkrKykKLSAgICAgICAgZGF0YSArPSBkYXRhOwotICAgIHNob3VsZEJlKCJkYXRhLmxlbmd0
aCIsICI2NTUzNiIpOwotICAgIHNlbGYuZGF0YUFkZGVkID0gMDsKLSAgICBzZWxmLnN0b3JlID0g
ZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgndGVzdDEyMycpIik7Ci0gICAg
YWRkRGF0YSgpOwotfQotCi1mdW5jdGlvbiBhZGREYXRhKCkKLXsKLSAgICBpZiAoZGF0YUFkZGVk
IDwgNSAqIDEwMjQgKiAxMDI0KSB7Ci0gICAgICAgIGlmIChkYXRhQWRkZWQgPiAwKQotICAgICAg
ICAgICAgc3RvcmUgPSBldmVudC50YXJnZXQuc291cmNlOwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IHRlc3RGYWlsZWQoImFkZGVkIG1vcmUgdGhhbiBxdW90YSIpOwotICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBkYXRhQWRkZWQgKz0gNjU1MzY7Ci0g
ICAgcmVxdWVzdCA9IHN0b3JlLmFkZCh7eDogZGF0YX0sIGRhdGFBZGRlZCk7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBhZGREYXRhOwotICAgIHJlcXVlc3Qub25lcnJvciA9IGxvZ0Vycm9yOwot
fQotCi1mdW5jdGlvbiBsb2dFcnJvcigpCi17Ci0gICAgZGVidWcoIkVycm9yIGZ1bmN0aW9uIGNh
bGxlZDogKCIgKyBldmVudC50YXJnZXQuZXJyb3JDb2RlICsgIikgIiArIGV2ZW50LnRhcmdldC53
ZWJraXRFcnJvck1lc3NhZ2UpOwotICAgIGV2YWxBbmRMb2coImV2ZW50LnByZXZlbnREZWZhdWx0
KCkiKTsKLX0KLQotZnVuY3Rpb24gdGVzdENvbXBsZXRlKCkKLXsKLSAgICB0ZXN0UGFzc2VkKCJB
ZGRpbmcgZGF0YSBmYWlsZWQgZHVlIHRvIHF1b3RhIGVycm9yLiBEYXRhIGFkZGVkIHdhcyBhYm91
dCAiICsgTWF0aC5yb3VuZChkYXRhQWRkZWQgLyAxMDI0IC8gMTAyNCkgKyAiIE1CIik7Ci0gICAg
ZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXRlc3QoKTsKLQotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvZGF0YWJhc2UtcXVvdGEuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+
CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxl
dGUtY2xvc2VkLWRhdGFiYXNlLW9iamVjdC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvZGVsZXRlLWNsb3NlZC1kYXRhYmFzZS1vYmplY3QuaHRtbAppbmRleCA0YWI1MGQyMDgy
OTU1MDE3MWRhOGExYWRhZmY1ZGQ3ZDcyNTY1ZGMyLi43ZmRmNThlMWQzZjhiMjE3NGE3MzI0Nzg4
YzY4Y2FmNjc4NDk3ZGU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9kZWxldGUtY2xvc2VkLWRhdGFiYXNlLW9iamVjdC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZS1jbG9zZWQtZGF0YWJhc2Utb2JqZWN0Lmh0bWwKQEAgLTQs
NTYgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0Pgog
PC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiRW5zdXJlIHRoYXQgSURC
RGF0YWJhc2Ugb2JqZWN0cyBhcmUgZGVsZXRlZCB3aGVuIHRoZXJlIGFyZSBubyByZXRhaW5pbmcg
cGF0aHMgbGVmdCIpOwotCi0KLWZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgcmVtb3ZlVmVuZG9yUHJl
Zml4ZXMoKTsKLSAgICBvcGVuREJDb25uZWN0aW9uKCk7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5EQkNv
bm5lY3Rpb24oKQotewotICAgIGV2YWxBbmRMb2coInNlbGYuc3RhdGUgPSAnc3RhcnRpbmcnIik7
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdkZWxldGUtY2xvc2Vk
LWRhdGFiYXNlLW9iamVjdCcpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2Vz
czsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQot
ZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIHNlbGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9
IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIC8vIE9wZW4gYSBzZWNvbmQgY29ubmVjdGlv
biB0byB0aGUgc2FtZSBkYXRhYmFzZS4KLSAgICB2YXIgcmVxdWVzdDIgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIub3BlbignZGVsZXRlLWNsb3NlZC1kYXRhYmFzZS1vYmplY3QnKSIpOwotICAgIHJl
cXVlc3QyLm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzMjsKLSAgICByZXF1ZXN0Mi5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzMigpCi17
Ci0gICAgZGVidWcoIlNlY29uZCBjb25uZWN0aW9uIHN1Y2Nlc3NmdWxseSBlc3RhYmxpc2hlZC4i
KTsKLSAgICAvLyBBZnRlciBsZWF2aW5nIHRoaXMgZnVuY3Rpb24sIHRoZXJlIGFyZSBubyByZW1h
aW5pbmcgcmVmZXJlbmNlcyB0byB0aGUKLSAgICAvLyBzZWNvbmQgY29ubmVjdGlvbiwgc28gaXQg
c2hvdWxkIGdldCBkZWxldGVkLgotICAgIHNldFRpbWVvdXQoc2V0VmVyc2lvbiwgMik7Ci19Ci0K
LWZ1bmN0aW9uIHNldFZlcnNpb24oKQotewotICAgIGdjKCk7Ci0gICAgZGVidWcoImNhbGxpbmcg
c2V0VmVyc2lvbigpIC0gY2FsbGJhY2sgc2hvdWxkIHJ1biBpbW1lZGlhdGVseSIpOwotICAgIHZh
ciB2ZXJzaW9uQ2hhbmdlUmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ3ZlcnNp
b24gMScpIik7Ci0gICAgdmVyc2lvbkNoYW5nZVJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhw
ZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7Ci0gICAgdmVyc2lvbkNoYW5nZVJlcXVlc3Qub25zdWNjZXNz
ID0gZmluaXNoSlNUZXN0OwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2RlbGV0ZS1jbG9zZWQtZGF0YWJhc2Utb2JqZWN0LmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvZGVsZXRlLXJhbmdlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9kZWxldGUtcmFuZ2UuaHRtbAppbmRleCA0ZmEyZjIzMTAxN2QxZmQ4MTEyYmQ2MDE4MTY3
OTI4YzNjMTU0ZWJhLi5jODAwNDExOGRkZDU1YzhjMTlhZTc4NTM2OTMwYjQ3Y2NiNzA3MjFjIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGUtcmFuZ2UuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGUtcmFuZ2UuaHRtbApA
QCAtNCw5NSArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3Jp
cHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4
ZWREQidzIElEQk9iamVjdFN0b3JlLmRlbGV0ZShJREJLZXlSYW5nZSkgbWV0aG9kLiIpOwotCi1m
dW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgZXZh
bEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgnZGVsZXRlLXJhbmdl
JykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgZXZhbEFuZExvZygi
cmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKCdkZWxldGUtcmFuZ2UnKSIpOwotICAgICAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJkYiA9IHJl
cXVlc3QucmVzdWx0Iik7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0
VmVyc2lvbignMScpIik7Ci0gICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLSAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24g
KCkgewotICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coInRyYW5zID0gcmVxdWVzdC5yZXN1bHQi
KTsKLSAgICAgICAgICAgICAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJh
Y2s7Ci0KLSAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgn
c3RvcmUnKSIpOwotCi0gICAgICAgICAgICAgICAgdHJhbnMub25jb21wbGV0ZSA9IHJ1blRlc3Rz
OwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGNoZWNr
S2V5cyhleHBlY3RlZCwgY2FsbGJhY2spCi17Ci0gICAgZGVidWcoImdldHRpbmcga2V5cyBmcm9t
IHN0b3JlLi4uIik7Ci0gICAgZGVidWcoImV4cGVjdDogIiArIEpTT04uc3RyaW5naWZ5KGV4cGVj
dGVkKSk7Ci0gICAgdmFyIGtleXMgPSBbXTsKLSAgICByZXF1ZXN0ID0gc3RvcmUub3BlbkN1cnNv
cigpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewotICAgICAgICBjdXJzb3IgPSByZXF1
ZXN0LnJlc3VsdDsKLSAgICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICAgICAga2V5cy5wdXNo
KGN1cnNvci5rZXkpOwotICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBkZWJ1ZygiYWN0dWFsOiAiICsgSlNPTi5zdHJpbmdpZnkoa2V5
cykpOwotICAgICAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KGV4cGVjdGVkKSA9PT0gSlNPTi5z
dHJpbmdpZnkoa2V5cykpIHsKLSAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJNYXRjaCEiKTsK
LSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiRG9uJ3Qg
bWF0Y2ghIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9OwotfQotCi12YXIgdGVz
dHMgPSBbCi0gICAgeyBsb3dlcjogMywgdXBwZXI6IDgsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVy
T3BlbjogZmFsc2UsIGV4cGVjdGVkOiBbMSwgMiwgOSwgMTBdfSwKLSAgICB7IGxvd2VyOiAzLCB1
cHBlcjogOCwgbG93ZXJPcGVuOiB0cnVlLCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogWzEs
IDIsIDMsIDksIDEwXX0sCi0gICAgeyBsb3dlcjogMywgdXBwZXI6IDgsIGxvd2VyT3BlbjogZmFs
c2UsIHVwcGVyT3BlbjogdHJ1ZSwgZXhwZWN0ZWQ6IFsxLCAyLCA4LCA5LCAxMF19LAotICAgIHsg
bG93ZXI6IDMsIHVwcGVyOiA4LCBsb3dlck9wZW46IHRydWUsIHVwcGVyT3BlbjogdHJ1ZSwgZXhw
ZWN0ZWQ6IFsxLCAyLCAzLCA4LCA5LCAxMF19Ci1dOwotCi1mdW5jdGlvbiBydW5UZXN0cygpCi17
Ci0gICAgZnVuY3Rpb24gbmV4dFRlc3QoKSB7Ci0gICAgICAgIHZhciB0ZXN0ID0gdGVzdHMuc2hp
ZnQoKTsKLSAgICAgICAgaWYgKHRlc3QpIHsKLSAgICAgICAgICAgIGRlYnVnKCIiKTsKLSAgICAg
ICAgICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJh
bnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coInN0b3JlID0g
dHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKLSAgICAgICAgICAgIGZvciAoaSA9IDE7IGkg
PD0gMTA7ICsraSkgewotICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgiICsg
aSArICIsIiArIGkgKyAiKSIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZXZhbEFuZExv
Zygic3RvcmUuZGVsZXRlKElEQktleVJhbmdlLmJvdW5kKCIgKwotICAgICAgICAgICAgICAgIHRl
c3QubG93ZXIgKyAiLCAiICsKLSAgICAgICAgICAgICAgICB0ZXN0LnVwcGVyICsgIiwgIiArCi0g
ICAgICAgICAgICAgICAgdGVzdC5sb3dlck9wZW4gKyAiLCAiICsKLSAgICAgICAgICAgICAgICB0
ZXN0LnVwcGVyT3BlbiArICIpKSIpOwotICAgICAgICAgICAgY2hlY2tLZXlzKHRlc3QuZXhwZWN0
ZWQsIG5leHRUZXN0KTsKLSAgICAgICAgICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJv
cnRDYWxsYmFjazsKLSAgICAgICAgICAgIHRyYW5zLm9uY29tcGxldGUgPSBuZXh0VGVzdDsKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotICAgIG5leHRUZXN0KCk7Ci19Ci0KLXRlc3QoKTsK
LQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RlbGV0ZS1yYW5nZS5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZUluZGV4Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9kZWxldGVJbmRleC5odG1sCmluZGV4IDRlNzYxZmVlNmEwZmNjMzM5MWFiMjcy
Yjk5Mjc0OTJmMTI2MWUyNzMuLmIyY2E0NDM1ZTVlM2YxZDI1OGNjMWI0YzY5ZDMxYTgzYzRhZGYw
ZDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZUluZGV4
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlSW5kZXguaHRt
bApAQCAtMSw1OSArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgogPHNj
cmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4K
IDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGRlbGV0ZUlu
ZGV4IG1ldGhvZCIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVm
aXhlcygpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignZGVsZXRl
SW5kZXgnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9w
ZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJz
aW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHR3aWRkbGVJbmRleGVzOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlv
biB0d2lkZGxlSW5kZXhlcygpCi17Ci0gICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFu
c2FjdGlvbiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgdHJhbnNhY3Rpb24ub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1
bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gcG9z
dFR3aWRkbGluZzsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0
U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdm
b28nKTsiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJvYmplY3RTdG9yZS5kZWxldGVJ
bmRleCgnZmlyc3QnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7Ci0g
ICAgc2hvdWxkVGhyb3coIm9iamVjdFN0b3JlLmRlbGV0ZUluZGV4KCkiKTsgLy8gVHlwZUVycm9y
OiBub3QgZW5vdWdoIGFyZ3VtZW50cy4KLSAgICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0g
b2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ2ZpcnN0JywgJ2ZpcnN0Jyk7Iik7Ci0gICAgZXZhbEFu
ZEV4cGVjdEV4Y2VwdGlvbigib2JqZWN0U3RvcmUuZGVsZXRlSW5kZXgoJ0ZJUlNUJykiLCAiSURC
RGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOwotICAgIGluZGV4ID0gZXZhbEFuZExv
ZygiaW5kZXggPSBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgnc2Vjb25kJywgJ3NlY29uZCcpOyIp
OwotICAgIHJldHVyblZhbHVlID0gZXZhbEFuZExvZygicmV0dXJuVmFsdWUgPSBvYmplY3RTdG9y
ZS5kZWxldGVJbmRleCgnZmlyc3QnKTsiKTsKLSAgICBzaG91bGRCZSgicmV0dXJuVmFsdWUiLCAi
dW5kZWZpbmVkIik7Ci19Ci0KLWZ1bmN0aW9uIHBvc3RUd2lkZGxpbmcoKQotewotICAgIGV2YWxB
bmRFeHBlY3RFeGNlcHRpb24oImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdiYXInKTsiLCAiSURCRGF0
YWJhc2VFeGNlcHRpb24uTk9UX0FMTE9XRURfRVJSIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2Vw
dGlvbigib2JqZWN0U3RvcmUuZGVsZXRlSW5kZXgoJ3NlY29uZCcpIiwgIklEQkRhdGFiYXNlRXhj
ZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwot
fQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9kZWxldGVJ
bmRleC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZU9iamVjdFN0b3JlLW5hbWUtYXJn
dW1lbnQtcmVxdWlyZWQuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0
ZU9iamVjdFN0b3JlLW5hbWUtYXJndW1lbnQtcmVxdWlyZWQuaHRtbAppbmRleCBkZTI5NjYzZTFi
ZmI4ODNmZTVhZWJmZTZmNjM0MTE2MGU5N2IxY2M2Li4xN2E4OWVkYWRmNjc1NDViMTNkZmMyMGU5
Yjc5ZjczNjA5MGI4OWY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9kZWxldGVPYmplY3RTdG9yZS1uYW1lLWFyZ3VtZW50LXJlcXVpcmVkLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlT2JqZWN0U3RvcmUtbmFtZS1hcmd1bWVu
dC1yZXF1aXJlZC5odG1sCkBAIC0xLDQ2ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KIDxodG1s
PgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2Ny
aXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRl
eGVkREIgZGVsZXRlT2JqZWN0U3RvcmUgcmVxdWlyZWQgYXJndW1lbnQiKTsKLQotZnVuY3Rpb24g
dGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxm
LmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2Ui
OwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlw
dGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVu
U3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lv
bignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9iamVj
dFN0b3JlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
fQotCi1mdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKLXsKLSAgICBkZWxl
dGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgc2hvdWxkVGhyb3coImRiLmRlbGV0ZU9iamVj
dFN0b3JlKCk7Iik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZGVsZXRlT2JqZWN0U3RvcmUtbmFtZS1hcmd1
bWVudC1yZXF1aXJlZC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZU9iamVjdFN0b3Jl
LW51bGwtbmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlT2Jq
ZWN0U3RvcmUtbnVsbC1uYW1lLmh0bWwKaW5kZXggYzM2ZGJkYjZkNzM3YzNkODY5YWI4OTBiZjRm
YjZkZGYxYzk1Y2U2OC4uMmY4ZTcwYmMwMGNjMTI1ZTFlMzU3MGZjMTNiZWQxZDE1M2Y5MjdkOCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlT2JqZWN0U3Rv
cmUtbnVsbC1uYW1lLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGVs
ZXRlT2JqZWN0U3RvcmUtbnVsbC1uYW1lLmh0bWwKQEAgLTEsNDcgKzEsMTAgQEAKLTwhRE9DVFlQ
RSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3No
YXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0
aW9uKCJUZXN0IEluZGV4ZWREQiBkZWxldGVPYmplY3RTdG9yZSByZXF1aXJlZCBhcmd1bWVudCIp
OwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0g
ICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkg
VGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVu
KG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nl
c3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0K
LWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFu
ZFBvcHVsYXRlT2JqZWN0U3RvcmU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUo
KQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBldmFsQW5kTG9nKCJk
Yi5jcmVhdGVPYmplY3RTdG9yZSgnbnVsbCcpOyIpOwotICAgIGV2YWxBbmRMb2coImRiLmRlbGV0
ZU9iamVjdFN0b3JlKG51bGwpOyIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3Qo
KTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RlbGV0ZU9iamVjdFN0b3Jl
LW51bGwtbmFtZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2R1cGxpY2F0ZXMuaHRtbCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2R1cGxpY2F0ZXMuaHRtbAppbmRleCAwZDgyYjNj
OTAzOTVlMGFhNzczOTY3MGYyYjM2ZDkyMjEwMWI4MzkxLi41ZTk0OWRkOGMyOGFiOGM2MjQ3MDk3
NmI2MjNhNGFlMzE2Y2E5MmI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9kdXBsaWNhdGVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
ZHVwbGljYXRlcy5odG1sCkBAIC00LDE3MiArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2Ny
aXB0aW9uKCJWZXJpZnkgdGhhdCB5b3UgY2FuIHB1dCB0aGUgc2FtZSBkYXRhIGluIDIgZGlmZmVy
ZW50IGRhdGFiYXNlcyB3aXRob3V0IHVuaXF1ZW5lc3MgY29uc3RyYWludHMgZmlyaW5nLiIpOwot
Ci10ZXN0Q291bnQgPSAwOwotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgaWYgKHRlc3RDb3VudCsr
ID09IDApCi0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignZHVw
bGljYXRlcy0xJykiKTsKLSAgICBlbHNlCi0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIub3BlbignZHVwbGljYXRlcy0yJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IHNldFZlcnNpb247Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb24oKQotewotICAgIGRiID0gZXZhbEFuZExvZygi
ZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
ZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZGVsZXRlRXhpc3Rpbmc7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKLXsKLSAgICBkZWJ1Zygic2V0
VmVyc2lvblN1Y2Nlc3MoKToiKTsKLSAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVs
bCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLQotICAg
IGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBzZWxmLnN0b3JlID0gZXZhbEFuZExv
ZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7Ci0gICAgc2VsZi5p
bmRleE9iamVjdCA9IGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleE5hbWUnLCAn
eCcpIik7Ci0gICAgYWRkRGF0YSgpOwotfQotCi1mdW5jdGlvbiBhZGREYXRhKCkKLXsKLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdr
ZXknKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkTW9yZTsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYWRkTW9yZSgp
Ci17Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5zb3VyY2UuYWRkKHt4
OiAndmFsdWUyJywgeTogJ3p6ejInfSwgJ2tleTInKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZ2V0RGF0YTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLX0KLQotZnVuY3Rpb24gZ2V0RGF0YSgpCi17Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImluZGV4T2JqZWN0LmdldEtleSgndmFsdWUnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
Z2V0T2JqZWN0RGF0YTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLX0KLQotZnVuY3Rpb24gZ2V0T2JqZWN0RGF0YSgpCi17Ci0gICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0IiwgImtleSIpOwotCi0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImluZGV4T2JqZWN0LmdldCgndmFsdWUnKSIpOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZ2V0RGF0YUZhaWw7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGdldERhdGFGYWlsKCkKLXsKLSAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQueCIsICJ2YWx1ZSIpOwotICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC55IiwgInp6eiIpOwotCi0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0LmdldEtleSgnZG9lcyBub3QgZXhp
c3QnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0T2JqZWN0RGF0YUZhaWw7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9u
IGdldE9iamVjdERhdGFGYWlsKCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3Vs
dCIsICJ1bmRlZmluZWQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVj
dC5nZXQoJ2RvZXMgbm90IGV4aXN0JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5L
ZXlDdXJzb3I7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci19Ci0KLWZ1bmN0aW9uIG9wZW5LZXlDdXJzb3IoKQotewotICAgIHNob3VsZEJlKCJldmVudC50
YXJnZXQucmVzdWx0IiwgInVuZGVmaW5lZCIpOwotCi0gICAgc2VsZi5yZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhPYmplY3Qub3BlbktleUN1cnNvcigpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBjdXJzb3IxQ29udGludWU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGN1cnNvcjFDb250aW51ZSgpCi17Ci0gICAgc2hv
dWxkQmVGYWxzZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCA9PT0gbnVsbCIpOwotICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAidmFsdWUiKTsKLSAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICJr
ZXkiKTsKLQotICAgIC8vIFdlIHJlLXVzZSB0aGUgbGFzdCByZXF1ZXN0IG9iamVjdC4KLSAgICBl
dmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKLSAgICBzZWxmLnJl
cXVlc3Qub25zdWNjZXNzID0gY3Vyc29yMUNvbnRpbnVlMjsKLX0KLQotZnVuY3Rpb24gY3Vyc29y
MUNvbnRpbnVlMigpCi17Ci0gICAgc2hvdWxkQmVGYWxzZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCA9
PT0gbnVsbCIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3Vs
dC5rZXkiLCAidmFsdWUyIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJn
ZXQucmVzdWx0LnByaW1hcnlLZXkiLCAia2V5MiIpOwotCi0gICAgLy8gV2UgcmUtdXNlIHRoZSBs
YXN0IHJlcXVlc3Qgb2JqZWN0LgotICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQu
Y29udGludWUoKSIpOwotICAgIHNlbGYucmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuT2JqZWN0Q3Vy
c29yOwotfQotCi1mdW5jdGlvbiBvcGVuT2JqZWN0Q3Vyc29yKCkKLXsKLSAgICBzaG91bGRCZVRy
dWUoImV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwiKTsKLQotICAgIHNlbGYucmVxdWVzdCA9
IGV2YWxBbmRMb2coImluZGV4T2JqZWN0Lm9wZW5DdXJzb3IoKSIpOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gY3Vyc29yMkNvbnRpbnVlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjdXJzb3IyQ29udGludWUoKQotewotICAg
IHNob3VsZEJlRmFsc2UoImV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwiKTsKLSAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgInZhbHVlIik7Ci0g
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLngiLCAi
dmFsdWUiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQu
dmFsdWUueSIsICJ6enoiKTsKLQotICAgIC8vIFdlIHJlLXVzZSB0aGUgbGFzdCByZXF1ZXN0IG9i
amVjdC4KLSAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsK
LSAgICBzZWxmLnJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29yMkNvbnRpbnVlMjsKLX0KLQotZnVu
Y3Rpb24gY3Vyc29yMkNvbnRpbnVlMigpCi17Ci0gICAgc2hvdWxkQmVGYWxzZSgiZXZlbnQudGFy
Z2V0LnJlc3VsdCA9PT0gbnVsbCIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQu
dGFyZ2V0LnJlc3VsdC5rZXkiLCAidmFsdWUyIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLngiLCAidmFsdWUyIik7ICAgIAotICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS55IiwgInp6ejIiKTsK
LQotICAgIC8vIFdlIHJlLXVzZSB0aGUgbGFzdCByZXF1ZXN0IG9iamVjdC4KLSAgICBldmFsQW5k
TG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKLSAgICBzZWxmLnJlcXVlc3Qu
b25zdWNjZXNzID0gbGFzdDsKLX0KLQotZnVuY3Rpb24gbGFzdCgpCi17Ci0gICAgc2hvdWxkQmVU
cnVlKCJldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsIik7Ci0KLSAgICBpZiAodGVzdENvdW50
ID09IDEpCi0gICAgICAgIHRlc3QoKTsKLSAgICBlbHNlCi0gICAgICAgIGZpbmlzaEpTVGVzdCgp
OwotfQotCi1yZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotdGVzdCgpOwotCi0KLTwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9kdXBsaWNhdGVzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgog
PC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvZXJyb3ItY2F1c2VzLWFib3J0LWJ5LWRlZmF1bHQuaHRtbCBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL2Vycm9yLWNhdXNlcy1hYm9ydC1ieS1kZWZhdWx0Lmh0bWwKaW5kZXggMGRh
ODBiMTExYTZmMjZlMTE4NjA3NjcwYTA3YjRmYjhhMmFiOTA0Yy4uZmE3NGQxMjUyNzA1MWY3MTdj
YTRhZjI0YjVjMjcwNTM1MDcyMTYwZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvZXJyb3ItY2F1c2VzLWFib3J0LWJ5LWRlZmF1bHQuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9lcnJvci1jYXVzZXMtYWJvcnQtYnktZGVmYXVsdC5odG1s
CkBAIC00LDEwNyArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9z
Y3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJWZXJpZnkg
dGhhdCBhIHRyYW5zYWN0aW9uIHdpdGggYW4gZXJyb3IgYWJvcnRzIHVubGVzcyBwcmV2ZW50RGVm
YXVsdCgpIGlzIGNhbGxlZC4iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVu
ZG9yUHJlZml4ZXMoKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4o
J2Vycm9yLWNhdXNlcy1hYm9ydC1ieS1kZWZhdWx0JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IHNldFZlcnNpb247Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb24oKQotewotICAgIGRiID0gZXZhbEFuZExv
ZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZGVsZXRlRXhpc3Rpbmc7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKLXsKLSAgICBkZWJ1Zygi
c2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKLSAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJh
bnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0g
bnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAg
ICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gYWRkRGF0YSIpOwotCi0gICAgZGVsZXRl
QWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0
b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOwotfQotCi1mdW5jdGlvbiBhZGREYXRhKCkKLXsKLSAg
ICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUn
XSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5v
bmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2siKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFu
cy5vbmNvbXBsZXRlID0gdHJhbnNhY3Rpb25Db21wbGV0ZWQiKTsKLSAgICBzdG9yZSA9IGV2YWxB
bmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAna2V5
JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZE1vcmU7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGFkZE1vcmUoKQot
ewotICAgIAotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJldmVudC50YXJnZXQuc291cmNlLmFk
ZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAna2V5JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5hZGRFdmVudExpc3Rl
bmVyKCJlcnJvciIsIHByZXZlbnRUaGVEZWZhdWx0KTsKLX0KLQotZnVuY3Rpb24gcHJldmVudFRo
ZURlZmF1bHQoKQotewotICAgIGV2YWxBbmRMb2coImV2ZW50LnByZXZlbnREZWZhdWx0KCkiKTsK
LX0KLQotZnVuY3Rpb24gdHJhbnNhY3Rpb25Db21wbGV0ZWQoKQotewotICAgIHRlc3RQYXNzZWQo
IlRyYW5zYWN0aW9uIGNvbXBsZXRlZCIpOwotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiIik7
Ci0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVO
YW1lJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFuZExvZygidHJh
bnMub25hYm9ydCA9IHRyYW5zYWN0aW9uQWJvcnRlZDEiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFu
cy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2siKTsKLSAgICBzdG9yZSA9
IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9
LCAna2V5JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2Fs
bGJhY2s7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gYWxsb3dEZWZhdWx0OwotfQotCi1mdW5jdGlv
biBhbGxvd0RlZmF1bHQoKQotewotICAgIGRlYnVnKCJEb2luZyBub3RoaW5nIHRvIHByZXZlbnQg
dGhlIGRlZmF1bHQgYWN0aW9uLi4uIik7Ci19Ci0KLWZ1bmN0aW9uIHRyYW5zYWN0aW9uQWJvcnRl
ZDEoKQotewotICAgIHRlc3RQYXNzZWQoIlRyYW5zYWN0aW9uIGFib3J0ZWQiKTsKLSAgICBkZWJ1
ZygiIik7Ci0gICAgZGVidWcoIiIpOwotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBk
Yi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIp
OwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSB0cmFuc2FjdGlvbkFib3J0ZWQyIik7
Ci0gICAgZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNh
bGxiYWNrIik7Ci0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0
b3JlKCdzdG9yZU5hbWUnKSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQo
e3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOwotICAgIGRlYnVnKCJPbWl0dGluZyBhbiBvbmVy
cm9yIGhhbmRsZXIiKTsKLX0KLQotZnVuY3Rpb24gdHJhbnNhY3Rpb25BYm9ydGVkMigpCi17Ci0g
ICAgdGVzdFBhc3NlZCgiVHJhbnNhY3Rpb24gYWJvcnRlZCIpOwotICAgIGZpbmlzaEpTVGVzdCgp
OwotfQotCi10ZXN0KCk7Ci0KLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2Vy
cm9yLWNhdXNlcy1hYm9ydC1ieS1kZWZhdWx0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIu
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5
PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZXhj
ZXB0aW9uLWluLWV2ZW50LWFib3J0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9leGNlcHRpb24taW4tZXZlbnQtYWJvcnRzLWV4cGVjdGVkLnR4dAppbmRleCA3
ZDFlMmQyYTc0OWM1NDViODllM2IwNzY4NDhkOGNkOTkzZTlmNmYzLi5hMGE5NjAxNGFjMWQ0NTFm
ZDQ2M2M4OWJjNmFmZGM2NjBmZjhkMzdiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9leGNlcHRpb24taW4tZXZlbnQtYWJvcnRzLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9leGNlcHRpb24taW4tZXZlbnQtYWJvcnRzLWV4
cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA2MDogVW5j
YXVnaHQgdGhpcyBleGNlcHRpb24gaXMgZXhwZWN0ZWQKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA2
MDogVW5jYXVnaHQgdGhpcyBleGNlcHRpb24gaXMgZXhwZWN0ZWQKK0NPTlNPTEUgTUVTU0FHRTog
bGluZSA1NzogVW5jYXVnaHQgdGhpcyBleGNlcHRpb24gaXMgZXhwZWN0ZWQKK0NPTlNPTEUgTUVT
U0FHRTogbGluZSA1NzogVW5jYXVnaHQgdGhpcyBleGNlcHRpb24gaXMgZXhwZWN0ZWQKIFRlc3Qg
ZXhjZXB0aW9ucyBpbiBJREJSZXF1ZXN0IGhhbmRsZXJzIGNhdXNlIGFib3J0cy4KIAogT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvZXhjZXB0aW9uLWluLWV2ZW50LWFib3J0cy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvZXhjZXB0aW9uLWluLWV2ZW50LWFib3J0cy5odG1sCmluZGV4IDA0M2NmYWNl
OGZjMmEwOTIxYmQ4NmUzYTE0NDBmZGY2ZjczMGQzMTcuLjhjZGJkNjk2NjEzMTc3MGQzNWNlZDcz
MjgxYzAwYTRhNDFiOGNlNTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2V4Y2VwdGlvbi1pbi1ldmVudC1hYm9ydHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9leGNlcHRpb24taW4tZXZlbnQtYWJvcnRzLmh0bWwKQEAgLTQsMTI3ICs0
LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVh
ZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgZXhjZXB0aW9ucyBpbiBJ
REJSZXF1ZXN0IGhhbmRsZXJzIGNhdXNlIGFib3J0cy4iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17
Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
aW5kZXhlZERCLm9wZW4oJ2V4Y2VwdGlvbi1pbi1ldmVudC1hYm9ydHMnKSIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gc2V0VmVyc2lvbjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvbigpCi17Ci0gICAgZGIg
PSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZGVsZXRlRXhpc3RpbmcoKQotewot
ICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOwotICAgIHNlbGYudHJhbnMgPSBldmFs
QW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUo
InRyYW5zICE9PSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENh
bGxiYWNrOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSBzdGFydFRlc3QiKTsK
LQotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBzdG9yZSA9IGV2YWxBbmRM
b2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7Ci0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9
LCAna2V5JykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLX0KLQotZnVuY3Rpb24gc3RhcnRUZXN0KCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgdHJh
bnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIElE
QlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMub25hYm9y
dCA9IHRyYW5zYWN0aW9uQWJvcnRlZDEiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBs
ZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2siKTsKLSAgICBzdG9yZSA9IGV2YWxBbmRM
b2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlMicsIHk6ICd6enoyJ30sICdrZXky
JykiKTsKLSAgICB0cmFucy5hZGRFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgY2F1c2VFeGNlcHRp
b24sIHRydWUpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotfQotCi1mdW5jdGlvbiBjYXVzZUV4Y2VwdGlvbigpCi17Ci0gICAgZGVidWcoIiIpOwotICAg
IGV2YWxBbmRMb2coImV2ZW50LnByZXZlbnREZWZhdWx0KCkiKTsKLSAgICBkZWJ1ZygiVGhyb3dp
bmciKTsKLSAgICB0aHJvdyAidGhpcyBleGNlcHRpb24gaXMgZXhwZWN0ZWQiOwotfQotCi1mdW5j
dGlvbiB0cmFuc2FjdGlvbkFib3J0ZWQxKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgc2hvdWxk
SGF2ZUhhZEVycm9yKCJ0aGlzIGV4Y2VwdGlvbiBpcyBleHBlY3RlZCIpOwotICAgIHRlc3RQYXNz
ZWQoIlRoZSB0cmFuc2FjdGlvbiB3YXMgYWJvcnRlZC4iKTsKLSAgICB0cmFucyA9IGV2YWxBbmRM
b2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rpb24u
UkVBRF9XUklURSkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmFib3J0ID0gdHJhbnNhY3Rp
b25BYm9ydGVkMiIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSB1bmV4cGVj
dGVkQ29tcGxldGVDYWxsYmFjayIpOwotICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0
cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
Zygic3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKLSAgICBkYi5vbmVycm9y
ID0gY2F1c2VFeGNlcHRpb247Ci19Ci0KLWZ1bmN0aW9uIHRyYW5zYWN0aW9uQWJvcnRlZDIoKQot
ewotICAgIGRlYnVnKCIiKTsKLSAgICBzaG91bGRIYXZlSGFkRXJyb3IoInRoaXMgZXhjZXB0aW9u
IGlzIGV4cGVjdGVkIik7Ci0gICAgdGVzdFBhc3NlZCgiVGhlIHRyYW5zYWN0aW9uIHdhcyBhYm9y
dGVkLiIpOwotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihb
J3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIGV2YWxBbmRM
b2coInRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjayIpOwotICAgIGV2YWxB
bmRMb2coInRyYW5zLm9uY29tcGxldGUgPSB0cmFuc2FjdGlvbkNvbXBsZXRlZDEiKTsKLSAgICBz
dG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScp
Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlMycsIHk6
ICd6enozJ30sICdrZXkzJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHRocm93QW5kQ2F0
Y2g7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAg
ZGIub25lcnJvciA9IG51bGw7Ci19Ci0KLWZ1bmN0aW9uIHRocm93QW5kQ2F0Y2goKQotewotICAg
IGRlYnVnKCIiKTsKLSAgICBldmFsQW5kTG9nKCJldmVudC5wcmV2ZW50RGVmYXVsdCgpIik7Ci0g
ICAgZGVidWcoIlRocm93aW5nIHdpdGhpbiBhIHRyeSBibG9jayIpOwotICAgIHRyeSB7Ci0gICAg
ICAgIHRocm93ICJBSEhIIjsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgfQotfQotCi1mdW5jdGlv
biB0cmFuc2FjdGlvbkNvbXBsZXRlZDEoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICB0ZXN0UGFz
c2VkKCJUaGUgdHJhbnNhY3Rpb24gY29tcGxldGVkLiIpOwotICAgIHRyYW5zID0gZXZhbEFuZExv
ZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5S
RUFEX1dSSVRFKSIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVk
QWJvcnRDYWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSB0cmFu
c2FjdGlvbkNvbXBsZXRlZDIiKTsKLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJh
bnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InN0b3JlLmFkZCh7eDogJ3ZhbHVlNCcsIHk6ICd6eno0J30sICdrZXk0JykiKTsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeyB0ZXN0UGFzc2VkKCJrZXk0IGFkZGVkIik7IH0K
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVu
Y3Rpb24gdHJhbnNhY3Rpb25Db21wbGV0ZWQyKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgdGVz
dFBhc3NlZCgiVGhlIHRyYW5zYWN0aW9uIGNvbXBsZXRlZC4iKTsKLSAgICBkZWJ1ZygiIik7Ci0g
ICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXRlc3QoKTsKLQotCi08L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvZXhjZXB0aW9uLWluLWV2ZW50LWFib3J0cy5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2ZhY3RvcnktYmFzaWNzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9mYWN0b3J5LWJhc2ljcy5odG1sCmluZGV4IGQ0NGNhYjI1Mjk2YWZjNTVkYjZhY2Y1Nzc0
YWIyYTc1NzkwNzMxYmQuLjJiNzFkNmNkNjJjZGVjZTE1MDhlNzIyYmZkMmI5NTljNzNlNjQ3NDMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ZhY3RvcnktYmFzaWNz
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZmFjdG9yeS1iYXNpY3Mu
aHRtbApAQCAtNCw4OCArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+
PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0
IHRoZSBiYXNpY3Mgb2YgSW5kZXhlZERCJ3MgSURCRmFjdG9yeS4iKTsKLQotZnVuY3Rpb24gdGVz
dCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIHNob3VsZEJlVHJ1ZSgi
dHlwZW9mIGluZGV4ZWREQi5vcGVuID09PSAnZnVuY3Rpb24nIik7Ci0gICAgc2hvdWxkQmVUcnVl
KCJ0eXBlb2YgaW5kZXhlZERCLmNtcCA9PT0gJ2Z1bmN0aW9uJyIpOwotICAgIHNob3VsZEJlVHJ1
ZSgidHlwZW9mIGluZGV4ZWREQi5nZXREYXRhYmFzZU5hbWVzID09PSAnZnVuY3Rpb24nIik7Ci0K
LSAgICBzaG91bGRCZVRydWUoInR5cGVvZiBpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UgPT09ICdm
dW5jdGlvbiciKTsKLQotICAgIG5hbWUgPSAnc3RvcmFnZS9pbmRleGVkZGIvZmFjdG9yeS1iYXNp
Y3MnOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotCi0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5nZXREYXRhYmFzZU5hbWVzKCkiKTsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGdldERhdGFiYXNlTmFtZXNTdWNjZXNzMTsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZ2V0RGF0YWJh
c2VOYW1lc1N1Y2Nlc3MxKCkKLXsKLSAgICB2YXIgZGF0YWJhc2VOYW1lczsKLSAgICBldmFsQW5k
TG9nKCJkYXRhYmFzZU5hbWVzID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJl
RmFsc2UoImRhdGFiYXNlTmFtZXMuY29udGFpbnMoJyIgKyBuYW1lICsgIicpIik7Ci0gICAgc2hv
dWxkQmVGYWxzZSgiZGF0YWJhc2VOYW1lcy5jb250YWlucygnREFUQUJBU0UgVEhBVCBET0VTIE5P
VCBFWElTVCcpIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4o
bmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2Vz
czsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQot
ZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5y
ZXN1bHQuY2xvc2UoKSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIuZ2V0
RGF0YWJhc2VOYW1lcygpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXREYXRhYmFzZU5h
bWVzU3VjY2VzczI7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIGdldERhdGFiYXNlTmFtZXNTdWNjZXNzMigpCi17Ci0gICAgdmFy
IGRhdGFiYXNlTmFtZXM7Ci0gICAgZXZhbEFuZExvZygiZGF0YWJhc2VOYW1lcyA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoImRhdGFiYXNlTmFtZXMuY29udGFpbnMo
JyIgKyBuYW1lICsgIicpIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGF0YWJhc2VOYW1lcy5jb250
YWlucygnREFUQUJBU0UgVEhBVCBET0VTIE5PVCBFWElTVCcpIik7Ci0KLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCciICsgbmFtZSArICInKSIpOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlRGF0YWJhc2VTdWNjZXNzOwotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBkZWxl
dGVEYXRhYmFzZVN1Y2Nlc3MoKQotewotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVk
REIuZ2V0RGF0YWJhc2VOYW1lcygpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXREYXRh
YmFzZU5hbWVzU3VjY2VzczM7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGdldERhdGFiYXNlTmFtZXNTdWNjZXNzMygpCi17Ci0g
ICAgdmFyIGRhdGFiYXNlTmFtZXM7Ci0gICAgZXZhbEFuZExvZygiZGF0YWJhc2VOYW1lcyA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJkYXRhYmFzZU5hbWVzLmNv
bnRhaW5zKCciICsgbmFtZSArICInKSIpOwotICAgIHNob3VsZEJlRmFsc2UoImRhdGFiYXNlTmFt
ZXMuY29udGFpbnMoJ0RBVEFCQVNFIFRIQVQgRE9FUyBOT1QgRVhJU1QnKSIpOwotCi0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgnREFUQUJBU0UgVEhB
VCBET0VTIE5PVCBFWElTVCcpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVEYXRh
YmFzZVN1Y2Nlc3MyOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotfQotCi1mdW5jdGlvbiBkZWxldGVEYXRhYmFzZVN1Y2Nlc3MyKCkKLXsKLSAgICBmaW5p
c2hKU1Rlc3QoKTsKLX0KLQotdGVzdCgpOwotCi0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9mYWN0b3J5LWJhc2ljcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ZhY3Rvcnkt
Y21wLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9mYWN0b3J5LWNtcC5odG1s
CmluZGV4IGY3Mjg1MzNiMzgxNGMxNTkzNDg0ODBiMmFhMWYyNmVlNjA3YWFlNzEuLjQyZjBhYzYy
YmU3MmEwNzE0NzUzNTRkZDYxYTFjNjQyNWVlYjU0NmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2ZhY3RvcnktY21wLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvZmFjdG9yeS1jbXAuaHRtbApAQCAtNCwxNDcgKzQsNyBAQAogPHNjcmlw
dCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08
c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIga2V5IGNvbXBhcmlzb24gdXNp
bmcgSURCRmFjdG9yeS5jbXAoKS4iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3Zl
VmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIHNob3VsZEJlVHJ1ZSgidHlwZW9mIGluZGV4ZWREQi5j
bXAgPT09ICdmdW5jdGlvbiciKTsKLQotICAgIHRlc3RWYWxpZEtleXMoKTsKLSAgICB0ZXN0SW52
YWxpZEtleXMoKTsKLSAgICB0ZXN0SWRlbnRpY2FsS2V5cygpOwotICAgIGZpbmlzaEpTVGVzdCgp
OwotfQotCi1mdW5jdGlvbiB0ZXN0VmFsaWRLZXlzKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAg
ZGVidWcoImNvbXBhcmUgdmFsaWQga2V5cyIpOwotCi0gICAgdmFyIGtleXMgPSBbCi0gICAgICAg
ICItSW5maW5pdHkiLAotICAgICAgICAiLU51bWJlci5NQVhfVkFMVUUiLAotICAgICAgICAiLTEi
LAotICAgICAgICAiLU51bWJlci5NSU5fVkFMVUUiLAotICAgICAgICAiMCIsCi0gICAgICAgICJO
dW1iZXIuTUlOX1ZBTFVFIiwKLSAgICAgICAgIjEiLAotICAgICAgICAiTnVtYmVyLk1BWF9WQUxV
RSIsCi0gICAgICAgICJJbmZpbml0eSIsCi0gCi0gICAgICAgICJuZXcgRGF0ZSgwKSIsCi0gICAg
ICAgICJuZXcgRGF0ZSgxMDAwKSIsCi0gICAgICAgICJuZXcgRGF0ZSgxMzE3Mzk5OTMxMDIzKSIs
Ci0gICAgICAgIAotICAgICAgICAiJyciLAotICAgICAgICAiJ1x4MDAnIiwKLSAgICAgICAgIidh
JyIsCi0gICAgICAgICInYWEnIiwKLSAgICAgICAgIidiJyIsCi0gICAgICAgICInYmEnIiwKLQot
ICAgICAgICAiJ1x4QTInIiwgLy8gVSswMEEyIENFTlQgU0lHTgotICAgICAgICAiJ1x1NkMzNCci
LCAvLyBVKzZDMzQgQ0pLIFVOSUZJRUQgSURFT0dSQVBIICh3YXRlcikKLSAgICAgICAgIidcdUQ4
MzRcdUREMUUnIiwgLy8gVSsxRDExRSBNVVNJQ0FMIFNZTUJPTCBHLUNMRUYgKFVURi0xNiBzdXJy
b2dhdGUgcGFpcikKLSAgICAgICAgIidcdUZGRkQnIiwgLy8gVStGRkZEIFJFUExBQ0VNRU5UIENI
QVJBQ1RFUgotCi0gICAgICAgICJbXSIsCi0KLSAgICAgICAgIlstSW5maW5pdHldIiwKLSAgICAg
ICAgIlstTnVtYmVyLk1BWF9WQUxVRV0iLAotICAgICAgICAiWy0xXSIsCi0gICAgICAgICJbLU51
bWJlci5NSU5fVkFMVUVdIiwKLSAgICAgICAgIlswXSIsCi0gICAgICAgICJbTnVtYmVyLk1JTl9W
QUxVRV0iLAotICAgICAgICAiWzFdIiwKLSAgICAgICAgIltOdW1iZXIuTUFYX1ZBTFVFXSIsCi0g
ICAgICAgICJbSW5maW5pdHldIiwKLSAKLSAgICAgICAgIltuZXcgRGF0ZSgwKV0iLAotICAgICAg
ICAiW25ldyBEYXRlKDEwMDApXSIsCi0gICAgICAgICJbbmV3IERhdGUoMTMxNzM5OTkzMTAyMyld
IiwKLSAgICAgICAgCi0gICAgICAgICJbJyddIiwKLSAgICAgICAgIlsnXHgwMCddIiwKLSAgICAg
ICAgIlsnYSddIiwKLSAgICAgICAgIlsnYWEnXSIsCi0gICAgICAgICJbJ2InXSIsCi0gICAgICAg
ICJbJ2JhJ10iLAotCi0gICAgICAgICJbJ1x4QTInXSIsIC8vIFUrMDBBMiBDRU5UIFNJR04KLSAg
ICAgICAgIlsnXHU2QzM0J10iLCAvLyBVKzZDMzQgQ0pLIFVOSUZJRUQgSURFT0dSQVBIICh3YXRl
cikKLSAgICAgICAgIlsnXHVEODM0XHVERDFFJ10iLCAvLyBVKzFEMTFFIE1VU0lDQUwgU1lNQk9M
IEctQ0xFRiAoVVRGLTE2IHN1cnJvZ2F0ZSBwYWlyKQotICAgICAgICAiWydcdUZGRkQnXSIsIC8v
IFUrRkZGRCBSRVBMQUNFTUVOVCBDSEFSQUNURVIKLQotICAgICAgICAiW1tdXSIsCi0gICAgICAg
IAotICAgICAgICAiW1tdLCBbXV0iLAotICAgICAgICAiW1tdLCBbXSwgW11dIiwKLQotICAgICAg
ICAiW1tbXV1dIiwKLSAgICAgICAgIltbW1tdXV1dIgotICAgIF07Ci0KLSAgICB2YXIgaSwga2V5
MSwga2V5MjsKLSAgICBmb3IgKGkgPSAwOyBpIDwga2V5cy5sZW5ndGggLSAxOyBpICs9IDEpIHsK
LSAgICAgICAga2V5MSA9IGtleXNbaV07Ci0gICAgICAgIGtleTIgPSBrZXlzW2kgKyAxXTsKLSAg
ICAgICAgc2hvdWxkQmVUcnVlKCJpbmRleGVkREIuY21wKCIgKyBrZXkxICsgIiwiICsga2V5MiAr
ICIpID09PSAtMSIpOwotICAgICAgICBzaG91bGRCZVRydWUoImluZGV4ZWREQi5jbXAoIiArIGtl
eTIgKyAiLCIgKyBrZXkxICsgIikgPT09IDEiKTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJpbmRl
eGVkREIuY21wKCIgKyBrZXkxICsgIiwiICsga2V5MSArICIpID09PSAwIik7Ci0gICAgICAgIHNo
b3VsZEJlVHJ1ZSgiaW5kZXhlZERCLmNtcCgiICsga2V5MiArICIsIiArIGtleTIgKyAiKSA9PT0g
MCIpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdEludmFsaWRLZXlzKCkKLXsKLSAgICBkZWJ1
ZygiIik7Ci0gICAgZGVidWcoImNvbXBhcmUgaW52YWxpZCBrZXlzIik7Ci0KLSAgICB2YXIgaW52
YWxpZEtleXMgPSBbCi0gICAgICAgICJ2b2lkIDAiLCAvLyB1bmRlZmluZWQKLSAgICAgICAgInRy
dWUiLAotICAgICAgICAiZmFsc2UiLAotICAgICAgICAiTmFOIiwKLSAgICAgICAgIm5ldyBEYXRl
KE5hTikiLAotICAgICAgICAibnVsbCIsCi0gICAgICAgICJ7fSIsCi0gICAgICAgICJmdW5jdGlv
biAoKSB7fSIsCi0gICAgICAgICIvcmVnZXgvIiwKLSAgICAgICAgInNlbGYiLAotICAgICAgICAi
c2VsZi5kb2N1bWVudCIsCi0gICAgICAgICJzZWxmLmRvY3VtZW50LmJvZHkiCi0gICAgXTsKLQot
ICAgIHZhciBpLCBrZXkxLCBrZXkyOwotICAgIGZvciAoaSA9IDA7IGkgPCBpbnZhbGlkS2V5cy5s
ZW5ndGggLSAxOyBpICs9IDEpIHsKLSAgICAgICAga2V5MSA9IGludmFsaWRLZXlzW2ldOwotICAg
ICAgICBrZXkyID0gaW52YWxpZEtleXNbaSArIDFdOwotICAgICAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJpbmRleGVkREIuY21wKCIgKyBrZXkxICsgIiwgIiArIGtleTIgKyAiKSIsICJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJpbmRleGVkREIuY21wKCIgKyBrZXkyICsgIiwgIiArIGtleTEgKyAiKSIsICJJREJEYXRh
YmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJpbmRleGVkREIuY21wKCIgKyBrZXkxICsgIiwgJ3ZhbGlkJykiLCAiSURCRGF0YWJhc2VFeGNl
cHRpb24uREFUQV9FUlIiKTsKLSAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXhl
ZERCLmNtcCgndmFsaWQnLCAiICsga2V5MSArICIpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRB
VEFfRVJSIik7Ci0gICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4ZWREQi5jbXAo
IiArIGtleTIgKyAiLCAndmFsaWQnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIp
OwotICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJpbmRleGVkREIuY21wKCd2YWxpZCcs
ICIgKyBrZXkyICsgIikiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLSAgICB9
Ci19Ci0KLWZ1bmN0aW9uIHRlc3RJZGVudGljYWxLZXlzKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0g
ICAgZGVidWcoImNvbXBhcmUgaWRlbnRpY2FsIGtleXMiKTsKLQotICAgIHNob3VsZEJlVHJ1ZSgi
aW5kZXhlZERCLmNtcCgwLCAtMCkgPT09IDAiKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9mYWN0b3J5LWNtcC5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2ZhY3RvcnktZGVsZXRlZGF0YWJhc2UtaW50ZXJhY3Rpb25zLmh0bWwgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9mYWN0b3J5LWRlbGV0ZWRhdGFiYXNlLWludGVyYWN0aW9u
cy5odG1sCmluZGV4IGU1YzBkYzYxYmY2Y2IwZDM1NWMxMjJlOWMwNzlkMWUwYWVmOGM5YTUuLmYw
ZWY0NzhkY2RkZjRjYzljNWNmMzYwNGQ3OThjMDExODlhYzExNmEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ZhY3RvcnktZGVsZXRlZGF0YWJhc2UtaW50ZXJhY3Rp
b25zLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZmFjdG9yeS1kZWxl
dGVkYXRhYmFzZS1pbnRlcmFjdGlvbnMuaHRtbApAQCAtNCwxOTEgKzQsNyBAQAogPHNjcmlwdCBz
cmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2Ny
aXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCB0aGUgZGVsZXRlRGF0YWJhc2UgY2FsbCBhbmQgaXRz
IGludGVyYWN0aW9uIHdpdGggb3Blbi9zZXRWZXJzaW9uIik7Ci0KLWZ1bmN0aW9uIENvbm5lY3Rp
b24oaWQpIHsKLSAgICBpZCA9IFN0cmluZyhpZCk7Ci0gICAgdmFyIHRoYXQgPSB0aGlzOwotICAg
IHRoaXMub3BlbiA9IGZ1bmN0aW9uKG9wdHMpIHsKLSAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2
YWxBbmRMb2coIiciICsgaWQgKyAiLm9wZW4nIikpOwotICAgICAgICB2YXIgcmVxID0gaW5kZXhl
ZERCLm9wZW4oc2VsZi5kYm5hbWUpOwotICAgICAgICByZXEub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotICAgICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKLSAg
ICAgICAgICAgIHRoYXQuaGFuZGxlID0gZS50YXJnZXQucmVzdWx0OwotICAgICAgICAgICAgc2Vs
Zi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLm9wZW4ub25zdWNjZXNzJyIpKTsK
LSAgICAgICAgICAgIHRoYXQuaGFuZGxlLm9udmVyc2lvbmNoYW5nZSA9IGZ1bmN0aW9uKGUpIHsK
LSAgICAgICAgICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIu
b252ZXJzaW9uY2hhbmdlJyIpKTsKLSAgICAgICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9u
dmVyc2lvbikgeyBvcHRzLm9udmVyc2lvbi5jYWxsKHRoYXQpOyB9Ci0gICAgICAgICAgICB9Owot
ICAgICAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5vbnN1Y2Nlc3MpIHsgb3B0cy5vbnN1Y2Nlc3Mu
Y2FsbCh0aGF0KTsgfQotICAgICAgICB9OwotICAgIH07Ci0KLSAgICB0aGlzLmNsb3NlID0gZnVu
Y3Rpb24oKSB7Ci0gICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsg
Ii5jbG9zZSciKSk7Ci0gICAgICAgIHRoaXMuaGFuZGxlLmNsb3NlKCk7Ci0gICAgfTsKLQotICAg
IHRoaXMuc2V0VmVyc2lvbiA9IGZ1bmN0aW9uKG9wdHMpIHsKLSAgICAgICAgc2VsZi5zdGVwcy5w
dXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLnNldFZlcnNpb24nIikpOwotICAgICAgICB2YXIg
cmVxID0gdGhpcy5oYW5kbGUuc2V0VmVyc2lvbihTdHJpbmcoc2VsZi52ZXIrKykpOwotICAgICAg
ICByZXEub25hYm9ydCA9IGZ1bmN0aW9uIChlKSB7Ci0gICAgICAgICAgICBzZWxmLnN0ZXBzLnB1
c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIuc2V0VmVyc2lvbi5vbmFib3J0JyIpKTsKLSAgICAg
ICAgICAgIGlmIChvcHRzICYmIG9wdHMub25hYm9ydCkgeyBvcHRzLm9uYWJvcnQuY2FsbCh0aGF0
KTsgfQotICAgICAgICB9OwotICAgICAgICByZXEub25ibG9ja2VkID0gZnVuY3Rpb24gKGUpIHsK
LSAgICAgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5zZXRW
ZXJzaW9uLm9uYmxvY2tlZCciKSk7Ci0gICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9uYmxv
Y2tlZCkgeyBvcHRzLm9uYmxvY2tlZC5jYWxsKHRoYXQpOyB9Ci0gICAgICAgIH07Ci0gICAgICAg
IHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZSkgewotICAgICAgICAgICAgc2VsZi5zdGVwcy5w
dXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLnNldFZlcnNpb24ub25zdWNjZXNzJyIpKTsKLSAg
ICAgICAgICAgIGlmICh0aGF0LmhhbmRsZS5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCJ0ZXN0
LXN0b3JlIiArIHNlbGYudmVyKSkgewotICAgICAgICAgICAgICAgIHRoYXQuaGFuZGxlLmRlbGV0
ZU9iamVjdFN0b3JlKCJ0ZXN0LXN0b3JlIiArIHNlbGYudmVyKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIHZhciBzdG9yZSA9IHRoYXQuaGFuZGxlLmNyZWF0ZU9iamVjdFN0b3JlKCJ0ZXN0
LXN0b3JlIiArIHNlbGYudmVyKTsKLSAgICAgICAgICAgIHZhciBjb3VudCA9IDA7Ci0gICAgICAg
ICAgICBkb19hc3luY19wdXRzKCk7IC8vIEtlZXAgdGhpcyB0cmFuc2FjdGlvbiBydW5uaW5nIGZv
ciBhIHdoaWxlCi0gICAgICAgICAgICBmdW5jdGlvbiBkb19hc3luY19wdXRzKCkgewotICAgICAg
ICAgICAgICAgIHZhciByZXEgPSBzdG9yZS5wdXQoY291bnQsIGNvdW50KTsKLSAgICAgICAgICAg
ICAgICByZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICAgICAg
ICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZSkgewotICAgICAgICAgICAgICAgICAgICBp
ZiAoKytjb3VudCA8IDEwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkb19hc3luY19wdXRz
KCk7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIuc2V0VmVyc2lvbi50cmFu
c2FjdGlvbi1jb21wbGV0ZSciKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0cyAm
JiBvcHRzLm9uc3VjY2VzcykgeyBvcHRzLm9uc3VjY2Vzcy5jYWxsKHRoYXQpOyB9Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgfQotICAgICAg
ICB9OwotICAgICAgICByZXEub25lcnJvciA9IGZ1bmN0aW9uIChlKSB7Ci0gICAgICAgICAgICBz
ZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIuc2V0VmVyc2lvbi5vbmVycm9y
JyIpKTsKLSAgICAgICAgICAgIGlmIChvcHRzICYmIG9wdHMub25lcnJvcikgeyBvcHRzLm9uZXJy
b3IuY2FsbCh0aGF0KTsgfQotICAgICAgICB9OwotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0
ZURhdGFiYXNlKGlkLCBuYW1lLCBvcHRzKSB7Ci0gICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRM
b2coIidkZWxldGVEYXRhYmFzZSgiICsgaWQgKyAiKSciKSk7Ci0gICAgdmFyIHJlcSA9IGluZGV4
ZWREQi5kZWxldGVEYXRhYmFzZShuYW1lKTsKLSAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24g
KGUpIHsKLSAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIidkZWxldGVEYXRhYmFz
ZSgiICsgaWQgKyAiKS5vbnN1Y2Nlc3MnIikpOwotICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9u
c3VjY2VzcykgeyBvcHRzLm9uc3VjY2Vzcy5jYWxsKG51bGwpOyB9Ci0gICAgfTsKLSAgICByZXEu
b25lcnJvciA9IGZ1bmN0aW9uIChlKSB7Ci0gICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5k
TG9nKCInZGVsZXRlRGF0YWJhc2UoIiArIGlkICsgIikub25lcnJvciciKSk7Ci0gICAgICAgIGlm
IChvcHRzICYmIG9wdHMub25lcnJvcikgeyBvcHRzLm9uZXJyb3IuY2FsbChudWxsKTsgfQotICAg
IH07Ci0gICAgcmVxLm9uYmxvY2tlZCA9IGZ1bmN0aW9uIChlKSB7Ci0gICAgICAgIHNlbGYuc3Rl
cHMucHVzaChldmFsQW5kTG9nKCInZGVsZXRlRGF0YWJhc2UoIiArIGlkICsgIikub25ibG9ja2Vk
JyIpKTsKLSAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5vbmJsb2NrZWQpIHsgb3B0cy5vbmJsb2Nr
ZWQuY2FsbChudWxsKTsgfQotICAgIH07Ci19Ci0KLS8vIHJ1biBhIHNlcmllcyBvZiBzdGVwcyB0
aGF0IHRha2UgYSBjb250aW51YXRpb24gZnVuY3Rpb24KLWZ1bmN0aW9uIHJ1blN0ZXBzKGNvbW1h
bmRzKSB7Ci0gICAgaWYgKGNvbW1hbmRzLmxlbmd0aCkgewotICAgICAgICB2YXIgY29tbWFuZCA9
IGNvbW1hbmRzLnNoaWZ0KCk7Ci0gICAgICAgIGNvbW1hbmQoZnVuY3Rpb24oKSB7IHJ1blN0ZXBz
KGNvbW1hbmRzKTsgfSk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0KCkgewotICAgIHJlbW92
ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgdGVzdDEoKTsKLX0KLQotZnVuY3Rpb24gdGVzdDEoKSB7
Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJURVNUOiBkZWxldGVEYXRhYmFzZSBibG9ja2Vk
IG9uIG9wZW4gaGFuZGxlcyIpOwotICAgIGV2YWxBbmRMb2coInNlbGYuZGJuYW1lID0gJ3Rlc3Qx
Jzsgc2VsZi52ZXIgPSAxOyBzZWxmLnN0ZXBzID0gW10iKTsKLSAgICB2YXIgaCA9IG5ldyBDb25u
ZWN0aW9uKCJoIik7Ci0gICAgcnVuU3RlcHMoW2Z1bmN0aW9uKGRvTmV4dCkgeyBoLm9wZW4oe29u
c3VjY2VzczogZG9OZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbnZlcnNp
b246IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVi
dWcoIiAgICBoIGNsb3NpbmcsIGJ1dCBub3QgaW1tZWRpYXRlbHkiKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGguY2xvc2UoKTsg
fSwgMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19KTsgfSwKLSAgICAgICAg
ZnVuY3Rpb24oZG9OZXh0KSB7IGRlbGV0ZURhdGFiYXNlKCIiLCBzZWxmLmRibmFtZSwgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb25zdWNjZXNzOiBmaW5pc2hUZXN0fSk7IH0sCi0gICAg
ICAgIF0pOwotICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7Ci0gICAgICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygic2VsZi5zdGVwcy50b1N0cmluZygpIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFsiaC5vcGVuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaC5v
cGVuLm9uc3VjY2VzcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlbGV0ZURh
dGFiYXNlKCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoLm9udmVyc2lvbmNo
YW5nZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlbGV0ZURhdGFiYXNlKCku
b25ibG9ja2VkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaC5jbG9zZSIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlbGV0ZURhdGFiYXNlKCkub25zdWNjZXNz
IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udG9TdHJpbmcoKSk7Ci0gICAgICAg
IHRlc3QyKCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0MigpIHsKLSAgICBkZWJ1ZygiIik7
Ci0gICAgZGVidWcoIlRFU1Q6IGRlbGV0ZURhdGFiYXNlIG5vdCBibG9ja2VkIHdoZW4gaGFuZGxl
cyBjbG9zZSBpbW1lZGlhdGVseSIpOwotICAgIGV2YWxBbmRMb2coInNlbGYuZGJuYW1lID0gJ3Rl
c3QyJzsgc2VsZi52ZXIgPSAxOyBzZWxmLnN0ZXBzID0gW10iKTsKLSAgICB2YXIgaCA9IG5ldyBD
b25uZWN0aW9uKCJoIik7Ci0gICAgcnVuU3RlcHMoW2Z1bmN0aW9uKGRvTmV4dCkgeyBoLm9wZW4o
e29uc3VjY2VzczogZG9OZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb252ZXJzaW9uOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiICAgIGggY2xvc2luZyBpbW1lZGlhdGVseSIpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGguY2xvc2UoKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19KTsgfSwKLSAgICAg
ICAgZnVuY3Rpb24oZG9OZXh0KSB7IGRlbGV0ZURhdGFiYXNlKCIiLCBzZWxmLmRibmFtZSwgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb25zdWNjZXNzOiBmaW5pc2hUZXN0fSk7IH0sCi0g
ICAgICAgIF0pOwotICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7Ci0gICAgICAgIGRlYnVnKCJO
T1RFOiBXaWxsIEZBSUwgd2l0aCBleHRyYSBib2d1cyBkZWxldGVEYXRhYmFzZSgpLm9uYmxvY2tl
ZCBzdGVwOyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzExMzAiKTsK
LSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzZWxmLnN0ZXBzLnRvU3RyaW5nKCkiLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJoLm9wZW4iLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJoLm9wZW4ub25zdWNjZXNzIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiZGVsZXRlRGF0YWJhc2UoKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImgub252ZXJzaW9uY2hhbmdlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiaC5jbG9zZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlbGV0ZURhdGFi
YXNlKCkub25zdWNjZXNzIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udG9TdHJp
bmcoKSk7Ci0gICAgICAgIHRlc3QzKCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0MygpIHsK
LSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIlRFU1Q6IGRlbGV0ZURhdGFiYXNlIGlzIGRlbGF5
ZWQgaWYgYSBWRVJTSU9OX0NIQU5HRSB0cmFuc2FjdGlvbiBpcyBydW5uaW5nIik7Ci0gICAgZXZh
bEFuZExvZygic2VsZi5kYm5hbWUgPSAndGVzdDMnOyBzZWxmLnZlciA9IDE7IHNlbGYuc3RlcHMg
PSBbXSIpOwotICAgIHZhciBoID0gbmV3IENvbm5lY3Rpb24oImgiKTsKLSAgICBydW5TdGVwcyhb
ZnVuY3Rpb24oZG9OZXh0KSB7IGgub3Blbih7b25zdWNjZXNzOiBkb05leHQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9udmVyc2lvbjogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiICAgIGggY2xvc2luZywgYnV0IG5vdCBp
bW1lZGlhdGVseSIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsgaC5jbG9zZSgpOyB9LCAwKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfX0pOyB9LAotICAgICAgICAgICAgICBmdW5jdGlvbihkb05leHQpIHsgaC5z
ZXRWZXJzaW9uKCk7IGRvTmV4dCgpOyB9LAotICAgICAgICAgICAgICBmdW5jdGlvbihkb05leHQp
IHsgZGVsZXRlRGF0YWJhc2UoIiIsIHNlbGYuZGJuYW1lLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB7b25zdWNjZXNzOiBmaW5pc2hUZXN0fSk7IH0sCi0gICAgICAgICAgICAgIF0p
OwotCi0gICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJzZWxmLnN0ZXBzLnRvU3RyaW5nKCkiLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgWyJoLm9wZW4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoLm9wZW4u
b25zdWNjZXNzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaC5zZXRWZXJzaW9u
IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVsZXRlRGF0YWJhc2UoKSIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImguc2V0VmVyc2lvbi5vbnN1Y2Nlc3MiLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoLnNldFZlcnNpb24udHJhbnNhY3Rpb24t
Y29tcGxldGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoLm9udmVyc2lvbmNo
YW5nZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlbGV0ZURhdGFiYXNlKCku
b25ibG9ja2VkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaC5jbG9zZSIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlbGV0ZURhdGFiYXNlKCkub25zdWNjZXNz
IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udG9TdHJpbmcoKSk7Ci0gICAgICAg
IGZpbmlzaEpTVGVzdCgpOwotICAgIH0KLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvZmFjdG9yeS1kZWxldGVkYXRhYmFzZS1pbnRlcmFjdGlvbnMuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9mYWN0b3J5LWRlbGV0ZWRhdGFiYXNlLmh0bWwgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9mYWN0b3J5LWRlbGV0ZWRhdGFiYXNlLmh0bWwKaW5k
ZXggM2QzMzIzYzQ5MjgyNjFkY2Q5NGM0MjZjYjQ4MDUwNWE0NmVjYWQxMS4uZDBjODI2YmZjNWI4
YzI0OTU0YzhkMGVhYjhlOWIzZDBmN2YyMTY1YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvZmFjdG9yeS1kZWxldGVkYXRhYmFzZS5odG1sCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ZhY3RvcnktZGVsZXRlZGF0YWJhc2UuaHRtbApAQCAtNCw5
NSArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8
L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidz
IHdlYmtpdEluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgpLiIpOwotCi1mdW5jdGlvbiB0ZXN0KCkK
LXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJpbmRleGVkREIub3BlbignZGF0YWJhc2UtdG8tZGVsZXRlJykiKTsKLSAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IHN0YXJ0U2V0VmVyc2lvbjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc3RhcnRTZXRWZXJzaW9uKCkKLXsKLSAg
ICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4aXN0aW5nOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBkZWxldGVFeGlzdGluZygp
Ci17Ci0gICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKLQotICAgIHN0b3Jl
ID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywg
bnVsbCkiKTsKLQotICAgIHNlbGYuaW5kZXggPSBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRl
eCgnaW5kZXhOYW1lJywgJycpIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJzdG9yZS5pbmRleE5hbWVz
LmNvbnRhaW5zKCdpbmRleE5hbWUnKSIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0
b3JlLmFkZCgndmFsdWUnLCAna2V5JykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gZ2V0VmFsdWU7Ci19Ci0K
LWZ1bmN0aW9uIGdldFZhbHVlKCkKLXsKLSAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coImRi
LnRyYW5zYWN0aW9uKCdzdG9yZU5hbWUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwot
ICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB2
YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdz
dG9yZU5hbWUnKSIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmdldCgna2V5
JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEluZGV4OwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBhZGRJbmRleCgp
Ci17Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0IiwgInZh
bHVlIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZl
cnNpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlRGF0YWJhc2U7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9u
IGRlbGV0ZURhdGFiYXNlKCkKLXsKLSAgICBkYi5vbnZlcnNpb25jaGFuZ2UgPSBmdW5jdGlvbigp
IHsgZGIuY2xvc2UoKTsgfQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5k
ZXhlZERCLmRlbGV0ZURhdGFiYXNlKCdkYXRhYmFzZS10by1kZWxldGUnKSIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gcmVvcGVuRGF0YWJhc2U7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHJlb3BlbkRhdGFiYXNlKCkKLXsK
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2RhdGFiYXNlLXRvLWRl
bGV0ZScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzdGFydFNldFZlcnNpb25BZ2FpbjsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVu
Y3Rpb24gc3RhcnRTZXRWZXJzaW9uQWdhaW4oKQotewotICAgIHJkYiA9IGV2YWxBbmRMb2coImRi
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRi
LnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHZl
cmlmeU5vdEZvdW5kOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotfQotCi1mdW5jdGlvbiB2ZXJpZnlOb3RGb3VuZCgpCi17Ci0gICAgc2hvdWxkQmUoImRi
Lm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjAiKTsKLQotICAgIGZpbmlzaEpTVGVzdCgpOwot
fQotCi10ZXN0KCk7Ci08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZmFjdG9yeS1k
ZWxldGVkYXRhYmFzZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWNvdW50Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1jb3VudC5odG1sCmluZGV4IGYz
MmFlMTM2YWU2ZjU0NzA2NzkxNjhlODJhZTZkNTI3ZTAyYjQ4NmMuLmY4MDExOGUwY2YyZGRjOTBh
NzZhMTc5ZDJkYzgwYzE3M2E0ODczYWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2luZGV4LWNvdW50Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvaW5kZXgtY291bnQuaHRtbApAQCAtNCwxNTkgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJl
c291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0Pgot
Ci1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBJREJJbmRleC5jb3VudCgpLiIpOwotCi1m
dW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignaW5kZXgtY291bnQnKSIpOwotICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7Ci0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRW
ZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHByZXBhcmVE
YXRhYmFzZTsKLSAgICB9OwotfQotCi1mdW5jdGlvbiBwcmVwYXJlRGF0YWJhc2UoKQotewotICAg
IGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygicHJlcGFyaW5nIGRhdGFiYXNlIik7Ci0gICAgc2VsZi50
cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNo
b3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKLQotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jl
cyhkYik7Ci0KLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7Ci0KLSAgICBzZWxmLmluZGV4ID0gZXZhbEFuZExv
Zygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZScsICcnKSIpOwotICAgIHNob3VsZEJlVHJ1
ZSgic3RvcmUuaW5kZXhOYW1lcy5jb250YWlucygnaW5kZXhOYW1lJykiKTsKLQotICAgIGRlYnVn
KCJhZGRpbmcgMCAuLi4gOTkiKTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKSB7
Ci0gICAgICAgIHJlcXVlc3QgPSBzdG9yZS5hZGQoaSwgaSk7Ci0gICAgICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIH0KLSAgICB0cmFucy5vbmNvbXBs
ZXRlID0gdmVyaWZ5Q291bnQ7Ci19Ci0KLWZ1bmN0aW9uIHZlcmlmeUNvdW50KCkKLXsKLSAgICBk
ZWJ1ZygiIik7Ci0gICAgZGVidWcoInZlcmlmeWluZyBjb3VudCB3aXRob3V0IHJhbmdlIik7Ci0g
ICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZU5hbWUn
LCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAh
PSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwot
ICAgIHRyYW5zLm9uY29tcGxldGUgPSB2ZXJpZnlDb3VudFdpdGhSYW5nZTsKLQotICAgIHN0b3Jl
ID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsK
LSAgICBzaG91bGRCZVRydWUoInN0b3JlICE9IG51bGwiKTsKLSAgICBpbmRleCA9IGV2YWxBbmRM
b2coImluZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4TmFtZScpIik7Ci0gICAgc2hvdWxkQmVUcnVl
KCJpbmRleCAhPSBudWxsIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IGluZGV4LmNvdW50KCkiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAgICAg
c2hvdWxkQmVUcnVlKCJ0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251bWJlciciKTsKLSAgICAg
ICAgIHNob3VsZEJlKCJyZXF1ZXN0LnJlc3VsdCIsICIxMDAiKTsKLSAgICAgICAgIC8vIGxldCB0
aGUgdHJhbnNhY3Rpb24gY29tcGxldGUKLSAgICB9OwotfQotCi1mdW5jdGlvbiB2ZXJpZnlDb3Vu
dFdpdGhSYW5nZSgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJ2ZXJpZnlpbmcgY291
bnQgd2l0aCByYW5nZSIpOwotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFu
c2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKSIpOwotICAgIHNo
b3VsZEJlVHJ1ZSgidHJhbnMgIT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVj
dGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gdmVyaWZ5Q291bnRXaXRo
S2V5OwotCi0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3Jl
KCdzdG9yZU5hbWUnKSIpOwotICAgIHNob3VsZEJlVHJ1ZSgic3RvcmUgIT0gbnVsbCIpOwotICAg
IHN0b3JlID0gZXZhbEFuZExvZygiaW5kZXggPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1l
JykuaW5kZXgoJ2luZGV4TmFtZScpIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJpbmRleCAhPSBudWxs
Iik7Ci0KLSAgICB2YXIgdGVzdHMgPSBbCi0gICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3Blbjog
ZmFsc2UsIHVwcGVyOiA5OSwgdXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDEwMCB9LAotICAg
ICAgICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IHRydWUsIHVwcGVyOiA5OSwgdXBwZXJPcGVuOiBm
YWxzZSwgZXhwZWN0ZWQ6IDk5IH0sCi0gICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogZmFs
c2UsIHVwcGVyOiA5OSwgdXBwZXJPcGVuOiB0cnVlLCBleHBlY3RlZDogOTkgfSwKLSAgICAgICAg
eyBsb3dlcjogMCwgbG93ZXJPcGVuOiB0cnVlLCB1cHBlcjogOTksIHVwcGVyT3BlbjogdHJ1ZSwg
ZXhwZWN0ZWQ6IDk4IH0sCi0gICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogZmFsc2UsIHVw
cGVyOiAxMDAsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiAxMDAgfSwKLSAgICAgICAgeyBs
b3dlcjogMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDEwMCwgdXBwZXJPcGVuOiBmYWxzZSwg
ZXhwZWN0ZWQ6IDEwMCB9LAotICAgICAgICB7IGxvd2VyOiAxMCwgbG93ZXJPcGVuOiBmYWxzZSwg
dXBwZXI6IDEwMCwgdXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDkwIH0sCi0gICAgICAgIHsg
bG93ZXI6IDAsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiAwLCB1cHBlck9wZW46IGZhbHNlLCBl
eHBlY3RlZDogMSB9LAotICAgICAgICB7IGxvd2VyOiA1MDAsIGxvd2VyT3BlbjogZmFsc2UsIHVw
cGVyOiA1MDAsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiAwIH0KLSAgICBdOwotCi0gICAg
ZnVuY3Rpb24gbmV4dFRlc3QoKSB7Ci0gICAgICAgIGRlYnVnKCIiKTsKLSAgICAgICAgZXZhbEFu
ZExvZygidGVzdCA9ICIgKyBKU09OLnN0cmluZ2lmeSh0ZXN0cy5zaGlmdCgpKSk7Ci0gICAgICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXguY291bnQoSURCS2V5UmFuZ2Uu
Ym91bmQodGVzdC5sb3dlciwgdGVzdC51cHBlciwgdGVzdC5sb3dlck9wZW4sIHRlc3QudXBwZXJP
cGVuKSkiKTsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg
ICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251bWJlciciKTsKLSAg
ICAgICAgICAgICBzaG91bGRCZSgicmVxdWVzdC5yZXN1bHQiLCBTdHJpbmcodGVzdC5leHBlY3Rl
ZCkpOwotCi0gICAgICAgICAgICAgaWYgKHRlc3RzLmxlbmd0aCkgewotICAgICAgICAgICAgICAg
ICBuZXh0VGVzdCgpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAvLyBvdGhlcndpc2Ug
bGV0IHRoZSB0cmFuc2FjdGlvbiBjb21wbGV0ZQotICAgICAgICB9OwotICAgIH0KLQotICAgIG5l
eHRUZXN0KCk7Ci19Ci0KLWZ1bmN0aW9uIHZlcmlmeUNvdW50V2l0aEtleSgpCi17Ci0gICAgZGVi
dWcoIiIpOwotICAgIGRlYnVnKCJ2ZXJpZnlpbmcgY291bnQgd2l0aCBrZXkiKTsKLSAgICB0cmFu
cyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlTmFtZScsIElEQlRy
YW5zYWN0aW9uLlJFQURfT05MWSkiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9IG51bGwi
KTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJh
bnMub25jb21wbGV0ZSA9IGZpbmlzaEpTVGVzdDsKLQotICAgIHN0b3JlID0gZXZhbEFuZExvZygi
c3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLSAgICBzaG91bGRCZVRy
dWUoInN0b3JlICE9IG51bGwiKTsKLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coImluZGV4ID0gdHJh
bnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpLmluZGV4KCdpbmRleE5hbWUnKSIpOwotICAgIHNo
b3VsZEJlVHJ1ZSgiaW5kZXggIT0gbnVsbCIpOwotCi0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlv
bigiaW5kZXguY291bnQoTmFOKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwot
ICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4LmNvdW50KHt9KSIsICJJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4
LmNvdW50KC9yZWdleC8pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0KLSAg
ICB2YXIgdGVzdHMgPSBbCi0gICAgICAgIHsga2V5OiAwLCBleHBlY3RlZDogMSB9LAotICAgICAg
ICB7IGtleTogMTAwLCBleHBlY3RlZDogMCB9LAotICAgICAgICB7IGtleTogbnVsbCwgZXhwZWN0
ZWQ6IDEwMCB9Ci0gICAgXTsKLQotICAgIGZ1bmN0aW9uIG5leHRUZXN0KCkgewotICAgICAgICBk
ZWJ1ZygiIik7Ci0gICAgICAgIGV2YWxBbmRMb2coInRlc3QgPSAiICsgSlNPTi5zdHJpbmdpZnko
dGVzdHMuc2hpZnQoKSkpOwotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IGluZGV4LmNvdW50KHRlc3Qua2V5KSIpOwotICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlv
bigpIHsKLSAgICAgICAgICAgICBzaG91bGRCZVRydWUoInR5cGVvZiByZXF1ZXN0LnJlc3VsdCA9
PSAnbnVtYmVyJyIpOwotICAgICAgICAgICAgIHNob3VsZEJlKCJyZXF1ZXN0LnJlc3VsdCIsIFN0
cmluZyh0ZXN0LmV4cGVjdGVkKSk7Ci0KLSAgICAgICAgICAgICBpZiAodGVzdHMubGVuZ3RoKSB7
Ci0gICAgICAgICAgICAgICAgIG5leHRUZXN0KCk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAg
ICAgIC8vIG90aGVyd2lzZSBsZXQgdGhlIHRyYW5zYWN0aW9uIGNvbXBsZXRlCi0gICAgICAgIH07
Ci0gICAgfQotCi0gICAgbmV4dFRlc3QoKTsKLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvaW5kZXgtY291bnQuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBz
cmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8
L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9pbmRleC1jdXJzb3IuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4
LWN1cnNvci5odG1sCmluZGV4IDMwYTE2MDczMDlhOGM3NTVjNzhkYTMzYWNkZjcxYjg5OGFkNmUy
YjMuLmM5ZDk0NDQ2OTc3NjkyMzM3YmFiODIzZGE2N2ExYTc5YjE2ZDlmNTYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWN1cnNvci5odG1sCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWN1cnNvci5odG1sCkBAIC00LDI1NCAr
NCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hl
YWQ+CiA8Ym9keT4KLTxzY3JpcHQ+IAotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyB3
ZWJraXRJREJJbmRleC5vcGVuQ3Vyc29yICsgdGhlIGN1cnNvciBpdCBwcm9kdWNlcyBpbiBkZXB0
aC4iKTsKLSAKLS8vIEluIG9yZGVyIG9mIGhvdyBpdCBzaG91bGQgYmUgc29ydGVkIGJ5IEluZGV4
ZWREQi4KLXNlbGYudGVzdERhdGEgPSBbCi0gICAgMSwKLSAgICAxLAotICAgIDMuMTQxNTksCi0g
ICAgMy4xNDE1OSwKLSAgICAxMCwKLSAgICAvLyBGSVhNRTogRGF0ZXMuCi0gICAgIkEgYmlnIHN0
cmluZyIsCi0gICAgInRoZSBCSUdFU1Qgc3RyaW5nIiwKLSAgICAidGhlIEJJR0VTVCBzdHJpbmci
Ci1dOwotIAotZnVuY3Rpb24gb3BlbkRhdGFiYXNlKCkKLXsKLSAgICByZXN1bHQgPSBldmFsQW5k
TG9nKCJpbmRleGVkREIub3BlbignaW5kZXgtY3Vyc29yJykiKTsKLSAgICByZXN1bHQub25zdWNj
ZXNzID0gc2V0VmVyc2lvbjsKLSAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotfQotIAotZnVuY3Rpb24gc2V0VmVyc2lvbigpCi17Ci0gICAgc2VsZi5kYiA9IGV2
YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVzdWx0ID0gZXZh
bEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOwotICAgIHJlc3VsdC5vbnN1
Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKLSAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBkZWxldGVFeGlzdGluZygpCi17Ci0gICAgc2Vs
Zi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAg
IHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5l
eHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwot
Ci0gICAgc2VsZi5vYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdzb21lT2JqZWN0U3RvcmUnKSIpOwotICAgIHNlbGYuaW5kZXhPYmplY3QgPSBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgnc29tZUluZGV4JywgJ3gnKSIpOwotICAgIHNlbGYu
bmV4dFRvQWRkID0gMDsKLSAgICBhZGREYXRhKCk7Ci19Ci0KLWZ1bmN0aW9uIGFkZERhdGEoKQot
ewotICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCh7J3gnOiB0ZXN0RGF0
YVtuZXh0VG9BZGRdfSwgbmV4dFRvQWRkKSIpOwotICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSArK3Nl
bGYubmV4dFRvQWRkIDwgdGVzdERhdGEubGVuZ3RoID8gYWRkRGF0YSA6IHNjaGVkdWxlVGVzdHM7
Ci0gICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVu
Y3Rpb24gc2NoZWR1bGVUZXN0cygpCi17Ci0gICAgZGVidWcoIlNjaGVkdWxpbmcgdGVzdHMuLi4i
KTsKLSAgICBzZWxmLnNjaGVkdWxlZFRlc3RzID0gW107Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkg
PCB0ZXN0RGF0YS5sZW5ndGg7ICsraSkgewotICAgICAgICAvKiBsZWZ0IGJvdW5kLCBpcyBvcGVu
LCByaWdodCBib3VuZCwgaXMgb3BlbiwgYXNjZW5kaW5nICovCi0gICAgICAgIHNjaGVkdWxlZFRl
c3RzLnVuc2hpZnQoW2ksIHRydWUsIG51bGwsIG51bGwsIHRydWVdKTsKLSAgICAgICAgc2NoZWR1
bGVkVGVzdHMudW5zaGlmdChbaSwgZmFsc2UsIG51bGwsIG51bGwsIHRydWVdKTsKLSAgICAgICAg
c2NoZWR1bGVkVGVzdHMudW5zaGlmdChbbnVsbCwgbnVsbCwgaSwgdHJ1ZSwgdHJ1ZV0pOwotICAg
ICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtudWxsLCBudWxsLCBpLCBmYWxzZSwgdHJ1ZV0p
OwotICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCB0cnVlLCBudWxsLCBudWxsLCBm
YWxzZV0pOwotICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCBmYWxzZSwgbnVsbCwg
bnVsbCwgZmFsc2VdKTsKLSAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbbnVsbCwgbnVs
bCwgaSwgdHJ1ZSwgZmFsc2VdKTsKLSAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbbnVs
bCwgbnVsbCwgaSwgZmFsc2UsIGZhbHNlXSk7Ci0gICAgICAgIGZvciAodmFyIGogPSA2OyBqIDwg
dGVzdERhdGEubGVuZ3RoOyArK2opIHsKLSAgICAgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hp
ZnQoW2ksIHRydWUsIGosIHRydWUsIHRydWVdKTsKLSAgICAgICAgICAgIHNjaGVkdWxlZFRlc3Rz
LnVuc2hpZnQoW2ksIHRydWUsIGosIGZhbHNlLCB0cnVlXSk7Ci0gICAgICAgICAgICBzY2hlZHVs
ZWRUZXN0cy51bnNoaWZ0KFtpLCBmYWxzZSwgaiwgdHJ1ZSwgdHJ1ZV0pOwotICAgICAgICAgICAg
c2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgZmFsc2UsIGosIGZhbHNlLCB0cnVlXSk7Ci0gICAg
ICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCB0cnVlLCBqLCB0cnVlLCBmYWxzZV0p
OwotICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwgaiwgZmFsc2Us
IGZhbHNlXSk7Ci0gICAgICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCBmYWxzZSwg
aiwgdHJ1ZSwgZmFsc2VdKTsKLSAgICAgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ks
IGZhbHNlLCBqLCBmYWxzZSwgZmFsc2VdKTsKLSAgICAgICAgfQotICAgIH0KLSAKLSAgICBkZWJ1
ZygiUnVubmluZyB0ZXN0cy4uLiIpOwotICAgIHJ1bk5leHRUZXN0KCk7Ci19Ci0gCi1mdW5jdGlv
biBydW5OZXh0VGVzdCgpCi17Ci0gICAgaWYgKCFzY2hlZHVsZWRUZXN0cy5sZW5ndGgpIHsKLSAg
ICAgICAgdGVzdE51bGxLZXlSYW5nZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotIAotICAg
IHZhciB0ZXN0ID0gc2NoZWR1bGVkVGVzdHMucG9wKCk7Ci0gICAgc2VsZi5sb3dlciA9IHRlc3Rb
MF07Ci0gICAgc2VsZi5sb3dlcklzT3BlbiA9IHRlc3RbMV07Ci0gICAgc2VsZi51cHBlciA9IHRl
c3RbMl07Ci0gICAgc2VsZi51cHBlcklzT3BlbiA9IHRlc3RbM107Ci0gICAgc2VsZi5hc2NlbmRp
bmcgPSB0ZXN0WzRdOwotCi0gICAgc3RyID0gIk5leHQgdGVzdDogIjsKLSAgICBpZiAobG93ZXIg
IT09IG51bGwpIHsKLSAgICAgICAgc3RyICs9ICJsb3dlciAiOwotICAgICAgICBpZiAobG93ZXJJ
c09wZW4pCi0gICAgICAgICAgICBzdHIgKz0gIm9wZW4gIjsKLSAgICAgICAgc3RyICs9ICJib3Vu
ZCBpcyAiICsgbG93ZXIgKyAiOyAiOwotICAgIH0KLSAgICBpZiAodXBwZXIgIT09IG51bGwpIHsK
LSAgICAgICAgc3RyICs9ICJ1cHBlciAiOwotICAgICAgICBpZiAodXBwZXJJc09wZW4pCi0gICAg
ICAgICAgICBzdHIgKz0gIm9wZW4gIjsKLSAgICAgICAgc3RyICs9ICJib3VuZCBpcyAiICsgdXBw
ZXIgKyAiOyAiOwotICAgIH0KLSAgICBpZiAoYXNjZW5kaW5nKQotICAgICAgICBzdHIgKz0gInNv
cnRlZCBhc2NlbmRpbmcuIjsKLSAgICBlbHNlCi0gICAgICAgIHN0ciArPSAic29ydGVkIGRlc2Nl
bmRpbmcuIjsKLQotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZyhzdHIpOwotCi0gICAgLy8gV29y
ayBhcm91bmQgZm9yIGR1cGxpY2F0ZSB2YWx1ZXMuCi0gICAgaWYgKHVwcGVyICE9PSBudWxsKSB7
Ci0gICAgICAgIGlmICh1cHBlcklzT3BlbikgewotICAgICAgICAgICAgd2hpbGUgKHVwcGVyID4g
MCAmJiB0ZXN0RGF0YVt1cHBlcl0gPT09IHRlc3REYXRhW3VwcGVyIC0gMV0pCi0gICAgICAgICAg
ICAgICAgLS1zZWxmLnVwcGVyOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgd2hpbGUg
KHVwcGVyIDwgdGVzdERhdGEubGVuZ3RoIC0gMSAmJiB0ZXN0RGF0YVt1cHBlcl0gPT09IHRlc3RE
YXRhW3VwcGVyICsgMV0pCi0gICAgICAgICAgICAgICAgKytzZWxmLnVwcGVyOwotICAgICAgICB9
Ci0gICAgfQotICAgIGlmIChsb3dlciAhPT0gbnVsbCkgewotICAgICAgICBpZiAobG93ZXJJc09w
ZW4pIHsKLSAgICAgICAgICAgIHdoaWxlIChsb3dlciA8IHRlc3REYXRhLmxlbmd0aCAtIDEgJiYg
dGVzdERhdGFbbG93ZXJdID09PSB0ZXN0RGF0YVtsb3dlciArIDFdKQotICAgICAgICAgICAgICAg
ICsrc2VsZi5sb3dlcjsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHdoaWxlIChsb3dl
ciA+IDAgJiYgdGVzdERhdGFbbG93ZXJdID09PSB0ZXN0RGF0YVtsb3dlciAtIDFdKQotICAgICAg
ICAgICAgICAgIC0tc2VsZi5sb3dlcjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChhc2Nl
bmRpbmcpIHsKLSAgICAgICAgaWYgKGxvd2VyICE9PSBudWxsKSB7Ci0gICAgICAgICAgICBpZiAo
IWxvd2VySXNPcGVuKQotICAgICAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IGxvd2Vy
OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9
IGxvd2VyICsgMTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBzZWxmLmV4cGVjdGVkSW5k
ZXggPSAwOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICh1cHBlciAhPT0gbnVsbCkgewotICAg
ICAgICAgICAgaWYgKCF1cHBlcklzT3BlbikKLSAgICAgICAgICAgICAgICBzZWxmLmV4cGVjdGVk
SW5kZXggPSB1cHBlcjsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBzZWxmLmV4
cGVjdGVkSW5kZXggPSB1cHBlciAtIDE7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgc2Vs
Zi5leHBlY3RlZEluZGV4ID0gdGVzdERhdGEubGVuZ3RoIC0gMTsKLSAgICB9Ci0gICAgdGVzdFdp
dGhpbkJvdW5kcygpOwotIAotICAgIGlmICh0ZXN0RGF0YVtsb3dlcl0gPT09IHRlc3REYXRhW3Vw
cGVyXSAmJiAobG93ZXJJc09wZW4gfHwgdXBwZXJJc09wZW4pKSB7Ci0gICAgICAgIGRlYnVnKCJT
a2lwcGluZyBpbGxlZ2FsIGtleSByYW5nZS4iKTsKLSAgICAgICAgcnVuTmV4dFRlc3QoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHZhciBrZXlSYW5nZTsKLSAgICBpZiAobG93ZXIg
IT09IG51bGwgJiYgdXBwZXIgIT09IG51bGwpCi0gICAgICAgIGtleVJhbmdlID0gSURCS2V5UmFu
Z2UuYm91bmQodGVzdERhdGFbbG93ZXJdLCB0ZXN0RGF0YVt1cHBlcl0sIGxvd2VySXNPcGVuLCB1
cHBlcklzT3Blbik7Ci0gICAgZWxzZSBpZiAobG93ZXIgIT09IG51bGwpCi0gICAgICAgIGtleVJh
bmdlID0gSURCS2V5UmFuZ2UubG93ZXJCb3VuZCh0ZXN0RGF0YVtsb3dlcl0sIGxvd2VySXNPcGVu
KTsKLSAgICBlbHNlCi0gICAgICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2UudXBwZXJCb3VuZCh0
ZXN0RGF0YVt1cHBlcl0sIHVwcGVySXNPcGVuKTsKLSAKLSAgICB2YXIgcmVxdWVzdCA9IGluZGV4
T2JqZWN0Lm9wZW5LZXlDdXJzb3Ioa2V5UmFuZ2UsIGFzY2VuZGluZyA/IElEQkN1cnNvci5ORVhU
IDogSURCQ3Vyc29yLlBSRVYpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29ySXRlcmF0
aW9uOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQot
Ci1mdW5jdGlvbiB0ZXN0V2l0aGluQm91bmRzKCkKLXsKLSAgICBpZiAoZXhwZWN0ZWRJbmRleCA8
IDAgfHwgdGVzdERhdGEubGVuZ3RoIDw9IGV4cGVjdGVkSW5kZXgpCi0gICAgICAgIHNlbGYuZXhw
ZWN0ZWRJbmRleCA9IG51bGw7Ci0gICAgaWYgKGxvd2VyICE9PSBudWxsICYmIGV4cGVjdGVkSW5k
ZXggPCBsb3dlcikKLSAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gbnVsbDsKLSAgICBpZiAo
dXBwZXIgIT09IG51bGwgJiYgdXBwZXIgPCBleHBlY3RlZEluZGV4KQotICAgICAgICBzZWxmLmV4
cGVjdGVkSW5kZXggPSBudWxsOwotICAgIGlmIChsb3dlciAhPT0gbnVsbCAmJiBsb3dlcklzT3Bl
biAmJiBleHBlY3RlZEluZGV4IDw9IGxvd2VyKQotICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXgg
PSBudWxsOwotICAgIGlmICh1cHBlciAhPT0gbnVsbCAmJiB1cHBlcklzT3BlbiAmJiB1cHBlciA8
PSBleHBlY3RlZEluZGV4KQotICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSBudWxsOwotfQot
IAotZnVuY3Rpb24gY3Vyc29ySXRlcmF0aW9uKCkKLXsKLSAgICBpZiAoZXhwZWN0ZWRJbmRleCA9
PT0gbnVsbCkgewotICAgICAgICBzaG91bGRCZU51bGwoImV2ZW50LnRhcmdldC5yZXN1bHQiKTsK
LSAgICAgICAgcnVuTmV4dFRlc3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAo
ZXZlbnQudGFyZ2V0LnJlc3VsdCA9PT0gbnVsbCkgewotICAgICAgICB0ZXN0RmFpbGVkKCJldmVu
dC50YXJnZXQucmVzdWx0IHNob3VsZCBub3QgYmUgbnVsbC4iKTsKLSAgICAgICAgcnVuTmV4dFRl
c3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAKLSAgICBzaG91bGRCZSgiZXZlbnQudGFy
Z2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgImV4cGVjdGVkSW5kZXgiKTsKLSAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAidGVzdERhdGFbIiArIGV4cGVjdGVkSW5kZXggKyAi
XSIpOwotICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IGFzY2VuZGluZyA/IGV4cGVjdGVkSW5kZXgg
KyAxIDogZXhwZWN0ZWRJbmRleCAtIDE7Ci0gICAgdGVzdFdpdGhpbkJvdW5kcygpOwotCi0gICAg
ZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpOwotfQotIAotc2VsZi5udWxsS2V5UmFuZ2VT
dGVwID0gMDsKLWZ1bmN0aW9uIHRlc3ROdWxsS2V5UmFuZ2UoKQotewotICAgIHNlbGYubG93ZXIg
PSAwOwotICAgIHNlbGYubG93ZXJJc09wZW4gPSBmYWxzZTsKLSAgICBzZWxmLnVwcGVyID0gdGVz
dERhdGEubGVuZ3RoLTE7Ci0gICAgc2VsZi51cHBlcklzT3BlbiA9IGZhbHNlOwotCi0gICAgc3Ry
ID0gIk5leHQgdGVzdDogbnVsbCBrZXkgcGF0aCAiOwotICAgIGlmIChzZWxmLm51bGxLZXlSYW5n
ZVN0ZXAgPT0gMCkgewotICAgICAgICBzdHIgKz0gInNvcnRlZCBhc2NlbmRpbmcuIjsKLSAgICAg
ICAgc2VsZi5hc2NlbmRpbmcgPSB0cnVlOwotICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSBs
b3dlcjsKLSAgICAgICAgc2VsZi5udWxsS2V5UmFuZ2VTdGVwID0gMTsKLSAgICB9IGVsc2UgaWYg
KHNlbGYubnVsbEtleVJhbmdlU3RlcCA9PSAxKSB7Ci0gICAgICAgIHN0ciArPSAic29ydGVkIGRl
c2NlbmRpbmcuIjsKLSAgICAgICAgc2VsZi5hc2NlbmRpbmcgPSBmYWxzZTsKLSAgICAgICAgc2Vs
Zi5leHBlY3RlZEluZGV4ID0gdXBwZXI7Ci0gICAgICAgIHNlbGYubnVsbEtleVJhbmdlU3RlcCA9
IDI7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoc3RyKTsKLSAKLSAgICB2YXIg
cmVxdWVzdCA9IGluZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3IobnVsbCwgYXNjZW5kaW5nID8gSURC
Q3Vyc29yLk5FWFQgOiBJREJDdXJzb3IuUFJFVik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBj
dXJzb3JJdGVyYXRpb247Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci19Ci0gCi1yZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotb3BlbkRhdGFiYXNlKCk7IC8v
IFRoZSBmaXJzdCBzdGVwLgotIAotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2lu
ZGV4LWN1cnNvci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWdldC1rZXktYXJndW1l
bnQtcmVxdWlyZWQuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWdl
dC1rZXktYXJndW1lbnQtcmVxdWlyZWQuaHRtbAppbmRleCAzYjllYTFkNjVjN2NmMDc5MzIyMTBh
NmUyNWUzNGE3YTZlYmNmMjNhLi5kZGI3Y2UzNzE2ZTZjOGZhZGY3ZDUxOGI0ZDM3MGYyMjNmYTU3
NDNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1nZXQt
a2V5LWFyZ3VtZW50LXJlcXVpcmVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvaW5kZXgtZ2V0LWtleS1hcmd1bWVudC1yZXF1aXJlZC5odG1sCkBAIC0xLDQ5ICsxLDEw
IEBACi08IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0
PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgaW5kZXggLmdldCgpIHJlcXVpcmVkIGFy
Z3VtZW50Iik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVz
KCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlv
biA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhl
ZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBv
cGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygi
ZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
Y3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY3JlYXRlQW5kUG9wdWxhdGVPYmpl
Y3RTdG9yZSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9iamVj
dFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgn
Zm9vJywgeyBrZXlQYXRoOiAnaWQnLCBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOyIpOwotICAgIGlu
ZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgnZmlyc3Qn
LCAnZmlyc3QnKTsiKTsKLSAgICBzaG91bGRUaHJvdygiaW5kZXguZ2V0KCk7Iik7Ci0gICAgc2hv
dWxkVGhyb3coImluZGV4LmdldEtleSgpOyIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0K
LXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2luZGV4LWdldC1r
ZXktYXJndW1lbnQtcmVxdWlyZWQuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1tdWx0
aWVudHJ5Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1tdWx0aWVu
dHJ5Lmh0bWwKaW5kZXggNWM3NTk5ZjBjNTAyZjdlNjdkZjQ5MmQ4NDI1ZDI1YTgwMDBkYTA4NS4u
ZjhiMmRmNTlmNmIzZTg3OWI3YzEwNmIzZjU0Nzk4NjdiYjRjZGVmMiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtbXVsdGllbnRyeS5odG1sCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LW11bHRpZW50cnkuaHRtbApAQCAtNCwx
NDYgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0Pgog
PC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBmZWF0dXJlcyBv
ZiBJbmRleGVkREIncyBtdWx0aUVudHJ5IGluZGljZXMuIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQot
ewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiaW5kZXhlZERCLm9wZW4oJ2luZGV4LW11bHRpRW50cnknKSIpOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7Ci0KLSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24o
JzEnKSIpOwotICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwcmVwYXJlRGF0YWJhc2U7Ci0gICAgfTsK
LX0KLQotZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAg
ZGVidWcoIkNyZWF0aW5nIGVtcHR5IHN0b3JlcyBhbmQgaW5kZXhlcyIpOwotICAgIHZhciB0cmFu
cyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3Vs
ZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3Rl
ZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IGFkZERhdGE7Ci0KLSAgICBk
ZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9y
ZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7Ci0gICAgZXZhbEFuZExvZygic3Rv
cmUuY3JlYXRlSW5kZXgoJ2luZGV4JywgJ3gnLCB7bXVsdGlFbnRyeTogdHJ1ZX0pIik7Ci0KLSAg
ICBzdG9yZTIgPSBldmFsQW5kTG9nKCJzdG9yZTIgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3Rv
cmUtdW5pcXVlJykiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZTIuY3JlYXRlSW5kZXgoJ2luZGV4
LXVuaXF1ZScsICd4Jywge211bHRpRW50cnk6IHRydWUsIHVuaXF1ZTogdHJ1ZX0pIik7Ci19Ci0K
LWZ1bmN0aW9uIGFkZERhdGEoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiUG9wdWxh
dGluZyBzdG9yZXMgKGFuZCBpbmRleGVzKSIpOwotICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExv
ZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9u
LlJFQURfV1JJVEUpIik7Ci0gICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9y
dENhbGxiYWNrOwotICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbigpIHsgdmVy
aWZ5SW5kZXhlcygnaW5kZXgnLCB2ZXJpZnlVbmlxdWVDb25zdHJhaW50KTsgfTsKLQotICAgIGRl
YnVnKCJGaXJzdCB0cnkgc29tZSBrZXlzIHRoYXQgYXJlbid0IHdoYXQgd2UncmUgZXhwZWN0aW5n
Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdz
dG9yZScpLnB1dCh7eDogWzcsIDgsIDldLCB5OiAnYSd9LCAnZm9vJykiKTsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICBkZWJ1ZygiTm93IG92ZXJ3
cml0ZSB0aGVtIHdpdGggd2hhdCB3ZSdyZSBleHBlY3RpbmciKTsKLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KHt4OiBbMSwgMiwg
M10sIHk6ICdhJ30sICdmb28nKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmpl
Y3RTdG9yZSgnc3RvcmUnKS5wdXQoe3g6IFs0LCA1LCA2XSwgeTogJ2InfSwgJ2JhcicpIik7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0
aW9uIHZlcmlmeUluZGV4ZXMoaW5kZXhOYW1lLCBjYWxsYmFjaykKLXsKLSAgICBkZWJ1ZygiIik7
Ci0gICAgZGVidWcoIlZlcmlmeWluZyBpbmRleDogIiArIGluZGV4TmFtZSk7Ci0gICAgdHJhbnNh
Y3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUn
XSwgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKSIpOwotICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQg
PSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0g
Y2FsbGJhY2s7Ci0KLSAgICBleHBlY3RlZCA9IFsKLSAgICAgICAgeyBrZXk6IDEsIHByaW1hcnlL
ZXk6ICdmb28nLCB5OiAnYScgfSwKLSAgICAgICAgeyBrZXk6IDIsIHByaW1hcnlLZXk6ICdmb28n
LCB5OiAnYScgfSwKLSAgICAgICAgeyBrZXk6IDMsIHByaW1hcnlLZXk6ICdmb28nLCB5OiAnYScg
fSwKLSAgICAgICAgeyBrZXk6IDQsIHByaW1hcnlLZXk6ICdiYXInLCB5OiAnYicgfSwKLSAgICAg
ICAgeyBrZXk6IDUsIHByaW1hcnlLZXk6ICdiYXInLCB5OiAnYicgfSwKLSAgICAgICAgeyBrZXk6
IDYsIHByaW1hcnlLZXk6ICdiYXInLCB5OiAnYicgfSwKLSAgICBdOwotCi0gICAgdmFyIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKS5pbmRleCgn
IiArIGluZGV4TmFtZSArICInKS5vcGVuQ3Vyc29yKCkiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0
aW9uKGV2ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKLSAgICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICAgICAgZXgg
PSBleHBlY3RlZC5zaGlmdCgpOwotICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJleCAhPSBudWxs
Iik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsIFN0cmluZyhleC5rZXkpKTsK
LSAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY3Vyc29yLnByaW1hcnlLZXkiLCBl
eC5wcmltYXJ5S2V5KTsKLSAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY3Vyc29y
LnZhbHVlLnkiLCBleC55KTsKLSAgICAgICAgICAgIGN1cnNvci5jb250aW51ZSgpOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJleHBlY3RlZC5sZW5ndGggPT09
IDAiKTsKLSAgICAgICAgfQotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIHZlcmlmeVVuaXF1ZUNvbnN0
cmFpbnQoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiVmVyaWZ5aW5nIHVuaXF1ZSBj
b25zdHJhaW50IG9uIG11bHRpRW50cnkgaW5kZXgiKTsKLSAgICB0cmFuc2FjdGlvbiA9IGV2YWxB
bmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZS11bmlxdWUnXSwgSURC
VHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gZnVu
Y3Rpb24gKCkgewotICAgICAgICBkZWJ1ZygiVHJhbnNhY3Rpb24gYWJvcnRlZCBhcyBleHBlY3Rl
ZCIpOwotICAgICAgICBjcmVhdGVJbmRleE9uU3RvcmVXaXRoRGF0YSgpOwotICAgIH07Ci0gICAg
dHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOwotCi0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZS11
bmlxdWUnKS5wdXQoe3g6IFsxLCAyLCAzXSwgeTogJ2EnfSwgJ2ZvbycpIik7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgZGVidWcoInN1Y2Nlc3MhIik7Ci0gICAgICAgIGRl
YnVnKCJSZXBsYWNlIGFuIGV4aXN0aW5nIHJlY29yZCAtIHRoaXMgc2hvdWxkIHdvcmsiKTsKLSAg
ICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9y
ZS11bmlxdWUnKS5wdXQoe3g6IFsxLCAyLCA3XSwgeTogJ2EnfSwgJ2ZvbycpIik7Ci0gICAgICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgZGVidWcoInN1Y2Nlc3Mh
Iik7Ci0gICAgICAgICAgICBkZWJ1ZygiVGhpcyBzaG91bGQgZmFpbCB0aGUgdW5pcXVlbmVzcyBj
b25zdHJhaW50IG9uIHRoZSBpbmRleCwgYW5kIGZhaWw6Iik7Ci0gICAgICAgICAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlLXVuaXF1ZScpLnB1
dCh7eDogWzUsIDJdLCB5OiAnYyd9LCAnc2hvdWxkIGZhaWwnKSIpOwotICAgICAgICAgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOwotICAgICAgICAgICAg
cmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oKSB7IGRlYnVnKCJSZXF1ZXN0IGZhaWxlZCwgYXMg
ZXhwZWN0ZWQiKTsgfTsKLSAgICAgICAgfTsKLSAgICB9OwotfQotCi1mdW5jdGlvbiBjcmVhdGVJ
bmRleE9uU3RvcmVXaXRoRGF0YSgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJDcmVh
dGUgYW4gaW5kZXggb24gYSBwb3B1bGF0ZWQgc3RvcmUiKTsKLQotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJkYi5zZXRWZXJzaW9uKCcyJykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkg
ewotCi0gICAgICAgIHZhciB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOwotICAgICAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0gICAg
ICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICAgICAgdHJh
bnMub25jb21wbGV0ZSA9IGZ1bmN0aW9uKCkgeyB2ZXJpZnlJbmRleGVzKCdpbmRleC1uZXcnLCBm
aW5pc2hKU1Rlc3QpOyB9OwotCi0gICAgICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0
cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5j
cmVhdGVJbmRleCgnaW5kZXgtbmV3JywgJ3gnLCB7bXVsdGlFbnRyeTogdHJ1ZX0pIik7Ci0gICAg
fTsKLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaW5k
ZXgtbXVsdGllbnRyeS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KLQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtcG9wdWxhdGlv
bi5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtcG9wdWxhdGlvbi5o
dG1sCmluZGV4IDFjYjI4NWIzYTYyYjVkMGQ1ZmY4YTRkMmFkMTc5NWRhODMyOWYyNjQuLjQ5ZjM4
M2UwMGNlNmEwMzg0M2RhZGMxYjliMTE4MjczMzQ0NWY1NWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LXBvcHVsYXRpb24uaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1wb3B1bGF0aW9uLmh0bWwKQEAgLTQsOTYgKzQs
NyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFk
PgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgaW5kZXgg
cG9wdWxhdGlvbi4iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJl
Zml4ZXMoKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIuZGVsZXRlRGF0
YWJhc2UoJ2luZGV4LXBvcHVsYXRpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVs
ZXRlU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLX0KLQotZnVuY3Rpb24gZGVsZXRlU3VjY2VzcygpCi17Ci0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImluZGV4ZWREQi5vcGVuKCdpbmRleC1wb3B1bGF0aW9uJykiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGRvU2V0VmVyc2lvbjE7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGRvU2V0VmVyc2lvbjEoKQotewotICAg
IGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiZG9TZXRWZXJzaW9uMSgpOiIpOwotICAgIHNlbGYuZGIg
PSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uMTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvbjEoKQotewot
ICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1Zygic2V0VmVyc2lvbjEoKToiKTsKLSAgICB0cmFuc2Fj
dGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gcmVxdWVzdC5yZXN1bHQiKTsKLSAgICB0
cmFuc2FjdGlvbi5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgdHJhbnNh
Y3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIHN0b3JlID0gZXZh
bEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUxJykiKTsKLSAgICBl
dmFsQW5kTG9nKCJzdG9yZS5wdXQoe2RhdGE6ICdhJywgaW5kZXhLZXk6IDEwfSwgMSkiKTsKLSAg
ICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoe2RhdGE6ICdiJywgaW5kZXhLZXk6IDIwfSwgMikiKTsK
LSAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoe2RhdGE6ICdjJywgaW5kZXhLZXk6IDEwfSwgMyki
KTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoe2RhdGE6ICdkJywgaW5kZXhLZXk6IDIwfSwg
NCkiKTsKLSAgICBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleDEn
LCAnaW5kZXhLZXknKSIpOwotICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXggaW5zdGFuY2VvZiBJREJJ
bmRleCIpOwotICAgIHNob3VsZEJlRmFsc2UoImluZGV4LnVuaXF1ZSIpOwotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXguY291bnQoSURCS2V5UmFuZ2UuYm91bmQoLUlu
ZmluaXR5LCBJbmZpbml0eSkpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7Ci0gICAg
ICAgIHNob3VsZEJlKCJyZXF1ZXN0LnJlc3VsdCIsICI0Iik7Ci0gICAgfTsKLSAgICB0cmFuc2Fj
dGlvbi5vbmNvbXBsZXRlID0gZG9TZXRWZXJzaW9uMjsKLX0KLQotZnVuY3Rpb24gZG9TZXRWZXJz
aW9uMigpIHsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoImRvU2V0VmVyc2lvbjIoKToiKTsK
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNp
b24gMicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uMjsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc2V0
VmVyc2lvbjIoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1Zygic2V0VmVyc2lvbjIoKToi
KTsKLSAgICB0cmFuc2FjdGlvbjIgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IHJlcXVlc3Qu
cmVzdWx0Iik7Ci0gICAgdHJhbnNhY3Rpb24yLm9uYWJvcnQgPSBzZXRWZXJzaW9uMkFib3J0Owot
ICAgIHRyYW5zYWN0aW9uMi5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7
Ci0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdz
dG9yZTInKSIpOwotICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCh7ZGF0YTogJ2EnLCBpbmRleEtl
eTogMTB9LCAxKSIpOwotICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCh7ZGF0YTogJ2InLCBpbmRl
eEtleTogMjB9LCAyKSIpOwotICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCh7ZGF0YTogJ2MnLCBp
bmRleEtleTogMTB9LCAzKSIpOwotICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCh7ZGF0YTogJ2Qn
LCBpbmRleEtleTogMjB9LCA0KSIpOwotICAgIGV2YWxBbmRMb2coImluZGV4MiA9IHN0b3JlLmNy
ZWF0ZUluZGV4KCdpbmRleDInLCAnaW5kZXhLZXknLCB7IHVuaXF1ZTogdHJ1ZSB9KSIpOwotICAg
IHNob3VsZEJlVHJ1ZSgiaW5kZXgyIGluc3RhbmNlb2YgSURCSW5kZXgiKTsKLSAgICBzaG91bGRC
ZVRydWUoImluZGV4Mi51bmlxdWUiKTsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvbjJBYm9ydCgp
Ci17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJzZXRWZXJzaW9uMkFib3J0KCk6Iik7Ci0g
ICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjEiKTsKLSAgICBzaG91
bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lc1swXSIsICInc3RvcmUxJyIpOwotICAgIGZpbmlzaEpT
VGVzdCgpOwotfQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9pbmRleC1wb3B1bGF0aW9uLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtdW5pcXVl
Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC11bmlxdWUuaHRtbApp
bmRleCA1YTU0NDNjNTllOGFiZjAyZTNjOGY1Y2ZlMjkyNmQ3OTJjYzhjNmE1Li5jNjYzOGRmNmEw
NmJmM2M0YjJmNGJhODI3ODBmYWQwNGJkOGViMzg3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9pbmRleC11bmlxdWUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9pbmRleC11bmlxdWUuaHRtbApAQCAtNCwxNDMgKzQsNyBAQAogPHNjcmlw
dCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08
c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBmZWF0dXJlcyBvZiBJbmRleGVkREIncyB1bmlx
dWUgaW5kaWNlcy4iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJl
Zml4ZXMoKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2luZGV4
LXVuaXF1ZScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uOwotICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBz
ZXRWZXJzaW9uKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2
ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4aXN0aW5nOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlv
biBkZWxldGVFeGlzdGluZygpCi17Ci0gICAgZGVidWcoImRlbGV0ZUV4aXN0aW5nKCk6Iik7Ci0g
ICAgdmFyIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQg
PSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gc2V0VmVy
c2lvbkNvbXBsZXRlZDsKLQotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBz
ZWxmLnN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsK
LSAgICBzZWxmLmluZGV4T2JqZWN0ID0gZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2lu
ZGV4JywgJ3gnLCB7dW5pcXVlOiB0cnVlfSkiKTsKLQotICAgIC8vIExldCBzZXRWZXJzaW9uIHRy
YW5zYWN0aW9uIGNvbXBsZXRlLgotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uQ29tcGxldGVkKCkK
LXsKLSAgICBkZWJ1Zygic2V0VmVyc2lvbkNvbXBsZXRlZCgpOiIpOwotICAgIHNlbGYudHJhbnNh
Y3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUn
XSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKS5wdXQoe3g6IDF9LCAnZm9vJyki
KTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZE1vcmVEYXRhOwotfQotCi1mdW5jdGlvbiBhZGRNb3JlRGF0
YSgpCi17Ci0gICAgZGVidWcoImFkZE1vcmVEYXRhKCk6Iik7Ci0KLSAgICAvLyBUaGUgeCB2YWx1
ZSB2aW9sYXRlcyB0aGUgdW5pcXVlbmVzcyBjb25zdHJhaW50IG9mIHRoZSBpbmRleC4KLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0
KHt4OiAxfSwgJ2JhcicpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gYWRkTW9yZURhdGFGYWls
ZWQ7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOwot
fQotCi1mdW5jdGlvbiBhZGRNb3JlRGF0YUZhaWxlZCgpCi17Ci0gICAgZGVidWcoImFkZE1vcmVE
YXRhRmFpbGVkKCk6Iik7Ci0KLSAgICAvLyBEb24ndCBhYm9ydCB0aGUgdHJhbnNhY3Rpb24uCi0g
ICAgZXZhbEFuZExvZygiZXZlbnQucHJldmVudERlZmF1bHQoKSIpOwotCi0gICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldC5lcnJvckNvZGUiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uQ09OU1RSQUlO
VF9FUlIiKTsKLQotICAgIC8vIFVwZGF0ZSB0aGUgJ2ZvbycgZW50cnkgaW4gb2JqZWN0IHN0b3Jl
LCBjaGFuZ2luZyB0aGUgdmFsdWUgb2YgeC4KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJh
bnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KHt4OiAwfSwgJ2ZvbycpIik7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBjaGFuZ2VEYXRhU3VjY2VzczsKLX0KLQotZnVuY3Rpb24gY2hhbmdlRGF0YVN1
Y2Nlc3MoKQotewotICAgIGRlYnVnKCJjaGFuZ2VEYXRhU3VjY2VzcygpOiIpOwotCi0gICAgLy8g
QW4gaW5kZXggY3Vyc29yIHN0YXJ0aW5nIGF0IDEgc2hvdWxkIG5vdCBmaW5kIGFueXRoaW5nLgot
ICAgIHZhciByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0
b3JlJykuaW5kZXgoJ2luZGV4Jykub3BlbkN1cnNvcihJREJLZXlSYW5nZS5sb3dlckJvdW5kKDEp
KSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29yU3VjY2VzczsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY3Vyc29y
U3VjY2VzcygpCi17Ci0gICAgZGVidWcoImN1cnNvclN1Y2Nlc3MoKToiKTsKLSAgICBzaG91bGRC
ZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJudWxsIik7Ci0KLSAgICAvLyBBIGtleSBjdXJzb3Ig
c3RhcnRpbmcgYXQgMSBzaG91bGQgbm90IGZpbmQgYW55dGhpbmcuCi0gICAgdmFyIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKS5pbmRleCgnaW5k
ZXgnKS5vcGVuS2V5Q3Vyc29yKElEQktleVJhbmdlLmxvd2VyQm91bmQoMSkpIik7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBrZXlDdXJzb3JTdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBrZXlDdXJzb3JTdWNjZXNz
KCkKLXsKLSAgICBkZWJ1Zygia2V5Q3Vyc29yU3VjY2VzcygpOiIpOwotICAgIHNob3VsZEJlKCJl
dmVudC50YXJnZXQucmVzdWx0IiwgIm51bGwiKTsKLQotICAgIC8vIE5vdyB3ZSBzaG91bGQgYmUg
YWJsZSB0byBhZGQgYSB2YWx1ZSB3aXRoIHg6IDEuCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLnB1dCh7eDogMX0sICdiYXInKSIpOwot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gYWRkTW9yZURhdGFTdWNjZXM7Ci19Ci0KLWZ1bmN0aW9uIGFkZE1vcmVE
YXRhU3VjY2VzKCkKLXsKLSAgICBkZWJ1ZygiYWRkTW9yZURhdGFTdWNjZXMoKToiKTsKLQotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKS5k
ZWxldGUoJ2JhcicpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVTdWNjZXNzOwotfQotCi1mdW5j
dGlvbiBkZWxldGVTdWNjZXNzKCkKLXsKLSAgICBkZWJ1ZygiZGVsZXRlU3VjY2VzcygpOiIpOwot
Ci0gICAgLy8gTm93IHdlIHNob3VsZCBiZSBhYmxlIHRvIGFkZCBhIHZhbHVlIHdpdGggeDogMSBh
Z2Fpbi4KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUo
J3N0b3JlJykucHV0KHt4OiAxfSwgJ2JheicpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmaW5hbEFkZFN1
Y2Nlc3M7Ci19Ci0KLWZ1bmN0aW9uIGZpbmFsQWRkU3VjY2VzcygpIHsKLSAgICBkZWJ1ZygiZmlu
YWxBZGRTdWNjZXNzKCk6Iik7Ci0KLSAgICAvLyBBbiBvdmVyd3JpdGUgc2hvdWxkIGJlIG9rLgot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUn
KS5wdXQoe3g6IDF9LCAnYmF6JykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZpbmlzaEpTVGVzdDsKLX0K
LQotdGVzdCgpOwotCi0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9pbmRleC11
bmlxdWUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludmFsaWQta2V5cy5odG1sIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW52YWxpZC1rZXlzLmh0bWwKaW5kZXggZmY5MTVl
MDk2ZWI5NzE0YmI1MmUzM2Y2YjE5N2MxNTM4ZjBhMDIxNS4uZTM1YWIxOGZjNjM2MDU4ZDZiZmFl
YTZkN2I5MDQ0ZWMzZjU0MGZmNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvaW52YWxpZC1rZXlzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvaW52YWxpZC1rZXlzLmh0bWwKQEAgLTEsNzQgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgog
PGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+
PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0
IEluZGV4ZWREQiBpbnZhbGlkIGtleXMiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVt
b3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1l
OwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAg
ZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSB0ZXN0R3JvdXAxOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXAxKCkKLXsKLSAgICBk
ZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9n
KCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJyk7Iik7Ci0gICAgdGVzdEludmFsaWRLZXlzKCk7
Ci19Ci0KLWZ1bmN0aW9uIHRlc3RJbnZhbGlkS2V5cygpCi17Ci0gICAgdmFyIGludmFsaWRLZXlz
ID0gWwotICAgICAgICAidm9pZCAwIiwgLy8gVW5kZWZpbmVkCi0gICAgICAgICJudWxsIiwgLy8g
TnVsbAotICAgICAgICAiKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpIiwgLy8g
QXJndW1lbnRzCi0gICAgICAgICJ0cnVlIiwgLy8gQm9vbGVhbgotICAgICAgICAiZmFsc2UiLCAv
LyBCb29sZWFuCi0gICAgICAgICJuZXcgRXJyb3IiLCAvLyBFcnJvcgotICAgICAgICAiZnVuY3Rp
b24gKCkge30iLCAvLyBGdW5jdGlvbgotICAgICAgICAiSlNPTiIsIC8vIEpTT04KLSAgICAgICAg
Ik1hdGgiLCAvLyBNYXRoCi0gICAgICAgICJOYU4iLCAvLyBOdW1iZXIgKHNwZWNpYWwgY2FzZSkK
LSAgICAgICAgIm5ldyBEYXRlKE5hTikiLCAvLyBEYXRlIChzcGVjaWFsIGNhc2UpCi0gICAgICAg
ICJ7fSIsIC8vIE9iamVjdAotICAgICAgICAiL3JlZ2V4LyIsIC8vIFJlZ0V4cAotICAgICAgICAi
c2VsZiIsIC8vIGdsb2JhbAotICAgICAgICAic2VsZi5kb2N1bWVudCIsIC8vIEhUTUxEb2N1bWVu
dAotICAgICAgICAic2VsZi5kb2N1bWVudC5ib2R5IiAvLyBIVE1MQm9keUVsZW1lbnQKLSAgICBd
OwotCi0gICAgaW52YWxpZEtleXMuZm9yRWFjaChmdW5jdGlvbihrZXkpIHsKLSAgICAgICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigicmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgndmFsdWUnLCAi
ICsga2V5ICsgIikiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLSAgICB9KTsK
LSAgICAKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9pbnZhbGlkLWtleXMuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9rZXktZ2VuZXJhdG9yLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9r
ZXktZ2VuZXJhdG9yLmh0bWwKaW5kZXggYTdiMDdmZmFkOTFhN2RiZWJjNGZhZGRhYThjYThmMjQ2
NzJmODdmMS4uODQ5ZDRmMjE5MjZjOTU4YmQ0OGQwYmZkMThmMjBkYTc1MmM0ZGY5OCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5LWdlbmVyYXRvci5odG1sCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleS1nZW5lcmF0b3IuaHRtbApAQCAt
NCwyMTIgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0
PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVk
REIncyBrZXkgZ2VuZXJhdG9yIGJlaGF2aW9yLiIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAg
ICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgcnVuVGVzdHMoKTsKLX0KLQotdmFyIHRl
c3RzID0gW107Ci1mdW5jdGlvbiBkZWZpbmVUZXN0KGRlc2NyaXB0aW9uLCB2ZXJjaGFuZ2UsIG9w
dGlvbmFsKSB7Ci0gIHRlc3RzLnB1c2goCi0gICAgewotICAgICAgZGVzY3JpcHRpb246IGRlc2Ny
aXB0aW9uLAotICAgICAgdmVyY2hhbmdlOiB2ZXJjaGFuZ2UsCi0gICAgICBvcHRpb25hbDogb3B0
aW9uYWwKLSAgICB9Ci0gICk7Ci19Ci0KLQotZnVuY3Rpb24gcnVuVGVzdHMoKSB7Ci0KLSAgICBm
dW5jdGlvbiBuZXh0VGVzdCgpIHsKLSAgICAgICAgaWYgKCF0ZXN0cy5sZW5ndGgpIHsKLSAgICAg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0K
LSAgICAgICAgdmFyIHRlc3QgPSB0ZXN0cy5zaGlmdCgpOwotICAgICAgICBkZWJ1ZygiIik7Ci0g
ICAgICAgIGRlYnVnKHRlc3QuZGVzY3JpcHRpb24pOwotCi0gICAgICAgIGV2YWxBbmRMb2coInJl
cXVlc3QgPSBpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoJ2tleS1nZW5lcmF0b3InKSIpOwotICAg
ICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oJ2tleS1nZW5lcmF0b3InKSIpOwotICAgICAgICAg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgICAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICBldmFs
QW5kTG9nKCJkYiA9IHJlcXVlc3QucmVzdWx0Iik7Ci0gICAgICAgICAgICAgICAgZXZhbEFuZExv
ZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgICAgICAgICAgICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICAgICAgICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgICAgICBldmFs
QW5kTG9nKCJ0cmFucyA9IHJlcXVlc3QucmVzdWx0Iik7Ci0gICAgICAgICAgICAgICAgICAgIHRy
YW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICAgICAgICAgICAgICAg
ICAgdGVzdC52ZXJjaGFuZ2UoZGIsIHRyYW5zKTsKLSAgICAgICAgICAgICAgICAgICAgdHJhbnMu
b25jb21wbGV0ZSA9IGZ1bmN0aW9uICgpIHsKLQotICAgICAgICAgICAgICAgICAgICAgICAgZnVu
Y3Rpb24gZmluaXNoVGVzdCgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmFsQW5k
TG9nKCJkYi5jbG9zZSgpIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dFRlc3Qo
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHRlc3Qub3B0aW9uYWwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0Lm9w
dGlvbmFsKGRiLCBmaW5pc2hUZXN0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoVGVzdCgpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgIH07
Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgIH0KLQotICAgIG5leHRUZXN0KCk7Ci19
Ci0KLWZ1bmN0aW9uIGNoZWNrKHN0b3JlLCBrZXksIGV4cGVjdGVkKSB7Ci0gICAgc2VsZi5zdG9y
ZSA9IHN0b3JlOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gc3RvcmUuZ2V0
KCIgKyBKU09OLnN0cmluZ2lmeShrZXkpICsgIikiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
IChlKSB7Ci0gICAgICAgIHNlbGYuZXhwZWN0ZWQgPSBleHBlY3RlZDsKLSAgICAgICAgaWYgKEpT
T04uc3RyaW5naWZ5KGV2ZW50LnRhcmdldC5yZXN1bHQpID09PSBKU09OLnN0cmluZ2lmeShleHBl
Y3RlZCkpIHsKLSAgICAgICAgICAgIHRlc3RQYXNzZWQoIkdvdCAiICsgSlNPTi5zdHJpbmdpZnko
ZXZlbnQudGFyZ2V0LnJlc3VsdCkgKyAiIGZvciBrZXk6ICIgKyBKU09OLnN0cmluZ2lmeShrZXkp
KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRlc3RGYWlsZWQoIkdvdCAiICsgSlNP
Ti5zdHJpbmdpZnkoZXZlbnQudGFyZ2V0LnJlc3VsdCkgKyAiIGZvciBrZXk6ICIgKyBKU09OLnN0
cmluZ2lmeShrZXkpICsKLSAgICAgICAgICAgICAgICAiIGV4cGVjdGVkOiAiICsgSlNPTi5zdHJp
bmdpZnkoZXhwZWN0ZWQpKTsKLSAgICAgICAgfQotICAgIH07Ci19Ci0KLWRlZmluZVRlc3QoCi0g
ICAgJ1ZlcmlmeSB0aGF0IGVhY2ggb2JqZWN0IHN0b3JlIGhhcyBhbiBpbmRlcGVuZGVudCBrZXkg
Z2VuZXJhdG9yLicsCi0gICAgZnVuY3Rpb24gKGRiLCB0cmFucykgewotICAgICAgICBldmFsQW5k
TG9nKCJzdG9yZTEgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUxJywgeyBhdXRvSW5jcmVt
ZW50OiB0cnVlIH0pIik7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlMS5wdXQoJ2EnKSIpOwot
ICAgICAgICBjaGVjayhzdG9yZTEsIDEsICdhJyk7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3Jl
MiA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTInLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUg
fSkiKTsKLSAgICAgICAgZXZhbEFuZExvZygic3RvcmUyLnB1dCgnYScpIik7Ci0gICAgICAgIGNo
ZWNrKHN0b3JlMiwgMSwgJ2EnKTsKLSAgICAgICAgZXZhbEFuZExvZygic3RvcmUxLnB1dCgnYicp
Iik7Ci0gICAgICAgIGNoZWNrKHN0b3JlMSwgMiwgJ2InKTsKLSAgICAgICAgZXZhbEFuZExvZygi
c3RvcmUyLnB1dCgnYicpIik7Ci0gICAgICAgIGNoZWNrKHN0b3JlMiwgMiwgJ2InKTsKLSAgICB9
Ci0pOwotCi1kZWZpbmVUZXN0KAotICAgICdWZXJpZnkgdGhhdCB0aGUga2V5IGdlbmVyYXRvciBp
cyBub3QgdXBkYXRlZCBpZiBpbnNlcnRpb24gZmFpbHMnLAotICAgIGZ1bmN0aW9uIChkYiwgdHJh
bnMpIHsKLSAgICAgICAgdHJhbnMub25lcnJvciA9IGZ1bmN0aW9uKGUpIHsgZS5wcmV2ZW50RGVm
YXVsdCgpIH07Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ3N0b3JlMScsIHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9KSIpOwotICAgICAgICBldmFsQW5k
TG9nKCJpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleDEnLCAnaXgnLCB7IHVuaXF1ZTog
dHJ1ZSB9KSIpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoeyBpeDogJ2EnfSkiKTsK
LSAgICAgICAgY2hlY2soc3RvcmUsIDEsIHtpeDogJ2EnfSk7Ci0gICAgICAgIGV2YWxBbmRMb2co
InN0b3JlLnB1dCh7IGl4OiAnYSd9KSIpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQo
eyBpeDogJ2InfSkiKTsKLSAgICAgICAgY2hlY2soc3RvcmUsIDIsIHtpeDogJ2InfSk7Ci0gICAg
fQotKTsKLQotZGVmaW5lVGVzdCgKLSAgICAnVmVyaWZ5IHRoYXQgdGhlIGtleSBnZW5lcmF0b3Ig
aXMgbm90IGFmZmVjdGVkIGJ5IGl0ZW0gcmVtb3ZhbCAoZGVsZXRlIG9yIGNsZWFyKS4nLAotICAg
IGZ1bmN0aW9uIChkYiwgdHJhbnMpIHsKLSAgICAgICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5j
cmVhdGVPYmplY3RTdG9yZSgnc3RvcmUxJywgeyBhdXRvSW5jcmVtZW50OiB0cnVlIH0pIik7Ci0g
ICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgnYScpIik7Ci0gICAgICAgIGNoZWNrKHN0b3Jl
LCAxLCAnYScpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5kZWxldGUoMSkiKTsKLSAgICAg
ICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdiJykiKTsKLSAgICAgICAgY2hlY2soc3RvcmUsIDIs
ICdiJyk7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlLmNsZWFyKCkiKTsKLSAgICAgICAgZXZh
bEFuZExvZygic3RvcmUucHV0KCdjJykiKTsKLSAgICAgICAgY2hlY2soc3RvcmUsIDMsICdjJyk7
Ci0gICAgICAgIC8vIEZJWE1FOiBJREJPYmplY3RTdG9yZS5kZWxldGUoSURCS2V5UmFuZ2UpIGlz
IG5vdCB5ZXQgaW1wbGVtZW50ZWQgaW4gQ2hyb21pdW0uCi0gICAgICAgIC8vIGh0dHA6Ly9jcmJ1
Zy5jb20vMTAxMzg0Ci0gICAgICAgIC8vZXZhbEFuZExvZygic3RvcmUuZGVsZXRlKElEQktleVJh
bmdlLmxvd2VyQm91bmQoMCkpIik7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgnZCcp
Iik7Ci0gICAgICAgIGNoZWNrKHN0b3JlLCA0LCAnZCcpOwotICAgIH0KLSk7Ci0KLWRlZmluZVRl
c3QoCi0gICAgJ1ZlcmlmeSB0aGF0IHRoZSBrZXkgZ2VuZXJhdG9yIGlzIG9ubHkgc2V0IGlmIGFu
ZCBvbmx5IGlmIGEgbnVtZXJpYyBrZXkgZ3JlYXRlciB0aGFuIHRoZSBsYXN0IGdlbmVyYXRlZCBr
ZXkgaXMgdXNlZC4nLAotICAgIGZ1bmN0aW9uIChkYiwgdHJhbnMpIHsKLSAgICAgICAgZXZhbEFu
ZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUxJywgeyBhdXRvSW5jcmVt
ZW50OiB0cnVlIH0pIik7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgnYScpIik7Ci0g
ICAgICAgIGNoZWNrKHN0b3JlLCAxLCAnYScpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5w
dXQoJ2InLCAzKSIpOwotICAgICAgICBjaGVjayhzdG9yZSwgMywgJ2InKTsKLSAgICAgICAgZXZh
bEFuZExvZygic3RvcmUucHV0KCdjJykiKTsKLSAgICAgICAgY2hlY2soc3RvcmUsIDQsICdjJyk7
Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgnZCcsIC0xMCkiKTsKLSAgICAgICAgY2hl
Y2soc3RvcmUsIC0xMCwgJ2QnKTsKLSAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdlJyki
KTsKLSAgICAgICAgY2hlY2soc3RvcmUsIDUsICdlJyk7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0
b3JlLnB1dCgnZicsIDYuMDAwMDEpIik7Ci0gICAgICAgIGNoZWNrKHN0b3JlLCA2LjAwMDAxLCAn
ZicpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2cnKSIpOwotICAgICAgICBjaGVj
ayhzdG9yZSwgNywgJ2cnKTsKLSAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdmJywgOC45
OTk5KSIpOwotICAgICAgICBjaGVjayhzdG9yZSwgOC45OTk5LCAnZicpOwotICAgICAgICBldmFs
QW5kTG9nKCJzdG9yZS5wdXQoJ2cnKSIpOwotICAgICAgICBjaGVjayhzdG9yZSwgOSwgJ2cnKTsK
LSAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdoJywgJ2ZvbycpIik7Ci0gICAgICAgIGNo
ZWNrKHN0b3JlLCAnZm9vJywgJ2gnKTsKLSAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdp
JykiKTsKLSAgICAgICAgY2hlY2soc3RvcmUsIDEwLCAnaScpOwotICAgICAgICBldmFsQW5kTG9n
KCJzdG9yZS5wdXQoJ2onLCBbMTAwMF0pIik7Ci0gICAgICAgIGNoZWNrKHN0b3JlLCBbMTAwMF0s
ICdqJyk7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgnaycpIik7Ci0gICAgICAgIGNo
ZWNrKHN0b3JlLCAxMSwgJ2snKTsKLQotICAgICAgICAvLyBGSVhNRTogUmVwZWF0IHRoaXMgdGVz
dCwgYnV0IHdpdGggYSBrZXlQYXRoIGFuZCBpbmxpbmUga2V5LgotICAgIH0KLSk7Ci0KLWRlZmlu
ZVRlc3QoCi0gICAgJ1ZlcmlmeSB0aGF0IGFib3J0aW5nIGEgdHJhbnNhY3Rpb24gcmVzZXRzIHRo
ZSBrZXkgZ2VuZXJhdG9yIHN0YXRlLicsCi0gICAgZnVuY3Rpb24gKGRiLCB0cmFucykgewotICAg
ICAgICBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUg
fSk7Ci0gICAgfSwKLQotICAgIGZ1bmN0aW9uIChkYiwgY2FsbGJhY2spIHsKLSAgICAgICAgZXZh
bEFuZExvZygidHJhbnMxID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZSddLCBJREJUcmFuc2FjdGlv
bi5SRUFEX1dSSVRFKSIpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZV90MSA9IHRyYW5zMS5v
YmplY3RTdG9yZSgnc3RvcmUnKSIpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZV90MS5wdXQo
J2EnKSIpOwotICAgICAgICBjaGVjayhzdG9yZV90MSwgMSwgJ2EnKTsKLSAgICAgICAgZXZhbEFu
ZExvZygic3RvcmVfdDEucHV0KCdiJykiKTsKLSAgICAgICAgY2hlY2soc3RvcmVfdDEsIDIsICdi
Jyk7Ci0KLSAgICAgICAgLy8gU2NoZWR1bGUgdGhlIGFib3J0IGFzIGEgdGFzayAobm90IHJ1biBp
dCBzeW5jaHJvbm91c2x5KQotICAgICAgICBzdG9yZV90MS5nZXQoMCkub25zdWNjZXNzID0gZnVu
Y3Rpb24gKCkgewotICAgICAgICAgICAgZGVidWcoJ2Fib3J0aW5nLi4uJyk7Ci0gICAgICAgICAg
ICBldmFsQW5kTG9nKCJ0cmFuczEuYWJvcnQoKSIpOwotICAgICAgICAgICAgdHJhbnMxLm9uYWJv
cnQgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgZGVidWcoJ2Fib3J0ZWQhJyk7Ci0K
LSAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJ0cmFuczIgPSBkYi50cmFuc2FjdGlvbihbJ3N0
b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgICAgICAgICAgICAgZXZh
bEFuZExvZygic3RvcmVfdDIgPSB0cmFuczIub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKLSAgICAg
ICAgICAgICAgICBldmFsQW5kTG9nKCJzdG9yZV90Mi5wdXQoJ2MnKSIpOwotICAgICAgICAgICAg
ICAgIGNoZWNrKHN0b3JlX3QyLCAxLCAnYycpOwotICAgICAgICAgICAgICAgIGV2YWxBbmRMb2co
InN0b3JlX3QyLnB1dCgnZCcpIik7Ci0gICAgICAgICAgICAgICAgY2hlY2soc3RvcmVfdDIsIDIs
ICdkJyk7Ci0KLSAgICAgICAgICAgICAgICB0cmFuczIub25jb21wbGV0ZSA9IGNhbGxiYWNrOwot
ICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICB9Ci0pOwotCi10ZXN0KCk7Ci0KLTwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9rZXktZ2VuZXJhdG9yLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIva2V5LXNvcnQtb3JkZXItYWNyb3NzLXR5cGVzLmh0bWwgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXktc29ydC1vcmRlci1hY3Jvc3MtdHlwZXMuaHRtbAppbmRl
eCAwYTI0MjQzYzI0Y2YyMDFmOTI5NGE4MDk4ZDZkMDE0YzJjNGVmODZjLi42NDNmN2RjZjgwODU2
MDM3ODliOTg5MTQxNzY1YzJhMDZjNDEzODBkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9rZXktc29ydC1vcmRlci1hY3Jvc3MtdHlwZXMuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXktc29ydC1vcmRlci1hY3Jvc3MtdHlwZXMuaHRt
bApAQCAtMSw5NSArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgogPHNj
cmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4K
IDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGtleSBjb21w
YXJpc29uIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVz
KCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlv
biA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhl
ZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBv
cGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygi
ZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
YWRkS2V5MTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LX0KLQotZnVuY3Rpb24gYWRkS2V5MSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRi
KTsKLQotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUo
J2ZvbycpOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3Rv
cmUuYWRkKFtdLCBJbmZpbml0eSk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRLZXky
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1m
dW5jdGlvbiBhZGRLZXkyKCkKLXsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IG9iamVjdFN0b3JlLmFkZChbXSwgLUluZmluaXR5KTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGFkZEtleTM7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIGFkZEtleTMoKQotewotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKFtdLCAxLjApOyIpOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gYWRkS2V5NDsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYWRkS2V5NCgpCi17Ci0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoW10sICcnKTsiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGFkZEtleTU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGFkZEtleTUoKQotewotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKFtdLCAnMS4wJyk7Iik7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuQUN1cnNvcjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlbkFDdXJzb3IoKQotewot
ICAgIGtleUluZGV4ID0gMDsKLSAgICBzb3J0ZWRLZXlzID0gZXZhbEFuZExvZygic29ydGVkS2V5
ID0gWy1JbmZpbml0eSwgMS4wLCBJbmZpbml0eSwgJycsICcxLjAnXTsiKTsKLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewotICAgICAgICBjdXJzb3IgPSBldmFsQW5k
TG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgICAgICBpZiAoY3Vyc29y
KSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJzb3J0ZWRLZXlzW2tleUlu
ZGV4XSIpOwotICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7Ci0g
ICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOwotICAgICAgICB9Ci0gICAgICAg
IGVsc2UgewotICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgICAgIH0KLSAgICB9Ci19
Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMva2V5LXNv
cnQtb3JkZXItYWNyb3NzLXR5cGVzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5LXNvcnQt
b3JkZXItZGF0ZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5LXNvcnQt
b3JkZXItZGF0ZS5odG1sCmluZGV4IDVkNzAyZDBiYWFlOWE4ZTU2YzZlYTdkODk4Y2Y4NDI3YmFm
NGFjMTYuLjJmMGU0ZWM2ZjZkZDY3ZWM2NjNiZDMzNzE2N2I4OTNhODNlMmNiMzAgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleS1zb3J0LW9yZGVyLWRhdGUuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXktc29ydC1vcmRlci1kYXRl
Lmh0bWwKQEAgLTEsOTIgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4K
IDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hl
YWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBrZXkg
Y29tcGFyaXNvbiIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVm
aXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3Jp
cHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImlu
ZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRM
b2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGFkZEtleTE7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIGFkZEtleTEoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jl
cyhkYik7Ci0KLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0
b3JlKCdmb28nKTsiKTsKLSAgICBkYXRlMSA9IGV2YWxBbmRMb2coImRhdGUxID0gbmV3IERhdGUo
MTAwMCk7Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9y
ZS5hZGQoW10sIGRhdGUxKTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEtleTI7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0
aW9uIGFkZEtleTIoKQotewotICAgIGRhdGUwID0gZXZhbEFuZExvZygiZGF0ZTAgPSBuZXcgRGF0
ZSgwKTsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3Jl
LmFkZChbXSwgZGF0ZTApOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkS2V5MzsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rp
b24gYWRkS2V5MygpCi17Ci0gICAgZGF0ZTMgPSBldmFsQW5kTG9nKCJkYXRlMyA9IG5ldyBEYXRl
KDMwMDApOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3Rv
cmUuYWRkKFtdLCBkYXRlMyk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRLZXk0Owot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5j
dGlvbiBhZGRLZXk0KCkKLXsKLSAgICBkYXRlMiA9IGV2YWxBbmRMb2coImRhdGUyID0gbmV3IERh
dGUoMjAwMCk7Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RT
dG9yZS5hZGQoW10sIGRhdGUyKTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5BQ3Vy
c29yOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQot
Ci1mdW5jdGlvbiBvcGVuQUN1cnNvcigpCi17Ci0gICAga2V5SW5kZXggPSAwOwotICAgIHNvcnRl
ZEtleXMgPSBldmFsQW5kTG9nKCJzb3J0ZWRLZXlzID0gW2RhdGUwLnRvU3RyaW5nKCksIGRhdGUx
LnRvU3RyaW5nKCksIGRhdGUyLnRvU3RyaW5nKCksIGRhdGUzLnRvU3RyaW5nKCldOyIpOwotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigp
OyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9
IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICAgIGlm
IChjdXJzb3IpIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5LnRvU3RyaW5nKCki
LCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNv
ci5jb250aW51ZSgpOyIpOwotICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsK
LSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwot
ICAgICAgICB9Ci0gICAgfQotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2tleS1zb3J0LW9yZGVyLWRhdGUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBz
cmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8
L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9rZXktdHlwZS1hcnJheS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5
LXR5cGUtYXJyYXkuaHRtbAppbmRleCBiNzE1ZjAzYjMyYzc5YWMwZmMxODdiMGQ3NDMwYWU2MGFk
YTJkNmUyLi5hYjUwZDFhMTRmYjRiOTVlMzBlYjM3YTI1ZGZmOGM4Njk0MmYzMDMxIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXktdHlwZS1hcnJheS5odG1sCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleS10eXBlLWFycmF5Lmh0bWwKQEAg
LTEsMjA4ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJv
ZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIga2V5IHR5cGVzIik7
Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAg
ICBldmFsQW5kTG9nKCJJREJUcmFuc2FjdGlvbiA9IHNlbGYuSURCVHJhbnNhY3Rpb24gfHwgc2Vs
Zi5JREJUcmFuc2FjdGlvbjsiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJJREJUcmFuc2FjdGlvbiA9
PSBudWxsIik7Ci0KLSAgICBldmFsQW5kTG9nKCJJREJEYXRhYmFzZUV4Y2VwdGlvbiA9IHNlbGYu
SURCRGF0YWJhc2VFeGNlcHRpb24gfHwgc2VsZi5JREJEYXRhYmFzZUV4Y2VwdGlvbjsiKTsKLSAg
ICBzaG91bGRCZUZhbHNlKCJJREJEYXRhYmFzZUV4Y2VwdGlvbiA9PSBudWxsIik7Ci0KLQotICAg
IG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRl
c3QgRGF0YWJhc2UiOwotICAgIG9wZW5yZXEgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbihu
YW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICBvcGVucmVxLm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNz
OwotICAgIG9wZW5yZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1m
dW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZXZhbEFuZExvZygiZGIgPSBvcGVucmVxLnJl
c3VsdCIpOwotICAgIHNldHZlcnJlcSA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJz
aW9uKCcxJykiKTsKLSAgICBzZXR2ZXJyZXEub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7
Ci0gICAgc2V0dmVycmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQot
ZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJwcmVwYXJpbmcgZGF0
YWJhc2UiKTsKLSAgICB0cmFucyA9IHNldHZlcnJlcS5yZXN1bHQ7Ci0gICAgdHJhbnMub25jb21w
bGV0ZSA9IHRlc3RWYWxpZEFycmF5S2V5czsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIp
OwotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0
b3JlJyk7Iik7Ci0gICAgZGVidWcoIiIpOwotfQotCi1mdW5jdGlvbiB0ZXN0VmFsaWRBcnJheUtl
eXMoKQotewotICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywg
SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRy
YW5zLm9iamVjdFN0b3JlKCdzdG9yZScpIik7Ci0gICAgZGVidWcoIiIpOwotCi0gICAgZXZhbEFu
ZExvZygibG9uZ19hcnJheSA9IFtdOyBmb3IgKGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7IGxvbmdf
YXJyYXkucHVzaCgnYWJjJywgMTIzLCBuZXcgRGF0ZSgwKSwgW10pOyB9Iik7Ci0gICAgZGVidWco
IiIpOwotCi0gICAgZGVidWcoImFycmF5IHRoYXQgY29udGFpbnMgbm9uLW51bWVyaWMgc2VsZi1y
ZWZlcmVuY2UiKTsKLSAgICBldmFsQW5kTG9nKCJzZWxmX3JlZmVycmVudGlhbF9hcnJheSA9IFtd
OyBzZWxmX3JlZmVycmVudGlhbF9hcnJheS5zZWxmID0gc2VsZl9yZWZlcnJlbnRpYWxfYXJyYXk7
Iik7Ci0gICAgZGVidWcoIiIpOwotCi0gICAgdmFyIG4gPSAwLCBjYXNlcyA9IFsKLSAgICAgICAg
IltdIiwKLQotICAgICAgICAiWy1JbmZpbml0eV0iLAotICAgICAgICAiWy1OdW1iZXIuTUFYX1ZB
TFVFXSIsCi0gICAgICAgICJbLTFdIiwKLSAgICAgICAgIlstTnVtYmVyLk1JTl9WQUxVRV0iLAot
ICAgICAgICAiWzBdIiwKLSAgICAgICAgIltOdW1iZXIuTUlOX1ZBTFVFXSIsCi0gICAgICAgICJb
MV0iLAotICAgICAgICAiW051bWJlci5NQVhfVkFMVUVdIiwKLSAgICAgICAgIltJbmZpbml0eV0i
LAotCi0gICAgICAgICJbMSwyLDNdIiwKLQotICAgICAgICAiW25ldyBEYXRlKDApXSIsCi0gICAg
ICAgICJbbmV3IERhdGUoJzI1MjUtMDEtMDFUMDA6MDA6MDBaJyldIiwKLQotICAgICAgICAiW25l
dyBEYXRlKDApLCBuZXcgRGF0ZSgnMjUyNS0wMS0wMVQwMDowMDowMFonKV0iLAotCi0gICAgICAg
ICJbJyddIiwKLSAgICAgICAgIlsnXHgwMCddIiwKLSAgICAgICAgIlsnYWJjMTIzJ10iLAotCi0g
ICAgICAgICJbJ2FiYycsIDEyM10iLAotCi0gICAgICAgICJbW11dIiwKLQotICAgICAgICAiW1td
LCBbXV0iLAotICAgICAgICAiW1tdLCBbXSwgW11dIiwKLQotICAgICAgICAiW1tbXV1dIiwKLSAg
ICAgICAgIltbW1tdXV1dIiwKLQotICAgICAgICAiWzEyMywgJ2FiYycsIG5ldyBEYXRlKDApLCBb
XV0iLAotICAgICAgICAiW1sxMjMsICdhYmMnLCBuZXcgRGF0ZSgwKSwgW11dLCBbNDU2LCAnZGVm
JywgbmV3IERhdGUoOTk5KSwgW1tdXV1dIiwKLQotICAgICAgICAibG9uZ19hcnJheSIsCi0gICAg
ICAgICJzZWxmX3JlZmVycmVudGlhbF9hcnJheSIKLSAgICBdOwotCi0gICAgZnVuY3Rpb24gdGVz
dEFycmF5UHV0R2V0KHZhbHVlLCBrZXksIGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgZGVidWco
InRlc3RpbmcgYXJyYXkga2V5OiAiICsga2V5KTsKLSAgICAgICAgcHV0cmVxID0gZXZhbEFuZExv
Zygic3RvcmUucHV0KCciICsgdmFsdWUgKyAiJywgIiArIGtleSArICIpOyIpOwotICAgICAgICBw
dXRyZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICBwdXRyZXEu
b25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBnZXRyZXEgPSBldmFsQW5kTG9n
KCJzdG9yZS5nZXQoIiArIGtleSArICIpOyIpOwotICAgICAgICAgICAgZ2V0cmVxLm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgICAgIGdldHJlcS5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImdl
dHJlcS5yZXN1bHQiLCB2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgZGVidWcoIiIpOwotICAgICAg
ICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgIH0K
LQotICAgIGZ1bmN0aW9uIG5leHRUZXN0KCkKLSAgICB7Ci0gICAgICAgIHZhciB0ZXN0Y2FzZSA9
IGNhc2VzLnNoaWZ0KCk7Ci0gICAgICAgIGlmICh0ZXN0Y2FzZSkgewotICAgICAgICAgICAgdGVz
dEFycmF5UHV0R2V0KCJ2YWx1ZSIgKyAoKytuKSwgdGVzdGNhc2UsIG5leHRUZXN0KTsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIG5leHRUZXN0KCk7Ci0KLSAgICB0cmFucy5vbmNvbXBsZXRlID0g
dGVzdEludmFsaWRBcnJheUtleXM7Ci19Ci0KLQotZnVuY3Rpb24gdGVzdEludmFsaWRBcnJheUtl
eXMoKQotewotICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywg
SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRy
YW5zLm9iamVjdFN0b3JlKCdzdG9yZScpIik7Ci0gICAgZGVidWcoIiIpOwotCi0gICAgZGVidWco
ImFycmF5IHRoYXQgY29udGFpbnMgaXRzZWxmOiBhcnJheSA9IFsgYXJyYXkgXSIpOwotICAgIGV2
YWxBbmRMb2coImN5Y2xpY19hcnJheSA9IFtdOyBjeWNsaWNfYXJyYXkucHVzaChjeWNsaWNfYXJy
YXkpIik7Ci0gICAgc2hvdWxkVGhyb3coIkpTT04uc3RyaW5naWZ5KGN5Y2xpY19hcnJheSkiKTsK
LQotICAgIGRlYnVnKCJhcnJheSB0aGF0IGNvbnRhaW5zIGl0c2VsZiwgb25lIGxldmVsIGRvd246
IGFycmF5ID0gWyBbIGFycmF5IF0gXSIpOwotICAgIGV2YWxBbmRMb2coImN5Y2xpY19hcnJheTIg
PSBbXTsgY3ljbGljX2FycmF5Mi5wdXNoKFtjeWNsaWNfYXJyYXkyXSkiKTsKLSAgICBzaG91bGRU
aHJvdygiSlNPTi5zdHJpbmdpZnkoY3ljbGljX2FycmF5MikiKTsKLQotICAgIGRlYnVnKCJhcnJh
eSB0aGF0IGNvbnRhaW5zIGl0c2VsZiwgbm90IGFzIGZpcnN0IGVsZW1lbnQ6IGFycmF5ID0gWzEs
ICdiJywgW10sIGFycmF5XSIpOwotICAgIGV2YWxBbmRMb2coImN5Y2xpY19hcnJheTMgPSBbMSwg
J2InLCBbXV07IGN5Y2xpY19hcnJheTMucHVzaChjeWNsaWNfYXJyYXkzKSIpOwotICAgIHNob3Vs
ZFRocm93KCJKU09OLnN0cmluZ2lmeShjeWNsaWNfYXJyYXkzKSIpOwotICAgIGRlYnVnKCIiKTsK
LQotICAgIGRlYnVnKCJhcnJheSB0aGF0IGNvbnRhaW5zIGFycmF5IHRoYXQgY29udGFpbnMgaXRz
ZWxmIik7Ci0gICAgZXZhbEFuZExvZygiY3ljbGljX2FycmF5NCA9IFtjeWNsaWNfYXJyYXldOyIp
OwotICAgIHNob3VsZFRocm93KCJKU09OLnN0cmluZ2lmeShjeWNsaWNfYXJyYXk0KSIpOwotICAg
IGRlYnVnKCIiKTsKLQotICAgIHZhciBpbnZhbGlkS2V5cyA9IFsKLSAgICAgICAgIlsgdm9pZCAw
IF0iLCAvLyB1bmRlZmluZWQKLSAgICAgICAgIlsgdHJ1ZSBdIiwKLSAgICAgICAgIlsgZmFsc2Ug
XSIsCi0gICAgICAgICJbIE5hTiBdIiwKLSAgICAgICAgIlsgbnVsbCBdIiwKLSAgICAgICAgIlsg
e30gXSIsCi0gICAgICAgICJbIGZ1bmN0aW9uICgpIHt9IF0iLAotICAgICAgICAiWyAvcmVnZXgv
IF0iLAotICAgICAgICAiWyBzZWxmIF0iLAotICAgICAgICAiWyBzZWxmLmRvY3VtZW50IF0iLAot
ICAgICAgICAiWyBzZWxmLmRvY3VtZW50LmJvZHkgXSIsCi0gICAgICAgICJjeWNsaWNfYXJyYXki
LAotICAgICAgICAiY3ljbGljX2FycmF5MiIsCi0gICAgICAgICJjeWNsaWNfYXJyYXkzIiwKLSAg
ICAgICAgImN5Y2xpY19hcnJheTQiLAotICAgICAgICAiQXJyYXkoMTAwMCkiIC8vIHNwYXJzZQot
ICAgIF07Ci0KLSAgICBpbnZhbGlkS2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsKLSAgICAg
ICAgZGVidWcoInRlc3RpbmcgaW52YWxpZCBhcnJheSBrZXk6ICIgKyBrZXkpOwotICAgICAgICBl
dmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5wdXQoJ3ZhbHVlJywgIiArIGtleSArICIpOyIs
ICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotICAgICAgICBkZWJ1ZygiIik7Ci0g
ICAgfSk7Ci0KLSAgICB0ZXN0RGVwdGhMaW1pdHMoKTsKLX0KLQotZnVuY3Rpb24gbWFrZUFycmF5
T2ZEZXB0aChuKQotewotICAgIHZhciBhcnJheSA9IFtdOwotICAgIHdoaWxlICgtLW4pIHsKLSAg
ICAgICAgYXJyYXkgPSBbYXJyYXldOwotICAgIH0KLSAgICByZXR1cm4gYXJyYXk7Ci19Ci0KLWZ1
bmN0aW9uIHRlc3REZXB0aExpbWl0cygpCi17Ci0gICAgc2hvdWxkQmUoImluZGV4ZWREQi5jbXAo
bWFrZUFycmF5T2ZEZXB0aCgyNSksIDApIiwgIjEiKTsKLSAgICBzaG91bGRCZSgiaW5kZXhlZERC
LmNtcChtYWtlQXJyYXlPZkRlcHRoKDI1MCksIDApIiwgIjEiKTsKLSAgICBldmFsQW5kRXhwZWN0
RXhjZXB0aW9uKCJpbmRleGVkREIuY21wKG1ha2VBcnJheU9mRGVwdGgoMjUwMCksIDApIiwgIklE
QkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0gICAgZGVidWcoIiIpOwotCi0gICAgZmlu
aXNoSlNUZXN0KCk7Ci19Ci0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2tleS10eXBlLWFycmF5LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5LXR5cGUt
aW5maW5pdHkuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleS10eXBlLWlu
ZmluaXR5Lmh0bWwKaW5kZXggZDM5NjRiODhjYWVhZWQ1NzE5NjJhYzYyNzE4NGY2MWNjYWNmYjNj
Yy4uMDUwNzVhYzE2OWY5ZDg2OWFhYjQ4NTM3M2ZkYjNmODY0MmExNTJkYiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5LXR5cGUtaW5maW5pdHkuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXktdHlwZS1pbmZpbml0eS5odG1sCkBA
IC0xLDYyICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJv
ZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIga2V5IHR5cGVzIik7
Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAg
ICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBU
ZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4o
bmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2Vz
czsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQot
ZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdGVzdEdyb3Vw
MTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQot
ZnVuY3Rpb24gdGVzdEdyb3VwMSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsK
LQotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2Zv
bycpOyIpOwotICAgIGRlYnVnKCJ0ZXN0IGtleSBhcyBpbmZpbml0eSIpOwotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKFtdLCBJbmZpbml0eSk7Iik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0ZXN0R3JvdXAyOwotICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXAyKCkK
LXsKLSAgICBkZWJ1ZygidGVzdCBrZXkgYXMgbmVnYXRpdmUgaW5maW5pdHkiKTsKLSAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChbXSwgLUluZmluaXR5
KTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHRlc3RHcm91cDM7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91
cDMoKQotewotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2tleS10eXBlLWluZmluaXR5LmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIva2V5cGF0aC1iYXNpY3MuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2tleXBhdGgtYmFzaWNzLmh0bWwKaW5kZXggYTY2ZDJjZDg3ZGMyZWEzODEwNWE2YjUy
OWQzNDE2ZDE3NmFhOWMzMy4uNzA0Y2NjOTJjNTQ0ZGUyMmU1YjE5MmY0Y2Y4NzUzM2I5YjY0MWI3
OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1iYXNp
Y3MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWJhc2lj
cy5odG1sCkBAIC0xLDEwMSArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFk
PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwv
aGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgZm9yIHZhbGlkIGFu
ZCBpbnZhbGlkIGtleXBhdGhzIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZl
bmRvclByZWZpeGVzKCk7Ci0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAg
ZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2
YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IHRlc3RWYWxpZEtleVBhdGhzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiB0ZXN0VmFsaWRLZXlQYXRocygpCi17
Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIHRlc3RLZXlQYXRocyA9IFtu
dWxsLCB1bmRlZmluZWQsICcnXTsKLSAgICB0ZXN0S2V5UGF0aHMuZm9yRWFjaChmdW5jdGlvbiAo
a2V5UGF0aCkgewotICAgICAgICBnbG9iYWxLZXlQYXRoID0ga2V5UGF0aDsKLSAgICAgICAgZGVi
dWcoImdsb2JhbEtleVBhdGggPSAnIiArIGdsb2JhbEtleVBhdGggKyAiJyIpOwotICAgICAgICBl
dmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScsIHtrZXlQYXRoOiBnbG9iYWxL
ZXlQYXRofSkiKTsKLSAgICAgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLSAgICB9KTsK
LQotICAgIHRlc3RLZXlQYXRocyA9IFsnZm9vJywgJ2Zvby5iYXIuYmF6J107Ci0gICAgdGVzdEtl
eVBhdGhzLmZvckVhY2goZnVuY3Rpb24gKGtleVBhdGgpIHsKLSAgICAgICAgZ2xvYmFsS2V5UGF0
aCA9IGtleVBhdGg7Ci0gICAgICAgIGRlYnVnKCJnbG9iYWxLZXlQYXRoID0gJyIgKyBnbG9iYWxL
ZXlQYXRoICsgIiciKTsKLSAgICAgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUo
J25hbWUnLCB7a2V5UGF0aDogZ2xvYmFsS2V5UGF0aH0pIik7Ci0gICAgICAgIGRlbGV0ZUFsbE9i
amVjdFN0b3JlcyhkYik7Ci0gICAgfSk7Ci0KLSAgICB0ZXN0S2V5UGF0aHMgPSBbbnVsbCwgdW5k
ZWZpbmVkLCAnJywgJ2ZvbycsICdmb28uYmFyLmJheiddOwotICAgIHRlc3RLZXlQYXRocy5mb3JF
YWNoKGZ1bmN0aW9uIChrZXlQYXRoKSB7Ci0gICAgICAgIGdsb2JhbEtleVBhdGggPSBrZXlQYXRo
OwotICAgICAgICBkZWJ1ZygiZ2xvYmFsS2V5UGF0aCA9ICciICsgZ2xvYmFsS2V5UGF0aCArICIn
Iik7Ci0gICAgICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RT
dG9yZSgnc3RvcmVOYW1lJykiKTsKLSAgICAgICAgZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5k
ZXgoJ25hbWUnLCBnbG9iYWxLZXlQYXRoKSIpOwotICAgICAgICBkZWxldGVBbGxPYmplY3RTdG9y
ZXMoZGIpOwotICAgIH0pOwotCi0gICAgdGVzdEludmFsaWRLZXlQYXRocygpOwotfQotCi1mdW5j
dGlvbiB0ZXN0SW52YWxpZEtleVBhdGhzKCkKLXsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMo
ZGIpOwotCi0gICAgdGVzdEtleVBhdGhzID0gWydbXScsICdbImZvbyJdJywgJ1siZm9vIiwgImJh
ciJdJywgJ1siIiwgIiJdJywgJ1sxLjAsIDIuMF0nLCAnW1siZm9vIl1dJywgJ1siZm9vIiwgWyJi
YXIiXV0nXTsKLSAgICB0ZXN0S2V5UGF0aHMuZm9yRWFjaChmdW5jdGlvbiAoa2V5UGF0aCkgewot
ICAgICAgICBnbG9iYWxLZXlQYXRoID0ga2V5UGF0aDsKLSAgICAgICAgZGVidWcoImdsb2JhbEtl
eVBhdGggPSAnIiArIGdsb2JhbEtleVBhdGggKyAiJyIpOwotICAgICAgICBldmFsQW5kRXhwZWN0
RXhjZXB0aW9uKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScsIHtrZXlQYXRoOiBnbG9iYWxL
ZXlQYXRofSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9OX1RSQU5TSUVOVF9FUlIiKTsKLSAg
ICAgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLSAgICB9KTsKLQotICAgIHRlc3RLZXlQ
YXRocyA9IFsnICcsICdmb28gJywgJ2ZvbyBiYXInLCAnZm9vLiBiYXInLCAnZm9vIC5iYXInLCAn
Zm9vLi5iYXInLCAnK2ZvbycsICdmb28lJ107Ci0gICAgdGVzdEtleVBhdGhzLmZvckVhY2goZnVu
Y3Rpb24gKGtleVBhdGgpIHsKLSAgICAgICAgZ2xvYmFsS2V5UGF0aCA9IGtleVBhdGg7Ci0gICAg
ICAgIGRlYnVnKCJnbG9iYWxLZXlQYXRoID0gJyIgKyBnbG9iYWxLZXlQYXRoICsgIiciKTsKLSAg
ICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ25hbWUn
LCB7a2V5UGF0aDogZ2xvYmFsS2V5UGF0aH0pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PTl9U
UkFOU0lFTlRfRVJSIik7Ci0gICAgICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0gICAg
fSk7Ci0KLSAgICB0ZXN0S2V5UGF0aHMgPSBbJyAnLCAnZm9vICcsICdmb28gYmFyJywgJ2Zvby4g
YmFyJywgJ2ZvbyAuYmFyJywgJ2Zvby4uYmFyJywgJytmb28nLCAnZm9vJSddOwotICAgIHRlc3RL
ZXlQYXRocy5mb3JFYWNoKGZ1bmN0aW9uIChrZXlQYXRoKSB7Ci0gICAgICAgIGdsb2JhbEtleVBh
dGggPSBrZXlQYXRoOwotICAgICAgICBkZWJ1ZygiZ2xvYmFsS2V5UGF0aCA9ICciICsgZ2xvYmFs
S2V5UGF0aCArICInIik7Ci0gICAgICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5j
cmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLSAgICAgICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigic3RvcmUuY3JlYXRlSW5kZXgoJ25hbWUnLCBnbG9iYWxLZXlQYXRoKSIsICJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5OT05fVFJBTlNJRU5UX0VSUiIpOwotICAgICAgICBkZWxldGVBbGxP
YmplY3RTdG9yZXMoZGIpOwotICAgIH0pOwotCi0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQot
dGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMva2V5cGF0aC1iYXNp
Y3MuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWVkZ2VzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWVkZ2VzLmh0bWwKaW5kZXggNDY4ZjQwMmIx
YTc1ZGQ3ODhjYjBmZjA3NGJlMDQyNmZjMDRjYTFlMS4uZmY5ZGFkZDI0NDhkNWMzMjViOTNkZWFi
M2E3ODhhMjk2ZTI0NWUyMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIva2V5cGF0aC1lZGdlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2tleXBhdGgtZWRnZXMuaHRtbApAQCAtMSwxMTkgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgog
PGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+
PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0
IEluZGV4ZWREQiBrZXlQYXRoIGVkZ2UgY2FzZXMiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0g
ICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIuZGVsZXRlRGF0YWJhc2UoJ2tleXBhdGgtZWRnZXMnKSIpOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZnVuY3Rpb24gKCkgewotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERC
Lm9wZW4oJ2tleXBhdGgtZWRnZXMnKSIpOwotICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3Vj
Y2VzczsKLSAgICB9OwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGVidWco
IiIpOwotICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOwotICAgIGRiID0gZXZhbEFuZExvZygi
ZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgp
IHsKLSAgICAgICAgdHJhbnNhY3Rpb24gPSByZXF1ZXN0LnJlc3VsdDsKLSAgICAgICAgdHJhbnNh
Y3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgICAgICBldmFsQW5k
TG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUtd2l0aC1wYXRoJywge2tleVBhdGg6ICdm
b28nfSkiKTsKLSAgICAgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3Jl
LXdpdGgtcGF0aC1hbmQtZ2VuZXJhdG9yJywge2tleVBhdGg6ICdmb28nLCBhdXRvSW5jcmVtZW50
OiB0cnVlfSkiKTsKLSAgICAgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHRlc3RLZXlQYXRo
czsKLSAgICB9OwotfQotCi1mdW5jdGlvbiB0ZXN0S2V5UGF0aHMoKQotewotICAgIGRlYnVnKCIi
KTsKLSAgICBkZWJ1ZygidGVzdEtleVBhdGhzKCk6Iik7Ci0KLSAgICB0cmFuc2FjdGlvbiA9IGV2
YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZS13aXRoLXBhdGgn
XSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICBzdG9yZSA9IGV2YWxBbmRMb2co
InN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlLXdpdGgtcGF0aCcpIik7Ci0K
LSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIktleSBwYXRoIGRvZXNuJ3QgcmVzb2x2ZSB0byBh
IHZhbHVlOyBzaG91bGQgeWllbGQgbnVsbCwgc2hvdWxkIHRocm93IERBVEFfRVJSIik7Ci0gICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KG51bGwpIiwgIklEQkRhdGFiYXNlRXhj
ZXB0aW9uLkRBVEFfRVJSIik7Ci0KLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIktleSBwYXRo
IGRvZXNuJ3QgcmVzb2x2ZSB0byBhIHZhbHVlOyBzaG91bGQgeWllbGQgbnVsbCwgc2hvdWxkIHRo
cm93IERBVEFfRVJSIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KHt9
KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotCi0gICAgZGVidWcoIiIpOwot
ICAgIGRlYnVnKCJLZXkgcGF0aCByZXNvbHZlcyB0byBhIHZhbHVlIHRoYXQgaXMgaW52YWxpZCBr
ZXk7IHNob3VsZCB5aWVsZCAnaW52YWxpZCcga2V5LCBzaG91bGQgdGhyb3cgREFUQV9FUlIiKTsK
LSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5wdXQoe2ZvbzogbnVsbH0pIiwgIklE
QkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0KLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVi
dWcoIktleSBwYXRoIHJlc29sdmVzIHRvIGEgdmFsdWUgdGhhdCBpcyB2YWxpZCBrZXk7IHNob3Vs
ZCB5aWVsZCAnc3RyaW5nJyBrZXksIHNob3VsZCBzdWNjZWVkIik7Ci0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInN0b3JlLnB1dCh7Zm9vOiAnem9vJ30pIik7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbiAoKSB7Ci0gICAgICAgIHRlc3RQYXNzZWQoInN0b3JlLnB1dCBzdWNjZWVkZWQiKTsKLSAg
ICB9OwotCi0gICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNr
OwotICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB0ZXN0S2V5UGF0aHNBbmRHZW5lcmF0b3I7
Ci19Ci0KLWZ1bmN0aW9uIHRlc3RLZXlQYXRoc0FuZEdlbmVyYXRvcigpCi17Ci0gICAgZGVidWco
IiIpOwotICAgIGRlYnVnKCJ0ZXN0S2V5UGF0aHNBbmRHZW5lcmF0b3IoKToiKTsKLQotICAgIHRy
YW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ3N0
b3JlLXdpdGgtcGF0aC1hbmQtZ2VuZXJhdG9yJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUp
Iik7Ci0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0
b3JlKCdzdG9yZS13aXRoLXBhdGgtYW5kLWdlbmVyYXRvcicpIik7Ci0KLSAgICBkZWJ1ZygiIik7
Ci0gICAgZGVidWcoIktleSBwYXRoIGRvZXNuJ3QgcmVzb2x2ZSB0byBhIHZhbHVlOyBzaG91bGQg
eWllbGQgbnVsbCBidXQgaW5zZXJ0aW9uIHdvdWxkIGZhaWwsIHNvIHB1dCByZXF1ZXN0IHNob3Vs
ZCByYWlzZSBleGNlcHRpb24iKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5w
dXQobnVsbCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLQotICAgIGRlYnVn
KCIiKTsKLSAgICBkZWJ1ZygiS2V5IHBhdGggZG9lc24ndCByZXNvbHZlIHRvIGEgdmFsdWU7IHNo
b3VsZCB5aWVsZCBudWxsIGJ1dCBpbnNlcnRpb24gd291bGQgZmFpbCwgc28gcHV0IHJlcXVlc3Qg
c2hvdWxkIHJhaXNlIGV4Y2VwdGlvbiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0
b3JlLnB1dCgnc3RyaW5nJykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLQot
ICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiS2V5IHBhdGggZG9lc24ndCByZXNvbHZlIHRvIGEg
dmFsdWU7IHNob3VsZCB5aWVsZCBudWxsLCBrZXkgc2hvdWxkIGJlIGdlbmVyYXRlZCwgcHV0IHJl
cXVlc3Qgc2hvdWxkIHN1Y2NlZWQiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUu
cHV0KHt9KSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewotICAgICAgICB0ZXN0UGFz
c2VkKCJzdG9yZS5wdXQgc3VjY2VlZGVkIik7Ci0KLSAgICAgICAgZGVidWcoIiIpOwotICAgICAg
ICBkZWJ1ZygiS2V5IHBhdGggcmVzb2x2ZXMgdG8gYSB2YWx1ZSB0aGF0IGlzIGludmFsaWQga2V5
OyBzaG91bGQgeWllbGQgJ2ludmFsaWQnIGtleSwgc2hvdWxkIHRocm93IERBVEFfRVJSIik7Ci0g
ICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLnB1dCh7Zm9vOiBudWxsfSkiLCAi
SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLQotICAgICAgICBkZWJ1ZygiIik7Ci0g
ICAgICAgIGRlYnVnKCJLZXkgcGF0aCByZXNvbHZlcyB0byBhIHZhbHVlIHRoYXQgaXMgdmFsaWQg
a2V5OyBzaG91bGQgeWllbGQgJ3N0cmluZycga2V5LCBzaG91bGQgc3VjY2VlZCIpOwotICAgICAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUucHV0KHtmb286ICd6b28nfSkiKTsKLSAgICAg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgdGVzdFBhc3NlZCgi
c3RvcmUucHV0IHN1Y2NlZWRlZCIpOwotCi0gICAgICAgIH07Ci0gICAgfTsKLQotICAgIHRyYW5z
YWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFuc2FjdGlv
bi5vbmNvbXBsZXRlID0gZmluaXNoSlNUZXN0OwotfQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9rZXlwYXRoLWVkZ2VzLmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIva2V5cGF0aC1mZXRjaC1rZXkuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2tleXBhdGgtZmV0Y2gta2V5Lmh0bWwKaW5kZXggYzJjNGE0ODIzYzU5N2IwMmU0MDRlOGE5
ZDYzNjJiNjA3YTRkNzJmZS4uYzhjODA4ZTNiNjM1NGNkZGU2ODA0NGZlMTNkNTM3MDQ0OWY1ZDQz
YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1mZXRj
aC1rZXkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWZl
dGNoLWtleS5odG1sCkBAIC0xLDkyICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KIDxodG1sPgog
PGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0
PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVk
REIga2V5UGF0aHMiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJl
Zml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2Ny
aXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5k
TG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0KLSAgICB0ZXN0RGF0YSA9IFt7
IG5hbWU6ICJzaW1wbGUgaWRlbnRpZmllciIsCi0gICAgICAgICAgICAgICAgICB2YWx1ZToge2lk
OjEwfSwKLSAgICAgICAgICAgICAgICAgIGtleVBhdGg6ICJpZCIsCi0gICAgICAgICAgICAgICAg
ICBrZXk6IDEwIH0sCi0gICAgICAgICAgICAgICAgeyBuYW1lOiAic2ltcGxlIGlkZW50aWZpZXJz
IiwKLSAgICAgICAgICAgICAgICAgIHZhbHVlOiB7aWQxOjEwLCBpZDI6MjB9LAotICAgICAgICAg
ICAgICAgICAga2V5UGF0aDogImlkMSIsCi0gICAgICAgICAgICAgICAgICBrZXk6IDEwIH0sCi0g
ICAgICAgICAgICAgICAgeyBuYW1lOiAibmVzdGVkIGlkZW50aWZpZXJzIiwKLSAgICAgICAgICAg
ICAgICAgIHZhbHVlOiB7b3V0ZXI6e2lubmVyOjEwfX0sCi0gICAgICAgICAgICAgICAgICBrZXlQ
YXRoOiAib3V0ZXIuaW5uZXIiLAotICAgICAgICAgICAgICAgICAga2V5OiAxMCB9LAotICAgICAg
ICAgICAgICAgIHsgbmFtZTogIm5lc3RlZCBpZGVudGlmaWVycyB3aXRoIGRpc3RyYWN0aW9ucyIs
Ci0gICAgICAgICAgICAgICAgICB2YWx1ZToge291dGVyOntpbm5lcjoxMH0sIGlubmVyOntvdXRl
cjoyMH19LAotICAgICAgICAgICAgICAgICAga2V5UGF0aDogIm91dGVyLmlubmVyIiwKLSAgICAg
ICAgICAgICAgICAgIGtleTogMTAgfSwKLSAgICBdOwotICAgIG5leHRUb09wZW4gPSAwOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZTsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24g
Y3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRl
YnVnKCJ0ZXN0aW5nICIgKyB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1lKTsKLQotICAgIGRlbGV0
ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9i
amVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUodGVzdERhdGFbbmV4dFRvT3Blbl0ubmFt
ZSwge2tleVBhdGg6IHRlc3REYXRhW25leHRUb09wZW5dLmtleVBhdGh9KTsiKTsKLSAgICByZXN1
bHQgPSBldmFsQW5kTG9nKCJyZXN1bHQgPSBvYmplY3RTdG9yZS5hZGQodGVzdERhdGFbbmV4dFRv
T3Blbl0udmFsdWUpOyIpOwotICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci0gICAgcmVzdWx0Lm9uc3VjY2VzcyA9IG9wZW5DdXJzb3I7Ci19Ci0KLWZ1bmN0aW9u
IG9wZW5DdXJzb3IoKQotewotICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coInJlc3VsdCA9IG9iamVj
dFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsKLSAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBjaGVja0N1cnNvcjsKLX0KLQot
ZnVuY3Rpb24gY2hlY2tDdXJzb3IoKQotewotICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNv
ciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgaWYgKGN1cnNvcikgewotICAgICAgICBz
aG91bGRCZSgiY3Vyc29yLmtleSIsICJ0ZXN0RGF0YVtuZXh0VG9PcGVuXS5rZXkiKTsKLSAgICB9
IGVsc2UgewotICAgICAgICB0ZXN0RmFpbGVkKCJjdXJzb3IgaXMgbnVsbCIpOwotICAgIH0KLSAg
ICBpZiAoKytuZXh0VG9PcGVuIDwgdGVzdERhdGEubGVuZ3RoKSB7Ci0gICAgICAgIGNyZWF0ZUFu
ZFBvcHVsYXRlT2JqZWN0U3RvcmUoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKLSAgICB9Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMva2V5cGF0aC1mZXRjaC1rZXkuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+
CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXly
YW5nZS1yZXF1aXJlZC1hcmd1bWVudHMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2tleXJhbmdlLXJlcXVpcmVkLWFyZ3VtZW50cy5odG1sCmluZGV4IDg4MTVmZjQ0NDFmZTc0
NTE2YjA3OGIwNDc5ZmM5MDc3ZWZjZjE2MTguLjA1Yjk5N2FmMTQzZmJjOGQxNmY1YjA2MjVmYTJi
NmE1MTkzNDY2YTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tl
eXJhbmdlLXJlcXVpcmVkLWFyZ3VtZW50cy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2tleXJhbmdlLXJlcXVpcmVkLWFyZ3VtZW50cy5odG1sCkBAIC0xLDMxICsxLDEw
IEBACi08IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0
PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIga2V5cmFuZ2UgcmVxdWlyZWQgYXJndW1l
bnRzIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7
Ci0KLSAgICBzaG91bGRUaHJvdygiSURCS2V5UmFuZ2Uub25seSgpOyIpOwotICAgIHNob3VsZFRo
cm93KCJJREJLZXlSYW5nZS5sb3dlckJvdW5kKCk7Iik7Ci0gICAgc2hvdWxkVGhyb3coIklEQktl
eVJhbmdlLnVwcGVyQm91bmQoKTsiKTsKLSAgICBzaG91bGRUaHJvdygiSURCS2V5UmFuZ2UuYm91
bmQoMSk7Iik7Ci0gICAgc2hvdWxkVGhyb3coIklEQktleVJhbmdlLmJvdW5kKCk7Iik7Ci0KLSAg
ICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9rZXlyYW5nZS1yZXF1aXJlZC1hcmd1bWVudHMuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9rZXlyYW5nZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
a2V5cmFuZ2UuaHRtbAppbmRleCA2MzhkNWYzOGE2Nzk0MjA0NzhmMzhjNjg4YWJiYmVkMTg1OTU0
MDk1Li45ZmRjMWNiZWYxMzdiNDYwZTA1ZjExMjNmY2VmM2UyYzBmNTc4OGY0IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlyYW5nZS5odG1sCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleXJhbmdlLmh0bWwKQEAgLTQsMTkyICs0LDcgQEAK
IDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxi
b2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgS2V5UmFuZ2Uu
Iik7Ci0KLWZ1bmN0aW9uIGNoZWNrU2luZ2xlS2V5UmFuZ2UodmFsdWUpCi17Ci0gICAga2V5UmFu
Z2UgPSBldmFsQW5kTG9nKCJJREJLZXlSYW5nZS5vbmx5KCIgKyB2YWx1ZSArICIpIik7Ci0gICAg
c2hvdWxkQmUoImtleVJhbmdlLmxvd2VyIiwgIiIgKyB2YWx1ZSk7Ci0gICAgc2hvdWxkQmUoImtl
eVJhbmdlLnVwcGVyIiwgIiIgKyB2YWx1ZSk7Ci0gICAgc2hvdWxkQmVGYWxzZSgia2V5UmFuZ2Uu
bG93ZXJPcGVuIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgia2V5UmFuZ2UudXBwZXJPcGVuIik7Ci19
Ci0KLWZ1bmN0aW9uIGNoZWNrTG93ZXJCb3VuZEtleVJhbmdlKHZhbHVlLCBvcGVuKQotewotICAg
IGtleVJhbmdlID0gZXZhbEFuZExvZygiSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgiICsgdmFsdWUg
KyAiLCIgKyBvcGVuICsgIikiKTsKLSAgICBzaG91bGRCZSgia2V5UmFuZ2UubG93ZXIiLCAiIiAr
IHZhbHVlKTsKLSAgICBpZiAob3BlbiA9PT0gdW5kZWZpbmVkKQotICAgICAgICBvcGVuID0gZmFs
c2U7Ci0gICAgc2hvdWxkQmUoImtleVJhbmdlLmxvd2VyT3BlbiIsICIiICsgb3Blbik7Ci0gICAg
c2hvdWxkQmVOdWxsKCJrZXlSYW5nZS51cHBlciIpOwotICAgIHNob3VsZEJlRmFsc2UoImtleVJh
bmdlLnVwcGVyT3BlbiIpOwotfQotCi1mdW5jdGlvbiBjaGVja1VwcGVyQm91bmRLZXlSYW5nZSh2
YWx1ZSwgb3BlbikKLXsKLSAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coIklEQktleVJhbmdlLnVw
cGVyQm91bmQoIiArIHZhbHVlICsgIiwiICsgb3BlbiArICIpIik7Ci0gICAgc2hvdWxkQmUoImtl
eVJhbmdlLnVwcGVyIiwgIiIgKyB2YWx1ZSk7Ci0gICAgaWYgKG9wZW4gPT09IHVuZGVmaW5lZCkK
LSAgICAgICAgb3BlbiA9IGZhbHNlOwotICAgIHNob3VsZEJlKCJrZXlSYW5nZS51cHBlck9wZW4i
LCAiIiArIG9wZW4pOwotICAgIHNob3VsZEJlTnVsbCgia2V5UmFuZ2UubG93ZXIiKTsKLSAgICBz
aG91bGRCZUZhbHNlKCJrZXlSYW5nZS5sb3dlck9wZW4iKTsKLX0KLQotZnVuY3Rpb24gY2hlY2tC
b3VuZEtleVJhbmdlKGxvd2VyLCB1cHBlciwgbG93ZXJPcGVuLCB1cHBlck9wZW4pCi17Ci0gICAg
a2V5UmFuZ2UgPSBldmFsQW5kTG9nKCJJREJLZXlSYW5nZS5ib3VuZCgiICsgbG93ZXIgKyAiLCIg
KyB1cHBlciArICIsICIgKyBsb3dlck9wZW4gKyAiLCAiICsgdXBwZXJPcGVuICsgIikiKTsKLSAg
ICBzaG91bGRCZSgia2V5UmFuZ2UubG93ZXIiLCAiIiArIGxvd2VyKTsKLSAgICBzaG91bGRCZSgi
a2V5UmFuZ2UudXBwZXIiLCAiIiArIHVwcGVyKTsKLSAgICBpZiAobG93ZXJPcGVuID09PSB1bmRl
ZmluZWQpCi0gICAgICAgIGxvd2VyT3BlbiA9IGZhbHNlOwotICAgIGlmICh1cHBlck9wZW4gPT09
IHVuZGVmaW5lZCkKLSAgICAgICAgdXBwZXJPcGVuID0gZmFsc2U7Ci0gICAgc2hvdWxkQmUoImtl
eVJhbmdlLmxvd2VyT3BlbiIsICIiICsgbG93ZXJPcGVuKTsKLSAgICBzaG91bGRCZSgia2V5UmFu
Z2UudXBwZXJPcGVuIiwgIiIgKyB1cHBlck9wZW4pOwotfQotCi1mdW5jdGlvbiB0ZXN0KCkKLXsK
LSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIHNob3VsZEJlRmFsc2UoIidsb3dlcicg
aW4gSURCS2V5UmFuZ2UiKTsKLSAgICBzaG91bGRCZUZhbHNlKCIndXBwZXInIGluIElEQktleVJh
bmdlIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiJ2xvd2VyT3BlbicgaW4gSURCS2V5UmFuZ2UiKTsK
LSAgICBzaG91bGRCZUZhbHNlKCIndXBwZXJPcGVuJyBpbiBJREJLZXlSYW5nZSIpOwotICAgIHNo
b3VsZEJlVHJ1ZSgiJ29ubHknIGluIElEQktleVJhbmdlIik7Ci0gICAgc2hvdWxkQmVUcnVlKCIn
bG93ZXJCb3VuZCcgaW4gSURCS2V5UmFuZ2UiKTsKLSAgICBzaG91bGRCZVRydWUoIid1cHBlckJv
dW5kJyBpbiBJREJLZXlSYW5nZSIpOwotICAgIHNob3VsZEJlVHJ1ZSgiJ2JvdW5kJyBpbiBJREJL
ZXlSYW5nZSIpOwotCi0gICAgZGVidWcoIiIpOwotCi0gICAgdmFyIGluc3RhbmNlID0gZXZhbEFu
ZExvZygiaW5zdGFuY2UgPSBJREJLZXlSYW5nZS5vbmx5KDEpIik7Ci0gICAgc2hvdWxkQmVUcnVl
KCInbG93ZXInIGluIGluc3RhbmNlIik7Ci0gICAgc2hvdWxkQmVUcnVlKCIndXBwZXInIGluIGlu
c3RhbmNlIik7Ci0gICAgc2hvdWxkQmVUcnVlKCInbG93ZXJPcGVuJyBpbiBpbnN0YW5jZSIpOwot
ICAgIHNob3VsZEJlVHJ1ZSgiJ3VwcGVyT3BlbicgaW4gaW5zdGFuY2UiKTsKLSAgICBzaG91bGRC
ZUZhbHNlKCInb25seScgaW4gaW5zdGFuY2UiKTsKLSAgICBzaG91bGRCZUZhbHNlKCInbG93ZXJC
b3VuZCcgaW4gaW5zdGFuY2UiKTsKLSAgICBzaG91bGRCZUZhbHNlKCIndXBwZXJCb3VuZCcgaW4g
aW5zdGFuY2UiKTsKLSAgICBzaG91bGRCZUZhbHNlKCInYm91bmQnIGluIGluc3RhbmNlIik7Ci0K
LSAgICBkZWJ1ZygiIik7Ci0KLSAgICBjaGVja1NpbmdsZUtleVJhbmdlKDEpOwotICAgIGNoZWNr
U2luZ2xlS2V5UmFuZ2UoMy4xNCk7Ci0gICAgY2hlY2tTaW5nbGVLZXlSYW5nZSgiJ2EnIik7Ci0K
LSAgICBjaGVja0xvd2VyQm91bmRLZXlSYW5nZSgxMCwgdHJ1ZSk7Ci0gICAgY2hlY2tMb3dlckJv
dW5kS2V5UmFuZ2UoMTEsIGZhbHNlKTsKLSAgICBjaGVja0xvd2VyQm91bmRLZXlSYW5nZSgxMik7
Ci0gICAgY2hlY2tMb3dlckJvdW5kS2V5UmFuZ2UoMTAuMSwgdHJ1ZSk7Ci0gICAgY2hlY2tMb3dl
ckJvdW5kS2V5UmFuZ2UoMTEuMiwgZmFsc2UpOwotICAgIGNoZWNrTG93ZXJCb3VuZEtleVJhbmdl
KDEyLjMpOwotICAgIGNoZWNrTG93ZXJCb3VuZEtleVJhbmdlKCInYWEnIiwgdHJ1ZSk7Ci0gICAg
Y2hlY2tMb3dlckJvdW5kS2V5UmFuZ2UoIidhYiciLCBmYWxzZSk7Ci0gICAgY2hlY2tMb3dlckJv
dW5kS2V5UmFuZ2UoIidhYyciKTsKLQotICAgIGNoZWNrVXBwZXJCb3VuZEtleVJhbmdlKDIwLCB0
cnVlKTsKLSAgICBjaGVja1VwcGVyQm91bmRLZXlSYW5nZSgyMSwgZmFsc2UpOwotICAgIGNoZWNr
VXBwZXJCb3VuZEtleVJhbmdlKDIyKTsKLSAgICBjaGVja1VwcGVyQm91bmRLZXlSYW5nZSgyMC4y
LCB0cnVlKTsKLSAgICBjaGVja1VwcGVyQm91bmRLZXlSYW5nZSgyMS4zLCBmYWxzZSk7Ci0gICAg
Y2hlY2tVcHBlckJvdW5kS2V5UmFuZ2UoMjIuNCk7Ci0gICAgY2hlY2tVcHBlckJvdW5kS2V5UmFu
Z2UoIidiYSciLCB0cnVlKTsKLSAgICBjaGVja1VwcGVyQm91bmRLZXlSYW5nZSgiJ2JiJyIsIGZh
bHNlKTsKLSAgICBjaGVja1VwcGVyQm91bmRLZXlSYW5nZSgiJ2JjJyIpOwotCi0gICAgY2hlY2tC
b3VuZEtleVJhbmdlKDMwLCA0MCk7Ci0gICAgY2hlY2tCb3VuZEtleVJhbmdlKDMxLCA0MSwgZmFs
c2UsIGZhbHNlKTsKLSAgICBjaGVja0JvdW5kS2V5UmFuZ2UoMzIsIDQyLCBmYWxzZSwgdHJ1ZSk7
Ci0gICAgY2hlY2tCb3VuZEtleVJhbmdlKDMzLCA0MywgdHJ1ZSwgZmFsc2UpOwotICAgIGNoZWNr
Qm91bmRLZXlSYW5nZSgzNCwgNDQsIHRydWUsIHRydWUpOwotCi0gICAgY2hlY2tCb3VuZEtleVJh
bmdlKDMwLjEsIDQwLjIpOwotICAgIGNoZWNrQm91bmRLZXlSYW5nZSgzMS4zLCA0MS40LCBmYWxz
ZSwgZmFsc2UpOwotICAgIGNoZWNrQm91bmRLZXlSYW5nZSgzMi41LCA0Mi42LCBmYWxzZSwgdHJ1
ZSk7Ci0gICAgY2hlY2tCb3VuZEtleVJhbmdlKDMzLjcsIDQzLjgsIHRydWUsIGZhbHNlKTsKLSAg
ICBjaGVja0JvdW5kS2V5UmFuZ2UoMzQuOSwgNDQuMCwgdHJ1ZSwgdHJ1ZSk7Ci0KLSAgICBjaGVj
a0JvdW5kS2V5UmFuZ2UoIidhYWEnIiwgIidhYmEnIiwgZmFsc2UsIGZhbHNlKTsKLSAgICBjaGVj
a0JvdW5kS2V5UmFuZ2UoIidhYWInIiwgIidhYmInIik7Ci0gICAgY2hlY2tCb3VuZEtleVJhbmdl
KCInYWFjJyIsICInYWJjJyIsIGZhbHNlLCBmYWxzZSk7Ci0gICAgY2hlY2tCb3VuZEtleVJhbmdl
KCInYWFkJyIsICInYWJkJyIsIGZhbHNlLCB0cnVlKTsKLSAgICBjaGVja0JvdW5kS2V5UmFuZ2Uo
IidhYWUnIiwgIidhYmUnIiwgdHJ1ZSwgZmFsc2UpOwotICAgIGNoZWNrQm91bmRLZXlSYW5nZSgi
J2FhZiciLCAiJ2FiZiciLCB0cnVlLCB0cnVlKTsKLQotICAgIHRyeSB7Ci0gICAgICAgIGRlYnVn
KCJQYXNzaW5nIGFuIGludmFsaWQga2V5IGludG8gb25seSh7fSkiKTsKLSAgICAgICAgSURCS2V5
UmFuZ2Uub25seSh7fSk7Ci0gICAgICAgIHRlc3RGYWlsZWQoIk5vIGV4Y2VwdGlvbiB0aHJvd24i
KTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIHRlc3RQYXNzZWQoIkNhdWdodCBleGNlcHRp
b246ICIgKyBlLnRvU3RyaW5nKCkpOwotICAgIH0KLQotICAgIHRyeSB7Ci0gICAgICAgIGRlYnVn
KCJQYXNzaW5nIGFuIGludmFsaWQga2V5IGludG8gdXBwZXJCb3VuZCh7fSkiKTsKLSAgICAgICAg
SURCS2V5UmFuZ2UudXBwZXJCb3VuZCh7fSk7Ci0gICAgICAgIHRlc3RGYWlsZWQoIk5vIGV4Y2Vw
dGlvbiB0aHJvd24iKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIHRlc3RQYXNzZWQoIkNh
dWdodCBleGNlcHRpb246ICIgKyBlLnRvU3RyaW5nKCkpOwotICAgIH0KLSAKLSAgICB0cnkgewot
ICAgICAgICBkZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIGxvd2VyQm91bmQoe30p
Iik7Ci0gICAgICAgIElEQktleVJhbmdlLmxvd2VyQm91bmQoe30pOwotICAgICAgICB0ZXN0RmFp
bGVkKCJObyBleGNlcHRpb24gdGhyb3duIik7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICB0
ZXN0UGFzc2VkKCJDYXVnaHQgZXhjZXB0aW9uOiAiICsgZS50b1N0cmluZygpKTsKLSAgICB9Ci0K
LSAgICB0cnkgewotICAgICAgICBkZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIGJv
dW5kKG51bGwsIHt9KSIpOwotICAgICAgICBJREJLZXlSYW5nZS5ib3VuZChudWxsLCB7fSk7Ci0g
ICAgICAgIHRlc3RGYWlsZWQoIk5vIGV4Y2VwdGlvbiB0aHJvd24iKTsKLSAgICB9IGNhdGNoIChl
KSB7Ci0gICAgICAgIHRlc3RQYXNzZWQoIkNhdWdodCBleGNlcHRpb246ICIgKyBlLnRvU3RyaW5n
KCkpOwotICAgIH0KLQotICAgIHRyeSB7Ci0gICAgICAgIGRlYnVnKCJQYXNzaW5nIGFuIGludmFs
aWQga2V5IGludG8gYm91bmQoe30sbnVsbCkiKTsKLSAgICAgICAgSURCS2V5UmFuZ2UuYm91bmQo
e30sIG51bGwpOwotICAgICAgICB0ZXN0RmFpbGVkKCJObyBleGNlcHRpb24gdGhyb3duIik7Ci0g
ICAgfSBjYXRjaCAoZSkgewotICAgICAgICB0ZXN0UGFzc2VkKCJDYXVnaHQgZXhjZXB0aW9uOiAi
ICsgZS50b1N0cmluZygpKTsKLSAgICB9Ci0KLSAgICB0cnkgewotICAgICAgICBkZWJ1ZygiUGFz
c2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIGJvdW5kKHt9LCB7fSkiKTsKLSAgICAgICAgSURCS2V5
UmFuZ2UuYm91bmQoe30sIHt9KTsKLSAgICAgICAgdGVzdEZhaWxlZCgiTm8gZXhjZXB0aW9uIHRo
cm93biIpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgdGVzdFBhc3NlZCgiQ2F1Z2h0IGV4
Y2VwdGlvbjogIiArIGUudG9TdHJpbmcoKSk7Ci0gICAgfQotCi0gICAgZGVidWcoIkxvd2VyIGtl
eSBncmVhdGVyIHRoYW4gaGlnaGVyIGtleSwgYm91bmQoNCwgMykiKTsKLSAgICBldmFsQW5kRXhw
ZWN0RXhjZXB0aW9uKCJJREJLZXlSYW5nZS5ib3VuZCg0LCAzKSIsICJJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5EQVRBX0VSUiIpOwotCi0gICAgZGVidWcoIkVxdWFsIGtleXMsIGVpdGhlciBvZiB0aGUg
Ym91bmRzIGlzIG9wZW4sIGJvdW5kKDQsIDQsIHRydWUsIGZhbHNlKSIpOwotICAgIGV2YWxBbmRF
eHBlY3RFeGNlcHRpb24oIklEQktleVJhbmdlLmJvdW5kKDQsIDQsIHRydWUsIGZhbHNlKSIsICJJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotCi0gICAgZGVidWcoIkVxdWFsIGtleXMs
IGVpdGhlciBvZiB0aGUgYm91bmRzIGlzIG9wZW4sIGJvdW5kKDQsIDQsIGZhbHNlLCB0cnVlKSIp
OwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIklEQktleVJhbmdlLmJvdW5kKDQsIDQsIGZh
bHNlLCB0cnVlKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotCi0gICAgZGVi
dWcoIkVxdWFsIGtleXMsIGVpdGhlciBvZiB0aGUgYm91bmRzIGlzIG9wZW4sIGJvdW5kKDQsIDQs
IHRydWUsIHRydWUpIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiSURCS2V5UmFuZ2Uu
Ym91bmQoNCwgNCwgdHJ1ZSwgdHJ1ZSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIi
KTsKLQotICAgIGRlYnVnKCJFcXVhbCBrZXlzLCBub25lIG9mIHRoZSBib3VuZHMgaXMgb3Blbiwg
Ym91bmQoNCwgNCwgZmFsc2UsIGZhbHNlKSIpOwotICAgIElEQktleVJhbmdlLmJvdW5kKDQsIDQs
IGZhbHNlLCBmYWxzZSk7Ci19Ci0KLXRlc3QoKTsKLQotZmluaXNoSlNUZXN0KCk7Ci0KLTwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9rZXlyYW5nZS5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2xpc3Qtb3JkZXJpbmcuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2xpc3Qtb3JkZXJpbmcuaHRtbAppbmRleCAwNzQxMmY1YjUzY2M0MTZlMDk5ZGMyMmU5OTMxZWYx
OGY1ZjgwM2ZlLi5iOWQ5YjM1OTE5NTM0Yjg2ZTA1ZGZmOTQyZmY2Zjg1ZTMzNjNhNTU4IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9saXN0LW9yZGVyaW5nLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbGlzdC1vcmRlcmluZy5odG1sCkBA
IC00LDkyICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Njcmlw
dD4KIDwvaGVhZD4KIDxib2R5PgotPGlucHV0IHR5cGU9ImZpbGUiIGlkPSJmaWxlSW5wdXQiIG11
bHRpcGxlPjwvaW5wdXQ+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBzdHJpbmcgbGlz
dCBvcmRlcmluZyBpbiBJbmRleGVkREIuIik7Ci0KLXZhciBleHBlY3RlZF9vcmRlciA9IFsKLSAg
IiIsCi0gICJceDAwIiwgLy8gJ05VTEwnIChVKzAwMDApCi0gICIwIiwKLSAgIjEiLAotICAiQSIs
Ci0gICJCIiwKLSAgImEiLAotICAiYiIsCi0gICJceDdGIiwgLy8gJ0RFTEVURScgKFUrMDA3RikK
LSAgIlx4QzAiLCAvLyAnTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEdSQVZFJyAoVSswMEMw
KQotICAiXHhDMSIsIC8vICdMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQUNVVEUnIChVKzAw
QzEpCi0gICJceEUwIiwgLy8gJ0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggR1JBVkUnIChVKzAw
RTApCi0gICJceEUxIiwgLy8gJ0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQUNVVEUnIChVKzAw
RTEpCi0gICJceEZGIiwgLy8gJ0xBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTJyAo
VSswMEZGKQotICAiXHUwMTAwIiwgLy8gJ0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBNQUNS
T04nIChVKzAxMDApCi0gICJcdTEwMDAiLCAvLyAnTVlBTk1BUiBMRVRURVIgS0EnIChVKzEwMDAp
Ci0gICJcdUQ4MzRcdUREMUUiLCAvLyAnTVVTSUNBTCBTWU1CT0wgRy1DTEVGJyAoVSsxRDExRSks
IFVURi0xNiBzdXJyb2dhdGUgcGFpcnMKLSAgIlx1RkZGRCIgLy8gJ1JFUExBQ0VNRU5UIENIQVJB
Q1RFUicgKFUrRkZGRCkKLV07Ci12YXIgaSwgdG1wLCBwZXJtdXRlZF9vcmRlciA9IGV4cGVjdGVk
X29yZGVyLnNsaWNlKCk7IHBlcm11dGVkX29yZGVyLnJldmVyc2UoKTsKLWZvciAoaSA9IDA7IGkg
PCBwZXJtdXRlZF9vcmRlci5sZW5ndGggLSAyOyBpICs9IDIpIHsKLSAgICB0bXAgPSBwZXJtdXRl
ZF9vcmRlcltpXTsKLSAgICBwZXJtdXRlZF9vcmRlcltpXSA9IHBlcm11dGVkX29yZGVyW2kgKyAx
XTsKLSAgICBwZXJtdXRlZF9vcmRlcltpICsgMV0gPSB0bXA7Ci19Ci0KLWZ1bmN0aW9uIHRlc3Qo
KQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgZGVidWcoImNoZWNrIHRoYXQg
dGhlIGV4cGVjdGVkIG9yZGVyIGlzIHRoZSBjYW5vbmljYWwgSlMgc29ydCBvcmRlcjoiKTsKLSAg
ICBldmFsQW5kTG9nKCJzb3J0ZWRfb3JkZXIgPSBleHBlY3RlZF9vcmRlci5zbGljZSgpOyBzb3J0
ZWRfb3JkZXIuc29ydCgpIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJhcmVBcnJheXNFcXVhbChzb3J0
ZWRfb3JkZXIsIGV4cGVjdGVkX29yZGVyKSIpOwotICAgIHRlc3RTdG9yZXNBbmRJbmRleGVzKCk7
Ci19Ci0KLQotCi1mdW5jdGlvbiB0ZXN0U3RvcmVzQW5kSW5kZXhlcygpCi17Ci0gICAgZGVidWco
IiIpOwotICAgIGRlYnVnKCJ0ZXN0U3RvcmVzQW5kSW5kZXhlcygpOiIpOwotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoJ2xpc3Qtb3JkZXJpbmcnKSIp
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZSkgewotICAgICAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCLm9wZW4oJ2xpc3Qtb3JkZXJpbmcnKSIpOwotICAgICAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJkYiA9IHJlcXVl
c3QucmVzdWx0Iik7Ci0gICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLnZlcnNp
b24iLCAiIik7Ci0gICAgICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lv
bignMScpIik7Ci0gICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLSAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZSkgewot
ICAgICAgICAgICAgICAgIHRyYW5zID0gcmVxdWVzdC5yZXN1bHQ7Ci0KLSAgICAgICAgICAgICAg
ICBkZWJ1ZygiIik7Ci0gICAgICAgICAgICAgICAgZGVidWcoIk9iamVjdCBzdG9yZXM6Iik7Ci0g
ICAgICAgICAgICAgICAgcGVybXV0ZWRfb3JkZXIuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkgewot
ICAgICAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgiICsg
SlNPTi5zdHJpbmdpZnkobmFtZSkgKyIpIik7Ci0gICAgICAgICAgICAgICAgfSk7Ci0KLSAgICAg
ICAgICAgICAgICBzaG91bGRCZVRydWUoImFyZUFycmF5c0VxdWFsKGRiLm9iamVjdFN0b3JlTmFt
ZXMsIGV4cGVjdGVkX29yZGVyKSIpOwotCi0gICAgICAgICAgICAgICAgZGVidWcoIiIpOwotICAg
ICAgICAgICAgICAgIGRlYnVnKCJJbmRleGVzOiIpOwotICAgICAgICAgICAgICAgIHN0b3JlID0g
ZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOwotICAg
ICAgICAgICAgICAgIHBlcm11dGVkX29yZGVyLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHsKLSAg
ICAgICAgICAgICAgICAgICAgZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoIiArIEpTT04u
c3RyaW5naWZ5KG5hbWUpICsiLCAna2V5UGF0aCcpIik7Ci0gICAgICAgICAgICAgICAgfSk7Ci0K
LSAgICAgICAgICAgICAgICBzaG91bGRCZVRydWUoImFyZUFycmF5c0VxdWFsKHN0b3JlLmluZGV4
TmFtZXMsIGV4cGVjdGVkX29yZGVyKSIpOwotCi0gICAgICAgICAgICAgICAgdHJhbnMub25jb21w
bGV0ZSA9IGZpbmlzaEpTVGVzdDsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgfTsK
LX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbGlzdC1v
cmRlcmluZy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL211dGF0aW5nLWN1cnNvci5odG1sIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbXV0YXRpbmctY3Vyc29yLmh0bWwKaW5kZXgg
MzRiMTliOWJiYTJiOGJkMzU3Y2NjZmI1ODg4N2U4MTkwMzU4MmY0Ny4uNDJlZjAzMGNlM2E1NDFj
NTJkMzVhNGY0ZGU0MDEyZTY2YjQwYWU3MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbXV0YXRpbmctY3Vyc29yLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbXV0YXRpbmctY3Vyc29yLmh0bWwKQEAgLTQsMTM4ICs0LDcgQEAKIDxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5Pgot
PHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgbXV0YXRpbmcgYW4gSW5kZXhlZERCJ3Mgb2Jq
ZWN0c3RvcmUgZnJvbSBhIGN1cnNvci4iKTsKLQotdGVzdCgpOwotCi1mdW5jdGlvbiB0ZXN0KCkK
LXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJpbmRleGVkREIub3BlbignbXV0YXRpbmctY3Vyc29yJykiKTsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgdmFyIGRiID0g
ZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBzZXRWZXJzaW9uU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQotewotICAgIGRl
YnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOwotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9n
KCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5z
ICE9PSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNr
OwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBvcGVuRm9yd2FyZEN1cnNvcjsKLQotICAgIGRlbGV0
ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICB2YXIgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7Ci0gICAgZXZh
bEFuZExvZygib2JqZWN0U3RvcmUuYWRkKDEsIDEpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgyLCAyKS5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKLSAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9y
ZS5hZGQoMywgMykub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7Ci0gICAgZXZh
bEFuZExvZygib2JqZWN0U3RvcmUuYWRkKDQsIDQpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjayIpOwotfQotCi1mdW5jdGlvbiBvcGVuRm9yd2FyZEN1cnNvcigpCi17Ci0gICAgZGVi
dWcoIm9wZW5Gb3J3YXJkQ3Vyc29yKCkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRy
YW5zYWN0aW9uKFsnc3RvcmUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICB0
cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21w
bGV0ZSA9IGZvcndhcmRDdXJzb3JDb21wbGV0ZTsKLQotICAgIHNlbGYub2JqZWN0U3RvcmUgPSBl
dmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOwotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCkiKTsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGZvcndhcmRDdXJzb3I7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci0gICAgc2VsZi5jdXJzb3JTdGVwcyA9IDA7Ci19Ci0KLWZ1bmN0aW9uIGZv
cndhcmRDdXJzb3IoKQotewotICAgIGRlYnVnKCJmb3J3YXJkQ3Vyc29yKCkiKTsKLSAgICBzZWxm
LmN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Ci0KLSAgICBpZiAoZXZlbnQudGFyZ2V0LnJl
c3VsdCA9PSBudWxsKSB7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJzb3JTdGVwcyIsICI1Iik7Ci0K
LSAgICAgICAgLy8gTGV0IHRoZSB0cmFuc2FjdGlvbiBmaW5pc2guCi0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBkZWJ1ZygrK2N1cnNvclN0ZXBzKTsKLSAgICBzaG91bGRCZSgiY3Vyc29y
LmtleSIsICJjdXJzb3JTdGVwcyIpOwotICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAiY3Vy
c29yU3RlcHMiKTsKLQotICAgIGlmIChjdXJzb3JTdGVwcyA9PSAxKSB7Ci0gICAgICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJldmVudC50YXJnZXQuc291cmNlLmFkZCg1LCA1KSIpOwotICAgICAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeyBldmFsQW5kTG9nKCJjdXJzb3IuY29u
dGludWUoKSIpOyB9Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51
ZSgpIik7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBmb3J3YXJkQ3Vyc29yQ29tcGxldGUoKQotewot
ICAgIGRlYnVnKCJmb3J3YXJkQ3Vyc29yQ29tcGxldGUoKSIpOwotICAgIG9wZW5SZXZlcnNlQ3Vy
c29yKCkKLX0KLQotZnVuY3Rpb24gb3BlblJldmVyc2VDdXJzb3IoKQotewotICAgIGRlYnVnKCJv
cGVuUmV2ZXJzZUN1cnNvcigpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2Fj
dGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgdHJhbnMu
b25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUg
PSByZXZlcnNlQ3Vyc29yQ29tcGxldGU7Ci0KLSAgICBzZWxmLm9iamVjdFN0b3JlID0gZXZhbEFu
ZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygib2JqZWN0U3RvcmUub3BlbkN1cnNvcihudWxsLCBJREJDdXJzb3IuUFJFVikiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHJldmVyc2VDdXJzb3I7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgc2VsZi5jdXJzb3JTdGVwcyA9IDY7Ci19
Ci0KLWZ1bmN0aW9uIHJldmVyc2VDdXJzb3IoKQotewotICAgIGRlYnVnKCJyZXZlcnNlQ3Vyc29y
KCkiKTsKLSAgICBzZWxmLmN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Ci0KLSAgICBpZiAo
ZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBudWxsKSB7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJzb3JT
dGVwcyIsICIwIik7Ci0KLSAgICAgICAgLy8gTGV0IHRoZSB0cmFuc2FjdGlvbiBmaW5pc2guCi0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBkZWJ1ZygtLWN1cnNvclN0ZXBzKTsKLSAgICBz
aG91bGRCZSgiY3Vyc29yLmtleSIsICJjdXJzb3JTdGVwcyIpOwotICAgIHNob3VsZEJlKCJjdXJz
b3IudmFsdWUiLCAiY3Vyc29yU3RlcHMiKTsKLQotICAgIGlmIChjdXJzb3JTdGVwcyA9PSAyKSB7
Ci0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJldmVudC50YXJnZXQuc291cmNlLmFkZCgw
LCAwKSIpOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeyBldmFsQW5k
TG9nKCJjdXJzb3IuY29udGludWUoKSIpOyB9Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGV2YWxBbmRMb2co
ImN1cnNvci5jb250aW51ZSgpIik7Ci0gICAgfQotfQotCi1mdW5jdGlvbiByZXZlcnNlQ3Vyc29y
Q29tcGxldGUoKQotewotICAgIGRlYnVnKCJyZXZlcnNlQ3Vyc29yQ29tcGxldGUoKSIpOwotICAg
IGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9tdXRhdGluZy1jdXJzb3IuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RTdG9yZS1y
ZXF1aXJlZC1hcmd1bWVudHMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29i
amVjdFN0b3JlLXJlcXVpcmVkLWFyZ3VtZW50cy5odG1sCmluZGV4IDZhMmY5ODFhYTJlMTFjNWY2
MmJjODFiMjdiYjg4NmE0ZWY1MGM3MDYuLjgxMWM0ZTAzOTNkYTFhNjE5ZDVkZGZiNTM0NTM1YWNk
ZDY2OGY4ZTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVj
dFN0b3JlLXJlcXVpcmVkLWFyZ3VtZW50cy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL29iamVjdFN0b3JlLXJlcXVpcmVkLWFyZ3VtZW50cy5odG1sCkBAIC0xLDU0ICsx
LDEwIEBACi08IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBz
cmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2Ny
aXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgb2JqZWN0IHN0b3JlIHJlcXVpcmVk
IGFyZ3VtZW50cyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVm
aXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3Jp
cHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImlu
ZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRM
b2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUFuZFBvcHVsYXRl
T2JqZWN0U3RvcmUoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBv
YmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ2ZvbycpOyIpOwotICAgIHNob3VsZFRocm93KCJvYmplY3RTdG9yZS5wdXQoKTsiKTsKLSAg
ICBzaG91bGRUaHJvdygib2JqZWN0U3RvcmUuYWRkKCk7Iik7Ci0gICAgc2hvdWxkVGhyb3coIm9i
amVjdFN0b3JlLmRlbGV0ZSgpOyIpOwotICAgIHNob3VsZFRocm93KCJvYmplY3RTdG9yZS5nZXQo
KTsiKTsKLSAgICBzaG91bGRUaHJvdygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoKTsiKTsKLSAg
ICBzaG91bGRUaHJvdygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ2ZvbycpOyIpOwotICAgIHNo
b3VsZFRocm93KCJvYmplY3RTdG9yZS5pbmRleCgpOyIpOwotICAgIHNob3VsZFRocm93KCJvYmpl
Y3RTdG9yZS5kZWxldGVJbmRleCgpOyIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRl
c3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL29iamVjdFN0b3JlLXJl
cXVpcmVkLWFyZ3VtZW50cy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWF1
dG9pbmNyZW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0
b3JlLWF1dG9pbmNyZW1lbnQuaHRtbAppbmRleCA0MDUxZmE0YTA5NzU1MjdjMzZlNzQ0ZjZhYTI2
ZWJiMDAzMzk4NDZlLi5kYmY2ODU5ZTU4MzYzNTZkZDFkYWFjM2JiN2EyYjJiMzA2MWMzNzgwIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1hdXRv
aW5jcmVtZW50Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0
c3RvcmUtYXV0b2luY3JlbWVudC5odG1sCkBAIC00LDIwMCArNCw3IEBACiA8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+
Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIElEQk9iamVjdFN0b3JlIGF1dG8taW5j
cmVtZW50IGZlYXR1cmUuIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRv
clByZWZpeGVzKCk7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdv
YmplY3RzdG9yZS1hdXRvaW5jcmVtZW50JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9w
ZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGVidWcoIm9wZW5TdWNjZXNz
KCk6Iik7Ci0gICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJz
aW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb25TdWNjZXNzOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlv
biBzZXRWZXJzaW9uU3VjY2VzcygpCi17Ci0gICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6
Iik7Ci0gICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKLSAgICB0cmFucy5v
bmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9
IHNldFZlcnNpb25Db21wbGV0ZWQ7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwot
Ci0gICAgZGVidWcoImNyZWF0ZU9iamVjdFN0b3JlKCk6Iik7Ci0gICAgc2VsZi5zdG9yZSA9IGV2
YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ1N0b3JlV2l0aEtleVBhdGgn
LCB7a2V5UGF0aDogJ2lkJywgYXV0b0luY3JlbWVudDogdHJ1ZX0pIik7Ci0gICAgZXZhbEFuZExv
ZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ1N0b3JlV2l0aEF1dG9JbmNyZW1lbnQnLCB7YXV0b0lu
Y3JlbWVudDogdHJ1ZX0pIik7Ci0gICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUo
J1BsYWluT2xkU3RvcmUnLCB7YXV0b0luY3JlbWVudDogZmFsc2V9KSIpOwotICAgIGV2YWxBbmRM
b2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdTdG9yZVdpdGhMb25nS2V5UGF0aCcsIHtrZXlQYXRo
OiAnYS5iLmMuaWQnLCBhdXRvSW5jcmVtZW50OiB0cnVlfSkiKTsKLSAgICB2YXIgc3RvcmVOYW1l
cyA9IGV2YWxBbmRMb2coInN0b3JlTmFtZXMgPSBkYi5vYmplY3RTdG9yZU5hbWVzIik7Ci0KLSAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInN0b3JlLm5hbWUiLCAiU3RvcmVXaXRoS2V5UGF0aCIp
OwotICAgIHNob3VsZEJlKCJzdG9yZS5rZXlQYXRoIiwgIidpZCciKTsKLSAgICBzaG91bGRCZSgi
c3RvcmVOYW1lcy5jb250YWlucygnU3RvcmVXaXRoS2V5UGF0aCcpIiwgInRydWUiKTsKLSAgICBz
aG91bGRCZSgic3RvcmVOYW1lcy5jb250YWlucygnU3RvcmVXaXRoQXV0b0luY3JlbWVudCcpIiwg
InRydWUiKTsKLSAgICBzaG91bGRCZSgic3RvcmVOYW1lcy5jb250YWlucygnUGxhaW5PbGRTdG9y
ZScpIiwgInRydWUiKTsKLSAgICBzaG91bGRCZSgic3RvcmVOYW1lcy5sZW5ndGgiLCAiNCIpOwot
Ci0gICAgLy8gTGV0IHRoZSBzZXRWZXJzaW9uIHRyYW5zYWN0aW9uIGNvbXBsZXRlLgotfQotCi1m
dW5jdGlvbiBzZXRWZXJzaW9uQ29tcGxldGVkKCkKLXsKLSAgICBkZWJ1Zygic2V0VmVyc2lvbkNv
bXBsZXRlZCgpOiIpOwotCi0gICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIu
dHJhbnNhY3Rpb24oWydTdG9yZVdpdGhLZXlQYXRoJywgJ1N0b3JlV2l0aEF1dG9JbmNyZW1lbnQn
LCAnUGxhaW5PbGRTdG9yZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIHRy
YW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBs
ZXRlID0gdGVzdExvbmdLZXlQYXRoOwotCi0gICAgc2VsZi5zdG9yZSA9IGV2YWxBbmRMb2coInN0
b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ1N0b3JlV2l0aEtleVBhdGgnKSIpOwotCi0gICAgZGVi
dWcoIkluc2VydCBpbnRvIG9iamVjdCBzdG9yZSB3aXRoIGF1dG8gaW5jcmVtZW50IGFuZCBrZXkg
cGF0aCwgd2l0aCBrZXkgaW4gdGhlIG9iamVjdC4iKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
Zygic3RvcmUuYWRkKHtuYW1lOiAnSmVmZmVyc3NvbicsIG51bWJlcjogJzcwMTAnLCBpZDogM30p
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRKZWZmZXJzc29uU3VjY2VzczsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24g
YWRkSmVmZmVyc3NvblN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJhZGRKZWZmZXJzc29uU3VjY2Vz
cygpOiIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIjMiKTsKLQotICAg
IGRlYnVnKCJJbnNlcnQgaW50byBvYmplY3Qgc3RvcmUgd2l0aCBhdXRvIGluY3JlbWVudCBhbmQg
a2V5IHBhdGgsIHdpdGhvdXQga2V5IGluIHRoZSBvYmplY3QuIik7Ci0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInN0b3JlLmFkZCh7bmFtZTogJ0xpbmNvbG4nLCBudW1iZXI6ICc3MDEyJ30pIik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRMaW5jb2xuV2l0aEluamVjdEtleVN1Y2Nlc3M7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1
bmN0aW9uIGFkZExpbmNvbG5XaXRoSW5qZWN0S2V5U3VjY2VzcygpCi17Ci0gICAgZGVidWcoImFk
ZExpbmNvbG5XaXRoSW5qZWN0S2V5U3VjY2VzcygpOiIpOwotICAgIHNob3VsZEJlKCJldmVudC50
YXJnZXQucmVzdWx0IiwgIjQiKTsKLQotICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coInN0b3JlLmdl
dCg0KSIpOwotICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBnZXRMaW5jb2xuQWZ0ZXJJbmplY3RlZEtl
eVN1Y2Nlc3M7Ci0gICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LX0KLQotZnVuY3Rpb24gZ2V0TGluY29sbkFmdGVySW5qZWN0ZWRLZXlTdWNjZXNzKCkKLXsKLSAg
ICBkZWJ1ZygiZ2V0TGluY29sbkFmdGVySW5qZWN0ZWRLZXlTdWNjZXNzKCk6Iik7Ci0gICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0Lm5hbWUiLCAiTGluY29sbiIp
OwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5udW1iZXIi
LCAiNzAxMiIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LmlkIiwgIjQiKTsK
LQotICAgIHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3Jl
KCdTdG9yZVdpdGhBdXRvSW5jcmVtZW50JykiKTsKLSAgICBkZWJ1ZygiSW5zZXJ0IGludG8gb2Jq
ZWN0IHN0b3JlIHdpdGgga2V5IGdlbiB1c2luZyBleHBsaWNpdCBrZXkiKTsKLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHtuYW1lOiAnTGluY29sbicsIG51bWJlcjogJzcwMTIn
fSwgNSkiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZExpbmNvbG5XaXRoRXhwbGljaXRL
ZXlTdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotfQotCi1mdW5jdGlvbiBhZGRMaW5jb2xuV2l0aEV4cGxpY2l0S2V5U3VjY2VzcygpCi17Ci0g
ICAgZGVidWcoImFkZExpbmNvbG5XaXRoRXhwbGljaXRLZXlTdWNjZXNzKCk6Iik7Ci0gICAgc2hv
dWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAiNSIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInN0b3JlLmdldCg1KSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0TGluY29s
blN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci19Ci0KLWZ1bmN0aW9uIGdldExpbmNvbG5TdWNjZXNzKCkKLXsKLSAgICBkZWJ1ZygiZ2V0TGlu
Y29sblN1Y2Nlc3MoKToiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdl
dC5yZXN1bHQubmFtZSIsICJMaW5jb2xuIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJl
dmVudC50YXJnZXQucmVzdWx0Lm51bWJlciIsICI3MDEyIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygic3RvcmUucHV0KHtuYW1lOiAnQWJyYWhhbScsIG51bWJlcjogJzIxMDcnfSkiKTsK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHB1dEFicmFoYW1TdWNjZXNzOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBwdXRBYnJh
aGFtU3VjY2VzcygpCi17Ci0gICAgZGVidWcoInB1dEFicmFoYW1TdWNjZXNzKCk6Iik7Ci0gICAg
c2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAiNiIpOwotCi0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInN0b3JlLmdldCg2KSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0QWJy
YWhhbVN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIGdldEFicmFoYW1TdWNjZXNzKCkKLXsKLSAgICBkZWJ1ZygiZ2V0
QWJyYWhhbVN1Y2Nlc3MoKToiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRh
cmdldC5yZXN1bHQubmFtZSIsICJBYnJhaGFtIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJldmVudC50YXJnZXQucmVzdWx0Lm51bWJlciIsICIyMTA3Iik7Ci0KLSAgICBzZWxmLnN0b3Jl
ID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnUGxhaW5PbGRTdG9yZScp
Iik7Ci0gICAgZGVidWcoIlRyeSBhZGRpbmcgd2l0aCBubyBrZXkgdG8gb2JqZWN0IHN0b3JlIHdp
dGhvdXQgYXV0byBpbmNyZW1lbnQuIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3Rv
cmUuYWRkKHtuYW1lOiAnQWRhbSd9KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIp
OwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe25hbWU6ICdBZGFtJ30sIDEp
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRBZGFtU3VjY2VzczsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYWRkQWRh
bVN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJhZGRBZGFtU3VjY2VzcygpOiIpOwotICAgIHNob3Vs
ZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIjEiKTsKLX0KLQotZnVuY3Rpb24gdGVzdExvbmdL
ZXlQYXRoKCkKLXsKLSAgICBkZWJ1ZygidGVzdExvbmdLZXlQYXRoKCk6Iik7Ci0gICAgdHJhbnMg
PSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdTdG9yZVdpdGhMb25nS2V5UGF0
aCcsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVu
ZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBmaW5pc2hKU1Rl
c3Q7Ci0KLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUo
J1N0b3JlV2l0aExvbmdLZXlQYXRoJykiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3Rv
cmUuYWRkKHtmb286ICdiYXInfSkiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHtmb286
ICdiYXInLCBhOiB7fX0pIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7Zm9vOiAnYmFy
JywgYToge2I6IHt9fX0pIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7Zm9vOiAnYmFy
JywgYToge2I6IHtjOiB7fX19fSkiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLSAgICBjdXJzb3JSZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUub3Bl
bkN1cnNvcigpIik7Ci0gICAgY3Vyc29yUmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci0gICAgZXZhbEFuZExvZygiZXhwZWN0ZWQgPSBudWxsIik7Ci0gICAgZXZhbEFu
ZExvZygiY291bnQgPSAwIik7Ci0gICAgY3Vyc29yUmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlv
biAoKSB7Ci0gICAgICAgIGN1cnNvciA9IGN1cnNvclJlcXVlc3QucmVzdWx0OwotICAgICAgICBp
ZiAoIWN1cnNvcikgewotICAgICAgICAgICAgc2hvdWxkQmUoImNvdW50IiwgIjQiKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBpZiAoZXhwZWN0ZWQgPT09IG51bGwp
IHsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImV4cGVjdGVkID0gY3Vyc29yLnZhbHVlLmEuYi5j
LmlkICsgMSIpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNv
ci52YWx1ZS5mb28iLCAiJ2JhciciKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFs
dWUuYS5iLmMuaWQiLCAiZXhwZWN0ZWQiKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImV4cGVj
dGVkID0gY3Vyc29yLnZhbHVlLmEuYi5jLmlkICsgMSIpOwotICAgICAgICB9Ci0gICAgICAgIGNv
dW50Kys7Ci0gICAgICAgIGN1cnNvci5jb250aW51ZSgpOwotICAgIH07Ci19Ci0KLQotdGVzdCgp
OwotCi0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vYmplY3RzdG9yZS1hdXRv
aW5jcmVtZW50LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY2xlYXIuaHRt
bCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWNsZWFyLmh0bWwK
aW5kZXggNjZlZTVkY2QyYWUxOGFmYjFkMjZiZjI5ZmMxZWViMDI2NzQxZTVlNS4uNjg4YTM1OGMz
ZDlhNTMxYWJmY2EwYzZhYzg0NjA5NGY2MmQ0MTQ1ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY2xlYXIuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jbGVhci5odG1sCkBAIC00LDEwNyArNCw3
IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+
CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIHdlYmtp
dElEQk9iamVjdFN0b3JlLmNsZWFyKCkuIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJl
bW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWRE
Qi5vcGVuKCdvYmplY3RzdG9yZS1jbGVhcicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBz
dGFydFNldFZlcnNpb247Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHN0YXJ0U2V0VmVyc2lvbigpCi17Ci0gICAgZGIgPSBldmFs
QW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZGVsZXRlRXhpc3RpbmcoKQotewotICAgIHNl
bGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAg
ICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RT
dG9yZXMoZGIpOwotCi0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9i
amVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOwotCi0gICAgc2VsZi5pbmRleCA9IGV2YWxB
bmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleE5hbWUnLCAnJykiKTsKLSAgICBzaG91bGRC
ZVRydWUoInN0b3JlLmluZGV4TmFtZXMuY29udGFpbnMoJ2luZGV4TmFtZScpIik7Ci0KLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKCd2YWx1ZScsICdrZXknKSIpOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gY3JlYXRlU2Vjb25kT2JqZWN0U3RvcmVBbmRBZGRWYWx1ZTsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rp
b24gY3JlYXRlU2Vjb25kT2JqZWN0U3RvcmVBbmRBZGRWYWx1ZSgpCi17Ci0gICAgb3RoZXJTdG9y
ZSA9IGV2YWxBbmRMb2coIm90aGVyU3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnb3RoZXJT
dG9yZU5hbWUnLCBudWxsKSIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIm90aGVyU3Rv
cmUuYWRkKCd2YWx1ZScsICdrZXknKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYXJP
YmplY3RTdG9yZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLX0KLQotZnVuY3Rpb24gY2xlYXJPYmplY3RTdG9yZSgpCi17Ci0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInN0b3JlLmNsZWFyKCkiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFy
U3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LX0KLQotZnVuY3Rpb24gY2xlYXJTdWNjZXNzKCkKLXsKLSAgICBzaG91bGRCZVVuZGVmaW5lZCgi
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3Jl
Lm9wZW5DdXJzb3IoKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbkN1cnNvclN1Y2Nl
c3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0K
LWZ1bmN0aW9uIG9wZW5DdXJzb3JTdWNjZXNzKCkKLXsKLSAgICBzaG91bGRCZU51bGwoImV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBzdG9y
ZS5pbmRleCgnaW5kZXhOYW1lJykiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXgu
b3BlbktleUN1cnNvcigpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuS2V5Q3Vyc29y
U3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LX0KLQotZnVuY3Rpb24gb3BlbktleUN1cnNvclN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJvcGVu
S2V5Q3Vyc29yU3VjY2VzcygpOiIpOwotICAgIHNob3VsZEJlTnVsbCgiZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBzZXRWZXJzaW9uQ29tcGxldGU7Ci19Ci0K
LWZ1bmN0aW9uIHNldFZlcnNpb25Db21wbGV0ZSgpCi17Ci0gICAgdHJhbnNhY3Rpb24gPSBldmFs
QW5kTG9nKCJkYi50cmFuc2FjdGlvbihbJ290aGVyU3RvcmVOYW1lJ10pIik7Ci0gICAgdHJhbnNh
Y3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHZhciBvdGhlclN0
b3JlID0gZXZhbEFuZExvZygib3RoZXJTdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdv
dGhlclN0b3JlTmFtZScpIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib3RoZXJTdG9y
ZS5nZXQoJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRTdWNjZXNzOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlv
biBnZXRTdWNjZXNzKCkKLXsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdl
dC5yZXN1bHQiLCAidmFsdWUiKTsKLQotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi10ZXN0KCk7
Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vYmplY3RzdG9yZS1jbGVhci5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWNvdW50Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jb3VudC5odG1sCmluZGV4IDUxZTE0
NWRlYTdmYTNjZjRlNDU0ZmQzYTcwNzEwNzRhZGMxMWMzODIuLmRhNDIzZmU0YjY3ZDg1YTMxOWQx
OWUzZDQ3ODc5OTVhMDg3NjViOTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL29iamVjdHN0b3JlLWNvdW50Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvb2JqZWN0c3RvcmUtY291bnQuaHRtbApAQCAtNCwxNDkgKzQsNyBAQAogPHNjcmlw
dCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08
c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBJREJPYmplY3RTdG9yZS5j
b3VudCgpLiIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhl
cygpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbignb2JqZWN0c3Rv
cmUtY291bnQnKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGRiID0g
ZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IHByZXBhcmVEYXRhYmFzZTsKLSAgICB9OwotfQotCi1mdW5jdGlvbiBwcmVw
YXJlRGF0YWJhc2UoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygicHJlcGFyaW5nIGRh
dGFiYXNlIik7Ci0gICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFy
Z2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKLQotICAg
IGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0
b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7Ci0KLSAgICBk
ZWJ1ZygiYWRkaW5nIDAgLi4uIDk5Iik7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsr
aSkgewotICAgICAgICByZXF1ZXN0ID0gc3RvcmUuYWRkKGksIGkpOwotICAgICAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB9Ci0gICAgdHJhbnMub25j
b21wbGV0ZSA9IHZlcmlmeUNvdW50OwotfQotCi1mdW5jdGlvbiB2ZXJpZnlDb3VudCgpCi17Ci0g
ICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJ2ZXJpZnlpbmcgY291bnQgd2l0aG91dCByYW5nZSIp
OwotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmVO
YW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKSIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJh
bnMgIT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFj
azsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gdmVyaWZ5Q291bnRXaXRoUmFuZ2U7Ci0KLSAgICBz
dG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScp
Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJzdG9yZSAhPSBudWxsIik7Ci0KLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IHN0b3JlLmNvdW50KCkiKTsKLSAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1
bmN0aW9uKCkgewotICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2YgcmVxdWVzdC5yZXN1bHQg
PT0gJ251bWJlciciKTsKLSAgICAgICAgIHNob3VsZEJlKCJyZXF1ZXN0LnJlc3VsdCIsICIxMDAi
KTsKLSAgICAgICAgIC8vIGxldCB0aGUgdHJhbnNhY3Rpb24gY29tcGxldGUKLSAgICB9OwotfQot
Ci1mdW5jdGlvbiB2ZXJpZnlDb3VudFdpdGhSYW5nZSgpCi17Ci0gICAgZGVidWcoIiIpOwotICAg
IGRlYnVnKCJ2ZXJpZnlpbmcgY291bnQgd2l0aCByYW5nZSIpOwotICAgIHRyYW5zID0gZXZhbEFu
ZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24u
UkVBRF9PTkxZKSIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT0gbnVsbCIpOwotICAgIHRy
YW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBs
ZXRlID0gdmVyaWZ5Q291bnRXaXRoS2V5OwotCi0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9y
ZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotICAgIHNob3VsZEJlVHJ1ZSgi
c3RvcmUgIT0gbnVsbCIpOwotCi0gICAgdmFyIHRlc3RzID0gWwotICAgICAgICB7IGxvd2VyOiAw
LCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogOTksIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVk
OiAxMDAgfSwKLSAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiB0cnVlLCB1cHBlcjogOTks
IHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiA5OSB9LAotICAgICAgICB7IGxvd2VyOiAwLCBs
b3dlck9wZW46IGZhbHNlLCB1cHBlcjogOTksIHVwcGVyT3BlbjogdHJ1ZSwgZXhwZWN0ZWQ6IDk5
IH0sCi0gICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogdHJ1ZSwgdXBwZXI6IDk5LCB1cHBl
ck9wZW46IHRydWUsIGV4cGVjdGVkOiA5OCB9LAotICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9w
ZW46IGZhbHNlLCB1cHBlcjogMTAwLCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogMTAwIH0s
Ci0gICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiAxMDAsIHVwcGVy
T3BlbjogZmFsc2UsIGV4cGVjdGVkOiAxMDAgfSwKLSAgICAgICAgeyBsb3dlcjogMTAsIGxvd2Vy
T3BlbjogZmFsc2UsIHVwcGVyOiAxMDAsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiA5MCB9
LAotICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogMCwgdXBwZXJP
cGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDEgfSwKLSAgICAgICAgeyBsb3dlcjogNTAwLCBsb3dlck9w
ZW46IGZhbHNlLCB1cHBlcjogNTAwLCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogMCB9Ci0g
ICAgXTsKLQotICAgIGZ1bmN0aW9uIG5leHRUZXN0KCkgewotICAgICAgICBkZWJ1ZygiIik7Ci0g
ICAgICAgIGV2YWxBbmRMb2coInRlc3QgPSAiICsgSlNPTi5zdHJpbmdpZnkodGVzdHMuc2hpZnQo
KSkpOwotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHN0b3JlLmNvdW50
KElEQktleVJhbmdlLmJvdW5kKHRlc3QubG93ZXIsIHRlc3QudXBwZXIsIHRlc3QubG93ZXJPcGVu
LCB0ZXN0LnVwcGVyT3BlbikpIik7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgidHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdu
dW1iZXInIik7Ci0gICAgICAgICAgICAgc2hvdWxkQmUoInJlcXVlc3QucmVzdWx0IiwgU3RyaW5n
KHRlc3QuZXhwZWN0ZWQpKTsKLQotICAgICAgICAgICAgIGlmICh0ZXN0cy5sZW5ndGgpIHsKLSAg
ICAgICAgICAgICAgICAgbmV4dFRlc3QoKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
Ly8gb3RoZXJ3aXNlIGxldCB0aGUgdHJhbnNhY3Rpb24gY29tcGxldGUKLSAgICAgICAgfTsKLSAg
ICB9Ci0KLSAgICBuZXh0VGVzdCgpOwotfQotCi1mdW5jdGlvbiB2ZXJpZnlDb3VudFdpdGhLZXko
KQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygidmVyaWZ5aW5nIGNvdW50IHdpdGgga2V5
Iik7Ci0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9y
ZU5hbWUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0
cmFucyAhPSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxi
YWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBmaW5pc2hKU1Rlc3Q7Ci0KLSAgICBzdG9yZSA9
IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0g
ICAgc2hvdWxkQmVUcnVlKCJzdG9yZSAhPSBudWxsIik7Ci0KLSAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJzdG9yZS5jb3VudChOYU4pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJS
Iik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuY291bnQoe30pIiwgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigi
c3RvcmUuY291bnQoL3JlZ2V4LykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsK
LQotICAgIHZhciB0ZXN0cyA9IFsKLSAgICAgICAgeyBrZXk6IDAsIGV4cGVjdGVkOiAxIH0sCi0g
ICAgICAgIHsga2V5OiAxMDAsIGV4cGVjdGVkOiAwIH0sCi0gICAgICAgIHsga2V5OiBudWxsLCBl
eHBlY3RlZDogMTAwIH0KLSAgICBdOwotCi0gICAgZnVuY3Rpb24gbmV4dFRlc3QoKSB7Ci0gICAg
ICAgIGRlYnVnKCIiKTsKLSAgICAgICAgZXZhbEFuZExvZygidGVzdCA9ICIgKyBKU09OLnN0cmlu
Z2lmeSh0ZXN0cy5zaGlmdCgpKSk7Ci0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gc3RvcmUuY291bnQodGVzdC5rZXkpIik7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1
bmN0aW9uKCkgewotICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2YgcmVxdWVzdC5yZXN1
bHQgPT0gJ251bWJlciciKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJyZXF1ZXN0LnJlc3VsdCIs
IFN0cmluZyh0ZXN0LmV4cGVjdGVkKSk7Ci0gICAgICAgICAgICAgaWYgKHRlc3RzLmxlbmd0aCkg
ewotICAgICAgICAgICAgICAgICBuZXh0VGVzdCgpOwotICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAvLyBvdGhlcndpc2UgbGV0IHRoZSB0cmFuc2FjdGlvbiBjb21wbGV0ZQotICAgICAgICB9
OwotICAgIH0KLQotICAgIG5leHRUZXN0KCk7Ci19Ci0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL29iamVjdHN0b3JlLWNvdW50LmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvb2JqZWN0c3RvcmUtY3Vyc29yLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9vYmplY3RzdG9yZS1jdXJzb3IuaHRtbAppbmRleCBjZDRmMjJkY2QwMjNlZTlmYWIz
OWRhMGNiMzFiYWQ5OTFiNzgxMTUwLi41OTQwN2M0YTFhNWE4MDMxZmIxYzU5YjcyNjM3ZDZlOTI1
YzZmNDQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3Rz
dG9yZS1jdXJzb3IuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmpl
Y3RzdG9yZS1jdXJzb3IuaHRtbApAQCAtNCwyMzEgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291
cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PiAKLQot
ZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mgb2JqZWN0U3RvcmUub3BlbkN1cnNvciArIHRo
ZSBjdXJzb3IgaXQgcHJvZHVjZXMgaW4gZGVwdGguIik7Ci0gCi0vLyBJbiBvcmRlciBvZiBob3cg
aXQgc2hvdWxkIGJlIHNvcnRlZCBieSBJbmRleGVkREIuCi1zZWxmLnRlc3REYXRhID0gWwotICAg
IDIuNzE4MjgxODI4NDU5LAotICAgIDMsCi0gICAgMy4xNDE1OTI2NSwKLSAgICAxMCwKLSAgICAv
LyBGSVhNRTogRGF0ZXMuCi0gICAgIkEgYmlnZ2VyIHN0cmluZyIsCi0gICAgIlRoZSBiaWdnZXN0
IiwKLSAgICAiYSBsb3cgc3RyaW5nIgotXTsKLSAKLWZ1bmN0aW9uIG9wZW5EYXRhYmFzZSgpCi17
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdvYmplY3RzdG9yZS1j
dXJzb3InKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvbjsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLSAKLWZ1bmN0aW9uIHNl
dFZlcnNpb24oKQotewotICAgIHNlbGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCdu
ZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVu
Y3Rpb24gZGVsZXRlRXhpc3RpbmcoKQotewotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0
cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9
PSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwot
Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIHNlbGYub2JqZWN0U3RvcmUg
PSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc29tZU9iamVjdFN0b3JlJykiKTsK
LSAgICBzZWxmLm5leHRUb0FkZCA9IDA7Ci0gICAgYWRkRGF0YSgpOwotfQotCi1mdW5jdGlvbiBh
ZGREYXRhKCkKLXsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCcn
LCB0ZXN0RGF0YVtuZXh0VG9BZGRdKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gKytzZWxm
Lm5leHRUb0FkZCA8IHRlc3REYXRhLmxlbmd0aCA/IGFkZERhdGEgOiBzY2hlZHVsZVRlc3RzOwot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5j
dGlvbiBzY2hlZHVsZVRlc3RzKCkKLXsKLSAgICBkZWJ1ZygiU2NoZWR1bGluZyB0ZXN0cy4uLiIp
OwotICAgIHNlbGYuc2NoZWR1bGVkVGVzdHMgPSBbXTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHRlc3REYXRhLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIC8qIGxlZnQgYm91bmQsIGlzIG9wZW4s
IHJpZ2h0IGJvdW5kLCBpcyBvcGVuLCBhc2NlbmRpbmcgKi8KLSAgICAgICAgc2NoZWR1bGVkVGVz
dHMudW5zaGlmdChbaSwgdHJ1ZSwgbnVsbCwgbnVsbCwgdHJ1ZV0pOwotICAgICAgICBzY2hlZHVs
ZWRUZXN0cy51bnNoaWZ0KFtpLCBmYWxzZSwgbnVsbCwgbnVsbCwgdHJ1ZV0pOwotICAgICAgICBz
Y2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtudWxsLCBudWxsLCBpLCB0cnVlLCB0cnVlXSk7Ci0gICAg
ICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW251bGwsIG51bGwsIGksIGZhbHNlLCB0cnVlXSk7
Ci0gICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIHRydWUsIG51bGwsIG51bGwsIGZh
bHNlXSk7Ci0gICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBudWxsLCBu
dWxsLCBmYWxzZV0pOwotICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtudWxsLCBudWxs
LCBpLCB0cnVlLCBmYWxzZV0pOwotICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtudWxs
LCBudWxsLCBpLCBmYWxzZSwgZmFsc2VdKTsKLSAgICAgICAgZm9yICh2YXIgaiA9IDY7IGogPCB0
ZXN0RGF0YS5sZW5ndGg7ICsraikgewotICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlm
dChbaSwgdHJ1ZSwgaiwgdHJ1ZSwgdHJ1ZV0pOwotICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMu
dW5zaGlmdChbaSwgdHJ1ZSwgaiwgZmFsc2UsIHRydWVdKTsKLSAgICAgICAgICAgIHNjaGVkdWxl
ZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBqLCB0cnVlLCB0cnVlXSk7Ci0gICAgICAgICAgICBz
Y2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCBmYWxzZSwgaiwgZmFsc2UsIHRydWVdKTsKLSAgICAg
ICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIHRydWUsIGosIHRydWUsIGZhbHNlXSk7
Ci0gICAgICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCB0cnVlLCBqLCBmYWxzZSwg
ZmFsc2VdKTsKLSAgICAgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBq
LCB0cnVlLCBmYWxzZV0pOwotICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwg
ZmFsc2UsIGosIGZhbHNlLCBmYWxzZV0pOwotICAgICAgICB9Ci0gICAgfQotIAotICAgIGRlYnVn
KCJSdW5uaW5nIHRlc3RzLi4uIik7Ci0gICAgcnVuTmV4dFRlc3QoKTsKLX0KLSAKLWZ1bmN0aW9u
IHJ1bk5leHRUZXN0KCkKLXsKLSAgICBpZiAoIXNjaGVkdWxlZFRlc3RzLmxlbmd0aCkgewotICAg
ICAgICB0ZXN0TnVsbEtleVJhbmdlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gCi0gICAg
dmFyIHRlc3QgPSBzY2hlZHVsZWRUZXN0cy5wb3AoKTsKLSAgICBzZWxmLmxvd2VyID0gdGVzdFsw
XTsKLSAgICBzZWxmLmxvd2VySXNPcGVuID0gdGVzdFsxXTsKLSAgICBzZWxmLnVwcGVyID0gdGVz
dFsyXTsKLSAgICBzZWxmLnVwcGVySXNPcGVuID0gdGVzdFszXTsKLSAgICBzZWxmLmFzY2VuZGlu
ZyA9IHRlc3RbNF07Ci0KLSAgICBzdHIgPSAiTmV4dCB0ZXN0OiAiOwotICAgIGlmIChsb3dlciAh
PT0gbnVsbCkgewotICAgICAgICBzdHIgKz0gImxvd2VyICI7Ci0gICAgICAgIGlmIChsb3dlcklz
T3BlbikKLSAgICAgICAgICAgIHN0ciArPSAib3BlbiAiOwotICAgICAgICBzdHIgKz0gImJvdW5k
IGlzICIgKyBsb3dlciArICI7ICI7Ci0gICAgfQotICAgIGlmICh1cHBlciAhPT0gbnVsbCkgewot
ICAgICAgICBzdHIgKz0gInVwcGVyICI7Ci0gICAgICAgIGlmICh1cHBlcklzT3BlbikKLSAgICAg
ICAgICAgIHN0ciArPSAib3BlbiAiOwotICAgICAgICBzdHIgKz0gImJvdW5kIGlzICIgKyB1cHBl
ciArICI7ICI7Ci0gICAgfQotICAgIGlmIChhc2NlbmRpbmcpCi0gICAgICAgIHN0ciArPSAic29y
dGVkIGFzY2VuZGluZy4iOwotICAgIGVsc2UKLSAgICAgICAgc3RyICs9ICJzb3J0ZWQgZGVzY2Vu
ZGluZy4iOwotCi0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKHN0cik7Ci0gCi0gICAgaWYgKGFz
Y2VuZGluZykgewotICAgICAgICBpZiAobG93ZXIgIT09IG51bGwpIHsKLSAgICAgICAgICAgIGlm
ICghbG93ZXJJc09wZW4pCi0gICAgICAgICAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gbG93
ZXI7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4
ID0gbG93ZXIrMTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBzZWxmLmV4cGVjdGVkSW5k
ZXggPSAwOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICh1cHBlciAhPT0gbnVsbCkgewotICAg
ICAgICAgICAgaWYgKCF1cHBlcklzT3BlbikKLSAgICAgICAgICAgICAgICBzZWxmLmV4cGVjdGVk
SW5kZXggPSB1cHBlcjsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBzZWxmLmV4
cGVjdGVkSW5kZXggPSB1cHBlci0xOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHNlbGYu
ZXhwZWN0ZWRJbmRleCA9IHRlc3REYXRhLmxlbmd0aC0xOwotICAgIH0KLSAgICB0ZXN0V2l0aGlu
Qm91bmRzKCk7Ci0gCi0gICAgaWYgKHRlc3REYXRhW2xvd2VyXSA9PT0gdGVzdERhdGFbdXBwZXJd
ICYmIChsb3dlcklzT3BlbiB8fCB1cHBlcklzT3BlbikpIHsKLSAgICAgICAgZGVidWcoIlNraXBw
aW5nIGlsbGVnYWwga2V5IHJhbmdlLiIpOwotICAgICAgICBydW5OZXh0VGVzdCgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgdmFyIGtleVJhbmdlOwotICAgIGlmIChsb3dlciAhPT0g
bnVsbCAmJiB1cHBlciAhPT0gbnVsbCkKLSAgICAgICAga2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5i
b3VuZCh0ZXN0RGF0YVtsb3dlcl0sIHRlc3REYXRhW3VwcGVyXSwgbG93ZXJJc09wZW4sIHVwcGVy
SXNPcGVuKTsKLSAgICBlbHNlIGlmIChsb3dlciAhPT0gbnVsbCkKLSAgICAgICAga2V5UmFuZ2Ug
PSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKHRlc3REYXRhW2xvd2VyXSwgbG93ZXJJc09wZW4pOwot
ICAgIGVsc2UKLSAgICAgICAga2V5UmFuZ2UgPSBJREJLZXlSYW5nZS51cHBlckJvdW5kKHRlc3RE
YXRhW3VwcGVyXSwgdXBwZXJJc09wZW4pOwotIAotICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3Rv
cmUub3BlbkN1cnNvcihrZXlSYW5nZSwgYXNjZW5kaW5nID8gSURCQ3Vyc29yLk5FWFQgOiBJREJD
dXJzb3IuUFJFVik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3JJdGVyYXRpb247Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0
aW9uIHRlc3RXaXRoaW5Cb3VuZHMoKQotewotICAgIGlmIChleHBlY3RlZEluZGV4IDwgMCB8fCB0
ZXN0RGF0YS5sZW5ndGggPD0gZXhwZWN0ZWRJbmRleCkKLSAgICAgICAgc2VsZi5leHBlY3RlZElu
ZGV4ID0gbnVsbDsKLSAgICBpZiAobG93ZXIgIT09IG51bGwgJiYgZXhwZWN0ZWRJbmRleCA8IGxv
d2VyKQotICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSBudWxsOwotICAgIGlmICh1cHBlciAh
PT0gbnVsbCAmJiB1cHBlciA8IGV4cGVjdGVkSW5kZXgpCi0gICAgICAgIHNlbGYuZXhwZWN0ZWRJ
bmRleCA9IG51bGw7Ci0gICAgaWYgKGxvd2VyICE9PSBudWxsICYmIGxvd2VySXNPcGVuICYmIGV4
cGVjdGVkSW5kZXggPD0gbG93ZXIpCi0gICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IG51bGw7
Ci0gICAgaWYgKHVwcGVyICE9PSBudWxsICYmIHVwcGVySXNPcGVuICYmIHVwcGVyIDw9IGV4cGVj
dGVkSW5kZXgpCi0gICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IG51bGw7Ci19Ci0gCi1mdW5j
dGlvbiBjdXJzb3JJdGVyYXRpb24oKQotewotICAgIGlmIChleHBlY3RlZEluZGV4ID09PSBudWxs
KSB7Ci0gICAgICAgIHNob3VsZEJlTnVsbCgiZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgICAg
ICBydW5OZXh0VGVzdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChldmVudC50
YXJnZXQucmVzdWx0ID09PSBudWxsKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoImV2ZW50LnRhcmdl
dC5yZXN1bHQgc2hvdWxkIG5vdCBiZSBudWxsLiIpOwotICAgICAgICBydW5OZXh0VGVzdCgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotIAotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVz
dWx0LmtleSIsICJ0ZXN0RGF0YVsiICsgZXhwZWN0ZWRJbmRleCArICJdIik7Ci0gICAgc2VsZi5l
eHBlY3RlZEluZGV4ID0gYXNjZW5kaW5nID8gZXhwZWN0ZWRJbmRleCsxIDogZXhwZWN0ZWRJbmRl
eC0xOwotICAgIHRlc3RXaXRoaW5Cb3VuZHMoKTsKLQotICAgIGV2ZW50LnRhcmdldC5yZXN1bHQu
Y29udGludWUoKTsKLX0KLSAKLXNlbGYubnVsbEtleVJhbmdlU3RlcCA9IDA7Ci1mdW5jdGlvbiB0
ZXN0TnVsbEtleVJhbmdlKCkKLXsKLSAgICBzZWxmLmxvd2VyID0gMDsKLSAgICBzZWxmLmxvd2Vy
SXNPcGVuID0gZmFsc2U7Ci0gICAgc2VsZi51cHBlciA9IHRlc3REYXRhLmxlbmd0aC0xOwotICAg
IHNlbGYudXBwZXJJc09wZW4gPSBmYWxzZTsKLQotICAgIHN0ciA9ICJOZXh0IHRlc3Q6IG51bGwg
a2V5IHBhdGggIjsKLSAgICBpZiAoc2VsZi5udWxsS2V5UmFuZ2VTdGVwID09IDApIHsKLSAgICAg
ICAgc3RyICs9ICJzb3J0ZWQgYXNjZW5kaW5nLiI7Ci0gICAgICAgIHNlbGYuYXNjZW5kaW5nID0g
dHJ1ZTsKLSAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gbG93ZXI7Ci0gICAgICAgIHNlbGYu
bnVsbEtleVJhbmdlU3RlcCA9IDE7Ci0gICAgfSBlbHNlIGlmIChzZWxmLm51bGxLZXlSYW5nZVN0
ZXAgPT0gMSkgewotICAgICAgICBzdHIgKz0gInNvcnRlZCBkZXNjZW5kaW5nLiI7Ci0gICAgICAg
IHNlbGYuYXNjZW5kaW5nID0gZmFsc2U7Ci0gICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IHVw
cGVyOwotICAgICAgICBzZWxmLm51bGxLZXlSYW5nZVN0ZXAgPSAyOwotICAgIH0gZWxzZSB7Ci0g
ICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZGVi
dWcoIiIpOwotICAgIGRlYnVnKHN0cik7Ci0gCi0gICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9y
ZS5vcGVuQ3Vyc29yKG51bGwsIGFzY2VuZGluZyA/IElEQkN1cnNvci5ORVhUIDogSURCQ3Vyc29y
LlBSRVYpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29ySXRlcmF0aW9uOwotICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotIAotcmVtb3ZlVmVu
ZG9yUHJlZml4ZXMoKTsKLW9wZW5EYXRhYmFzZSgpOyAvLyBUaGUgZmlyc3Qgc3RlcC4KLSAKLTwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vYmplY3RzdG9yZS1jdXJzb3IuanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1yZW1vdmVvYmplY3RzdG9yZS5odG1sIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtcmVtb3Zlb2JqZWN0c3Rv
cmUuaHRtbAppbmRleCA1MTE0NjUxMjYyZDRkZjllZGMyMjg1ZTcyNTgxOTBmN2YzMTlkN2MwLi40
NzMxMTE0MDBiMDhmMGJlMzlhNWRkMzJmMmIyODMzYTI5MzRmZjAxIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1yZW1vdmVvYmplY3RzdG9yZS5o
dG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLXJlbW92
ZW9iamVjdHN0b3JlLmh0bWwKQEAgLTQsMTAyICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVz
Y3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mgd2Via2l0SURCT2JqZWN0U3RvcmUuZGVsZXRlT2Jq
ZWN0U3RvcmUoKS4iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJl
Zml4ZXMoKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ29iamVj
dHN0b3JlLXJlbW92ZW9iamVjdHN0b3JlJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHN0
YXJ0U2V0VmVyc2lvbjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLX0KLQotZnVuY3Rpb24gc3RhcnRTZXRWZXJzaW9uKCkKLXsKLSAgICBkYiA9IGV2YWxB
bmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGRlbGV0ZUV4aXN0aW5nOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBkZWxldGVFeGlzdGluZygpCi17Ci0gICAgc2Vs
Zi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAg
IHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKLQotICAgIGRlbGV0ZUFsbE9iamVjdFN0
b3JlcyhkYik7Ci0KLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7Ci0KLSAgICBzZWxmLmluZGV4ID0gZXZhbEFu
ZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZScsICcnKSIpOwotICAgIHNob3VsZEJl
VHJ1ZSgic3RvcmUuaW5kZXhOYW1lcy5jb250YWlucygnaW5kZXhOYW1lJykiKTsKLQotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoJ3ZhbHVlJywgJ2tleScpIik7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21w
bGV0ZSA9IGdldFZhbHVlOwotfQotCi1mdW5jdGlvbiBnZXRWYWx1ZSgpCi17Ci0gICAgdHJhbnNh
Y3Rpb24gPSBldmFsQW5kTG9nKCJkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddKSIpOwotICAg
IHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB2YXIg
c3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9y
ZU5hbWUnKSIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmdldCgna2V5Jyki
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEluZGV4OwotICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBhZGRJbmRleCgpCi17
Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0IiwgInZhbHVl
Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNp
b24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlT2JqZWN0U3RvcmU7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9u
IGRlbGV0ZU9iamVjdFN0b3JlKCkKLXsKLSAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJh
bnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0g
bnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLQot
ICAgIGV2YWxBbmRMb2coImRiLmRlbGV0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotICAg
IGNyZWF0ZU9iamVjdFN0b3JlQWdhaW4oKTsKLX0KLQotZnVuY3Rpb24gY3JlYXRlT2JqZWN0U3Rv
cmVBZ2FpbigpCi17Ci0gICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3Jl
TmFtZScsIG51bGwpIik7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IGdldFZhbHVlQWdhaW47Ci19
Ci0KLWZ1bmN0aW9uIGdldFZhbHVlQWdhaW4oKQotewotICAgIHRyYW5zYWN0aW9uID0gZXZhbEFu
ZExvZygiZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSkiKTsKLSAgICB0cmFuc2FjdGlvbi5v
bmFib3J0ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgdmFyIHN0b3JlID0gZXZhbEFu
ZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLQot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5nZXQoJ2tleScpIik7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSB2ZXJpZnlOb3RGb3VuZDsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gdmVyaWZ5Tm90Rm91bmQoKQotewot
ICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgInVuZGVmaW5lZCIpOwotICAgIHNo
b3VsZEJlRmFsc2UoImV2ZW50LnRhcmdldC5zb3VyY2UuaW5kZXhOYW1lcy5jb250YWlucygnaW5k
ZXhOYW1lJykiKTsKLQotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi10ZXN0KCk7Ci0KLTwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vYmplY3RzdG9yZS1yZW1vdmVvYmplY3RzdG9y
ZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29kZC1zdHJpbmdzLmh0bWwgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9vZGQtc3RyaW5ncy5odG1sCmluZGV4IGE4YTA3MmEzNDczMTA1
MTA5OWUwN2RmYWEwZGVkMDg4ZjAzYjBkNjQuLjY1YTM2M2JkMGQ5ZjA5OTQ0OTQyYjA1OWI3Yjc2
MTVlNDBkYTdmYTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29k
ZC1zdHJpbmdzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2RkLXN0
cmluZ3MuaHRtbApAQCAtMSwxMTEgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8
aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+
CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWRE
QiBvZGQgdmFsdWUgZGF0YXR5cGVzIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92
ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICB0ZXN0RGF0YSA9IFt7IGRlc2NyaXB0aW9uOiAnbnVs
bCcsICAgICAgICAgICAgICAgbmFtZTogJ1x1MDAwMCcgfSwKLSAgICAgICAgICAgICAgICB7IGRl
c2NyaXB0aW9uOiAnZmFpaHUnLCAgICAgICAgICAgICAgbmFtZTogJ1x1ZDgwMFx1ZGY0NicgfSwK
LSAgICAgICAgICAgICAgICB7IGRlc2NyaXB0aW9uOiAndW5wYWlyZWQgc3Vycm9nYXRlJywgbmFt
ZTogJ1x1ZDgwMCcgfSwKLSAgICAgICAgICAgICAgICB7IGRlc2NyaXB0aW9uOiAnZmZmZScsICAg
ICAgICAgICAgICAgbmFtZTogJ1x1ZmZmZScgfSwKLSAgICAgICAgICAgICAgICB7IGRlc2NyaXB0
aW9uOiAnZmZmZicsICAgICAgICAgICAgICAgbmFtZTogJ1x1ZmZmZicgfSwKLSAgICAgICAgICAg
ICAgICB7IGRlc2NyaXB0aW9uOiAnbGluZSBzZXBhcmF0b3InLCAgICAgbmFtZTogJ1x1MjAyOCcg
fQotICAgIF07Ci0gICAgbmV4dFRvT3BlbiA9IDA7Ci0gICAgb3Blbk5leHREYXRhYmFzZSgpOwot
fQotCi1mdW5jdGlvbiBvcGVuTmV4dERhdGFiYXNlKCkKLXsKLSAgICBkZWJ1Zygib3BlbmluZyBh
IGRhdGFiYXNlIG5hbWVkICIgKyB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5kZXNjcmlwdGlvbik7Ci0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKHRlc3REYXRhW25leHRUb09w
ZW5dLm5hbWUsIHRlc3REYXRhW25leHRUb09wZW5dLmRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gb3BlblN1Y2Nlc3M7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBk
YiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBhZGRBS2V5OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBhZGRBS2V5KCkKLXsKLSAgICBkZWxldGVBbGxP
YmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKHRlc3REYXRhW25leHRUb09wZW5dLm5hbWUpOyIp
OwotICAgIGtleSA9IGV2YWxBbmRMb2coImtleSA9IHRlc3REYXRhW25leHRUb09wZW5dLm5hbWUi
KTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChr
ZXksIGtleSk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbG9zZURhdGFiYXNlOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlv
biBjbG9zZURhdGFiYXNlKCkKLXsKLSAgICBldmFsQW5kTG9nKCJkYi5jbG9zZSgpIik7Ci0gICAg
ZGVidWcoIiIpOwotICAgIGlmICgrK25leHRUb09wZW4gPCB0ZXN0RGF0YS5sZW5ndGgpIHsKLSAg
ICAgICAgb3Blbk5leHREYXRhYmFzZSgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIG5leHRUb09w
ZW4gPSAwOwotICAgICAgICB2ZXJpZnlOZXh0RGF0YWJhc2UoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0
aW9uIHZlcmlmeU5leHREYXRhYmFzZSgpCi17Ci0gICAgZGVidWcoInJlb3BlbmluZyBhIGRhdGFi
YXNlIG5hbWVkICIgKyB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5kZXNjcmlwdGlvbik7Ci0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKHRlc3REYXRhW25leHRUb09wZW5dLm5h
bWUsIHRlc3REYXRhW25leHRUb09wZW5dLmRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
b3BlblN1Y2Nlc3MyOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzczIoKQotewotICAgIGRiID0g
ZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGdldEFLZXk7Ci19Ci0KLWZ1bmN0aW9uIGdldEFLZXkoKQotewotICAgIHRyYW5zID0gZXZhbEFu
ZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgb2JqZWN0U3RvcmUgPSBl
dmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKHRlc3REYXRhW25leHRU
b09wZW5dLm5hbWUpOyIpOwotICAgIGtleSA9IGV2YWxBbmRMb2coImtleSA9IHRlc3REYXRhW25l
eHRUb09wZW5dLm5hbWUiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9i
amVjdFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5DdXJzb3JTdWNj
ZXNzOwotfQotCi1mdW5jdGlvbiBvcGVuQ3Vyc29yU3VjY2VzcygpCi17Ci0gICAgY3Vyc29yID0g
ZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICBzaG91bGRC
ZSgiY3Vyc29yLmtleSIsICJ0ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1lIik7Ci0gICAgc2hvdWxk
QmUoImN1cnNvci52YWx1ZSIsICJ0ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1lIik7Ci0gICAgaWYg
KCsrbmV4dFRvT3BlbiA8IHRlc3REYXRhLmxlbmd0aCkgewotICAgICAgICBkZWJ1ZygiIik7Ci0g
ICAgICAgIHZlcmlmeU5leHREYXRhYmFzZSgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGZpbmlz
aEpTVGVzdCgpOwotICAgIH0KLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9vZGQtc3RyaW5ncy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4K
IDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4t
Y2xvc2UtdmVyc2lvbi5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi1j
bG9zZS12ZXJzaW9uLmh0bWwKaW5kZXggNmMxNGZlMTNiZmQ3MjA1NjNlMzhjNjljMDEyOTk0NjVl
MDIwOTYwOS4uMjlkM2FmM2NlNzNhZjk1N2IzMzY1NjY5ODUxNDQ4OWRmMWIyOWUzYSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi1jbG9zZS12ZXJzaW9uLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi1jbG9zZS12ZXJzaW9u
Lmh0bWwKQEAgLTQsMjg5ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpz
Ij48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRl
c3QgaW50ZXJsZWF2ZWQgb3Blbi9jbG9zZS9zZXRWZXJzaW9uIGNhbGxzIGluIHZhcmlvdXMgcGVy
bXV0YXRpb25zIik7Ci0KLWZ1bmN0aW9uIENvbm5lY3Rpb24oaWQpIHsKLSAgICBpZCA9IFN0cmlu
ZyhpZCk7Ci0gICAgdmFyIHRoYXQgPSB0aGlzOwotICAgIHRoaXMub3BlbiA9IGZ1bmN0aW9uKG9w
dHMpIHsKLSAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLm9w
ZW4nIikpOwotICAgICAgICB2YXIgcmVxID0gaW5kZXhlZERCLm9wZW4oc2VsZi5kYm5hbWUpOwot
ICAgICAgICByZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICBy
ZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAgICAgIHRoYXQuaGFuZGxlID0g
ZS50YXJnZXQucmVzdWx0OwotICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2co
IiciICsgaWQgKyAiLm9wZW4ub25zdWNjZXNzJyIpKTsKLSAgICAgICAgICAgIHRoYXQuaGFuZGxl
Lm9udmVyc2lvbmNoYW5nZSA9IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICBzZWxmLnN0
ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIub252ZXJzaW9uY2hhbmdlJyIpKTsKLSAg
ICAgICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9udmVyc2lvbikgeyBvcHRzLm9udmVyc2lv
bi5jYWxsKHRoYXQpOyB9Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgaWYgKG9wdHMgJiYg
b3B0cy5vbnN1Y2Nlc3MpIHsgb3B0cy5vbnN1Y2Nlc3MuY2FsbCh0aGF0KTsgfQotICAgICAgICB9
OwotICAgIH07Ci0KLSAgICB0aGlzLmNsb3NlID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIHNlbGYu
c3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5jbG9zZSciKSk7Ci0gICAgICAgIHRo
aXMuaGFuZGxlLmNsb3NlKCk7Ci0gICAgfTsKLQotICAgIHRoaXMuc2V0VmVyc2lvbiA9IGZ1bmN0
aW9uKG9wdHMpIHsKLSAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQg
KyAiLnNldFZlcnNpb24nIikpOwotICAgICAgICB2YXIgcmVxID0gdGhpcy5oYW5kbGUuc2V0VmVy
c2lvbihTdHJpbmcoc2VsZi52ZXIrKykpOwotICAgICAgICByZXEub25hYm9ydCA9IGZ1bmN0aW9u
IChlKSB7Ci0gICAgICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCAr
ICIuc2V0VmVyc2lvbi5vbmFib3J0JyIpKTsKLSAgICAgICAgICAgIGlmIChvcHRzICYmIG9wdHMu
b25hYm9ydCkgeyBvcHRzLm9uYWJvcnQuY2FsbCh0aGF0KTsgfQotICAgICAgICB9OwotICAgICAg
ICByZXEub25ibG9ja2VkID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAgICAgIHNlbGYuc3RlcHMu
cHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5zZXRWZXJzaW9uLm9uYmxvY2tlZCciKSk7Ci0g
ICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9uYmxvY2tlZCkgeyBvcHRzLm9uYmxvY2tlZC5j
YWxsKHRoYXQpOyB9Ci0gICAgICAgIH07Ci0gICAgICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlv
biAoZSkgewotICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQg
KyAiLnNldFZlcnNpb24ub25zdWNjZXNzJyIpKTsKLSAgICAgICAgICAgIGlmICh0aGF0LmhhbmRs
ZS5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCJ0ZXN0LXN0b3JlIiArIHNlbGYudmVyKSkgewot
ICAgICAgICAgICAgICAgIHRoYXQuaGFuZGxlLmRlbGV0ZU9iamVjdFN0b3JlKCJ0ZXN0LXN0b3Jl
IiArIHNlbGYudmVyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZhciBzdG9yZSA9IHRo
YXQuaGFuZGxlLmNyZWF0ZU9iamVjdFN0b3JlKCJ0ZXN0LXN0b3JlIiArIHNlbGYudmVyKTsKLSAg
ICAgICAgICAgIHZhciBjb3VudCA9IDA7Ci0gICAgICAgICAgICBkb19hc3luY19wdXRzKCk7IC8v
IEtlZXAgdGhpcyB0cmFuc2FjdGlvbiBydW5uaW5nIGZvciBhIHdoaWxlCi0gICAgICAgICAgICBm
dW5jdGlvbiBkb19hc3luY19wdXRzKCkgewotICAgICAgICAgICAgICAgIHZhciByZXEgPSBzdG9y
ZS5wdXQoY291bnQsIGNvdW50KTsKLSAgICAgICAgICAgICAgICByZXEub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICAgICAgICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbiAoZSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoKytjb3VudCA8IDEwKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBkb19hc3luY19wdXRzKCk7Ci0gICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFu
ZExvZygiJyIgKyBpZCArICIuc2V0VmVyc2lvbi50cmFuc2FjdGlvbi1jb21wbGV0ZSciKSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9uc3VjY2VzcykgeyBvcHRz
Lm9uc3VjY2Vzcy5jYWxsKHRoYXQpOyB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICB9OwotICAgICAgICAgICAgfQotICAgICAgICB9OwotICAgICAgICByZXEub25lcnJv
ciA9IGZ1bmN0aW9uIChlKSB7Ci0gICAgICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExv
ZygiJyIgKyBpZCArICIuc2V0VmVyc2lvbi5vbmVycm9yJyIpKTsKLSAgICAgICAgICAgIGlmIChv
cHRzICYmIG9wdHMub25lcnJvcikgeyBvcHRzLm9uZXJyb3IuY2FsbCh0aGF0KTsgfQotICAgICAg
ICB9OwotICAgIH07Ci19Ci0KLS8vIHJ1biBhIHNlcmllcyBvZiBzdGVwcyB0aGF0IHRha2UgYSBj
b250aW51YXRpb24gZnVuY3Rpb24KLWZ1bmN0aW9uIHJ1blN0ZXBzKGNvbW1hbmRzKSB7Ci0gICAg
aWYgKGNvbW1hbmRzLmxlbmd0aCkgewotICAgICAgICB2YXIgY29tbWFuZCA9IGNvbW1hbmRzLnNo
aWZ0KCk7Ci0gICAgICAgIGNvbW1hbmQoZnVuY3Rpb24oKSB7IHJ1blN0ZXBzKGNvbW1hbmRzKTsg
fSk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0KCkgewotICAgIHJlbW92ZVZlbmRvclByZWZp
eGVzKCk7Ci0gICAgdGVzdDEoKTsKLX0KLQotZnVuY3Rpb24gdGVzdDEoKSB7Ci0gICAgZGVidWco
IiIpOwotICAgIGRlYnVnKCJURVNUOiBzZXRWZXJzaW9uIGJsb2NrZWQgb24gb3BlbiBoYW5kbGVz
Iik7Ci0gICAgZXZhbEFuZExvZygic2VsZi5kYm5hbWUgPSAndGVzdDEnOyBzZWxmLnZlciA9IDE7
IHNlbGYuc3RlcHMgPSBbXSIpOwotICAgIHZhciBoMSA9IG5ldyBDb25uZWN0aW9uKCJoMSIpOwot
ICAgIHZhciBoMiA9IG5ldyBDb25uZWN0aW9uKCJoMiIpOwotICAgIHJ1blN0ZXBzKFtmdW5jdGlv
bihkb05leHQpIHsgaDEub3Blbih7b25zdWNjZXNzOiBkb05leHR9KTsgfSwKLSAgICAgICAgIGZ1
bmN0aW9uKGRvTmV4dCkgeyBoMi5vcGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb252ZXJzaW9uOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKCIgICAgaDIgY2xvc2luZywgYnV0IG5vdCBp
bW1lZGlhdGVseSIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsgaDIuY2xvc2UoKTsgfSwgMCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH19KTsgfSwKLSAgICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBoMS5zZXRW
ZXJzaW9uKHtvbnN1Y2Nlc3M6IGZpbmlzaFRlc3R9KTsgfSwKLSAgICAgICAgIF0pOwotICAgIGZ1
bmN0aW9uIGZpbmlzaFRlc3QoKSB7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic2Vs
Zi5zdGVwcy50b1N0cmluZygpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiaDEu
b3BlbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLm9wZW4ub25zdWNjZXNz
IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIub3BlbiIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImgyLm9wZW4ub25zdWNjZXNzIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbiIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImgyLm9udmVyc2lvbmNoYW5nZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImgxLnNldFZlcnNpb24ub25ibG9ja2VkIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiaDIuY2xvc2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5z
ZXRWZXJzaW9uLm9uc3VjY2VzcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgx
LnNldFZlcnNpb24udHJhbnNhY3Rpb24tY29tcGxldGUiCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXS50b1N0cmluZygpKTsKLSAgICAgICAgdGVzdDIoKTsKLSAgICB9Ci19Ci0KLWZ1
bmN0aW9uIHRlc3QyKCkgewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiVEVTVDogc2V0VmVy
c2lvbiBub3QgYmxvY2tlZCBpZiBoYW5kbGUgY2xvc2VkIGltbWVkaWF0ZWx5Iik7Ci0gICAgZXZh
bEFuZExvZygic2VsZi5kYm5hbWUgPSAndGVzdDInOyBzZWxmLnZlciA9IDE7IHNlbGYuc3RlcHMg
PSBbXSIpOwotICAgIHZhciBoMSA9IG5ldyBDb25uZWN0aW9uKCJoMSIpOwotICAgIHZhciBoMiA9
IG5ldyBDb25uZWN0aW9uKCJoMiIpOwotICAgIHJ1blN0ZXBzKFtmdW5jdGlvbihkb05leHQpIHsg
aDEub3Blbih7b25zdWNjZXNzOiBkb05leHR9KTsgfSwKLSAgICAgICAgICAgICAgZnVuY3Rpb24o
ZG9OZXh0KSB7IGgyLm9wZW4oe29uc3VjY2VzczogZG9OZXh0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb252ZXJzaW9uOiBmdW5jdGlvbigpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiICAgIGgyIGNsb3Np
bmcgaW1tZWRpYXRlbHkiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBoMi5jbG9zZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfX0pOyB9LAotICAgICAgICAgICAgICBmdW5jdGlvbihkb05leHQpIHsgaDEuc2V0VmVy
c2lvbih7b25zdWNjZXNzOiBkb05leHR9KTsgfSwKLSAgICAgICAgICAgICAgZmluaXNoVGVzdAot
ICAgICAgICAgICAgICBdKTsKLQotICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7Ci0gICAgICAg
IGRlYnVnKCJOT1RFOiBXaWxsIEZBSUwgd2l0aCBleHRyYSBib2d1cyBoMS5zZXRWZXJzaW9uLm9u
YmxvY2tlZCBzdGVwOyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEx
MzAiKTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzZWxmLnN0ZXBzLnRvU3RyaW5n
KCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJoMS5vcGVuIiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiaDEub3Blbi5vbnN1Y2Nlc3MiLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJoMi5vcGVuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiaDIub3Blbi5vbnN1Y2Nlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJoMS5zZXRWZXJzaW9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIub252
ZXJzaW9uY2hhbmdlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIuY2xvc2Ui
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLm9uc3VjY2Vz
cyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24udHJhbnNh
Y3Rpb24tY29tcGxldGUiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS50b1N0cmlu
ZygpKTsKLSAgICAgICAgdGVzdDMoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3QzKCkgewot
ICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiVEVTVDogb3BlbiBhbmQgc2V0VmVyc2lvbiBibG9j
a2VkIGlmIGEgVkVSU0lPTl9DSEFOR0UgdHJhbnNhY3Rpb24gaXMgcnVubmluZyAtIGNsb3NlIHdo
ZW4gYmxvY2tlZCIpOwotICAgIGV2YWxBbmRMb2coInNlbGYuZGJuYW1lID0gJ3Rlc3QzJzsgc2Vs
Zi52ZXIgPSAxOyBzZWxmLnN0ZXBzID0gW10iKTsKLSAgICB2YXIgaDEgPSBuZXcgQ29ubmVjdGlv
bigiaDEiKTsKLSAgICB2YXIgaDIgPSBuZXcgQ29ubmVjdGlvbigiaDIiKTsKLSAgICB2YXIgaDMg
PSBuZXcgQ29ubmVjdGlvbigiaDMiKTsKLSAgICBydW5TdGVwcyhbZnVuY3Rpb24oZG9OZXh0KSB7
IGgxLm9wZW4oe29uc3VjY2VzczogZG9OZXh0fSk7IH0sCi0gICAgICAgICAgICAgIGZ1bmN0aW9u
KGRvTmV4dCkgeyBoMi5vcGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dH0pOyB9LAotICAgICAgICAgICAg
ICBmdW5jdGlvbihkb05leHQpIHsgaDEuc2V0VmVyc2lvbigpOyBkb05leHQoKTsgfSwKLSAgICAg
ICAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGgyLnNldFZlcnNpb24oewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25ibG9ja2VkOiBmdW5jdGlv
bigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkZWJ1ZygiICAgIGgyIGJsb2NrZWQgc28gY2xvc2luZyIpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGgyLmNsb3NlKCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9OZXh0
KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
fSk7IH0sCi0gICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBoMy5vcGVuKHtvbnN1Y2Nlc3M6IGZp
bmlzaFRlc3R9KTt9Ci0gICAgICAgICAgICAgIF0pOwotCi0gICAgZnVuY3Rpb24gZmluaXNoVGVz
dCgpIHsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzZWxmLnN0ZXBzLnRvU3RyaW5n
KCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJoMS5vcGVuIiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiaDEub3Blbi5vbnN1Y2Nlc3MiLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJoMi5vcGVuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiaDIub3Blbi5vbnN1Y2Nlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJoMS5zZXRWZXJzaW9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIuc2V0
VmVyc2lvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLm9udmVyc2lvbmNo
YW5nZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24ub25i
bG9ja2VkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEub252ZXJzaW9uY2hh
bmdlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIuc2V0VmVyc2lvbi5vbmJs
b2NrZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5jbG9zZSIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImgzLm9wZW4iLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJoMi5zZXRWZXJzaW9uLm9uZXJyb3IiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLm9uc3VjY2VzcyIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24udHJhbnNhY3Rpb24tY29tcGxldGUiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMy5vcGVuLm9uc3VjY2VzcyIKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBdLnRvU3RyaW5nKCkpOwotICAgICAgICB0ZXN0NCgpOwot
ICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdDQoKSB7Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVn
KCJURVNUOiBvcGVuIGFuZCBzZXRWZXJzaW9uIGJsb2NrZWQgaWYgYSBWRVJTSU9OX0NIQU5HRSB0
cmFuc2FjdGlvbiBpcyBydW5uaW5nIC0ganVzdCBjbG9zZSIpOwotICAgIGV2YWxBbmRMb2coInNl
bGYuZGJuYW1lID0gJ3Rlc3Q0Jzsgc2VsZi52ZXIgPSAxOyBzZWxmLnN0ZXBzID0gW10iKTsKLSAg
ICB2YXIgaDEgPSBuZXcgQ29ubmVjdGlvbigiaDEiKTsKLSAgICB2YXIgaDIgPSBuZXcgQ29ubmVj
dGlvbigiaDIiKTsKLSAgICB2YXIgaDMgPSBuZXcgQ29ubmVjdGlvbigiaDMiKTsKLSAgICBydW5T
dGVwcyhbZnVuY3Rpb24oZG9OZXh0KSB7IGgxLm9wZW4oe29uc3VjY2VzczogZG9OZXh0fSk7IH0s
Ci0gICAgICAgICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBoMi5vcGVuKHtvbnN1Y2Nlc3M6IGRv
TmV4dH0pOyB9LAotICAgICAgICAgICAgICBmdW5jdGlvbihkb05leHQpIHsgaDEuc2V0VmVyc2lv
bigpOyBkb05leHQoKTsgfSwKLSAgICAgICAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGgzLm9w
ZW4oe29uc3VjY2VzczogZmluaXNoVGVzdH0pOyBkb05leHQoKTsgfSwKLSAgICAgICAgICAgICAg
ZnVuY3Rpb24oZG9OZXh0KSB7IGgyLmNsb3NlKCk7IH0sCi0gICAgICAgICAgICAgIF0pOwotCi0g
ICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKLSAgICAgICAgZGVidWcoIk5PVEU6IFdpbGwgRkFJ
TCB3aXRoIGV4dHJhIGJvZ3VzIGgxLnNldFZlcnNpb24ub25ibG9ja2VkIHN0ZXA7IGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTEzMCIpOwotICAgICAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoInNlbGYuc3RlcHMudG9TdHJpbmcoKSIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbImgxLm9wZW4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJoMS5vcGVuLm9uc3VjY2VzcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgy
Lm9wZW4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5vcGVuLm9uc3VjY2Vz
cyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24iLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMy5vcGVuIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiaDIuY2xvc2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJoMS5zZXRWZXJzaW9uLm9uc3VjY2VzcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImgxLnNldFZlcnNpb24udHJhbnNhY3Rpb24tY29tcGxldGUiLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJoMy5vcGVuLm9uc3VjY2VzcyIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBdLnRvU3RyaW5nKCkpOwotICAgICAgICB0ZXN0NSgpOwotICAgIH0KLX0KLQot
ZnVuY3Rpb24gdGVzdDUoKSB7Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJURVNUOiBvcGVu
IGJsb2NrZWQgaWYgYSBWRVJTSU9OX0NIQU5HRSB0cmFuc2FjdGlvbiBpcyBydW5uaW5nIik7Ci0g
ICAgZXZhbEFuZExvZygic2VsZi5kYm5hbWUgPSAndGVzdDUnOyBzZWxmLnZlciA9IDE7IHNlbGYu
c3RlcHMgPSBbXSIpOwotICAgIHZhciBoMSA9IG5ldyBDb25uZWN0aW9uKCJoMSIpOwotICAgIHZh
ciBoMiA9IG5ldyBDb25uZWN0aW9uKCJoMiIpOwotCi0gICAgcnVuU3RlcHMoW2Z1bmN0aW9uKGRv
TmV4dCkgeyBoMS5vcGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dH0pOyB9LAotICAgICAgICAgICAgICBm
dW5jdGlvbihkb05leHQpIHsgaDEuc2V0VmVyc2lvbigpOyBkb05leHQoKTsgfSwKLSAgICAgICAg
ICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGgyLm9wZW4oe29uc3VjY2VzczogZmluaXNoVGVzdH0p
OyB9Ci0gICAgICAgICAgICAgIF0pOwotCi0gICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKLSAg
ICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzZWxmLnN0ZXBzLnRvU3RyaW5nKCkiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJoMS5vcGVuIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiaDEub3Blbi5vbnN1Y2Nlc3MiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJoMS5zZXRWZXJzaW9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiaDIub3BlbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNp
b24ub25zdWNjZXNzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVy
c2lvbi50cmFuc2FjdGlvbi1jb21wbGV0ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImgyLm9wZW4ub25zdWNjZXNzIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0u
dG9TdHJpbmcoKSk7Ci0gICAgICAgIHRlc3Q2KCk7Ci0gICAgfQotfQotCi0KLWZ1bmN0aW9uIHRl
c3Q2KCkgewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiVEVTVDogdHdvIHNldFZlcnNpb25z
IGZyb20gdGhlIHNhbWUgY29ubmVjdGlvbiIpOwotICAgIGV2YWxBbmRMb2coInNlbGYuZGJuYW1l
ID0gJ3Rlc3Q2Jzsgc2VsZi52ZXIgPSAxOyBzZWxmLnN0ZXBzID0gW10iKTsKLSAgICB2YXIgaDEg
PSBuZXcgQ29ubmVjdGlvbigiaDEiKTsKLQotICAgIHJ1blN0ZXBzKFtmdW5jdGlvbihkb05leHQp
IHsgaDEub3Blbih7b25zdWNjZXNzOiBkb05leHR9KTsgfSwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBoMS5zZXRWZXJz
aW9uKHtvbnN1Y2Nlc3M6IGhhbGZEb25lfSk7IAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaDEuc2V0VmVyc2lvbih7b25zdWNjZXNzOiBoYWxmRG9uZX0pOyB9Ci0gICAgICAgICAg
ICAgIF0pOwotCi0gICAgdmFyIGNvdW50ZXIgPSAwOwotICAgIGZ1bmN0aW9uIGhhbGZEb25lKCkg
ewotICAgICAgICBjb3VudGVyKys7Ci0gICAgICAgIGlmIChjb3VudGVyIDwgMikgewotICAgICAg
ICAgICAgZGVidWcoJ2hhbGYgZG9uZScpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ZmluaXNoVGVzdCgpOwotICAgICAgICB9Ci0gICAgfSAgCi0KLSAgICBmdW5jdGlvbiBmaW5pc2hU
ZXN0KCkgewotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNlbGYuc3RlcHMudG9TdHJp
bmcoKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImgxLm9wZW4iLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5vcGVuLm9uc3VjY2VzcyIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24iLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiaDEuc2V0VmVyc2lvbi5vbnN1Y2Nlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJoMS5zZXRWZXJzaW9uLnRyYW5zYWN0aW9uLWNvbXBsZXRlIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbi5vbnN1Y2Nlc3MiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLnRyYW5zYWN0aW9uLWNvbXBsZXRl
IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udG9TdHJpbmcoKSk7Ci0gICAgICAg
IGZpbmlzaEpTVGVzdCgpOwotICAgIH0KLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvb3Blbi1jbG9zZS12ZXJzaW9uLmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvb3Blbi1jdXJzb3IuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29w
ZW4tY3Vyc29yLmh0bWwKaW5kZXggNzE4ZmUxYmJiYTQ0NDEzOTc0ZjViYTU5ZGMyMjVmZDYzOTk5
M2E5Zi4uZTRlYjE4MmI4MDVkOTBiZWU5NTBmZmIzMmE5YTM2NjRhZGM5ZGI2NCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi1jdXJzb3IuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVuLWN1cnNvci5odG1sCkBAIC00LDkwICs0
LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVh
ZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mgb3Bl
bkN1cnNvci4iKTsKLQotZnVuY3Rpb24gZW1wdHlDdXJzb3JTdWNjZXNzKCkKLXsKLSAgICBkZWJ1
ZygiRW1wdHkgY3Vyc29yIG9wZW5lZCBzdWNjZXNzZnVsbHkuIikKLSAgICAvLyBGSVhNRTogY2hl
Y2sgdGhhdCB3ZSBjYW4gaXRlcmF0ZSB0aGUgY3Vyc29yLgotICAgIGZpbmlzaEpTVGVzdCgpOwot
fQotCi1mdW5jdGlvbiBvcGVuRW1wdHlDdXJzb3IoKQotewotICAgIGRlYnVnKCJPcGVuaW5nIGFu
IGVtcHR5IGN1cnNvci4iKTsKLSAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQo
IkluZXhpc3RlbnRLZXkiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUu
b3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGVtcHR5Q3Vy
c29yU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLX0KLQotZnVuY3Rpb24gY3Vyc29yU3VjY2VzcygpCi17Ci0gICAgZGVidWcoIkN1cnNvciBv
cGVuZWQgc3VjY2Vzc2Z1bGx5LiIpCi0gICAgLy8gRklYTUU6IGNoZWNrIHRoYXQgd2UgY2FuIGl0
ZXJhdGUgdGhlIGN1cnNvci4KLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5kaXJl
Y3Rpb24iLCAiMCIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICIn
bXlLZXknIik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUiLCAiJ215
VmFsdWUnIik7Ci0gICAgZGVidWcoIiIpOwotICAgIHRyeSB7Ci0gICAgICAgIGRlYnVnKCJQYXNz
aW5nIGFuIGludmFsaWQga2V5IGludG8gLmNvbnRpbnVlKHt9KS4iKTsKLSAgICAgICAgZXZlbnQu
dGFyZ2V0LnJlc3VsdC5jb250aW51ZSh7fSk7Ci0gICAgICAgIHRlc3RGYWlsZWQoIk5vIGV4Y2Vw
dGlvbiB0aHJvd24iKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIHRlc3RQYXNzZWQoIkNh
dWdodCBleGNlcHRpb246ICIgKyBlLnRvU3RyaW5nKCkpOwotICAgIH0KLSAgICBkZWJ1ZygiIik7
Ci0gICAgb3BlbkVtcHR5Q3Vyc29yKCk7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5DdXJzb3IoKQotewot
ICAgIGRlYnVnKCJPcGVuaW5nIGN1cnNvciIpOwotICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2Uu
bG93ZXJCb3VuZCgibXlLZXkiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZXZlbnQudGFy
Z2V0LnNvdXJjZS5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gY3Vyc29yU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQotewotICAgIGRlYnVn
KCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOwotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0
cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9
PSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwot
Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIHZhciBvYmplY3RTdG9yZSA9
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Rlc3QnKSIp
OwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ215VmFsdWUnLCAn
bXlLZXknKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbkN1cnNvcjsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLSAKLWZ1bmN0aW9uIG9w
ZW5TdWNjZXNzKCkKLXsKLSAgICB2YXIgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKLSAKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbign
bmV3IHZlcnNpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nl
c3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0g
Ci1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbignb3Blbi1jdXJzb3InKSIpOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLXRlc3QoKTsKLQotCi08L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvb3Blbi1jdXJzb3IuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBz
cmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8
L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9vcGVuLWR1cmluZy10cmFuc2FjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvb3Blbi1kdXJpbmctdHJhbnNhY3Rpb24uaHRtbAppbmRleCBjYmRkMzVjZGM1YTY3NDYy
NDA5ZDVlYmUyZjgxMTRmOGQ2MDFlYWMwLi5jZDVmOGY2ZGMzNDg2OTM3YTliNGFmODE3ZjQ0NTEy
NGEwOGU1OWY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVu
LWR1cmluZy10cmFuc2FjdGlvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL29wZW4tZHVyaW5nLXRyYW5zYWN0aW9uLmh0bWwKQEAgLTEsODcgKzEsMTAgQEAKLTwhRE9D
VFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2Ny
aXB0aW9uKCJUZXN0IEluZGV4ZWREQiBvcGVuaW5nIGRhdGFiYXNlIGNvbm5lY3Rpb25zIGR1cmlu
ZyB0cmFuc2FjdGlvbnMiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9y
UHJlZml4ZXMoKTsKLSAgICBwcmVwYXJlRGF0YWJhc2UoKTsKLX0KLQotZnVuY3Rpb24gcHJlcGFy
ZURhdGFiYXNlKCkKLXsKLSAgICBkZWJ1ZygicHJlcGFyZSBkYXRhYmFzZSIpOwotICAgIGV2YWxB
bmRMb2coIm9wZW5yZXExID0gaW5kZXhlZERCLm9wZW4oJ2RiMScpIik7Ci0gICAgb3BlbnJlcTEu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIG9wZW5yZXExLm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uIChlKSB7Ci0gICAgICAgIGV2YWxBbmRMb2coImRiYzEgPSBvcGVucmVxMS5y
ZXN1bHQiKTsKLSAgICAgICAgZXZhbEFuZExvZygic2V0dmVycmVxID0gZGJjMS5zZXRWZXJzaW9u
KCcxLjAnKSIpOwotICAgICAgICBzZXR2ZXJyZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotICAgICAgICBzZXR2ZXJyZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKLSAg
ICAgICAgICAgIGV2YWxBbmRMb2coImRiYzEuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScp
Iik7Ci0gICAgICAgICAgICBzZXR2ZXJyZXEucmVzdWx0Lm9uY29tcGxldGUgPSBmdW5jdGlvbiAo
ZSkgewotICAgICAgICAgICAgICAgIGRlYnVnKCJkYXRhYmFzZSBwcmVwYXJhdGlvbiBjb21wbGV0
ZSIpOwotICAgICAgICAgICAgICAgIGRlYnVnKCIiKTsKLSAgICAgICAgICAgICAgICBzdGFydFRy
YW5zYWN0aW9uKCk7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgIH07Ci19Ci0KLWZ1
bmN0aW9uIHN0YXJ0VHJhbnNhY3Rpb24oKQotewotICAgIGRlYnVnKCJzdGFydGluZyB0cmFuc2Fj
dGlvbiIpOwotICAgIGV2YWxBbmRMb2coInN0YXRlID0gJ3N0YXJ0aW5nJyIpOwotICAgIGV2YWxB
bmRMb2coInRyYW5zID0gZGJjMS50cmFuc2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rp
b24uUkVBRF9XUklURSkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnc3Rv
cmVOYW1lJykucHV0KCd2YWx1ZScsICdrZXknKSIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4
cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IGZ1bmN0aW9uIChlKSB7Ci0gICAgICAg
IGRlYnVnKCJ0cmFuc2FjdGlvbiBjb21wbGV0ZSIpOwotICAgICAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoInN0YXRlIiwgIm9wZW4zY29tcGxldGUiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7
Ci0gICAgfTsKLQotICAgIGRlYnVnKCIiKTsKLSAgICB0cnlPcGVucygpOwotfQotCi0KLWZ1bmN0
aW9uIHRyeU9wZW5zKCkKLXsKLSAgICBkZWJ1ZygidHJ5aW5nIHRvIG9wZW4gdGhlIHNhbWUgZGF0
YWJhc2UiKTsKLSAgICBldmFsQW5kTG9nKCJvcGVucmVxMiA9IGluZGV4ZWREQi5vcGVuKCdkYjEn
KSIpOwotICAgIG9wZW5yZXEyLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAg
ICBvcGVucmVxMi5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZSkgewotICAgICAgICBkZWJ1Zygib3Bl
bnJlcTIub25zdWNjZXNzIik7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3RhdGUi
LCAic3RhcnRpbmciKTsKLSAgICAgICAgZXZhbEFuZExvZygic3RhdGUgPSAnb3BlbjJjb21wbGV0
ZSciKTsKLSAgICAgICAgZGVidWcoIiIpOwotICAgIH0KLSAgICBkZWJ1ZygiIik7Ci0KLSAgICBk
ZWJ1ZygidHJ5aW5nIHRvIG9wZW4gYSBkaWZmZXJlbnQgZGF0YWJhc2UiKTsKLSAgICBldmFsQW5k
TG9nKCJvcGVucmVxMyA9IGluZGV4ZWREQi5vcGVuKCdkYjInKSIpOwotICAgIG9wZW5yZXEzLm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICBvcGVucmVxMy5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbiAoZSkgewotICAgICAgICBkZWJ1Zygib3BlbnJlcTMub25zdWNjZXNzIik7Ci0g
ICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3RhdGUiLCAib3BlbjJjb21wbGV0ZSIpOwot
ICAgICAgICBldmFsQW5kTG9nKCJzdGF0ZSA9ICdvcGVuM2NvbXBsZXRlJyIpOwotICAgICAgICBk
ZWJ1ZygiIik7Ci0gICAgfQotICAgIGRlYnVnKCIiKTsKLX0KLQotdGVzdCgpOwotCi08L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3Blbi1kdXJpbmctdHJhbnNhY3Rpb24uanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9wcmVmZXRjaC1idWdmaXgtMTA4MDcxLmh0bWwgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9wcmVmZXRjaC1idWdmaXgtMTA4MDcxLmh0bWwKaW5kZXgg
ZWRhMjk5NzdjNWU0NDZmY2RlNmRmNDVhOWY2ZTVhMzVkMDYwYWUwOC4uODRjN2E2NTU3ZWNhMmVl
YTdjNGVmZDcyMjI0ZTA5MmI3NzA5NzljOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcHJlZmV0Y2gtYnVnZml4LTEwODA3MS5odG1sCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3ByZWZldGNoLWJ1Z2ZpeC0xMDgwNzEuaHRtbApAQCAtNCwxMjMg
KzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9o
ZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBmb3IgY3JidWcuY29t
LzEwODA3MSIpOwotCi0vLyBIYXZlIHRvIGJlIGF0IGxlYXN0IDUgaGVyZTogMSBpbml0aWFsLCAz
IGNvbnRpbnVlcyB0byB0cmlnZ2VyIHByZWZldGNoIGFuZCAxCi0vLyBwb3N0LWFib3J0IG91dHN0
YW5kaW5nIGNvbnRpbnVlLgotdmFyIG5hbWVzID0gWydBbHBoYScsICdCcmF2bycsICdDaGFybGll
JywgJ0RlbHRhJywgJ0VjaG8nXTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVu
ZG9yUHJlZml4ZXMoKTsKLSAgICBEQk5BTUUgPSAncHJlZmV0Y2gtYnVnZml4LTEwODA3MSc7Ci0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShEQk5BTUUp
Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAg
cmVxdWVzdC5vbmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNrOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImluZGV4ZWREQi5vcGVuKERCTkFNRSkiKTsKLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBvcGVuU3VjY2VzczsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIHZh
ciBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb25TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uU3Vj
Y2VzcygpCi17Ci0gICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7Ci0gICAgc2VsZi50
cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNo
b3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBl
Y3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IGl0ZXJhdGVBbmREZWxl
dGVGaXJzdEVsZW1lbnQ7Ci0KLSAgICB2YXIgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScsIHtrZXlQYXRoOiAnaWQnfSki
KTsKLSAgICByZXNldE9iamVjdFN0b3JlKCk7Ci19Ci0KLWZ1bmN0aW9uIHJlc2V0T2JqZWN0U3Rv
cmUoKQotewotICAgIGRlYnVnKCJcbnJlc2V0T2JqZWN0U3RvcmUoKToiKTsKLQotICAgIG9iamVj
dFN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7Ci0gICAgZXZhbEFuZExvZygib2Jq
ZWN0U3RvcmUuY2xlYXIoKSIpOwotICAgIGZvciAoaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkr
KykgewotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKHtpZDog
IiArIGkgKyAiLCBuYW1lOiBcIiIgKyBuYW1lc1tpXSArICJcIn0pIik7Ci0gICAgICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIH0KLQotICAgIGRlYnVn
KCIiKTsKLX0KLQotZnVuY3Rpb24gaXRlcmF0ZUFuZERlbGV0ZUZpcnN0RWxlbWVudCgpCi17Ci0g
ICAgZGVidWcoIml0ZXJhdGVBbmREZWxldGVGaXJzdEVsZW1lbnQoKToiKTsKLQotICAgIGV2YWxB
bmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZSddLCBJREJUcmFuc2FjdGlvbi5S
RUFEX1dSSVRFKSIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB0cmFuc2FjdGlvbkFib3J0ZWQ7Ci0g
ICAgdHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOwotCi0gICAg
Ly8gQ3JlYXRlIHRoZSBjdXJzb3IgYW5kIGl0ZXJhdGUgb3ZlciB0aGUgd2hvbGUgdGhpbmcuCi0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpLm9wZW5D
dXJzb3IoKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewotICAgICAgICB2YXIgY3Vy
c29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKLSAgICAgICAgaWYgKGN1cnNvciA9PSBudWxsKSB7
Ci0gICAgICAgICAgICByZXNldE9iamVjdFN0b3JlKCk7Ci0gICAgICAgICAgICBwcmVmZXRjaEFu
ZEFib3J0KCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBkZWJ1
ZyhjdXJzb3IudmFsdWUuaWQgKyAiOiAiICsgY3Vyc29yLnZhbHVlLm5hbWUpOwotCi0gICAgICAg
IGlmIChjdXJzb3IudmFsdWUuaWQgPT0gMCkgewotICAgICAgICAgICAgLy8gRGVsZXRlIHRoZSBm
aXJzdCBlbGVtZW50IHdoZW4gd2Ugc2VlIGl0LgotICAgICAgICAgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpLmRlbGV0ZSgwKSIpOwotICAgICAgICAg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgICAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeyBjdXJzb3IuY29udGludWUoKTsgfTsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGN1cnNvci5jb250aW51ZSgpOwotICAgICAg
ICB9Ci0gICAgfQotfQotCi1mdW5jdGlvbiBwcmVmZXRjaEFuZEFib3J0KCkKLXsKLSAgICBkZWJ1
ZygicHJlZmV0Y2hBbmRBYm9ydCgpOiIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRy
YW5zLm9iamVjdFN0b3JlKCdzdG9yZScpLm9wZW5DdXJzb3IoKSIpOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24gKCkgewotICAgICAgICB2YXIgY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsK
LSAgICAgICAgZGVidWcoY3Vyc29yLnZhbHVlLmlkICsgIjogIiArIGN1cnNvci52YWx1ZS5uYW1l
KTsKLSAgICAgICAgLy8gSGF2ZSB0byBpdGVyYXRlIHRvIDMgaW4gb3JkZXIgdG8gcHJlZmV0Y2gs
IGJ1dCBjYW4ndCBpdGVyYXRlIHBhc3QgMwotICAgICAgICAvLyBzbyB0aGF0IHRoZXJlIHdpbGwg
YmUgYSBjb250aW51ZSByZW1haW5pbmcuCi0gICAgICAgIGlmIChjdXJzb3IudmFsdWUuaWQgPT0g
MykgewotICAgICAgICAgICAgZXZhbEFuZExvZygidHJhbnMuYWJvcnQoKSIpOwotICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7Ci0gICAgICAgIH0KLSAgICB9
Ci19Ci0KLWZ1bmN0aW9uIHRyYW5zYWN0aW9uQWJvcnRlZCgpCi17Ci0gICAgdGVzdFBhc3NlZCgi
VHJhbnNhY3Rpb24gYWJvcnRlZCBhcyBleHBlY3RlZCIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwot
fQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9wcmVmZXRj
aC1idWdmaXgtMTA4MDcxLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcXVldWVkLWNvbW1hbmRz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9xdWV1ZWQtY29tbWFuZHMuaHRt
bAppbmRleCAyYzRiOTlmZWI1ODg1ZTFjMTQ5MTVkZTQ0NjNkZDMxYzhkOGU0OGU0Li41NzhkY2Rl
YTA4YWU1NjkyYTI3NDNlYjBiNDljNDQyNmNiZGY3YmExIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9xdWV1ZWQtY29tbWFuZHMuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9xdWV1ZWQtY29tbWFuZHMuaHRtbApAQCAtNCw2OCArNCw3IEBA
CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8
Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJWZXJpZnkgdGhhdCBxdWV1aW5nIHVwIHNl
dmVyYWwgY29tbWFuZHMgd29ya3MgKGFuZCB0aGV5IGFsbCBmaXJlKS4iKTsKLQotZnVuY3Rpb24g
dGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3F1ZXVlZC1jb21tYW5kcycpIik7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uKCkKLXsKLSAgICBkYiA9
IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4aXN0aW5nOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBkZWxldGVFeGlzdGluZygpCi17Ci0g
ICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7Ci0gICAgc2VsZi50cmFucyA9IGV2YWxB
bmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgi
dHJhbnMgIT09IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2Fs
bGJhY2s7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgc2VsZi5zdG9y
ZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotICAg
IHNlbGYuaW5kZXhPYmplY3QgPSBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhO
YW1lJywgJ3gnKSIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDog
J3ZhbHVlJywgeTogJ3p6eid9LCAna2V5JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1
bmN0aW9uKCkgeyB2ZXJpZnlBZGQoMCk7IH07Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRk
KHt4OiAndmFsdWUyJywgeTogJ3p6ejInfSwgJ2tleTInKSIpOwotICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZnVuY3Rpb24oKSB7IHZlcmlmeUFkZCgxKTsgfTsKLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJz
dG9yZS5wdXQoe3g6ICd2YWx1MicsIHk6ICd6ejInfSwgJ2t5MicpIik7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgdmVyaWZ5QWRkKDIpOyB9OwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotCi0gICAgc2VsZi5hZGRDb3VudCA9IDA7
Ci19Ci0KLWZ1bmN0aW9uIHZlcmlmeUFkZChleHBlY3RlZCkKLXsKLSAgICBzaG91bGRCZSgiIiAr
IGFkZENvdW50KyssICIiICsgZXhwZWN0ZWQpOwotCi0gICAgaWYgKGFkZENvdW50ID09IDMpCi0g
ICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIGlmIChhZGRDb3VudCA+IDMpCi0gICAgICAgIHRl
c3RGYWlsZWQoIlVuZXhwZWN0ZWQgY2FsbCB0byB2ZXJpZnlBZGQhIik7Ci19Ci0KLXRlc3QoKTsK
LQotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcXVldWVkLWNvbW1hbmRzLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVhZG9ubHktcHJvcGVydGllcy5odG1sIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVhZG9ubHktcHJvcGVydGllcy5odG1sCmluZGV4IGUy
ZDdkYjU3Njg5YTQ0N2FjYWUxNjA0ZWU2MWI3MzAwNjI0YWViNWIuLmQ0OGJiMDA4ZjJkZjE5NThm
MTI3NjdjNjlkYzVhY2Q2ZTY3MzZlNzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3JlYWRvbmx5LXByb3BlcnRpZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZWFkb25seS1wcm9wZXJ0aWVzLmh0bWwKQEAgLTEsNTggKzEsMTAgQEAK
LTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci1k
ZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgcmVhZG9ubHkgcHJvcGVydGllcyIpOwotCi1mdW5j
dGlvbiBzZXRSZWFkb25seVByb3BlcnR5KHByb3BlcnR5LCB2YWx1ZSkKLXsKLSAgICBvbGRWYWx1
ZSA9IGV2YWwocHJvcGVydHkpOwotICAgIGRlYnVnKCJ0cnlpbmcgdG8gc2V0IHJlYWRvbmx5IHBy
b3BlcnR5ICIgKyBwcm9wZXJ0eSk7Ci0gICAgZXZhbEFuZExvZyhwcm9wZXJ0eSArICIgPSAiICsg
dmFsdWUpOwotICAgIG5ld1ZhbHVlID0gZXZhbChwcm9wZXJ0eSk7Ci0gICAgaWYgKG9sZFZhbHVl
ID09IG5ld1ZhbHVlKSB7Ci0gICAgICAgIHRlc3RQYXNzZWQocHJvcGVydHkgKyAiIGlzIHN0aWxs
ICIgKyBvbGRWYWx1ZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdGVzdEZhaWxlZChwcm9wZXJ0
eSArICIgdmFsdWUgd2FzIGNoYW5nZWQgdG8gIiArIG5ld1ZhbHVlKTsKLSAgICB9Ci19Ci0KLWZ1
bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1l
ID0gImZvbyI7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkK
LXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlv
biBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKLXsKLSAgICB0cmFuc2FjdGlvbiA9IGV2
YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICBkZWxl
dGVBbGxPYmplY3RTdG9yZXMoZGIpOwotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2Jq
ZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJyk7Iik7Ci0gICAgc2V0UmVhZG9u
bHlQcm9wZXJ0eSgib2JqZWN0U3RvcmUudHJhbnNhY3Rpb24iLCAidGhpcyIpOwotICAgIGZpbmlz
aEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3JlYWRvbmx5LXByb3BlcnRpZXMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+
CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZWFk
b25seS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVhZG9ubHkuaHRtbApp
bmRleCAxNDhlNWUwYzc5MzZiOTA1ZTM3MThhZGE1MDcwYzk0MzljNjY1Yzk5Li4xZTExNjIwM2I1
NmU4OTlkMGI1MWQzYjczYzBmOTViNGVlYWVjOGFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZWFkb25seS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3JlYWRvbmx5Lmh0bWwKQEAgLTEsMTE1ICsxLDEwIEBACi08IURPQ1RZUEUgaHRt
bD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQu
anMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotZGVzY3JpcHRpb24oIlRl
c3QgSW5kZXhlZERCIHJlYWRvbmx5IHByb3BlcnRpZXMiKTsKLQotZnVuY3Rpb24gc2V0UmVhZG9u
bHlQcm9wZXJ0eShwcm9wZXJ0eSwgdmFsdWUpCi17Ci0gICAgb2xkVmFsdWUgPSBldmFsKHByb3Bl
cnR5KTsKLSAgICBkZWJ1ZygidHJ5aW5nIHRvIHNldCByZWFkb25seSBwcm9wZXJ0eSAiICsgcHJv
cGVydHkpOwotICAgIGV2YWxBbmRMb2cocHJvcGVydHkgKyAiID0gIiArIHZhbHVlKTsKLSAgICBu
ZXdWYWx1ZSA9IGV2YWwocHJvcGVydHkpOwotICAgIGlmIChvbGRWYWx1ZSA9PSBuZXdWYWx1ZSkg
ewotICAgICAgICB0ZXN0UGFzc2VkKHByb3BlcnR5ICsgIiBpcyBzdGlsbCAiICsgb2xkVmFsdWUp
OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHRlc3RGYWlsZWQocHJvcGVydHkgKyAiIHZhbHVlIHdh
cyBjaGFuZ2VkIik7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVW
ZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9ICJmb28iOwotICAgIGRlc2NyaXB0aW9uID0g
Ik15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
b3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5T
dWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
fQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgi
cmVxdWVzdC5yZXN1bHQiLCAiSW5maW5pdHkiKTsKLSAgICBzZXRSZWFkb25seVByb3BlcnR5KCJy
ZXF1ZXN0LmVycm9yQ29kZSIsICI2NjYiKTsKLSAgICBzZXRSZWFkb25seVByb3BlcnR5KCJyZXF1
ZXN0LnNvdXJjZSIsICJ0aGlzIik7Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgicmVxdWVzdC50
cmFuc2FjdGlvbiIsICJ0aGlzIik7Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgicmVxdWVzdC5y
ZWFkeVN0YXRlIiwgIjY2NiIpOwotCi0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKLSAgICBzZXRSZWFkb25seVByb3BlcnR5KCJkYi5uYW1lIiwgIidiYXIn
Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24o
JzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RT
dG9yZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0K
LQotZnVuY3Rpb24gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSgpCi17Ci0gICAgdHJhbnNh
Y3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7
Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgidHJhbnNhY3Rpb24ubW9kZSIsICI2NjYiKTsKLSAg
ICBzZXRSZWFkb25seVByb3BlcnR5KCJ0cmFuc2FjdGlvbi5kYiIsICJ0aGlzIik7Ci0KLSAgICBk
ZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nKTsiKTsKLQotICAgIHNl
dFJlYWRvbmx5UHJvcGVydHkoIm9iamVjdFN0b3JlLm5hbWUiLCAiJ2JhciciKTsKLSAgICBzZXRS
ZWFkb25seVByb3BlcnR5KCJvYmplY3RTdG9yZS5rZXlQYXRoIiwgIidiYXInIik7Ci0vKiBmYWls
cywgc3BsaXQgaW50byBzZXBhcmF0ZSB0ZXN0Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgib2Jq
ZWN0U3RvcmUuaW5kZXhOYW1lcyIsICJbJ2JhciddIik7Ci0qLwotLyogZmFpbHMsIHNwbGl0IGlu
dG8gc2VwYXJhdGUgdGVzdAotICAgIHNldFJlYWRvbmx5UHJvcGVydHkoIm9iamVjdFN0b3JlLnRy
YW5zYWN0aW9uIiwgInRoaXMiKTsKLSovCi0KLSAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJyZXN1
bHQgPSBvYmplY3RTdG9yZS5hZGQoe30sICdmaXJzdCcpOyIpOwotICAgIHJlc3VsdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGFkZFN1
Y2Nlc3M7Ci19Ci0KLWZ1bmN0aW9uIGFkZFN1Y2Nlc3MoKQotewotICAgIHJlc3VsdCA9IGV2YWxB
bmRMb2coInJlc3VsdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsKLSAgICByZXN1bHQu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlc3VsdC5vbnN1Y2Nlc3Mg
PSBjaGVja0N1cnNvcjsKLX0KLQotZnVuY3Rpb24gY2hlY2tDdXJzb3IoKQotewotICAgIGN1cnNv
ciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgaWYg
KGN1cnNvcikgewotICAgICAgICBzZXRSZWFkb25seVByb3BlcnR5KCJjdXJzb3Iuc291cmNlIiwg
InRoaXMiKTsKLSAgICAgICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgiY3Vyc29yLmRpcmVjdGlvbiIs
ICI2NjYiKTsKLSAgICAgICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgiY3Vyc29yLmtleSIsICJJbmZp
bml0eSIpOwotICAgICAgICBzZXRSZWFkb25seVByb3BlcnR5KCJjdXJzb3IucHJpbWFyeUtleSIs
ICJJbmZpbml0eSIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoImN1cnNvciBp
cyBudWxsIik7Ci0gICAgfQotCi0gICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IG9iamVj
dFN0b3JlLmNyZWF0ZUluZGV4KCdmaXJzdCcsICdmaXJzdCcpOyIpOwotICAgIHNldFJlYWRvbmx5
UHJvcGVydHkoImluZGV4Lm5hbWUiLCAiJ2JhciciKTsKLSAgICBzZXRSZWFkb25seVByb3BlcnR5
KCJpbmRleC5vYmplY3RTdG9yZSIsICJ0aGlzIik7Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgi
aW5kZXgua2V5UGF0aCIsICInYmFyJyIpOwotICAgIHNldFJlYWRvbmx5UHJvcGVydHkoImluZGV4
LnVuaXF1ZSIsICJ0cnVlIik7Ci0KLSAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLm9ubHkoImZp
cnN0Iik7Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgia2V5UmFuZ2UubG93ZXIiLCAiSW5maW5p
dHkiKTsKLSAgICBzZXRSZWFkb25seVByb3BlcnR5KCJrZXlSYW5nZS51cHBlciIsICJJbmZpbml0
eSIpOwotICAgIHNldFJlYWRvbmx5UHJvcGVydHkoImtleVJhbmdlLmxvd2VyT3BlbiIsICJ0cnVl
Iik7Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgia2V5UmFuZ2UudXBwZXJPcGVuIiwgInRydWUi
KTsKLQotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JlYWRvbmx5LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3Jj
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9i
b2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVxdWVzdC1ldmVudC1wcm9wYWdhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVxdWVzdC1ldmVudC1wcm9wYWdhdGlvbi5odG1sCmluZGV4IGY5MWQ4ZWQ0MWNjZDU0
M2ZjNDM0ZTBlNWY5OGNmYmFhZGQzMTRlZTcuLmIxMTExYmQyYzM2YzQ2Y2U0M2IxYTg5YjhkOTk4
MDZiMTA1ODY3MDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
cXVlc3QtZXZlbnQtcHJvcGFnYXRpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXF1ZXN0LWV2ZW50LXByb3BhZ2F0aW9uLmh0bWwKQEAgLTQsMjczICs0LDcgQEAK
IDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxi
b2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgZXZlbnQgcHJvcG9nYXRpb24gb24g
SURCUmVxdWVzdC4iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJl
Zml4ZXMoKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3JlcXVl
c3QtZXZlbnQtcHJvcGFnYXRpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVy
c2lvbjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0K
LQotZnVuY3Rpb24gc2V0VmVyc2lvbigpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRW
ZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVF
eGlzdGluZzsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LX0KLQotZnVuY3Rpb24gZGVsZXRlRXhpc3RpbmcoKQotewotICAgIGRlYnVnKCJzZXRWZXJzaW9u
U3VjY2VzcygpOiIpOwotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0g
ICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIGV2YWxBbmRM
b2coInRyYW5zLm9uY29tcGxldGUgPSBzdGFydFRlc3QiKTsKLQotICAgIGRlbGV0ZUFsbE9iamVj
dFN0b3JlcyhkYik7Ci0KLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAna2V5JykiKTsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc3Rh
cnRUZXN0KCkKLXsKLSAgICBkZWJ1ZygiVmVyaWZ5IHRoYXQgaGFuZGxlciBmaXJlcyBhbmQgdGhh
dCBub3QgcHJldmVudGluZyBkZWZhdWx0IHdpbGwgcmVzdWx0IGluIGFuIGFib3J0Iik7Ci0gICAg
dHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10s
IElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMub25h
Ym9ydCA9IHRyYW5zYWN0aW9uQWJvcnRlZCIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29t
cGxldGUgPSB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2coInRy
YW5zLm9uZXJyb3IgPSBhbGxvd0RlZmF1bHQiKTsKLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0
b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAna2V5JykiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7Ci0gICAgaGFu
ZGxlckZpcmVkID0gZmFsc2U7Ci19Ci0KLWZ1bmN0aW9uIGFsbG93RGVmYXVsdCgpCi17Ci0gICAg
dGVzdFBhc3NlZCgiRXZlbnQgaGFuZGxlciBmaXJlZCIpOwotICAgIGRlYnVnKCJEb2luZyBub3Ro
aW5nIHRvIHByZXZlbnQgdGhlIGRlZmF1bHQgYWN0aW9uLi4uIik7Ci0gICAgaGFuZGxlckZpcmVk
ID0gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gdHJhbnNhY3Rpb25BYm9ydGVkKCkKLXsKLSAgICBzaG91
bGRCZVRydWUoImhhbmRsZXJGaXJlZCIpOwotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiVmVy
aWZpbmcgZXJyb3IiKTsKLSAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNh
Y3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICBl
dmFsQW5kTG9nKCJ0cmFucy5vbmFib3J0ID0gdHJhbnNhY3Rpb25BYm9ydGVkMiIpOwotICAgIGV2
YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjayIpOwot
ICAgIGV2YWxBbmRMb2coInRyYW5zLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZXJyb3JDYXB0
dXJlQ2FsbGJhY2ssIHRydWUpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMuYWRkRXZlbnRMaXN0
ZW5lcignZXJyb3InLCBlcnJvckJ1YmJsZUNhbGxiYWNrLCBmYWxzZSkiKTsKLSAgICBldmFsQW5k
TG9nKCJ0cmFucy5hZGRFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgdW5leHBlY3RlZFN1Y2Nlc3ND
YWxsYmFjaywgdHJ1ZSkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5hZGRFdmVudExpc3RlbmVy
KCdzdWNjZXNzJywgdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjaywgZmFsc2UpIik7Ci0gICAgZXZh
bEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBkYkVycm9yQ2FwdHVyZUNhbGxi
YWNrLCB0cnVlKSIpOwotICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9y
JywgZGJFcnJvckJ1YmJsZUNhbGxiYWNrLCBmYWxzZSkiKTsKLSAgICBldmFsQW5kTG9nKCJkYi5h
ZGRFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjaywgdHJ1
ZSkiKTsKLSAgICBldmFsQW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgdW5l
eHBlY3RlZFN1Y2Nlc3NDYWxsYmFjaywgZmFsc2UpIik7Ci0gICAgc3RvcmUgPSBldmFsQW5kTG9n
KCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IGVycm9yRmlyZWRDYWxsYmFjazsKLSAgICBkYkNhcHR1cmVGaXJl
ZCA9IGZhbHNlOwotICAgIGNhcHR1cmVGaXJlZCA9IGZhbHNlOwotICAgIHJlcXVlc3RGaXJlZCA9
IGZhbHNlOwotICAgIGJ1YmJsZUZpcmVkID0gZmFsc2U7Ci0gICAgZGJCdWJibGVGaXJlZCA9IGZh
bHNlOwotfQotCi1mdW5jdGlvbiBkYkVycm9yQ2FwdHVyZUNhbGxiYWNrKCkKLXsKLSAgICBkZWJ1
ZygiIik7Ci0gICAgZGVidWcoIkluIElEQkRhdGFiYXNlIGVycm9yIGNhcHR1cmUiKTsKLSAgICBz
aG91bGRCZUZhbHNlKCJkYkNhcHR1cmVGaXJlZCIpOwotICAgIHNob3VsZEJlRmFsc2UoImNhcHR1
cmVGaXJlZCIpOwotICAgIHNob3VsZEJlRmFsc2UoInJlcXVlc3RGaXJlZCIpOwotICAgIHNob3Vs
ZEJlRmFsc2UoImJ1YmJsZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVGaXJl
ZCIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAicmVxdWVzdCIpOwotICAgIHNob3Vs
ZEJlKCJldmVudC5jdXJyZW50VGFyZ2V0IiwgImRiIik7Ci0gICAgZGJDYXB0dXJlRmlyZWQgPSB0
cnVlOwotfQotCi1mdW5jdGlvbiBlcnJvckNhcHR1cmVDYWxsYmFjaygpCi17Ci0gICAgZGVidWco
IiIpOwotICAgIGRlYnVnKCJJbiBJREJUcmFuc2FjdGlvbiBlcnJvciBjYXB0dXJlIik7Ci0gICAg
c2hvdWxkQmVUcnVlKCJkYkNhcHR1cmVGaXJlZCIpOwotICAgIHNob3VsZEJlRmFsc2UoImNhcHR1
cmVGaXJlZCIpOwotICAgIHNob3VsZEJlRmFsc2UoInJlcXVlc3RGaXJlZCIpOwotICAgIHNob3Vs
ZEJlRmFsc2UoImJ1YmJsZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVGaXJl
ZCIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAicmVxdWVzdCIpOwotICAgIHNob3Vs
ZEJlKCJldmVudC5jdXJyZW50VGFyZ2V0IiwgInRyYW5zIik7Ci0gICAgY2FwdHVyZUZpcmVkID0g
dHJ1ZTsKLX0KLQotZnVuY3Rpb24gZXJyb3JGaXJlZENhbGxiYWNrKCkKLXsKLSAgICBkZWJ1Zygi
Iik7Ci0gICAgZGVidWcoIkluIElEQlJlcXVlc3QgaGFuZGxlciIpOwotICAgIHNob3VsZEJlVHJ1
ZSgiZGJDYXB0dXJlRmlyZWQiKTsKLSAgICBzaG91bGRCZVRydWUoImNhcHR1cmVGaXJlZCIpOwot
ICAgIHNob3VsZEJlRmFsc2UoInJlcXVlc3RGaXJlZCIpOwotICAgIHNob3VsZEJlRmFsc2UoImJ1
YmJsZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVGaXJlZCIpOwotICAgIHNo
b3VsZEJlKCJldmVudC50YXJnZXQiLCAicmVxdWVzdCIpOwotICAgIHNob3VsZEJlKCJldmVudC5j
dXJyZW50VGFyZ2V0IiwgInJlcXVlc3QiKTsKLSAgICByZXF1ZXN0RmlyZWQgPSB0cnVlOwotfQot
Ci1mdW5jdGlvbiBlcnJvckJ1YmJsZUNhbGxiYWNrKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAg
ZGVidWcoIkluIElEQlRyYW5zYWN0aW9uIGVycm9yIGJ1YmJsZSIpOwotICAgIHNob3VsZEJlVHJ1
ZSgiZGJDYXB0dXJlRmlyZWQiKTsKLSAgICBzaG91bGRCZVRydWUoImNhcHR1cmVGaXJlZCIpOwot
ICAgIHNob3VsZEJlVHJ1ZSgicmVxdWVzdEZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiYnVi
YmxlRmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVkIik7Ci0gICAgc2hv
dWxkQmUoImV2ZW50LnRhcmdldCIsICJyZXF1ZXN0Iik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LmN1
cnJlbnRUYXJnZXQiLCAidHJhbnMiKTsKLSAgICBidWJibGVGaXJlZCA9IHRydWU7Ci19Ci0KLWZ1
bmN0aW9uIGRiRXJyb3JCdWJibGVDYWxsYmFjaygpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRl
YnVnKCJJbiBJREJEYXRhYmFzZSBlcnJvciBidWJibGUiKTsKLSAgICBzaG91bGRCZVRydWUoImRi
Q2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJjYXB0dXJlRmlyZWQiKTsKLSAgICBz
aG91bGRCZVRydWUoInJlcXVlc3RGaXJlZCIpOwotICAgIHNob3VsZEJlVHJ1ZSgiYnViYmxlRmly
ZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVkIik7Ci0gICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldCIsICJyZXF1ZXN0Iik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LmN1cnJlbnRU
YXJnZXQiLCAiZGIiKTsKLSAgICBkYkJ1YmJsZUZpcmVkID0gdHJ1ZTsKLX0KLQotZnVuY3Rpb24g
dHJhbnNhY3Rpb25BYm9ydGVkMigpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJUcmFu
c2FjdGlvbiBhYm9ydGVkIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJkYkNhcHR1cmVGaXJlZCIpOwot
ICAgIHNob3VsZEJlVHJ1ZSgiY2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJyZXF1
ZXN0RmlyZWQiKTsKLSAgICBzaG91bGRCZVRydWUoImJ1YmJsZUZpcmVkIik7Ci0gICAgc2hvdWxk
QmVUcnVlKCJkYkJ1YmJsZUZpcmVkIik7Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJWZXJp
ZmluZyBzdWNjZXNzLiIpOwotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFu
c2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAg
IGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSB0cmFuc2FjdGlvbkNvbXBsZXRlIik7Ci0g
ICAgZXZhbEFuZExvZygidHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrIik7
Ci0gICAgZXZhbEFuZExvZygidHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignc3VjY2VzcycsIHN1Y2Nl
c3NDYXB0dXJlQ2FsbGJhY2ssIHRydWUpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMuYWRkRXZl
bnRMaXN0ZW5lcignc3VjY2VzcycsIHN1Y2Nlc3NCdWJibGVDYWxsYmFjaywgZmFsc2UpIik7Ci0g
ICAgZXZhbEFuZExvZygidHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjaywgdHJ1ZSkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5hZGRFdmVudExp
c3RlbmVyKCdlcnJvcicsIHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrLCBmYWxzZSkiKTsKLSAgICBl
dmFsQW5kTG9nKCJkYi5yZW1vdmVFdmVudExpc3RlbmVyKCdlcnJvcicsIGRiRXJyb3JDYXB0dXJl
Q2FsbGJhY2ssIHRydWUpIik7Ci0gICAgZXZhbEFuZExvZygiZGIucmVtb3ZlRXZlbnRMaXN0ZW5l
cignZXJyb3InLCBkYkVycm9yQnViYmxlQ2FsbGJhY2ssIGZhbHNlKSIpOwotICAgIGV2YWxBbmRM
b2coImRiLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3N1Y2Nlc3MnLCB1bmV4cGVjdGVkU3VjY2Vzc0Nh
bGxiYWNrLCB0cnVlKSIpOwotICAgIGV2YWxBbmRMb2coImRiLnJlbW92ZUV2ZW50TGlzdGVuZXIo
J3N1Y2Nlc3MnLCB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrLCBmYWxzZSkiKTsKLSAgICBldmFs
QW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgZGJTdWNjZXNzQ2FwdHVyZUNh
bGxiYWNrLCB0cnVlKSIpOwotICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50TGlzdGVuZXIoJ3N1
Y2Nlc3MnLCBkYlN1Y2Nlc3NCdWJibGVDYWxsYmFjaywgZmFsc2UpIik7Ci0gICAgZXZhbEFuZExv
ZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjaywg
dHJ1ZSkiKTsKLSAgICBldmFsQW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrLCBmYWxzZSkiKTsKLSAgICBzdG9yZSA9IGV2YWxBbmRMb2co
InN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAna2V5MicpIik7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBzdWNjZXNzRmlyZWRDYWxsYmFjazsKLSAgICBkYkNhcHR1cmVGaXJl
ZCA9IGZhbHNlOwotICAgIGNhcHR1cmVGaXJlZCA9IGZhbHNlOwotICAgIHJlcXVlc3RGaXJlZCA9
IGZhbHNlOwotICAgIGJ1YmJsZUZpcmVkID0gZmFsc2U7Ci0gICAgZGJCdWJibGVGaXJlZCA9IGZh
bHNlOwotfQotCi1mdW5jdGlvbiBkYlN1Y2Nlc3NDYXB0dXJlQ2FsbGJhY2soKQotewotICAgIGRl
YnVnKCIiKTsKLSAgICBkZWJ1ZygiSW4gSURCRGF0YWJhc2Ugc3VjY2VzcyBjYXB0dXJlIik7Ci0g
ICAgc2hvdWxkQmVGYWxzZSgiZGJDYXB0dXJlRmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJj
YXB0dXJlRmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJyZXF1ZXN0RmlyZWQiKTsKLSAgICBz
aG91bGRCZUZhbHNlKCJidWJibGVGaXJlZCIpOwotICAgIHNob3VsZEJlRmFsc2UoImRiQnViYmxl
RmlyZWQiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0IiwgInJlcXVlc3QiKTsKLSAgICBz
aG91bGRCZSgiZXZlbnQuY3VycmVudFRhcmdldCIsICJkYiIpOwotICAgIGRiQ2FwdHVyZUZpcmVk
ID0gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gc3VjY2Vzc0NhcHR1cmVDYWxsYmFjaygpCi17Ci0gICAg
ZGVidWcoIiIpOwotICAgIGRlYnVnKCJJbiBJREJUcmFuc2FjdGlvbiBzdWNjZXNzIGNhcHR1cmUi
KTsKLSAgICBzaG91bGRCZVRydWUoImRiQ2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxz
ZSgiY2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgicmVxdWVzdEZpcmVkIik7Ci0g
ICAgc2hvdWxkQmVGYWxzZSgiYnViYmxlRmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJkYkJ1
YmJsZUZpcmVkIik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldCIsICJyZXF1ZXN0Iik7Ci0g
ICAgc2hvdWxkQmUoImV2ZW50LmN1cnJlbnRUYXJnZXQiLCAidHJhbnMiKTsKLSAgICBjYXB0dXJl
RmlyZWQgPSB0cnVlOwotfQotCi1mdW5jdGlvbiBzdWNjZXNzRmlyZWRDYWxsYmFjaygpCi17Ci0g
ICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJJbiBJREJSZXF1ZXN0IGhhbmRsZXIiKTsKLSAgICBz
aG91bGRCZVRydWUoImRiQ2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJjYXB0dXJl
RmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJyZXF1ZXN0RmlyZWQiKTsKLSAgICBzaG91bGRC
ZUZhbHNlKCJidWJibGVGaXJlZCIpOwotICAgIHNob3VsZEJlRmFsc2UoImRiQnViYmxlRmlyZWQi
KTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0IiwgInJlcXVlc3QiKTsKLSAgICBzaG91bGRC
ZSgiZXZlbnQuY3VycmVudFRhcmdldCIsICJyZXF1ZXN0Iik7Ci0gICAgcmVxdWVzdEZpcmVkID0g
dHJ1ZTsKLX0KLQotZnVuY3Rpb24gc3VjY2Vzc0J1YmJsZUNhbGxiYWNrKCkKLXsKLSAgICBkZWJ1
ZygiIik7Ci0gICAgZGVidWcoIkluIElEQlRyYW5zYWN0aW9uIHN1Y2Nlc3MgYnViYmxlIik7Ci0g
ICAgdGVzdEZhaWxlZCgiU3VjY2VzcyBidWJibGUgY2FsbGJhY2sgc2hvdWxkIE5PVCBmaXJlIik7
Ci0gICAgYnViYmxlRmlyZWQgPSB0cnVlOwotfQotCi1mdW5jdGlvbiBkYlN1Y2Nlc3NCdWJibGVD
YWxsYmFjaygpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJJbiBJREJEYXRhYmFzZSBz
dWNjZXNzIGJ1YmJsZSIpOwotICAgIHRlc3RGYWlsZWQoIlN1Y2Nlc3MgYnViYmxlIGNhbGxiYWNr
IHNob3VsZCBOT1QgZmlyZSIpOwotICAgIGRiQnViYmxlRmlyZWQgPSB0cnVlOwotfQotCi1mdW5j
dGlvbiB0cmFuc2FjdGlvbkNvbXBsZXRlKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWco
IlRyYW5zYWN0aW9uIGNvbXBsZXRlZCIpOwotICAgIHNob3VsZEJlVHJ1ZSgiZGJDYXB0dXJlRmly
ZWQiKTsKLSAgICBzaG91bGRCZVRydWUoImNhcHR1cmVGaXJlZCIpOwotICAgIHNob3VsZEJlVHJ1
ZSgicmVxdWVzdEZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiYnViYmxlRmlyZWQiKTsKLSAg
ICBzaG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVkIik7Ci0gICAgZGVidWcoIiIpOwotCi0gICAg
ZmluaXNoSlNUZXN0KCk7Ci0gICAgcmV0dXJuOwotfQotCi10ZXN0KCk7Ci0KLQotPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JlcXVlc3QtZXZlbnQtcHJvcGFnYXRpb24uanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY29uc3RhbnRzLmpzIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2NvbnN0YW50cy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTUy
OWMwYmYxMjNiNmE2Y2RiYWJiY2JiNWJhODExN2FkNDc3YWFjCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2NvbnN0YW50cy5qcwpAQCAt
MCwwICsxLDM5IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0
cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBv
cnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERC
J3MgY29uc3RhbnRzLiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQ
cmVmaXhlcygpOworICAgIHNob3VsZEJlKCJJREJEYXRhYmFzZUV4Y2VwdGlvbi5VTktOT1dOX0VS
UiIsICIxIik7CisgICAgc2hvdWxkQmUoIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PTl9UUkFOU0lF
TlRfRVJSIiwgIjIiKTsKKyAgICBzaG91bGRCZSgiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZP
VU5EX0VSUiIsICIzIik7CisgICAgc2hvdWxkQmUoIklEQkRhdGFiYXNlRXhjZXB0aW9uLkNPTlNU
UkFJTlRfRVJSIiwgIjQiKTsKKyAgICBzaG91bGRCZSgiSURCRGF0YWJhc2VFeGNlcHRpb24uREFU
QV9FUlIiLCAiNSIpOworICAgIHNob3VsZEJlKCJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxM
T1dFRF9FUlIiLCAiNiIpOworICAgIHNob3VsZEJlKCJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFO
U0FDVElPTl9JTkFDVElWRV9FUlIiLCAiNyIpOworICAgIHNob3VsZEJlKCJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5BQk9SVF9FUlIiLCAiOCIpOworICAgIHNob3VsZEJlKCJJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5SRUFEX09OTFlfRVJSIiwgIjkiKTsKKyAgICBzaG91bGRCZSgiSURCRGF0YWJhc2VFeGNl
cHRpb24uVElNRU9VVF9FUlIiLCAiMTAiKTsKKyAgICBzaG91bGRCZSgiSURCRGF0YWJhc2VFeGNl
cHRpb24uUVVPVEFfRVJSIiwgIjExIik7CisgICAgc2hvdWxkQmUoIklEQkRhdGFiYXNlRXhjZXB0
aW9uLlZFUl9FUlIiLCAiMTIiKTsKKworICAgIHNob3VsZEJlKCJJREJSZXF1ZXN0LkxPQURJTkci
LCAiMSIpOworICAgIHNob3VsZEJlKCJJREJSZXF1ZXN0LkRPTkUiLCAiMiIpOworCisgICAgc2hv
dWxkQmUoIklEQkN1cnNvci5ORVhUIiwgIjAiKTsKKyAgICBzaG91bGRCZSgiSURCQ3Vyc29yLk5F
WFRfTk9fRFVQTElDQVRFIiwgIjEiKTsKKyAgICBzaG91bGRCZSgiSURCQ3Vyc29yLlBSRVYiLCAi
MiIpOworICAgIHNob3VsZEJlKCJJREJDdXJzb3IuUFJFVl9OT19EVVBMSUNBVEUiLCAiMyIpOwor
CisgICAgc2hvdWxkQmUoIklEQlRyYW5zYWN0aW9uLlJFQURfT05MWSIsICIwIik7CisgICAgc2hv
dWxkQmUoIklEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUiLCAiMSIpOworICAgIHNob3VsZEJlKCJJ
REJUcmFuc2FjdGlvbi5WRVJTSU9OX0NIQU5HRSIsICIyIik7Cit9CisKK3Rlc3QoKTsKKworZmlu
aXNoSlNUZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2NyZWF0ZS1hbmQtcmVtb3ZlLW9i
amVjdC1zdG9yZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9j
cmVhdGUtYW5kLXJlbW92ZS1vYmplY3Qtc3RvcmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjUwOTI5NDhjMGRi
MTkzNjU3ODljOGRjZjkzMmMwYzJkODI5M2VkOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jcmVhdGUtYW5kLXJlbW92ZS1vYmplY3Qt
c3RvcmUuanMKQEAgLTAsMCArMSw2NiBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAg
IGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Jyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJU
ZXN0IEluZGV4ZWREQidzIGNyZWF0ZSBhbmQgcmVtb3ZlT2JqZWN0U3RvcmUiKTsKKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2NyZWF0ZS1hbmQtcmVtb3ZlLW9iamVjdC1zdG9y
ZScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1
Y2Nlc3MoKQoreworICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOworICAgIHNlbGYuZGIgPSBl
dmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICB0ZXN0Q3JlYXRlQW5k
UmVtb3ZlKCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlc3VsdCA9IGRiLnNldFZlcnNp
b24oJ3ZlcnNpb24gMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNl
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRl
c3RDcmVhdGVBbmRSZW1vdmUoKTsKK30KKworZnVuY3Rpb24gdGVzdENyZWF0ZUFuZFJlbW92ZSgp
Cit7CisgICAgZGVidWcoIlRyeWluZyBjcmVhdGUiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCdkYi5jcmVhdGVPYmplY3RTdG9yZSgic29tZSBvcyIpJywgIklEQkRhdGFiYXNlRXhjZXB0
aW9uLk5PVF9BTExPV0VEX0VSUiIpOworICAgIGRlYnVnKCJUcnlpbmcgcmVtb3ZlIik7CisgICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbignZGIuZGVsZXRlT2JqZWN0U3RvcmUoInNvbWUgb3MiKScs
ICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9FUlIiKTsKK30KKworZnVuY3Rpb24g
Y2xlYW5EYXRhYmFzZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAg
IG9zID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3RtcCcpIik7CisgICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3RtcCcpIiwgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLkNPTlNUUkFJTlRfRVJSIik7CisgICAgZXZlbnQudGFyZ2V0LnJlc3Vs
dC5vbmNvbXBsZXRlID0gc2V0VmVyc2lvbkNvbXBsZXRlOworfQorCitmdW5jdGlvbiBzZXRWZXJz
aW9uQ29tcGxldGUoKQoreworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFu
c2FjdGlvbihbJ3RtcCddKSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmpl
Y3RTdG9yZSgndG1wJykuZ2V0KDApIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0cnlPbmNl
TW9yZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30K
KworZnVuY3Rpb24gdHJ5T25jZU1vcmUoKQoreworICAgIHNob3VsZEJlVW5kZWZpbmVkKCJldmVu
dC50YXJnZXQucmVzdWx0Iik7CisKKyAgICB0ZXN0Q3JlYXRlQW5kUmVtb3ZlKCk7CisKKyAgICBk
ZWJ1ZygiVHJ5aW5nIGNyZWF0ZSB3aXRoIHN0b3JlIHRoYXQgYWxyZWFkeSBleGlzdHMiKTsKKyAg
ICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgndG1wJykiLCAi
SURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0FMTE9XRURfRVJSIik7CisgICAgZGVidWcoIlRyeWlu
ZyByZW1vdmUgd2l0aCBzdG9yZSB0aGF0IGFscmVhZHkgZXhpc3RzIik7CisgICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigiZGIuZGVsZXRlT2JqZWN0U3RvcmUoJ3RtcCcpIiwgIklEQkRhdGFiYXNl
RXhjZXB0aW9uLk5PVF9BTExPV0VEX0VSUiIpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisK
K3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3JlYXRlLW9iamVjdC1zdG9yZS1vcHRp
b25zLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2NyZWF0ZS1v
YmplY3Qtc3RvcmUtb3B0aW9ucy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOGM2YTRjMGUzZWYyMGM0NjdjODc1
YWNiOTdiZjE1N2FmMTJkMTc0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL2NyZWF0ZS1vYmplY3Qtc3RvcmUtb3B0aW9ucy5qcwpAQCAt
MCwwICsxLDgxIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0
cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBv
cnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERC
J3MgY3JlYXRlT2JqZWN0U3RvcmUncyB2YXJpb3VzIG9wdGlvbnMiKTsKKworZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJpbmRleGVkREIub3BlbignY3JlYXRlLW9iamVjdC1zdG9yZS1vcHRpb25zJywgJ2Rl
c2NyaXB0aW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0
VmVyc2lvbigndmVyc2lvbiAxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0
YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jl
cyhkYik7CisKKyAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnYScsIHtrZXlQ
YXRoOiAnYSd9KSIpOworICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdiJyki
KTsKKworICAgIGRlYnVnKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnYycsIHthdXRvSW5jcmVtZW50
OiB0cnVlfSk7Iik7CisgICAgZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2MnLCB7YXV0b0luY3JlbWVu
dDogdHJ1ZX0pOworICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25jb21wbGV0ZSA9IHNldFZlcnNp
b25Db21wbGV0ZTsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbkNvbXBsZXRlKCkKK3sKKyAgICB0
cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydhJywgJ2InXSwgSURC
VHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICBzaG91bGRCZSgidHJhbnMubW9kZSIsICJJ
REJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFIik7CisKKyAgICByZXEgPSBldmFsQW5kTG9nKCJ0cmFu
cy5vYmplY3RTdG9yZSgnYScpLnB1dCh7J2EnOiAwfSkiKTsKKyAgICByZXEub25zdWNjZXNzID0g
cHV0QjsKKyAgICByZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworCisgICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbkNsYXNzKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnZCcsICdi
YXInKTsiLCAiVHlwZUVycm9yIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbkNsYXNzKCJk
Yi5jcmVhdGVPYmplY3RTdG9yZSgnZScsIGZhbHNlKTsiLCAiVHlwZUVycm9yIik7Cit9CisKK2Z1
bmN0aW9uIHB1dEIoKQoreworICAgIHJlcSA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3Jl
KCdiJykucHV0KHsnYSc6IDB9LCAwKSIpOyAgLy8gT09QUworICAgIHJlcS5vbnN1Y2Nlc3MgPSBn
ZXRBOworICAgIHJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIGdldEEoKQoreworICAgIHJlcSA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3Jl
KCdhJykuZ2V0KDApIik7CisgICAgcmVxLm9uc3VjY2VzcyA9IGdldEI7CisgICAgcmVxLm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZ2V0QigpCit7Cisg
ICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQuYSIsICJ7YTogMH0iKTsKKworICAgIHJl
cSA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdiJykuZ2V0KDApIik7CisgICAgcmVx
Lm9uc3VjY2VzcyA9IGNoZWNrQjsKKyAgICByZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBjaGVja0IoKQoreworICAgIHNob3VsZEJlKCJldmVudC50
YXJnZXQucmVzdWx0LmEiLCAie2E6IDB9Iik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwor
dGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jcmVhdGVPYmplY3RTdG9yZS1uYW1lLWFy
Z3VtZW50LXJlcXVpcmVkLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL2NyZWF0ZU9iamVjdFN0b3JlLW5hbWUtYXJndW1lbnQtcmVxdWlyZWQuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDk1OWZhNzIwZTJjNDNjMGJkYThhNmU1ODkyNjY2NTgyNzg4NDMwNgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jcmVhdGVPYmpl
Y3RTdG9yZS1uYW1lLWFyZ3VtZW50LXJlcXVpcmVkLmpzCkBAIC0wLDAgKzEsMzYgQEAKK2lmICh0
aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5q
cycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgY3JlYXRlT2JqZWN0U3RvcmUg
bmFtZSBhcmd1bWVudCBpcyByZXF1aXJlZCIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBy
ZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5h
bWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAg
ICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNy
ZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jl
cyhkYik7CisKKyAgICBzaG91bGRUaHJvdygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoKTsiKTsKKyAg
ICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9j
cmVhdGVPYmplY3RTdG9yZS1udWxsLW5hbWUuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvY3JlYXRlT2JqZWN0U3RvcmUtbnVsbC1uYW1lLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmUxNTVhNTAzOGQ2ZTAwYTk2ZjJmODViZGZjZDhiNjM3YWMyNWI5ZTkKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3JlYXRlT2JqZWN0
U3RvcmUtbnVsbC1uYW1lLmpzCkBAIC0wLDAgKzEsMzcgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlw
dHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNj
cmlwdGlvbigiVGVzdCBJbmRleGVkREIgY3JlYXRlT2JqZWN0U3RvcmUgbnVsbCBoYW5kbGluZyIp
OworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisg
ICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkg
VGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVu
KG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nl
c3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFu
ZFBvcHVsYXRlT2JqZWN0U3RvcmU7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUo
KQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBvYmplY3RTdG9yZSA9
IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKG51bGwpOyIpOworICAgIHNob3VsZEJl
KCJvYmplY3RTdG9yZS5uYW1lIiwgIidudWxsJyIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQor
Cit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1jb250aW51ZS5qcyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItY29udGludWUuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODRiMGVmOGE3OGZmNDdlYzYzZjA0NThjM2RlNjAwMmRjZTU1Mzk0ZAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9j
dXJzb3ItY29udGludWUuanMKQEAgLTAsMCArMSwyNzAgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlw
dHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNj
cmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBJREJDdXJzb3IuY29udGludWUoKSB3aXRoIGEga2V5
IHBhcmFtZXRlci4iKTsKKwordmFyIGRhdGUgPSBuZXcgRGF0ZSgpOworCisvLyBJbiBvcmRlciBv
ZiBob3cgaXQgc2hvdWxkIGJlIHNvcnRlZCBieSBJbmRleGVkREIuCitzZWxmLnRlc3REYXRhID0g
WworICAgIDAsCisgICAgMSwKKyAgICAxLAorICAgIDMuMTQxNTksCisgICAgMy4xNDE1OSwKKyAg
ICAxMCwKKyAgICAxMSwKKyAgICAxMiwKKyAgICAxMywKKyAgICBkYXRlLAorICAgIGRhdGUsCisg
ICAgbmV3IERhdGUoZGF0ZS52YWx1ZU9mKCkgKyAxMDAwKSwKKyAgICAiQSBiaWcgc3RyaW5nIiwK
KyAgICAiQSBiaWcgc3RyaW5nIiwKKyAgICAiQSBiaXQxIiwKKyAgICAiQSBiaXQyIiwKKyAgICAi
QSBiaXQzIiwKKyAgICAidGhlIEJJR0dFU1Qgc3RyaW5nIgorXTsKKworZnVuY3Rpb24gdGVzdCgp
Cit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBvcGVuRGF0YWJhc2UoKTsKK30K
KworZnVuY3Rpb24gb3BlbkRhdGFiYXNlKCkKK3sKKyAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIub3BlbignY3Vyc29yLWNvbnRpbnVlJykiKTsKKyAgICByZXN1bHQub25zdWNjZXNz
ID0gc2V0VmVyc2lvbjsKKyAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uKCkKK3sKKyAgICBzZWxmLmRiID0gZXZhbEFu
ZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXN1bHQgPSBldmFsQW5k
TG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgcmVzdWx0Lm9uc3VjY2Vz
cyA9IGRlbGV0ZUV4aXN0aW5nOworICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKK3sKKyAgICBzZWxmLnRy
YW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hv
dWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVj
dGVkQWJvcnRDYWxsYmFjazsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAg
ICBzZWxmLm9iamVjdFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Nv
bWVPYmplY3RTdG9yZScpIik7CisgICAgc2VsZi5pbmRleE9iamVjdCA9IGV2YWxBbmRMb2coIm9i
amVjdFN0b3JlLmNyZWF0ZUluZGV4KCdzb21lSW5kZXgnLCAneCcpIik7CisgICAgc2VsZi5uZXh0
VG9BZGQgPSAwOworICAgIGFkZERhdGEoKTsKK30KKworZnVuY3Rpb24gYWRkRGF0YSgpCit7Cisg
ICAgcmVzdWx0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKHsneCc6IHRlc3REYXRhW25l
eHRUb0FkZF19LCBuZXh0VG9BZGQpIik7CisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9ICsrc2VsZi5u
ZXh0VG9BZGQgPCB0ZXN0RGF0YS5sZW5ndGggPyBhZGREYXRhIDogYXNjZW5kaW5nVGVzdDsKKyAg
ICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biBhc2NlbmRpbmdUZXN0KCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgdmFyIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJpbmRleE9iamVjdC5vcGVuS2V5Q3Vyc29yKG51bGwsIElEQkN1cnNvci5ORVhU
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYXNjZW5kaW5nQ2FsbGJhY2s7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgc2VsZi5zdGFnZSA9
IDA7Cit9CisKK2Z1bmN0aW9uIGFzY2VuZGluZ0NhbGxiYWNrKCkKKworeworICAgIGlmIChzZWxm
LnN0YWdlID09IDApIHsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJp
bWFyeUtleSIsICIwIik7CisgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQu
Y29udGludWUoMy4xNDE1OSkiKTsKKyAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gMSkgewor
ICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjMiKTsK
KyAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7Cisg
ICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDIpIHsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50
LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICI0Iik7CisgICAgICAgIGV2YWxBbmRMb2coImV2
ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOworICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFn
ZSA9PSAzKSB7CisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlL
ZXkiLCAiNSIpOworICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRp
bnVlKDEyKSIpOworICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSA0KSB7CisgICAgICAgIHNo
b3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiNyIpOworICAgICAgICBl
dmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKGRhdGUpIik7CisgICAgfSBl
bHNlIGlmIChzZWxmLnN0YWdlID09IDUpIHsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdl
dC5yZXN1bHQucHJpbWFyeUtleSIsICI5Iik7CisgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRh
cmdldC5yZXN1bHQuY29udGludWUoKSIpOworICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSA2
KSB7CisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAi
MTAiKTsKKyAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgp
Iik7CisgICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDcpIHsKKyAgICAgICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIxMSIpOworICAgICAgICBldmFsQW5k
TG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCdBIGJpdDEnKSIpOworICAgIH0gZWxz
ZSBpZiAoc2VsZi5zdGFnZSA9PSA4KSB7CisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQu
cmVzdWx0LnByaW1hcnlLZXkiLCAiMTQiKTsKKyAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFy
Z2V0LnJlc3VsdC5jb250aW51ZSgnQSBiaXQzJykiKTsKKyAgICB9IGVsc2UgaWYgKHNlbGYuc3Rh
Z2UgPT0gOSkgeworICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5
S2V5IiwgIjE2Iik7CisgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29u
dGludWUoJ3RoZSBCSUdHRVNUIHN0cmluZycpIik7CisgICAgfSBlbHNlIGlmIChzZWxmLnN0YWdl
ID09IDEwKSB7CisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlL
ZXkiLCAiMTciKTsKKyAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250
aW51ZSgpIik7CisgICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDExKSB7CisgICAgICAgIHNo
b3VsZEJlTnVsbCgiZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgICAgICBkZXNjZW5kaW5nVGVz
dCgpOworICAgICAgICByZXR1cm47CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZCgi
SWxsZWdhbCBzdGFnZS4iKTsKKyAgICB9CisgICAgc2VsZi5zdGFnZSsrOworfQorCitmdW5jdGlv
biBkZXNjZW5kaW5nVGVzdCgpCit7CisgICAgZGVidWcoIiIpOworICAgIHZhciByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhPYmplY3Qub3BlbktleUN1cnNvcihudWxsLCBJREJDdXJzb3IuUFJF
VikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlc2NlbmRpbmdDYWxsYmFjazsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBzZWxmLnN0YWdl
ID0gMDsKK30KKworZnVuY3Rpb24gZGVzY2VuZGluZ0NhbGxiYWNrKCkKK3sKKyAgICBpZiAoc2Vs
Zi5zdGFnZSA9PSAwKSB7CisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnBy
aW1hcnlLZXkiLCAiMTciKTsKKyAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3Vs
dC5jb250aW51ZSgnQSBiaXQyJykiKTsKKyAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gMSkg
eworICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjE1
Iik7CisgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIp
OworICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSAyKSB7CisgICAgICAgIHNob3VsZEJlKCJl
dmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMTQiKTsKKyAgICAgICAgZXZhbEFuZExv
ZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZShkYXRlKSIpOworICAgIH0gZWxzZSBpZiAo
c2VsZi5zdGFnZSA9PSAzKSB7CisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0
LnByaW1hcnlLZXkiLCAiMTAiKTsKKyAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJl
c3VsdC5jb250aW51ZSgpIik7CisgICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDQpIHsKKyAg
ICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICI5Iik7Cisg
ICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoMSkiKTsKKyAg
ICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gNSkgeworICAgICAgICBzaG91bGRCZSgiZXZlbnQu
dGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjIiKTsKKyAgICAgICAgZXZhbEFuZExvZygiZXZl
bnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7CisgICAgfSBlbHNlIGlmIChzZWxmLnN0YWdl
ID09IDYpIHsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtl
eSIsICIxIik7CisgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGlu
dWUoKSIpOworICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSA3KSB7CisgICAgICAgIHNob3Vs
ZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMCIpOworICAgICAgICBldmFs
QW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKKyAgICB9IGVsc2UgaWYg
KHNlbGYuc3RhZ2UgPT0gOCkgeworICAgICAgICBzaG91bGRCZU51bGwoImV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKKyAgICAgICAgYXNjZW5kaW5nRXJyb3JUZXN0TGVzc1RoYW4oKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQoIklsbGVnYWwgc3RhZ2Uu
Iik7CisgICAgfQorICAgIHNlbGYuc3RhZ2UrKzsKK30KKworZnVuY3Rpb24gYXNjZW5kaW5nRXJy
b3JUZXN0TGVzc1RoYW4oKQoreworICAgIGRlYnVnKCIiKTsKKyAgICB2YXIgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImluZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3IobnVsbCwgSURCQ3Vyc29yLk5FWFQp
Iik7CisgICAgc2VsZi5zdGFnZSA9IDA7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAg
ICAgICAgaWYgKHNlbGYuc3RhZ2UgPT09IDApIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJldmVu
dC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMCIpOworICAgICAgICAgICAgZXZhbEFuZExv
ZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgzLjE0MTU5KSIpOworICAgICAgICB9IGVs
c2UgaWYgKHNlbGYuc3RhZ2UgPT0gMSkgeworICAgICAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRh
cmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIzIik7CisgICAgICAgICAgICBldmFsQW5kRXhwZWN0
RXhjZXB0aW9uKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKDEpIiwgIklEQkRhdGFiYXNl
RXhjZXB0aW9uLkRBVEFfRVJSIik7CisgICAgICAgICAgICBhc2NlbmRpbmdFcnJvclRlc3RFcXVh
bCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICB0
ZXN0RmFpbGVkKCJJbGxlZ2FsIHN0YWdlLiIpOworICAgICAgICB9CisgICAgICAgIHNlbGYuc3Rh
Z2UrKzsKKyAgICB9OworfQorCitmdW5jdGlvbiBhc2NlbmRpbmdFcnJvclRlc3RFcXVhbCgpCit7
CisgICAgZGVidWcoIiIpOworICAgIHZhciByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhPYmpl
Y3Qub3BlbktleUN1cnNvcihudWxsLCBJREJDdXJzb3IuTkVYVCkiKTsKKyAgICBzZWxmLnN0YWdl
ID0gMDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAoc2VsZi5zdGFn
ZSA9PT0gMCkgeworICAgICAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJp
bWFyeUtleSIsICIwIik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVz
dWx0LmNvbnRpbnVlKDMuMTQxNTkpIik7CisgICAgICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9
PSAxKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5
S2V5IiwgIjMiKTsKKyAgICAgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImV2ZW50LnRh
cmdldC5yZXN1bHQuY29udGludWUoMy4xNDE1OSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFU
QV9FUlIiKTsKKyAgICAgICAgICAgIGRlc2NlbmRpbmdFcnJvclRlc3RHcmVhdGVyVGhhbigpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICB0ZXN0RmFp
bGVkKCJJbGxlZ2FsIHN0YWdlLiIpOworICAgICAgICB9CisgICAgICAgIHNlbGYuc3RhZ2UrKzsK
KyAgICB9OworfQorCitmdW5jdGlvbiBkZXNjZW5kaW5nRXJyb3JUZXN0R3JlYXRlclRoYW4oKQor
eworICAgIGRlYnVnKCIiKTsKKyAgICB2YXIgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2Jq
ZWN0Lm9wZW5LZXlDdXJzb3IobnVsbCwgSURCQ3Vyc29yLlBSRVYpIik7CisgICAgc2VsZi5zdGFn
ZSA9IDA7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKHNlbGYuc3Rh
Z2UgPT0gMCkgeworICAgICAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJp
bWFyeUtleSIsICIxNyIpOworICAgICAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJl
c3VsdC5jb250aW51ZSgnQSBiaXQyJykiKTsKKyAgICAgICAgfSBlbHNlIGlmIChzZWxmLnN0YWdl
ID09IDEpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1h
cnlLZXkiLCAiMTUiKTsKKyAgICAgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImV2ZW50
LnRhcmdldC5yZXN1bHQuY29udGludWUoJ0EgYml0MycpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9u
LkRBVEFfRVJSIik7CisgICAgICAgICAgICBkZXNjZW5kaW5nRXJyb3JUZXN0RXF1YWwoKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgdGVzdEZhaWxl
ZCgiSWxsZWdhbCBzdGFnZS4iKTsKKyAgICAgICAgfQorICAgICAgICBzZWxmLnN0YWdlKys7Cisg
ICAgfTsKK30KKworZnVuY3Rpb24gZGVzY2VuZGluZ0Vycm9yVGVzdEVxdWFsKCkKK3sKKyAgICBk
ZWJ1ZygiIik7CisgICAgdmFyIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5vcGVu
S2V5Q3Vyc29yKG51bGwsIElEQkN1cnNvci5QUkVWKSIpOworICAgIHNlbGYuc3RhZ2UgPSAwOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGlmIChzZWxmLnN0YWdlID09IDAp
IHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXki
LCAiMTciKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29u
dGludWUoJ0EgYml0MicpIik7CisgICAgICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSAxKSB7
CisgICAgICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5Iiwg
IjE1Iik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVz
dWx0Iik7CisgICAgICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJldmVudC50YXJnZXQu
cmVzdWx0LmNvbnRpbnVlKCdBIGJpdDInKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VS
UiIpOworICAgICAgICAgICAgc2VsZi50cmFucy5vbmNvbXBsZXRlID0gb25UcmFuc2FjdGlvbkNv
bXBsZXRlOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJJbGxlZ2FsIHN0YWdlLiIpOworICAgICAgICB9CisgICAgICAgIHNlbGYu
c3RhZ2UrKzsKKyAgICB9OworfQorCitmdW5jdGlvbiBvblRyYW5zYWN0aW9uQ29tcGxldGUoKQor
eworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImN1cnNvci5jb250aW51ZSgpIiwgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOworICAgIGZpbmlzaEpT
VGVzdCgpOworfQorCit0ZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWRlbGV0ZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItZGVsZXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRiNmUyYjkz
NTQ4YTNhNDlkYjU0YjBkNzIwMDE1ODg0YzEyZWIzMzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWRlbGV0ZS5qcwpAQCAt
MCwwICsxLDEwNSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlw
dHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1w
b3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWRE
QidzIG9wZW5DdXJzb3IuIik7CisKK3Rlc3QoKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAg
cmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhl
ZERCLm9wZW4oJ2N1cnNvci1kZWxldGUnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3Bl
blN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICB2YXIgZGIgPSBldmFsQW5kTG9n
KCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBzZXRWZXJzaW9uU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQoreworICAgIGRl
YnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOworICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9n
KCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5z
ICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNr
OworICAgIHRyYW5zLm9uY29tcGxldGUgPSBvcGVuQ3Vyc29yOworCisgICAgZGVsZXRlQWxsT2Jq
ZWN0U3RvcmVzKGRiKTsKKworICAgIHZhciBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVj
dFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Rlc3QnKSIpOworICAgIGV2YWxBbmRMb2co
Im9iamVjdFN0b3JlLmFkZCgnbXlWYWx1ZTEnLCAnbXlLZXkxJykiKTsKKyAgICBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZS5hZGQoJ215VmFsdWUyJywgJ215S2V5MicpIik7CisgICAgZXZhbEFuZExv
Zygib2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlMycsICdteUtleTMnKSIpOworICAgIGV2YWxBbmRM
b2coIm9iamVjdFN0b3JlLmFkZCgnbXlWYWx1ZTQnLCAnbXlLZXk0JykiKTsKK30KKworZnVuY3Rp
b24gb3BlbkN1cnNvcigpCit7CisgICAgZGVidWcoIm9wZW5DdXJzb3IxIik7CisgICAgZXZhbEFu
ZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3Rlc3QnXSwgSURCVHJhbnNhY3Rpb24uUkVB
RF9XUklURSkiKTsKKyAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQoIm15S2V5
MSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgndGVzdCcp
Lm9wZW5DdXJzb3Ioe3JhbmdlOiBrZXlSYW5nZX0pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBjdXJzb3JTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworICAgIGNvdW50ZXIgPSAxOworfQorCitmdW5jdGlvbiBjdXJzb3JTdWNjZXNzKCkK
K3sKKyAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBudWxsKSB7CisgICAgICAgIHNob3Vs
ZEJlKCJjb3VudGVyIiwgIjUiKTsKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5z
Lm9iamVjdFN0b3JlKCd0ZXN0Jykub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKKyAgICAgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3JFbXB0eTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZXZh
bEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5kZWxldGUoKSIpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZSIsICJteVZhbHVlIiArIGNvdW50
ZXIrKyk7CisgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7
Cit9CisKK2Z1bmN0aW9uIGN1cnNvckVtcHR5KCkKK3sKKyAgICBzaG91bGRCZU51bGwoImV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gYWRkT2JqZWN0OworfQor
CitmdW5jdGlvbiBhZGRPYmplY3QoKQoreworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJh
bnNhY3Rpb24oWyd0ZXN0J10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgb2Jq
ZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCd0
ZXN0JykiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCdteVZh
bHVlMScsICdteUtleTEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbkN1cnNvcjI7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIG9wZW5DdXJzb3IyKCkKK3sKKyAgICBkZWJ1Zygib3BlbkN1cnNvcjIiKTsKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZU9iamVjdDsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVsZXRlT2JqZWN0
KCkKK3sKKyAgICBzaG91bGRCZU5vbk51bGwoZXZlbnQudGFyZ2V0LnJlc3VsdCk7CisgICAgZXZh
bEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5kZWxldGUoKSIpOworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJvYmplY3RTdG9yZS5nZXQoJ215S2V5MScpIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSB2ZXJpZnlPYmplY3REZWxldGVkOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiB2ZXJpZnlPYmplY3REZWxldGVkKCkK
K3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ1bmRlZmluZWQiKTsKKyAg
ICBmaW5pc2hKU1Rlc3QoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWluY29u
c2lzdGVuY3kuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vy
c29yLWluY29uc2lzdGVuY3kuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTA2Nzc5ZDdiNWUzZjk5ZGY2YzU4NmVk
YzI3ZTc0M2I5ODBlYTViNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItaW5jb25zaXN0ZW5jeS5qcwpAQCAtMCwwICsxLDg1
IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRz
KCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgY29uc2lzdGVuY3kgb2YgSW5k
ZXhlZERCJ3MgY3Vyc29yIG9iamVjdHMuIik7CisKK3Rlc3QoKTsKKworZnVuY3Rpb24gdGVzdCgp
Cit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiaW5kZXhlZERCLm9wZW4oJ2N1cnNvci1pbmNvbnNpc3RlbmN5JykiKTsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgdmFy
IGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb25TdWNj
ZXNzKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKKyAgICBzZWxmLnRy
YW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hv
dWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVj
dGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gb3BlbkJhc2ljQ3Vyc29y
OworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIHZhciBvYmplY3RTdG9y
ZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2Jhc2lj
U3RvcmUnKSIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnc29tZVZhbHVlMScs
ICdzb21lS2V5MScpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOworICAgIGV2
YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnc29tZVZhbHVlMicsICdzb21lS2V5MicpLm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0
b3JlLmFkZCgnc29tZVZhbHVlMycsICdzb21lS2V5MycpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnc29tZVZhbHVl
NCcsICdzb21lS2V5NCcpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOworCit9
CisKK2Z1bmN0aW9uIG9wZW5CYXNpY0N1cnNvcigpCit7CisgICAgZGVidWcoIm9wZW5CYXNpY0N1
cnNvcigpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ2Jhc2lj
U3RvcmUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICB0cmFucy5vbmFib3J0
ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHRyYW5z
YWN0aW9uQ29tcGxldGU7CisKKyAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQo
InNvbWVLZXkxIik7CisgICAgc2VsZi5vYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coInRyYW5zLm9i
amVjdFN0b3JlKCdiYXNpY1N0b3JlJykiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib2Jq
ZWN0U3RvcmUub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGNoZWNrQ3Vyc29yOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworICAgIGNvdW50ZXIgPSAxOworfQorCitzdG9yZWRDdXJzb3IgPSBudWxsOworZnVuY3Rp
b24gY2hlY2tDdXJzb3IoKQoreworICAgIGRlYnVnKCIiKQorICAgIGRlYnVnKCJjaGVja0N1cnNv
cigpIik7CisgICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkgeworICAgICAgICBz
aG91bGRCZSgiY291bnRlciIsICI1Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYg
KHN0b3JlZEN1cnNvciA9PSBudWxsKQorICAgICAgc3RvcmVkQ3Vyc29yID0gZXZhbEFuZExvZygi
c3RvcmVkQ3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgc2hvdWxkQmVUcnVl
KCJzdG9yZWRDdXJzb3IgPT09IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoInN0b3JlZEN1cnNvci5rZXkiLCAic29tZUtleSIgKyBjb3VudGVyKTsKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgInNvbWVL
ZXkiICsgY291bnRlcik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzdG9yZWRDdXJzb3Iu
dmFsdWUiLCAic29tZVZhbHVlIiArIGNvdW50ZXIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZSIsICJzb21lVmFsdWUiICsgY291bnRlcik7Cisg
ICAgY291bnRlcisrOworICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGlu
dWUoKSIpOworfQorCitmdW5jdGlvbiB0cmFuc2FjdGlvbkNvbXBsZXRlKCkKK3sKKyAgICBkZWJ1
ZygidHJhbnNhY3Rpb25Db21wbGV0ZSgpIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1pbmRleC1kZWxldGUuanMgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWluZGV4LWRlbGV0ZS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42YmVlZWEyM2ExMGZmODMxNmE0MDU1Mzk5MWQyOWJlNWJjODYyNzBlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1p
bmRleC1kZWxldGUuanMKQEAgLTAsMCArMSwxMDkgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMp
IHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlw
dGlvbigiVGVzdCBJbmRleGVkREIncyBvcGVuQ3Vyc29yLiIpOworCit0ZXN0KCk7CisKK2Z1bmN0
aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdjdXJzb3ItaW5kZXgtZGVsZXRlJykiKTsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7
CisgICAgdmFyIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZl
cnNpb25TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKKyAg
ICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQg
PSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gb3BlbkN1
cnNvcjsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBvYmplY3RTdG9y
ZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Rlc3Qn
KSIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCd0ZXN0SW5kZXgn
LCAneCcpIik7CisKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoe3g6IDF9LCAnbXlL
ZXkxJykiKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoe3g6IDJ9LCAnbXlLZXky
JykiKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoe3g6IDN9LCAnbXlLZXkzJyki
KTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoe3g6IDR9LCAnbXlLZXk0JykiKTsK
K30KKworZnVuY3Rpb24gb3BlbkN1cnNvcigpCit7CisgICAgZGVidWcoIm9wZW5DdXJzb3IxIik7
CisgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3Rlc3QnXSwgSURCVHJh
bnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2Vy
Qm91bmQoMSk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCd0
ZXN0JykuaW5kZXgoJ3Rlc3RJbmRleCcpLm9wZW5DdXJzb3Ioa2V5UmFuZ2UpIik7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3JTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIGNvdW50ZXIgPSAxOworfQorCitmdW5jdGlvbiBj
dXJzb3JTdWNjZXNzKCkKK3sKKyAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBudWxsKSB7
CisgICAgICAgIHNob3VsZEJlKCJjb3VudGVyIiwgIjUiKTsKKyAgICAgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCd0ZXN0JykuaW5kZXgoJ3Rlc3RJbmRleCcpLm9w
ZW5DdXJzb3Ioa2V5UmFuZ2UpIik7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29y
RW1wdHk7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHZhciBkZWxldGVSZXF1ZXN0ID0gZXZhbEFu
ZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5kZWxldGUoKSIpOworICAgIGRlbGV0ZVJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHNob3VsZEJlKCJldmVudC50
YXJnZXQucmVzdWx0LmtleSIsICJjb3VudGVyKysiKTsKKyAgICBldmFsQW5kTG9nKCJldmVudC50
YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKK30KKworZnVuY3Rpb24gY3Vyc29yRW1wdHkoKQor
eworICAgIHNob3VsZEJlTnVsbCgiZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHRyYW5zLm9u
Y29tcGxldGUgPSBhZGRPYmplY3Q7Cit9CisKK2Z1bmN0aW9uIGFkZE9iamVjdCgpCit7CisgICAg
ZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3Rlc3QnXSwgSURCVHJhbnNhY3Rp
b24uUkVBRF9XUklURSkiKTsKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0
b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3Rlc3QnKSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJvYmplY3RTdG9yZS5hZGQoe3g6IDF9LCAnbXlLZXkxJykiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IG9wZW5DdXJzb3IyOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuQ3Vyc29yMigpCit7CisgICAgZGVidWco
Im9wZW5DdXJzb3IyIik7CisgICAgZXZhbEFuZExvZygiaW5kZXggPSBldmVudC50YXJnZXQuc291
cmNlLmluZGV4KCd0ZXN0SW5kZXgnKSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRl
eC5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRl
T2JqZWN0OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBkZWxldGVPYmplY3QoKQoreworICAgIHNob3VsZEJlTm9uTnVsbChldmVu
dC50YXJnZXQucmVzdWx0KTsKKyAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmRl
bGV0ZSgpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4LmdldCgxKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gdmVyaWZ5T2JqZWN0RGVsZXRlZDsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gdmVyaWZ5T2Jq
ZWN0RGVsZXRlZCgpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAidW5k
ZWZpbmVkIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L2N1cnNvci1rZXktb3JkZXIuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvY3Vyc29yLWtleS1vcmRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NWMyMTk5M2ZkNzIwYWFmNzU1
MDc2OTQxMWVlYWJiNTZmNGM0MDY3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1rZXktb3JkZXIuanMKQEAgLTAsMCArMSwy
MjUgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8u
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlw
dHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIga2V5cyBv
cmRlcmluZyBhbmQgcmVhZGJhY2sgZnJvbSBjdXJzb3JzLiIpOworCitmdW5jdGlvbiB0ZXN0KCkK
K3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgcHJlcGFyZURhdGFiYXNlKCk7
Cit9CisKK2Z1bmN0aW9uIHByZXBhcmVEYXRhYmFzZSgpCit7CisgICAgZGVidWcoIiIpOworICAg
IGV2YWxBbmRMb2coIm9wZW5yZXEgPSBpbmRleGVkREIub3BlbignY3Vyc29yLWtleS1vcmRlcicp
Iik7CisgICAgb3BlbnJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAg
b3BlbnJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZXZhbEFuZExvZygiZGIg
PSBvcGVucmVxLnJlc3VsdCIpOworICAgICAgICBldmFsQW5kTG9nKCJ2ZXJyZXEgPSBkYi5zZXRW
ZXJzaW9uKCcxJykiKTsKKyAgICAgICAgdmVycmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKKyAgICAgICAgdmVycmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICAg
ICAgICAgIHZlcnJlcS5yZXN1bHQub25jb21wbGV0ZSA9IHBvcHVsYXRlU3RvcmU7CisgICAgICAg
IH07CisgICAgfTsKK30KKworc2VsZi5rZXlzID0gWworICAgICItSW5maW5pdHkiLAorICAgICIt
TnVtYmVyLk1BWF9WQUxVRSIsCisgICAgIi0xIiwKKyAgICAiLU51bWJlci5NSU5fVkFMVUUiLAor
ICAgICIwIiwKKyAgICAiTnVtYmVyLk1JTl9WQUxVRSIsCisgICAgIjEiLAorICAgICJOdW1iZXIu
TUFYX1ZBTFVFIiwKKyAgICAiSW5maW5pdHkiLAorCisgICAgIm5ldyBEYXRlKDApIiwKKyAgICAi
bmV3IERhdGUoMTAwMCkiLAorICAgICJuZXcgRGF0ZSgxMzE3Mzk5OTMxMDIzKSIsCisKKyAgICAi
JyciLAorICAgICInXHgwMCciLAorICAgICInYSciLAorICAgICInYWEnIiwKKyAgICAiJ2InIiwK
KyAgICAiJ2JhJyIsCisKKyAgICAiJ1x4QTInIiwgLy8gVSswMEEyIENFTlQgU0lHTgorICAgICIn
XHU2QzM0JyIsIC8vIFUrNkMzNCBDSksgVU5JRklFRCBJREVPR1JBUEggKHdhdGVyKQorICAgICIn
XHVEODM0XHVERDFFJyIsIC8vIFUrMUQxMUUgTVVTSUNBTCBTWU1CT0wgRy1DTEVGIChVVEYtMTYg
c3Vycm9nYXRlIHBhaXIpCisgICAgIidcdUZGRkQnIiwgLy8gVStGRkZEIFJFUExBQ0VNRU5UIENI
QVJBQ1RFUgorCisgICAgIltdIiwKKworICAgICJbLUluZmluaXR5XSIsCisgICAgIlstTnVtYmVy
Lk1BWF9WQUxVRV0iLAorICAgICJbLTFdIiwKKyAgICAiWy1OdW1iZXIuTUlOX1ZBTFVFXSIsCisg
ICAgIlswXSIsCisgICAgIltOdW1iZXIuTUlOX1ZBTFVFXSIsCisgICAgIlsxXSIsCisgICAgIltO
dW1iZXIuTUFYX1ZBTFVFXSIsCisgICAgIltJbmZpbml0eV0iLAorCisgICAgIltuZXcgRGF0ZSgw
KV0iLAorICAgICJbbmV3IERhdGUoMTAwMCldIiwKKyAgICAiW25ldyBEYXRlKDEzMTczOTk5MzEw
MjMpXSIsCisKKyAgICAiWycnXSIsCisgICAgIlsnXHgwMCddIiwKKyAgICAiWydhJ10iLAorICAg
ICJbJ2FhJ10iLAorICAgICJbJ2InXSIsCisgICAgIlsnYmEnXSIsCisKKyAgICAiWydceEEyJ10i
LCAvLyBVKzAwQTIgQ0VOVCBTSUdOCisgICAgIlsnXHU2QzM0J10iLCAvLyBVKzZDMzQgQ0pLIFVO
SUZJRUQgSURFT0dSQVBIICh3YXRlcikKKyAgICAiWydcdUQ4MzRcdUREMUUnXSIsIC8vIFUrMUQx
MUUgTVVTSUNBTCBTWU1CT0wgRy1DTEVGIChVVEYtMTYgc3Vycm9nYXRlIHBhaXIpCisgICAgIlsn
XHVGRkZEJ10iLCAvLyBVK0ZGRkQgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSCisKKyAgICAiW1tdXSIs
CisKKyAgICAiW1tdLCBbXV0iLAorICAgICJbW10sIFtdLCBbXV0iLAorCisgICAgIltbW11dXSIs
CisgICAgIltbW1tdXV1dIgorXTsKKworZnVuY3Rpb24gY29tcGFyZShhLCBiKQoreworICAgIGlm
ICh0eXBlb2YgYSAhPT0gdHlwZW9mIGIpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIHN3aXRjaCAodHlwZW9mIGEpIHsKKyAgICAgICAgY2FzZSAndW5kZWZpbmVkJzogLy8g
Tm90IHZhbGlkIGtleXMsIGJ1dCBjb21wYXJlIGFueXdheS4KKyAgICAgICAgY2FzZSAnYm9vbGVh
bic6IC8vIE5vdCB2YWxpZCBrZXlzLCBidXQgY29tcGFyZSBhbnl3YXkuCisgICAgICAgIGNhc2Ug
J3N0cmluZyc6CisgICAgICAgICAgICByZXR1cm4gYSA9PT0gYjsKKyAgICAgICAgY2FzZSAnbnVt
YmVyJzoKKyAgICAgICAgICAgIGlmIChhID09PSBiKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IChhICE9PSAwKSB8fCAoMSAvIGEgPT09IDEgLyBiKTsgLy8gMCBpc24ndCAtMAorICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gYSAhPT0gYSAmJiBiICE9PSBiOyAv
LyBOYU4gaXMgTmFOCisgICAgICAgICAgICB9CisgICAgICAgIGNhc2UgJ29iamVjdCc6CisgICAg
ICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIERhdGUgJiYgYiBpbnN0YW5jZW9mIERhdGUpIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gK2EgPT09ICtiOworICAgICAgICAgICAgfSBlbHNlIGlmIChh
IGluc3RhbmNlb2YgQXJyYXkgJiYgYiBpbnN0YW5jZW9mIEFycmF5KSB7CisgICAgICAgICAgICAg
ICAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aCkgeworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgYS5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbXBh
cmUoYVtpXSwgYltpXSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIEZvciB0aGUgcHVy
cG9zZXMgb2YgdGhpcyB0ZXN0LCBvdGhlciBvYmplY3RzIGRvbid0IGNvdW50CisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorfQorCitmdW5jdGlvbiBwb3B1bGF0ZVN0b3JlKCkKK3sKKyAgICBkZWJ1Zygi
Iik7CisgICAgZGVidWcoInBvcHVsYXRpbmcgc3RvcmUuLi4iKTsKKyAgICBldmFsQW5kTG9nKCJ0
cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUp
Iik7CisgICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsi
KTsKKyAgICB0cmFucy5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgdHJh
bnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHZhciBjb3VudCA9IDA7
CisgICAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uKGtleSkgeworICAgICAgICBldmFsQW5kTG9nKCJz
dG9yZS5wdXQoIiArIChjb3VudCsrKSArICIsICIgKyBrZXkgKyAiKSIpOworICAgIH0pOworICAg
IHRyYW5zLm9uY29tcGxldGUgPSBjaGVja1N0b3JlOworfQorCitmdW5jdGlvbiBjaGVja1N0b3Jl
KCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIml0ZXJhdGluZyBjdXJzb3IuLi4iKTsK
KyAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRyYW5z
YWN0aW9uLlJFQURfT05MWSkiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVj
dFN0b3JlKCdzdG9yZScpOyIpOworICAgIHRyYW5zLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Cisg
ICAgZXZhbEFuZExvZygiY291bnQgPSAwIik7CisgICAgY3VycmVxID0gZXZhbEFuZExvZygiY3Vy
cmVxID0gc3RvcmUub3BlbkN1cnNvcigpIik7CisgICAgY3VycmVxLm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICBjdXJyZXEub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgIGlmIChjdXJyZXEucmVzdWx0KSB7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJz
b3IgPSBjdXJyZXEucmVzdWx0Iik7CisgICAgICAgICAgICBzaG91bGRCZVRydWUoImNvbXBhcmUo
Y3Vyc29yLmtleSwgIiArIGtleXNbY291bnRdICsgIikiKTsKKyAgICAgICAgICAgIGV2YWxBbmRM
b2coImdldHJlcSA9IHN0b3JlLmdldChjdXJzb3Iua2V5KSIpOworICAgICAgICAgICAgZ2V0cmVx
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgICAgIGdldHJlcS5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBzaG91bGRCZVRydWUoImdl
dHJlcS5yZXN1bHQgPT09IGNvdW50KysiKTsKKyAgICAgICAgICAgICAgICBjdXJzb3IuY29udGlu
dWUoKTsKKyAgICAgICAgICAgIH07CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzaG91
bGRCZVRydWUoImNvdW50ID09PSBrZXlzLmxlbmd0aCIpOworICAgICAgICAgICAgZmluaXNoVXAo
KTsKKyAgICAgICAgfQorICAgIH07Cit9CisKK2Z1bmN0aW9uIGZpbmlzaFVwKCkKK3sKKyAgICB0
ZXN0S2V5Q29tcGFyZSgpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitmdW5jdGlvbiB0ZXN0
S2V5Q29tcGFyZSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ2YWxpZGF0ZSBjb21w
YXJlIGZ1bmN0aW9uIik7CisgICAgdmFyIGNhc2VzID0gWworICAgICAgICAidW5kZWZpbmVkIiwK
KyAgICAgICAgInRydWUiLAorICAgICAgICAiZmFsc2UiLAorICAgICAgICAiMCIsCisgICAgICAg
ICItMCIsCisgICAgICAgICIxMjMiLAorICAgICAgICAiSW5maW5pdHkiLAorICAgICAgICAiLUlu
ZmluaXR5IiwKKyAgICAgICAgIk5hTiIsCisgICAgICAgICInJyIsCisgICAgICAgICInYWJjJyIs
CisgICAgICAgICIneHl6JyIsCisgICAgICAgICJuZXcgRGF0ZSgwKSIsCisgICAgICAgICJuZXcg
RGF0ZSgxZTMpIiwKKyAgICAgICAgIm5ldyBEYXRlKDFlOSkiLAorICAgICAgICAiW10iLAorICAg
ICAgICAiWzEyM10iLAorICAgICAgICAiWydhYmMnXSIsCisgICAgICAgICJbMTIzLCAnYWJjJ10i
LAorICAgICAgICAiWydhYmMnLCAxMjNdIiwKKyAgICAgICAgIltbXV0iLAorICAgICAgICAiW1sx
MjNdXSIsCisgICAgICAgICJbWydhYmMnXV0iLAorICAgICAgICAiW1sxMjNdLCAnYWJjJ10iLAor
ICAgICAgICAiW1sxMjNdLCAxMjNdIgorICAgIF07CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGNhc2VzLmxlbmd0aDsgKytpKSB7CisgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgY2FzZXMu
bGVuZ3RoOyArK2opIHsKKyAgICAgICAgICAgIGlmIChpID09PSBqKSB7CisgICAgICAgICAgICAg
ICAgc2hvdWxkQmVUcnVlKCJjb21wYXJlKCIgKyBjYXNlc1tpXSArICIsICIgKyBjYXNlc1tqXSAr
ICIpIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHNob3VsZEJlRmFs
c2UoImNvbXBhcmUoIiArIGNhc2VzW2ldICsgIiwgIiArIGNhc2VzW2pdICsgIikiKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9jdXJzb3ItcHJpbWFyeS1rZXktb3JkZXIuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXByaW1hcnkta2V5LW9yZGVyLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjg5MjkxMGMzNmJkMzRiYmRmODg5ZjM3MmM2NjU2ZTI1ZmM0NmNmNGEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXBy
aW1hcnkta2V5LW9yZGVyLmpzCkBAIC0wLDAgKzEsOTggQEAKK2lmICh0aGlzLmltcG9ydFNjcmlw
dHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNj
cmlwdGlvbigiVGVzdCBJbmRleGVkREIgcHJpbWFyeSBrZXkgb3JkZXJpbmcgYW5kIHJlYWRiYWNr
IGZyb20gY3Vyc29ycy4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9y
UHJlZml4ZXMoKTsKKworICAgIHByZXBhcmVEYXRhYmFzZSgpOworfQorCitmdW5jdGlvbiBwcmVw
YXJlRGF0YWJhc2UoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBldmFsQW5kTG9nKCJvcGVuUmVx
dWVzdCA9IGluZGV4ZWREQi5vcGVuKCdjdXJzb3ItcHJpbWFyeS1rZXktb3JkZXInKSIpOworICAg
IG9wZW5SZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBvcGVu
UmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZXZhbEFuZExvZygiZGIg
PSBvcGVuUmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgZXZhbEFuZExvZygidmVyc2lvbkNoYW5n
ZVJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICAgICAgdmVyc2lvbkNoYW5nZVJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICB2ZXJzaW9u
Q2hhbmdlUmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGV2YWxB
bmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICAgICAg
ICAgIGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4JywgJ2luZGV4
S2V5JykiKTsKKworICAgICAgICAgICAgdmVyc2lvbkNoYW5nZVJlcXVlc3QucmVzdWx0Lm9uY29t
cGxldGUgPSBwb3B1bGF0ZVN0b3JlOworICAgICAgICB9OworICAgIH07Cit9CisKK3NlbGYua2V5
cyA9IFsKKyAgICAiLUluZmluaXR5IiwKKyAgICAiLTIiLAorICAgICItMSIsCisgICAgIjAiLAor
ICAgICIxIiwKKyAgICAiMiIsCisgICAgIkluZmluaXR5IiwKKworICAgICInMCciLAorICAgICIn
MSciLAorICAgICInMiciLAorICAgICInQSciLAorICAgICInQiciLAorICAgICInQyciLAorICAg
ICInYSciLAorICAgICInYiciLAorICAgICInYyciCitdOworCitmdW5jdGlvbiBwb3B1bGF0ZVN0
b3JlKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInBvcHVsYXRpbmcgc3RvcmUuLi4i
KTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRy
YW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5v
YmplY3RTdG9yZSgnc3RvcmUnKTsiKTsKKyAgICB0cmFucy5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNr
OworICAgIHZhciBjb3VudCA9IDA7CisgICAgdmFyIGluZGV4S2V5ID0gMDsKKyAgICB2YXIga2V5
cyA9IHNlbGYua2V5cy5zbGljZSgpOworICAgIGtleXMucmV2ZXJzZSgpOworICAgIGtleXMuZm9y
RWFjaChmdW5jdGlvbihrZXkpIHsKKyAgICAgICAgdmFyIHZhbHVlID0geyBpbmRleEtleTogaW5k
ZXhLZXksIGNvdW50OiBjb3VudCsrIH07CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgi
ICsgSlNPTi5zdHJpbmdpZnkodmFsdWUpICsgIiwgIiArIGtleSArICIpIik7CisgICAgfSk7Cisg
ICAgdHJhbnMub25jb21wbGV0ZSA9IGNoZWNrU3RvcmU7Cit9CisKK2Z1bmN0aW9uIGNoZWNrU3Rv
cmUoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiaXRlcmF0aW5nIGN1cnNvci4uLiIp
OworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJh
bnNhY3Rpb24uUkVBRF9PTkxZKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2Jq
ZWN0U3RvcmUoJ3N0b3JlJyk7Iik7CisgICAgZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5pbmRl
eCgnaW5kZXgnKTsiKTsKKyAgICB0cmFucy5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIGN1
cnNvclJlcXVlc3QgPSBldmFsQW5kTG9nKCJjdXJzb3JSZXF1ZXN0ID0gaW5kZXgub3BlbkN1cnNv
cigpIik7CisgICAgZXZhbEFuZExvZygiY291bnQgPSAwIik7CisgICAgdmFyIGluZGV4S2V5ID0g
MDsKKyAgICBjdXJzb3JSZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICBjdXJzb3JSZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAo
Y3Vyc29yUmVxdWVzdC5yZXN1bHQpIHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvciA9
IGN1cnNvclJlcXVlc3QucmVzdWx0Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtl
eSIsIFN0cmluZyhpbmRleEtleSkpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmlt
YXJ5S2V5Iiwgc2VsZi5rZXlzW2NvdW50KytdKTsKKyAgICAgICAgICAgIGN1cnNvci5jb250aW51
ZSgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJjb3VudCA9
PT0ga2V5cy5sZW5ndGgiKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9
CisgICAgfTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItcmV2
ZXJzZS1idWcuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vy
c29yLXJldmVyc2UtYnVnLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwOGVhZGVhOGM4M2RlNDgyZjEwZjA4ZDhm
MDIzYmJmMGY5YzI5NDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXJldmVyc2UtYnVnLmpzCkBAIC0wLDAgKzEsMTAxIEBA
CitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdz
aGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGtleXMgb3JkZXJp
bmcgYW5kIHJlYWRiYWNrIGZyb20gY3Vyc29ycy4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7Cisg
ICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIHByZXBhcmVEYXRhYmFzZSgpOworfQor
CitmdW5jdGlvbiBwcmVwYXJlRGF0YWJhc2UoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBldmFs
QW5kTG9nKCJvcGVucmVxID0gaW5kZXhlZERCLm9wZW4oJ2N1cnNvci1yZXZlcnNlLWJ1ZycpIik7
CisgICAgb3BlbnJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgb3Bl
bnJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZXZhbEFuZExvZygiZGIgPSBv
cGVucmVxLnJlc3VsdCIpOworICAgICAgICBldmFsQW5kTG9nKCJ2ZXJyZXEgPSBkYi5zZXRWZXJz
aW9uKCcxJykiKTsKKyAgICAgICAgdmVycmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKKyAgICAgICAgdmVycmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKyAgICAgICAgICAgIHN0b3JlID0gZXZhbEFu
ZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgICAgICAg
ICAgZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4JywgJycpIik7CisgICAgICAg
ICAgICB2ZXJyZXEucmVzdWx0Lm9uY29tcGxldGUgPSBwb3B1bGF0ZVN0b3JlOworICAgICAgICB9
OworICAgIH07Cit9CisKK2Z1bmN0aW9uIHBvcHVsYXRlU3RvcmUoKQoreworICAgIGRlYnVnKCIi
KTsKKyAgICBkZWJ1ZygicG9wdWxhdGluZyBzdG9yZS4uLiIpOworICAgIGV2YWxBbmRMb2coInRy
YW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSki
KTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpOyIp
OworICAgIHRyYW5zLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB0cmFu
cy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisKKyAgICBldmFsQW5kTG9nKCJz
dG9yZS5wdXQoMSwgMSkiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoMiwgMikiKTsKKyAg
ICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoMywgMykiKTsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0g
dGVzdEN1cnNvcjsKK30KKwordmFyIHRlc3RzID0gWworICAgICAgICAgICAgICAgIHt1cHBlckJv
dW5kOiA3LCBvcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDN9LAorICAgICAgICAgICAgICAgIHt1cHBl
ckJvdW5kOiA3LCBvcGVuOiB0cnVlLCAgZXhwZWN0ZWQ6IDN9LAorICAgICAgICAgICAgICAgIHt1
cHBlckJvdW5kOiAzLCBvcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDN9LAorICAgICAgICAgICAgICAg
IHt1cHBlckJvdW5kOiAzLCBvcGVuOiB0cnVlLCAgZXhwZWN0ZWQ6IDJ9CisgICAgICAgICAgICBd
OworCitmdW5jdGlvbiB0ZXN0Q3Vyc29yKCkKK3sKKyAgICBkZWJ1ZygidGVzdEN1cnNvcigpIik7
CisKKyAgICBpZiAodGVzdHMubGVuZ3RoID09PSAwKSB7CisgICAgICAgIGRlYnVnKCJObyBtb3Jl
IHRlc3RzLiIpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIHRlc3QgPSB0ZXN0cy5zaGlmdCgpOworCisgICAgZXZhbEFuZExvZygidHJhbnMg
PSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7Cisg
ICAgdHJhbnMub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRyYW5zLm9u
YWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0g
dGVzdEN1cnNvcjsKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdz
dG9yZScpOyIpOworICAgIGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4Jyk7
Iik7CisKKyAgICB2YXIgdGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGV2YWxB
bmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICAgICAgaWYgKGN1cnNv
ciA9PT0gbnVsbCkgeworICAgICAgICAgICAgZGVidWcoImN1cnNvciBzaG91bGQgbm90IGJlIG51
bGwiKTsKKyAgICAgICAgICAgIGZhaWwoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgInRlc3QuZXhwZWN0ZWQiKTsKKyAg
ICAgICAgaWYgKCJ2YWx1ZSIgaW4gY3Vyc29yKQorICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNv
ci52YWx1ZSIsICJ0ZXN0LmV4cGVjdGVkIik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJp
bWFyeUtleSIsICJ0ZXN0LmV4cGVjdGVkIik7CisKKyAgICAgICAgLy8gTGV0IHRoZSB0cmFuc2Fj
dGlvbiBmaW5pc2guCisgICAgfQorCisgICAgZGVidWcoInVwcGVyQm91bmQ6ICIgKyB0ZXN0LnVw
cGVyQm91bmQgKyAiIG9wZW46ICIgKyB0ZXN0Lm9wZW4gKyAiIGV4cGVjdGVkOiAiICsgdGVzdC5l
eHBlY3RlZCk7CisgICAgc3RvcmVSZXEgPSBldmFsQW5kTG9nKCJzdG9yZVJlcSA9IHN0b3JlLm9w
ZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCh0ZXN0LnVwcGVyQm91bmQsIHRlc3Qub3Bl
biksIElEQkN1cnNvci5QUkVWKSIpOworICAgIHN0b3JlUmVxLm9uc3VjY2VzcyA9IHRlc3RGdW5j
dGlvbjsKKworICAgIGluZGV4UmVxID0gZXZhbEFuZExvZygiaW5kZXhSZXEgPSBpbmRleC5vcGVu
Q3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQodGVzdC51cHBlckJvdW5kLCB0ZXN0Lm9wZW4p
LCBJREJDdXJzb3IuUFJFVikiKTsKKyAgICBpbmRleFJlcS5vbnN1Y2Nlc3MgPSB0ZXN0RnVuY3Rp
b247CisKKyAgICBpbmRleEtleVJlcSA9IGV2YWxBbmRMb2coImluZGV4S2V5UmVxID0gaW5kZXgu
b3BlbktleUN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKHRlc3QudXBwZXJCb3VuZCwgdGVz
dC5vcGVuKSwgSURCQ3Vyc29yLlBSRVYpIik7CisgICAgaW5kZXhLZXlSZXEub25zdWNjZXNzID0g
dGVzdEZ1bmN0aW9uOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNv
ci1za2lwLWRlbGV0ZWQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvY3Vyc29yLXNraXAtZGVsZXRlZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MGU0ZDQxYmM1MjQ0YTVkNTM0
OGMxYzAzMTQ5NDgwMTNhNTJiN2Q3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1za2lwLWRlbGV0ZWQuanMKQEAgLTAsMCAr
MSwxOTMgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcu
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNj
cmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBj
dXJzb3Igc2tpcHMgZGVsZXRlZCBlbnRyaWVzLiIpOworCit2YXIgbmFtZXMgPSBbJ0FscGhhJywg
J0JyYXZvJywgJ0NoYXJsaWUnLCAnRGVsdGEnLCAnRWNobycsICdGb3h0cm90JywgJ0dvbGYnLAor
ICAgICAgICAgICAgICdIb3RlbCcsICdJbmRpYScsICdKdWxpZXQnLCAnS2lsbycsICdMaW1hJywg
J01pa2UnLCAnTm92ZW1iZXInLAorICAgICAgICAgICAgICdPc2NhcicsICdQYXBhJywgJ1F1ZWJl
YycsICdSb21lbycsICdTaWVycmEnLCAnVGFuZ28nLCAnVW5pZm9ybScsCisgICAgICAgICAgICAg
J1ZpY3RvcicsICdXaGlza2V5JywgJ1gtcmF5JywgJ1lhbmtlZScsICdadWx1J107CisKK3Rlc3Qo
KTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2N1cnNvci1za2lwLWRlbGV0
ZWQnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5T
dWNjZXNzKCkKK3sKKyAgICB2YXIgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcg
dmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2Vz
cygpOiIpOworICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJh
bnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxl
dGUgPSBiYXNpY0N1cnNvclRlc3Q7CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwor
CisgICAgdmFyIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVh
dGVPYmplY3RTdG9yZSgnc3RvcmUnLCB7a2V5UGF0aDogJ2lkJ30pIik7CisgICAgZXZhbEFuZExv
Zygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ25hbWVJbmRleCcsICduYW1lJykiKTsKKyAgICBy
ZXNldE9iamVjdFN0b3JlKGZ1bmN0aW9uKCkge30pOworfQorCit2YXIgc2lsZW50RXJyb3JIYW5k
bGVyID0gZnVuY3Rpb24oKSB7IGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IH0KKworZnVuY3Rpb24g
cmVzZXRPYmplY3RTdG9yZShjYWxsYmFjaykKK3sKKyAgICBkZWJ1ZygiXG5yZXNldE9iamVjdFN0
b3JlKCk6Iik7CisgICAgaWYgKGNhbGxiYWNrID09PSB1bmRlZmluZWQpCisgICAgICAgIGNhbGxi
YWNrID0gZnVuY3Rpb24gKCkge307CisKKyAgICB2YXIgb2JqZWN0U3RvcmUgPSB0cmFucy5vYmpl
Y3RTdG9yZSgnc3RvcmUnKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsg
aSsrKQorICAgICAgICBvYmplY3RTdG9yZS5kZWxldGUoaSkub25lcnJvciA9IHNpbGVudEVycm9y
SGFuZGxlcjsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKQorICAg
ICAgICBvYmplY3RTdG9yZS5hZGQoe2lkOiBpLCBuYW1lOiBuYW1lc1tpXX0pLm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKworICAgIGRlYnVnKCIiKTsKKyAgICBjYWxsYmFjaygp
OworfQorCitmdW5jdGlvbiBjb250YWlucyhhcnIsIG9iaikKK3sKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGFyci5sZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoYXJyW2ldID09IG9iaikKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3Zh
ciBjdXJzb3I7Cit2YXIgZGVsZXRlZDsKK3ZhciBzZWVuOworCitmdW5jdGlvbiB0ZXN0Q3Vyc29y
KGRlbGV0ZUxpc3QsIGNyZWF0ZUN1cnNvckNvbW1hbmQsIGNhbGxiYWNrKQoreworICAgIGRlYnVn
KCJcbnRlc3RDdXJzb3IoKToiKTsKKyAgICBkZWxldGVkID0gW107CisgICAgc2VlbiA9IFtdOwor
CisgICAgLy8gQ3JlYXRlIHRoZSBjdXJzb3IuCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coY3Jl
YXRlQ3Vyc29yQ29tbWFuZCk7CisKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkgeworICAgICAgICAgICAgLy8gTWFr
ZSBzdXJlIHdlIGhhdmUgc2VlbiBldmVyeSBub24tZGVsZXRlZCBpdGVtLgorICAgICAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAg
IGlmIChjb250YWlucyhkZWxldGVkLCBpKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgICAgICAgICBpZiAoIWNvbnRhaW5zKHNlZW4sIGkpKQorICAgICAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJDdXJzb3IgZGlkIG5vdCBzZWUgaXRlbSB3aXRoIGlkOiAiICsg
aSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSB1c2VkIGV2
ZXJ5IHJ1bGUgaW4gfGRlbGV0ZUxpc3R8LgorICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBkZWxldGVMaXN0Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKCFjb250YWlu
cyhzZWVuLCBkZWxldGVMaXN0W2ldLmlkKSkKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGVsZXRlTGlzdCBydWxlIHdpdGggaWQ6ICIgKyBkZWxldGVMaXN0W2ldLmlkICsgIiB3YXMg
bmV2ZXIgdXNlZC4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZGVidWcoIiIpOwor
ICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgICAgIGRlYnVnKGV2
ZW50LnRhcmdldC5yZXN1bHQudmFsdWUuaWQgKyAiOiAiICsgZXZlbnQudGFyZ2V0LnJlc3VsdC52
YWx1ZS5uYW1lKTsKKyAgICAgICAgc2Vlbi5wdXNoKGV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUu
aWQpOworCisgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBkb24ndCBzZWUgYW55IGRlbGV0ZWQgaXRl
bXMuCisgICAgICAgIGlmIChjb250YWlucyhkZWxldGVkLCBldmVudC50YXJnZXQucmVzdWx0LnZh
bHVlLmlkKSkKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIkN1cnNvciBoaXQgcHJldmlvdXNseSBk
ZWxldGVkIGVsZW1lbnQuIik7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZWxldGVM
aXN0Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdC52
YWx1ZS5pZCA9PSBkZWxldGVMaXN0W2ldLmlkKSB7CisgICAgICAgICAgICAgICAgLy8gRGVsZXRl
IG9iamVjdHMgdGFyZ2V0ZWQgYnkgdGhpcyBpZC4KKyAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0
cyA9IGRlbGV0ZUxpc3RbaV0udGFyZ2V0czsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0g
MDsgaiA8IHRhcmdldHMubGVuZ3RoOyBqKyspIHsKKyAgICAgICAgICAgICAgICAgICAgZGVsZXRl
ZC5wdXNoKHRhcmdldHNbal0pOworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpLmRlbGV0ZSgiICsgdGFy
Z2V0c1tqXSArICIpIik7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICAgICAgICAgICAgICBpZiAoaiA9PSB0YXJn
ZXRzLmxlbmd0aCAtIDEpCisgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uKCkgeyBjdXJzb3IuY29udGludWUoKTsgfQorICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICBjdXJzb3IuY29udGludWUoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGJhc2ljQ3Vyc29y
VGVzdCgpCit7CisgICAgZGVidWcoImJhc2ljQ3Vyc29yVGVzdCgpIik7CisKKyAgICBldmFsQW5k
TG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUnXSwgSURCVHJhbnNhY3Rpb24uUkVB
RF9XUklURSkiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7
CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHRyYW5zYWN0aW9uQ29tcGxldGU7CisKKyAgICB2YXIg
ZGVsZXRlcyA9IFt7aWQ6IDEsIHRhcmdldHM6IFswXX0sCisgICAgICAgICAgICAgICAgICAge2lk
OiAyLCB0YXJnZXRzOiBbbmFtZXMubGVuZ3RoIC0gMV19LAorICAgICAgICAgICAgICAgICAgIHtp
ZDogMywgdGFyZ2V0czogWzUsNiw3XX0sCisgICAgICAgICAgICAgICAgICAge2lkOiAxMCwgdGFy
Z2V0czogWzEwXX0sCisgICAgICAgICAgICAgICAgICAge2lkOiAxMiwgdGFyZ2V0czogWzEzXX0s
CisgICAgICAgICAgICAgICAgICAge2lkOiAxNSwgdGFyZ2V0czogWzE0XX0sCisgICAgICAgICAg
ICAgICAgICAge2lkOiAyMCwgdGFyZ2V0czogWzE3LDE4XX0KKyAgICAgICAgICAgICAgICAgICBd
OworCisgICAgdGVzdEN1cnNvcihkZWxldGVzLCAidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyku
b3BlbkN1cnNvcihJREJLZXlSYW5nZS5sb3dlckJvdW5kKDApKSIsIGZ1bmN0aW9uKCkgeyByZXNl
dE9iamVjdFN0b3JlKHJldmVyc2VDdXJzb3JUZXN0KTsgfSk7Cit9CisKK2Z1bmN0aW9uIHJldmVy
c2VDdXJzb3JUZXN0KCkKK3sKKyAgICBkZWJ1ZygicmV2ZXJzZUN1cnNvclRlc3QoKToiKTsKKwor
ICAgIHZhciBkZWxldGVzID0gW3tpZDogMjQsIHRhcmdldHM6IFtuYW1lcy5sZW5ndGggLSAxXX0s
CisgICAgICAgICAgICAgICAgICAge2lkOiAyMywgdGFyZ2V0czogWzBdfSwKKyAgICAgICAgICAg
ICAgICAgICB7aWQ6IDIyLCB0YXJnZXRzOiBbMjAsIDE5LCAxOF19LAorICAgICAgICAgICAgICAg
ICAgIHtpZDogMTUsIHRhcmdldHM6IFsxNV19LAorICAgICAgICAgICAgICAgICAgIHtpZDogMTMs
IHRhcmdldHM6IFsxMl19LAorICAgICAgICAgICAgICAgICAgIHtpZDogMTAsIHRhcmdldHM6IFsx
MV19LAorICAgICAgICAgICAgICAgICAgIHtpZDogNSwgdGFyZ2V0czogWzcsOF19CisgICAgICAg
ICAgICAgICAgICAgXTsKKworICAgIHRlc3RDdXJzb3IoZGVsZXRlcywgInRyYW5zLm9iamVjdFN0
b3JlKCdzdG9yZScpLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgwKSwgSURCQ3Vy
c29yLlBSRVYpIiwgZnVuY3Rpb24oKSB7IHJlc2V0T2JqZWN0U3RvcmUoaW5kZXhDdXJzb3JUZXN0
KTsgfSk7Cit9CisKK2Z1bmN0aW9uIGluZGV4Q3Vyc29yVGVzdCgpCit7CisgICAgZGVidWcoImlu
ZGV4Q3Vyc29yVGVzdCgpOiIpOworCisgICAgdmFyIGRlbGV0ZXMgPSBbe2lkOiAxLCB0YXJnZXRz
OiBbMF19LAorICAgICAgICAgICAgICAgICAgIHtpZDogMiwgdGFyZ2V0czogW25hbWVzLmxlbmd0
aCAtIDFdfSwKKyAgICAgICAgICAgICAgICAgICB7aWQ6IDMsIHRhcmdldHM6IFs1LDYsN119LAor
ICAgICAgICAgICAgICAgICAgIHtpZDogMTAsIHRhcmdldHM6IFsxMF19LAorICAgICAgICAgICAg
ICAgICAgIHtpZDogMTIsIHRhcmdldHM6IFsxM119LAorICAgICAgICAgICAgICAgICAgIHtpZDog
MTUsIHRhcmdldHM6IFsxNF19LAorICAgICAgICAgICAgICAgICAgIHtpZDogMjAsIHRhcmdldHM6
IFsxNywxOF19CisgICAgICAgICAgICAgICAgICAgXTsKKworICAgIHRlc3RDdXJzb3IoZGVsZXRl
cywgInRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpLmluZGV4KCduYW1lSW5kZXgnKS5vcGVuQ3Vy
c29yKElEQktleVJhbmdlLmxvd2VyQm91bmQoJ0FscGhhJykpIiwgZnVuY3Rpb24oKSB7IH0pOwor
fQorCitmdW5jdGlvbiB0cmFuc2FjdGlvbkNvbXBsZXRlKCkKK3sKKyAgICBkZWJ1ZygidHJhbnNh
Y3Rpb25Db21wbGV0ZSgpOiIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9jdXJzb3ItdXBkYXRlLXZhbHVlLWFyZ3VtZW50LXJlcXVpcmVkLmpzIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci11cGRhdGUtdmFsdWUt
YXJndW1lbnQtcmVxdWlyZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTFjMjczZDJiZThiZWNhNmUwY2EwZTQ5
Y2Q1NDc2Y2E1MDBkNzgzYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItdXBkYXRlLXZhbHVlLWFyZ3VtZW50LXJlcXVpcmVk
LmpzCkBAIC0wLDAgKzEsNzMgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBv
cnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwor
ICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJ
bmRleGVkREIgY3Vyc29yLnVwZGF0ZSByZXF1aXJlZCBhcmd1bWVudHMiKTsKKworZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxm
LmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2Ui
OworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlw
dGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVu
U3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lv
bignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0ZXN0R3JvdXAxOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiB0ZXN0
R3JvdXAxKCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgb2JqZWN0
U3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnYXV0b0luY3JlbWVudCcs
IHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9KTsiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICB0ZXN0R3JvdXAyKCk7CisgICAgfQorfQorCitmdW5j
dGlvbiB0ZXN0R3JvdXAyKCkKK3sKKyAgICBrZXlzID0gZXZhbEFuZExvZygia2V5cyA9IFsxLCAt
MSwgMCwgMTAsIDIwMDAsICdxJywgJ3onLCAndHdvJywgJ2InLCAnYSddOyIpOworCisgICAga2V5
SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDA7Iik7CisKKyAgICBmb3IgKGkgaW4ga2V5
cykgeworICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5h
ZGQoJ2ZvbycsIGtleXNbaV0pOyIpOworICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7CisgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50
KSB7CisgICAgICAgIGlmICgrK2tleUluZGV4ID09IGtleXMubGVuZ3RoKSB7CisgICAgICAgICAg
dGVzdEdyb3VwMygpOworICAgICAgICB9CisgICAgICB9OworICAgIH0KK30KKworZnVuY3Rpb24g
dGVzdEdyb3VwMygpCit7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmpl
Y3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQp
IHsKKyAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJl
c3VsdDsiKTsKKyAgICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICAgICAgc2hvdWxkVGhyb3co
ImN1cnNvci51cGRhdGUoKTsiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRlc3RG
YWlsZWQoImN1cnNvciB3YXMgbnVsbCIpOworICAgICAgICB9CisgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworICAgIH0KK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3It
dXBkYXRlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNv
ci11cGRhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGMwZDUxYjEyMWRhYmVjM2VhZWRkYjIzMTlhMjAzMGMy
ZjBkZmFkYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9jdXJzb3ItdXBkYXRlLmpzCkBAIC0wLDAgKzEsMjE2IEBACitpZiAodGhpcy5p
bXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsK
K30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgY3Vyc29yIHVwZGF0ZS4iKTsKKwor
dGVzdCgpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygp
OworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignY3Vyc29yLXVwZGF0
ZScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1
Y2Nlc3MoKQoreworICAgIHZhciBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2
ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb25TdWNjZXNzOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCit7CisgICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNz
KCk6Iik7CisgICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKyAgICB0cmFu
cy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0
ZSA9IG9wZW5CYXNpY0N1cnNvcjsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisK
KyAgICB2YXIgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdiYXNpY1N0b3JlJykiKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9y
ZS5hZGQoJ215VmFsdWUxJywgJ215S2V5MScpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjayIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnbXlWYWx1ZTInLCAnbXlL
ZXkyJykub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7CisgICAgZXZhbEFuZExv
Zygib2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlMycsICdteUtleTMnKS5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2siKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ215
VmFsdWU0JywgJ215S2V5NCcpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOwor
CisgICAgdmFyIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVh
dGVPYmplY3RTdG9yZSgnYXV0b0luY3JlbWVudFN0b3JlJywge2F1dG9JbmNyZW1lbnQ6IHRydWV9
KSIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnZm9vMScpLm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFk
ZCgnZm9vMicpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOworICAgIGV2YWxB
bmRMb2coIm9iamVjdFN0b3JlLmFkZCgnZm9vMycpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnZm9vNCcpLm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOworCisgICAgdmFyIG9iamVjdFN0b3JlID0g
ZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgna2V5UGF0aFN0
b3JlJywge2tleVBhdGg6ICdpZCd9KSIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmNy
ZWF0ZUluZGV4KCdudW1iZXJJbmRleCcsICdudW1iZXInKSIpOworICAgIGV2YWxBbmRMb2coIm9i
amVjdFN0b3JlLmFkZCh7bnVtYmVyOiAxLCBpZDogMX0pLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCh7bnVtYmVyOiAy
LCBpZDogMn0pLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOworICAgIGV2YWxB
bmRMb2coIm9iamVjdFN0b3JlLmFkZCh7bnVtYmVyOiAzLCBpZDogM30pLm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCh7
bnVtYmVyOiA0LCBpZDogNH0pLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOwor
fQorCitmdW5jdGlvbiBvcGVuQmFzaWNDdXJzb3IoKQoreworICAgIGRlYnVnKCJvcGVuQmFzaWND
dXJzb3IoKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydiYXNp
Y1N0b3JlJywgJ2F1dG9JbmNyZW1lbnRTdG9yZScsICdrZXlQYXRoU3RvcmUnXSwgSURCVHJhbnNh
Y3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0
Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHRyYW5zYWN0aW9uQ29tcGxldGU7CisK
KyAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQoIm15S2V5MSIpOworICAgIHNl
bGYub2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYmFzaWNTdG9y
ZScpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLm9wZW5DdXJzb3Io
a2V5UmFuZ2UpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBiYXNpY1VwZGF0ZUN1cnNvcjsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBjb3Vu
dGVyID0gMTsKK30KKworZnVuY3Rpb24gYmFzaWNVcGRhdGVDdXJzb3IoKQoreworICAgIGRlYnVn
KCJiYXNpY1VwZGF0ZUN1cnNvcigpIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5zb3Vy
Y2UiLCAib2JqZWN0U3RvcmUiKTsKKyAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBudWxs
KSB7CisgICAgICAgIHNob3VsZEJlKCJjb3VudGVyIiwgIjUiKTsKKyAgICAgICAgY291bnRlciA9
IDE7CisKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdi
YXNpY1N0b3JlJykub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKKyAgICAgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBiYXNpY0NoZWNrQ3Vyc29yOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LnVwZGF0ZSgnbXlVcGRhdGVkVmFs
dWUnICsgY291bnRlcisrKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7
IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5zb3VyY2UuY29udGludWUoKSIpOyB9CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGJh
c2ljQ2hlY2tDdXJzb3IoKQoreworICAgIGRlYnVnKCJiYXNpY0NoZWNrQ3Vyc29yKCkiKTsKKyAg
ICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBudWxsKSB7CisgICAgICAgIHNob3VsZEJlKCJj
b3VudGVyIiwgIjUiKTsKKyAgICAgICAgY291bnRlciA9IDE7CisKKyAgICAgICAga2V5UmFuZ2Ug
PSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKDEpOworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygidHJhbnMub2JqZWN0U3RvcmUoJ2F1dG9JbmNyZW1lbnRTdG9yZScpLm9wZW5DdXJzb3Ioa2V5
UmFuZ2UpIik7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYXV0b0luY3JlbWVudFVwZGF0
ZUN1cnNvcjsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
ImV2ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgIm15S2V5IiArIGNvdW50ZXIpOworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZSIsICJteVVwZGF0ZWRW
YWx1ZSIgKyBjb3VudGVyKyspOworICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQu
Y29udGludWUoKSIpOworfQorCitmdW5jdGlvbiBhdXRvSW5jcmVtZW50VXBkYXRlQ3Vyc29yKCkK
K3sKKyAgICBkZWJ1ZygiYXV0b0luY3JlbWVudFVwZGF0ZUN1cnNvcigpIik7CisgICAgaWYgKGV2
ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkgeworICAgICAgICBzaG91bGRCZSgiY291bnRlciIs
ICI1Iik7CisgICAgICAgIGNvdW50ZXIgPSAxOworCisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYXV0b0luY3JlbWVudFN0b3JlJykub3BlbkN1cnNvcihr
ZXlSYW5nZSkiKTsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhdXRvSW5jcmVtZW50Q2hl
Y2tDdXJzb3I7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImV2ZW50LnRhcmdldC5yZXN1bHQudXBkYXRlKCdteVVwZGF0ZWRGb28nICsgY291bnRlcisrKSIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7IGV2YWxBbmRMb2coImV2ZW50
LnRhcmdldC5zb3VyY2UuY29udGludWUoKSIpOyB9CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGF1dG9JbmNyZW1lbnRDaGVja0N1
cnNvcigpCit7CisgICAgZGVidWcoImF1dG9JbmNyZW1lbnRDaGVja0N1cnNvcigpIik7CisgICAg
aWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkgeworICAgICAgICBzaG91bGRCZSgiY291
bnRlciIsICI1Iik7CisgICAgICAgIGNvdW50ZXIgPSAxOworCisgICAgICAgIGtleVJhbmdlID0g
SURCS2V5UmFuZ2UubG93ZXJCb3VuZCgxKTsKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InRyYW5zLm9iamVjdFN0b3JlKCdrZXlQYXRoU3RvcmUnKS5vcGVuQ3Vyc29yKGtleVJhbmdlKSIp
OworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGtleVBhdGhVcGRhdGVDdXJzb3I7CisgICAg
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5Iiwg
ImNvdW50ZXIiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1
bHQudmFsdWUiLCAibXlVcGRhdGVkRm9vIiArIGNvdW50ZXIrKyk7CisgICAgZXZhbEFuZExvZygi
ZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7Cit9CisKK2Z1bmN0aW9uIGtleVBhdGhV
cGRhdGVDdXJzb3IoKQoreworICAgIGRlYnVnKCJrZXlQYXRoVXBkYXRlQ3Vyc29yKCkiKTsKKyAg
ICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBudWxsKSB7CisgICAgICAgIHNob3VsZEJlKCJj
b3VudGVyIiwgIjUiKTsKKyAgICAgICAgY291bnRlciA9IDE7CisKKyAgICAgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdrZXlQYXRoU3RvcmUnKS5vcGVuQ3Vyc29y
KGtleVJhbmdlKSIpOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGtleVBhdGhDaGVja0N1
cnNvcjsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJl
dmVudC50YXJnZXQucmVzdWx0LnVwZGF0ZSh7aWQ6IDEwMCArIGNvdW50ZXIsIG51bWJlcjogMTAw
ICsgY291bnRlcn0pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC51cGRhdGUoe2lkOiBjb3Vu
dGVyLCBudW1iZXI6IDEwMCArIGNvdW50ZXIrK30pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbigpIHsgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnNvdXJjZS5jb250aW51ZSgp
IikgfTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30K
KworZnVuY3Rpb24ga2V5UGF0aENoZWNrQ3Vyc29yKCkKK3sKKyAgICBkZWJ1Zygia2V5UGF0aENo
ZWNrQ3Vyc29yKCkiKTsKKyAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBudWxsKSB7Cisg
ICAgICAgIHNob3VsZEJlKCJjb3VudGVyIiwgIjUiKTsKKyAgICAgICAgY291bnRlciA9IDE7CisK
KyAgICAgICAga2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKDEwMSk7CisgICAgICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgna2V5UGF0aFN0b3JlJyku
aW5kZXgoJ251bWJlckluZGV4Jykub3BlbktleUN1cnNvcihrZXlSYW5nZSkiKTsKKyAgICAgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBrZXlDdXJzb3I7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
c2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgImNvdW50ZXIiKTsKKyAgICBzaG91
bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS5pZCIsICJjb3VudGVyIik7CisgICAgc2hv
dWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUubnVtYmVyIiwgKGNvdW50ZXIgKyAxMDAp
LnRvU3RyaW5nKCkpOworICAgIGNvdW50ZXIrKzsKKyAgICBldmFsQW5kTG9nKCJldmVudC50YXJn
ZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKK30KKworZnVuY3Rpb24ga2V5Q3Vyc29yKCkKK3sKKyAg
ICBkZWJ1Zygia2V5Q3Vyc29yKCkiKTsKKyAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBu
dWxsKSB7CisgICAgICAgIHNob3VsZEJlKCJjb3VudGVyIiwgIjUiKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICJjb3Vu
dGVyICsgMTAwIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtl
eSIsICJjb3VudGVyIik7CisKKyAgICB0cnkgeworICAgICAgICBkZWJ1ZygiZXZlbnQudGFyZ2V0
LnJlc3VsdC51cGRhdGUoe2lkOiBjb3VudGVyLCBudW1iZXI6IGNvdW50ZXIgKyAyMDB9KSIpOwor
ICAgICAgICBldmVudC50YXJnZXQucmVzdWx0LnVwZGF0ZSh7aWQ6IGNvdW50ZXIsIG51bWJlcjog
Y291bnRlciArIDIwMH0pOworICAgICAgICB0ZXN0RmFpbGVkKCJFeHBlY3RlZCBleGNlcHRpb24u
Iik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBjb2RlID0gZS5jb2RlOworICAgICAgICBz
aG91bGRCZSgiY29kZSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9FUlIiKTsK
KyAgICB9CisKKyAgICBjb3VudGVyKys7CisgICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51
ZSgpOworfQorCitmdW5jdGlvbiB0cmFuc2FjdGlvbkNvbXBsZXRlKCkKK3sKKyAgICBkZWJ1Zygi
dHJhbnNhY3Rpb25Db21wbGV0ZSgpIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL2RhdGEtY29ycnVwdGlvbi5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9kYXRhLWNvcnJ1cHRpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDE1NWI4
MzhkMmEwN2E5YzVjZTY0ZDAzYzU2ZGNmODdlMjljNTg2YgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kYXRhLWNvcnJ1cHRpb24uanMK
QEAgLTAsMCArMSw2NSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNj
cmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAg
aW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoYXQg
ZGF0YSBpbnNlcnRlZCBpbnRvIEluZGV4ZWREQiBkb2VzIG5vdCBnZXQgY29ycnVwdGVkIG9uIGRp
c2suIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdkYXRhLWNvcnJ1cHRp
b24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5T
dWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBzZWxmLmRiID0g
ZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb25TdWNjZXNzKCkK
K3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKKyAgICBzZWxmLnRyYW5zID0g
ZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVU
cnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJv
cnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gYWRkRGF0YTsKKworICAgIGRlbGV0
ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RT
dG9yZSgnc3RvcmVOYW1lJykiKTsKK30KKwordmFyIHRlc3REYXRlID0gbmV3IERhdGUoJ0ZlYnJ1
YXJ5IDI0LCAxOTU1IDEyOjAwOjA4Jyk7CisKK2Z1bmN0aW9uIGFkZERhdGEoKQoreworICAgIGRl
YnVnKCJhZGREYXRhKCk6Iik7CisgICAgdmFyIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJh
bnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5S
RUFEX1dSSVRFKSIpOworICAgIHZhciByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHRy
YW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKS5hZGQoe3g6IHRlc3REYXRlfSwgJ2tl
eScpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cisg
ICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGdldERhdGE7Cit9CisKK2Z1bmN0aW9uIGdldERh
dGEoKQoreworICAgIGRlYnVnKCJhZGREYXRhKCk6Iik7CisgICAgdmFyIHRyYW5zYWN0aW9uID0g
ZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJ
REJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7CisgICAgdmFyIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpLmdldCgna2V5
JykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRvQ2hlY2s7Cit9CisKK2Z1bmN0aW9uIGRvQ2hlY2soKQor
eworICAgIHNob3VsZEJlVHJ1ZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC54LnRvU3RyaW5nKCkgPT0g
dGVzdERhdGUudG9TdHJpbmcoKSIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGFiYXNlLWJhc2ljcy5qcyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kYXRhYmFzZS1iYXNpY3MuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMmE1YTdhNzNlMTRhZTU2NTdjMWE1YWM0ZjU0NTY5NzBlZDJhYjQ4ZAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kYXRhYmFzZS1i
YXNpY3MuanMKQEAgLTAsMCArMSwxMTUgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAg
ICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigi
VGVzdCB0aGUgYmFzaWNzIG9mIEluZGV4ZWREQidzIElEQkRhdGFiYXNlLiIpOworCitmdW5jdGlv
biB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdkYXRhYmFzZS1iYXNpY3MnKSIpOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAg
ICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNp
b25TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKKyAgICBz
ZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Cisg
ICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1
bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7
CisKKyAgICBkZWJ1ZygiVGVzdGluZyBzZXRWZXJzaW9uLiIpOworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCdkYi5zZXRWZXJzaW9uKCJ2ZXJzaW9uIGEiKScpOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gc2V0VmVyc2lvbkFnYWluOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uQWdhaW4oKQoreworICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCdkYi5zZXRWZXJzaW9uKCJ2ZXJzaW9uIGIiKScpOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gY3JlYXRlT2JqZWN0U3RvcmU7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZU9iamVjdFN0
b3JlKCkKK3sKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLnZlcnNpb24iLCAidmVyc2lv
biBiIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkYi5uYW1lIiwgImRhdGFiYXNlLWJh
c2ljcyIpOworICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzIiwgIltdIik7CisgICAg
c2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjAiKTsKKyAgICBzaG91bGRC
ZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucygnJykiLCAiZmFsc2UiKTsKKyAgICBzaG91
bGRCZU51bGwoImRiLm9iamVjdFN0b3JlTmFtZXNbMF0iKTsKKyAgICBzaG91bGRCZU51bGwoImRi
Lm9iamVjdFN0b3JlTmFtZXMuaXRlbSgwKSIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5k
TG9nKCdkYi5jcmVhdGVPYmplY3RTdG9yZSgidGVzdDEyMyIpJyk7CisgICAgY2hlY2tPYmplY3RT
dG9yZSgpOworICAgIGNvbW1pdEFuZENvbnRpbnVlKCk7Cit9CisKK2Z1bmN0aW9uIGNoZWNrT2Jq
ZWN0U3RvcmUoKQoreworICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzIiwgIlsndGVz
dDEyMyddIik7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjEi
KTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucygnJykiLCAiZmFs
c2UiKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucygndGVzdDQ1
NicpIiwgImZhbHNlIik7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFp
bnMoJ3Rlc3QxMjMnKSIsICJ0cnVlIik7Cit9CisKK2Z1bmN0aW9uIGNvbW1pdEFuZENvbnRpbnVl
KCkKK3sKKyAgICBzZWxmLnNldFRpbWVvdXQodGVzdFNldFZlcnNpb25BYm9ydCwgMCk7Cit9CisK
K2Z1bmN0aW9uIHRlc3RTZXRWZXJzaW9uQWJvcnQoKQoreworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCdkYi5zZXRWZXJzaW9uKCJ2ZXJzaW9uIGMiKScpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gY3JlYXRlQW5vdGhlck9iamVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjcmVhdGVBbm90aGVyT2JqZWN0U3Rv
cmUoKQoreworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGIudmVyc2lvbiIsICJ2ZXJzaW9u
IGMiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLm5hbWUiLCAiZGF0YWJhc2UtYmFz
aWNzIik7CisgICAgY2hlY2tPYmplY3RTdG9yZSgpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFs
QW5kTG9nKCdkYi5jcmVhdGVPYmplY3RTdG9yZSgidGVzdDQ1NiIpJyk7CisgICAgdmFyIHNldFZl
cnNpb25UcmFucyA9IGV2YWxBbmRMb2coInNldFZlcnNpb25UcmFucyA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInNldFZlcnNpb25UcmFucyAhPT0gbnVsbCIpOwor
ICAgIHNldFZlcnNpb25UcmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJh
Y2s7CisgICAgc2V0VmVyc2lvblRyYW5zLm9uYWJvcnQgPSBjaGVja01ldGFkYXRhOworICAgIHNl
dFZlcnNpb25UcmFucy5hYm9ydCgpOworfQorCitmdW5jdGlvbiBjaGVja01ldGFkYXRhKCkKK3sK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLnZlcnNpb24iLCAidmVyc2lvbiBiIik7Cisg
ICAgY2hlY2tPYmplY3RTdG9yZSgpOworICAgIHRlc3RDbG9zZSgpOworfQorCitmdW5jdGlvbiB0
ZXN0Q2xvc2UoKQoreworICAgIGV2YWxBbmRMb2coImRiLmNsb3NlKCkiKTsKKyAgICBkZWJ1Zygi
Tm93IHRoYXQgdGhlIGNvbm5lY3Rpb24gaXMgY2xvc2VkLCB0cmFuc2FjdGlvbiBjcmVhdGlvbiBz
aG91bGQgZmFpbCIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9u
KCd0ZXN0MTIzJykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0FMTE9XRURfRVJSIik7Cisg
ICAgZGVidWcoIkNhbGwgdHdpY2UsIG1ha2Ugc3VyZSBpdCdzIGhhcm1sZXNzIik7CisgICAgZXZh
bEFuZExvZygiZGIuY2xvc2UoKSIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGFiYXNlLW5hbWUtdW5kZWZpbmVkLmpzIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGFiYXNlLW5hbWUtdW5kZWZp
bmVkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjBiNjQ5Y2M1Y2E1NzM1ZjNiNDVjZTUyYTgwYzc5NmRlOGQyYmJh
ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvZGF0YWJhc2UtbmFtZS11bmRlZmluZWQuanMKQEAgLTAsMCArMSwxNSBAQAoraWYgKHRo
aXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpz
Jyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiB1bmRlZmluZWQgYXMgcmVjb3Jk
IHZhbHVlIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVz
KCk7CisgICAgc2hvdWxkVGhyb3coImluZGV4ZWREQi5vcGVuKCk7Iik7CisgICAgZmluaXNoSlNU
ZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGF0YWJhc2Utb2Rk
LW5hbWVzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGFi
YXNlLW9kZC1uYW1lcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOTRmMWU3NmVlMjUwYzI4MGNmMTUxMjA5Yzky
ZjBhNjQyMzJhNzYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL2RhdGFiYXNlLW9kZC1uYW1lcy5qcwpAQCAtMCwwICsxLDMxIEBACitp
ZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFy
ZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIG9kZCB2YWx1ZSBkYXRh
dHlwZXMiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMo
KTsKKworICAgIHRlc3REYXRhID0gW3sgZGVzY3JpcHRpb246ICdudWxsJywgICAgICAgICAgICAg
ICBuYW1lOiAnXHUwMDAwJyB9LAorICAgICAgICAgICAgICAgIHsgZGVzY3JpcHRpb246ICdmYWlo
dScsICAgICAgICAgICAgICBuYW1lOiAnXHVkODAwXHVkZjQ2JyB9LAorICAgICAgICAgICAgICAg
IHsgZGVzY3JpcHRpb246ICd1bnBhaXJlZCBzdXJyb2dhdGUnLCBuYW1lOiAnXHVkODAwJyB9LAor
ICAgICAgICAgICAgICAgIHsgZGVzY3JpcHRpb246ICdmZmZlJywgICAgICAgICAgICAgICBuYW1l
OiAnXHVmZmZlJyB9LAorICAgICAgICAgICAgICAgIHsgZGVzY3JpcHRpb246ICdmZmZmJywgICAg
ICAgICAgICAgICBuYW1lOiAnXHVmZmZmJyB9LAorICAgICAgICAgICAgICAgIHsgZGVzY3JpcHRp
b246ICdsaW5lIHNlcGFyYXRvcicsICAgICBuYW1lOiAnXHUyMDI4JyB9CisgICAgXTsKKyAgICBu
ZXh0VG9PcGVuID0gMDsKKyAgICBvcGVuTmV4dERhdGFiYXNlKCk7Cit9CisKK2Z1bmN0aW9uIG9w
ZW5OZXh0RGF0YWJhc2UoKQoreworICAgIGRlYnVnKCJvcGVuaW5nIGEgZGF0YWJhc2UgbmFtZWQg
IiArIHRlc3REYXRhW25leHRUb09wZW5dLmRlc2NyaXB0aW9uKTsKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiaW5kZXhlZERCLm9wZW4odGVzdERhdGFbbmV4dFRvT3Blbl0ubmFtZSwgdGVzdERh
dGFbbmV4dFRvT3Blbl0uZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSArK25leHRUb09w
ZW4gPCB0ZXN0RGF0YS5sZW5ndGggPyBvcGVuTmV4dERhdGFiYXNlIDogZmluaXNoSlNUZXN0Owor
fQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGFiYXNlLXF1b3RhLmpzIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGFiYXNlLXF1b3RhLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmFlMDkxNWZkMDIyOGU5OTI5ZmZjYzU2YTMwOGQ2MDg0ODk4NjBhZTgKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
ZGF0YWJhc2UtcXVvdGEuanMKQEAgLTAsMCArMSw5NyBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0
cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2Ny
aXB0aW9uKCJUZXN0cyBJbmRleGVkREIncyBxdW90YSBlbmZvcmNpbmcgbWVjaGFuaXNtLiIpOwor
CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignZGF0YWJhc2UtcXVvdGEnKSIpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkK
K3sKKyAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24n
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNl
dFZlcnNpb25TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsK
KyAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJv
cnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gY2hl
Y2tRdW90YUVuZm9yY2luZzsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLnZlcnNpb24iLCAibmV3IHZlcnNpb24iKTsKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLm5hbWUiLCAiZGF0YWJhc2UtcXVvdGEiKTsKKyAg
ICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcyIsICJbXSIpOworICAgIHNob3VsZEJlKCJk
Yi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIwIik7CisgICAgc2hvdWxkQmUoImRiLm9iamVj
dFN0b3JlTmFtZXMuY29udGFpbnMoJycpIiwgImZhbHNlIik7CisKKyAgICBvYmplY3RTdG9yZSA9
IGV2YWxBbmRMb2coJ2RiLmNyZWF0ZU9iamVjdFN0b3JlKCJ0ZXN0MTIzIiknKTsKKyAgICBjaGVj
a09iamVjdFN0b3JlKCk7Cit9CisKK2Z1bmN0aW9uIGNoZWNrT2JqZWN0U3RvcmUoKQoreworICAg
IHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzIiwgIlsndGVzdDEyMyddIik7CisgICAgc2hv
dWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjEiKTsKKyAgICBzaG91bGRCZSgi
ZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucygnJykiLCAiZmFsc2UiKTsKKyAgICBzaG91bGRC
ZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucygndGVzdDQ1NicpIiwgImZhbHNlIik7Cisg
ICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJ3Rlc3QxMjMnKSIsICJ0
cnVlIik7Cit9CisKK2Z1bmN0aW9uIGNoZWNrUXVvdGFFbmZvcmNpbmcoKQoreworICAgIHZhciB0
cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWyd0ZXN0MTIzJ10sIElE
QlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgdHJhbnMub25hYm9ydCA9IHRlc3RDb21w
bGV0ZTsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7
CisgICAgZGVidWcoIkNyZWF0aW5nICdkYXRhJyB3aGljaCBjb250YWlucyA2NEsgb2YgZGF0YSIp
OworICAgIHNlbGYuZGF0YSA9ICJYIjsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyBpKysp
CisgICAgICAgIGRhdGEgKz0gZGF0YTsKKyAgICBzaG91bGRCZSgiZGF0YS5sZW5ndGgiLCAiNjU1
MzYiKTsKKyAgICBzZWxmLmRhdGFBZGRlZCA9IDA7CisgICAgc2VsZi5zdG9yZSA9IGV2YWxBbmRM
b2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3Rlc3QxMjMnKSIpOworICAgIGFkZERhdGEo
KTsKK30KKworZnVuY3Rpb24gYWRkRGF0YSgpCit7CisgICAgaWYgKGRhdGFBZGRlZCA8IDUgKiAx
MDI0ICogMTAyNCkgeworICAgICAgICBpZiAoZGF0YUFkZGVkID4gMCkKKyAgICAgICAgICAgIHN0
b3JlID0gZXZlbnQudGFyZ2V0LnNvdXJjZTsKKyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0RmFp
bGVkKCJhZGRlZCBtb3JlIHRoYW4gcXVvdGEiKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZGF0YUFkZGVkICs9IDY1NTM2OworICAgIHJlcXVl
c3QgPSBzdG9yZS5hZGQoe3g6IGRhdGF9LCBkYXRhQWRkZWQpOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gYWRkRGF0YTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBsb2dFcnJvcjsKK30KKworZnVu
Y3Rpb24gbG9nRXJyb3IoKQoreworICAgIGRlYnVnKCJFcnJvciBmdW5jdGlvbiBjYWxsZWQ6ICgi
ICsgZXZlbnQudGFyZ2V0LmVycm9yQ29kZSArICIpICIgKyBldmVudC50YXJnZXQud2Via2l0RXJy
b3JNZXNzYWdlKTsKKyAgICBldmFsQW5kTG9nKCJldmVudC5wcmV2ZW50RGVmYXVsdCgpIik7Cit9
CisKK2Z1bmN0aW9uIHRlc3RDb21wbGV0ZSgpCit7CisgICAgdGVzdFBhc3NlZCgiQWRkaW5nIGRh
dGEgZmFpbGVkIGR1ZSB0byBxdW90YSBlcnJvci4gRGF0YSBhZGRlZCB3YXMgYWJvdXQgIiArIE1h
dGgucm91bmQoZGF0YUFkZGVkIC8gMTAyNCAvIDEwMjQpICsgIiBNQiIpOworICAgIGZpbmlzaEpT
VGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RlbGV0ZS1jbG9z
ZWQtZGF0YWJhc2Utb2JqZWN0LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL2RlbGV0ZS1jbG9zZWQtZGF0YWJhc2Utb2JqZWN0LmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkMzI5
YTJiN2EzYjcwYzA3ZTFmZmY4YjZkNmViYTE4ZDI4NDAzYjgKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGVsZXRlLWNsb3NlZC1kYXRh
YmFzZS1vYmplY3QuanMKQEAgLTAsMCArMSw0OSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykg
eworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0
aW9uKCJFbnN1cmUgdGhhdCBJREJEYXRhYmFzZSBvYmplY3RzIGFyZSBkZWxldGVkIHdoZW4gdGhl
cmUgYXJlIG5vIHJldGFpbmluZyBwYXRocyBsZWZ0Iik7CisKK2Z1bmN0aW9uIHRlc3QoKSB7Cisg
ICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBvcGVuREJDb25uZWN0aW9uKCk7Cit9CisK
K2Z1bmN0aW9uIG9wZW5EQkNvbm5lY3Rpb24oKQoreworICAgIGV2YWxBbmRMb2coInNlbGYuc3Rh
dGUgPSAnc3RhcnRpbmcnIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5v
cGVuKCdkZWxldGUtY2xvc2VkLWRhdGFiYXNlLW9iamVjdCcpIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIHNlbGYuZGIg
PSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIC8vIE9wZW4g
YSBzZWNvbmQgY29ubmVjdGlvbiB0byB0aGUgc2FtZSBkYXRhYmFzZS4KKyAgICB2YXIgcmVxdWVz
dDIgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignZGVsZXRlLWNsb3NlZC1kYXRhYmFzZS1v
YmplY3QnKSIpOworICAgIHJlcXVlc3QyLm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzMjsKKyAgICBy
ZXF1ZXN0Mi5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IG9wZW5TdWNjZXNzMigpCit7CisgICAgZGVidWcoIlNlY29uZCBjb25uZWN0aW9uIHN1Y2Nlc3Nm
dWxseSBlc3RhYmxpc2hlZC4iKTsKKyAgICAvLyBBZnRlciBsZWF2aW5nIHRoaXMgZnVuY3Rpb24s
IHRoZXJlIGFyZSBubyByZW1haW5pbmcgcmVmZXJlbmNlcyB0byB0aGUKKyAgICAvLyBzZWNvbmQg
Y29ubmVjdGlvbiwgc28gaXQgc2hvdWxkIGdldCBkZWxldGVkLgorICAgIHNldFRpbWVvdXQoc2V0
VmVyc2lvbiwgMik7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb24oKQoreworICAgIGdjKCk7Cisg
ICAgZGVidWcoImNhbGxpbmcgc2V0VmVyc2lvbigpIC0gY2FsbGJhY2sgc2hvdWxkIHJ1biBpbW1l
ZGlhdGVseSIpOworICAgIHZhciB2ZXJzaW9uQ2hhbmdlUmVxdWVzdCA9IGV2YWxBbmRMb2coImRi
LnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7CisgICAgdmVyc2lvbkNoYW5nZVJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0
Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7CisgICAgdmVyc2lvbkNoYW5n
ZVJlcXVlc3Qub25zdWNjZXNzID0gZmluaXNoSlNUZXN0OworfQorCit0ZXN0KCk7ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL2RlbGV0ZS1yYW5nZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9kZWxldGUtcmFuZ2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTVkZjc3ZjIzNDcz
Njg5ODc4NDlkYzZlMWM1N2Q3ODYyYzMxZjZlOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kZWxldGUtcmFuZ2UuanMKQEAgLTAsMCAr
MSw5MCBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4u
Ly4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2Ny
aXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIElE
Qk9iamVjdFN0b3JlLmRlbGV0ZShJREJLZXlSYW5nZSkgbWV0aG9kLiIpOworCitmdW5jdGlvbiB0
ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgZXZhbEFuZExvZygi
cmVxdWVzdCA9IGluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgnZGVsZXRlLXJhbmdlJykiKTsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgZXZhbEFuZExvZygicmVxdWVzdCA9
IGluZGV4ZWREQi5vcGVuKCdkZWxldGUtcmFuZ2UnKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJkYiA9IHJlcXVlc3QucmVz
dWx0Iik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbign
MScpIik7CisgICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKKyAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgICAgIGV2YWxBbmRMb2coInRyYW5zID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAg
ICAgICAgICAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisKKyAg
ICAgICAgICAgICAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIp
OworCisgICAgICAgICAgICAgICAgdHJhbnMub25jb21wbGV0ZSA9IHJ1blRlc3RzOworICAgICAg
ICAgICAgfTsKKyAgICAgICAgfTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNoZWNrS2V5cyhleHBl
Y3RlZCwgY2FsbGJhY2spCit7CisgICAgZGVidWcoImdldHRpbmcga2V5cyBmcm9tIHN0b3JlLi4u
Iik7CisgICAgZGVidWcoImV4cGVjdDogIiArIEpTT04uc3RyaW5naWZ5KGV4cGVjdGVkKSk7Cisg
ICAgdmFyIGtleXMgPSBbXTsKKyAgICByZXF1ZXN0ID0gc3RvcmUub3BlbkN1cnNvcigpOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICBjdXJzb3IgPSByZXF1ZXN0LnJlc3Vs
dDsKKyAgICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICAgICAga2V5cy5wdXNoKGN1cnNvci5r
ZXkpOworICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBkZWJ1ZygiYWN0dWFsOiAiICsgSlNPTi5zdHJpbmdpZnkoa2V5cykpOworICAg
ICAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KGV4cGVjdGVkKSA9PT0gSlNPTi5zdHJpbmdpZnko
a2V5cykpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJNYXRjaCEiKTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiRG9uJ3QgbWF0Y2ghIik7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworfQorCit2YXIgdGVzdHMgPSBbCisg
ICAgeyBsb3dlcjogMywgdXBwZXI6IDgsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyT3BlbjogZmFs
c2UsIGV4cGVjdGVkOiBbMSwgMiwgOSwgMTBdfSwKKyAgICB7IGxvd2VyOiAzLCB1cHBlcjogOCwg
bG93ZXJPcGVuOiB0cnVlLCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogWzEsIDIsIDMsIDks
IDEwXX0sCisgICAgeyBsb3dlcjogMywgdXBwZXI6IDgsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVy
T3BlbjogdHJ1ZSwgZXhwZWN0ZWQ6IFsxLCAyLCA4LCA5LCAxMF19LAorICAgIHsgbG93ZXI6IDMs
IHVwcGVyOiA4LCBsb3dlck9wZW46IHRydWUsIHVwcGVyT3BlbjogdHJ1ZSwgZXhwZWN0ZWQ6IFsx
LCAyLCAzLCA4LCA5LCAxMF19CitdOworCitmdW5jdGlvbiBydW5UZXN0cygpCit7CisgICAgZnVu
Y3Rpb24gbmV4dFRlc3QoKSB7CisgICAgICAgIHZhciB0ZXN0ID0gdGVzdHMuc2hpZnQoKTsKKyAg
ICAgICAgaWYgKHRlc3QpIHsKKyAgICAgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgICAgIGV2
YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24u
UkVBRF9XUklURSkiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2Jq
ZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICAgICAgICAgIGZvciAoaSA9IDE7IGkgPD0gMTA7ICsr
aSkgeworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgiICsgaSArICIsIiAr
IGkgKyAiKSIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZXZhbEFuZExvZygic3RvcmUu
ZGVsZXRlKElEQktleVJhbmdlLmJvdW5kKCIgKworICAgICAgICAgICAgICAgIHRlc3QubG93ZXIg
KyAiLCAiICsKKyAgICAgICAgICAgICAgICB0ZXN0LnVwcGVyICsgIiwgIiArCisgICAgICAgICAg
ICAgICAgdGVzdC5sb3dlck9wZW4gKyAiLCAiICsKKyAgICAgICAgICAgICAgICB0ZXN0LnVwcGVy
T3BlbiArICIpKSIpOworICAgICAgICAgICAgY2hlY2tLZXlzKHRlc3QuZXhwZWN0ZWQsIG5leHRU
ZXN0KTsKKyAgICAgICAgICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFj
azsKKyAgICAgICAgICAgIHRyYW5zLm9uY29tcGxldGUgPSBuZXh0VGVzdDsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgfQorICAgIG5leHRUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvZGVsZXRlSW5kZXguanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvZGVsZXRlSW5kZXguanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGNiNWJlZGM2MDA4MjNj
ZTliZjljM2JhYTRlODZmN2FmZDExNzJlOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kZWxldGVJbmRleC5qcwpAQCAtMCwwICsxLDUw
IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRz
KCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGRlbGV0ZUlu
ZGV4IG1ldGhvZCIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVm
aXhlcygpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignZGVsZXRl
SW5kZXgnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9w
ZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJz
aW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHR3aWRkbGVJbmRleGVzOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biB0d2lkZGxlSW5kZXhlcygpCit7CisgICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFu
c2FjdGlvbiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgdHJhbnNhY3Rpb24ub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1
bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gcG9z
dFR3aWRkbGluZzsKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgb2JqZWN0
U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdm
b28nKTsiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJvYmplY3RTdG9yZS5kZWxldGVJ
bmRleCgnZmlyc3QnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7Cisg
ICAgc2hvdWxkVGhyb3coIm9iamVjdFN0b3JlLmRlbGV0ZUluZGV4KCkiKTsgLy8gVHlwZUVycm9y
OiBub3QgZW5vdWdoIGFyZ3VtZW50cy4KKyAgICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0g
b2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ2ZpcnN0JywgJ2ZpcnN0Jyk7Iik7CisgICAgZXZhbEFu
ZEV4cGVjdEV4Y2VwdGlvbigib2JqZWN0U3RvcmUuZGVsZXRlSW5kZXgoJ0ZJUlNUJykiLCAiSURC
RGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOworICAgIGluZGV4ID0gZXZhbEFuZExv
ZygiaW5kZXggPSBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgnc2Vjb25kJywgJ3NlY29uZCcpOyIp
OworICAgIHJldHVyblZhbHVlID0gZXZhbEFuZExvZygicmV0dXJuVmFsdWUgPSBvYmplY3RTdG9y
ZS5kZWxldGVJbmRleCgnZmlyc3QnKTsiKTsKKyAgICBzaG91bGRCZSgicmV0dXJuVmFsdWUiLCAi
dW5kZWZpbmVkIik7Cit9CisKK2Z1bmN0aW9uIHBvc3RUd2lkZGxpbmcoKQoreworICAgIGV2YWxB
bmRFeHBlY3RFeGNlcHRpb24oImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdiYXInKTsiLCAiSURCRGF0
YWJhc2VFeGNlcHRpb24uTk9UX0FMTE9XRURfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2Vw
dGlvbigib2JqZWN0U3RvcmUuZGVsZXRlSW5kZXgoJ3NlY29uZCcpIiwgIklEQkRhdGFiYXNlRXhj
ZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOworICAgIGZpbmlzaEpTVGVzdCgpOwor
fQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RlbGV0ZU9iamVjdFN0b3JlLW5h
bWUtYXJndW1lbnQtcmVxdWlyZWQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvZGVsZXRlT2JqZWN0U3RvcmUtbmFtZS1hcmd1bWVudC1yZXF1aXJlZC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mNjA5MmExMzU4OTI3NjZjNmYyMjFlMjVlNWRlYTkyZWRjMjIzYzI1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RlbGV0
ZU9iamVjdFN0b3JlLW5hbWUtYXJndW1lbnQtcmVxdWlyZWQuanMKQEAgLTAsMCArMSwzNiBAQAor
aWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hh
cmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBkZWxldGVPYmplY3RT
dG9yZSByZXF1aXJlZCBhcmd1bWVudCIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1v
dmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7
CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBk
YiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNyZWF0
ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jlcyhk
Yik7CisKKyAgICBzaG91bGRUaHJvdygiZGIuZGVsZXRlT2JqZWN0U3RvcmUoKTsiKTsKKyAgICBm
aW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kZWxl
dGVPYmplY3RTdG9yZS1udWxsLW5hbWUuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvZGVsZXRlT2JqZWN0U3RvcmUtbnVsbC1uYW1lLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0
YTgzMzVhYjcxZDQ1ZmQxZTM0NmE5Yzc2YTllMmMwMjVlYzFkNGMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGVsZXRlT2JqZWN0U3Rv
cmUtbnVsbC1uYW1lLmpzCkBAIC0wLDAgKzEsMzcgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMp
IHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlw
dGlvbigiVGVzdCBJbmRleGVkREIgZGVsZXRlT2JqZWN0U3RvcmUgcmVxdWlyZWQgYXJndW1lbnQi
KTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKwor
ICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15
IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Bl
bihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNj
ZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVB
bmRQb3B1bGF0ZU9iamVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3Jl
KCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgZXZhbEFuZExvZygi
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ251bGwnKTsiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5kZWxl
dGVPYmplY3RTdG9yZShudWxsKTsiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgp
OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kdXBsaWNhdGVzLmpzIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2R1cGxpY2F0ZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTEzM2Fl
OGQxYzRkOTVlNzVjMzdjOTc1NzE0YWRmYzlhZTJmNzYzZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kdXBsaWNhdGVzLmpzCkBAIC0w
LDAgKzEsMTY2IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0
cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBv
cnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlZlcmlmeSB0aGF0IHlv
dSBjYW4gcHV0IHRoZSBzYW1lIGRhdGEgaW4gMiBkaWZmZXJlbnQgZGF0YWJhc2VzIHdpdGhvdXQg
dW5pcXVlbmVzcyBjb25zdHJhaW50cyBmaXJpbmcuIik7CisKK3Rlc3RDb3VudCA9IDA7CitmdW5j
dGlvbiB0ZXN0KCkKK3sKKyAgICBpZiAodGVzdENvdW50KysgPT0gMCkKKyAgICAgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdkdXBsaWNhdGVzLTEnKSIpOworICAgIGVs
c2UKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdkdXBsaWNh
dGVzLTInKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvbjsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0
VmVyc2lvbigpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVy
c2lvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
ZGVsZXRlRXhpc3RpbmcoKQoreworICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOwor
ICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9y
dCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVz
KGRiKTsKKworICAgIHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9y
ZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKKyAgICBzZWxmLmluZGV4T2JqZWN0ID0gZXZhbEFuZExv
Zygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZScsICd4JykiKTsKKyAgICBhZGREYXRhKCk7
Cit9CisKK2Z1bmN0aW9uIGFkZERhdGEoKQoreworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJz
dG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBhZGRNb3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBhZGRNb3JlKCkKK3sKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiZXZlbnQudGFyZ2V0LnNvdXJjZS5hZGQoe3g6ICd2YWx1ZTInLCB5OiAnenp6Mid9
LCAna2V5MicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXREYXRhOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBnZXRE
YXRhKCkKK3sKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhPYmplY3QuZ2V0S2V5KCd2
YWx1ZScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRPYmplY3REYXRhOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBn
ZXRPYmplY3REYXRhKCkKK3sKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdl
dC5yZXN1bHQiLCAia2V5Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhPYmpl
Y3QuZ2V0KCd2YWx1ZScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXREYXRhRmFpbDsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gZ2V0RGF0YUZhaWwoKQoreworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQu
dGFyZ2V0LnJlc3VsdC54IiwgInZhbHVlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJl
dmVudC50YXJnZXQucmVzdWx0LnkiLCAienp6Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiaW5kZXhPYmplY3QuZ2V0S2V5KCdkb2VzIG5vdCBleGlzdCcpIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBnZXRPYmplY3REYXRhRmFpbDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZ2V0T2JqZWN0RGF0YUZhaWwoKQor
eworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgInVuZGVmaW5lZCIpOworCisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0LmdldCgnZG9lcyBub3QgZXhpc3Qn
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbktleUN1cnNvcjsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3Blbktl
eUN1cnNvcigpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAidW5kZWZp
bmVkIik7CisKKyAgICBzZWxmLnJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5vcGVu
S2V5Q3Vyc29yKCkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvcjFDb250aW51ZTsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gY3Vyc29yMUNvbnRpbnVlKCkKK3sKKyAgICBzaG91bGRCZUZhbHNlKCJldmVudC50YXJn
ZXQucmVzdWx0ID09PSBudWxsIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50
YXJnZXQucmVzdWx0LmtleSIsICJ2YWx1ZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
ZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgImtleSIpOworCisgICAgLy8gV2UgcmUt
dXNlIHRoZSBsYXN0IHJlcXVlc3Qgb2JqZWN0LgorICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdl
dC5yZXN1bHQuY29udGludWUoKSIpOworICAgIHNlbGYucmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJz
b3IxQ29udGludWUyOworfQorCitmdW5jdGlvbiBjdXJzb3IxQ29udGludWUyKCkKK3sKKyAgICBz
aG91bGRCZUZhbHNlKCJldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsIik7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICJ2YWx1ZTIiKTsKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIs
ICJrZXkyIik7CisKKyAgICAvLyBXZSByZS11c2UgdGhlIGxhc3QgcmVxdWVzdCBvYmplY3QuCisg
ICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7CisgICAgc2Vs
Zi5yZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5PYmplY3RDdXJzb3I7Cit9CisKK2Z1bmN0aW9uIG9w
ZW5PYmplY3RDdXJzb3IoKQoreworICAgIHNob3VsZEJlVHJ1ZSgiZXZlbnQudGFyZ2V0LnJlc3Vs
dCA9PT0gbnVsbCIpOworCisgICAgc2VsZi5yZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhPYmpl
Y3Qub3BlbkN1cnNvcigpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3IyQ29udGlu
dWU7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIGN1cnNvcjJDb250aW51ZSgpCit7CisgICAgc2hvdWxkQmVGYWxzZSgiZXZlbnQu
dGFyZ2V0LnJlc3VsdCA9PT0gbnVsbCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZl
bnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAidmFsdWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUueCIsICJ2YWx1ZSIpOworICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS55IiwgInp6eiIpOworCisg
ICAgLy8gV2UgcmUtdXNlIHRoZSBsYXN0IHJlcXVlc3Qgb2JqZWN0LgorICAgIGV2YWxBbmRMb2co
ImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOworICAgIHNlbGYucmVxdWVzdC5vbnN1
Y2Nlc3MgPSBjdXJzb3IyQ29udGludWUyOworfQorCitmdW5jdGlvbiBjdXJzb3IyQ29udGludWUy
KCkKK3sKKyAgICBzaG91bGRCZUZhbHNlKCJldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsIik7
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICJ2
YWx1ZTIiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQu
dmFsdWUueCIsICJ2YWx1ZTIiKTsgICAgCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVu
dC50YXJnZXQucmVzdWx0LnZhbHVlLnkiLCAienp6MiIpOworCisgICAgLy8gV2UgcmUtdXNlIHRo
ZSBsYXN0IHJlcXVlc3Qgb2JqZWN0LgorICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1
bHQuY29udGludWUoKSIpOworICAgIHNlbGYucmVxdWVzdC5vbnN1Y2Nlc3MgPSBsYXN0OworfQor
CitmdW5jdGlvbiBsYXN0KCkKK3sKKyAgICBzaG91bGRCZVRydWUoImV2ZW50LnRhcmdldC5yZXN1
bHQgPT09IG51bGwiKTsKKworICAgIGlmICh0ZXN0Q291bnQgPT0gMSkKKyAgICAgICAgdGVzdCgp
OworICAgIGVsc2UKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3JlbW92ZVZlbmRvclBy
ZWZpeGVzKCk7Cit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2Vycm9yLWNhdXNlcy1h
Ym9ydC1ieS1kZWZhdWx0LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL2Vycm9yLWNhdXNlcy1hYm9ydC1ieS1kZWZhdWx0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZkM2E3Y2Rm
NDE3NTU5YjNjZjM4MjdhMGE3ODdmNDNmMjY1ZGUzYjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZXJyb3ItY2F1c2VzLWFib3J0LWJ5
LWRlZmF1bHQuanMKQEAgLTAsMCArMSwxMDEgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsK
KyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlv
bigiVmVyaWZ5IHRoYXQgYSB0cmFuc2FjdGlvbiB3aXRoIGFuIGVycm9yIGFib3J0cyB1bmxlc3Mg
cHJldmVudERlZmF1bHQoKSBpcyBjYWxsZWQuIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAg
IHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4
ZWREQi5vcGVuKCdlcnJvci1jYXVzZXMtYWJvcnQtYnktZGVmYXVsdCcpIik7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uKCkKK3sKKyAgICBkYiA9
IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4aXN0aW5nOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxldGVFeGlzdGluZygpCit7Cisg
ICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7CisgICAgc2VsZi50cmFucyA9IGV2YWxB
bmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgi
dHJhbnMgIT09IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2Fs
bGJhY2s7CisgICAgZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IGFkZERhdGEiKTsKKwor
ICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBldmFsQW5kTG9nKCJkYi5jcmVh
dGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKK30KKworZnVuY3Rpb24gYWRkRGF0
YSgpCit7CisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsn
c3RvcmVOYW1lJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgZXZhbEFuZExv
ZygidHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrIik7CisgICAgZXZhbEFu
ZExvZygidHJhbnMub25jb21wbGV0ZSA9IHRyYW5zYWN0aW9uQ29tcGxldGVkIik7CisgICAgc3Rv
cmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIp
OworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6
enonfSwgJ2tleScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRNb3JlOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBh
ZGRNb3JlKCkKK3sKKyAgICAKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0
LnNvdXJjZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOworICAgIHJlcXVlc3QuYWRk
RXZlbnRMaXN0ZW5lcigiZXJyb3IiLCBwcmV2ZW50VGhlRGVmYXVsdCk7Cit9CisKK2Z1bmN0aW9u
IHByZXZlbnRUaGVEZWZhdWx0KCkKK3sKKyAgICBldmFsQW5kTG9nKCJldmVudC5wcmV2ZW50RGVm
YXVsdCgpIik7Cit9CisKK2Z1bmN0aW9uIHRyYW5zYWN0aW9uQ29tcGxldGVkKCkKK3sKKyAgICB0
ZXN0UGFzc2VkKCJUcmFuc2FjdGlvbiBjb21wbGV0ZWQiKTsKKyAgICBkZWJ1ZygiIik7CisgICAg
ZGVidWcoIiIpOworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlv
bihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIGV2YWxB
bmRMb2coInRyYW5zLm9uYWJvcnQgPSB0cmFuc2FjdGlvbkFib3J0ZWQxIik7CisgICAgZXZhbEFu
ZExvZygidHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrIik7Cisg
ICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5h
bWUnKSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScs
IHk6ICd6enonfSwgJ2tleScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVk
U3VjY2Vzc0NhbGxiYWNrOworICAgIHJlcXVlc3Qub25lcnJvciA9IGFsbG93RGVmYXVsdDsKK30K
KworZnVuY3Rpb24gYWxsb3dEZWZhdWx0KCkKK3sKKyAgICBkZWJ1ZygiRG9pbmcgbm90aGluZyB0
byBwcmV2ZW50IHRoZSBkZWZhdWx0IGFjdGlvbi4uLiIpOworfQorCitmdW5jdGlvbiB0cmFuc2Fj
dGlvbkFib3J0ZWQxKCkKK3sKKyAgICB0ZXN0UGFzc2VkKCJUcmFuc2FjdGlvbiBhYm9ydGVkIik7
CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCIiKTsKKyAgICB0cmFucyA9IGV2YWxBbmRMb2co
InRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rpb24uUkVB
RF9XUklURSkiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmFib3J0ID0gdHJhbnNhY3Rpb25B
Ym9ydGVkMiIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSB1bmV4cGVjdGVk
Q29tcGxldGVDYWxsYmFjayIpOworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFu
cy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
c3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKKyAgICBkZWJ1ZygiT21pdHRp
bmcgYW4gb25lcnJvciBoYW5kbGVyIik7Cit9CisKK2Z1bmN0aW9uIHRyYW5zYWN0aW9uQWJvcnRl
ZDIoKQoreworICAgIHRlc3RQYXNzZWQoIlRyYW5zYWN0aW9uIGFib3J0ZWQiKTsKKyAgICBmaW5p
c2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9leGNlcHRp
b24taW4tZXZlbnQtYWJvcnRzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL2V4Y2VwdGlvbi1pbi1ldmVudC1hYm9ydHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWIwNTg2ZmJh
MGEyODNlOWVlNWUzNDZiNTkwNzUwZjRkMDAxNzdkOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9leGNlcHRpb24taW4tZXZlbnQtYWJv
cnRzLmpzCkBAIC0wLDAgKzEsMTIxIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAg
aW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMn
KTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRl
c3QgZXhjZXB0aW9ucyBpbiBJREJSZXF1ZXN0IGhhbmRsZXJzIGNhdXNlIGFib3J0cy4iKTsKKwor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2V4Y2VwdGlvbi1pbi1ldmVudC1hYm9y
dHMnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvbjsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0VmVy
c2lvbigpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lv
bicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVs
ZXRlRXhpc3RpbmcoKQoreworICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOworICAg
IHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsK
KyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9
IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxl
dGUgPSBzdGFydFRlc3QiKTsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAg
ICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3Jl
TmFtZScsIG51bGwpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDog
J3ZhbHVlJywgeTogJ3p6eid9LCAna2V5JykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc3RhcnRUZXN0KCkKK3sKKyAgICBk
ZWJ1ZygiIik7CisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9u
KFsnc3RvcmVOYW1lJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgZXZhbEFu
ZExvZygidHJhbnMub25hYm9ydCA9IHRyYW5zYWN0aW9uQWJvcnRlZDEiKTsKKyAgICBldmFsQW5k
TG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2siKTsKKyAg
ICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFt
ZScpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlMics
IHk6ICd6enoyJ30sICdrZXkyJykiKTsKKyAgICB0cmFucy5hZGRFdmVudExpc3RlbmVyKCdzdWNj
ZXNzJywgY2F1c2VFeGNlcHRpb24sIHRydWUpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjYXVzZUV4Y2VwdGlvbigpCit7Cisg
ICAgZGVidWcoIiIpOworICAgIGV2YWxBbmRMb2coImV2ZW50LnByZXZlbnREZWZhdWx0KCkiKTsK
KyAgICBkZWJ1ZygiVGhyb3dpbmciKTsKKyAgICB0aHJvdyAidGhpcyBleGNlcHRpb24gaXMgZXhw
ZWN0ZWQiOworfQorCitmdW5jdGlvbiB0cmFuc2FjdGlvbkFib3J0ZWQxKCkKK3sKKyAgICBkZWJ1
ZygiIik7CisgICAgc2hvdWxkSGF2ZUhhZEVycm9yKCJ0aGlzIGV4Y2VwdGlvbiBpcyBleHBlY3Rl
ZCIpOworICAgIHRlc3RQYXNzZWQoIlRoZSB0cmFuc2FjdGlvbiB3YXMgYWJvcnRlZC4iKTsKKyAg
ICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUn
XSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5v
bmFib3J0ID0gdHJhbnNhY3Rpb25BYm9ydGVkMiIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9u
Y29tcGxldGUgPSB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjayIpOworICAgIHN0b3JlID0gZXZh
bEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdr
ZXknKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFj
azsKKyAgICBkYi5vbmVycm9yID0gY2F1c2VFeGNlcHRpb247Cit9CisKK2Z1bmN0aW9uIHRyYW5z
YWN0aW9uQWJvcnRlZDIoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBzaG91bGRIYXZlSGFkRXJy
b3IoInRoaXMgZXhjZXB0aW9uIGlzIGV4cGVjdGVkIik7CisgICAgdGVzdFBhc3NlZCgiVGhlIHRy
YW5zYWN0aW9uIHdhcyBhYm9ydGVkLiIpOworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMg
PSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRF
KSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxs
YmFjayIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSB0cmFuc2FjdGlvbkNv
bXBsZXRlZDEiKTsKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0
U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFk
ZCh7eDogJ3ZhbHVlMycsIHk6ICd6enozJ30sICdrZXkzJykiKTsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IHRocm93QW5kQ2F0Y2g7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisgICAgZGIub25lcnJvciA9IG51bGw7Cit9CisKK2Z1bmN0aW9uIHRocm93
QW5kQ2F0Y2goKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBldmFsQW5kTG9nKCJldmVudC5wcmV2
ZW50RGVmYXVsdCgpIik7CisgICAgZGVidWcoIlRocm93aW5nIHdpdGhpbiBhIHRyeSBibG9jayIp
OworICAgIHRyeSB7CisgICAgICAgIHRocm93ICJBSEhIIjsKKyAgICB9IGNhdGNoIChlKSB7Cisg
ICAgfQorfQorCitmdW5jdGlvbiB0cmFuc2FjdGlvbkNvbXBsZXRlZDEoKQoreworICAgIGRlYnVn
KCIiKTsKKyAgICB0ZXN0UGFzc2VkKCJUaGUgdHJhbnNhY3Rpb24gY29tcGxldGVkLiIpOworICAg
IHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSdd
LCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9u
YWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coInRyYW5z
Lm9uY29tcGxldGUgPSB0cmFuc2FjdGlvbkNvbXBsZXRlZDIiKTsKKyAgICBzdG9yZSA9IGV2YWxB
bmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlNCcsIHk6ICd6eno0J30sICdr
ZXk0JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeyB0ZXN0UGFzc2Vk
KCJrZXk0IGFkZGVkIik7IH0KKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gdHJhbnNhY3Rpb25Db21wbGV0ZWQyKCkKK3sKKyAgICBk
ZWJ1ZygiIik7CisgICAgdGVzdFBhc3NlZCgiVGhlIHRyYW5zYWN0aW9uIGNvbXBsZXRlZC4iKTsK
KyAgICBkZWJ1ZygiIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvZmFjdG9yeS1iYXNpY3MuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvZmFjdG9yeS1iYXNpY3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzAwN2Nm
YTcyM2U4OWJkNWM5ZWI0N2NjODg1ZGJkOWFkZmZiZjcwMAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9mYWN0b3J5LWJhc2ljcy5qcwpA
QCAtMCwwICsxLDgyIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2Ny
aXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBp
bXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgdGhlIGJh
c2ljcyBvZiBJbmRleGVkREIncyBJREJGYWN0b3J5LiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sK
KyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2Yg
aW5kZXhlZERCLm9wZW4gPT09ICdmdW5jdGlvbiciKTsKKyAgICBzaG91bGRCZVRydWUoInR5cGVv
ZiBpbmRleGVkREIuY21wID09PSAnZnVuY3Rpb24nIik7CisgICAgc2hvdWxkQmVUcnVlKCJ0eXBl
b2YgaW5kZXhlZERCLmdldERhdGFiYXNlTmFtZXMgPT09ICdmdW5jdGlvbiciKTsKKworICAgIHNo
b3VsZEJlVHJ1ZSgidHlwZW9mIGluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSA9PT0gJ2Z1bmN0aW9u
JyIpOworCisgICAgbmFtZSA9ICdzdG9yYWdlL2luZGV4ZWRkYi9mYWN0b3J5LWJhc2ljcyc7Cisg
ICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiaW5kZXhlZERCLmdldERhdGFiYXNlTmFtZXMoKSIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZ2V0RGF0YWJhc2VOYW1lc1N1Y2Nlc3MxOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBnZXREYXRhYmFzZU5hbWVz
U3VjY2VzczEoKQoreworICAgIHZhciBkYXRhYmFzZU5hbWVzOworICAgIGV2YWxBbmRMb2coImRh
dGFiYXNlTmFtZXMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVGYWxzZSgi
ZGF0YWJhc2VOYW1lcy5jb250YWlucygnIiArIG5hbWUgKyAiJykiKTsKKyAgICBzaG91bGRCZUZh
bHNlKCJkYXRhYmFzZU5hbWVzLmNvbnRhaW5zKCdEQVRBQkFTRSBUSEFUIERPRVMgTk9UIEVYSVNU
JykiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBk
ZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biBvcGVuU3VjY2VzcygpCit7CisgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5j
bG9zZSgpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5nZXREYXRhYmFz
ZU5hbWVzKCkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldERhdGFiYXNlTmFtZXNTdWNj
ZXNzMjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30K
KworZnVuY3Rpb24gZ2V0RGF0YWJhc2VOYW1lc1N1Y2Nlc3MyKCkKK3sKKyAgICB2YXIgZGF0YWJh
c2VOYW1lczsKKyAgICBldmFsQW5kTG9nKCJkYXRhYmFzZU5hbWVzID0gZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgiZGF0YWJhc2VOYW1lcy5jb250YWlucygnIiArIG5h
bWUgKyAiJykiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJkYXRhYmFzZU5hbWVzLmNvbnRhaW5zKCdE
QVRBQkFTRSBUSEFUIERPRVMgTk9UIEVYSVNUJykiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoJyIgKyBuYW1lICsgIicpIik7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVEYXRhYmFzZVN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZURhdGFi
YXNlU3VjY2VzcygpCit7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5nZXRE
YXRhYmFzZU5hbWVzKCkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldERhdGFiYXNlTmFt
ZXNTdWNjZXNzMzsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gZ2V0RGF0YWJhc2VOYW1lc1N1Y2Nlc3MzKCkKK3sKKyAgICB2YXIg
ZGF0YWJhc2VOYW1lczsKKyAgICBldmFsQW5kTG9nKCJkYXRhYmFzZU5hbWVzID0gZXZlbnQudGFy
Z2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlRmFsc2UoImRhdGFiYXNlTmFtZXMuY29udGFpbnMo
JyIgKyBuYW1lICsgIicpIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGF0YWJhc2VOYW1lcy5jb250
YWlucygnREFUQUJBU0UgVEhBVCBET0VTIE5PVCBFWElTVCcpIik7CisKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCdEQVRBQkFTRSBUSEFUIERPRVMg
Tk9UIEVYSVNUJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZURhdGFiYXNlU3Vj
Y2VzczI7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIGRlbGV0ZURhdGFiYXNlU3VjY2VzczIoKQoreworICAgIGZpbmlzaEpTVGVz
dCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ZhY3RvcnktY21wLmpz
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ZhY3RvcnktY21wLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmY0MjY3NmFjMjRiMjljMDg4YzA2ZGJjMjEyZTMyN2MwMmExNzNlNzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
ZmFjdG9yeS1jbXAuanMKQEAgLTAsMCArMSwxNDEgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMp
IHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlw
dGlvbigiVGVzdCBJbmRleGVkREIga2V5IGNvbXBhcmlzb24gdXNpbmcgSURCRmFjdG9yeS5jbXAo
KS4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsK
KworICAgIHNob3VsZEJlVHJ1ZSgidHlwZW9mIGluZGV4ZWREQi5jbXAgPT09ICdmdW5jdGlvbici
KTsKKworICAgIHRlc3RWYWxpZEtleXMoKTsKKyAgICB0ZXN0SW52YWxpZEtleXMoKTsKKyAgICB0
ZXN0SWRlbnRpY2FsS2V5cygpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitmdW5jdGlvbiB0
ZXN0VmFsaWRLZXlzKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImNvbXBhcmUgdmFs
aWQga2V5cyIpOworCisgICAgdmFyIGtleXMgPSBbCisgICAgICAgICItSW5maW5pdHkiLAorICAg
ICAgICAiLU51bWJlci5NQVhfVkFMVUUiLAorICAgICAgICAiLTEiLAorICAgICAgICAiLU51bWJl
ci5NSU5fVkFMVUUiLAorICAgICAgICAiMCIsCisgICAgICAgICJOdW1iZXIuTUlOX1ZBTFVFIiwK
KyAgICAgICAgIjEiLAorICAgICAgICAiTnVtYmVyLk1BWF9WQUxVRSIsCisgICAgICAgICJJbmZp
bml0eSIsCisKKyAgICAgICAgIm5ldyBEYXRlKDApIiwKKyAgICAgICAgIm5ldyBEYXRlKDEwMDAp
IiwKKyAgICAgICAgIm5ldyBEYXRlKDEzMTczOTk5MzEwMjMpIiwKKyAgICAgICAgCisgICAgICAg
ICInJyIsCisgICAgICAgICInXHgwMCciLAorICAgICAgICAiJ2EnIiwKKyAgICAgICAgIidhYSci
LAorICAgICAgICAiJ2InIiwKKyAgICAgICAgIidiYSciLAorCisgICAgICAgICInXHhBMiciLCAv
LyBVKzAwQTIgQ0VOVCBTSUdOCisgICAgICAgICInXHU2QzM0JyIsIC8vIFUrNkMzNCBDSksgVU5J
RklFRCBJREVPR1JBUEggKHdhdGVyKQorICAgICAgICAiJ1x1RDgzNFx1REQxRSciLCAvLyBVKzFE
MTFFIE1VU0lDQUwgU1lNQk9MIEctQ0xFRiAoVVRGLTE2IHN1cnJvZ2F0ZSBwYWlyKQorICAgICAg
ICAiJ1x1RkZGRCciLCAvLyBVK0ZGRkQgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSCisKKyAgICAgICAg
IltdIiwKKworICAgICAgICAiWy1JbmZpbml0eV0iLAorICAgICAgICAiWy1OdW1iZXIuTUFYX1ZB
TFVFXSIsCisgICAgICAgICJbLTFdIiwKKyAgICAgICAgIlstTnVtYmVyLk1JTl9WQUxVRV0iLAor
ICAgICAgICAiWzBdIiwKKyAgICAgICAgIltOdW1iZXIuTUlOX1ZBTFVFXSIsCisgICAgICAgICJb
MV0iLAorICAgICAgICAiW051bWJlci5NQVhfVkFMVUVdIiwKKyAgICAgICAgIltJbmZpbml0eV0i
LAorCisgICAgICAgICJbbmV3IERhdGUoMCldIiwKKyAgICAgICAgIltuZXcgRGF0ZSgxMDAwKV0i
LAorICAgICAgICAiW25ldyBEYXRlKDEzMTczOTk5MzEwMjMpXSIsCisgICAgICAgIAorICAgICAg
ICAiWycnXSIsCisgICAgICAgICJbJ1x4MDAnXSIsCisgICAgICAgICJbJ2EnXSIsCisgICAgICAg
ICJbJ2FhJ10iLAorICAgICAgICAiWydiJ10iLAorICAgICAgICAiWydiYSddIiwKKworICAgICAg
ICAiWydceEEyJ10iLCAvLyBVKzAwQTIgQ0VOVCBTSUdOCisgICAgICAgICJbJ1x1NkMzNCddIiwg
Ly8gVSs2QzM0IENKSyBVTklGSUVEIElERU9HUkFQSCAod2F0ZXIpCisgICAgICAgICJbJ1x1RDgz
NFx1REQxRSddIiwgLy8gVSsxRDExRSBNVVNJQ0FMIFNZTUJPTCBHLUNMRUYgKFVURi0xNiBzdXJy
b2dhdGUgcGFpcikKKyAgICAgICAgIlsnXHVGRkZEJ10iLCAvLyBVK0ZGRkQgUkVQTEFDRU1FTlQg
Q0hBUkFDVEVSCisKKyAgICAgICAgIltbXV0iLAorICAgICAgICAKKyAgICAgICAgIltbXSwgW11d
IiwKKyAgICAgICAgIltbXSwgW10sIFtdXSIsCisKKyAgICAgICAgIltbW11dXSIsCisgICAgICAg
ICJbW1tbXV1dXSIKKyAgICBdOworCisgICAgdmFyIGksIGtleTEsIGtleTI7CisgICAgZm9yIChp
ID0gMDsgaSA8IGtleXMubGVuZ3RoIC0gMTsgaSArPSAxKSB7CisgICAgICAgIGtleTEgPSBrZXlz
W2ldOworICAgICAgICBrZXkyID0ga2V5c1tpICsgMV07CisgICAgICAgIHNob3VsZEJlVHJ1ZSgi
aW5kZXhlZERCLmNtcCgiICsga2V5MSArICIsIiArIGtleTIgKyAiKSA9PT0gLTEiKTsKKyAgICAg
ICAgc2hvdWxkQmVUcnVlKCJpbmRleGVkREIuY21wKCIgKyBrZXkyICsgIiwiICsga2V5MSArICIp
ID09PSAxIik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXhlZERCLmNtcCgiICsga2V5MSAr
ICIsIiArIGtleTEgKyAiKSA9PT0gMCIpOworICAgICAgICBzaG91bGRCZVRydWUoImluZGV4ZWRE
Qi5jbXAoIiArIGtleTIgKyAiLCIgKyBrZXkyICsgIikgPT09IDAiKTsKKyAgICB9Cit9CisKK2Z1
bmN0aW9uIHRlc3RJbnZhbGlkS2V5cygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJj
b21wYXJlIGludmFsaWQga2V5cyIpOworCisgICAgdmFyIGludmFsaWRLZXlzID0gWworICAgICAg
ICAidm9pZCAwIiwgLy8gdW5kZWZpbmVkCisgICAgICAgICJ0cnVlIiwKKyAgICAgICAgImZhbHNl
IiwKKyAgICAgICAgIk5hTiIsCisgICAgICAgICJuZXcgRGF0ZShOYU4pIiwKKyAgICAgICAgIm51
bGwiLAorICAgICAgICAie30iLAorICAgICAgICAiZnVuY3Rpb24gKCkge30iLAorICAgICAgICAi
L3JlZ2V4LyIsCisgICAgICAgICJzZWxmIiwKKyAgICAgICAgInNlbGYuZG9jdW1lbnQiLAorICAg
ICAgICAic2VsZi5kb2N1bWVudC5ib2R5IgorICAgIF07CisKKyAgICB2YXIgaSwga2V5MSwga2V5
MjsKKyAgICBmb3IgKGkgPSAwOyBpIDwgaW52YWxpZEtleXMubGVuZ3RoIC0gMTsgaSArPSAxKSB7
CisgICAgICAgIGtleTEgPSBpbnZhbGlkS2V5c1tpXTsKKyAgICAgICAga2V5MiA9IGludmFsaWRL
ZXlzW2kgKyAxXTsKKyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXhlZERCLmNt
cCgiICsga2V5MSArICIsICIgKyBrZXkyICsgIikiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFU
QV9FUlIiKTsKKyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXhlZERCLmNtcCgi
ICsga2V5MiArICIsICIgKyBrZXkxICsgIikiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9F
UlIiKTsKKyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXhlZERCLmNtcCgiICsg
a2V5MSArICIsICd2YWxpZCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Cisg
ICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4ZWREQi5jbXAoJ3ZhbGlkJywgIiAr
IGtleTEgKyAiKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworICAgICAgICBl
dmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJpbmRleGVkREIuY21wKCIgKyBrZXkyICsgIiwgJ3ZhbGlk
JykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKyAgICAgICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigiaW5kZXhlZERCLmNtcCgndmFsaWQnLCAiICsga2V5MiArICIpIiwgIklE
QkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0
SWRlbnRpY2FsS2V5cygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJjb21wYXJlIGlk
ZW50aWNhbCBrZXlzIik7CisKKyAgICBzaG91bGRCZVRydWUoImluZGV4ZWREQi5jbXAoMCwgLTAp
ID09PSAwIik7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZmFjdG9yeS1k
ZWxldGVkYXRhYmFzZS1pbnRlcmFjdGlvbnMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvZmFjdG9yeS1kZWxldGVkYXRhYmFzZS1pbnRlcmFjdGlvbnMuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZTlkOWI3OTQzZGVhNWYzZTY2OWI1NGU4MmYzNTdkOTZiMjg0ZmIwYwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9mYWN0
b3J5LWRlbGV0ZWRhdGFiYXNlLWludGVyYWN0aW9ucy5qcwpAQCAtMCwwICsxLDE4NiBAQAoraWYg
KHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVk
LmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoZSBkZWxldGVEYXRhYmFzZSBjYWxsIGFu
ZCBpdHMgaW50ZXJhY3Rpb24gd2l0aCBvcGVuL3NldFZlcnNpb24iKTsKKworZnVuY3Rpb24gQ29u
bmVjdGlvbihpZCkgeworICAgIGlkID0gU3RyaW5nKGlkKTsKKyAgICB2YXIgdGhhdCA9IHRoaXM7
CisgICAgdGhpcy5vcGVuID0gZnVuY3Rpb24ob3B0cykgeworICAgICAgICBzZWxmLnN0ZXBzLnB1
c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIub3BlbiciKSk7CisgICAgICAgIHZhciByZXEgPSBp
bmRleGVkREIub3BlbihzZWxmLmRibmFtZSk7CisgICAgICAgIHJlcS5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZSkg
eworICAgICAgICAgICAgdGhhdC5oYW5kbGUgPSBlLnRhcmdldC5yZXN1bHQ7CisgICAgICAgICAg
ICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIub3Blbi5vbnN1Y2Nlc3Mn
IikpOworICAgICAgICAgICAgdGhhdC5oYW5kbGUub252ZXJzaW9uY2hhbmdlID0gZnVuY3Rpb24o
ZSkgeworICAgICAgICAgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlk
ICsgIi5vbnZlcnNpb25jaGFuZ2UnIikpOworICAgICAgICAgICAgICAgIGlmIChvcHRzICYmIG9w
dHMub252ZXJzaW9uKSB7IG9wdHMub252ZXJzaW9uLmNhbGwodGhhdCk7IH0KKyAgICAgICAgICAg
IH07CisgICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9uc3VjY2VzcykgeyBvcHRzLm9uc3Vj
Y2Vzcy5jYWxsKHRoYXQpOyB9CisgICAgICAgIH07CisgICAgfTsKKworICAgIHRoaXMuY2xvc2Ug
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsg
aWQgKyAiLmNsb3NlJyIpKTsKKyAgICAgICAgdGhpcy5oYW5kbGUuY2xvc2UoKTsKKyAgICB9Owor
CisgICAgdGhpcy5zZXRWZXJzaW9uID0gZnVuY3Rpb24ob3B0cykgeworICAgICAgICBzZWxmLnN0
ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIuc2V0VmVyc2lvbiciKSk7CisgICAgICAg
IHZhciByZXEgPSB0aGlzLmhhbmRsZS5zZXRWZXJzaW9uKFN0cmluZyhzZWxmLnZlcisrKSk7Cisg
ICAgICAgIHJlcS5vbmFib3J0ID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgICAgIHNlbGYuc3Rl
cHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5zZXRWZXJzaW9uLm9uYWJvcnQnIikpOwor
ICAgICAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5vbmFib3J0KSB7IG9wdHMub25hYm9ydC5jYWxs
KHRoYXQpOyB9CisgICAgICAgIH07CisgICAgICAgIHJlcS5vbmJsb2NrZWQgPSBmdW5jdGlvbiAo
ZSkgeworICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAi
LnNldFZlcnNpb24ub25ibG9ja2VkJyIpKTsKKyAgICAgICAgICAgIGlmIChvcHRzICYmIG9wdHMu
b25ibG9ja2VkKSB7IG9wdHMub25ibG9ja2VkLmNhbGwodGhhdCk7IH0KKyAgICAgICAgfTsKKyAg
ICAgICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgICAgICBzZWxmLnN0
ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIuc2V0VmVyc2lvbi5vbnN1Y2Nlc3MnIikp
OworICAgICAgICAgICAgaWYgKHRoYXQuaGFuZGxlLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMo
InRlc3Qtc3RvcmUiICsgc2VsZi52ZXIpKSB7CisgICAgICAgICAgICAgICAgdGhhdC5oYW5kbGUu
ZGVsZXRlT2JqZWN0U3RvcmUoInRlc3Qtc3RvcmUiICsgc2VsZi52ZXIpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgdmFyIHN0b3JlID0gdGhhdC5oYW5kbGUuY3JlYXRlT2JqZWN0U3RvcmUo
InRlc3Qtc3RvcmUiICsgc2VsZi52ZXIpOworICAgICAgICAgICAgdmFyIGNvdW50ID0gMDsKKyAg
ICAgICAgICAgIGRvX2FzeW5jX3B1dHMoKTsgLy8gS2VlcCB0aGlzIHRyYW5zYWN0aW9uIHJ1bm5p
bmcgZm9yIGEgd2hpbGUKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRvX2FzeW5jX3B1dHMoKSB7Cisg
ICAgICAgICAgICAgICAgdmFyIHJlcSA9IHN0b3JlLnB1dChjb3VudCwgY291bnQpOworICAgICAg
ICAgICAgICAgIHJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAg
ICAgICAgICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgICAgICAgICAg
ICAgIGlmICgrK2NvdW50IDwgMTApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvX2FzeW5j
X3B1dHMoKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5zZXRWZXJzaW9u
LnRyYW5zYWN0aW9uLWNvbXBsZXRlJyIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChv
cHRzICYmIG9wdHMub25zdWNjZXNzKSB7IG9wdHMub25zdWNjZXNzLmNhbGwodGhhdCk7IH0KKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICB9Cisg
ICAgICAgIH07CisgICAgICAgIHJlcS5vbmVycm9yID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAg
ICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5zZXRWZXJzaW9uLm9u
ZXJyb3InIikpOworICAgICAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5vbmVycm9yKSB7IG9wdHMu
b25lcnJvci5jYWxsKHRoYXQpOyB9CisgICAgICAgIH07CisgICAgfTsKK30KKworZnVuY3Rpb24g
ZGVsZXRlRGF0YWJhc2UoaWQsIG5hbWUsIG9wdHMpIHsKKyAgICBzZWxmLnN0ZXBzLnB1c2goZXZh
bEFuZExvZygiJ2RlbGV0ZURhdGFiYXNlKCIgKyBpZCArICIpJyIpKTsKKyAgICB2YXIgcmVxID0g
aW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKG5hbWUpOworICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbiAoZSkgeworICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJ2RlbGV0ZURh
dGFiYXNlKCIgKyBpZCArICIpLm9uc3VjY2VzcyciKSk7CisgICAgICAgIGlmIChvcHRzICYmIG9w
dHMub25zdWNjZXNzKSB7IG9wdHMub25zdWNjZXNzLmNhbGwobnVsbCk7IH0KKyAgICB9OworICAg
IHJlcS5vbmVycm9yID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2
YWxBbmRMb2coIidkZWxldGVEYXRhYmFzZSgiICsgaWQgKyAiKS5vbmVycm9yJyIpKTsKKyAgICAg
ICAgaWYgKG9wdHMgJiYgb3B0cy5vbmVycm9yKSB7IG9wdHMub25lcnJvci5jYWxsKG51bGwpOyB9
CisgICAgfTsKKyAgICByZXEub25ibG9ja2VkID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgc2Vs
Zi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIidkZWxldGVEYXRhYmFzZSgiICsgaWQgKyAiKS5vbmJs
b2NrZWQnIikpOworICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9uYmxvY2tlZCkgeyBvcHRzLm9u
YmxvY2tlZC5jYWxsKG51bGwpOyB9CisgICAgfTsKK30KKworLy8gcnVuIGEgc2VyaWVzIG9mIHN0
ZXBzIHRoYXQgdGFrZSBhIGNvbnRpbnVhdGlvbiBmdW5jdGlvbgorZnVuY3Rpb24gcnVuU3RlcHMo
Y29tbWFuZHMpIHsKKyAgICBpZiAoY29tbWFuZHMubGVuZ3RoKSB7CisgICAgICAgIHZhciBjb21t
YW5kID0gY29tbWFuZHMuc2hpZnQoKTsKKyAgICAgICAgY29tbWFuZChmdW5jdGlvbigpIHsgcnVu
U3RlcHMoY29tbWFuZHMpOyB9KTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAg
cmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICB0ZXN0MSgpOworfQorCitmdW5jdGlvbiB0ZXN0
MSgpIHsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRFU1Q6IGRlbGV0ZURhdGFiYXNlIGJs
b2NrZWQgb24gb3BlbiBoYW5kbGVzIik7CisgICAgZXZhbEFuZExvZygic2VsZi5kYm5hbWUgPSAn
dGVzdDEnOyBzZWxmLnZlciA9IDE7IHNlbGYuc3RlcHMgPSBbXSIpOworICAgIHZhciBoID0gbmV3
IENvbm5lY3Rpb24oImgiKTsKKyAgICBydW5TdGVwcyhbZnVuY3Rpb24oZG9OZXh0KSB7IGgub3Bl
bih7b25zdWNjZXNzOiBkb05leHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9u
dmVyc2lvbjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkZWJ1ZygiICAgIGggY2xvc2luZywgYnV0IG5vdCBpbW1lZGlhdGVseSIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgaC5jbG9z
ZSgpOyB9LCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0pOyB9LAorICAg
ICAgICBmdW5jdGlvbihkb05leHQpIHsgZGVsZXRlRGF0YWJhc2UoIiIsIHNlbGYuZGJuYW1lLCB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBvbnN1Y2Nlc3M6IGZpbmlzaFRlc3R9KTsgfSwK
KyAgICAgICAgXSk7CisgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJzZWxmLnN0ZXBzLnRvU3RyaW5nKCkiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgWyJoLm9wZW4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJoLm9wZW4ub25zdWNjZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVs
ZXRlRGF0YWJhc2UoKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgub252ZXJz
aW9uY2hhbmdlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVsZXRlRGF0YWJh
c2UoKS5vbmJsb2NrZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoLmNsb3Nl
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVsZXRlRGF0YWJhc2UoKS5vbnN1
Y2Nlc3MiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS50b1N0cmluZygpKTsKKyAg
ICAgICAgdGVzdDIoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3QyKCkgeworICAgIGRlYnVn
KCIiKTsKKyAgICBkZWJ1ZygiVEVTVDogZGVsZXRlRGF0YWJhc2Ugbm90IGJsb2NrZWQgd2hlbiBo
YW5kbGVzIGNsb3NlIGltbWVkaWF0ZWx5Iik7CisgICAgZXZhbEFuZExvZygic2VsZi5kYm5hbWUg
PSAndGVzdDInOyBzZWxmLnZlciA9IDE7IHNlbGYuc3RlcHMgPSBbXSIpOworICAgIHZhciBoID0g
bmV3IENvbm5lY3Rpb24oImgiKTsKKyAgICBydW5TdGVwcyhbZnVuY3Rpb24oZG9OZXh0KSB7IGgu
b3Blbih7b25zdWNjZXNzOiBkb05leHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvbnZlcnNpb246IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKCIgICAgaCBjbG9zaW5nIGltbWVkaWF0ZWx5
Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaC5jbG9z
ZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0pOyB9LAor
ICAgICAgICBmdW5jdGlvbihkb05leHQpIHsgZGVsZXRlRGF0YWJhc2UoIiIsIHNlbGYuZGJuYW1l
LCB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBvbnN1Y2Nlc3M6IGZpbmlzaFRlc3R9KTsg
fSwKKyAgICAgICAgXSk7CisgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgZGVi
dWcoIk5PVEU6IFdpbGwgRkFJTCB3aXRoIGV4dHJhIGJvZ3VzIGRlbGV0ZURhdGFiYXNlKCkub25i
bG9ja2VkIHN0ZXA7IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTEz
MCIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNlbGYuc3RlcHMudG9TdHJpbmco
KSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImgub3BlbiIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImgub3Blbi5vbnN1Y2Nlc3MiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJkZWxldGVEYXRhYmFzZSgpIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiaC5vbnZlcnNpb25jaGFuZ2UiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJoLmNsb3NlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVsZXRl
RGF0YWJhc2UoKS5vbnN1Y2Nlc3MiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS50
b1N0cmluZygpKTsKKyAgICAgICAgdGVzdDMoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3Qz
KCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVEVTVDogZGVsZXRlRGF0YWJhc2UgaXMg
ZGVsYXllZCBpZiBhIFZFUlNJT05fQ0hBTkdFIHRyYW5zYWN0aW9uIGlzIHJ1bm5pbmciKTsKKyAg
ICBldmFsQW5kTG9nKCJzZWxmLmRibmFtZSA9ICd0ZXN0Myc7IHNlbGYudmVyID0gMTsgc2VsZi5z
dGVwcyA9IFtdIik7CisgICAgdmFyIGggPSBuZXcgQ29ubmVjdGlvbigiaCIpOworICAgIHJ1blN0
ZXBzKFtmdW5jdGlvbihkb05leHQpIHsgaC5vcGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb252ZXJzaW9uOiBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKCIgICAgaCBjbG9zaW5nLCBidXQg
bm90IGltbWVkaWF0ZWx5Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBoLmNsb3NlKCk7IH0sIDApOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9fSk7IH0sCisgICAgICAgICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkg
eyBoLnNldFZlcnNpb24oKTsgZG9OZXh0KCk7IH0sCisgICAgICAgICAgICAgIGZ1bmN0aW9uKGRv
TmV4dCkgeyBkZWxldGVEYXRhYmFzZSgiIiwgc2VsZi5kYm5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHtvbnN1Y2Nlc3M6IGZpbmlzaFRlc3R9KTsgfSwKKyAgICAgICAgICAg
ICAgXSk7CisKKyAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgeworICAgICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoInNlbGYuc3RlcHMudG9TdHJpbmcoKSIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBbImgub3BlbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgu
b3Blbi5vbnN1Y2Nlc3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoLnNldFZl
cnNpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWxldGVEYXRhYmFzZSgp
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaC5zZXRWZXJzaW9uLm9uc3VjY2Vz
cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImguc2V0VmVyc2lvbi50cmFuc2Fj
dGlvbi1jb21wbGV0ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgub252ZXJz
aW9uY2hhbmdlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVsZXRlRGF0YWJh
c2UoKS5vbmJsb2NrZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoLmNsb3Nl
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVsZXRlRGF0YWJhc2UoKS5vbnN1
Y2Nlc3MiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS50b1N0cmluZygpKTsKKyAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQorfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL2ZhY3RvcnktZGVsZXRlZGF0YWJhc2UuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvZmFjdG9yeS1kZWxldGVkYXRhYmFzZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wNmZhNTYyMjlhNzQyNjY2ZWE5ZmIwNTE2YThhY2I3MjQxMTUwZjk4Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ZhY3RvcnktZGVs
ZXRlZGF0YWJhc2UuanMKQEAgLTAsMCArMSw5MSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykg
eworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0
aW9uKCJUZXN0IEluZGV4ZWREQidzIHdlYmtpdEluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgpLiIp
OworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignZGF0YWJhc2UtdG8tZGVsZXRl
JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHN0YXJ0U2V0VmVyc2lvbjsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc3Rh
cnRTZXRWZXJzaW9uKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25l
dyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4aXN0aW5nOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiBkZWxldGVFeGlzdGluZygpCit7CisgICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRy
YW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09
IG51bGwiKTsKKworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKKworICAgIHNlbGYuaW5kZXggPSBldmFsQW5k
TG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhOYW1lJywgJycpIik7CisgICAgc2hvdWxkQmVU
cnVlKCJzdG9yZS5pbmRleE5hbWVzLmNvbnRhaW5zKCdpbmRleE5hbWUnKSIpOworCisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCgndmFsdWUnLCAna2V5JykiKTsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBs
ZXRlID0gZ2V0VmFsdWU7Cit9CisKK2Z1bmN0aW9uIGdldFZhbHVlKCkKK3sKKyAgICB0cmFuc2Fj
dGlvbiA9IGV2YWxBbmRMb2coImRiLnRyYW5zYWN0aW9uKCdzdG9yZU5hbWUnLCBJREJUcmFuc2Fj
dGlvbi5SRUFEX1dSSVRFKSIpOworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKKyAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5z
YWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworCisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInN0b3JlLmdldCgna2V5JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZElu
ZGV4OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBhZGRJbmRleCgpCit7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVu
dC50YXJnZXQucmVzdWx0IiwgInZhbHVlIik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
ZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZGVsZXRlRGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZURhdGFiYXNlKCkKK3sKKyAgICBkYi5vbnZlcnNp
b25jaGFuZ2UgPSBmdW5jdGlvbigpIHsgZGIuY2xvc2UoKTsgfQorICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCdkYXRhYmFzZS10by1k
ZWxldGUnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcmVvcGVuRGF0YWJhc2U7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IHJlb3BlbkRhdGFiYXNlKCkKK3sKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERC
Lm9wZW4oJ2RhdGFiYXNlLXRvLWRlbGV0ZScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBz
dGFydFNldFZlcnNpb25BZ2FpbjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc3RhcnRTZXRWZXJzaW9uQWdhaW4oKQoreworICAg
IHJkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IHZlcmlmeU5vdEZvdW5kOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiB2ZXJpZnlOb3RGb3VuZCgp
Cit7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjAiKTsKKwor
ICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L2luZGV4LWNvdW50LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L2luZGV4LWNvdW50LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiMGU0ZWYwOTg0NTAxOWY3ZTFmZGZhZDdkNDZj
NmFiYWJiNDZhN2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvaW5kZXgtY291bnQuanMKQEAgLTAsMCArMSwxNTQgQEAKK2lmICh0aGlz
LmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycp
OworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBJREJJbmRleC5jb3VudCgpLiIp
OworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignaW5kZXgtY291bnQnKSIpOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGRiID0gZXZhbEFuZExvZygiZGIg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJk
Yi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBy
ZXBhcmVEYXRhYmFzZTsKKyAgICB9OworfQorCitmdW5jdGlvbiBwcmVwYXJlRGF0YWJhc2UoKQor
eworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygicHJlcGFyaW5nIGRhdGFiYXNlIik7CisgICAg
c2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwor
ICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKworICAgIGRlbGV0ZUFsbE9iamVj
dFN0b3JlcyhkYik7CisKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7CisKKyAgICBzZWxmLmluZGV4ID0gZXZh
bEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZScsICcnKSIpOworICAgIHNob3Vs
ZEJlVHJ1ZSgic3RvcmUuaW5kZXhOYW1lcy5jb250YWlucygnaW5kZXhOYW1lJykiKTsKKworICAg
IGRlYnVnKCJhZGRpbmcgMCAuLi4gOTkiKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsg
KytpKSB7CisgICAgICAgIHJlcXVlc3QgPSBzdG9yZS5hZGQoaSwgaSk7CisgICAgICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIH0KKyAgICB0cmFucy5v
bmNvbXBsZXRlID0gdmVyaWZ5Q291bnQ7Cit9CisKK2Z1bmN0aW9uIHZlcmlmeUNvdW50KCkKK3sK
KyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInZlcmlmeWluZyBjb3VudCB3aXRob3V0IHJhbmdl
Iik7CisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9y
ZU5hbWUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7CisgICAgc2hvdWxkQmVUcnVlKCJ0
cmFucyAhPSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxi
YWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSB2ZXJpZnlDb3VudFdpdGhSYW5nZTsKKworICAg
IHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1l
JykiKTsKKyAgICBzaG91bGRCZVRydWUoInN0b3JlICE9IG51bGwiKTsKKyAgICBpbmRleCA9IGV2
YWxBbmRMb2coImluZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4TmFtZScpIik7CisgICAgc2hvdWxk
QmVUcnVlKCJpbmRleCAhPSBudWxsIik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVx
dWVzdCA9IGluZGV4LmNvdW50KCkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251bWJlciciKTsK
KyAgICAgICAgIHNob3VsZEJlKCJyZXF1ZXN0LnJlc3VsdCIsICIxMDAiKTsKKyAgICAgICAgIC8v
IGxldCB0aGUgdHJhbnNhY3Rpb24gY29tcGxldGUKKyAgICB9OworfQorCitmdW5jdGlvbiB2ZXJp
ZnlDb3VudFdpdGhSYW5nZSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ2ZXJpZnlp
bmcgY291bnQgd2l0aCByYW5nZSIpOworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBk
Yi50cmFuc2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKSIpOwor
ICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1
bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gdmVyaWZ5Q291
bnRXaXRoS2V5OworCisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVj
dFN0b3JlKCdzdG9yZU5hbWUnKSIpOworICAgIHNob3VsZEJlVHJ1ZSgic3RvcmUgIT0gbnVsbCIp
OworICAgIHN0b3JlID0gZXZhbEFuZExvZygiaW5kZXggPSB0cmFucy5vYmplY3RTdG9yZSgnc3Rv
cmVOYW1lJykuaW5kZXgoJ2luZGV4TmFtZScpIik7CisgICAgc2hvdWxkQmVUcnVlKCJpbmRleCAh
PSBudWxsIik7CisKKyAgICB2YXIgdGVzdHMgPSBbCisgICAgICAgIHsgbG93ZXI6IDAsIGxvd2Vy
T3BlbjogZmFsc2UsIHVwcGVyOiA5OSwgdXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDEwMCB9
LAorICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IHRydWUsIHVwcGVyOiA5OSwgdXBwZXJP
cGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDk5IH0sCisgICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3Bl
bjogZmFsc2UsIHVwcGVyOiA5OSwgdXBwZXJPcGVuOiB0cnVlLCBleHBlY3RlZDogOTkgfSwKKyAg
ICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiB0cnVlLCB1cHBlcjogOTksIHVwcGVyT3Blbjog
dHJ1ZSwgZXhwZWN0ZWQ6IDk4IH0sCisgICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogZmFs
c2UsIHVwcGVyOiAxMDAsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiAxMDAgfSwKKyAgICAg
ICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDEwMCwgdXBwZXJPcGVuOiBm
YWxzZSwgZXhwZWN0ZWQ6IDEwMCB9LAorICAgICAgICB7IGxvd2VyOiAxMCwgbG93ZXJPcGVuOiBm
YWxzZSwgdXBwZXI6IDEwMCwgdXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDkwIH0sCisgICAg
ICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiAwLCB1cHBlck9wZW46IGZh
bHNlLCBleHBlY3RlZDogMSB9LAorICAgICAgICB7IGxvd2VyOiA1MDAsIGxvd2VyT3BlbjogZmFs
c2UsIHVwcGVyOiA1MDAsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiAwIH0KKyAgICBdOwor
CisgICAgZnVuY3Rpb24gbmV4dFRlc3QoKSB7CisgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAg
ZXZhbEFuZExvZygidGVzdCA9ICIgKyBKU09OLnN0cmluZ2lmeSh0ZXN0cy5zaGlmdCgpKSk7Cisg
ICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXguY291bnQoSURCS2V5
UmFuZ2UuYm91bmQodGVzdC5sb3dlciwgdGVzdC51cHBlciwgdGVzdC5sb3dlck9wZW4sIHRlc3Qu
dXBwZXJPcGVuKSkiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251bWJlcici
KTsKKyAgICAgICAgICAgICBzaG91bGRCZSgicmVxdWVzdC5yZXN1bHQiLCBTdHJpbmcodGVzdC5l
eHBlY3RlZCkpOworCisgICAgICAgICAgICAgaWYgKHRlc3RzLmxlbmd0aCkgeworICAgICAgICAg
ICAgICAgICBuZXh0VGVzdCgpOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAvLyBvdGhl
cndpc2UgbGV0IHRoZSB0cmFuc2FjdGlvbiBjb21wbGV0ZQorICAgICAgICB9OworICAgIH0KKwor
ICAgIG5leHRUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHZlcmlmeUNvdW50V2l0aEtleSgpCit7Cisg
ICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ2ZXJpZnlpbmcgY291bnQgd2l0aCBrZXkiKTsKKyAg
ICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlTmFtZScs
IElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9
IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Cisg
ICAgdHJhbnMub25jb21wbGV0ZSA9IGZpbmlzaEpTVGVzdDsKKworICAgIHN0b3JlID0gZXZhbEFu
ZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICBzaG91
bGRCZVRydWUoInN0b3JlICE9IG51bGwiKTsKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coImluZGV4
ID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpLmluZGV4KCdpbmRleE5hbWUnKSIpOwor
ICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXggIT0gbnVsbCIpOworCisgICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigiaW5kZXguY291bnQoTmFOKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VS
UiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4LmNvdW50KHt9KSIsICJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24o
ImluZGV4LmNvdW50KC9yZWdleC8pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7
CisKKyAgICB2YXIgdGVzdHMgPSBbCisgICAgICAgIHsga2V5OiAwLCBleHBlY3RlZDogMSB9LAor
ICAgICAgICB7IGtleTogMTAwLCBleHBlY3RlZDogMCB9LAorICAgICAgICB7IGtleTogbnVsbCwg
ZXhwZWN0ZWQ6IDEwMCB9CisgICAgXTsKKworICAgIGZ1bmN0aW9uIG5leHRUZXN0KCkgeworICAg
ICAgICBkZWJ1ZygiIik7CisgICAgICAgIGV2YWxBbmRMb2coInRlc3QgPSAiICsgSlNPTi5zdHJp
bmdpZnkodGVzdHMuc2hpZnQoKSkpOworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVx
dWVzdCA9IGluZGV4LmNvdW50KHRlc3Qua2V5KSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgICBzaG91bGRCZVRydWUoInR5cGVvZiByZXF1ZXN0LnJl
c3VsdCA9PSAnbnVtYmVyJyIpOworICAgICAgICAgICAgIHNob3VsZEJlKCJyZXF1ZXN0LnJlc3Vs
dCIsIFN0cmluZyh0ZXN0LmV4cGVjdGVkKSk7CisKKyAgICAgICAgICAgICBpZiAodGVzdHMubGVu
Z3RoKSB7CisgICAgICAgICAgICAgICAgIG5leHRUZXN0KCk7CisgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgIC8vIG90aGVyd2lzZSBsZXQgdGhlIHRyYW5zYWN0aW9uIGNvbXBsZXRlCisgICAg
ICAgIH07CisgICAgfQorCisgICAgbmV4dFRlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9pbmRleC1jdXJzb3IuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvaW5kZXgtY3Vyc29yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5ODhlYmMxOGM0NmU4
ODgxYzRmMTUwMzM4ZjcyN2JmNDg3NTI0ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW5kZXgtY3Vyc29yLmpzCkBAIC0wLDAgKzEs
MjQ5IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3Jp
cHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mgd2Vi
a2l0SURCSW5kZXgub3BlbkN1cnNvciArIHRoZSBjdXJzb3IgaXQgcHJvZHVjZXMgaW4gZGVwdGgu
Iik7CisKKy8vIEluIG9yZGVyIG9mIGhvdyBpdCBzaG91bGQgYmUgc29ydGVkIGJ5IEluZGV4ZWRE
Qi4KK3NlbGYudGVzdERhdGEgPSBbCisgICAgMSwKKyAgICAxLAorICAgIDMuMTQxNTksCisgICAg
My4xNDE1OSwKKyAgICAxMCwKKyAgICAvLyBGSVhNRTogRGF0ZXMuCisgICAgIkEgYmlnIHN0cmlu
ZyIsCisgICAgInRoZSBCSUdFU1Qgc3RyaW5nIiwKKyAgICAidGhlIEJJR0VTVCBzdHJpbmciCitd
OworCitmdW5jdGlvbiBvcGVuRGF0YWJhc2UoKQoreworICAgIHJlc3VsdCA9IGV2YWxBbmRMb2co
ImluZGV4ZWREQi5vcGVuKCdpbmRleC1jdXJzb3InKSIpOworICAgIHJlc3VsdC5vbnN1Y2Nlc3Mg
PSBzZXRWZXJzaW9uOworICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb24oKQoreworICAgIHNlbGYuZGIgPSBldmFsQW5k
TG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlc3VsdCA9IGV2YWxBbmRM
b2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXN1bHQub25zdWNjZXNz
ID0gZGVsZXRlRXhpc3Rpbmc7CisgICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVsZXRlRXhpc3RpbmcoKQoreworICAgIHNlbGYudHJh
bnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91
bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0
ZWRBYm9ydENhbGxiYWNrOworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAg
IHNlbGYub2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc29t
ZU9iamVjdFN0b3JlJykiKTsKKyAgICBzZWxmLmluZGV4T2JqZWN0ID0gZXZhbEFuZExvZygib2Jq
ZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ3NvbWVJbmRleCcsICd4JykiKTsKKyAgICBzZWxmLm5leHRU
b0FkZCA9IDA7CisgICAgYWRkRGF0YSgpOworfQorCitmdW5jdGlvbiBhZGREYXRhKCkKK3sKKyAg
ICByZXN1bHQgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoeyd4JzogdGVzdERhdGFbbmV4
dFRvQWRkXX0sIG5leHRUb0FkZCkiKTsKKyAgICByZXN1bHQub25zdWNjZXNzID0gKytzZWxmLm5l
eHRUb0FkZCA8IHRlc3REYXRhLmxlbmd0aCA/IGFkZERhdGEgOiBzY2hlZHVsZVRlc3RzOworICAg
IHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IHNjaGVkdWxlVGVzdHMoKQoreworICAgIGRlYnVnKCJTY2hlZHVsaW5nIHRlc3RzLi4uIik7Cisg
ICAgc2VsZi5zY2hlZHVsZWRUZXN0cyA9IFtdOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVz
dERhdGEubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgLyogbGVmdCBib3VuZCwgaXMgb3Blbiwgcmln
aHQgYm91bmQsIGlzIG9wZW4sIGFzY2VuZGluZyAqLworICAgICAgICBzY2hlZHVsZWRUZXN0cy51
bnNoaWZ0KFtpLCB0cnVlLCBudWxsLCBudWxsLCB0cnVlXSk7CisgICAgICAgIHNjaGVkdWxlZFRl
c3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBudWxsLCBudWxsLCB0cnVlXSk7CisgICAgICAgIHNjaGVk
dWxlZFRlc3RzLnVuc2hpZnQoW251bGwsIG51bGwsIGksIHRydWUsIHRydWVdKTsKKyAgICAgICAg
c2NoZWR1bGVkVGVzdHMudW5zaGlmdChbbnVsbCwgbnVsbCwgaSwgZmFsc2UsIHRydWVdKTsKKyAg
ICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwgbnVsbCwgbnVsbCwgZmFsc2Vd
KTsKKyAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgZmFsc2UsIG51bGwsIG51bGws
IGZhbHNlXSk7CisgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW251bGwsIG51bGwsIGks
IHRydWUsIGZhbHNlXSk7CisgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW251bGwsIG51
bGwsIGksIGZhbHNlLCBmYWxzZV0pOworICAgICAgICBmb3IgKHZhciBqID0gNjsgaiA8IHRlc3RE
YXRhLmxlbmd0aDsgKytqKSB7CisgICAgICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtp
LCB0cnVlLCBqLCB0cnVlLCB0cnVlXSk7CisgICAgICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNo
aWZ0KFtpLCB0cnVlLCBqLCBmYWxzZSwgdHJ1ZV0pOworICAgICAgICAgICAgc2NoZWR1bGVkVGVz
dHMudW5zaGlmdChbaSwgZmFsc2UsIGosIHRydWUsIHRydWVdKTsKKyAgICAgICAgICAgIHNjaGVk
dWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBqLCBmYWxzZSwgdHJ1ZV0pOworICAgICAgICAg
ICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwgaiwgdHJ1ZSwgZmFsc2VdKTsKKyAg
ICAgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIHRydWUsIGosIGZhbHNlLCBmYWxz
ZV0pOworICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgZmFsc2UsIGosIHRy
dWUsIGZhbHNlXSk7CisgICAgICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCBmYWxz
ZSwgaiwgZmFsc2UsIGZhbHNlXSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBkZWJ1ZygiUnVu
bmluZyB0ZXN0cy4uLiIpOworICAgIHJ1bk5leHRUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHJ1bk5l
eHRUZXN0KCkKK3sKKyAgICBpZiAoIXNjaGVkdWxlZFRlc3RzLmxlbmd0aCkgeworICAgICAgICB0
ZXN0TnVsbEtleVJhbmdlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2YXIgdGVz
dCA9IHNjaGVkdWxlZFRlc3RzLnBvcCgpOworICAgIHNlbGYubG93ZXIgPSB0ZXN0WzBdOworICAg
IHNlbGYubG93ZXJJc09wZW4gPSB0ZXN0WzFdOworICAgIHNlbGYudXBwZXIgPSB0ZXN0WzJdOwor
ICAgIHNlbGYudXBwZXJJc09wZW4gPSB0ZXN0WzNdOworICAgIHNlbGYuYXNjZW5kaW5nID0gdGVz
dFs0XTsKKworICAgIHN0ciA9ICJOZXh0IHRlc3Q6ICI7CisgICAgaWYgKGxvd2VyICE9PSBudWxs
KSB7CisgICAgICAgIHN0ciArPSAibG93ZXIgIjsKKyAgICAgICAgaWYgKGxvd2VySXNPcGVuKQor
ICAgICAgICAgICAgc3RyICs9ICJvcGVuICI7CisgICAgICAgIHN0ciArPSAiYm91bmQgaXMgIiAr
IGxvd2VyICsgIjsgIjsKKyAgICB9CisgICAgaWYgKHVwcGVyICE9PSBudWxsKSB7CisgICAgICAg
IHN0ciArPSAidXBwZXIgIjsKKyAgICAgICAgaWYgKHVwcGVySXNPcGVuKQorICAgICAgICAgICAg
c3RyICs9ICJvcGVuICI7CisgICAgICAgIHN0ciArPSAiYm91bmQgaXMgIiArIHVwcGVyICsgIjsg
IjsKKyAgICB9CisgICAgaWYgKGFzY2VuZGluZykKKyAgICAgICAgc3RyICs9ICJzb3J0ZWQgYXNj
ZW5kaW5nLiI7CisgICAgZWxzZQorICAgICAgICBzdHIgKz0gInNvcnRlZCBkZXNjZW5kaW5nLiI7
CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoc3RyKTsKKworICAgIC8vIFdvcmsgYXJvdW5k
IGZvciBkdXBsaWNhdGUgdmFsdWVzLgorICAgIGlmICh1cHBlciAhPT0gbnVsbCkgeworICAgICAg
ICBpZiAodXBwZXJJc09wZW4pIHsKKyAgICAgICAgICAgIHdoaWxlICh1cHBlciA+IDAgJiYgdGVz
dERhdGFbdXBwZXJdID09PSB0ZXN0RGF0YVt1cHBlciAtIDFdKQorICAgICAgICAgICAgICAgIC0t
c2VsZi51cHBlcjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHdoaWxlICh1cHBlciA8
IHRlc3REYXRhLmxlbmd0aCAtIDEgJiYgdGVzdERhdGFbdXBwZXJdID09PSB0ZXN0RGF0YVt1cHBl
ciArIDFdKQorICAgICAgICAgICAgICAgICsrc2VsZi51cHBlcjsKKyAgICAgICAgfQorICAgIH0K
KyAgICBpZiAobG93ZXIgIT09IG51bGwpIHsKKyAgICAgICAgaWYgKGxvd2VySXNPcGVuKSB7Cisg
ICAgICAgICAgICB3aGlsZSAobG93ZXIgPCB0ZXN0RGF0YS5sZW5ndGggLSAxICYmIHRlc3REYXRh
W2xvd2VyXSA9PT0gdGVzdERhdGFbbG93ZXIgKyAxXSkKKyAgICAgICAgICAgICAgICArK3NlbGYu
bG93ZXI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB3aGlsZSAobG93ZXIgPiAwICYm
IHRlc3REYXRhW2xvd2VyXSA9PT0gdGVzdERhdGFbbG93ZXIgLSAxXSkKKyAgICAgICAgICAgICAg
ICAtLXNlbGYubG93ZXI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoYXNjZW5kaW5nKSB7
CisgICAgICAgIGlmIChsb3dlciAhPT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKCFsb3dlcklz
T3BlbikKKyAgICAgICAgICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSBsb3dlcjsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSBsb3dlciAr
IDE7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gMDsK
KyAgICB9IGVsc2UgeworICAgICAgICBpZiAodXBwZXIgIT09IG51bGwpIHsKKyAgICAgICAgICAg
IGlmICghdXBwZXJJc09wZW4pCisgICAgICAgICAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0g
dXBwZXI7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc2VsZi5leHBlY3RlZElu
ZGV4ID0gdXBwZXIgLSAxOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHNlbGYuZXhwZWN0
ZWRJbmRleCA9IHRlc3REYXRhLmxlbmd0aCAtIDE7CisgICAgfQorICAgIHRlc3RXaXRoaW5Cb3Vu
ZHMoKTsKKworICAgIGlmICh0ZXN0RGF0YVtsb3dlcl0gPT09IHRlc3REYXRhW3VwcGVyXSAmJiAo
bG93ZXJJc09wZW4gfHwgdXBwZXJJc09wZW4pKSB7CisgICAgICAgIGRlYnVnKCJTa2lwcGluZyBp
bGxlZ2FsIGtleSByYW5nZS4iKTsKKyAgICAgICAgcnVuTmV4dFRlc3QoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIHZhciBrZXlSYW5nZTsKKyAgICBpZiAobG93ZXIgIT09IG51bGwg
JiYgdXBwZXIgIT09IG51bGwpCisgICAgICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2UuYm91bmQo
dGVzdERhdGFbbG93ZXJdLCB0ZXN0RGF0YVt1cHBlcl0sIGxvd2VySXNPcGVuLCB1cHBlcklzT3Bl
bik7CisgICAgZWxzZSBpZiAobG93ZXIgIT09IG51bGwpCisgICAgICAgIGtleVJhbmdlID0gSURC
S2V5UmFuZ2UubG93ZXJCb3VuZCh0ZXN0RGF0YVtsb3dlcl0sIGxvd2VySXNPcGVuKTsKKyAgICBl
bHNlCisgICAgICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2UudXBwZXJCb3VuZCh0ZXN0RGF0YVt1
cHBlcl0sIHVwcGVySXNPcGVuKTsKKworICAgIHZhciByZXF1ZXN0ID0gaW5kZXhPYmplY3Qub3Bl
bktleUN1cnNvcihrZXlSYW5nZSwgYXNjZW5kaW5nID8gSURCQ3Vyc29yLk5FWFQgOiBJREJDdXJz
b3IuUFJFVik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3JJdGVyYXRpb247CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IHRlc3RXaXRoaW5Cb3VuZHMoKQoreworICAgIGlmIChleHBlY3RlZEluZGV4IDwgMCB8fCB0ZXN0
RGF0YS5sZW5ndGggPD0gZXhwZWN0ZWRJbmRleCkKKyAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4
ID0gbnVsbDsKKyAgICBpZiAobG93ZXIgIT09IG51bGwgJiYgZXhwZWN0ZWRJbmRleCA8IGxvd2Vy
KQorICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSBudWxsOworICAgIGlmICh1cHBlciAhPT0g
bnVsbCAmJiB1cHBlciA8IGV4cGVjdGVkSW5kZXgpCisgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRl
eCA9IG51bGw7CisgICAgaWYgKGxvd2VyICE9PSBudWxsICYmIGxvd2VySXNPcGVuICYmIGV4cGVj
dGVkSW5kZXggPD0gbG93ZXIpCisgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IG51bGw7Cisg
ICAgaWYgKHVwcGVyICE9PSBudWxsICYmIHVwcGVySXNPcGVuICYmIHVwcGVyIDw9IGV4cGVjdGVk
SW5kZXgpCisgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IG51bGw7Cit9CisKK2Z1bmN0aW9u
IGN1cnNvckl0ZXJhdGlvbigpCit7CisgICAgaWYgKGV4cGVjdGVkSW5kZXggPT09IG51bGwpIHsK
KyAgICAgICAgc2hvdWxkQmVOdWxsKCJldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgICAgIHJ1
bk5leHRUZXN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGV2ZW50LnRhcmdl
dC5yZXN1bHQgPT09IG51bGwpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiZXZlbnQudGFyZ2V0LnJl
c3VsdCBzaG91bGQgbm90IGJlIG51bGwuIik7CisgICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5w
cmltYXJ5S2V5IiwgImV4cGVjdGVkSW5kZXgiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0
LnJlc3VsdC5rZXkiLCAidGVzdERhdGFbIiArIGV4cGVjdGVkSW5kZXggKyAiXSIpOworICAgIHNl
bGYuZXhwZWN0ZWRJbmRleCA9IGFzY2VuZGluZyA/IGV4cGVjdGVkSW5kZXggKyAxIDogZXhwZWN0
ZWRJbmRleCAtIDE7CisgICAgdGVzdFdpdGhpbkJvdW5kcygpOworCisgICAgZXZlbnQudGFyZ2V0
LnJlc3VsdC5jb250aW51ZSgpOworfQorCitzZWxmLm51bGxLZXlSYW5nZVN0ZXAgPSAwOworZnVu
Y3Rpb24gdGVzdE51bGxLZXlSYW5nZSgpCit7CisgICAgc2VsZi5sb3dlciA9IDA7CisgICAgc2Vs
Zi5sb3dlcklzT3BlbiA9IGZhbHNlOworICAgIHNlbGYudXBwZXIgPSB0ZXN0RGF0YS5sZW5ndGgt
MTsKKyAgICBzZWxmLnVwcGVySXNPcGVuID0gZmFsc2U7CisKKyAgICBzdHIgPSAiTmV4dCB0ZXN0
OiBudWxsIGtleSBwYXRoICI7CisgICAgaWYgKHNlbGYubnVsbEtleVJhbmdlU3RlcCA9PSAwKSB7
CisgICAgICAgIHN0ciArPSAic29ydGVkIGFzY2VuZGluZy4iOworICAgICAgICBzZWxmLmFzY2Vu
ZGluZyA9IHRydWU7CisgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IGxvd2VyOworICAgICAg
ICBzZWxmLm51bGxLZXlSYW5nZVN0ZXAgPSAxOworICAgIH0gZWxzZSBpZiAoc2VsZi5udWxsS2V5
UmFuZ2VTdGVwID09IDEpIHsKKyAgICAgICAgc3RyICs9ICJzb3J0ZWQgZGVzY2VuZGluZy4iOwor
ICAgICAgICBzZWxmLmFzY2VuZGluZyA9IGZhbHNlOworICAgICAgICBzZWxmLmV4cGVjdGVkSW5k
ZXggPSB1cHBlcjsKKyAgICAgICAgc2VsZi5udWxsS2V5UmFuZ2VTdGVwID0gMjsKKyAgICB9IGVs
c2UgeworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZyhzdHIpOworCisgICAgdmFyIHJlcXVlc3QgPSBpbmRl
eE9iamVjdC5vcGVuS2V5Q3Vyc29yKG51bGwsIGFzY2VuZGluZyA/IElEQkN1cnNvci5ORVhUIDog
SURCQ3Vyc29yLlBSRVYpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29ySXRlcmF0aW9u
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCity
ZW1vdmVWZW5kb3JQcmVmaXhlcygpOworb3BlbkRhdGFiYXNlKCk7IC8vIFRoZSBmaXJzdCBzdGVw
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2lu
ZGV4LWdldC1rZXktYXJndW1lbnQtcmVxdWlyZWQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvaW5kZXgtZ2V0LWtleS1hcmd1bWVudC1yZXF1aXJlZC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xM2QzODcwZWVlOWY0ZWJhOTAxNTY4ZWYwOTdiMzBkZmRlYzliOTdhCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4
LWdldC1rZXktYXJndW1lbnQtcmVxdWlyZWQuanMKQEAgLTAsMCArMSwzOSBAQAoraWYgKHRoaXMu
aW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7
Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBpbmRleCAuZ2V0KCkgcmVxdWlyZWQg
YXJndW1lbnQiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4
ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0
aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRl
eGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9n
KCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9i
amVjdFN0b3JlKCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgb2Jq
ZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdmb28nLCB7IGtleVBhdGg6ICdpZCcsIGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7CisgICAg
aW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdmaXJz
dCcsICdmaXJzdCcpOyIpOworICAgIHNob3VsZFRocm93KCJpbmRleC5nZXQoKTsiKTsKKyAgICBz
aG91bGRUaHJvdygiaW5kZXguZ2V0S2V5KCk7Iik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisK
K3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW5kZXgtbXVsdGllbnRyeS5qcyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbmRleC1tdWx0aWVudHJ5Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjAzY2RkOGE5MTU5ZWYxOWUxOWE3NjcyMGFjZjk2ZTYwN2IxNzkzZDEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
aW5kZXgtbXVsdGllbnRyeS5qcwpAQCAtMCwwICsxLDE0MCBAQAoraWYgKHRoaXMuaW1wb3J0U2Ny
aXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rl
c2NyaXB0aW9uKCJUZXN0IGZlYXR1cmVzIG9mIEluZGV4ZWREQidzIG11bHRpRW50cnkgaW5kaWNl
cy4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsK
KworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignaW5kZXgtbXVsdGlF
bnRyeScpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZGIgPSBldmFs
QW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgICAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IHByZXBhcmVEYXRhYmFzZTsKKyAgICB9OworfQorCitmdW5jdGlvbiBwcmVwYXJlRGF0YWJhc2Uo
KQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiQ3JlYXRpbmcgZW1wdHkgc3RvcmVzIGFu
ZCBpbmRleGVzIik7CisgICAgdmFyIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50
YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAg
IHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNv
bXBsZXRlID0gYWRkRGF0YTsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAg
ICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3Jl
JykiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXgnLCAneCcsIHtt
dWx0aUVudHJ5OiB0cnVlfSkiKTsKKworICAgIHN0b3JlMiA9IGV2YWxBbmRMb2coInN0b3JlMiA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZS11bmlxdWUnKSIpOworICAgIGV2YWxBbmRMb2co
InN0b3JlMi5jcmVhdGVJbmRleCgnaW5kZXgtdW5pcXVlJywgJ3gnLCB7bXVsdGlFbnRyeTogdHJ1
ZSwgdW5pcXVlOiB0cnVlfSkiKTsKK30KKworZnVuY3Rpb24gYWRkRGF0YSgpCit7CisgICAgZGVi
dWcoIiIpOworICAgIGRlYnVnKCJQb3B1bGF0aW5nIHN0b3JlcyAoYW5kIGluZGV4ZXMpIik7Cisg
ICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9u
KFsnc3RvcmUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICB0cmFuc2FjdGlv
bi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnNhY3Rpb24ub25j
b21wbGV0ZSA9IGZ1bmN0aW9uKCkgeyB2ZXJpZnlJbmRleGVzKCdpbmRleCcsIHZlcmlmeVVuaXF1
ZUNvbnN0cmFpbnQpOyB9OworCisgICAgZGVidWcoIkZpcnN0IHRyeSBzb21lIGtleXMgdGhhdCBh
cmVuJ3Qgd2hhdCB3ZSdyZSBleHBlY3RpbmciKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
dHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KHt4OiBbNywgOCwgOV0sIHk6ICdh
J30sICdmb28nKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworICAgIGRlYnVnKCJOb3cgb3ZlcndyaXRlIHRoZW0gd2l0aCB3aGF0IHdlJ3JlIGV4cGVj
dGluZyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9y
ZSgnc3RvcmUnKS5wdXQoe3g6IFsxLCAyLCAzXSwgeTogJ2EnfSwgJ2ZvbycpIik7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLnB1dCh7eDogWzQsIDUs
IDZdLCB5OiAnYid9LCAnYmFyJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gdmVyaWZ5SW5kZXhlcyhpbmRleE5hbWUsIGNh
bGxiYWNrKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVmVyaWZ5aW5nIGluZGV4OiAi
ICsgaW5kZXhOYW1lKTsKKyAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9u
ID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7
CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAg
IHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBjYWxsYmFjazsKKworICAgIGV4cGVjdGVkID0gWwor
ICAgICAgICB7IGtleTogMSwgcHJpbWFyeUtleTogJ2ZvbycsIHk6ICdhJyB9LAorICAgICAgICB7
IGtleTogMiwgcHJpbWFyeUtleTogJ2ZvbycsIHk6ICdhJyB9LAorICAgICAgICB7IGtleTogMywg
cHJpbWFyeUtleTogJ2ZvbycsIHk6ICdhJyB9LAorICAgICAgICB7IGtleTogNCwgcHJpbWFyeUtl
eTogJ2JhcicsIHk6ICdiJyB9LAorICAgICAgICB7IGtleTogNSwgcHJpbWFyeUtleTogJ2Jhcics
IHk6ICdiJyB9LAorICAgICAgICB7IGtleTogNiwgcHJpbWFyeUtleTogJ2JhcicsIHk6ICdiJyB9
LAorICAgIF07CisKKyAgICB2YXIgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9i
amVjdFN0b3JlKCdzdG9yZScpLmluZGV4KCciICsgaW5kZXhOYW1lICsgIicpLm9wZW5DdXJzb3Io
KSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgY3Vyc29yID0g
ZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgICAgICBpZiAo
Y3Vyc29yKSB7CisgICAgICAgICAgICBleCA9IGV4cGVjdGVkLnNoaWZ0KCk7CisgICAgICAgICAg
ICBzaG91bGRCZVRydWUoImV4ICE9IG51bGwiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJz
b3Iua2V5IiwgU3RyaW5nKGV4LmtleSkpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJjdXJzb3IucHJpbWFyeUtleSIsIGV4LnByaW1hcnlLZXkpOworICAgICAgICAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJjdXJzb3IudmFsdWUueSIsIGV4LnkpOworICAgICAgICAgICAg
Y3Vyc29yLmNvbnRpbnVlKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzaG91bGRC
ZVRydWUoImV4cGVjdGVkLmxlbmd0aCA9PT0gMCIpOworICAgICAgICB9CisgICAgfTsKK30KKwor
ZnVuY3Rpb24gdmVyaWZ5VW5pcXVlQ29uc3RyYWludCgpCit7CisgICAgZGVidWcoIiIpOworICAg
IGRlYnVnKCJWZXJpZnlpbmcgdW5pcXVlIGNvbnN0cmFpbnQgb24gbXVsdGlFbnRyeSBpbmRleCIp
OworICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2Fj
dGlvbihbJ3N0b3JlLXVuaXF1ZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAg
IHRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgIGRlYnVnKCJUcmFu
c2FjdGlvbiBhYm9ydGVkIGFzIGV4cGVjdGVkIik7CisgICAgICAgIGNyZWF0ZUluZGV4T25TdG9y
ZVdpdGhEYXRhKCk7CisgICAgfTsKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gdW5leHBl
Y3RlZENvbXBsZXRlQ2FsbGJhY2s7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnNh
Y3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlLXVuaXF1ZScpLnB1dCh7eDogWzEsIDIsIDNdLCB5OiAn
YSd9LCAnZm9vJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBkZWJ1
Zygic3VjY2VzcyEiKTsKKyAgICAgICAgZGVidWcoIlJlcGxhY2UgYW4gZXhpc3RpbmcgcmVjb3Jk
IC0gdGhpcyBzaG91bGQgd29yayIpOworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJh
bnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlLXVuaXF1ZScpLnB1dCh7eDogWzEsIDIsIDddLCB5
OiAnYSd9LCAnZm9vJykiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICBkZWJ1Zygic3VjY2VzcyEiKTsKKyAgICAgICAgICAgIGRlYnVnKCJUaGlzIHNo
b3VsZCBmYWlsIHRoZSB1bmlxdWVuZXNzIGNvbnN0cmFpbnQgb24gdGhlIGluZGV4LCBhbmQgZmFp
bDoiKTsKKyAgICAgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmpl
Y3RTdG9yZSgnc3RvcmUtdW5pcXVlJykucHV0KHt4OiBbNSwgMl0sIHk6ICdjJ30sICdzaG91bGQg
ZmFpbCcpIik7CisgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNj
ZXNzQ2FsbGJhY2s7CisgICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbigpIHsg
ZGVidWcoIlJlcXVlc3QgZmFpbGVkLCBhcyBleHBlY3RlZCIpOyB9OworICAgICAgICB9OworICAg
IH07Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUluZGV4T25TdG9yZVdpdGhEYXRhKCkKK3sKKyAgICBk
ZWJ1ZygiIik7CisgICAgZGVidWcoIkNyZWF0ZSBhbiBpbmRleCBvbiBhIHBvcHVsYXRlZCBzdG9y
ZSIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJzInKSIpOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisKKyAgICAgICAgdmFyIHRyYW5zID0gZXZhbEFu
ZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgICAgIHNob3VsZEJlVHJ1
ZSgidHJhbnMgIT09IG51bGwiKTsKKyAgICAgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRB
Ym9ydENhbGxiYWNrOworICAgICAgICB0cmFucy5vbmNvbXBsZXRlID0gZnVuY3Rpb24oKSB7IHZl
cmlmeUluZGV4ZXMoJ2luZGV4LW5ldycsIGZpbmlzaEpTVGVzdCk7IH07CisKKyAgICAgICAgc3Rv
cmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpIik7Cisg
ICAgICAgIGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleC1uZXcnLCAneCcsIHtt
dWx0aUVudHJ5OiB0cnVlfSkiKTsKKyAgICB9OworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL2luZGV4LXBvcHVsYXRpb24uanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvaW5kZXgtcG9wdWxhdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOTk3Mjg2NjZm
ZDZkNDJkZjA5ZGI4MTYzNzRkZTc5M2UwYTFhNWNkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4LXBvcHVsYXRpb24uanMKQEAg
LTAsMCArMSw5MSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlw
dHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1w
b3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWRE
QiBpbmRleCBwb3B1bGF0aW9uLiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVW
ZW5kb3JQcmVmaXhlcygpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5k
ZWxldGVEYXRhYmFzZSgnaW5kZXgtcG9wdWxhdGlvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBkZWxldGVTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxldGVTdWNjZXNzKCkKK3sKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2luZGV4LXBvcHVsYXRpb24nKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZG9TZXRWZXJzaW9uMTsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZG9TZXRWZXJzaW9uMSgp
Cit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJkb1NldFZlcnNpb24xKCk6Iik7CisgICAg
c2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJyki
KTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb24xOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9u
MSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJzZXRWZXJzaW9uMSgpOiIpOworICAg
IHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSByZXF1ZXN0LnJlc3VsdCIp
OworICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgc3Rv
cmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTEnKSIp
OworICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCh7ZGF0YTogJ2EnLCBpbmRleEtleTogMTB9LCAx
KSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCh7ZGF0YTogJ2InLCBpbmRleEtleTogMjB9
LCAyKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCh7ZGF0YTogJ2MnLCBpbmRleEtleTog
MTB9LCAzKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCh7ZGF0YTogJ2QnLCBpbmRleEtl
eTogMjB9LCA0KSIpOworICAgIGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgo
J2luZGV4MScsICdpbmRleEtleScpIik7CisgICAgc2hvdWxkQmVUcnVlKCJpbmRleCBpbnN0YW5j
ZW9mIElEQkluZGV4Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiaW5kZXgudW5pcXVlIik7CisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleC5jb3VudChJREJLZXlSYW5nZS5i
b3VuZCgtSW5maW5pdHksIEluZmluaXR5KSkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgc2hvdWxkQmUoInJlcXVlc3QucmVzdWx0IiwgIjQiKTsKKyAgICB9OworICAg
IHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBkb1NldFZlcnNpb24yOworfQorCitmdW5jdGlvbiBk
b1NldFZlcnNpb24yKCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiZG9TZXRWZXJzaW9u
MigpOiIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lv
bigndmVyc2lvbiAyJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb24yOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiBzZXRWZXJzaW9uMigpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJzZXRWZXJz
aW9uMigpOiIpOworICAgIHRyYW5zYWN0aW9uMiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0g
cmVxdWVzdC5yZXN1bHQiKTsKKyAgICB0cmFuc2FjdGlvbjIub25hYm9ydCA9IHNldFZlcnNpb24y
QWJvcnQ7CisgICAgdHJhbnNhY3Rpb24yLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQ29tcGxldGVD
YWxsYmFjazsKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ3N0b3JlMicpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUucHV0KHtkYXRhOiAnYScs
IGluZGV4S2V5OiAxMH0sIDEpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUucHV0KHtkYXRhOiAn
YicsIGluZGV4S2V5OiAyMH0sIDIpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUucHV0KHtkYXRh
OiAnYycsIGluZGV4S2V5OiAxMH0sIDMpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUucHV0KHtk
YXRhOiAnZCcsIGluZGV4S2V5OiAyMH0sIDQpIik7CisgICAgZXZhbEFuZExvZygiaW5kZXgyID0g
c3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4MicsICdpbmRleEtleScsIHsgdW5pcXVlOiB0cnVlIH0p
Iik7CisgICAgc2hvdWxkQmVUcnVlKCJpbmRleDIgaW5zdGFuY2VvZiBJREJJbmRleCIpOworICAg
IHNob3VsZEJlVHJ1ZSgiaW5kZXgyLnVuaXF1ZSIpOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9u
MkFib3J0KCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInNldFZlcnNpb24yQWJvcnQo
KToiKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMSIpOwor
ICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzWzBdIiwgIidzdG9yZTEnIik7CisgICAg
ZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW5k
ZXgtdW5pcXVlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2lu
ZGV4LXVuaXF1ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZGI4NWI2OWU0ODA4NTQxYzBiNGE5YzI2NmY3Njcw
ZWI2OGZhZTRiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL2luZGV4LXVuaXF1ZS5qcwpAQCAtMCwwICsxLDEzNiBAQAoraWYgKHRoaXMu
aW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7
Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IGZlYXR1cmVzIG9mIEluZGV4ZWREQidzIHVuaXF1ZSBp
bmRpY2VzLiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhl
cygpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignaW5kZXgtdW5p
cXVlJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb247CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZl
cnNpb24oKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNp
b24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRl
bGV0ZUV4aXN0aW5nKCkKK3sKKyAgICBkZWJ1ZygiZGVsZXRlRXhpc3RpbmcoKToiKTsKKyAgICB2
YXIgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAg
ICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVu
ZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSBzZXRWZXJzaW9u
Q29tcGxldGVkOworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIHNlbGYu
c3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAg
IHNlbGYuaW5kZXhPYmplY3QgPSBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXgn
LCAneCcsIHt1bmlxdWU6IHRydWV9KSIpOworCisgICAgLy8gTGV0IHNldFZlcnNpb24gdHJhbnNh
Y3Rpb24gY29tcGxldGUuCit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb25Db21wbGV0ZWQoKQorewor
ICAgIGRlYnVnKCJzZXRWZXJzaW9uQ29tcGxldGVkKCk6Iik7CisgICAgc2VsZi50cmFuc2FjdGlv
biA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZSddLCBJ
REJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLnB1dCh7eDogMX0sICdmb28nKSIpOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gYWRkTW9yZURhdGE7Cit9CisKK2Z1bmN0aW9uIGFkZE1vcmVEYXRhKCkK
K3sKKyAgICBkZWJ1ZygiYWRkTW9yZURhdGEoKToiKTsKKworICAgIC8vIFRoZSB4IHZhbHVlIHZp
b2xhdGVzIHRoZSB1bmlxdWVuZXNzIGNvbnN0cmFpbnQgb2YgdGhlIGluZGV4LgorICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKS5wdXQoe3g6
IDF9LCAnYmFyJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBhZGRNb3JlRGF0YUZhaWxlZDsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIGFkZE1vcmVEYXRhRmFpbGVkKCkKK3sKKyAgICBkZWJ1ZygiYWRkTW9yZURhdGFG
YWlsZWQoKToiKTsKKworICAgIC8vIERvbid0IGFib3J0IHRoZSB0cmFuc2FjdGlvbi4KKyAgICBl
dmFsQW5kTG9nKCJldmVudC5wcmV2ZW50RGVmYXVsdCgpIik7CisKKyAgICBzaG91bGRCZSgiZXZl
bnQudGFyZ2V0LmVycm9yQ29kZSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5DT05TVFJBSU5UX0VS
UiIpOworCisgICAgLy8gVXBkYXRlIHRoZSAnZm9vJyBlbnRyeSBpbiBvYmplY3Qgc3RvcmUsIGNo
YW5naW5nIHRoZSB2YWx1ZSBvZiB4LgorICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2Fj
dGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKS5wdXQoe3g6IDB9LCAnZm9vJykiKTsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGNoYW5nZURhdGFTdWNjZXNzOworfQorCitmdW5jdGlvbiBjaGFuZ2VEYXRhU3VjY2Vz
cygpCit7CisgICAgZGVidWcoImNoYW5nZURhdGFTdWNjZXNzKCk6Iik7CisKKyAgICAvLyBBbiBp
bmRleCBjdXJzb3Igc3RhcnRpbmcgYXQgMSBzaG91bGQgbm90IGZpbmQgYW55dGhpbmcuCisgICAg
dmFyIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUn
KS5pbmRleCgnaW5kZXgnKS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLmxvd2VyQm91bmQoMSkpIik7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3JTdWNjZXNzOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjdXJzb3JTdWNj
ZXNzKCkKK3sKKyAgICBkZWJ1ZygiY3Vyc29yU3VjY2VzcygpOiIpOworICAgIHNob3VsZEJlKCJl
dmVudC50YXJnZXQucmVzdWx0IiwgIm51bGwiKTsKKworICAgIC8vIEEga2V5IGN1cnNvciBzdGFy
dGluZyBhdCAxIHNob3VsZCBub3QgZmluZCBhbnl0aGluZy4KKyAgICB2YXIgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLmluZGV4KCdpbmRleCcp
Lm9wZW5LZXlDdXJzb3IoSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgxKSkiKTsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGtleUN1cnNvclN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGtleUN1cnNvclN1Y2Nlc3MoKQor
eworICAgIGRlYnVnKCJrZXlDdXJzb3JTdWNjZXNzKCk6Iik7CisgICAgc2hvdWxkQmUoImV2ZW50
LnRhcmdldC5yZXN1bHQiLCAibnVsbCIpOworCisgICAgLy8gTm93IHdlIHNob3VsZCBiZSBhYmxl
IHRvIGFkZCBhIHZhbHVlIHdpdGggeDogMS4KKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJh
bnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KHt4OiAxfSwgJ2JhcicpIik7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBhZGRNb3JlRGF0YVN1Y2NlczsKK30KKworZnVuY3Rpb24gYWRkTW9yZURhdGFT
dWNjZXMoKQoreworICAgIGRlYnVnKCJhZGRNb3JlRGF0YVN1Y2NlcygpOiIpOworCisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLmRlbGV0
ZSgnYmFyJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZVN1Y2Nlc3M7Cit9CisKK2Z1bmN0aW9u
IGRlbGV0ZVN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJkZWxldGVTdWNjZXNzKCk6Iik7CisKKyAg
ICAvLyBOb3cgd2Ugc2hvdWxkIGJlIGFibGUgdG8gYWRkIGEgdmFsdWUgd2l0aCB4OiAxIGFnYWlu
LgorICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3Rv
cmUnKS5wdXQoe3g6IDF9LCAnYmF6JykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZpbmFsQWRkU3VjY2Vz
czsKK30KKworZnVuY3Rpb24gZmluYWxBZGRTdWNjZXNzKCkgeworICAgIGRlYnVnKCJmaW5hbEFk
ZFN1Y2Nlc3MoKToiKTsKKworICAgIC8vIEFuIG92ZXJ3cml0ZSBzaG91bGQgYmUgb2suCisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLnB1
dCh7eDogMX0sICdiYXonKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZmluaXNoSlNUZXN0OworfQorCit0
ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ludmFsaWQta2V5cy5qcyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbnZhbGlkLWtleXMuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYjZjMTc1NzY3NDBiM2Q1N2Y5OTYzMGVlMmE3MDM4NjA1NjU0YTZmNAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbnZhbGlkLWtl
eXMuanMKQEAgLTAsMCArMSw2NCBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGlt
cG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7
CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0
IEluZGV4ZWREQiBpbnZhbGlkIGtleXMiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVt
b3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1l
OworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAg
ZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSB0ZXN0R3JvdXAxOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiB0ZXN0R3JvdXAxKCkKK3sKKyAgICBk
ZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9n
KCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJyk7Iik7CisgICAgdGVzdEludmFsaWRLZXlzKCk7
Cit9CisKK2Z1bmN0aW9uIHRlc3RJbnZhbGlkS2V5cygpCit7CisgICAgdmFyIGludmFsaWRLZXlz
ID0gWworICAgICAgICAidm9pZCAwIiwgLy8gVW5kZWZpbmVkCisgICAgICAgICJudWxsIiwgLy8g
TnVsbAorICAgICAgICAiKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpIiwgLy8g
QXJndW1lbnRzCisgICAgICAgICJ0cnVlIiwgLy8gQm9vbGVhbgorICAgICAgICAiZmFsc2UiLCAv
LyBCb29sZWFuCisgICAgICAgICJuZXcgRXJyb3IiLCAvLyBFcnJvcgorICAgICAgICAiZnVuY3Rp
b24gKCkge30iLCAvLyBGdW5jdGlvbgorICAgICAgICAiSlNPTiIsIC8vIEpTT04KKyAgICAgICAg
Ik1hdGgiLCAvLyBNYXRoCisgICAgICAgICJOYU4iLCAvLyBOdW1iZXIgKHNwZWNpYWwgY2FzZSkK
KyAgICAgICAgIm5ldyBEYXRlKE5hTikiLCAvLyBEYXRlIChzcGVjaWFsIGNhc2UpCisgICAgICAg
ICJ7fSIsIC8vIE9iamVjdAorICAgICAgICAiL3JlZ2V4LyIsIC8vIFJlZ0V4cAorICAgICAgICAi
c2VsZiIsIC8vIGdsb2JhbAorICAgICAgICAic2VsZi5kb2N1bWVudCIsIC8vIEhUTUxEb2N1bWVu
dAorICAgICAgICAic2VsZi5kb2N1bWVudC5ib2R5IiAvLyBIVE1MQm9keUVsZW1lbnQKKyAgICBd
OworCisgICAgaW52YWxpZEtleXMuZm9yRWFjaChmdW5jdGlvbihrZXkpIHsKKyAgICAgICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigicmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgndmFsdWUnLCAi
ICsga2V5ICsgIikiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKyAgICB9KTsK
KyAgICAKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9rZXktZ2VuZXJhdG9yLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL2tleS1nZW5lcmF0b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjFiMTc1MThjZTExYjA2MWUx
YzVmZjhmOTBjMGJjY2JmMTE2YmI5ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXktZ2VuZXJhdG9yLmpzCkBAIC0wLDAgKzEsMjA2
IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRz
KCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mga2V5IGdl
bmVyYXRvciBiZWhhdmlvci4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVu
ZG9yUHJlZml4ZXMoKTsKKworICAgIHJ1blRlc3RzKCk7Cit9CisKK3ZhciB0ZXN0cyA9IFtdOwor
ZnVuY3Rpb24gZGVmaW5lVGVzdChkZXNjcmlwdGlvbiwgdmVyY2hhbmdlLCBvcHRpb25hbCkgewor
ICB0ZXN0cy5wdXNoKAorICAgIHsKKyAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiwKKyAg
ICAgIHZlcmNoYW5nZTogdmVyY2hhbmdlLAorICAgICAgb3B0aW9uYWw6IG9wdGlvbmFsCisgICAg
fQorICApOworfQorCitmdW5jdGlvbiBydW5UZXN0cygpIHsKKworICAgIGZ1bmN0aW9uIG5leHRU
ZXN0KCkgeworICAgICAgICBpZiAoIXRlc3RzLmxlbmd0aCkgeworICAgICAgICAgICAgZmluaXNo
SlNUZXN0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB2YXIg
dGVzdCA9IHRlc3RzLnNoaWZ0KCk7CisgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgZGVidWco
dGVzdC5kZXNjcmlwdGlvbik7CisKKyAgICAgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4
ZWREQi5kZWxldGVEYXRhYmFzZSgna2V5LWdlbmVyYXRvcicpIik7CisgICAgICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBp
bmRleGVkREIub3Blbigna2V5LWdlbmVyYXRvcicpIik7CisgICAgICAgICAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImRiID0g
cmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
ZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coInRyYW5z
ID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgICAgICAgICAgICAgdHJhbnMub25hYm9ydCA9
IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgICAgICAgICAgICAgICAgICB0ZXN0LnZlcmNo
YW5nZShkYiwgdHJhbnMpOworICAgICAgICAgICAgICAgICAgICB0cmFucy5vbmNvbXBsZXRlID0g
ZnVuY3Rpb24gKCkgeworCisgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBmaW5pc2hU
ZXN0KCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImRiLmNsb3Nl
KCkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0VGVzdCgpOworICAgICAgICAg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGVzdC5vcHRp
b25hbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Qub3B0aW9uYWwoZGIsIGZp
bmlzaFRlc3QpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAg
IH07CisgICAgICAgIH07CisgICAgfQorCisgICAgbmV4dFRlc3QoKTsKK30KKworZnVuY3Rpb24g
Y2hlY2soc3RvcmUsIGtleSwgZXhwZWN0ZWQpIHsKKyAgICBzZWxmLnN0b3JlID0gc3RvcmU7Cisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdG9yZS5nZXQoIiArIEpTT04uc3Ry
aW5naWZ5KGtleSkgKyAiKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKKyAgICAg
ICAgc2VsZi5leHBlY3RlZCA9IGV4cGVjdGVkOworICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnko
ZXZlbnQudGFyZ2V0LnJlc3VsdCkgPT09IEpTT04uc3RyaW5naWZ5KGV4cGVjdGVkKSkgeworICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiR290ICIgKyBKU09OLnN0cmluZ2lmeShldmVudC50YXJnZXQu
cmVzdWx0KSArICIgZm9yIGtleTogIiArIEpTT04uc3RyaW5naWZ5KGtleSkpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiR290ICIgKyBKU09OLnN0cmluZ2lmeShl
dmVudC50YXJnZXQucmVzdWx0KSArICIgZm9yIGtleTogIiArIEpTT04uc3RyaW5naWZ5KGtleSkg
KworICAgICAgICAgICAgICAgICIgZXhwZWN0ZWQ6ICIgKyBKU09OLnN0cmluZ2lmeShleHBlY3Rl
ZCkpOworICAgICAgICB9CisgICAgfTsKK30KKworZGVmaW5lVGVzdCgKKyAgICAnVmVyaWZ5IHRo
YXQgZWFjaCBvYmplY3Qgc3RvcmUgaGFzIGFuIGluZGVwZW5kZW50IGtleSBnZW5lcmF0b3IuJywK
KyAgICBmdW5jdGlvbiAoZGIsIHRyYW5zKSB7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlMSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTEnLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSki
KTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUxLnB1dCgnYScpIik7CisgICAgICAgIGNoZWNr
KHN0b3JlMSwgMSwgJ2EnKTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUyID0gZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ3N0b3JlMicsIHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9KSIpOworICAgICAg
ICBldmFsQW5kTG9nKCJzdG9yZTIucHV0KCdhJykiKTsKKyAgICAgICAgY2hlY2soc3RvcmUyLCAx
LCAnYScpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZTEucHV0KCdiJykiKTsKKyAgICAgICAg
Y2hlY2soc3RvcmUxLCAyLCAnYicpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZTIucHV0KCdi
JykiKTsKKyAgICAgICAgY2hlY2soc3RvcmUyLCAyLCAnYicpOworICAgIH0KKyk7CisKK2RlZmlu
ZVRlc3QoCisgICAgJ1ZlcmlmeSB0aGF0IHRoZSBrZXkgZ2VuZXJhdG9yIGlzIG5vdCB1cGRhdGVk
IGlmIGluc2VydGlvbiBmYWlscycsCisgICAgZnVuY3Rpb24gKGRiLCB0cmFucykgeworICAgICAg
ICB0cmFucy5vbmVycm9yID0gZnVuY3Rpb24oZSkgeyBlLnByZXZlbnREZWZhdWx0KCkgfTsKKyAg
ICAgICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUxJywg
eyBhdXRvSW5jcmVtZW50OiB0cnVlIH0pIik7CisgICAgICAgIGV2YWxBbmRMb2coImluZGV4ID0g
c3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4MScsICdpeCcsIHsgdW5pcXVlOiB0cnVlIH0pIik7Cisg
ICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCh7IGl4OiAnYSd9KSIpOworICAgICAgICBjaGVj
ayhzdG9yZSwgMSwge2l4OiAnYSd9KTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KHsg
aXg6ICdhJ30pIik7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCh7IGl4OiAnYid9KSIp
OworICAgICAgICBjaGVjayhzdG9yZSwgMiwge2l4OiAnYid9KTsKKyAgICB9CispOworCitkZWZp
bmVUZXN0KAorICAgICdWZXJpZnkgdGhhdCB0aGUga2V5IGdlbmVyYXRvciBpcyBub3QgYWZmZWN0
ZWQgYnkgaXRlbSByZW1vdmFsIChkZWxldGUgb3IgY2xlYXIpLicsCisgICAgZnVuY3Rpb24gKGRi
LCB0cmFucykgeworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0
b3JlKCdzdG9yZTEnLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSkiKTsKKyAgICAgICAgZXZhbEFu
ZExvZygic3RvcmUucHV0KCdhJykiKTsKKyAgICAgICAgY2hlY2soc3RvcmUsIDEsICdhJyk7Cisg
ICAgICAgIGV2YWxBbmRMb2coInN0b3JlLmRlbGV0ZSgxKSIpOworICAgICAgICBldmFsQW5kTG9n
KCJzdG9yZS5wdXQoJ2InKSIpOworICAgICAgICBjaGVjayhzdG9yZSwgMiwgJ2InKTsKKyAgICAg
ICAgZXZhbEFuZExvZygic3RvcmUuY2xlYXIoKSIpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9y
ZS5wdXQoJ2MnKSIpOworICAgICAgICBjaGVjayhzdG9yZSwgMywgJ2MnKTsKKyAgICAgICAgLy8g
RklYTUU6IElEQk9iamVjdFN0b3JlLmRlbGV0ZShJREJLZXlSYW5nZSkgaXMgbm90IHlldCBpbXBs
ZW1lbnRlZCBpbiBDaHJvbWl1bS4KKyAgICAgICAgLy8gaHR0cDovL2NyYnVnLmNvbS8xMDEzODQK
KyAgICAgICAgLy9ldmFsQW5kTG9nKCJzdG9yZS5kZWxldGUoSURCS2V5UmFuZ2UubG93ZXJCb3Vu
ZCgwKSkiKTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdkJykiKTsKKyAgICAgICAg
Y2hlY2soc3RvcmUsIDQsICdkJyk7CisgICAgfQorKTsKKworZGVmaW5lVGVzdCgKKyAgICAnVmVy
aWZ5IHRoYXQgdGhlIGtleSBnZW5lcmF0b3IgaXMgb25seSBzZXQgaWYgYW5kIG9ubHkgaWYgYSBu
dW1lcmljIGtleSBncmVhdGVyIHRoYW4gdGhlIGxhc3QgZ2VuZXJhdGVkIGtleSBpcyB1c2VkLics
CisgICAgZnVuY3Rpb24gKGRiLCB0cmFucykgeworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTEnLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSki
KTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdhJykiKTsKKyAgICAgICAgY2hlY2so
c3RvcmUsIDEsICdhJyk7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgnYicsIDMpIik7
CisgICAgICAgIGNoZWNrKHN0b3JlLCAzLCAnYicpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9y
ZS5wdXQoJ2MnKSIpOworICAgICAgICBjaGVjayhzdG9yZSwgNCwgJ2MnKTsKKyAgICAgICAgZXZh
bEFuZExvZygic3RvcmUucHV0KCdkJywgLTEwKSIpOworICAgICAgICBjaGVjayhzdG9yZSwgLTEw
LCAnZCcpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2UnKSIpOworICAgICAgICBj
aGVjayhzdG9yZSwgNSwgJ2UnKTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdmJywg
Ni4wMDAwMSkiKTsKKyAgICAgICAgY2hlY2soc3RvcmUsIDYuMDAwMDEsICdmJyk7CisgICAgICAg
IGV2YWxBbmRMb2coInN0b3JlLnB1dCgnZycpIik7CisgICAgICAgIGNoZWNrKHN0b3JlLCA3LCAn
ZycpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2YnLCA4Ljk5OTkpIik7CisgICAg
ICAgIGNoZWNrKHN0b3JlLCA4Ljk5OTksICdmJyk7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3Jl
LnB1dCgnZycpIik7CisgICAgICAgIGNoZWNrKHN0b3JlLCA5LCAnZycpOworICAgICAgICBldmFs
QW5kTG9nKCJzdG9yZS5wdXQoJ2gnLCAnZm9vJykiKTsKKyAgICAgICAgY2hlY2soc3RvcmUsICdm
b28nLCAnaCcpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2knKSIpOworICAgICAg
ICBjaGVjayhzdG9yZSwgMTAsICdpJyk7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgn
aicsIFsxMDAwXSkiKTsKKyAgICAgICAgY2hlY2soc3RvcmUsIFsxMDAwXSwgJ2onKTsKKyAgICAg
ICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdrJykiKTsKKyAgICAgICAgY2hlY2soc3RvcmUsIDEx
LCAnaycpOworCisgICAgICAgIC8vIEZJWE1FOiBSZXBlYXQgdGhpcyB0ZXN0LCBidXQgd2l0aCBh
IGtleVBhdGggYW5kIGlubGluZSBrZXkuCisgICAgfQorKTsKKworZGVmaW5lVGVzdCgKKyAgICAn
VmVyaWZ5IHRoYXQgYWJvcnRpbmcgYSB0cmFuc2FjdGlvbiByZXNldHMgdGhlIGtleSBnZW5lcmF0
b3Igc3RhdGUuJywKKyAgICBmdW5jdGlvbiAoZGIsIHRyYW5zKSB7CisgICAgICAgIGRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdzdG9yZScsIHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9KTsKKyAgICB9LAor
CisgICAgZnVuY3Rpb24gKGRiLCBjYWxsYmFjaykgeworICAgICAgICBldmFsQW5kTG9nKCJ0cmFu
czEgPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUp
Iik7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlX3QxID0gdHJhbnMxLm9iamVjdFN0b3JlKCdz
dG9yZScpIik7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlX3QxLnB1dCgnYScpIik7CisgICAg
ICAgIGNoZWNrKHN0b3JlX3QxLCAxLCAnYScpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZV90
MS5wdXQoJ2InKSIpOworICAgICAgICBjaGVjayhzdG9yZV90MSwgMiwgJ2InKTsKKworICAgICAg
ICAvLyBTY2hlZHVsZSB0aGUgYWJvcnQgYXMgYSB0YXNrIChub3QgcnVuIGl0IHN5bmNocm9ub3Vz
bHkpCisgICAgICAgIHN0b3JlX3QxLmdldCgwKS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICBkZWJ1ZygnYWJvcnRpbmcuLi4nKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2co
InRyYW5zMS5hYm9ydCgpIik7CisgICAgICAgICAgICB0cmFuczEub25hYm9ydCA9IGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICBkZWJ1ZygnYWJvcnRlZCEnKTsKKworICAgICAgICAgICAg
ICAgIGV2YWxBbmRMb2coInRyYW5zMiA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUnXSwgSURCVHJh
bnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJzdG9y
ZV90MiA9IHRyYW5zMi5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgICAgICAgICAgICAgIGV2
YWxBbmRMb2coInN0b3JlX3QyLnB1dCgnYycpIik7CisgICAgICAgICAgICAgICAgY2hlY2soc3Rv
cmVfdDIsIDEsICdjJyk7CisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygic3RvcmVfdDIucHV0
KCdkJykiKTsKKyAgICAgICAgICAgICAgICBjaGVjayhzdG9yZV90MiwgMiwgJ2QnKTsKKworICAg
ICAgICAgICAgICAgIHRyYW5zMi5vbmNvbXBsZXRlID0gY2FsbGJhY2s7CisgICAgICAgICAgICB9
OworICAgICAgICB9OworICAgIH0KKyk7CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMva2V5LXNvcnQtb3JkZXItYWNyb3NzLXR5cGVzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL2tleS1zb3J0LW9yZGVyLWFjcm9zcy10eXBlcy5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43YzdmZjhlNDcwZmUxZjAyZGU4MTJmZjlmNTFmZjdiMDY1MjZkOTE1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleS1zb3J0
LW9yZGVyLWFjcm9zcy10eXBlcy5qcwpAQCAtMCwwICsxLDg1IEBACitpZiAodGhpcy5pbXBvcnRT
Y3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKwor
ZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGtleSBjb21wYXJpc29uIik7CisKK2Z1bmN0aW9u
IHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2Vs
Zi5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNl
IjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3Jp
cHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3Bl
blN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVz
dWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNp
b24oJzEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkS2V5MTsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gYWRkS2V5
MSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3Jl
ID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycpOyIpOworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKFtdLCBJbmZpbml0eSk7
Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRLZXkyOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBhZGRLZXkyKCkKK3sK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChbXSwg
LUluZmluaXR5KTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEtleTM7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGFk
ZEtleTMoKQoreworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3Rv
cmUuYWRkKFtdLCAxLjApOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkS2V5NDsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rp
b24gYWRkS2V5NCgpCit7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmpl
Y3RTdG9yZS5hZGQoW10sICcnKTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEtleTU7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIGFkZEtleTUoKQoreworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
b2JqZWN0U3RvcmUuYWRkKFtdLCAnMS4wJyk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBv
cGVuQUN1cnNvcjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gb3BlbkFDdXJzb3IoKQoreworICAgIGtleUluZGV4ID0gMDsKKyAg
ICBzb3J0ZWRLZXlzID0gZXZhbEFuZExvZygic29ydGVkS2V5ID0gWy1JbmZpbml0eSwgMS4wLCBJ
bmZpbml0eSwgJycsICcxLjAnXTsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
IChldmVudCkgeworICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50
YXJnZXQucmVzdWx0OyIpOworICAgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLmtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOworICAgICAgICAgICAg
ZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisgICAgICAgICAgICBldmFsQW5kTG9n
KCJrZXlJbmRleCsrOyIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3Rlc3QoKTsKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMva2V5LXNvcnQtb3JkZXItZGF0ZS5qcyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXktc29ydC1vcmRlci1kYXRlLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmExZmZmMzcyOWQxOGQ1NzFlNWZmYmY3Zjc3Mjg0ZjI3Yjk2ZTY4NDUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5LXNvcnQtb3Jk
ZXItZGF0ZS5qcwpAQCAtMCwwICsxLDgyIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Cisg
ICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24o
IlRlc3QgSW5kZXhlZERCIGtleSBjb21wYXJpc29uIik7CisKK2Z1bmN0aW9uIHRlc3QoKQorewor
ICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5w
YXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQor
eworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkS2V5MTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gYWRkS2V5MSgpCit7CisgICAg
ZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExv
ZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycpOyIpOworICAgIGRhdGUxID0gZXZhbEFuZExv
ZygiZGF0ZTEgPSBuZXcgRGF0ZSgxMDAwKTsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChbXSwgZGF0ZTEpOyIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gYWRkS2V5MjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gYWRkS2V5MigpCit7CisgICAgZGF0ZTAgPSBldmFsQW5k
TG9nKCJkYXRlMCA9IG5ldyBEYXRlKDApOyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKFtdLCBkYXRlMCk7Iik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBhZGRLZXkzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBhZGRLZXkzKCkKK3sKKyAgICBkYXRlMyA9IGV2YWxBbmRM
b2coImRhdGUzID0gbmV3IERhdGUoMzAwMCk7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoW10sIGRhdGUzKTsiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGFkZEtleTQ7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGFkZEtleTQoKQoreworICAgIGRhdGUyID0gZXZhbEFu
ZExvZygiZGF0ZTIgPSBuZXcgRGF0ZSgyMDAwKTsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChbXSwgZGF0ZTIpOyIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gb3BlbkFDdXJzb3I7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5BQ3Vyc29yKCkKK3sKKyAgICBrZXlJ
bmRleCA9IDA7CisgICAgc29ydGVkS2V5cyA9IGV2YWxBbmRMb2coInNvcnRlZEtleXMgPSBbZGF0
ZTAudG9TdHJpbmcoKSwgZGF0ZTEudG9TdHJpbmcoKSwgZGF0ZTIudG9TdHJpbmcoKSwgZGF0ZTMu
dG9TdHJpbmcoKV07Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmpl
Y3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQp
IHsKKyAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJl
c3VsdDsiKTsKKyAgICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICAgICAgc2hvdWxkQmUoImN1
cnNvci5rZXkudG9TdHJpbmcoKSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOworICAgICAgICAg
ICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisgICAgICAgICAgICBldmFsQW5k
TG9nKCJrZXlJbmRleCsrOyIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3Rlc3QoKTsKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMva2V5LXR5cGUtYXJyYXkuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5LXR5cGUtYXJyYXkuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWI2MDM4
MTJkZDM2MzJkYzJjZDA0MjQ4MjZjZTUyMGRjZmI4YjlkYwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXktdHlwZS1hcnJheS5qcwpA
QCAtMCwwICsxLDE5NyBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNj
cmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAg
aW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4
ZWREQiBrZXkgdHlwZXMiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9y
UHJlZml4ZXMoKTsKKworICAgIGV2YWxBbmRMb2coIklEQlRyYW5zYWN0aW9uID0gc2VsZi5JREJU
cmFuc2FjdGlvbiB8fCBzZWxmLklEQlRyYW5zYWN0aW9uOyIpOworICAgIHNob3VsZEJlRmFsc2Uo
IklEQlRyYW5zYWN0aW9uID09IG51bGwiKTsKKworICAgIGV2YWxBbmRMb2coIklEQkRhdGFiYXNl
RXhjZXB0aW9uID0gc2VsZi5JREJEYXRhYmFzZUV4Y2VwdGlvbiB8fCBzZWxmLklEQkRhdGFiYXNl
RXhjZXB0aW9uOyIpOworICAgIHNob3VsZEJlRmFsc2UoIklEQkRhdGFiYXNlRXhjZXB0aW9uID09
IG51bGwiKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2Ny
aXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIG9wZW5yZXEgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICBvcGVucmVxLm9uc3VjY2Vz
cyA9IG9wZW5TdWNjZXNzOworICAgIG9wZW5yZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZXZhbEFuZExvZygi
ZGIgPSBvcGVucmVxLnJlc3VsdCIpOworICAgIHNldHZlcnJlcSA9IGV2YWxBbmRMb2coInJlcXVl
c3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICBzZXR2ZXJyZXEub25zdWNjZXNzID0gc2V0
VmVyc2lvblN1Y2Nlc3M7CisgICAgc2V0dmVycmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQoreworICAgIGRlYnVn
KCJwcmVwYXJpbmcgZGF0YWJhc2UiKTsKKyAgICB0cmFucyA9IHNldHZlcnJlcS5yZXN1bHQ7Cisg
ICAgdHJhbnMub25jb21wbGV0ZSA9IHRlc3RWYWxpZEFycmF5S2V5czsKKyAgICBkZWxldGVBbGxP
YmplY3RTdG9yZXMoZGIpOworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ3N0b3JlJyk7Iik7CisgICAgZGVidWcoIiIpOworfQorCitmdW5jdGlvbiB0
ZXN0VmFsaWRBcnJheUtleXMoKQoreworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNh
Y3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICBldmFsQW5k
TG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgZGVidWcoIiIp
OworCisgICAgZXZhbEFuZExvZygibG9uZ19hcnJheSA9IFtdOyBmb3IgKGkgPSAwOyBpIDwgMTAw
MDsgKytpKSB7IGxvbmdfYXJyYXkucHVzaCgnYWJjJywgMTIzLCBuZXcgRGF0ZSgwKSwgW10pOyB9
Iik7CisgICAgZGVidWcoIiIpOworCisgICAgZGVidWcoImFycmF5IHRoYXQgY29udGFpbnMgbm9u
LW51bWVyaWMgc2VsZi1yZWZlcmVuY2UiKTsKKyAgICBldmFsQW5kTG9nKCJzZWxmX3JlZmVycmVu
dGlhbF9hcnJheSA9IFtdOyBzZWxmX3JlZmVycmVudGlhbF9hcnJheS5zZWxmID0gc2VsZl9yZWZl
cnJlbnRpYWxfYXJyYXk7Iik7CisgICAgZGVidWcoIiIpOworCisgICAgdmFyIG4gPSAwLCBjYXNl
cyA9IFsKKyAgICAgICAgIltdIiwKKworICAgICAgICAiWy1JbmZpbml0eV0iLAorICAgICAgICAi
Wy1OdW1iZXIuTUFYX1ZBTFVFXSIsCisgICAgICAgICJbLTFdIiwKKyAgICAgICAgIlstTnVtYmVy
Lk1JTl9WQUxVRV0iLAorICAgICAgICAiWzBdIiwKKyAgICAgICAgIltOdW1iZXIuTUlOX1ZBTFVF
XSIsCisgICAgICAgICJbMV0iLAorICAgICAgICAiW051bWJlci5NQVhfVkFMVUVdIiwKKyAgICAg
ICAgIltJbmZpbml0eV0iLAorCisgICAgICAgICJbMSwyLDNdIiwKKworICAgICAgICAiW25ldyBE
YXRlKDApXSIsCisgICAgICAgICJbbmV3IERhdGUoJzI1MjUtMDEtMDFUMDA6MDA6MDBaJyldIiwK
KworICAgICAgICAiW25ldyBEYXRlKDApLCBuZXcgRGF0ZSgnMjUyNS0wMS0wMVQwMDowMDowMFon
KV0iLAorCisgICAgICAgICJbJyddIiwKKyAgICAgICAgIlsnXHgwMCddIiwKKyAgICAgICAgIlsn
YWJjMTIzJ10iLAorCisgICAgICAgICJbJ2FiYycsIDEyM10iLAorCisgICAgICAgICJbW11dIiwK
KworICAgICAgICAiW1tdLCBbXV0iLAorICAgICAgICAiW1tdLCBbXSwgW11dIiwKKworICAgICAg
ICAiW1tbXV1dIiwKKyAgICAgICAgIltbW1tdXV1dIiwKKworICAgICAgICAiWzEyMywgJ2FiYycs
IG5ldyBEYXRlKDApLCBbXV0iLAorICAgICAgICAiW1sxMjMsICdhYmMnLCBuZXcgRGF0ZSgwKSwg
W11dLCBbNDU2LCAnZGVmJywgbmV3IERhdGUoOTk5KSwgW1tdXV1dIiwKKworICAgICAgICAibG9u
Z19hcnJheSIsCisgICAgICAgICJzZWxmX3JlZmVycmVudGlhbF9hcnJheSIKKyAgICBdOworCisg
ICAgZnVuY3Rpb24gdGVzdEFycmF5UHV0R2V0KHZhbHVlLCBrZXksIGNhbGxiYWNrKQorICAgIHsK
KyAgICAgICAgZGVidWcoInRlc3RpbmcgYXJyYXkga2V5OiAiICsga2V5KTsKKyAgICAgICAgcHV0
cmVxID0gZXZhbEFuZExvZygic3RvcmUucHV0KCciICsgdmFsdWUgKyAiJywgIiArIGtleSArICIp
OyIpOworICAgICAgICBwdXRyZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
ICAgICAgICBwdXRyZXEub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBnZXRy
ZXEgPSBldmFsQW5kTG9nKCJzdG9yZS5nZXQoIiArIGtleSArICIpOyIpOworICAgICAgICAgICAg
Z2V0cmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgICAgIGdl
dHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImdldHJlcS5yZXN1bHQiLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgZGVi
dWcoIiIpOworICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgICAgICB9OworICAg
ICAgICB9OworICAgIH0KKworICAgIGZ1bmN0aW9uIG5leHRUZXN0KCkKKyAgICB7CisgICAgICAg
IHZhciB0ZXN0Y2FzZSA9IGNhc2VzLnNoaWZ0KCk7CisgICAgICAgIGlmICh0ZXN0Y2FzZSkgewor
ICAgICAgICAgICAgdGVzdEFycmF5UHV0R2V0KCJ2YWx1ZSIgKyAoKytuKSwgdGVzdGNhc2UsIG5l
eHRUZXN0KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG5leHRUZXN0KCk7CisKKyAgICB0cmFu
cy5vbmNvbXBsZXRlID0gdGVzdEludmFsaWRBcnJheUtleXM7Cit9CisKK2Z1bmN0aW9uIHRlc3RJ
bnZhbGlkQXJyYXlLZXlzKCkKK3sKKyAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0
aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgZXZhbEFuZExv
Zygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgIGRlYnVnKCIiKTsK
KworICAgIGRlYnVnKCJhcnJheSB0aGF0IGNvbnRhaW5zIGl0c2VsZjogYXJyYXkgPSBbIGFycmF5
IF0iKTsKKyAgICBldmFsQW5kTG9nKCJjeWNsaWNfYXJyYXkgPSBbXTsgY3ljbGljX2FycmF5LnB1
c2goY3ljbGljX2FycmF5KSIpOworICAgIHNob3VsZFRocm93KCJKU09OLnN0cmluZ2lmeShjeWNs
aWNfYXJyYXkpIik7CisKKyAgICBkZWJ1ZygiYXJyYXkgdGhhdCBjb250YWlucyBpdHNlbGYsIG9u
ZSBsZXZlbCBkb3duOiBhcnJheSA9IFsgWyBhcnJheSBdIF0iKTsKKyAgICBldmFsQW5kTG9nKCJj
eWNsaWNfYXJyYXkyID0gW107IGN5Y2xpY19hcnJheTIucHVzaChbY3ljbGljX2FycmF5Ml0pIik7
CisgICAgc2hvdWxkVGhyb3coIkpTT04uc3RyaW5naWZ5KGN5Y2xpY19hcnJheTIpIik7CisKKyAg
ICBkZWJ1ZygiYXJyYXkgdGhhdCBjb250YWlucyBpdHNlbGYsIG5vdCBhcyBmaXJzdCBlbGVtZW50
OiBhcnJheSA9IFsxLCAnYicsIFtdLCBhcnJheV0iKTsKKyAgICBldmFsQW5kTG9nKCJjeWNsaWNf
YXJyYXkzID0gWzEsICdiJywgW11dOyBjeWNsaWNfYXJyYXkzLnB1c2goY3ljbGljX2FycmF5Myki
KTsKKyAgICBzaG91bGRUaHJvdygiSlNPTi5zdHJpbmdpZnkoY3ljbGljX2FycmF5MykiKTsKKyAg
ICBkZWJ1ZygiIik7CisKKyAgICBkZWJ1ZygiYXJyYXkgdGhhdCBjb250YWlucyBhcnJheSB0aGF0
IGNvbnRhaW5zIGl0c2VsZiIpOworICAgIGV2YWxBbmRMb2coImN5Y2xpY19hcnJheTQgPSBbY3lj
bGljX2FycmF5XTsiKTsKKyAgICBzaG91bGRUaHJvdygiSlNPTi5zdHJpbmdpZnkoY3ljbGljX2Fy
cmF5NCkiKTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICB2YXIgaW52YWxpZEtleXMgPSBbCisgICAg
ICAgICJbIHZvaWQgMCBdIiwgLy8gdW5kZWZpbmVkCisgICAgICAgICJbIHRydWUgXSIsCisgICAg
ICAgICJbIGZhbHNlIF0iLAorICAgICAgICAiWyBOYU4gXSIsCisgICAgICAgICJbIG51bGwgXSIs
CisgICAgICAgICJbIHt9IF0iLAorICAgICAgICAiWyBmdW5jdGlvbiAoKSB7fSBdIiwKKyAgICAg
ICAgIlsgL3JlZ2V4LyBdIiwKKyAgICAgICAgIlsgc2VsZiBdIiwKKyAgICAgICAgIlsgc2VsZi5k
b2N1bWVudCBdIiwKKyAgICAgICAgIlsgc2VsZi5kb2N1bWVudC5ib2R5IF0iLAorICAgICAgICAi
Y3ljbGljX2FycmF5IiwKKyAgICAgICAgImN5Y2xpY19hcnJheTIiLAorICAgICAgICAiY3ljbGlj
X2FycmF5MyIsCisgICAgICAgICJjeWNsaWNfYXJyYXk0IiwKKyAgICAgICAgIkFycmF5KDEwMDAp
IiAvLyBzcGFyc2UKKyAgICBdOworCisgICAgaW52YWxpZEtleXMuZm9yRWFjaChmdW5jdGlvbiAo
a2V5KSB7CisgICAgICAgIGRlYnVnKCJ0ZXN0aW5nIGludmFsaWQgYXJyYXkga2V5OiAiICsga2V5
KTsKKyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KCd2YWx1ZScsICIg
KyBrZXkgKyAiKTsiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKyAgICAgICAg
ZGVidWcoIiIpOworICAgIH0pOworCisgICAgdGVzdERlcHRoTGltaXRzKCk7Cit9CisKK2Z1bmN0
aW9uIG1ha2VBcnJheU9mRGVwdGgobikKK3sKKyAgICB2YXIgYXJyYXkgPSBbXTsKKyAgICB3aGls
ZSAoLS1uKSB7CisgICAgICAgIGFycmF5ID0gW2FycmF5XTsKKyAgICB9CisgICAgcmV0dXJuIGFy
cmF5OworfQorCitmdW5jdGlvbiB0ZXN0RGVwdGhMaW1pdHMoKQoreworICAgIHNob3VsZEJlKCJp
bmRleGVkREIuY21wKG1ha2VBcnJheU9mRGVwdGgoMjUpLCAwKSIsICIxIik7CisgICAgc2hvdWxk
QmUoImluZGV4ZWREQi5jbXAobWFrZUFycmF5T2ZEZXB0aCgyNTApLCAwKSIsICIxIik7CisgICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXhlZERCLmNtcChtYWtlQXJyYXlPZkRlcHRoKDI1
MDApLCAwKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworICAgIGRlYnVnKCIi
KTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL2tleS10eXBlLWluZmluaXR5LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL2tleS10eXBlLWluZmluaXR5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzMzc2ZTEwNjc3
MzIwNjQ2ZDg4ZGM5ZGE1ZDU4NGJlY2UyZjcwMzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5LXR5cGUtaW5maW5pdHkuanMKQEAg
LTAsMCArMSw1MiBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlw
dHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1w
b3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWRE
QiBrZXkgdHlwZXMiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJl
Zml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2Ny
aXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5k
TG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSB0ZXN0R3JvdXAxOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiB0ZXN0R3JvdXAxKCkKK3sKKyAgICBkZWxldGVBbGxPYmpl
Y3RTdG9yZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVP
YmplY3RTdG9yZSgnZm9vJyk7Iik7CisgICAgZGVidWcoInRlc3Qga2V5IGFzIGluZmluaXR5Iik7
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoW10s
IEluZmluaXR5KTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHRlc3RHcm91cDI7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IHRlc3RHcm91cDIoKQoreworICAgIGRlYnVnKCJ0ZXN0IGtleSBhcyBuZWdhdGl2ZSBpbmZpbml0
eSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRk
KFtdLCAtSW5maW5pdHkpOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdGVzdEdyb3VwMzsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gdGVzdEdyb3VwMygpCit7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5cGF0aC1iYXNpY3MuanMgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5cGF0aC1iYXNpY3MuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Y2M3ODE3YmI2ZDA2YzAwNDc2OTA5MGZjZWE2ODhjNzk1YTg1NDhjYwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXlwYXRoLWJhc2lj
cy5qcwpAQCAtMCwwICsxLDkxIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1w
b3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsK
KyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3Qg
Zm9yIHZhbGlkIGFuZCBpbnZhbGlkIGtleXBhdGhzIik7CisKK2Z1bmN0aW9uIHRlc3QoKQorewor
ICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0
aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sK
KyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHRlc3RWYWxpZEtleVBhdGhzOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiB0ZXN0VmFsaWRL
ZXlQYXRocygpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIHRlc3RL
ZXlQYXRocyA9IFtudWxsLCB1bmRlZmluZWQsICcnXTsKKyAgICB0ZXN0S2V5UGF0aHMuZm9yRWFj
aChmdW5jdGlvbiAoa2V5UGF0aCkgeworICAgICAgICBnbG9iYWxLZXlQYXRoID0ga2V5UGF0aDsK
KyAgICAgICAgZGVidWcoImdsb2JhbEtleVBhdGggPSAnIiArIGdsb2JhbEtleVBhdGggKyAiJyIp
OworICAgICAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScsIHtrZXlQ
YXRoOiBnbG9iYWxLZXlQYXRofSkiKTsKKyAgICAgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRi
KTsKKyAgICB9KTsKKworICAgIHRlc3RLZXlQYXRocyA9IFsnZm9vJywgJ2Zvby5iYXIuYmF6J107
CisgICAgdGVzdEtleVBhdGhzLmZvckVhY2goZnVuY3Rpb24gKGtleVBhdGgpIHsKKyAgICAgICAg
Z2xvYmFsS2V5UGF0aCA9IGtleVBhdGg7CisgICAgICAgIGRlYnVnKCJnbG9iYWxLZXlQYXRoID0g
JyIgKyBnbG9iYWxLZXlQYXRoICsgIiciKTsKKyAgICAgICAgZXZhbEFuZExvZygiZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDogZ2xvYmFsS2V5UGF0aH0pIik7CisgICAgICAg
IGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisgICAgfSk7CisKKyAgICB0ZXN0S2V5UGF0aHMg
PSBbbnVsbCwgdW5kZWZpbmVkLCAnJywgJ2ZvbycsICdmb28uYmFyLmJheiddOworICAgIHRlc3RL
ZXlQYXRocy5mb3JFYWNoKGZ1bmN0aW9uIChrZXlQYXRoKSB7CisgICAgICAgIGdsb2JhbEtleVBh
dGggPSBrZXlQYXRoOworICAgICAgICBkZWJ1ZygiZ2xvYmFsS2V5UGF0aCA9ICciICsgZ2xvYmFs
S2V5UGF0aCArICInIik7CisgICAgICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5j
cmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICAgICAgZXZhbEFuZExvZygic3Rv
cmUuY3JlYXRlSW5kZXgoJ25hbWUnLCBnbG9iYWxLZXlQYXRoKSIpOworICAgICAgICBkZWxldGVB
bGxPYmplY3RTdG9yZXMoZGIpOworICAgIH0pOworCisgICAgdGVzdEludmFsaWRLZXlQYXRocygp
OworfQorCitmdW5jdGlvbiB0ZXN0SW52YWxpZEtleVBhdGhzKCkKK3sKKyAgICBkZWxldGVBbGxP
YmplY3RTdG9yZXMoZGIpOworCisgICAgdGVzdEtleVBhdGhzID0gWydbXScsICdbImZvbyJdJywg
J1siZm9vIiwgImJhciJdJywgJ1siIiwgIiJdJywgJ1sxLjAsIDIuMF0nLCAnW1siZm9vIl1dJywg
J1siZm9vIiwgWyJiYXIiXV0nXTsKKyAgICB0ZXN0S2V5UGF0aHMuZm9yRWFjaChmdW5jdGlvbiAo
a2V5UGF0aCkgeworICAgICAgICBnbG9iYWxLZXlQYXRoID0ga2V5UGF0aDsKKyAgICAgICAgZGVi
dWcoImdsb2JhbEtleVBhdGggPSAnIiArIGdsb2JhbEtleVBhdGggKyAiJyIpOworICAgICAgICBl
dmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScsIHtrZXlQ
YXRoOiBnbG9iYWxLZXlQYXRofSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9OX1RSQU5TSUVO
VF9FUlIiKTsKKyAgICAgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKyAgICB9KTsKKwor
ICAgIHRlc3RLZXlQYXRocyA9IFsnICcsICdmb28gJywgJ2ZvbyBiYXInLCAnZm9vLiBiYXInLCAn
Zm9vIC5iYXInLCAnZm9vLi5iYXInLCAnK2ZvbycsICdmb28lJ107CisgICAgdGVzdEtleVBhdGhz
LmZvckVhY2goZnVuY3Rpb24gKGtleVBhdGgpIHsKKyAgICAgICAgZ2xvYmFsS2V5UGF0aCA9IGtl
eVBhdGg7CisgICAgICAgIGRlYnVnKCJnbG9iYWxLZXlQYXRoID0gJyIgKyBnbG9iYWxLZXlQYXRo
ICsgIiciKTsKKyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDogZ2xvYmFsS2V5UGF0aH0pIiwgIklEQkRhdGFiYXNlRXhj
ZXB0aW9uLk5PTl9UUkFOU0lFTlRfRVJSIik7CisgICAgICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jl
cyhkYik7CisgICAgfSk7CisKKyAgICB0ZXN0S2V5UGF0aHMgPSBbJyAnLCAnZm9vICcsICdmb28g
YmFyJywgJ2Zvby4gYmFyJywgJ2ZvbyAuYmFyJywgJ2Zvby4uYmFyJywgJytmb28nLCAnZm9vJSdd
OworICAgIHRlc3RLZXlQYXRocy5mb3JFYWNoKGZ1bmN0aW9uIChrZXlQYXRoKSB7CisgICAgICAg
IGdsb2JhbEtleVBhdGggPSBrZXlQYXRoOworICAgICAgICBkZWJ1ZygiZ2xvYmFsS2V5UGF0aCA9
ICciICsgZ2xvYmFsS2V5UGF0aCArICInIik7CisgICAgICAgIHN0b3JlID0gZXZhbEFuZExvZygi
c3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICAgICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuY3JlYXRlSW5kZXgoJ25hbWUnLCBnbG9iYWxLZXlQ
YXRoKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT05fVFJBTlNJRU5UX0VSUiIpOworICAgICAg
ICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworICAgIH0pOworCisgICAgZmluaXNoSlNUZXN0
KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5cGF0aC1lZGdlcy5q
cyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXlwYXRoLWVkZ2Vz
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmViZjExYmI2ZGNlMjc2NDcxMTA1YjgzZTFjZDQ5NDEyMmZjOGI1MDEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMva2V5cGF0aC1lZGdlcy5qcwpAQCAtMCwwICsxLDExMCBAQAoraWYgKHRoaXMuaW1wb3J0U2Ny
aXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rl
c2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBrZXlQYXRoIGVkZ2UgY2FzZXMiKTsKKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoJ2tleXBhdGgtZWRnZXMnKSIp
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCLm9wZW4oJ2tleXBhdGgtZWRnZXMnKSIpOworICAgICAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICB9OworfQorCitmdW5jdGlvbiBvcGVuU3VjY2Vzcygp
Cit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOworICAgIGRi
ID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdHJhbnNhY3Rpb24gPSByZXF1ZXN0LnJlc3VsdDsK
KyAgICAgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwor
ICAgICAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUtd2l0aC1wYXRo
Jywge2tleVBhdGg6ICdmb28nfSkiKTsKKyAgICAgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ3N0b3JlLXdpdGgtcGF0aC1hbmQtZ2VuZXJhdG9yJywge2tleVBhdGg6ICdmb28n
LCBhdXRvSW5jcmVtZW50OiB0cnVlfSkiKTsKKyAgICAgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0
ZSA9IHRlc3RLZXlQYXRoczsKKyAgICB9OworfQorCitmdW5jdGlvbiB0ZXN0S2V5UGF0aHMoKQor
eworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidGVzdEtleVBhdGhzKCk6Iik7CisKKyAgICB0
cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydz
dG9yZS13aXRoLXBhdGgnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICBzdG9y
ZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlLXdp
dGgtcGF0aCcpIik7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIktleSBwYXRoIGRvZXNu
J3QgcmVzb2x2ZSB0byBhIHZhbHVlOyBzaG91bGQgeWllbGQgbnVsbCwgc2hvdWxkIHRocm93IERB
VEFfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KG51bGwpIiwg
IklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICBkZWJ1ZygiIik7CisgICAg
ZGVidWcoIktleSBwYXRoIGRvZXNuJ3QgcmVzb2x2ZSB0byBhIHZhbHVlOyBzaG91bGQgeWllbGQg
bnVsbCwgc2hvdWxkIHRocm93IERBVEFfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlv
bigic3RvcmUucHV0KHt9KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworCisg
ICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJLZXkgcGF0aCByZXNvbHZlcyB0byBhIHZhbHVlIHRo
YXQgaXMgaW52YWxpZCBrZXk7IHNob3VsZCB5aWVsZCAnaW52YWxpZCcga2V5LCBzaG91bGQgdGhy
b3cgREFUQV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5wdXQoe2Zv
bzogbnVsbH0pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoIktleSBwYXRoIHJlc29sdmVzIHRvIGEgdmFsdWUgdGhhdCBpcyB2
YWxpZCBrZXk7IHNob3VsZCB5aWVsZCAnc3RyaW5nJyBrZXksIHNob3VsZCBzdWNjZWVkIik7Cisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLnB1dCh7Zm9vOiAnem9vJ30pIik7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgIHRlc3RQYXNzZWQoInN0b3JlLnB1dCBz
dWNjZWVkZWQiKTsKKyAgICB9OworCisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0
ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB0ZXN0S2V5UGF0
aHNBbmRHZW5lcmF0b3I7Cit9CisKK2Z1bmN0aW9uIHRlc3RLZXlQYXRoc0FuZEdlbmVyYXRvcigp
Cit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0S2V5UGF0aHNBbmRHZW5lcmF0b3Io
KToiKTsKKworICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50
cmFuc2FjdGlvbihbJ3N0b3JlLXdpdGgtcGF0aC1hbmQtZ2VuZXJhdG9yJ10sIElEQlRyYW5zYWN0
aW9uLlJFQURfV1JJVEUpIik7CisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5z
YWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZS13aXRoLXBhdGgtYW5kLWdlbmVyYXRvcicpIik7CisK
KyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIktleSBwYXRoIGRvZXNuJ3QgcmVzb2x2ZSB0byBh
IHZhbHVlOyBzaG91bGQgeWllbGQgbnVsbCBidXQgaW5zZXJ0aW9uIHdvdWxkIGZhaWwsIHNvIHB1
dCByZXF1ZXN0IHNob3VsZCByYWlzZSBleGNlcHRpb24iKTsKKyAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJzdG9yZS5wdXQobnVsbCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIi
KTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiS2V5IHBhdGggZG9lc24ndCByZXNvbHZl
IHRvIGEgdmFsdWU7IHNob3VsZCB5aWVsZCBudWxsIGJ1dCBpbnNlcnRpb24gd291bGQgZmFpbCwg
c28gcHV0IHJlcXVlc3Qgc2hvdWxkIHJhaXNlIGV4Y2VwdGlvbiIpOworICAgIGV2YWxBbmRFeHBl
Y3RFeGNlcHRpb24oInN0b3JlLnB1dCgnc3RyaW5nJykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24u
REFUQV9FUlIiKTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiS2V5IHBhdGggZG9lc24n
dCByZXNvbHZlIHRvIGEgdmFsdWU7IHNob3VsZCB5aWVsZCBudWxsLCBrZXkgc2hvdWxkIGJlIGdl
bmVyYXRlZCwgcHV0IHJlcXVlc3Qgc2hvdWxkIHN1Y2NlZWQiKTsKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygic3RvcmUucHV0KHt9KSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewor
ICAgICAgICB0ZXN0UGFzc2VkKCJzdG9yZS5wdXQgc3VjY2VlZGVkIik7CisKKyAgICAgICAgZGVi
dWcoIiIpOworICAgICAgICBkZWJ1ZygiS2V5IHBhdGggcmVzb2x2ZXMgdG8gYSB2YWx1ZSB0aGF0
IGlzIGludmFsaWQga2V5OyBzaG91bGQgeWllbGQgJ2ludmFsaWQnIGtleSwgc2hvdWxkIHRocm93
IERBVEFfRVJSIik7CisgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLnB1dCh7
Zm9vOiBudWxsfSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKworICAgICAg
ICBkZWJ1ZygiIik7CisgICAgICAgIGRlYnVnKCJLZXkgcGF0aCByZXNvbHZlcyB0byBhIHZhbHVl
IHRoYXQgaXMgdmFsaWQga2V5OyBzaG91bGQgeWllbGQgJ3N0cmluZycga2V5LCBzaG91bGQgc3Vj
Y2VlZCIpOworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUucHV0KHtmb286ICd6
b28nfSkiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgdGVzdFBhc3NlZCgic3RvcmUucHV0IHN1Y2NlZWRlZCIpOworCisgICAgICAgIH07CisgICAg
fTsKKworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsK
KyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZmluaXNoSlNUZXN0OworfQorCit0ZXN0KCk7
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleXBhdGgtZmV0Y2gta2V5LmpzIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleXBhdGgtZmV0Y2gta2V5LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQwMjMzNTNjMzM2NDQxNDBiYWZjNzZiYzQ3OTdhYWVjNDFlNWEzZDcKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5cGF0
aC1mZXRjaC1rZXkuanMKQEAgLTAsMCArMSw4MiBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykg
eworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0
aW9uKCJUZXN0IEluZGV4ZWREQiBrZXlQYXRocyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0
aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sK
KyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKwor
ICAgIHRlc3REYXRhID0gW3sgbmFtZTogInNpbXBsZSBpZGVudGlmaWVyIiwKKyAgICAgICAgICAg
ICAgICAgIHZhbHVlOiB7aWQ6MTB9LAorICAgICAgICAgICAgICAgICAga2V5UGF0aDogImlkIiwK
KyAgICAgICAgICAgICAgICAgIGtleTogMTAgfSwKKyAgICAgICAgICAgICAgICB7IG5hbWU6ICJz
aW1wbGUgaWRlbnRpZmllcnMiLAorICAgICAgICAgICAgICAgICAgdmFsdWU6IHtpZDE6MTAsIGlk
MjoyMH0sCisgICAgICAgICAgICAgICAgICBrZXlQYXRoOiAiaWQxIiwKKyAgICAgICAgICAgICAg
ICAgIGtleTogMTAgfSwKKyAgICAgICAgICAgICAgICB7IG5hbWU6ICJuZXN0ZWQgaWRlbnRpZmll
cnMiLAorICAgICAgICAgICAgICAgICAgdmFsdWU6IHtvdXRlcjp7aW5uZXI6MTB9fSwKKyAgICAg
ICAgICAgICAgICAgIGtleVBhdGg6ICJvdXRlci5pbm5lciIsCisgICAgICAgICAgICAgICAgICBr
ZXk6IDEwIH0sCisgICAgICAgICAgICAgICAgeyBuYW1lOiAibmVzdGVkIGlkZW50aWZpZXJzIHdp
dGggZGlzdHJhY3Rpb25zIiwKKyAgICAgICAgICAgICAgICAgIHZhbHVlOiB7b3V0ZXI6e2lubmVy
OjEwfSwgaW5uZXI6e291dGVyOjIwfX0sCisgICAgICAgICAgICAgICAgICBrZXlQYXRoOiAib3V0
ZXIuaW5uZXIiLAorICAgICAgICAgICAgICAgICAga2V5OiAxMCB9LAorICAgIF07CisgICAgbmV4
dFRvT3BlbiA9IDA7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9i
amVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworfQorCitmdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKK3sKKyAgICBk
ZWJ1ZygiIik7CisgICAgZGVidWcoInRlc3RpbmcgIiArIHRlc3REYXRhW25leHRUb09wZW5dLm5h
bWUpOworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3Jl
ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSh0ZXN0RGF0
YVtuZXh0VG9PcGVuXS5uYW1lLCB7a2V5UGF0aDogdGVzdERhdGFbbmV4dFRvT3Blbl0ua2V5UGF0
aH0pOyIpOworICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coInJlc3VsdCA9IG9iamVjdFN0b3JlLmFk
ZCh0ZXN0RGF0YVtuZXh0VG9PcGVuXS52YWx1ZSk7Iik7CisgICAgcmVzdWx0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXN1bHQub25zdWNjZXNzID0gb3BlbkN1cnNv
cjsKK30KKworZnVuY3Rpb24gb3BlbkN1cnNvcigpCit7CisgICAgcmVzdWx0ID0gZXZhbEFuZExv
ZygicmVzdWx0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOworICAgIHJlc3VsdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGNo
ZWNrQ3Vyc29yOworfQorCitmdW5jdGlvbiBjaGVja0N1cnNvcigpCit7CisgICAgY3Vyc29yID0g
ZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICBpZiAoY3Vy
c29yKSB7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgInRlc3REYXRhW25leHRUb09w
ZW5dLmtleSIpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQoImN1cnNvciBpcyBu
dWxsIik7CisgICAgfQorICAgIGlmICgrK25leHRUb09wZW4gPCB0ZXN0RGF0YS5sZW5ndGgpIHsK
KyAgICAgICAgY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSgpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0KK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9rZXlyYW5nZS1yZXF1aXJlZC1hcmd1bWVudHMuanMgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5cmFuZ2UtcmVxdWlyZWQtYXJndW1lbnRzLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjgxMzIwOTkwMjViZjU3ZjU3ZWY5ZWJkY2RkNDhkMzcwYzBiZWZmN2IKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
a2V5cmFuZ2UtcmVxdWlyZWQtYXJndW1lbnRzLmpzCkBAIC0wLDAgKzEsMjEgQEAKK2lmICh0aGlz
LmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycp
OworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIga2V5cmFuZ2UgcmVxdWlyZWQgYXJn
dW1lbnRzIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVz
KCk7CisKKyAgICBzaG91bGRUaHJvdygiSURCS2V5UmFuZ2Uub25seSgpOyIpOworICAgIHNob3Vs
ZFRocm93KCJJREJLZXlSYW5nZS5sb3dlckJvdW5kKCk7Iik7CisgICAgc2hvdWxkVGhyb3coIklE
QktleVJhbmdlLnVwcGVyQm91bmQoKTsiKTsKKyAgICBzaG91bGRUaHJvdygiSURCS2V5UmFuZ2Uu
Ym91bmQoMSk7Iik7CisgICAgc2hvdWxkVGhyb3coIklEQktleVJhbmdlLmJvdW5kKCk7Iik7CisK
KyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9rZXlyYW5nZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9r
ZXlyYW5nZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMmY1ZjY1NjZkNjE4MWM5MDhhMzQ3MDIxNmI4ZjMwOTQ1
NWNlN2Y0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL2tleXJhbmdlLmpzCkBAIC0wLDAgKzEsMTg3IEBACitpZiAodGhpcy5pbXBvcnRT
Y3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKwor
ZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgS2V5UmFuZ2UuIik7CisKK2Z1bmN0aW9uIGNo
ZWNrU2luZ2xlS2V5UmFuZ2UodmFsdWUpCit7CisgICAga2V5UmFuZ2UgPSBldmFsQW5kTG9nKCJJ
REJLZXlSYW5nZS5vbmx5KCIgKyB2YWx1ZSArICIpIik7CisgICAgc2hvdWxkQmUoImtleVJhbmdl
Lmxvd2VyIiwgIiIgKyB2YWx1ZSk7CisgICAgc2hvdWxkQmUoImtleVJhbmdlLnVwcGVyIiwgIiIg
KyB2YWx1ZSk7CisgICAgc2hvdWxkQmVGYWxzZSgia2V5UmFuZ2UubG93ZXJPcGVuIik7CisgICAg
c2hvdWxkQmVGYWxzZSgia2V5UmFuZ2UudXBwZXJPcGVuIik7Cit9CisKK2Z1bmN0aW9uIGNoZWNr
TG93ZXJCb3VuZEtleVJhbmdlKHZhbHVlLCBvcGVuKQoreworICAgIGtleVJhbmdlID0gZXZhbEFu
ZExvZygiSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgiICsgdmFsdWUgKyAiLCIgKyBvcGVuICsgIiki
KTsKKyAgICBzaG91bGRCZSgia2V5UmFuZ2UubG93ZXIiLCAiIiArIHZhbHVlKTsKKyAgICBpZiAo
b3BlbiA9PT0gdW5kZWZpbmVkKQorICAgICAgICBvcGVuID0gZmFsc2U7CisgICAgc2hvdWxkQmUo
ImtleVJhbmdlLmxvd2VyT3BlbiIsICIiICsgb3Blbik7CisgICAgc2hvdWxkQmVOdWxsKCJrZXlS
YW5nZS51cHBlciIpOworICAgIHNob3VsZEJlRmFsc2UoImtleVJhbmdlLnVwcGVyT3BlbiIpOwor
fQorCitmdW5jdGlvbiBjaGVja1VwcGVyQm91bmRLZXlSYW5nZSh2YWx1ZSwgb3BlbikKK3sKKyAg
ICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coIklEQktleVJhbmdlLnVwcGVyQm91bmQoIiArIHZhbHVl
ICsgIiwiICsgb3BlbiArICIpIik7CisgICAgc2hvdWxkQmUoImtleVJhbmdlLnVwcGVyIiwgIiIg
KyB2YWx1ZSk7CisgICAgaWYgKG9wZW4gPT09IHVuZGVmaW5lZCkKKyAgICAgICAgb3BlbiA9IGZh
bHNlOworICAgIHNob3VsZEJlKCJrZXlSYW5nZS51cHBlck9wZW4iLCAiIiArIG9wZW4pOworICAg
IHNob3VsZEJlTnVsbCgia2V5UmFuZ2UubG93ZXIiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJrZXlS
YW5nZS5sb3dlck9wZW4iKTsKK30KKworZnVuY3Rpb24gY2hlY2tCb3VuZEtleVJhbmdlKGxvd2Vy
LCB1cHBlciwgbG93ZXJPcGVuLCB1cHBlck9wZW4pCit7CisgICAga2V5UmFuZ2UgPSBldmFsQW5k
TG9nKCJJREJLZXlSYW5nZS5ib3VuZCgiICsgbG93ZXIgKyAiLCIgKyB1cHBlciArICIsICIgKyBs
b3dlck9wZW4gKyAiLCAiICsgdXBwZXJPcGVuICsgIikiKTsKKyAgICBzaG91bGRCZSgia2V5UmFu
Z2UubG93ZXIiLCAiIiArIGxvd2VyKTsKKyAgICBzaG91bGRCZSgia2V5UmFuZ2UudXBwZXIiLCAi
IiArIHVwcGVyKTsKKyAgICBpZiAobG93ZXJPcGVuID09PSB1bmRlZmluZWQpCisgICAgICAgIGxv
d2VyT3BlbiA9IGZhbHNlOworICAgIGlmICh1cHBlck9wZW4gPT09IHVuZGVmaW5lZCkKKyAgICAg
ICAgdXBwZXJPcGVuID0gZmFsc2U7CisgICAgc2hvdWxkQmUoImtleVJhbmdlLmxvd2VyT3BlbiIs
ICIiICsgbG93ZXJPcGVuKTsKKyAgICBzaG91bGRCZSgia2V5UmFuZ2UudXBwZXJPcGVuIiwgIiIg
KyB1cHBlck9wZW4pOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQ
cmVmaXhlcygpOworICAgIHNob3VsZEJlRmFsc2UoIidsb3dlcicgaW4gSURCS2V5UmFuZ2UiKTsK
KyAgICBzaG91bGRCZUZhbHNlKCIndXBwZXInIGluIElEQktleVJhbmdlIik7CisgICAgc2hvdWxk
QmVGYWxzZSgiJ2xvd2VyT3BlbicgaW4gSURCS2V5UmFuZ2UiKTsKKyAgICBzaG91bGRCZUZhbHNl
KCIndXBwZXJPcGVuJyBpbiBJREJLZXlSYW5nZSIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ29ubHkn
IGluIElEQktleVJhbmdlIik7CisgICAgc2hvdWxkQmVUcnVlKCInbG93ZXJCb3VuZCcgaW4gSURC
S2V5UmFuZ2UiKTsKKyAgICBzaG91bGRCZVRydWUoIid1cHBlckJvdW5kJyBpbiBJREJLZXlSYW5n
ZSIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ2JvdW5kJyBpbiBJREJLZXlSYW5nZSIpOworCisgICAg
ZGVidWcoIiIpOworCisgICAgdmFyIGluc3RhbmNlID0gZXZhbEFuZExvZygiaW5zdGFuY2UgPSBJ
REJLZXlSYW5nZS5vbmx5KDEpIik7CisgICAgc2hvdWxkQmVUcnVlKCInbG93ZXInIGluIGluc3Rh
bmNlIik7CisgICAgc2hvdWxkQmVUcnVlKCIndXBwZXInIGluIGluc3RhbmNlIik7CisgICAgc2hv
dWxkQmVUcnVlKCInbG93ZXJPcGVuJyBpbiBpbnN0YW5jZSIpOworICAgIHNob3VsZEJlVHJ1ZSgi
J3VwcGVyT3BlbicgaW4gaW5zdGFuY2UiKTsKKyAgICBzaG91bGRCZUZhbHNlKCInb25seScgaW4g
aW5zdGFuY2UiKTsKKyAgICBzaG91bGRCZUZhbHNlKCInbG93ZXJCb3VuZCcgaW4gaW5zdGFuY2Ui
KTsKKyAgICBzaG91bGRCZUZhbHNlKCIndXBwZXJCb3VuZCcgaW4gaW5zdGFuY2UiKTsKKyAgICBz
aG91bGRCZUZhbHNlKCInYm91bmQnIGluIGluc3RhbmNlIik7CisKKyAgICBkZWJ1ZygiIik7CisK
KyAgICBjaGVja1NpbmdsZUtleVJhbmdlKDEpOworICAgIGNoZWNrU2luZ2xlS2V5UmFuZ2UoMy4x
NCk7CisgICAgY2hlY2tTaW5nbGVLZXlSYW5nZSgiJ2EnIik7CisKKyAgICBjaGVja0xvd2VyQm91
bmRLZXlSYW5nZSgxMCwgdHJ1ZSk7CisgICAgY2hlY2tMb3dlckJvdW5kS2V5UmFuZ2UoMTEsIGZh
bHNlKTsKKyAgICBjaGVja0xvd2VyQm91bmRLZXlSYW5nZSgxMik7CisgICAgY2hlY2tMb3dlckJv
dW5kS2V5UmFuZ2UoMTAuMSwgdHJ1ZSk7CisgICAgY2hlY2tMb3dlckJvdW5kS2V5UmFuZ2UoMTEu
MiwgZmFsc2UpOworICAgIGNoZWNrTG93ZXJCb3VuZEtleVJhbmdlKDEyLjMpOworICAgIGNoZWNr
TG93ZXJCb3VuZEtleVJhbmdlKCInYWEnIiwgdHJ1ZSk7CisgICAgY2hlY2tMb3dlckJvdW5kS2V5
UmFuZ2UoIidhYiciLCBmYWxzZSk7CisgICAgY2hlY2tMb3dlckJvdW5kS2V5UmFuZ2UoIidhYyci
KTsKKworICAgIGNoZWNrVXBwZXJCb3VuZEtleVJhbmdlKDIwLCB0cnVlKTsKKyAgICBjaGVja1Vw
cGVyQm91bmRLZXlSYW5nZSgyMSwgZmFsc2UpOworICAgIGNoZWNrVXBwZXJCb3VuZEtleVJhbmdl
KDIyKTsKKyAgICBjaGVja1VwcGVyQm91bmRLZXlSYW5nZSgyMC4yLCB0cnVlKTsKKyAgICBjaGVj
a1VwcGVyQm91bmRLZXlSYW5nZSgyMS4zLCBmYWxzZSk7CisgICAgY2hlY2tVcHBlckJvdW5kS2V5
UmFuZ2UoMjIuNCk7CisgICAgY2hlY2tVcHBlckJvdW5kS2V5UmFuZ2UoIidiYSciLCB0cnVlKTsK
KyAgICBjaGVja1VwcGVyQm91bmRLZXlSYW5nZSgiJ2JiJyIsIGZhbHNlKTsKKyAgICBjaGVja1Vw
cGVyQm91bmRLZXlSYW5nZSgiJ2JjJyIpOworCisgICAgY2hlY2tCb3VuZEtleVJhbmdlKDMwLCA0
MCk7CisgICAgY2hlY2tCb3VuZEtleVJhbmdlKDMxLCA0MSwgZmFsc2UsIGZhbHNlKTsKKyAgICBj
aGVja0JvdW5kS2V5UmFuZ2UoMzIsIDQyLCBmYWxzZSwgdHJ1ZSk7CisgICAgY2hlY2tCb3VuZEtl
eVJhbmdlKDMzLCA0MywgdHJ1ZSwgZmFsc2UpOworICAgIGNoZWNrQm91bmRLZXlSYW5nZSgzNCwg
NDQsIHRydWUsIHRydWUpOworCisgICAgY2hlY2tCb3VuZEtleVJhbmdlKDMwLjEsIDQwLjIpOwor
ICAgIGNoZWNrQm91bmRLZXlSYW5nZSgzMS4zLCA0MS40LCBmYWxzZSwgZmFsc2UpOworICAgIGNo
ZWNrQm91bmRLZXlSYW5nZSgzMi41LCA0Mi42LCBmYWxzZSwgdHJ1ZSk7CisgICAgY2hlY2tCb3Vu
ZEtleVJhbmdlKDMzLjcsIDQzLjgsIHRydWUsIGZhbHNlKTsKKyAgICBjaGVja0JvdW5kS2V5UmFu
Z2UoMzQuOSwgNDQuMCwgdHJ1ZSwgdHJ1ZSk7CisKKyAgICBjaGVja0JvdW5kS2V5UmFuZ2UoIidh
YWEnIiwgIidhYmEnIiwgZmFsc2UsIGZhbHNlKTsKKyAgICBjaGVja0JvdW5kS2V5UmFuZ2UoIidh
YWInIiwgIidhYmInIik7CisgICAgY2hlY2tCb3VuZEtleVJhbmdlKCInYWFjJyIsICInYWJjJyIs
IGZhbHNlLCBmYWxzZSk7CisgICAgY2hlY2tCb3VuZEtleVJhbmdlKCInYWFkJyIsICInYWJkJyIs
IGZhbHNlLCB0cnVlKTsKKyAgICBjaGVja0JvdW5kS2V5UmFuZ2UoIidhYWUnIiwgIidhYmUnIiwg
dHJ1ZSwgZmFsc2UpOworICAgIGNoZWNrQm91bmRLZXlSYW5nZSgiJ2FhZiciLCAiJ2FiZiciLCB0
cnVlLCB0cnVlKTsKKworICAgIHRyeSB7CisgICAgICAgIGRlYnVnKCJQYXNzaW5nIGFuIGludmFs
aWQga2V5IGludG8gb25seSh7fSkiKTsKKyAgICAgICAgSURCS2V5UmFuZ2Uub25seSh7fSk7Cisg
ICAgICAgIHRlc3RGYWlsZWQoIk5vIGV4Y2VwdGlvbiB0aHJvd24iKTsKKyAgICB9IGNhdGNoIChl
KSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkNhdWdodCBleGNlcHRpb246ICIgKyBlLnRvU3RyaW5n
KCkpOworICAgIH0KKworICAgIHRyeSB7CisgICAgICAgIGRlYnVnKCJQYXNzaW5nIGFuIGludmFs
aWQga2V5IGludG8gdXBwZXJCb3VuZCh7fSkiKTsKKyAgICAgICAgSURCS2V5UmFuZ2UudXBwZXJC
b3VuZCh7fSk7CisgICAgICAgIHRlc3RGYWlsZWQoIk5vIGV4Y2VwdGlvbiB0aHJvd24iKTsKKyAg
ICB9IGNhdGNoIChlKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkNhdWdodCBleGNlcHRpb246ICIg
KyBlLnRvU3RyaW5nKCkpOworICAgIH0KKworICAgIHRyeSB7CisgICAgICAgIGRlYnVnKCJQYXNz
aW5nIGFuIGludmFsaWQga2V5IGludG8gbG93ZXJCb3VuZCh7fSkiKTsKKyAgICAgICAgSURCS2V5
UmFuZ2UubG93ZXJCb3VuZCh7fSk7CisgICAgICAgIHRlc3RGYWlsZWQoIk5vIGV4Y2VwdGlvbiB0
aHJvd24iKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkNhdWdodCBl
eGNlcHRpb246ICIgKyBlLnRvU3RyaW5nKCkpOworICAgIH0KKworICAgIHRyeSB7CisgICAgICAg
IGRlYnVnKCJQYXNzaW5nIGFuIGludmFsaWQga2V5IGludG8gYm91bmQobnVsbCwge30pIik7Cisg
ICAgICAgIElEQktleVJhbmdlLmJvdW5kKG51bGwsIHt9KTsKKyAgICAgICAgdGVzdEZhaWxlZCgi
Tm8gZXhjZXB0aW9uIHRocm93biIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgdGVzdFBh
c3NlZCgiQ2F1Z2h0IGV4Y2VwdGlvbjogIiArIGUudG9TdHJpbmcoKSk7CisgICAgfQorCisgICAg
dHJ5IHsKKyAgICAgICAgZGVidWcoIlBhc3NpbmcgYW4gaW52YWxpZCBrZXkgaW50byBib3VuZCh7
fSxudWxsKSIpOworICAgICAgICBJREJLZXlSYW5nZS5ib3VuZCh7fSwgbnVsbCk7CisgICAgICAg
IHRlc3RGYWlsZWQoIk5vIGV4Y2VwdGlvbiB0aHJvd24iKTsKKyAgICB9IGNhdGNoIChlKSB7Cisg
ICAgICAgIHRlc3RQYXNzZWQoIkNhdWdodCBleGNlcHRpb246ICIgKyBlLnRvU3RyaW5nKCkpOwor
ICAgIH0KKworICAgIHRyeSB7CisgICAgICAgIGRlYnVnKCJQYXNzaW5nIGFuIGludmFsaWQga2V5
IGludG8gYm91bmQoe30sIHt9KSIpOworICAgICAgICBJREJLZXlSYW5nZS5ib3VuZCh7fSwge30p
OworICAgICAgICB0ZXN0RmFpbGVkKCJObyBleGNlcHRpb24gdGhyb3duIik7CisgICAgfSBjYXRj
aCAoZSkgeworICAgICAgICB0ZXN0UGFzc2VkKCJDYXVnaHQgZXhjZXB0aW9uOiAiICsgZS50b1N0
cmluZygpKTsKKyAgICB9CisKKyAgICBkZWJ1ZygiTG93ZXIga2V5IGdyZWF0ZXIgdGhhbiBoaWdo
ZXIga2V5LCBib3VuZCg0LCAzKSIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIklEQktl
eVJhbmdlLmJvdW5kKDQsIDMpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisK
KyAgICBkZWJ1ZygiRXF1YWwga2V5cywgZWl0aGVyIG9mIHRoZSBib3VuZHMgaXMgb3BlbiwgYm91
bmQoNCwgNCwgdHJ1ZSwgZmFsc2UpIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiSURC
S2V5UmFuZ2UuYm91bmQoNCwgNCwgdHJ1ZSwgZmFsc2UpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9u
LkRBVEFfRVJSIik7CisKKyAgICBkZWJ1ZygiRXF1YWwga2V5cywgZWl0aGVyIG9mIHRoZSBib3Vu
ZHMgaXMgb3BlbiwgYm91bmQoNCwgNCwgZmFsc2UsIHRydWUpIik7CisgICAgZXZhbEFuZEV4cGVj
dEV4Y2VwdGlvbigiSURCS2V5UmFuZ2UuYm91bmQoNCwgNCwgZmFsc2UsIHRydWUpIiwgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICBkZWJ1ZygiRXF1YWwga2V5cywgZWl0
aGVyIG9mIHRoZSBib3VuZHMgaXMgb3BlbiwgYm91bmQoNCwgNCwgdHJ1ZSwgdHJ1ZSkiKTsKKyAg
ICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJJREJLZXlSYW5nZS5ib3VuZCg0LCA0LCB0cnVlLCB0
cnVlKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworCisgICAgZGVidWcoIkVx
dWFsIGtleXMsIG5vbmUgb2YgdGhlIGJvdW5kcyBpcyBvcGVuLCBib3VuZCg0LCA0LCBmYWxzZSwg
ZmFsc2UpIik7CisgICAgSURCS2V5UmFuZ2UuYm91bmQoNCwgNCwgZmFsc2UsIGZhbHNlKTsKK30K
KwordGVzdCgpOworCitmaW5pc2hKU1Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvbGlz
dC1vcmRlcmluZy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9s
aXN0LW9yZGVyaW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczNTk4ZmQ3MjM1ODYwZWRhNzhiMmYxNzFlZTE0
ZGIwYzBjMWFjY2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvbGlzdC1vcmRlcmluZy5qcwpAQCAtMCwwICsxLDg0IEBACitpZiAodGhp
cy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMn
KTsKK30KKworZGVzY3JpcHRpb24oIlRlc3Qgc3RyaW5nIGxpc3Qgb3JkZXJpbmcgaW4gSW5kZXhl
ZERCLiIpOworCit2YXIgZXhwZWN0ZWRfb3JkZXIgPSBbCisgICIiLAorICAiXHgwMCIsIC8vICdO
VUxMJyAoVSswMDAwKQorICAiMCIsCisgICIxIiwKKyAgIkEiLAorICAiQiIsCisgICJhIiwKKyAg
ImIiLAorICAiXHg3RiIsIC8vICdERUxFVEUnIChVKzAwN0YpCisgICJceEMwIiwgLy8gJ0xBVElO
IENBUElUQUwgTEVUVEVSIEEgV0lUSCBHUkFWRScgKFUrMDBDMCkKKyAgIlx4QzEiLCAvLyAnTEFU
SU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEFDVVRFJyAoVSswMEMxKQorICAiXHhFMCIsIC8vICdM
QVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEdSQVZFJyAoVSswMEUwKQorICAiXHhFMSIsIC8vICdM
QVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEFDVVRFJyAoVSswMEUxKQorICAiXHhGRiIsIC8vICdM
QVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIERJQUVSRVNJUycgKFUrMDBGRikKKyAgIlx1MDEwMCIs
IC8vICdMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggTUFDUk9OJyAoVSswMTAwKQorICAiXHUx
MDAwIiwgLy8gJ01ZQU5NQVIgTEVUVEVSIEtBJyAoVSsxMDAwKQorICAiXHVEODM0XHVERDFFIiwg
Ly8gJ01VU0lDQUwgU1lNQk9MIEctQ0xFRicgKFUrMUQxMUUpLCBVVEYtMTYgc3Vycm9nYXRlIHBh
aXJzCisgICJcdUZGRkQiIC8vICdSRVBMQUNFTUVOVCBDSEFSQUNURVInIChVK0ZGRkQpCitdOwor
dmFyIGksIHRtcCwgcGVybXV0ZWRfb3JkZXIgPSBleHBlY3RlZF9vcmRlci5zbGljZSgpOyBwZXJt
dXRlZF9vcmRlci5yZXZlcnNlKCk7Citmb3IgKGkgPSAwOyBpIDwgcGVybXV0ZWRfb3JkZXIubGVu
Z3RoIC0gMjsgaSArPSAyKSB7CisgICAgdG1wID0gcGVybXV0ZWRfb3JkZXJbaV07CisgICAgcGVy
bXV0ZWRfb3JkZXJbaV0gPSBwZXJtdXRlZF9vcmRlcltpICsgMV07CisgICAgcGVybXV0ZWRfb3Jk
ZXJbaSArIDFdID0gdG1wOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5k
b3JQcmVmaXhlcygpOworICAgIGRlYnVnKCJjaGVjayB0aGF0IHRoZSBleHBlY3RlZCBvcmRlciBp
cyB0aGUgY2Fub25pY2FsIEpTIHNvcnQgb3JkZXI6Iik7CisgICAgZXZhbEFuZExvZygic29ydGVk
X29yZGVyID0gZXhwZWN0ZWRfb3JkZXIuc2xpY2UoKTsgc29ydGVkX29yZGVyLnNvcnQoKSIpOwor
ICAgIHNob3VsZEJlVHJ1ZSgiYXJlQXJyYXlzRXF1YWwoc29ydGVkX29yZGVyLCBleHBlY3RlZF9v
cmRlcikiKTsKKyAgICB0ZXN0U3RvcmVzQW5kSW5kZXhlcygpOworfQorCitmdW5jdGlvbiB0ZXN0
U3RvcmVzQW5kSW5kZXhlcygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0U3Rv
cmVzQW5kSW5kZXhlcygpOiIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
ZGVsZXRlRGF0YWJhc2UoJ2xpc3Qtb3JkZXJpbmcnKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24oZSkgeworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2xp
c3Qtb3JkZXJpbmcnKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihlKSB7Cisg
ICAgICAgICAgICBldmFsQW5kTG9nKCJkYiA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAgICAgICAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLnZlcnNpb24iLCAiIik7CisgICAgICAgICAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgICAgICAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgICAgIHRyYW5zID0g
cmVxdWVzdC5yZXN1bHQ7CisKKyAgICAgICAgICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgICAg
ICAgICAgZGVidWcoIk9iamVjdCBzdG9yZXM6Iik7CisgICAgICAgICAgICAgICAgcGVybXV0ZWRf
b3JkZXIuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkgeworICAgICAgICAgICAgICAgICAgICBldmFs
QW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgiICsgSlNPTi5zdHJpbmdpZnkobmFtZSkgKyIp
Iik7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBzaG91bGRCZVRydWUo
ImFyZUFycmF5c0VxdWFsKGRiLm9iamVjdFN0b3JlTmFtZXMsIGV4cGVjdGVkX29yZGVyKSIpOwor
CisgICAgICAgICAgICAgICAgZGVidWcoIiIpOworICAgICAgICAgICAgICAgIGRlYnVnKCJJbmRl
eGVzOiIpOworICAgICAgICAgICAgICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5j
cmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgICAgICAgICAgICAgIHBlcm11dGVkX29y
ZGVyLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgZXZhbEFu
ZExvZygic3RvcmUuY3JlYXRlSW5kZXgoIiArIEpTT04uc3RyaW5naWZ5KG5hbWUpICsiLCAna2V5
UGF0aCcpIik7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBzaG91bGRC
ZVRydWUoImFyZUFycmF5c0VxdWFsKHN0b3JlLmluZGV4TmFtZXMsIGV4cGVjdGVkX29yZGVyKSIp
OworCisgICAgICAgICAgICAgICAgdHJhbnMub25jb21wbGV0ZSA9IGZpbmlzaEpTVGVzdDsKKyAg
ICAgICAgICAgIH07CisgICAgICAgIH07CisgICAgfTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9tdXRhdGluZy1jdXJzb3IuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvbXV0YXRpbmctY3Vyc29yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3ZDYxZjZj
YzQwYjA2NjA4MGFmMTFkZTY1MWYxODMxMTY3ZmEwY2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvbXV0YXRpbmctY3Vyc29yLmpzCkBA
IC0wLDAgKzEsMTMyIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2Ny
aXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBp
bXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgbXV0YXRp
bmcgYW4gSW5kZXhlZERCJ3Mgb2JqZWN0c3RvcmUgZnJvbSBhIGN1cnNvci4iKTsKKwordGVzdCgp
OworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignbXV0YXRpbmctY3Vyc29yJyki
KTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2Vz
cygpCit7CisgICAgdmFyIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignMScpIik7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lv
blN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOworICAgIHNl
bGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAg
ICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVu
ZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSBvcGVuRm9yd2Fy
ZEN1cnNvcjsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICB2YXIgb2Jq
ZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdzdG9yZScpIik7CisgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKDEsIDEpLm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0
b3JlLmFkZCgyLCAyKS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKKyAgICBl
dmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoMywgMykub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrIik7CisgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKDQsIDQpLm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOworfQorCitmdW5jdGlvbiBvcGVuRm9yd2Fy
ZEN1cnNvcigpCit7CisgICAgZGVidWcoIm9wZW5Gb3J3YXJkQ3Vyc29yKCkiKTsKKyAgICBldmFs
QW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUnXSwgSURCVHJhbnNhY3Rpb24u
UkVBRF9XUklURSkiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJh
Y2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IGZvcndhcmRDdXJzb3JDb21wbGV0ZTsKKworICAg
IHNlbGYub2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUn
KSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCki
KTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZvcndhcmRDdXJzb3I7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgc2VsZi5jdXJzb3JTdGVwcyA9
IDA7Cit9CisKK2Z1bmN0aW9uIGZvcndhcmRDdXJzb3IoKQoreworICAgIGRlYnVnKCJmb3J3YXJk
Q3Vyc29yKCkiKTsKKyAgICBzZWxmLmN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisKKyAg
ICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBudWxsKSB7CisgICAgICAgIHNob3VsZEJlKCJj
dXJzb3JTdGVwcyIsICI1Iik7CisKKyAgICAgICAgLy8gTGV0IHRoZSB0cmFuc2FjdGlvbiBmaW5p
c2guCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBkZWJ1ZygrK2N1cnNvclN0ZXBzKTsK
KyAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJjdXJzb3JTdGVwcyIpOworICAgIHNob3VsZEJl
KCJjdXJzb3IudmFsdWUiLCAiY3Vyc29yU3RlcHMiKTsKKworICAgIGlmIChjdXJzb3JTdGVwcyA9
PSAxKSB7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJldmVudC50YXJnZXQuc291cmNl
LmFkZCg1LCA1KSIpOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeyBl
dmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKSIpOyB9CisgICAgICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIH0gZWxzZSB7CisgICAgICAgIGV2YWxB
bmRMb2coImN1cnNvci5jb250aW51ZSgpIik7CisgICAgfQorfQorCitmdW5jdGlvbiBmb3J3YXJk
Q3Vyc29yQ29tcGxldGUoKQoreworICAgIGRlYnVnKCJmb3J3YXJkQ3Vyc29yQ29tcGxldGUoKSIp
OworICAgIG9wZW5SZXZlcnNlQ3Vyc29yKCkKK30KKworZnVuY3Rpb24gb3BlblJldmVyc2VDdXJz
b3IoKQoreworICAgIGRlYnVnKCJvcGVuUmV2ZXJzZUN1cnNvcigpIik7CisgICAgZXZhbEFuZExv
ZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURf
V1JJVEUpIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwor
ICAgIHRyYW5zLm9uY29tcGxldGUgPSByZXZlcnNlQ3Vyc29yQ29tcGxldGU7CisKKyAgICBzZWxm
Lm9iamVjdFN0b3JlID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUub3BlbkN1cnNvcihudWxsLCBJ
REJDdXJzb3IuUFJFVikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHJldmVyc2VDdXJzb3I7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgc2Vs
Zi5jdXJzb3JTdGVwcyA9IDY7Cit9CisKK2Z1bmN0aW9uIHJldmVyc2VDdXJzb3IoKQoreworICAg
IGRlYnVnKCJyZXZlcnNlQ3Vyc29yKCkiKTsKKyAgICBzZWxmLmN1cnNvciA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQ7CisKKyAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBudWxsKSB7CisgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3JTdGVwcyIsICIwIik7CisKKyAgICAgICAgLy8gTGV0IHRoZSB0
cmFuc2FjdGlvbiBmaW5pc2guCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBkZWJ1Zygt
LWN1cnNvclN0ZXBzKTsKKyAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJjdXJzb3JTdGVwcyIp
OworICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAiY3Vyc29yU3RlcHMiKTsKKworICAgIGlm
IChjdXJzb3JTdGVwcyA9PSAyKSB7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJldmVu
dC50YXJnZXQuc291cmNlLmFkZCgwLCAwKSIpOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGZ1bmN0aW9uKCkgeyBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKSIpOyB9CisgICAgICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIH0gZWxzZSB7
CisgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpIik7CisgICAgfQorfQorCitm
dW5jdGlvbiByZXZlcnNlQ3Vyc29yQ29tcGxldGUoKQoreworICAgIGRlYnVnKCJyZXZlcnNlQ3Vy
c29yQ29tcGxldGUoKSIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9vYmplY3RTdG9yZS1yZXF1aXJlZC1hcmd1bWVudHMuanMgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0U3RvcmUtcmVxdWlyZWQtYXJndW1lbnRz
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjdkZjhiNzA1YzgyOWFlZGM2NjlhYjFhYjUyNTYxMmE4NmI2MDk5NjMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvb2JqZWN0U3RvcmUtcmVxdWlyZWQtYXJndW1lbnRzLmpzCkBAIC0wLDAgKzEsNDQgQEAKK2lm
ICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJl
ZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgb2JqZWN0IHN0b3JlIHJl
cXVpcmVkIGFyZ3VtZW50cyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5k
b3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAg
ZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2
YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUFuZFBv
cHVsYXRlT2JqZWN0U3RvcmUoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisK
KyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ2ZvbycpOyIpOworICAgIHNob3VsZFRocm93KCJvYmplY3RTdG9yZS5wdXQoKTsi
KTsKKyAgICBzaG91bGRUaHJvdygib2JqZWN0U3RvcmUuYWRkKCk7Iik7CisgICAgc2hvdWxkVGhy
b3coIm9iamVjdFN0b3JlLmRlbGV0ZSgpOyIpOworICAgIHNob3VsZFRocm93KCJvYmplY3RTdG9y
ZS5nZXQoKTsiKTsKKyAgICBzaG91bGRUaHJvdygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoKTsi
KTsKKyAgICBzaG91bGRUaHJvdygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ2ZvbycpOyIpOwor
ICAgIHNob3VsZFRocm93KCJvYmplY3RTdG9yZS5pbmRleCgpOyIpOworICAgIHNob3VsZFRocm93
KCJvYmplY3RTdG9yZS5kZWxldGVJbmRleCgpOyIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQor
Cit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3JlLWF1dG9pbmNyZW1l
bnQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3Rv
cmUtYXV0b2luY3JlbWVudC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YjFiNDlhMzEzZGNkMTBlMzdmZjZjZDc3
YmVmZWI4YjA0NmM1ZGI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3JlLWF1dG9pbmNyZW1lbnQuanMKQEAgLTAsMCAr
MSwxOTMgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcu
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNj
cmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBJ
REJPYmplY3RTdG9yZSBhdXRvLWluY3JlbWVudCBmZWF0dXJlLiIpOworCitmdW5jdGlvbiB0ZXN0
KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJpbmRleGVkREIub3Blbignb2JqZWN0c3RvcmUtYXV0b2luY3JlbWVudCcpIik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQorewor
ICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOworICAgIHNlbGYuZGIgPSBldmFsQW5kTG9nKCJk
YiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJk
Yi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBz
ZXRWZXJzaW9uU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQoreworICAgIGRlYnVn
KCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOworICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0
cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9
PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwor
ICAgIHRyYW5zLm9uY29tcGxldGUgPSBzZXRWZXJzaW9uQ29tcGxldGVkOworCisgICAgZGVsZXRl
QWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIGRlYnVnKCJjcmVhdGVPYmplY3RTdG9yZSgpOiIp
OworICAgIHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0
b3JlKCdTdG9yZVdpdGhLZXlQYXRoJywge2tleVBhdGg6ICdpZCcsIGF1dG9JbmNyZW1lbnQ6IHRy
dWV9KSIpOworICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdTdG9yZVdpdGhB
dXRvSW5jcmVtZW50Jywge2F1dG9JbmNyZW1lbnQ6IHRydWV9KSIpOworICAgIGV2YWxBbmRMb2co
ImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdQbGFpbk9sZFN0b3JlJywge2F1dG9JbmNyZW1lbnQ6IGZh
bHNlfSkiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnU3RvcmVXaXRo
TG9uZ0tleVBhdGgnLCB7a2V5UGF0aDogJ2EuYi5jLmlkJywgYXV0b0luY3JlbWVudDogdHJ1ZX0p
Iik7CisgICAgdmFyIHN0b3JlTmFtZXMgPSBldmFsQW5kTG9nKCJzdG9yZU5hbWVzID0gZGIub2Jq
ZWN0U3RvcmVOYW1lcyIpOworCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzdG9yZS5uYW1l
IiwgIlN0b3JlV2l0aEtleVBhdGgiKTsKKyAgICBzaG91bGRCZSgic3RvcmUua2V5UGF0aCIsICIn
aWQnIik7CisgICAgc2hvdWxkQmUoInN0b3JlTmFtZXMuY29udGFpbnMoJ1N0b3JlV2l0aEtleVBh
dGgnKSIsICJ0cnVlIik7CisgICAgc2hvdWxkQmUoInN0b3JlTmFtZXMuY29udGFpbnMoJ1N0b3Jl
V2l0aEF1dG9JbmNyZW1lbnQnKSIsICJ0cnVlIik7CisgICAgc2hvdWxkQmUoInN0b3JlTmFtZXMu
Y29udGFpbnMoJ1BsYWluT2xkU3RvcmUnKSIsICJ0cnVlIik7CisgICAgc2hvdWxkQmUoInN0b3Jl
TmFtZXMubGVuZ3RoIiwgIjQiKTsKKworICAgIC8vIExldCB0aGUgc2V0VmVyc2lvbiB0cmFuc2Fj
dGlvbiBjb21wbGV0ZS4KK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbkNvbXBsZXRlZCgpCit7Cisg
ICAgZGVidWcoInNldFZlcnNpb25Db21wbGV0ZWQoKToiKTsKKworICAgIHNlbGYudHJhbnMgPSBl
dmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnU3RvcmVXaXRoS2V5UGF0aCcsICdT
dG9yZVdpdGhBdXRvSW5jcmVtZW50JywgJ1BsYWluT2xkU3RvcmUnXSwgSURCVHJhbnNhY3Rpb24u
UkVBRF9XUklURSkiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJh
Y2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHRlc3RMb25nS2V5UGF0aDsKKworICAgIHNlbGYu
c3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdTdG9yZVdpdGhL
ZXlQYXRoJykiKTsKKworICAgIGRlYnVnKCJJbnNlcnQgaW50byBvYmplY3Qgc3RvcmUgd2l0aCBh
dXRvIGluY3JlbWVudCBhbmQga2V5IHBhdGgsIHdpdGgga2V5IGluIHRoZSBvYmplY3QuIik7Cisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7bmFtZTogJ0plZmZlcnNzb24nLCBu
dW1iZXI6ICc3MDEwJywgaWQ6IDN9KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkSmVm
ZmVyc3NvblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIGFkZEplZmZlcnNzb25TdWNjZXNzKCkKK3sKKyAgICBkZWJ1
ZygiYWRkSmVmZmVyc3NvblN1Y2Nlc3MoKToiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0
LnJlc3VsdCIsICIzIik7CisKKyAgICBkZWJ1ZygiSW5zZXJ0IGludG8gb2JqZWN0IHN0b3JlIHdp
dGggYXV0byBpbmNyZW1lbnQgYW5kIGtleSBwYXRoLCB3aXRob3V0IGtleSBpbiB0aGUgb2JqZWN0
LiIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe25hbWU6ICdMaW5jb2xu
JywgbnVtYmVyOiAnNzAxMid9KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkTGluY29s
bldpdGhJbmplY3RLZXlTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBhZGRMaW5jb2xuV2l0aEluamVjdEtleVN1Y2Nl
c3MoKQoreworICAgIGRlYnVnKCJhZGRMaW5jb2xuV2l0aEluamVjdEtleVN1Y2Nlc3MoKToiKTsK
KyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICI0Iik7CisKKyAgICByZXN1bHQg
PSBldmFsQW5kTG9nKCJzdG9yZS5nZXQoNCkiKTsKKyAgICByZXN1bHQub25zdWNjZXNzID0gZ2V0
TGluY29sbkFmdGVySW5qZWN0ZWRLZXlTdWNjZXNzOworICAgIHJlc3VsdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGdldExpbmNvbG5BZnRlckluamVj
dGVkS2V5U3VjY2VzcygpCit7CisgICAgZGVidWcoImdldExpbmNvbG5BZnRlckluamVjdGVkS2V5
U3VjY2VzcygpOiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJl
c3VsdC5uYW1lIiwgIkxpbmNvbG4iKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50
LnRhcmdldC5yZXN1bHQubnVtYmVyIiwgIjcwMTIiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFy
Z2V0LnJlc3VsdC5pZCIsICI0Iik7CisKKyAgICBzZWxmLnN0b3JlID0gZXZhbEFuZExvZygic3Rv
cmUgPSB0cmFucy5vYmplY3RTdG9yZSgnU3RvcmVXaXRoQXV0b0luY3JlbWVudCcpIik7CisgICAg
ZGVidWcoIkluc2VydCBpbnRvIG9iamVjdCBzdG9yZSB3aXRoIGtleSBnZW4gdXNpbmcgZXhwbGlj
aXQga2V5Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7bmFtZTogJ0xp
bmNvbG4nLCBudW1iZXI6ICc3MDEyJ30sIDUpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBh
ZGRMaW5jb2xuV2l0aEV4cGxpY2l0S2V5U3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gYWRkTGluY29sbldpdGhFeHBs
aWNpdEtleVN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJhZGRMaW5jb2xuV2l0aEV4cGxpY2l0S2V5
U3VjY2VzcygpOiIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIjUiKTsK
KworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5nZXQoNSkiKTsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGdldExpbmNvbG5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBnZXRMaW5jb2xuU3VjY2Vzcygp
Cit7CisgICAgZGVidWcoImdldExpbmNvbG5TdWNjZXNzKCk6Iik7CisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0Lm5hbWUiLCAiTGluY29sbiIpOworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5udW1iZXIiLCAiNzAxMiIp
OworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLnB1dCh7bmFtZTogJ0FicmFoYW0n
LCBudW1iZXI6ICcyMTA3J30pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwdXRBYnJhaGFt
U3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
K30KKworZnVuY3Rpb24gcHV0QWJyYWhhbVN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJwdXRBYnJh
aGFtU3VjY2VzcygpOiIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIjYi
KTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5nZXQoNikiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGdldEFicmFoYW1TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBnZXRBYnJhaGFtU3VjY2Vz
cygpCit7CisgICAgZGVidWcoImdldEFicmFoYW1TdWNjZXNzKCk6Iik7CisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0Lm5hbWUiLCAiQWJyYWhhbSIpOworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5udW1iZXIiLCAiMjEw
NyIpOworCisgICAgc2VsZi5zdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0
U3RvcmUoJ1BsYWluT2xkU3RvcmUnKSIpOworICAgIGRlYnVnKCJUcnkgYWRkaW5nIHdpdGggbm8g
a2V5IHRvIG9iamVjdCBzdG9yZSB3aXRob3V0IGF1dG8gaW5jcmVtZW50LiIpOworICAgIGV2YWxB
bmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmFkZCh7bmFtZTogJ0FkYW0nfSkiLCAiSURCRGF0YWJh
c2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUu
YWRkKHtuYW1lOiAnQWRhbSd9LCAxKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkQWRh
bVN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Cit9CisKK2Z1bmN0aW9uIGFkZEFkYW1TdWNjZXNzKCkKK3sKKyAgICBkZWJ1ZygiYWRkQWRhbVN1
Y2Nlc3MoKToiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICIxIik7Cit9
CisKK2Z1bmN0aW9uIHRlc3RMb25nS2V5UGF0aCgpCit7CisgICAgZGVidWcoInRlc3RMb25nS2V5
UGF0aCgpOiIpOworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlv
bignU3RvcmVXaXRoTG9uZ0tleVBhdGgnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwor
ICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5v
bmNvbXBsZXRlID0gZmluaXNoSlNUZXN0OworCisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9y
ZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdTdG9yZVdpdGhMb25nS2V5UGF0aCcpIik7CisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7Zm9vOiAnYmFyJ30pIik7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInN0b3JlLmFkZCh7Zm9vOiAnYmFyJywgYToge319KSIpOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJzdG9yZS5hZGQoe2ZvbzogJ2JhcicsIGE6IHtiOiB7fX19KSIpOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJzdG9yZS5hZGQoe2ZvbzogJ2JhcicsIGE6IHtiOiB7Yzoge319fX0pIik7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgY3Vyc29yUmVxdWVzdCA9
IGV2YWxBbmRMb2coInN0b3JlLm9wZW5DdXJzb3IoKSIpOworICAgIGN1cnNvclJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIGV2YWxBbmRMb2coImV4cGVjdGVk
ID0gbnVsbCIpOworICAgIGV2YWxBbmRMb2coImNvdW50ID0gMCIpOworICAgIGN1cnNvclJlcXVl
c3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICBjdXJzb3IgPSBjdXJzb3JSZXF1
ZXN0LnJlc3VsdDsKKyAgICAgICAgaWYgKCFjdXJzb3IpIHsKKyAgICAgICAgICAgIHNob3VsZEJl
KCJjb3VudCIsICI0Iik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
aWYgKGV4cGVjdGVkID09PSBudWxsKSB7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJleHBlY3Rl
ZCA9IGN1cnNvci52YWx1ZS5hLmIuYy5pZCArIDEiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuZm9vIiwgIidiYXInIik7CisgICAgICAgICAg
ICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmEuYi5jLmlkIiwgImV4cGVjdGVkIik7CisgICAgICAg
ICAgICBldmFsQW5kTG9nKCJleHBlY3RlZCA9IGN1cnNvci52YWx1ZS5hLmIuYy5pZCArIDEiKTsK
KyAgICAgICAgfQorICAgICAgICBjb3VudCsrOworICAgICAgICBjdXJzb3IuY29udGludWUoKTsK
KyAgICB9OworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3Jl
LWNsZWFyLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVj
dHN0b3JlLWNsZWFyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5NDdjNmM3MjQxZTdhMjQ1OTZkZWZmYmU1YmVi
ZTI0ODZiM2FiNGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3RvcmUtY2xlYXIuanMKQEAgLTAsMCArMSwxMDIgQEAKK2lm
ICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJl
ZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyB3ZWJraXRJREJPYmpl
Y3RTdG9yZS5jbGVhcigpLiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5k
b3JQcmVmaXhlcygpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbign
b2JqZWN0c3RvcmUtY2xlYXInKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc3RhcnRTZXRW
ZXJzaW9uOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBzdGFydFNldFZlcnNpb24oKQoreworICAgIGRiID0gZXZhbEFuZExvZygi
ZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
ZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZGVsZXRlRXhpc3Rpbmc7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKK3sKKyAgICBzZWxmLnRyYW5z
ID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxk
QmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRi
KTsKKworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9y
ZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKKworICAgIHNlbGYuaW5kZXggPSBldmFsQW5kTG9nKCJz
dG9yZS5jcmVhdGVJbmRleCgnaW5kZXhOYW1lJywgJycpIik7CisgICAgc2hvdWxkQmVUcnVlKCJz
dG9yZS5pbmRleE5hbWVzLmNvbnRhaW5zKCdpbmRleE5hbWUnKSIpOworCisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInN0b3JlLmFkZCgndmFsdWUnLCAna2V5JykiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGNyZWF0ZVNlY29uZE9iamVjdFN0b3JlQW5kQWRkVmFsdWU7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNyZWF0
ZVNlY29uZE9iamVjdFN0b3JlQW5kQWRkVmFsdWUoKQoreworICAgIG90aGVyU3RvcmUgPSBldmFs
QW5kTG9nKCJvdGhlclN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ290aGVyU3RvcmVOYW1l
JywgbnVsbCkiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJvdGhlclN0b3JlLmFkZCgn
dmFsdWUnLCAna2V5JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFyT2JqZWN0U3Rv
cmU7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIGNsZWFyT2JqZWN0U3RvcmUoKQoreworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJzdG9yZS5jbGVhcigpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhclN1Y2Nlc3M7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIGNsZWFyU3VjY2VzcygpCit7CisgICAgc2hvdWxkQmVVbmRlZmluZWQoImV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5vcGVuQ3Vy
c29yKCkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5DdXJzb3JTdWNjZXNzOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biBvcGVuQ3Vyc29yU3VjY2VzcygpCit7CisgICAgc2hvdWxkQmVOdWxsKCJldmVudC50YXJnZXQu
cmVzdWx0Iik7CisKKyAgICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuaW5kZXgo
J2luZGV4TmFtZScpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4Lm9wZW5LZXlD
dXJzb3IoKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbktleUN1cnNvclN1Y2Nlc3M7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIG9wZW5LZXlDdXJzb3JTdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygib3BlbktleUN1cnNv
clN1Y2Nlc3MoKToiKTsKKyAgICBzaG91bGRCZU51bGwoImV2ZW50LnRhcmdldC5yZXN1bHQiKTsK
KyAgICB0cmFucy5vbmNvbXBsZXRlID0gc2V0VmVyc2lvbkNvbXBsZXRlOworfQorCitmdW5jdGlv
biBzZXRWZXJzaW9uQ29tcGxldGUoKQoreworICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygi
ZGIudHJhbnNhY3Rpb24oWydvdGhlclN0b3JlTmFtZSddKSIpOworICAgIHRyYW5zYWN0aW9uLm9u
YWJvcnQgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB2YXIgb3RoZXJTdG9yZSA9IGV2
YWxBbmRMb2coIm90aGVyU3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnb3RoZXJTdG9y
ZU5hbWUnKSIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIm90aGVyU3RvcmUuZ2V0KCdr
ZXknKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0U3VjY2VzczsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZ2V0U3Vj
Y2VzcygpCit7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0
IiwgInZhbHVlIik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9vYmplY3RzdG9yZS1jb3VudC5qcyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vYmplY3RzdG9yZS1jb3VudC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
OWRhZTE3NjU2NDE2ODNhNTBkOTZiY2IxNTEwYzI4NWYyMzk1MmY5Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3JlLWNv
dW50LmpzCkBAIC0wLDAgKzEsMTQ0IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAg
aW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMn
KTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRl
c3QgSW5kZXhlZERCJ3MgSURCT2JqZWN0U3RvcmUuY291bnQoKS4iKTsKKworZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCLm9wZW4oJ29iamVjdHN0b3JlLWNvdW50JykiKTsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFy
Z2V0LnJlc3VsdCIpOworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lv
bignbmV3IHZlcnNpb24nKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwcmVwYXJlRGF0YWJh
c2U7CisgICAgfTsKK30KKworZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKCkKK3sKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoInByZXBhcmluZyBkYXRhYmFzZSIpOworICAgIHNlbGYudHJhbnMg
PSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRC
ZVRydWUoInRyYW5zICE9PSBudWxsIik7CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIp
OworCisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdzdG9yZU5hbWUnLCBudWxsKSIpOworCisgICAgZGVidWcoImFkZGluZyAwIC4uLiA5OSIpOwor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAgcmVxdWVzdCA9IHN0
b3JlLmFkZChpLCBpKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7CisgICAgfQorICAgIHRyYW5zLm9uY29tcGxldGUgPSB2ZXJpZnlDb3VudDsKK30K
KworZnVuY3Rpb24gdmVyaWZ5Q291bnQoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygi
dmVyaWZ5aW5nIGNvdW50IHdpdGhvdXQgcmFuZ2UiKTsKKyAgICB0cmFucyA9IGV2YWxBbmRMb2co
InRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURf
T05MWSkiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9IG51bGwiKTsKKyAgICB0cmFucy5v
bmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9
IHZlcmlmeUNvdW50V2l0aFJhbmdlOworCisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9
IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworICAgIHNob3VsZEJlVHJ1ZSgic3Rv
cmUgIT0gbnVsbCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdG9y
ZS5jb3VudCgpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgIHNob3Vs
ZEJlVHJ1ZSgidHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXInIik7CisgICAgICAgICBz
aG91bGRCZSgicmVxdWVzdC5yZXN1bHQiLCAiMTAwIik7CisgICAgICAgICAvLyBsZXQgdGhlIHRy
YW5zYWN0aW9uIGNvbXBsZXRlCisgICAgfTsKK30KKworZnVuY3Rpb24gdmVyaWZ5Q291bnRXaXRo
UmFuZ2UoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidmVyaWZ5aW5nIGNvdW50IHdp
dGggcmFuZ2UiKTsKKyAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rp
b24oJ3N0b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkiKTsKKyAgICBzaG91bGRC
ZVRydWUoInRyYW5zICE9IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFi
b3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHZlcmlmeUNvdW50V2l0aEtleTsK
KworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3Rv
cmVOYW1lJykiKTsKKyAgICBzaG91bGRCZVRydWUoInN0b3JlICE9IG51bGwiKTsKKworICAgIHZh
ciB0ZXN0cyA9IFsKKyAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6
IDk5LCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogMTAwIH0sCisgICAgICAgIHsgbG93ZXI6
IDAsIGxvd2VyT3BlbjogdHJ1ZSwgdXBwZXI6IDk5LCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3Rl
ZDogOTkgfSwKKyAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDk5
LCB1cHBlck9wZW46IHRydWUsIGV4cGVjdGVkOiA5OSB9LAorICAgICAgICB7IGxvd2VyOiAwLCBs
b3dlck9wZW46IHRydWUsIHVwcGVyOiA5OSwgdXBwZXJPcGVuOiB0cnVlLCBleHBlY3RlZDogOTgg
fSwKKyAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDEwMCwgdXBw
ZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDEwMCB9LAorICAgICAgICB7IGxvd2VyOiAwLCBsb3dl
ck9wZW46IGZhbHNlLCB1cHBlcjogMTAwLCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogMTAw
IH0sCisgICAgICAgIHsgbG93ZXI6IDEwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogMTAwLCB1
cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogOTAgfSwKKyAgICAgICAgeyBsb3dlcjogMCwgbG93
ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDAsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiAxIH0s
CisgICAgICAgIHsgbG93ZXI6IDUwMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDUwMCwgdXBw
ZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDAgfQorICAgIF07CisKKyAgICBmdW5jdGlvbiBuZXh0
VGVzdCgpIHsKKyAgICAgICAgZGVidWcoIiIpOworICAgICAgICBldmFsQW5kTG9nKCJ0ZXN0ID0g
IiArIEpTT04uc3RyaW5naWZ5KHRlc3RzLnNoaWZ0KCkpKTsKKyAgICAgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSBzdG9yZS5jb3VudChJREJLZXlSYW5nZS5ib3VuZCh0ZXN0Lmxv
d2VyLCB0ZXN0LnVwcGVyLCB0ZXN0Lmxvd2VyT3BlbiwgdGVzdC51cHBlck9wZW4pKSIpOworICAg
ICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICBzaG91bGRCZVRy
dWUoInR5cGVvZiByZXF1ZXN0LnJlc3VsdCA9PSAnbnVtYmVyJyIpOworICAgICAgICAgICAgIHNo
b3VsZEJlKCJyZXF1ZXN0LnJlc3VsdCIsIFN0cmluZyh0ZXN0LmV4cGVjdGVkKSk7CisKKyAgICAg
ICAgICAgICBpZiAodGVzdHMubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgIG5leHRUZXN0KCk7
CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIC8vIG90aGVyd2lzZSBsZXQgdGhlIHRyYW5z
YWN0aW9uIGNvbXBsZXRlCisgICAgICAgIH07CisgICAgfQorCisgICAgbmV4dFRlc3QoKTsKK30K
KworZnVuY3Rpb24gdmVyaWZ5Q291bnRXaXRoS2V5KCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAg
ZGVidWcoInZlcmlmeWluZyBjb3VudCB3aXRoIGtleSIpOworICAgIHRyYW5zID0gZXZhbEFuZExv
ZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVB
RF9PTkxZKSIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT0gbnVsbCIpOworICAgIHRyYW5z
Lm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRl
ID0gZmluaXNoSlNUZXN0OworCisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5z
Lm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworICAgIHNob3VsZEJlVHJ1ZSgic3RvcmUgIT0g
bnVsbCIpOworCisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuY291bnQoTmFOKSIs
ICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oInN0b3JlLmNvdW50KHt9KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIp
OworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmNvdW50KC9yZWdleC8pIiwgIklE
QkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICB2YXIgdGVzdHMgPSBbCisgICAg
ICAgIHsga2V5OiAwLCBleHBlY3RlZDogMSB9LAorICAgICAgICB7IGtleTogMTAwLCBleHBlY3Rl
ZDogMCB9LAorICAgICAgICB7IGtleTogbnVsbCwgZXhwZWN0ZWQ6IDEwMCB9CisgICAgXTsKKwor
ICAgIGZ1bmN0aW9uIG5leHRUZXN0KCkgeworICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgIGV2
YWxBbmRMb2coInRlc3QgPSAiICsgSlNPTi5zdHJpbmdpZnkodGVzdHMuc2hpZnQoKSkpOworICAg
ICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHN0b3JlLmNvdW50KHRlc3Qua2V5
KSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHNo
b3VsZEJlVHJ1ZSgidHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXInIik7CisgICAgICAg
ICAgICBzaG91bGRCZSgicmVxdWVzdC5yZXN1bHQiLCBTdHJpbmcodGVzdC5leHBlY3RlZCkpOwor
ICAgICAgICAgICAgIGlmICh0ZXN0cy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgbmV4dFRl
c3QoKTsKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIGxldCB0aGUg
dHJhbnNhY3Rpb24gY29tcGxldGUKKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBuZXh0VGVzdCgp
OworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3JlLWN1cnNv
ci5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vYmplY3RzdG9y
ZS1jdXJzb3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTJjMDJhYzYxYTYzNGZhM2NjZmU0YWQyNGUwNDFhOTg3
NDZhYjI4YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9vYmplY3RzdG9yZS1jdXJzb3IuanMKQEAgLTAsMCArMSwyMjYgQEAKK2lmICh0
aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5q
cycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBvYmplY3RTdG9yZS5vcGVu
Q3Vyc29yICsgdGhlIGN1cnNvciBpdCBwcm9kdWNlcyBpbiBkZXB0aC4iKTsKKworLy8gSW4gb3Jk
ZXIgb2YgaG93IGl0IHNob3VsZCBiZSBzb3J0ZWQgYnkgSW5kZXhlZERCLgorc2VsZi50ZXN0RGF0
YSA9IFsKKyAgICAyLjcxODI4MTgyODQ1OSwKKyAgICAzLAorICAgIDMuMTQxNTkyNjUsCisgICAg
MTAsCisgICAgLy8gRklYTUU6IERhdGVzLgorICAgICJBIGJpZ2dlciBzdHJpbmciLAorICAgICJU
aGUgYmlnZ2VzdCIsCisgICAgImEgbG93IHN0cmluZyIKK107CisKK2Z1bmN0aW9uIG9wZW5EYXRh
YmFzZSgpCit7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdvYmpl
Y3RzdG9yZS1jdXJzb3InKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvbjsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gc2V0VmVyc2lvbigpCit7CisgICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZl
cnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4
aXN0aW5nOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBkZWxldGVFeGlzdGluZygpCit7CisgICAgc2VsZi50cmFucyA9IGV2YWxB
bmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgi
dHJhbnMgIT09IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2Fs
bGJhY2s7CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgc2VsZi5vYmpl
Y3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzb21lT2JqZWN0U3Rv
cmUnKSIpOworICAgIHNlbGYubmV4dFRvQWRkID0gMDsKKyAgICBhZGREYXRhKCk7Cit9CisKK2Z1
bmN0aW9uIGFkZERhdGEoKQoreworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9y
ZS5hZGQoJycsIHRlc3REYXRhW25leHRUb0FkZF0pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSArK3NlbGYubmV4dFRvQWRkIDwgdGVzdERhdGEubGVuZ3RoID8gYWRkRGF0YSA6IHNjaGVkdWxl
VGVzdHM7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIHNjaGVkdWxlVGVzdHMoKQoreworICAgIGRlYnVnKCJTY2hlZHVsaW5nIHRl
c3RzLi4uIik7CisgICAgc2VsZi5zY2hlZHVsZWRUZXN0cyA9IFtdOworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgdGVzdERhdGEubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgLyogbGVmdCBib3VuZCwg
aXMgb3BlbiwgcmlnaHQgYm91bmQsIGlzIG9wZW4sIGFzY2VuZGluZyAqLworICAgICAgICBzY2hl
ZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCB0cnVlLCBudWxsLCBudWxsLCB0cnVlXSk7CisgICAgICAg
IHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBudWxsLCBudWxsLCB0cnVlXSk7Cisg
ICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW251bGwsIG51bGwsIGksIHRydWUsIHRydWVd
KTsKKyAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbbnVsbCwgbnVsbCwgaSwgZmFsc2Us
IHRydWVdKTsKKyAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwgbnVsbCwg
bnVsbCwgZmFsc2VdKTsKKyAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgZmFsc2Us
IG51bGwsIG51bGwsIGZhbHNlXSk7CisgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW251
bGwsIG51bGwsIGksIHRydWUsIGZhbHNlXSk7CisgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hp
ZnQoW251bGwsIG51bGwsIGksIGZhbHNlLCBmYWxzZV0pOworICAgICAgICBmb3IgKHZhciBqID0g
NjsgaiA8IHRlc3REYXRhLmxlbmd0aDsgKytqKSB7CisgICAgICAgICAgICBzY2hlZHVsZWRUZXN0
cy51bnNoaWZ0KFtpLCB0cnVlLCBqLCB0cnVlLCB0cnVlXSk7CisgICAgICAgICAgICBzY2hlZHVs
ZWRUZXN0cy51bnNoaWZ0KFtpLCB0cnVlLCBqLCBmYWxzZSwgdHJ1ZV0pOworICAgICAgICAgICAg
c2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgZmFsc2UsIGosIHRydWUsIHRydWVdKTsKKyAgICAg
ICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBqLCBmYWxzZSwgdHJ1ZV0p
OworICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwgaiwgdHJ1ZSwg
ZmFsc2VdKTsKKyAgICAgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIHRydWUsIGos
IGZhbHNlLCBmYWxzZV0pOworICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwg
ZmFsc2UsIGosIHRydWUsIGZhbHNlXSk7CisgICAgICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNo
aWZ0KFtpLCBmYWxzZSwgaiwgZmFsc2UsIGZhbHNlXSk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBkZWJ1ZygiUnVubmluZyB0ZXN0cy4uLiIpOworICAgIHJ1bk5leHRUZXN0KCk7Cit9CisKK2Z1
bmN0aW9uIHJ1bk5leHRUZXN0KCkKK3sKKyAgICBpZiAoIXNjaGVkdWxlZFRlc3RzLmxlbmd0aCkg
eworICAgICAgICB0ZXN0TnVsbEtleVJhbmdlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICB2YXIgdGVzdCA9IHNjaGVkdWxlZFRlc3RzLnBvcCgpOworICAgIHNlbGYubG93ZXIgPSB0
ZXN0WzBdOworICAgIHNlbGYubG93ZXJJc09wZW4gPSB0ZXN0WzFdOworICAgIHNlbGYudXBwZXIg
PSB0ZXN0WzJdOworICAgIHNlbGYudXBwZXJJc09wZW4gPSB0ZXN0WzNdOworICAgIHNlbGYuYXNj
ZW5kaW5nID0gdGVzdFs0XTsKKworICAgIHN0ciA9ICJOZXh0IHRlc3Q6ICI7CisgICAgaWYgKGxv
d2VyICE9PSBudWxsKSB7CisgICAgICAgIHN0ciArPSAibG93ZXIgIjsKKyAgICAgICAgaWYgKGxv
d2VySXNPcGVuKQorICAgICAgICAgICAgc3RyICs9ICJvcGVuICI7CisgICAgICAgIHN0ciArPSAi
Ym91bmQgaXMgIiArIGxvd2VyICsgIjsgIjsKKyAgICB9CisgICAgaWYgKHVwcGVyICE9PSBudWxs
KSB7CisgICAgICAgIHN0ciArPSAidXBwZXIgIjsKKyAgICAgICAgaWYgKHVwcGVySXNPcGVuKQor
ICAgICAgICAgICAgc3RyICs9ICJvcGVuICI7CisgICAgICAgIHN0ciArPSAiYm91bmQgaXMgIiAr
IHVwcGVyICsgIjsgIjsKKyAgICB9CisgICAgaWYgKGFzY2VuZGluZykKKyAgICAgICAgc3RyICs9
ICJzb3J0ZWQgYXNjZW5kaW5nLiI7CisgICAgZWxzZQorICAgICAgICBzdHIgKz0gInNvcnRlZCBk
ZXNjZW5kaW5nLiI7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoc3RyKTsKKworICAgIGlm
IChhc2NlbmRpbmcpIHsKKyAgICAgICAgaWYgKGxvd2VyICE9PSBudWxsKSB7CisgICAgICAgICAg
ICBpZiAoIWxvd2VySXNPcGVuKQorICAgICAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9
IGxvd2VyOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWRJ
bmRleCA9IGxvd2VyKzE7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgc2VsZi5leHBlY3Rl
ZEluZGV4ID0gMDsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAodXBwZXIgIT09IG51bGwpIHsK
KyAgICAgICAgICAgIGlmICghdXBwZXJJc09wZW4pCisgICAgICAgICAgICAgICAgc2VsZi5leHBl
Y3RlZEluZGV4ID0gdXBwZXI7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc2Vs
Zi5leHBlY3RlZEluZGV4ID0gdXBwZXItMTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBz
ZWxmLmV4cGVjdGVkSW5kZXggPSB0ZXN0RGF0YS5sZW5ndGgtMTsKKyAgICB9CisgICAgdGVzdFdp
dGhpbkJvdW5kcygpOworCisgICAgaWYgKHRlc3REYXRhW2xvd2VyXSA9PT0gdGVzdERhdGFbdXBw
ZXJdICYmIChsb3dlcklzT3BlbiB8fCB1cHBlcklzT3BlbikpIHsKKyAgICAgICAgZGVidWcoIlNr
aXBwaW5nIGlsbGVnYWwga2V5IHJhbmdlLiIpOworICAgICAgICBydW5OZXh0VGVzdCgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgdmFyIGtleVJhbmdlOworICAgIGlmIChsb3dlciAh
PT0gbnVsbCAmJiB1cHBlciAhPT0gbnVsbCkKKyAgICAgICAga2V5UmFuZ2UgPSBJREJLZXlSYW5n
ZS5ib3VuZCh0ZXN0RGF0YVtsb3dlcl0sIHRlc3REYXRhW3VwcGVyXSwgbG93ZXJJc09wZW4sIHVw
cGVySXNPcGVuKTsKKyAgICBlbHNlIGlmIChsb3dlciAhPT0gbnVsbCkKKyAgICAgICAga2V5UmFu
Z2UgPSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKHRlc3REYXRhW2xvd2VyXSwgbG93ZXJJc09wZW4p
OworICAgIGVsc2UKKyAgICAgICAga2V5UmFuZ2UgPSBJREJLZXlSYW5nZS51cHBlckJvdW5kKHRl
c3REYXRhW3VwcGVyXSwgdXBwZXJJc09wZW4pOworCisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RT
dG9yZS5vcGVuQ3Vyc29yKGtleVJhbmdlLCBhc2NlbmRpbmcgPyBJREJDdXJzb3IuTkVYVCA6IElE
QkN1cnNvci5QUkVWKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvckl0ZXJhdGlvbjsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gdGVzdFdpdGhpbkJvdW5kcygpCit7CisgICAgaWYgKGV4cGVjdGVkSW5kZXggPCAwIHx8
IHRlc3REYXRhLmxlbmd0aCA8PSBleHBlY3RlZEluZGV4KQorICAgICAgICBzZWxmLmV4cGVjdGVk
SW5kZXggPSBudWxsOworICAgIGlmIChsb3dlciAhPT0gbnVsbCAmJiBleHBlY3RlZEluZGV4IDwg
bG93ZXIpCisgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IG51bGw7CisgICAgaWYgKHVwcGVy
ICE9PSBudWxsICYmIHVwcGVyIDwgZXhwZWN0ZWRJbmRleCkKKyAgICAgICAgc2VsZi5leHBlY3Rl
ZEluZGV4ID0gbnVsbDsKKyAgICBpZiAobG93ZXIgIT09IG51bGwgJiYgbG93ZXJJc09wZW4gJiYg
ZXhwZWN0ZWRJbmRleCA8PSBsb3dlcikKKyAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gbnVs
bDsKKyAgICBpZiAodXBwZXIgIT09IG51bGwgJiYgdXBwZXJJc09wZW4gJiYgdXBwZXIgPD0gZXhw
ZWN0ZWRJbmRleCkKKyAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gbnVsbDsKK30KKworZnVu
Y3Rpb24gY3Vyc29ySXRlcmF0aW9uKCkKK3sKKyAgICBpZiAoZXhwZWN0ZWRJbmRleCA9PT0gbnVs
bCkgeworICAgICAgICBzaG91bGRCZU51bGwoImV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICAg
ICAgcnVuTmV4dFRlc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoZXZlbnQu
dGFyZ2V0LnJlc3VsdCA9PT0gbnVsbCkgeworICAgICAgICB0ZXN0RmFpbGVkKCJldmVudC50YXJn
ZXQucmVzdWx0IHNob3VsZCBub3QgYmUgbnVsbC4iKTsKKyAgICAgICAgcnVuTmV4dFRlc3QoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVz
dWx0LmtleSIsICJ0ZXN0RGF0YVsiICsgZXhwZWN0ZWRJbmRleCArICJdIik7CisgICAgc2VsZi5l
eHBlY3RlZEluZGV4ID0gYXNjZW5kaW5nID8gZXhwZWN0ZWRJbmRleCsxIDogZXhwZWN0ZWRJbmRl
eC0xOworICAgIHRlc3RXaXRoaW5Cb3VuZHMoKTsKKworICAgIGV2ZW50LnRhcmdldC5yZXN1bHQu
Y29udGludWUoKTsKK30KKworc2VsZi5udWxsS2V5UmFuZ2VTdGVwID0gMDsKK2Z1bmN0aW9uIHRl
c3ROdWxsS2V5UmFuZ2UoKQoreworICAgIHNlbGYubG93ZXIgPSAwOworICAgIHNlbGYubG93ZXJJ
c09wZW4gPSBmYWxzZTsKKyAgICBzZWxmLnVwcGVyID0gdGVzdERhdGEubGVuZ3RoLTE7CisgICAg
c2VsZi51cHBlcklzT3BlbiA9IGZhbHNlOworCisgICAgc3RyID0gIk5leHQgdGVzdDogbnVsbCBr
ZXkgcGF0aCAiOworICAgIGlmIChzZWxmLm51bGxLZXlSYW5nZVN0ZXAgPT0gMCkgeworICAgICAg
ICBzdHIgKz0gInNvcnRlZCBhc2NlbmRpbmcuIjsKKyAgICAgICAgc2VsZi5hc2NlbmRpbmcgPSB0
cnVlOworICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSBsb3dlcjsKKyAgICAgICAgc2VsZi5u
dWxsS2V5UmFuZ2VTdGVwID0gMTsKKyAgICB9IGVsc2UgaWYgKHNlbGYubnVsbEtleVJhbmdlU3Rl
cCA9PSAxKSB7CisgICAgICAgIHN0ciArPSAic29ydGVkIGRlc2NlbmRpbmcuIjsKKyAgICAgICAg
c2VsZi5hc2NlbmRpbmcgPSBmYWxzZTsKKyAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gdXBw
ZXI7CisgICAgICAgIHNlbGYubnVsbEtleVJhbmdlU3RlcCA9IDI7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoc3RyKTsKKworICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
b3BlbkN1cnNvcihudWxsLCBhc2NlbmRpbmcgPyBJREJDdXJzb3IuTkVYVCA6IElEQkN1cnNvci5Q
UkVWKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvckl0ZXJhdGlvbjsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworcmVtb3ZlVmVuZG9y
UHJlZml4ZXMoKTsKK29wZW5EYXRhYmFzZSgpOyAvLyBUaGUgZmlyc3Qgc3RlcC4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vYmplY3RzdG9yZS1y
ZW1vdmVvYmplY3RzdG9yZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9vYmplY3RzdG9yZS1yZW1vdmVvYmplY3RzdG9yZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Mzk4NDc1
MDE2YmQxMTVhOWYzZWYyMzBhMGNiYjgzY2MyZDIwYzFkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3JlLXJlbW92ZW9i
amVjdHN0b3JlLmpzCkBAIC0wLDAgKzEsOTcgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsK
KyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlv
bigiVGVzdCBJbmRleGVkREIncyB3ZWJraXRJREJPYmplY3RTdG9yZS5kZWxldGVPYmplY3RTdG9y
ZSgpLiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygp
OworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbignb2JqZWN0c3RvcmUt
cmVtb3Zlb2JqZWN0c3RvcmUnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc3RhcnRTZXRW
ZXJzaW9uOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBzdGFydFNldFZlcnNpb24oKQoreworICAgIGRiID0gZXZhbEFuZExvZygi
ZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
ZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZGVsZXRlRXhpc3Rpbmc7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKK3sKKyAgICBzZWxmLnRyYW5z
ID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxk
QmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRi
KTsKKworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9y
ZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKKworICAgIHNlbGYuaW5kZXggPSBldmFsQW5kTG9nKCJz
dG9yZS5jcmVhdGVJbmRleCgnaW5kZXhOYW1lJywgJycpIik7CisgICAgc2hvdWxkQmVUcnVlKCJz
dG9yZS5pbmRleE5hbWVzLmNvbnRhaW5zKCdpbmRleE5hbWUnKSIpOworCisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInN0b3JlLmFkZCgndmFsdWUnLCAna2V5JykiKTsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0g
Z2V0VmFsdWU7Cit9CisKK2Z1bmN0aW9uIGdldFZhbHVlKCkKK3sKKyAgICB0cmFuc2FjdGlvbiA9
IGV2YWxBbmRMb2coImRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10pIik7CisgICAgdHJhbnNh
Y3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHZhciBzdG9yZSA9
IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScp
Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuZ2V0KCdrZXknKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gYWRkSW5kZXg7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGFkZEluZGV4KCkKK3sKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAidmFsdWUiKTsKKwor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVPYmplY3RTdG9yZTsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVsZXRl
T2JqZWN0U3RvcmUoKQoreworICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7
CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworCisgICAgZXZh
bEFuZExvZygiZGIuZGVsZXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgY3JlYXRl
T2JqZWN0U3RvcmVBZ2FpbigpOworfQorCitmdW5jdGlvbiBjcmVhdGVPYmplY3RTdG9yZUFnYWlu
KCkKK3sKKyAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywg
bnVsbCkiKTsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gZ2V0VmFsdWVBZ2FpbjsKK30KKworZnVu
Y3Rpb24gZ2V0VmFsdWVBZ2FpbigpCit7CisgICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJk
Yi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddKSIpOworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQg
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJz
dG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworCisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmdldCgna2V5JykiKTsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IHZlcmlmeU5vdEZvdW5kOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiB2ZXJpZnlOb3RGb3VuZCgpCit7CisgICAgc2hv
dWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAidW5kZWZpbmVkIik7CisgICAgc2hvdWxkQmVG
YWxzZSgiZXZlbnQudGFyZ2V0LnNvdXJjZS5pbmRleE5hbWVzLmNvbnRhaW5zKCdpbmRleE5hbWUn
KSIpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvb2RkLXN0cmluZ3MuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvb2RkLXN0cmluZ3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDMxYzUwZWZmYmJmYWUyYjY0N2M2
ZTQxN2UyMzk1YWRkMjQ5ZTI0OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vZGQtc3RyaW5ncy5qcwpAQCAtMCwwICsxLDEwMSBAQAor
aWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hh
cmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBvZGQgdmFsdWUgZGF0
YXR5cGVzIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVz
KCk7CisKKyAgICB0ZXN0RGF0YSA9IFt7IGRlc2NyaXB0aW9uOiAnbnVsbCcsICAgICAgICAgICAg
ICAgbmFtZTogJ1x1MDAwMCcgfSwKKyAgICAgICAgICAgICAgICB7IGRlc2NyaXB0aW9uOiAnZmFp
aHUnLCAgICAgICAgICAgICAgbmFtZTogJ1x1ZDgwMFx1ZGY0NicgfSwKKyAgICAgICAgICAgICAg
ICB7IGRlc2NyaXB0aW9uOiAndW5wYWlyZWQgc3Vycm9nYXRlJywgbmFtZTogJ1x1ZDgwMCcgfSwK
KyAgICAgICAgICAgICAgICB7IGRlc2NyaXB0aW9uOiAnZmZmZScsICAgICAgICAgICAgICAgbmFt
ZTogJ1x1ZmZmZScgfSwKKyAgICAgICAgICAgICAgICB7IGRlc2NyaXB0aW9uOiAnZmZmZicsICAg
ICAgICAgICAgICAgbmFtZTogJ1x1ZmZmZicgfSwKKyAgICAgICAgICAgICAgICB7IGRlc2NyaXB0
aW9uOiAnbGluZSBzZXBhcmF0b3InLCAgICAgbmFtZTogJ1x1MjAyOCcgfQorICAgIF07CisgICAg
bmV4dFRvT3BlbiA9IDA7CisgICAgb3Blbk5leHREYXRhYmFzZSgpOworfQorCitmdW5jdGlvbiBv
cGVuTmV4dERhdGFiYXNlKCkKK3sKKyAgICBkZWJ1Zygib3BlbmluZyBhIGRhdGFiYXNlIG5hbWVk
ICIgKyB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5kZXNjcmlwdGlvbik7CisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKHRlc3REYXRhW25leHRUb09wZW5dLm5hbWUsIHRlc3RE
YXRhW25leHRUb09wZW5dLmRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nl
c3M7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2co
ImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBh
ZGRBS2V5OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBhZGRBS2V5KCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIp
OworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKHRlc3REYXRhW25leHRUb09wZW5dLm5hbWUpOyIpOworICAgIGtleSA9IGV2
YWxBbmRMb2coImtleSA9IHRlc3REYXRhW25leHRUb09wZW5dLm5hbWUiKTsKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChrZXksIGtleSk7Iik7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbG9zZURhdGFiYXNlOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbG9zZURhdGFiYXNl
KCkKK3sKKyAgICBldmFsQW5kTG9nKCJkYi5jbG9zZSgpIik7CisgICAgZGVidWcoIiIpOworICAg
IGlmICgrK25leHRUb09wZW4gPCB0ZXN0RGF0YS5sZW5ndGgpIHsKKyAgICAgICAgb3Blbk5leHRE
YXRhYmFzZSgpOworICAgIH0gZWxzZSB7CisgICAgICAgIG5leHRUb09wZW4gPSAwOworICAgICAg
ICB2ZXJpZnlOZXh0RGF0YWJhc2UoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHZlcmlmeU5leHRE
YXRhYmFzZSgpCit7CisgICAgZGVidWcoInJlb3BlbmluZyBhIGRhdGFiYXNlIG5hbWVkICIgKyB0
ZXN0RGF0YVtuZXh0VG9PcGVuXS5kZXNjcmlwdGlvbik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImluZGV4ZWREQi5vcGVuKHRlc3REYXRhW25leHRUb09wZW5dLm5hbWUsIHRlc3REYXRhW25l
eHRUb09wZW5dLmRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3MyOwor
fQorCitmdW5jdGlvbiBvcGVuU3VjY2VzczIoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVl
c3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldEFLZXk7Cit9CisK
K2Z1bmN0aW9uIGdldEFLZXkoKQoreworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBl
dmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKHRlc3REYXRhW25leHRUb09wZW5dLm5hbWUpOyIp
OworICAgIGtleSA9IGV2YWxBbmRMb2coImtleSA9IHRlc3REYXRhW25leHRUb09wZW5dLm5hbWUi
KTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5D
dXJzb3IoKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5DdXJzb3JTdWNjZXNzOworfQorCitmdW5j
dGlvbiBvcGVuQ3Vyc29yU3VjY2VzcygpCit7CisgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vy
c29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIs
ICJ0ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1lIik7CisgICAgc2hvdWxkQmUoImN1cnNvci52YWx1
ZSIsICJ0ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1lIik7CisgICAgaWYgKCsrbmV4dFRvT3BlbiA8
IHRlc3REYXRhLmxlbmd0aCkgeworICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgIHZlcmlmeU5l
eHREYXRhYmFzZSgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
IH0KK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuLWNsb3NlLXZlcnNp
b24uanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Blbi1jbG9z
ZS12ZXJzaW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyM2UxZDhiOTI5NTJmODJmODVkNTlkYTJhMzI1ZTAx
YTExMTMzM2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvb3Blbi1jbG9zZS12ZXJzaW9uLmpzCkBAIC0wLDAgKzEsMjgzIEBACitpZiAo
dGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQu
anMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgaW50ZXJsZWF2ZWQgb3Blbi9jbG9zZS9zZXRW
ZXJzaW9uIGNhbGxzIGluIHZhcmlvdXMgcGVybXV0YXRpb25zIik7CisKK2Z1bmN0aW9uIENvbm5l
Y3Rpb24oaWQpIHsKKyAgICBpZCA9IFN0cmluZyhpZCk7CisgICAgdmFyIHRoYXQgPSB0aGlzOwor
ICAgIHRoaXMub3BlbiA9IGZ1bmN0aW9uKG9wdHMpIHsKKyAgICAgICAgc2VsZi5zdGVwcy5wdXNo
KGV2YWxBbmRMb2coIiciICsgaWQgKyAiLm9wZW4nIikpOworICAgICAgICB2YXIgcmVxID0gaW5k
ZXhlZERCLm9wZW4oc2VsZi5kYm5hbWUpOworICAgICAgICByZXEub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsK
KyAgICAgICAgICAgIHRoYXQuaGFuZGxlID0gZS50YXJnZXQucmVzdWx0OworICAgICAgICAgICAg
c2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLm9wZW4ub25zdWNjZXNzJyIp
KTsKKyAgICAgICAgICAgIHRoYXQuaGFuZGxlLm9udmVyc2lvbmNoYW5nZSA9IGZ1bmN0aW9uKGUp
IHsKKyAgICAgICAgICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCAr
ICIub252ZXJzaW9uY2hhbmdlJyIpKTsKKyAgICAgICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRz
Lm9udmVyc2lvbikgeyBvcHRzLm9udmVyc2lvbi5jYWxsKHRoYXQpOyB9CisgICAgICAgICAgICB9
OworICAgICAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5vbnN1Y2Nlc3MpIHsgb3B0cy5vbnN1Y2Nl
c3MuY2FsbCh0aGF0KTsgfQorICAgICAgICB9OworICAgIH07CisKKyAgICB0aGlzLmNsb3NlID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlk
ICsgIi5jbG9zZSciKSk7CisgICAgICAgIHRoaXMuaGFuZGxlLmNsb3NlKCk7CisgICAgfTsKKwor
ICAgIHRoaXMuc2V0VmVyc2lvbiA9IGZ1bmN0aW9uKG9wdHMpIHsKKyAgICAgICAgc2VsZi5zdGVw
cy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLnNldFZlcnNpb24nIikpOworICAgICAgICB2
YXIgcmVxID0gdGhpcy5oYW5kbGUuc2V0VmVyc2lvbihTdHJpbmcoc2VsZi52ZXIrKykpOworICAg
ICAgICByZXEub25hYm9ydCA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgICAgICBzZWxmLnN0ZXBz
LnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIuc2V0VmVyc2lvbi5vbmFib3J0JyIpKTsKKyAg
ICAgICAgICAgIGlmIChvcHRzICYmIG9wdHMub25hYm9ydCkgeyBvcHRzLm9uYWJvcnQuY2FsbCh0
aGF0KTsgfQorICAgICAgICB9OworICAgICAgICByZXEub25ibG9ja2VkID0gZnVuY3Rpb24gKGUp
IHsKKyAgICAgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5z
ZXRWZXJzaW9uLm9uYmxvY2tlZCciKSk7CisgICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9u
YmxvY2tlZCkgeyBvcHRzLm9uYmxvY2tlZC5jYWxsKHRoYXQpOyB9CisgICAgICAgIH07CisgICAg
ICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZSkgeworICAgICAgICAgICAgc2VsZi5zdGVw
cy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLnNldFZlcnNpb24ub25zdWNjZXNzJyIpKTsK
KyAgICAgICAgICAgIGlmICh0aGF0LmhhbmRsZS5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCJ0
ZXN0LXN0b3JlIiArIHNlbGYudmVyKSkgeworICAgICAgICAgICAgICAgIHRoYXQuaGFuZGxlLmRl
bGV0ZU9iamVjdFN0b3JlKCJ0ZXN0LXN0b3JlIiArIHNlbGYudmVyKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHZhciBzdG9yZSA9IHRoYXQuaGFuZGxlLmNyZWF0ZU9iamVjdFN0b3JlKCJ0
ZXN0LXN0b3JlIiArIHNlbGYudmVyKTsKKyAgICAgICAgICAgIHZhciBjb3VudCA9IDA7CisgICAg
ICAgICAgICBkb19hc3luY19wdXRzKCk7IC8vIEtlZXAgdGhpcyB0cmFuc2FjdGlvbiBydW5uaW5n
IGZvciBhIHdoaWxlCisgICAgICAgICAgICBmdW5jdGlvbiBkb19hc3luY19wdXRzKCkgeworICAg
ICAgICAgICAgICAgIHZhciByZXEgPSBzdG9yZS5wdXQoY291bnQsIGNvdW50KTsKKyAgICAgICAg
ICAgICAgICByZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICAg
ICAgICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZSkgeworICAgICAgICAgICAgICAgICAg
ICBpZiAoKytjb3VudCA8IDEwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBkb19hc3luY19w
dXRzKCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIuc2V0VmVyc2lvbi50
cmFuc2FjdGlvbi1jb21wbGV0ZSciKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0
cyAmJiBvcHRzLm9uc3VjY2VzcykgeyBvcHRzLm9uc3VjY2Vzcy5jYWxsKHRoYXQpOyB9CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgfQorICAg
ICAgICB9OworICAgICAgICByZXEub25lcnJvciA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgICAg
ICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIuc2V0VmVyc2lvbi5vbmVy
cm9yJyIpKTsKKyAgICAgICAgICAgIGlmIChvcHRzICYmIG9wdHMub25lcnJvcikgeyBvcHRzLm9u
ZXJyb3IuY2FsbCh0aGF0KTsgfQorICAgICAgICB9OworICAgIH07Cit9CisKKy8vIHJ1biBhIHNl
cmllcyBvZiBzdGVwcyB0aGF0IHRha2UgYSBjb250aW51YXRpb24gZnVuY3Rpb24KK2Z1bmN0aW9u
IHJ1blN0ZXBzKGNvbW1hbmRzKSB7CisgICAgaWYgKGNvbW1hbmRzLmxlbmd0aCkgeworICAgICAg
ICB2YXIgY29tbWFuZCA9IGNvbW1hbmRzLnNoaWZ0KCk7CisgICAgICAgIGNvbW1hbmQoZnVuY3Rp
b24oKSB7IHJ1blN0ZXBzKGNvbW1hbmRzKTsgfSk7CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0
KCkgeworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgdGVzdDEoKTsKK30KKworZnVu
Y3Rpb24gdGVzdDEoKSB7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJURVNUOiBzZXRWZXJz
aW9uIGJsb2NrZWQgb24gb3BlbiBoYW5kbGVzIik7CisgICAgZXZhbEFuZExvZygic2VsZi5kYm5h
bWUgPSAndGVzdDEnOyBzZWxmLnZlciA9IDE7IHNlbGYuc3RlcHMgPSBbXSIpOworICAgIHZhciBo
MSA9IG5ldyBDb25uZWN0aW9uKCJoMSIpOworICAgIHZhciBoMiA9IG5ldyBDb25uZWN0aW9uKCJo
MiIpOworICAgIHJ1blN0ZXBzKFtmdW5jdGlvbihkb05leHQpIHsgaDEub3Blbih7b25zdWNjZXNz
OiBkb05leHR9KTsgfSwKKyAgICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBoMi5vcGVuKHtvbnN1
Y2Nlc3M6IGRvTmV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb252ZXJzaW9u
OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVn
KCIgICAgaDIgY2xvc2luZywgYnV0IG5vdCBpbW1lZGlhdGVseSIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgaDIuY2xvc2UoKTsg
fSwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19KTsgfSwKKyAgICAgICAg
IGZ1bmN0aW9uKGRvTmV4dCkgeyBoMS5zZXRWZXJzaW9uKHtvbnN1Y2Nlc3M6IGZpbmlzaFRlc3R9
KTsgfSwKKyAgICAgICAgIF0pOworICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygic2VsZi5zdGVwcy50b1N0cmluZygpIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFsiaDEub3BlbiIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImgxLm9wZW4ub25zdWNjZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiaDIub3BlbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLm9wZW4u
b25zdWNjZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lv
biIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLm9udmVyc2lvbmNoYW5nZSIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24ub25ibG9ja2Vk
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIuY2xvc2UiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLm9uc3VjY2VzcyIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24udHJhbnNhY3Rpb24tY29tcGxl
dGUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS50b1N0cmluZygpKTsKKyAgICAg
ICAgdGVzdDIoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3QyKCkgeworICAgIGRlYnVnKCIi
KTsKKyAgICBkZWJ1ZygiVEVTVDogc2V0VmVyc2lvbiBub3QgYmxvY2tlZCBpZiBoYW5kbGUgY2xv
c2VkIGltbWVkaWF0ZWx5Iik7CisgICAgZXZhbEFuZExvZygic2VsZi5kYm5hbWUgPSAndGVzdDIn
OyBzZWxmLnZlciA9IDE7IHNlbGYuc3RlcHMgPSBbXSIpOworICAgIHZhciBoMSA9IG5ldyBDb25u
ZWN0aW9uKCJoMSIpOworICAgIHZhciBoMiA9IG5ldyBDb25uZWN0aW9uKCJoMiIpOworICAgIHJ1
blN0ZXBzKFtmdW5jdGlvbihkb05leHQpIHsgaDEub3Blbih7b25zdWNjZXNzOiBkb05leHR9KTsg
fSwKKyAgICAgICAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGgyLm9wZW4oe29uc3VjY2Vzczog
ZG9OZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb252ZXJz
aW9uOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZWJ1ZygiICAgIGgyIGNsb3NpbmcgaW1tZWRpYXRlbHkiKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoMi5jbG9zZSgpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0pOyB9LAorICAgICAgICAgICAgICBm
dW5jdGlvbihkb05leHQpIHsgaDEuc2V0VmVyc2lvbih7b25zdWNjZXNzOiBkb05leHR9KTsgfSwK
KyAgICAgICAgICAgICAgZmluaXNoVGVzdAorICAgICAgICAgICAgICBdKTsKKworICAgIGZ1bmN0
aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgICAgIGRlYnVnKCJOT1RFOiBXaWxsIEZBSUwgd2l0aCBl
eHRyYSBib2d1cyBoMS5zZXRWZXJzaW9uLm9uYmxvY2tlZCBzdGVwOyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzExMzAiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJzZWxmLnN0ZXBzLnRvU3RyaW5nKCkiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgWyJoMS5vcGVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEub3Bl
bi5vbnN1Y2Nlc3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5vcGVuIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIub3Blbi5vbnN1Y2Nlc3MiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiaDIub252ZXJzaW9uY2hhbmdlIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiaDIuY2xvc2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJoMS5zZXRWZXJzaW9uLm9uc3VjY2VzcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImgxLnNldFZlcnNpb24udHJhbnNhY3Rpb24tY29tcGxldGUiCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXS50b1N0cmluZygpKTsKKyAgICAgICAgdGVzdDMoKTsKKyAgICB9
Cit9CisKK2Z1bmN0aW9uIHRlc3QzKCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVEVT
VDogb3BlbiBhbmQgc2V0VmVyc2lvbiBibG9ja2VkIGlmIGEgVkVSU0lPTl9DSEFOR0UgdHJhbnNh
Y3Rpb24gaXMgcnVubmluZyAtIGNsb3NlIHdoZW4gYmxvY2tlZCIpOworICAgIGV2YWxBbmRMb2co
InNlbGYuZGJuYW1lID0gJ3Rlc3QzJzsgc2VsZi52ZXIgPSAxOyBzZWxmLnN0ZXBzID0gW10iKTsK
KyAgICB2YXIgaDEgPSBuZXcgQ29ubmVjdGlvbigiaDEiKTsKKyAgICB2YXIgaDIgPSBuZXcgQ29u
bmVjdGlvbigiaDIiKTsKKyAgICB2YXIgaDMgPSBuZXcgQ29ubmVjdGlvbigiaDMiKTsKKyAgICBy
dW5TdGVwcyhbZnVuY3Rpb24oZG9OZXh0KSB7IGgxLm9wZW4oe29uc3VjY2VzczogZG9OZXh0fSk7
IH0sCisgICAgICAgICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBoMi5vcGVuKHtvbnN1Y2Nlc3M6
IGRvTmV4dH0pOyB9LAorICAgICAgICAgICAgICBmdW5jdGlvbihkb05leHQpIHsgaDEuc2V0VmVy
c2lvbigpOyBkb05leHQoKTsgfSwKKyAgICAgICAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGgy
LnNldFZlcnNpb24oeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb25ibG9ja2VkOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiICAgIGgyIGJsb2NrZWQgc28g
Y2xvc2luZyIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGgyLmNsb3NlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZG9OZXh0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9fSk7IH0sCisgICAgICAgICAgICAgIGZ1bmN0aW9u
KCkgeyBoMy5vcGVuKHtvbnN1Y2Nlc3M6IGZpbmlzaFRlc3R9KTt9CisgICAgICAgICAgICAgIF0p
OworCisgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJzZWxmLnN0ZXBzLnRvU3RyaW5nKCkiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgWyJoMS5vcGVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEub3Bl
bi5vbnN1Y2Nlc3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5vcGVuIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIub3Blbi5vbnN1Y2Nlc3MiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiaDIuc2V0VmVyc2lvbiIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImgyLm9udmVyc2lvbmNoYW5nZSIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImgxLnNldFZlcnNpb24ub25ibG9ja2VkIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiaDEub252ZXJzaW9uY2hhbmdlIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiaDIuc2V0VmVyc2lvbi5vbmJsb2NrZWQiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJoMi5jbG9zZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgz
Lm9wZW4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5zZXRWZXJzaW9uLm9u
ZXJyb3IiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLm9u
c3VjY2VzcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24u
dHJhbnNhY3Rpb24tY29tcGxldGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJo
My5vcGVuLm9uc3VjY2VzcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnRvU3Ry
aW5nKCkpOworICAgICAgICB0ZXN0NCgpOworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdDQoKSB7
CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJURVNUOiBvcGVuIGFuZCBzZXRWZXJzaW9uIGJs
b2NrZWQgaWYgYSBWRVJTSU9OX0NIQU5HRSB0cmFuc2FjdGlvbiBpcyBydW5uaW5nIC0ganVzdCBj
bG9zZSIpOworICAgIGV2YWxBbmRMb2coInNlbGYuZGJuYW1lID0gJ3Rlc3Q0Jzsgc2VsZi52ZXIg
PSAxOyBzZWxmLnN0ZXBzID0gW10iKTsKKyAgICB2YXIgaDEgPSBuZXcgQ29ubmVjdGlvbigiaDEi
KTsKKyAgICB2YXIgaDIgPSBuZXcgQ29ubmVjdGlvbigiaDIiKTsKKyAgICB2YXIgaDMgPSBuZXcg
Q29ubmVjdGlvbigiaDMiKTsKKyAgICBydW5TdGVwcyhbZnVuY3Rpb24oZG9OZXh0KSB7IGgxLm9w
ZW4oe29uc3VjY2VzczogZG9OZXh0fSk7IH0sCisgICAgICAgICAgICAgIGZ1bmN0aW9uKGRvTmV4
dCkgeyBoMi5vcGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dH0pOyB9LAorICAgICAgICAgICAgICBmdW5j
dGlvbihkb05leHQpIHsgaDEuc2V0VmVyc2lvbigpOyBkb05leHQoKTsgfSwKKyAgICAgICAgICAg
ICAgZnVuY3Rpb24oZG9OZXh0KSB7IGgzLm9wZW4oe29uc3VjY2VzczogZmluaXNoVGVzdH0pOyBk
b05leHQoKTsgfSwKKyAgICAgICAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGgyLmNsb3NlKCk7
IH0sCisgICAgICAgICAgICAgIF0pOworCisgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAg
ICAgICAgZGVidWcoIk5PVEU6IFdpbGwgRkFJTCB3aXRoIGV4dHJhIGJvZ3VzIGgxLnNldFZlcnNp
b24ub25ibG9ja2VkIHN0ZXA7IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MTEzMCIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNlbGYuc3RlcHMudG9T
dHJpbmcoKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImgxLm9wZW4iLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5vcGVuLm9uc3VjY2VzcyIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImgyLm9wZW4iLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJoMi5vcGVuLm9uc3VjY2VzcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImgxLnNldFZlcnNpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJo
My5vcGVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIuY2xvc2UiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLm9uc3VjY2VzcyIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24udHJhbnNhY3Rpb24t
Y29tcGxldGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMy5vcGVuLm9uc3Vj
Y2VzcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnRvU3RyaW5nKCkpOworICAg
ICAgICB0ZXN0NSgpOworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdDUoKSB7CisgICAgZGVidWco
IiIpOworICAgIGRlYnVnKCJURVNUOiBvcGVuIGJsb2NrZWQgaWYgYSBWRVJTSU9OX0NIQU5HRSB0
cmFuc2FjdGlvbiBpcyBydW5uaW5nIik7CisgICAgZXZhbEFuZExvZygic2VsZi5kYm5hbWUgPSAn
dGVzdDUnOyBzZWxmLnZlciA9IDE7IHNlbGYuc3RlcHMgPSBbXSIpOworICAgIHZhciBoMSA9IG5l
dyBDb25uZWN0aW9uKCJoMSIpOworICAgIHZhciBoMiA9IG5ldyBDb25uZWN0aW9uKCJoMiIpOwor
CisgICAgcnVuU3RlcHMoW2Z1bmN0aW9uKGRvTmV4dCkgeyBoMS5vcGVuKHtvbnN1Y2Nlc3M6IGRv
TmV4dH0pOyB9LAorICAgICAgICAgICAgICBmdW5jdGlvbihkb05leHQpIHsgaDEuc2V0VmVyc2lv
bigpOyBkb05leHQoKTsgfSwKKyAgICAgICAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGgyLm9w
ZW4oe29uc3VjY2VzczogZmluaXNoVGVzdH0pOyB9CisgICAgICAgICAgICAgIF0pOworCisgICAg
ZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJz
ZWxmLnN0ZXBzLnRvU3RyaW5nKCkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJo
MS5vcGVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEub3Blbi5vbnN1Y2Nl
c3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIub3BlbiIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24ub25zdWNjZXNzIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbi50cmFuc2FjdGlvbi1jb21wbGV0ZSIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLm9wZW4ub25zdWNjZXNzIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF0udG9TdHJpbmcoKSk7CisgICAgICAgIHRlc3Q2KCk7
CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0NigpIHsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVi
dWcoIlRFU1Q6IHR3byBzZXRWZXJzaW9ucyBmcm9tIHRoZSBzYW1lIGNvbm5lY3Rpb24iKTsKKyAg
ICBldmFsQW5kTG9nKCJzZWxmLmRibmFtZSA9ICd0ZXN0Nic7IHNlbGYudmVyID0gMTsgc2VsZi5z
dGVwcyA9IFtdIik7CisgICAgdmFyIGgxID0gbmV3IENvbm5lY3Rpb24oImgxIik7CisKKyAgICBy
dW5TdGVwcyhbZnVuY3Rpb24oZG9OZXh0KSB7IGgxLm9wZW4oe29uc3VjY2VzczogZG9OZXh0fSk7
IH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBmdW5j
dGlvbihkb05leHQpIHsgaDEuc2V0VmVyc2lvbih7b25zdWNjZXNzOiBoYWxmRG9uZX0pOyAKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGgxLnNldFZlcnNpb24oe29uc3VjY2Vzczog
aGFsZkRvbmV9KTsgfQorICAgICAgICAgICAgICBdKTsKKworICAgIHZhciBjb3VudGVyID0gMDsK
KyAgICBmdW5jdGlvbiBoYWxmRG9uZSgpIHsKKyAgICAgICAgY291bnRlcisrOworICAgICAgICBp
ZiAoY291bnRlciA8IDIpIHsKKyAgICAgICAgICAgIGRlYnVnKCdoYWxmIGRvbmUnKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgfQorICAgIH0g
IAorCisgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJzZWxmLnN0ZXBzLnRvU3RyaW5nKCkiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgWyJoMS5vcGVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEub3Bl
bi5vbnN1Y2Nlc3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJz
aW9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbiIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24ub25zdWNjZXNzIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbi50cmFuc2FjdGlv
bi1jb21wbGV0ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNp
b24ub25zdWNjZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVy
c2lvbi50cmFuc2FjdGlvbi1jb21wbGV0ZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBdLnRvU3RyaW5nKCkpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9Cit9CisKK3Rl
c3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Blbi1jdXJzb3IuanMgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Blbi1jdXJzb3IuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OWY5ZGMzYjZiNzk1YmYwZWQ5ZTkzNjRmN2FiZjg4Y2QwZTZjYjg3YwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuLWN1cnNvci5q
cwpAQCAtMCwwICsxLDg0IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0
U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAg
ICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5k
ZXhlZERCJ3Mgb3BlbkN1cnNvci4iKTsKKworZnVuY3Rpb24gZW1wdHlDdXJzb3JTdWNjZXNzKCkK
K3sKKyAgICBkZWJ1ZygiRW1wdHkgY3Vyc29yIG9wZW5lZCBzdWNjZXNzZnVsbHkuIikKKyAgICAv
LyBGSVhNRTogY2hlY2sgdGhhdCB3ZSBjYW4gaXRlcmF0ZSB0aGUgY3Vyc29yLgorICAgIGZpbmlz
aEpTVGVzdCgpOworfQorCitmdW5jdGlvbiBvcGVuRW1wdHlDdXJzb3IoKQoreworICAgIGRlYnVn
KCJPcGVuaW5nIGFuIGVtcHR5IGN1cnNvci4iKTsKKyAgICBrZXlSYW5nZSA9IElEQktleVJhbmdl
Lmxvd2VyQm91bmQoIkluZXhpc3RlbnRLZXkiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
b2JqZWN0U3RvcmUub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGVtcHR5Q3Vyc29yU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY3Vyc29yU3VjY2VzcygpCit7CisgICAgZGVi
dWcoIkN1cnNvciBvcGVuZWQgc3VjY2Vzc2Z1bGx5LiIpCisgICAgLy8gRklYTUU6IGNoZWNrIHRo
YXQgd2UgY2FuIGl0ZXJhdGUgdGhlIGN1cnNvci4KKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0
LnJlc3VsdC5kaXJlY3Rpb24iLCAiMCIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVz
dWx0LmtleSIsICInbXlLZXknIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQu
dmFsdWUiLCAiJ215VmFsdWUnIik7CisgICAgZGVidWcoIiIpOworICAgIHRyeSB7CisgICAgICAg
IGRlYnVnKCJQYXNzaW5nIGFuIGludmFsaWQga2V5IGludG8gLmNvbnRpbnVlKHt9KS4iKTsKKyAg
ICAgICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSh7fSk7CisgICAgICAgIHRlc3RGYWls
ZWQoIk5vIGV4Y2VwdGlvbiB0aHJvd24iKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIHRl
c3RQYXNzZWQoIkNhdWdodCBleGNlcHRpb246ICIgKyBlLnRvU3RyaW5nKCkpOworICAgIH0KKyAg
ICBkZWJ1ZygiIik7CisgICAgb3BlbkVtcHR5Q3Vyc29yKCk7Cit9CisKK2Z1bmN0aW9uIG9wZW5D
dXJzb3IoKQoreworICAgIGRlYnVnKCJPcGVuaW5nIGN1cnNvciIpOworICAgIGtleVJhbmdlID0g
SURCS2V5UmFuZ2UubG93ZXJCb3VuZCgibXlLZXkiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiZXZlbnQudGFyZ2V0LnNvdXJjZS5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gY3Vyc29yU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQor
eworICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOworICAgIHNlbGYudHJhbnMgPSBl
dmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRy
dWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9y
dENhbGxiYWNrOworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIHZhciBv
YmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ3Rlc3QnKSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQo
J215VmFsdWUnLCAnbXlLZXknKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbkN1cnNv
cjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKwor
ZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIHZhciBkYiA9IGV2YWxBbmRMb2coImRiID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNl
dFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZl
cnNpb25TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygp
OworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbignb3Blbi1jdXJzb3In
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvb3Blbi1kdXJpbmctdHJhbnNhY3Rpb24uanMgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Blbi1kdXJpbmctdHJhbnNhY3Rpb24uanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNTNjMTlkN2Q5ZjA0YWIxMzY0NTBiNzMxMjZlYjcwMGUyMzNiNTAyNwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVu
LWR1cmluZy10cmFuc2FjdGlvbi5qcwpAQCAtMCwwICsxLDc3IEBACitpZiAodGhpcy5pbXBvcnRT
Y3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKwor
ZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIG9wZW5pbmcgZGF0YWJhc2UgY29ubmVjdGlvbnMg
ZHVyaW5nIHRyYW5zYWN0aW9ucyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVW
ZW5kb3JQcmVmaXhlcygpOworICAgIHByZXBhcmVEYXRhYmFzZSgpOworfQorCitmdW5jdGlvbiBw
cmVwYXJlRGF0YWJhc2UoKQoreworICAgIGRlYnVnKCJwcmVwYXJlIGRhdGFiYXNlIik7CisgICAg
ZXZhbEFuZExvZygib3BlbnJlcTEgPSBpbmRleGVkREIub3BlbignZGIxJykiKTsKKyAgICBvcGVu
cmVxMS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgb3BlbnJlcTEub25z
dWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgZXZhbEFuZExvZygiZGJjMSA9IG9wZW5y
ZXExLnJlc3VsdCIpOworICAgICAgICBldmFsQW5kTG9nKCJzZXR2ZXJyZXEgPSBkYmMxLnNldFZl
cnNpb24oJzEuMCcpIik7CisgICAgICAgIHNldHZlcnJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisgICAgICAgIHNldHZlcnJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZSkg
eworICAgICAgICAgICAgZXZhbEFuZExvZygiZGJjMS5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVO
YW1lJykiKTsKKyAgICAgICAgICAgIHNldHZlcnJlcS5yZXN1bHQub25jb21wbGV0ZSA9IGZ1bmN0
aW9uIChlKSB7CisgICAgICAgICAgICAgICAgZGVidWcoImRhdGFiYXNlIHByZXBhcmF0aW9uIGNv
bXBsZXRlIik7CisgICAgICAgICAgICAgICAgZGVidWcoIiIpOworICAgICAgICAgICAgICAgIHN0
YXJ0VHJhbnNhY3Rpb24oKTsKKyAgICAgICAgICAgIH07CisgICAgICAgIH07CisgICAgfTsKK30K
KworZnVuY3Rpb24gc3RhcnRUcmFuc2FjdGlvbigpCit7CisgICAgZGVidWcoInN0YXJ0aW5nIHRy
YW5zYWN0aW9uIik7CisgICAgZXZhbEFuZExvZygic3RhdGUgPSAnc3RhcnRpbmcnIik7CisgICAg
ZXZhbEFuZExvZygidHJhbnMgPSBkYmMxLnRyYW5zYWN0aW9uKCdzdG9yZU5hbWUnLCBJREJUcmFu
c2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3Jl
KCdzdG9yZU5hbWUnKS5wdXQoJ3ZhbHVlJywgJ2tleScpIik7CisgICAgdHJhbnMub25hYm9ydCA9
IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zLm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gZnVuY3Rpb24gKGUpIHsKKyAg
ICAgICAgZGVidWcoInRyYW5zYWN0aW9uIGNvbXBsZXRlIik7CisgICAgICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygic3RhdGUiLCAib3BlbjNjb21wbGV0ZSIpOworICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICB9OworCisgICAgZGVidWcoIiIpOworICAgIHRyeU9wZW5zKCk7Cit9CisKK2Z1
bmN0aW9uIHRyeU9wZW5zKCkKK3sKKyAgICBkZWJ1ZygidHJ5aW5nIHRvIG9wZW4gdGhlIHNhbWUg
ZGF0YWJhc2UiKTsKKyAgICBldmFsQW5kTG9nKCJvcGVucmVxMiA9IGluZGV4ZWREQi5vcGVuKCdk
YjEnKSIpOworICAgIG9wZW5yZXEyLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICBvcGVucmVxMi5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZSkgeworICAgICAgICBkZWJ1Zygi
b3BlbnJlcTIub25zdWNjZXNzIik7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3Rh
dGUiLCAic3RhcnRpbmciKTsKKyAgICAgICAgZXZhbEFuZExvZygic3RhdGUgPSAnb3BlbjJjb21w
bGV0ZSciKTsKKyAgICAgICAgZGVidWcoIiIpOworICAgIH0KKyAgICBkZWJ1ZygiIik7CisKKyAg
ICBkZWJ1ZygidHJ5aW5nIHRvIG9wZW4gYSBkaWZmZXJlbnQgZGF0YWJhc2UiKTsKKyAgICBldmFs
QW5kTG9nKCJvcGVucmVxMyA9IGluZGV4ZWREQi5vcGVuKCdkYjInKSIpOworICAgIG9wZW5yZXEz
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBvcGVucmVxMy5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbiAoZSkgeworICAgICAgICBkZWJ1Zygib3BlbnJlcTMub25zdWNjZXNzIik7
CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3RhdGUiLCAib3BlbjJjb21wbGV0ZSIp
OworICAgICAgICBldmFsQW5kTG9nKCJzdGF0ZSA9ICdvcGVuM2NvbXBsZXRlJyIpOworICAgICAg
ICBkZWJ1ZygiIik7CisgICAgfQorICAgIGRlYnVnKCIiKTsKK30KKwordGVzdCgpOwpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9wcmVmZXRjaC1idWdmaXgtMTA4MDcxLmpzIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3ByZWZldGNoLWJ1Z2ZpeC0xMDgwNzEuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZmYxNDE2N2ExZGU0YTU0YjU0YmNkM2IzZWQyZmI0Njk5YzlmMWMwOAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9wcmVm
ZXRjaC1idWdmaXgtMTA4MDcxLmpzCkBAIC0wLDAgKzEsMTE4IEBACitpZiAodGhpcy5pbXBvcnRT
Y3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKwor
ZGVzY3JpcHRpb24oIlRlc3QgZm9yIGNyYnVnLmNvbS8xMDgwNzEiKTsKKworLy8gSGF2ZSB0byBi
ZSBhdCBsZWFzdCA1IGhlcmU6IDEgaW5pdGlhbCwgMyBjb250aW51ZXMgdG8gdHJpZ2dlciBwcmVm
ZXRjaCBhbmQgMQorLy8gcG9zdC1hYm9ydCBvdXRzdGFuZGluZyBjb250aW51ZS4KK3ZhciBuYW1l
cyA9IFsnQWxwaGEnLCAnQnJhdm8nLCAnQ2hhcmxpZScsICdEZWx0YScsICdFY2hvJ107CisKK2Z1
bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgREJOQU1F
ID0gJ3ByZWZldGNoLWJ1Z2ZpeC0xMDgwNzEnOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIuZGVsZXRlRGF0YWJhc2UoREJOQU1FKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25ibG9ja2VkID0gdW5leHBl
Y3RlZEJsb2NrZWRDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChl
KSB7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihEQk5BTUUp
Iik7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIH07Cit9CisKK2Z1
bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICB2YXIgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRW
ZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJz
aW9uU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJzZXRW
ZXJzaW9uU3VjY2VzcygpOiIpOworICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9
IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxs
Iik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRy
YW5zLm9uY29tcGxldGUgPSBpdGVyYXRlQW5kRGVsZXRlRmlyc3RFbGVtZW50OworCisgICAgdmFy
IG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RT
dG9yZSgnc3RvcmUnLCB7a2V5UGF0aDogJ2lkJ30pIik7CisgICAgcmVzZXRPYmplY3RTdG9yZSgp
OworfQorCitmdW5jdGlvbiByZXNldE9iamVjdFN0b3JlKCkKK3sKKyAgICBkZWJ1ZygiXG5yZXNl
dE9iamVjdFN0b3JlKCk6Iik7CisKKyAgICBvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3Jl
KCdzdG9yZScpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmNsZWFyKCkiKTsKKyAgICBm
b3IgKGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCh7aWQ6ICIgKyBpICsgIiwgbmFtZTogXCIiICsgbmFt
ZXNbaV0gKyAiXCJ9KSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICB9CisKKyAgICBkZWJ1ZygiIik7Cit9CisKK2Z1bmN0aW9uIGl0ZXJh
dGVBbmREZWxldGVGaXJzdEVsZW1lbnQoKQoreworICAgIGRlYnVnKCJpdGVyYXRlQW5kRGVsZXRl
Rmlyc3RFbGVtZW50KCk6Iik7CisKKyAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0
aW9uKFsnc3RvcmUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICB0cmFucy5v
bmFib3J0ID0gdHJhbnNhY3Rpb25BYm9ydGVkOworICAgIHRyYW5zLm9uY29tcGxldGUgPSB1bmV4
cGVjdGVkQ29tcGxldGVDYWxsYmFjazsKKworICAgIC8vIENyZWF0ZSB0aGUgY3Vyc29yIGFuZCBp
dGVyYXRlIG92ZXIgdGhlIHdob2xlIHRoaW5nLgorICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0
cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKS5vcGVuQ3Vyc29yKCkiKTsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdmFyIGN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7
CisgICAgICAgIGlmIChjdXJzb3IgPT0gbnVsbCkgeworICAgICAgICAgICAgcmVzZXRPYmplY3RT
dG9yZSgpOworICAgICAgICAgICAgcHJlZmV0Y2hBbmRBYm9ydCgpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgZGVidWcoY3Vyc29yLnZhbHVlLmlkICsgIjogIiAr
IGN1cnNvci52YWx1ZS5uYW1lKTsKKworICAgICAgICBpZiAoY3Vyc29yLnZhbHVlLmlkID09IDAp
IHsKKyAgICAgICAgICAgIC8vIERlbGV0ZSB0aGUgZmlyc3QgZWxlbWVudCB3aGVuIHdlIHNlZSBp
dC4KKyAgICAgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgn
c3RvcmUnKS5kZWxldGUoMCkiKTsKKyAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbigpIHsgY3Vyc29yLmNvbnRpbnVlKCk7IH07CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBjdXJzb3IuY29udGludWUoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24g
cHJlZmV0Y2hBbmRBYm9ydCgpCit7CisgICAgZGVidWcoInByZWZldGNoQW5kQWJvcnQoKToiKTsK
KworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKS5v
cGVuQ3Vyc29yKCkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdmFy
IGN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgICAgIGRlYnVnKGN1cnNvci52YWx1
ZS5pZCArICI6ICIgKyBjdXJzb3IudmFsdWUubmFtZSk7CisgICAgICAgIC8vIEhhdmUgdG8gaXRl
cmF0ZSB0byAzIGluIG9yZGVyIHRvIHByZWZldGNoLCBidXQgY2FuJ3QgaXRlcmF0ZSBwYXN0IDMK
KyAgICAgICAgLy8gc28gdGhhdCB0aGVyZSB3aWxsIGJlIGEgY29udGludWUgcmVtYWluaW5nLgor
ICAgICAgICBpZiAoY3Vyc29yLnZhbHVlLmlkID09IDMpIHsKKyAgICAgICAgICAgIGV2YWxBbmRM
b2coInRyYW5zLmFib3J0KCkiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGN1cnNv
ci5jb250aW51ZSgpOworICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiB0cmFuc2FjdGlv
bkFib3J0ZWQoKQoreworICAgIHRlc3RQYXNzZWQoIlRyYW5zYWN0aW9uIGFib3J0ZWQgYXMgZXhw
ZWN0ZWQiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9xdWV1ZWQtY29tbWFuZHMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvcXVldWVkLWNvbW1hbmRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwMGJmZDVhMTZj
ZWNlMTA0NzUyMTI2N2Y2YTJhOTkzMTliNDgyYjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvcXVldWVkLWNvbW1hbmRzLmpzCkBAIC0w
LDAgKzEsNjIgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRz
KCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9y
dFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVmVyaWZ5IHRoYXQgcXVl
dWluZyB1cCBzZXZlcmFsIGNvbW1hbmRzIHdvcmtzIChhbmQgdGhleSBhbGwgZmlyZSkuIik7CisK
K2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdxdWV1ZWQtY29tbWFuZHMnKSIpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvbjsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbigpCit7
CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVsZXRlRXhpc3Rp
bmcoKQoreworICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOworICAgIHNlbGYudHJh
bnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91
bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0
ZWRBYm9ydENhbGxiYWNrOworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAg
IHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1l
JykiKTsKKyAgICBzZWxmLmluZGV4T2JqZWN0ID0gZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5k
ZXgoJ2luZGV4TmFtZScsICd4JykiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9y
ZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbigpIHsgdmVyaWZ5QWRkKDApOyB9OworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InN0b3JlLmFkZCh7eDogJ3ZhbHVlMicsIHk6ICd6enoyJ30sICdrZXkyJykiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeyB2ZXJpZnlBZGQoMSk7IH07CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygic3RvcmUucHV0KHt4OiAndmFsdTInLCB5OiAnenoyJ30sICdreTInKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7IHZlcmlmeUFkZCgyKTsgfTsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKworICAgIHNlbGYuYWRk
Q291bnQgPSAwOworfQorCitmdW5jdGlvbiB2ZXJpZnlBZGQoZXhwZWN0ZWQpCit7CisgICAgc2hv
dWxkQmUoIiIgKyBhZGRDb3VudCsrLCAiIiArIGV4cGVjdGVkKTsKKworICAgIGlmIChhZGRDb3Vu
dCA9PSAzKQorICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICBpZiAoYWRkQ291bnQgPiAzKQor
ICAgICAgICB0ZXN0RmFpbGVkKCJVbmV4cGVjdGVkIGNhbGwgdG8gdmVyaWZ5QWRkISIpOworfQor
Cit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3JlYWRvbmx5LXByb3BlcnRpZXMuanMg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvcmVhZG9ubHktcHJvcGVy
dGllcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43MjVjMDQxYjAxODE5YzE0NmUyYjYzYTE2NjlhZDM5OGQ3N2Fi
MmM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL3JlYWRvbmx5LXByb3BlcnRpZXMuanMKQEAgLTAsMCArMSw0OSBAQAoraWYgKHRoaXMu
aW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7
Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiByZWFkb25seSBwcm9wZXJ0aWVzIik7
CisKK2Z1bmN0aW9uIHNldFJlYWRvbmx5UHJvcGVydHkocHJvcGVydHksIHZhbHVlKQoreworICAg
IG9sZFZhbHVlID0gZXZhbChwcm9wZXJ0eSk7CisgICAgZGVidWcoInRyeWluZyB0byBzZXQgcmVh
ZG9ubHkgcHJvcGVydHkgIiArIHByb3BlcnR5KTsKKyAgICBldmFsQW5kTG9nKHByb3BlcnR5ICsg
IiA9ICIgKyB2YWx1ZSk7CisgICAgbmV3VmFsdWUgPSBldmFsKHByb3BlcnR5KTsKKyAgICBpZiAo
b2xkVmFsdWUgPT0gbmV3VmFsdWUpIHsKKyAgICAgICAgdGVzdFBhc3NlZChwcm9wZXJ0eSArICIg
aXMgc3RpbGwgIiArIG9sZFZhbHVlKTsKKyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0RmFpbGVk
KHByb3BlcnR5ICsgIiB2YWx1ZSB3YXMgY2hhbmdlZCB0byAiICsgbmV3VmFsdWUpOworICAgIH0K
K30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKwor
ICAgIG5hbWUgPSAiZm9vIjsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRp
b24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1
Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcx
JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3Rv
cmU7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQoreworICAgIHRyYW5zYWN0
aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwor
ICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5k
TG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nKTsiKTsKKyAgICBz
ZXRSZWFkb25seVByb3BlcnR5KCJvYmplY3RTdG9yZS50cmFuc2FjdGlvbiIsICJ0aGlzIik7Cisg
ICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
cmVhZG9ubHkuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvcmVh
ZG9ubHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDZkMzFjZjg4OTJkYjE0Y2EzNjk4MGFhZjhjZDMxZmZhNWY5
Y2YyYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9yZWFkb25seS5qcwpAQCAtMCwwICsxLDEwNiBAQAoraWYgKHRoaXMuaW1wb3J0U2Ny
aXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rl
c2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiByZWFkb25seSBwcm9wZXJ0aWVzIik7CisKK2Z1bmN0
aW9uIHNldFJlYWRvbmx5UHJvcGVydHkocHJvcGVydHksIHZhbHVlKQoreworICAgIG9sZFZhbHVl
ID0gZXZhbChwcm9wZXJ0eSk7CisgICAgZGVidWcoInRyeWluZyB0byBzZXQgcmVhZG9ubHkgcHJv
cGVydHkgIiArIHByb3BlcnR5KTsKKyAgICBldmFsQW5kTG9nKHByb3BlcnR5ICsgIiA9ICIgKyB2
YWx1ZSk7CisgICAgbmV3VmFsdWUgPSBldmFsKHByb3BlcnR5KTsKKyAgICBpZiAob2xkVmFsdWUg
PT0gbmV3VmFsdWUpIHsKKyAgICAgICAgdGVzdFBhc3NlZChwcm9wZXJ0eSArICIgaXMgc3RpbGwg
IiArIG9sZFZhbHVlKTsKKyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0RmFpbGVkKHByb3BlcnR5
ICsgIiB2YWx1ZSB3YXMgY2hhbmdlZCIpOworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdCgpCit7
CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSAiZm9vIjsKKyAgICBk
ZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIHNldFJlYWRv
bmx5UHJvcGVydHkoInJlcXVlc3QucmVzdWx0IiwgIkluZmluaXR5Iik7CisgICAgc2V0UmVhZG9u
bHlQcm9wZXJ0eSgicmVxdWVzdC5lcnJvckNvZGUiLCAiNjY2Iik7CisgICAgc2V0UmVhZG9ubHlQ
cm9wZXJ0eSgicmVxdWVzdC5zb3VyY2UiLCAidGhpcyIpOworICAgIHNldFJlYWRvbmx5UHJvcGVy
dHkoInJlcXVlc3QudHJhbnNhY3Rpb24iLCAidGhpcyIpOworICAgIHNldFJlYWRvbmx5UHJvcGVy
dHkoInJlcXVlc3QucmVhZHlTdGF0ZSIsICI2NjYiKTsKKworICAgIGRiID0gZXZhbEFuZExvZygi
ZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgiZGIu
bmFtZSIsICInYmFyJyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBk
Yi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBv
cHVsYXRlT2JqZWN0U3RvcmU7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQor
eworICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBldmVudC50YXJn
ZXQucmVzdWx0OyIpOworICAgIHNldFJlYWRvbmx5UHJvcGVydHkoInRyYW5zYWN0aW9uLm1vZGUi
LCAiNjY2Iik7CisgICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgidHJhbnNhY3Rpb24uZGIiLCAidGhp
cyIpOworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3Jl
ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJyk7
Iik7CisKKyAgICBzZXRSZWFkb25seVByb3BlcnR5KCJvYmplY3RTdG9yZS5uYW1lIiwgIidiYXIn
Iik7CisgICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgib2JqZWN0U3RvcmUua2V5UGF0aCIsICInYmFy
JyIpOworLyogZmFpbHMsIHNwbGl0IGludG8gc2VwYXJhdGUgdGVzdAorICAgIHNldFJlYWRvbmx5
UHJvcGVydHkoIm9iamVjdFN0b3JlLmluZGV4TmFtZXMiLCAiWydiYXInXSIpOworKi8KKy8qIGZh
aWxzLCBzcGxpdCBpbnRvIHNlcGFyYXRlIHRlc3QKKyAgICBzZXRSZWFkb25seVByb3BlcnR5KCJv
YmplY3RTdG9yZS50cmFuc2FjdGlvbiIsICJ0aGlzIik7CisqLworCisgICAgcmVzdWx0ID0gZXZh
bEFuZExvZygicmVzdWx0ID0gb2JqZWN0U3RvcmUuYWRkKHt9LCAnZmlyc3QnKTsiKTsKKyAgICBy
ZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlc3VsdC5vbnN1
Y2Nlc3MgPSBhZGRTdWNjZXNzOworfQorCitmdW5jdGlvbiBhZGRTdWNjZXNzKCkKK3sKKyAgICBy
ZXN1bHQgPSBldmFsQW5kTG9nKCJyZXN1bHQgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7
CisgICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXN1
bHQub25zdWNjZXNzID0gY2hlY2tDdXJzb3I7Cit9CisKK2Z1bmN0aW9uIGNoZWNrQ3Vyc29yKCkK
K3sKKyAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0
OyIpOworICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgiY3Vy
c29yLnNvdXJjZSIsICJ0aGlzIik7CisgICAgICAgIHNldFJlYWRvbmx5UHJvcGVydHkoImN1cnNv
ci5kaXJlY3Rpb24iLCAiNjY2Iik7CisgICAgICAgIHNldFJlYWRvbmx5UHJvcGVydHkoImN1cnNv
ci5rZXkiLCAiSW5maW5pdHkiKTsKKyAgICAgICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgiY3Vyc29y
LnByaW1hcnlLZXkiLCAiSW5maW5pdHkiKTsKKyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0RmFp
bGVkKCJjdXJzb3IgaXMgbnVsbCIpOworICAgIH0KKworICAgIGluZGV4ID0gZXZhbEFuZExvZygi
aW5kZXggPSBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgnZmlyc3QnLCAnZmlyc3QnKTsiKTsKKyAg
ICBzZXRSZWFkb25seVByb3BlcnR5KCJpbmRleC5uYW1lIiwgIidiYXInIik7CisgICAgc2V0UmVh
ZG9ubHlQcm9wZXJ0eSgiaW5kZXgub2JqZWN0U3RvcmUiLCAidGhpcyIpOworICAgIHNldFJlYWRv
bmx5UHJvcGVydHkoImluZGV4LmtleVBhdGgiLCAiJ2JhciciKTsKKyAgICBzZXRSZWFkb25seVBy
b3BlcnR5KCJpbmRleC51bmlxdWUiLCAidHJ1ZSIpOworCisgICAga2V5UmFuZ2UgPSBJREJLZXlS
YW5nZS5vbmx5KCJmaXJzdCIpOworICAgIHNldFJlYWRvbmx5UHJvcGVydHkoImtleVJhbmdlLmxv
d2VyIiwgIkluZmluaXR5Iik7CisgICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgia2V5UmFuZ2UudXBw
ZXIiLCAiSW5maW5pdHkiKTsKKyAgICBzZXRSZWFkb25seVByb3BlcnR5KCJrZXlSYW5nZS5sb3dl
ck9wZW4iLCAidHJ1ZSIpOworICAgIHNldFJlYWRvbmx5UHJvcGVydHkoImtleVJhbmdlLnVwcGVy
T3BlbiIsICJ0cnVlIik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9yZXF1ZXN0LWV2ZW50LXByb3BhZ2F0aW9uLmpzIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3JlcXVlc3QtZXZlbnQtcHJvcGFnYXRp
b24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzk2NzIzNWUyMGJmZGY4ZjYwZjAwNDJiYWE3ODE2N2JiMWNjNTI3
MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9yZXF1ZXN0LWV2ZW50LXByb3BhZ2F0aW9uLmpzCkBAIC0wLDAgKzEsMjY3IEBACitpZiAo
dGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQu
anMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgZXZlbnQgcHJvcG9nYXRpb24gb24gSURCUmVx
dWVzdC4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMo
KTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3JlcXVlc3QtZXZl
bnQtcHJvcGFnYXRpb24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvbjsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gc2V0VmVyc2lvbigpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9u
KCduZXcgdmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGlu
ZzsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKwor
ZnVuY3Rpb24gZGVsZXRlRXhpc3RpbmcoKQoreworICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2Vz
cygpOiIpOworICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJh
bnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIGV2YWxBbmRMb2coInRy
YW5zLm9uY29tcGxldGUgPSBzdGFydFRlc3QiKTsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jl
cyhkYik7CisKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0
b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAna2V5JykiKTsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc3RhcnRUZXN0
KCkKK3sKKyAgICBkZWJ1ZygiVmVyaWZ5IHRoYXQgaGFuZGxlciBmaXJlcyBhbmQgdGhhdCBub3Qg
cHJldmVudGluZyBkZWZhdWx0IHdpbGwgcmVzdWx0IGluIGFuIGFib3J0Iik7CisgICAgdHJhbnMg
PSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIElEQlRy
YW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMub25hYm9ydCA9
IHRyYW5zYWN0aW9uQWJvcnRlZCIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUg
PSB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9u
ZXJyb3IgPSBhbGxvd0RlZmF1bHQiKTsKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0g
dHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAna2V5JykiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7CisgICAgaGFuZGxlckZp
cmVkID0gZmFsc2U7Cit9CisKK2Z1bmN0aW9uIGFsbG93RGVmYXVsdCgpCit7CisgICAgdGVzdFBh
c3NlZCgiRXZlbnQgaGFuZGxlciBmaXJlZCIpOworICAgIGRlYnVnKCJEb2luZyBub3RoaW5nIHRv
IHByZXZlbnQgdGhlIGRlZmF1bHQgYWN0aW9uLi4uIik7CisgICAgaGFuZGxlckZpcmVkID0gdHJ1
ZTsKK30KKworZnVuY3Rpb24gdHJhbnNhY3Rpb25BYm9ydGVkKCkKK3sKKyAgICBzaG91bGRCZVRy
dWUoImhhbmRsZXJGaXJlZCIpOworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVmVyaWZpbmcg
ZXJyb3IiKTsKKyAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24o
WydzdG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICBldmFsQW5k
TG9nKCJ0cmFucy5vbmFib3J0ID0gdHJhbnNhY3Rpb25BYm9ydGVkMiIpOworICAgIGV2YWxBbmRM
b2coInRyYW5zLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjayIpOworICAgIGV2
YWxBbmRMb2coInRyYW5zLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZXJyb3JDYXB0dXJlQ2Fs
bGJhY2ssIHRydWUpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMuYWRkRXZlbnRMaXN0ZW5lcign
ZXJyb3InLCBlcnJvckJ1YmJsZUNhbGxiYWNrLCBmYWxzZSkiKTsKKyAgICBldmFsQW5kTG9nKCJ0
cmFucy5hZGRFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFj
aywgdHJ1ZSkiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5hZGRFdmVudExpc3RlbmVyKCdzdWNj
ZXNzJywgdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjaywgZmFsc2UpIik7CisgICAgZXZhbEFuZExv
ZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBkYkVycm9yQ2FwdHVyZUNhbGxiYWNrLCB0
cnVlKSIpOworICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZGJF
cnJvckJ1YmJsZUNhbGxiYWNrLCBmYWxzZSkiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5hZGRFdmVu
dExpc3RlbmVyKCdzdWNjZXNzJywgdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjaywgdHJ1ZSkiKTsK
KyAgICBldmFsQW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgdW5leHBlY3Rl
ZFN1Y2Nlc3NDYWxsYmFjaywgZmFsc2UpIik7CisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9y
ZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOworICAgIHJlcXVl
c3Qub25lcnJvciA9IGVycm9yRmlyZWRDYWxsYmFjazsKKyAgICBkYkNhcHR1cmVGaXJlZCA9IGZh
bHNlOworICAgIGNhcHR1cmVGaXJlZCA9IGZhbHNlOworICAgIHJlcXVlc3RGaXJlZCA9IGZhbHNl
OworICAgIGJ1YmJsZUZpcmVkID0gZmFsc2U7CisgICAgZGJCdWJibGVGaXJlZCA9IGZhbHNlOwor
fQorCitmdW5jdGlvbiBkYkVycm9yQ2FwdHVyZUNhbGxiYWNrKCkKK3sKKyAgICBkZWJ1ZygiIik7
CisgICAgZGVidWcoIkluIElEQkRhdGFiYXNlIGVycm9yIGNhcHR1cmUiKTsKKyAgICBzaG91bGRC
ZUZhbHNlKCJkYkNhcHR1cmVGaXJlZCIpOworICAgIHNob3VsZEJlRmFsc2UoImNhcHR1cmVGaXJl
ZCIpOworICAgIHNob3VsZEJlRmFsc2UoInJlcXVlc3RGaXJlZCIpOworICAgIHNob3VsZEJlRmFs
c2UoImJ1YmJsZUZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVGaXJlZCIpOwor
ICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAicmVxdWVzdCIpOworICAgIHNob3VsZEJlKCJl
dmVudC5jdXJyZW50VGFyZ2V0IiwgImRiIik7CisgICAgZGJDYXB0dXJlRmlyZWQgPSB0cnVlOwor
fQorCitmdW5jdGlvbiBlcnJvckNhcHR1cmVDYWxsYmFjaygpCit7CisgICAgZGVidWcoIiIpOwor
ICAgIGRlYnVnKCJJbiBJREJUcmFuc2FjdGlvbiBlcnJvciBjYXB0dXJlIik7CisgICAgc2hvdWxk
QmVUcnVlKCJkYkNhcHR1cmVGaXJlZCIpOworICAgIHNob3VsZEJlRmFsc2UoImNhcHR1cmVGaXJl
ZCIpOworICAgIHNob3VsZEJlRmFsc2UoInJlcXVlc3RGaXJlZCIpOworICAgIHNob3VsZEJlRmFs
c2UoImJ1YmJsZUZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVGaXJlZCIpOwor
ICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAicmVxdWVzdCIpOworICAgIHNob3VsZEJlKCJl
dmVudC5jdXJyZW50VGFyZ2V0IiwgInRyYW5zIik7CisgICAgY2FwdHVyZUZpcmVkID0gdHJ1ZTsK
K30KKworZnVuY3Rpb24gZXJyb3JGaXJlZENhbGxiYWNrKCkKK3sKKyAgICBkZWJ1ZygiIik7Cisg
ICAgZGVidWcoIkluIElEQlJlcXVlc3QgaGFuZGxlciIpOworICAgIHNob3VsZEJlVHJ1ZSgiZGJD
YXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRCZVRydWUoImNhcHR1cmVGaXJlZCIpOworICAgIHNo
b3VsZEJlRmFsc2UoInJlcXVlc3RGaXJlZCIpOworICAgIHNob3VsZEJlRmFsc2UoImJ1YmJsZUZp
cmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVGaXJlZCIpOworICAgIHNob3VsZEJl
KCJldmVudC50YXJnZXQiLCAicmVxdWVzdCIpOworICAgIHNob3VsZEJlKCJldmVudC5jdXJyZW50
VGFyZ2V0IiwgInJlcXVlc3QiKTsKKyAgICByZXF1ZXN0RmlyZWQgPSB0cnVlOworfQorCitmdW5j
dGlvbiBlcnJvckJ1YmJsZUNhbGxiYWNrKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWco
IkluIElEQlRyYW5zYWN0aW9uIGVycm9yIGJ1YmJsZSIpOworICAgIHNob3VsZEJlVHJ1ZSgiZGJD
YXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRCZVRydWUoImNhcHR1cmVGaXJlZCIpOworICAgIHNo
b3VsZEJlVHJ1ZSgicmVxdWVzdEZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiYnViYmxlRmly
ZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVkIik7CisgICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldCIsICJyZXF1ZXN0Iik7CisgICAgc2hvdWxkQmUoImV2ZW50LmN1cnJlbnRU
YXJnZXQiLCAidHJhbnMiKTsKKyAgICBidWJibGVGaXJlZCA9IHRydWU7Cit9CisKK2Z1bmN0aW9u
IGRiRXJyb3JCdWJibGVDYWxsYmFjaygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJJ
biBJREJEYXRhYmFzZSBlcnJvciBidWJibGUiKTsKKyAgICBzaG91bGRCZVRydWUoImRiQ2FwdHVy
ZUZpcmVkIik7CisgICAgc2hvdWxkQmVUcnVlKCJjYXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRC
ZVRydWUoInJlcXVlc3RGaXJlZCIpOworICAgIHNob3VsZEJlVHJ1ZSgiYnViYmxlRmlyZWQiKTsK
KyAgICBzaG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVkIik7CisgICAgc2hvdWxkQmUoImV2ZW50
LnRhcmdldCIsICJyZXF1ZXN0Iik7CisgICAgc2hvdWxkQmUoImV2ZW50LmN1cnJlbnRUYXJnZXQi
LCAiZGIiKTsKKyAgICBkYkJ1YmJsZUZpcmVkID0gdHJ1ZTsKK30KKworZnVuY3Rpb24gdHJhbnNh
Y3Rpb25BYm9ydGVkMigpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUcmFuc2FjdGlv
biBhYm9ydGVkIik7CisgICAgc2hvdWxkQmVUcnVlKCJkYkNhcHR1cmVGaXJlZCIpOworICAgIHNo
b3VsZEJlVHJ1ZSgiY2FwdHVyZUZpcmVkIik7CisgICAgc2hvdWxkQmVUcnVlKCJyZXF1ZXN0Rmly
ZWQiKTsKKyAgICBzaG91bGRCZVRydWUoImJ1YmJsZUZpcmVkIik7CisgICAgc2hvdWxkQmVUcnVl
KCJkYkJ1YmJsZUZpcmVkIik7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJWZXJpZmluZyBz
dWNjZXNzLiIpOworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlv
bihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIGV2YWxB
bmRMb2coInRyYW5zLm9uY29tcGxldGUgPSB0cmFuc2FjdGlvbkNvbXBsZXRlIik7CisgICAgZXZh
bEFuZExvZygidHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrIik7CisgICAg
ZXZhbEFuZExvZygidHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignc3VjY2VzcycsIHN1Y2Nlc3NDYXB0
dXJlQ2FsbGJhY2ssIHRydWUpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMuYWRkRXZlbnRMaXN0
ZW5lcignc3VjY2VzcycsIHN1Y2Nlc3NCdWJibGVDYWxsYmFjaywgZmFsc2UpIik7CisgICAgZXZh
bEFuZExvZygidHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjaywgdHJ1ZSkiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5hZGRFdmVudExpc3RlbmVy
KCdlcnJvcicsIHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrLCBmYWxzZSkiKTsKKyAgICBldmFsQW5k
TG9nKCJkYi5yZW1vdmVFdmVudExpc3RlbmVyKCdlcnJvcicsIGRiRXJyb3JDYXB0dXJlQ2FsbGJh
Y2ssIHRydWUpIik7CisgICAgZXZhbEFuZExvZygiZGIucmVtb3ZlRXZlbnRMaXN0ZW5lcignZXJy
b3InLCBkYkVycm9yQnViYmxlQ2FsbGJhY2ssIGZhbHNlKSIpOworICAgIGV2YWxBbmRMb2coImRi
LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3N1Y2Nlc3MnLCB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNr
LCB0cnVlKSIpOworICAgIGV2YWxBbmRMb2coImRiLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3N1Y2Nl
c3MnLCB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrLCBmYWxzZSkiKTsKKyAgICBldmFsQW5kTG9n
KCJkYi5hZGRFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgZGJTdWNjZXNzQ2FwdHVyZUNhbGxiYWNr
LCB0cnVlKSIpOworICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50TGlzdGVuZXIoJ3N1Y2Nlc3Mn
LCBkYlN1Y2Nlc3NCdWJibGVDYWxsYmFjaywgZmFsc2UpIik7CisgICAgZXZhbEFuZExvZygiZGIu
YWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjaywgdHJ1ZSki
KTsKKyAgICBldmFsQW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrLCBmYWxzZSkiKTsKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3Jl
ID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAna2V5MicpIik7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBzdWNjZXNzRmlyZWRDYWxsYmFjazsKKyAgICBkYkNhcHR1cmVGaXJlZCA9IGZh
bHNlOworICAgIGNhcHR1cmVGaXJlZCA9IGZhbHNlOworICAgIHJlcXVlc3RGaXJlZCA9IGZhbHNl
OworICAgIGJ1YmJsZUZpcmVkID0gZmFsc2U7CisgICAgZGJCdWJibGVGaXJlZCA9IGZhbHNlOwor
fQorCitmdW5jdGlvbiBkYlN1Y2Nlc3NDYXB0dXJlQ2FsbGJhY2soKQoreworICAgIGRlYnVnKCIi
KTsKKyAgICBkZWJ1ZygiSW4gSURCRGF0YWJhc2Ugc3VjY2VzcyBjYXB0dXJlIik7CisgICAgc2hv
dWxkQmVGYWxzZSgiZGJDYXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJjYXB0dXJl
RmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJyZXF1ZXN0RmlyZWQiKTsKKyAgICBzaG91bGRC
ZUZhbHNlKCJidWJibGVGaXJlZCIpOworICAgIHNob3VsZEJlRmFsc2UoImRiQnViYmxlRmlyZWQi
KTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0IiwgInJlcXVlc3QiKTsKKyAgICBzaG91bGRC
ZSgiZXZlbnQuY3VycmVudFRhcmdldCIsICJkYiIpOworICAgIGRiQ2FwdHVyZUZpcmVkID0gdHJ1
ZTsKK30KKworZnVuY3Rpb24gc3VjY2Vzc0NhcHR1cmVDYWxsYmFjaygpCit7CisgICAgZGVidWco
IiIpOworICAgIGRlYnVnKCJJbiBJREJUcmFuc2FjdGlvbiBzdWNjZXNzIGNhcHR1cmUiKTsKKyAg
ICBzaG91bGRCZVRydWUoImRiQ2FwdHVyZUZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiY2Fw
dHVyZUZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgicmVxdWVzdEZpcmVkIik7CisgICAgc2hv
dWxkQmVGYWxzZSgiYnViYmxlRmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZp
cmVkIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldCIsICJyZXF1ZXN0Iik7CisgICAgc2hv
dWxkQmUoImV2ZW50LmN1cnJlbnRUYXJnZXQiLCAidHJhbnMiKTsKKyAgICBjYXB0dXJlRmlyZWQg
PSB0cnVlOworfQorCitmdW5jdGlvbiBzdWNjZXNzRmlyZWRDYWxsYmFjaygpCit7CisgICAgZGVi
dWcoIiIpOworICAgIGRlYnVnKCJJbiBJREJSZXF1ZXN0IGhhbmRsZXIiKTsKKyAgICBzaG91bGRC
ZVRydWUoImRiQ2FwdHVyZUZpcmVkIik7CisgICAgc2hvdWxkQmVUcnVlKCJjYXB0dXJlRmlyZWQi
KTsKKyAgICBzaG91bGRCZUZhbHNlKCJyZXF1ZXN0RmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNl
KCJidWJibGVGaXJlZCIpOworICAgIHNob3VsZEJlRmFsc2UoImRiQnViYmxlRmlyZWQiKTsKKyAg
ICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0IiwgInJlcXVlc3QiKTsKKyAgICBzaG91bGRCZSgiZXZl
bnQuY3VycmVudFRhcmdldCIsICJyZXF1ZXN0Iik7CisgICAgcmVxdWVzdEZpcmVkID0gdHJ1ZTsK
K30KKworZnVuY3Rpb24gc3VjY2Vzc0J1YmJsZUNhbGxiYWNrKCkKK3sKKyAgICBkZWJ1ZygiIik7
CisgICAgZGVidWcoIkluIElEQlRyYW5zYWN0aW9uIHN1Y2Nlc3MgYnViYmxlIik7CisgICAgdGVz
dEZhaWxlZCgiU3VjY2VzcyBidWJibGUgY2FsbGJhY2sgc2hvdWxkIE5PVCBmaXJlIik7CisgICAg
YnViYmxlRmlyZWQgPSB0cnVlOworfQorCitmdW5jdGlvbiBkYlN1Y2Nlc3NCdWJibGVDYWxsYmFj
aygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJJbiBJREJEYXRhYmFzZSBzdWNjZXNz
IGJ1YmJsZSIpOworICAgIHRlc3RGYWlsZWQoIlN1Y2Nlc3MgYnViYmxlIGNhbGxiYWNrIHNob3Vs
ZCBOT1QgZmlyZSIpOworICAgIGRiQnViYmxlRmlyZWQgPSB0cnVlOworfQorCitmdW5jdGlvbiB0
cmFuc2FjdGlvbkNvbXBsZXRlKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRyYW5z
YWN0aW9uIGNvbXBsZXRlZCIpOworICAgIHNob3VsZEJlVHJ1ZSgiZGJDYXB0dXJlRmlyZWQiKTsK
KyAgICBzaG91bGRCZVRydWUoImNhcHR1cmVGaXJlZCIpOworICAgIHNob3VsZEJlVHJ1ZSgicmVx
dWVzdEZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiYnViYmxlRmlyZWQiKTsKKyAgICBzaG91
bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVkIik7CisgICAgZGVidWcoIiIpOworCisgICAgZmluaXNo
SlNUZXN0KCk7CisgICAgcmV0dXJuOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL3NldFZlcnNpb24tbnVsbC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9zZXRWZXJzaW9uLW51bGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTg4YTNjNzVmNjJjNDZlNGEy
YzM3ODhlODAyMWMzZTM5ZjNjZDNlZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zZXRWZXJzaW9uLW51bGwuanMKQEAgLTAsMCArMSwz
NSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0
cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiB3aXRoIG51
bGwgdmVyc2lvbiBzdHJpbmciKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVu
ZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAg
IGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBl
dmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKG51bGwpOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gcG9zdFNldFZlcnNpb247CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHBvc3RTZXRWZXJzaW9uKCkKK3sKKyAgICBzaG91bGRC
ZSgiZGIudmVyc2lvbiIsICInbnVsbCciKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworCit0
ZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvc2V0VmVyc2lvbi11bmRlZmluZWQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvc2V0VmVyc2lvbi11bmRlZmluZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDc4MzM2ZTM4
ODQzNDBmODMxYTc1N2M2YzYwOTBiYzM1ZDMyYTQxNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zZXRWZXJzaW9uLXVuZGVmaW5lZC5q
cwpAQCAtMCwwICsxLDI4IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0
U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAg
ICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5k
ZXhlZERCIHZlcnNpb24gc3RyaW5nIGlzIHJlcXVpcmVkIik7CisKK2Z1bmN0aW9uIHRlc3QoKQor
eworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlv
bi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3Mo
KQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisK
KyAgICBzaG91bGRUaHJvdygiZGIuc2V0VmVyc2lvbigpOyIpOworICAgIGZpbmlzaEpTVGVzdCgp
OworfQorCisKK3Rlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9zZXRfdmVyc2lvbl9ibG9ja2VkLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NldF92ZXJzaW9uX2Jsb2NrZWQuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NjMzZWI3Yzk5ODgyNDYyYjQ2NmIxMDhlZmU4NGY0ZTc3MmU0ZjA2MAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zZXRfdmVyc2lvbl9i
bG9ja2VkLmpzCkBAIC0wLDAgKzEsNTUgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAg
ICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigi
QW4gb3BlbiBjb25uZWN0aW9uIGJsb2NrcyBhIHNlcGFyYXRlIGNvbm5lY3Rpb24ncyBzZXRWZXJz
aW9uIGNhbGwiKTsKKworY29ubmVjdGlvbnMgPSBbXQorZnVuY3Rpb24gdGVzdCgpCit7CisgICAg
cmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBvcGVuREJDb25uZWN0aW9uKCk7Cit9CisKK2Z1
bmN0aW9uIG9wZW5EQkNvbm5lY3Rpb24oKQoreworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIub3Blbignc2V0LXZlcnNpb24tYmxvY2tlZCcpIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGNvbm5lY3Rp
b24gPSBldmVudC50YXJnZXQucmVzdWx0OworICAgIGNvbm5lY3Rpb25zLnB1c2goY29ubmVjdGlv
bik7CisgICAgb3JpZ2luYWxfdmVyc2lvbiA9IGNvbm5lY3Rpb24udmVyc2lvbjsKKyAgICBpZiAo
Y29ubmVjdGlvbnMubGVuZ3RoIDwgMikKKyAgICAgICAgb3BlbkRCQ29ubmVjdGlvbigpOworICAg
IGVsc2UgeworICAgICAgICB2YXIgdmVyc2lvbkNoYW5nZVJlcXVlc3QgPSBldmFsQW5kTG9nKCJj
b25uZWN0aW9uc1swXS5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgICAgICB2ZXJzaW9u
Q2hhbmdlUmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAg
IHZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uc3VjY2VzcyA9IGluU2V0VmVyc2lvbjsKKyAgICAgICAg
dmVyc2lvbkNoYW5nZVJlcXVlc3Qub25ibG9ja2VkID0gYmxvY2tlZDsKKyAgICB9Cit9CisKK3Nl
ZW5fYmxvY2tlZF9ldmVudCA9IGZhbHNlOworZnVuY3Rpb24gYmxvY2tlZCgpCit7CisgICAgZXZh
bEFuZExvZygic2Vlbl9ibG9ja2VkX2V2ZW50ID0gdHJ1ZSIpOworICAgIGJsb2NrZWRfZXZlbnQg
PSBldmVudDsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImJsb2NrZWRfZXZlbnQudmVyc2lv
biIsICJ2ZXJzaW9uIDEiKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJibG9ja2VkX2V2ZW50LnRh
cmdldC5yZWFkeVN0YXRlIiwgMSk7CisgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbnNbMV0uY2xv
c2UoKSIpOworfQorCitmdW5jdGlvbiBpblNldFZlcnNpb24oKQoreworICAgIGRlYnVnKCJpbiBz
ZXRWZXJzaW9uLm9uc3VjY2VzcyIpOworICAgIHNob3VsZEJlVHJ1ZSgic2Vlbl9ibG9ja2VkX2V2
ZW50Iik7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGNvbm5lY3Rpb25zWzBdKTsKKyAgICBm
aW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NldF92ZXJzaW9uX3F1ZXVlLmpzIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NldF92ZXJzaW9uX3F1ZXVlLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmFhYTM0NWQ0MzdjNjg1OGJhZGEzNzYyZDk5NjYxZmVkMTFiNjVjNjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2V0X3Zl
cnNpb25fcXVldWUuanMKQEAgLTAsMCArMSwxMjIgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMp
IHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlw
dGlvbigiNCBvcGVuIGNvbm5lY3Rpb25zIHRyeSB0byBzZXRWZXJzaW9uIGF0IHRoZSBzYW1lIHRp
bWUuICAzIGNvbm5lY3Rpb25zIGV2ZW50dWFsbHkgY2xvc2UsIGFsbG93aW5nIDEgc2V0VmVyc2lv
biBjYWxsIHRvIHByb2NlZWQuIik7CisKK2Nvbm5lY3Rpb25zID0gW10KK2Z1bmN0aW9uIHRlc3Qo
KQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBvcGVuREJDb25uZWN0aW9u
KCk7Cit9CisKK2Z1bmN0aW9uIG9wZW5EQkNvbm5lY3Rpb24oKQoreworICAgIHJlc3VsdCA9IGV2
YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdzZXQtdmVyc2lvbi1xdWV1ZScpIik7CisgICAgcmVz
dWx0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBj
b25uZWN0aW9uID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICBjb25uZWN0aW9uLm9udmVyc2lv
bmNoYW5nZSA9IGdlbmVyYXRlVmVyc2lvbkNoYW5nZUhhbmRsZXIoKTsKKyAgICBjb25uZWN0aW9u
cy5wdXNoKGNvbm5lY3Rpb24pOworICAgIGlmIChjb25uZWN0aW9ucy5sZW5ndGggPCA0KQorICAg
ICAgICBvcGVuREJDb25uZWN0aW9uKCk7CisgICAgZWxzZSB7CisgICAgICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJjb25uZWN0aW9uc1swXS5zZXRWZXJzaW9uKCd2ZXJzaW9uIDAnKSIpOworICAg
ICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCl7IGNvbm5lY3Rpb25FcnJvcihl
dmVudCwgMCkgfTsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vz
c0NhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uYmxvY2tlZCA9IGJsb2NrZWQwOworICAgICAg
ICByZXF1ZXN0MSA9IGV2YWxBbmRMb2coImNvbm5lY3Rpb25zWzFdLnNldFZlcnNpb24oJ3ZlcnNp
b24gMScpIik7CisgICAgICAgIHJlcXVlc3QxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKKyAgICAgICAgcmVxdWVzdDEub25zdWNjZXNzID0gaW5TZXRWZXJzaW9uMTsKKyAgICAg
ICAgcmVxdWVzdDEub25ibG9ja2VkID0gYmxvY2tlZDE7CisgICAgICAgIHJlcXVlc3QyID0gZXZh
bEFuZExvZygiY29ubmVjdGlvbnNbMl0uc2V0VmVyc2lvbigndmVyc2lvbiAyJykiKTsKKyAgICAg
ICAgcmVxdWVzdDIub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KXsgY29ubmVjdGlvbkVycm9yKGV2
ZW50LCAyKSB9OworICAgICAgICByZXF1ZXN0Mi5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vz
c0NhbGxiYWNrOworICAgICAgICByZXF1ZXN0Mi5vbmJsb2NrZWQgPSBibG9ja2VkMjsKKyAgICAg
ICAgcmVxdWVzdDMgPSBldmFsQW5kTG9nKCJjb25uZWN0aW9uc1szXS5zZXRWZXJzaW9uKCd2ZXJz
aW9uIDMnKSIpOworICAgICAgICByZXF1ZXN0My5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpeyBj
b25uZWN0aW9uRXJyb3IoZXZlbnQsIDMpIH07CisgICAgICAgIHJlcXVlc3QzLm9uc3VjY2VzcyA9
IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3QzLm9uYmxvY2tlZCA9
IGJsb2NrZWQzOworICAgICAgICBkZWJ1ZygiIik7CisgICAgfQorfQorCitmdW5jdGlvbiBnZW5l
cmF0ZVZlcnNpb25DaGFuZ2VIYW5kbGVyKCkKK3sKKyAgICB2YXIgY29ubmVjdGlvbk51bSA9IGNv
bm5lY3Rpb25zLmxlbmd0aDsKKyAgICByZXR1cm4gZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAg
ICAgICBzaG91bGRCZVRydWUoImV2ZW50LnZlcnNpb24ubGVuZ3RoID4gMCIpOworICAgICAgICBk
ZWJ1ZygiY29ubmVjdGlvblsiICsgY29ubmVjdGlvbk51bSArICJdIHJlY2VpdmVkIHZlcnNpb25D
aGFuZ2VFdmVudDogIiArIGV2ZW50LnZlcnNpb24pOworICAgIH0KK30KKworYmxvY2tlZDBmaXJl
ZCA9IGZhbHNlOworYmxvY2tlZDJmaXJlZCA9IGZhbHNlOworZnVuY3Rpb24gYmxvY2tlZDAoZXZl
bnQpCit7CisgICAgZGVidWcoIiIpOworICAgIHRlc3RQYXNzZWQoImNvbm5lY3Rpb25bMF0gZ290
IGJsb2NrZWQgZXZlbnQiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnZlcnNp
b24iLCAidmVyc2lvbiAwIik7CisgICAgZGVidWcoIkNsb3NlIHRoZSBjb25uZWN0aW9uIHRoYXQg
cmVjZWl2ZWQgdGhlIGJsb2NrIGV2ZW50OiIpOworICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb25z
WzBdLmNsb3NlKCkiKTsKKyAgICBkZWJ1ZygiQ2xvc2UgYW5vdGhlciBjb25uZWN0aW9uIGFzIHdl
bGwsIHRvIHRlc3QgNC43LjQtbm90ZToiKTsKKyAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uc1sz
XS5jbG9zZSgpIik7CisgICAgZXZhbEFuZExvZygiYmxvY2tlZDBmaXJlZCA9IHRydWUiKTsKKyAg
ICBkZWJ1ZygiIik7Cit9CisKK2Z1bmN0aW9uIGJsb2NrZWQxKGV2ZW50KQoreworICAgIGRlYnVn
KCIiKQorICAgIHRlc3RQYXNzZWQoImNvbm5lY3Rpb25bMV0gZ290IGJsb2NrZWQgZXZlbnQiKTsK
KyAgICBkZWJ1ZygiRW5zdXJlIHRoYXQgdGhpcyBibG9ja2VkIGV2ZW50IGlzIGluIG9yZGVyOiIp
OworICAgIHNob3VsZEJlVHJ1ZSgiYmxvY2tlZDBmaXJlZCIpOworICAgIHNob3VsZEJlRmFsc2Uo
ImJsb2NrZWQyZmlyZWQiKTsKKyAgICBkZWJ1ZygiIikKK30KKworZnVuY3Rpb24gYmxvY2tlZDIo
ZXZlbnQpCit7CisgICAgZGVidWcoIiIpCisgICAgdGVzdFBhc3NlZCgiY29ubmVjdGlvblsyXSBn
b3QgYmxvY2tlZCBldmVudCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudmVy
c2lvbiIsICJ2ZXJzaW9uIDIiKTsKKyAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uc1syXS5jbG9z
ZSgpIik7CisgICAgZXZhbEFuZExvZygiYmxvY2tlZDJmaXJlZCA9IHRydWUiKTsKKyAgICBkZWJ1
ZygiIikKK30KKworZnVuY3Rpb24gYmxvY2tlZDMoZXZlbnQpCit7CisgICAgZGVidWcoIiIpCisg
ICAgdGVzdFBhc3NlZCgiY29ubmVjdGlvblszXSBnb3QgYmxvY2tlZCBldmVudCIpOworICAgIGRl
YnVnKCJOb3RlOiBUaGlzIG1lYW5zIHRoYXQgYSBjb25uZWN0aW9uIGNhbiByZWNlaXZlIGEgYmxv
Y2tlZCBldmVudCBhZnRlciBpdHMgY2xvc2UoKSBtZXRob2QgaGFzIGJlZW4gY2FsbGVkLiAgU3Bl
YyBpcyBzaWxlbnQgb24gdGhlIGlzc3VlIGFuZCB0aGlzIGlzIGVhc2llc3QgdG8gaW1wbGVtZW50
LiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudmVyc2lvbiIsICJ2ZXJzaW9u
IDMiKTsKK30KKworZnVuY3Rpb24gY29ubmVjdGlvbkVycm9yKGV2ZW50LCBjb25uZWN0aW9uSWQp
Cit7CisgICAgZGVidWcoIiIpCisgICAgdGVzdFBhc3NlZCgiY29ubmVjdGlvblsiICsgY29ubmVj
dGlvbklkICsgIl0gZ290IGVycm9yIGV2ZW50Iik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdl
dC5lcnJvckNvZGUiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uQUJPUlRfRVJSIikKKyAgICBpZiAo
J3dlYmtpdEVycm9yTWVzc2FnZScgaW4gZXZlbnQudGFyZ2V0KSB7CisgICAgICAgIHNob3VsZEJl
KCJldmVudC50YXJnZXQud2Via2l0RXJyb3JNZXNzYWdlLmxlbmd0aCA+IDAiLCAidHJ1ZSIpOwor
ICAgICAgICBkZWJ1ZyhldmVudC50YXJnZXQud2Via2l0RXJyb3JNZXNzYWdlKTsKKyAgICB9Cit9
CisKK2Z1bmN0aW9uIGluU2V0VmVyc2lvbjEoZXZlbnQpCit7CisgICAgZGVidWcoIiIpCisgICAg
dGVzdFBhc3NlZCgiY29ubmVjdGlvblsxXSBnb3QgaW50byBTZXRWZXJzaW9uIik7CisgICAgZmlu
aXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zdHJ1Y3R1cmVkLWNsb25lLmpzIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3N0cnVjdHVyZWQtY2xvbmUuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTY3NTkzMjc0YjAxMjJhNTczODZiNWI0ZDNhNDc2NDRjMmQ1MDFkMAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zdHJ1Y3R1cmVk
LWNsb25lLmpzCkBAIC0wLDAgKzEsNTMxIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Cisg
ICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24o
IlRlc3Qgc3RydWN0dXJlZCBjbG9uZSBwZXJtdXRhdGlvbnMgaW4gSW5kZXhlZERCLiBGaWxlL0Zp
bGVMaXN0IHRlc3RzIHJlcXVpcmUgRHVtcFJlbmRlclRyZWUuIik7CisKK2lmIChzZWxmLmV2ZW50
U2VuZGVyKSB7CisgICAgdmFyIGZpbGVJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJm
aWxlSW5wdXQiKTsKKyAgICB2YXIgZmlsZVJlY3QgPSBmaWxlSW5wdXQuZ2V0Q2xpZW50UmVjdHMo
KVswXTsKKyAgICB2YXIgdGFyZ2V0WCA9IGZpbGVSZWN0LmxlZnQgKyBmaWxlUmVjdC53aWR0aCAv
IDI7CisgICAgdmFyIHRhcmdldFkgPSBmaWxlUmVjdC50b3AgKyBmaWxlUmVjdC5oZWlnaHQgLyAy
OworICAgIGV2ZW50U2VuZGVyLmJlZ2luRHJhZ1dpdGhGaWxlcyhbJ3Jlc291cmNlcy90ZXN0LWRh
dGEuaHRtbCcsICdyZXNvdXJjZXMvdGVzdC1kYXRhLnR4dCddKTsKKyAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyh0YXJnZXRYLCB0YXJnZXRZKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7
Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Cisg
ICAgcHJlcGFyZURhdGFiYXNlKCk7Cit9CisKK2Z1bmN0aW9uIHByZXBhcmVEYXRhYmFzZSgpCit7
CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJQcmVwYXJlIERhdGFiYXNlIik7CisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgnc3RydWN0dXJlZC1j
bG9uZScpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihlKSB7CisgICAgICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbignc3RydWN0dXJlZC1jbG9uZScpIik7CisgICAg
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2co
ImRiID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygiZGIudmVyc2lvbiIsICIiKTsKKyAgICAgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJk
Yi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbihlKSB7CisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ3N0b3JlTmFtZScpIik7CisgICAgICAgICAgICAgICAgdmFyIHRyYW5zID0gcmVxdWVzdC5y
ZXN1bHQ7CisgICAgICAgICAgICAgICAgdHJhbnMub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworICAgICAgICAgICAgICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRD
YWxsYmFjazsKKyAgICAgICAgICAgICAgICB0cmFucy5vbmNvbXBsZXRlID0gc3RhcnRUZXN0czsK
KyAgICAgICAgICAgIH07CisgICAgICAgIH07CisgICAgfTsKK30KKworZnVuY3Rpb24gc3RhcnRU
ZXN0cygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJSdW5uaW5nIHRlc3RzLi4uIik7
CisgICAgdmFyIHRlc3RzX3RvX3J1biA9IFsKKyAgICAgICAgdGVzdFVuZGVmaW5lZCwKKyAgICAg
ICAgdGVzdE51bGwsCisgICAgICAgIHRlc3RCb29sZWFuLAorICAgICAgICB0ZXN0TnVtYmVyLAor
ICAgICAgICB0ZXN0U3RyaW5nLAorICAgICAgICB0ZXN0Qm9vbGVhbk9iamVjdCwKKyAgICAgICAg
dGVzdE51bWJlck9iamVjdCwKKyAgICAgICAgdGVzdFN0cmluZ09iamVjdCwKKyAgICAgICAgdGVz
dERhdGVPYmplY3QsCisgICAgICAgIHRlc3RSZWdFeHBPYmplY3QsCisgICAgICAgIHRlc3RJbWFn
ZURhdGEsCisgICAgICAgIHRlc3RCbG9iLAorICAgICAgICB0ZXN0RmlsZSwKKyAgICAgICAgdGVz
dEZpbGVMaXN0LAorICAgICAgICB0ZXN0QXJyYXksCisgICAgICAgIHRlc3RPYmplY3QKKyAgICBd
OworCisgICAgZnVuY3Rpb24gbmV4dFRlc3QoKSB7CisgICAgICAgIGRlYnVnKCIiKTsKKyAgICAg
ICAgaWYgKHRlc3RzX3RvX3J1bi5sZW5ndGgpIHsKKyAgICAgICAgICAgIHZhciB0ZXN0ID0gdGVz
dHNfdG9fcnVuLnNoaWZ0KCk7CisgICAgICAgICAgICB0ZXN0KG5leHRUZXN0KTsgLy8gV2hlbiBk
b25lLCBjYWxsIHRoaXMgYWdhaW4uCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0ZXN0
QmFkVHlwZXMoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBuZXh0VGVzdCgpOworfQorCitmdW5j
dGlvbiBmb3JFYWNoV2l0aENhbGxiYWNrKHRlc3RGdW5jdGlvbiwgdmFsdWVzLCBjYWxsYmFjaykK
K3sKKyAgICBmdW5jdGlvbiBuZXh0VmFsdWUoKSB7CisgICAgICAgIGlmICh2YWx1ZXMubGVuZ3Ro
KSB7CisgICAgICAgICAgICB0ZXN0RnVuY3Rpb24odmFsdWVzLnNoaWZ0KCksIG5leHRWYWx1ZSk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjYWxsYmFjaygpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgbmV4dFZhbHVlKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RWYWx1ZSh2YWx1ZSwg
Y2FsbGJhY2spCit7CisgICAgLy8gT25lIHRyYW5zYWN0aW9uIHBlciB0ZXN0LCBzaW5jZSBzb21l
IHRlc3RzIHJlcXVpcmUgYXN5bmNocm9ub3VzCisgICAgLy8gb3BlcmF0aW9ucyB0byB2ZXJpZnkg
dGhlIHJlc3VsdCAoZS5nLiB2aWEgRmlsZVJlYWRlcikKKyAgICBldmFsQW5kTG9nKCJ0cmFuc2Fj
dGlvbiA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZU5hbWUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dS
SVRFKSIpOworICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Cisg
ICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1l
JykiKTsKKworICAgIHNlbGYudmFsdWUgPSB2YWx1ZTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
Zygic3RvcmUucHV0KHZhbHVlLCAna2V5JykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUp
IHsKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmdldCgna2V5JykiKTsKKyAg
ICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgY2FsbGJhY2so
cmVxdWVzdC5yZXN1bHQpOworICAgICAgICB9OworICAgIH07Cit9CisKKy8vIElkZW50aXR5IHRl
c3RpbmcsIHNlbnNpdGl2ZSB0byBOYU4gYW5kIC0wCitmdW5jdGlvbiBpcyh4LCB5KSB7CisgICAg
aWYgKHggPT09IHkpIHsKKyAgICAgICAgcmV0dXJuIHggIT09IDAgfHwgMSAvIHggPT09IDEgLyB5
OworICAgIH0KKyAgICByZXR1cm4geCAhPT0geCAmJiB5ICE9PSB5OworfQorCitmdW5jdGlvbiBh
cnJheUNvbXBhcmUoYSwgYikgeworICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGEubGVu
Z3RoOyArK2kpIHsKKyAgICAgICAgaWYgKCFpcyhhW2ldLCBiW2ldKSkgeworICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitm
dW5jdGlvbiB0ZXN0UHJpbWl0aXZlVmFsdWUoc3RyaW5nLCBjYWxsYmFjaykKK3sKKyAgICBkZWJ1
ZygiVGVzdGluZzogIiArIHN0cmluZyk7CisgICAgdmFyIHZhbHVlID0gZXZhbCgidmFsdWUgPSAo
IiArIHN0cmluZyArICIpIik7CisgICAgdGVzdF9kYXRhID0gdmFsdWU7CisgICAgdGVzdFZhbHVl
KHRlc3RfZGF0YSwgZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgIHNlbGYucmVzdWx0ID0gcmVz
dWx0OworICAgICAgICBzaG91bGRCZVRydWUoImlzKHRlc3RfZGF0YSwgcmVzdWx0KSIpOworICAg
ICAgICBkZWJ1ZygiIik7CisgICAgICAgIGNhbGxiYWNrKCk7CisgICAgfSk7Cit9CisKK2Z1bmN0
aW9uIHRlc3RPYmplY3RXaXRoVmFsdWUoc3RyaW5nLCBjYWxsYmFjaykKK3sKKyAgICBkZWJ1Zygi
VGVzdGluZzogIiArIHN0cmluZyk7CisgICAgdmFyIHZhbHVlID0gZXZhbCgidmFsdWUgPSAoIiAr
IHN0cmluZyArICIpIik7CisgICAgdGVzdF9kYXRhID0gdmFsdWU7CisgICAgdGVzdFZhbHVlKHRl
c3RfZGF0YSwgZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgIHNlbGYucmVzdWx0ID0gcmVzdWx0
OworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiByZXN1bHQiLCAib2JqZWN0
Iik7CisgICAgICAgIHNob3VsZEJlKCJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocmVz
dWx0KSIsICJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodGVzdF9kYXRhKSIpOworICAg
ICAgICBzaG91bGRCZVRydWUoInRlc3RfZGF0YSAhPT0gcmVzdWx0Iik7CisgICAgICAgIHNob3Vs
ZEJlKCJyZXN1bHQudG9TdHJpbmcoKSIsICJ0ZXN0X2RhdGEudG9TdHJpbmcoKSIpOworICAgICAg
ICBzaG91bGRCZVRydWUoImlzKHRlc3RfZGF0YS52YWx1ZU9mKCksIHJlc3VsdC52YWx1ZU9mKCkp
Iik7CisgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgY2FsbGJhY2soKTsKKyAgICB9KTsKK30K
KworZnVuY3Rpb24gdGVzdFVuZGVmaW5lZChjYWxsYmFjaykKK3sKKyAgICB0ZXN0UHJpbWl0aXZl
VmFsdWUoInVuZGVmaW5lZCIsIGNhbGxiYWNrKTsKK30KKworZnVuY3Rpb24gdGVzdE51bGwoY2Fs
bGJhY2spCit7CisgICAgdGVzdFByaW1pdGl2ZVZhbHVlKCJudWxsIiwgY2FsbGJhY2spOworfQor
CitmdW5jdGlvbiB0ZXN0Qm9vbGVhbihjYWxsYmFjaykKK3sKKyAgICBkZWJ1ZygiVGVzdGluZyBi
b29sZWFuIHByaW1pdGl2ZXMiKTsKKyAgICBkZWJ1ZygiIik7CisgICAgZm9yRWFjaFdpdGhDYWxs
YmFjayh0ZXN0UHJpbWl0aXZlVmFsdWUsIFsidHJ1ZSIsICJmYWxzZSJdLCBjYWxsYmFjayk7Cit9
CisKK2Z1bmN0aW9uIHRlc3RCb29sZWFuT2JqZWN0KGNhbGxiYWNrKQoreworICAgIGRlYnVnKCJU
ZXN0aW5nIEJvb2xlYW4gb2JqZWN0cyIpOworICAgIGRlYnVnKCIiKTsKKyAgICBmb3JFYWNoV2l0
aENhbGxiYWNrKHRlc3RPYmplY3RXaXRoVmFsdWUsIFsKKyAgICAgICAgIm5ldyBCb29sZWFuKHRy
dWUpIiwKKyAgICAgICAgIm5ldyBCb29sZWFuKGZhbHNlKSIKKyAgICBdLCBjYWxsYmFjayk7Cit9
CisKK2Z1bmN0aW9uIHRlc3RTdHJpbmcoY2FsbGJhY2spCit7CisgICAgZGVidWcoIlRlc3Rpbmcg
c3RyaW5nIHByaW1pdGl2ZXMiKTsKKyAgICBkZWJ1ZygiIik7CisgICAgZm9yRWFjaFdpdGhDYWxs
YmFjayh0ZXN0UHJpbWl0aXZlVmFsdWUsIFsKKyAgICAgICAgIicnIiwKKyAgICAgICAgIid0aGlz
IGlzIGEgc2FtcGxlIHN0cmluZyciLAorICAgICAgICAiJ251bGwoXFwwKSciCisgICAgXSwgY2Fs
bGJhY2spOworfQorCitmdW5jdGlvbiB0ZXN0U3RyaW5nT2JqZWN0KGNhbGxiYWNrKQoreworICAg
IGRlYnVnKCJUZXN0aW5nIFN0cmluZyBvYmplY3RzIik7CisgICAgZGVidWcoIiIpOworICAgIGZv
ckVhY2hXaXRoQ2FsbGJhY2sodGVzdE9iamVjdFdpdGhWYWx1ZSwgWworICAgICAgICAibmV3IFN0
cmluZygpIiwKKyAgICAgICAgIm5ldyBTdHJpbmcoJ3RoaXMgaXMgYSBzYW1wbGUgc3RyaW5nJyki
LAorICAgICAgICAibmV3IFN0cmluZygnbnVsbChcXDApJykiCisgICAgXSwgY2FsbGJhY2spOwor
fQorCitmdW5jdGlvbiB0ZXN0TnVtYmVyKGNhbGxiYWNrKQoreworICAgIGRlYnVnKCJUZXN0aW5n
IG51bWJlciBwcmltaXRpdmVzIik7CisgICAgZGVidWcoIiIpOworICAgIGZvckVhY2hXaXRoQ2Fs
bGJhY2sodGVzdFByaW1pdGl2ZVZhbHVlLCBbCisgICAgICAgICJOYU4iLAorICAgICAgICAiLUlu
ZmluaXR5IiwKKyAgICAgICAgIi1OdW1iZXIuTUFYX1ZBTFVFIiwKKyAgICAgICAgIi1OdW1iZXIu
TUlOX1ZBTFVFIiwKKyAgICAgICAgIi0wIiwKKyAgICAgICAgIjAiLAorICAgICAgICAiTnVtYmVy
Lk1JTl9WQUxVRSIsCisgICAgICAgICJOdW1iZXIuTUFYX1ZBTFVFIiwKKyAgICAgICAgIkluZmlu
aXR5IgorICAgIF0sIGNhbGxiYWNrKTsKK30KKworZnVuY3Rpb24gdGVzdE51bWJlck9iamVjdChj
YWxsYmFjaykKK3sKKyAgICBkZWJ1ZygiVGVzdGluZyBOdW1iZXIgb2JqZWN0cyIpOworICAgIGRl
YnVnKCIiKTsKKyAgICBmb3JFYWNoV2l0aENhbGxiYWNrKHRlc3RPYmplY3RXaXRoVmFsdWUsIFsK
KyAgICAgICAgIm5ldyBOdW1iZXIoTmFOKSIsCisgICAgICAgICJuZXcgTnVtYmVyKC1JbmZpbml0
eSkiLAorICAgICAgICAibmV3IE51bWJlcigtTnVtYmVyLk1BWF9WQUxVRSkiLAorICAgICAgICAi
bmV3IE51bWJlcigtTnVtYmVyLk1JTl9WQUxVRSkiLAorICAgICAgICAibmV3IE51bWJlcigtMCki
LAorICAgICAgICAibmV3IE51bWJlcigwKSIsCisgICAgICAgICJuZXcgTnVtYmVyKE51bWJlci5N
SU5fVkFMVUUpIiwKKyAgICAgICAgIm5ldyBOdW1iZXIoTnVtYmVyLk1BWF9WQUxVRSkiLAorICAg
ICAgICAibmV3IE51bWJlcihJbmZpbml0eSkiCisgICAgXSwgY2FsbGJhY2spOworfQorCitmdW5j
dGlvbiB0ZXN0RGF0ZU9iamVjdChjYWxsYmFjaykKK3sKKyAgICBkZWJ1ZygiVGVzdGluZyBEYXRl
IG9iamVjdHMiKTsKKyAgICBkZWJ1ZygiIik7CisgICAgZm9yRWFjaFdpdGhDYWxsYmFjayh0ZXN0
T2JqZWN0V2l0aFZhbHVlLCBbCisgICAgICAgICJuZXcgRGF0ZSgtMWUxMykiLAorICAgICAgICAi
bmV3IERhdGUoLTFlMTIpIiwKKyAgICAgICAgIm5ldyBEYXRlKC0xZTkpIiwKKyAgICAgICAgIm5l
dyBEYXRlKC0xZTYpIiwKKyAgICAgICAgIm5ldyBEYXRlKC0xZTMpIiwKKyAgICAgICAgIm5ldyBE
YXRlKDApIiwKKyAgICAgICAgIm5ldyBEYXRlKDFlMykiLAorICAgICAgICAibmV3IERhdGUoMWU2
KSIsCisgICAgICAgICJuZXcgRGF0ZSgxZTkpIiwKKyAgICAgICAgIm5ldyBEYXRlKDFlMTIpIiwK
KyAgICAgICAgIm5ldyBEYXRlKDFlMTMpIgorICAgIF0sIGNhbGxiYWNrKTsKK30KKworZnVuY3Rp
b24gdGVzdFJlZ0V4cE9iamVjdChjYWxsYmFjaykKK3sKKyAgICBkZWJ1ZygiVGVzdGluZyBSZWdF
eHAgb2JqZWN0cyIpOworICAgIGRlYnVnKCIiKTsKKyAgICBmdW5jdGlvbiB0ZXN0UmVnRXhwKHN0
cmluZywgY2FsbGJhY2spIHsKKyAgICAgICAgZGVidWcoIlRlc3RpbmcgUmVnRXhwOiAiICsgc3Ry
aW5nKTsKKyAgICAgICAgdmFyIHZhbHVlID0gZXZhbCgidmFsdWUgPSAoIiArIHN0cmluZyArICIp
Iik7CisgICAgICAgIHRlc3RfZGF0YSA9IHZhbHVlOworICAgICAgICB0ZXN0VmFsdWUodGVzdF9k
YXRhLCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgICAgICAgIHNlbGYucmVzdWx0ID0gcmVzdWx0
OworICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXN0X2RhdGEgIT09IHJlc3VsdCIpOworICAg
ICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5n
LmNhbGwocmVzdWx0KSIsICJbb2JqZWN0IFJlZ0V4cF0iKTsKKyAgICAgICAgICAgIHNob3VsZEJl
KCJyZXN1bHQudG9TdHJpbmcoKSIsICJ0ZXN0X2RhdGEudG9TdHJpbmcoKSIpOworICAgICAgICAg
ICAgZGVidWcoIiIpOworICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgfSk7CisgICAg
fQorCisgICAgZm9yRWFjaFdpdGhDYWxsYmFjayh0ZXN0UmVnRXhwLCBbCisgICAgICAgICJuZXcg
UmVnRXhwKCkiLAorICAgICAgICAiL2FiYy8iLAorICAgICAgICAiL2FiYy9nIiwKKyAgICAgICAg
Ii9hYmMvaSIsCisgICAgICAgICIvYWJjL2dpIiwKKyAgICAgICAgIi9hYmMvbSIsCisgICAgICAg
ICIvYWJjL21nIiwKKyAgICAgICAgIi9hYmMvbWkiLAorICAgICAgICAiL2FiYy9tZ2kiCisgICAg
XSwgY2FsbGJhY2spOworfQorCitmdW5jdGlvbiB0ZXN0SW1hZ2VEYXRhKGNhbGxiYWNrKQorewor
ICAgIGRlYnVnKCJUZXN0aW5nIEltYWdlRGF0YSIpOworICAgIGV2YWxBbmRMb2coImNhbnZhcyA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpIik7CisgICAgZXZhbEFuZExvZygiY2Fu
dmFzLndpZHRoID0gOCIpOworICAgIGV2YWxBbmRMb2coImNhbnZhcy5oZWlnaHQgPSA4Iik7Cisg
ICAgZXZhbEFuZExvZygidGVzdF9kYXRhID0gY2FudmFzLmdldENvbnRleHQoJzJkJykuZ2V0SW1h
Z2VEYXRhKDAsIDAsIDgsIDgpIik7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI1NjsgKytp
KSB7CisgICAgICAgIHRlc3RfZGF0YS5kYXRhW2ldID0gaTsKKyAgICB9CisKKyAgICB0ZXN0VmFs
dWUodGVzdF9kYXRhLCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgICAgc2VsZi5yZXN1bHQgPSBy
ZXN1bHQ7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgidGVzdF9kYXRhICE9PSByZXN1bHQiKTsKKyAg
ICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNh
bGwocmVzdWx0KSIsICJbb2JqZWN0IEltYWdlRGF0YV0iKTsKKyAgICAgICAgc2hvdWxkQmUoInJl
c3VsdC53aWR0aCIsICJ0ZXN0X2RhdGEud2lkdGgiKTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3Vs
dC5oZWlnaHQiLCAidGVzdF9kYXRhLmhlaWdodCIpOworICAgICAgICBzaG91bGRCZSgicmVzdWx0
LmRhdGEubGVuZ3RoIiwgInRlc3RfZGF0YS5kYXRhLmxlbmd0aCIpOworICAgICAgICBpZiAoYXJy
YXlDb21wYXJlKHRlc3RfZGF0YS5kYXRhLCByZXN1bHQuZGF0YSkpIHsKKyAgICAgICAgICAgIHRl
c3RQYXNzZWQoInJlc3VsdCBkYXRhIG1hdGNoZXMiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIHRlc3RGYWlsZWQoInJlc3VsdCBkYXRhIGRvZXNuJ3QgbWF0Y2giKTsKKyAgICAgICAg
fQorICAgICAgICBjYWxsYmFjaygpOworICAgIH0pOworfQorCitmdW5jdGlvbiByZWFkQmxvYkFz
VGV4dChibG9iLCBjYWxsYmFjaykKK3sKKyAgICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIo
KTsKKyAgICByZWFkZXIub25sb2FkID0gZnVuY3Rpb24oZSkgeworICAgICAgICBpZiAoZS50YXJn
ZXQucmVhZHlTdGF0ZSA9PT0gRmlsZVJlYWRlci5ET05FKSB7CisgICAgICAgICAgICBjYWxsYmFj
ayhlLnRhcmdldC5yZXN1bHQpOworICAgICAgICB9CisgICAgfTsKKyAgICByZWFkZXIub25lcnJv
ciA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiRXJyb3IgcmVhZGluZyBibG9i
IGFzIHRleHQ6ICIgKyBlKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfTsKKyAgICBy
ZWFkZXIucmVhZEFzVGV4dChibG9iKTsKK30KKworZnVuY3Rpb24gY2hlY2tCbG9iQ29udGVudHMo
YmxvYiwgZXhwZWN0ZWQsIGNhbGxiYWNrKQoreworICAgIHJlYWRCbG9iQXNUZXh0KGJsb2IsIGZ1
bmN0aW9uKHRleHQpIHsKKyAgICAgICAgc2VsZi50ZXh0ID0gdGV4dDsKKyAgICAgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJ0ZXh0IiwgZXhwZWN0ZWQpOworICAgICAgICBjYWxsYmFjaygpOwor
ICAgIH0pOworfQorCitmdW5jdGlvbiBjb21wYXJlQmxvYnMoYmxvYjEsIGJsb2IyLCBjYWxsYmFj
aykKK3sKKyAgICByZWFkQmxvYkFzVGV4dChibG9iMSwgZnVuY3Rpb24odGV4dDEpIHsKKyAgICAg
ICAgcmVhZEJsb2JBc1RleHQoYmxvYjIsIGZ1bmN0aW9uKHRleHQyKSB7CisgICAgICAgICAgICBz
ZWxmLnRleHQxID0gdGV4dDE7CisgICAgICAgICAgICBzZWxmLnRleHQyID0gdGV4dDI7CisgICAg
ICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInRleHQyIiwgdGV4dDEpOworICAgICAgICAg
ICAgY2FsbGJhY2soKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIHRlc3RC
bG9iKGNhbGxiYWNrKQoreworICAgIGRlYnVnKCJUZXN0aW5nIEJsb2IiKTsKKworICAgIC8vIEZJ
WE1FOiBCbG9iLCBGaWxlLCBhbmQgRmlsZUxpc3Qgc3VwcG9ydCBpcyBpbmNvbXBsZXRlLgorICAg
IC8vIGh0dHA6Ly9jcmJ1Zy5jb20vMTA4MDEyCisgICAgZGVidWcoIlNraXBwaW5nIHRlc3QiKTsK
KyAgICBjYWxsYmFjaygpOworICAgIHJldHVybjsKKworICAgIGV2YWxBbmRMb2coIkJsb2JCdWls
ZGVyID0gc2VsZi5CbG9iQnVpbGRlciB8fCBzZWxmLldlYktpdEJsb2JCdWlsZGVyIik7CisgICAg
c2hvdWxkQmVUcnVlKCJCbG9iQnVpbGRlciAhPSBudWxsIik7CisgICAgc2hvdWxkQmVUcnVlKCJG
aWxlUmVhZGVyICE9IG51bGwiKTsKKyAgICBldmFsQW5kTG9nKCJidWlsZGVyID0gbmV3IEJsb2JC
dWlsZGVyKCkiKTsKKyAgICBldmFsQW5kTG9nKCJ0ZXN0X2NvbnRlbnQgPSAnVGhpcyBpcyBhIHRl
c3QuIFRoaXMgaXMgb25seSBhIHRlc3QuJyIpOworICAgIGV2YWxBbmRMb2coImJ1aWxkZXIuYXBw
ZW5kKHRlc3RfY29udGVudCkiKTsKKyAgICBldmFsQW5kTG9nKCJ0ZXN0X2RhdGEgPSBidWlsZGVy
LmdldEJsb2IoKSIpOworICAgIHRlc3RWYWx1ZSh0ZXN0X2RhdGEsIGZ1bmN0aW9uKHJlc3VsdCkg
eworICAgICAgICBzZWxmLnJlc3VsdCA9IHJlc3VsdDsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJ0
ZXN0X2RhdGEgIT09IHJlc3VsdCIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIk9i
amVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChyZXN1bHQpIiwgIltvYmplY3QgQmxvYl0iKTsK
KyAgICAgICAgc2hvdWxkQmUoInJlc3VsdC5zaXplIiwgInRlc3RfZGF0YS5zaXplIik7CisgICAg
ICAgIHNob3VsZEJlKCJyZXN1bHQudHlwZSIsICJ0ZXN0X2RhdGEudHlwZSIpOworICAgICAgICBj
aGVja0Jsb2JDb250ZW50cyhyZXN1bHQsIHRlc3RfY29udGVudCwgY2FsbGJhY2spOworICAgIH0p
OworfQorCitmdW5jdGlvbiBjb21wYXJlRmlsZXMoZmlsZTEsIGZpbGUyLCBjYWxsYmFjaykKK3sK
KyAgICBzZWxmLmZpbGUxID0gZmlsZTE7CisgICAgc2VsZi5maWxlMiA9IGZpbGUyOworICAgIHNo
b3VsZEJlVHJ1ZSgiZmlsZTEgIT09IGZpbGUyIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZmlsZTEpIiwgIltvYmplY3QgRmlsZV0i
KTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcu
Y2FsbChmaWxlMikiLCAiW29iamVjdCBGaWxlXSIpOworICAgIGRlYnVnKCJmaWxlMS5zaXplOiAi
ICsgZmlsZTEuc2l6ZSk7CisgICAgc2hvdWxkQmUoImZpbGUxLnNpemUiLCAiZmlsZTIuc2l6ZSIp
OworICAgIGRlYnVnKCJmaWxlMS50eXBlOiAiICsgZmlsZTEudHlwZSk7CisgICAgc2hvdWxkQmUo
ImZpbGUxLnR5cGUiLCAiZmlsZTIudHlwZSIpOworICAgIGRlYnVnKCJmaWxlMS5uYW1lOiAiICsg
ZmlsZTEubmFtZSk7CisgICAgc2hvdWxkQmUoImZpbGUxLm5hbWUiLCAiZmlsZTIubmFtZSIpOwor
ICAgIHNob3VsZEJlKCJTdHJpbmcoZmlsZTEubGFzdE1vZGlmaWVkRGF0ZSkiLCAiU3RyaW5nKGZp
bGUyLmxhc3RNb2RpZmllZERhdGUpIik7CisgICAgaWYgKGNhbGxiYWNrKSB7CisgICAgICAgIGNv
bXBhcmVCbG9icyhmaWxlMSwgZmlsZTIsIGNhbGxiYWNrKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9u
IHRlc3RGaWxlKGNhbGxiYWNrKQoreworICAgIGRlYnVnKCJUZXN0aW5nIEZpbGUiKTsKKworICAg
IC8vIEZJWE1FOiBCbG9iLCBGaWxlLCBhbmQgRmlsZUxpc3Qgc3VwcG9ydCBpcyBpbmNvbXBsZXRl
LgorICAgIC8vIGh0dHA6Ly9jcmJ1Zy5jb20vMTA4MDEyCisgICAgZGVidWcoIlNraXBwaW5nIHRl
c3QiKTsKKyAgICBjYWxsYmFjaygpOworICAgIHJldHVybjsKKworICAgIGV2YWxBbmRMb2coInRl
c3RfY29udGVudCA9IGZpbGVJbnB1dC5maWxlc1swXSIpOworCisgICAgc2VsZi50ZXN0X2RhdGEg
PSB0ZXN0X2NvbnRlbnQ7CisgICAgdGVzdFZhbHVlKHRlc3RfZGF0YSwgZnVuY3Rpb24ocmVzdWx0
KSB7CisgICAgICAgIHNlbGYucmVzdWx0ID0gcmVzdWx0OworICAgICAgICBjb21wYXJlRmlsZXMo
cmVzdWx0LCB0ZXN0X2RhdGEsIGNhbGxiYWNrKTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gdGVz
dEZpbGVMaXN0KGNhbGxiYWNrKQoreworICAgIGRlYnVnKCJUZXN0aW5nIEZpbGVMaXN0Iik7CisK
KyAgICAvLyBGSVhNRTogQmxvYiwgRmlsZSwgYW5kIEZpbGVMaXN0IHN1cHBvcnQgaXMgaW5jb21w
bGV0ZS4KKyAgICAvLyBodHRwOi8vY3JidWcuY29tLzEwODAxMgorICAgIGRlYnVnKCJTa2lwcGlu
ZyB0ZXN0Iik7CisgICAgY2FsbGJhY2soKTsKKyAgICByZXR1cm47CisKKyAgICBldmFsQW5kTG9n
KCJ0ZXN0X2NvbnRlbnQgPSBmaWxlSW5wdXQuZmlsZXMiKTsKKworICAgIHNlbGYudGVzdF9kYXRh
ID0gdGVzdF9jb250ZW50OworICAgIHRlc3RWYWx1ZSh0ZXN0X2RhdGEsIGZ1bmN0aW9uKHJlc3Vs
dCkgeworICAgICAgICBzZWxmLnJlc3VsdCA9IHJlc3VsdDsKKyAgICAgICAgc2hvdWxkQmVUcnVl
KCJ0ZXN0X2RhdGEgIT09IHJlc3VsdCIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
Ik9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChyZXN1bHQpIiwgIltvYmplY3QgRmlsZUxp
c3RdIik7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHQubGVuZ3RoIiwgInRlc3RfZGF0YS5sZW5n
dGgiKTsKKyAgICAgICAgaSA9IDA7CisgICAgICAgIGZ1bmN0aW9uIGRvTmV4dCgpIHsKKyAgICAg
ICAgICAgIGlmIChpID49IHRlc3RfZGF0YS5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBjYWxs
YmFjaygpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiY29t
cGFyaW5nIGZpbGVbIiArIGkgKyAiXSIpOworICAgICAgICAgICAgICAgIGNvbXBhcmVGaWxlcyhy
ZXN1bHRbaV0sIHRlc3RfZGF0YVtpKytdLCBkb05leHQpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIGRvTmV4dCgpOworICAgIH0pOworfQorCitmdW5jdGlvbiB0ZXN0QXJyYXko
Y2FsbGJhY2spIHsKKyAgICBkZWJ1ZygiVGVzdGluZyBBcnJheSIpOworICAgIGV2YWxBbmRMb2co
InRlc3RfZGF0YSA9IFtdIik7CisgICAgZXZhbEFuZExvZygidGVzdF9kYXRhWzBdID0gJ2Zvbyci
KTsKKyAgICBldmFsQW5kTG9nKCJ0ZXN0X2RhdGFbMV0gPSAnYmFyJyIpOworICAgIGV2YWxBbmRM
b2coInRlc3RfZGF0YVsxMF0gPSB0cnVlIik7CisgICAgZXZhbEFuZExvZygidGVzdF9kYXRhWzEx
XSA9IGZhbHNlIik7CisgICAgZXZhbEFuZExvZygidGVzdF9kYXRhWzIwXSA9IDEyMyIpOworICAg
IGV2YWxBbmRMb2coInRlc3RfZGF0YVsyMV0gPSA0NTYiKTsKKyAgICBldmFsQW5kTG9nKCJ0ZXN0
X2RhdGFbMzBdID0gbnVsbCIpOworCisgICAgdGVzdFZhbHVlKHRlc3RfZGF0YSwgZnVuY3Rpb24o
cmVzdWx0KSB7CisgICAgICAgIHNlbGYucmVzdWx0ID0gcmVzdWx0OworICAgICAgICBzaG91bGRC
ZVRydWUoInRlc3RfZGF0YSAhPT0gcmVzdWx0Iik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgidGVz
dF9kYXRhLmxlbmd0aCA9PT0gcmVzdWx0Lmxlbmd0aCIpOworICAgICAgICBPYmplY3Qua2V5cyh0
ZXN0X2RhdGEpLmZvckVhY2goCisgICAgICAgICAgICBmdW5jdGlvbihrZXkpIHsKKyAgICAgICAg
ICAgICAgICBzaG91bGRCZSgidGVzdF9kYXRhWyIgKyBrZXkgKyAiXSIsICJyZXN1bHRbIiArIGtl
eSArICJdIik7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgY2FsbGJhY2soKTsKKyAgICB9KTsK
K30KKworZnVuY3Rpb24gdGVzdE9iamVjdChjYWxsYmFjaykgeworICAgIGRlYnVnKCJUZXN0aW5n
IE9iamVjdCIpOworICAgIGV2YWxBbmRMb2coInRlc3RfZGF0YSA9IFtdIik7CisgICAgZXZhbEFu
ZExvZygidGVzdF9kYXRhWzBdID0gJ2ZvbyciKTsKKyAgICBldmFsQW5kTG9nKCJ0ZXN0X2RhdGFb
MV0gPSAnYmFyJyIpOworICAgIGV2YWxBbmRMb2coInRlc3RfZGF0YVsnYSddID0gdHJ1ZSIpOwor
ICAgIGV2YWxBbmRMb2coInRlc3RfZGF0YVsnYiddID0gZmFsc2UiKTsKKyAgICBldmFsQW5kTG9n
KCJ0ZXN0X2RhdGFbJ2ZvbyddID0gMTIzIik7CisgICAgZXZhbEFuZExvZygidGVzdF9kYXRhWydi
YXInXSA9IDQ1NiIpOworICAgIGV2YWxBbmRMb2coInRlc3RfZGF0YVsnJ10gPSBudWxsIik7CisK
KyAgICB0ZXN0VmFsdWUodGVzdF9kYXRhLCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgICAgc2Vs
Zi5yZXN1bHQgPSByZXN1bHQ7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgidGVzdF9kYXRhICE9PSBy
ZXN1bHQiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJhcnJheUNvbXBhcmUoT2JqZWN0LmtleXMo
cmVzdWx0KS5zb3J0KCksIE9iamVjdC5rZXlzKHRlc3RfZGF0YSkuc29ydCgpKSIpOworICAgICAg
ICBPYmplY3Qua2V5cyh0ZXN0X2RhdGEpLmZvckVhY2goCisgICAgICAgICAgICBmdW5jdGlvbihr
ZXkpIHsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgidGVzdF9kYXRhWyIgKyBKU09OLnN0cmlu
Z2lmeShrZXkpICsgIl0iLCAicmVzdWx0WyIgKyBKU09OLnN0cmluZ2lmeShrZXkpICsgIl0iKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICBjYWxsYmFjaygpOworICAgIH0pOworfQorCitmdW5j
dGlvbiB0ZXN0QmFkVHlwZXMoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVzdCB0
eXBlcyB0aGF0IGNhbid0IGJlIGNsb25lZDoiKTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICBldmFs
QW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZU5hbWUnLCBJREJUcmFu
c2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rp
b24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgdHJhbnNhY3Rpb24ub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB1
bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjazsKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gZmlu
aXNoSlNUZXN0OworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJPdGhlciBKYXZhU2NyaXB0
IG9iamVjdCB0eXBlczoiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5wdXQo
bmV3IEVycm9yLCAna2V5JykiLCAiRE9NRXhjZXB0aW9uLkRBVEFfQ0xPTkVfRVJSIik7CisgICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KG5ldyBGdW5jdGlvbiwgJ2tleScpIiwg
IkRPTUV4Y2VwdGlvbi5EQVRBX0NMT05FX0VSUiIpOworCisgICAgZGVidWcoIiIpOworICAgIGRl
YnVnKCJPdGhlciBob3N0IG9iamVjdCB0eXBlczoiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJzdG9yZS5wdXQoc2VsZiwgJ2tleScpIiwgIkRPTUV4Y2VwdGlvbi5EQVRBX0NMT05FX0VS
UiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLnB1dChkb2N1bWVudCwgJ2tl
eScpIiwgIkRPTUV4Y2VwdGlvbi5EQVRBX0NMT05FX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RF
eGNlcHRpb24oInN0b3JlLnB1dChkb2N1bWVudC5ib2R5LCAna2V5JykiLCAiRE9NRXhjZXB0aW9u
LkRBVEFfQ0xPTkVfRVJSIik7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
dHJhbnNhY3Rpb24tYWJvcnQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvdHJhbnNhY3Rpb24tYWJvcnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTg2OGU4NzllM2M0NDk0NmM5
ZDkxMWJjZThiZTY5NjAyMDczMzc2MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1hYm9ydC5qcwpAQCAtMCwwICsx
LDkwIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3Jp
cHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgdHJhbnNhY3Rpb24gYWJv
cnRzIHNlbmQgdGhlIHByb3BlciBvbmFib3J0IG1lc3NhZ2VzLi4iKTsKKworZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJpbmRleGVkREIub3BlbignbmFtZScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBzZXRWZXJzaW9uOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2co
ImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGRlbGV0ZUV4aXN0aW5nOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxldGVFeGlzdGluZygpCit7CisgICAgZGVidWcoInNl
dFZlcnNpb25TdWNjZXNzKCk6Iik7CisgICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5z
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51
bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAg
ZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IHN0YXJ0VGVzdCIpOworCisgICAgZGVsZXRl
QWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBk
Yi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiBzdGFydFRlc3QoKQoreworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50
cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwor
ICAgIGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSB0cmFuc2FjdGlvbkFib3J0ZWQiKTsKKyAg
ICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJh
Y2siKTsKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUo
J3N0b3JlTmFtZScpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDog
J3ZhbHVlMicsIHk6ICd6enoyJ30sICdrZXkyJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBm
aXJzdEFkZDsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJh
Y2s7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlMycsIHk6
ICd6enozJ30sICdrZXkzJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBzZWNvbmRBZGQ7Cisg
ICAgdHJhbnMuYWJvcnQoKTsKKworICAgIGZpcnN0RXJyb3IgPSBmYWxzZTsKKyAgICBzZWNvbmRF
cnJvciA9IGZhbHNlOworICAgIGFib3J0RmlyZWQgPSBmYWxzZTsKK30KKworZnVuY3Rpb24gZmly
c3RBZGQoKQoreworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuZXJyb3JDb2RlIiwgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLkFCT1JUX0VSUiIpOworICAgIHNob3VsZEJlRmFsc2UoImZpcnN0RXJy
b3IiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJzZWNvbmRFcnJvciIpOworICAgIHNob3VsZEJlRmFs
c2UoImFib3J0RmlyZWQiKTsKKyAgICBmaXJzdEVycm9yID0gdHJ1ZTsKKworICAgIGV2YWxBbmRF
eHBlY3RFeGNlcHRpb24oInN0b3JlLmFkZCh7eDogJ3ZhbHVlNCcsIHk6ICd6eno0J30sICdrZXk0
JykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7Cit9
CisKK2Z1bmN0aW9uIHNlY29uZEFkZCgpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5l
cnJvckNvZGUiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uQUJPUlRfRVJSIik7CisgICAgc2hvdWxk
QmVUcnVlKCJmaXJzdEVycm9yIik7CisgICAgc2hvdWxkQmVGYWxzZSgic2Vjb25kRXJyb3IiKTsK
KyAgICBzaG91bGRCZUZhbHNlKCJhYm9ydEZpcmVkIik7CisgICAgc2Vjb25kRXJyb3IgPSB0cnVl
OworfQorCitmdW5jdGlvbiB0cmFuc2FjdGlvbkFib3J0ZWQoKQoreworICAgIHNob3VsZEJlVHJ1
ZSgiZmlyc3RFcnJvciIpOworICAgIHNob3VsZEJlVHJ1ZSgic2Vjb25kRXJyb3IiKTsKKyAgICBz
aG91bGRCZUZhbHNlKCJhYm9ydEZpcmVkIik7CisgICAgYWJvcnRGaXJlZCA9IHRydWU7CisKKyAg
ICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZTUnLCB5OiAnenp6
NSd9LCAna2V5NScpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZF
X0VSUiIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL3RyYW5zYWN0aW9uLWFmdGVyLWNsb3NlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWFmdGVyLWNsb3NlLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQ2MGY2ZGJkNWI5YzlhZWFiYjRhNTBmMjQ1YjQxYWQ3OTM1YWZlNzcKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rp
b24tYWZ0ZXItY2xvc2UuanMKQEAgLTAsMCArMSw4MSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0
cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2Ny
aXB0aW9uKCJUZXN0IGNsb3NpbmcgYSBkYXRhYmFzZSBjb25uZWN0aW9uIGluIEluZGV4ZWREQi4i
KTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKwor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndHJhbnNhY3Rpb24tYWZ0
ZXItY2xvc2UnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBzZWxm
LmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gaW5TZXRWZXJzaW9uOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBpblNldFZlcnNpb24o
KQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBldmVudC50YXJnZXQu
cmVzdWx0Lm9uY29tcGxldGUgPSBydW5GaXJzdFJlZ3VsYXJUcmFuc2FjdGlvbjsKKyAgICBldmVu
dC50YXJnZXQucmVzdWx0Lm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICBz
dG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJyki
KTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHN0b3JlLnB1dCgneCcsICd5
JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9uUHV0U3VjY2VzczsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb25QdXRT
dWNjZXNzKCkKK3sKKyAgICB0ZXN0UGFzc2VkKCJQdXQgc3VjY2VzcyIpCit9CisKK2Z1bmN0aW9u
IHJ1bkZpcnN0UmVndWxhclRyYW5zYWN0aW9uKCkKK3sKKyAgICBkZWJ1ZygicnVubmluZyBmaXJz
dCB0cmFuc2FjdGlvbiIpCisgICAgY3VycmVudFRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygiY3Vy
cmVudFRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZSddLCBJREJUcmFuc2FjdGlv
bi5SRUFEX1dSSVRFKSIpOworICAgIGN1cnJlbnRUcmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBl
Y3RlZEFib3J0Q2FsbGJhY2s7CisgICAgY3VycmVudFRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBm
aXJzdFRyYW5zYWN0aW9uQ29tcGxldGU7CisgICAgb2JqZWN0U3RvcmUgPSBjdXJyZW50VHJhbnNh
Y3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJyk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIm9i
amVjdFN0b3JlLnB1dCgnYScsICdiJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZmlyc3RUcmFuc2FjdGlvbkNvbXBsZXRl
KCkKK3sKKyAgICBldmFsQW5kTG9nKCJkYi5jbG9zZSgpIik7CisgICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oWydzdG9yZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dS
SVRFKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9FUlIiKTsKKworICAgIGRl
YnVnKCIiKQorICAgIGRlYnVnKCJ2ZXJpZnkgdGhhdCB3ZSBjYW4gcmVvcGVuIHRoZSBkYiBhZnRl
ciBjYWxsaW5nIGNsb3NlIikKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9w
ZW4oJ3RyYW5zYWN0aW9uLWFmdGVyLWNsb3NlJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IG9uU2Vjb25kT3BlbgorICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworfQorCitmdW5jdGlvbiBvblNlY29uZE9wZW4oKSB7CisgICAgc2Vjb25kX2RiID0gZXZh
bEFuZExvZygic2Vjb25kX2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIGN1cnJlbnRU
cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coImN1cnJlbnRUcmFuc2FjdGlvbiA9IHNlY29uZF9kYi50
cmFuc2FjdGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAg
c3RvcmUgPSBjdXJyZW50VHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJyk7CisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdG9yZS5wdXQoJzEnLCAnMicpIik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBvbkZpbmFsUHV0U3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBjdXJyZW50VHJhbnNhY3Rpb24ub25j
b21wbGV0ZSA9IGZpbmlzaEpTVGVzdDsKKyAgICBjdXJyZW50VHJhbnNhY3Rpb24ub25hYm9ydCA9
IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworfQorCitmdW5jdGlvbiBvbkZpbmFsUHV0U3VjY2Vz
cygpIHsKKyAgICB0ZXN0UGFzc2VkKCJmaW5hbCBwdXQgc3VjY2VzcyIpOworfQorCit0ZXN0KCk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJh
bnNhY3Rpb24tYW5kLW9iamVjdHN0b3JlLWNhbGxzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWFuZC1vYmplY3RzdG9yZS1jYWxscy5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40YWM2MWQ4MzJiOTdmMzNjYTZmMDI2MjlkYjQ4YWMxM2UyMzc2MjI2Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3Ry
YW5zYWN0aW9uLWFuZC1vYmplY3RzdG9yZS1jYWxscy5qcwpAQCAtMCwwICsxLDEyNCBAQAoraWYg
KHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVk
LmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIHRyYW5zYWN0aW9uIGFu
ZCBvYmplY3RTdG9yZSBjYWxscyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVW
ZW5kb3JQcmVmaXhlcygpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5v
cGVuKCd0cmFuc2FjdGlvbi1hbmQtb2JqZWN0c3RvcmUtY2FsbHMnLCAnZGVzY3JpcHRpb24nKSIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNz
KCkKK3sKKyAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlc3VsdCA9IGRiLnNldFZlcnNpb24oJ3Zl
cnNpb24gMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biBjbGVhbkRhdGFiYXNlKCkKK3sKKyAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAg
ICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnYScpIik7CisgICAgZXZhbEFuZExv
ZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2InKSIpOworICAgIGV2YWxBbmRMb2coImRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdzdG9yZScpLmNyZWF0ZUluZGV4KCdpbmRleCcsICdzb21lX3BhdGgnKSIp
OworICAgIGV2YWxBbmRMb2coInRyYW5zLmFkZEV2ZW50TGlzdGVuZXIoJ2NvbXBsZXRlJywgY3Jl
YXRlZCwgdHJ1ZSkiKTsKKyAgICBkZWJ1ZygiIik7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZWQoKQor
eworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ2EnXSki
KTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYScpIik7CisgICAgZXZhbEFu
ZEV4cGVjdEV4Y2VwdGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ2InKSIsICJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigidHJh
bnMub2JqZWN0U3RvcmUoJ3gnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJS
Iik7CisgICAgZGVidWcoIiIpOworCisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRi
LnRyYW5zYWN0aW9uKFsnYSddKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3Jl
KCdhJykiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0cmFucy5vYmplY3RTdG9yZSgn
YicpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKKyAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKCJ0cmFucy5vYmplY3RTdG9yZSgneCcpIiwgIklEQkRhdGFiYXNlRXhj
ZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICB0cmFucyA9IGV2
YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydiJ10pIik7CisgICAgZXZhbEFuZExv
ZygidHJhbnMub2JqZWN0U3RvcmUoJ2InKSIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24o
InRyYW5zLm9iamVjdFN0b3JlKCdhJykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5E
X0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInRyYW5zLm9iamVjdFN0b3JlKCd4
JykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOworICAgIGRlYnVnKCIi
KTsKKworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ2En
LCAnYiddKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdhJykiKTsKKyAg
ICBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYicpIik7CisgICAgZXZhbEFuZEV4cGVj
dEV4Y2VwdGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ3gnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlv
bi5OT1RfRk9VTkRfRVJSIik7CisgICAgZGVidWcoIiIpOworCisgICAgdHJhbnMgPSBldmFsQW5k
TG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnYicsICdhJ10pIik7CisgICAgZXZhbEFuZExv
ZygidHJhbnMub2JqZWN0U3RvcmUoJ2EnKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9iamVj
dFN0b3JlKCdiJykiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0cmFucy5vYmplY3RT
dG9yZSgneCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKKyAgICBk
ZWJ1ZygiIik7CisKKyAgICBkZWJ1ZygiUGFzc2luZyBhIHN0cmluZyBhcyB0aGUgZmlyc3QgYXJn
dW1lbnQgaXMgYSBzaG9ydGN1dCBmb3IganVzdCBvbmUgb2JqZWN0IHN0b3JlOiIpOworICAgIHRy
YW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignYScpIik7CisgICAgZXZh
bEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2EnKSIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oInRyYW5zLm9iamVjdFN0b3JlKCdiJykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9U
X0ZPVU5EX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInRyYW5zLm9iamVjdFN0
b3JlKCd4JykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOworICAgIGRl
YnVnKCIiKTsKKworICAgIHNob3VsZFRocm93KCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCkiKTsK
KyAgICBkZWJ1ZygiIik7CisKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2Fj
dGlvbihbJ3gnXSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOworICAg
IGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKFsneCddKSIsICJJREJEYXRh
YmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlv
bigiZGIudHJhbnNhY3Rpb24oWydhJywgJ3gnXSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9U
X0ZPVU5EX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9u
KFsneCcsICd4J10pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKKyAg
ICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbihbJ2EnLCAneCcsICdiJ10p
IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKKyAgICBkZWJ1ZygiIik7
CisKKyAgICBkZWJ1ZygiRXhjZXB0aW9uIHRocm93biB3aGVuIG5vIHN0b3JlcyBzcGVjaWZpZWQ6
Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oW10pIiwgIkRP
TUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19FUlIiKTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICBk
ZWJ1Zygie30gY29lcmNlcyB0byBhIHN0cmluZyAtIHNvIG5vIG1hdGNoLCBidXQgbm90IGEgdHlw
ZSBlcnJvcjoiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbih7
fSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOworICAgIGV2YWxBbmRF
eHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKHttb2RlOjB9KSIsICJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7CisgICAgZGVidWcoIiIpOworCisgICAgZGVidWcoIk92
ZXJyaWRpbmcgdGhlIGRlZmF1bHQgc3RyaW5nIGNvZXJjaW9uIG1ha2VzIHRoZXNlIHdvcms6Iik7
CisgICAgZXZhbEFuZExvZygiZGIudHJhbnNhY3Rpb24oe3RvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0
dXJuICdhJzt9fSkiKTsKKyAgICBldmFsQW5kTG9nKCJkYi50cmFuc2FjdGlvbihbe3RvU3RyaW5n
OmZ1bmN0aW9uKCl7cmV0dXJuICdhJzt9fV0pIik7CisgICAgZGVidWcoIi4uLiBidXQgeW91IHN0
aWxsIG5lZWQgdG8gc3BlY2lmeSBhIHJlYWwgc3RvcmU6Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oW3t0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiAneCc7
fX1dKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7CisgICAgZXZhbEFu
ZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oW3t0b1N0cmluZzpmdW5jdGlvbigpe3Jl
dHVybiAneCc7fX1dKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7Cisg
ICAgZGVidWcoIiIpOworCisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5z
YWN0aW9uKFsnc3RvcmUnXSkiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9IG51bGwiKTsK
KyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnMu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxldGUg
PSBhZnRlckNvbXBsZXRlOworICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3Rv
cmUoJ3N0b3JlJykiKTsKKyAgICBzaG91bGRCZVRydWUoInN0b3JlICE9IG51bGwiKTsKKyAgICBl
dmFsQW5kTG9nKCJzdG9yZS5nZXQoJ3NvbWVfa2V5JykiKTsKK30KKworZnVuY3Rpb24gYWZ0ZXJD
b21wbGV0ZSgpCit7CisgICAgZGVidWcoInRyYW5zYWN0aW9uIGNvbXBsZXRlLCBlbnN1cmluZyBt
ZXRob2RzIGZhaWwiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9IG51bGwiKTsKKyAgICBz
aG91bGRCZVRydWUoInN0b3JlICE9IG51bGwiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJ0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1Rf
QUxMT1dFRF9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5pbmRleCgn
aW5kZXgnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9FUlIiKTsKKworICAg
IGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3Ry
YW5zYWN0aW9uLWJhc2ljcy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy90cmFuc2FjdGlvbi1iYXNpY3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWI1ZGRjNmRiZGQ4MTkwODcx
OTM3MjU0MmZiMzg5ZWU1MjZjMmVjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1iYXNpY3MuanMKQEAgLTAsMCAr
MSwyODYgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcu
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNj
cmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgdHJh
bnNhY3Rpb24gYmFzaWNzLiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5k
b3JQcmVmaXhlcygpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVu
KCd0cmFuc2FjdGlvbi1iYXNpY3MnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1
Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToi
KTsKKyAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJz
aW9uIDEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
Y2xlYW5EYXRhYmFzZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiLCBjaGVja01l
dGFkYXRhRW1wdHkpOworICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25jb21wbGV0ZSA9IHRlc3RT
ZXRWZXJzaW9uQWJvcnQxOworfQorCitmdW5jdGlvbiB0ZXN0U2V0VmVyc2lvbkFib3J0MSgpCit7
CisgICAgY2hlY2tNZXRhZGF0YUVtcHR5KCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBzdGFydFNldFZlcnNpb24oJ3ZlcnNpb24gZmFpbCcpIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBhZGRSZW1vdmVJREJPYmplY3RzOworfQorCitmdW5jdGlvbiBhZGRSZW1vdmVJ
REJPYmplY3RzKCkKK3sKKyAgICBkZWJ1ZygiYWRkUmVtb3ZlSURCT2JqZWN0cygpOiIpOworICAg
IHZhciB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwor
ICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKyAgICB0cmFucy5hZGRFdmVudExp
c3RlbmVyKCdhYm9ydCcsIHRlc3RTZXRWZXJzaW9uQWJvcnQyLCB0cnVlKTsKKyAgICB0cmFucy5v
bmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7CisKKyAgICB2YXIgc3RvcmUg
PSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZUZhaWwnLCBu
dWxsKSIpOworICAgIHZhciBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuY3JlYXRl
SW5kZXgoJ2luZGV4RmFpbCcsICd4JykiKTsKKworICAgIGV2YWxBbmRMb2coImRiLmRlbGV0ZU9i
amVjdFN0b3JlKCdzdG9yZUZhaWwnKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlLmRlbGV0ZUlu
ZGV4KCdpbmRleEZhaWwnKSIpOworCisgICAgdHJhbnMuYWJvcnQoKTsKK30KKworZnVuY3Rpb24g
dGVzdFNldFZlcnNpb25BYm9ydDIoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidGVz
dFNldFZlcnNpb25BYm9ydDIoKToiKTsKKyAgICBjaGVja01ldGFkYXRhRW1wdHkoKTsKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHN0YXJ0U2V0VmVyc2lvbigndmVyc2lvbiBm
YWlsJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZFJlbW92ZUFkZElEQk9iamVjdHM7
Cit9CisKK2Z1bmN0aW9uIGFkZFJlbW92ZUFkZElEQk9iamVjdHMoKQoreworICAgIGRlYnVnKCJh
ZGRSZW1vdmVBZGRJREJPYmplY3RzKCk6Iik7CisgICAgdmFyIHRyYW5zID0gZXZhbEFuZExvZygi
dHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAh
PT0gbnVsbCIpOworICAgIHRyYW5zLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgdGVzdFNldFZl
cnNpb25BYm9ydDMsIGZhbHNlKTsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENv
bXBsZXRlQ2FsbGJhY2s7CisKKyAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZUZhaWwnLCBudWxsKSIpOworICAgIHZhciBpbmRleCA9
IGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4RmFpbCcsICd4Jyki
KTsKKworICAgIGV2YWxBbmRMb2coImRiLmRlbGV0ZU9iamVjdFN0b3JlKCdzdG9yZUZhaWwnKSIp
OworICAgIGV2YWxBbmRMb2coInN0b3JlLmRlbGV0ZUluZGV4KCdpbmRleEZhaWwnKSIpOworCisg
ICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgn
c3RvcmVGYWlsJywgbnVsbCkiKTsKKyAgICB2YXIgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9
IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleEZhaWwnLCAneCcpIik7CisKKyAgICB0cmFucy5hYm9y
dCgpOworfQorCitmdW5jdGlvbiB0ZXN0U2V0VmVyc2lvbkFib3J0MygpCit7CisgICAgZGVidWco
IiIpOworICAgIGRlYnVnKCJ0ZXN0U2V0VmVyc2lvbkFib3J0MygpOiIpOworICAgIHNob3VsZEJl
RmFsc2UoImV2ZW50LmNhbmNlbGFibGUiKTsKKyAgICBjaGVja01ldGFkYXRhRW1wdHkoKTsKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHN0YXJ0U2V0VmVyc2lvbigndmVyc2lv
biBmYWlsJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZElEQk9iamVjdHM7Cit9CisK
K2Z1bmN0aW9uIGFkZElEQk9iamVjdHMoKQoreworICAgIGRlYnVnKCJhZGRJREJPYmplY3RzKCk6
Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiZXZlbnQuY2FuY2VsYWJsZSIpOworICAgIHZhciB0cmFu
cyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3Vs
ZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdGVzdEluYWN0
aXZlQWJvcnRlZFRyYW5zYWN0aW9uOworICAgIHRyYW5zLm9uY29tcGxldGUgPSB1bmV4cGVjdGVk
Q29tcGxldGVDYWxsYmFjazsKKworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5j
cmVhdGVPYmplY3RTdG9yZSgnc3RvcmVGYWlsJywgbnVsbCkiKTsKKyAgICBpbmRleCA9IGV2YWxB
bmRMb2coImluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4RmFpbCcsICd4JykiKTsKKwor
ICAgIHRyYW5zLmFib3J0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RJbmFjdGl2ZUFib3J0ZWRUcmFu
c2FjdGlvbigpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0SW5hY3RpdmVBYm9y
dGVkVHJhbnNhY3Rpb24oKToiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJpbmRleC5v
cGVuQ3Vyc29yKCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVf
RVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXgub3BlbktleUN1cnNvcigp
IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOworICAg
IGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4LmdldCgwKSIsICJJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJpbmRleC5nZXRLZXkoMCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05f
SU5BQ1RJVkVfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXguY291bnQo
KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsKKwor
ICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLnB1dCgwLCAwKSIsICJJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0
RXhjZXB0aW9uKCJzdG9yZS5hZGQoMCwgMCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNB
Q1RJT05fSU5BQ1RJVkVfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUu
ZGVsZXRlKDApIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VS
UiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmNsZWFyKCkiLCAiSURCRGF0
YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7CisgICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigic3RvcmUuZ2V0KDApIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5T
QUNUSU9OX0lOQUNUSVZFX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3Jl
Lm9wZW5DdXJzb3IoKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElW
RV9FUlIiKTsKKworICAgIHRlc3RTZXRWZXJzaW9uQWJvcnQ0KCk7Cit9CisKK2Z1bmN0aW9uIHRl
c3RTZXRWZXJzaW9uQWJvcnQ0KCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInRlc3RT
ZXRWZXJzaW9uQWJvcnQ0KCk6Iik7CisgICAgY2hlY2tNZXRhZGF0YUVtcHR5KCk7CisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdGFydFNldFZlcnNpb24oJ3ZlcnNpb24gZmFp
bCcpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRJREJPYmplY3RzQW5kQ29tbWl0Owor
fQorCitmdW5jdGlvbiBhZGRJREJPYmplY3RzQW5kQ29tbWl0KCkKK3sKKyAgICBkZWJ1ZygiYWRk
SURCT2JqZWN0c0FuZENvbW1pdCgpOiIpOworICAgIHZhciB0cmFucyA9IGV2YWxBbmRMb2coInRy
YW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09
IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisK
KyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0
b3JlRmFpbCcsIG51bGwpIik7CisgICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3Jl
LmNyZWF0ZUluZGV4KCdpbmRleEZhaWwnLCAneCcpIik7CisKKyAgICB0cmFucy5vbmNvbXBsZXRl
ID0gdGVzdEluYWN0aXZlQ29tcGxldGVkVHJhbnNhY3Rpb247Cit9CisKK2Z1bmN0aW9uIHRlc3RJ
bmFjdGl2ZUNvbXBsZXRlZFRyYW5zYWN0aW9uKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVi
dWcoInRlc3RJbmFjdGl2ZUNvbXBsZXRlZFRyYW5zYWN0aW9uKCk6Iik7CisgICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigiaW5kZXgub3BlbkN1cnNvcigpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9u
LlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24o
ImluZGV4Lm9wZW5LZXlDdXJzb3IoKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElP
Tl9JTkFDVElWRV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJpbmRleC5nZXQo
MCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7Cisg
ICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXguZ2V0S2V5KDApIiwgIklEQkRhdGFiYXNl
RXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RF
eGNlcHRpb24oImluZGV4LmNvdW50KCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJ
T05fSU5BQ1RJVkVfRVJSIik7CisKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5w
dXQoMCwgMCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJS
Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuYWRkKDAsIDApIiwgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOworICAgIGV2YWxBbmRF
eHBlY3RFeGNlcHRpb24oInN0b3JlLmRlbGV0ZSgwKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5U
UkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJz
dG9yZS5jbGVhcigpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZF
X0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmdldCgwKSIsICJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsKKyAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5vcGVuQ3Vyc29yKCkiLCAiSURCRGF0YWJhc2VFeGNlcHRp
b24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7CisKKyAgICB0ZXN0U2V0VmVyc2lvbkFib3J0
NSgpOworfQorCitmdW5jdGlvbiB0ZXN0U2V0VmVyc2lvbkFib3J0NSgpCit7CisgICAgZGVidWco
IiIpOworICAgIGRlYnVnKCJ0ZXN0U2V0VmVyc2lvbkFib3J0NSgpOiIpOworICAgIGNoZWNrTWV0
YWRhdGFFeGlzdGluZ09iamVjdFN0b3JlKCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBzdGFydFNldFZlcnNpb24oJ3ZlcnNpb24gZmFpbCcpIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSByZW1vdmVJREJPYmplY3RzOworfQorCitmdW5jdGlvbiByZW1vdmVJREJPYmpl
Y3RzKCkKK3sKKyAgICBkZWJ1ZygicmVtb3ZlSURCT2JqZWN0cygpOiIpOworICAgIHZhciB0cmFu
cyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3Vs
ZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdGVzdFNldFZl
cnNpb25BYm9ydDY7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNh
bGxiYWNrOworCisgICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmpl
Y3RTdG9yZSgnc3RvcmVGYWlsJykiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZS5kZWxldGVJbmRl
eCgnaW5kZXhGYWlsJykiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5kZWxldGVPYmplY3RTdG9yZSgn
c3RvcmVGYWlsJykiKTsKKworICAgIHRyYW5zLmFib3J0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RT
ZXRWZXJzaW9uQWJvcnQ2KCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInRlc3RTZXRW
ZXJzaW9uQWJvcnQ2KCk6Iik7CisgICAgY2hlY2tNZXRhZGF0YUV4aXN0aW5nT2JqZWN0U3RvcmUo
KTsKKyAgICBzZXROZXdWZXJzaW9uKCk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0U2V0VmVyc2lvbih2
ZXJzaW9uTmFtZSkKK3sKKyAgICByZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbih2ZXJzaW9uTmFtZSk7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmV0
dXJuIHJlcXVlc3Q7Cit9CisKK2Z1bmN0aW9uIGNoZWNrTWV0YWRhdGFFbXB0eSgpCit7CisgICAg
c2hvdWxkQmUoInNlbGYuZGIub2JqZWN0U3RvcmVOYW1lcyIsICJbXSIpOworICAgIHNob3VsZEJl
KCJzZWxmLmRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjAiKTsKKyAgICBzaG91bGRCZSgi
c2VsZi5kYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCdzdG9yZUZhaWwnKSIsICJmYWxzZSIp
OworfQorCitmdW5jdGlvbiBjaGVja01ldGFkYXRhRXhpc3RpbmdPYmplY3RTdG9yZSgpCit7Cisg
ICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMiLCAiWydzdG9yZUZhaWwnXSIpOworICAg
IHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIxIik7CisgICAgc2hvdWxk
QmUoImRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJ3N0b3JlRmFpbCcpIiwgInRydWUiKTsK
K30KKworZnVuY3Rpb24gc2V0TmV3VmVyc2lvbigpCit7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IHNldFZlcnNpb25TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCit7CisgICAg
ZGVidWcoIiIpOworICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOworICAgIHNlbGYu
dHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBz
aG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhw
ZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zLmFkZEV2ZW50TGlzdGVuZXIoJ2NvbXBsZXRl
JywgY29tcGxldGVDYWxsYmFjaywgZmFsc2UpOworICAgIHNlbGYuY29tcGxldGVFdmVudEZpcmVk
ID0gZmFsc2U7CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgZXZhbEFu
ZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7Cit9CisKK2Z1
bmN0aW9uIGNvbXBsZXRlQ2FsbGJhY2soKQoreworICAgIHNob3VsZEJlRmFsc2UoImV2ZW50LmNh
bmNlbGFibGUiKTsKKyAgICB0ZXN0UGFzc2VkKCJjb21wbGV0ZSBldmVudCBmaXJlZCIpOworICAg
IHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygiZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSki
KTsKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gYWJvcnRDYWxsYmFjazsKKyAgICB2YXIgc3Rv
cmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5h
bWUnKSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3RvcmUubmFtZSIsICJzdG9yZU5h
bWUiKTsKK30KKworZnVuY3Rpb24gYWJvcnRDYWxsYmFjaygpCit7CisgICAgdGVzdFBhc3NlZCgi
YWJvcnQgZXZlbnQgZmlyZWQiKTsKKyAgICB0ZXN0RE9NU3RyaW5nTGlzdCgpOworfQorCitmdW5j
dGlvbiB0ZXN0RE9NU3RyaW5nTGlzdCgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJW
ZXJpZnlpbmcgRE9NU3RyaW5nTGlzdCB3b3JrcyBhcyBhcmd1bWVudCBmb3IgSURCRGF0YWJhc2Uu
dHJhbnNhY3Rpb24oKSIpOworICAgIGRlYnVnKCJkYi5vYmplY3RTdG9yZU5hbWVzIGlzICIgKyBk
Yi5vYmplY3RTdG9yZU5hbWVzKTsKKyAgICBkZWJ1ZygiLi4uIHdoaWNoIGNvbnRhaW5zOiAiICsg
SlNPTi5zdHJpbmdpZnkoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZGIub2JqZWN0U3RvcmVO
YW1lcykpKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKGRi
Lm9iamVjdFN0b3JlTmFtZXMpIik7CisgICAgdGVzdFBhc3NlZCgibm8gZXhjZXB0aW9uIHRocm93
biIpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGg7
ICsraSkgeworICAgICAgc2hvdWxkQmVUcnVlKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgiICsg
SlNPTi5zdHJpbmdpZnkoZGIub2JqZWN0U3RvcmVOYW1lc1tpXSkgKyAiKSAhPSBudWxsIik7Cisg
ICAgfQorICAgIHRlc3RQYXNzZWQoImFsbCBzdG9yZXMgcHJlc2VudCBpbiB0cmFuc2FjdGlvbiIp
OworICAgIHRlc3RJbnZhbGlkTW9kZSgpOworfQorCitmdW5jdGlvbiB0ZXN0SW52YWxpZE1vZGUo
KQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVmVyaWZ5IHRoYXQgc3BlY2lmeWluZyBh
biBpbnZhbGlkIG1vZGUgcmFpc2VzIGFuIGV4Y2VwdGlvbiIpOworICAgIGV2YWxBbmRFeHBlY3RF
eGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIDMpIiwgIklEQkRhdGFiYXNl
RXhjZXB0aW9uLk5PTl9UUkFOU0lFTlRfRVJSIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisK
K3Rlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy90cmFuc2FjdGlvbi1jcmFzaC1vbi1hYm9ydC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1jcmFzaC1vbi1hYm9ydC5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iMzNlYjA0YmVkMTRjNDJkNDgwNjc0OTc0OWE5NjZlNWY4NGVjMzVlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0
aW9uLWNyYXNoLW9uLWFib3J0LmpzCkBAIC0wLDAgKzEsMzkgQEAKK2lmICh0aGlzLmltcG9ydFNj
cmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitk
ZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgdHJhbnNhY3Rpb24gZG9lcyBub3QgY3Jhc2ggb24g
YWJvcnQuIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVz
KCk7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0
aW9uLWNyYXNoLW9uLWFib3J0JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNj
ZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7
CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignMS4wJykiKTsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IHNldFZlcnNpb25TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2Vzcygp
Cit7CisgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycpIik7CisgICAg
ZXZlbnQudGFyZ2V0LnJlc3VsdC5vbmNvbXBsZXRlID0gc2V0VmVyc2lvbkNvbXBsZXRlOworfQor
CitmdW5jdGlvbiBzZXRWZXJzaW9uQ29tcGxldGUoKQoreworICAgIGV2YWxBbmRMb2coImRiLnRy
YW5zYWN0aW9uKCdmb28nKSIpOworICAgIGV2YWxBbmRMb2coInNlbGYuZ2MoKSIpOworICAgIGZp
bmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5z
YWN0aW9uLWV2ZW50LXByb3BhZ2F0aW9uLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWV2ZW50LXByb3BhZ2F0aW9uLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmZkNWM2MWFiZTVjZDFjZDdmYWQ2OGY5MzNmOTA2YjU5OWVlZmI1ZmYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24t
ZXZlbnQtcHJvcGFnYXRpb24uanMKQEAgLTAsMCArMSwxNDQgQEAKK2lmICh0aGlzLmltcG9ydFNj
cmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitk
ZXNjcmlwdGlvbigiVGVzdCBldmVudCBwcm9wb2dhdGlvbiBvbiBJREJUcmFuc2FjdGlvbi4iKTsK
KworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0aW9uLWV2ZW50LXBy
b3BhZ2F0aW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb247CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IHNldFZlcnNpb24oKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3
IHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0
aW9uIGRlbGV0ZUV4aXN0aW5nKCkKK3sKKyAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJh
bnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0g
bnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAg
ICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gc3RhcnRUZXN0Iik7CisKKyAgICBkZWxl
dGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIHN0YXJ0VGVzdCgpCit7CisgICAgZGVidWcoIlZlcmlmaW5nIGFib3J0Iik7CisgICAg
dHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10s
IElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMub25h
Ym9ydCA9IGFib3J0RmlyZWRDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29t
cGxldGUgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coImRiLmFk
ZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgZGJBYm9ydENhcHR1cmVDYWxsYmFjaywgdHJ1ZSkiKTsK
KyAgICBldmFsQW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIGRiQWJvcnRCdWJi
bGVDYWxsYmFjaywgZmFsc2UpIik7CisgICAgZXZhbEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5l
cignY29tcGxldGUnLCB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjaywgdHJ1ZSkiKTsKKyAgICBl
dmFsQW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdjb21wbGV0ZScsIHVuZXhwZWN0ZWRDb21w
bGV0ZUNhbGxiYWNrLCBmYWxzZSkiKTsKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0g
dHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUu
YWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOworICAgIGRiQ2FwdHVyZUZpcmVk
ID0gZmFsc2U7CisgICAgYWJvcnRGaXJlZCA9IGZhbHNlOworICAgIGRiQnViYmxlRmlyZWQxID0g
ZmFsc2U7Cit9CisKK2Z1bmN0aW9uIGRiQWJvcnRDYXB0dXJlQ2FsbGJhY2soKQoreworICAgIGRl
YnVnKCIiKTsKKyAgICBkZWJ1ZygiSW4gSURCRGF0YWJhc2UgYWJvcnQgY2FwdHVyZSIpOworICAg
IHNob3VsZEJlRmFsc2UoImRiQ2FwdHVyZUZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiYWJv
cnRGaXJlZCIpOworICAgIHNob3VsZEJlRmFsc2UoImRiQnViYmxlRmlyZWQxIik7CisgICAgc2hv
dWxkQmUoImV2ZW50LnRhcmdldCIsICJ0cmFucyIpOworICAgIHNob3VsZEJlKCJldmVudC5jdXJy
ZW50VGFyZ2V0IiwgImRiIik7CisgICAgZGJDYXB0dXJlRmlyZWQgPSB0cnVlOworfQorCitmdW5j
dGlvbiBhYm9ydEZpcmVkQ2FsbGJhY2soKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygi
SW4gYWJvcnQgaGFuZGxlciIpOworICAgIHNob3VsZEJlVHJ1ZSgiZGJDYXB0dXJlRmlyZWQiKTsK
KyAgICBzaG91bGRCZUZhbHNlKCJhYm9ydEZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGJC
dWJibGVGaXJlZDEiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0IiwgInRyYW5zIik7Cisg
ICAgc2hvdWxkQmUoImV2ZW50LmN1cnJlbnRUYXJnZXQiLCAidHJhbnMiKTsKKyAgICBhYm9ydEZp
cmVkID0gdHJ1ZTsKK30KKworZnVuY3Rpb24gZGJBYm9ydEJ1YmJsZUNhbGxiYWNrKCkKK3sKKyAg
ICBkZWJ1ZygiIik7CisgICAgZGVidWcoIkluIElEQkRhdGFiYXNlIGVycm9yIGJ1YmJsZSIpOwor
ICAgIHNob3VsZEJlVHJ1ZSgiZGJDYXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRCZVRydWUoImFi
b3J0RmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVkMSIpOworICAgIHNo
b3VsZEJlKCJldmVudC50YXJnZXQiLCAidHJhbnMiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQuY3Vy
cmVudFRhcmdldCIsICJkYiIpOworICAgIGRiQnViYmxlRmlyZWQxID0gdHJ1ZTsKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoIlZlcmlmaW5nIHN1Y2Nlc3MuIik7CisgICAgdHJhbnMgPSBldmFs
QW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIElEQlRyYW5zYWN0
aW9uLlJFQURfV1JJVEUpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IGNv
bXBsZXRlRmlyZWRDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSB1
bmV4cGVjdGVkQWJvcnRDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coImRiLnJlbW92ZUV2ZW50
TGlzdGVuZXIoJ2Fib3J0JywgZGJBYm9ydENhcHR1cmVDYWxsYmFjaywgdHJ1ZSkiKTsKKyAgICBl
dmFsQW5kTG9nKCJkYi5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIGRiQWJvcnRCdWJibGVD
YWxsYmFjaywgZmFsc2UpIik7CisgICAgZXZhbEFuZExvZygiZGIucmVtb3ZlRXZlbnRMaXN0ZW5l
cignY29tcGxldGUnLCB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjaywgdHJ1ZSkiKTsKKyAgICBl
dmFsQW5kTG9nKCJkYi5yZW1vdmVFdmVudExpc3RlbmVyKCdjb21wbGV0ZScsIHVuZXhwZWN0ZWRD
b21wbGV0ZUNhbGxiYWNrLCBmYWxzZSkiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5hZGRFdmVudExp
c3RlbmVyKCdjb21wbGV0ZScsIGRiQ29tcGxldGVDYXB0dXJlQ2FsbGJhY2ssIHRydWUpIik7Cisg
ICAgZXZhbEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignY29tcGxldGUnLCBkYkNvbXBsZXRl
QnViYmxlQ2FsbGJhY2ssIGZhbHNlKSIpOworICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50TGlz
dGVuZXIoJ2Fib3J0JywgdW5leHBlY3RlZEFib3J0Q2FsbGJhY2ssIHRydWUpIik7CisgICAgZXZh
bEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCB1bmV4cGVjdGVkQWJvcnRDYWxs
YmFjaywgZmFsc2UpIik7CisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9i
amVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDog
J3ZhbHVlJywgeTogJ3p6eid9LCAna2V5MicpIik7CisgICAgZGJDYXB0dXJlRmlyZWQgPSBmYWxz
ZTsKKyAgICBjb21wbGV0ZUZpcmVkID0gZmFsc2U7CisgICAgZGJCdWJibGVGaXJlZDIgPSBmYWxz
ZTsKK30KKworZnVuY3Rpb24gZGJDb21wbGV0ZUNhcHR1cmVDYWxsYmFjaygpCit7CisgICAgZGVi
dWcoIiIpOworICAgIGRlYnVnKCJJbiBJREJEYXRhYmFzZSBjb21wbGV0ZSBjYXB0dXJlIik7Cisg
ICAgc2hvdWxkQmVGYWxzZSgiZGJDYXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJj
b21wbGV0ZUZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVGaXJlZDIiKTsKKyAg
ICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0IiwgInRyYW5zIik7CisgICAgc2hvdWxkQmUoImV2ZW50
LmN1cnJlbnRUYXJnZXQiLCAiZGIiKTsKKyAgICBkYkNhcHR1cmVGaXJlZCA9IHRydWU7Cit9CisK
K2Z1bmN0aW9uIGNvbXBsZXRlRmlyZWRDYWxsYmFjaygpCit7CisgICAgZGVidWcoIiIpOworICAg
IGRlYnVnKCJJbiBJREJSZXF1ZXN0IGhhbmRsZXIiKTsKKyAgICBzaG91bGRCZVRydWUoImRiQ2Fw
dHVyZUZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiY29tcGxldGVGaXJlZCIpOworICAgIHNo
b3VsZEJlRmFsc2UoImRiQnViYmxlRmlyZWQyIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdl
dCIsICJ0cmFucyIpOworICAgIHNob3VsZEJlKCJldmVudC5jdXJyZW50VGFyZ2V0IiwgInRyYW5z
Iik7CisgICAgY29tcGxldGVGaXJlZCA9IHRydWU7CisgICAgZGVidWcoIiIpOworICAgIGZpbmlz
aEpTVGVzdCgpOworfQorCitmdW5jdGlvbiBkYkNvbXBsZXRlQnViYmxlQ2FsbGJhY2soKQorewor
ICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiSW4gSURCRGF0YWJhc2UgY29tcGxldGUgYnViYmxl
Iik7CisgICAgdGVzdEZhaWxlZCgiQ29tcGxldGUgYnViYmxlIGNhbGxiYWNrIHNob3VsZCBOT1Qg
ZmlyZSIpOworICAgIGRiQnViYmxlRmlyZWQyID0gdHJ1ZTsKK30KKwordGVzdCgpOwpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1yZWFkLW9ubHkuanMgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tcmVhZC1vbmx5LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQ5NDNhMzFjZmQ3YjVhYTBjNzE3ZGExM2Q3YWZkMDlmMTBhMzliYWQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNh
Y3Rpb24tcmVhZC1vbmx5LmpzCkBAIC0wLDAgKzEsNTggQEAKK2lmICh0aGlzLmltcG9ydFNjcmlw
dHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNj
cmlwdGlvbigiVGVzdCByZWFkLW9ubHkgdHJhbnNhY3Rpb25zIGluIEluZGV4ZWREQi4iKTsKKwor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndHJhbnNhY3Rpb24tcmVhZC1vbmx5
JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3Vj
Y2VzcygpCit7CisgICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7CisgICAgc2VsZi5kYiA9IGV2
YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXN1bHQgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7Cisg
ICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIGV2ZW50LnRhcmdldC5yZXN1bHQu
b25jb21wbGV0ZSA9IHNldFZlcnNpb25Eb25lOworICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25h
Ym9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHN0b3JlID0gZXZhbEFuZExvZygi
c3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgIGV2YWxBbmRMb2co
InN0b3JlLnB1dCgneCcsICd5JykiKTsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbkRvbmUoKQor
eworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUn
KSIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInRyYW5zLm9iamVjdFN0b3JlKCdzdG9y
ZScpLnB1dCgnYScsICdiJykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUiIp
OworCisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9y
ZScpIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ3N0
b3JlJykuZGVsZXRlKCd4JykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUiIp
OworCisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9y
ZScpIik7CisgICAgY3VyID0gZXZhbEFuZExvZygiY3VyID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0
b3JlJykub3BlbkN1cnNvcigpIik7CisgICAgY3VyLm9uc3VjY2VzcyA9IGdvdEN1cnNvcjsKKyAg
ICBjdXIub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBn
b3RDdXJzb3IoKQoreworICAgIHNob3VsZEJlRmFsc2UoIiFldmVudC50YXJnZXQucmVzdWx0Iik7
CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZXZlbnQudGFyZ2V0LnJlc3VsdC5kZWxldGUo
KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5SRUFEX09OTFlfRVJSIik7CisKKyAgICBmaW5pc2hK
U1Rlc3QoKTsKK30KKwordGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLXJvbGxiYWNrLmpzIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLXJvbGxiYWNrLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjBkODQ4MzNhYjYwOWYzMjQ1NTlhNWFlNDU3NjRiYzhhNjZhNDUxMDMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNh
Y3Rpb24tcm9sbGJhY2suanMKQEAgLTAsMCArMSw5MSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0
cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2Ny
aXB0aW9uKCJUZXN0IEluZGV4ZWREQiB0cmFuc2FjdGlvbiByb2xsYmFjay4iKTsKKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndHJhbnNhY3Rpb24tcm9sbGJhY2snKSIpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkK
K3sKKyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBzZWxmLmRiID0gZXZhbEFuZExv
ZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7CisgICAgZGVi
dWcoImNsZWFuRGF0YWJhc2UoKToiKTsKKyAgICBzZWxmLnRyYW5zYWN0aW9uID0gZXZhbEFuZExv
ZygidHJhbnNhY3Rpb24gPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgdHJhbnNhY3Rpb24u
b25hYm9ydCA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRyYW5zYWN0aW9uLm9uY29t
cGxldGUgPSBzZXRWZXJzaW9uQ29tcGxldGU7CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMo
ZGIpOworICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdteU9iamVjdFN0b3Jl
JykiKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMSIpOwor
fQorCitmdW5jdGlvbiBzZXRWZXJzaW9uQ29tcGxldGUoKQoreworICAgIGRlYnVnKCJzZXRWZXJz
aW9uQ29tcGxldGUoKToiKTsKKworICAgIHNlbGYudHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0
cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnbXlPYmplY3RTdG9yZSddLCBJREJUcmFuc2Fj
dGlvbi5SRUFEX1dSSVRFKSIpOworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSBhYm9ydENhbGxi
YWNrOworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQ29tcGxldGVDYWxs
YmFjazsKKworICAgIHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9u
Lm9iamVjdFN0b3JlKCdteU9iamVjdFN0b3JlJykiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
Zygic3RvcmUuYWRkKCdyb2xsYmFja1ZhbHVlJywgJ3JvbGxiYWNrS2V5MTIzJykiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZFN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGFkZFN1Y2Nlc3MoKQoreworICAg
IGRlYnVnKCJhZGRTdWNjZXNzKCk6Iik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1
bHQiLCAiJ3JvbGxiYWNrS2V5MTIzJyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0
b3JlLm9wZW5DdXJzb3IoKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbkN1cnNvclN1
Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIG9wZW5DdXJzb3JTdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygib3BlbkN1cnNv
clN1Y2Nlc3MoKToiKTsKKyAgICBzZWxmLmN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHRyYW5zYWN0aW9uLmFib3J0KCk7Cit9CisKK2Z1
bmN0aW9uIGFib3J0Q2FsbGJhY2soKQoreworICAgIGRlYnVnKCJhYm9ydENhbGxiYWNrKCk6Iik7
CisgICAgZGVidWcoJ1RyYW5zYWN0aW9uIHdhcyBhYm9ydGVkLicpOworCisgICAgc2VsZi50cmFu
c2FjdGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydteU9i
amVjdFN0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQUQpIik7CisgICAgc2VsZi5zdG9yZSA9IGV2
YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ215T2JqZWN0U3RvcmUn
KSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5nZXQoJ3JvbGxiYWNrS2V5MTIz
JykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldFN1Y2Nlc3M7Cit9CisKK2Z1bmN0aW9uIGdldFN1Y2Nl
c3MoKQoreworICAgIGRlYnVnKCJnZXRTdWNjZXNzKCk6Iik7CisgICAgc2hvdWxkQmUoImV2ZW50
LnRhcmdldC5yZXN1bHQiLCAidW5kZWZpbmVkIik7CisKKyAgICBzaG91bGRCZSgiY3Vyc29yLnZh
bHVlIiwgIidyb2xsYmFja1ZhbHVlJyIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0
KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLXN0b3JlTmFtZXMtcmVxdWly
ZWQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rp
b24tc3RvcmVOYW1lcy1yZXF1aXJlZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNWEzZWQxMmFhYzhhODA0OWI5
ODg3NzQwOTVkNWJlMmU1YTY0MmVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLXN0b3JlTmFtZXMtcmVxdWlyZWQu
anMKQEAgLTAsMCArMSwzNiBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9y
dFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Cisg
ICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IElu
ZGV4ZWREQjogdHJhbnNhY3Rpb24gc3RvcmVOYW1lcyByZXF1aXJlZCBhcmd1bWVudHMiKTsKKwor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5h
bWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3Qg
RGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1l
LCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIu
c2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1
bGF0ZU9iamVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKK3sK
KyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgc2hvdWxkVGhyb3coImRiLnRy
YW5zYWN0aW9uKCk7Iik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvdHdvLXZlcnNpb24tY2hhbmdlcy5qcyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90d28tdmVyc2lvbi1jaGFuZ2VzLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmE2NmU1MTRlNjUyNWQxZTg2MjBjYzdiOWNkOGNmNzIzMjEzNDA3M2YKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHdvLXZlcnNp
b24tY2hhbmdlcy5qcwpAQCAtMCwwICsxLDEwNiBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykg
eworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0
aW9uKCJUZXN0IGJlaGF2aW9yIHdoZW4gdGhlIHNhbWUgY29ubmVjdGlvbiBjYWxscyBzZXRWZXJz
aW9uIHR3aWNlIik7CisKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4
ZXMoKTsKKworICAgIHNob3VsZEJlRmFsc2UoImluZGV4ZWREQiA9PSBudWxsIik7CisgICAgc2hv
dWxkQmVGYWxzZSgiSURCVHJhbnNhY3Rpb24gPT0gbnVsbCIpOworICAgIG9wZW5EQkNvbm5lY3Rp
b24oKTsKK30KKworZnVuY3Rpb24gb3BlbkRCQ29ubmVjdGlvbigpCit7CisgICAgZXZhbEFuZExv
Zygic2VsZi5zdGF0ZSA9ICdzdGFydGluZyciKTsKKyAgICB2YXIgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImluZGV4ZWREQi5vcGVuKCd0d28tdmVyc2lvbnMtb25lLWNvbm5lY3Rpb24nKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sK
KyAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Cisg
ICAgZXZhbEFuZExvZygic2VsZi5zdGF0ZSA9IDAiKTsKKworICAgIHZhciB2ZXJzaW9uQ2hhbmdl
UmVxdWVzdDEgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAg
IHZlcnNpb25DaGFuZ2VSZXF1ZXN0MS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CisgICAgdmVyc2lvbkNoYW5nZVJlcXVlc3QxLm9uc3VjY2VzcyA9IGluU2V0VmVyc2lvbjE7CisK
KyAgICAvLyBhbmQgY29uY3VycmVudGx5Li4uCisKKyAgICB2YXIgdmVyc2lvbkNoYW5nZVJlcXVl
c3QyID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbigndmVyc2lvbiAyJykiKTsKKyAgICB2ZXJz
aW9uQ2hhbmdlUmVxdWVzdDIub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAg
IHZlcnNpb25DaGFuZ2VSZXF1ZXN0Mi5vbnN1Y2Nlc3MgPSBpblNldFZlcnNpb24yOworfQorCitm
dW5jdGlvbiBpblNldFZlcnNpb24xKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvbigpICMxIGNh
bGxiYWNrIik7CisgICAgdHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgIGV2YWxBbmRM
b2coInNlbGYuc3RvcmUxID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Rlc3Qtc3RvcmUxJykiKTsK
KyAgICBzaG91bGRCZSgiKytzZWxmLnN0YXRlIiwgIjEiKTsKKyAgICB2YXIgcmVxID0gZXZhbEFu
ZExvZygic2VsZi5zdG9yZTEucHV0KCdhYWEnLCAxMTEpIik7CisgICAgcmVxLm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUp
IHsKKyAgICAgICAgc2hvdWxkQmUoIisrc2VsZi5zdGF0ZSIsICIyIik7CisgICAgICAgIGhhbGZ3
YXlEb25lKCk7CisgICAgfTsKK30KKworZnVuY3Rpb24gaW5TZXRWZXJzaW9uMigpCit7CisgICAg
ZGVidWcoInNldFZlcnNpb24oKSAjMiBjYWxsYmFjayIpOworICAgIHRyYW5zID0gZXZlbnQudGFy
Z2V0LnJlc3VsdDsKKyAgICBzaG91bGRCZSgiKytzZWxmLnN0YXRlIiwgIjQiKTsKKyAgICBldmFs
QW5kTG9nKCJzZWxmLnN0b3JlMiA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCd0ZXN0LXN0b3JlMicp
Iik7CisKKyAgICB2YXIgcmVxID0gZXZhbEFuZExvZygic2VsZi5zdG9yZTIucHV0KCdiYmInLCAy
MjIpIik7CisgICAgcmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBy
ZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgc2hvdWxkQmUoIisrc2VsZi5z
dGF0ZSIsICI1Iik7CisgICAgICAgIGhhbGZ3YXlEb25lKCk7CisgICAgfTsKK30KKwordmFyIGNv
dW50ZXIgPSAwOworZnVuY3Rpb24gaGFsZndheURvbmUoKSAKK3sKKyAgICBjb3VudGVyICs9IDE7
CisgICAgaWYgKGNvdW50ZXIgPCAyKSB7CisgICAgICAgIHNob3VsZEJlKCIrK3NlbGYuc3RhdGUi
LCAiMyIpOworICAgICAgICBkZWJ1ZygiaGFsZndheSB0aGVyZS4uLiIgKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBzaG91bGRCZSgiKytzZWxmLnN0YXRlIiwgIjYiKTsKKyAgICAgICAgY2hlY2tS
ZXN1bHRzKCk7CisgICAgfQorfQorCitmdW5jdGlvbiBjaGVja1Jlc3VsdHMoKSB7CisgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJzZWxmLmRiLnZlcnNpb24iLCAidmVyc2lvbiAyIik7CisgICAg
dHJhbnMub25jb21wbGV0ZSA9IHNldFZlcnNpb25Db21wbGV0ZTsKK30KKworZnVuY3Rpb24gc2V0
VmVyc2lvbkNvbXBsZXRlKCkKK3sKKyAgICB0cmFucyA9IGV2YWxBbmRMb2coInNlbGYudHJhbnMg
PSBkYi50cmFuc2FjdGlvbihbJ3Rlc3Qtc3RvcmUxJywgJ3Rlc3Qtc3RvcmUyJ10pIik7CisgICAg
c3RvcmUgPSBldmFsQW5kTG9nKCJzZWxmLnN0b3JlID0gc2VsZi50cmFucy5vYmplY3RTdG9yZSgn
dGVzdC1zdG9yZTEnKSIpOworICAgIHJlcSA9IGV2YWxBbmRMb2coInNlbGYucmVxID0gc2VsZi5z
dG9yZS5nZXQoMTExKSIpOworICAgIHJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJhYWEiKTsKKworICAgICAgICBz
dG9yZSA9IGV2YWxBbmRMb2coInNlbGYuc3RvcmUgPSBzZWxmLnRyYW5zLm9iamVjdFN0b3JlKCd0
ZXN0LXN0b3JlMicpIik7CisgICAgICAgIHJlcSA9IGV2YWxBbmRMb2coInNlbGYucmVxID0gc2Vs
Zi5zdG9yZS5nZXQoMjIyKSIpOworICAgICAgICByZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworICAgICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKKyAgICAg
ICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJiYmIi
KTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9OworICAgIH07Cit9CisK
K3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdmFsdWUtdW5kZWZpbmVkLmpzIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3ZhbHVlLXVuZGVmaW5lZC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iOTcwMzNjNzg3Y2ZkYWI2NTVkMzdjMTY2MTM1Y2Y4ZDcxZDcwYjRlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3Zh
bHVlLXVuZGVmaW5lZC5qcwpAQCAtMCwwICsxLDY2IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRz
KSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3Jp
cHRpb24oIlRlc3QgSW5kZXhlZERCIHVuZGVmaW5lZCBhcyByZWNvcmQgdmFsdWUiKTsKKworZnVu
Y3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUg
PSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0
YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBk
ZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0
VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0
ZU9iamVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworfQorCitmdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKK3sKKyAg
ICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5k
TG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nKTsiKTsKKyAgICBy
ZXN1bHQgPSBldmFsQW5kTG9nKCJyZXN1bHQgPSBvYmplY3RTdG9yZS5hZGQodW5kZWZpbmVkLCBJ
bmZpbml0eSk7Iik7CisgICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICByZXN1bHQub25zdWNjZXNzID0gZ2V0VmFsdWU7Cit9CisKK2Z1bmN0aW9uIGdldFZh
bHVlKCkKK3sKKyAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJyZXN1bHQgPSBvYmplY3RTdG9yZS5n
ZXQoSW5maW5pdHkpOyIpOworICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7CisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGNoZWNrVmFsdWU7Cit9CisKK2Z1bmN0aW9u
IGNoZWNrVmFsdWUoKQoreworICAgIHZhbHVlID0gZXZhbEFuZExvZygidmFsdWUgPSBldmVudC50
YXJnZXQucmVzdWx0OyIpOworICAgIHNob3VsZEJlKCJ2YWx1ZSIsICJ1bmRlZmluZWQiKTsKKyAg
ICByZXN1bHQgPSBldmFsQW5kTG9nKCJyZXN1bHQgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7
Iik7CisgICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBy
ZXN1bHQub25zdWNjZXNzID0gY2hlY2tDdXJzb3I7Cit9CisKK2Z1bmN0aW9uIGNoZWNrQ3Vyc29y
KCkKK3sKKyAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVz
dWx0OyIpOworICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXki
LCAiSW5maW5pdHkiKTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZSIsICJ1bmRlZmlu
ZWQiKTsKKyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0RmFpbGVkKCJjdXJzb3IgaXMgbnVsbCIp
OworICAgIH0KKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy92YWx1ZXMtb2RkLXR5cGVzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL3ZhbHVlcy1vZGQtdHlwZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2FlMTE1YmNk
ZWIwYmY2ZmYyNjVkOTFhYTk5NDRlNTY4YjU2ZjRkNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy92YWx1ZXMtb2RkLXR5cGVzLmpzCkBA
IC0wLDAgKzEsNzggQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3Jp
cHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGlt
cG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVk
REIgb2RkIHZhbHVlIGRhdGF0eXBlcyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1v
dmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7
CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBk
YiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGFkZEtleTE7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGFkZEtleTEoKQoreworICAgIGRlbGV0ZUFs
bE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7YXV0b0luY3JlbWVudDogdHJ1ZX0pOyIpOworCisgICAg
Y2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7CisgICAgY29udGV4dCA9
IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOworICAgIGltYWdlZGF0YSA9IGNvbnRleHQuY3JlYXRl
SW1hZ2VEYXRhKDEsIDEpOworICAgIHZhbGlkVHlwZXMgPSBbeyBkZXNjcmlwdGlvbjogJ3JlZ2V4
cCcsICAgIHZhbHVlOiBuZXcgUmVnRXhwKCdcXFxcJykgfSwKKyAgICAgICAgICAgICAgICAgIHsg
ZGVzY3JpcHRpb246ICdkYXRlJywgICAgICB2YWx1ZTogbmV3IERhdGUoMCkgfSwKKyAgICAgICAg
ICAgICAgICAgIHsgZGVzY3JpcHRpb246ICdvYmplY3QnLCAgICB2YWx1ZTogbmV3IE9iamVjdCgp
IH0sCisgICAgICAgICAgICAgICAgICB7IGRlc2NyaXB0aW9uOiAnaW1hZ2VkYXRhJywgdmFsdWU6
IGltYWdlZGF0YSB9LAorICAgIF07CisgICAgbmV4dFRvQWRkID0gMDsKKyAgICBhZGREYXRhKCk7
Cit9CisKK2Z1bmN0aW9uIGFkZERhdGEoKQoreworICAgIGRlYnVnKCJhZGRpbmcgIiArIHZhbGlk
VHlwZXNbbmV4dFRvQWRkXS5kZXNjcmlwdGlvbiArICIgdmFsdWUiKTsKKyAgICByZXN1bHQgPSBl
dmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQodmFsaWRUeXBlc1tuZXh0VG9BZGRdLnZhbHVlKSIp
OworICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSArK25leHRUb0FkZCA8IHZhbGlkVHlwZXMubGVuZ3Ro
ID8gYWRkRGF0YSA6IG9wZW5BQ3Vyc29yOworICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5BQ3Vyc29yKCkKK3sKKyAgICB2YWx1
ZUluZGV4ID0gMDsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0
b3JlLm9wZW5DdXJzb3IoKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewor
ICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0
OyIpOworICAgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29y
LnZhbHVlLnRvU3RyaW5nKCkiLCAidmFsaWRUeXBlc1t2YWx1ZUluZGV4XS52YWx1ZS50b1N0cmlu
ZygpIik7CisgICAgICAgICAgICBpZiAodmFsdWVJbmRleCA9PSAxKSB7CisgICAgICAgICAgICAg
ICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS50b1VUQ1N0cmluZygpIiwgIidUaHUsIDAxIEphbiAx
OTcwIDAwOjAwOjAwIEdNVCciKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh2YWx1
ZUluZGV4ID09IDMpIHsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndp
ZHRoIiwgIjEiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNv
ci5jb250aW51ZSgpOyIpOworICAgICAgICAgICAgZXZhbEFuZExvZygidmFsdWVJbmRleCsrOyIp
OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgIH0KKyAgICB9Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
dmVyc2lvbi1jaGFuZ2UtYWJvcnQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvdmVyc2lvbi1jaGFuZ2UtYWJvcnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGI0NDcxNzJmYmU4
MGYxY2UxZGUyODNhMzVmZGNkYzE4MDQ1MGQ5MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy92ZXJzaW9uLWNoYW5nZS1hYm9ydC5qcwpA
QCAtMCwwICsxLDg5IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2Ny
aXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBp
bXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIkVuc3VyZSB0aGF0
IGFib3J0ZWQgVkVSU0lPTl9DSEFOR0UgdHJhbnNhY3Rpb25zIGFyZSBjb21wbGV0ZWx5IHJvbGxl
ZCBiYWNrIik7CisKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMo
KTsKKyAgICBvcGVuREJDb25uZWN0aW9uKCk7Cit9CisKK2Z1bmN0aW9uIG9wZW5EQkNvbm5lY3Rp
b24oKQoreworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndmVyc2lv
bi1jaGFuZ2UtYWJvcnQnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBl
dmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgZGVidWcoIiIpOworCisgICAgZXZhbEFuZExvZygi
dmNyZXEgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHZjcmVxLm9uc3VjY2Vz
cyA9IGluU2V0VmVyc2lvbjE7CisgICAgdmNyZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBpblNldFZlcnNpb24xKCkKK3sKKyAgICBkZWJ1Zygic2V0
VmVyc2lvbjEoKSBjYWxsYmFjayIpOworICAgIHNob3VsZEJlVHJ1ZSgidmNyZXEucmVzdWx0IGlu
c3RhbmNlb2YgSURCVHJhbnNhY3Rpb24iKTsKKyAgICB0cmFucyA9IHZjcmVxLnJlc3VsdDsKKyAg
ICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSBz
ZXRWZXJzaW9uMUNvbXBsZXRlOworCisgICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVP
YmplY3RTdG9yZSgnc3RvcmUxJykiKTsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbjFDb21wbGV0
ZSgpCit7CisgICAgZGVidWcoInNldFZlcnNpb24xIGNvbXBsZXRlIik7CisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJkYi52ZXJzaW9uIiwgInZlcnNpb24gMSIpOworICAgIGRlYnVnKCIiKTsK
KworICAgIGV2YWxBbmRMb2coInZjcmVxID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAyJykiKTsK
KyAgICB2Y3JlcS5vbnN1Y2Nlc3MgPSBpblNldFZlcnNpb24yOworICAgIHZjcmVxLm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gaW5TZXRWZXJzaW9uMigp
Cit7CisgICAgZGVidWcoInNldFZlcnNpb24yKCkgY2FsbGJhY2siKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImRiLnZlcnNpb24iLCAidmVyc2lvbiAyIik7CisgICAgc2hvdWxkQmVUcnVl
KCJ2Y3JlcS5yZXN1bHQgaW5zdGFuY2VvZiBJREJUcmFuc2FjdGlvbiIpOworICAgIHRyYW5zID0g
dmNyZXEucmVzdWx0OworICAgIHRyYW5zLm9uYWJvcnQgPSBzZXRWZXJzaW9uMkFib3J0OworICAg
IHRyYW5zLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB0cmFucy5vbmNv
bXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7CisKKyAgICBldmFsQW5kTG9nKCJz
dG9yZSA9IGRiLmRlbGV0ZU9iamVjdFN0b3JlKCdzdG9yZTEnKSIpOworICAgIGV2YWxBbmRMb2co
InN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlMicpIik7CisKKyAgICAvLyBFbnN1
cmUgdGhlIHRlc3QgaGFybmVzcyBlcnJvciBoYW5kbGVyIGlzIG5vdCBpbnZva2VkLgorICAgIHNl
bGYub3JpZ2luYWxXaW5kb3dPbkVycm9yID0gc2VsZi5vbmVycm9yOworICAgIHNlbGYub25lcnJv
ciA9IG51bGw7CisKKyAgICBkZWJ1ZygicmFpc2luZyBleGNlcHRpb24iKTsKKyAgICB0aHJvdyBu
ZXcgRXJyb3IoIlRoaXMgc2hvdWxkICpOT1QqIGJlIGNhdWdodCEiKTsKK30KKworZnVuY3Rpb24g
c2V0VmVyc2lvbjJBYm9ydCgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJzZXRWZXJz
aW9uMkFib3J0KCkgY2FsbGJhY2siKTsKKworICAgIC8vIFJlc3RvcmUgdGVzdCBoYXJuZXNzIGVy
cm9yIGhhbmRsZXIuCisgICAgc2VsZi5vbmVycm9yID0gc2VsZi5vcmlnaW5hbFdpbmRvd09uRXJy
b3I7CisKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLnZlcnNpb24iLCAidmVyc2lvbiAx
Iik7CisgICAgc2hvdWxkQmVUcnVlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCdzdG9y
ZTEnKSIpOworICAgIHNob3VsZEJlRmFsc2UoImRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMo
J3N0b3JlMicpIik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy92ZXJzaW9uLWNoYW5nZS1leGNsdXNpdmUuanMgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdmVyc2lvbi1jaGFuZ2UtZXhjbHVzaXZlLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjgxYWE1OGE4ODMyOTVlNDcxMjdkNmE5MzE2NGJiY2VkODM5YjA5MWEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
dmVyc2lvbi1jaGFuZ2UtZXhjbHVzaXZlLmpzCkBAIC0wLDAgKzEsNzAgQEAKK2lmICh0aGlzLmlt
cG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOwor
fQorCitkZXNjcmlwdGlvbigiRW5zdXJlIFZFUlNJT05fQ0hBTkdFIHRyYW5zYWN0aW9uIGRvZXNu
J3QgcnVuIGNvbmN1cnJlbnRseSB3aXRoIG90aGVyIHRyYW5zYWN0aW9ucyIpOworCitmdW5jdGlv
biB0ZXN0KCkgeworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgb3BlbkRCQ29ubmVj
dGlvbigpOworfQorCitmdW5jdGlvbiBvcGVuREJDb25uZWN0aW9uKCkKK3sKKyAgICBldmFsQW5k
TG9nKCJzZWxmLnN0YXRlID0gJ3N0YXJ0aW5nJyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJpbmRleGVkREIub3BlbigndmVyc2lvbi1jaGFuZ2UtZXhjbHVzaXZlJykiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAg
c2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAg
ZGVidWcoImNhbGxpbmcgc2V0VmVyc2lvbigpIC0gY2FsbGJhY2sgc2hvdWxkIHJ1biBpbW1lZGlh
dGVseSIpOworICAgIHZhciB2ZXJzaW9uQ2hhbmdlUmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNl
dFZlcnNpb24oJ3ZlcnNpb24gMScpIik7CisgICAgdmVyc2lvbkNoYW5nZVJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9u
c3VjY2VzcyA9IGluU2V0VmVyc2lvbjsKKworICAgIC8vIGFuZCBjb25jdXJyZW50bHkuLi4KKwor
ICAgIGRlYnVnKCJjYWxsaW5nIG9wZW4oKSAtIGNhbGxiYWNrIHNob3VsZCB3YWl0IHVudGlsIFZF
UlNJT05fQ0hBTkdFIHRyYW5zYWN0aW9uIGlzIGNvbXBsZXRlIik7CisgICAgdmFyIG9wZW5SZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3ZlcnNpb24tY2hhbmdlLWV4Y2x1c2l2
ZScpIik7CisgICAgb3BlblJlcXVlc3Qub25zdWNjZXNzID0gb3BlbkFnYWluU3VjY2VzczsKKyAg
ICBvcGVuUmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIGluU2V0VmVyc2lvbigpCit7CisgICAgZGVidWcoInNldFZlcnNpb24oKSBjYWxsYmFj
ayIpOworICAgIGRlYnVnKCJzdGFydGluZyB3b3JrIGluIFZFUlNJT05fQ0hBTkdFIHRyYW5zYWN0
aW9uIik7CisgICAgZXZhbEFuZExvZygic2VsZi5zdGF0ZSA9ICdWRVJTSU9OX0NIQU5HRSBzdGFy
dGVkJyIpOworCisgICAgc2VsZi5zdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ3Rlc3Qtc3RvcmUnKSIpOworICAgIHNlbGYuY291bnQgPSAwOworICAgIGRv
X2FzeW5jX3B1dHMoKTsKKworICAgIGZ1bmN0aW9uIGRvX2FzeW5jX3B1dHMoKSB7CisgICAgICAg
IHZhciByZXEgPSBldmFsQW5kTG9nKCJzdG9yZS5wdXQoIiArIGNvdW50ICsgIiwgIiArIGNvdW50
ICsgIikiKTsKKyAgICAgICAgcmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICAgICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgICAgICBkZWJ1
ZygiaW4gcHV0J3Mgb25zdWNjZXNzIik7CisgICAgICAgICAgICBpZiAoKytzZWxmLmNvdW50IDwg
MTApIHsKKyAgICAgICAgICAgICAgICBkb19hc3luY19wdXRzKCk7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIGRlYnVnKCJlbmRpbmcgd29yayBpbiBWRVJTSU9OX0NIQU5H
RSB0cmFuc2FjdGlvbiIpOworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coInNlbGYuc3RhdGUg
PSAnVkVSU0lPTl9DSEFOR0UgZmluaXNoZWQnIik7CisgICAgICAgICAgICB9CisgICAgICAgIH07
CisgICAgfQorfQorCitmdW5jdGlvbiBvcGVuQWdhaW5TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygi
b3BlbigpIGNhbGxiYWNrIC0gdGhpcyBzaG91bGQgYXBwZWFyIGFmdGVyIFZFUlNJT05fQ0hBTkdF
IHRyYW5zYWN0aW9uIGVuZHMiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNlbGYuc3Rh
dGUiLCAiVkVSU0lPTl9DSEFOR0UgZmluaXNoZWQiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30K
KwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy92ZXJzaW9uY2hhbmdlcmVxdWVzdC1h
Y3RpdmVkb21vYmplY3QuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvdmVyc2lvbmNoYW5nZXJlcXVlc3QtYWN0aXZlZG9tb2JqZWN0LmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1
YWFiNDE0YTUwMmE4MTQzYzMzYzZjYmFkMTE0NTgyNTg2OWNjZTYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdmVyc2lvbmNoYW5nZXJl
cXVlc3QtYWN0aXZlZG9tb2JqZWN0LmpzCkBAIC0wLDAgKzEsNjcgQEAKK2lmICh0aGlzLmltcG9y
dFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQor
CitkZXNjcmlwdGlvbigiRW5zdXJlIHRoYXQgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Qgb2JqZWN0
cyBhcmUgbm90IEdDJ2QgaWYgdGhleSBoYXZlIHBlbmRpbmcgZXZlbnRzIik7CisKK2Z1bmN0aW9u
IHRlc3QoKSB7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIGRlYnVnKCIiKTsK
KyAgICBldmFsQW5kTG9nKCJzZWxmLmRibmFtZSA9ICd2ZXJzaW9uY2hhbmdlcmVxdWVzdC1hY3Rp
dmVkb21vYmplY3QnIik7CisKKyAgICB0ZXN0RGVsZXRlRGF0YWJhc2UoKTsKK30KKworZnVuY3Rp
b24gdGVzdERlbGV0ZURhdGFiYXNlKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInRl
c3REZWxldGVEYXRhYmFzZSgpOiIpOworICAgIC8vIE5PVEU6IGRlbGV0ZVJlcXVlc3QgaXMgbG9j
YWwgdmFyaWFibGUgc28gaXQgaXMgbm90IGNhcHR1cmVkIGluIGdsb2JhbCBzY29wZS4KKyAgICB2
YXIgZGVsZXRlUmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShz
ZWxmLmRibmFtZSkiKTsKKyAgICBkZWxldGVSZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICBkZWxldGVSZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9j
a2VkQ2FsbGJhY2s7CisgICAgZGVsZXRlUmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsg
ZGVsZXRlU3VjY2VzcygpOyB9OworICAgIGRlbGV0ZVJlcXVlc3QgPSBudWxsOworICAgIGlmIChz
ZWxmLmdjKSB7CisgICAgICAgIGV2YWxBbmRMb2coInNlbGYuZ2MoKSIpOworICAgIH0KK30KKwor
ZnVuY3Rpb24gZGVsZXRlU3VjY2VzcygpCit7CisgICAgdGVzdFBhc3NlZCgiZGVsZXRlRGF0YWJh
c2UncyBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5vbnN1Y2Nlc3MgZXZlbnQgZmlyZWQiKTsKKyAg
ICB0ZXN0U2V0VmVyc2lvbigpOworfQorCitmdW5jdGlvbiB0ZXN0U2V0VmVyc2lvbigpCit7Cisg
ICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0U2V0VmVyc2lvbigpOiIpOworCisgICAgLy8g
Tk9URTogVGhpcyBpcyBqdXN0IGFuIElEQlJlcXVlc3QsIGl0IGNhbiBiZSBnbG9iYWwuCisgICAg
ZXZhbEFuZExvZygib3BlblJlcXVlc3QgPSBpbmRleGVkREIub3BlbihzZWxmLmRibmFtZSkiKTsK
KyAgICBvcGVuUmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAg
b3BlblJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICBldmFsQW5kTG9n
KCJkYiA9IG9wZW5SZXF1ZXN0LnJlc3VsdCIpOworCisgICAgICAgIC8vIE5PVEU6IHZlcnNpb25S
ZXF1ZXN0IGlzIGxvY2FsIHZhcmlhYmxlIHNvIGl0IGlzIG5vdCBjYXB0dXJlZCBpbiBnbG9iYWwg
c2NvcGUuCisgICAgICAgIHZhciB2ZXJzaW9uUmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZl
cnNpb24oJzEnKSIpOworICAgICAgICB2ZXJzaW9uUmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHZlcnNpb25SZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhw
ZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7CisgICAgICAgIHZlcnNpb25SZXF1ZXN0Lm9uc3VjY2VzcyA9
IGZ1bmN0aW9uKCkgeyB2ZXJzaW9uU3VjY2VzcygpOyB9OworICAgICAgICB2ZXJzaW9uUmVxdWVz
dCA9IG51bGw7CisgICAgICAgIGlmIChzZWxmLmdjKSB7CisgICAgICAgICAgICBldmFsQW5kTG9n
KCJzZWxmLmdjKCkiKTsKKyAgICAgICAgfQorICAgIH07Cit9CisKK2Z1bmN0aW9uIHZlcnNpb25T
dWNjZXNzKCkKK3sKKyAgICB0ZXN0UGFzc2VkKCJzZXRWZXJzaW9uJ3MgSURCVmVyc2lvbkNoYW5n
ZVJlcXVlc3Qub25zdWNjZXNzIGV2ZW50IGZpcmVkIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9
CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRWZXJzaW9uLW51bGwuaHRtbCBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldFZlcnNpb24tbnVsbC5odG1sCmluZGV4IGNiMmJjNmVl
MWFlZDQ2OGM3ZDk3MjRhYmE5N2E4ZDkyYmZjMDI0MmMuLmRmM2YzZDA4NzAyZGM1OTU1YjA5YjJl
MTJhYjY5ZGFjYzRiMGM2MTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3NldFZlcnNpb24tbnVsbC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3NldFZlcnNpb24tbnVsbC5odG1sCkBAIC0xLDQ0ICsxLDEwIEBACi08IURPQ1RZUEUgaHRt
bD4gCi08aHRtbD4gCis8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4gCi08c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+IAotPC9oZWFkPiAKLTxib2R5PiAKLTxzY3JpcHQ+IAot
IAotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIHdpdGggbnVsbCB2ZXJzaW9uIHN0cmluZyIp
OwotIAotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAK
LSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJN
eSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9w
ZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3Vj
Y2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0K
LSAKLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotIAotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5z
ZXRWZXJzaW9uKG51bGwpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdFNldFZlcnNp
b247Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0K
LWZ1bmN0aW9uIHBvc3RTZXRWZXJzaW9uKCkKLXsKLSAgICBzaG91bGRCZSgiZGIudmVyc2lvbiIs
ICInbnVsbCciKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLSAKLSAKLXRlc3QoKTsKLSAKLTwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zZXRWZXJzaW9uLW51
bGwuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+IAorPC9ib2R5PgogPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0VmVyc2lvbi11bmRlZmlu
ZWQuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldFZlcnNpb24tdW5kZWZp
bmVkLmh0bWwKaW5kZXggYmVkYzFlMDViNTQxMDFkYmEzZjgxODc2Yzc0Zjg0Nzc3Yjg5ODc3YS4u
YWU2MGYxYzVlOTM4NDdhMDRhMjM3Y2QzZmIzMjkyOWNmZGY1NWM4ZSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0VmVyc2lvbi11bmRlZmluZWQuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRWZXJzaW9uLXVuZGVmaW5lZC5odG1s
CkBAIC0xLDM3ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4gCi08aHRtbD4gCis8aHRtbD4KIDxo
ZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4gCi08c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+
IAotPC9oZWFkPiAKLTxib2R5PiAKLTxzY3JpcHQ+IAotIAotZGVzY3JpcHRpb24oIlRlc3QgSW5k
ZXhlZERCIHZlcnNpb24gc3RyaW5nIGlzIHJlcXVpcmVkIik7Ci0gCi1mdW5jdGlvbiB0ZXN0KCkK
LXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotIAotICAgIG5hbWUgPSBzZWxmLmxvY2F0
aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbiki
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotIAotZnVuY3Rpb24gb3BlblN1Y2Nl
c3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
Ci0gCi0gICAgc2hvdWxkVGhyb3coImRiLnNldFZlcnNpb24oKTsiKTsKLSAgICBmaW5pc2hKU1Rl
c3QoKTsKLX0KLSAKLSAKLXRlc3QoKTsKLSAKLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9zZXRWZXJzaW9uLXVuZGVmaW5lZC5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KLTwvYm9keT4gCis8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9ibG9ja2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9ibG9ja2VkLmh0bWwKaW5kZXggYzI0NGQ0MzJj
ZmJkNDkxNDZkYWMxMWEwYzMzMWViMDU5YTczNGU1Mi4uNDA4ZTZmYTI5N2JiN2NkMjg3ODViYjA2
NTJiYjk2MmFkOWVjMDkwNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvc2V0X3ZlcnNpb25fYmxvY2tlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3NldF92ZXJzaW9uX2Jsb2NrZWQuaHRtbApAQCAtMSw2NCArMSwxMCBAQAotPGh0bWw+
DQotPGhlYWQ+DQotPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4NCi08c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9z
Y3JpcHQ+DQotPC9oZWFkPg0KLTxib2R5Pg0KLTxzY3JpcHQ+DQotDQotZGVzY3JpcHRpb24oIkFu
IG9wZW4gY29ubmVjdGlvbiBibG9ja3MgYSBzZXBhcmF0ZSBjb25uZWN0aW9uJ3Mgc2V0VmVyc2lv
biBjYWxsIik7DQotDQotY29ubmVjdGlvbnMgPSBbXQ0KLWZ1bmN0aW9uIHRlc3QoKQ0KLXsNCi0g
ICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsNCi0gICAgb3BlbkRCQ29ubmVjdGlvbigpOw0KLX0N
Ci0NCi1mdW5jdGlvbiBvcGVuREJDb25uZWN0aW9uKCkNCi17DQotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJpbmRleGVkREIub3Blbignc2V0LXZlcnNpb24tYmxvY2tlZCcpIik7DQotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7DQotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOw0KLX0NCi0NCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpDQot
ew0KLSAgICBjb25uZWN0aW9uID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsNCi0gICAgY29ubmVjdGlv
bnMucHVzaChjb25uZWN0aW9uKTsNCi0gICAgb3JpZ2luYWxfdmVyc2lvbiA9IGNvbm5lY3Rpb24u
dmVyc2lvbjsNCi0gICAgaWYgKGNvbm5lY3Rpb25zLmxlbmd0aCA8IDIpDQotICAgICAgICBvcGVu
REJDb25uZWN0aW9uKCk7DQotICAgIGVsc2Ugew0KLSAgICAgICAgdmFyIHZlcnNpb25DaGFuZ2VS
ZXF1ZXN0ID0gZXZhbEFuZExvZygiY29ubmVjdGlvbnNbMF0uc2V0VmVyc2lvbigndmVyc2lvbiAx
JykiKTsNCi0gICAgICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsNCi0gICAgICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uc3VjY2VzcyA9
IGluU2V0VmVyc2lvbjsNCi0gICAgICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uYmxvY2tlZCA9
IGJsb2NrZWQ7DQotICAgIH0NCi19DQotDQotc2Vlbl9ibG9ja2VkX2V2ZW50ID0gZmFsc2U7DQot
ZnVuY3Rpb24gYmxvY2tlZCgpDQotew0KLSAgICBldmFsQW5kTG9nKCJzZWVuX2Jsb2NrZWRfZXZl
bnQgPSB0cnVlIik7DQotICAgIGJsb2NrZWRfZXZlbnQgPSBldmVudDsNCi0gICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJibG9ja2VkX2V2ZW50LnZlcnNpb24iLCAidmVyc2lvbiAxIik7DQotICAg
IHNob3VsZEV2YWx1YXRlVG8oImJsb2NrZWRfZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUiLCAxKTsN
Ci0gICAgZXZhbEFuZExvZygiY29ubmVjdGlvbnNbMV0uY2xvc2UoKSIpOw0KLX0NCi0NCi1mdW5j
dGlvbiBpblNldFZlcnNpb24oKQ0KLXsNCi0gICAgZGVidWcoImluIHNldFZlcnNpb24ub25zdWNj
ZXNzIik7DQotICAgIHNob3VsZEJlVHJ1ZSgic2Vlbl9ibG9ja2VkX2V2ZW50Iik7DQotICAgIGRl
bGV0ZUFsbE9iamVjdFN0b3Jlcyhjb25uZWN0aW9uc1swXSk7DQotICAgIGZpbmlzaEpTVGVzdCgp
Ow0KLX0NCi0NCi0NCi10ZXN0KCk7DQotDQotPC9zY3JpcHQ+DQotPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+DQotPC9ib2R5Pg0K
LTwvaHRtbD4NCis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
c2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy9zZXRfdmVyc2lvbl9ibG9ja2VkLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0X3Zl
cnNpb25fcXVldWUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJz
aW9uX3F1ZXVlLmh0bWwKaW5kZXggNGVhYmVjNmE5NWU4MGQ2OWQyODBhN2NkOTVkYmMyMTIyZjg4
MTc0Ni4uYzE2Y2RkNzFjMDdiYzUyMDYwNzhhMzEzNGU5MDgxMWJkNzJkY2VmMSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNpb25fcXVldWUuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9xdWV1ZS5odG1s
CkBAIC0xLDEzMSArMSwxMCBAQAotPGh0bWw+DQotPGhlYWQ+DQotPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4NCi08c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+DQotPC9oZWFkPg0KLTxib2R5Pg0KLTxz
Y3JpcHQ+DQotDQotZGVzY3JpcHRpb24oIjQgb3BlbiBjb25uZWN0aW9ucyB0cnkgdG8gc2V0VmVy
c2lvbiBhdCB0aGUgc2FtZSB0aW1lLiAgMyBjb25uZWN0aW9ucyBldmVudHVhbGx5IGNsb3NlLCBh
bGxvd2luZyAxIHNldFZlcnNpb24gY2FsbCB0byBwcm9jZWVkLiIpOw0KLQ0KLWNvbm5lY3Rpb25z
ID0gW10NCi1mdW5jdGlvbiB0ZXN0KCkNCi17DQotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7
DQotDQotICAgIG9wZW5EQkNvbm5lY3Rpb24oKTsNCi19DQotDQotZnVuY3Rpb24gb3BlbkRCQ29u
bmVjdGlvbigpDQotew0KLSAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbign
c2V0LXZlcnNpb24tcXVldWUnKSIpOw0KLSAgICByZXN1bHQub25zdWNjZXNzID0gb3BlblN1Y2Nl
c3M7DQotICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQotfQ0K
LQ0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkNCi17DQotICAgIGNvbm5lY3Rpb24gPSBldmVudC50
YXJnZXQucmVzdWx0Ow0KLSAgICBjb25uZWN0aW9uLm9udmVyc2lvbmNoYW5nZSA9IGdlbmVyYXRl
VmVyc2lvbkNoYW5nZUhhbmRsZXIoKTsNCi0gICAgY29ubmVjdGlvbnMucHVzaChjb25uZWN0aW9u
KTsNCi0gICAgaWYgKGNvbm5lY3Rpb25zLmxlbmd0aCA8IDQpDQotICAgICAgICBvcGVuREJDb25u
ZWN0aW9uKCk7DQotICAgIGVsc2Ugew0KLSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImNv
bm5lY3Rpb25zWzBdLnNldFZlcnNpb24oJ3ZlcnNpb24gMCcpIik7DQotICAgICAgICByZXF1ZXN0
Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCl7IGNvbm5lY3Rpb25FcnJvcihldmVudCwgMCkgfTsN
Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsN
Ci0gICAgICAgIHJlcXVlc3Qub25ibG9ja2VkID0gYmxvY2tlZDA7DQotICAgICAgICByZXF1ZXN0
MSA9IGV2YWxBbmRMb2coImNvbm5lY3Rpb25zWzFdLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7
DQotICAgICAgICByZXF1ZXN0MS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQot
ICAgICAgICByZXF1ZXN0MS5vbnN1Y2Nlc3MgPSBpblNldFZlcnNpb24xOw0KLSAgICAgICAgcmVx
dWVzdDEub25ibG9ja2VkID0gYmxvY2tlZDE7DQotICAgICAgICByZXF1ZXN0MiA9IGV2YWxBbmRM
b2coImNvbm5lY3Rpb25zWzJdLnNldFZlcnNpb24oJ3ZlcnNpb24gMicpIik7DQotICAgICAgICBy
ZXF1ZXN0Mi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpeyBjb25uZWN0aW9uRXJyb3IoZXZlbnQs
IDIpIH07DQotICAgICAgICByZXF1ZXN0Mi5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0Nh
bGxiYWNrOw0KLSAgICAgICAgcmVxdWVzdDIub25ibG9ja2VkID0gYmxvY2tlZDI7DQotICAgICAg
ICByZXF1ZXN0MyA9IGV2YWxBbmRMb2coImNvbm5lY3Rpb25zWzNdLnNldFZlcnNpb24oJ3ZlcnNp
b24gMycpIik7DQotICAgICAgICByZXF1ZXN0My5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpeyBj
b25uZWN0aW9uRXJyb3IoZXZlbnQsIDMpIH07DQotICAgICAgICByZXF1ZXN0My5vbnN1Y2Nlc3Mg
PSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOw0KLSAgICAgICAgcmVxdWVzdDMub25ibG9ja2Vk
ID0gYmxvY2tlZDM7DQotICAgICAgICBkZWJ1ZygiIik7DQotICAgIH0NCi19DQotDQotZnVuY3Rp
b24gZ2VuZXJhdGVWZXJzaW9uQ2hhbmdlSGFuZGxlcigpDQotew0KLSAgICB2YXIgY29ubmVjdGlv
bk51bSA9IGNvbm5lY3Rpb25zLmxlbmd0aDsNCi0gICAgcmV0dXJuIGZ1bmN0aW9uKGV2ZW50KQ0K
LSAgICB7DQotICAgICAgICBzaG91bGRCZVRydWUoImV2ZW50LnZlcnNpb24ubGVuZ3RoID4gMCIp
Ow0KLSAgICAgICAgZGVidWcoImNvbm5lY3Rpb25bIiArIGNvbm5lY3Rpb25OdW0gKyAiXSByZWNl
aXZlZCB2ZXJzaW9uQ2hhbmdlRXZlbnQ6ICIgKyBldmVudC52ZXJzaW9uKTsNCi0gICAgfQ0KLX0N
Ci0NCi1ibG9ja2VkMGZpcmVkID0gZmFsc2U7DQotYmxvY2tlZDJmaXJlZCA9IGZhbHNlOw0KLWZ1
bmN0aW9uIGJsb2NrZWQwKGV2ZW50KQ0KLXsNCi0gICAgZGVidWcoIiIpOw0KLSAgICB0ZXN0UGFz
c2VkKCJjb25uZWN0aW9uWzBdIGdvdCBibG9ja2VkIGV2ZW50Iik7DQotICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiZXZlbnQudmVyc2lvbiIsICJ2ZXJzaW9uIDAiKTsNCi0gICAgZGVidWcoIkNs
b3NlIHRoZSBjb25uZWN0aW9uIHRoYXQgcmVjZWl2ZWQgdGhlIGJsb2NrIGV2ZW50OiIpOw0KLSAg
ICBldmFsQW5kTG9nKCJjb25uZWN0aW9uc1swXS5jbG9zZSgpIik7DQotICAgIGRlYnVnKCJDbG9z
ZSBhbm90aGVyIGNvbm5lY3Rpb24gYXMgd2VsbCwgdG8gdGVzdCA0LjcuNC1ub3RlOiIpOw0KLSAg
ICBldmFsQW5kTG9nKCJjb25uZWN0aW9uc1szXS5jbG9zZSgpIik7DQotICAgIGV2YWxBbmRMb2co
ImJsb2NrZWQwZmlyZWQgPSB0cnVlIik7DQotICAgIGRlYnVnKCIiKTsNCi19DQotDQotZnVuY3Rp
b24gYmxvY2tlZDEoZXZlbnQpDQotew0KLSAgICBkZWJ1ZygiIikNCi0gICAgdGVzdFBhc3NlZCgi
Y29ubmVjdGlvblsxXSBnb3QgYmxvY2tlZCBldmVudCIpOw0KLSAgICBkZWJ1ZygiRW5zdXJlIHRo
YXQgdGhpcyBibG9ja2VkIGV2ZW50IGlzIGluIG9yZGVyOiIpOw0KLSAgICBzaG91bGRCZVRydWUo
ImJsb2NrZWQwZmlyZWQiKTsNCi0gICAgc2hvdWxkQmVGYWxzZSgiYmxvY2tlZDJmaXJlZCIpOw0K
LSAgICBkZWJ1ZygiIikNCi19DQotDQotZnVuY3Rpb24gYmxvY2tlZDIoZXZlbnQpDQotew0KLSAg
ICBkZWJ1ZygiIikNCi0gICAgdGVzdFBhc3NlZCgiY29ubmVjdGlvblsyXSBnb3QgYmxvY2tlZCBl
dmVudCIpOw0KLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnZlcnNpb24iLCAidmVy
c2lvbiAyIik7DQotICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb25zWzJdLmNsb3NlKCkiKTsNCi0g
ICAgZXZhbEFuZExvZygiYmxvY2tlZDJmaXJlZCA9IHRydWUiKTsNCi0gICAgZGVidWcoIiIpDQot
fQ0KLQ0KLWZ1bmN0aW9uIGJsb2NrZWQzKGV2ZW50KQ0KLXsNCi0gICAgZGVidWcoIiIpDQotICAg
IHRlc3RQYXNzZWQoImNvbm5lY3Rpb25bM10gZ290IGJsb2NrZWQgZXZlbnQiKTsNCi0gICAgZGVi
dWcoIk5vdGU6IFRoaXMgbWVhbnMgdGhhdCBhIGNvbm5lY3Rpb24gY2FuIHJlY2VpdmUgYSBibG9j
a2VkIGV2ZW50IGFmdGVyIGl0cyBjbG9zZSgpIG1ldGhvZCBoYXMgYmVlbiBjYWxsZWQuICBTcGVj
IGlzIHNpbGVudCBvbiB0aGUgaXNzdWUgYW5kIHRoaXMgaXMgZWFzaWVzdCB0byBpbXBsZW1lbnQu
Iik7DQotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudmVyc2lvbiIsICJ2ZXJzaW9u
IDMiKTsNCi19DQotDQotZnVuY3Rpb24gY29ubmVjdGlvbkVycm9yKGV2ZW50LCBjb25uZWN0aW9u
SWQpDQotew0KLSAgICBkZWJ1ZygiIikNCi0gICAgdGVzdFBhc3NlZCgiY29ubmVjdGlvblsiICsg
Y29ubmVjdGlvbklkICsgIl0gZ290IGVycm9yIGV2ZW50Iik7DQotICAgIHNob3VsZEJlKCJldmVu
dC50YXJnZXQuZXJyb3JDb2RlIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkFCT1JUX0VSUiIpDQot
ICAgIGlmICgnd2Via2l0RXJyb3JNZXNzYWdlJyBpbiBldmVudC50YXJnZXQpIHsNCi0gICAgICAg
IHNob3VsZEJlKCJldmVudC50YXJnZXQud2Via2l0RXJyb3JNZXNzYWdlLmxlbmd0aCA+IDAiLCAi
dHJ1ZSIpOw0KLSAgICAgICAgZGVidWcoZXZlbnQudGFyZ2V0LndlYmtpdEVycm9yTWVzc2FnZSk7
DQotICAgIH0NCi19DQotDQotZnVuY3Rpb24gaW5TZXRWZXJzaW9uMShldmVudCkNCi17DQotICAg
IGRlYnVnKCIiKQ0KLSAgICB0ZXN0UGFzc2VkKCJjb25uZWN0aW9uWzFdIGdvdCBpbnRvIFNldFZl
cnNpb24iKTsNCi0gICAgZmluaXNoSlNUZXN0KCk7DQotfQ0KLQ0KLQ0KLXRlc3QoKTsNCi0NCi08
L3NjcmlwdD4NCi08c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4NCi08L2JvZHk+DQotPC9odG1sPg0KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NldF92ZXJzaW9uX3F1ZXVlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvc3RydWN0dXJlZC1jbG9uZS5odG1sIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvc3RydWN0dXJlZC1jbG9uZS5odG1sCmluZGV4IGZkYThkMmJjOGU4
YmJhNzk4YWUwZjA4MjYyZTNiNzMzMDI5YzYxYjEuLmIyMTc5YWIwYmY3ZWM0NmQ3ZmUxMzQ3NTA3
ODQzMThhMTMxMDJlNmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3N0cnVjdHVyZWQtY2xvbmUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9zdHJ1Y3R1cmVkLWNsb25lLmh0bWwKQEAgLTUsNTM3ICs1LDcgQEAKIDwvaGVhZD4KIDxib2R5
PgogPGlucHV0IHR5cGU9ImZpbGUiIGlkPSJmaWxlSW5wdXQiIG11bHRpcGxlPjwvaW5wdXQ+Ci08
c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBzdHJ1Y3R1cmVkIGNsb25lIHBlcm11dGF0aW9u
cyBpbiBJbmRleGVkREIuIEZpbGUvRmlsZUxpc3QgdGVzdHMgcmVxdWlyZSBEdW1wUmVuZGVyVHJl
ZS4iKTsKLQotaWYgKHNlbGYuZXZlbnRTZW5kZXIpIHsKLSAgICB2YXIgZmlsZUlucHV0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZpbGVJbnB1dCIpOwotICAgIHZhciBmaWxlUmVjdCA9IGZp
bGVJbnB1dC5nZXRDbGllbnRSZWN0cygpWzBdOwotICAgIHZhciB0YXJnZXRYID0gZmlsZVJlY3Qu
bGVmdCArIGZpbGVSZWN0LndpZHRoIC8gMjsKLSAgICB2YXIgdGFyZ2V0WSA9IGZpbGVSZWN0LnRv
cCArIGZpbGVSZWN0LmhlaWdodCAvIDI7Ci0gICAgZXZlbnRTZW5kZXIuYmVnaW5EcmFnV2l0aEZp
bGVzKFsncmVzb3VyY2VzL3Rlc3QtZGF0YS5odG1sJywgJ3Jlc291cmNlcy90ZXN0LWRhdGEudHh0
J10pOwotICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHRhcmdldFgsIHRhcmdldFkpOwotICAg
IGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKLX0KLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVt
b3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICBwcmVwYXJlRGF0YWJhc2UoKTsKLX0KLQotZnVuY3Rp
b24gcHJlcGFyZURhdGFiYXNlKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIlByZXBh
cmUgRGF0YWJhc2UiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0
ZURhdGFiYXNlKCdzdHJ1Y3R1cmVkLWNsb25lJykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KGUpIHsKLSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdzdHJ1
Y3R1cmVkLWNsb25lJykiKTsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZSkgewot
ICAgICAgICAgICAgZXZhbEFuZExvZygiZGIgPSByZXF1ZXN0LnJlc3VsdCIpOwotICAgICAgICAg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkYi52ZXJzaW9uIiwgIiIpOwotICAgICAgICAgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgICAgICAgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgICAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICBldmFsQW5k
TG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLSAgICAgICAgICAgICAg
ICB2YXIgdHJhbnMgPSByZXF1ZXN0LnJlc3VsdDsKLSAgICAgICAgICAgICAgICB0cmFucy5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgICAgICAgICAgdHJhbnMub25h
Ym9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgICAgICAgICAgICAgIHRyYW5zLm9u
Y29tcGxldGUgPSBzdGFydFRlc3RzOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICB9
OwotfQotCi1mdW5jdGlvbiBzdGFydFRlc3RzKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVi
dWcoIlJ1bm5pbmcgdGVzdHMuLi4iKTsKLSAgICB2YXIgdGVzdHNfdG9fcnVuID0gWwotICAgICAg
ICB0ZXN0VW5kZWZpbmVkLAotICAgICAgICB0ZXN0TnVsbCwKLSAgICAgICAgdGVzdEJvb2xlYW4s
Ci0gICAgICAgIHRlc3ROdW1iZXIsCi0gICAgICAgIHRlc3RTdHJpbmcsCi0gICAgICAgIHRlc3RC
b29sZWFuT2JqZWN0LAotICAgICAgICB0ZXN0TnVtYmVyT2JqZWN0LAotICAgICAgICB0ZXN0U3Ry
aW5nT2JqZWN0LAotICAgICAgICB0ZXN0RGF0ZU9iamVjdCwKLSAgICAgICAgdGVzdFJlZ0V4cE9i
amVjdCwKLSAgICAgICAgdGVzdEltYWdlRGF0YSwKLSAgICAgICAgdGVzdEJsb2IsCi0gICAgICAg
IHRlc3RGaWxlLAotICAgICAgICB0ZXN0RmlsZUxpc3QsCi0gICAgICAgIHRlc3RBcnJheSwKLSAg
ICAgICAgdGVzdE9iamVjdAotICAgIF07Ci0KLSAgICBmdW5jdGlvbiBuZXh0VGVzdCgpIHsKLSAg
ICAgICAgZGVidWcoIiIpOwotICAgICAgICBpZiAodGVzdHNfdG9fcnVuLmxlbmd0aCkgewotICAg
ICAgICAgICAgdmFyIHRlc3QgPSB0ZXN0c190b19ydW4uc2hpZnQoKTsKLSAgICAgICAgICAgIHRl
c3QobmV4dFRlc3QpOyAvLyBXaGVuIGRvbmUsIGNhbGwgdGhpcyBhZ2Fpbi4KLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIHRlc3RCYWRUeXBlcygpOwotICAgICAgICB9Ci0gICAgfQotICAg
IG5leHRUZXN0KCk7Ci19Ci0KLWZ1bmN0aW9uIGZvckVhY2hXaXRoQ2FsbGJhY2sodGVzdEZ1bmN0
aW9uLCB2YWx1ZXMsIGNhbGxiYWNrKQotewotICAgIGZ1bmN0aW9uIG5leHRWYWx1ZSgpIHsKLSAg
ICAgICAgaWYgKHZhbHVlcy5sZW5ndGgpIHsKLSAgICAgICAgICAgIHRlc3RGdW5jdGlvbih2YWx1
ZXMuc2hpZnQoKSwgbmV4dFZhbHVlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGNh
bGxiYWNrKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBuZXh0VmFsdWUoKTsKLX0KLQotZnVu
Y3Rpb24gdGVzdFZhbHVlKHZhbHVlLCBjYWxsYmFjaykKLXsKLSAgICAvLyBPbmUgdHJhbnNhY3Rp
b24gcGVyIHRlc3QsIHNpbmNlIHNvbWUgdGVzdHMgcmVxdWlyZSBhc3luY2hyb25vdXMKLSAgICAv
LyBvcGVyYXRpb25zIHRvIHZlcmlmeSB0aGUgcmVzdWx0IChlLmcuIHZpYSBGaWxlUmVhZGVyKQot
ICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlTmFtZScs
IElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgdHJhbnNhY3Rpb24ub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4
cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9u
Lm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotCi0gICAgc2VsZi52YWx1ZSA9IHZhbHVlOwot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5wdXQodmFsdWUsICdrZXknKSIpOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24oZSkgewotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
c3RvcmUuZ2V0KCdrZXknKSIpOwotICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihlKSB7
Ci0gICAgICAgICAgICBjYWxsYmFjayhyZXF1ZXN0LnJlc3VsdCk7Ci0gICAgICAgIH07Ci0gICAg
fTsKLX0KLQotLy8gSWRlbnRpdHkgdGVzdGluZywgc2Vuc2l0aXZlIHRvIE5hTiBhbmQgLTAKLWZ1
bmN0aW9uIGlzKHgsIHkpIHsKLSAgICBpZiAoeCA9PT0geSkgewotICAgICAgICByZXR1cm4geCAh
PT0gMCB8fCAxIC8geCA9PT0gMSAvIHk7Ci0gICAgfQotICAgIHJldHVybiB4ICE9PSB4ICYmIHkg
IT09IHk7Ci19Ci0KLWZ1bmN0aW9uIGFycmF5Q29tcGFyZShhLCBiKSB7Ci0gICAgaWYgKGEubGVu
Z3RoICE9PSBiLmxlbmd0aCkgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgYS5sZW5ndGg7ICsraSkgewotICAgICAgICBpZiAoIWlzKGFbaV0s
IGJbaV0pKSB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RQcmltaXRpdmVWYWx1ZShzdHJpbmcs
IGNhbGxiYWNrKQotewotICAgIGRlYnVnKCJUZXN0aW5nOiAiICsgc3RyaW5nKTsKLSAgICB2YXIg
dmFsdWUgPSBldmFsKCJ2YWx1ZSA9ICgiICsgc3RyaW5nICsgIikiKTsKLSAgICB0ZXN0X2RhdGEg
PSB2YWx1ZTsKLSAgICB0ZXN0VmFsdWUodGVzdF9kYXRhLCBmdW5jdGlvbihyZXN1bHQpIHsKLSAg
ICAgICAgc2VsZi5yZXN1bHQgPSByZXN1bHQ7Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgiaXModGVz
dF9kYXRhLCByZXN1bHQpIik7Ci0gICAgICAgIGRlYnVnKCIiKTsKLSAgICAgICAgY2FsbGJhY2so
KTsKLSAgICB9KTsKLX0KLQotZnVuY3Rpb24gdGVzdE9iamVjdFdpdGhWYWx1ZShzdHJpbmcsIGNh
bGxiYWNrKQotewotICAgIGRlYnVnKCJUZXN0aW5nOiAiICsgc3RyaW5nKTsKLSAgICB2YXIgdmFs
dWUgPSBldmFsKCJ2YWx1ZSA9ICgiICsgc3RyaW5nICsgIikiKTsKLSAgICB0ZXN0X2RhdGEgPSB2
YWx1ZTsKLSAgICB0ZXN0VmFsdWUodGVzdF9kYXRhLCBmdW5jdGlvbihyZXN1bHQpIHsKLSAgICAg
ICAgc2VsZi5yZXN1bHQgPSByZXN1bHQ7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
dHlwZW9mIHJlc3VsdCIsICJvYmplY3QiKTsKLSAgICAgICAgc2hvdWxkQmUoIk9iamVjdC5wcm90
b3R5cGUudG9TdHJpbmcuY2FsbChyZXN1bHQpIiwgIk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcu
Y2FsbCh0ZXN0X2RhdGEpIik7Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgidGVzdF9kYXRhICE9PSBy
ZXN1bHQiKTsKLSAgICAgICAgc2hvdWxkQmUoInJlc3VsdC50b1N0cmluZygpIiwgInRlc3RfZGF0
YS50b1N0cmluZygpIik7Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgiaXModGVzdF9kYXRhLnZhbHVl
T2YoKSwgcmVzdWx0LnZhbHVlT2YoKSkiKTsKLSAgICAgICAgZGVidWcoIiIpOwotICAgICAgICBj
YWxsYmFjaygpOwotICAgIH0pOwotfQotCi1mdW5jdGlvbiB0ZXN0VW5kZWZpbmVkKGNhbGxiYWNr
KQotewotICAgIHRlc3RQcmltaXRpdmVWYWx1ZSgidW5kZWZpbmVkIiwgY2FsbGJhY2spOwotfQot
Ci1mdW5jdGlvbiB0ZXN0TnVsbChjYWxsYmFjaykKLXsKLSAgICB0ZXN0UHJpbWl0aXZlVmFsdWUo
Im51bGwiLCBjYWxsYmFjayk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RCb29sZWFuKGNhbGxiYWNrKQot
ewotICAgIGRlYnVnKCJUZXN0aW5nIGJvb2xlYW4gcHJpbWl0aXZlcyIpOwotICAgIGRlYnVnKCIi
KTsKLSAgICBmb3JFYWNoV2l0aENhbGxiYWNrKHRlc3RQcmltaXRpdmVWYWx1ZSwgWyJ0cnVlIiwg
ImZhbHNlIl0sIGNhbGxiYWNrKTsKLX0KLQotZnVuY3Rpb24gdGVzdEJvb2xlYW5PYmplY3QoY2Fs
bGJhY2spCi17Ci0gICAgZGVidWcoIlRlc3RpbmcgQm9vbGVhbiBvYmplY3RzIik7Ci0gICAgZGVi
dWcoIiIpOwotICAgIGZvckVhY2hXaXRoQ2FsbGJhY2sodGVzdE9iamVjdFdpdGhWYWx1ZSwgWwot
ICAgICAgICAibmV3IEJvb2xlYW4odHJ1ZSkiLAotICAgICAgICAibmV3IEJvb2xlYW4oZmFsc2Up
IgotICAgIF0sIGNhbGxiYWNrKTsKLX0KLQotZnVuY3Rpb24gdGVzdFN0cmluZyhjYWxsYmFjaykK
LXsKLSAgICBkZWJ1ZygiVGVzdGluZyBzdHJpbmcgcHJpbWl0aXZlcyIpOwotICAgIGRlYnVnKCIi
KTsKLSAgICBmb3JFYWNoV2l0aENhbGxiYWNrKHRlc3RQcmltaXRpdmVWYWx1ZSwgWwotICAgICAg
ICAiJyciLAotICAgICAgICAiJ3RoaXMgaXMgYSBzYW1wbGUgc3RyaW5nJyIsCi0gICAgICAgICIn
bnVsbChcXDApJyIKLSAgICBdLCBjYWxsYmFjayk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RTdHJpbmdP
YmplY3QoY2FsbGJhY2spCi17Ci0gICAgZGVidWcoIlRlc3RpbmcgU3RyaW5nIG9iamVjdHMiKTsK
LSAgICBkZWJ1ZygiIik7Ci0gICAgZm9yRWFjaFdpdGhDYWxsYmFjayh0ZXN0T2JqZWN0V2l0aFZh
bHVlLCBbCi0gICAgICAgICJuZXcgU3RyaW5nKCkiLAotICAgICAgICAibmV3IFN0cmluZygndGhp
cyBpcyBhIHNhbXBsZSBzdHJpbmcnKSIsCi0gICAgICAgICJuZXcgU3RyaW5nKCdudWxsKFxcMCkn
KSIKLSAgICBdLCBjYWxsYmFjayk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3ROdW1iZXIoY2FsbGJhY2sp
Ci17Ci0gICAgZGVidWcoIlRlc3RpbmcgbnVtYmVyIHByaW1pdGl2ZXMiKTsKLSAgICBkZWJ1Zygi
Iik7Ci0gICAgZm9yRWFjaFdpdGhDYWxsYmFjayh0ZXN0UHJpbWl0aXZlVmFsdWUsIFsKLSAgICAg
ICAgIk5hTiIsCi0gICAgICAgICItSW5maW5pdHkiLAotICAgICAgICAiLU51bWJlci5NQVhfVkFM
VUUiLAotICAgICAgICAiLU51bWJlci5NSU5fVkFMVUUiLAotICAgICAgICAiLTAiLAotICAgICAg
ICAiMCIsCi0gICAgICAgICJOdW1iZXIuTUlOX1ZBTFVFIiwKLSAgICAgICAgIk51bWJlci5NQVhf
VkFMVUUiLAotICAgICAgICAiSW5maW5pdHkiCi0gICAgXSwgY2FsbGJhY2spOwotfQotCi1mdW5j
dGlvbiB0ZXN0TnVtYmVyT2JqZWN0KGNhbGxiYWNrKQotewotICAgIGRlYnVnKCJUZXN0aW5nIE51
bWJlciBvYmplY3RzIik7Ci0gICAgZGVidWcoIiIpOwotICAgIGZvckVhY2hXaXRoQ2FsbGJhY2so
dGVzdE9iamVjdFdpdGhWYWx1ZSwgWwotICAgICAgICAibmV3IE51bWJlcihOYU4pIiwKLSAgICAg
ICAgIm5ldyBOdW1iZXIoLUluZmluaXR5KSIsCi0gICAgICAgICJuZXcgTnVtYmVyKC1OdW1iZXIu
TUFYX1ZBTFVFKSIsCi0gICAgICAgICJuZXcgTnVtYmVyKC1OdW1iZXIuTUlOX1ZBTFVFKSIsCi0g
ICAgICAgICJuZXcgTnVtYmVyKC0wKSIsCi0gICAgICAgICJuZXcgTnVtYmVyKDApIiwKLSAgICAg
ICAgIm5ldyBOdW1iZXIoTnVtYmVyLk1JTl9WQUxVRSkiLAotICAgICAgICAibmV3IE51bWJlcihO
dW1iZXIuTUFYX1ZBTFVFKSIsCi0gICAgICAgICJuZXcgTnVtYmVyKEluZmluaXR5KSIKLSAgICBd
LCBjYWxsYmFjayk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3REYXRlT2JqZWN0KGNhbGxiYWNrKQotewot
ICAgIGRlYnVnKCJUZXN0aW5nIERhdGUgb2JqZWN0cyIpOwotICAgIGRlYnVnKCIiKTsKLSAgICBm
b3JFYWNoV2l0aENhbGxiYWNrKHRlc3RPYmplY3RXaXRoVmFsdWUsIFsKLSAgICAgICAgIm5ldyBE
YXRlKC0xZTEzKSIsCi0gICAgICAgICJuZXcgRGF0ZSgtMWUxMikiLAotICAgICAgICAibmV3IERh
dGUoLTFlOSkiLAotICAgICAgICAibmV3IERhdGUoLTFlNikiLAotICAgICAgICAibmV3IERhdGUo
LTFlMykiLAotICAgICAgICAibmV3IERhdGUoMCkiLAotICAgICAgICAibmV3IERhdGUoMWUzKSIs
Ci0gICAgICAgICJuZXcgRGF0ZSgxZTYpIiwKLSAgICAgICAgIm5ldyBEYXRlKDFlOSkiLAotICAg
ICAgICAibmV3IERhdGUoMWUxMikiLAotICAgICAgICAibmV3IERhdGUoMWUxMykiCi0gICAgXSwg
Y2FsbGJhY2spOwotfQotCi1mdW5jdGlvbiB0ZXN0UmVnRXhwT2JqZWN0KGNhbGxiYWNrKQotewot
ICAgIGRlYnVnKCJUZXN0aW5nIFJlZ0V4cCBvYmplY3RzIik7Ci0gICAgZGVidWcoIiIpOwotICAg
IGZ1bmN0aW9uIHRlc3RSZWdFeHAoc3RyaW5nLCBjYWxsYmFjaykgewotICAgICAgICBkZWJ1Zygi
VGVzdGluZyBSZWdFeHA6ICIgKyBzdHJpbmcpOwotICAgICAgICB2YXIgdmFsdWUgPSBldmFsKCJ2
YWx1ZSA9ICgiICsgc3RyaW5nICsgIikiKTsKLSAgICAgICAgdGVzdF9kYXRhID0gdmFsdWU7Ci0g
ICAgICAgIHRlc3RWYWx1ZSh0ZXN0X2RhdGEsIGZ1bmN0aW9uKHJlc3VsdCkgewotICAgICAgICAg
ICAgc2VsZi5yZXN1bHQgPSByZXN1bHQ7Ci0gICAgICAgICAgICBzaG91bGRCZVRydWUoInRlc3Rf
ZGF0YSAhPT0gcmVzdWx0Iik7Ci0gICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIk9i
amVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChyZXN1bHQpIiwgIltvYmplY3QgUmVnRXhwXSIp
OwotICAgICAgICAgICAgc2hvdWxkQmUoInJlc3VsdC50b1N0cmluZygpIiwgInRlc3RfZGF0YS50
b1N0cmluZygpIik7Ci0gICAgICAgICAgICBkZWJ1ZygiIik7Ci0gICAgICAgICAgICBjYWxsYmFj
aygpOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBmb3JFYWNoV2l0aENhbGxiYWNrKHRlc3RS
ZWdFeHAsIFsKLSAgICAgICAgIm5ldyBSZWdFeHAoKSIsCi0gICAgICAgICIvYWJjLyIsCi0gICAg
ICAgICIvYWJjL2ciLAotICAgICAgICAiL2FiYy9pIiwKLSAgICAgICAgIi9hYmMvZ2kiLAotICAg
ICAgICAiL2FiYy9tIiwKLSAgICAgICAgIi9hYmMvbWciLAotICAgICAgICAiL2FiYy9taSIsCi0g
ICAgICAgICIvYWJjL21naSIKLSAgICBdLCBjYWxsYmFjayk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RJ
bWFnZURhdGEoY2FsbGJhY2spCi17Ci0gICAgZGVidWcoIlRlc3RpbmcgSW1hZ2VEYXRhIik7Ci0g
ICAgZXZhbEFuZExvZygiY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyki
KTsKLSAgICBldmFsQW5kTG9nKCJjYW52YXMud2lkdGggPSA4Iik7Ci0gICAgZXZhbEFuZExvZygi
Y2FudmFzLmhlaWdodCA9IDgiKTsKLSAgICBldmFsQW5kTG9nKCJ0ZXN0X2RhdGEgPSBjYW52YXMu
Z2V0Q29udGV4dCgnMmQnKS5nZXRJbWFnZURhdGEoMCwgMCwgOCwgOCkiKTsKLQotICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgMjU2OyArK2kpIHsKLSAgICAgICAgdGVzdF9kYXRhLmRhdGFbaV0gPSBp
OwotICAgIH0KLQotICAgIHRlc3RWYWx1ZSh0ZXN0X2RhdGEsIGZ1bmN0aW9uKHJlc3VsdCkgewot
ICAgICAgICBzZWxmLnJlc3VsdCA9IHJlc3VsdDsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXN0
X2RhdGEgIT09IHJlc3VsdCIpOwotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIk9iamVj
dC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChyZXN1bHQpIiwgIltvYmplY3QgSW1hZ2VEYXRhXSIp
OwotICAgICAgICBzaG91bGRCZSgicmVzdWx0LndpZHRoIiwgInRlc3RfZGF0YS53aWR0aCIpOwot
ICAgICAgICBzaG91bGRCZSgicmVzdWx0LmhlaWdodCIsICJ0ZXN0X2RhdGEuaGVpZ2h0Iik7Ci0g
ICAgICAgIHNob3VsZEJlKCJyZXN1bHQuZGF0YS5sZW5ndGgiLCAidGVzdF9kYXRhLmRhdGEubGVu
Z3RoIik7Ci0gICAgICAgIGlmIChhcnJheUNvbXBhcmUodGVzdF9kYXRhLmRhdGEsIHJlc3VsdC5k
YXRhKSkgewotICAgICAgICAgICAgdGVzdFBhc3NlZCgicmVzdWx0IGRhdGEgbWF0Y2hlcyIpOwot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdGVzdEZhaWxlZCgicmVzdWx0IGRhdGEgZG9l
c24ndCBtYXRjaCIpOwotICAgICAgICB9Ci0gICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgfSk7Ci19
Ci0KLWZ1bmN0aW9uIHJlYWRCbG9iQXNUZXh0KGJsb2IsIGNhbGxiYWNrKQotewotICAgIHZhciBy
ZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpOwotICAgIHJlYWRlci5vbmxvYWQgPSBmdW5jdGlvbihl
KSB7Ci0gICAgICAgIGlmIChlLnRhcmdldC5yZWFkeVN0YXRlID09PSBGaWxlUmVhZGVyLkRPTkUp
IHsKLSAgICAgICAgICAgIGNhbGxiYWNrKGUudGFyZ2V0LnJlc3VsdCk7Ci0gICAgICAgIH0KLSAg
ICB9OwotICAgIHJlYWRlci5vbmVycm9yID0gZnVuY3Rpb24oZSkgewotICAgICAgICB0ZXN0RmFp
bGVkKCJFcnJvciByZWFkaW5nIGJsb2IgYXMgdGV4dDogIiArIGUpOwotICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKLSAgICB9OwotICAgIHJlYWRlci5yZWFkQXNUZXh0KGJsb2IpOwotfQotCi1mdW5j
dGlvbiBjaGVja0Jsb2JDb250ZW50cyhibG9iLCBleHBlY3RlZCwgY2FsbGJhY2spCi17Ci0gICAg
cmVhZEJsb2JBc1RleHQoYmxvYiwgZnVuY3Rpb24odGV4dCkgewotICAgICAgICBzZWxmLnRleHQg
PSB0ZXh0OwotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInRleHQiLCBleHBlY3RlZCk7
Ci0gICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIGNvbXBhcmVCbG9i
cyhibG9iMSwgYmxvYjIsIGNhbGxiYWNrKQotewotICAgIHJlYWRCbG9iQXNUZXh0KGJsb2IxLCBm
dW5jdGlvbih0ZXh0MSkgewotICAgICAgICByZWFkQmxvYkFzVGV4dChibG9iMiwgZnVuY3Rpb24o
dGV4dDIpIHsKLSAgICAgICAgICAgIHNlbGYudGV4dDEgPSB0ZXh0MTsKLSAgICAgICAgICAgIHNl
bGYudGV4dDIgPSB0ZXh0MjsKLSAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidGV4
dDIiLCB0ZXh0MSk7Ci0gICAgICAgICAgICBjYWxsYmFjaygpOwotICAgICAgICB9KTsKLSAgICB9
KTsKLX0KLQotZnVuY3Rpb24gdGVzdEJsb2IoY2FsbGJhY2spCi17Ci0gICAgZGVidWcoIlRlc3Rp
bmcgQmxvYiIpOwotCi0gICAgLy8gRklYTUU6IEJsb2IsIEZpbGUsIGFuZCBGaWxlTGlzdCBzdXBw
b3J0IGlzIGluY29tcGxldGUuCi0gICAgLy8gaHR0cDovL2NyYnVnLmNvbS8xMDgwMTIKLSAgICBk
ZWJ1ZygiU2tpcHBpbmcgdGVzdCIpOwotICAgIGNhbGxiYWNrKCk7Ci0gICAgcmV0dXJuOwotCi0g
ICAgZXZhbEFuZExvZygiQmxvYkJ1aWxkZXIgPSBzZWxmLkJsb2JCdWlsZGVyIHx8IHNlbGYuV2Vi
S2l0QmxvYkJ1aWxkZXIiKTsKLSAgICBzaG91bGRCZVRydWUoIkJsb2JCdWlsZGVyICE9IG51bGwi
KTsKLSAgICBzaG91bGRCZVRydWUoIkZpbGVSZWFkZXIgIT0gbnVsbCIpOwotICAgIGV2YWxBbmRM
b2coImJ1aWxkZXIgPSBuZXcgQmxvYkJ1aWxkZXIoKSIpOwotICAgIGV2YWxBbmRMb2coInRlc3Rf
Y29udGVudCA9ICdUaGlzIGlzIGEgdGVzdC4gVGhpcyBpcyBvbmx5IGEgdGVzdC4nIik7Ci0gICAg
ZXZhbEFuZExvZygiYnVpbGRlci5hcHBlbmQodGVzdF9jb250ZW50KSIpOwotICAgIGV2YWxBbmRM
b2coInRlc3RfZGF0YSA9IGJ1aWxkZXIuZ2V0QmxvYigpIik7Ci0gICAgdGVzdFZhbHVlKHRlc3Rf
ZGF0YSwgZnVuY3Rpb24ocmVzdWx0KSB7Ci0gICAgICAgIHNlbGYucmVzdWx0ID0gcmVzdWx0Owot
ICAgICAgICBzaG91bGRCZVRydWUoInRlc3RfZGF0YSAhPT0gcmVzdWx0Iik7Ci0gICAgICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHJlc3Vs
dCkiLCAiW29iamVjdCBCbG9iXSIpOwotICAgICAgICBzaG91bGRCZSgicmVzdWx0LnNpemUiLCAi
dGVzdF9kYXRhLnNpemUiKTsKLSAgICAgICAgc2hvdWxkQmUoInJlc3VsdC50eXBlIiwgInRlc3Rf
ZGF0YS50eXBlIik7Ci0gICAgICAgIGNoZWNrQmxvYkNvbnRlbnRzKHJlc3VsdCwgdGVzdF9jb250
ZW50LCBjYWxsYmFjayk7Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIGNvbXBhcmVGaWxlcyhmaWxl
MSwgZmlsZTIsIGNhbGxiYWNrKQotewotICAgIHNlbGYuZmlsZTEgPSBmaWxlMTsKLSAgICBzZWxm
LmZpbGUyID0gZmlsZTI7Ci0gICAgc2hvdWxkQmVUcnVlKCJmaWxlMSAhPT0gZmlsZTIiKTsKLSAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChm
aWxlMSkiLCAiW29iamVjdCBGaWxlXSIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiT2Jq
ZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGZpbGUyKSIsICJbb2JqZWN0IEZpbGVdIik7Ci0g
ICAgZGVidWcoImZpbGUxLnNpemU6ICIgKyBmaWxlMS5zaXplKTsKLSAgICBzaG91bGRCZSgiZmls
ZTEuc2l6ZSIsICJmaWxlMi5zaXplIik7Ci0gICAgZGVidWcoImZpbGUxLnR5cGU6ICIgKyBmaWxl
MS50eXBlKTsKLSAgICBzaG91bGRCZSgiZmlsZTEudHlwZSIsICJmaWxlMi50eXBlIik7Ci0gICAg
ZGVidWcoImZpbGUxLm5hbWU6ICIgKyBmaWxlMS5uYW1lKTsKLSAgICBzaG91bGRCZSgiZmlsZTEu
bmFtZSIsICJmaWxlMi5uYW1lIik7Ci0gICAgc2hvdWxkQmUoIlN0cmluZyhmaWxlMS5sYXN0TW9k
aWZpZWREYXRlKSIsICJTdHJpbmcoZmlsZTIubGFzdE1vZGlmaWVkRGF0ZSkiKTsKLSAgICBpZiAo
Y2FsbGJhY2spIHsKLSAgICAgICAgY29tcGFyZUJsb2JzKGZpbGUxLCBmaWxlMiwgY2FsbGJhY2sp
OwotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdEZpbGUoY2FsbGJhY2spCi17Ci0gICAgZGVidWco
IlRlc3RpbmcgRmlsZSIpOwotCi0gICAgLy8gRklYTUU6IEJsb2IsIEZpbGUsIGFuZCBGaWxlTGlz
dCBzdXBwb3J0IGlzIGluY29tcGxldGUuCi0gICAgLy8gaHR0cDovL2NyYnVnLmNvbS8xMDgwMTIK
LSAgICBkZWJ1ZygiU2tpcHBpbmcgdGVzdCIpOwotICAgIGNhbGxiYWNrKCk7Ci0gICAgcmV0dXJu
OwotCi0gICAgZXZhbEFuZExvZygidGVzdF9jb250ZW50ID0gZmlsZUlucHV0LmZpbGVzWzBdIik7
Ci0KLSAgICBzZWxmLnRlc3RfZGF0YSA9IHRlc3RfY29udGVudDsKLSAgICB0ZXN0VmFsdWUodGVz
dF9kYXRhLCBmdW5jdGlvbihyZXN1bHQpIHsKLSAgICAgICAgc2VsZi5yZXN1bHQgPSByZXN1bHQ7
Ci0gICAgICAgIGNvbXBhcmVGaWxlcyhyZXN1bHQsIHRlc3RfZGF0YSwgY2FsbGJhY2spOwotICAg
IH0pOwotfQotCi0KLWZ1bmN0aW9uIHRlc3RGaWxlTGlzdChjYWxsYmFjaykKLXsKLSAgICBkZWJ1
ZygiVGVzdGluZyBGaWxlTGlzdCIpOwotCi0gICAgLy8gRklYTUU6IEJsb2IsIEZpbGUsIGFuZCBG
aWxlTGlzdCBzdXBwb3J0IGlzIGluY29tcGxldGUuCi0gICAgLy8gaHR0cDovL2NyYnVnLmNvbS8x
MDgwMTIKLSAgICBkZWJ1ZygiU2tpcHBpbmcgdGVzdCIpOwotICAgIGNhbGxiYWNrKCk7Ci0gICAg
cmV0dXJuOwotCi0gICAgZXZhbEFuZExvZygidGVzdF9jb250ZW50ID0gZmlsZUlucHV0LmZpbGVz
Iik7Ci0KLSAgICBzZWxmLnRlc3RfZGF0YSA9IHRlc3RfY29udGVudDsKLSAgICB0ZXN0VmFsdWUo
dGVzdF9kYXRhLCBmdW5jdGlvbihyZXN1bHQpIHsKLSAgICAgICAgc2VsZi5yZXN1bHQgPSByZXN1
bHQ7Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgidGVzdF9kYXRhICE9PSByZXN1bHQiKTsKLSAgICAg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwo
cmVzdWx0KSIsICJbb2JqZWN0IEZpbGVMaXN0XSIpOwotICAgICAgICBzaG91bGRCZSgicmVzdWx0
Lmxlbmd0aCIsICJ0ZXN0X2RhdGEubGVuZ3RoIik7Ci0gICAgICAgIGkgPSAwOwotICAgICAgICBm
dW5jdGlvbiBkb05leHQoKSB7Ci0gICAgICAgICAgICBpZiAoaSA+PSB0ZXN0X2RhdGEubGVuZ3Ro
KSB7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgZGVidWcoImNvbXBhcmluZyBmaWxlWyIgKyBpICsgIl0iKTsKLSAgICAg
ICAgICAgICAgICBjb21wYXJlRmlsZXMocmVzdWx0W2ldLCB0ZXN0X2RhdGFbaSsrXSwgZG9OZXh0
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBkb05leHQoKTsKLSAgICB9KTsK
LX0KLQotZnVuY3Rpb24gdGVzdEFycmF5KGNhbGxiYWNrKSB7Ci0gICAgZGVidWcoIlRlc3Rpbmcg
QXJyYXkiKTsKLSAgICBldmFsQW5kTG9nKCJ0ZXN0X2RhdGEgPSBbXSIpOwotICAgIGV2YWxBbmRM
b2coInRlc3RfZGF0YVswXSA9ICdmb28nIik7Ci0gICAgZXZhbEFuZExvZygidGVzdF9kYXRhWzFd
ID0gJ2JhciciKTsKLSAgICBldmFsQW5kTG9nKCJ0ZXN0X2RhdGFbMTBdID0gdHJ1ZSIpOwotICAg
IGV2YWxBbmRMb2coInRlc3RfZGF0YVsxMV0gPSBmYWxzZSIpOwotICAgIGV2YWxBbmRMb2coInRl
c3RfZGF0YVsyMF0gPSAxMjMiKTsKLSAgICBldmFsQW5kTG9nKCJ0ZXN0X2RhdGFbMjFdID0gNDU2
Iik7Ci0gICAgZXZhbEFuZExvZygidGVzdF9kYXRhWzMwXSA9IG51bGwiKTsKLQotICAgIHRlc3RW
YWx1ZSh0ZXN0X2RhdGEsIGZ1bmN0aW9uKHJlc3VsdCkgewotICAgICAgICBzZWxmLnJlc3VsdCA9
IHJlc3VsdDsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXN0X2RhdGEgIT09IHJlc3VsdCIpOwot
ICAgICAgICBzaG91bGRCZVRydWUoInRlc3RfZGF0YS5sZW5ndGggPT09IHJlc3VsdC5sZW5ndGgi
KTsKLSAgICAgICAgT2JqZWN0LmtleXModGVzdF9kYXRhKS5mb3JFYWNoKAotICAgICAgICAgICAg
ZnVuY3Rpb24oa2V5KSB7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmUoInRlc3RfZGF0YVsiICsg
a2V5ICsgIl0iLCAicmVzdWx0WyIgKyBrZXkgKyAiXSIpOwotICAgICAgICAgICAgfSk7Ci0gICAg
ICAgIGNhbGxiYWNrKCk7Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RPYmplY3QoY2FsbGJh
Y2spIHsKLSAgICBkZWJ1ZygiVGVzdGluZyBPYmplY3QiKTsKLSAgICBldmFsQW5kTG9nKCJ0ZXN0
X2RhdGEgPSBbXSIpOwotICAgIGV2YWxBbmRMb2coInRlc3RfZGF0YVswXSA9ICdmb28nIik7Ci0g
ICAgZXZhbEFuZExvZygidGVzdF9kYXRhWzFdID0gJ2JhciciKTsKLSAgICBldmFsQW5kTG9nKCJ0
ZXN0X2RhdGFbJ2EnXSA9IHRydWUiKTsKLSAgICBldmFsQW5kTG9nKCJ0ZXN0X2RhdGFbJ2InXSA9
IGZhbHNlIik7Ci0gICAgZXZhbEFuZExvZygidGVzdF9kYXRhWydmb28nXSA9IDEyMyIpOwotICAg
IGV2YWxBbmRMb2coInRlc3RfZGF0YVsnYmFyJ10gPSA0NTYiKTsKLSAgICBldmFsQW5kTG9nKCJ0
ZXN0X2RhdGFbJyddID0gbnVsbCIpOwotCi0gICAgdGVzdFZhbHVlKHRlc3RfZGF0YSwgZnVuY3Rp
b24ocmVzdWx0KSB7Ci0gICAgICAgIHNlbGYucmVzdWx0ID0gcmVzdWx0OwotICAgICAgICBzaG91
bGRCZVRydWUoInRlc3RfZGF0YSAhPT0gcmVzdWx0Iik7Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgi
YXJyYXlDb21wYXJlKE9iamVjdC5rZXlzKHJlc3VsdCkuc29ydCgpLCBPYmplY3Qua2V5cyh0ZXN0
X2RhdGEpLnNvcnQoKSkiKTsKLSAgICAgICAgT2JqZWN0LmtleXModGVzdF9kYXRhKS5mb3JFYWNo
KAotICAgICAgICAgICAgZnVuY3Rpb24oa2V5KSB7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmUo
InRlc3RfZGF0YVsiICsgSlNPTi5zdHJpbmdpZnkoa2V5KSArICJdIiwgInJlc3VsdFsiICsgSlNP
Ti5zdHJpbmdpZnkoa2V5KSArICJdIik7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgY2FsbGJh
Y2soKTsKLSAgICB9KTsKLX0KLQotZnVuY3Rpb24gdGVzdEJhZFR5cGVzKCkKLXsKLSAgICBkZWJ1
ZygiIik7Ci0gICAgZGVidWcoIlRlc3QgdHlwZXMgdGhhdCBjYW4ndCBiZSBjbG9uZWQ6Iik7Ci0g
ICAgZGVidWcoIiIpOwotCi0gICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2Fj
dGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICBldmFs
QW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwot
ICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB0
cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7Ci0gICAg
dHJhbnNhY3Rpb24ub25hYm9ydCA9IGZpbmlzaEpTVGVzdDsKLQotICAgIGRlYnVnKCIiKTsKLSAg
ICBkZWJ1ZygiT3RoZXIgSmF2YVNjcmlwdCBvYmplY3QgdHlwZXM6Iik7Ci0gICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KG5ldyBFcnJvciwgJ2tleScpIiwgIkRPTUV4Y2VwdGlv
bi5EQVRBX0NMT05FX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLnB1
dChuZXcgRnVuY3Rpb24sICdrZXknKSIsICJET01FeGNlcHRpb24uREFUQV9DTE9ORV9FUlIiKTsK
LQotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiT3RoZXIgaG9zdCBvYmplY3QgdHlwZXM6Iik7
Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KHNlbGYsICdrZXknKSIsICJE
T01FeGNlcHRpb24uREFUQV9DTE9ORV9FUlIiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJzdG9yZS5wdXQoZG9jdW1lbnQsICdrZXknKSIsICJET01FeGNlcHRpb24uREFUQV9DTE9ORV9F
UlIiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5wdXQoZG9jdW1lbnQuYm9k
eSwgJ2tleScpIiwgIkRPTUV4Y2VwdGlvbi5EQVRBX0NMT05FX0VSUiIpOwotfQotCi10ZXN0KCk7
Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zdHJ1Y3R1cmVkLWNsb25lLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQuaHRtbCBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFib3J0Lmh0bWwKaW5kZXggMzQxMGY0
NjNhMjAzMTg5NjUzM2I0YTQ2OTljNjdhZDM1ODE1N2VkZC4uMWJhY2I1ZmI3OGNhNTIzMjM0ZGZl
ZGZkY2IzY2IyYTM3MGU5YmMzZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi90cmFuc2FjdGlvbi1hYm9ydC5odG1sCkBAIC00LDk2ICs0LDcgQEAKIDxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNj
cmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgdHJhbnNhY3Rpb24gYWJvcnRzIHNlbmQgdGhlIHBy
b3BlciBvbmFib3J0IG1lc3NhZ2VzLi4iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVt
b3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVk
REIub3BlbignbmFtZScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uOwot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5j
dGlvbiBzZXRWZXJzaW9uKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFy
Z2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24o
J25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4aXN0aW5n
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1m
dW5jdGlvbiBkZWxldGVFeGlzdGluZygpCi17Ci0gICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNz
KCk6Iik7Ci0gICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKLSAgICB0cmFu
cy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgZXZhbEFuZExvZygidHJh
bnMub25jb21wbGV0ZSA9IHN0YXJ0VGVzdCIpOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVz
KGRiKTsKLQotICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RT
dG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3Rv
cmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzdGFydFRlc3Qo
KQotewotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0
b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIGV2YWxBbmRMb2co
InRyYW5zLm9uYWJvcnQgPSB0cmFuc2FjdGlvbkFib3J0ZWQiKTsKLSAgICBldmFsQW5kTG9nKCJ0
cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2siKTsKLSAgICBzdG9y
ZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlMicsIHk6ICd6
enoyJ30sICdrZXkyJykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmaXJzdEFkZDsKLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7Ci0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlMycsIHk6ICd6enozJ30sICdrZXkz
JykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSBzZWNvbmRBZGQ7Ci0gICAgdHJhbnMuYWJvcnQo
KTsKLQotICAgIGZpcnN0RXJyb3IgPSBmYWxzZTsKLSAgICBzZWNvbmRFcnJvciA9IGZhbHNlOwot
ICAgIGFib3J0RmlyZWQgPSBmYWxzZTsKLX0KLQotZnVuY3Rpb24gZmlyc3RBZGQoKQotewotICAg
IHNob3VsZEJlKCJldmVudC50YXJnZXQuZXJyb3JDb2RlIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9u
LkFCT1JUX0VSUiIpOwotICAgIHNob3VsZEJlRmFsc2UoImZpcnN0RXJyb3IiKTsKLSAgICBzaG91
bGRCZUZhbHNlKCJzZWNvbmRFcnJvciIpOwotICAgIHNob3VsZEJlRmFsc2UoImFib3J0RmlyZWQi
KTsKLSAgICBmaXJzdEVycm9yID0gdHJ1ZTsKLQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24o
InN0b3JlLmFkZCh7eDogJ3ZhbHVlNCcsIHk6ICd6eno0J30sICdrZXk0JykiLCAiSURCRGF0YWJh
c2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7Ci19Ci0KLWZ1bmN0aW9uIHNl
Y29uZEFkZCgpCi17Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5lcnJvckNvZGUiLCAiSURC
RGF0YWJhc2VFeGNlcHRpb24uQUJPUlRfRVJSIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJmaXJzdEVy
cm9yIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgic2Vjb25kRXJyb3IiKTsKLSAgICBzaG91bGRCZUZh
bHNlKCJhYm9ydEZpcmVkIik7Ci0gICAgc2Vjb25kRXJyb3IgPSB0cnVlOwotfQotCi1mdW5jdGlv
biB0cmFuc2FjdGlvbkFib3J0ZWQoKQotewotICAgIHNob3VsZEJlVHJ1ZSgiZmlyc3RFcnJvciIp
OwotICAgIHNob3VsZEJlVHJ1ZSgic2Vjb25kRXJyb3IiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJh
Ym9ydEZpcmVkIik7Ci0gICAgYWJvcnRGaXJlZCA9IHRydWU7Ci0KLSAgICBldmFsQW5kRXhwZWN0
RXhjZXB0aW9uKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZTUnLCB5OiAnenp6NSd9LCAna2V5NScpIiwg
IklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOwotICAgIGZp
bmlzaEpTVGVzdCgpOwotfQotCi10ZXN0KCk7Ci0KLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3RyYW5zYWN0aW9uLWFib3J0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIu
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5
PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJh
bnNhY3Rpb24tYWZ0ZXItY2xvc2UuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3RyYW5zYWN0aW9uLWFmdGVyLWNsb3NlLmh0bWwKaW5kZXggZjgyN2VhNzI2NWZjYTcyNzE3YzFh
ZWUzMzFhMTk0NTUxYmUxZTBkZS4uM2E0MTYxNGNjMGZjN2VhMTA2OWQ0OTg1YjdhMzEyOTNmZTky
NTI1MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rp
b24tYWZ0ZXItY2xvc2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90
cmFuc2FjdGlvbi1hZnRlci1jbG9zZS5odG1sCkBAIC0xLDkwICsxLDEwIEBACi08aHRtbD4NCi08
aGVhZD4NCi08c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0Pg0KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Njcmlw
dD4NCi08L2hlYWQ+DQotPGJvZHk+DQotPHNjcmlwdD4NCi0NCi1kZXNjcmlwdGlvbigiVGVzdCBj
bG9zaW5nIGEgZGF0YWJhc2UgY29ubmVjdGlvbiBpbiBJbmRleGVkREIuIik7DQotDQotZnVuY3Rp
b24gdGVzdCgpDQotew0KLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOw0KLQ0KLSAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0aW9uLWFmdGVyLWNsb3Nl
JykiKTsNCi0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsNCi0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQotfQ0KLQ0KLWZ1bmN0aW9uIG9w
ZW5TdWNjZXNzKCkNCi17DQotICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOw0KLSAgICBzZWxm
LmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7DQotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsN
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBpblNldFZlcnNpb247DQotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOw0KLX0NCi0NCi1mdW5jdGlvbiBpblNldFZl
cnNpb24oKQ0KLXsNCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsNCi0NCi0gICAgZXZl
bnQudGFyZ2V0LnJlc3VsdC5vbmNvbXBsZXRlID0gcnVuRmlyc3RSZWd1bGFyVHJhbnNhY3Rpb247
DQotICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxi
YWNrOw0KLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ3N0b3JlJykiKTsNCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdG9y
ZS5wdXQoJ3gnLCAneScpIik7DQotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb25QdXRTdWNjZXNz
Ow0KLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsNCi19DQot
DQotZnVuY3Rpb24gb25QdXRTdWNjZXNzKCkNCi17DQotICAgIHRlc3RQYXNzZWQoIlB1dCBzdWNj
ZXNzIikNCi19DQotDQotZnVuY3Rpb24gcnVuRmlyc3RSZWd1bGFyVHJhbnNhY3Rpb24oKQ0KLXsN
Ci0gICAgZGVidWcoInJ1bm5pbmcgZmlyc3QgdHJhbnNhY3Rpb24iKQ0KLSAgICBjdXJyZW50VHJh
bnNhY3Rpb24gPSBldmFsQW5kTG9nKCJjdXJyZW50VHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlv
bihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7DQotICAgIGN1cnJlbnRU
cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7DQotICAgIGN1cnJl
bnRUcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZmlyc3RUcmFuc2FjdGlvbkNvbXBsZXRlOw0KLSAg
ICBvYmplY3RTdG9yZSA9IGN1cnJlbnRUcmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKTsN
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLnB1dCgnYScsICdiJykiKTsN
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQotfQ0KLQ0K
LWZ1bmN0aW9uIGZpcnN0VHJhbnNhY3Rpb25Db21wbGV0ZSgpDQotew0KLSAgICBldmFsQW5kTG9n
KCJkYi5jbG9zZSgpIik7DQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0
aW9uKFsnc3RvcmUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiLCAiSURCRGF0YWJhc2VF
eGNlcHRpb24uTk9UX0FMTE9XRURfRVJSIik7DQotDQotICAgIGRlYnVnKCIiKQ0KLSAgICBkZWJ1
ZygidmVyaWZ5IHRoYXQgd2UgY2FuIHJlb3BlbiB0aGUgZGIgYWZ0ZXIgY2FsbGluZyBjbG9zZSIp
DQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndHJhbnNhY3Rpb24t
YWZ0ZXItY2xvc2UnKSIpOw0KLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9uU2Vjb25kT3Blbg0K
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsNCi19DQotDQot
ZnVuY3Rpb24gb25TZWNvbmRPcGVuKCkgew0KLSAgICBzZWNvbmRfZGIgPSBldmFsQW5kTG9nKCJz
ZWNvbmRfZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7DQotICAgIGN1cnJlbnRUcmFuc2FjdGlv
biA9IGV2YWxBbmRMb2coImN1cnJlbnRUcmFuc2FjdGlvbiA9IHNlY29uZF9kYi50cmFuc2FjdGlv
bihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7DQotICAgIHN0b3JlID0g
Y3VycmVudFRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpOw0KLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IHN0b3JlLnB1dCgnMScsICcyJykiKTsNCi0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBvbkZpbmFsUHV0U3VjY2VzczsNCi0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQotICAgIGN1cnJlbnRUcmFuc2FjdGlvbi5vbmNvbXBs
ZXRlID0gZmluaXNoSlNUZXN0Ow0KLSAgICBjdXJyZW50VHJhbnNhY3Rpb24ub25hYm9ydCA9IHVu
ZXhwZWN0ZWRBYm9ydENhbGxiYWNrOw0KLX0NCi0NCi1mdW5jdGlvbiBvbkZpbmFsUHV0U3VjY2Vz
cygpIHsNCi0gICAgdGVzdFBhc3NlZCgiZmluYWwgcHV0IHN1Y2Nlc3MiKTsNCi19DQotDQotDQot
dGVzdCgpOw0KLQ0KLTwvc2NyaXB0Pg0KLTxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pg0KLTwvYm9keT4NCi08L2h0bWw+DQorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdHJhbnNhY3Rp
b24tYWZ0ZXItY2xvc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hbmQt
b2JqZWN0c3RvcmUtY2FsbHMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Ry
YW5zYWN0aW9uLWFuZC1vYmplY3RzdG9yZS1jYWxscy5odG1sCmluZGV4IDZhZmJjMzU5ZjYyNWQ5
ZmM4ZTQ1OTEyYmZkNjBhNWViNDRkYzIwNjUuLjFhMGI1ZWY5OGJkZTI2ZjQwZGJiODgwMTQ1NzM4
YjEyNDZmNWJjZWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Ry
YW5zYWN0aW9uLWFuZC1vYmplY3RzdG9yZS1jYWxscy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFuZC1vYmplY3RzdG9yZS1jYWxscy5odG1sCkBA
IC00LDEyOSArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3Jp
cHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4
ZWREQidzIHRyYW5zYWN0aW9uIGFuZCBvYmplY3RTdG9yZSBjYWxscyIpOwotCi1mdW5jdGlvbiB0
ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCd0cmFuc2FjdGlvbi1hbmQtb2JqZWN0c3RvcmUtY2Fs
bHMnLCAnZGVzY3JpcHRpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nl
c3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0K
LWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlc3Vs
dCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBjbGVhbkRhdGFiYXNlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotfQotCi1mdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKLXsKLSAgICB0cmFucyA9IGV2
YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIGRlbGV0ZUFsbE9i
amVjdFN0b3JlcyhkYik7Ci0KLSAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgn
YScpIik7Ci0gICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2InKSIpOwotICAg
IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpLmNyZWF0ZUluZGV4KCdp
bmRleCcsICdzb21lX3BhdGgnKSIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLmFkZEV2ZW50TGlz
dGVuZXIoJ2NvbXBsZXRlJywgY3JlYXRlZCwgdHJ1ZSkiKTsKLSAgICBkZWJ1ZygiIik7Ci19Ci0K
LWZ1bmN0aW9uIGNyZWF0ZWQoKQotewotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBk
Yi50cmFuc2FjdGlvbihbJ2EnXSkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9y
ZSgnYScpIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigidHJhbnMub2JqZWN0U3RvcmUo
J2InKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7Ci0gICAgZXZhbEFu
ZEV4cGVjdEV4Y2VwdGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ3gnKSIsICJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7Ci0gICAgZGVidWcoIiIpOwotCi0gICAgdHJhbnMgPSBl
dmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnYSddKSIpOwotICAgIGV2YWxBbmRM
b2coInRyYW5zLm9iamVjdFN0b3JlKCdhJykiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJ0cmFucy5vYmplY3RTdG9yZSgnYicpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VO
RF9FUlIiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0cmFucy5vYmplY3RTdG9yZSgn
eCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKLSAgICBkZWJ1Zygi
Iik7Ci0KLSAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydi
J10pIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2InKSIpOwotICAgIGV2
YWxBbmRFeHBlY3RFeGNlcHRpb24oInRyYW5zLm9iamVjdFN0b3JlKCdhJykiLCAiSURCRGF0YWJh
c2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24o
InRyYW5zLm9iamVjdFN0b3JlKCd4JykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5E
X0VSUiIpOwotICAgIGRlYnVnKCIiKTsKLQotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMg
PSBkYi50cmFuc2FjdGlvbihbJ2EnLCAnYiddKSIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9i
amVjdFN0b3JlKCdhJykiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYicp
Iik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ3gnKSIs
ICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7Ci0gICAgZGVidWcoIiIpOwot
Ci0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnYicsICdh
J10pIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2EnKSIpOwotICAgIGV2
YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdiJykiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJ0cmFucy5vYmplY3RTdG9yZSgneCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5P
VF9GT1VORF9FUlIiKTsKLSAgICBkZWJ1ZygiIik7Ci0KLSAgICBkZWJ1ZygiUGFzc2luZyBhIHN0
cmluZyBhcyB0aGUgZmlyc3QgYXJndW1lbnQgaXMgYSBzaG9ydGN1dCBmb3IganVzdCBvbmUgb2Jq
ZWN0IHN0b3JlOiIpOwotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2Fj
dGlvbignYScpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2EnKSIpOwot
ICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInRyYW5zLm9iamVjdFN0b3JlKCdiJykiLCAiSURC
RGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oInRyYW5zLm9iamVjdFN0b3JlKCd4JykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9U
X0ZPVU5EX0VSUiIpOwotICAgIGRlYnVnKCIiKTsKLQotICAgIHNob3VsZFRocm93KCJ0cmFucyA9
IGRiLnRyYW5zYWN0aW9uKCkiKTsKLSAgICBkZWJ1ZygiIik7Ci0KLSAgICBldmFsQW5kRXhwZWN0
RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbihbJ3gnXSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24u
Tk9UX0ZPVU5EX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0
aW9uKFsneCddKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7Ci0gICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oWydhJywgJ3gnXSkiLCAiSURC
RGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oImRiLnRyYW5zYWN0aW9uKFsneCcsICd4J10pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9u
Lk5PVF9GT1VORF9FUlIiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2Fj
dGlvbihbJ2EnLCAneCcsICdiJ10pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9F
UlIiKTsKLSAgICBkZWJ1ZygiIik7Ci0KLSAgICBkZWJ1ZygiRXhjZXB0aW9uIHRocm93biB3aGVu
IG5vIHN0b3JlcyBzcGVjaWZpZWQ6Iik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIu
dHJhbnNhY3Rpb24oW10pIiwgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19FUlIiKTsKLSAg
ICBkZWJ1ZygiIik7Ci0KLSAgICBkZWJ1Zygie30gY29lcmNlcyB0byBhIHN0cmluZyAtIHNvIG5v
IG1hdGNoLCBidXQgbm90IGEgdHlwZSBlcnJvcjoiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJkYi50cmFuc2FjdGlvbih7fSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5E
X0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKHttb2Rl
OjB9KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7Ci0gICAgZGVidWco
IiIpOwotCi0gICAgZGVidWcoIk92ZXJyaWRpbmcgdGhlIGRlZmF1bHQgc3RyaW5nIGNvZXJjaW9u
IG1ha2VzIHRoZXNlIHdvcms6Iik7Ci0gICAgZXZhbEFuZExvZygiZGIudHJhbnNhY3Rpb24oe3Rv
U3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuICdhJzt9fSkiKTsKLSAgICBldmFsQW5kTG9nKCJkYi50
cmFuc2FjdGlvbihbe3RvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuICdhJzt9fV0pIik7Ci0gICAg
ZGVidWcoIi4uLiBidXQgeW91IHN0aWxsIG5lZWQgdG8gc3BlY2lmeSBhIHJlYWwgc3RvcmU6Iik7
Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oW3t0b1N0cmluZzpm
dW5jdGlvbigpe3JldHVybiAneCc7fX1dKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9V
TkRfRVJSIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oW3t0
b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiAneCc7fX1dKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlv
bi5OT1RfRk9VTkRfRVJSIik7Ci0gICAgZGVidWcoIiIpOwotCi0gICAgdHJhbnMgPSBldmFsQW5k
TG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUnXSkiKTsKLSAgICBzaG91bGRCZVRy
dWUoInRyYW5zICE9IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0
Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
ICAgIHRyYW5zLm9uY29tcGxldGUgPSBhZnRlckNvbXBsZXRlOwotICAgIGV2YWxBbmRMb2coInN0
b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKLSAgICBzaG91bGRCZVRydWUoInN0
b3JlICE9IG51bGwiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZS5nZXQoJ3NvbWVfa2V5JykiKTsK
LX0KLQotZnVuY3Rpb24gYWZ0ZXJDb21wbGV0ZSgpCi17Ci0gICAgZGVidWcoInRyYW5zYWN0aW9u
IGNvbXBsZXRlLCBlbnN1cmluZyBtZXRob2RzIGZhaWwiKTsKLSAgICBzaG91bGRCZVRydWUoInRy
YW5zICE9IG51bGwiKTsKLSAgICBzaG91bGRCZVRydWUoInN0b3JlICE9IG51bGwiKTsKLSAgICBl
dmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKSIsICJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9FUlIiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJzdG9yZS5pbmRleCgnaW5kZXgnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1Rf
QUxMT1dFRF9FUlIiKTsKLQotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi10ZXN0KCk7Ci0KLTwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90cmFuc2FjdGlvbi1hbmQtb2JqZWN0c3Rv
cmUtY2FsbHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1iYXNpY3MuaHRt
bCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy5odG1s
CmluZGV4IGYxYjNiMTZhOWE3YTRjNmM2MTNiNDU0ZmZlMzgzMDI1ZTI0MjBmOWIuLmQ1YTdkMjNi
Y2UxMTUzZDM3N2VkMDIzZTkxN2ZkMTFhMGI2YWJlYjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy5odG1sCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy5odG1sCkBAIC0xLDI5NCAr
MSwxMCBAQAotPGh0bWw+DQotPGhlYWQ+DQotPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4NCi08c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3NoYXJlZC5qcyI+PC9zY3JpcHQ+DQotPC9oZWFkPg0KLTxib2R5Pg0KLTxzY3JpcHQ+DQotDQot
ZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIHRyYW5zYWN0aW9uIGJhc2ljcy4iKTsNCi0NCi1m
dW5jdGlvbiB0ZXN0KCkNCi17DQotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7DQotDQotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndHJhbnNhY3Rpb24tYmFzaWNz
JykiKTsNCi0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsNCi0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQotfQ0KLQ0KLWZ1bmN0aW9uIG9w
ZW5TdWNjZXNzKCkNCi17DQotICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOw0KLSAgICBzZWxm
LmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7DQotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsN
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOw0KLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsNCi19DQotDQotZnVuY3Rpb24gY2xlYW5E
YXRhYmFzZSgpDQotew0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIsIGNoZWNrTWV0YWRh
dGFFbXB0eSk7DQotICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25jb21wbGV0ZSA9IHRlc3RTZXRW
ZXJzaW9uQWJvcnQxOw0KLX0NCi0NCi1mdW5jdGlvbiB0ZXN0U2V0VmVyc2lvbkFib3J0MSgpDQot
ew0KLSAgICBjaGVja01ldGFkYXRhRW1wdHkoKTsNCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBzdGFydFNldFZlcnNpb24oJ3ZlcnNpb24gZmFpbCcpIik7DQotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gYWRkUmVtb3ZlSURCT2JqZWN0czsNCi19DQotDQotZnVuY3Rpb24gYWRk
UmVtb3ZlSURCT2JqZWN0cygpDQotew0KLSAgICBkZWJ1ZygiYWRkUmVtb3ZlSURCT2JqZWN0cygp
OiIpOw0KLSAgICB2YXIgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsNCi0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOw0KLSAgICB0cmFu
cy5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIHRlc3RTZXRWZXJzaW9uQWJvcnQyLCB0cnVlKTsN
Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOw0KLQ0K
LSAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdzdG9yZUZhaWwnLCBudWxsKSIpOw0KLSAgICB2YXIgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRl
eCA9IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleEZhaWwnLCAneCcpIik7DQotDQotICAgIGV2YWxB
bmRMb2coImRiLmRlbGV0ZU9iamVjdFN0b3JlKCdzdG9yZUZhaWwnKSIpOw0KLSAgICBldmFsQW5k
TG9nKCJzdG9yZS5kZWxldGVJbmRleCgnaW5kZXhGYWlsJykiKTsNCi0NCi0gICAgdHJhbnMuYWJv
cnQoKTsNCi19DQotDQotZnVuY3Rpb24gdGVzdFNldFZlcnNpb25BYm9ydDIoKQ0KLXsNCi0gICAg
ZGVidWcoIiIpOw0KLSAgICBkZWJ1ZygidGVzdFNldFZlcnNpb25BYm9ydDIoKToiKTsNCi0gICAg
Y2hlY2tNZXRhZGF0YUVtcHR5KCk7DQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gc3RhcnRTZXRWZXJzaW9uKCd2ZXJzaW9uIGZhaWwnKSIpOw0KLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGFkZFJlbW92ZUFkZElEQk9iamVjdHM7DQotfQ0KLQ0KLWZ1bmN0aW9uIGFkZFJlbW92
ZUFkZElEQk9iamVjdHMoKQ0KLXsNCi0gICAgZGVidWcoImFkZFJlbW92ZUFkZElEQk9iamVjdHMo
KToiKTsNCi0gICAgdmFyIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7DQotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsNCi0gICAgdHJh
bnMuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCB0ZXN0U2V0VmVyc2lvbkFib3J0MywgZmFsc2Up
Ow0KLSAgICB0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7DQot
DQotICAgIHZhciBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ3N0b3JlRmFpbCcsIG51bGwpIik7DQotICAgIHZhciBpbmRleCA9IGV2YWxBbmRMb2coImlu
ZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4RmFpbCcsICd4JykiKTsNCi0NCi0gICAgZXZh
bEFuZExvZygiZGIuZGVsZXRlT2JqZWN0U3RvcmUoJ3N0b3JlRmFpbCcpIik7DQotICAgIGV2YWxB
bmRMb2coInN0b3JlLmRlbGV0ZUluZGV4KCdpbmRleEZhaWwnKSIpOw0KLQ0KLSAgICB2YXIgc3Rv
cmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZUZhaWwn
LCBudWxsKSIpOw0KLSAgICB2YXIgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmNy
ZWF0ZUluZGV4KCdpbmRleEZhaWwnLCAneCcpIik7DQotDQotICAgIHRyYW5zLmFib3J0KCk7DQot
fQ0KLQ0KLWZ1bmN0aW9uIHRlc3RTZXRWZXJzaW9uQWJvcnQzKCkNCi17DQotICAgIGRlYnVnKCIi
KTsNCi0gICAgZGVidWcoInRlc3RTZXRWZXJzaW9uQWJvcnQzKCk6Iik7DQotICAgIHNob3VsZEJl
RmFsc2UoImV2ZW50LmNhbmNlbGFibGUiKTsNCi0gICAgY2hlY2tNZXRhZGF0YUVtcHR5KCk7DQot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gc3RhcnRTZXRWZXJzaW9uKCd2ZXJz
aW9uIGZhaWwnKSIpOw0KLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZElEQk9iamVjdHM7DQot
fQ0KLQ0KLWZ1bmN0aW9uIGFkZElEQk9iamVjdHMoKQ0KLXsNCi0gICAgZGVidWcoImFkZElEQk9i
amVjdHMoKToiKTsNCi0gICAgc2hvdWxkQmVGYWxzZSgiZXZlbnQuY2FuY2VsYWJsZSIpOw0KLSAg
ICB2YXIgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsN
Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOw0KLSAgICB0cmFucy5vbmFib3J0
ID0gdGVzdEluYWN0aXZlQWJvcnRlZFRyYW5zYWN0aW9uOw0KLSAgICB0cmFucy5vbmNvbXBsZXRl
ID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7DQotDQotICAgIHN0b3JlID0gZXZhbEFuZExv
Zygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVGYWlsJywgbnVsbCkiKTsNCi0g
ICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleEZh
aWwnLCAneCcpIik7DQotDQotICAgIHRyYW5zLmFib3J0KCk7DQotfQ0KLQ0KLWZ1bmN0aW9uIHRl
c3RJbmFjdGl2ZUFib3J0ZWRUcmFuc2FjdGlvbigpDQotew0KLSAgICBkZWJ1ZygiIik7DQotICAg
IGRlYnVnKCJ0ZXN0SW5hY3RpdmVBYm9ydGVkVHJhbnNhY3Rpb24oKToiKTsNCi0gICAgZXZhbEFu
ZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXgub3BlbkN1cnNvcigpIiwgIklEQkRhdGFiYXNlRXhjZXB0
aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOw0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJpbmRleC5vcGVuS2V5Q3Vyc29yKCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNB
Q1RJT05fSU5BQ1RJVkVfRVJSIik7DQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4
LmdldCgwKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIi
KTsNCi0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXguZ2V0S2V5KDApIiwgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOw0KLSAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKCJpbmRleC5jb3VudCgpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRS
QU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOw0KLQ0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJzdG9yZS5wdXQoMCwgMCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5B
Q1RJVkVfRVJSIik7DQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmFkZCgwLCAw
KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsNCi0g
ICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuZGVsZXRlKDApIiwgIklEQkRhdGFiYXNl
RXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOw0KLSAgICBldmFsQW5kRXhwZWN0
RXhjZXB0aW9uKCJzdG9yZS5jbGVhcigpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNU
SU9OX0lOQUNUSVZFX0VSUiIpOw0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5n
ZXQoMCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7
DQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLm9wZW5DdXJzb3IoKSIsICJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsNCi0NCi0gICAgdGVz
dFNldFZlcnNpb25BYm9ydDQoKTsNCi19DQotDQotZnVuY3Rpb24gdGVzdFNldFZlcnNpb25BYm9y
dDQoKQ0KLXsNCi0gICAgZGVidWcoIiIpOw0KLSAgICBkZWJ1ZygidGVzdFNldFZlcnNpb25BYm9y
dDQoKToiKTsNCi0gICAgY2hlY2tNZXRhZGF0YUVtcHR5KCk7DQotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gc3RhcnRTZXRWZXJzaW9uKCd2ZXJzaW9uIGZhaWwnKSIpOw0KLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZElEQk9iamVjdHNBbmRDb21taXQ7DQotfQ0KLQ0KLWZ1
bmN0aW9uIGFkZElEQk9iamVjdHNBbmRDb21taXQoKQ0KLXsNCi0gICAgZGVidWcoImFkZElEQk9i
amVjdHNBbmRDb21taXQoKToiKTsNCi0gICAgdmFyIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7DQotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51
bGwiKTsNCi0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOw0KLQ0K
LSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0
b3JlRmFpbCcsIG51bGwpIik7DQotICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBzdG9y
ZS5jcmVhdGVJbmRleCgnaW5kZXhGYWlsJywgJ3gnKSIpOw0KLQ0KLSAgICB0cmFucy5vbmNvbXBs
ZXRlID0gdGVzdEluYWN0aXZlQ29tcGxldGVkVHJhbnNhY3Rpb247DQotfQ0KLQ0KLWZ1bmN0aW9u
IHRlc3RJbmFjdGl2ZUNvbXBsZXRlZFRyYW5zYWN0aW9uKCkNCi17DQotICAgIGRlYnVnKCIiKTsN
Ci0gICAgZGVidWcoInRlc3RJbmFjdGl2ZUNvbXBsZXRlZFRyYW5zYWN0aW9uKCk6Iik7DQotICAg
IGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4Lm9wZW5DdXJzb3IoKSIsICJJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsNCi0gICAgZXZhbEFuZEV4cGVj
dEV4Y2VwdGlvbigiaW5kZXgub3BlbktleUN1cnNvcigpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9u
LlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOw0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJpbmRleC5nZXQoMCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJ
VkVfRVJSIik7DQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4LmdldEtleSgwKSIs
ICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsNCi0gICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXguY291bnQoKSIsICJJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsNCi0NCi0gICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigic3RvcmUucHV0KDAsIDApIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNU
SU9OX0lOQUNUSVZFX0VSUiIpOw0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5h
ZGQoMCwgMCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJS
Iik7DQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmRlbGV0ZSgwKSIsICJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsNCi0gICAgZXZhbEFu
ZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuY2xlYXIoKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5U
UkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsNCi0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigi
c3RvcmUuZ2V0KDApIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZF
X0VSUiIpOw0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5vcGVuQ3Vyc29yKCki
LCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7DQotDQot
ICAgIHRlc3RTZXRWZXJzaW9uQWJvcnQ1KCk7DQotfQ0KLQ0KLWZ1bmN0aW9uIHRlc3RTZXRWZXJz
aW9uQWJvcnQ1KCkNCi17DQotICAgIGRlYnVnKCIiKTsNCi0gICAgZGVidWcoInRlc3RTZXRWZXJz
aW9uQWJvcnQ1KCk6Iik7DQotICAgIGNoZWNrTWV0YWRhdGFFeGlzdGluZ09iamVjdFN0b3JlKCk7
DQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gc3RhcnRTZXRWZXJzaW9uKCd2
ZXJzaW9uIGZhaWwnKSIpOw0KLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHJlbW92ZUlEQk9iamVj
dHM7DQotfQ0KLQ0KLWZ1bmN0aW9uIHJlbW92ZUlEQk9iamVjdHMoKQ0KLXsNCi0gICAgZGVidWco
InJlbW92ZUlEQk9iamVjdHMoKToiKTsNCi0gICAgdmFyIHRyYW5zID0gZXZhbEFuZExvZygidHJh
bnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7DQotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09
IG51bGwiKTsNCi0gICAgdHJhbnMub25hYm9ydCA9IHRlc3RTZXRWZXJzaW9uQWJvcnQ2Ow0KLSAg
ICB0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7DQotDQotICAg
IHZhciBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3Jl
RmFpbCcpIik7DQotICAgIGV2YWxBbmRMb2coInN0b3JlLmRlbGV0ZUluZGV4KCdpbmRleEZhaWwn
KSIpOw0KLSAgICBldmFsQW5kTG9nKCJkYi5kZWxldGVPYmplY3RTdG9yZSgnc3RvcmVGYWlsJyki
KTsNCi0NCi0gICAgdHJhbnMuYWJvcnQoKTsNCi19DQotDQotZnVuY3Rpb24gdGVzdFNldFZlcnNp
b25BYm9ydDYoKQ0KLXsNCi0gICAgZGVidWcoIiIpOw0KLSAgICBkZWJ1ZygidGVzdFNldFZlcnNp
b25BYm9ydDYoKToiKTsNCi0gICAgY2hlY2tNZXRhZGF0YUV4aXN0aW5nT2JqZWN0U3RvcmUoKTsN
Ci0gICAgc2V0TmV3VmVyc2lvbigpOw0KLX0NCi0NCi1mdW5jdGlvbiBzdGFydFNldFZlcnNpb24o
dmVyc2lvbk5hbWUpDQotew0KLSAgICByZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbih2ZXJzaW9uTmFt
ZSk7DQotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOw0KLSAg
ICByZXR1cm4gcmVxdWVzdDsNCi19DQotDQotZnVuY3Rpb24gY2hlY2tNZXRhZGF0YUVtcHR5KCkN
Ci17DQotICAgIHNob3VsZEJlKCJzZWxmLmRiLm9iamVjdFN0b3JlTmFtZXMiLCAiW10iKTsNCi0g
ICAgc2hvdWxkQmUoInNlbGYuZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMCIpOw0KLSAg
ICBzaG91bGRCZSgic2VsZi5kYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCdzdG9yZUZhaWwn
KSIsICJmYWxzZSIpOw0KLX0NCi0NCi1mdW5jdGlvbiBjaGVja01ldGFkYXRhRXhpc3RpbmdPYmpl
Y3RTdG9yZSgpDQotew0KLSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcyIsICJbJ3N0
b3JlRmFpbCddIik7DQotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIs
ICIxIik7DQotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCdzdG9y
ZUZhaWwnKSIsICJ0cnVlIik7DQotfQ0KLQ0KLWZ1bmN0aW9uIHNldE5ld1ZlcnNpb24oKQ0KLXsN
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJyki
KTsNCi0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsNCi0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQotfQ0KLQ0KLWZ1bmN0aW9u
IHNldFZlcnNpb25TdWNjZXNzKCkNCi17DQotICAgIGRlYnVnKCIiKTsNCi0gICAgZGVidWcoInNl
dFZlcnNpb25TdWNjZXNzKCk6Iik7DQotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFu
cyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsNCi0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0g
bnVsbCIpOw0KLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7DQot
ICAgIHRyYW5zLmFkZEV2ZW50TGlzdGVuZXIoJ2NvbXBsZXRlJywgY29tcGxldGVDYWxsYmFjaywg
ZmFsc2UpOw0KLSAgICBzZWxmLmNvbXBsZXRlRXZlbnRGaXJlZCA9IGZhbHNlOw0KLQ0KLSAgICBk
ZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOw0KLQ0KLSAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVP
YmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsNCi19DQotDQotZnVuY3Rpb24gY29tcGxl
dGVDYWxsYmFjaygpDQotew0KLSAgICBzaG91bGRCZUZhbHNlKCJldmVudC5jYW5jZWxhYmxlIik7
DQotICAgIHRlc3RQYXNzZWQoImNvbXBsZXRlIGV2ZW50IGZpcmVkIik7DQotICAgIHRyYW5zYWN0
aW9uID0gZXZhbEFuZExvZygiZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSkiKTsNCi0gICAg
dHJhbnNhY3Rpb24ub25hYm9ydCA9IGFib3J0Q2FsbGJhY2s7DQotICAgIHZhciBzdG9yZSA9IGV2
YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7
DQotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3RvcmUubmFtZSIsICJzdG9yZU5hbWUiKTsN
Ci19DQotDQotZnVuY3Rpb24gYWJvcnRDYWxsYmFjaygpDQotew0KLSAgICB0ZXN0UGFzc2VkKCJh
Ym9ydCBldmVudCBmaXJlZCIpOw0KLSAgICB0ZXN0RE9NU3RyaW5nTGlzdCgpOw0KLX0NCi0NCi1m
dW5jdGlvbiB0ZXN0RE9NU3RyaW5nTGlzdCgpDQotew0KLSAgICBkZWJ1ZygiIik7DQotICAgIGRl
YnVnKCJWZXJpZnlpbmcgRE9NU3RyaW5nTGlzdCB3b3JrcyBhcyBhcmd1bWVudCBmb3IgSURCRGF0
YWJhc2UudHJhbnNhY3Rpb24oKSIpOw0KLSAgICBkZWJ1ZygiZGIub2JqZWN0U3RvcmVOYW1lcyBp
cyAiICsgZGIub2JqZWN0U3RvcmVOYW1lcyk7DQotICAgIGRlYnVnKCIuLi4gd2hpY2ggY29udGFp
bnM6ICIgKyBKU09OLnN0cmluZ2lmeShBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChkYi5vYmpl
Y3RTdG9yZU5hbWVzKSkpOw0KLSAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5z
YWN0aW9uKGRiLm9iamVjdFN0b3JlTmFtZXMpIik7DQotICAgIHRlc3RQYXNzZWQoIm5vIGV4Y2Vw
dGlvbiB0aHJvd24iKTsNCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYi5vYmplY3RTdG9yZU5h
bWVzLmxlbmd0aDsgKytpKSB7DQotICAgICAgc2hvdWxkQmVUcnVlKCJ0cmFuc2FjdGlvbi5vYmpl
Y3RTdG9yZSgiICsgSlNPTi5zdHJpbmdpZnkoZGIub2JqZWN0U3RvcmVOYW1lc1tpXSkgKyAiKSAh
PSBudWxsIik7DQotICAgIH0NCi0gICAgdGVzdFBhc3NlZCgiYWxsIHN0b3JlcyBwcmVzZW50IGlu
IHRyYW5zYWN0aW9uIik7DQotICAgIHRlc3RJbnZhbGlkTW9kZSgpOw0KLX0NCi0NCi1mdW5jdGlv
biB0ZXN0SW52YWxpZE1vZGUoKQ0KLXsNCi0gICAgZGVidWcoIiIpOw0KLSAgICBkZWJ1ZygiVmVy
aWZ5IHRoYXQgc3BlY2lmeWluZyBhbiBpbnZhbGlkIG1vZGUgcmFpc2VzIGFuIGV4Y2VwdGlvbiIp
Ow0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFt
ZSddLCAzKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT05fVFJBTlNJRU5UX0VSUiIpOw0KLSAg
ICBmaW5pc2hKU1Rlc3QoKTsNCi19DQotDQotdGVzdCgpOw0KLQ0KLTwvc2NyaXB0Pg0KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
Pg0KLTwvYm9keT4NCi08L2h0bWw+DQorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvdHJhbnNhY3Rpb24tYmFzaWNzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvdHJhbnNhY3Rpb24tY3Jhc2gtb24tYWJvcnQuaHRtbCBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNyYXNoLW9uLWFib3J0Lmh0bWwKaW5kZXggZDc5Mzcy
MWQ3MzYyYmZkNzlhMjU1MzZhMzEyYTYzNWJjZWIxZTI5Mi4uMTE1OWQyOTQyMDdjZWI0ZTk2ZTM1
MGMwMjdkYmQxY2E5YWQ1NTI2YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvdHJhbnNhY3Rpb24tY3Jhc2gtb24tYWJvcnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jcmFzaC1vbi1hYm9ydC5odG1sCkBAIC00LDQ1
ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwv
aGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIHRy
YW5zYWN0aW9uIGRvZXMgbm90IGNyYXNoIG9uIGFib3J0LiIpOwotCi1mdW5jdGlvbiB0ZXN0KCkK
LXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImluZGV4ZWREQi5vcGVuKCd0cmFuc2FjdGlvbi1jcmFzaC1vbi1hYm9ydCcpIik7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewot
ICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOwotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBl
dmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZl
cnNpb24oJzEuMCcpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2Vz
czsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQot
ZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQotewotICAgIGV2YWxBbmRMb2coImRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdmb28nKSIpOwotICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25jb21wbGV0
ZSA9IHNldFZlcnNpb25Db21wbGV0ZTsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvbkNvbXBsZXRl
KCkKLXsKLSAgICBldmFsQW5kTG9nKCJkYi50cmFuc2FjdGlvbignZm9vJykiKTsKLSAgICBldmFs
QW5kTG9nKCJzZWxmLmdjKCkiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7
Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90cmFuc2FjdGlvbi1jcmFzaC1v
bi1hYm9ydC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWV2ZW50LXByb3Bh
Z2F0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1l
dmVudC1wcm9wYWdhdGlvbi5odG1sCmluZGV4IDg5NTI4YThjMTY5ZTQ0MzkyZTk0MWEyYjk4NDVh
N2Q3YjViZTQ1OTcuLmYwM2VhMzE3MmFkMmY3Yjc4MjMwM2JjMzZmNThhZDUxZmZiZWNjMzQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWV2ZW50
LXByb3BhZ2F0aW9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJh
bnNhY3Rpb24tZXZlbnQtcHJvcGFnYXRpb24uaHRtbApAQCAtNCwxNTAgKzQsNyBAQAogPHNjcmlw
dCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08
c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBldmVudCBwcm9wb2dhdGlvbiBvbiBJREJUcmFu
c2FjdGlvbi4iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4
ZXMoKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0
aW9uLWV2ZW50LXByb3BhZ2F0aW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZl
cnNpb247Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19
Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb24oKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBl
dmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0
VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRl
RXhpc3Rpbmc7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKLXsKLSAgICBzZWxmLnRyYW5zID0gZXZh
bEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVl
KCJ0cmFucyAhPT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRD
YWxsYmFjazsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gc3RhcnRUZXN0Iik7
Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgc3RvcmUgPSBldmFsQW5k
TG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOwot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enon
fSwgJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIHN0YXJ0VGVzdCgpCi17Ci0gICAgZGVidWcoIlZlcmlmaW5nIGFi
b3J0Iik7Ci0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsn
c3RvcmVOYW1lJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFuZExv
ZygidHJhbnMub25hYm9ydCA9IGFib3J0RmlyZWRDYWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2co
InRyYW5zLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjayIpOwotICAgIGV2YWxB
bmRMb2coImRiLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgZGJBYm9ydENhcHR1cmVDYWxsYmFj
aywgdHJ1ZSkiKTsKLSAgICBldmFsQW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcs
IGRiQWJvcnRCdWJibGVDYWxsYmFjaywgZmFsc2UpIik7Ci0gICAgZXZhbEFuZExvZygiZGIuYWRk
RXZlbnRMaXN0ZW5lcignY29tcGxldGUnLCB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjaywgdHJ1
ZSkiKTsKLSAgICBldmFsQW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdjb21wbGV0ZScsIHVu
ZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrLCBmYWxzZSkiKTsKLSAgICBzdG9yZSA9IGV2YWxBbmRM
b2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0gICAgZXZhbEFu
ZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOwotICAgIGRi
Q2FwdHVyZUZpcmVkID0gZmFsc2U7Ci0gICAgYWJvcnRGaXJlZCA9IGZhbHNlOwotICAgIGRiQnVi
YmxlRmlyZWQxID0gZmFsc2U7Ci19Ci0KLWZ1bmN0aW9uIGRiQWJvcnRDYXB0dXJlQ2FsbGJhY2so
KQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiSW4gSURCRGF0YWJhc2UgYWJvcnQgY2Fw
dHVyZSIpOwotICAgIHNob3VsZEJlRmFsc2UoImRiQ2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxk
QmVGYWxzZSgiYWJvcnRGaXJlZCIpOwotICAgIHNob3VsZEJlRmFsc2UoImRiQnViYmxlRmlyZWQx
Iik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldCIsICJ0cmFucyIpOwotICAgIHNob3VsZEJl
KCJldmVudC5jdXJyZW50VGFyZ2V0IiwgImRiIik7Ci0gICAgZGJDYXB0dXJlRmlyZWQgPSB0cnVl
OwotfQotCi1mdW5jdGlvbiBhYm9ydEZpcmVkQ2FsbGJhY2soKQotewotICAgIGRlYnVnKCIiKTsK
LSAgICBkZWJ1ZygiSW4gYWJvcnQgaGFuZGxlciIpOwotICAgIHNob3VsZEJlVHJ1ZSgiZGJDYXB0
dXJlRmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJhYm9ydEZpcmVkIik7Ci0gICAgc2hvdWxk
QmVGYWxzZSgiZGJCdWJibGVGaXJlZDEiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0Iiwg
InRyYW5zIik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LmN1cnJlbnRUYXJnZXQiLCAidHJhbnMiKTsK
LSAgICBhYm9ydEZpcmVkID0gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gZGJBYm9ydEJ1YmJsZUNhbGxi
YWNrKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIkluIElEQkRhdGFiYXNlIGVycm9y
IGJ1YmJsZSIpOwotICAgIHNob3VsZEJlVHJ1ZSgiZGJDYXB0dXJlRmlyZWQiKTsKLSAgICBzaG91
bGRCZVRydWUoImFib3J0RmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVk
MSIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAidHJhbnMiKTsKLSAgICBzaG91bGRC
ZSgiZXZlbnQuY3VycmVudFRhcmdldCIsICJkYiIpOwotICAgIGRiQnViYmxlRmlyZWQxID0gdHJ1
ZTsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIlZlcmlmaW5nIHN1Y2Nlc3MuIik7Ci0gICAg
dHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10s
IElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMub25j
b21wbGV0ZSA9IGNvbXBsZXRlRmlyZWRDYWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2coInRyYW5z
Lm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2coImRi
LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgZGJBYm9ydENhcHR1cmVDYWxsYmFjaywgdHJ1
ZSkiKTsKLSAgICBldmFsQW5kTG9nKCJkYi5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIGRi
QWJvcnRCdWJibGVDYWxsYmFjaywgZmFsc2UpIik7Ci0gICAgZXZhbEFuZExvZygiZGIucmVtb3Zl
RXZlbnRMaXN0ZW5lcignY29tcGxldGUnLCB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjaywgdHJ1
ZSkiKTsKLSAgICBldmFsQW5kTG9nKCJkYi5yZW1vdmVFdmVudExpc3RlbmVyKCdjb21wbGV0ZScs
IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrLCBmYWxzZSkiKTsKLSAgICBldmFsQW5kTG9nKCJk
Yi5hZGRFdmVudExpc3RlbmVyKCdjb21wbGV0ZScsIGRiQ29tcGxldGVDYXB0dXJlQ2FsbGJhY2ss
IHRydWUpIik7Ci0gICAgZXZhbEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignY29tcGxldGUn
LCBkYkNvbXBsZXRlQnViYmxlQ2FsbGJhY2ssIGZhbHNlKSIpOwotICAgIGV2YWxBbmRMb2coImRi
LmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgdW5leHBlY3RlZEFib3J0Q2FsbGJhY2ssIHRydWUp
Iik7Ci0gICAgZXZhbEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCB1bmV4cGVj
dGVkQWJvcnRDYWxsYmFjaywgZmFsc2UpIik7Ci0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9y
ZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotICAgIGV2YWxBbmRMb2coInN0
b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAna2V5MicpIik7Ci0gICAgZGJDYXB0dXJl
RmlyZWQgPSBmYWxzZTsKLSAgICBjb21wbGV0ZUZpcmVkID0gZmFsc2U7Ci0gICAgZGJCdWJibGVG
aXJlZDIgPSBmYWxzZTsKLX0KLQotZnVuY3Rpb24gZGJDb21wbGV0ZUNhcHR1cmVDYWxsYmFjaygp
Ci17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJJbiBJREJEYXRhYmFzZSBjb21wbGV0ZSBj
YXB0dXJlIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGJDYXB0dXJlRmlyZWQiKTsKLSAgICBzaG91
bGRCZUZhbHNlKCJjb21wbGV0ZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVG
aXJlZDIiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0IiwgInRyYW5zIik7Ci0gICAgc2hv
dWxkQmUoImV2ZW50LmN1cnJlbnRUYXJnZXQiLCAiZGIiKTsKLSAgICBkYkNhcHR1cmVGaXJlZCA9
IHRydWU7Ci19Ci0KLWZ1bmN0aW9uIGNvbXBsZXRlRmlyZWRDYWxsYmFjaygpCi17Ci0gICAgZGVi
dWcoIiIpOwotICAgIGRlYnVnKCJJbiBJREJSZXF1ZXN0IGhhbmRsZXIiKTsKLSAgICBzaG91bGRC
ZVRydWUoImRiQ2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiY29tcGxldGVGaXJl
ZCIpOwotICAgIHNob3VsZEJlRmFsc2UoImRiQnViYmxlRmlyZWQyIik7Ci0gICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldCIsICJ0cmFucyIpOwotICAgIHNob3VsZEJlKCJldmVudC5jdXJyZW50VGFy
Z2V0IiwgInRyYW5zIik7Ci0gICAgY29tcGxldGVGaXJlZCA9IHRydWU7Ci0gICAgZGVidWcoIiIp
OwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBkYkNvbXBsZXRlQnViYmxlQ2Fs
bGJhY2soKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiSW4gSURCRGF0YWJhc2UgY29t
cGxldGUgYnViYmxlIik7Ci0gICAgdGVzdEZhaWxlZCgiQ29tcGxldGUgYnViYmxlIGNhbGxiYWNr
IHNob3VsZCBOT1QgZmlyZSIpOwotICAgIGRiQnViYmxlRmlyZWQyID0gdHJ1ZTsKLX0KLQotdGVz
dCgpOwotCi0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90cmFuc2FjdGlvbi1l
dmVudC1wcm9wYWdhdGlvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXJl
YWQtb25seS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24t
cmVhZC1vbmx5Lmh0bWwKaW5kZXggNDk1Y2JjMWMyYjRiNzRjOWMzNTI1OWFkM2FhMzczYmU4MzIx
MDNlOS4uYTkwY2M3YTE2NmNjYWE3NDQ4ZmQ1M2QwZGI0ZjYxNDRlMmY4ZDYwMyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tcmVhZC1vbmx5Lmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tcmVhZC1v
bmx5Lmh0bWwKQEAgLTEsNjcgKzEsMTAgQEAKLTxodG1sPg0KLTxoZWFkPg0KLTxzY3JpcHQgc3Jj
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+DQotPHNj
cmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0Pg0KLTwvaGVhZD4NCi08Ym9k
eT4NCi08c2NyaXB0Pg0KLQ0KLWRlc2NyaXB0aW9uKCJUZXN0IHJlYWQtb25seSB0cmFuc2FjdGlv
bnMgaW4gSW5kZXhlZERCLiIpOw0KLQ0KLWZ1bmN0aW9uIHRlc3QoKQ0KLXsNCi0gICAgcmVtb3Zl
VmVuZG9yUHJlZml4ZXMoKTsNCi0NCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWRE
Qi5vcGVuKCd0cmFuc2FjdGlvbi1yZWFkLW9ubHknKSIpOw0KLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IG9wZW5TdWNjZXNzOw0KLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsNCi19DQotDQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQ0KLXsNCi0gICAgZGVidWco
Im9wZW5TdWNjZXNzKCk6Iik7DQotICAgIHNlbGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsNCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlc3VsdCA9IGRi
LnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7DQotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xl
YW5EYXRhYmFzZTsNCi0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7DQotfQ0KLQ0KLWZ1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQ0KLXsNCi0gICAgZGVsZXRlQWxs
T2JqZWN0U3RvcmVzKGRiKTsNCi0NCi0gICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5vbmNvbXBsZXRl
ID0gc2V0VmVyc2lvbkRvbmU7DQotICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25hYm9ydCA9IHVu
ZXhwZWN0ZWRBYm9ydENhbGxiYWNrOw0KLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsNCi0gICAgZXZhbEFuZExvZygic3RvcmUu
cHV0KCd4JywgJ3knKSIpOw0KLX0NCi0NCi1mdW5jdGlvbiBzZXRWZXJzaW9uRG9uZSgpDQotew0K
LSAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJyki
KTsNCi0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3Jl
JykucHV0KCdhJywgJ2InKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5SRUFEX09OTFlfRVJSIik7
DQotDQotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3Rv
cmUnKSIpOw0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0cmFucy5vYmplY3RTdG9yZSgn
c3RvcmUnKS5kZWxldGUoJ3gnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5SRUFEX09OTFlfRVJS
Iik7DQotDQotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbign
c3RvcmUnKSIpOw0KLSAgICBjdXIgPSBldmFsQW5kTG9nKCJjdXIgPSB0cmFucy5vYmplY3RTdG9y
ZSgnc3RvcmUnKS5vcGVuQ3Vyc29yKCkiKTsNCi0gICAgY3VyLm9uc3VjY2VzcyA9IGdvdEN1cnNv
cjsNCi0gICAgY3VyLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsNCi19DQotDQot
ZnVuY3Rpb24gZ290Q3Vyc29yKCkNCi17DQotICAgIHNob3VsZEJlRmFsc2UoIiFldmVudC50YXJn
ZXQucmVzdWx0Iik7DQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImV2ZW50LnRhcmdldC5y
ZXN1bHQuZGVsZXRlKCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUiIpOw0K
LQ0KLSAgICBmaW5pc2hKU1Rlc3QoKTsNCi19DQotDQotDQotdGVzdCgpOw0KLQ0KLTwvc2NyaXB0
Pg0KLTxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0Pg0KLTwvYm9keT4NCi08L2h0bWw+DQorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdHJhbnNhY3Rpb24tcmVhZC1vbmx5LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tcm9sbGJhY2suaHRtbCBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXJvbGxiYWNrLmh0bWwKaW5kZXggOGEyNzM4
OTA0NzM5Y2E1ZTEyNjQ2ZDY1MGIxNWMxZTk2YTNkMGM3NS4uN2RiZDgwNGFjNjU5NGUyNmRlNDNm
MzU3MmIzOTFiMmYzOTBiMWI3NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvdHJhbnNhY3Rpb24tcm9sbGJhY2suaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi90cmFuc2FjdGlvbi1yb2xsYmFjay5odG1sCkBAIC00LDk3ICs0LDcgQEAKIDxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5
PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIHRyYW5zYWN0aW9uIHJv
bGxiYWNrLiIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhl
cygpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCd0cmFuc2Fj
dGlvbi1yb2xsYmFjaycpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVu
Y3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOwotICAg
IHNlbGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScp
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjbGVhbkRh
dGFiYXNlKCkKLXsKLSAgICBkZWJ1ZygiY2xlYW5EYXRhYmFzZSgpOiIpOwotICAgIHNlbGYudHJh
bnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKLSAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0g
ICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHNldFZlcnNpb25Db21wbGV0ZTsKLQotICAgIGRl
bGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0gICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ215T2JqZWN0U3RvcmUnKSIpOwotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5h
bWVzLmxlbmd0aCIsICIxIik7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb25Db21wbGV0ZSgpCi17
Ci0gICAgZGVidWcoInNldFZlcnNpb25Db21wbGV0ZSgpOiIpOwotCi0gICAgc2VsZi50cmFuc2Fj
dGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydteU9iamVj
dFN0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgdHJhbnNhY3Rpb24u
b25hYm9ydCA9IGFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHVu
ZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOwotCi0gICAgc2VsZi5zdG9yZSA9IGV2YWxBbmRMb2co
InN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ215T2JqZWN0U3RvcmUnKSIpOwotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoJ3JvbGxiYWNrVmFsdWUnLCAncm9sbGJh
Y2tLZXkxMjMnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkU3VjY2VzczsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24g
YWRkU3VjY2VzcygpCi17Ci0gICAgZGVidWcoImFkZFN1Y2Nlc3MoKToiKTsKLSAgICBzaG91bGRC
ZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICIncm9sbGJhY2tLZXkxMjMnIik7Ci0KLSAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygic3RvcmUub3BlbkN1cnNvcigpIik7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBvcGVuQ3Vyc29yU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlbkN1cnNvclN1Y2Nlc3MoKQotewot
ICAgIGRlYnVnKCJvcGVuQ3Vyc29yU3VjY2VzcygpOiIpOwotICAgIHNlbGYuY3Vyc29yID0gZXZh
bEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgdHJhbnNhY3Rp
b24uYWJvcnQoKTsKLX0KLQotZnVuY3Rpb24gYWJvcnRDYWxsYmFjaygpCi17Ci0gICAgZGVidWco
ImFib3J0Q2FsbGJhY2soKToiKTsKLSAgICBkZWJ1ZygnVHJhbnNhY3Rpb24gd2FzIGFib3J0ZWQu
Jyk7Ci0KLSAgICBzZWxmLnRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBk
Yi50cmFuc2FjdGlvbihbJ215T2JqZWN0U3RvcmUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRCkiKTsK
LSAgICBzZWxmLnN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RT
dG9yZSgnbXlPYmplY3RTdG9yZScpIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3Jl
LmdldCgncm9sbGJhY2tLZXkxMjMnKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0U3VjY2VzczsKLX0K
LQotZnVuY3Rpb24gZ2V0U3VjY2VzcygpCi17Ci0gICAgZGVidWcoImdldFN1Y2Nlc3MoKToiKTsK
LSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ1bmRlZmluZWQiKTsKLQotICAg
IHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAiJ3JvbGxiYWNrVmFsdWUnIik7Ci0gICAgZmluaXNo
SlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvdHJhbnNhY3Rpb24tcm9sbGJhY2suanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+
CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFu
c2FjdGlvbi1zdG9yZU5hbWVzLXJlcXVpcmVkLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi90cmFuc2FjdGlvbi1zdG9yZU5hbWVzLXJlcXVpcmVkLmh0bWwKaW5kZXggZTczZTg2
OTI4ZWYxOGMyYzQ5NjA2ZGViNmY5OTU4NTBiZGRiZDhmNC4uYjJhY2NjMzc2NmZhZGZjM2QzYjIx
ODcyMDIyZjQ5ODE4ZWU4NzhiZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvdHJhbnNhY3Rpb24tc3RvcmVOYW1lcy1yZXF1aXJlZC5odG1sCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXN0b3JlTmFtZXMtcmVxdWlyZWQuaHRt
bApAQCAtMSw0NiArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgogPHNj
cmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4K
IDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCOiB0cmFuc2Fj
dGlvbiBzdG9yZU5hbWVzIHJlcXVpcmVkIGFyZ3VtZW50cyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkK
LXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRp
b24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIp
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNz
KCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwot
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJyki
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1
bmN0aW9uIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQotewotICAgIGRlbGV0ZUFsbE9i
amVjdFN0b3JlcyhkYik7Ci0KLSAgICBzaG91bGRUaHJvdygiZGIudHJhbnNhY3Rpb24oKTsiKTsK
LSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy90cmFuc2FjdGlvbi1zdG9yZU5hbWVzLXJlcXVpcmVkLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvdHdvLXZlcnNpb24tY2hhbmdlcy5odG1sIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvdHdvLXZlcnNpb24tY2hhbmdlcy5odG1sCmluZGV4IDlhMWZmYWYx
YWVhODQ0MjRlZTFhNGE5OGUzMDMzNzM2MzA5YmE2MzAuLmM1NjkwOWE0ZjRiMzkxOWJhYjc0ZDE2
NDA1ZTg4ZWM3Y2QyNmM3MzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3R3by12ZXJzaW9uLWNoYW5nZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi90d28tdmVyc2lvbi1jaGFuZ2VzLmh0bWwKQEAgLTQsMTE0ICs0LDcgQEAKIDxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5Pgot
PHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgYmVoYXZpb3Igd2hlbiB0aGUgc2FtZSBjb25u
ZWN0aW9uIGNhbGxzIHNldFZlcnNpb24gdHdpY2UiKTsKLQotCi1mdW5jdGlvbiB0ZXN0KCkgewot
ICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBzaG91bGRCZUZhbHNlKCJpbmRleGVk
REIgPT0gbnVsbCIpOwotICAgIHNob3VsZEJlRmFsc2UoIklEQlRyYW5zYWN0aW9uID09IG51bGwi
KTsKLSAgICBvcGVuREJDb25uZWN0aW9uKCk7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5EQkNvbm5lY3Rp
b24oKQotewotICAgIGV2YWxBbmRMb2coInNlbGYuc3RhdGUgPSAnc3RhcnRpbmcnIik7Ci0gICAg
dmFyIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndHdvLXZlcnNpb25zLW9u
ZS1jb25uZWN0aW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5j
dGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIGV2YWxBbmRMb2coInNlbGYuc3RhdGUgPSAwIik7Ci0K
LSAgICB2YXIgdmVyc2lvbkNoYW5nZVJlcXVlc3QxID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lv
bigndmVyc2lvbiAxJykiKTsKLSAgICB2ZXJzaW9uQ2hhbmdlUmVxdWVzdDEub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0MS5vbnN1Y2Nl
c3MgPSBpblNldFZlcnNpb24xOwotCi0gICAgLy8gYW5kIGNvbmN1cnJlbnRseS4uLgotCi0gICAg
dmFyIHZlcnNpb25DaGFuZ2VSZXF1ZXN0MiA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ3Zl
cnNpb24gMicpIik7Ci0gICAgdmVyc2lvbkNoYW5nZVJlcXVlc3QyLm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLSAgICB2ZXJzaW9uQ2hhbmdlUmVxdWVzdDIub25zdWNjZXNzID0g
aW5TZXRWZXJzaW9uMjsKLX0KLQotZnVuY3Rpb24gaW5TZXRWZXJzaW9uMSgpCi17Ci0gICAgZGVi
dWcoInNldFZlcnNpb24oKSAjMSBjYWxsYmFjayIpOwotICAgIHRyYW5zID0gZXZlbnQudGFyZ2V0
LnJlc3VsdDsKLSAgICBldmFsQW5kTG9nKCJzZWxmLnN0b3JlMSA9IGRiLmNyZWF0ZU9iamVjdFN0
b3JlKCd0ZXN0LXN0b3JlMScpIik7Ci0gICAgc2hvdWxkQmUoIisrc2VsZi5zdGF0ZSIsICIxIik7
Ci0gICAgdmFyIHJlcSA9IGV2YWxBbmRMb2coInNlbGYuc3RvcmUxLnB1dCgnYWFhJywgMTExKSIp
OwotICAgIHJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxLm9u
c3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7Ci0gICAgICAgIHNob3VsZEJlKCIrK3NlbGYuc3RhdGUi
LCAiMiIpOwotICAgICAgICBoYWxmd2F5RG9uZSgpOwotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIGlu
U2V0VmVyc2lvbjIoKQotewotICAgIGRlYnVnKCJzZXRWZXJzaW9uKCkgIzIgY2FsbGJhY2siKTsK
LSAgICB0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Ci0gICAgc2hvdWxkQmUoIisrc2VsZi5z
dGF0ZSIsICI0Iik7Ci0gICAgZXZhbEFuZExvZygic2VsZi5zdG9yZTIgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgndGVzdC1zdG9yZTInKSIpOwotCi0KLSAgICB2YXIgcmVxID0gZXZhbEFuZExvZygi
c2VsZi5zdG9yZTIucHV0KCdiYmInLCAyMjIpIik7Ci0gICAgcmVxLm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKLSAg
ICAgICAgc2hvdWxkQmUoIisrc2VsZi5zdGF0ZSIsICI1Iik7Ci0gICAgICAgIGhhbGZ3YXlEb25l
KCk7Ci0gICAgfTsKLX0KLQotdmFyIGNvdW50ZXIgPSAwOwotZnVuY3Rpb24gaGFsZndheURvbmUo
KSAKLXsKLSAgICBjb3VudGVyICs9IDE7Ci0gICAgaWYgKGNvdW50ZXIgPCAyKSB7Ci0gICAgICAg
IHNob3VsZEJlKCIrK3NlbGYuc3RhdGUiLCAiMyIpOwotICAgICAgICBkZWJ1ZygiaGFsZndheSB0
aGVyZS4uLiIgKTsKLSAgICB9IGVsc2UgewotICAgICAgICBzaG91bGRCZSgiKytzZWxmLnN0YXRl
IiwgIjYiKTsKLSAgICAgICAgY2hlY2tSZXN1bHRzKCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBj
aGVja1Jlc3VsdHMoKSB7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzZWxmLmRiLnZlcnNp
b24iLCAidmVyc2lvbiAyIik7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IHNldFZlcnNpb25Db21w
bGV0ZTsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvbkNvbXBsZXRlKCkKLXsKLSAgICB0cmFucyA9
IGV2YWxBbmRMb2coInNlbGYudHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3Rlc3Qtc3RvcmUxJywg
J3Rlc3Qtc3RvcmUyJ10pIik7Ci0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzZWxmLnN0b3JlID0g
c2VsZi50cmFucy5vYmplY3RTdG9yZSgndGVzdC1zdG9yZTEnKSIpOwotICAgIHJlcSA9IGV2YWxB
bmRMb2coInNlbGYucmVxID0gc2VsZi5zdG9yZS5nZXQoMTExKSIpOwotICAgIHJlcS5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9u
IChlKSB7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3Vs
dCIsICJhYWEiKTsKLQotICAgICAgICBzdG9yZSA9IGV2YWxBbmRMb2coInNlbGYuc3RvcmUgPSBz
ZWxmLnRyYW5zLm9iamVjdFN0b3JlKCd0ZXN0LXN0b3JlMicpIik7Ci0gICAgICAgIHJlcSA9IGV2
YWxBbmRMb2coInNlbGYucmVxID0gc2VsZi5zdG9yZS5nZXQoMjIyKSIpOwotICAgICAgICByZXEu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICByZXEub25zdWNjZXNz
ID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZl
bnQudGFyZ2V0LnJlc3VsdCIsICJiYmIiKTsKLSAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwot
ICAgICAgICB9OwotICAgIH07Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvdHdvLXZlcnNpb24tY2hhbmdlcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
IDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3ZhbHVlLXVuZGVmaW5lZC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
dmFsdWUtdW5kZWZpbmVkLmh0bWwKaW5kZXggNjcwMWYwNmE5NTFiYTkwOTFhOTdhMmQ3ZDUyNTc4
ZTI2NjJhMGQ4MS4uMzkzYWI0NDU4MGY4NWE0MWJkMDcxYzliZWYzZDYwY2YwMGQ3YjNkZiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmFsdWUtdW5kZWZpbmVkLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmFsdWUtdW5kZWZpbmVkLmh0
bWwKQEAgLTEsNzYgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+
CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiB1bmRlZmlu
ZWQgYXMgcmVjb3JkIHZhbHVlIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZl
bmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAg
ICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRiID0g
ZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZTsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY3JlYXRlQW5k
UG9wdWxhdGVPYmplY3RTdG9yZSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsK
LQotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVP
YmplY3RTdG9yZSgnZm9vJyk7Iik7Ci0gICAgcmVzdWx0ID0gZXZhbEFuZExvZygicmVzdWx0ID0g
b2JqZWN0U3RvcmUuYWRkKHVuZGVmaW5lZCwgSW5maW5pdHkpOyIpOwotICAgIHJlc3VsdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGdl
dFZhbHVlOwotfQotCi1mdW5jdGlvbiBnZXRWYWx1ZSgpCi17Ci0gICAgcmVzdWx0ID0gZXZhbEFu
ZExvZygicmVzdWx0ID0gb2JqZWN0U3RvcmUuZ2V0KEluZmluaXR5KTsiKTsKLSAgICByZXN1bHQu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlc3VsdC5vbnN1Y2Nlc3Mg
PSBjaGVja1ZhbHVlOwotfQotCi1mdW5jdGlvbiBjaGVja1ZhbHVlKCkKLXsKLSAgICB2YWx1ZSA9
IGV2YWxBbmRMb2coInZhbHVlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICBzaG91bGRC
ZSgidmFsdWUiLCAidW5kZWZpbmVkIik7Ci0gICAgcmVzdWx0ID0gZXZhbEFuZExvZygicmVzdWx0
ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOwotICAgIHJlc3VsdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGNoZWNrQ3Vyc29y
OwotfQotCi1mdW5jdGlvbiBjaGVja0N1cnNvcigpCi17Ci0gICAgY3Vyc29yID0gZXZhbEFuZExv
ZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICBpZiAoY3Vyc29yKSB7Ci0g
ICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIkluZmluaXR5Iik7Ci0gICAgICAgIHNob3Vs
ZEJlKCJjdXJzb3IudmFsdWUiLCAidW5kZWZpbmVkIik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAg
dGVzdEZhaWxlZCgiY3Vyc29yIGlzIG51bGwiKTsKLSAgICB9Ci0gICAgZmluaXNoSlNUZXN0KCk7
Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdmFs
dWUtdW5kZWZpbmVkLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmFsdWVzLW9kZC10eXBlcy5o
dG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmFsdWVzLW9kZC10eXBlcy5odG1s
CmluZGV4IDJjODYzZjM4YWZjMjEzOTM0ZTk5ODQ5NzE3MGEwYzA3NTNmMDJjYzIuLjg0OGFjN2M5
ZTg5ZDRmYTJlY2ZmYzJiOGMyNmNhMWExNDYyNzdiZGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3ZhbHVlcy1vZGQtdHlwZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi92YWx1ZXMtb2RkLXR5cGVzLmh0bWwKQEAgLTEsODggKzEsMTAg
QEAKLTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+
Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBvZGQgdmFsdWUgZGF0YXR5cGVzIik7Ci0K
LWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBu
YW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0
IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFt
ZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVu
Y3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50
YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRi
LnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkS2V5MTsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rp
b24gYWRkS2V5MSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9i
amVjdFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycsIHthdXRv
SW5jcmVtZW50OiB0cnVlfSk7Iik7Ci0KLSAgICBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdjYW52YXMnKTsKLSAgICBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7Ci0g
ICAgaW1hZ2VkYXRhID0gY29udGV4dC5jcmVhdGVJbWFnZURhdGEoMSwgMSk7Ci0gICAgdmFsaWRU
eXBlcyA9IFt7IGRlc2NyaXB0aW9uOiAncmVnZXhwJywgICAgdmFsdWU6IG5ldyBSZWdFeHAoJ1xc
XFwnKSB9LAotICAgICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ2RhdGUnLCAgICAgIHZh
bHVlOiBuZXcgRGF0ZSgwKSB9LAotICAgICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ29i
amVjdCcsICAgIHZhbHVlOiBuZXcgT2JqZWN0KCkgfSwKLSAgICAgICAgICAgICAgICAgIHsgZGVz
Y3JpcHRpb246ICdpbWFnZWRhdGEnLCB2YWx1ZTogaW1hZ2VkYXRhIH0sCi0gICAgXTsKLSAgICBu
ZXh0VG9BZGQgPSAwOwotICAgIGFkZERhdGEoKTsKLX0KLQotZnVuY3Rpb24gYWRkRGF0YSgpCi17
Ci0gICAgZGVidWcoImFkZGluZyAiICsgdmFsaWRUeXBlc1tuZXh0VG9BZGRdLmRlc2NyaXB0aW9u
ICsgIiB2YWx1ZSIpOwotICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCh2
YWxpZFR5cGVzW25leHRUb0FkZF0udmFsdWUpIik7Ci0gICAgcmVzdWx0Lm9uc3VjY2VzcyA9ICsr
bmV4dFRvQWRkIDwgdmFsaWRUeXBlcy5sZW5ndGggPyBhZGREYXRhIDogb3BlbkFDdXJzb3I7Ci0g
ICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rp
b24gb3BlbkFDdXJzb3IoKQotewotICAgIHZhbHVlSW5kZXggPSAwOwotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOwotICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2co
ImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsK
LSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUudG9TdHJpbmcoKSIsICJ2YWxpZFR5
cGVzW3ZhbHVlSW5kZXhdLnZhbHVlLnRvU3RyaW5nKCkiKTsKLSAgICAgICAgICAgIGlmICh2YWx1
ZUluZGV4ID09IDEpIHsKLSAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLnRv
VVRDU3RyaW5nKCkiLCAiJ1RodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDAgR01UJyIpOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgaWYgKHZhbHVlSW5kZXggPT0gMykgewotICAgICAgICAgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2lkdGgiLCAiMSIpOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7Ci0gICAgICAgICAg
ICBldmFsQW5kTG9nKCJ2YWx1ZUluZGV4Kys7Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotCi10
ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy92YWx1ZXMtb2RkLXR5
cGVzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1jaGFuZ2UtYWJvcnQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1jaGFuZ2UtYWJv
cnQtZXhwZWN0ZWQudHh0CmluZGV4IDMxNWQ0ZDU3Y2U4NWIxYzlmZTU4OWJiOGU3YzExMGQ5NTU3
MmMwMDUuLjMxZWJkNjEzYWJlNjdmNDRhZjA3YjM4NTJlMmY5NDIxMjA3NmIwMmIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWFib3J0LWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9uLWNo
YW5nZS1hYm9ydC1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBACi1DT05TT0xFIE1FU1NBR0U6
IGxpbmUgNzY6IFVuY2F1Z2h0IEVycm9yOiBUaGlzIHNob3VsZCAqTk9UKiBiZSBjYXVnaHQhCitD
T05TT0xFIE1FU1NBR0U6IGxpbmUgNzE6IFVuY2F1Z2h0IEVycm9yOiBUaGlzIHNob3VsZCAqTk9U
KiBiZSBjYXVnaHQhCiBFbnN1cmUgdGhhdCBhYm9ydGVkIFZFUlNJT05fQ0hBTkdFIHRyYW5zYWN0
aW9ucyBhcmUgY29tcGxldGVseSByb2xsZWQgYmFjawogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9uLWNo
YW5nZS1hYm9ydC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1j
aGFuZ2UtYWJvcnQuaHRtbAppbmRleCBjZGM5YWNhMGUzMTgxNzExMTM4MDg0MWIyMzU1NDQwZmE1
YjJlMjE0Li41N2RlMDA5MGE1NmQ1OTU1NmFiNDliOTlkNTJmODQ1MWY5YzNjMmVhIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9uLWNoYW5nZS1hYm9ydC5o
dG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWFi
b3J0Lmh0bWwKQEAgLTEsOTkgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVh
ZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8
L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJFbnN1cmUgdGhhdCBhYm9y
dGVkIFZFUlNJT05fQ0hBTkdFIHRyYW5zYWN0aW9ucyBhcmUgY29tcGxldGVseSByb2xsZWQgYmFj
ayIpOwotCi0KLWZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsK
LSAgICBvcGVuREJDb25uZWN0aW9uKCk7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5EQkNvbm5lY3Rpb24o
KQotewotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndmVyc2lvbi1j
aGFuZ2UtYWJvcnQnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0
aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7Ci0gICAgZGVidWcoIiIpOwotCi0gICAgZXZhbEFuZExvZygidmNy
ZXEgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOwotICAgIHZjcmVxLm9uc3VjY2VzcyA9
IGluU2V0VmVyc2lvbjE7Ci0gICAgdmNyZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotfQotCi1mdW5jdGlvbiBpblNldFZlcnNpb24xKCkKLXsKLSAgICBkZWJ1Zygic2V0VmVy
c2lvbjEoKSBjYWxsYmFjayIpOwotICAgIHNob3VsZEJlVHJ1ZSgidmNyZXEucmVzdWx0IGluc3Rh
bmNlb2YgSURCVHJhbnNhY3Rpb24iKTsKLSAgICB0cmFucyA9IHZjcmVxLnJlc3VsdDsKLSAgICB0
cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBzZXRW
ZXJzaW9uMUNvbXBsZXRlOwotCi0gICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnc3RvcmUxJykiKTsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvbjFDb21wbGV0ZSgp
Ci17Ci0gICAgZGVidWcoInNldFZlcnNpb24xIGNvbXBsZXRlIik7Ci0gICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJkYi52ZXJzaW9uIiwgInZlcnNpb24gMSIpOwotICAgIGRlYnVnKCIiKTsKLQot
ICAgIGV2YWxBbmRMb2coInZjcmVxID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAyJykiKTsKLSAg
ICB2Y3JlcS5vbnN1Y2Nlc3MgPSBpblNldFZlcnNpb24yOwotICAgIHZjcmVxLm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gaW5TZXRWZXJzaW9uMigpCi17
Ci0gICAgZGVidWcoInNldFZlcnNpb24yKCkgY2FsbGJhY2siKTsKLSAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImRiLnZlcnNpb24iLCAidmVyc2lvbiAyIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ2
Y3JlcS5yZXN1bHQgaW5zdGFuY2VvZiBJREJUcmFuc2FjdGlvbiIpOwotICAgIHRyYW5zID0gdmNy
ZXEucmVzdWx0OwotICAgIHRyYW5zLm9uYWJvcnQgPSBzZXRWZXJzaW9uMkFib3J0OwotICAgIHRy
YW5zLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBs
ZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7Ci0KLSAgICBldmFsQW5kTG9nKCJzdG9y
ZSA9IGRiLmRlbGV0ZU9iamVjdFN0b3JlKCdzdG9yZTEnKSIpOwotICAgIGV2YWxBbmRMb2coInN0
b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlMicpIik7Ci0KLSAgICAvLyBFbnN1cmUg
dGhlIHRlc3QgaGFybmVzcyBlcnJvciBoYW5kbGVyIGlzIG5vdCBpbnZva2VkLgotICAgIHNlbGYu
b3JpZ2luYWxXaW5kb3dPbkVycm9yID0gc2VsZi5vbmVycm9yOwotICAgIHNlbGYub25lcnJvciA9
IG51bGw7Ci0KLSAgICBkZWJ1ZygicmFpc2luZyBleGNlcHRpb24iKTsKLSAgICB0aHJvdyBuZXcg
RXJyb3IoIlRoaXMgc2hvdWxkICpOT1QqIGJlIGNhdWdodCEiKTsKLX0KLQotZnVuY3Rpb24gc2V0
VmVyc2lvbjJBYm9ydCgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJzZXRWZXJzaW9u
MkFib3J0KCkgY2FsbGJhY2siKTsKLQotICAgIC8vIFJlc3RvcmUgdGVzdCBoYXJuZXNzIGVycm9y
IGhhbmRsZXIuCi0gICAgc2VsZi5vbmVycm9yID0gc2VsZi5vcmlnaW5hbFdpbmRvd09uRXJyb3I7
Ci0KLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLnZlcnNpb24iLCAidmVyc2lvbiAxIik7
Ci0gICAgc2hvdWxkQmVUcnVlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCdzdG9yZTEn
KSIpOwotICAgIHNob3VsZEJlRmFsc2UoImRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJ3N0
b3JlMicpIik7Ci0KLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotdGVzdCgpOwotCi08L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdmVyc2lvbi1jaGFuZ2UtYWJvcnQuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9uLWNoYW5nZS1leGNsdXNpdmUuaHRtbCBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWV4Y2x1c2l2ZS5odG1sCmluZGV4
IDQ5NDk2ZGViMjRhYjk4N2QxM2E2ODE0MTRiNmVlNThjM2Y5ZWU1MzIuLjRhMGU0NjJhNjdhYjlh
MTI4MzEwMWM3NmY4NjQ2Nzg5ODU1NGQ5ZmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWV4Y2x1c2l2ZS5odG1sCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWV4Y2x1c2l2ZS5odG1sCkBAIC00
LDc3ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4K
IDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIkVuc3VyZSBWRVJTSU9O
X0NIQU5HRSB0cmFuc2FjdGlvbiBkb2Vzbid0IHJ1biBjb25jdXJyZW50bHkgd2l0aCBvdGhlciB0
cmFuc2FjdGlvbnMiKTsKLQotCi1mdW5jdGlvbiB0ZXN0KCkgewotICAgIHJlbW92ZVZlbmRvclBy
ZWZpeGVzKCk7Ci0gICAgb3BlbkRCQ29ubmVjdGlvbigpOwotfQotCi1mdW5jdGlvbiBvcGVuREJD
b25uZWN0aW9uKCkKLXsKLSAgICBldmFsQW5kTG9nKCJzZWxmLnN0YXRlID0gJ3N0YXJ0aW5nJyIp
OwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndmVyc2lvbi1jaGFu
Z2UtZXhjbHVzaXZlJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5j
dGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgZGVidWcoImNhbGxpbmcgc2V0VmVyc2lvbigpIC0g
Y2FsbGJhY2sgc2hvdWxkIHJ1biBpbW1lZGlhdGVseSIpOwotICAgIHZhciB2ZXJzaW9uQ2hhbmdl
UmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7Ci0gICAg
dmVyc2lvbkNoYW5nZVJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
ICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uc3VjY2VzcyA9IGluU2V0VmVyc2lvbjsKLQotICAg
IC8vIGFuZCBjb25jdXJyZW50bHkuLi4KLQotICAgIGRlYnVnKCJjYWxsaW5nIG9wZW4oKSAtIGNh
bGxiYWNrIHNob3VsZCB3YWl0IHVudGlsIFZFUlNJT05fQ0hBTkdFIHRyYW5zYWN0aW9uIGlzIGNv
bXBsZXRlIik7Ci0gICAgdmFyIG9wZW5SZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9w
ZW4oJ3ZlcnNpb24tY2hhbmdlLWV4Y2x1c2l2ZScpIik7Ci0gICAgb3BlblJlcXVlc3Qub25zdWNj
ZXNzID0gb3BlbkFnYWluU3VjY2VzczsKLSAgICBvcGVuUmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGluU2V0VmVyc2lvbigpCi17Ci0gICAg
ZGVidWcoInNldFZlcnNpb24oKSBjYWxsYmFjayIpOwotICAgIGRlYnVnKCJzdGFydGluZyB3b3Jr
IGluIFZFUlNJT05fQ0hBTkdFIHRyYW5zYWN0aW9uIik7Ci0gICAgZXZhbEFuZExvZygic2VsZi5z
dGF0ZSA9ICdWRVJTSU9OX0NIQU5HRSBzdGFydGVkJyIpOwotCi0gICAgc2VsZi5zdG9yZSA9IGV2
YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Rlc3Qtc3RvcmUnKSIpOwot
ICAgIHNlbGYuY291bnQgPSAwOwotICAgIGRvX2FzeW5jX3B1dHMoKTsKLQotICAgIGZ1bmN0aW9u
IGRvX2FzeW5jX3B1dHMoKSB7Ci0gICAgICAgIHZhciByZXEgPSBldmFsQW5kTG9nKCJzdG9yZS5w
dXQoIiArIGNvdW50ICsgIiwgIiArIGNvdW50ICsgIikiKTsKLSAgICAgICAgcmVxLm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0
aW9uIChlKSB7Ci0gICAgICAgICAgICBkZWJ1ZygiaW4gcHV0J3Mgb25zdWNjZXNzIik7Ci0gICAg
ICAgICAgICBpZiAoKytzZWxmLmNvdW50IDwgMTApIHsKLSAgICAgICAgICAgICAgICBkb19hc3lu
Y19wdXRzKCk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGRlYnVnKCJl
bmRpbmcgd29yayBpbiBWRVJTSU9OX0NIQU5HRSB0cmFuc2FjdGlvbiIpOwotICAgICAgICAgICAg
ICAgIGV2YWxBbmRMb2coInNlbGYuc3RhdGUgPSAnVkVSU0lPTl9DSEFOR0UgZmluaXNoZWQnIik7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0gICAgfQotfQotCi1mdW5jdGlvbiBvcGVuQWdh
aW5TdWNjZXNzKCkKLXsKLSAgICBkZWJ1Zygib3BlbigpIGNhbGxiYWNrIC0gdGhpcyBzaG91bGQg
YXBwZWFyIGFmdGVyIFZFUlNJT05fQ0hBTkdFIHRyYW5zYWN0aW9uIGVuZHMiKTsKLSAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoInNlbGYuc3RhdGUiLCAiVkVSU0lPTl9DSEFOR0UgZmluaXNoZWQi
KTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy92ZXJzaW9uLWNoYW5nZS1leGNsdXNpdmUuanMiPjwvc2NyaXB0
PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi92ZXJzaW9uY2hhbmdlcmVxdWVzdC1hY3RpdmVkb21vYmplY3QuaHRtbCBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb25jaGFuZ2VyZXF1ZXN0LWFjdGl2
ZWRvbW9iamVjdC5odG1sCmluZGV4IDlhN2MzNTBkYjUyYmNkYjBlM2NhNDA4ZDM4YmM4NmNmOGZh
NzUxNGQuLjU0NzQ1ZDcwMTZiMDU2OTc0ODdmZmEwODgwMjNmNTVmZGE2YjM1NjcgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb25jaGFuZ2VyZXF1ZXN0LWFj
dGl2ZWRvbW9iamVjdC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Zl
cnNpb25jaGFuZ2VyZXF1ZXN0LWFjdGl2ZWRvbW9iamVjdC5odG1sCkBAIC0xLDc2ICsxLDEwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJl
c291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0Pgot
Ci1kZXNjcmlwdGlvbigiRW5zdXJlIHRoYXQgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Qgb2JqZWN0
cyBhcmUgbm90IEdDJ2QgaWYgdGhleSBoYXZlIHBlbmRpbmcgZXZlbnRzIik7Ci0KLWZ1bmN0aW9u
IHRlc3QoKSB7Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIGRlYnVnKCIiKTsK
LSAgICBldmFsQW5kTG9nKCJzZWxmLmRibmFtZSA9ICd2ZXJzaW9uY2hhbmdlcmVxdWVzdC1hY3Rp
dmVkb21vYmplY3QnIik7Ci0KLSAgICB0ZXN0RGVsZXRlRGF0YWJhc2UoKTsKLX0KLQotZnVuY3Rp
b24gdGVzdERlbGV0ZURhdGFiYXNlKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInRl
c3REZWxldGVEYXRhYmFzZSgpOiIpOwotICAgIC8vIE5PVEU6IGRlbGV0ZVJlcXVlc3QgaXMgbG9j
YWwgdmFyaWFibGUgc28gaXQgaXMgbm90IGNhcHR1cmVkIGluIGdsb2JhbCBzY29wZS4KLSAgICB2
YXIgZGVsZXRlUmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShz
ZWxmLmRibmFtZSkiKTsKLSAgICBkZWxldGVSZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLSAgICBkZWxldGVSZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9j
a2VkQ2FsbGJhY2s7Ci0gICAgZGVsZXRlUmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsg
ZGVsZXRlU3VjY2VzcygpOyB9OwotICAgIGRlbGV0ZVJlcXVlc3QgPSBudWxsOwotICAgIGlmIChz
ZWxmLmdjKSB7Ci0gICAgICAgIGV2YWxBbmRMb2coInNlbGYuZ2MoKSIpOwotICAgIH0KLX0KLQot
ZnVuY3Rpb24gZGVsZXRlU3VjY2VzcygpCi17Ci0gICAgdGVzdFBhc3NlZCgiZGVsZXRlRGF0YWJh
c2UncyBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5vbnN1Y2Nlc3MgZXZlbnQgZmlyZWQiKTsKLSAg
ICB0ZXN0U2V0VmVyc2lvbigpOwotfQotCi1mdW5jdGlvbiB0ZXN0U2V0VmVyc2lvbigpCi17Ci0g
ICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJ0ZXN0U2V0VmVyc2lvbigpOiIpOwotCi0gICAgLy8g
Tk9URTogVGhpcyBpcyBqdXN0IGFuIElEQlJlcXVlc3QsIGl0IGNhbiBiZSBnbG9iYWwuCi0gICAg
ZXZhbEFuZExvZygib3BlblJlcXVlc3QgPSBpbmRleGVkREIub3BlbihzZWxmLmRibmFtZSkiKTsK
LSAgICBvcGVuUmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAg
b3BlblJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewotICAgICAgICBldmFsQW5kTG9n
KCJkYiA9IG9wZW5SZXF1ZXN0LnJlc3VsdCIpOwotCi0gICAgICAgIC8vIE5PVEU6IHZlcnNpb25S
ZXF1ZXN0IGlzIGxvY2FsIHZhcmlhYmxlIHNvIGl0IGlzIG5vdCBjYXB0dXJlZCBpbiBnbG9iYWwg
c2NvcGUuCi0gICAgICAgIHZhciB2ZXJzaW9uUmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZl
cnNpb24oJzEnKSIpOwotICAgICAgICB2ZXJzaW9uUmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgIHZlcnNpb25SZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhw
ZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7Ci0gICAgICAgIHZlcnNpb25SZXF1ZXN0Lm9uc3VjY2VzcyA9
IGZ1bmN0aW9uKCkgeyB2ZXJzaW9uU3VjY2VzcygpOyB9OwotICAgICAgICB2ZXJzaW9uUmVxdWVz
dCA9IG51bGw7Ci0gICAgICAgIGlmIChzZWxmLmdjKSB7Ci0gICAgICAgICAgICBldmFsQW5kTG9n
KCJzZWxmLmdjKCkiKTsKLSAgICAgICAgfQotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIHZlcnNpb25T
dWNjZXNzKCkKLXsKLSAgICB0ZXN0UGFzc2VkKCJzZXRWZXJzaW9uJ3MgSURCVmVyc2lvbkNoYW5n
ZVJlcXVlc3Qub25zdWNjZXNzIGV2ZW50IGZpcmVkIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19
Ci0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3ZlcnNpb25j
aGFuZ2VyZXF1ZXN0LWFjdGl2ZWRvbW9iamVjdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0i
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9k
eT4KIDwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133549</attachid>
            <date>2012-03-23 13:31:07 -0700</date>
            <delta_ts>2012-03-23 13:52:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81440-20120323133106.patch</filename>
            <type>text/plain</type>
            <size>1047700</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExODU1CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTdkYTMzZDViZjdiNDhmNDE0Y2Qy
YjA0M2VlNjkwNTQ5MTI3OWZiNi4uY2YwMDVhMjhiYzRjM2E4ZDQ3NzNlYjFlYjcwOGEzYTQ4MzI2
ZTg4NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyODQgQEAKKzIwMTItMDMtMjMgIERhdmlkIEdyb2dhbiAg
PGRncm9nYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEV4dHJhY3QgbG9naWMgb2YgaW5kZXhl
ZGRiIGh0bWwgbGF5b3V0IHRlc3RzIGludG8ganMgZmlsZXMgdGhhdCBjYW4KKyAgICAgICAgYmUg
cnVuIGZyb20gZWl0aGVyIGEgd29ya2VyIG9yIGEgd2luZG93LgorCisgICAgICAgIFRoZSB0d28g
Y2hhbmdlZCAtZXhwZWN0ZWQudHh0IGZpbGVzIGFyZSBqdXN0IGZvciBsaW5lIG51bWJlcnMgaW4g
SlMKKyAgICAgICAgZXJyb3IgbWVzc2FnZXMuCisKKyAgICAgICAgU2tpcHBlZCB3ZXJlOgorICAg
ICAgICAtIHRyYW5zYWN0aW9uLWFib3J0LXdpdGgtanMtcmVjdXJzaW9uLmh0bWwKKyAgICAgICAg
LSB0cmFuc2FjdGlvbi1hYm9ydC13aXRoLWpzLXJlY3Vyc2lvbi1jcm9zcy1mcmFtZS5odG1sCisg
ICAgICAgIC0gbm9ibG9icy5odG1sCisgICAgICAgIC0gdHV0b3JpYWwuaHRtbAorICAgICAgICBU
aGUgZmlyc3QgdGhyZWUgc2ltdWxhdGUgbW91c2UgZXZlbnRzIGFuZCB0aGUgbGFzdCBpc24ndCBy
ZWFsbHkgYSB0ZXN0LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04MTQ0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY29uc3RhbnRzLmh0bWw6CisgICAgICAgICogc3Rv
cmFnZS9pbmRleGVkZGIvY3JlYXRlLWFuZC1yZW1vdmUtb2JqZWN0LXN0b3JlLmh0bWw6CisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlLW9iamVjdC1zdG9yZS1vcHRpb25zLmh0bWw6
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlT2JqZWN0U3RvcmUtbmFtZS1hcmd1
bWVudC1yZXF1aXJlZC5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZU9i
amVjdFN0b3JlLW51bGwtbmFtZS5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2N1
cnNvci1jb250aW51ZS5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1k
ZWxldGUuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItaW5jb25zaXN0
ZW5jeS5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1pbmRleC1kZWxl
dGUuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3Ita2V5LW9yZGVyLmh0
bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXByaW1hcnkta2V5LW9yZGVy
Lmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXJldmVyc2UtYnVnLmh0
bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXNraXAtZGVsZXRlZC5odG1s
OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci11cGRhdGUtdmFsdWUtYXJndW1l
bnQtcmVxdWlyZWQuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItdXBk
YXRlLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvZGF0YS1jb3JydXB0aW9uLmh0
bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtYmFzaWNzLmh0bWw6Cisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtbmFtZS11bmRlZmluZWQuaHRtbDoK
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1vZGQtbmFtZXMuaHRtbDoKKyAg
ICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1xdW90YS5odG1sOgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZS1jbG9zZWQtZGF0YWJhc2Utb2JqZWN0Lmh0bWw6Cisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlLXJhbmdlLmh0bWw6CisgICAgICAgICog
c3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlSW5kZXguaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2lu
ZGV4ZWRkYi9kZWxldGVPYmplY3RTdG9yZS1uYW1lLWFyZ3VtZW50LXJlcXVpcmVkLmh0bWw6Cisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlT2JqZWN0U3RvcmUtbnVsbC1uYW1lLmh0
bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvZHVwbGljYXRlcy5odG1sOgorICAgICAg
ICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2Vycm9yLWNhdXNlcy1hYm9ydC1ieS1kZWZhdWx0Lmh0bWw6
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvZXhjZXB0aW9uLWluLWV2ZW50LWFib3J0cy1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvZXhjZXB0aW9uLWluLWV2
ZW50LWFib3J0cy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2ZhY3RvcnktYmFz
aWNzLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvZmFjdG9yeS1jbXAuaHRtbDoK
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9mYWN0b3J5LWRlbGV0ZWRhdGFiYXNlLWludGVy
YWN0aW9ucy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2ZhY3RvcnktZGVsZXRl
ZGF0YWJhc2UuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1jb3VudC5o
dG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWN1cnNvci5odG1sOgorICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWdldC1rZXktYXJndW1lbnQtcmVxdWlyZWQu
aHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1tdWx0aWVudHJ5Lmh0bWw6
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtcG9wdWxhdGlvbi5odG1sOgorICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LXVuaXF1ZS5odG1sOgorICAgICAgICAqIHN0
b3JhZ2UvaW5kZXhlZGRiL2ludmFsaWQta2V5cy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5k
ZXhlZGRiL2tleS1nZW5lcmF0b3IuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9r
ZXktc29ydC1vcmRlci1hY3Jvc3MtdHlwZXMuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4
ZWRkYi9rZXktc29ydC1vcmRlci1kYXRlLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVk
ZGIva2V5LXR5cGUtYXJyYXkuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9rZXkt
dHlwZS1pbmZpbml0eS5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgt
YmFzaWNzLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1lZGdlcy5o
dG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtZmV0Y2gta2V5Lmh0bWw6
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIva2V5cmFuZ2UtcmVxdWlyZWQtYXJndW1lbnRz
Lmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIva2V5cmFuZ2UuaHRtbDoKKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9saXN0LW9yZGVyaW5nLmh0bWw6CisgICAgICAgICogc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9hZGQtdHdpY2UtZmFpbHVyZS5odG1sOgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvYXV0b2luY3JlbWVudC1pbmRleGVzLmh0bWw6Cisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9iYWQta2V5cGF0aC5odG1sOgorICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY2xlYXIuaHRtbDoKKyAgICAgICAgKiBz
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1pbmRleC11bmlxdWUuaHRtbDoKKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1pbmRleC13aXRoLWludGVnZXIt
a2V5cy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3JlYXRlLW9i
amVjdHN0b3JlLWJhc2ljcy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEvY3JlYXRlLW9iamVjdHN0b3JlLW51bGwtbmFtZS5odG1sOgorICAgICAgICAqIHN0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvY3Vyc29yLW11dGF0aW9uLW9iamVjdHN0b3JlLW9ubHkuaHRtbDoK
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2N1cnNvci1tdXRhdGlvbi5odG1s
OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3Vyc29yLXVwZGF0ZS11cGRh
dGVzLWluZGV4ZXMuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2N1
cnNvcnMuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2RlbGV0ZS1y
ZXN1bHQuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2V2ZW50LXNv
dXJjZS5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvZ2xvYmFsLWRh
dGEuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2luZGV4ZXMuaHRt
bDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMt
ZGVsZXRlLW51bGwta2V5Lmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9rZXktcmVxdWlyZW1lbnRzLWlubGluZS1hbmQtcGFzc2VkLmh0bWw6CisgICAgICAgICogc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWlyZW1lbnRzLXB1dC1uby1rZXkuaHRtbDoK
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMtcHV0
LW51bGwta2V5Lmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXkt
cmVxdWlyZW1lbnRzLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9v
YmplY3QtY3Vyc29ycy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEv
b2JqZWN0LWlkZW50aXR5Lmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9vYmplY3Qtc3RvcmUtaW5saW5lLWF1dG9pbmNyZW1lbnQta2V5LWFkZGVkLW9uLXB1dC5odG1s
OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0LXN0b3JlLXJlbW92
ZS12YWx1ZXMuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29iamVj
dHN0b3JlbmFtZXMuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29k
ZC1yZXN1bHQtb3JkZXIuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L29wZW4tZGF0YWJhc2UtbnVsbC1uYW1lLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVk
ZGIvbW96aWxsYS9wdXQtZ2V0LXZhbHVlcy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvcmVhZG9ubHktdHJhbnNhY3Rpb25zLmh0bWw6CisgICAgICAgICogc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9yZWFkd3JpdGUtdHJhbnNhY3Rpb25zLmh0bWw6CisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZWFkeVN0YXRlLmh0bWw6CisgICAgICAgICog
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZW1vdmUtaW5kZXguaHRtbDoKKyAgICAgICAgKiBz
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3JlbW92ZS1vYmplY3RzdG9yZS5odG1sOgorICAgICAg
ICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2FkZC10d2ljZS1mYWlsdXJl
LmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2Fk
ZC10d2ljZS1mYWlsdXJlLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNj
ZXNzKToKKyAgICAgICAgKGNsZWFuRGF0YWJhc2UpOgorICAgICAgICAoYWRkRmlyc3RTdWNjZXNz
KToKKyAgICAgICAgKGFkZFNlY29uZEV4cGVjdGVkRXJyb3IpOgorICAgICAgICAqIHN0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2F1dG9pbmNyZW1lbnQtaW5kZXhlcy5qczogQ29w
aWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9hdXRvaW5jcmVt
ZW50LWluZGV4ZXMuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3BlblN1Y2Nlc3Mp
OgorICAgICAgICAoc2V0dXBPYmplY3RTdG9yZSk6CisgICAgICAgIChzZXR1cEluZGV4ZXMpOgor
ICAgICAgICAoc2V0VmVyc2lvbkNvbXBsZXRlKToKKyAgICAgICAgKGNoZWNrRmlyc3RJbmRleEFu
ZFByZXBhcmVTZWNvbmQpOgorICAgICAgICAoY2hlY2tTZWNvbmRJbmRleEFuZFByZXBhcmVUaGly
ZCk6CisgICAgICAgIChjaGVja1RoaXJkSW5kZXgpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvcmVzb3VyY2VzL2JhZC1rZXlwYXRoLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2JhZC1rZXlwYXRoLmh0bWwuCisgICAgICAg
ICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGNsZWFuRGF0YWJhc2Up
OgorICAgICAgICAoYWRkRmlyc3RTdWNjZXNzKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL3Jlc291cmNlcy9jbGVhci5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9jbGVhci5odG1sLgorICAgICAgICAodGVzdCk6CisgICAg
ICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChjbGVhbkRhdGFiYXNlKToKKyAgICAgICAgKGNs
ZWFyKToKKyAgICAgICAgKGFyZVdlQ2xlYXJZZXQpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvcmVzb3VyY2VzL2NyZWF0ZS1pbmRleC11bmlxdWUuanM6IENvcGllZCBmcm9t
IExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3JlYXRlLWluZGV4LXVuaXF1
ZS5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAg
IChjcmVhdGVBbmRWZXJpZnlJbmRleCk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9yZXNvdXJjZXMvY3JlYXRlLWluZGV4LXdpdGgtaW50ZWdlci1rZXlzLmpzOiBDb3BpZWQg
ZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1pbmRleC13
aXRoLWludGVnZXIta2V5cy5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChvcGVuU3Vj
Y2Vzcyk6CisgICAgICAgIChzZXR1cE9iamVjdFN0b3JlQW5kQ3JlYXRlSW5kZXgpOgorICAgICAg
ICAodmVyaWZ5S2V5Q3Vyc29yKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L3Jlc291cmNlcy9jcmVhdGUtb2JqZWN0c3RvcmUtYmFzaWNzLmpzOiBDb3BpZWQgZnJvbSBMYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1vYmplY3RzdG9yZS1iYXNp
Y3MuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAg
ICAoY2xlYW5EYXRhYmFzZSk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9y
ZXNvdXJjZXMvY3JlYXRlLW9iamVjdHN0b3JlLW51bGwtbmFtZS5qczogQ29waWVkIGZyb20gTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtb2JqZWN0c3RvcmUtbnVs
bC1uYW1lLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAg
ICAgICAgKGNsZWFuRGF0YWJhc2UpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEvcmVzb3VyY2VzL2N1cnNvci1tdXRhdGlvbi1vYmplY3RzdG9yZS1vbmx5LmpzOiBDb3BpZWQg
ZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2N1cnNvci1tdXRhdGlv
bi1vYmplY3RzdG9yZS1vbmx5Lmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5T
dWNjZXNzKToKKyAgICAgICAgKHNldHVwT2JqZWN0U3RvcmUpOgorICAgICAgICAoaXRlcmF0ZUN1
cnNvcik6CisgICAgICAgIChjaGVja0N1cnNvclJlc3VsdHNBbmRTZXR1cE11dGF0aW5nQ3Vyc29y
KToKKyAgICAgICAgKGl0ZXJhdGVNdXRhdGluZ0N1cnNvcik6CisgICAgICAgIChhZGRGaW5hbERh
dGEucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAoYWRkRmluYWxEYXRhKToKKyAgICAgICAg
KGNoZWNrTXV0YXRpbmdDdXJzb3JSZXN1bHRzKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL3Jlc291cmNlcy9jdXJzb3ItbXV0YXRpb24uanM6IENvcGllZCBmcm9tIExheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3Vyc29yLW11dGF0aW9uLmh0bWwuCisg
ICAgICAgICh0ZXN0LnJlcXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAg
ICAgKHRlc3QucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdCk6CisgICAgICAgIChz
ZXR1cE9iamVjdFN0b3JlQW5kQ3JlYXRlSW5kZXgpOgorICAgICAgICAoc2V0dXBDdXJzb3IpOgor
ICAgICAgICAoaXRlcmF0ZUN1cnNvcik6CisgICAgICAgIChjaGVja0N1cnNvclJlc3VsdHMpOgor
ICAgICAgICAoc2V0dXBNdXRhdGluZ0N1cnNvcik6CisgICAgICAgIChpdGVyYXRlTXV0YXRpbmdD
dXJzb3IpOgorICAgICAgICAoYWRkRmluYWxEYXRhLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAg
ICAgKGFkZEZpbmFsRGF0YSk6CisgICAgICAgIChjaGVja011dGF0aW5nQ3Vyc29yUmVzdWx0cyk6
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY3Vyc29yLXVw
ZGF0ZS11cGRhdGVzLWluZGV4ZXMuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvY3Vyc29yLXVwZGF0ZS11cGRhdGVzLWluZGV4ZXMuaHRtbC4KKyAg
ICAgICAgKHRlc3QpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAoc2V0VmVyc2lv
bik6CisgICAgICAgIChzZXR1cE9iamVjdFN0b3JlQW5kQ3JlYXRlSW5kZXhBbmRBZGQpOgorICAg
ICAgICAob3BlbkN1cnNvcik6CisgICAgICAgICh1cGRhdGVDdXJzb3IpOgorICAgICAgICAoZ2V0
SW5kZXgxKToKKyAgICAgICAgKGNoZWNrSW5kZXgxQW5kR2V0SW5kZXgyKToKKyAgICAgICAgKGNo
ZWNrSW5kZXgyKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNl
cy9jdXJzb3JzLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL2N1cnNvcnMuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3BlblN1Y2Nl
c3MpOgorICAgICAgICAodGVzdEdyb3VwMS5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgICh0
ZXN0R3JvdXAxKToKKyAgICAgICAgKHRlc3RHcm91cDIucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAg
ICAgICAodGVzdEdyb3VwMik6CisgICAgICAgICh0ZXN0R3JvdXAzLnJlcXVlc3Qub25zdWNjZXNz
KToKKyAgICAgICAgKHRlc3RHcm91cDMpOgorICAgICAgICAodGVzdEdyb3VwNC5yZXF1ZXN0Lm9u
c3VjY2Vzcyk6CisgICAgICAgICh0ZXN0R3JvdXA0KToKKyAgICAgICAgKHRlc3RHcm91cDUucmVx
dWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwNSk6CisgICAgICAgICh0ZXN0R3Jv
dXA2LnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHRlc3RHcm91cDYpOgorICAgICAgICAo
dGVzdEdyb3VwNy5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgICh0ZXN0R3JvdXA3KToKKyAg
ICAgICAgKHRlc3RHcm91cDgucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3Vw
OCk6CisgICAgICAgICh0ZXN0R3JvdXA5LnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHRl
c3RHcm91cDkpOgorICAgICAgICAodGVzdEdyb3VwMTAucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAg
ICAgICAodGVzdEdyb3VwMTApOgorICAgICAgICAodGVzdEdyb3VwMTEucmVxdWVzdC5vbnN1Y2Nl
c3MucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwMTEucmVxdWVzdC5vbnN1
Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwMTEpOgorICAgICAgICAodGVzdEdyb3VwMTIpOgor
ICAgICAgICAodGVzdEdyb3VwMTJiKToKKyAgICAgICAgKHRlc3RHcm91cDEzLnJlcXVlc3Qub25z
dWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHRlc3RHcm91cDEzLnJlcXVlc3Qu
b25zdWNjZXNzKToKKyAgICAgICAgKHRlc3RHcm91cDEzKToKKyAgICAgICAgKHRlc3RHcm91cDE0
KToKKyAgICAgICAgKHRlc3RHcm91cDE0Yik6CisgICAgICAgICh0ZXN0R3JvdXAxNS5yZXF1ZXN0
Lm9uc3VjY2Vzcyk6CisgICAgICAgICh0ZXN0R3JvdXAxNSk6CisgICAgICAgICogc3RvcmFnZS9p
bmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvZGVsZXRlLXJlc3VsdC5qczogQ29waWVkIGZyb20g
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9kZWxldGUtcmVzdWx0Lmh0bWwu
CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGNyZWF0
ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKGRlbGV0ZVJlY29yZDEpOgorICAgICAgICAoZGVsZXRl
UmVjb3JkMik6CisgICAgICAgIChmaW5hbENoZWNrKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9ldmVudC1zb3VyY2UuanM6IENvcGllZCBmcm9tIExheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvZXZlbnQtc291cmNlLmh0bWwuCisgICAg
ICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGNsZWFuRGF0YWJh
c2UpOgorICAgICAgICAoYXJlV2VEb25lWWV0KToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL3Jlc291cmNlcy9nbG9iYWwtZGF0YS5qczogQ29waWVkIGZyb20gTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9nbG9iYWwtZGF0YS5odG1sLgorICAgICAgICAo
dGVzdCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChjbGVhbkRhdGFiYXNlKToK
KyAgICAgICAgKG9wZW4yU3VjY2Vzcyk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9yZXNvdXJjZXMvaW5kZXhlcy5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9pbmRleGVzLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAg
ICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUu
cmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAoY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9y
ZSk6CisgICAgICAgIChjcmVhdGVJbmRleGVzKToKKyAgICAgICAgKHNldFZlcnNpb25Db21wbGV0
ZSk6CisgICAgICAgIChjaGVja0dldEtleSk6CisgICAgICAgIChjaGVja0dldC5yZXF1ZXN0Lm9u
c3VjY2Vzcyk6CisgICAgICAgIChjaGVja0dldCk6CisgICAgICAgICh0ZXN0R3JvdXAzLnJlcXVl
c3Qub25zdWNjZXNzKToKKyAgICAgICAgKHRlc3RHcm91cDMpOgorICAgICAgICAodGVzdEdyb3Vw
NC5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgICh0ZXN0R3JvdXA0KToKKyAgICAgICAgKHRl
c3RHcm91cDUucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwNSk6CisgICAg
ICAgICh0ZXN0R3JvdXA2LnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHRlc3RHcm91cDYp
OgorICAgICAgICAodGVzdEdyb3VwNy5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgICh0ZXN0
R3JvdXA3KToKKyAgICAgICAgKHRlc3RHcm91cDgucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAg
ICAodGVzdEdyb3VwOCk6CisgICAgICAgICh0ZXN0R3JvdXA5LnJlcXVlc3Qub25zdWNjZXNzKToK
KyAgICAgICAgKHRlc3RHcm91cDkpOgorICAgICAgICAodGVzdEdyb3VwMTAucmVxdWVzdC5vbnN1
Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwMTApOgorICAgICAgICAodGVzdEdyb3VwMTEucmVx
dWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwMTEpOgorICAgICAgICAodGVzdEdy
b3VwMTIucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwMTIpOgorICAgICAg
ICAodGVzdEdyb3VwMTMucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwMTMp
OgorICAgICAgICAodGVzdEdyb3VwMTQucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVz
dEdyb3VwMTQpOgorICAgICAgICAodGVzdEdyb3VwMTUucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAg
ICAgICAodGVzdEdyb3VwMTUpOgorICAgICAgICAodGVzdEdyb3VwMTYucmVxdWVzdC5vbnN1Y2Nl
c3MpOgorICAgICAgICAodGVzdEdyb3VwMTYpOgorICAgICAgICAodGVzdEdyb3VwMTcucmVxdWVz
dC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwMTcpOgorICAgICAgICAodGVzdEdyb3Vw
MTgucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwMTgpOgorICAgICAgICAo
dGVzdEdyb3VwMTkucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwMTkpOgor
ICAgICAgICAodGVzdEdyb3VwMjAucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdy
b3VwMjApOgorICAgICAgICAodGVzdEdyb3VwMjEucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAg
ICAodGVzdEdyb3VwMjEpOgorICAgICAgICAodGVzdEdyb3VwMjIucmVxdWVzdC5vbnN1Y2Nlc3Mp
OgorICAgICAgICAodGVzdEdyb3VwMjIpOgorICAgICAgICAodGVzdEdyb3VwMjQucmVxdWVzdC5v
bnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwMjQpOgorICAgICAgICAodGVzdEdyb3VwMjUu
cmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwMjUpOgorICAgICAgICAodGVz
dEdyb3VwMjcucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwMjcpOgorICAg
ICAgICAodGVzdEdyb3VwMjgucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3Vw
MjgpOgorICAgICAgICAodGVzdEdyb3VwMjkucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAo
dGVzdEdyb3VwMjkpOgorICAgICAgICAodGVzdEdyb3VwMzAucmVxdWVzdC5vbnN1Y2Nlc3MpOgor
ICAgICAgICAodGVzdEdyb3VwMzApOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEvcmVzb3VyY2VzL2tleS1yZXF1aXJlbWVudHMtZGVsZXRlLW51bGwta2V5LmpzOiBDb3BpZWQg
ZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVu
dHMtZGVsZXRlLW51bGwta2V5Lmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5T
dWNjZXNzKToKKyAgICAgICAgKGNsZWFuRGF0YWJhc2VBbmRDcmVhdGVPYmplY3RTdG9yZSk6Cisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMva2V5LXJlcXVpcmVt
ZW50cy1pbmxpbmUtYW5kLXBhc3NlZC5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWlyZW1lbnRzLWlubGluZS1hbmQtcGFzc2VkLmh0
bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGNs
ZWFuRGF0YWJhc2UpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3Vy
Y2VzL2tleS1yZXF1aXJlbWVudHMtcHV0LW5vLWtleS5qczogQ29waWVkIGZyb20gTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWlyZW1lbnRzLXB1dC1uby1rZXku
aHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAo
Y2xlYW5EYXRhYmFzZSk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNv
dXJjZXMva2V5LXJlcXVpcmVtZW50cy1wdXQtbnVsbC1rZXkuanM6IENvcGllZCBmcm9tIExheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEva2V5LXJlcXVpcmVtZW50cy1wdXQtbnVs
bC1rZXkuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAg
ICAgICAoY2xlYW5EYXRhYmFzZSk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9yZXNvdXJjZXMva2V5LXJlcXVpcmVtZW50cy5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWlyZW1lbnRzLmh0bWwuCisgICAgICAg
ICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGNsZWFuRGF0YWJhc2Up
OgorICAgICAgICAocG9zdEFkZCk6CisgICAgICAgIChwb3N0UHV0MSk6CisgICAgICAgIChwb3N0
UHV0Mik6CisgICAgICAgIChwb3N0UHV0Myk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIv
bW96aWxsYS9yZXNvdXJjZXMvb2JqZWN0LWN1cnNvcnMuanM6IENvcGllZCBmcm9tIExheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0LWN1cnNvcnMuaHRtbC4KKyAgICAg
ICAgKHRlc3QpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAoY2xlYW5EYXRhYmFz
ZSk6CisgICAgICAgIChwb3N0QWRkLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHBvc3RB
ZGQpOgorICAgICAgICAoc2V0dXBBdXRvSW5jcmVtZW50KToKKyAgICAgICAgKiBzdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9vYmplY3QtaWRlbnRpdHkuanM6IENvcGllZCBmcm9t
IExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0LWlkZW50aXR5Lmh0
bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGNy
ZWF0ZU9iamVjdFN0b3JlQW5kSW5kZXgpOgorICAgICAgICAodGVzdElkZW50aXR5U29tZU1vcmUp
OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL29iamVjdC1z
dG9yZS1pbmxpbmUtYXV0b2luY3JlbWVudC1rZXktYWRkZWQtb24tcHV0LmpzOiBDb3BpZWQgZnJv
bSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29iamVjdC1zdG9yZS1pbmxp
bmUtYXV0b2luY3JlbWVudC1rZXktYWRkZWQtb24tcHV0Lmh0bWwuCisgICAgICAgICh0ZXN0KToK
KyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKHNldHVwT2JqZWN0U3RvcmUpOgorICAg
ICAgICAoYWRkU3VjY2Vzcyk6CisgICAgICAgIChnZXRTdWNjZXNzKToKKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9vYmplY3Qtc3RvcmUtcmVtb3ZlLXZhbHVl
cy5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9v
YmplY3Qtc3RvcmUtcmVtb3ZlLXZhbHVlcy5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAg
IChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChzZXRWZXJzaW9uKToKKyAgICAgICAgKGNyZWF0ZU9i
amVjdFN0b3JlKToKKyAgICAgICAgKGdldFJlY29yZCk6CisgICAgICAgIChkZWxldGVSZWNvcmQp
OgorICAgICAgICAoZ2V0UmVjb3JkQWdhaW4pOgorICAgICAgICAoZmluYWxDaGVjayk6CisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvb2JqZWN0c3RvcmVuYW1l
cy5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9v
YmplY3RzdG9yZW5hbWVzLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNj
ZXNzKToKKyAgICAgICAgKGNsZWFuRGF0YWJhc2UpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvcmVzb3VyY2VzL29kZC1yZXN1bHQtb3JkZXIuanM6IENvcGllZCBmcm9tIExh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2RkLXJlc3VsdC1vcmRlci5odG1s
LgorICAgICAgICAodGVzdCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChzZXR1
cE9iamVjdFN0b3JlKToKKyAgICAgICAgKGFkZFJlY29yZCk6CisgICAgICAgIChhZGRTdWNjZXNz
KToKKyAgICAgICAgKGdldFN1Y2Nlc3MpOgorICAgICAgICAoZGVsZXRlUmVjb3JkKToKKyAgICAg
ICAgKGRlbGV0ZVN1Y2Nlc3MpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEv
cmVzb3VyY2VzL29wZW4tZGF0YWJhc2UtbnVsbC1uYW1lLmpzOiBBZGRlZC4KKyAgICAgICAgKHRl
c3QpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L21vemlsbGEvcmVzb3VyY2VzL3B1dC1nZXQtdmFsdWVzLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3B1dC1nZXQtdmFsdWVzLmh0bWwuCisgICAg
ICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGNsZWFuRGF0YWJh
c2UpOgorICAgICAgICAocG9zdEFkZCk6CisgICAgICAgIChwb3N0R2V0KToKKyAgICAgICAgKHBv
c3RBZGRJbnQpOgorICAgICAgICAocG9zdEdldEludCk6CisgICAgICAgIChwb3N0QWRkQXV0b0lu
Y3JlbWVudCk6CisgICAgICAgIChwb3N0R2V0QXV0b0luY3JlbWVudCk6CisgICAgICAgIChwb3N0
QWRkSW50QXV0b0luY3JlbWVudCk6CisgICAgICAgIChwb3N0R2V0SW50QXV0b0luY3JlbWVudCk6
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvcmVhZG9ubHkt
dHJhbnNhY3Rpb25zLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL3JlYWRvbmx5LXRyYW5zYWN0aW9ucy5odG1sLgorICAgICAgICAodGVzdCk6Cisg
ICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChjbGVhbkRhdGFiYXNlKToKKyAgICAgICAg
KHNldFZlcnNpb25Db21wbGV0ZSk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9yZXNvdXJjZXMvcmVhZHdyaXRlLXRyYW5zYWN0aW9ucy5qczogQ29waWVkIGZyb20gTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZWFkd3JpdGUtdHJhbnNhY3Rpb25zLmh0
bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGNs
ZWFuRGF0YWJhc2UpOgorICAgICAgICAoc2V0VmVyc2lvbkNvbXBsZXRlKToKKyAgICAgICAgKHBv
c3RBZGQpOgorICAgICAgICAocG9zdEFkZDIpOgorICAgICAgICAocG9zdFB1dCk6CisgICAgICAg
IChwb3N0UHV0Mik6CisgICAgICAgIChwb3N0UHV0Myk6CisgICAgICAgIChwb3N0UHV0NCk6Cisg
ICAgICAgIChwb3N0RGVsZXRlKToKKyAgICAgICAgKHBvc3REZWxldGUyKToKKyAgICAgICAgKiBz
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9yZWFkeVN0YXRlLmpzOiBDb3BpZWQg
ZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3JlYWR5U3RhdGUuaHRt
bC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAoc2V0
dXBPYmplY3RTdG9yZSk6CisgICAgICAgIChnZXRSZWNvcmQpOgorICAgICAgICAoZmluYWxDaGVj
ayk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvcmVtb3Zl
LWluZGV4LmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL3JlbW92ZS1pbmRleC5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChvcGVuU3Vj
Y2Vzcyk6CisgICAgICAgIChjcmVhdGVBbmREZWxldGVJbmRleCk6CisgICAgICAgICogc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvcmVtb3ZlLW9iamVjdHN0b3JlLmpzOiBDb3Bp
ZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3JlbW92ZS1vYmpl
Y3RzdG9yZS5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6Cisg
ICAgICAgIChjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlLnJlcXVlc3Qub25zdWNjZXNzKToK
KyAgICAgICAgKGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoY2hlY2tP
YmplY3RTdG9yZSk6CisgICAgICAgIChwb3N0U2V0VmVyc2lvbjIucmVxdWVzdC5vbnN1Y2Nlc3Mp
OgorICAgICAgICAocG9zdFNldFZlcnNpb24yKToKKyAgICAgICAgKGRlbGV0ZVNlY29uZE9iamVj
dFN0b3JlKToKKyAgICAgICAgKHNldFZlcnNpb24zKToKKyAgICAgICAgKHBvc3RTZXRWZXJzaW9u
Myk6CisgICAgICAgIChkZWxldGVUaGlyZE9iamVjdFN0b3JlKToKKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy92ZXJzaW9uY2hhbmdlLWFib3J0LmpzOiBDb3Bp
ZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3ZlcnNpb25jaGFu
Z2UtYWJvcnQuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgor
ICAgICAgICAoY2xlYW5EYXRhYmFzZSk6CisgICAgICAgIChwb3N0QWJvcnQpOgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL3ZlcnNpb25jaGFuZ2UuanM6IENv
cGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvdmVyc2lvbmNo
YW5nZS5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChvcGVuU3VjY2Vzcy5kYjEub252
ZXJzaW9uY2hhbmdlKToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKG9wZW5TdWNj
ZXNzMi5kYjIub252ZXJzaW9uY2hhbmdlKToKKyAgICAgICAgKG9wZW5TdWNjZXNzMi5yZXF1ZXN0
Lm9uYmxvY2tlZCk6CisgICAgICAgIChvcGVuU3VjY2VzczIpOgorICAgICAgICAocG9zdFNldFZl
cnNpb24pOgorICAgICAgICAob3BlblN1Y2Nlc3MzLnJlcXVlc3Qub25ibG9ja2VkKToKKyAgICAg
ICAgKG9wZW5TdWNjZXNzMyk6CisgICAgICAgIChwb3N0U2V0VmVyc2lvbjIpOgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvdmVyc2lvbmNoYW5nZS1hYm9ydC5odG1sOgorICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvdmVyc2lvbmNoYW5nZS5odG1sOgorICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL211dGF0aW5nLWN1cnNvci5odG1sOgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdFN0b3JlLXJlcXVpcmVkLWFyZ3VtZW50cy5odG1sOgor
ICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWF1dG9pbmNyZW1lbnQuaHRt
bDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jbGVhci5odG1sOgor
ICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWNvdW50Lmh0bWw6CisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY3Vyc29yLmh0bWw6CisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtcmVtb3Zlb2JqZWN0c3RvcmUuaHRtbDoK
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9vZGQtc3RyaW5ncy5odG1sOgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL29wZW4tY2xvc2UtdmVyc2lvbi5odG1sOgorICAgICAgICAqIHN0
b3JhZ2UvaW5kZXhlZGRiL29wZW4tY3Vyc29yLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRl
eGVkZGIvb3Blbi1kdXJpbmctdHJhbnNhY3Rpb24uaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2lu
ZGV4ZWRkYi9wcmVmZXRjaC1idWdmaXgtMTA4MDcxLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9p
bmRleGVkZGIvcXVldWVkLWNvbW1hbmRzLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVk
ZGIvcmVhZG9ubHktcHJvcGVydGllcy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L3JlYWRvbmx5Lmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVxdWVzdC1ldmVu
dC1wcm9wYWdhdGlvbi5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9jb25zdGFudHMuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2NvbnN0YW50cy5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL2NyZWF0ZS1hbmQtcmVtb3ZlLW9iamVjdC1zdG9yZS5qczogQ29waWVk
IGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlLWFuZC1yZW1vdmUtb2Jq
ZWN0LXN0b3JlLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToK
KyAgICAgICAgKHRlc3RDcmVhdGVBbmRSZW1vdmUpOgorICAgICAgICAoY2xlYW5EYXRhYmFzZSk6
CisgICAgICAgIChzZXRWZXJzaW9uQ29tcGxldGUpOgorICAgICAgICAodHJ5T25jZU1vcmUpOgor
ICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jcmVhdGUtb2JqZWN0LXN0b3Jl
LW9wdGlvbnMuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Ny
ZWF0ZS1vYmplY3Qtc3RvcmUtb3B0aW9ucy5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAg
IChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChjbGVhbkRhdGFiYXNlKToKKyAgICAgICAgKHNldFZl
cnNpb25Db21wbGV0ZSk6CisgICAgICAgIChwdXRCKToKKyAgICAgICAgKGdldEEpOgorICAgICAg
ICAoZ2V0Qik6CisgICAgICAgIChjaGVja0IpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9jcmVhdGVPYmplY3RTdG9yZS1uYW1lLWFyZ3VtZW50LXJlcXVpcmVkLmpzOiBD
b3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jcmVhdGVPYmplY3RTdG9y
ZS1uYW1lLWFyZ3VtZW50LXJlcXVpcmVkLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAg
KG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUpOgor
ICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jcmVhdGVPYmplY3RTdG9yZS1u
dWxsLW5hbWUuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Ny
ZWF0ZU9iamVjdFN0b3JlLW51bGwtbmFtZS5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAg
IChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKToK
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWNvbnRpbnVlLmpz
OiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItY29udGlu
dWUuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3BlbkRhdGFiYXNlKToKKyAgICAg
ICAgKHNldFZlcnNpb24pOgorICAgICAgICAoZGVsZXRlRXhpc3RpbmcpOgorICAgICAgICAoYWRk
RGF0YSk6CisgICAgICAgIChhc2NlbmRpbmdUZXN0KToKKyAgICAgICAgKGFzY2VuZGluZ0NhbGxi
YWNrKToKKyAgICAgICAgKGRlc2NlbmRpbmdUZXN0KToKKyAgICAgICAgKGRlc2NlbmRpbmdDYWxs
YmFjayk6CisgICAgICAgIChhc2NlbmRpbmdFcnJvclRlc3RMZXNzVGhhbi5yZXF1ZXN0Lm9uc3Vj
Y2Vzcyk6CisgICAgICAgIChhc2NlbmRpbmdFcnJvclRlc3RMZXNzVGhhbik6CisgICAgICAgIChh
c2NlbmRpbmdFcnJvclRlc3RFcXVhbC5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgIChhc2Nl
bmRpbmdFcnJvclRlc3RFcXVhbCk6CisgICAgICAgIChkZXNjZW5kaW5nRXJyb3JUZXN0R3JlYXRl
clRoYW4ucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAoZGVzY2VuZGluZ0Vycm9yVGVzdEdy
ZWF0ZXJUaGFuKToKKyAgICAgICAgKGRlc2NlbmRpbmdFcnJvclRlc3RFcXVhbC5yZXF1ZXN0Lm9u
c3VjY2Vzcyk6CisgICAgICAgIChkZXNjZW5kaW5nRXJyb3JUZXN0RXF1YWwpOgorICAgICAgICAo
b25UcmFuc2FjdGlvbkNvbXBsZXRlKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvY3Vyc29yLWRlbGV0ZS5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvY3Vyc29yLWRlbGV0ZS5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChv
cGVuU3VjY2Vzcyk6CisgICAgICAgIChzZXRWZXJzaW9uU3VjY2Vzcyk6CisgICAgICAgIChvcGVu
Q3Vyc29yKToKKyAgICAgICAgKGN1cnNvclN1Y2Nlc3MpOgorICAgICAgICAoY3Vyc29yRW1wdHkp
OgorICAgICAgICAoYWRkT2JqZWN0KToKKyAgICAgICAgKG9wZW5DdXJzb3IyKToKKyAgICAgICAg
KGRlbGV0ZU9iamVjdCk6CisgICAgICAgICh2ZXJpZnlPYmplY3REZWxldGVkKToKKyAgICAgICAg
KiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWluY29uc2lzdGVuY3kuanM6IENv
cGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1pbmNvbnNpc3Rl
bmN5Lmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAg
ICAgKHNldFZlcnNpb25TdWNjZXNzKToKKyAgICAgICAgKG9wZW5CYXNpY0N1cnNvcik6CisgICAg
ICAgIChjaGVja0N1cnNvcik6CisgICAgICAgICh0cmFuc2FjdGlvbkNvbXBsZXRlKToKKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWluZGV4LWRlbGV0ZS5qczog
Q29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWluZGV4LWRl
bGV0ZS5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAg
ICAgIChzZXRWZXJzaW9uU3VjY2Vzcyk6CisgICAgICAgIChvcGVuQ3Vyc29yKToKKyAgICAgICAg
KGN1cnNvclN1Y2Nlc3MpOgorICAgICAgICAoY3Vyc29yRW1wdHkpOgorICAgICAgICAoYWRkT2Jq
ZWN0KToKKyAgICAgICAgKG9wZW5DdXJzb3IyKToKKyAgICAgICAgKGRlbGV0ZU9iamVjdCk6Cisg
ICAgICAgICh2ZXJpZnlPYmplY3REZWxldGVkKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvY3Vyc29yLWtleS1vcmRlci5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWtleS1vcmRlci5odG1sLgorICAgICAgICAodGVzdCk6
CisgICAgICAgIChwcmVwYXJlRGF0YWJhc2Uub3BlbnJlcS5vbnN1Y2Nlc3MudmVycmVxLm9uc3Vj
Y2Vzcyk6CisgICAgICAgIChwcmVwYXJlRGF0YWJhc2Uub3BlbnJlcS5vbnN1Y2Nlc3MpOgorICAg
ICAgICAocHJlcGFyZURhdGFiYXNlKToKKyAgICAgICAgKGNvbXBhcmUpOgorICAgICAgICAoY2hl
Y2tTdG9yZS5jdXJyZXEub25zdWNjZXNzLmdldHJlcS5vbnN1Y2Nlc3MpOgorICAgICAgICAoY2hl
Y2tTdG9yZS5jdXJyZXEub25zdWNjZXNzKToKKyAgICAgICAgKGNoZWNrU3RvcmUpOgorICAgICAg
ICAoZmluaXNoVXApOgorICAgICAgICAodGVzdEtleUNvbXBhcmUpOgorICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItcHJpbWFyeS1rZXktb3JkZXIuanM6IENvcGll
ZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1wcmltYXJ5LWtleS1v
cmRlci5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChwcmVwYXJlRGF0YWJhc2Uub3Bl
blJlcXVlc3Qub25zdWNjZXNzLnZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAg
ICAgIChwcmVwYXJlRGF0YWJhc2Uub3BlblJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHBy
ZXBhcmVEYXRhYmFzZSk6CisgICAgICAgIChwb3B1bGF0ZVN0b3JlKToKKyAgICAgICAgKGNoZWNr
U3RvcmUuY3Vyc29yUmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAoY2hlY2tTdG9yZSk6Cisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1yZXZlcnNlLWJ1Zy5q
czogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXJldmVy
c2UtYnVnLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKHByZXBhcmVEYXRhYmFzZS5v
cGVucmVxLm9uc3VjY2Vzcy52ZXJyZXEub25zdWNjZXNzKToKKyAgICAgICAgKHByZXBhcmVEYXRh
YmFzZS5vcGVucmVxLm9uc3VjY2Vzcyk6CisgICAgICAgIChwcmVwYXJlRGF0YWJhc2UpOgorICAg
ICAgICAocG9wdWxhdGVTdG9yZSk6CisgICAgICAgICh0ZXN0Q3Vyc29yLnRlc3RGdW5jdGlvbik6
CisgICAgICAgICh0ZXN0Q3Vyc29yKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvY3Vyc29yLXNraXAtZGVsZXRlZC5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvY3Vyc29yLXNraXAtZGVsZXRlZC5odG1sLgorICAgICAgICAodGVzdCk6
CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChzZXRWZXJzaW9uU3VjY2Vzcyk6Cisg
ICAgICAgICh2YXIuc2lsZW50RXJyb3JIYW5kbGVyKToKKyAgICAgICAgKHJlc2V0T2JqZWN0U3Rv
cmUuY2FsbGJhY2spOgorICAgICAgICAocmVzZXRPYmplY3RTdG9yZSk6CisgICAgICAgIChjb250
YWlucyk6CisgICAgICAgICh0ZXN0Q3Vyc29yLnJlcXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25z
dWNjZXNzKToKKyAgICAgICAgKHRlc3RDdXJzb3IucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAg
ICAodGVzdEN1cnNvcik6CisgICAgICAgIChiYXNpY0N1cnNvclRlc3QpOgorICAgICAgICAocmV2
ZXJzZUN1cnNvclRlc3QpOgorICAgICAgICAoaW5kZXhDdXJzb3JUZXN0KToKKyAgICAgICAgKHRy
YW5zYWN0aW9uQ29tcGxldGUpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9jdXJzb3ItdXBkYXRlLXZhbHVlLWFyZ3VtZW50LXJlcXVpcmVkLmpzOiBDb3BpZWQgZnJvbSBM
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItdXBkYXRlLXZhbHVlLWFyZ3VtZW50
LXJlcXVpcmVkLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToK
KyAgICAgICAgKHRlc3RHcm91cDEucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdy
b3VwMSk6CisgICAgICAgICh0ZXN0R3JvdXAyLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAg
KHRlc3RHcm91cDIpOgorICAgICAgICAodGVzdEdyb3VwMy5yZXF1ZXN0Lm9uc3VjY2Vzcyk6Cisg
ICAgICAgICh0ZXN0R3JvdXAzKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvY3Vyc29yLXVwZGF0ZS5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvY3Vyc29yLXVwZGF0ZS5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChvcGVu
U3VjY2Vzcyk6CisgICAgICAgIChzZXRWZXJzaW9uU3VjY2Vzcyk6CisgICAgICAgIChvcGVuQmFz
aWNDdXJzb3IpOgorICAgICAgICAoYmFzaWNVcGRhdGVDdXJzb3IucmVxdWVzdC5vbnN1Y2Nlc3Mp
OgorICAgICAgICAoYmFzaWNVcGRhdGVDdXJzb3IpOgorICAgICAgICAoYmFzaWNDaGVja0N1cnNv
cik6CisgICAgICAgIChhdXRvSW5jcmVtZW50VXBkYXRlQ3Vyc29yLnJlcXVlc3Qub25zdWNjZXNz
KToKKyAgICAgICAgKGF1dG9JbmNyZW1lbnRVcGRhdGVDdXJzb3IpOgorICAgICAgICAoYXV0b0lu
Y3JlbWVudENoZWNrQ3Vyc29yKToKKyAgICAgICAgKGtleVBhdGhVcGRhdGVDdXJzb3IucmVxdWVz
dC5vbnN1Y2Nlc3MpOgorICAgICAgICAoa2V5UGF0aFVwZGF0ZUN1cnNvcik6CisgICAgICAgIChr
ZXlQYXRoQ2hlY2tDdXJzb3IpOgorICAgICAgICAoa2V5Q3Vyc29yKToKKyAgICAgICAgKHRyYW5z
YWN0aW9uQ29tcGxldGUpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9k
YXRhLWNvcnJ1cHRpb24uanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2RhdGEtY29ycnVwdGlvbi5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChvcGVu
U3VjY2Vzcyk6CisgICAgICAgIChzZXRWZXJzaW9uU3VjY2Vzcyk6CisgICAgICAgIChhZGREYXRh
KToKKyAgICAgICAgKGdldERhdGEpOgorICAgICAgICAoZG9DaGVjayk6CisgICAgICAgICogc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGFiYXNlLWJhc2ljcy5qczogQ29waWVkIGZyb20g
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtYmFzaWNzLmh0bWwuCisgICAg
ICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKHNldFZlcnNpb25T
dWNjZXNzKToKKyAgICAgICAgKHNldFZlcnNpb25BZ2Fpbik6CisgICAgICAgIChjcmVhdGVPYmpl
Y3RTdG9yZSk6CisgICAgICAgIChjaGVja09iamVjdFN0b3JlKToKKyAgICAgICAgKGNvbW1pdEFu
ZENvbnRpbnVlKToKKyAgICAgICAgKHRlc3RTZXRWZXJzaW9uQWJvcnQpOgorICAgICAgICAoY3Jl
YXRlQW5vdGhlck9iamVjdFN0b3JlKToKKyAgICAgICAgKGNoZWNrTWV0YWRhdGEpOgorICAgICAg
ICAodGVzdENsb3NlKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGF0
YWJhc2UtbmFtZS11bmRlZmluZWQuanM6IEFkZGVkLgorICAgICAgICAodGVzdCk6CisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGFiYXNlLW9kZC1uYW1lcy5qczogQ29w
aWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2Utb2RkLW5hbWVz
Lmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5OZXh0RGF0YWJhc2UpOgorICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kYXRhYmFzZS1xdW90YS5qczogQ29w
aWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtcXVvdGEuaHRt
bC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAoc2V0
VmVyc2lvblN1Y2Nlc3MpOgorICAgICAgICAoY2hlY2tPYmplY3RTdG9yZSk6CisgICAgICAgIChj
aGVja1F1b3RhRW5mb3JjaW5nKToKKyAgICAgICAgKGFkZERhdGEpOgorICAgICAgICAobG9nRXJy
b3IpOgorICAgICAgICAodGVzdENvbXBsZXRlKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvZGVsZXRlLWNsb3NlZC1kYXRhYmFzZS1vYmplY3QuanM6IENvcGllZCBmcm9t
IExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZS1jbG9zZWQtZGF0YWJhc2Utb2Jq
ZWN0Lmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5EQkNvbm5lY3Rpb24pOgor
ICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAob3BlblN1Y2Nlc3MyKToKKyAgICAgICAg
KHNldFZlcnNpb24pOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kZWxl
dGUtcmFuZ2UuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Rl
bGV0ZS1yYW5nZS5odG1sLgorICAgICAgICAodGVzdC5yZXF1ZXN0Lm9uc3VjY2Vzcy5yZXF1ZXN0
Lm9uc3VjY2Vzcy5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgICh0ZXN0LnJlcXVlc3Qub25z
dWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHRlc3QucmVxdWVzdC5vbnN1Y2Nl
c3MpOgorICAgICAgICAodGVzdCk6CisgICAgICAgIChjaGVja0tleXMucmVxdWVzdC5vbnN1Y2Nl
c3MpOgorICAgICAgICAoY2hlY2tLZXlzKToKKyAgICAgICAgKHJ1blRlc3RzLm5leHRUZXN0KToK
KyAgICAgICAgKHJ1blRlc3RzKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvZGVsZXRlSW5kZXguanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2RlbGV0ZUluZGV4Lmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNj
ZXNzKToKKyAgICAgICAgKHR3aWRkbGVJbmRleGVzKToKKyAgICAgICAgKHBvc3RUd2lkZGxpbmcp
OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kZWxldGVPYmplY3RTdG9y
ZS1uYW1lLWFyZ3VtZW50LXJlcXVpcmVkLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9kZWxldGVPYmplY3RTdG9yZS1uYW1lLWFyZ3VtZW50LXJlcXVpcmVkLmh0
bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGNy
ZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9kZWxldGVPYmplY3RTdG9yZS1udWxsLW5hbWUuanM6IENvcGllZCBmcm9tIExh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZU9iamVjdFN0b3JlLW51bGwtbmFtZS5o
dG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChj
cmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvZHVwbGljYXRlcy5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvZHVwbGljYXRlcy5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChz
ZXRWZXJzaW9uKToKKyAgICAgICAgKGRlbGV0ZUV4aXN0aW5nKToKKyAgICAgICAgKGFkZERhdGEp
OgorICAgICAgICAoYWRkTW9yZSk6CisgICAgICAgIChnZXREYXRhKToKKyAgICAgICAgKGdldE9i
amVjdERhdGEpOgorICAgICAgICAoZ2V0RGF0YUZhaWwpOgorICAgICAgICAoZ2V0T2JqZWN0RGF0
YUZhaWwpOgorICAgICAgICAob3BlbktleUN1cnNvcik6CisgICAgICAgIChjdXJzb3IxQ29udGlu
dWUpOgorICAgICAgICAoY3Vyc29yMUNvbnRpbnVlMik6CisgICAgICAgIChvcGVuT2JqZWN0Q3Vy
c29yKToKKyAgICAgICAgKGN1cnNvcjJDb250aW51ZSk6CisgICAgICAgIChjdXJzb3IyQ29udGlu
dWUyKToKKyAgICAgICAgKGxhc3QpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9lcnJvci1jYXVzZXMtYWJvcnQtYnktZGVmYXVsdC5qczogQ29waWVkIGZyb20gTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZXJyb3ItY2F1c2VzLWFib3J0LWJ5LWRlZmF1bHQuaHRt
bC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAoc2V0VmVyc2lvbik6CisgICAgICAgIChkZWxl
dGVFeGlzdGluZyk6CisgICAgICAgIChhZGREYXRhKToKKyAgICAgICAgKGFkZE1vcmUpOgorICAg
ICAgICAocHJldmVudFRoZURlZmF1bHQpOgorICAgICAgICAodHJhbnNhY3Rpb25Db21wbGV0ZWQp
OgorICAgICAgICAoYWxsb3dEZWZhdWx0KToKKyAgICAgICAgKHRyYW5zYWN0aW9uQWJvcnRlZDEp
OgorICAgICAgICAodHJhbnNhY3Rpb25BYm9ydGVkMik6CisgICAgICAgICogc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL2V4Y2VwdGlvbi1pbi1ldmVudC1hYm9ydHMuanM6IENvcGllZCBmcm9t
IExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2V4Y2VwdGlvbi1pbi1ldmVudC1hYm9ydHMu
aHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAoc2V0VmVyc2lvbik6CisgICAgICAgIChk
ZWxldGVFeGlzdGluZyk6CisgICAgICAgIChzdGFydFRlc3QpOgorICAgICAgICAoY2F1c2VFeGNl
cHRpb24pOgorICAgICAgICAodHJhbnNhY3Rpb25BYm9ydGVkMSk6CisgICAgICAgICh0cmFuc2Fj
dGlvbkFib3J0ZWQyKToKKyAgICAgICAgKHRocm93QW5kQ2F0Y2gpOgorICAgICAgICAodHJhbnNh
Y3Rpb25Db21wbGV0ZWQxLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHRyYW5zYWN0aW9u
Q29tcGxldGVkMSk6CisgICAgICAgICh0cmFuc2FjdGlvbkNvbXBsZXRlZDIpOgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9mYWN0b3J5LWJhc2ljcy5qczogQ29waWVkIGZy
b20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZmFjdG9yeS1iYXNpY3MuaHRtbC4KKyAg
ICAgICAgKHRlc3QpOgorICAgICAgICAoZ2V0RGF0YWJhc2VOYW1lc1N1Y2Nlc3MxKToKKyAgICAg
ICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGdldERhdGFiYXNlTmFtZXNTdWNjZXNzMik6Cisg
ICAgICAgIChkZWxldGVEYXRhYmFzZVN1Y2Nlc3MpOgorICAgICAgICAoZ2V0RGF0YWJhc2VOYW1l
c1N1Y2Nlc3MzKToKKyAgICAgICAgKGRlbGV0ZURhdGFiYXNlU3VjY2VzczIpOgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9mYWN0b3J5LWNtcC5qczogQ29waWVkIGZyb20g
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZmFjdG9yeS1jbXAuaHRtbC4KKyAgICAgICAg
KHRlc3QpOgorICAgICAgICAodGVzdFZhbGlkS2V5cyk6CisgICAgICAgICh0ZXN0SW52YWxpZEtl
eXMpOgorICAgICAgICAodGVzdElkZW50aWNhbEtleXMpOgorICAgICAgICAqIHN0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9mYWN0b3J5LWRlbGV0ZWRhdGFiYXNlLWludGVyYWN0aW9ucy5qczog
Q29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZmFjdG9yeS1kZWxldGVk
YXRhYmFzZS1pbnRlcmFjdGlvbnMuaHRtbC4KKyAgICAgICAgKENvbm5lY3Rpb24udGhpcy5vcGVu
LnJlcS5vbnN1Y2Nlc3MudGhhdC5oYW5kbGUub252ZXJzaW9uY2hhbmdlKToKKyAgICAgICAgKENv
bm5lY3Rpb24udGhpcy5vcGVuLnJlcS5vbnN1Y2Nlc3MpOgorICAgICAgICAoQ29ubmVjdGlvbi50
aGlzLm9wZW4pOgorICAgICAgICAoQ29ubmVjdGlvbi50aGlzLmNsb3NlKToKKyAgICAgICAgKENv
bm5lY3Rpb24udGhpcy5zZXRWZXJzaW9uLnJlcS5vbmFib3J0KToKKyAgICAgICAgKENvbm5lY3Rp
b24udGhpcy5zZXRWZXJzaW9uLnJlcS5vbmJsb2NrZWQpOgorICAgICAgICAoQ29ubmVjdGlvbi50
aGlzLnNldFZlcnNpb24ucmVxLm9uc3VjY2Vzcy5kb19hc3luY19wdXRzLnJlcS5vbnN1Y2Nlc3Mp
OgorICAgICAgICAoQ29ubmVjdGlvbi50aGlzLnNldFZlcnNpb24ucmVxLm9uc3VjY2Vzcy5kb19h
c3luY19wdXRzKToKKyAgICAgICAgKENvbm5lY3Rpb24udGhpcy5zZXRWZXJzaW9uLnJlcS5vbnN1
Y2Nlc3MpOgorICAgICAgICAoQ29ubmVjdGlvbi50aGlzLnNldFZlcnNpb24ucmVxLm9uZXJyb3Ip
OgorICAgICAgICAoQ29ubmVjdGlvbi50aGlzLnNldFZlcnNpb24pOgorICAgICAgICAoQ29ubmVj
dGlvbik6CisgICAgICAgIChkZWxldGVEYXRhYmFzZS5yZXEub25zdWNjZXNzKToKKyAgICAgICAg
KGRlbGV0ZURhdGFiYXNlLnJlcS5vbmVycm9yKToKKyAgICAgICAgKGRlbGV0ZURhdGFiYXNlLnJl
cS5vbmJsb2NrZWQpOgorICAgICAgICAoZGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAocnVuU3Rl
cHMpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICh0ZXN0MS5ydW5TdGVwcy4pOgorICAgICAg
ICAodGVzdDEpOgorICAgICAgICAodGVzdDIucnVuU3RlcHMuKToKKyAgICAgICAgKHRlc3QyKToK
KyAgICAgICAgKHRlc3QzLnJ1blN0ZXBzLik6CisgICAgICAgICh0ZXN0Myk6CisgICAgICAgICog
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ZhY3RvcnktZGVsZXRlZGF0YWJhc2UuanM6IENv
cGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ZhY3RvcnktZGVsZXRlZGF0
YWJhc2UuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAoc3RhcnRTZXRWZXJzaW9uKToK
KyAgICAgICAgKGRlbGV0ZUV4aXN0aW5nKToKKyAgICAgICAgKGdldFZhbHVlKToKKyAgICAgICAg
KGFkZEluZGV4KToKKyAgICAgICAgKGRlbGV0ZURhdGFiYXNlLmRiLm9udmVyc2lvbmNoYW5nZSk6
CisgICAgICAgIChkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChyZW9wZW5EYXRhYmFzZSk6Cisg
ICAgICAgIChzdGFydFNldFZlcnNpb25BZ2Fpbik6CisgICAgICAgICh2ZXJpZnlOb3RGb3VuZCk6
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4LWNvdW50LmpzOiBD
b3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1jb3VudC5odG1s
LgorICAgICAgICAodGVzdC5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgICh0ZXN0KToKKyAg
ICAgICAgKHByZXBhcmVEYXRhYmFzZSk6CisgICAgICAgICh2ZXJpZnlDb3VudC5yZXF1ZXN0Lm9u
c3VjY2Vzcyk6CisgICAgICAgICh2ZXJpZnlDb3VudCk6CisgICAgICAgICh2ZXJpZnlDb3VudFdp
dGhSYW5nZS5uZXh0VGVzdC5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgICh2ZXJpZnlDb3Vu
dFdpdGhSYW5nZS5uZXh0VGVzdCk6CisgICAgICAgICh2ZXJpZnlDb3VudFdpdGhSYW5nZSk6Cisg
ICAgICAgICh2ZXJpZnlDb3VudFdpdGhLZXkubmV4dFRlc3QucmVxdWVzdC5vbnN1Y2Nlc3MpOgor
ICAgICAgICAodmVyaWZ5Q291bnRXaXRoS2V5Lm5leHRUZXN0KToKKyAgICAgICAgKHZlcmlmeUNv
dW50V2l0aEtleSk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4
LWN1cnNvci5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5k
ZXgtY3Vyc29yLmh0bWwuCisgICAgICAgIChvcGVuRGF0YWJhc2UpOgorICAgICAgICAoc2V0VmVy
c2lvbik6CisgICAgICAgIChkZWxldGVFeGlzdGluZyk6CisgICAgICAgIChhZGREYXRhKToKKyAg
ICAgICAgKHNjaGVkdWxlVGVzdHMpOgorICAgICAgICAocnVuTmV4dFRlc3QpOgorICAgICAgICAo
dGVzdFdpdGhpbkJvdW5kcyk6CisgICAgICAgIChjdXJzb3JJdGVyYXRpb24pOgorICAgICAgICAo
dGVzdE51bGxLZXlSYW5nZSk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L2luZGV4LWdldC1rZXktYXJndW1lbnQtcmVxdWlyZWQuanM6IENvcGllZCBmcm9tIExheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWdldC1rZXktYXJndW1lbnQtcmVxdWlyZWQuaHRt
bC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAoY3Jl
YXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL2luZGV4LW11bHRpZW50cnkuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2luZGV4LW11bHRpZW50cnkuaHRtbC4KKyAgICAgICAgKHRlc3QucmVx
dWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdCk6CisgICAgICAgIChwcmVwYXJlRGF0YWJh
c2UpOgorICAgICAgICAoYWRkRGF0YS50cmFuc2FjdGlvbi5vbmNvbXBsZXRlKToKKyAgICAgICAg
KGFkZERhdGEpOgorICAgICAgICAodmVyaWZ5SW5kZXhlcy5yZXF1ZXN0Lm9uc3VjY2Vzcyk6Cisg
ICAgICAgICh2ZXJpZnlJbmRleGVzKToKKyAgICAgICAgKHZlcmlmeVVuaXF1ZUNvbnN0cmFpbnQu
dHJhbnNhY3Rpb24ub25hYm9ydCk6CisgICAgICAgICh2ZXJpZnlVbmlxdWVDb25zdHJhaW50LnJl
cXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25lcnJvcik6CisgICAg
ICAgICh2ZXJpZnlVbmlxdWVDb25zdHJhaW50LnJlcXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25z
dWNjZXNzKToKKyAgICAgICAgKHZlcmlmeVVuaXF1ZUNvbnN0cmFpbnQucmVxdWVzdC5vbnN1Y2Nl
c3MpOgorICAgICAgICAodmVyaWZ5VW5pcXVlQ29uc3RyYWludCk6CisgICAgICAgIChjcmVhdGVJ
bmRleE9uU3RvcmVXaXRoRGF0YS5yZXF1ZXN0Lm9uc3VjY2Vzcy50cmFucy5vbmNvbXBsZXRlKToK
KyAgICAgICAgKGNyZWF0ZUluZGV4T25TdG9yZVdpdGhEYXRhLnJlcXVlc3Qub25zdWNjZXNzKToK
KyAgICAgICAgKGNyZWF0ZUluZGV4T25TdG9yZVdpdGhEYXRhKToKKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvaW5kZXgtcG9wdWxhdGlvbi5qczogQ29waWVkIGZyb20gTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtcG9wdWxhdGlvbi5odG1sLgorICAgICAg
ICAodGVzdCk6CisgICAgICAgIChkZWxldGVTdWNjZXNzKToKKyAgICAgICAgKGRvU2V0VmVyc2lv
bjEpOgorICAgICAgICAoc2V0VmVyc2lvbjEucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAo
c2V0VmVyc2lvbjEpOgorICAgICAgICAoZG9TZXRWZXJzaW9uMik6CisgICAgICAgIChzZXRWZXJz
aW9uMik6CisgICAgICAgIChzZXRWZXJzaW9uMkFib3J0KToKKyAgICAgICAgKiBzdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvaW5kZXgtdW5pcXVlLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC11bmlxdWUuaHRtbC4KKyAgICAgICAgKHRlc3QpOgor
ICAgICAgICAoc2V0VmVyc2lvbik6CisgICAgICAgIChkZWxldGVFeGlzdGluZyk6CisgICAgICAg
IChzZXRWZXJzaW9uQ29tcGxldGVkKToKKyAgICAgICAgKGFkZE1vcmVEYXRhKToKKyAgICAgICAg
KGFkZE1vcmVEYXRhRmFpbGVkKToKKyAgICAgICAgKGNoYW5nZURhdGFTdWNjZXNzKToKKyAgICAg
ICAgKGN1cnNvclN1Y2Nlc3MpOgorICAgICAgICAoa2V5Q3Vyc29yU3VjY2Vzcyk6CisgICAgICAg
IChhZGRNb3JlRGF0YVN1Y2Nlcyk6CisgICAgICAgIChkZWxldGVTdWNjZXNzKToKKyAgICAgICAg
KGZpbmFsQWRkU3VjY2Vzcyk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L2ludmFsaWQta2V5cy5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvaW52YWxpZC1rZXlzLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNj
ZXNzKToKKyAgICAgICAgKHRlc3RHcm91cDEpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9rZXktZ2VuZXJhdG9yLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9rZXktZ2VuZXJhdG9yLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAg
ICAgKHJ1blRlc3RzLm5leHRUZXN0LnJlcXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNz
LnJlcXVlc3Qub25zdWNjZXNzLnRyYW5zLm9uY29tcGxldGUpOgorICAgICAgICAocnVuVGVzdHMu
bmV4dFRlc3QucmVxdWVzdC5vbnN1Y2Nlc3MucmVxdWVzdC5vbnN1Y2Nlc3MucmVxdWVzdC5vbnN1
Y2Nlc3MpOgorICAgICAgICAocnVuVGVzdHMubmV4dFRlc3QucmVxdWVzdC5vbnN1Y2Nlc3MucmVx
dWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAocnVuVGVzdHMubmV4dFRlc3QucmVxdWVzdC5vbnN1
Y2Nlc3MpOgorICAgICAgICAocnVuVGVzdHMubmV4dFRlc3QpOgorICAgICAgICAoY2hlY2sucmVx
dWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAoY2hlY2spOgorICAgICAgICAoZGVmaW5lVGVzdCk6
CisgICAgICAgICguKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5
LXNvcnQtb3JkZXItYWNyb3NzLXR5cGVzLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9rZXktc29ydC1vcmRlci1hY3Jvc3MtdHlwZXMuaHRtbC4KKyAgICAgICAg
KHRlc3QpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAoYWRkS2V5MSk6CisgICAg
ICAgIChhZGRLZXkyKToKKyAgICAgICAgKGFkZEtleTMpOgorICAgICAgICAoYWRkS2V5NCk6Cisg
ICAgICAgIChhZGRLZXk1KToKKyAgICAgICAgKG9wZW5BQ3Vyc29yLnJlcXVlc3Qub25zdWNjZXNz
KToKKyAgICAgICAgKG9wZW5BQ3Vyc29yKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMva2V5LXNvcnQtb3JkZXItZGF0ZS5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIva2V5LXNvcnQtb3JkZXItZGF0ZS5odG1sLgorICAgICAgICAodGVz
dCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChhZGRLZXkxKToKKyAgICAgICAg
KGFkZEtleTIpOgorICAgICAgICAoYWRkS2V5Myk6CisgICAgICAgIChhZGRLZXk0KToKKyAgICAg
ICAgKG9wZW5BQ3Vyc29yLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKG9wZW5BQ3Vyc29y
KToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5LXR5cGUtYXJyYXku
anM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleS10eXBlLWFy
cmF5Lmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAg
ICAgKHNldFZlcnNpb25TdWNjZXNzKToKKyAgICAgICAgKHRlc3RWYWxpZEFycmF5S2V5cy50ZXN0
QXJyYXlQdXRHZXQucHV0cmVxLm9uc3VjY2Vzcy5nZXRyZXEub25zdWNjZXNzKToKKyAgICAgICAg
KHRlc3RWYWxpZEFycmF5S2V5cy50ZXN0QXJyYXlQdXRHZXQucHV0cmVxLm9uc3VjY2Vzcyk6Cisg
ICAgICAgICh0ZXN0VmFsaWRBcnJheUtleXMudGVzdEFycmF5UHV0R2V0KToKKyAgICAgICAgKHRl
c3RWYWxpZEFycmF5S2V5cy5uZXh0VGVzdCk6CisgICAgICAgICh0ZXN0VmFsaWRBcnJheUtleXMp
OgorICAgICAgICAobWFrZUFycmF5T2ZEZXB0aCk6CisgICAgICAgICh0ZXN0RGVwdGhMaW1pdHMp
OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXktdHlwZS1pbmZpbml0
eS5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5LXR5cGUt
aW5maW5pdHkuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgor
ICAgICAgICAodGVzdEdyb3VwMSk6CisgICAgICAgICh0ZXN0R3JvdXAyKToKKyAgICAgICAgKHRl
c3RHcm91cDMpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXlwYXRo
LWJhc2ljcy5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5
cGF0aC1iYXNpY3MuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3BlblN1Y2Nlc3Mp
OgorICAgICAgICAodGVzdFZhbGlkS2V5UGF0aHMpOgorICAgICAgICAodGVzdEludmFsaWRLZXlQ
YXRocyk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleXBhdGgtZWRn
ZXMuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgt
ZWRnZXMuaHRtbC4KKyAgICAgICAgKHRlc3QucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAo
dGVzdCk6CisgICAgICAgIChvcGVuU3VjY2Vzcy5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAg
IChvcGVuU3VjY2Vzcyk6CisgICAgICAgICh0ZXN0S2V5UGF0aHMucmVxdWVzdC5vbnN1Y2Nlc3Mp
OgorICAgICAgICAodGVzdEtleVBhdGhzKToKKyAgICAgICAgKHRlc3RLZXlQYXRoc0FuZEdlbmVy
YXRvci5yZXF1ZXN0Lm9uc3VjY2Vzcy5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgICh0ZXN0
S2V5UGF0aHNBbmRHZW5lcmF0b3IucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEtl
eVBhdGhzQW5kR2VuZXJhdG9yKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMva2V5cGF0aC1mZXRjaC1rZXkuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2tleXBhdGgtZmV0Y2gta2V5Lmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAg
ICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUp
OgorICAgICAgICAob3BlbkN1cnNvcik6CisgICAgICAgIChjaGVja0N1cnNvcik6CisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleXJhbmdlLXJlcXVpcmVkLWFyZ3VtZW50
cy5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cmFuZ2Ut
cmVxdWlyZWQtYXJndW1lbnRzLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5cmFuZ2UuanM6IENvcGllZCBmcm9tIExheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleXJhbmdlLmh0bWwuCisgICAgICAgIChjaGVja1Npbmds
ZUtleVJhbmdlKToKKyAgICAgICAgKGNoZWNrTG93ZXJCb3VuZEtleVJhbmdlKToKKyAgICAgICAg
KGNoZWNrVXBwZXJCb3VuZEtleVJhbmdlKToKKyAgICAgICAgKGNoZWNrQm91bmRLZXlSYW5nZSk6
CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
bGlzdC1vcmRlcmluZy5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbGlzdC1vcmRlcmluZy5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgICh0ZXN0U3Rv
cmVzQW5kSW5kZXhlcy5yZXF1ZXN0Lm9uc3VjY2Vzcy5yZXF1ZXN0Lm9uc3VjY2Vzcy5yZXF1ZXN0
Lm9uc3VjY2Vzcy5zaG91bGRCZVRydWUpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9tdXRhdGluZy1jdXJzb3IuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL211dGF0aW5nLWN1cnNvci5odG1sLgorICAgICAgICAodGVzdCk6CisgICAg
ICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChzZXRWZXJzaW9uU3VjY2Vzcyk6CisgICAgICAg
IChvcGVuRm9yd2FyZEN1cnNvcik6CisgICAgICAgIChmb3J3YXJkQ3Vyc29yLnJlcXVlc3Qub25z
dWNjZXNzKToKKyAgICAgICAgKGZvcndhcmRDdXJzb3IpOgorICAgICAgICAoZm9yd2FyZEN1cnNv
ckNvbXBsZXRlKToKKyAgICAgICAgKG9wZW5SZXZlcnNlQ3Vyc29yKToKKyAgICAgICAgKHJldmVy
c2VDdXJzb3IucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAocmV2ZXJzZUN1cnNvcik6Cisg
ICAgICAgIChyZXZlcnNlQ3Vyc29yQ29tcGxldGUpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9vYmplY3RTdG9yZS1yZXF1aXJlZC1hcmd1bWVudHMuanM6IENvcGllZCBm
cm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdFN0b3JlLXJlcXVpcmVkLWFy
Z3VtZW50cy5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6Cisg
ICAgICAgIChjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3RvcmUtYXV0b2luY3JlbWVudC5qczogQ29waWVk
IGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYXV0b2luY3Jl
bWVudC5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAg
ICAgIChzZXRWZXJzaW9uU3VjY2Vzcyk6CisgICAgICAgIChzZXRWZXJzaW9uQ29tcGxldGVkKToK
KyAgICAgICAgKGFkZEplZmZlcnNzb25TdWNjZXNzKToKKyAgICAgICAgKGFkZExpbmNvbG5XaXRo
SW5qZWN0S2V5U3VjY2Vzcyk6CisgICAgICAgIChnZXRMaW5jb2xuQWZ0ZXJJbmplY3RlZEtleVN1
Y2Nlc3MpOgorICAgICAgICAoYWRkTGluY29sbldpdGhFeHBsaWNpdEtleVN1Y2Nlc3MpOgorICAg
ICAgICAoZ2V0TGluY29sblN1Y2Nlc3MpOgorICAgICAgICAocHV0QWJyYWhhbVN1Y2Nlc3MpOgor
ICAgICAgICAoZ2V0QWJyYWhhbVN1Y2Nlc3MpOgorICAgICAgICAoYWRkQWRhbVN1Y2Nlc3MpOgor
ICAgICAgICAodGVzdExvbmdLZXlQYXRoLmN1cnNvclJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAg
ICAgKHRlc3RMb25nS2V5UGF0aCk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL29iamVjdHN0b3JlLWNsZWFyLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jbGVhci5odG1sLgorICAgICAgICAodGVzdCk6CisgICAg
ICAgIChzdGFydFNldFZlcnNpb24pOgorICAgICAgICAoZGVsZXRlRXhpc3RpbmcpOgorICAgICAg
ICAoY3JlYXRlU2Vjb25kT2JqZWN0U3RvcmVBbmRBZGRWYWx1ZSk6CisgICAgICAgIChjbGVhck9i
amVjdFN0b3JlKToKKyAgICAgICAgKGNsZWFyU3VjY2Vzcyk6CisgICAgICAgIChvcGVuQ3Vyc29y
U3VjY2Vzcyk6CisgICAgICAgIChvcGVuS2V5Q3Vyc29yU3VjY2Vzcyk6CisgICAgICAgIChzZXRW
ZXJzaW9uQ29tcGxldGUpOgorICAgICAgICAoZ2V0U3VjY2Vzcyk6CisgICAgICAgICogc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3JlLWNvdW50LmpzOiBDb3BpZWQgZnJvbSBM
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jb3VudC5odG1sLgorICAg
ICAgICAodGVzdC5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAg
KHByZXBhcmVEYXRhYmFzZSk6CisgICAgICAgICh2ZXJpZnlDb3VudC5yZXF1ZXN0Lm9uc3VjY2Vz
cyk6CisgICAgICAgICh2ZXJpZnlDb3VudCk6CisgICAgICAgICh2ZXJpZnlDb3VudFdpdGhSYW5n
ZS5uZXh0VGVzdC5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgICh2ZXJpZnlDb3VudFdpdGhS
YW5nZS5uZXh0VGVzdCk6CisgICAgICAgICh2ZXJpZnlDb3VudFdpdGhSYW5nZSk6CisgICAgICAg
ICh2ZXJpZnlDb3VudFdpdGhLZXkubmV4dFRlc3QucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAg
ICAodmVyaWZ5Q291bnRXaXRoS2V5Lm5leHRUZXN0KToKKyAgICAgICAgKHZlcmlmeUNvdW50V2l0
aEtleSk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3Jl
LWN1cnNvci5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2Jq
ZWN0c3RvcmUtY3Vyc29yLmh0bWwuCisgICAgICAgIChvcGVuRGF0YWJhc2UpOgorICAgICAgICAo
c2V0VmVyc2lvbik6CisgICAgICAgIChkZWxldGVFeGlzdGluZyk6CisgICAgICAgIChhZGREYXRh
KToKKyAgICAgICAgKHNjaGVkdWxlVGVzdHMpOgorICAgICAgICAocnVuTmV4dFRlc3QpOgorICAg
ICAgICAodGVzdFdpdGhpbkJvdW5kcyk6CisgICAgICAgIChjdXJzb3JJdGVyYXRpb24pOgorICAg
ICAgICAodGVzdE51bGxLZXlSYW5nZSk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL29iamVjdHN0b3JlLXJlbW92ZW9iamVjdHN0b3JlLmpzOiBDb3BpZWQgZnJvbSBMYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1yZW1vdmVvYmplY3RzdG9yZS5o
dG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChzdGFydFNldFZlcnNpb24pOgorICAgICAg
ICAoZGVsZXRlRXhpc3RpbmcpOgorICAgICAgICAoZ2V0VmFsdWUpOgorICAgICAgICAoYWRkSW5k
ZXgpOgorICAgICAgICAoZGVsZXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoY3JlYXRlT2JqZWN0
U3RvcmVBZ2Fpbik6CisgICAgICAgIChnZXRWYWx1ZUFnYWluKToKKyAgICAgICAgKHZlcmlmeU5v
dEZvdW5kKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2RkLXN0cmlu
Z3MuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29kZC1zdHJp
bmdzLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5OZXh0RGF0YWJhc2UpOgor
ICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAoYWRkQUtleSk6CisgICAgICAgIChjbG9z
ZURhdGFiYXNlKToKKyAgICAgICAgKHZlcmlmeU5leHREYXRhYmFzZSk6CisgICAgICAgIChvcGVu
U3VjY2VzczIpOgorICAgICAgICAoZ2V0QUtleSk6CisgICAgICAgIChvcGVuQ3Vyc29yU3VjY2Vz
cyk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4tY2xvc2UtdmVy
c2lvbi5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi1j
bG9zZS12ZXJzaW9uLmh0bWwuCisgICAgICAgIChDb25uZWN0aW9uLnRoaXMub3Blbi5yZXEub25z
dWNjZXNzLnRoYXQuaGFuZGxlLm9udmVyc2lvbmNoYW5nZSk6CisgICAgICAgIChDb25uZWN0aW9u
LnRoaXMub3Blbi5yZXEub25zdWNjZXNzKToKKyAgICAgICAgKENvbm5lY3Rpb24udGhpcy5vcGVu
KToKKyAgICAgICAgKENvbm5lY3Rpb24udGhpcy5jbG9zZSk6CisgICAgICAgIChDb25uZWN0aW9u
LnRoaXMuc2V0VmVyc2lvbi5yZXEub25hYm9ydCk6CisgICAgICAgIChDb25uZWN0aW9uLnRoaXMu
c2V0VmVyc2lvbi5yZXEub25ibG9ja2VkKToKKyAgICAgICAgKENvbm5lY3Rpb24udGhpcy5zZXRW
ZXJzaW9uLnJlcS5vbnN1Y2Nlc3MuZG9fYXN5bmNfcHV0cy5yZXEub25zdWNjZXNzKToKKyAgICAg
ICAgKENvbm5lY3Rpb24udGhpcy5zZXRWZXJzaW9uLnJlcS5vbnN1Y2Nlc3MuZG9fYXN5bmNfcHV0
cyk6CisgICAgICAgIChDb25uZWN0aW9uLnRoaXMuc2V0VmVyc2lvbi5yZXEub25zdWNjZXNzKToK
KyAgICAgICAgKENvbm5lY3Rpb24udGhpcy5zZXRWZXJzaW9uLnJlcS5vbmVycm9yKToKKyAgICAg
ICAgKENvbm5lY3Rpb24udGhpcy5zZXRWZXJzaW9uKToKKyAgICAgICAgKENvbm5lY3Rpb24pOgor
ICAgICAgICAocnVuU3RlcHMpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICh0ZXN0MS4pOgor
ICAgICAgICAodGVzdDEpOgorICAgICAgICAodGVzdDIuKToKKyAgICAgICAgKHRlc3QyKToKKyAg
ICAgICAgKHRlc3QzKToKKyAgICAgICAgKHRlc3QzLik6CisgICAgICAgICh0ZXN0NCk6CisgICAg
ICAgICh0ZXN0NSk6CisgICAgICAgICh0ZXN0Nik6CisgICAgICAgICh0ZXN0Ni5oYWxmRG9uZSk6
CisgICAgICAgICh0ZXN0Ni5maW5pc2hUZXN0KToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvb3Blbi1jdXJzb3IuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL29wZW4tY3Vyc29yLmh0bWwuCisgICAgICAgIChlbXB0eUN1cnNvclN1Y2Nl
c3MpOgorICAgICAgICAob3BlbkVtcHR5Q3Vyc29yKToKKyAgICAgICAgKGN1cnNvclN1Y2Nlc3Mp
OgorICAgICAgICAob3BlbkN1cnNvcik6CisgICAgICAgIChzZXRWZXJzaW9uU3VjY2Vzcyk6Cisg
ICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Blbi1kdXJpbmctdHJhbnNhY3Rpb24uanM6IENvcGllZCBm
cm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4tZHVyaW5nLXRyYW5zYWN0aW9u
Lmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKHByZXBhcmVEYXRhYmFzZS5vcGVucmVx
MS5vbnN1Y2Nlc3Muc2V0dmVycmVxLm9uc3VjY2Vzcy5zZXR2ZXJyZXEucmVzdWx0Lm9uY29tcGxl
dGUpOgorICAgICAgICAocHJlcGFyZURhdGFiYXNlLm9wZW5yZXExLm9uc3VjY2Vzcy5zZXR2ZXJy
ZXEub25zdWNjZXNzKToKKyAgICAgICAgKHByZXBhcmVEYXRhYmFzZS5vcGVucmVxMS5vbnN1Y2Nl
c3MpOgorICAgICAgICAocHJlcGFyZURhdGFiYXNlKToKKyAgICAgICAgKHN0YXJ0VHJhbnNhY3Rp
b24udHJhbnMub25jb21wbGV0ZSk6CisgICAgICAgIChzdGFydFRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKHRyeU9wZW5zLm9wZW5yZXEyLm9uc3VjY2Vzcyk6CisgICAgICAgICh0cnlPcGVucy5vcGVu
cmVxMy5vbnN1Y2Nlc3MpOgorICAgICAgICAodHJ5T3BlbnMpOgorICAgICAgICAqIHN0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9wcmVmZXRjaC1idWdmaXgtMTA4MDcxLmpzOiBDb3BpZWQgZnJv
bSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9wcmVmZXRjaC1idWdmaXgtMTA4MDcxLmh0
bWwuCisgICAgICAgICh0ZXN0LnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHRlc3QpOgor
ICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAoc2V0VmVyc2lvblN1Y2Nlc3MpOgorICAg
ICAgICAocmVzZXRPYmplY3RTdG9yZSk6CisgICAgICAgIChpdGVyYXRlQW5kRGVsZXRlRmlyc3RF
bGVtZW50LnJlcXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKGl0
ZXJhdGVBbmREZWxldGVGaXJzdEVsZW1lbnQucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAo
aXRlcmF0ZUFuZERlbGV0ZUZpcnN0RWxlbWVudCk6CisgICAgICAgIChwcmVmZXRjaEFuZEFib3J0
LnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHByZWZldGNoQW5kQWJvcnQpOgorICAgICAg
ICAodHJhbnNhY3Rpb25BYm9ydGVkKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvcXVldWVkLWNvbW1hbmRzLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9xdWV1ZWQtY29tbWFuZHMuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAg
ICAoc2V0VmVyc2lvbik6CisgICAgICAgIChkZWxldGVFeGlzdGluZy5yZXF1ZXN0Lm9uc3VjY2Vz
cyk6CisgICAgICAgIChkZWxldGVFeGlzdGluZyk6CisgICAgICAgICh2ZXJpZnlBZGQpOgorICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9yZWFkb25seS1wcm9wZXJ0aWVzLmpz
OiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZWFkb25seS1wcm9w
ZXJ0aWVzLmh0bWwuCisgICAgICAgIChzZXRSZWFkb25seVByb3BlcnR5KToKKyAgICAgICAgKHRl
c3QpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAoY3JlYXRlQW5kUG9wdWxhdGVP
YmplY3RTdG9yZSk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3JlYWRv
bmx5LmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZWFkb25s
eS5odG1sLgorICAgICAgICAoc2V0UmVhZG9ubHlQcm9wZXJ0eSk6CisgICAgICAgICh0ZXN0KToK
KyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0
U3RvcmUpOgorICAgICAgICAoYWRkU3VjY2Vzcyk6CisgICAgICAgIChjaGVja0N1cnNvcik6Cisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3JlcXVlc3QtZXZlbnQtcHJvcGFn
YXRpb24uanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3JlcXVl
c3QtZXZlbnQtcHJvcGFnYXRpb24uaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAoc2V0
VmVyc2lvbik6CisgICAgICAgIChkZWxldGVFeGlzdGluZyk6CisgICAgICAgIChzdGFydFRlc3Qp
OgorICAgICAgICAoYWxsb3dEZWZhdWx0KToKKyAgICAgICAgKHRyYW5zYWN0aW9uQWJvcnRlZCk6
CisgICAgICAgIChkYkVycm9yQ2FwdHVyZUNhbGxiYWNrKToKKyAgICAgICAgKGVycm9yQ2FwdHVy
ZUNhbGxiYWNrKToKKyAgICAgICAgKGVycm9yRmlyZWRDYWxsYmFjayk6CisgICAgICAgIChlcnJv
ckJ1YmJsZUNhbGxiYWNrKToKKyAgICAgICAgKGRiRXJyb3JCdWJibGVDYWxsYmFjayk6CisgICAg
ICAgICh0cmFuc2FjdGlvbkFib3J0ZWQyKToKKyAgICAgICAgKGRiU3VjY2Vzc0NhcHR1cmVDYWxs
YmFjayk6CisgICAgICAgIChzdWNjZXNzQ2FwdHVyZUNhbGxiYWNrKToKKyAgICAgICAgKHN1Y2Nl
c3NGaXJlZENhbGxiYWNrKToKKyAgICAgICAgKHN1Y2Nlc3NCdWJibGVDYWxsYmFjayk6CisgICAg
ICAgIChkYlN1Y2Nlc3NCdWJibGVDYWxsYmFjayk6CisgICAgICAgICh0cmFuc2FjdGlvbkNvbXBs
ZXRlKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2V0VmVyc2lvbi1u
dWxsLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRWZXJz
aW9uLW51bGwuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgor
ICAgICAgICAocG9zdFNldFZlcnNpb24pOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9zZXRWZXJzaW9uLXVuZGVmaW5lZC5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvc2V0VmVyc2lvbi11bmRlZmluZWQuaHRtbC4KKyAgICAgICAgKHRl
c3QpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9zZXRfdmVyc2lvbl9ibG9ja2VkLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9ibG9ja2VkLmh0bWwuCisgICAgICAgIChj
b25uZWN0aW9ucyk6CisgICAgICAgIChvcGVuREJDb25uZWN0aW9uKToKKyAgICAgICAgKG9wZW5T
dWNjZXNzKToKKyAgICAgICAgKGJsb2NrZWQpOgorICAgICAgICAoaW5TZXRWZXJzaW9uKToKKyAg
ICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2V0X3ZlcnNpb25fcXVldWUuanM6
IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJzaW9uX3F1
ZXVlLmh0bWwuCisgICAgICAgIChjb25uZWN0aW9ucyk6CisgICAgICAgIChvcGVuREJDb25uZWN0
aW9uKToKKyAgICAgICAgKG9wZW5TdWNjZXNzLmVsc2UucmVxdWVzdC5vbmVycm9yKToKKyAgICAg
ICAgKG9wZW5TdWNjZXNzLmVsc2UucmVxdWVzdDIub25lcnJvcik6CisgICAgICAgIChvcGVuU3Vj
Y2Vzcy5lbHNlLnJlcXVlc3QzLm9uZXJyb3IpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAg
ICAgICAoYmxvY2tlZDApOgorICAgICAgICAoYmxvY2tlZDEpOgorICAgICAgICAoYmxvY2tlZDIp
OgorICAgICAgICAoYmxvY2tlZDMpOgorICAgICAgICAoY29ubmVjdGlvbkVycm9yKToKKyAgICAg
ICAgKGluU2V0VmVyc2lvbjEpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9zdHJ1Y3R1cmVkLWNsb25lLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9zdHJ1Y3R1cmVkLWNsb25lLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAg
KHByZXBhcmVEYXRhYmFzZS5yZXF1ZXN0Lm9uc3VjY2Vzcy5yZXF1ZXN0Lm9uc3VjY2Vzcy5yZXF1
ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgIChwcmVwYXJlRGF0YWJhc2UucmVxdWVzdC5vbnN1Y2Nl
c3MucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAocHJlcGFyZURhdGFiYXNlLnJlcXVlc3Qu
b25zdWNjZXNzKToKKyAgICAgICAgKHByZXBhcmVEYXRhYmFzZSk6CisgICAgICAgIChzdGFydFRl
c3RzLm5leHRUZXN0KToKKyAgICAgICAgKHN0YXJ0VGVzdHMpOgorICAgICAgICAoZm9yRWFjaFdp
dGhDYWxsYmFjay5uZXh0VmFsdWUpOgorICAgICAgICAoZm9yRWFjaFdpdGhDYWxsYmFjayk6Cisg
ICAgICAgICh0ZXN0VmFsdWUucmVxdWVzdC5vbnN1Y2Nlc3MucmVxdWVzdC5vbnN1Y2Nlc3MpOgor
ICAgICAgICAodGVzdFZhbHVlLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHRlc3RWYWx1
ZSk6CisgICAgICAgIChpcyk6CisgICAgICAgIChhcnJheUNvbXBhcmUpOgorICAgICAgICAodGVz
dFByaW1pdGl2ZVZhbHVlKToKKyAgICAgICAgKHRlc3ROdWxsKToKKyAgICAgICAgKHRlc3RCb29s
ZWFuKToKKyAgICAgICAgKHRlc3RCb29sZWFuT2JqZWN0KToKKyAgICAgICAgKHRlc3RTdHJpbmcp
OgorICAgICAgICAodGVzdFN0cmluZ09iamVjdCk6CisgICAgICAgICh0ZXN0TnVtYmVyKToKKyAg
ICAgICAgKHRlc3ROdW1iZXJPYmplY3QpOgorICAgICAgICAodGVzdERhdGVPYmplY3QpOgorICAg
ICAgICAodGVzdFJlZ0V4cE9iamVjdC50ZXN0UmVnRXhwKToKKyAgICAgICAgKHRlc3RSZWdFeHBP
YmplY3QpOgorICAgICAgICAodGVzdEltYWdlRGF0YSk6CisgICAgICAgIChyZWFkQmxvYkFzVGV4
dC5yZWFkZXIub25sb2FkKToKKyAgICAgICAgKHJlYWRCbG9iQXNUZXh0LnJlYWRlci5vbmVycm9y
KToKKyAgICAgICAgKGNoZWNrQmxvYkNvbnRlbnRzKToKKyAgICAgICAgKHRlc3RGaWxlKToKKyAg
ICAgICAgKHRlc3RGaWxlTGlzdC50ZXN0VmFsdWUpOgorICAgICAgICAodGVzdEFycmF5LnRlc3RW
YWx1ZSk6CisgICAgICAgICh0ZXN0T2JqZWN0LnRlc3RWYWx1ZSk6CisgICAgICAgICogc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWFib3J0LmpzOiBDb3BpZWQgZnJvbSBM
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hYm9ydC5odG1sLgorICAg
ICAgICAodGVzdCk6CisgICAgICAgIChzZXRWZXJzaW9uKToKKyAgICAgICAgKGRlbGV0ZUV4aXN0
aW5nKToKKyAgICAgICAgKHN0YXJ0VGVzdCk6CisgICAgICAgIChmaXJzdEFkZCk6CisgICAgICAg
IChzZWNvbmRBZGQpOgorICAgICAgICAodHJhbnNhY3Rpb25BYm9ydGVkKToKKyAgICAgICAgKiBz
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tYWZ0ZXItY2xvc2UuanM6IENv
cGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFmdGVy
LWNsb3NlLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAg
ICAgICAgKGluU2V0VmVyc2lvbik6CisgICAgICAgIChvblB1dFN1Y2Nlc3MpOgorICAgICAgICAo
cnVuRmlyc3RSZWd1bGFyVHJhbnNhY3Rpb24pOgorICAgICAgICAoZmlyc3RUcmFuc2FjdGlvbkNv
bXBsZXRlKToKKyAgICAgICAgKG9uU2Vjb25kT3Blbik6CisgICAgICAgIChvbkZpbmFsUHV0U3Vj
Y2Vzcyk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9u
LWFuZC1vYmplY3RzdG9yZS1jYWxscy5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYW5kLW9iamVjdHN0b3JlLWNhbGxzLmh0bWwuCisgICAg
ICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGNsZWFuRGF0YWJh
c2UpOgorICAgICAgICAoY3JlYXRlZCk6CisgICAgICAgIChhZnRlckNvbXBsZXRlKToKKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tYmFzaWNzLmpzOiBD
b3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1iYXNp
Y3MuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAg
ICAoY2xlYW5EYXRhYmFzZSk6CisgICAgICAgICh0ZXN0U2V0VmVyc2lvbkFib3J0MSk6CisgICAg
ICAgIChhZGRSZW1vdmVJREJPYmplY3RzKToKKyAgICAgICAgKHRlc3RTZXRWZXJzaW9uQWJvcnQy
KToKKyAgICAgICAgKGFkZFJlbW92ZUFkZElEQk9iamVjdHMpOgorICAgICAgICAodGVzdFNldFZl
cnNpb25BYm9ydDMpOgorICAgICAgICAoYWRkSURCT2JqZWN0cyk6CisgICAgICAgICh0ZXN0SW5h
Y3RpdmVBYm9ydGVkVHJhbnNhY3Rpb24pOgorICAgICAgICAodGVzdFNldFZlcnNpb25BYm9ydDQp
OgorICAgICAgICAoYWRkSURCT2JqZWN0c0FuZENvbW1pdCk6CisgICAgICAgICh0ZXN0SW5hY3Rp
dmVDb21wbGV0ZWRUcmFuc2FjdGlvbik6CisgICAgICAgICh0ZXN0U2V0VmVyc2lvbkFib3J0NSk6
CisgICAgICAgIChyZW1vdmVJREJPYmplY3RzKToKKyAgICAgICAgKHRlc3RTZXRWZXJzaW9uQWJv
cnQ2KToKKyAgICAgICAgKHN0YXJ0U2V0VmVyc2lvbik6CisgICAgICAgIChjaGVja01ldGFkYXRh
RW1wdHkpOgorICAgICAgICAoY2hlY2tNZXRhZGF0YUV4aXN0aW5nT2JqZWN0U3RvcmUpOgorICAg
ICAgICAoc2V0TmV3VmVyc2lvbik6CisgICAgICAgIChzZXRWZXJzaW9uU3VjY2Vzcyk6CisgICAg
ICAgIChjb21wbGV0ZUNhbGxiYWNrKToKKyAgICAgICAgKGFib3J0Q2FsbGJhY2spOgorICAgICAg
ICAodGVzdERPTVN0cmluZ0xpc3QpOgorICAgICAgICAodGVzdEludmFsaWRNb2RlKToKKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tY3Jhc2gtb24tYWJv
cnQuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0
aW9uLWNyYXNoLW9uLWFib3J0Lmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5T
dWNjZXNzKToKKyAgICAgICAgKHNldFZlcnNpb25TdWNjZXNzKToKKyAgICAgICAgKHNldFZlcnNp
b25Db21wbGV0ZSk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5z
YWN0aW9uLWV2ZW50LXByb3BhZ2F0aW9uLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1ldmVudC1wcm9wYWdhdGlvbi5odG1sLgorICAgICAg
ICAodGVzdCk6CisgICAgICAgIChzZXRWZXJzaW9uKToKKyAgICAgICAgKGRlbGV0ZUV4aXN0aW5n
KToKKyAgICAgICAgKHN0YXJ0VGVzdCk6CisgICAgICAgIChkYkFib3J0Q2FwdHVyZUNhbGxiYWNr
KToKKyAgICAgICAgKGFib3J0RmlyZWRDYWxsYmFjayk6CisgICAgICAgIChkYkFib3J0QnViYmxl
Q2FsbGJhY2spOgorICAgICAgICAoZGJDb21wbGV0ZUNhcHR1cmVDYWxsYmFjayk6CisgICAgICAg
IChjb21wbGV0ZUZpcmVkQ2FsbGJhY2spOgorICAgICAgICAoZGJDb21wbGV0ZUJ1YmJsZUNhbGxi
YWNrKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24t
cmVhZC1vbmx5LmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90
cmFuc2FjdGlvbi1yZWFkLW9ubHkuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3Bl
blN1Y2Nlc3MpOgorICAgICAgICAoY2xlYW5EYXRhYmFzZSk6CisgICAgICAgIChzZXRWZXJzaW9u
RG9uZSk6CisgICAgICAgIChnb3RDdXJzb3IpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy90cmFuc2FjdGlvbi1yb2xsYmFjay5qczogQ29waWVkIGZyb20gTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tcm9sbGJhY2suaHRtbC4KKyAgICAgICAg
KHRlc3QpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAoY2xlYW5EYXRhYmFzZSk6
CisgICAgICAgIChzZXRWZXJzaW9uQ29tcGxldGUpOgorICAgICAgICAoYWRkU3VjY2Vzcyk6Cisg
ICAgICAgIChvcGVuQ3Vyc29yU3VjY2Vzcyk6CisgICAgICAgIChhYm9ydENhbGxiYWNrKToKKyAg
ICAgICAgKGdldFN1Y2Nlc3MpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy90cmFuc2FjdGlvbi1zdG9yZU5hbWVzLXJlcXVpcmVkLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1zdG9yZU5hbWVzLXJlcXVpcmVkLmh0
bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGNy
ZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy90d28tdmVyc2lvbi1jaGFuZ2VzLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi90d28tdmVyc2lvbi1jaGFuZ2VzLmh0bWwuCisgICAgICAgICh0
ZXN0KToKKyAgICAgICAgKG9wZW5EQkNvbm5lY3Rpb24pOgorICAgICAgICAob3BlblN1Y2Nlc3Mp
OgorICAgICAgICAoaW5TZXRWZXJzaW9uMS5yZXEub25zdWNjZXNzKToKKyAgICAgICAgKGluU2V0
VmVyc2lvbjEpOgorICAgICAgICAoaW5TZXRWZXJzaW9uMi5yZXEub25zdWNjZXNzKToKKyAgICAg
ICAgKGluU2V0VmVyc2lvbjIpOgorICAgICAgICAoaGFsZndheURvbmUpOgorICAgICAgICAoY2hl
Y2tSZXN1bHRzKToKKyAgICAgICAgKHNldFZlcnNpb25Db21wbGV0ZS5yZXEub25zdWNjZXNzLnJl
cS5vbnN1Y2Nlc3MpOgorICAgICAgICAoc2V0VmVyc2lvbkNvbXBsZXRlLnJlcS5vbnN1Y2Nlc3Mp
OgorICAgICAgICAoc2V0VmVyc2lvbkNvbXBsZXRlKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvdmFsdWUtdW5kZWZpbmVkLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi92YWx1ZS11bmRlZmluZWQuaHRtbC4KKyAgICAgICAgKHRlc3Qp
OgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAoY3JlYXRlQW5kUG9wdWxhdGVPYmpl
Y3RTdG9yZSk6CisgICAgICAgIChnZXRWYWx1ZSk6CisgICAgICAgIChjaGVja1ZhbHVlKToKKyAg
ICAgICAgKGNoZWNrQ3Vyc29yKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvdmFsdWVzLW9kZC10eXBlcy5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvdmFsdWVzLW9kZC10eXBlcy5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAg
IChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChhZGRLZXkxKToKKyAgICAgICAgKGFkZERhdGEpOgor
ICAgICAgICAob3BlbkFDdXJzb3IucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAob3BlbkFD
dXJzb3IpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy92ZXJzaW9uLWNo
YW5nZS1hYm9ydC5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
dmVyc2lvbi1jaGFuZ2UtYWJvcnQuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3Bl
bkRCQ29ubmVjdGlvbik6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChpblNldFZl
cnNpb24xKToKKyAgICAgICAgKHNldFZlcnNpb24xQ29tcGxldGUpOgorICAgICAgICAoaW5TZXRW
ZXJzaW9uMik6CisgICAgICAgIChzZXRWZXJzaW9uMkFib3J0KToKKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvdmVyc2lvbi1jaGFuZ2UtZXhjbHVzaXZlLmpzOiBDb3BpZWQg
ZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9uLWNoYW5nZS1leGNsdXNp
dmUuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3BlbkRCQ29ubmVjdGlvbik6Cisg
ICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChpblNldFZlcnNpb24uZG9fYXN5bmNfcHV0
cy5yZXEub25zdWNjZXNzKToKKyAgICAgICAgKGluU2V0VmVyc2lvbi5kb19hc3luY19wdXRzKToK
KyAgICAgICAgKGluU2V0VmVyc2lvbik6CisgICAgICAgIChvcGVuQWdhaW5TdWNjZXNzKToKKyAg
ICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdmVyc2lvbmNoYW5nZXJlcXVlc3Qt
YWN0aXZlZG9tb2JqZWN0LmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi92ZXJzaW9uY2hhbmdlcmVxdWVzdC1hY3RpdmVkb21vYmplY3QuaHRtbC4KKyAgICAgICAg
KHRlc3QpOgorICAgICAgICAodGVzdERlbGV0ZURhdGFiYXNlLmRlbGV0ZVJlcXVlc3Qub25zdWNj
ZXNzKToKKyAgICAgICAgKHRlc3REZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChkZWxldGVTdWNj
ZXNzKToKKyAgICAgICAgKHRlc3RTZXRWZXJzaW9uLm9wZW5SZXF1ZXN0Lm9uc3VjY2Vzcy52ZXJz
aW9uUmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdFNldFZlcnNpb24ub3BlblJlcXVl
c3Qub25zdWNjZXNzKToKKyAgICAgICAgKHRlc3RTZXRWZXJzaW9uKToKKyAgICAgICAgKHZlcnNp
b25TdWNjZXNzKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9zZXRWZXJzaW9uLW51bGwu
aHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9zZXRWZXJzaW9uLXVuZGVmaW5lZC5o
dG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJzaW9uX2Jsb2NrZWQuaHRt
bDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9xdWV1ZS5odG1sOgor
ICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3N0cnVjdHVyZWQtY2xvbmUuaHRtbDoKKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hYm9ydC5odG1sOgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFmdGVyLWNsb3NlLmh0bWw6CisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYW5kLW9iamVjdHN0b3JlLWNhbGxzLmh0
bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYmFzaWNzLmh0bWw6
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY3Jhc2gtb24tYWJvcnQu
aHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1ldmVudC1wcm9w
YWdhdGlvbi5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXJl
YWQtb25seS5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXJv
bGxiYWNrLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tc3Rv
cmVOYW1lcy1yZXF1aXJlZC5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3R3by12
ZXJzaW9uLWNoYW5nZXMuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi92YWx1ZS11
bmRlZmluZWQuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi92YWx1ZXMtb2RkLXR5
cGVzLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1jaGFuZ2UtYWJv
cnQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb24tY2hh
bmdlLWFib3J0Lmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1jaGFu
Z2UtZXhjbHVzaXZlLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbmNo
YW5nZXJlcXVlc3QtYWN0aXZlZG9tb2JqZWN0Lmh0bWw6CisKIDIwMTItMDMtMjMgIEFsbGFuIFNh
bmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CiAKICAgICAgICAgVG91Y2gg
YWRqdXN0bWVudCBmb3JnZXRzIHNvbWUgc3VidGFyZ2V0IHF1YWRzLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY29uc3RhbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9jb25zdGFudHMuaHRtbAppbmRleCBmZThhY2FiMzgxOTVjZGNiZDc5
MjA4ODdhMGJmMGM0ZGE3MmI0YzQxLi5kN2YwZjE0NGRmZTdiYTc4YTY0MjRiMWUwYTc1MzM5MmYw
ZGJjZmIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jb25zdGFu
dHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jb25zdGFudHMuaHRt
bApAQCAtNCw0NCArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9z
Y3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IElu
ZGV4ZWREQidzIGNvbnN0YW50cy4iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3Zl
VmVuZG9yUHJlZml4ZXMoKTsKLSAgICBzaG91bGRCZSgiSURCRGF0YWJhc2VFeGNlcHRpb24uVU5L
Tk9XTl9FUlIiLCAiMSIpOwotICAgIHNob3VsZEJlKCJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT05f
VFJBTlNJRU5UX0VSUiIsICIyIik7Ci0gICAgc2hvdWxkQmUoIklEQkRhdGFiYXNlRXhjZXB0aW9u
Lk5PVF9GT1VORF9FUlIiLCAiMyIpOwotICAgIHNob3VsZEJlKCJJREJEYXRhYmFzZUV4Y2VwdGlv
bi5DT05TVFJBSU5UX0VSUiIsICI0Iik7Ci0gICAgc2hvdWxkQmUoIklEQkRhdGFiYXNlRXhjZXB0
aW9uLkRBVEFfRVJSIiwgIjUiKTsKLSAgICBzaG91bGRCZSgiSURCRGF0YWJhc2VFeGNlcHRpb24u
Tk9UX0FMTE9XRURfRVJSIiwgIjYiKTsKLSAgICBzaG91bGRCZSgiSURCRGF0YWJhc2VFeGNlcHRp
b24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIiwgIjciKTsKLSAgICBzaG91bGRCZSgiSURCRGF0
YWJhc2VFeGNlcHRpb24uQUJPUlRfRVJSIiwgIjgiKTsKLSAgICBzaG91bGRCZSgiSURCRGF0YWJh
c2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUiIsICI5Iik7Ci0gICAgc2hvdWxkQmUoIklEQkRhdGFi
YXNlRXhjZXB0aW9uLlRJTUVPVVRfRVJSIiwgIjEwIik7Ci0gICAgc2hvdWxkQmUoIklEQkRhdGFi
YXNlRXhjZXB0aW9uLlFVT1RBX0VSUiIsICIxMSIpOwotICAgIHNob3VsZEJlKCJJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5WRVJfRVJSIiwgIjEyIik7Ci0KLSAgICBzaG91bGRCZSgiSURCUmVxdWVzdC5M
T0FESU5HIiwgIjEiKTsKLSAgICBzaG91bGRCZSgiSURCUmVxdWVzdC5ET05FIiwgIjIiKTsKLQot
ICAgIHNob3VsZEJlKCJJREJDdXJzb3IuTkVYVCIsICIwIik7Ci0gICAgc2hvdWxkQmUoIklEQkN1
cnNvci5ORVhUX05PX0RVUExJQ0FURSIsICIxIik7Ci0gICAgc2hvdWxkQmUoIklEQkN1cnNvci5Q
UkVWIiwgIjIiKTsKLSAgICBzaG91bGRCZSgiSURCQ3Vyc29yLlBSRVZfTk9fRFVQTElDQVRFIiwg
IjMiKTsKLQotICAgIHNob3VsZEJlKCJJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkiLCAiMCIpOwot
ICAgIHNob3VsZEJlKCJJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFIiwgIjEiKTsKLSAgICBzaG91
bGRCZSgiSURCVHJhbnNhY3Rpb24uVkVSU0lPTl9DSEFOR0UiLCAiMiIpOwotfQotCi10ZXN0KCk7
Ci0KLWZpbmlzaEpTVGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
Y29uc3RhbnRzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlLWFuZC1yZW1vdmUtb2Jq
ZWN0LXN0b3JlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jcmVhdGUtYW5k
LXJlbW92ZS1vYmplY3Qtc3RvcmUuaHRtbAppbmRleCA3MTY5NWMwZDU3OGRkZWNmYmNhNjViYjVh
MjZlMGJkYjZmNzQ4NzNlLi43Yzg5ZjVlOTljNmI2ODQ0MzQ3ZDQ2YmFlNTczYjg0MDljNzQ1YWJm
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jcmVhdGUtYW5kLXJl
bW92ZS1vYmplY3Qtc3RvcmUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9jcmVhdGUtYW5kLXJlbW92ZS1vYmplY3Qtc3RvcmUuaHRtbApAQCAtNCw3MiArNCw3IEBACiA8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9k
eT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGNyZWF0ZSBhbmQg
cmVtb3ZlT2JqZWN0U3RvcmUiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVu
ZG9yUHJlZml4ZXMoKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4o
J2NyZWF0ZS1hbmQtcmVtb3ZlLW9iamVjdC1zdG9yZScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJvcGVu
U3VjY2VzcygpOiIpOwotICAgIHNlbGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKLSAgICB0ZXN0Q3JlYXRlQW5kUmVtb3ZlKCk7Ci0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlc3VsdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHRlc3RDcmVhdGVBbmRSZW1vdmUoKTsKLX0KLQot
ZnVuY3Rpb24gdGVzdENyZWF0ZUFuZFJlbW92ZSgpCi17Ci0gICAgZGVidWcoIlRyeWluZyBjcmVh
dGUiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCdkYi5jcmVhdGVPYmplY3RTdG9yZSgi
c29tZSBvcyIpJywgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9BTExPV0VEX0VSUiIpOwotICAg
IGRlYnVnKCJUcnlpbmcgcmVtb3ZlIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbignZGIu
ZGVsZXRlT2JqZWN0U3RvcmUoInNvbWUgb3MiKScsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1Rf
QUxMT1dFRF9FUlIiKTsKLX0KLQotZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCi17Ci0gICAgZGVs
ZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9zID0gZXZhbEFuZExvZygiZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ3RtcCcpIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ3RtcCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkNPTlNUUkFJTlRf
RVJSIik7Ci0gICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5vbmNvbXBsZXRlID0gc2V0VmVyc2lvbkNv
bXBsZXRlOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uQ29tcGxldGUoKQotewotICAgIHRyYW5z
ID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3RtcCddKSIpOwotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgndG1wJykuZ2V0KDApIik7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0cnlPbmNlTW9yZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gdHJ5T25jZU1vcmUoKQot
ewotICAgIHNob3VsZEJlVW5kZWZpbmVkKCJldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICB0
ZXN0Q3JlYXRlQW5kUmVtb3ZlKCk7Ci0KLSAgICBkZWJ1ZygiVHJ5aW5nIGNyZWF0ZSB3aXRoIHN0
b3JlIHRoYXQgYWxyZWFkeSBleGlzdHMiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJk
Yi5jcmVhdGVPYmplY3RTdG9yZSgndG1wJykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0FM
TE9XRURfRVJSIik7Ci0gICAgZGVidWcoIlRyeWluZyByZW1vdmUgd2l0aCBzdG9yZSB0aGF0IGFs
cmVhZHkgZXhpc3RzIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIuZGVsZXRlT2Jq
ZWN0U3RvcmUoJ3RtcCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9BTExPV0VEX0VSUiIp
OwotCi0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvY3JlYXRlLWFuZC1yZW1vdmUtb2JqZWN0LXN0b3JlLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlLW9iamVjdC1zdG9yZS1vcHRpb25zLmh0bWwgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jcmVhdGUtb2JqZWN0LXN0b3JlLW9wdGlvbnMu
aHRtbAppbmRleCBkZGFiMGYyYzhhZDg5ZDJiNjlhNjJmMzYwOTVjMTZhMDlhNmI3YzM1Li43N2Mz
MzNhYmU5ZGFjNjk3MDFlNmQxMDJiODVmNWRjMWZlNzFhYWU4IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jcmVhdGUtb2JqZWN0LXN0b3JlLW9wdGlvbnMuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jcmVhdGUtb2JqZWN0LXN0b3JlLW9w
dGlvbnMuaHRtbApAQCAtNCw4NyArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJl
ZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9u
KCJUZXN0IEluZGV4ZWREQidzIGNyZWF0ZU9iamVjdFN0b3JlJ3MgdmFyaW91cyBvcHRpb25zIik7
Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2NyZWF0ZS1vYmplY3Qtc3Rv
cmUtb3B0aW9ucycsICdkZXNjcmlwdGlvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBv
cGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygi
ZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKLXsKLSAgICBkZWxl
dGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ2EnLCB7a2V5UGF0aDogJ2EnfSkiKTsKLSAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVP
YmplY3RTdG9yZSgnYicpIik7Ci0KLSAgICBkZWJ1ZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2Mn
LCB7YXV0b0luY3JlbWVudDogdHJ1ZX0pOyIpOwotICAgIGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdj
Jywge2F1dG9JbmNyZW1lbnQ6IHRydWV9KTsKLSAgICBldmVudC50YXJnZXQucmVzdWx0Lm9uY29t
cGxldGUgPSBzZXRWZXJzaW9uQ29tcGxldGU7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb25Db21w
bGV0ZSgpCi17Ci0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9u
KFsnYScsICdiJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgc2hvdWxkQmUo
InRyYW5zLm1vZGUiLCAiSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSIpOwotCi0gICAgcmVxID0g
ZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2EnKS5wdXQoeydhJzogMH0pIik7Ci0gICAg
cmVxLm9uc3VjY2VzcyA9IHB1dEI7Ci0gICAgcmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb25DbGFzcygiZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ2QnLCAnYmFyJyk7IiwgIlR5cGVFcnJvciIpOwotICAgIGV2YWxBbmRFeHBlY3RF
eGNlcHRpb25DbGFzcygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2UnLCBmYWxzZSk7IiwgIlR5cGVF
cnJvciIpOwotfQotCi1mdW5jdGlvbiBwdXRCKCkKLXsKLSAgICByZXEgPSBldmFsQW5kTG9nKCJ0
cmFucy5vYmplY3RTdG9yZSgnYicpLnB1dCh7J2EnOiAwfSwgMCkiKTsgIC8vIE9PUFMKLSAgICBy
ZXEub25zdWNjZXNzID0gZ2V0QTsKLSAgICByZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotfQotCi1mdW5jdGlvbiBnZXRBKCkKLXsKLSAgICByZXEgPSBldmFsQW5kTG9nKCJ0
cmFucy5vYmplY3RTdG9yZSgnYScpLmdldCgwKSIpOwotICAgIHJlcS5vbnN1Y2Nlc3MgPSBnZXRC
OwotICAgIHJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0
aW9uIGdldEIoKQotewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LmEiLCAie2E6
IDB9Iik7Ci0KLSAgICByZXEgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYicpLmdl
dCgwKSIpOwotICAgIHJlcS5vbnN1Y2Nlc3MgPSBjaGVja0I7Ci0gICAgcmVxLm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY2hlY2tCKCkKLXsKLSAgICBz
aG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5hIiwgInthOiAwfSIpOwotCi0gICAgZmluaXNo
SlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvY3JlYXRlLW9iamVjdC1zdG9yZS1vcHRpb25zLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgog
PC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvY3JlYXRlT2JqZWN0U3RvcmUtbmFtZS1hcmd1bWVudC1yZXF1aXJlZC5odG1sIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlT2JqZWN0U3RvcmUtbmFtZS1hcmd1bWVudC1y
ZXF1aXJlZC5odG1sCmluZGV4IDI3MmZjNDMwOWFjY2Q1NjRmMmJmYzdmZDExZGI5NmM3MTZlMjZl
OGMuLmVlOGZhOGU3N2QyNGRlZjg4MGU3MTZlNmQ5NjFlODc5NDQzMDFiNTcgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZU9iamVjdFN0b3JlLW5hbWUtYXJn
dW1lbnQtcmVxdWlyZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9j
cmVhdGVPYmplY3RTdG9yZS1uYW1lLWFyZ3VtZW50LXJlcXVpcmVkLmh0bWwKQEAgLTEsNDYgKzEs
MTAgQEAKLTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3Jp
cHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBjcmVhdGVPYmplY3RTdG9yZSBuYW1l
IGFyZ3VtZW50IGlzIHJlcXVpcmVkIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92
ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsK
LSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRi
ID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZTsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY3JlYXRl
QW5kUG9wdWxhdGVPYmplY3RTdG9yZSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRi
KTsKLQotICAgIHNob3VsZFRocm93KCJkYi5jcmVhdGVPYmplY3RTdG9yZSgpOyIpOwotICAgIGZp
bmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL2NyZWF0ZU9iamVjdFN0b3JlLW5hbWUtYXJndW1lbnQtcmVxdWlyZWQuanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9jcmVhdGVPYmplY3RTdG9yZS1udWxsLW5hbWUuaHRtbCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZU9iamVjdFN0b3JlLW51bGwtbmFtZS5o
dG1sCmluZGV4IDRiMjVlMTQ0YTg4MDUwODAyYmUyNWY4YTFhYzdhY2FjMGMwMTA5ZTkuLmIyYWE4
YTMwODFhMTAwY2Q1MTFjMTVlNWRmY2UxMjE1NzkxNzdjZmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZU9iamVjdFN0b3JlLW51bGwtbmFtZS5odG1sCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZU9iamVjdFN0b3JlLW51bGwt
bmFtZS5odG1sCkBAIC0xLDQ3ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhl
YWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0Pgog
PC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIg
Y3JlYXRlT2JqZWN0U3RvcmUgbnVsbCBoYW5kbGluZyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsK
LSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24u
cGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkK
LXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0
aW9uIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQotewotICAgIGRlbGV0ZUFsbE9iamVj
dFN0b3JlcyhkYik7Ci0KLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9i
amVjdFN0b3JlKG51bGwpOyIpOwotICAgIHNob3VsZEJlKCJvYmplY3RTdG9yZS5uYW1lIiwgIidu
dWxsJyIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NyZWF0ZU9iamVjdFN0b3JlLW51bGwtbmFtZS5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1jb250aW51ZS5odG1sIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWNvbnRpbnVlLmh0bWwKaW5kZXggNzEyY2QyYjM5ZDYy
ZGEyNzkzYWZlNjYyMzAxNTZjY2UxMzEwNzUxYy4uMDZiZjcxNThhNzM5MzFjNDBhOTI3YmYxMDdi
ZWQ3YmRlMmYxMDBmMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
Y3Vyc29yLWNvbnRpbnVlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
Y3Vyc29yLWNvbnRpbnVlLmh0bWwKQEAgLTQsMjc1ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4gCi0K
LWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIElEQkN1cnNvci5jb250aW51ZSgpIHdpdGgg
YSBrZXkgcGFyYW1ldGVyLiIpOwotCi12YXIgZGF0ZSA9IG5ldyBEYXRlKCk7Ci0KLS8vIEluIG9y
ZGVyIG9mIGhvdyBpdCBzaG91bGQgYmUgc29ydGVkIGJ5IEluZGV4ZWREQi4KLXNlbGYudGVzdERh
dGEgPSBbCi0gICAgMCwKLSAgICAxLAotICAgIDEsCi0gICAgMy4xNDE1OSwKLSAgICAzLjE0MTU5
LAotICAgIDEwLAotICAgIDExLAotICAgIDEyLAotICAgIDEzLAotICAgIGRhdGUsCi0gICAgZGF0
ZSwKLSAgICBuZXcgRGF0ZShkYXRlLnZhbHVlT2YoKSArIDEwMDApLAotICAgICJBIGJpZyBzdHJp
bmciLAotICAgICJBIGJpZyBzdHJpbmciLAotICAgICJBIGJpdDEiLAotICAgICJBIGJpdDIiLAot
ICAgICJBIGJpdDMiLAotICAgICJ0aGUgQklHR0VTVCBzdHJpbmciCi1dOwotCi1mdW5jdGlvbiB0
ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIG9wZW5EYXRhYmFzZSgp
OwotfQotCi1mdW5jdGlvbiBvcGVuRGF0YWJhc2UoKQotewotICAgIHJlc3VsdCA9IGV2YWxBbmRM
b2coImluZGV4ZWREQi5vcGVuKCdjdXJzb3ItY29udGludWUnKSIpOwotICAgIHJlc3VsdC5vbnN1
Y2Nlc3MgPSBzZXRWZXJzaW9uOwotICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0gCi1mdW5jdGlvbiBzZXRWZXJzaW9uKCkKLXsKLSAgICBzZWxmLmRiID0g
ZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXN1bHQgPSBl
dmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVzdWx0Lm9u
c3VjY2VzcyA9IGRlbGV0ZUV4aXN0aW5nOwotICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKLXsKLSAgICBz
ZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0g
ICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1
bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLQotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7
Ci0KLSAgICBzZWxmLm9iamVjdFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ3NvbWVPYmplY3RTdG9yZScpIik7Ci0gICAgc2VsZi5pbmRleE9iamVjdCA9IGV2YWxBbmRM
b2coIm9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdzb21lSW5kZXgnLCAneCcpIik7Ci0gICAgc2Vs
Zi5uZXh0VG9BZGQgPSAwOwotICAgIGFkZERhdGEoKTsKLX0KLQotZnVuY3Rpb24gYWRkRGF0YSgp
Ci17Ci0gICAgcmVzdWx0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKHsneCc6IHRlc3RE
YXRhW25leHRUb0FkZF19LCBuZXh0VG9BZGQpIik7Ci0gICAgcmVzdWx0Lm9uc3VjY2VzcyA9ICsr
c2VsZi5uZXh0VG9BZGQgPCB0ZXN0RGF0YS5sZW5ndGggPyBhZGREYXRhIDogYXNjZW5kaW5nVGVz
dDsKLSAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1m
dW5jdGlvbiBhc2NlbmRpbmdUZXN0KCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgdmFyIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5vcGVuS2V5Q3Vyc29yKG51bGwsIElEQkN1cnNv
ci5ORVhUKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYXNjZW5kaW5nQ2FsbGJhY2s7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgc2VsZi5z
dGFnZSA9IDA7Ci19Ci0KLWZ1bmN0aW9uIGFzY2VuZGluZ0NhbGxiYWNrKCkKLQotewotICAgIGlm
IChzZWxmLnN0YWdlID09IDApIHsKLSAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1
bHQucHJpbWFyeUtleSIsICIwIik7Ci0gICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5y
ZXN1bHQuY29udGludWUoMy4xNDE1OSkiKTsKLSAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0g
MSkgewotICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5Iiwg
IjMiKTsKLSAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgp
Iik7Ci0gICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDIpIHsKLSAgICAgICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICI0Iik7Ci0gICAgICAgIGV2YWxBbmRM
b2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOwotICAgIH0gZWxzZSBpZiAoc2Vs
Zi5zdGFnZSA9PSAzKSB7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnBy
aW1hcnlLZXkiLCAiNSIpOwotICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0
LmNvbnRpbnVlKDEyKSIpOwotICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSA0KSB7Ci0gICAg
ICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiNyIpOwotICAg
ICAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKGRhdGUpIik7Ci0g
ICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDUpIHsKLSAgICAgICAgc2hvdWxkQmUoImV2ZW50
LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICI5Iik7Ci0gICAgICAgIGV2YWxBbmRMb2coImV2
ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOwotICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFn
ZSA9PSA2KSB7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlL
ZXkiLCAiMTAiKTsKLSAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250
aW51ZSgpIik7Ci0gICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDcpIHsKLSAgICAgICAgc2hv
dWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIxMSIpOwotICAgICAgICBl
dmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCdBIGJpdDEnKSIpOwotICAg
IH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSA4KSB7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50
YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMTQiKTsKLSAgICAgICAgZXZhbEFuZExvZygiZXZl
bnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgnQSBiaXQzJykiKTsKLSAgICB9IGVsc2UgaWYgKHNl
bGYuc3RhZ2UgPT0gOSkgewotICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5w
cmltYXJ5S2V5IiwgIjE2Iik7Ci0gICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1
bHQuY29udGludWUoJ3RoZSBCSUdHRVNUIHN0cmluZycpIik7Ci0gICAgfSBlbHNlIGlmIChzZWxm
LnN0YWdlID09IDEwKSB7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnBy
aW1hcnlLZXkiLCAiMTciKTsKLSAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3Vs
dC5jb250aW51ZSgpIik7Ci0gICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDExKSB7Ci0gICAg
ICAgIHNob3VsZEJlTnVsbCgiZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgICAgICBkZXNjZW5k
aW5nVGVzdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdGVzdEZh
aWxlZCgiSWxsZWdhbCBzdGFnZS4iKTsKLSAgICB9Ci0gICAgc2VsZi5zdGFnZSsrOwotfQotCi1m
dW5jdGlvbiBkZXNjZW5kaW5nVGVzdCgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIHZhciByZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhPYmplY3Qub3BlbktleUN1cnNvcihudWxsLCBJREJDdXJz
b3IuUFJFVikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlc2NlbmRpbmdDYWxsYmFjazsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICBzZWxm
LnN0YWdlID0gMDsKLX0KLQotZnVuY3Rpb24gZGVzY2VuZGluZ0NhbGxiYWNrKCkKLXsKLSAgICBp
ZiAoc2VsZi5zdGFnZSA9PSAwKSB7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVz
dWx0LnByaW1hcnlLZXkiLCAiMTciKTsKLSAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0
LnJlc3VsdC5jb250aW51ZSgnQSBiaXQyJykiKTsKLSAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2Ug
PT0gMSkgewotICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5
IiwgIjE1Iik7Ci0gICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGlu
dWUoKSIpOwotICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSAyKSB7Ci0gICAgICAgIHNob3Vs
ZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMTQiKTsKLSAgICAgICAgZXZh
bEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZShkYXRlKSIpOwotICAgIH0gZWxz
ZSBpZiAoc2VsZi5zdGFnZSA9PSAzKSB7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQu
cmVzdWx0LnByaW1hcnlLZXkiLCAiMTAiKTsKLSAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFy
Z2V0LnJlc3VsdC5jb250aW51ZSgpIik7Ci0gICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDQp
IHsKLSAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICI5
Iik7Ci0gICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoMSki
KTsKLSAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gNSkgewotICAgICAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjIiKTsKLSAgICAgICAgZXZhbEFuZExv
ZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7Ci0gICAgfSBlbHNlIGlmIChzZWxm
LnN0YWdlID09IDYpIHsKLSAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJp
bWFyeUtleSIsICIxIik7Ci0gICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQu
Y29udGludWUoKSIpOwotICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSA3KSB7Ci0gICAgICAg
IHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMCIpOwotICAgICAg
ICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKLSAgICB9IGVs
c2UgaWYgKHNlbGYuc3RhZ2UgPT0gOCkgewotICAgICAgICBzaG91bGRCZU51bGwoImV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKLSAgICAgICAgYXNjZW5kaW5nRXJyb3JUZXN0TGVzc1RoYW4oKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIklsbGVnYWwg
c3RhZ2UuIik7Ci0gICAgfQotICAgIHNlbGYuc3RhZ2UrKzsKLX0KLQotZnVuY3Rpb24gYXNjZW5k
aW5nRXJyb3JUZXN0TGVzc1RoYW4oKQotewotICAgIGRlYnVnKCIiKTsKLSAgICB2YXIgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3IobnVsbCwgSURCQ3Vyc29y
Lk5FWFQpIik7Ci0gICAgc2VsZi5zdGFnZSA9IDA7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigp
IHsKLSAgICAgICAgaWYgKHNlbGYuc3RhZ2UgPT09IDApIHsKLSAgICAgICAgICAgIHNob3VsZEJl
KCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMCIpOwotICAgICAgICAgICAgZXZh
bEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgzLjE0MTU5KSIpOwotICAgICAg
ICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gMSkgewotICAgICAgICAgICAgc2hvdWxkQmUoImV2
ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIzIik7Ci0gICAgICAgICAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKDEpIiwgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0gICAgICAgICAgICBhc2NlbmRpbmdFcnJvclRl
c3RFcXVhbCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJJbGxlZ2FsIHN0YWdlLiIpOwotICAgICAgICB9Ci0gICAgICAgIHNl
bGYuc3RhZ2UrKzsKLSAgICB9OwotfQotCi1mdW5jdGlvbiBhc2NlbmRpbmdFcnJvclRlc3RFcXVh
bCgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIHZhciByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5k
ZXhPYmplY3Qub3BlbktleUN1cnNvcihudWxsLCBJREJDdXJzb3IuTkVYVCkiKTsKLSAgICBzZWxm
LnN0YWdlID0gMDsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAoc2Vs
Zi5zdGFnZSA9PT0gMCkgewotICAgICAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1
bHQucHJpbWFyeUtleSIsICIwIik7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJn
ZXQucmVzdWx0LmNvbnRpbnVlKDMuMTQxNTkpIik7Ci0gICAgICAgIH0gZWxzZSBpZiAoc2VsZi5z
dGFnZSA9PSAxKSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5w
cmltYXJ5S2V5IiwgIjMiKTsKLSAgICAgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImV2
ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoMy4xNDE1OSkiLCAiSURCRGF0YWJhc2VFeGNlcHRp
b24uREFUQV9FUlIiKTsKLSAgICAgICAgICAgIGRlc2NlbmRpbmdFcnJvclRlc3RHcmVhdGVyVGhh
bigpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICB0
ZXN0RmFpbGVkKCJJbGxlZ2FsIHN0YWdlLiIpOwotICAgICAgICB9Ci0gICAgICAgIHNlbGYuc3Rh
Z2UrKzsKLSAgICB9OwotfQotCi1mdW5jdGlvbiBkZXNjZW5kaW5nRXJyb3JUZXN0R3JlYXRlclRo
YW4oKQotewotICAgIGRlYnVnKCIiKTsKLSAgICB2YXIgcmVxdWVzdCA9IGV2YWxBbmRMb2coImlu
ZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3IobnVsbCwgSURCQ3Vyc29yLlBSRVYpIik7Ci0gICAgc2Vs
Zi5zdGFnZSA9IDA7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHNl
bGYuc3RhZ2UgPT0gMCkgewotICAgICAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1
bHQucHJpbWFyeUtleSIsICIxNyIpOwotICAgICAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFy
Z2V0LnJlc3VsdC5jb250aW51ZSgnQSBiaXQyJykiKTsKLSAgICAgICAgfSBlbHNlIGlmIChzZWxm
LnN0YWdlID09IDEpIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0
LnByaW1hcnlLZXkiLCAiMTUiKTsKLSAgICAgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24o
ImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoJ0EgYml0MycpIiwgIklEQkRhdGFiYXNlRXhj
ZXB0aW9uLkRBVEFfRVJSIik7Ci0gICAgICAgICAgICBkZXNjZW5kaW5nRXJyb3JUZXN0RXF1YWwo
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgdGVz
dEZhaWxlZCgiSWxsZWdhbCBzdGFnZS4iKTsKLSAgICAgICAgfQotICAgICAgICBzZWxmLnN0YWdl
Kys7Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24gZGVzY2VuZGluZ0Vycm9yVGVzdEVxdWFsKCkKLXsK
LSAgICBkZWJ1ZygiIik7Ci0gICAgdmFyIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVj
dC5vcGVuS2V5Q3Vyc29yKG51bGwsIElEQkN1cnNvci5QUkVWKSIpOwotICAgIHNlbGYuc3RhZ2Ug
PSAwOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmIChzZWxmLnN0YWdl
ID09IDApIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1h
cnlLZXkiLCAiMTciKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1
bHQuY29udGludWUoJ0EgYml0MicpIik7Ci0gICAgICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9
PSAxKSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5
S2V5IiwgIjE1Iik7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJn
ZXQucmVzdWx0Iik7Ci0gICAgICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJldmVudC50
YXJnZXQucmVzdWx0LmNvbnRpbnVlKCdBIGJpdDInKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5E
QVRBX0VSUiIpOwotICAgICAgICAgICAgc2VsZi50cmFucy5vbmNvbXBsZXRlID0gb25UcmFuc2Fj
dGlvbkNvbXBsZXRlOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJJbGxlZ2FsIHN0YWdlLiIpOwotICAgICAgICB9Ci0gICAgICAg
IHNlbGYuc3RhZ2UrKzsKLSAgICB9OwotfQotCi1mdW5jdGlvbiBvblRyYW5zYWN0aW9uQ29tcGxl
dGUoKQotewotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImN1cnNvci5jb250aW51ZSgpIiwg
IklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOwotICAgIGZp
bmlzaEpTVGVzdCgpOwotfQotCi10ZXN0KCk7Ci0gCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvY3Vyc29yLWNvbnRpbnVlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5Pgog
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29y
LWRlbGV0ZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWRlbGV0
ZS5odG1sCmluZGV4IGQ3NDA3M2FiN2Y5YWMxOWNiNzAyN2FlZjdhMmJjMWFiM2FlMDZiM2MuLmVi
ZDZiN2Y3YzM1M2E4NGIwODVhN2Y0MTZiNmI2YTg4MWNmMDNkNDAgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1kZWxldGUuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItZGVsZXRlLmh0bWwKQEAgLTQsMTExICs0LDcg
QEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4K
IDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mgb3BlbkN1
cnNvci4iKTsKLQotdGVzdCgpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5k
b3JQcmVmaXhlcygpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbign
Y3Vyc29yLWRlbGV0ZScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVu
Y3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIHZhciBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZl
cnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNp
b25TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCi17Ci0gICAgZGVidWcoInNldFZl
cnNpb25TdWNjZXNzKCk6Iik7Ci0gICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwi
KTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJh
bnMub25jb21wbGV0ZSA9IG9wZW5DdXJzb3I7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMo
ZGIpOwotCi0gICAgdmFyIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBk
Yi5jcmVhdGVPYmplY3RTdG9yZSgndGVzdCcpIik7Ci0gICAgZXZhbEFuZExvZygib2JqZWN0U3Rv
cmUuYWRkKCdteVZhbHVlMScsICdteUtleTEnKSIpOwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0
b3JlLmFkZCgnbXlWYWx1ZTInLCAnbXlLZXkyJykiKTsKLSAgICBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZS5hZGQoJ215VmFsdWUzJywgJ215S2V5MycpIik7Ci0gICAgZXZhbEFuZExvZygib2JqZWN0
U3RvcmUuYWRkKCdteVZhbHVlNCcsICdteUtleTQnKSIpOwotfQotCi1mdW5jdGlvbiBvcGVuQ3Vy
c29yKCkKLXsKLSAgICBkZWJ1Zygib3BlbkN1cnNvcjEiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFu
cyA9IGRiLnRyYW5zYWN0aW9uKFsndGVzdCddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIp
OwotICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgibXlLZXkxIik7Ci0gICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCd0ZXN0Jykub3BlbkN1cnNv
cih7cmFuZ2U6IGtleVJhbmdlfSkiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvclN1
Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0g
ICAgY291bnRlciA9IDE7Ci19Ci0KLWZ1bmN0aW9uIGN1cnNvclN1Y2Nlc3MoKQotewotICAgIGlm
IChldmVudC50YXJnZXQucmVzdWx0ID09IG51bGwpIHsKLSAgICAgICAgc2hvdWxkQmUoImNvdW50
ZXIiLCAiNSIpOwotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3Rv
cmUoJ3Rlc3QnKS5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOwotICAgICAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGN1cnNvckVtcHR5OwotICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBldmFsQW5kTG9nKCJl
dmVudC50YXJnZXQucmVzdWx0LmRlbGV0ZSgpIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJldmVudC50YXJnZXQucmVzdWx0LnZhbHVlIiwgIm15VmFsdWUiICsgY291bnRlcisrKTsKLSAg
ICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKLX0KLQotZnVu
Y3Rpb24gY3Vyc29yRW1wdHkoKQotewotICAgIHNob3VsZEJlTnVsbCgiZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBhZGRPYmplY3Q7Ci19Ci0KLWZ1bmN0aW9u
IGFkZE9iamVjdCgpCi17Ci0gICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihb
J3Rlc3QnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICBvYmplY3RTdG9yZSA9
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3Rlc3QnKSIpOwot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ215VmFsdWUxJywgJ215
S2V5MScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuQ3Vyc29yMjsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3Bl
bkN1cnNvcjIoKQotewotICAgIGRlYnVnKCJvcGVuQ3Vyc29yMiIpOwotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZGVsZXRlT2JqZWN0OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBkZWxldGVPYmplY3QoKQotewotICAg
IHNob3VsZEJlTm9uTnVsbChldmVudC50YXJnZXQucmVzdWx0KTsKLSAgICBldmFsQW5kTG9nKCJl
dmVudC50YXJnZXQucmVzdWx0LmRlbGV0ZSgpIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
Im9iamVjdFN0b3JlLmdldCgnbXlLZXkxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHZl
cmlmeU9iamVjdERlbGV0ZWQ7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHZlcmlmeU9iamVjdERlbGV0ZWQoKQotewotICAgIHNo
b3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgInVuZGVmaW5lZCIpOwotICAgIGZpbmlzaEpT
VGVzdCgpOwotfQotCi0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jdXJzb3It
ZGVsZXRlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWluY29uc2lzdGVuY3kuaHRt
bCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1pbmNvbnNpc3RlbmN5Lmh0
bWwKaW5kZXggYTQ4NTc2YzgwYzk2NGVkODk3ZjJhZGRmNjRiM2U2ZGI0Y2U4NTNlNi4uZjJjZWEw
YjFhZDczZjE0ZDI2YzVlMWJhNDU3YzdmZTBhYzU5MGJmYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWluY29uc2lzdGVuY3kuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItaW5jb25zaXN0ZW5jeS5odG1sCkBAIC00
LDkxICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4K
IDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgY29uc2lzdGVu
Y3kgb2YgSW5kZXhlZERCJ3MgY3Vyc29yIG9iamVjdHMuIik7Ci0KLXRlc3QoKTsKLQotZnVuY3Rp
b24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2N1cnNvci1pbmNvbnNpc3RlbmN5JykiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17
Ci0gICAgdmFyIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0K
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIp
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldFZl
cnNpb25TdWNjZXNzKCkKLXsKLSAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKLSAg
ICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQg
PSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gb3BlbkJh
c2ljQ3Vyc29yOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIHZhciBv
YmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ2Jhc2ljU3RvcmUnKSIpOwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnc29t
ZVZhbHVlMScsICdzb21lS2V5MScpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIp
OwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnc29tZVZhbHVlMicsICdzb21lS2V5
MicpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2co
Im9iamVjdFN0b3JlLmFkZCgnc29tZVZhbHVlMycsICdzb21lS2V5MycpLm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgn
c29tZVZhbHVlNCcsICdzb21lS2V5NCcpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
ayIpOwotCi19Ci0KLWZ1bmN0aW9uIG9wZW5CYXNpY0N1cnNvcigpCi17Ci0gICAgZGVidWcoIm9w
ZW5CYXNpY0N1cnNvcigpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlv
bihbJ2Jhc2ljU3RvcmUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICB0cmFu
cy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21wbGV0
ZSA9IHRyYW5zYWN0aW9uQ29tcGxldGU7Ci0KLSAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxv
d2VyQm91bmQoInNvbWVLZXkxIik7Ci0gICAgc2VsZi5vYmplY3RTdG9yZSA9IGV2YWxBbmRMb2co
InRyYW5zLm9iamVjdFN0b3JlKCdiYXNpY1N0b3JlJykiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygib2JqZWN0U3RvcmUub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKLSAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGNoZWNrQ3Vyc29yOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotICAgIGNvdW50ZXIgPSAxOwotfQotCi1zdG9yZWRDdXJzb3IgPSBudWxs
OwotZnVuY3Rpb24gY2hlY2tDdXJzb3IoKQotewotICAgIGRlYnVnKCIiKQotICAgIGRlYnVnKCJj
aGVja0N1cnNvcigpIik7Ci0gICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkgewot
ICAgICAgICBzaG91bGRCZSgiY291bnRlciIsICI1Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgaWYgKHN0b3JlZEN1cnNvciA9PSBudWxsKQotICAgICAgc3RvcmVkQ3Vyc29yID0gZXZh
bEFuZExvZygic3RvcmVkQ3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgc2hv
dWxkQmVUcnVlKCJzdG9yZWRDdXJzb3IgPT09IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoInN0b3JlZEN1cnNvci5rZXkiLCAic29tZUtleSIgKyBjb3Vu
dGVyKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5
IiwgInNvbWVLZXkiICsgY291bnRlcik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzdG9y
ZWRDdXJzb3IudmFsdWUiLCAic29tZVZhbHVlIiArIGNvdW50ZXIpOwotICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZSIsICJzb21lVmFsdWUiICsgY291
bnRlcik7Ci0gICAgY291bnRlcisrOwotICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1
bHQuY29udGludWUoKSIpOwotfQotCi1mdW5jdGlvbiB0cmFuc2FjdGlvbkNvbXBsZXRlKCkKLXsK
LSAgICBkZWJ1ZygidHJhbnNhY3Rpb25Db21wbGV0ZSgpIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7
Ci19Ci0KLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2N1cnNvci1pbmNvbnNp
c3RlbmN5LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWluZGV4LWRlbGV0ZS5odG1s
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWluZGV4LWRlbGV0ZS5odG1s
CmluZGV4IDFjNjMwMDczZjU3MzE5YmE1N2QxNzNhYTc0MmI3OTI4YzEyZjU5YWMuLmFkY2E3OGVj
OTRhMjRlNWY4MGJmODg1ZGQxMTJlYTc3NDE3ZjQ5NDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1pbmRleC1kZWxldGUuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItaW5kZXgtZGVsZXRlLmh0bWwKQEAgLTQsMTE1
ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwv
aGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mg
b3BlbkN1cnNvci4iKTsKLQotdGVzdCgpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1v
dmVWZW5kb3JQcmVmaXhlcygpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
b3BlbignY3Vyc29yLWluZGV4LWRlbGV0ZScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBv
cGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIHZhciBkYiA9IGV2YWxBbmRM
b2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IHNldFZlcnNpb25TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCi17Ci0gICAg
ZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7Ci0gICAgc2VsZi50cmFucyA9IGV2YWxBbmRM
b2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJh
bnMgIT09IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJh
Y2s7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IG9wZW5DdXJzb3I7Ci0KLSAgICBkZWxldGVBbGxP
YmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCd0ZXN0JykiKTsKLSAgICBldmFsQW5kTG9nKCJv
YmplY3RTdG9yZS5jcmVhdGVJbmRleCgndGVzdEluZGV4JywgJ3gnKSIpOwotCi0gICAgZXZhbEFu
ZExvZygib2JqZWN0U3RvcmUuYWRkKHt4OiAxfSwgJ215S2V5MScpIik7Ci0gICAgZXZhbEFuZExv
Zygib2JqZWN0U3RvcmUuYWRkKHt4OiAyfSwgJ215S2V5MicpIik7Ci0gICAgZXZhbEFuZExvZygi
b2JqZWN0U3RvcmUuYWRkKHt4OiAzfSwgJ215S2V5MycpIik7Ci0gICAgZXZhbEFuZExvZygib2Jq
ZWN0U3RvcmUuYWRkKHt4OiA0fSwgJ215S2V5NCcpIik7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5DdXJz
b3IoKQotewotICAgIGRlYnVnKCJvcGVuQ3Vyc29yMSIpOwotICAgIGV2YWxBbmRMb2coInRyYW5z
ID0gZGIudHJhbnNhY3Rpb24oWyd0ZXN0J10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7
Ci0gICAga2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKDEpOwotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgndGVzdCcpLmluZGV4KCd0ZXN0SW5kZXgn
KS5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29y
U3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LSAgICBjb3VudGVyID0gMTsKLX0KLQotZnVuY3Rpb24gY3Vyc29yU3VjY2VzcygpCi17Ci0gICAg
aWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkgewotICAgICAgICBzaG91bGRCZSgiY291
bnRlciIsICI1Iik7Ci0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RT
dG9yZSgndGVzdCcpLmluZGV4KCd0ZXN0SW5kZXgnKS5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOwot
ICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvckVtcHR5OwotICAgICAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICB2YXIgZGVsZXRlUmVxdWVzdCA9IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1
bHQuZGVsZXRlKCkiKTsKLSAgICBkZWxldGVSZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAiY291
bnRlcisrIik7Ci0gICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgp
Iik7Ci19Ci0KLWZ1bmN0aW9uIGN1cnNvckVtcHR5KCkKLXsKLSAgICBzaG91bGRCZU51bGwoImV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gYWRkT2JqZWN0Owot
fQotCi1mdW5jdGlvbiBhZGRPYmplY3QoKQotewotICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIu
dHJhbnNhY3Rpb24oWyd0ZXN0J10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAg
b2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3Jl
KCd0ZXN0JykiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKHt4
OiAxfSwgJ215S2V5MScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuQ3Vyc29yMjsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVu
Y3Rpb24gb3BlbkN1cnNvcjIoKQotewotICAgIGRlYnVnKCJvcGVuQ3Vyc29yMiIpOwotICAgIGV2
YWxBbmRMb2coImluZGV4ID0gZXZlbnQudGFyZ2V0LnNvdXJjZS5pbmRleCgndGVzdEluZGV4Jyki
KTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXgub3BlbkN1cnNvcihrZXlSYW5nZSki
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZU9iamVjdDsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZGVsZXRlT2Jq
ZWN0KCkKLXsKLSAgICBzaG91bGRCZU5vbk51bGwoZXZlbnQudGFyZ2V0LnJlc3VsdCk7Ci0gICAg
ZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5kZWxldGUoKSIpOwotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleC5nZXQoMSkiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHZl
cmlmeU9iamVjdERlbGV0ZWQ7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHZlcmlmeU9iamVjdERlbGV0ZWQoKQotewotICAgIHNo
b3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgInVuZGVmaW5lZCIpOwotICAgIGZpbmlzaEpT
VGVzdCgpOwotfQotCi0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jdXJzb3It
aW5kZXgtZGVsZXRlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWtleS1vcmRlci5o
dG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWtleS1vcmRlci5odG1s
CmluZGV4IDNhMTFlNjkyOWI5YzRiYzljZGIzYzNhYjIxMmE3MGM2MjlkYTcwMDguLjQwMzA5ZGU0
NjgzZTY2Njc4ZGMyNzBmNjY3Mjk2NGU3MzA1M2RiNTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1rZXktb3JkZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3Ita2V5LW9yZGVyLmh0bWwKQEAgLTQsMjMwICs0LDcg
QEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4K
IDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGtleXMgb3Jk
ZXJpbmcgYW5kIHJlYWRiYWNrIGZyb20gY3Vyc29ycy4iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17
Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIHByZXBhcmVEYXRhYmFzZSgpOwot
fQotCi1mdW5jdGlvbiBwcmVwYXJlRGF0YWJhc2UoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBl
dmFsQW5kTG9nKCJvcGVucmVxID0gaW5kZXhlZERCLm9wZW4oJ2N1cnNvci1rZXktb3JkZXInKSIp
OwotICAgIG9wZW5yZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIG9w
ZW5yZXEub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGV2YWxBbmRMb2coImRiID0g
b3BlbnJlcS5yZXN1bHQiKTsKLSAgICAgICAgZXZhbEFuZExvZygidmVycmVxID0gZGIuc2V0VmVy
c2lvbignMScpIik7Ci0gICAgICAgIHZlcnJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci0gICAgICAgIHZlcnJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAg
ICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7Ci0gICAgICAg
ICAgICB2ZXJyZXEucmVzdWx0Lm9uY29tcGxldGUgPSBwb3B1bGF0ZVN0b3JlOwotICAgICAgICB9
OwotICAgIH07Ci19Ci0KLXNlbGYua2V5cyA9IFsKLSAgICAiLUluZmluaXR5IiwKLSAgICAiLU51
bWJlci5NQVhfVkFMVUUiLAotICAgICItMSIsCi0gICAgIi1OdW1iZXIuTUlOX1ZBTFVFIiwKLSAg
ICAiMCIsCi0gICAgIk51bWJlci5NSU5fVkFMVUUiLAotICAgICIxIiwKLSAgICAiTnVtYmVyLk1B
WF9WQUxVRSIsCi0gICAgIkluZmluaXR5IiwKLQotICAgICJuZXcgRGF0ZSgwKSIsCi0gICAgIm5l
dyBEYXRlKDEwMDApIiwKLSAgICAibmV3IERhdGUoMTMxNzM5OTkzMTAyMykiLAotCi0gICAgIicn
IiwKLSAgICAiJ1x4MDAnIiwKLSAgICAiJ2EnIiwKLSAgICAiJ2FhJyIsCi0gICAgIidiJyIsCi0g
ICAgIidiYSciLAotCi0gICAgIidceEEyJyIsIC8vIFUrMDBBMiBDRU5UIFNJR04KLSAgICAiJ1x1
NkMzNCciLCAvLyBVKzZDMzQgQ0pLIFVOSUZJRUQgSURFT0dSQVBIICh3YXRlcikKLSAgICAiJ1x1
RDgzNFx1REQxRSciLCAvLyBVKzFEMTFFIE1VU0lDQUwgU1lNQk9MIEctQ0xFRiAoVVRGLTE2IHN1
cnJvZ2F0ZSBwYWlyKQotICAgICInXHVGRkZEJyIsIC8vIFUrRkZGRCBSRVBMQUNFTUVOVCBDSEFS
QUNURVIKLQotICAgICJbXSIsCi0KLSAgICAiWy1JbmZpbml0eV0iLAotICAgICJbLU51bWJlci5N
QVhfVkFMVUVdIiwKLSAgICAiWy0xXSIsCi0gICAgIlstTnVtYmVyLk1JTl9WQUxVRV0iLAotICAg
ICJbMF0iLAotICAgICJbTnVtYmVyLk1JTl9WQUxVRV0iLAotICAgICJbMV0iLAotICAgICJbTnVt
YmVyLk1BWF9WQUxVRV0iLAotICAgICJbSW5maW5pdHldIiwKLQotICAgICJbbmV3IERhdGUoMCld
IiwKLSAgICAiW25ldyBEYXRlKDEwMDApXSIsCi0gICAgIltuZXcgRGF0ZSgxMzE3Mzk5OTMxMDIz
KV0iLAotCi0gICAgIlsnJ10iLAotICAgICJbJ1x4MDAnXSIsCi0gICAgIlsnYSddIiwKLSAgICAi
WydhYSddIiwKLSAgICAiWydiJ10iLAotICAgICJbJ2JhJ10iLAotCi0gICAgIlsnXHhBMiddIiwg
Ly8gVSswMEEyIENFTlQgU0lHTgotICAgICJbJ1x1NkMzNCddIiwgLy8gVSs2QzM0IENKSyBVTklG
SUVEIElERU9HUkFQSCAod2F0ZXIpCi0gICAgIlsnXHVEODM0XHVERDFFJ10iLCAvLyBVKzFEMTFF
IE1VU0lDQUwgU1lNQk9MIEctQ0xFRiAoVVRGLTE2IHN1cnJvZ2F0ZSBwYWlyKQotICAgICJbJ1x1
RkZGRCddIiwgLy8gVStGRkZEIFJFUExBQ0VNRU5UIENIQVJBQ1RFUgotCi0gICAgIltbXV0iLAot
Ci0gICAgIltbXSwgW11dIiwKLSAgICAiW1tdLCBbXSwgW11dIiwKLQotICAgICJbW1tdXV0iLAot
ICAgICJbW1tbXV1dXSIKLV07Ci0KLWZ1bmN0aW9uIGNvbXBhcmUoYSwgYikKLXsKLSAgICBpZiAo
dHlwZW9mIGEgIT09IHR5cGVvZiBiKSB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0K
LSAgICBzd2l0Y2ggKHR5cGVvZiBhKSB7Ci0gICAgICAgIGNhc2UgJ3VuZGVmaW5lZCc6IC8vIE5v
dCB2YWxpZCBrZXlzLCBidXQgY29tcGFyZSBhbnl3YXkuCi0gICAgICAgIGNhc2UgJ2Jvb2xlYW4n
OiAvLyBOb3QgdmFsaWQga2V5cywgYnV0IGNvbXBhcmUgYW55d2F5LgotICAgICAgICBjYXNlICdz
dHJpbmcnOgotICAgICAgICAgICAgcmV0dXJuIGEgPT09IGI7Ci0gICAgICAgIGNhc2UgJ251bWJl
cic6Ci0gICAgICAgICAgICBpZiAoYSA9PT0gYikgewotICAgICAgICAgICAgICAgIHJldHVybiAo
YSAhPT0gMCkgfHwgKDEgLyBhID09PSAxIC8gYik7IC8vIDAgaXNuJ3QgLTAKLSAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGEgIT09IGEgJiYgYiAhPT0gYjsgLy8g
TmFOIGlzIE5hTgotICAgICAgICAgICAgfQotICAgICAgICBjYXNlICdvYmplY3QnOgotICAgICAg
ICAgICAgaWYgKGEgaW5zdGFuY2VvZiBEYXRlICYmIGIgaW5zdGFuY2VvZiBEYXRlKSB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuICthID09PSArYjsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoYSBp
bnN0YW5jZW9mIEFycmF5ICYmIGIgaW5zdGFuY2VvZiBBcnJheSkgewotICAgICAgICAgICAgICAg
IGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGEubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb21wYXJl
KGFbaV0sIGJbaV0pKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBGb3IgdGhlIHB1cnBv
c2VzIG9mIHRoaXMgdGVzdCwgb3RoZXIgb2JqZWN0cyBkb24ndCBjb3VudAotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLX0KLQotZnVuY3Rpb24gcG9wdWxhdGVTdG9yZSgpCi17Ci0gICAgZGVidWcoIiIp
OwotICAgIGRlYnVnKCJwb3B1bGF0aW5nIHN0b3JlLi4uIik7Ci0gICAgZXZhbEFuZExvZygidHJh
bnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIp
OwotICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7Iik7
Ci0gICAgdHJhbnMub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHRyYW5z
Lm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB2YXIgY291bnQgPSAwOwot
ICAgIGtleXMuZm9yRWFjaChmdW5jdGlvbihrZXkpIHsKLSAgICAgICAgZXZhbEFuZExvZygic3Rv
cmUucHV0KCIgKyAoY291bnQrKykgKyAiLCAiICsga2V5ICsgIikiKTsKLSAgICB9KTsKLSAgICB0
cmFucy5vbmNvbXBsZXRlID0gY2hlY2tTdG9yZTsKLX0KLQotZnVuY3Rpb24gY2hlY2tTdG9yZSgp
Ci17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJpdGVyYXRpbmcgY3Vyc29yLi4uIik7Ci0g
ICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2Fj
dGlvbi5SRUFEX09OTFkpIik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RT
dG9yZSgnc3RvcmUnKTsiKTsKLSAgICB0cmFucy5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAg
IGV2YWxBbmRMb2coImNvdW50ID0gMCIpOwotICAgIGN1cnJlcSA9IGV2YWxBbmRMb2coImN1cnJl
cSA9IHN0b3JlLm9wZW5DdXJzb3IoKSIpOwotICAgIGN1cnJlcS5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci0gICAgY3VycmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAg
ICAgICBpZiAoY3VycmVxLnJlc3VsdCkgewotICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29y
ID0gY3VycmVxLnJlc3VsdCIpOwotICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJjb21wYXJlKGN1
cnNvci5rZXksICIgKyBrZXlzW2NvdW50XSArICIpIik7Ci0gICAgICAgICAgICBldmFsQW5kTG9n
KCJnZXRyZXEgPSBzdG9yZS5nZXQoY3Vyc29yLmtleSkiKTsKLSAgICAgICAgICAgIGdldHJlcS5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgICAgICBnZXRyZXEub25z
dWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJnZXRy
ZXEucmVzdWx0ID09PSBjb3VudCsrIik7Ci0gICAgICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVl
KCk7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc2hvdWxk
QmVUcnVlKCJjb3VudCA9PT0ga2V5cy5sZW5ndGgiKTsKLSAgICAgICAgICAgIGZpbmlzaFVwKCk7
Ci0gICAgICAgIH0KLSAgICB9OwotfQotCi1mdW5jdGlvbiBmaW5pc2hVcCgpCi17Ci0gICAgdGVz
dEtleUNvbXBhcmUoKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gdGVzdEtl
eUNvbXBhcmUoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygidmFsaWRhdGUgY29tcGFy
ZSBmdW5jdGlvbiIpOwotICAgIHZhciBjYXNlcyA9IFsKLSAgICAgICAgInVuZGVmaW5lZCIsCi0g
ICAgICAgICJ0cnVlIiwKLSAgICAgICAgImZhbHNlIiwKLSAgICAgICAgIjAiLAotICAgICAgICAi
LTAiLAotICAgICAgICAiMTIzIiwKLSAgICAgICAgIkluZmluaXR5IiwKLSAgICAgICAgIi1JbmZp
bml0eSIsCi0gICAgICAgICJOYU4iLAotICAgICAgICAiJyciLAotICAgICAgICAiJ2FiYyciLAot
ICAgICAgICAiJ3h5eiciLAotICAgICAgICAibmV3IERhdGUoMCkiLAotICAgICAgICAibmV3IERh
dGUoMWUzKSIsCi0gICAgICAgICJuZXcgRGF0ZSgxZTkpIiwKLSAgICAgICAgIltdIiwKLSAgICAg
ICAgIlsxMjNdIiwKLSAgICAgICAgIlsnYWJjJ10iLAotICAgICAgICAiWzEyMywgJ2FiYyddIiwK
LSAgICAgICAgIlsnYWJjJywgMTIzXSIsCi0gICAgICAgICJbW11dIiwKLSAgICAgICAgIltbMTIz
XV0iLAotICAgICAgICAiW1snYWJjJ11dIiwKLSAgICAgICAgIltbMTIzXSwgJ2FiYyddIiwKLSAg
ICAgICAgIltbMTIzXSwgMTIzXSIKLSAgICBdOwotCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBj
YXNlcy5sZW5ndGg7ICsraSkgewotICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGNhc2VzLmxl
bmd0aDsgKytqKSB7Ci0gICAgICAgICAgICBpZiAoaSA9PT0gaikgewotICAgICAgICAgICAgICAg
IHNob3VsZEJlVHJ1ZSgiY29tcGFyZSgiICsgY2FzZXNbaV0gKyAiLCAiICsgY2FzZXNbal0gKyAi
KSIpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBzaG91bGRCZUZhbHNl
KCJjb21wYXJlKCIgKyBjYXNlc1tpXSArICIsICIgKyBjYXNlc1tqXSArICIpIik7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2N1cnNvci1rZXktb3JkZXIuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9jdXJzb3ItcHJpbWFyeS1rZXktb3JkZXIuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2N1cnNvci1wcmltYXJ5LWtleS1vcmRlci5odG1sCmluZGV4IGE3YzM1ZTc5Yjky
OWE0NTNkNGEzYTgyNjEzZGU4OGUyNDFjM2FmYWUuLjNmMTkzYWJiNGNlYjJmZTExZmUxNTMwYjFi
YTcxOWI4YzhhYWUwZWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2N1cnNvci1wcmltYXJ5LWtleS1vcmRlci5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2N1cnNvci1wcmltYXJ5LWtleS1vcmRlci5odG1sCkBAIC0xLDEwOCArMSwxMCBA
QAogPGh0bWw+CiA8aGVhZD4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4K
LQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIHByaW1hcnkga2V5IG9yZGVyaW5nIGFuZCBy
ZWFkYmFjayBmcm9tIGN1cnNvcnMuIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92
ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBwcmVwYXJlRGF0YWJhc2UoKTsKLX0KLQotZnVuY3Rp
b24gcHJlcGFyZURhdGFiYXNlKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZXZhbEFuZExvZygi
b3BlblJlcXVlc3QgPSBpbmRleGVkREIub3BlbignY3Vyc29yLXByaW1hcnkta2V5LW9yZGVyJyki
KTsKLSAgICBvcGVuUmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0g
ICAgb3BlblJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGV2YWxBbmRM
b2coImRiID0gb3BlblJlcXVlc3QucmVzdWx0Iik7Ci0gICAgICAgIGV2YWxBbmRMb2coInZlcnNp
b25DaGFuZ2VSZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgICAgIHZlcnNpb25D
aGFuZ2VSZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAg
dmVyc2lvbkNoYW5nZVJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg
ICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7Ci0g
ICAgICAgICAgICBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleCcs
ICdpbmRleEtleScpIik7Ci0KLSAgICAgICAgICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0LnJlc3Vs
dC5vbmNvbXBsZXRlID0gcG9wdWxhdGVTdG9yZTsKLSAgICAgICAgfTsKLSAgICB9OwotfQotCi1z
ZWxmLmtleXMgPSBbCi0gICAgIi1JbmZpbml0eSIsCi0gICAgIi0yIiwKLSAgICAiLTEiLAotICAg
ICIwIiwKLSAgICAiMSIsCi0gICAgIjIiLAotICAgICJJbmZpbml0eSIsCi0KLSAgICAiJzAnIiwK
LSAgICAiJzEnIiwKLSAgICAiJzInIiwKLSAgICAiJ0EnIiwKLSAgICAiJ0InIiwKLSAgICAiJ0Mn
IiwKLSAgICAiJ2EnIiwKLSAgICAiJ2InIiwKLSAgICAiJ2MnIgotXTsKLQotCi1mdW5jdGlvbiBw
b3B1bGF0ZVN0b3JlKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInBvcHVsYXRpbmcg
c3RvcmUuLi4iKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9y
ZScsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUg
PSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsiKTsKLSAgICB0cmFucy5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9y
dENhbGxiYWNrOwotICAgIHZhciBjb3VudCA9IDA7Ci0gICAgdmFyIGluZGV4S2V5ID0gMDsKLSAg
ICB2YXIga2V5cyA9IHNlbGYua2V5cy5zbGljZSgpOwotICAgIGtleXMucmV2ZXJzZSgpOwotICAg
IGtleXMuZm9yRWFjaChmdW5jdGlvbihrZXkpIHsKLSAgICAgICAgdmFyIHZhbHVlID0geyBpbmRl
eEtleTogaW5kZXhLZXksIGNvdW50OiBjb3VudCsrIH07Ci0gICAgICAgIGV2YWxBbmRMb2coInN0
b3JlLnB1dCgiICsgSlNPTi5zdHJpbmdpZnkodmFsdWUpICsgIiwgIiArIGtleSArICIpIik7Ci0g
ICAgfSk7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IGNoZWNrU3RvcmU7Ci19Ci0KLWZ1bmN0aW9u
IGNoZWNrU3RvcmUoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiaXRlcmF0aW5nIGN1
cnNvci4uLiIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3Jl
JywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKSIpOwotICAgIGV2YWxBbmRMb2coInN0b3JlID0g
dHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7Iik7Ci0gICAgZXZhbEFuZExvZygiaW5kZXggPSBz
dG9yZS5pbmRleCgnaW5kZXgnKTsiKTsKLSAgICB0cmFucy5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNr
OwotICAgIGN1cnNvclJlcXVlc3QgPSBldmFsQW5kTG9nKCJjdXJzb3JSZXF1ZXN0ID0gaW5kZXgu
b3BlbkN1cnNvcigpIik7Ci0gICAgZXZhbEFuZExvZygiY291bnQgPSAwIik7Ci0gICAgdmFyIGlu
ZGV4S2V5ID0gMDsKLSAgICBjdXJzb3JSZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLSAgICBjdXJzb3JSZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAg
ICAgICBpZiAoY3Vyc29yUmVxdWVzdC5yZXN1bHQpIHsKLSAgICAgICAgICAgIGV2YWxBbmRMb2co
ImN1cnNvciA9IGN1cnNvclJlcXVlc3QucmVzdWx0Iik7Ci0gICAgICAgICAgICBzaG91bGRCZSgi
Y3Vyc29yLmtleSIsIFN0cmluZyhpbmRleEtleSkpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1
cnNvci5wcmltYXJ5S2V5Iiwgc2VsZi5rZXlzW2NvdW50KytdKTsKLSAgICAgICAgICAgIGN1cnNv
ci5jb250aW51ZSgpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc2hvdWxkQmVUcnVl
KCJjb3VudCA9PT0ga2V5cy5sZW5ndGgiKTsKLSAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwot
ICAgICAgICB9Ci0gICAgfTsKLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvY3Vyc29yLXByaW1hcnkta2V5LW9yZGVyLmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvY3Vyc29yLXJldmVyc2UtYnVnLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9jdXJzb3ItcmV2ZXJzZS1idWcuaHRtbAppbmRleCAxYTY2MWM0NmUwMDgyM2Q5NjFmNTc1
ZTc5NTEwNTk1MjdjNTVmNzAzLi5lYmVmNTkzODgwOTQ3NmE0MDYwYTNhZmQ1MTRhMDRkMDdjMmVj
M2MzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItcmV2
ZXJzZS1idWcuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3It
cmV2ZXJzZS1idWcuaHRtbApAQCAtNCwxMDcgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNl
cy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNj
cmlwdGlvbigiVGVzdCBJbmRleGVkREIga2V5cyBvcmRlcmluZyBhbmQgcmVhZGJhY2sgZnJvbSBj
dXJzb3JzLiIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhl
cygpOwotCi0gICAgcHJlcGFyZURhdGFiYXNlKCk7Ci19Ci0KLWZ1bmN0aW9uIHByZXBhcmVEYXRh
YmFzZSgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGV2YWxBbmRMb2coIm9wZW5yZXEgPSBpbmRl
eGVkREIub3BlbignY3Vyc29yLXJldmVyc2UtYnVnJykiKTsKLSAgICBvcGVucmVxLm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICBvcGVucmVxLm9uc3VjY2VzcyA9IGZ1bmN0
aW9uKCkgewotICAgICAgICBldmFsQW5kTG9nKCJkYiA9IG9wZW5yZXEucmVzdWx0Iik7Ci0gICAg
ICAgIGV2YWxBbmRMb2coInZlcnJlcSA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgICAgICB2
ZXJyZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICB2ZXJyZXEu
b25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBkZWxldGVBbGxPYmplY3RTdG9y
ZXMoZGIpOwotICAgICAgICAgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5j
cmVhdGVJbmRleCgnaW5kZXgnLCAnJykiKTsKLSAgICAgICAgICAgIHZlcnJlcS5yZXN1bHQub25j
b21wbGV0ZSA9IHBvcHVsYXRlU3RvcmU7Ci0gICAgICAgIH07Ci0gICAgfTsKLX0KLQotZnVuY3Rp
b24gcG9wdWxhdGVTdG9yZSgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJwb3B1bGF0
aW5nIHN0b3JlLi4uIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbign
c3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIGV2YWxBbmRMb2coInN0
b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7Iik7Ci0gICAgdHJhbnMub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVk
QWJvcnRDYWxsYmFjazsKLQotICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgxLCAxKSIpOwotICAg
IGV2YWxBbmRMb2coInN0b3JlLnB1dCgyLCAyKSIpOwotICAgIGV2YWxBbmRMb2coInN0b3JlLnB1
dCgzLCAzKSIpOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSB0ZXN0Q3Vyc29yOwotfQotCi12YXIg
dGVzdHMgPSBbCi0gICAgICAgICAgICAgICAge3VwcGVyQm91bmQ6IDcsIG9wZW46IGZhbHNlLCBl
eHBlY3RlZDogM30sCi0gICAgICAgICAgICAgICAge3VwcGVyQm91bmQ6IDcsIG9wZW46IHRydWUs
ICBleHBlY3RlZDogM30sCi0gICAgICAgICAgICAgICAge3VwcGVyQm91bmQ6IDMsIG9wZW46IGZh
bHNlLCBleHBlY3RlZDogM30sCi0gICAgICAgICAgICAgICAge3VwcGVyQm91bmQ6IDMsIG9wZW46
IHRydWUsICBleHBlY3RlZDogMn0KLSAgICAgICAgICAgIF07Ci0KLWZ1bmN0aW9uIHRlc3RDdXJz
b3IoKQotewotICAgIGRlYnVnKCJ0ZXN0Q3Vyc29yKCkiKTsKLQotICAgIGlmICh0ZXN0cy5sZW5n
dGggPT09IDApIHsKLSAgICAgICAgZGVidWcoIk5vIG1vcmUgdGVzdHMuIik7Ci0gICAgICAgIGZp
bmlzaEpTVGVzdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdGVzdCA9IHRlc3Rz
LnNoaWZ0KCk7Ci0KLSAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9y
ZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkiKTsKLSAgICB0cmFucy5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9y
dENhbGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSB0ZXN0Q3Vyc29yOwotICAgIGV2YWxB
bmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7Iik7Ci0gICAgZXZhbEFu
ZExvZygiaW5kZXggPSBzdG9yZS5pbmRleCgnaW5kZXgnKTsiKTsKLQotICAgIHZhciB0ZXN0RnVu
Y3Rpb24gPSBmdW5jdGlvbigpIHsKLSAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdCIpOwotICAgICAgICBpZiAoY3Vyc29yID09PSBudWxsKSB7Ci0gICAgICAg
ICAgICBkZWJ1ZygiY3Vyc29yIHNob3VsZCBub3QgYmUgbnVsbCIpOwotICAgICAgICAgICAgZmFp
bCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci5rZXkiLCAidGVzdC5leHBlY3RlZCIpOwotICAgICAgICBpZiAoInZhbHVlIiBpbiBj
dXJzb3IpCi0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgInRlc3QuZXhwZWN0
ZWQiKTsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgInRlc3QuZXhwZWN0
ZWQiKTsKLQotICAgICAgICAvLyBMZXQgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaC4KLSAgICB9Ci0K
LSAgICBkZWJ1ZygidXBwZXJCb3VuZDogIiArIHRlc3QudXBwZXJCb3VuZCArICIgb3BlbjogIiAr
IHRlc3Qub3BlbiArICIgZXhwZWN0ZWQ6ICIgKyB0ZXN0LmV4cGVjdGVkKTsKLSAgICBzdG9yZVJl
cSA9IGV2YWxBbmRMb2coInN0b3JlUmVxID0gc3RvcmUub3BlbkN1cnNvcihJREJLZXlSYW5nZS51
cHBlckJvdW5kKHRlc3QudXBwZXJCb3VuZCwgdGVzdC5vcGVuKSwgSURCQ3Vyc29yLlBSRVYpIik7
Ci0gICAgc3RvcmVSZXEub25zdWNjZXNzID0gdGVzdEZ1bmN0aW9uOwotCi0gICAgaW5kZXhSZXEg
PSBldmFsQW5kTG9nKCJpbmRleFJlcSA9IGluZGV4Lm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBw
ZXJCb3VuZCh0ZXN0LnVwcGVyQm91bmQsIHRlc3Qub3BlbiksIElEQkN1cnNvci5QUkVWKSIpOwot
ICAgIGluZGV4UmVxLm9uc3VjY2VzcyA9IHRlc3RGdW5jdGlvbjsKLQotICAgIGluZGV4S2V5UmVx
ID0gZXZhbEFuZExvZygiaW5kZXhLZXlSZXEgPSBpbmRleC5vcGVuS2V5Q3Vyc29yKElEQktleVJh
bmdlLnVwcGVyQm91bmQodGVzdC51cHBlckJvdW5kLCB0ZXN0Lm9wZW4pLCBJREJDdXJzb3IuUFJF
VikiKTsKLSAgICBpbmRleEtleVJlcS5vbnN1Y2Nlc3MgPSB0ZXN0RnVuY3Rpb247Ci19Ci0KLXRl
c3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2N1cnNvci1yZXZlcnNl
LWJ1Zy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXNraXAtZGVsZXRlZC5odG1s
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXNraXAtZGVsZXRlZC5odG1s
CmluZGV4IDUxYWNkMzRkNjQ1ZWJkZTEzNmI3MjJiNDAyY2VmOTNlOGFmZTYyODIuLmEwY2RiYmNh
YjFlODNiM2U5OTdlYjUxYTEzMzFkY2Q5ZTI5NjkxNDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1za2lwLWRlbGV0ZWQuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3Itc2tpcC1kZWxldGVkLmh0bWwKQEAgLTQsMjAw
ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwv
aGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mg
Y3Vyc29yIHNraXBzIGRlbGV0ZWQgZW50cmllcy4iKTsKLQotdmFyIG5hbWVzID0gWydBbHBoYScs
ICdCcmF2bycsICdDaGFybGllJywgJ0RlbHRhJywgJ0VjaG8nLCAnRm94dHJvdCcsICdHb2xmJywK
LSAgICAgICAgICAgICAnSG90ZWwnLCAnSW5kaWEnLCAnSnVsaWV0JywgJ0tpbG8nLCAnTGltYScs
ICdNaWtlJywgJ05vdmVtYmVyJywKLSAgICAgICAgICAgICAnT3NjYXInLCAnUGFwYScsICdRdWVi
ZWMnLCAnUm9tZW8nLCAnU2llcnJhJywgJ1RhbmdvJywgJ1VuaWZvcm0nLAotICAgICAgICAgICAg
ICdWaWN0b3InLCAnV2hpc2tleScsICdYLXJheScsICdZYW5rZWUnLCAnWnVsdSddOwotCi10ZXN0
KCk7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdjdXJzb3Itc2tpcC1kZWxl
dGVkJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVu
U3VjY2VzcygpCi17Ci0gICAgdmFyIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3
IHZlcnNpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1
bmN0aW9uIHNldFZlcnNpb25TdWNjZXNzKCkKLXsKLSAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nl
c3MoKToiKTsKLSAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJn
ZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwotICAgIHRy
YW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBs
ZXRlID0gYmFzaWNDdXJzb3JUZXN0OwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsK
LQotICAgIHZhciBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ3N0b3JlJywge2tleVBhdGg6ICdpZCd9KSIpOwotICAgIGV2YWxBbmRM
b2coIm9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCduYW1lSW5kZXgnLCAnbmFtZScpIik7Ci0gICAg
cmVzZXRPYmplY3RTdG9yZShmdW5jdGlvbigpIHt9KTsKLX0KLQotdmFyIHNpbGVudEVycm9ySGFu
ZGxlciA9IGZ1bmN0aW9uKCkgeyBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyB9Ci0KLWZ1bmN0aW9u
IHJlc2V0T2JqZWN0U3RvcmUoY2FsbGJhY2spCi17Ci0gICAgZGVidWcoIlxucmVzZXRPYmplY3RT
dG9yZSgpOiIpOwotICAgIGlmIChjYWxsYmFjayA9PT0gdW5kZWZpbmVkKQotICAgICAgICBjYWxs
YmFjayA9IGZ1bmN0aW9uICgpIHt9OwotCi0gICAgdmFyIG9iamVjdFN0b3JlID0gdHJhbnMub2Jq
ZWN0U3RvcmUoJ3N0b3JlJyk7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7
IGkrKykKLSAgICAgICAgb2JqZWN0U3RvcmUuZGVsZXRlKGkpLm9uZXJyb3IgPSBzaWxlbnRFcnJv
ckhhbmRsZXI7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykKLSAg
ICAgICAgb2JqZWN0U3RvcmUuYWRkKHtpZDogaSwgbmFtZTogbmFtZXNbaV19KS5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0KLSAgICBkZWJ1ZygiIik7Ci0gICAgY2FsbGJhY2so
KTsKLX0KLQotZnVuY3Rpb24gY29udGFpbnMoYXJyLCBvYmopCi17Ci0gICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgaWYgKGFycltpXSA9PSBvYmopCi0g
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12
YXIgY3Vyc29yOwotdmFyIGRlbGV0ZWQ7Ci12YXIgc2VlbjsKLQotZnVuY3Rpb24gdGVzdEN1cnNv
cihkZWxldGVMaXN0LCBjcmVhdGVDdXJzb3JDb21tYW5kLCBjYWxsYmFjaykKLXsKLSAgICBkZWJ1
ZygiXG50ZXN0Q3Vyc29yKCk6Iik7Ci0gICAgZGVsZXRlZCA9IFtdOwotICAgIHNlZW4gPSBbXTsK
LQotICAgIC8vIENyZWF0ZSB0aGUgY3Vyc29yLgotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKGNy
ZWF0ZUN1cnNvckNvbW1hbmQpOwotCi0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7Ci0gICAg
ICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0ID09IG51bGwpIHsKLSAgICAgICAgICAgIC8vIE1h
a2Ugc3VyZSB3ZSBoYXZlIHNlZW4gZXZlcnkgbm9uLWRlbGV0ZWQgaXRlbS4KLSAgICAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAg
ICBpZiAoY29udGFpbnMoZGVsZXRlZCwgaSkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotCi0gICAgICAgICAgICAgICAgaWYgKCFjb250YWlucyhzZWVuLCBpKSkKLSAgICAgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiQ3Vyc29yIGRpZCBub3Qgc2VlIGl0ZW0gd2l0aCBpZDogIiAr
IGkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBNYWtlIHN1cmUgd2UgdXNlZCBl
dmVyeSBydWxlIGluIHxkZWxldGVMaXN0fC4KLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgZGVsZXRlTGlzdC5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgICAgIGlmICghY29udGFp
bnMoc2VlbiwgZGVsZXRlTGlzdFtpXS5pZCkpCi0gICAgICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoImRlbGV0ZUxpc3QgcnVsZSB3aXRoIGlkOiAiICsgZGVsZXRlTGlzdFtpXS5pZCArICIgd2Fz
IG5ldmVyIHVzZWQuIik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGRlYnVnKCIiKTsK
LSAgICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LQotICAgICAgICBjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OwotICAgICAgICBkZWJ1Zyhl
dmVudC50YXJnZXQucmVzdWx0LnZhbHVlLmlkICsgIjogIiArIGV2ZW50LnRhcmdldC5yZXN1bHQu
dmFsdWUubmFtZSk7Ci0gICAgICAgIHNlZW4ucHVzaChldmVudC50YXJnZXQucmVzdWx0LnZhbHVl
LmlkKTsKLQotICAgICAgICAvLyBNYWtlIHN1cmUgd2UgZG9uJ3Qgc2VlIGFueSBkZWxldGVkIGl0
ZW1zLgotICAgICAgICBpZiAoY29udGFpbnMoZGVsZXRlZCwgZXZlbnQudGFyZ2V0LnJlc3VsdC52
YWx1ZS5pZCkpCi0gICAgICAgICAgICB0ZXN0RmFpbGVkKCJDdXJzb3IgaGl0IHByZXZpb3VzbHkg
ZGVsZXRlZCBlbGVtZW50LiIpOwotCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVsZXRl
TGlzdC5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQu
dmFsdWUuaWQgPT0gZGVsZXRlTGlzdFtpXS5pZCkgewotICAgICAgICAgICAgICAgIC8vIERlbGV0
ZSBvYmplY3RzIHRhcmdldGVkIGJ5IHRoaXMgaWQuCi0gICAgICAgICAgICAgICAgdmFyIHRhcmdl
dHMgPSBkZWxldGVMaXN0W2ldLnRhcmdldHM7Ci0gICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9
IDA7IGogPCB0YXJnZXRzLmxlbmd0aDsgaisrKSB7Ci0gICAgICAgICAgICAgICAgICAgIGRlbGV0
ZWQucHVzaCh0YXJnZXRzW2pdKTsKLSAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKS5kZWxldGUoIiArIHRh
cmdldHNbal0gKyAiKSIpOwotICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGogPT0gdGFy
Z2V0cy5sZW5ndGggLSAxKQotICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbigpIHsgY3Vyc29yLmNvbnRpbnVlKCk7IH0KLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAg
ICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBiYXNpY0N1cnNv
clRlc3QoKQotewotICAgIGRlYnVnKCJiYXNpY0N1cnNvclRlc3QoKSIpOwotCi0gICAgZXZhbEFu
ZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJF
QURfV1JJVEUpIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNr
OwotICAgIHRyYW5zLm9uY29tcGxldGUgPSB0cmFuc2FjdGlvbkNvbXBsZXRlOwotCi0gICAgdmFy
IGRlbGV0ZXMgPSBbe2lkOiAxLCB0YXJnZXRzOiBbMF19LAotICAgICAgICAgICAgICAgICAgIHtp
ZDogMiwgdGFyZ2V0czogW25hbWVzLmxlbmd0aCAtIDFdfSwKLSAgICAgICAgICAgICAgICAgICB7
aWQ6IDMsIHRhcmdldHM6IFs1LDYsN119LAotICAgICAgICAgICAgICAgICAgIHtpZDogMTAsIHRh
cmdldHM6IFsxMF19LAotICAgICAgICAgICAgICAgICAgIHtpZDogMTIsIHRhcmdldHM6IFsxM119
LAotICAgICAgICAgICAgICAgICAgIHtpZDogMTUsIHRhcmdldHM6IFsxNF19LAotICAgICAgICAg
ICAgICAgICAgIHtpZDogMjAsIHRhcmdldHM6IFsxNywxOF19Ci0gICAgICAgICAgICAgICAgICAg
XTsKLQotICAgIHRlc3RDdXJzb3IoZGVsZXRlcywgInRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScp
Lm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgwKSkiLCBmdW5jdGlvbigpIHsgcmVz
ZXRPYmplY3RTdG9yZShyZXZlcnNlQ3Vyc29yVGVzdCk7IH0pOwotfQotCi1mdW5jdGlvbiByZXZl
cnNlQ3Vyc29yVGVzdCgpCi17Ci0gICAgZGVidWcoInJldmVyc2VDdXJzb3JUZXN0KCk6Iik7Ci0K
LSAgICB2YXIgZGVsZXRlcyA9IFt7aWQ6IDI0LCB0YXJnZXRzOiBbbmFtZXMubGVuZ3RoIC0gMV19
LAotICAgICAgICAgICAgICAgICAgIHtpZDogMjMsIHRhcmdldHM6IFswXX0sCi0gICAgICAgICAg
ICAgICAgICAge2lkOiAyMiwgdGFyZ2V0czogWzIwLCAxOSwgMThdfSwKLSAgICAgICAgICAgICAg
ICAgICB7aWQ6IDE1LCB0YXJnZXRzOiBbMTVdfSwKLSAgICAgICAgICAgICAgICAgICB7aWQ6IDEz
LCB0YXJnZXRzOiBbMTJdfSwKLSAgICAgICAgICAgICAgICAgICB7aWQ6IDEwLCB0YXJnZXRzOiBb
MTFdfSwKLSAgICAgICAgICAgICAgICAgICB7aWQ6IDUsIHRhcmdldHM6IFs3LDhdfQotICAgICAg
ICAgICAgICAgICAgIF07Ci0KLQotICAgIHRlc3RDdXJzb3IoZGVsZXRlcywgInRyYW5zLm9iamVj
dFN0b3JlKCdzdG9yZScpLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgwKSwgSURC
Q3Vyc29yLlBSRVYpIiwgZnVuY3Rpb24oKSB7IHJlc2V0T2JqZWN0U3RvcmUoaW5kZXhDdXJzb3JU
ZXN0KTsgfSk7Ci19Ci0KLWZ1bmN0aW9uIGluZGV4Q3Vyc29yVGVzdCgpCi17Ci0gICAgZGVidWco
ImluZGV4Q3Vyc29yVGVzdCgpOiIpOwotCi0gICAgdmFyIGRlbGV0ZXMgPSBbe2lkOiAxLCB0YXJn
ZXRzOiBbMF19LAotICAgICAgICAgICAgICAgICAgIHtpZDogMiwgdGFyZ2V0czogW25hbWVzLmxl
bmd0aCAtIDFdfSwKLSAgICAgICAgICAgICAgICAgICB7aWQ6IDMsIHRhcmdldHM6IFs1LDYsN119
LAotICAgICAgICAgICAgICAgICAgIHtpZDogMTAsIHRhcmdldHM6IFsxMF19LAotICAgICAgICAg
ICAgICAgICAgIHtpZDogMTIsIHRhcmdldHM6IFsxM119LAotICAgICAgICAgICAgICAgICAgIHtp
ZDogMTUsIHRhcmdldHM6IFsxNF19LAotICAgICAgICAgICAgICAgICAgIHtpZDogMjAsIHRhcmdl
dHM6IFsxNywxOF19Ci0gICAgICAgICAgICAgICAgICAgXTsKLQotICAgIHRlc3RDdXJzb3IoZGVs
ZXRlcywgInRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpLmluZGV4KCduYW1lSW5kZXgnKS5vcGVu
Q3Vyc29yKElEQktleVJhbmdlLmxvd2VyQm91bmQoJ0FscGhhJykpIiwgZnVuY3Rpb24oKSB7IH0p
OwotfQotCi1mdW5jdGlvbiB0cmFuc2FjdGlvbkNvbXBsZXRlKCkKLXsKLSAgICBkZWJ1ZygidHJh
bnNhY3Rpb25Db21wbGV0ZSgpOiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLTwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jdXJzb3Itc2tpcC1kZWxldGVkLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXVwZGF0ZS12YWx1ZS1hcmd1bWVudC1yZXF1aXJlZC5o
dG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXVwZGF0ZS12YWx1ZS1h
cmd1bWVudC1yZXF1aXJlZC5odG1sCmluZGV4IGMzZmRjN2VjOGFhYmNhMWYwYmNiNDZjNzRmZDI5
ZjdlOWY3ZDcyM2UuLjY4NTljN2NkZjY0Y2ZkMmUxMWY5MDlhYmJjNjliMWExNWFlZDc0NjIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci11cGRhdGUtdmFs
dWUtYXJndW1lbnQtcmVxdWlyZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9jdXJzb3ItdXBkYXRlLXZhbHVlLWFyZ3VtZW50LXJlcXVpcmVkLmh0bWwKQEAgLTEsODQg
KzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIu
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxz
Y3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBjdXJzb3IudXBkYXRlIHJlcXVp
cmVkIGFyZ3VtZW50cyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQ
cmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVz
Y3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxB
bmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IHRlc3RHcm91cDE7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDEoKQotewotICAgIGRlbGV0ZUFsbE9i
amVjdFN0b3JlcyhkYik7Ci0KLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdhdXRvSW5jcmVtZW50JywgeyBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOyIp
OwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVu
Q3Vyc29yKCk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgIHRl
c3RHcm91cDIoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDIoKQotewotICAgIGtl
eXMgPSBldmFsQW5kTG9nKCJrZXlzID0gWzEsIC0xLCAwLCAxMCwgMjAwMCwgJ3EnLCAneicsICd0
d28nLCAnYicsICdhJ107Iik7Ci0KLSAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4
ID0gMDsiKTsKLQotICAgIGZvciAoaSBpbiBrZXlzKSB7Ci0gICAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZCgnZm9vJywga2V5c1tpXSk7Iik7Ci0gICAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgaWYgKCsra2V5SW5kZXgg
PT0ga2V5cy5sZW5ndGgpIHsKLSAgICAgICAgICB0ZXN0R3JvdXAzKCk7Ci0gICAgICAgIH0KLSAg
ICAgIH07Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXAzKCkKLXsKLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewotICAgICAgICBjdXJzb3IgPSBldmFsQW5k
TG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgICAgICBpZiAoY3Vyc29y
KSB7Ci0gICAgICAgICAgICBzaG91bGRUaHJvdygiY3Vyc29yLnVwZGF0ZSgpOyIpOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgdGVzdEZhaWxlZCgiY3Vyc29yIHdhcyBudWxsIik7Ci0g
ICAgICAgIH0KLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfQotfQotCi0KLXRlc3QoKTsK
LQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2N1cnNvci11cGRhdGUtdmFsdWUt
YXJndW1lbnQtcmVxdWlyZWQuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+
Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci11cGRh
dGUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci11cGRhdGUuaHRt
bAppbmRleCA5NjU0YzYyNTBmODEwZjE1MDE0NWIyZDg2OTcwYjcxNDY2ZTYzMTdkLi5hNDZhNzBk
NDcwZjRjMGQ1MDFjYzJiZWFkM2JmYWFkN2I4YzI3M2VjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItdXBkYXRlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXVwZGF0ZS5odG1sCkBAIC00LDIyMiArNCw3IEBACiA8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9k
eT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGN1cnNvciB1cGRh
dGUuIik7Ci0KLXRlc3QoKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9y
UHJlZml4ZXMoKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2N1
cnNvci11cGRhdGUnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0
aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICB2YXIgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJz
aW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9u
U3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJzZXRWZXJz
aW9uU3VjY2VzcygpOiIpOwotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7
Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIHRyYW5z
Lm9uY29tcGxldGUgPSBvcGVuQmFzaWNDdXJzb3I7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9y
ZXMoZGIpOwotCi0gICAgdmFyIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUg
PSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnYmFzaWNTdG9yZScpIik7Ci0gICAgZXZhbEFuZExvZygi
b2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlMScsICdteUtleTEnKS5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2siKTsKLSAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ215VmFs
dWUyJywgJ215S2V5MicpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOwotICAg
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnbXlWYWx1ZTMnLCAnbXlLZXkzJykub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7Ci0gICAgZXZhbEFuZExvZygib2JqZWN0U3Rv
cmUuYWRkKCdteVZhbHVlNCcsICdteUtleTQnKS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2siKTsKLQotICAgIHZhciBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3Jl
ID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2F1dG9JbmNyZW1lbnRTdG9yZScsIHthdXRvSW5jcmVt
ZW50OiB0cnVlfSkiKTsKLSAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ2ZvbzEnKS5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKLSAgICBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZS5hZGQoJ2ZvbzInKS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsK
LSAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ2ZvbzMnKS5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2siKTsKLSAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ2Zv
bzQnKS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKLQotICAgIHZhciBvYmpl
Y3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUo
J2tleVBhdGhTdG9yZScsIHtrZXlQYXRoOiAnaWQnfSkiKTsKLSAgICBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZS5jcmVhdGVJbmRleCgnbnVtYmVySW5kZXgnLCAnbnVtYmVyJykiKTsKLSAgICBldmFs
QW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoe251bWJlcjogMSwgaWQ6IDF9KS5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKLSAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQo
e251bWJlcjogMiwgaWQ6IDJ9KS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsK
LSAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoe251bWJlcjogMywgaWQ6IDN9KS5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKLSAgICBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZS5hZGQoe251bWJlcjogNCwgaWQ6IDR9KS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2siKTsKLX0KLQotZnVuY3Rpb24gb3BlbkJhc2ljQ3Vyc29yKCkKLXsKLSAgICBkZWJ1Zygi
b3BlbkJhc2ljQ3Vyc29yKCkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0
aW9uKFsnYmFzaWNTdG9yZScsICdhdXRvSW5jcmVtZW50U3RvcmUnLCAna2V5UGF0aFN0b3JlJ10s
IElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhw
ZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSB0cmFuc2FjdGlvbkNv
bXBsZXRlOwotCi0gICAga2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKCJteUtleTEi
KTsKLSAgICBzZWxmLm9iamVjdFN0b3JlID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUo
J2Jhc2ljU3RvcmUnKSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5v
cGVuQ3Vyc29yKGtleVJhbmdlKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYmFzaWNVcGRh
dGVDdXJzb3I7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci0gICAgY291bnRlciA9IDE7Ci19Ci0KLWZ1bmN0aW9uIGJhc2ljVXBkYXRlQ3Vyc29yKCkKLXsK
LSAgICBkZWJ1ZygiYmFzaWNVcGRhdGVDdXJzb3IoKSIpOwotICAgIHNob3VsZEJlKCJldmVudC50
YXJnZXQuc291cmNlIiwgIm9iamVjdFN0b3JlIik7Ci0gICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1
bHQgPT0gbnVsbCkgewotICAgICAgICBzaG91bGRCZSgiY291bnRlciIsICI1Iik7Ci0gICAgICAg
IGNvdW50ZXIgPSAxOwotCi0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmpl
Y3RTdG9yZSgnYmFzaWNTdG9yZScpLm9wZW5DdXJzb3Ioa2V5UmFuZ2UpIik7Ci0gICAgICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gYmFzaWNDaGVja0N1cnNvcjsKLSAgICAgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC51cGRhdGUoJ215
VXBkYXRlZFZhbHVlJyArIGNvdW50ZXIrKykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1
bmN0aW9uKCkgeyBldmFsQW5kTG9nKCJldmVudC50YXJnZXQuc291cmNlLmNvbnRpbnVlKCkiKTsg
fQotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1m
dW5jdGlvbiBiYXNpY0NoZWNrQ3Vyc29yKCkKLXsKLSAgICBkZWJ1ZygiYmFzaWNDaGVja0N1cnNv
cigpIik7Ci0gICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkgewotICAgICAgICBz
aG91bGRCZSgiY291bnRlciIsICI1Iik7Ci0gICAgICAgIGNvdW50ZXIgPSAxOwotCi0gICAgICAg
IGtleVJhbmdlID0gSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgxKTsKLSAgICAgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdhdXRvSW5jcmVtZW50U3RvcmUnKS5vcGVu
Q3Vyc29yKGtleVJhbmdlKSIpOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGF1dG9JbmNy
ZW1lbnRVcGRhdGVDdXJzb3I7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICJteUtleSIgKyBjb3VudGVyKTsK
LSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUiLCAi
bXlVcGRhdGVkVmFsdWUiICsgY291bnRlcisrKTsKLSAgICBldmFsQW5kTG9nKCJldmVudC50YXJn
ZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKLX0KLQotZnVuY3Rpb24gYXV0b0luY3JlbWVudFVwZGF0
ZUN1cnNvcigpCi17Ci0gICAgZGVidWcoImF1dG9JbmNyZW1lbnRVcGRhdGVDdXJzb3IoKSIpOwot
ICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0ID09IG51bGwpIHsKLSAgICAgICAgc2hvdWxkQmUo
ImNvdW50ZXIiLCAiNSIpOwotICAgICAgICBjb3VudGVyID0gMTsKLQotICAgICAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2F1dG9JbmNyZW1lbnRTdG9yZScpLm9w
ZW5DdXJzb3Ioa2V5UmFuZ2UpIik7Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYXV0b0lu
Y3JlbWVudENoZWNrQ3Vyc29yOwotICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LnVwZGF0ZSgnbXlVcGRhdGVkRm9vJyArIGNv
dW50ZXIrKykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeyBldmFsQW5k
TG9nKCJldmVudC50YXJnZXQuc291cmNlLmNvbnRpbnVlKCkiKTsgfQotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBhdXRvSW5jcmVt
ZW50Q2hlY2tDdXJzb3IoKQotewotICAgIGRlYnVnKCJhdXRvSW5jcmVtZW50Q2hlY2tDdXJzb3Io
KSIpOwotICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0ID09IG51bGwpIHsKLSAgICAgICAgc2hv
dWxkQmUoImNvdW50ZXIiLCAiNSIpOwotICAgICAgICBjb3VudGVyID0gMTsKLQotICAgICAgICBr
ZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQoMSk7Ci0gICAgICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgna2V5UGF0aFN0b3JlJykub3BlbkN1cnNvcihr
ZXlSYW5nZSkiKTsKLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBrZXlQYXRoVXBkYXRlQ3Vy
c29yOwotICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVz
dWx0LmtleSIsICJjb3VudGVyIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50
YXJnZXQucmVzdWx0LnZhbHVlIiwgIm15VXBkYXRlZEZvbyIgKyBjb3VudGVyKyspOwotICAgIGV2
YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOwotfQotCi1mdW5jdGlv
biBrZXlQYXRoVXBkYXRlQ3Vyc29yKCkKLXsKLSAgICBkZWJ1Zygia2V5UGF0aFVwZGF0ZUN1cnNv
cigpIik7Ci0gICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkgewotICAgICAgICBz
aG91bGRCZSgiY291bnRlciIsICI1Iik7Ci0gICAgICAgIGNvdW50ZXIgPSAxOwotCi0gICAgICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgna2V5UGF0aFN0b3JlJyku
b3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBrZXlQ
YXRoQ2hlY2tDdXJzb3I7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigiZXZlbnQudGFyZ2V0LnJlc3VsdC51cGRhdGUoe2lkOiAxMDAgKyBjb3VudGVyLCBu
dW1iZXI6IDEwMCArIGNvdW50ZXJ9KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIp
OwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQudXBkYXRl
KHtpZDogY291bnRlciwgbnVtYmVyOiAxMDAgKyBjb3VudGVyKyt9KSIpOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24oKSB7IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5zb3VyY2Uu
Y29udGludWUoKSIpIH07Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGtleVBhdGhDaGVja0N1cnNvcigpCi17Ci0gICAgZGVidWco
ImtleVBhdGhDaGVja0N1cnNvcigpIik7Ci0gICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0g
bnVsbCkgewotICAgICAgICBzaG91bGRCZSgiY291bnRlciIsICI1Iik7Ci0gICAgICAgIGNvdW50
ZXIgPSAxOwotCi0gICAgICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgxMDEp
OwotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2tleVBh
dGhTdG9yZScpLmluZGV4KCdudW1iZXJJbmRleCcpLm9wZW5LZXlDdXJzb3Ioa2V5UmFuZ2UpIik7
Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0ga2V5Q3Vyc29yOwotICAgICAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICJjb3VudGVyIik7
Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUuaWQiLCAiY291bnRlciIp
OwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLm51bWJlciIsIChjb3Vu
dGVyICsgMTAwKS50b1N0cmluZygpKTsKLSAgICBjb3VudGVyKys7Ci0gICAgZXZhbEFuZExvZygi
ZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7Ci19Ci0KLWZ1bmN0aW9uIGtleUN1cnNv
cigpCi17Ci0gICAgZGVidWcoImtleUN1cnNvcigpIik7Ci0gICAgaWYgKGV2ZW50LnRhcmdldC5y
ZXN1bHQgPT0gbnVsbCkgewotICAgICAgICBzaG91bGRCZSgiY291bnRlciIsICI1Iik7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5r
ZXkiLCAiY291bnRlciArIDEwMCIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0
LnByaW1hcnlLZXkiLCAiY291bnRlciIpOwotCi0gICAgdHJ5IHsKLSAgICAgICAgZGVidWcoImV2
ZW50LnRhcmdldC5yZXN1bHQudXBkYXRlKHtpZDogY291bnRlciwgbnVtYmVyOiBjb3VudGVyICsg
MjAwfSkiKTsKLSAgICAgICAgZXZlbnQudGFyZ2V0LnJlc3VsdC51cGRhdGUoe2lkOiBjb3VudGVy
LCBudW1iZXI6IGNvdW50ZXIgKyAyMDB9KTsKLSAgICAgICAgdGVzdEZhaWxlZCgiRXhwZWN0ZWQg
ZXhjZXB0aW9uLiIpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgY29kZSA9IGUuY29kZTsK
LSAgICAgICAgc2hvdWxkQmUoImNvZGUiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0FMTE9X
RURfRVJSIik7Ci0gICAgfQotCi0gICAgY291bnRlcisrOwotICAgIGV2ZW50LnRhcmdldC5yZXN1
bHQuY29udGludWUoKTsKLX0KLQotZnVuY3Rpb24gdHJhbnNhY3Rpb25Db21wbGV0ZSgpCi17Ci0g
ICAgZGVidWcoInRyYW5zYWN0aW9uQ29tcGxldGUoKSIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwot
fQotCi0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jdXJzb3ItdXBkYXRlLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YS1jb3JydXB0aW9uLmh0bWwgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhLWNvcnJ1cHRpb24uaHRtbAppbmRleCA1YzYyMmU3Yzc4
NDJlNzIyNjVmZWQwMmI3NTdlMDg1MTU0ZjBmMGYyLi45NTk3YzViMzUzNWZiY2ZmZDk1ZDc3MWM5
YTg3OWZiODk2OTFiMThlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9kYXRhLWNvcnJ1cHRpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9kYXRhLWNvcnJ1cHRpb24uaHRtbApAQCAtNCw3MSArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0K
LWRlc2NyaXB0aW9uKCJUZXN0IHRoYXQgZGF0YSBpbnNlcnRlZCBpbnRvIEluZGV4ZWREQiBkb2Vz
IG5vdCBnZXQgY29ycnVwdGVkIG9uIGRpc2suIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAg
IHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4
ZWREQi5vcGVuKCdkYXRhLWNvcnJ1cHRpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
b3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkZWJ1Zygib3BlblN1Y2Nl
c3MoKToiKTsKLSAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVz
dWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZl
cnNpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0
aW9uIHNldFZlcnNpb25TdWNjZXNzKCkKLXsKLSAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3Mo
KToiKTsKLSAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwotICAgIHRyYW5z
Lm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBsZXRl
ID0gYWRkRGF0YTsKLQotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBldmFs
QW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLX0KLQotdmFyIHRl
c3REYXRlID0gbmV3IERhdGUoJ0ZlYnJ1YXJ5IDI0LCAxOTU1IDEyOjAwOjA4Jyk7Ci0KLWZ1bmN0
aW9uIGFkZERhdGEoKQotewotICAgIGRlYnVnKCJhZGREYXRhKCk6Iik7Ci0gICAgdmFyIHRyYW5z
YWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ3N0b3Jl
TmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIHZhciByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUn
KS5hZGQoe3g6IHRlc3REYXRlfSwgJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGdldERh
dGE7Ci19Ci0KLWZ1bmN0aW9uIGdldERhdGEoKQotewotICAgIGRlYnVnKCJhZGREYXRhKCk6Iik7
Ci0gICAgdmFyIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFu
c2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7Ci0gICAg
dmFyIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gdHJhbnNhY3Rpb24ub2JqZWN0U3Rv
cmUoJ3N0b3JlTmFtZScpLmdldCgna2V5JykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRvQ2hlY2s7Ci19
Ci0KLWZ1bmN0aW9uIGRvQ2hlY2soKQotewotICAgIHNob3VsZEJlVHJ1ZSgiZXZlbnQudGFyZ2V0
LnJlc3VsdC54LnRvU3RyaW5nKCkgPT0gdGVzdERhdGUudG9TdHJpbmcoKSIpOwotICAgIGZpbmlz
aEpTVGVzdCgpOwotfQotCi10ZXN0KCk7Ci0KLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2RhdGEtY29ycnVwdGlvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNl
LWJhc2ljcy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtYmFz
aWNzLmh0bWwKaW5kZXggNzFlNWU1Njg0ZjRmMTQ5ZDFiZDgwYmIxMzhkNzFjZmZlOWEwZjlkOS4u
MTBlY2IwNTQ0ZTI2OWYxMTcxMzdmZjk3NzY4NTAxYjEzMTk1Yjk0MyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtYmFzaWNzLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtYmFzaWNzLmh0bWwKQEAgLTQsMTIx
ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwv
aGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgdGhlIGJhc2ljcyBv
ZiBJbmRleGVkREIncyBJREJEYXRhYmFzZS4iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAg
cmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRl
eGVkREIub3BlbignZGF0YWJhc2UtYmFzaWNzJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgc2VsZi5kYiA9IGV2YWxB
bmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IHNldFZlcnNpb25TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCi17Ci0g
ICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7Ci0gICAgc2VsZi50cmFucyA9IGV2YWxB
bmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgi
dHJhbnMgIT09IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2Fs
bGJhY2s7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgZGVidWcoIlRl
c3Rpbmcgc2V0VmVyc2lvbi4iKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygnZGIuc2V0VmVy
c2lvbigidmVyc2lvbiBhIiknKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb25B
Z2FpbjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0K
LQotZnVuY3Rpb24gc2V0VmVyc2lvbkFnYWluKCkKLXsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygnZGIuc2V0VmVyc2lvbigidmVyc2lvbiBiIiknKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGNyZWF0ZU9iamVjdFN0b3JlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjcmVhdGVPYmplY3RTdG9yZSgpCi17Ci0gICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJkYi52ZXJzaW9uIiwgInZlcnNpb24gYiIpOwotICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiZGIubmFtZSIsICJkYXRhYmFzZS1iYXNpY3MiKTsKLSAgICBzaG91
bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcyIsICJbXSIpOwotICAgIHNob3VsZEJlKCJkYi5vYmpl
Y3RTdG9yZU5hbWVzLmxlbmd0aCIsICIwIik7Ci0gICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3Jl
TmFtZXMuY29udGFpbnMoJycpIiwgImZhbHNlIik7Ci0gICAgc2hvdWxkQmVOdWxsKCJkYi5vYmpl
Y3RTdG9yZU5hbWVzWzBdIik7Ci0gICAgc2hvdWxkQmVOdWxsKCJkYi5vYmplY3RTdG9yZU5hbWVz
Lml0ZW0oMCkiKTsKLQotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygnZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoInRlc3QxMjMiKScpOwotICAgIGNoZWNrT2JqZWN0U3RvcmUoKTsKLSAgICBjb21t
aXRBbmRDb250aW51ZSgpOwotfQotCi1mdW5jdGlvbiBjaGVja09iamVjdFN0b3JlKCkKLXsKLSAg
ICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcyIsICJbJ3Rlc3QxMjMnXSIpOwotICAgIHNo
b3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIxIik7Ci0gICAgc2hvdWxkQmUo
ImRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJycpIiwgImZhbHNlIik7Ci0gICAgc2hvdWxk
QmUoImRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJ3Rlc3Q0NTYnKSIsICJmYWxzZSIpOwot
ICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCd0ZXN0MTIzJykiLCAi
dHJ1ZSIpOwotfQotCi1mdW5jdGlvbiBjb21taXRBbmRDb250aW51ZSgpCi17Ci0gICAgc2VsZi5z
ZXRUaW1lb3V0KHRlc3RTZXRWZXJzaW9uQWJvcnQsIDApOwotfQotCi1mdW5jdGlvbiB0ZXN0U2V0
VmVyc2lvbkFib3J0KCkKLXsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygnZGIuc2V0VmVyc2lv
bigidmVyc2lvbiBjIiknKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFub3RoZXJP
YmplY3RTdG9yZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLX0KLQotZnVuY3Rpb24gY3JlYXRlQW5vdGhlck9iamVjdFN0b3JlKCkKLXsKLSAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImRiLnZlcnNpb24iLCAidmVyc2lvbiBjIik7Ci0gICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJkYi5uYW1lIiwgImRhdGFiYXNlLWJhc2ljcyIpOwotICAgIGNoZWNr
T2JqZWN0U3RvcmUoKTsKLQotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygnZGIuY3JlYXRl
T2JqZWN0U3RvcmUoInRlc3Q0NTYiKScpOwotICAgIHZhciBzZXRWZXJzaW9uVHJhbnMgPSBldmFs
QW5kTG9nKCJzZXRWZXJzaW9uVHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hv
dWxkQmVUcnVlKCJzZXRWZXJzaW9uVHJhbnMgIT09IG51bGwiKTsKLSAgICBzZXRWZXJzaW9uVHJh
bnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOwotICAgIHNldFZlcnNp
b25UcmFucy5vbmFib3J0ID0gY2hlY2tNZXRhZGF0YTsKLSAgICBzZXRWZXJzaW9uVHJhbnMuYWJv
cnQoKTsKLX0KLQotZnVuY3Rpb24gY2hlY2tNZXRhZGF0YSgpCi17Ci0gICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJkYi52ZXJzaW9uIiwgInZlcnNpb24gYiIpOwotICAgIGNoZWNrT2JqZWN0U3Rv
cmUoKTsKLSAgICB0ZXN0Q2xvc2UoKTsKLX0KLQotZnVuY3Rpb24gdGVzdENsb3NlKCkKLXsKLSAg
ICBldmFsQW5kTG9nKCJkYi5jbG9zZSgpIik7Ci0gICAgZGVidWcoIk5vdyB0aGF0IHRoZSBjb25u
ZWN0aW9uIGlzIGNsb3NlZCwgdHJhbnNhY3Rpb24gY3JlYXRpb24gc2hvdWxkIGZhaWwiKTsKLSAg
ICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbigndGVzdDEyMycpIiwgIklE
QkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9BTExPV0VEX0VSUiIpOwotICAgIGRlYnVnKCJDYWxsIHR3
aWNlLCBtYWtlIHN1cmUgaXQncyBoYXJtbGVzcyIpOwotICAgIGV2YWxBbmRMb2coImRiLmNsb3Nl
KCkiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotdGVzdCgpOwotCi0KLTwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9kYXRhYmFzZS1iYXNpY3MuanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9kYXRhYmFzZS1uYW1lLXVuZGVmaW5lZC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvZGF0YWJhc2UtbmFtZS11bmRlZmluZWQuaHRtbAppbmRleCA3ODAwMjg2ZDlm
MWMxMDM2NTEwNTJiYzAzMjA3Nzg1Y2QyYzRhMTA1Li5iNmY5MTQ0NWUzZjIxNjdhMGQ4YTJkNTU2
MjliODVkOTA2NDhhOGRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9kYXRhYmFzZS1uYW1lLXVuZGVmaW5lZC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2RhdGFiYXNlLW5hbWUtdW5kZWZpbmVkLmh0bWwKQEAgLTEsMjUgKzEsMTAgQEAK
LTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0K
LWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiB1bmRlZmluZWQgYXMgcmVjb3JkIHZhbHVlIik7
Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAg
c2hvdWxkVGhyb3coImluZGV4ZWREQi5vcGVuKCk7Iik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19
Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZGF0YWJh
c2UtbmFtZS11bmRlZmluZWQuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1vZGQt
bmFtZXMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLW9kZC1u
YW1lcy5odG1sCmluZGV4IGYzMzEyOTJmMzVhOWRjZDM0OWUxOWM1NWM0MWFhNDFhNGNmMzkxYjMu
LjEzZWVkOWU5NzdjOWQ2Y2E3YmY4MDEzMTM0Njc2YzRiMmIxOTlmMDUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLW9kZC1uYW1lcy5odG1sCisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLW9kZC1uYW1lcy5odG1sCkBA
IC0xLDQxICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJv
ZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgb2RkIHZhbHVlIGRh
dGF0eXBlcyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhl
cygpOwotCi0gICAgdGVzdERhdGEgPSBbeyBkZXNjcmlwdGlvbjogJ251bGwnLCAgICAgICAgICAg
ICAgIG5hbWU6ICdcdTAwMDAnIH0sCi0gICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ2Zh
aWh1JywgICAgICAgICAgICAgIG5hbWU6ICdcdWQ4MDBcdWRmNDYnIH0sCi0gICAgICAgICAgICAg
ICAgeyBkZXNjcmlwdGlvbjogJ3VucGFpcmVkIHN1cnJvZ2F0ZScsIG5hbWU6ICdcdWQ4MDAnIH0s
Ci0gICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ2ZmZmUnLCAgICAgICAgICAgICAgIG5h
bWU6ICdcdWZmZmUnIH0sCi0gICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ2ZmZmYnLCAg
ICAgICAgICAgICAgIG5hbWU6ICdcdWZmZmYnIH0sCi0gICAgICAgICAgICAgICAgeyBkZXNjcmlw
dGlvbjogJ2xpbmUgc2VwYXJhdG9yJywgICAgIG5hbWU6ICdcdTIwMjgnIH0KLSAgICBdOwotICAg
IG5leHRUb09wZW4gPSAwOwotICAgIG9wZW5OZXh0RGF0YWJhc2UoKTsKLX0KLQotZnVuY3Rpb24g
b3Blbk5leHREYXRhYmFzZSgpCi17Ci0gICAgZGVidWcoIm9wZW5pbmcgYSBkYXRhYmFzZSBuYW1l
ZCAiICsgdGVzdERhdGFbbmV4dFRvT3Blbl0uZGVzY3JpcHRpb24pOwotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJpbmRleGVkREIub3Blbih0ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1lLCB0ZXN0
RGF0YVtuZXh0VG9PcGVuXS5kZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9ICsrbmV4dFRv
T3BlbiA8IHRlc3REYXRhLmxlbmd0aCA/IG9wZW5OZXh0RGF0YWJhc2UgOiBmaW5pc2hKU1Rlc3Q7
Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZGF0
YWJhc2Utb2RkLW5hbWVzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtcXVvdGEu
aHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLXF1b3RhLmh0bWwK
aW5kZXggMzM3Njg5MjRmNTdjYjU5MGJiMDIwYmUyNDU2Njc3YTE5YWIzMTA1Mi4uZGY2Mzc2ZWZk
YjhiNWFhZmIyODg0ZmYwNTNjYTk0MTIwY2ZmZDRjNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtcXVvdGEuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1xdW90YS5odG1sCkBAIC00LDEwMyArNCw3IEBACiA8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9k
eT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0cyBJbmRleGVkREIncyBxdW90YSBlbmZv
cmNpbmcgbWVjaGFuaXNtLiIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5k
b3JQcmVmaXhlcygpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbign
ZGF0YWJhc2UtcXVvdGEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1
bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBl
dmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0
VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVy
c2lvblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb25TdWNjZXNzKCkKLXsKLSAgICBkZWJ1Zygic2V0
VmVyc2lvblN1Y2Nlc3MoKToiKTsKLSAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVs
bCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0
cmFucy5vbmNvbXBsZXRlID0gY2hlY2tRdW90YUVuZm9yY2luZzsKLQotICAgIGRlbGV0ZUFsbE9i
amVjdFN0b3JlcyhkYik7Ci0KLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLnZlcnNpb24i
LCAibmV3IHZlcnNpb24iKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLm5hbWUiLCAi
ZGF0YWJhc2UtcXVvdGEiKTsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcyIsICJb
XSIpOwotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIwIik7Ci0g
ICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJycpIiwgImZhbHNlIik7
Ci0KLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coJ2RiLmNyZWF0ZU9iamVjdFN0b3JlKCJ0
ZXN0MTIzIiknKTsKLSAgICBjaGVja09iamVjdFN0b3JlKCk7Ci19Ci0KLWZ1bmN0aW9uIGNoZWNr
T2JqZWN0U3RvcmUoKQotewotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzIiwgIlsn
dGVzdDEyMyddIik7Ci0gICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwg
IjEiKTsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucygnJykiLCAi
ZmFsc2UiKTsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucygndGVz
dDQ1NicpIiwgImZhbHNlIik7Ci0gICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMuY29u
dGFpbnMoJ3Rlc3QxMjMnKSIsICJ0cnVlIik7Ci19Ci0KLWZ1bmN0aW9uIGNoZWNrUXVvdGFFbmZv
cmNpbmcoKQotewotICAgIHZhciB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNh
Y3Rpb24oWyd0ZXN0MTIzJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgdHJh
bnMub25hYm9ydCA9IHRlc3RDb21wbGV0ZTsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gdW5leHBl
Y3RlZENvbXBsZXRlQ2FsbGJhY2s7Ci0gICAgZGVidWcoIkNyZWF0aW5nICdkYXRhJyB3aGljaCBj
b250YWlucyA2NEsgb2YgZGF0YSIpOwotICAgIHNlbGYuZGF0YSA9ICJYIjsKLSAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IDE2OyBpKyspCi0gICAgICAgIGRhdGEgKz0gZGF0YTsKLSAgICBzaG91bGRC
ZSgiZGF0YS5sZW5ndGgiLCAiNjU1MzYiKTsKLSAgICBzZWxmLmRhdGFBZGRlZCA9IDA7Ci0gICAg
c2VsZi5zdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3Rlc3Qx
MjMnKSIpOwotICAgIGFkZERhdGEoKTsKLX0KLQotZnVuY3Rpb24gYWRkRGF0YSgpCi17Ci0gICAg
aWYgKGRhdGFBZGRlZCA8IDUgKiAxMDI0ICogMTAyNCkgewotICAgICAgICBpZiAoZGF0YUFkZGVk
ID4gMCkKLSAgICAgICAgICAgIHN0b3JlID0gZXZlbnQudGFyZ2V0LnNvdXJjZTsKLSAgICB9IGVs
c2UgewotICAgICAgICB0ZXN0RmFpbGVkKCJhZGRlZCBtb3JlIHRoYW4gcXVvdGEiKTsKLSAgICAg
ICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgZGF0YUFkZGVk
ICs9IDY1NTM2OwotICAgIHJlcXVlc3QgPSBzdG9yZS5hZGQoe3g6IGRhdGF9LCBkYXRhQWRkZWQp
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkRGF0YTsKLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSBsb2dFcnJvcjsKLX0KLQotZnVuY3Rpb24gbG9nRXJyb3IoKQotewotICAgIGRlYnVnKCJFcnJv
ciBmdW5jdGlvbiBjYWxsZWQ6ICgiICsgZXZlbnQudGFyZ2V0LmVycm9yQ29kZSArICIpICIgKyBl
dmVudC50YXJnZXQud2Via2l0RXJyb3JNZXNzYWdlKTsKLSAgICBldmFsQW5kTG9nKCJldmVudC5w
cmV2ZW50RGVmYXVsdCgpIik7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RDb21wbGV0ZSgpCi17Ci0gICAg
dGVzdFBhc3NlZCgiQWRkaW5nIGRhdGEgZmFpbGVkIGR1ZSB0byBxdW90YSBlcnJvci4gRGF0YSBh
ZGRlZCB3YXMgYWJvdXQgIiArIE1hdGgucm91bmQoZGF0YUFkZGVkIC8gMTAyNCAvIDEwMjQpICsg
IiBNQiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi10ZXN0KCk7Ci0KLQotPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RhdGFiYXNlLXF1b3RhLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvZGVsZXRlLWNsb3NlZC1kYXRhYmFzZS1vYmplY3QuaHRtbCBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZS1jbG9zZWQtZGF0YWJhc2Utb2JqZWN0Lmh0bWwKaW5k
ZXggNGFiNTBkMjA4Mjk1NTAxNzFkYThhMWFkYWZmNWRkN2Q3MjU2NWRjMi4uN2ZkZjU4ZTFkM2Y4
YjIxNzRhNzMyNDc4OGM2OGNhZjY3ODQ5N2RlNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvZGVsZXRlLWNsb3NlZC1kYXRhYmFzZS1vYmplY3QuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGUtY2xvc2VkLWRhdGFiYXNlLW9iamVj
dC5odG1sCkBAIC00LDU2ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpz
Ij48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIkVu
c3VyZSB0aGF0IElEQkRhdGFiYXNlIG9iamVjdHMgYXJlIGRlbGV0ZWQgd2hlbiB0aGVyZSBhcmUg
bm8gcmV0YWluaW5nIHBhdGhzIGxlZnQiKTsKLQotCi1mdW5jdGlvbiB0ZXN0KCkgewotICAgIHJl
bW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgb3BlbkRCQ29ubmVjdGlvbigpOwotfQotCi1mdW5j
dGlvbiBvcGVuREJDb25uZWN0aW9uKCkKLXsKLSAgICBldmFsQW5kTG9nKCJzZWxmLnN0YXRlID0g
J3N0YXJ0aW5nJyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbign
ZGVsZXRlLWNsb3NlZC1kYXRhYmFzZS1vYmplY3QnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBzZWxmLmRiID0gZXZh
bEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICAvLyBPcGVuIGEgc2Vj
b25kIGNvbm5lY3Rpb24gdG8gdGhlIHNhbWUgZGF0YWJhc2UuCi0gICAgdmFyIHJlcXVlc3QyID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2RlbGV0ZS1jbG9zZWQtZGF0YWJhc2Utb2JqZWN0
JykiKTsKLSAgICByZXF1ZXN0Mi5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczI7Ci0gICAgcmVxdWVz
dDIub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVu
U3VjY2VzczIoKQotewotICAgIGRlYnVnKCJTZWNvbmQgY29ubmVjdGlvbiBzdWNjZXNzZnVsbHkg
ZXN0YWJsaXNoZWQuIik7Ci0gICAgLy8gQWZ0ZXIgbGVhdmluZyB0aGlzIGZ1bmN0aW9uLCB0aGVy
ZSBhcmUgbm8gcmVtYWluaW5nIHJlZmVyZW5jZXMgdG8gdGhlCi0gICAgLy8gc2Vjb25kIGNvbm5l
Y3Rpb24sIHNvIGl0IHNob3VsZCBnZXQgZGVsZXRlZC4KLSAgICBzZXRUaW1lb3V0KHNldFZlcnNp
b24sIDIpOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uKCkKLXsKLSAgICBnYygpOwotICAgIGRl
YnVnKCJjYWxsaW5nIHNldFZlcnNpb24oKSAtIGNhbGxiYWNrIHNob3VsZCBydW4gaW1tZWRpYXRl
bHkiKTsKLSAgICB2YXIgdmVyc2lvbkNoYW5nZVJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRW
ZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOwotICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB2ZXJzaW9uQ2hhbmdlUmVxdWVzdC5vbmJs
b2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNrOwotICAgIHZlcnNpb25DaGFuZ2VSZXF1
ZXN0Lm9uc3VjY2VzcyA9IGZpbmlzaEpTVGVzdDsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9kZWxldGUtY2xvc2VkLWRhdGFiYXNlLW9iamVjdC5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZS1yYW5nZS5odG1sIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlLXJhbmdlLmh0bWwKaW5kZXggNGZhMmYyMzEwMTdkMWZk
ODExMmJkNjAxODE2NzkyOGMzYzE1NGViYS4uYzgwMDQxMThkZGQ1NWM4YzE5YWU3ODUzNjkzMGI0
N2NjYjcwNzIxYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGVs
ZXRlLXJhbmdlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRl
LXJhbmdlLmh0bWwKQEAgLTQsOTUgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFy
ZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlv
bigiVGVzdCBJbmRleGVkREIncyBJREJPYmplY3RTdG9yZS5kZWxldGUoSURCS2V5UmFuZ2UpIG1l
dGhvZC4iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMo
KTsKLQotICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIuZGVsZXRlRGF0YWJhc2Uo
J2RlbGV0ZS1yYW5nZScpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAg
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIub3BlbignZGVsZXRlLXJhbmdlJykiKTsK
LSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAg
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgZXZhbEFu
ZExvZygiZGIgPSByZXF1ZXN0LnJlc3VsdCIpOwotICAgICAgICAgICAgZXZhbEFuZExvZygicmVx
dWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJ0cmFucyA9IHJl
cXVlc3QucmVzdWx0Iik7Ci0gICAgICAgICAgICAgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0
ZWRBYm9ydENhbGxiYWNrOwotCi0gICAgICAgICAgICAgICAgZXZhbEFuZExvZygiZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKLQotICAgICAgICAgICAgICAgIHRyYW5zLm9uY29tcGxl
dGUgPSBydW5UZXN0czsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgfQotfQotCi1m
dW5jdGlvbiBjaGVja0tleXMoZXhwZWN0ZWQsIGNhbGxiYWNrKQotewotICAgIGRlYnVnKCJnZXR0
aW5nIGtleXMgZnJvbSBzdG9yZS4uLiIpOwotICAgIGRlYnVnKCJleHBlY3Q6ICIgKyBKU09OLnN0
cmluZ2lmeShleHBlY3RlZCkpOwotICAgIHZhciBrZXlzID0gW107Ci0gICAgcmVxdWVzdCA9IHN0
b3JlLm9wZW5DdXJzb3IoKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAg
Y3Vyc29yID0gcmVxdWVzdC5yZXN1bHQ7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAg
ICAgIGtleXMucHVzaChjdXJzb3Iua2V5KTsKLSAgICAgICAgICAgIGN1cnNvci5jb250aW51ZSgp
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZGVidWcoImFjdHVhbDogIiArIEpTT04u
c3RyaW5naWZ5KGtleXMpKTsKLSAgICAgICAgICAgIGlmIChKU09OLnN0cmluZ2lmeShleHBlY3Rl
ZCkgPT09IEpTT04uc3RyaW5naWZ5KGtleXMpKSB7Ci0gICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiTWF0Y2ghIik7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoIkRvbid0IG1hdGNoISIpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfTsK
LX0KLQotdmFyIHRlc3RzID0gWwotICAgIHsgbG93ZXI6IDMsIHVwcGVyOiA4LCBsb3dlck9wZW46
IGZhbHNlLCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogWzEsIDIsIDksIDEwXX0sCi0gICAg
eyBsb3dlcjogMywgdXBwZXI6IDgsIGxvd2VyT3BlbjogdHJ1ZSwgdXBwZXJPcGVuOiBmYWxzZSwg
ZXhwZWN0ZWQ6IFsxLCAyLCAzLCA5LCAxMF19LAotICAgIHsgbG93ZXI6IDMsIHVwcGVyOiA4LCBs
b3dlck9wZW46IGZhbHNlLCB1cHBlck9wZW46IHRydWUsIGV4cGVjdGVkOiBbMSwgMiwgOCwgOSwg
MTBdfSwKLSAgICB7IGxvd2VyOiAzLCB1cHBlcjogOCwgbG93ZXJPcGVuOiB0cnVlLCB1cHBlck9w
ZW46IHRydWUsIGV4cGVjdGVkOiBbMSwgMiwgMywgOCwgOSwgMTBdfQotXTsKLQotZnVuY3Rpb24g
cnVuVGVzdHMoKQotewotICAgIGZ1bmN0aW9uIG5leHRUZXN0KCkgewotICAgICAgICB2YXIgdGVz
dCA9IHRlc3RzLnNoaWZ0KCk7Ci0gICAgICAgIGlmICh0ZXN0KSB7Ci0gICAgICAgICAgICBkZWJ1
ZygiIik7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdz
dG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgICAgICAgICBldmFsQW5k
TG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpIik7Ci0gICAgICAgICAgICBm
b3IgKGkgPSAxOyBpIDw9IDEwOyArK2kpIHsKLSAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJz
dG9yZS5wdXQoIiArIGkgKyAiLCIgKyBpICsgIikiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGV2YWxBbmRMb2coInN0b3JlLmRlbGV0ZShJREJLZXlSYW5nZS5ib3VuZCgiICsKLSAgICAg
ICAgICAgICAgICB0ZXN0Lmxvd2VyICsgIiwgIiArCi0gICAgICAgICAgICAgICAgdGVzdC51cHBl
ciArICIsICIgKwotICAgICAgICAgICAgICAgIHRlc3QubG93ZXJPcGVuICsgIiwgIiArCi0gICAg
ICAgICAgICAgICAgdGVzdC51cHBlck9wZW4gKyAiKSkiKTsKLSAgICAgICAgICAgIGNoZWNrS2V5
cyh0ZXN0LmV4cGVjdGVkLCBuZXh0VGVzdCk7Ci0gICAgICAgICAgICB0cmFucy5vbmFib3J0ID0g
dW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgICAgICAgICB0cmFucy5vbmNvbXBsZXRlID0g
bmV4dFRlc3Q7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLSAgICBuZXh0VGVzdCgpOwot
fQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9kZWxldGUt
cmFuZ2UuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVJbmRleC5odG1sIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlSW5kZXguaHRtbAppbmRleCA0ZTc2MWZlZTZh
MGZjYzMzOTFhYjI3MmI5OTI3NDkyZjEyNjFlMjczLi5iMmNhNDQzNWU1ZTNmMWQyNThjYzFiNGM2
OWQzMWE4M2M0YWRmMGQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9kZWxldGVJbmRleC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Rl
bGV0ZUluZGV4Lmh0bWwKQEAgLTEsNTkgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgogPGh0bWw+
CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3Jp
cHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4
ZWREQiBkZWxldGVJbmRleCBtZXRob2QiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVt
b3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERC
Lm9wZW4oJ2RlbGV0ZUluZGV4JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNj
ZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQot
Ci1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0d2lkZGxl
SW5kZXhlczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LX0KLQotZnVuY3Rpb24gdHdpZGRsZUluZGV4ZXMoKQotewotICAgIHRyYW5zYWN0aW9uID0gZXZh
bEFuZExvZygidHJhbnNhY3Rpb24gPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgIHRyYW5z
YWN0aW9uLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB0cmFuc2FjdGlv
bi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnNhY3Rpb24ub25j
b21wbGV0ZSA9IHBvc3RUd2lkZGxpbmc7Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsK
LQotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVP
YmplY3RTdG9yZSgnZm9vJyk7Iik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigib2JqZWN0
U3RvcmUuZGVsZXRlSW5kZXgoJ2ZpcnN0JykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZP
VU5EX0VSUiIpOwotICAgIHNob3VsZFRocm93KCJvYmplY3RTdG9yZS5kZWxldGVJbmRleCgpIik7
IC8vIFR5cGVFcnJvcjogbm90IGVub3VnaCBhcmd1bWVudHMuCi0gICAgaW5kZXggPSBldmFsQW5k
TG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdmaXJzdCcsICdmaXJzdCcpOyIp
OwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIm9iamVjdFN0b3JlLmRlbGV0ZUluZGV4KCdG
SVJTVCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKLSAgICBpbmRl
eCA9IGV2YWxBbmRMb2coImluZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ3NlY29uZCcs
ICdzZWNvbmQnKTsiKTsKLSAgICByZXR1cm5WYWx1ZSA9IGV2YWxBbmRMb2coInJldHVyblZhbHVl
ID0gb2JqZWN0U3RvcmUuZGVsZXRlSW5kZXgoJ2ZpcnN0Jyk7Iik7Ci0gICAgc2hvdWxkQmUoInJl
dHVyblZhbHVlIiwgInVuZGVmaW5lZCIpOwotfQotCi1mdW5jdGlvbiBwb3N0VHdpZGRsaW5nKCkK
LXsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnYmFy
Jyk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9BTExPV0VEX0VSUiIpOwotICAgIGV2YWxB
bmRFeHBlY3RFeGNlcHRpb24oIm9iamVjdFN0b3JlLmRlbGV0ZUluZGV4KCdzZWNvbmQnKSIsICJJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsKLSAgICBmaW5p
c2hKU1Rlc3QoKTsKLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvZGVsZXRlSW5kZXguanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVPYmplY3RT
dG9yZS1uYW1lLWFyZ3VtZW50LXJlcXVpcmVkLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9kZWxldGVPYmplY3RTdG9yZS1uYW1lLWFyZ3VtZW50LXJlcXVpcmVkLmh0bWwKaW5k
ZXggZGUyOTY2M2UxYmZiODgzZmU1YWViZmU2ZjYzNDExNjBlOTdiMWNjNi4uMTdhODllZGFkZjY3
NTQ1YjEzZGZjMjBlOWI3OWY3MzYwOTBiODlmOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvZGVsZXRlT2JqZWN0U3RvcmUtbmFtZS1hcmd1bWVudC1yZXF1aXJlZC5o
dG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZU9iamVjdFN0b3Jl
LW5hbWUtYXJndW1lbnQtcmVxdWlyZWQuaHRtbApAQCAtMSw0NiArMSwxMCBAQAotPCFET0NUWVBF
IGh0bWw+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hh
cmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRp
b24oIlRlc3QgSW5kZXhlZERCIGRlbGV0ZU9iamVjdFN0b3JlIHJlcXVpcmVkIGFyZ3VtZW50Iik7
Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAg
ICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBU
ZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4o
bmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2Vz
czsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQot
ZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5k
UG9wdWxhdGVPYmplY3RTdG9yZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSgp
Ci17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIHNob3VsZFRocm93KCJk
Yi5kZWxldGVPYmplY3RTdG9yZSgpOyIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRl
c3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RlbGV0ZU9iamVjdFN0
b3JlLW5hbWUtYXJndW1lbnQtcmVxdWlyZWQuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+
CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxl
dGVPYmplY3RTdG9yZS1udWxsLW5hbWUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2RlbGV0ZU9iamVjdFN0b3JlLW51bGwtbmFtZS5odG1sCmluZGV4IGMzNmRiZGI2ZDczN2Mz
ZDg2OWFiODkwYmY0ZmI2ZGRmMWM5NWNlNjguLjJmOGU3MGJjMDBjYzEyNWUxZTM1NzBmYzEzYmVk
MWQxNTNmOTI3ZDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Rl
bGV0ZU9iamVjdFN0b3JlLW51bGwtbmFtZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2RlbGV0ZU9iamVjdFN0b3JlLW51bGwtbmFtZS5odG1sCkBAIC0xLDQ3ICsxLDEw
IEBACi08IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0
PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgZGVsZXRlT2JqZWN0U3RvcmUgcmVxdWly
ZWQgYXJndW1lbnQiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJl
Zml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2Ny
aXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5k
TG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0
ZU9iamVjdFN0b3JlKCkKLXsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAg
ZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ251bGwnKTsiKTsKLSAgICBldmFsQW5k
TG9nKCJkYi5kZWxldGVPYmplY3RTdG9yZShudWxsKTsiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsK
LX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9kZWxl
dGVPYmplY3RTdG9yZS1udWxsLW5hbWUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kdXBsaWNh
dGVzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kdXBsaWNhdGVzLmh0bWwK
aW5kZXggMGQ4MmIzYzkwMzk1ZTBhYTc3Mzk2NzBmMmIzNmQ5MjIxMDFiODM5MS4uNWU5NDlkZDhj
MjhhYjhjNjI0NzA5NzZiNjIzYTRhZTMxNmNhOTJiOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvZHVwbGljYXRlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL2R1cGxpY2F0ZXMuaHRtbApAQCAtNCwxNzIgKzQsNyBAQAogPHNjcmlwdCBz
cmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2Ny
aXB0PgotCi1kZXNjcmlwdGlvbigiVmVyaWZ5IHRoYXQgeW91IGNhbiBwdXQgdGhlIHNhbWUgZGF0
YSBpbiAyIGRpZmZlcmVudCBkYXRhYmFzZXMgd2l0aG91dCB1bmlxdWVuZXNzIGNvbnN0cmFpbnRz
IGZpcmluZy4iKTsKLQotdGVzdENvdW50ID0gMDsKLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIGlm
ICh0ZXN0Q291bnQrKyA9PSAwKQotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhl
ZERCLm9wZW4oJ2R1cGxpY2F0ZXMtMScpIik7Ci0gICAgZWxzZQotICAgICAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2R1cGxpY2F0ZXMtMicpIik7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uKCkKLXsKLSAgICBkYiA9
IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4aXN0aW5nOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBkZWxldGVFeGlzdGluZygpCi17Ci0g
ICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7Ci0gICAgc2VsZi50cmFucyA9IGV2YWxB
bmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgi
dHJhbnMgIT09IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2Fs
bGJhY2s7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgc2VsZi5zdG9y
ZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIp
OwotICAgIHNlbGYuaW5kZXhPYmplY3QgPSBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgn
aW5kZXhOYW1lJywgJ3gnKSIpOwotICAgIGFkZERhdGEoKTsKLX0KLQotZnVuY3Rpb24gYWRkRGF0
YSgpCi17Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywg
eTogJ3p6eid9LCAna2V5JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZE1vcmU7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0
aW9uIGFkZE1vcmUoKQotewotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJldmVudC50YXJnZXQu
c291cmNlLmFkZCh7eDogJ3ZhbHVlMicsIHk6ICd6enoyJ30sICdrZXkyJykiKTsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGdldERhdGE7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGdldERhdGEoKQotewotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5nZXRLZXkoJ3ZhbHVlJykiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGdldE9iamVjdERhdGE7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGdldE9iamVjdERhdGEoKQotewotICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJrZXkiKTsKLQot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5nZXQoJ3ZhbHVlJykiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldERhdGFGYWlsOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBnZXREYXRhRmFpbCgpCi17
Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LngiLCAidmFs
dWUiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQueSIs
ICJ6enoiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5nZXRLZXko
J2RvZXMgbm90IGV4aXN0JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldE9iamVjdERh
dGFGYWlsOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
fQotCi1mdW5jdGlvbiBnZXRPYmplY3REYXRhRmFpbCgpCi17Ci0gICAgc2hvdWxkQmUoImV2ZW50
LnRhcmdldC5yZXN1bHQiLCAidW5kZWZpbmVkIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiaW5kZXhPYmplY3QuZ2V0KCdkb2VzIG5vdCBleGlzdCcpIik7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBvcGVuS2V5Q3Vyc29yOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuS2V5Q3Vyc29yKCkKLXsKLSAgICBzaG91
bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ1bmRlZmluZWQiKTsKLQotICAgIHNlbGYucmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3IoKSIpOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gY3Vyc29yMUNvbnRpbnVlOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjdXJzb3IxQ29udGludWUo
KQotewotICAgIHNob3VsZEJlRmFsc2UoImV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwiKTsK
LSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgInZh
bHVlIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LnBy
aW1hcnlLZXkiLCAia2V5Iik7Ci0KLSAgICAvLyBXZSByZS11c2UgdGhlIGxhc3QgcmVxdWVzdCBv
YmplY3QuCi0gICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7
Ci0gICAgc2VsZi5yZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvcjFDb250aW51ZTI7Ci19Ci0KLWZ1
bmN0aW9uIGN1cnNvcjFDb250aW51ZTIoKQotewotICAgIHNob3VsZEJlRmFsc2UoImV2ZW50LnRh
cmdldC5yZXN1bHQgPT09IG51bGwiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50
LnRhcmdldC5yZXN1bHQua2V5IiwgInZhbHVlMiIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgImtleTIiKTsKLQotICAgIC8vIFdl
IHJlLXVzZSB0aGUgbGFzdCByZXF1ZXN0IG9iamVjdC4KLSAgICBldmFsQW5kTG9nKCJldmVudC50
YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKLSAgICBzZWxmLnJlcXVlc3Qub25zdWNjZXNzID0g
b3Blbk9iamVjdEN1cnNvcjsKLX0KLQotZnVuY3Rpb24gb3Blbk9iamVjdEN1cnNvcigpCi17Ci0g
ICAgc2hvdWxkQmVUcnVlKCJldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsIik7Ci0KLSAgICBz
ZWxmLnJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5vcGVuQ3Vyc29yKCkiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvcjJDb250aW51ZTsKLSAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY3Vyc29yMkNvbnRp
bnVlKCkKLXsKLSAgICBzaG91bGRCZUZhbHNlKCJldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxs
Iik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIs
ICJ2YWx1ZSIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3Vs
dC52YWx1ZS54IiwgInZhbHVlIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50
YXJnZXQucmVzdWx0LnZhbHVlLnkiLCAienp6Iik7Ci0KLSAgICAvLyBXZSByZS11c2UgdGhlIGxh
c3QgcmVxdWVzdCBvYmplY3QuCi0gICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5j
b250aW51ZSgpIik7Ci0gICAgc2VsZi5yZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvcjJDb250aW51
ZTI7Ci19Ci0KLWZ1bmN0aW9uIGN1cnNvcjJDb250aW51ZTIoKQotewotICAgIHNob3VsZEJlRmFs
c2UoImV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgInZhbHVlMiIpOwotICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS54IiwgInZhbHVlMiIpOyAg
ICAKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUu
eSIsICJ6enoyIik7Ci0KLSAgICAvLyBXZSByZS11c2UgdGhlIGxhc3QgcmVxdWVzdCBvYmplY3Qu
Ci0gICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7Ci0gICAg
c2VsZi5yZXF1ZXN0Lm9uc3VjY2VzcyA9IGxhc3Q7Ci19Ci0KLWZ1bmN0aW9uIGxhc3QoKQotewot
ICAgIHNob3VsZEJlVHJ1ZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCA9PT0gbnVsbCIpOwotCi0gICAg
aWYgKHRlc3RDb3VudCA9PSAxKQotICAgICAgICB0ZXN0KCk7Ci0gICAgZWxzZQotICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKLX0KLQotcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLXRlc3QoKTsKLQot
Ci08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZHVwbGljYXRlcy5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2Vycm9yLWNhdXNlcy1hYm9ydC1ieS1kZWZhdWx0Lmh0bWwgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9lcnJvci1jYXVzZXMtYWJvcnQtYnktZGVmYXVsdC5o
dG1sCmluZGV4IDBkYTgwYjExMWE2ZjI2ZTExODYwNzY3MGEwN2I0ZmI4YTJhYjkwNGMuLmZhNzRk
MTI1MjcwNTFmNzE3Y2E0YWYyNGI1YzI3MDUzNTA3MjE2MGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Vycm9yLWNhdXNlcy1hYm9ydC1ieS1kZWZhdWx0Lmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZXJyb3ItY2F1c2VzLWFib3J0LWJ5
LWRlZmF1bHQuaHRtbApAQCAtNCwxMDcgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9z
aGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlw
dGlvbigiVmVyaWZ5IHRoYXQgYSB0cmFuc2FjdGlvbiB3aXRoIGFuIGVycm9yIGFib3J0cyB1bmxl
c3MgcHJldmVudERlZmF1bHQoKSBpcyBjYWxsZWQuIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewot
ICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImlu
ZGV4ZWREQi5vcGVuKCdlcnJvci1jYXVzZXMtYWJvcnQtYnktZGVmYXVsdCcpIik7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uKCkKLXsKLSAgICBk
YiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4aXN0aW5nOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBkZWxldGVFeGlzdGluZygpCi17
Ci0gICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7Ci0gICAgc2VsZi50cmFucyA9IGV2
YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlVHJ1
ZSgidHJhbnMgIT09IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0
Q2FsbGJhY2s7Ci0gICAgZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IGFkZERhdGEiKTsK
LQotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBldmFsQW5kTG9nKCJkYi5j
cmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKLX0KLQotZnVuY3Rpb24gYWRk
RGF0YSgpCi17Ci0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9u
KFsnc3RvcmVOYW1lJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFu
ZExvZygidHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrIik7Ci0gICAgZXZh
bEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IHRyYW5zYWN0aW9uQ29tcGxldGVkIik7Ci0gICAg
c3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUn
KSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6
ICd6enonfSwgJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRNb3JlOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlv
biBhZGRNb3JlKCkKLXsKLSAgICAKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZXZlbnQudGFy
Z2V0LnNvdXJjZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOwotICAgIHJlcXVlc3Qu
YWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLCBwcmV2ZW50VGhlRGVmYXVsdCk7Ci19Ci0KLWZ1bmN0
aW9uIHByZXZlbnRUaGVEZWZhdWx0KCkKLXsKLSAgICBldmFsQW5kTG9nKCJldmVudC5wcmV2ZW50
RGVmYXVsdCgpIik7Ci19Ci0KLWZ1bmN0aW9uIHRyYW5zYWN0aW9uQ29tcGxldGVkKCkKLXsKLSAg
ICB0ZXN0UGFzc2VkKCJUcmFuc2FjdGlvbiBjb21wbGV0ZWQiKTsKLSAgICBkZWJ1ZygiIik7Ci0g
ICAgZGVidWcoIiIpOwotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2Fj
dGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIGV2
YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSB0cmFuc2FjdGlvbkFib3J0ZWQxIik7Ci0gICAgZXZh
bEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrIik7
Ci0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9y
ZU5hbWUnKSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1
ZScsIHk6ICd6enonfSwgJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVj
dGVkU3VjY2Vzc0NhbGxiYWNrOwotICAgIHJlcXVlc3Qub25lcnJvciA9IGFsbG93RGVmYXVsdDsK
LX0KLQotZnVuY3Rpb24gYWxsb3dEZWZhdWx0KCkKLXsKLSAgICBkZWJ1ZygiRG9pbmcgbm90aGlu
ZyB0byBwcmV2ZW50IHRoZSBkZWZhdWx0IGFjdGlvbi4uLiIpOwotfQotCi1mdW5jdGlvbiB0cmFu
c2FjdGlvbkFib3J0ZWQxKCkKLXsKLSAgICB0ZXN0UGFzc2VkKCJUcmFuc2FjdGlvbiBhYm9ydGVk
Iik7Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCIiKTsKLSAgICB0cmFucyA9IGV2YWxBbmRM
b2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rpb24u
UkVBRF9XUklURSkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmFib3J0ID0gdHJhbnNhY3Rp
b25BYm9ydGVkMiIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSB1bmV4cGVj
dGVkQ29tcGxldGVDYWxsYmFjayIpOwotICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0
cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
Zygic3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKLSAgICBkZWJ1ZygiT21p
dHRpbmcgYW4gb25lcnJvciBoYW5kbGVyIik7Ci19Ci0KLWZ1bmN0aW9uIHRyYW5zYWN0aW9uQWJv
cnRlZDIoKQotewotICAgIHRlc3RQYXNzZWQoIlRyYW5zYWN0aW9uIGFib3J0ZWQiKTsKLSAgICBm
aW5pc2hKU1Rlc3QoKTsKLX0KLQotdGVzdCgpOwotCi0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9lcnJvci1jYXVzZXMtYWJvcnQtYnktZGVmYXVsdC5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2V4Y2VwdGlvbi1pbi1ldmVudC1hYm9ydHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZXhjZXB0aW9uLWluLWV2ZW50LWFib3J0cy1leHBlY3Rl
ZC50eHQKaW5kZXggN2QxZTJkMmE3NDljNTQ1Yjg5ZTNiMDc2ODQ4ZDhjZDk5M2U5ZjZmMy4uYTBh
OTYwMTRhYzFkNDUxZmQ0NjNjODliYzZhZmRjNjYwZmY4ZDM3YiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZXhjZXB0aW9uLWluLWV2ZW50LWFib3J0cy1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZXhjZXB0aW9uLWluLWV2
ZW50LWFib3J0cy1leHBlY3RlZC50eHQKQEAgLTEsNSArMSw1IEBACi1DT05TT0xFIE1FU1NBR0U6
IGxpbmUgNjA6IFVuY2F1Z2h0IHRoaXMgZXhjZXB0aW9uIGlzIGV4cGVjdGVkCi1DT05TT0xFIE1F
U1NBR0U6IGxpbmUgNjA6IFVuY2F1Z2h0IHRoaXMgZXhjZXB0aW9uIGlzIGV4cGVjdGVkCitDT05T
T0xFIE1FU1NBR0U6IGxpbmUgNTc6IFVuY2F1Z2h0IHRoaXMgZXhjZXB0aW9uIGlzIGV4cGVjdGVk
CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNTc6IFVuY2F1Z2h0IHRoaXMgZXhjZXB0aW9uIGlzIGV4
cGVjdGVkCiBUZXN0IGV4Y2VwdGlvbnMgaW4gSURCUmVxdWVzdCBoYW5kbGVycyBjYXVzZSBhYm9y
dHMuCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2V4Y2VwdGlvbi1pbi1ldmVudC1hYm9ydHMuaHRtbCBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2V4Y2VwdGlvbi1pbi1ldmVudC1hYm9ydHMuaHRtbApp
bmRleCAwNDNjZmFjZThmYzJhMDkyMWJkODZlM2ExNDQwZmRmNmY3MzBkMzE3Li44Y2RiZDY5NjYx
MzE3NzBkMzVjZWQ3MzI4MWMwMGE0YTQxYjhjZTU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9leGNlcHRpb24taW4tZXZlbnQtYWJvcnRzLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZXhjZXB0aW9uLWluLWV2ZW50LWFib3J0cy5odG1s
CkBAIC00LDEyNyArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9z
Y3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IGV4
Y2VwdGlvbnMgaW4gSURCUmVxdWVzdCBoYW5kbGVycyBjYXVzZSBhYm9ydHMuIik7Ci0KLWZ1bmN0
aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdleGNlcHRpb24taW4tZXZlbnQtYWJvcnRzJyki
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb247Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb24o
KQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0K
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIp
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZUV4
aXN0aW5nKCkKLXsKLSAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKLSAgICBzZWxm
LnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAg
c2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4
cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0g
c3RhcnRUZXN0Iik7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgc3Rv
cmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUn
LCBudWxsKSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1
ZScsIHk6ICd6enonfSwgJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHN0YXJ0VGVzdCgpCi17Ci0gICAgZGVidWco
IiIpOwotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0
b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIGV2YWxBbmRMb2co
InRyYW5zLm9uYWJvcnQgPSB0cmFuc2FjdGlvbkFib3J0ZWQxIik7Ci0gICAgZXZhbEFuZExvZygi
dHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrIik7Ci0gICAgc3Rv
cmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIp
OwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZTInLCB5OiAn
enp6Mid9LCAna2V5MicpIik7Ci0gICAgdHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignc3VjY2Vzcycs
IGNhdXNlRXhjZXB0aW9uLCB0cnVlKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY2F1c2VFeGNlcHRpb24oKQotewotICAgIGRl
YnVnKCIiKTsKLSAgICBldmFsQW5kTG9nKCJldmVudC5wcmV2ZW50RGVmYXVsdCgpIik7Ci0gICAg
ZGVidWcoIlRocm93aW5nIik7Ci0gICAgdGhyb3cgInRoaXMgZXhjZXB0aW9uIGlzIGV4cGVjdGVk
IjsKLX0KLQotZnVuY3Rpb24gdHJhbnNhY3Rpb25BYm9ydGVkMSgpCi17Ci0gICAgZGVidWcoIiIp
OwotICAgIHNob3VsZEhhdmVIYWRFcnJvcigidGhpcyBleGNlcHRpb24gaXMgZXhwZWN0ZWQiKTsK
LSAgICB0ZXN0UGFzc2VkKCJUaGUgdHJhbnNhY3Rpb24gd2FzIGFib3J0ZWQuIik7Ci0gICAgdHJh
bnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIElE
QlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMub25hYm9y
dCA9IHRyYW5zYWN0aW9uQWJvcnRlZDIiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBs
ZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2siKTsKLSAgICBzdG9yZSA9IGV2YWxBbmRM
b2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAna2V5Jyki
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7Ci0g
ICAgZGIub25lcnJvciA9IGNhdXNlRXhjZXB0aW9uOwotfQotCi1mdW5jdGlvbiB0cmFuc2FjdGlv
bkFib3J0ZWQyKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgc2hvdWxkSGF2ZUhhZEVycm9yKCJ0
aGlzIGV4Y2VwdGlvbiBpcyBleHBlY3RlZCIpOwotICAgIHRlc3RQYXNzZWQoIlRoZSB0cmFuc2Fj
dGlvbiB3YXMgYWJvcnRlZC4iKTsKLSAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIu
dHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsK
LSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2si
KTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gdHJhbnNhY3Rpb25Db21wbGV0
ZWQxIik7Ci0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3Jl
KCdzdG9yZU5hbWUnKSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6
ICd2YWx1ZTMnLCB5OiAnenp6Myd9LCAna2V5MycpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSB0aHJvd0FuZENhdGNoOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotICAgIGRiLm9uZXJyb3IgPSBudWxsOwotfQotCi1mdW5jdGlvbiB0aHJvd0FuZENh
dGNoKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZXZhbEFuZExvZygiZXZlbnQucHJldmVudERl
ZmF1bHQoKSIpOwotICAgIGRlYnVnKCJUaHJvd2luZyB3aXRoaW4gYSB0cnkgYmxvY2siKTsKLSAg
ICB0cnkgewotICAgICAgICB0aHJvdyAiQUhISCI7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgIH0K
LX0KLQotZnVuY3Rpb24gdHJhbnNhY3Rpb25Db21wbGV0ZWQxKCkKLXsKLSAgICBkZWJ1ZygiIik7
Ci0gICAgdGVzdFBhc3NlZCgiVGhlIHRyYW5zYWN0aW9uIGNvbXBsZXRlZC4iKTsKLSAgICB0cmFu
cyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURC
VHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmFib3J0
ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2siKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNv
bXBsZXRlID0gdHJhbnNhY3Rpb25Db21wbGV0ZWQyIik7Ci0gICAgc3RvcmUgPSBldmFsQW5kTG9n
KCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZTQnLCB5OiAnenp6NCd9LCAna2V5NCcp
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgdGVzdFBhc3NlZCgia2V5
NCBhZGRlZCIpOyB9Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIHRyYW5zYWN0aW9uQ29tcGxldGVkMigpCi17Ci0gICAgZGVidWco
IiIpOwotICAgIHRlc3RQYXNzZWQoIlRoZSB0cmFuc2FjdGlvbiBjb21wbGV0ZWQuIik7Ci0gICAg
ZGVidWcoIiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi10ZXN0KCk7Ci0KLQotPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2V4Y2VwdGlvbi1pbi1ldmVudC1hYm9ydHMuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9mYWN0b3J5LWJhc2ljcy5odG1sIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvZmFjdG9yeS1iYXNpY3MuaHRtbAppbmRleCBkNDRjYWIyNTI5NmFm
YzU1ZGI2YWNmNTc3NGFiMmE3NTc5MDczMWJkLi4yYjcxZDZjZDYyY2RlY2UxNTA4ZTcyMmJmZDJi
OTU5YzczZTY0NzQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9m
YWN0b3J5LWJhc2ljcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Zh
Y3RvcnktYmFzaWNzLmh0bWwKQEAgLTQsODggKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNl
cy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNj
cmlwdGlvbigiVGVzdCB0aGUgYmFzaWNzIG9mIEluZGV4ZWREQidzIElEQkZhY3RvcnkuIik7Ci0K
LWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBz
aG91bGRCZVRydWUoInR5cGVvZiBpbmRleGVkREIub3BlbiA9PT0gJ2Z1bmN0aW9uJyIpOwotICAg
IHNob3VsZEJlVHJ1ZSgidHlwZW9mIGluZGV4ZWREQi5jbXAgPT09ICdmdW5jdGlvbiciKTsKLSAg
ICBzaG91bGRCZVRydWUoInR5cGVvZiBpbmRleGVkREIuZ2V0RGF0YWJhc2VOYW1lcyA9PT0gJ2Z1
bmN0aW9uJyIpOwotCi0gICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2YgaW5kZXhlZERCLmRlbGV0ZURh
dGFiYXNlID09PSAnZnVuY3Rpb24nIik7Ci0KLSAgICBuYW1lID0gJ3N0b3JhZ2UvaW5kZXhlZGRi
L2ZhY3RvcnktYmFzaWNzJzsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsK
LQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIuZ2V0RGF0YWJhc2VOYW1lcygp
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXREYXRhYmFzZU5hbWVzU3VjY2VzczE7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0
aW9uIGdldERhdGFiYXNlTmFtZXNTdWNjZXNzMSgpCi17Ci0gICAgdmFyIGRhdGFiYXNlTmFtZXM7
Ci0gICAgZXZhbEFuZExvZygiZGF0YWJhc2VOYW1lcyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsK
LSAgICBzaG91bGRCZUZhbHNlKCJkYXRhYmFzZU5hbWVzLmNvbnRhaW5zKCciICsgbmFtZSArICIn
KSIpOwotICAgIHNob3VsZEJlRmFsc2UoImRhdGFiYXNlTmFtZXMuY29udGFpbnMoJ0RBVEFCQVNF
IFRIQVQgRE9FUyBOT1QgRVhJU1QnKSIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImlu
ZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBldmFsQW5kTG9nKCJl
dmVudC50YXJnZXQucmVzdWx0LmNsb3NlKCkiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
aW5kZXhlZERCLmdldERhdGFiYXNlTmFtZXMoKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
Z2V0RGF0YWJhc2VOYW1lc1N1Y2Nlc3MyOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBnZXREYXRhYmFzZU5hbWVzU3VjY2VzczIo
KQotewotICAgIHZhciBkYXRhYmFzZU5hbWVzOwotICAgIGV2YWxBbmRMb2coImRhdGFiYXNlTmFt
ZXMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJkYXRhYmFzZU5h
bWVzLmNvbnRhaW5zKCciICsgbmFtZSArICInKSIpOwotICAgIHNob3VsZEJlRmFsc2UoImRhdGFi
YXNlTmFtZXMuY29udGFpbnMoJ0RBVEFCQVNFIFRIQVQgRE9FUyBOT1QgRVhJU1QnKSIpOwotCi0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgnIiArIG5h
bWUgKyAiJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZURhdGFiYXNlU3VjY2Vz
czsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQot
ZnVuY3Rpb24gZGVsZXRlRGF0YWJhc2VTdWNjZXNzKCkKLXsKLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCLmdldERhdGFiYXNlTmFtZXMoKSIpOwotICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZ2V0RGF0YWJhc2VOYW1lc1N1Y2Nlc3MzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBnZXREYXRhYmFzZU5hbWVzU3Vj
Y2VzczMoKQotewotICAgIHZhciBkYXRhYmFzZU5hbWVzOwotICAgIGV2YWxBbmRMb2coImRhdGFi
YXNlTmFtZXMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGF0
YWJhc2VOYW1lcy5jb250YWlucygnIiArIG5hbWUgKyAiJykiKTsKLSAgICBzaG91bGRCZUZhbHNl
KCJkYXRhYmFzZU5hbWVzLmNvbnRhaW5zKCdEQVRBQkFTRSBUSEFUIERPRVMgTk9UIEVYSVNUJyki
KTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIuZGVsZXRlRGF0YWJhc2Uo
J0RBVEFCQVNFIFRIQVQgRE9FUyBOT1QgRVhJU1QnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZGVsZXRlRGF0YWJhc2VTdWNjZXNzMjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZGVsZXRlRGF0YWJhc2VTdWNjZXNzMigp
Ci17Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXRlc3QoKTsKLQotCi08L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvZmFjdG9yeS1iYXNpY3MuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9mYWN0b3J5LWNtcC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZmFj
dG9yeS1jbXAuaHRtbAppbmRleCBmNzI4NTMzYjM4MTRjMTU5MzQ4NDgwYjJhYTFmMjZlZTYwN2Fh
ZTcxLi40MmYwYWM2MmJlNzJhMDcxNDc1MzU0ZGQ2MWExYzY0MjVlZWI1NDZkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9mYWN0b3J5LWNtcC5odG1sCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ZhY3RvcnktY21wLmh0bWwKQEAgLTQsMTQ3ICs0
LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVh
ZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGtleSBj
b21wYXJpc29uIHVzaW5nIElEQkZhY3RvcnkuY21wKCkuIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQot
ewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBzaG91bGRCZVRydWUoInR5cGVv
ZiBpbmRleGVkREIuY21wID09PSAnZnVuY3Rpb24nIik7Ci0KLSAgICB0ZXN0VmFsaWRLZXlzKCk7
Ci0gICAgdGVzdEludmFsaWRLZXlzKCk7Ci0gICAgdGVzdElkZW50aWNhbEtleXMoKTsKLSAgICBm
aW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gdGVzdFZhbGlkS2V5cygpCi17Ci0gICAgZGVi
dWcoIiIpOwotICAgIGRlYnVnKCJjb21wYXJlIHZhbGlkIGtleXMiKTsKLQotICAgIHZhciBrZXlz
ID0gWwotICAgICAgICAiLUluZmluaXR5IiwKLSAgICAgICAgIi1OdW1iZXIuTUFYX1ZBTFVFIiwK
LSAgICAgICAgIi0xIiwKLSAgICAgICAgIi1OdW1iZXIuTUlOX1ZBTFVFIiwKLSAgICAgICAgIjAi
LAotICAgICAgICAiTnVtYmVyLk1JTl9WQUxVRSIsCi0gICAgICAgICIxIiwKLSAgICAgICAgIk51
bWJlci5NQVhfVkFMVUUiLAotICAgICAgICAiSW5maW5pdHkiLAotIAotICAgICAgICAibmV3IERh
dGUoMCkiLAotICAgICAgICAibmV3IERhdGUoMTAwMCkiLAotICAgICAgICAibmV3IERhdGUoMTMx
NzM5OTkzMTAyMykiLAotICAgICAgICAKLSAgICAgICAgIicnIiwKLSAgICAgICAgIidceDAwJyIs
Ci0gICAgICAgICInYSciLAotICAgICAgICAiJ2FhJyIsCi0gICAgICAgICInYiciLAotICAgICAg
ICAiJ2JhJyIsCi0KLSAgICAgICAgIidceEEyJyIsIC8vIFUrMDBBMiBDRU5UIFNJR04KLSAgICAg
ICAgIidcdTZDMzQnIiwgLy8gVSs2QzM0IENKSyBVTklGSUVEIElERU9HUkFQSCAod2F0ZXIpCi0g
ICAgICAgICInXHVEODM0XHVERDFFJyIsIC8vIFUrMUQxMUUgTVVTSUNBTCBTWU1CT0wgRy1DTEVG
IChVVEYtMTYgc3Vycm9nYXRlIHBhaXIpCi0gICAgICAgICInXHVGRkZEJyIsIC8vIFUrRkZGRCBS
RVBMQUNFTUVOVCBDSEFSQUNURVIKLQotICAgICAgICAiW10iLAotCi0gICAgICAgICJbLUluZmlu
aXR5XSIsCi0gICAgICAgICJbLU51bWJlci5NQVhfVkFMVUVdIiwKLSAgICAgICAgIlstMV0iLAot
ICAgICAgICAiWy1OdW1iZXIuTUlOX1ZBTFVFXSIsCi0gICAgICAgICJbMF0iLAotICAgICAgICAi
W051bWJlci5NSU5fVkFMVUVdIiwKLSAgICAgICAgIlsxXSIsCi0gICAgICAgICJbTnVtYmVyLk1B
WF9WQUxVRV0iLAotICAgICAgICAiW0luZmluaXR5XSIsCi0gCi0gICAgICAgICJbbmV3IERhdGUo
MCldIiwKLSAgICAgICAgIltuZXcgRGF0ZSgxMDAwKV0iLAotICAgICAgICAiW25ldyBEYXRlKDEz
MTczOTk5MzEwMjMpXSIsCi0gICAgICAgIAotICAgICAgICAiWycnXSIsCi0gICAgICAgICJbJ1x4
MDAnXSIsCi0gICAgICAgICJbJ2EnXSIsCi0gICAgICAgICJbJ2FhJ10iLAotICAgICAgICAiWydi
J10iLAotICAgICAgICAiWydiYSddIiwKLQotICAgICAgICAiWydceEEyJ10iLCAvLyBVKzAwQTIg
Q0VOVCBTSUdOCi0gICAgICAgICJbJ1x1NkMzNCddIiwgLy8gVSs2QzM0IENKSyBVTklGSUVEIElE
RU9HUkFQSCAod2F0ZXIpCi0gICAgICAgICJbJ1x1RDgzNFx1REQxRSddIiwgLy8gVSsxRDExRSBN
VVNJQ0FMIFNZTUJPTCBHLUNMRUYgKFVURi0xNiBzdXJyb2dhdGUgcGFpcikKLSAgICAgICAgIlsn
XHVGRkZEJ10iLCAvLyBVK0ZGRkQgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSCi0KLSAgICAgICAgIltb
XV0iLAotICAgICAgICAKLSAgICAgICAgIltbXSwgW11dIiwKLSAgICAgICAgIltbXSwgW10sIFtd
XSIsCi0KLSAgICAgICAgIltbW11dXSIsCi0gICAgICAgICJbW1tbXV1dXSIKLSAgICBdOwotCi0g
ICAgdmFyIGksIGtleTEsIGtleTI7Ci0gICAgZm9yIChpID0gMDsgaSA8IGtleXMubGVuZ3RoIC0g
MTsgaSArPSAxKSB7Ci0gICAgICAgIGtleTEgPSBrZXlzW2ldOwotICAgICAgICBrZXkyID0ga2V5
c1tpICsgMV07Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXhlZERCLmNtcCgiICsga2V5MSAr
ICIsIiArIGtleTIgKyAiKSA9PT0gLTEiKTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJpbmRleGVk
REIuY21wKCIgKyBrZXkyICsgIiwiICsga2V5MSArICIpID09PSAxIik7Ci0gICAgICAgIHNob3Vs
ZEJlVHJ1ZSgiaW5kZXhlZERCLmNtcCgiICsga2V5MSArICIsIiArIGtleTEgKyAiKSA9PT0gMCIp
OwotICAgICAgICBzaG91bGRCZVRydWUoImluZGV4ZWREQi5jbXAoIiArIGtleTIgKyAiLCIgKyBr
ZXkyICsgIikgPT09IDAiKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RJbnZhbGlkS2V5cygp
Ci17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJjb21wYXJlIGludmFsaWQga2V5cyIpOwot
Ci0gICAgdmFyIGludmFsaWRLZXlzID0gWwotICAgICAgICAidm9pZCAwIiwgLy8gdW5kZWZpbmVk
Ci0gICAgICAgICJ0cnVlIiwKLSAgICAgICAgImZhbHNlIiwKLSAgICAgICAgIk5hTiIsCi0gICAg
ICAgICJuZXcgRGF0ZShOYU4pIiwKLSAgICAgICAgIm51bGwiLAotICAgICAgICAie30iLAotICAg
ICAgICAiZnVuY3Rpb24gKCkge30iLAotICAgICAgICAiL3JlZ2V4LyIsCi0gICAgICAgICJzZWxm
IiwKLSAgICAgICAgInNlbGYuZG9jdW1lbnQiLAotICAgICAgICAic2VsZi5kb2N1bWVudC5ib2R5
IgotICAgIF07Ci0KLSAgICB2YXIgaSwga2V5MSwga2V5MjsKLSAgICBmb3IgKGkgPSAwOyBpIDwg
aW52YWxpZEtleXMubGVuZ3RoIC0gMTsgaSArPSAxKSB7Ci0gICAgICAgIGtleTEgPSBpbnZhbGlk
S2V5c1tpXTsKLSAgICAgICAga2V5MiA9IGludmFsaWRLZXlzW2kgKyAxXTsKLSAgICAgICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXhlZERCLmNtcCgiICsga2V5MSArICIsICIgKyBrZXky
ICsgIikiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLSAgICAgICAgZXZhbEFu
ZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXhlZERCLmNtcCgiICsga2V5MiArICIsICIgKyBrZXkxICsg
IikiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLSAgICAgICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigiaW5kZXhlZERCLmNtcCgiICsga2V5MSArICIsICd2YWxpZCcpIiwgIklE
QkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0gICAgICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oImluZGV4ZWREQi5jbXAoJ3ZhbGlkJywgIiArIGtleTEgKyAiKSIsICJJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJp
bmRleGVkREIuY21wKCIgKyBrZXkyICsgIiwgJ3ZhbGlkJykiLCAiSURCRGF0YWJhc2VFeGNlcHRp
b24uREFUQV9FUlIiKTsKLSAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXhlZERC
LmNtcCgndmFsaWQnLCAiICsga2V5MiArICIpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFf
RVJSIik7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0SWRlbnRpY2FsS2V5cygpCi17Ci0gICAg
ZGVidWcoIiIpOwotICAgIGRlYnVnKCJjb21wYXJlIGlkZW50aWNhbCBrZXlzIik7Ci0KLSAgICBz
aG91bGRCZVRydWUoImluZGV4ZWREQi5jbXAoMCwgLTApID09PSAwIik7Ci19Ci0KLQotdGVzdCgp
OwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZmFjdG9yeS1jbXAuanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9mYWN0b3J5LWRlbGV0ZWRhdGFiYXNlLWludGVyYWN0aW9ucy5o
dG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZmFjdG9yeS1kZWxldGVkYXRhYmFz
ZS1pbnRlcmFjdGlvbnMuaHRtbAppbmRleCBlNWMwZGM2MWJmNmNiMGQzNTVjMTIyZTljMDc5ZDFl
MGFlZjhjOWE1Li5mMGVmNDc4ZGNkZGY0Y2M5YzVjZjM2MDRkNzk4YzAxMTg5YWMxMTZhIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9mYWN0b3J5LWRlbGV0ZWRhdGFi
YXNlLWludGVyYWN0aW9ucy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2ZhY3RvcnktZGVsZXRlZGF0YWJhc2UtaW50ZXJhY3Rpb25zLmh0bWwKQEAgLTQsMTkxICs0LDcg
QEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4K
IDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgdGhlIGRlbGV0ZURhdGFiYXNl
IGNhbGwgYW5kIGl0cyBpbnRlcmFjdGlvbiB3aXRoIG9wZW4vc2V0VmVyc2lvbiIpOwotCi1mdW5j
dGlvbiBDb25uZWN0aW9uKGlkKSB7Ci0gICAgaWQgPSBTdHJpbmcoaWQpOwotICAgIHZhciB0aGF0
ID0gdGhpczsKLSAgICB0aGlzLm9wZW4gPSBmdW5jdGlvbihvcHRzKSB7Ci0gICAgICAgIHNlbGYu
c3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5vcGVuJyIpKTsKLSAgICAgICAgdmFy
IHJlcSA9IGluZGV4ZWREQi5vcGVuKHNlbGYuZGJuYW1lKTsKLSAgICAgICAgcmVxLm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0
aW9uIChlKSB7Ci0gICAgICAgICAgICB0aGF0LmhhbmRsZSA9IGUudGFyZ2V0LnJlc3VsdDsKLSAg
ICAgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5vcGVuLm9u
c3VjY2VzcyciKSk7Ci0gICAgICAgICAgICB0aGF0LmhhbmRsZS5vbnZlcnNpb25jaGFuZ2UgPSBm
dW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2co
IiciICsgaWQgKyAiLm9udmVyc2lvbmNoYW5nZSciKSk7Ci0gICAgICAgICAgICAgICAgaWYgKG9w
dHMgJiYgb3B0cy5vbnZlcnNpb24pIHsgb3B0cy5vbnZlcnNpb24uY2FsbCh0aGF0KTsgfQotICAg
ICAgICAgICAgfTsKLSAgICAgICAgICAgIGlmIChvcHRzICYmIG9wdHMub25zdWNjZXNzKSB7IG9w
dHMub25zdWNjZXNzLmNhbGwodGhhdCk7IH0KLSAgICAgICAgfTsKLSAgICB9OwotCi0gICAgdGhp
cy5jbG9zZSA9IGZ1bmN0aW9uKCkgewotICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExv
ZygiJyIgKyBpZCArICIuY2xvc2UnIikpOwotICAgICAgICB0aGlzLmhhbmRsZS5jbG9zZSgpOwot
ICAgIH07Ci0KLSAgICB0aGlzLnNldFZlcnNpb24gPSBmdW5jdGlvbihvcHRzKSB7Ci0gICAgICAg
IHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5zZXRWZXJzaW9uJyIpKTsK
LSAgICAgICAgdmFyIHJlcSA9IHRoaXMuaGFuZGxlLnNldFZlcnNpb24oU3RyaW5nKHNlbGYudmVy
KyspKTsKLSAgICAgICAgcmVxLm9uYWJvcnQgPSBmdW5jdGlvbiAoZSkgewotICAgICAgICAgICAg
c2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLnNldFZlcnNpb24ub25hYm9y
dCciKSk7Ci0gICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9uYWJvcnQpIHsgb3B0cy5vbmFi
b3J0LmNhbGwodGhhdCk7IH0KLSAgICAgICAgfTsKLSAgICAgICAgcmVxLm9uYmxvY2tlZCA9IGZ1
bmN0aW9uIChlKSB7Ci0gICAgICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIg
KyBpZCArICIuc2V0VmVyc2lvbi5vbmJsb2NrZWQnIikpOwotICAgICAgICAgICAgaWYgKG9wdHMg
JiYgb3B0cy5vbmJsb2NrZWQpIHsgb3B0cy5vbmJsb2NrZWQuY2FsbCh0aGF0KTsgfQotICAgICAg
ICB9OwotICAgICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAgICAg
IHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5zZXRWZXJzaW9uLm9uc3Vj
Y2VzcyciKSk7Ci0gICAgICAgICAgICBpZiAodGhhdC5oYW5kbGUub2JqZWN0U3RvcmVOYW1lcy5j
b250YWlucygidGVzdC1zdG9yZSIgKyBzZWxmLnZlcikpIHsKLSAgICAgICAgICAgICAgICB0aGF0
LmhhbmRsZS5kZWxldGVPYmplY3RTdG9yZSgidGVzdC1zdG9yZSIgKyBzZWxmLnZlcik7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB2YXIgc3RvcmUgPSB0aGF0LmhhbmRsZS5jcmVhdGVPYmpl
Y3RTdG9yZSgidGVzdC1zdG9yZSIgKyBzZWxmLnZlcik7Ci0gICAgICAgICAgICB2YXIgY291bnQg
PSAwOwotICAgICAgICAgICAgZG9fYXN5bmNfcHV0cygpOyAvLyBLZWVwIHRoaXMgdHJhbnNhY3Rp
b24gcnVubmluZyBmb3IgYSB3aGlsZQotICAgICAgICAgICAgZnVuY3Rpb24gZG9fYXN5bmNfcHV0
cygpIHsKLSAgICAgICAgICAgICAgICB2YXIgcmVxID0gc3RvcmUucHV0KGNvdW50LCBjb3VudCk7
Ci0gICAgICAgICAgICAgICAgcmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LSAgICAgICAgICAgICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKCsrY291bnQgPCAxMCkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ZG9fYXN5bmNfcHV0cygpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLnNl
dFZlcnNpb24udHJhbnNhY3Rpb24tY29tcGxldGUnIikpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKG9wdHMgJiYgb3B0cy5vbnN1Y2Nlc3MpIHsgb3B0cy5vbnN1Y2Nlc3MuY2FsbCh0aGF0
KTsgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfTsKLSAgICAgICAgcmVxLm9uZXJyb3IgPSBmdW5jdGlvbiAoZSkgewot
ICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLnNldFZl
cnNpb24ub25lcnJvciciKSk7Ci0gICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9uZXJyb3Ip
IHsgb3B0cy5vbmVycm9yLmNhbGwodGhhdCk7IH0KLSAgICAgICAgfTsKLSAgICB9OwotfQotCi1m
dW5jdGlvbiBkZWxldGVEYXRhYmFzZShpZCwgbmFtZSwgb3B0cykgewotICAgIHNlbGYuc3RlcHMu
cHVzaChldmFsQW5kTG9nKCInZGVsZXRlRGF0YWJhc2UoIiArIGlkICsgIiknIikpOwotICAgIHZh
ciByZXEgPSBpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UobmFtZSk7Ci0gICAgcmVxLm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uIChlKSB7Ci0gICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCIn
ZGVsZXRlRGF0YWJhc2UoIiArIGlkICsgIikub25zdWNjZXNzJyIpKTsKLSAgICAgICAgaWYgKG9w
dHMgJiYgb3B0cy5vbnN1Y2Nlc3MpIHsgb3B0cy5vbnN1Y2Nlc3MuY2FsbChudWxsKTsgfQotICAg
IH07Ci0gICAgcmVxLm9uZXJyb3IgPSBmdW5jdGlvbiAoZSkgewotICAgICAgICBzZWxmLnN0ZXBz
LnB1c2goZXZhbEFuZExvZygiJ2RlbGV0ZURhdGFiYXNlKCIgKyBpZCArICIpLm9uZXJyb3InIikp
OwotICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9uZXJyb3IpIHsgb3B0cy5vbmVycm9yLmNhbGwo
bnVsbCk7IH0KLSAgICB9OwotICAgIHJlcS5vbmJsb2NrZWQgPSBmdW5jdGlvbiAoZSkgewotICAg
ICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJ2RlbGV0ZURhdGFiYXNlKCIgKyBpZCAr
ICIpLm9uYmxvY2tlZCciKSk7Ci0gICAgICAgIGlmIChvcHRzICYmIG9wdHMub25ibG9ja2VkKSB7
IG9wdHMub25ibG9ja2VkLmNhbGwobnVsbCk7IH0KLSAgICB9OwotfQotCi0vLyBydW4gYSBzZXJp
ZXMgb2Ygc3RlcHMgdGhhdCB0YWtlIGEgY29udGludWF0aW9uIGZ1bmN0aW9uCi1mdW5jdGlvbiBy
dW5TdGVwcyhjb21tYW5kcykgewotICAgIGlmIChjb21tYW5kcy5sZW5ndGgpIHsKLSAgICAgICAg
dmFyIGNvbW1hbmQgPSBjb21tYW5kcy5zaGlmdCgpOwotICAgICAgICBjb21tYW5kKGZ1bmN0aW9u
KCkgeyBydW5TdGVwcyhjb21tYW5kcyk7IH0pOwotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdCgp
IHsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIHRlc3QxKCk7Ci19Ci0KLWZ1bmN0
aW9uIHRlc3QxKCkgewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiVEVTVDogZGVsZXRlRGF0
YWJhc2UgYmxvY2tlZCBvbiBvcGVuIGhhbmRsZXMiKTsKLSAgICBldmFsQW5kTG9nKCJzZWxmLmRi
bmFtZSA9ICd0ZXN0MSc7IHNlbGYudmVyID0gMTsgc2VsZi5zdGVwcyA9IFtdIik7Ci0gICAgdmFy
IGggPSBuZXcgQ29ubmVjdGlvbigiaCIpOwotICAgIHJ1blN0ZXBzKFtmdW5jdGlvbihkb05leHQp
IHsgaC5vcGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb252ZXJzaW9uOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRlYnVnKCIgICAgaCBjbG9zaW5nLCBidXQgbm90IGltbWVkaWF0ZWx5Iik7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBoLmNsb3NlKCk7IH0sIDApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fSk7
IH0sCi0gICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBkZWxldGVEYXRhYmFzZSgiIiwgc2VsZi5k
Ym5hbWUsIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uc3VjY2VzczogZmluaXNoVGVz
dH0pOyB9LAotICAgICAgICBdKTsKLSAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgewotICAgICAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNlbGYuc3RlcHMudG9TdHJpbmcoKSIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbImgub3BlbiIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImgub3Blbi5vbnN1Y2Nlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJkZWxldGVEYXRhYmFzZSgpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
aC5vbnZlcnNpb25jaGFuZ2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWxl
dGVEYXRhYmFzZSgpLm9uYmxvY2tlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImguY2xvc2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWxldGVEYXRhYmFz
ZSgpLm9uc3VjY2VzcyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnRvU3RyaW5n
KCkpOwotICAgICAgICB0ZXN0MigpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdDIoKSB7Ci0g
ICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJURVNUOiBkZWxldGVEYXRhYmFzZSBub3QgYmxvY2tl
ZCB3aGVuIGhhbmRsZXMgY2xvc2UgaW1tZWRpYXRlbHkiKTsKLSAgICBldmFsQW5kTG9nKCJzZWxm
LmRibmFtZSA9ICd0ZXN0Mic7IHNlbGYudmVyID0gMTsgc2VsZi5zdGVwcyA9IFtdIik7Ci0gICAg
dmFyIGggPSBuZXcgQ29ubmVjdGlvbigiaCIpOwotICAgIHJ1blN0ZXBzKFtmdW5jdGlvbihkb05l
eHQpIHsgaC5vcGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9udmVyc2lvbjogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoIiAgICBoIGNsb3NpbmcgaW1t
ZWRpYXRlbHkiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBoLmNsb3NlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
fSk7IH0sCi0gICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBkZWxldGVEYXRhYmFzZSgiIiwgc2Vs
Zi5kYm5hbWUsIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uc3VjY2VzczogZmluaXNo
VGVzdH0pOyB9LAotICAgICAgICBdKTsKLSAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgewotICAg
ICAgICBkZWJ1ZygiTk9URTogV2lsbCBGQUlMIHdpdGggZXh0cmEgYm9ndXMgZGVsZXRlRGF0YWJh
c2UoKS5vbmJsb2NrZWQgc3RlcDsgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTcxMTMwIik7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic2VsZi5zdGVwcy50
b1N0cmluZygpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiaC5vcGVuIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaC5vcGVuLm9uc3VjY2VzcyIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImRlbGV0ZURhdGFiYXNlKCkiLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJoLm9udmVyc2lvbmNoYW5nZSIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImguY2xvc2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJkZWxldGVEYXRhYmFzZSgpLm9uc3VjY2VzcyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBdLnRvU3RyaW5nKCkpOwotICAgICAgICB0ZXN0MygpOwotICAgIH0KLX0KLQotZnVuY3Rp
b24gdGVzdDMoKSB7Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJURVNUOiBkZWxldGVEYXRh
YmFzZSBpcyBkZWxheWVkIGlmIGEgVkVSU0lPTl9DSEFOR0UgdHJhbnNhY3Rpb24gaXMgcnVubmlu
ZyIpOwotICAgIGV2YWxBbmRMb2coInNlbGYuZGJuYW1lID0gJ3Rlc3QzJzsgc2VsZi52ZXIgPSAx
OyBzZWxmLnN0ZXBzID0gW10iKTsKLSAgICB2YXIgaCA9IG5ldyBDb25uZWN0aW9uKCJoIik7Ci0g
ICAgcnVuU3RlcHMoW2Z1bmN0aW9uKGRvTmV4dCkgeyBoLm9wZW4oe29uc3VjY2VzczogZG9OZXh0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbnZlcnNpb246IGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoIiAgICBoIGNsb3Np
bmcsIGJ1dCBub3QgaW1tZWRpYXRlbHkiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGguY2xvc2UoKTsgfSwgMCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH19KTsgfSwKLSAgICAgICAgICAgICAgZnVuY3Rpb24o
ZG9OZXh0KSB7IGguc2V0VmVyc2lvbigpOyBkb05leHQoKTsgfSwKLSAgICAgICAgICAgICAgZnVu
Y3Rpb24oZG9OZXh0KSB7IGRlbGV0ZURhdGFiYXNlKCIiLCBzZWxmLmRibmFtZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAge29uc3VjY2VzczogZmluaXNoVGVzdH0pOyB9LAotICAg
ICAgICAgICAgICBdKTsKLQotICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7Ci0gICAgICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygic2VsZi5zdGVwcy50b1N0cmluZygpIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFsiaC5vcGVuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiaC5vcGVuLm9uc3VjY2VzcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Imguc2V0VmVyc2lvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlbGV0ZURh
dGFiYXNlKCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoLnNldFZlcnNpb24u
b25zdWNjZXNzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaC5zZXRWZXJzaW9u
LnRyYW5zYWN0aW9uLWNvbXBsZXRlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
aC5vbnZlcnNpb25jaGFuZ2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWxl
dGVEYXRhYmFzZSgpLm9uYmxvY2tlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImguY2xvc2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWxldGVEYXRhYmFz
ZSgpLm9uc3VjY2VzcyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnRvU3RyaW5n
KCkpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9Ci19Ci0KLXRlc3QoKTsKLQotPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZhY3RvcnktZGVsZXRlZGF0YWJhc2UtaW50
ZXJhY3Rpb25zLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZmFjdG9yeS1kZWxldGVkYXRhYmFz
ZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZmFjdG9yeS1kZWxldGVkYXRh
YmFzZS5odG1sCmluZGV4IDNkMzMyM2M0OTI4MjYxZGNkOTRjNDI2Y2I0ODA1MDVhNDZlY2FkMTEu
LmQwYzgyNmJmYzViOGMyNDk1NGM4ZDBlYWI4ZTliM2QwZjdmMjE2NWMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ZhY3RvcnktZGVsZXRlZGF0YWJhc2UuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9mYWN0b3J5LWRlbGV0ZWRhdGFiYXNl
Lmh0bWwKQEAgLTQsOTUgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMi
Pjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVz
dCBJbmRleGVkREIncyB3ZWJraXRJbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoKS4iKTsKLQotZnVu
Y3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2RhdGFiYXNlLXRvLWRlbGV0ZScpIik7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzdGFydFNldFZlcnNpb247Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHN0YXJ0U2V0VmVy
c2lvbigpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lv
bicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZGVs
ZXRlRXhpc3RpbmcoKQotewotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7
Ci0KLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUo
J3N0b3JlTmFtZScsIG51bGwpIik7Ci0KLSAgICBzZWxmLmluZGV4ID0gZXZhbEFuZExvZygic3Rv
cmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZScsICcnKSIpOwotICAgIHNob3VsZEJlVHJ1ZSgic3Rv
cmUuaW5kZXhOYW1lcy5jb250YWlucygnaW5kZXhOYW1lJykiKTsKLQotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJzdG9yZS5hZGQoJ3ZhbHVlJywgJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IGdl
dFZhbHVlOwotfQotCi1mdW5jdGlvbiBnZXRWYWx1ZSgpCi17Ci0gICAgdHJhbnNhY3Rpb24gPSBl
dmFsQW5kTG9nKCJkYi50cmFuc2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVB
RF9XUklURSkiKTsKLSAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci0gICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5v
YmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJz
dG9yZS5nZXQoJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRJbmRleDsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rp
b24gYWRkSW5kZXgoKQotewotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0
LnJlc3VsdCIsICJ2YWx1ZSIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZl
cnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZURh
dGFiYXNlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
fQotCi1mdW5jdGlvbiBkZWxldGVEYXRhYmFzZSgpCi17Ci0gICAgZGIub252ZXJzaW9uY2hhbmdl
ID0gZnVuY3Rpb24oKSB7IGRiLmNsb3NlKCk7IH0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IGluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgnZGF0YWJhc2UtdG8tZGVsZXRlJyki
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHJlb3BlbkRhdGFiYXNlOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiByZW9wZW5E
YXRhYmFzZSgpCi17Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdk
YXRhYmFzZS10by1kZWxldGUnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc3RhcnRTZXRW
ZXJzaW9uQWdhaW47Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIHN0YXJ0U2V0VmVyc2lvbkFnYWluKCkKLXsKLSAgICByZGIgPSBl
dmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSB2ZXJpZnlOb3RGb3VuZDsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gdmVyaWZ5Tm90Rm91bmQoKQotewotICAg
IHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIwIik7Ci0KLSAgICBmaW5p
c2hKU1Rlc3QoKTsKLX0KLQotdGVzdCgpOwotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL2ZhY3RvcnktZGVsZXRlZGF0YWJhc2UuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+
CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRl
eC1jb3VudC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtY291bnQu
aHRtbAppbmRleCBmMzJhZTEzNmFlNmY1NDcwNjc5MTY4ZTgyYWU2ZDUyN2UwMmI0ODZjLi5mODAx
MThlMGNmMmRkYzkwYTc2YTE3OWQyZGM4MGMxNzNhNDg3M2FiIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1jb3VudC5odG1sCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWNvdW50Lmh0bWwKQEAgLTQsMTU5ICs0LDcgQEAKIDxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5
PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgSURCSW5kZXguY291
bnQoKS4iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMo
KTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2luZGV4LWNvdW50
JykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAgICBkYiA9IGV2YWxBbmRM
b2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgICAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOwotICAgICAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBwcmVwYXJlRGF0YWJhc2U7Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24gcHJlcGFyZURhdGFi
YXNlKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInByZXBhcmluZyBkYXRhYmFzZSIp
OwotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0KLSAgICBkZWxldGVB
bGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOwotCi0gICAgc2VsZi5pbmRl
eCA9IGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleE5hbWUnLCAnJykiKTsKLSAg
ICBzaG91bGRCZVRydWUoInN0b3JlLmluZGV4TmFtZXMuY29udGFpbnMoJ2luZGV4TmFtZScpIik7
Ci0KLSAgICBkZWJ1ZygiYWRkaW5nIDAgLi4uIDk5Iik7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkg
PCAxMDA7ICsraSkgewotICAgICAgICByZXF1ZXN0ID0gc3RvcmUuYWRkKGksIGkpOwotICAgICAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB9Ci0gICAg
dHJhbnMub25jb21wbGV0ZSA9IHZlcmlmeUNvdW50OwotfQotCi1mdW5jdGlvbiB2ZXJpZnlDb3Vu
dCgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJ2ZXJpZnlpbmcgY291bnQgd2l0aG91
dCByYW5nZSIpOwotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlv
bignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKSIpOwotICAgIHNob3VsZEJl
VHJ1ZSgidHJhbnMgIT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJv
cnRDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gdmVyaWZ5Q291bnRXaXRoUmFuZ2U7
Ci0KLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0
b3JlTmFtZScpIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJzdG9yZSAhPSBudWxsIik7Ci0gICAgaW5k
ZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmluZGV4KCdpbmRleE5hbWUnKSIpOwotICAg
IHNob3VsZEJlVHJ1ZSgiaW5kZXggIT0gbnVsbCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBpbmRleC5jb3VudCgpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigp
IHsKLSAgICAgICAgIHNob3VsZEJlVHJ1ZSgidHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1i
ZXInIik7Ci0gICAgICAgICBzaG91bGRCZSgicmVxdWVzdC5yZXN1bHQiLCAiMTAwIik7Ci0gICAg
ICAgICAvLyBsZXQgdGhlIHRyYW5zYWN0aW9uIGNvbXBsZXRlCi0gICAgfTsKLX0KLQotZnVuY3Rp
b24gdmVyaWZ5Q291bnRXaXRoUmFuZ2UoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1Zygi
dmVyaWZ5aW5nIGNvdW50IHdpdGggcmFuZ2UiKTsKLSAgICB0cmFucyA9IGV2YWxBbmRMb2coInRy
YW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05M
WSkiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9IG51bGwiKTsKLSAgICB0cmFucy5vbmFi
b3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IHZl
cmlmeUNvdW50V2l0aEtleTsKLQotICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFu
cy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLSAgICBzaG91bGRCZVRydWUoInN0b3JlICE9
IG51bGwiKTsKLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coImluZGV4ID0gdHJhbnMub2JqZWN0U3Rv
cmUoJ3N0b3JlTmFtZScpLmluZGV4KCdpbmRleE5hbWUnKSIpOwotICAgIHNob3VsZEJlVHJ1ZSgi
aW5kZXggIT0gbnVsbCIpOwotCi0gICAgdmFyIHRlc3RzID0gWwotICAgICAgICB7IGxvd2VyOiAw
LCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogOTksIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVk
OiAxMDAgfSwKLSAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiB0cnVlLCB1cHBlcjogOTks
IHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiA5OSB9LAotICAgICAgICB7IGxvd2VyOiAwLCBs
b3dlck9wZW46IGZhbHNlLCB1cHBlcjogOTksIHVwcGVyT3BlbjogdHJ1ZSwgZXhwZWN0ZWQ6IDk5
IH0sCi0gICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogdHJ1ZSwgdXBwZXI6IDk5LCB1cHBl
ck9wZW46IHRydWUsIGV4cGVjdGVkOiA5OCB9LAotICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9w
ZW46IGZhbHNlLCB1cHBlcjogMTAwLCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogMTAwIH0s
Ci0gICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiAxMDAsIHVwcGVy
T3BlbjogZmFsc2UsIGV4cGVjdGVkOiAxMDAgfSwKLSAgICAgICAgeyBsb3dlcjogMTAsIGxvd2Vy
T3BlbjogZmFsc2UsIHVwcGVyOiAxMDAsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiA5MCB9
LAotICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogMCwgdXBwZXJP
cGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDEgfSwKLSAgICAgICAgeyBsb3dlcjogNTAwLCBsb3dlck9w
ZW46IGZhbHNlLCB1cHBlcjogNTAwLCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogMCB9Ci0g
ICAgXTsKLQotICAgIGZ1bmN0aW9uIG5leHRUZXN0KCkgewotICAgICAgICBkZWJ1ZygiIik7Ci0g
ICAgICAgIGV2YWxBbmRMb2coInRlc3QgPSAiICsgSlNPTi5zdHJpbmdpZnkodGVzdHMuc2hpZnQo
KSkpOwotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4LmNvdW50
KElEQktleVJhbmdlLmJvdW5kKHRlc3QubG93ZXIsIHRlc3QudXBwZXIsIHRlc3QubG93ZXJPcGVu
LCB0ZXN0LnVwcGVyT3BlbikpIik7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgidHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdu
dW1iZXInIik7Ci0gICAgICAgICAgICAgc2hvdWxkQmUoInJlcXVlc3QucmVzdWx0IiwgU3RyaW5n
KHRlc3QuZXhwZWN0ZWQpKTsKLQotICAgICAgICAgICAgIGlmICh0ZXN0cy5sZW5ndGgpIHsKLSAg
ICAgICAgICAgICAgICAgbmV4dFRlc3QoKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
Ly8gb3RoZXJ3aXNlIGxldCB0aGUgdHJhbnNhY3Rpb24gY29tcGxldGUKLSAgICAgICAgfTsKLSAg
ICB9Ci0KLSAgICBuZXh0VGVzdCgpOwotfQotCi1mdW5jdGlvbiB2ZXJpZnlDb3VudFdpdGhLZXko
KQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygidmVyaWZ5aW5nIGNvdW50IHdpdGgga2V5
Iik7Ci0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9y
ZU5hbWUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0
cmFucyAhPSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxi
YWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBmaW5pc2hKU1Rlc3Q7Ci0KLSAgICBzdG9yZSA9
IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0g
ICAgc2hvdWxkQmVUcnVlKCJzdG9yZSAhPSBudWxsIik7Ci0gICAgc3RvcmUgPSBldmFsQW5kTG9n
KCJpbmRleCA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKS5pbmRleCgnaW5kZXhOYW1l
JykiKTsKLSAgICBzaG91bGRCZVRydWUoImluZGV4ICE9IG51bGwiKTsKLQotICAgIGV2YWxBbmRF
eHBlY3RFeGNlcHRpb24oImluZGV4LmNvdW50KE5hTikiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24u
REFUQV9FUlIiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJpbmRleC5jb3VudCh7fSki
LCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJpbmRleC5jb3VudCgvcmVnZXgvKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRB
X0VSUiIpOwotCi0gICAgdmFyIHRlc3RzID0gWwotICAgICAgICB7IGtleTogMCwgZXhwZWN0ZWQ6
IDEgfSwKLSAgICAgICAgeyBrZXk6IDEwMCwgZXhwZWN0ZWQ6IDAgfSwKLSAgICAgICAgeyBrZXk6
IG51bGwsIGV4cGVjdGVkOiAxMDAgfQotICAgIF07Ci0KLSAgICBmdW5jdGlvbiBuZXh0VGVzdCgp
IHsKLSAgICAgICAgZGVidWcoIiIpOwotICAgICAgICBldmFsQW5kTG9nKCJ0ZXN0ID0gIiArIEpT
T04uc3RyaW5naWZ5KHRlc3RzLnNoaWZ0KCkpKTsKLSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBpbmRleC5jb3VudCh0ZXN0LmtleSkiKTsKLSAgICAgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2YgcmVx
dWVzdC5yZXN1bHQgPT0gJ251bWJlciciKTsKLSAgICAgICAgICAgICBzaG91bGRCZSgicmVxdWVz
dC5yZXN1bHQiLCBTdHJpbmcodGVzdC5leHBlY3RlZCkpOwotCi0gICAgICAgICAgICAgaWYgKHRl
c3RzLmxlbmd0aCkgewotICAgICAgICAgICAgICAgICBuZXh0VGVzdCgpOwotICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAvLyBvdGhlcndpc2UgbGV0IHRoZSB0cmFuc2FjdGlvbiBjb21wbGV0
ZQotICAgICAgICB9OwotICAgIH0KLQotICAgIG5leHRUZXN0KCk7Ci19Ci0KLXRlc3QoKTsKLQot
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2luZGV4LWNvdW50LmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvaW5kZXgtY3Vyc29yLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9pbmRleC1jdXJzb3IuaHRtbAppbmRleCAzMGExNjA3MzA5YThjNzU1Yzc4ZGEzM2Fj
ZGY3MWI4OThhZDZlMmIzLi5jOWQ5NDQ0Njk3NzY5MjMzN2JhYjgyM2RhNjdhMWE3OWIxNmQ5ZjU2
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1jdXJzb3Iu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1jdXJzb3IuaHRt
bApAQCAtNCwyNTQgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwv
c2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PiAKLQotZGVzY3JpcHRpb24oIlRlc3Qg
SW5kZXhlZERCJ3Mgd2Via2l0SURCSW5kZXgub3BlbkN1cnNvciArIHRoZSBjdXJzb3IgaXQgcHJv
ZHVjZXMgaW4gZGVwdGguIik7Ci0gCi0vLyBJbiBvcmRlciBvZiBob3cgaXQgc2hvdWxkIGJlIHNv
cnRlZCBieSBJbmRleGVkREIuCi1zZWxmLnRlc3REYXRhID0gWwotICAgIDEsCi0gICAgMSwKLSAg
ICAzLjE0MTU5LAotICAgIDMuMTQxNTksCi0gICAgMTAsCi0gICAgLy8gRklYTUU6IERhdGVzLgot
ICAgICJBIGJpZyBzdHJpbmciLAotICAgICJ0aGUgQklHRVNUIHN0cmluZyIsCi0gICAgInRoZSBC
SUdFU1Qgc3RyaW5nIgotXTsKLSAKLWZ1bmN0aW9uIG9wZW5EYXRhYmFzZSgpCi17Ci0gICAgcmVz
dWx0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2luZGV4LWN1cnNvcicpIik7Ci0gICAg
cmVzdWx0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb247Ci0gICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLSAKLWZ1bmN0aW9uIHNldFZlcnNpb24oKQotewotICAg
IHNlbGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAg
IHJlc3VsdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAg
ICByZXN1bHQub25zdWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7Ci0gICAgcmVzdWx0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZGVsZXRlRXhpc3Rpbmco
KQotewotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0gICAgdHJhbnMu
b25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0
U3RvcmVzKGRiKTsKLQotICAgIHNlbGYub2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVh
dGVPYmplY3RTdG9yZSgnc29tZU9iamVjdFN0b3JlJykiKTsKLSAgICBzZWxmLmluZGV4T2JqZWN0
ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ3NvbWVJbmRleCcsICd4Jyki
KTsKLSAgICBzZWxmLm5leHRUb0FkZCA9IDA7Ci0gICAgYWRkRGF0YSgpOwotfQotCi1mdW5jdGlv
biBhZGREYXRhKCkKLXsKLSAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQo
eyd4JzogdGVzdERhdGFbbmV4dFRvQWRkXX0sIG5leHRUb0FkZCkiKTsKLSAgICByZXN1bHQub25z
dWNjZXNzID0gKytzZWxmLm5leHRUb0FkZCA8IHRlc3REYXRhLmxlbmd0aCA/IGFkZERhdGEgOiBz
Y2hlZHVsZVRlc3RzOwotICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIHNjaGVkdWxlVGVzdHMoKQotewotICAgIGRlYnVnKCJTY2hlZHVs
aW5nIHRlc3RzLi4uIik7Ci0gICAgc2VsZi5zY2hlZHVsZWRUZXN0cyA9IFtdOwotICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgdGVzdERhdGEubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgLyogbGVmdCBi
b3VuZCwgaXMgb3BlbiwgcmlnaHQgYm91bmQsIGlzIG9wZW4sIGFzY2VuZGluZyAqLwotICAgICAg
ICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCB0cnVlLCBudWxsLCBudWxsLCB0cnVlXSk7Ci0g
ICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBudWxsLCBudWxsLCB0cnVl
XSk7Ci0gICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW251bGwsIG51bGwsIGksIHRydWUs
IHRydWVdKTsKLSAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbbnVsbCwgbnVsbCwgaSwg
ZmFsc2UsIHRydWVdKTsKLSAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwg
bnVsbCwgbnVsbCwgZmFsc2VdKTsKLSAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwg
ZmFsc2UsIG51bGwsIG51bGwsIGZhbHNlXSk7Ci0gICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hp
ZnQoW251bGwsIG51bGwsIGksIHRydWUsIGZhbHNlXSk7Ci0gICAgICAgIHNjaGVkdWxlZFRlc3Rz
LnVuc2hpZnQoW251bGwsIG51bGwsIGksIGZhbHNlLCBmYWxzZV0pOwotICAgICAgICBmb3IgKHZh
ciBqID0gNjsgaiA8IHRlc3REYXRhLmxlbmd0aDsgKytqKSB7Ci0gICAgICAgICAgICBzY2hlZHVs
ZWRUZXN0cy51bnNoaWZ0KFtpLCB0cnVlLCBqLCB0cnVlLCB0cnVlXSk7Ci0gICAgICAgICAgICBz
Y2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCB0cnVlLCBqLCBmYWxzZSwgdHJ1ZV0pOwotICAgICAg
ICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgZmFsc2UsIGosIHRydWUsIHRydWVdKTsK
LSAgICAgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBqLCBmYWxzZSwg
dHJ1ZV0pOwotICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwgaiwg
dHJ1ZSwgZmFsc2VdKTsKLSAgICAgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIHRy
dWUsIGosIGZhbHNlLCBmYWxzZV0pOwotICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlm
dChbaSwgZmFsc2UsIGosIHRydWUsIGZhbHNlXSk7Ci0gICAgICAgICAgICBzY2hlZHVsZWRUZXN0
cy51bnNoaWZ0KFtpLCBmYWxzZSwgaiwgZmFsc2UsIGZhbHNlXSk7Ci0gICAgICAgIH0KLSAgICB9
Ci0gCi0gICAgZGVidWcoIlJ1bm5pbmcgdGVzdHMuLi4iKTsKLSAgICBydW5OZXh0VGVzdCgpOwot
fQotIAotZnVuY3Rpb24gcnVuTmV4dFRlc3QoKQotewotICAgIGlmICghc2NoZWR1bGVkVGVzdHMu
bGVuZ3RoKSB7Ci0gICAgICAgIHRlc3ROdWxsS2V5UmFuZ2UoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAKLSAgICB2YXIgdGVzdCA9IHNjaGVkdWxlZFRlc3RzLnBvcCgpOwotICAgIHNlbGYu
bG93ZXIgPSB0ZXN0WzBdOwotICAgIHNlbGYubG93ZXJJc09wZW4gPSB0ZXN0WzFdOwotICAgIHNl
bGYudXBwZXIgPSB0ZXN0WzJdOwotICAgIHNlbGYudXBwZXJJc09wZW4gPSB0ZXN0WzNdOwotICAg
IHNlbGYuYXNjZW5kaW5nID0gdGVzdFs0XTsKLQotICAgIHN0ciA9ICJOZXh0IHRlc3Q6ICI7Ci0g
ICAgaWYgKGxvd2VyICE9PSBudWxsKSB7Ci0gICAgICAgIHN0ciArPSAibG93ZXIgIjsKLSAgICAg
ICAgaWYgKGxvd2VySXNPcGVuKQotICAgICAgICAgICAgc3RyICs9ICJvcGVuICI7Ci0gICAgICAg
IHN0ciArPSAiYm91bmQgaXMgIiArIGxvd2VyICsgIjsgIjsKLSAgICB9Ci0gICAgaWYgKHVwcGVy
ICE9PSBudWxsKSB7Ci0gICAgICAgIHN0ciArPSAidXBwZXIgIjsKLSAgICAgICAgaWYgKHVwcGVy
SXNPcGVuKQotICAgICAgICAgICAgc3RyICs9ICJvcGVuICI7Ci0gICAgICAgIHN0ciArPSAiYm91
bmQgaXMgIiArIHVwcGVyICsgIjsgIjsKLSAgICB9Ci0gICAgaWYgKGFzY2VuZGluZykKLSAgICAg
ICAgc3RyICs9ICJzb3J0ZWQgYXNjZW5kaW5nLiI7Ci0gICAgZWxzZQotICAgICAgICBzdHIgKz0g
InNvcnRlZCBkZXNjZW5kaW5nLiI7Ci0KLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoc3RyKTsK
LQotICAgIC8vIFdvcmsgYXJvdW5kIGZvciBkdXBsaWNhdGUgdmFsdWVzLgotICAgIGlmICh1cHBl
ciAhPT0gbnVsbCkgewotICAgICAgICBpZiAodXBwZXJJc09wZW4pIHsKLSAgICAgICAgICAgIHdo
aWxlICh1cHBlciA+IDAgJiYgdGVzdERhdGFbdXBwZXJdID09PSB0ZXN0RGF0YVt1cHBlciAtIDFd
KQotICAgICAgICAgICAgICAgIC0tc2VsZi51cHBlcjsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIHdoaWxlICh1cHBlciA8IHRlc3REYXRhLmxlbmd0aCAtIDEgJiYgdGVzdERhdGFbdXBw
ZXJdID09PSB0ZXN0RGF0YVt1cHBlciArIDFdKQotICAgICAgICAgICAgICAgICsrc2VsZi51cHBl
cjsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAobG93ZXIgIT09IG51bGwpIHsKLSAgICAgICAg
aWYgKGxvd2VySXNPcGVuKSB7Ci0gICAgICAgICAgICB3aGlsZSAobG93ZXIgPCB0ZXN0RGF0YS5s
ZW5ndGggLSAxICYmIHRlc3REYXRhW2xvd2VyXSA9PT0gdGVzdERhdGFbbG93ZXIgKyAxXSkKLSAg
ICAgICAgICAgICAgICArK3NlbGYubG93ZXI7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICB3aGlsZSAobG93ZXIgPiAwICYmIHRlc3REYXRhW2xvd2VyXSA9PT0gdGVzdERhdGFbbG93ZXIg
LSAxXSkKLSAgICAgICAgICAgICAgICAtLXNlbGYubG93ZXI7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICBpZiAoYXNjZW5kaW5nKSB7Ci0gICAgICAgIGlmIChsb3dlciAhPT0gbnVsbCkgewotICAg
ICAgICAgICAgaWYgKCFsb3dlcklzT3BlbikKLSAgICAgICAgICAgICAgICBzZWxmLmV4cGVjdGVk
SW5kZXggPSBsb3dlcjsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBzZWxmLmV4
cGVjdGVkSW5kZXggPSBsb3dlciArIDE7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgc2Vs
Zi5leHBlY3RlZEluZGV4ID0gMDsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAodXBwZXIgIT09
IG51bGwpIHsKLSAgICAgICAgICAgIGlmICghdXBwZXJJc09wZW4pCi0gICAgICAgICAgICAgICAg
c2VsZi5leHBlY3RlZEluZGV4ID0gdXBwZXI7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gdXBwZXIgLSAxOwotICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IHRlc3REYXRhLmxlbmd0aCAtIDE7Ci0gICAg
fQotICAgIHRlc3RXaXRoaW5Cb3VuZHMoKTsKLSAKLSAgICBpZiAodGVzdERhdGFbbG93ZXJdID09
PSB0ZXN0RGF0YVt1cHBlcl0gJiYgKGxvd2VySXNPcGVuIHx8IHVwcGVySXNPcGVuKSkgewotICAg
ICAgICBkZWJ1ZygiU2tpcHBpbmcgaWxsZWdhbCBrZXkgcmFuZ2UuIik7Ci0gICAgICAgIHJ1bk5l
eHRUZXN0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB2YXIga2V5UmFuZ2U7Ci0g
ICAgaWYgKGxvd2VyICE9PSBudWxsICYmIHVwcGVyICE9PSBudWxsKQotICAgICAgICBrZXlSYW5n
ZSA9IElEQktleVJhbmdlLmJvdW5kKHRlc3REYXRhW2xvd2VyXSwgdGVzdERhdGFbdXBwZXJdLCBs
b3dlcklzT3BlbiwgdXBwZXJJc09wZW4pOwotICAgIGVsc2UgaWYgKGxvd2VyICE9PSBudWxsKQot
ICAgICAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQodGVzdERhdGFbbG93ZXJd
LCBsb3dlcklzT3Blbik7Ci0gICAgZWxzZQotICAgICAgICBrZXlSYW5nZSA9IElEQktleVJhbmdl
LnVwcGVyQm91bmQodGVzdERhdGFbdXBwZXJdLCB1cHBlcklzT3Blbik7Ci0gCi0gICAgdmFyIHJl
cXVlc3QgPSBpbmRleE9iamVjdC5vcGVuS2V5Q3Vyc29yKGtleVJhbmdlLCBhc2NlbmRpbmcgPyBJ
REJDdXJzb3IuTkVYVCA6IElEQkN1cnNvci5QUkVWKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGN1cnNvckl0ZXJhdGlvbjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLX0KLQotZnVuY3Rpb24gdGVzdFdpdGhpbkJvdW5kcygpCi17Ci0gICAgaWYgKGV4
cGVjdGVkSW5kZXggPCAwIHx8IHRlc3REYXRhLmxlbmd0aCA8PSBleHBlY3RlZEluZGV4KQotICAg
ICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSBudWxsOwotICAgIGlmIChsb3dlciAhPT0gbnVsbCAm
JiBleHBlY3RlZEluZGV4IDwgbG93ZXIpCi0gICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IG51
bGw7Ci0gICAgaWYgKHVwcGVyICE9PSBudWxsICYmIHVwcGVyIDwgZXhwZWN0ZWRJbmRleCkKLSAg
ICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gbnVsbDsKLSAgICBpZiAobG93ZXIgIT09IG51bGwg
JiYgbG93ZXJJc09wZW4gJiYgZXhwZWN0ZWRJbmRleCA8PSBsb3dlcikKLSAgICAgICAgc2VsZi5l
eHBlY3RlZEluZGV4ID0gbnVsbDsKLSAgICBpZiAodXBwZXIgIT09IG51bGwgJiYgdXBwZXJJc09w
ZW4gJiYgdXBwZXIgPD0gZXhwZWN0ZWRJbmRleCkKLSAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4
ID0gbnVsbDsKLX0KLSAKLWZ1bmN0aW9uIGN1cnNvckl0ZXJhdGlvbigpCi17Ci0gICAgaWYgKGV4
cGVjdGVkSW5kZXggPT09IG51bGwpIHsKLSAgICAgICAgc2hvdWxkQmVOdWxsKCJldmVudC50YXJn
ZXQucmVzdWx0Iik7Ci0gICAgICAgIHJ1bk5leHRUZXN0KCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwpIHsKLSAgICAgICAgdGVz
dEZhaWxlZCgiZXZlbnQudGFyZ2V0LnJlc3VsdCBzaG91bGQgbm90IGJlIG51bGwuIik7Ci0gICAg
ICAgIHJ1bk5leHRUZXN0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gCi0gICAgc2hvdWxk
QmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICJleHBlY3RlZEluZGV4Iik7Ci0g
ICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgInRlc3REYXRhWyIgKyBleHBl
Y3RlZEluZGV4ICsgIl0iKTsKLSAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSBhc2NlbmRpbmcgPyBl
eHBlY3RlZEluZGV4ICsgMSA6IGV4cGVjdGVkSW5kZXggLSAxOwotICAgIHRlc3RXaXRoaW5Cb3Vu
ZHMoKTsKLQotICAgIGV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKTsKLX0KLSAKLXNlbGYu
bnVsbEtleVJhbmdlU3RlcCA9IDA7Ci1mdW5jdGlvbiB0ZXN0TnVsbEtleVJhbmdlKCkKLXsKLSAg
ICBzZWxmLmxvd2VyID0gMDsKLSAgICBzZWxmLmxvd2VySXNPcGVuID0gZmFsc2U7Ci0gICAgc2Vs
Zi51cHBlciA9IHRlc3REYXRhLmxlbmd0aC0xOwotICAgIHNlbGYudXBwZXJJc09wZW4gPSBmYWxz
ZTsKLQotICAgIHN0ciA9ICJOZXh0IHRlc3Q6IG51bGwga2V5IHBhdGggIjsKLSAgICBpZiAoc2Vs
Zi5udWxsS2V5UmFuZ2VTdGVwID09IDApIHsKLSAgICAgICAgc3RyICs9ICJzb3J0ZWQgYXNjZW5k
aW5nLiI7Ci0gICAgICAgIHNlbGYuYXNjZW5kaW5nID0gdHJ1ZTsKLSAgICAgICAgc2VsZi5leHBl
Y3RlZEluZGV4ID0gbG93ZXI7Ci0gICAgICAgIHNlbGYubnVsbEtleVJhbmdlU3RlcCA9IDE7Ci0g
ICAgfSBlbHNlIGlmIChzZWxmLm51bGxLZXlSYW5nZVN0ZXAgPT0gMSkgewotICAgICAgICBzdHIg
Kz0gInNvcnRlZCBkZXNjZW5kaW5nLiI7Ci0gICAgICAgIHNlbGYuYXNjZW5kaW5nID0gZmFsc2U7
Ci0gICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IHVwcGVyOwotICAgICAgICBzZWxmLm51bGxL
ZXlSYW5nZVN0ZXAgPSAyOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKHN0cik7
Ci0gCi0gICAgdmFyIHJlcXVlc3QgPSBpbmRleE9iamVjdC5vcGVuS2V5Q3Vyc29yKG51bGwsIGFz
Y2VuZGluZyA/IElEQkN1cnNvci5ORVhUIDogSURCQ3Vyc29yLlBSRVYpOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gY3Vyc29ySXRlcmF0aW9uOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotIAotcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLW9wZW5E
YXRhYmFzZSgpOyAvLyBUaGUgZmlyc3Qgc3RlcC4KLSAKLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9pbmRleC1jdXJzb3IuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1n
ZXQta2V5LWFyZ3VtZW50LXJlcXVpcmVkLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9pbmRleC1nZXQta2V5LWFyZ3VtZW50LXJlcXVpcmVkLmh0bWwKaW5kZXggM2I5ZWExZDY1
YzdjZjA3OTMyMjEwYTZlMjVlMzRhN2E2ZWJjZjIzYS4uZGRiN2NlMzcxNmU2YzhmYWRmN2Q1MThi
NGQzNzBmMjIzZmE1NzQzYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvaW5kZXgtZ2V0LWtleS1hcmd1bWVudC1yZXF1aXJlZC5odG1sCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWdldC1rZXktYXJndW1lbnQtcmVxdWlyZWQuaHRtbApA
QCAtMSw0OSArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlw
dCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxi
b2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGluZGV4IC5nZXQo
KSByZXF1aXJlZCBhcmd1bWVudCIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVW
ZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0g
ICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9
IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUFu
ZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7
Ci0KLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ2ZvbycsIHsga2V5UGF0aDogJ2lkJywgYXV0b0luY3JlbWVudDogdHJ1ZSB9
KTsiKTsKLSAgICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRl
SW5kZXgoJ2ZpcnN0JywgJ2ZpcnN0Jyk7Iik7Ci0gICAgc2hvdWxkVGhyb3coImluZGV4LmdldCgp
OyIpOwotICAgIHNob3VsZFRocm93KCJpbmRleC5nZXRLZXkoKTsiKTsKLSAgICBmaW5pc2hKU1Rl
c3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9pbmRleC1nZXQta2V5LWFyZ3VtZW50LXJlcXVpcmVkLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgog
PC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvaW5kZXgtbXVsdGllbnRyeS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
aW5kZXgtbXVsdGllbnRyeS5odG1sCmluZGV4IDVjNzU5OWYwYzUwMmY3ZTY3ZGY0OTJkODQyNWQy
NWE4MDAwZGEwODUuLmY4YjJkZjU5ZjZiM2U4NzliN2MxMDZiM2Y1NDc5ODY3YmI0Y2RlZjIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LW11bHRpZW50cnku
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1tdWx0aWVudHJ5
Lmh0bWwKQEAgLTQsMTQ2ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpz
Ij48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRl
c3QgZmVhdHVyZXMgb2YgSW5kZXhlZERCJ3MgbXVsdGlFbnRyeSBpbmRpY2VzLiIpOwotCi1mdW5j
dGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdpbmRleC1tdWx0aUVudHJ5JykiKTsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAgICBkYiA9IGV2YWxBbmRMb2coImRiID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJk
Yi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcHJlcGFyZURhdGFi
YXNlOwotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIHByZXBhcmVEYXRhYmFzZSgpCi17Ci0gICAgZGVi
dWcoIiIpOwotICAgIGRlYnVnKCJDcmVhdGluZyBlbXB0eSBzdG9yZXMgYW5kIGluZGV4ZXMiKTsK
LSAgICB2YXIgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9y
dCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBhZGRE
YXRhOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIHN0b3JlID0gZXZh
bEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOwotICAgIGV2
YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleCcsICd4Jywge211bHRpRW50cnk6IHRy
dWV9KSIpOwotCi0gICAgc3RvcmUyID0gZXZhbEFuZExvZygic3RvcmUyID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ3N0b3JlLXVuaXF1ZScpIik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUyLmNyZWF0
ZUluZGV4KCdpbmRleC11bmlxdWUnLCAneCcsIHttdWx0aUVudHJ5OiB0cnVlLCB1bmlxdWU6IHRy
dWV9KSIpOwotfQotCi1mdW5jdGlvbiBhZGREYXRhKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAg
ZGVidWcoIlBvcHVsYXRpbmcgc3RvcmVzIChhbmQgaW5kZXhlcykiKTsKLSAgICB0cmFuc2FjdGlv
biA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZSddLCBJ
REJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1
bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVu
Y3Rpb24oKSB7IHZlcmlmeUluZGV4ZXMoJ2luZGV4JywgdmVyaWZ5VW5pcXVlQ29uc3RyYWludCk7
IH07Ci0KLSAgICBkZWJ1ZygiRmlyc3QgdHJ5IHNvbWUga2V5cyB0aGF0IGFyZW4ndCB3aGF0IHdl
J3JlIGV4cGVjdGluZyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5v
YmplY3RTdG9yZSgnc3RvcmUnKS5wdXQoe3g6IFs3LCA4LCA5XSwgeTogJ2EnfSwgJ2ZvbycpIik7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgZGVi
dWcoIk5vdyBvdmVyd3JpdGUgdGhlbSB3aXRoIHdoYXQgd2UncmUgZXhwZWN0aW5nIik7Ci0gICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLnB1
dCh7eDogWzEsIDIsIDNdLCB5OiAnYSd9LCAnZm9vJykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJh
bnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KHt4OiBbNCwgNSwgNl0sIHk6ICdiJ30s
ICdiYXInKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotfQotCi1mdW5jdGlvbiB2ZXJpZnlJbmRleGVzKGluZGV4TmFtZSwgY2FsbGJhY2spCi17Ci0g
ICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJWZXJpZnlpbmcgaW5kZXg6ICIgKyBpbmRleE5hbWUp
OwotICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2Fj
dGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkiKTsKLSAgICB0cmFuc2Fj
dGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnNhY3Rpb24u
b25jb21wbGV0ZSA9IGNhbGxiYWNrOwotCi0gICAgZXhwZWN0ZWQgPSBbCi0gICAgICAgIHsga2V5
OiAxLCBwcmltYXJ5S2V5OiAnZm9vJywgeTogJ2EnIH0sCi0gICAgICAgIHsga2V5OiAyLCBwcmlt
YXJ5S2V5OiAnZm9vJywgeTogJ2EnIH0sCi0gICAgICAgIHsga2V5OiAzLCBwcmltYXJ5S2V5OiAn
Zm9vJywgeTogJ2EnIH0sCi0gICAgICAgIHsga2V5OiA0LCBwcmltYXJ5S2V5OiAnYmFyJywgeTog
J2InIH0sCi0gICAgICAgIHsga2V5OiA1LCBwcmltYXJ5S2V5OiAnYmFyJywgeTogJ2InIH0sCi0g
ICAgICAgIHsga2V5OiA2LCBwcmltYXJ5S2V5OiAnYmFyJywgeTogJ2InIH0sCi0gICAgXTsKLQot
ICAgIHZhciByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0
b3JlJykuaW5kZXgoJyIgKyBpbmRleE5hbWUgKyAiJykub3BlbkN1cnNvcigpIik7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJj
dXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsKLSAg
ICAgICAgICAgIGV4ID0gZXhwZWN0ZWQuc2hpZnQoKTsKLSAgICAgICAgICAgIHNob3VsZEJlVHJ1
ZSgiZXggIT0gbnVsbCIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCBTdHJp
bmcoZXgua2V5KSk7Ci0gICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImN1cnNvci5w
cmltYXJ5S2V5IiwgZXgucHJpbWFyeUtleSk7Ci0gICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImN1cnNvci52YWx1ZS55IiwgZXgueSk7Ci0gICAgICAgICAgICBjdXJzb3IuY29udGlu
dWUoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiZXhwZWN0
ZWQubGVuZ3RoID09PSAwIik7Ci0gICAgICAgIH0KLSAgICB9OwotfQotCi1mdW5jdGlvbiB2ZXJp
ZnlVbmlxdWVDb25zdHJhaW50KCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIlZlcmlm
eWluZyB1bmlxdWUgY29uc3RyYWludCBvbiBtdWx0aUVudHJ5IGluZGV4Iik7Ci0gICAgdHJhbnNh
Y3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUt
dW5pcXVlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgdHJhbnNhY3Rpb24u
b25hYm9ydCA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgZGVidWcoIlRyYW5zYWN0aW9uIGFib3J0
ZWQgYXMgZXhwZWN0ZWQiKTsKLSAgICAgICAgY3JlYXRlSW5kZXhPblN0b3JlV2l0aERhdGEoKTsK
LSAgICB9OwotICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQ29tcGxldGVD
YWxsYmFjazsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RT
dG9yZSgnc3RvcmUtdW5pcXVlJykucHV0KHt4OiBbMSwgMiwgM10sIHk6ICdhJ30sICdmb28nKSIp
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGRlYnVnKCJzdWNjZXNzISIp
OwotICAgICAgICBkZWJ1ZygiUmVwbGFjZSBhbiBleGlzdGluZyByZWNvcmQgLSB0aGlzIHNob3Vs
ZCB3b3JrIik7Ci0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmpl
Y3RTdG9yZSgnc3RvcmUtdW5pcXVlJykucHV0KHt4OiBbMSwgMiwgN10sIHk6ICdhJ30sICdmb28n
KSIpOwotICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGRl
YnVnKCJzdWNjZXNzISIpOwotICAgICAgICAgICAgZGVidWcoIlRoaXMgc2hvdWxkIGZhaWwgdGhl
IHVuaXF1ZW5lc3MgY29uc3RyYWludCBvbiB0aGUgaW5kZXgsIGFuZCBmYWlsOiIpOwotICAgICAg
ICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9y
ZS11bmlxdWUnKS5wdXQoe3g6IFs1LCAyXSwgeTogJ2MnfSwgJ3Nob3VsZCBmYWlsJykiKTsKLSAg
ICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsK
LSAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKCkgeyBkZWJ1ZygiUmVxdWVz
dCBmYWlsZWQsIGFzIGV4cGVjdGVkIik7IH07Ci0gICAgICAgIH07Ci0gICAgfTsKLX0KLQotZnVu
Y3Rpb24gY3JlYXRlSW5kZXhPblN0b3JlV2l0aERhdGEoKQotewotICAgIGRlYnVnKCIiKTsKLSAg
ICBkZWJ1ZygiQ3JlYXRlIGFuIGluZGV4IG9uIGEgcG9wdWxhdGVkIHN0b3JlIik7Ci0KLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignMicpIik7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbigpIHsKLQotICAgICAgICB2YXIgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9
IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0g
bnVsbCIpOwotICAgICAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7
Ci0gICAgICAgIHRyYW5zLm9uY29tcGxldGUgPSBmdW5jdGlvbigpIHsgdmVyaWZ5SW5kZXhlcygn
aW5kZXgtbmV3JywgZmluaXNoSlNUZXN0KTsgfTsKLQotICAgICAgICBzdG9yZSA9IGV2YWxBbmRM
b2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKLSAgICAgICAgZXZhbEFu
ZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4LW5ldycsICd4Jywge211bHRpRW50cnk6IHRy
dWV9KSIpOwotICAgIH07Ci19Ci0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL2luZGV4LW11bHRpZW50cnkuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+
CiA8L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2lu
ZGV4LXBvcHVsYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4
LXBvcHVsYXRpb24uaHRtbAppbmRleCAxY2IyODViM2E2MmI1ZDBkNWZmOGE0ZDJhZDE3OTVkYTgz
MjlmMjY0Li40OWYzODNlMDBjZTZhMDM4NDNkYWRjMWI5YjExODI3MzM0NDVmNTVmIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1wb3B1bGF0aW9uLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtcG9wdWxhdGlvbi5odG1s
CkBAIC00LDk2ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Nj
cmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5k
ZXhlZERCIGluZGV4IHBvcHVsYXRpb24uIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJl
bW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhl
ZERCLmRlbGV0ZURhdGFiYXNlKCdpbmRleC1wb3B1bGF0aW9uJykiKTsKLSAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGRlbGV0ZVN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZVN1Y2Nlc3MoKQotewotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignaW5kZXgtcG9wdWxhdGlvbicpIik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkb1NldFZlcnNpb24xOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBkb1NldFZlcnNp
b24xKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoImRvU2V0VmVyc2lvbjEoKToiKTsK
LSAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9u
IDEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvbjE7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldFZl
cnNpb24xKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInNldFZlcnNpb24xKCk6Iik7
Ci0gICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IHJlcXVlc3QucmVz
dWx0Iik7Ci0gICAgdHJhbnNhY3Rpb24ub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAg
ICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3Jl
MScpIik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUucHV0KHtkYXRhOiAnYScsIGluZGV4S2V5OiAx
MH0sIDEpIik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUucHV0KHtkYXRhOiAnYicsIGluZGV4S2V5
OiAyMH0sIDIpIik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUucHV0KHtkYXRhOiAnYycsIGluZGV4
S2V5OiAxMH0sIDMpIik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUucHV0KHtkYXRhOiAnZCcsIGlu
ZGV4S2V5OiAyMH0sIDQpIik7Ci0gICAgZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5jcmVhdGVJ
bmRleCgnaW5kZXgxJywgJ2luZGV4S2V5JykiKTsKLSAgICBzaG91bGRCZVRydWUoImluZGV4IGlu
c3RhbmNlb2YgSURCSW5kZXgiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJpbmRleC51bmlxdWUiKTsK
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4LmNvdW50KElEQktleVJh
bmdlLmJvdW5kKC1JbmZpbml0eSwgSW5maW5pdHkpKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24gKCkgewotICAgICAgICBzaG91bGRCZSgicmVxdWVzdC5yZXN1bHQiLCAiNCIpOwotICAgIH07
Ci0gICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGRvU2V0VmVyc2lvbjI7Ci19Ci0KLWZ1bmN0
aW9uIGRvU2V0VmVyc2lvbjIoKSB7Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJkb1NldFZl
cnNpb24yKCk6Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRW
ZXJzaW9uKCd2ZXJzaW9uIDInKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lv
bjI7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0K
LWZ1bmN0aW9uIHNldFZlcnNpb24yKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInNl
dFZlcnNpb24yKCk6Iik7Ci0gICAgdHJhbnNhY3Rpb24yID0gZXZhbEFuZExvZygidHJhbnNhY3Rp
b24gPSByZXF1ZXN0LnJlc3VsdCIpOwotICAgIHRyYW5zYWN0aW9uMi5vbmFib3J0ID0gc2V0VmVy
c2lvbjJBYm9ydDsKLSAgICB0cmFuc2FjdGlvbjIub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21w
bGV0ZUNhbGxiYWNrOwotICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVP
YmplY3RTdG9yZSgnc3RvcmUyJykiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoe2RhdGE6
ICdhJywgaW5kZXhLZXk6IDEwfSwgMSkiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoe2Rh
dGE6ICdiJywgaW5kZXhLZXk6IDIwfSwgMikiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQo
e2RhdGE6ICdjJywgaW5kZXhLZXk6IDEwfSwgMykiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZS5w
dXQoe2RhdGE6ICdkJywgaW5kZXhLZXk6IDIwfSwgNCkiKTsKLSAgICBldmFsQW5kTG9nKCJpbmRl
eDIgPSBzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXgyJywgJ2luZGV4S2V5JywgeyB1bmlxdWU6IHRy
dWUgfSkiKTsKLSAgICBzaG91bGRCZVRydWUoImluZGV4MiBpbnN0YW5jZW9mIElEQkluZGV4Iik7
Ci0gICAgc2hvdWxkQmVUcnVlKCJpbmRleDIudW5pcXVlIik7Ci19Ci0KLWZ1bmN0aW9uIHNldFZl
cnNpb24yQWJvcnQoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1Zygic2V0VmVyc2lvbjJB
Ym9ydCgpOiIpOwotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIx
Iik7Ci0gICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXNbMF0iLCAiJ3N0b3JlMSciKTsK
LSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvaW5kZXgtcG9wdWxhdGlvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwv
Ym9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2luZGV4LXVuaXF1ZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgt
dW5pcXVlLmh0bWwKaW5kZXggNWE1NDQzYzU5ZThhYmYwMmUzYzhmNWNmZTI5MjZkNzkyY2M4YzZh
NS4uYzY2MzhkZjZhMDZiZjNjNGIyZjRiYTgyNzgwZmFkMDRiZDhlYjM4NyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtdW5pcXVlLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtdW5pcXVlLmh0bWwKQEAgLTQsMTQzICs0
LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVh
ZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgZmVhdHVyZXMgb2YgSW5k
ZXhlZERCJ3MgdW5pcXVlIGluZGljZXMuIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJl
bW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWRE
Qi5vcGVuKCdpbmRleC11bmlxdWUnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVy
c2lvbjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0K
LQotZnVuY3Rpb24gc2V0VmVyc2lvbigpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRW
ZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVF
eGlzdGluZzsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LX0KLQotZnVuY3Rpb24gZGVsZXRlRXhpc3RpbmcoKQotewotICAgIGRlYnVnKCJkZWxldGVFeGlz
dGluZygpOiIpOwotICAgIHZhciB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFy
Z2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKLSAgICB0
cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21w
bGV0ZSA9IHNldFZlcnNpb25Db21wbGV0ZWQ7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMo
ZGIpOwotCi0gICAgc2VsZi5zdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdzdG9yZScpIik7Ci0gICAgc2VsZi5pbmRleE9iamVjdCA9IGV2YWxBbmRMb2coInN0b3JlLmNy
ZWF0ZUluZGV4KCdpbmRleCcsICd4Jywge3VuaXF1ZTogdHJ1ZX0pIik7Ci0KLSAgICAvLyBMZXQg
c2V0VmVyc2lvbiB0cmFuc2FjdGlvbiBjb21wbGV0ZS4KLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lv
bkNvbXBsZXRlZCgpCi17Ci0gICAgZGVidWcoInNldFZlcnNpb25Db21wbGV0ZWQoKToiKTsKLSAg
ICBzZWxmLnRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2Fj
dGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0KLSAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KHt4
OiAxfSwgJ2ZvbycpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRNb3JlRGF0YTsKLX0KLQotZnVuY3Rp
b24gYWRkTW9yZURhdGEoKQotewotICAgIGRlYnVnKCJhZGRNb3JlRGF0YSgpOiIpOwotCi0gICAg
Ly8gVGhlIHggdmFsdWUgdmlvbGF0ZXMgdGhlIHVuaXF1ZW5lc3MgY29uc3RyYWludCBvZiB0aGUg
aW5kZXguCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3Jl
KCdzdG9yZScpLnB1dCh7eDogMX0sICdiYXInKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IGFk
ZE1vcmVEYXRhRmFpbGVkOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nl
c3NDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYWRkTW9yZURhdGFGYWlsZWQoKQotewotICAgIGRl
YnVnKCJhZGRNb3JlRGF0YUZhaWxlZCgpOiIpOwotCi0gICAgLy8gRG9uJ3QgYWJvcnQgdGhlIHRy
YW5zYWN0aW9uLgotICAgIGV2YWxBbmRMb2coImV2ZW50LnByZXZlbnREZWZhdWx0KCkiKTsKLQot
ICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuZXJyb3JDb2RlIiwgIklEQkRhdGFiYXNlRXhjZXB0
aW9uLkNPTlNUUkFJTlRfRVJSIik7Ci0KLSAgICAvLyBVcGRhdGUgdGhlICdmb28nIGVudHJ5IGlu
IG9iamVjdCBzdG9yZSwgY2hhbmdpbmcgdGhlIHZhbHVlIG9mIHguCi0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLnB1dCh7eDogMH0sICdm
b28nKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2hhbmdlRGF0YVN1Y2Nlc3M7Ci19Ci0KLWZ1bmN0aW9u
IGNoYW5nZURhdGFTdWNjZXNzKCkKLXsKLSAgICBkZWJ1ZygiY2hhbmdlRGF0YVN1Y2Nlc3MoKToi
KTsKLQotICAgIC8vIEFuIGluZGV4IGN1cnNvciBzdGFydGluZyBhdCAxIHNob3VsZCBub3QgZmlu
ZCBhbnl0aGluZy4KLSAgICB2YXIgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9i
amVjdFN0b3JlKCdzdG9yZScpLmluZGV4KCdpbmRleCcpLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2Uu
bG93ZXJCb3VuZCgxKSkiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvclN1Y2Nlc3M7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1
bmN0aW9uIGN1cnNvclN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJjdXJzb3JTdWNjZXNzKCk6Iik7
Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAibnVsbCIpOwotCi0gICAgLy8g
QSBrZXkgY3Vyc29yIHN0YXJ0aW5nIGF0IDEgc2hvdWxkIG5vdCBmaW5kIGFueXRoaW5nLgotICAg
IHZhciByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3Jl
JykuaW5kZXgoJ2luZGV4Jykub3BlbktleUN1cnNvcihJREJLZXlSYW5nZS5sb3dlckJvdW5kKDEp
KSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0ga2V5Q3Vyc29yU3VjY2VzczsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24ga2V5
Q3Vyc29yU3VjY2VzcygpCi17Ci0gICAgZGVidWcoImtleUN1cnNvclN1Y2Nlc3MoKToiKTsKLSAg
ICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJudWxsIik7Ci0KLSAgICAvLyBOb3cg
d2Ugc2hvdWxkIGJlIGFibGUgdG8gYWRkIGEgdmFsdWUgd2l0aCB4OiAxLgotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKS5wdXQoe3g6IDF9
LCAnYmFyJykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZE1vcmVEYXRhU3VjY2VzOwotfQotCi1mdW5j
dGlvbiBhZGRNb3JlRGF0YVN1Y2NlcygpCi17Ci0gICAgZGVidWcoImFkZE1vcmVEYXRhU3VjY2Vz
KCk6Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3Rv
cmUoJ3N0b3JlJykuZGVsZXRlKCdiYXInKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlU3VjY2Vz
czsKLX0KLQotZnVuY3Rpb24gZGVsZXRlU3VjY2VzcygpCi17Ci0gICAgZGVidWcoImRlbGV0ZVN1
Y2Nlc3MoKToiKTsKLQotICAgIC8vIE5vdyB3ZSBzaG91bGQgYmUgYWJsZSB0byBhZGQgYSB2YWx1
ZSB3aXRoIHg6IDEgYWdhaW4uCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9u
Lm9iamVjdFN0b3JlKCdzdG9yZScpLnB1dCh7eDogMX0sICdiYXonKSIpOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZmluYWxBZGRTdWNjZXNzOwotfQotCi1mdW5jdGlvbiBmaW5hbEFkZFN1Y2Nlc3MoKSB7Ci0g
ICAgZGVidWcoImZpbmFsQWRkU3VjY2VzcygpOiIpOwotCi0gICAgLy8gQW4gb3ZlcndyaXRlIHNo
b3VsZCBiZSBvay4KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0
U3RvcmUoJ3N0b3JlJykucHV0KHt4OiAxfSwgJ2JheicpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmaW5p
c2hKU1Rlc3Q7Ci19Ci0KLXRlc3QoKTsKLQotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvaW5kZXgtdW5pcXVlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1s
PgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnZhbGlkLWtl
eXMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludmFsaWQta2V5cy5odG1s
CmluZGV4IGZmOTE1ZTA5NmViOTcxNGJiNTJlMzNmNmIxOTdjMTUzOGYwYTAyMTUuLmUzNWFiMThm
YzYzNjA1OGQ2YmZhZWE2ZDdiOTA0NGVjM2Y1NDBmZjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2ludmFsaWQta2V5cy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2ludmFsaWQta2V5cy5odG1sCkBAIC0xLDc0ICsxLDEwIEBACi08IURP
Q1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNl
cy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNj
cmlwdGlvbigiVGVzdCBJbmRleGVkREIgaW52YWxpZCBrZXlzIik7Ci0KLWZ1bmN0aW9uIHRlc3Qo
KQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2Nh
dGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24p
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nl
c3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEn
KSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdGVzdEdyb3VwMTsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gdGVzdEdyb3Vw
MSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9iamVjdFN0b3Jl
ID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycpOyIpOwotICAgIHRlc3RJ
bnZhbGlkS2V5cygpOwotfQotCi1mdW5jdGlvbiB0ZXN0SW52YWxpZEtleXMoKQotewotICAgIHZh
ciBpbnZhbGlkS2V5cyA9IFsKLSAgICAgICAgInZvaWQgMCIsIC8vIFVuZGVmaW5lZAotICAgICAg
ICAibnVsbCIsIC8vIE51bGwKLSAgICAgICAgIihmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50
czsgfSgpKSIsIC8vIEFyZ3VtZW50cwotICAgICAgICAidHJ1ZSIsIC8vIEJvb2xlYW4KLSAgICAg
ICAgImZhbHNlIiwgLy8gQm9vbGVhbgotICAgICAgICAibmV3IEVycm9yIiwgLy8gRXJyb3IKLSAg
ICAgICAgImZ1bmN0aW9uICgpIHt9IiwgLy8gRnVuY3Rpb24KLSAgICAgICAgIkpTT04iLCAvLyBK
U09OCi0gICAgICAgICJNYXRoIiwgLy8gTWF0aAotICAgICAgICAiTmFOIiwgLy8gTnVtYmVyIChz
cGVjaWFsIGNhc2UpCi0gICAgICAgICJuZXcgRGF0ZShOYU4pIiwgLy8gRGF0ZSAoc3BlY2lhbCBj
YXNlKQotICAgICAgICAie30iLCAvLyBPYmplY3QKLSAgICAgICAgIi9yZWdleC8iLCAvLyBSZWdF
eHAKLSAgICAgICAgInNlbGYiLCAvLyBnbG9iYWwKLSAgICAgICAgInNlbGYuZG9jdW1lbnQiLCAv
LyBIVE1MRG9jdW1lbnQKLSAgICAgICAgInNlbGYuZG9jdW1lbnQuYm9keSIgLy8gSFRNTEJvZHlF
bGVtZW50Ci0gICAgXTsKLQotICAgIGludmFsaWRLZXlzLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7
Ci0gICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInJlcXVlc3QgPSBvYmplY3RTdG9yZS5w
dXQoJ3ZhbHVlJywgIiArIGtleSArICIpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJS
Iik7Ci0gICAgfSk7Ci0gICAgCi0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwot
Ci08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaW52YWxpZC1rZXlzLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIva2V5LWdlbmVyYXRvci5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIva2V5LWdlbmVyYXRvci5odG1sCmluZGV4IGE3YjA3ZmZhZDkxYTdkYmViYzRm
YWRkYWE4Y2E4ZjI0NjcyZjg3ZjEuLjg0OWQ0ZjIxOTI2Yzk1OGJkNDhkMGJmZDE4ZjIwZGE3NTJj
NGRmOTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleS1nZW5l
cmF0b3IuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXktZ2VuZXJh
dG9yLmh0bWwKQEAgLTQsMjEyICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVk
LmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24o
IlRlc3QgSW5kZXhlZERCJ3Mga2V5IGdlbmVyYXRvciBiZWhhdmlvci4iKTsKLQotZnVuY3Rpb24g
dGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIHJ1blRlc3RzKCk7
Ci19Ci0KLXZhciB0ZXN0cyA9IFtdOwotZnVuY3Rpb24gZGVmaW5lVGVzdChkZXNjcmlwdGlvbiwg
dmVyY2hhbmdlLCBvcHRpb25hbCkgewotICB0ZXN0cy5wdXNoKAotICAgIHsKLSAgICAgIGRlc2Ny
aXB0aW9uOiBkZXNjcmlwdGlvbiwKLSAgICAgIHZlcmNoYW5nZTogdmVyY2hhbmdlLAotICAgICAg
b3B0aW9uYWw6IG9wdGlvbmFsCi0gICAgfQotICApOwotfQotCi0KLWZ1bmN0aW9uIHJ1blRlc3Rz
KCkgewotCi0gICAgZnVuY3Rpb24gbmV4dFRlc3QoKSB7Ci0gICAgICAgIGlmICghdGVzdHMubGVu
Z3RoKSB7Ci0gICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotCi0gICAgICAgIHZhciB0ZXN0ID0gdGVzdHMuc2hpZnQoKTsKLSAgICAgICAg
ZGVidWcoIiIpOwotICAgICAgICBkZWJ1Zyh0ZXN0LmRlc2NyaXB0aW9uKTsKLQotICAgICAgICBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCdrZXktZ2VuZXJh
dG9yJykiKTsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewotICAgICAgICAg
ICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKCdrZXktZ2VuZXJhdG9yJyki
KTsKLSAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAg
ICAgICAgICAgZXZhbEFuZExvZygiZGIgPSByZXF1ZXN0LnJlc3VsdCIpOwotICAgICAgICAgICAg
ICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICAgICAg
ICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAg
ICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAg
ICAgICAgICAgZXZhbEFuZExvZygidHJhbnMgPSByZXF1ZXN0LnJlc3VsdCIpOwotICAgICAgICAg
ICAgICAgICAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAg
ICAgICAgICAgICAgICAgIHRlc3QudmVyY2hhbmdlKGRiLCB0cmFucyk7Ci0gICAgICAgICAgICAg
ICAgICAgIHRyYW5zLm9uY29tcGxldGUgPSBmdW5jdGlvbiAoKSB7Ci0KLSAgICAgICAgICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXZhbEFuZExvZygiZGIuY2xvc2UoKSIpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5leHRUZXN0KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICh0ZXN0Lm9wdGlvbmFsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGVzdC5vcHRpb25hbChkYiwgZmluaXNoVGVzdCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfTsKLSAgICAg
ICAgICAgICAgICB9OwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICB9Ci0KLSAgICBu
ZXh0VGVzdCgpOwotfQotCi1mdW5jdGlvbiBjaGVjayhzdG9yZSwga2V5LCBleHBlY3RlZCkgewot
ICAgIHNlbGYuc3RvcmUgPSBzdG9yZTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IHN0b3JlLmdldCgiICsgSlNPTi5zdHJpbmdpZnkoa2V5KSArICIpIik7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbiAoZSkgewotICAgICAgICBzZWxmLmV4cGVjdGVkID0gZXhwZWN0ZWQ7Ci0g
ICAgICAgIGlmIChKU09OLnN0cmluZ2lmeShldmVudC50YXJnZXQucmVzdWx0KSA9PT0gSlNPTi5z
dHJpbmdpZnkoZXhwZWN0ZWQpKSB7Ci0gICAgICAgICAgICB0ZXN0UGFzc2VkKCJHb3QgIiArIEpT
T04uc3RyaW5naWZ5KGV2ZW50LnRhcmdldC5yZXN1bHQpICsgIiBmb3Iga2V5OiAiICsgSlNPTi5z
dHJpbmdpZnkoa2V5KSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0ZXN0RmFpbGVk
KCJHb3QgIiArIEpTT04uc3RyaW5naWZ5KGV2ZW50LnRhcmdldC5yZXN1bHQpICsgIiBmb3Iga2V5
OiAiICsgSlNPTi5zdHJpbmdpZnkoa2V5KSArCi0gICAgICAgICAgICAgICAgIiBleHBlY3RlZDog
IiArIEpTT04uc3RyaW5naWZ5KGV4cGVjdGVkKSk7Ci0gICAgICAgIH0KLSAgICB9OwotfQotCi1k
ZWZpbmVUZXN0KAotICAgICdWZXJpZnkgdGhhdCBlYWNoIG9iamVjdCBzdG9yZSBoYXMgYW4gaW5k
ZXBlbmRlbnQga2V5IGdlbmVyYXRvci4nLAotICAgIGZ1bmN0aW9uIChkYiwgdHJhbnMpIHsKLSAg
ICAgICAgZXZhbEFuZExvZygic3RvcmUxID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlMScs
IHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9KSIpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZTEu
cHV0KCdhJykiKTsKLSAgICAgICAgY2hlY2soc3RvcmUxLCAxLCAnYScpOwotICAgICAgICBldmFs
QW5kTG9nKCJzdG9yZTIgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUyJywgeyBhdXRvSW5j
cmVtZW50OiB0cnVlIH0pIik7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlMi5wdXQoJ2EnKSIp
OwotICAgICAgICBjaGVjayhzdG9yZTIsIDEsICdhJyk7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0
b3JlMS5wdXQoJ2InKSIpOwotICAgICAgICBjaGVjayhzdG9yZTEsIDIsICdiJyk7Ci0gICAgICAg
IGV2YWxBbmRMb2coInN0b3JlMi5wdXQoJ2InKSIpOwotICAgICAgICBjaGVjayhzdG9yZTIsIDIs
ICdiJyk7Ci0gICAgfQotKTsKLQotZGVmaW5lVGVzdCgKLSAgICAnVmVyaWZ5IHRoYXQgdGhlIGtl
eSBnZW5lcmF0b3IgaXMgbm90IHVwZGF0ZWQgaWYgaW5zZXJ0aW9uIGZhaWxzJywKLSAgICBmdW5j
dGlvbiAoZGIsIHRyYW5zKSB7Ci0gICAgICAgIHRyYW5zLm9uZXJyb3IgPSBmdW5jdGlvbihlKSB7
IGUucHJldmVudERlZmF1bHQoKSB9OwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTEnLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSkiKTsKLSAg
ICAgICAgZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXgxJywgJ2l4
JywgeyB1bmlxdWU6IHRydWUgfSkiKTsKLSAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KHsg
aXg6ICdhJ30pIik7Ci0gICAgICAgIGNoZWNrKHN0b3JlLCAxLCB7aXg6ICdhJ30pOwotICAgICAg
ICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoeyBpeDogJ2EnfSkiKTsKLSAgICAgICAgZXZhbEFuZExv
Zygic3RvcmUucHV0KHsgaXg6ICdiJ30pIik7Ci0gICAgICAgIGNoZWNrKHN0b3JlLCAyLCB7aXg6
ICdiJ30pOwotICAgIH0KLSk7Ci0KLWRlZmluZVRlc3QoCi0gICAgJ1ZlcmlmeSB0aGF0IHRoZSBr
ZXkgZ2VuZXJhdG9yIGlzIG5vdCBhZmZlY3RlZCBieSBpdGVtIHJlbW92YWwgKGRlbGV0ZSBvciBj
bGVhcikuJywKLSAgICBmdW5jdGlvbiAoZGIsIHRyYW5zKSB7Ci0gICAgICAgIGV2YWxBbmRMb2co
InN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlMScsIHsgYXV0b0luY3JlbWVudDog
dHJ1ZSB9KSIpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2EnKSIpOwotICAgICAg
ICBjaGVjayhzdG9yZSwgMSwgJ2EnKTsKLSAgICAgICAgZXZhbEFuZExvZygic3RvcmUuZGVsZXRl
KDEpIik7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgnYicpIik7Ci0gICAgICAgIGNo
ZWNrKHN0b3JlLCAyLCAnYicpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5jbGVhcigpIik7
Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgnYycpIik7Ci0gICAgICAgIGNoZWNrKHN0
b3JlLCAzLCAnYycpOwotICAgICAgICAvLyBGSVhNRTogSURCT2JqZWN0U3RvcmUuZGVsZXRlKElE
QktleVJhbmdlKSBpcyBub3QgeWV0IGltcGxlbWVudGVkIGluIENocm9taXVtLgotICAgICAgICAv
LyBodHRwOi8vY3JidWcuY29tLzEwMTM4NAotICAgICAgICAvL2V2YWxBbmRMb2coInN0b3JlLmRl
bGV0ZShJREJLZXlSYW5nZS5sb3dlckJvdW5kKDApKSIpOwotICAgICAgICBldmFsQW5kTG9nKCJz
dG9yZS5wdXQoJ2QnKSIpOwotICAgICAgICBjaGVjayhzdG9yZSwgNCwgJ2QnKTsKLSAgICB9Ci0p
OwotCi1kZWZpbmVUZXN0KAotICAgICdWZXJpZnkgdGhhdCB0aGUga2V5IGdlbmVyYXRvciBpcyBv
bmx5IHNldCBpZiBhbmQgb25seSBpZiBhIG51bWVyaWMga2V5IGdyZWF0ZXIgdGhhbiB0aGUgbGFz
dCBnZW5lcmF0ZWQga2V5IGlzIHVzZWQuJywKLSAgICBmdW5jdGlvbiAoZGIsIHRyYW5zKSB7Ci0g
ICAgICAgIGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlMScs
IHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9KSIpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5w
dXQoJ2EnKSIpOwotICAgICAgICBjaGVjayhzdG9yZSwgMSwgJ2EnKTsKLSAgICAgICAgZXZhbEFu
ZExvZygic3RvcmUucHV0KCdiJywgMykiKTsKLSAgICAgICAgY2hlY2soc3RvcmUsIDMsICdiJyk7
Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgnYycpIik7Ci0gICAgICAgIGNoZWNrKHN0
b3JlLCA0LCAnYycpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2QnLCAtMTApIik7
Ci0gICAgICAgIGNoZWNrKHN0b3JlLCAtMTAsICdkJyk7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0
b3JlLnB1dCgnZScpIik7Ci0gICAgICAgIGNoZWNrKHN0b3JlLCA1LCAnZScpOwotICAgICAgICBl
dmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2YnLCA2LjAwMDAxKSIpOwotICAgICAgICBjaGVjayhzdG9y
ZSwgNi4wMDAwMSwgJ2YnKTsKLSAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdnJykiKTsK
LSAgICAgICAgY2hlY2soc3RvcmUsIDcsICdnJyk7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3Jl
LnB1dCgnZicsIDguOTk5OSkiKTsKLSAgICAgICAgY2hlY2soc3RvcmUsIDguOTk5OSwgJ2YnKTsK
LSAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdnJykiKTsKLSAgICAgICAgY2hlY2soc3Rv
cmUsIDksICdnJyk7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgnaCcsICdmb28nKSIp
OwotICAgICAgICBjaGVjayhzdG9yZSwgJ2ZvbycsICdoJyk7Ci0gICAgICAgIGV2YWxBbmRMb2co
InN0b3JlLnB1dCgnaScpIik7Ci0gICAgICAgIGNoZWNrKHN0b3JlLCAxMCwgJ2knKTsKLSAgICAg
ICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdqJywgWzEwMDBdKSIpOwotICAgICAgICBjaGVjayhz
dG9yZSwgWzEwMDBdLCAnaicpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2snKSIp
OwotICAgICAgICBjaGVjayhzdG9yZSwgMTEsICdrJyk7Ci0KLSAgICAgICAgLy8gRklYTUU6IFJl
cGVhdCB0aGlzIHRlc3QsIGJ1dCB3aXRoIGEga2V5UGF0aCBhbmQgaW5saW5lIGtleS4KLSAgICB9
Ci0pOwotCi1kZWZpbmVUZXN0KAotICAgICdWZXJpZnkgdGhhdCBhYm9ydGluZyBhIHRyYW5zYWN0
aW9uIHJlc2V0cyB0aGUga2V5IGdlbmVyYXRvciBzdGF0ZS4nLAotICAgIGZ1bmN0aW9uIChkYiwg
dHJhbnMpIHsKLSAgICAgICAgZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJywgeyBhdXRvSW5j
cmVtZW50OiB0cnVlIH0pOwotICAgIH0sCi0KLSAgICBmdW5jdGlvbiAoZGIsIGNhbGxiYWNrKSB7
Ci0gICAgICAgIGV2YWxBbmRMb2coInRyYW5zMSA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUnXSwg
SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICAgICAgZXZhbEFuZExvZygic3RvcmVf
dDEgPSB0cmFuczEub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKLSAgICAgICAgZXZhbEFuZExvZygi
c3RvcmVfdDEucHV0KCdhJykiKTsKLSAgICAgICAgY2hlY2soc3RvcmVfdDEsIDEsICdhJyk7Ci0g
ICAgICAgIGV2YWxBbmRMb2coInN0b3JlX3QxLnB1dCgnYicpIik7Ci0gICAgICAgIGNoZWNrKHN0
b3JlX3QxLCAyLCAnYicpOwotCi0gICAgICAgIC8vIFNjaGVkdWxlIHRoZSBhYm9ydCBhcyBhIHRh
c2sgKG5vdCBydW4gaXQgc3luY2hyb25vdXNseSkKLSAgICAgICAgc3RvcmVfdDEuZ2V0KDApLm9u
c3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIGRlYnVnKCdhYm9ydGluZy4uLicp
OwotICAgICAgICAgICAgZXZhbEFuZExvZygidHJhbnMxLmFib3J0KCkiKTsKLSAgICAgICAgICAg
IHRyYW5zMS5vbmFib3J0ID0gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgIGRlYnVnKCdh
Ym9ydGVkIScpOwotCi0gICAgICAgICAgICAgICAgZXZhbEFuZExvZygidHJhbnMyID0gZGIudHJh
bnNhY3Rpb24oWydzdG9yZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgICAg
ICAgICAgICAgIGV2YWxBbmRMb2coInN0b3JlX3QyID0gdHJhbnMyLm9iamVjdFN0b3JlKCdzdG9y
ZScpIik7Ci0gICAgICAgICAgICAgICAgZXZhbEFuZExvZygic3RvcmVfdDIucHV0KCdjJykiKTsK
LSAgICAgICAgICAgICAgICBjaGVjayhzdG9yZV90MiwgMSwgJ2MnKTsKLSAgICAgICAgICAgICAg
ICBldmFsQW5kTG9nKCJzdG9yZV90Mi5wdXQoJ2QnKSIpOwotICAgICAgICAgICAgICAgIGNoZWNr
KHN0b3JlX3QyLCAyLCAnZCcpOwotCi0gICAgICAgICAgICAgICAgdHJhbnMyLm9uY29tcGxldGUg
PSBjYWxsYmFjazsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgfQotKTsKLQotdGVz
dCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMva2V5LWdlbmVyYXRvci5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleS1zb3J0LW9yZGVyLWFjcm9zcy10eXBlcy5odG1s
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5LXNvcnQtb3JkZXItYWNyb3NzLXR5
cGVzLmh0bWwKaW5kZXggMGEyNDI0M2MyNGNmMjAxZjkyOTRhODA5OGQ2ZDAxNGMyYzRlZjg2Yy4u
NjQzZjdkY2Y4MDg1NjAzNzg5Yjk4OTE0MTc2NWMyYTA2YzQxMzgwZCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5LXNvcnQtb3JkZXItYWNyb3NzLXR5cGVzLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5LXNvcnQtb3JkZXItYWNy
b3NzLXR5cGVzLmh0bWwKQEAgLTEsOTUgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgogPGh0bWw+
CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3Jp
cHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4
ZWREQiBrZXkgY29tcGFyaXNvbiIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVW
ZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0g
ICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9
IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGFkZEtleTE7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGFkZEtleTEoKQotewotICAgIGRlbGV0ZUFsbE9i
amVjdFN0b3JlcyhkYik7Ci0KLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdmb28nKTsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IG9iamVjdFN0b3JlLmFkZChbXSwgSW5maW5pdHkpOyIpOwotICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gYWRkS2V5MjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLX0KLQotZnVuY3Rpb24gYWRkS2V5MigpCi17Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoW10sIC1JbmZpbml0eSk7Iik7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBhZGRLZXkzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBhZGRLZXkzKCkKLXsKLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChbXSwgMS4wKTsiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEtleTQ7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGFkZEtleTQoKQotewotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKFtdLCAnJyk7Iik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRLZXk1OwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBhZGRLZXk1KCkKLXsKLSAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChbXSwgJzEu
MCcpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbkFDdXJzb3I7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5B
Q3Vyc29yKCkKLXsKLSAgICBrZXlJbmRleCA9IDA7Ci0gICAgc29ydGVkS2V5cyA9IGV2YWxBbmRM
b2coInNvcnRlZEtleSA9IFstSW5maW5pdHksIDEuMCwgSW5maW5pdHksICcnLCAnMS4wJ107Iik7
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vy
c29yKCk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAgY3Vy
c29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAg
ICAgaWYgKGN1cnNvcikgewotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAic29y
dGVkS2V5c1trZXlJbmRleF0iKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250
aW51ZSgpOyIpOwotICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKLSAgICAg
ICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgICAg
ICB9Ci0gICAgfQotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2tleS1zb3J0LW9yZGVyLWFjcm9zcy10eXBlcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
IDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2tleS1zb3J0LW9yZGVyLWRhdGUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2tleS1zb3J0LW9yZGVyLWRhdGUuaHRtbAppbmRleCA1ZDcwMmQwYmFhZTlhOGU1NmM2ZWE3
ZDg5OGNmODQyN2JhZjRhYzE2Li4yZjBlNGVjNmY2ZGQ2N2VjNjYzYmQzMzcxNjdiODkzYTgzZTJj
YjMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXktc29ydC1v
cmRlci1kYXRlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5LXNv
cnQtb3JkZXItZGF0ZS5odG1sCkBAIC0xLDkyICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KIDxo
dG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwv
c2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJ
bmRleGVkREIga2V5IGNvbXBhcmlzb24iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVt
b3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1l
OwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAg
ZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBhZGRLZXkxOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBhZGRLZXkxKCkKLXsKLSAgICBkZWxldGVB
bGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJkYi5j
cmVhdGVPYmplY3RTdG9yZSgnZm9vJyk7Iik7Ci0gICAgZGF0ZTEgPSBldmFsQW5kTG9nKCJkYXRl
MSA9IG5ldyBEYXRlKDEwMDApOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gb2JqZWN0U3RvcmUuYWRkKFtdLCBkYXRlMSk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBhZGRLZXkyOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotfQotCi1mdW5jdGlvbiBhZGRLZXkyKCkKLXsKLSAgICBkYXRlMCA9IGV2YWxBbmRMb2coImRh
dGUwID0gbmV3IERhdGUoMCk7Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5hZGQoW10sIGRhdGUwKTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGFkZEtleTM7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci19Ci0KLWZ1bmN0aW9uIGFkZEtleTMoKQotewotICAgIGRhdGUzID0gZXZhbEFuZExvZygiZGF0
ZTMgPSBuZXcgRGF0ZSgzMDAwKTsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IG9iamVjdFN0b3JlLmFkZChbXSwgZGF0ZTMpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gYWRkS2V5NDsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLX0KLQotZnVuY3Rpb24gYWRkS2V5NCgpCi17Ci0gICAgZGF0ZTIgPSBldmFsQW5kTG9nKCJk
YXRlMiA9IG5ldyBEYXRlKDIwMDApOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKFtdLCBkYXRlMik7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBvcGVuQUN1cnNvcjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlbkFDdXJzb3IoKQotewotICAgIGtleUluZGV4ID0g
MDsKLSAgICBzb3J0ZWRLZXlzID0gZXZhbEFuZExvZygic29ydGVkS2V5cyA9IFtkYXRlMC50b1N0
cmluZygpLCBkYXRlMS50b1N0cmluZygpLCBkYXRlMi50b1N0cmluZygpLCBkYXRlMy50b1N0cmlu
ZygpXTsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3Jl
Lm9wZW5DdXJzb3IoKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewotICAg
ICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIp
OwotICAgICAgICBpZiAoY3Vyc29yKSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtl
eS50b1N0cmluZygpIiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7Ci0gICAgICAgICAgICBldmFs
QW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImtl
eUluZGV4Kys7Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9rZXktc29ydC1vcmRlci1kYXRlLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIva2V5LXR5cGUtYXJyYXkuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2tleS10eXBlLWFycmF5Lmh0bWwKaW5kZXggYjcxNWYwM2IzMmM3OWFjMGZjMTg3
YjBkNzQzMGFlNjBhZGEyZDZlMi4uYWI1MGQxYTE0ZmI0Yjk1ZTMwZWIzN2EyNWRmZjhjODY5NDJm
MzAzMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5LXR5cGUt
YXJyYXkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXktdHlwZS1h
cnJheS5odG1sCkBAIC0xLDIwOCArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxo
ZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4K
IDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERC
IGtleSB0eXBlcyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVm
aXhlcygpOwotCi0gICAgZXZhbEFuZExvZygiSURCVHJhbnNhY3Rpb24gPSBzZWxmLklEQlRyYW5z
YWN0aW9uIHx8IHNlbGYuSURCVHJhbnNhY3Rpb247Iik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiSURC
VHJhbnNhY3Rpb24gPT0gbnVsbCIpOwotCi0gICAgZXZhbEFuZExvZygiSURCRGF0YWJhc2VFeGNl
cHRpb24gPSBzZWxmLklEQkRhdGFiYXNlRXhjZXB0aW9uIHx8IHNlbGYuSURCRGF0YWJhc2VFeGNl
cHRpb247Iik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiSURCRGF0YWJhc2VFeGNlcHRpb24gPT0gbnVs
bCIpOwotCi0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlw
dGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICBvcGVucmVxID0gZXZhbEFuZExvZygiaW5k
ZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgb3BlbnJlcS5vbnN1Y2Nlc3Mg
PSBvcGVuU3VjY2VzczsKLSAgICBvcGVucmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGV2YWxBbmRMb2coImRi
ID0gb3BlbnJlcS5yZXN1bHQiKTsKLSAgICBzZXR2ZXJyZXEgPSBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgc2V0dmVycmVxLm9uc3VjY2VzcyA9IHNldFZl
cnNpb25TdWNjZXNzOwotICAgIHNldHZlcnJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb25TdWNjZXNzKCkKLXsKLSAgICBkZWJ1Zygi
cHJlcGFyaW5nIGRhdGFiYXNlIik7Ci0gICAgdHJhbnMgPSBzZXR2ZXJyZXEucmVzdWx0OwotICAg
IHRyYW5zLm9uY29tcGxldGUgPSB0ZXN0VmFsaWRBcnJheUtleXM7Ci0gICAgZGVsZXRlQWxsT2Jq
ZWN0U3RvcmVzKGRiKTsKLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9i
amVjdFN0b3JlKCdzdG9yZScpOyIpOwotICAgIGRlYnVnKCIiKTsKLX0KLQotZnVuY3Rpb24gdGVz
dFZhbGlkQXJyYXlLZXlzKCkKLXsKLSAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0
aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFuZExv
Zygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOwotICAgIGRlYnVnKCIiKTsK
LQotICAgIGV2YWxBbmRMb2coImxvbmdfYXJyYXkgPSBbXTsgZm9yIChpID0gMDsgaSA8IDEwMDA7
ICsraSkgeyBsb25nX2FycmF5LnB1c2goJ2FiYycsIDEyMywgbmV3IERhdGUoMCksIFtdKTsgfSIp
OwotICAgIGRlYnVnKCIiKTsKLQotICAgIGRlYnVnKCJhcnJheSB0aGF0IGNvbnRhaW5zIG5vbi1u
dW1lcmljIHNlbGYtcmVmZXJlbmNlIik7Ci0gICAgZXZhbEFuZExvZygic2VsZl9yZWZlcnJlbnRp
YWxfYXJyYXkgPSBbXTsgc2VsZl9yZWZlcnJlbnRpYWxfYXJyYXkuc2VsZiA9IHNlbGZfcmVmZXJy
ZW50aWFsX2FycmF5OyIpOwotICAgIGRlYnVnKCIiKTsKLQotICAgIHZhciBuID0gMCwgY2FzZXMg
PSBbCi0gICAgICAgICJbXSIsCi0KLSAgICAgICAgIlstSW5maW5pdHldIiwKLSAgICAgICAgIlst
TnVtYmVyLk1BWF9WQUxVRV0iLAotICAgICAgICAiWy0xXSIsCi0gICAgICAgICJbLU51bWJlci5N
SU5fVkFMVUVdIiwKLSAgICAgICAgIlswXSIsCi0gICAgICAgICJbTnVtYmVyLk1JTl9WQUxVRV0i
LAotICAgICAgICAiWzFdIiwKLSAgICAgICAgIltOdW1iZXIuTUFYX1ZBTFVFXSIsCi0gICAgICAg
ICJbSW5maW5pdHldIiwKLQotICAgICAgICAiWzEsMiwzXSIsCi0KLSAgICAgICAgIltuZXcgRGF0
ZSgwKV0iLAotICAgICAgICAiW25ldyBEYXRlKCcyNTI1LTAxLTAxVDAwOjAwOjAwWicpXSIsCi0K
LSAgICAgICAgIltuZXcgRGF0ZSgwKSwgbmV3IERhdGUoJzI1MjUtMDEtMDFUMDA6MDA6MDBaJyld
IiwKLQotICAgICAgICAiWycnXSIsCi0gICAgICAgICJbJ1x4MDAnXSIsCi0gICAgICAgICJbJ2Fi
YzEyMyddIiwKLQotICAgICAgICAiWydhYmMnLCAxMjNdIiwKLQotICAgICAgICAiW1tdXSIsCi0K
LSAgICAgICAgIltbXSwgW11dIiwKLSAgICAgICAgIltbXSwgW10sIFtdXSIsCi0KLSAgICAgICAg
IltbW11dXSIsCi0gICAgICAgICJbW1tbXV1dXSIsCi0KLSAgICAgICAgIlsxMjMsICdhYmMnLCBu
ZXcgRGF0ZSgwKSwgW11dIiwKLSAgICAgICAgIltbMTIzLCAnYWJjJywgbmV3IERhdGUoMCksIFtd
XSwgWzQ1NiwgJ2RlZicsIG5ldyBEYXRlKDk5OSksIFtbXV1dXSIsCi0KLSAgICAgICAgImxvbmdf
YXJyYXkiLAotICAgICAgICAic2VsZl9yZWZlcnJlbnRpYWxfYXJyYXkiCi0gICAgXTsKLQotICAg
IGZ1bmN0aW9uIHRlc3RBcnJheVB1dEdldCh2YWx1ZSwga2V5LCBjYWxsYmFjaykKLSAgICB7Ci0g
ICAgICAgIGRlYnVnKCJ0ZXN0aW5nIGFycmF5IGtleTogIiArIGtleSk7Ci0gICAgICAgIHB1dHJl
cSA9IGV2YWxBbmRMb2coInN0b3JlLnB1dCgnIiArIHZhbHVlICsgIicsICIgKyBrZXkgKyAiKTsi
KTsKLSAgICAgICAgcHV0cmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAg
ICAgICAgcHV0cmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgZ2V0cmVx
ID0gZXZhbEFuZExvZygic3RvcmUuZ2V0KCIgKyBrZXkgKyAiKTsiKTsKLSAgICAgICAgICAgIGdl
dHJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgICAgICBnZXRy
ZXEub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJnZXRyZXEucmVzdWx0IiwgdmFsdWUpOwotICAgICAgICAgICAgICAgIGRlYnVn
KCIiKTsKLSAgICAgICAgICAgICAgICBjYWxsYmFjaygpOwotICAgICAgICAgICAgfTsKLSAgICAg
ICAgfTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBuZXh0VGVzdCgpCi0gICAgewotICAgICAgICB2
YXIgdGVzdGNhc2UgPSBjYXNlcy5zaGlmdCgpOwotICAgICAgICBpZiAodGVzdGNhc2UpIHsKLSAg
ICAgICAgICAgIHRlc3RBcnJheVB1dEdldCgidmFsdWUiICsgKCsrbiksIHRlc3RjYXNlLCBuZXh0
VGVzdCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBuZXh0VGVzdCgpOwotCi0gICAgdHJhbnMu
b25jb21wbGV0ZSA9IHRlc3RJbnZhbGlkQXJyYXlLZXlzOwotfQotCi0KLWZ1bmN0aW9uIHRlc3RJ
bnZhbGlkQXJyYXlLZXlzKCkKLXsKLSAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0
aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFuZExv
Zygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOwotICAgIGRlYnVnKCIiKTsK
LQotICAgIGRlYnVnKCJhcnJheSB0aGF0IGNvbnRhaW5zIGl0c2VsZjogYXJyYXkgPSBbIGFycmF5
IF0iKTsKLSAgICBldmFsQW5kTG9nKCJjeWNsaWNfYXJyYXkgPSBbXTsgY3ljbGljX2FycmF5LnB1
c2goY3ljbGljX2FycmF5KSIpOwotICAgIHNob3VsZFRocm93KCJKU09OLnN0cmluZ2lmeShjeWNs
aWNfYXJyYXkpIik7Ci0KLSAgICBkZWJ1ZygiYXJyYXkgdGhhdCBjb250YWlucyBpdHNlbGYsIG9u
ZSBsZXZlbCBkb3duOiBhcnJheSA9IFsgWyBhcnJheSBdIF0iKTsKLSAgICBldmFsQW5kTG9nKCJj
eWNsaWNfYXJyYXkyID0gW107IGN5Y2xpY19hcnJheTIucHVzaChbY3ljbGljX2FycmF5Ml0pIik7
Ci0gICAgc2hvdWxkVGhyb3coIkpTT04uc3RyaW5naWZ5KGN5Y2xpY19hcnJheTIpIik7Ci0KLSAg
ICBkZWJ1ZygiYXJyYXkgdGhhdCBjb250YWlucyBpdHNlbGYsIG5vdCBhcyBmaXJzdCBlbGVtZW50
OiBhcnJheSA9IFsxLCAnYicsIFtdLCBhcnJheV0iKTsKLSAgICBldmFsQW5kTG9nKCJjeWNsaWNf
YXJyYXkzID0gWzEsICdiJywgW11dOyBjeWNsaWNfYXJyYXkzLnB1c2goY3ljbGljX2FycmF5Myki
KTsKLSAgICBzaG91bGRUaHJvdygiSlNPTi5zdHJpbmdpZnkoY3ljbGljX2FycmF5MykiKTsKLSAg
ICBkZWJ1ZygiIik7Ci0KLSAgICBkZWJ1ZygiYXJyYXkgdGhhdCBjb250YWlucyBhcnJheSB0aGF0
IGNvbnRhaW5zIGl0c2VsZiIpOwotICAgIGV2YWxBbmRMb2coImN5Y2xpY19hcnJheTQgPSBbY3lj
bGljX2FycmF5XTsiKTsKLSAgICBzaG91bGRUaHJvdygiSlNPTi5zdHJpbmdpZnkoY3ljbGljX2Fy
cmF5NCkiKTsKLSAgICBkZWJ1ZygiIik7Ci0KLSAgICB2YXIgaW52YWxpZEtleXMgPSBbCi0gICAg
ICAgICJbIHZvaWQgMCBdIiwgLy8gdW5kZWZpbmVkCi0gICAgICAgICJbIHRydWUgXSIsCi0gICAg
ICAgICJbIGZhbHNlIF0iLAotICAgICAgICAiWyBOYU4gXSIsCi0gICAgICAgICJbIG51bGwgXSIs
Ci0gICAgICAgICJbIHt9IF0iLAotICAgICAgICAiWyBmdW5jdGlvbiAoKSB7fSBdIiwKLSAgICAg
ICAgIlsgL3JlZ2V4LyBdIiwKLSAgICAgICAgIlsgc2VsZiBdIiwKLSAgICAgICAgIlsgc2VsZi5k
b2N1bWVudCBdIiwKLSAgICAgICAgIlsgc2VsZi5kb2N1bWVudC5ib2R5IF0iLAotICAgICAgICAi
Y3ljbGljX2FycmF5IiwKLSAgICAgICAgImN5Y2xpY19hcnJheTIiLAotICAgICAgICAiY3ljbGlj
X2FycmF5MyIsCi0gICAgICAgICJjeWNsaWNfYXJyYXk0IiwKLSAgICAgICAgIkFycmF5KDEwMDAp
IiAvLyBzcGFyc2UKLSAgICBdOwotCi0gICAgaW52YWxpZEtleXMuZm9yRWFjaChmdW5jdGlvbiAo
a2V5KSB7Ci0gICAgICAgIGRlYnVnKCJ0ZXN0aW5nIGludmFsaWQgYXJyYXkga2V5OiAiICsga2V5
KTsKLSAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KCd2YWx1ZScsICIg
KyBrZXkgKyAiKTsiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLSAgICAgICAg
ZGVidWcoIiIpOwotICAgIH0pOwotCi0gICAgdGVzdERlcHRoTGltaXRzKCk7Ci19Ci0KLWZ1bmN0
aW9uIG1ha2VBcnJheU9mRGVwdGgobikKLXsKLSAgICB2YXIgYXJyYXkgPSBbXTsKLSAgICB3aGls
ZSAoLS1uKSB7Ci0gICAgICAgIGFycmF5ID0gW2FycmF5XTsKLSAgICB9Ci0gICAgcmV0dXJuIGFy
cmF5OwotfQotCi1mdW5jdGlvbiB0ZXN0RGVwdGhMaW1pdHMoKQotewotICAgIHNob3VsZEJlKCJp
bmRleGVkREIuY21wKG1ha2VBcnJheU9mRGVwdGgoMjUpLCAwKSIsICIxIik7Ci0gICAgc2hvdWxk
QmUoImluZGV4ZWREQi5jbXAobWFrZUFycmF5T2ZEZXB0aCgyNTApLCAwKSIsICIxIik7Ci0gICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXhlZERCLmNtcChtYWtlQXJyYXlPZkRlcHRoKDI1
MDApLCAwKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotICAgIGRlYnVnKCIi
KTsKLQotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9rZXktdHlwZS1hcnJheS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
IDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2tleS10eXBlLWluZmluaXR5Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9rZXktdHlwZS1pbmZpbml0eS5odG1sCmluZGV4IGQzOTY0Yjg4Y2FlYWVkNTcxOTYyYWM2Mjcx
ODRmNjFjY2FjZmIzY2MuLjA1MDc1YWMxNjlmOWQ4NjlhYWI0ODUzNzNmZGIzZjg2NDJhMTUyZGIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleS10eXBlLWluZmlu
aXR5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5LXR5cGUtaW5m
aW5pdHkuaHRtbApAQCAtMSw2MiArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxo
ZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4K
IDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERC
IGtleSB0eXBlcyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVm
aXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3Jp
cHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImlu
ZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRM
b2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IHRlc3RHcm91cDE7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDEoKQotewotICAgIGRlbGV0ZUFsbE9iamVj
dFN0b3JlcyhkYik7Ci0KLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9i
amVjdFN0b3JlKCdmb28nKTsiKTsKLSAgICBkZWJ1ZygidGVzdCBrZXkgYXMgaW5maW5pdHkiKTsK
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChbXSwg
SW5maW5pdHkpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdGVzdEdyb3VwMjsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24g
dGVzdEdyb3VwMigpCi17Ci0gICAgZGVidWcoInRlc3Qga2V5IGFzIG5lZ2F0aXZlIGluZmluaXR5
Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQo
W10sIC1JbmZpbml0eSk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0ZXN0R3JvdXAzOwot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5j
dGlvbiB0ZXN0R3JvdXAzKCkKLXsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7
Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9rZXktdHlwZS1pbmZpbml0eS5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtYmFzaWNzLmh0bWwgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWJhc2ljcy5odG1sCmluZGV4IGE2NmQyY2Q4N2Rj
MmVhMzgxMDVhNmI1MjlkMzQxNmQxNzZhYTljMzMuLjcwNGNjYzkyYzU0NGRlMjJlNWIxOTJmNGNm
ODc1MzNiOWI2NDFiNzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2tleXBhdGgtYmFzaWNzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
a2V5cGF0aC1iYXNpY3MuaHRtbApAQCAtMSwxMDEgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgog
PGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+
PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0
IGZvciB2YWxpZCBhbmQgaW52YWxpZCBrZXlwYXRocyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsK
LSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBh
dGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17
Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0ZXN0VmFsaWRLZXlQYXRoczsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gdGVzdFZhbGlk
S2V5UGF0aHMoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICB0ZXN0
S2V5UGF0aHMgPSBbbnVsbCwgdW5kZWZpbmVkLCAnJ107Ci0gICAgdGVzdEtleVBhdGhzLmZvckVh
Y2goZnVuY3Rpb24gKGtleVBhdGgpIHsKLSAgICAgICAgZ2xvYmFsS2V5UGF0aCA9IGtleVBhdGg7
Ci0gICAgICAgIGRlYnVnKCJnbG9iYWxLZXlQYXRoID0gJyIgKyBnbG9iYWxLZXlQYXRoICsgIici
KTsKLSAgICAgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ25hbWUnLCB7a2V5
UGF0aDogZ2xvYmFsS2V5UGF0aH0pIik7Ci0gICAgICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jlcyhk
Yik7Ci0gICAgfSk7Ci0KLSAgICB0ZXN0S2V5UGF0aHMgPSBbJ2ZvbycsICdmb28uYmFyLmJheidd
OwotICAgIHRlc3RLZXlQYXRocy5mb3JFYWNoKGZ1bmN0aW9uIChrZXlQYXRoKSB7Ci0gICAgICAg
IGdsb2JhbEtleVBhdGggPSBrZXlQYXRoOwotICAgICAgICBkZWJ1ZygiZ2xvYmFsS2V5UGF0aCA9
ICciICsgZ2xvYmFsS2V5UGF0aCArICInIik7Ci0gICAgICAgIGV2YWxBbmRMb2coImRiLmNyZWF0
ZU9iamVjdFN0b3JlKCduYW1lJywge2tleVBhdGg6IGdsb2JhbEtleVBhdGh9KSIpOwotICAgICAg
ICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotICAgIH0pOwotCi0gICAgdGVzdEtleVBhdGhz
ID0gW251bGwsIHVuZGVmaW5lZCwgJycsICdmb28nLCAnZm9vLmJhci5iYXonXTsKLSAgICB0ZXN0
S2V5UGF0aHMuZm9yRWFjaChmdW5jdGlvbiAoa2V5UGF0aCkgewotICAgICAgICBnbG9iYWxLZXlQ
YXRoID0ga2V5UGF0aDsKLSAgICAgICAgZGVidWcoImdsb2JhbEtleVBhdGggPSAnIiArIGdsb2Jh
bEtleVBhdGggKyAiJyIpOwotICAgICAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0
b3JlLmNyZWF0ZUluZGV4KCduYW1lJywgZ2xvYmFsS2V5UGF0aCkiKTsKLSAgICAgICAgZGVsZXRl
QWxsT2JqZWN0U3RvcmVzKGRiKTsKLSAgICB9KTsKLQotICAgIHRlc3RJbnZhbGlkS2V5UGF0aHMo
KTsKLX0KLQotZnVuY3Rpb24gdGVzdEludmFsaWRLZXlQYXRocygpCi17Ci0gICAgZGVsZXRlQWxs
T2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIHRlc3RLZXlQYXRocyA9IFsnW10nLCAnWyJmb28iXScs
ICdbImZvbyIsICJiYXIiXScsICdbIiIsICIiXScsICdbMS4wLCAyLjBdJywgJ1tbImZvbyJdXScs
ICdbImZvbyIsIFsiYmFyIl1dJ107Ci0gICAgdGVzdEtleVBhdGhzLmZvckVhY2goZnVuY3Rpb24g
KGtleVBhdGgpIHsKLSAgICAgICAgZ2xvYmFsS2V5UGF0aCA9IGtleVBhdGg7Ci0gICAgICAgIGRl
YnVnKCJnbG9iYWxLZXlQYXRoID0gJyIgKyBnbG9iYWxLZXlQYXRoICsgIiciKTsKLSAgICAgICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ25hbWUnLCB7a2V5
UGF0aDogZ2xvYmFsS2V5UGF0aH0pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PTl9UUkFOU0lF
TlRfRVJSIik7Ci0gICAgICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0gICAgfSk7Ci0K
LSAgICB0ZXN0S2V5UGF0aHMgPSBbJyAnLCAnZm9vICcsICdmb28gYmFyJywgJ2Zvby4gYmFyJywg
J2ZvbyAuYmFyJywgJ2Zvby4uYmFyJywgJytmb28nLCAnZm9vJSddOwotICAgIHRlc3RLZXlQYXRo
cy5mb3JFYWNoKGZ1bmN0aW9uIChrZXlQYXRoKSB7Ci0gICAgICAgIGdsb2JhbEtleVBhdGggPSBr
ZXlQYXRoOwotICAgICAgICBkZWJ1ZygiZ2xvYmFsS2V5UGF0aCA9ICciICsgZ2xvYmFsS2V5UGF0
aCArICInIik7Ci0gICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLmNyZWF0ZU9iamVj
dFN0b3JlKCduYW1lJywge2tleVBhdGg6IGdsb2JhbEtleVBhdGh9KSIsICJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5OT05fVFJBTlNJRU5UX0VSUiIpOwotICAgICAgICBkZWxldGVBbGxPYmplY3RTdG9y
ZXMoZGIpOwotICAgIH0pOwotCi0gICAgdGVzdEtleVBhdGhzID0gWycgJywgJ2ZvbyAnLCAnZm9v
IGJhcicsICdmb28uIGJhcicsICdmb28gLmJhcicsICdmb28uLmJhcicsICcrZm9vJywgJ2ZvbyUn
XTsKLSAgICB0ZXN0S2V5UGF0aHMuZm9yRWFjaChmdW5jdGlvbiAoa2V5UGF0aCkgewotICAgICAg
ICBnbG9iYWxLZXlQYXRoID0ga2V5UGF0aDsKLSAgICAgICAgZGVidWcoImdsb2JhbEtleVBhdGgg
PSAnIiArIGdsb2JhbEtleVBhdGggKyAiJyIpOwotICAgICAgICBzdG9yZSA9IGV2YWxBbmRMb2co
InN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0gICAgICAgIGV2
YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmNyZWF0ZUluZGV4KCduYW1lJywgZ2xvYmFsS2V5
UGF0aCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9OX1RSQU5TSUVOVF9FUlIiKTsKLSAgICAg
ICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLSAgICB9KTsKLQotICAgIGZpbmlzaEpTVGVz
dCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2tleXBhdGgtYmFzaWNzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1lZGdlcy5o
dG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1lZGdlcy5odG1sCmlu
ZGV4IDQ2OGY0MDJiMWE3NWRkNzg4Y2IwZmYwNzRiZTA0MjZmYzA0Y2ExZTEuLmZmOWRhZGQyNDQ4
ZDVjMzI1YjkzZGVhYjNhNzg4YTI5NmUyNDVlMjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtZWRnZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9rZXlwYXRoLWVkZ2VzLmh0bWwKQEAgLTEsMTE5ICsxLDEwIEBACi08IURP
Q1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNl
cy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNj
cmlwdGlvbigiVGVzdCBJbmRleGVkREIga2V5UGF0aCBlZGdlIGNhc2VzIik7Ci0KLWZ1bmN0aW9u
IHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCdrZXlwYXRoLWVkZ2VzJykiKTsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImluZGV4ZWREQi5vcGVuKCdrZXlwYXRoLWVkZ2VzJykiKTsKLSAgICAgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQot
ewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKLSAgICBkYiA9
IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHRyYW5zYWN0aW9uID0gcmVxdWVzdC5yZXN1bHQ7Ci0g
ICAgICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAg
ICAgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlLXdpdGgtcGF0aCcs
IHtrZXlQYXRoOiAnZm9vJ30pIik7Ci0gICAgICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVj
dFN0b3JlKCdzdG9yZS13aXRoLXBhdGgtYW5kLWdlbmVyYXRvcicsIHtrZXlQYXRoOiAnZm9vJywg
YXV0b0luY3JlbWVudDogdHJ1ZX0pIik7Ci0gICAgICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUg
PSB0ZXN0S2V5UGF0aHM7Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24gdGVzdEtleVBhdGhzKCkKLXsK
LSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInRlc3RLZXlQYXRocygpOiIpOwotCi0gICAgdHJh
bnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnc3Rv
cmUtd2l0aC1wYXRoJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgc3RvcmUg
PSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZS13aXRo
LXBhdGgnKSIpOwotCi0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJLZXkgcGF0aCBkb2Vzbid0
IHJlc29sdmUgdG8gYSB2YWx1ZTsgc2hvdWxkIHlpZWxkIG51bGwsIHNob3VsZCB0aHJvdyBEQVRB
X0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLnB1dChudWxsKSIsICJJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotCi0gICAgZGVidWcoIiIpOwotICAgIGRl
YnVnKCJLZXkgcGF0aCBkb2Vzbid0IHJlc29sdmUgdG8gYSB2YWx1ZTsgc2hvdWxkIHlpZWxkIG51
bGwsIHNob3VsZCB0aHJvdyBEQVRBX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24o
InN0b3JlLnB1dCh7fSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLQotICAg
IGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiS2V5IHBhdGggcmVzb2x2ZXMgdG8gYSB2YWx1ZSB0aGF0
IGlzIGludmFsaWQga2V5OyBzaG91bGQgeWllbGQgJ2ludmFsaWQnIGtleSwgc2hvdWxkIHRocm93
IERBVEFfRVJSIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KHtmb286
IG51bGx9KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotCi0gICAgZGVidWco
IiIpOwotICAgIGRlYnVnKCJLZXkgcGF0aCByZXNvbHZlcyB0byBhIHZhbHVlIHRoYXQgaXMgdmFs
aWQga2V5OyBzaG91bGQgeWllbGQgJ3N0cmluZycga2V5LCBzaG91bGQgc3VjY2VlZCIpOwotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5wdXQoe2ZvbzogJ3pvbyd9KSIpOwotICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZnVuY3Rpb24gKCkgewotICAgICAgICB0ZXN0UGFzc2VkKCJzdG9yZS5wdXQgc3Vj
Y2VlZGVkIik7Ci0gICAgfTsKLQotICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVk
QWJvcnRDYWxsYmFjazsKLSAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gdGVzdEtleVBhdGhz
QW5kR2VuZXJhdG9yOwotfQotCi1mdW5jdGlvbiB0ZXN0S2V5UGF0aHNBbmRHZW5lcmF0b3IoKQot
ewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygidGVzdEtleVBhdGhzQW5kR2VuZXJhdG9yKCk6
Iik7Ci0KLSAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJh
bnNhY3Rpb24oWydzdG9yZS13aXRoLXBhdGgtYW5kLWdlbmVyYXRvciddLCBJREJUcmFuc2FjdGlv
bi5SRUFEX1dSSVRFKSIpOwotICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2Fj
dGlvbi5vYmplY3RTdG9yZSgnc3RvcmUtd2l0aC1wYXRoLWFuZC1nZW5lcmF0b3InKSIpOwotCi0g
ICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJLZXkgcGF0aCBkb2Vzbid0IHJlc29sdmUgdG8gYSB2
YWx1ZTsgc2hvdWxkIHlpZWxkIG51bGwgYnV0IGluc2VydGlvbiB3b3VsZCBmYWlsLCBzbyBwdXQg
cmVxdWVzdCBzaG91bGQgcmFpc2UgZXhjZXB0aW9uIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2Vw
dGlvbigic3RvcmUucHV0KG51bGwpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7
Ci0KLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIktleSBwYXRoIGRvZXNuJ3QgcmVzb2x2ZSB0
byBhIHZhbHVlOyBzaG91bGQgeWllbGQgbnVsbCBidXQgaW5zZXJ0aW9uIHdvdWxkIGZhaWwsIHNv
IHB1dCByZXF1ZXN0IHNob3VsZCByYWlzZSBleGNlcHRpb24iKTsKLSAgICBldmFsQW5kRXhwZWN0
RXhjZXB0aW9uKCJzdG9yZS5wdXQoJ3N0cmluZycpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRB
VEFfRVJSIik7Ci0KLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIktleSBwYXRoIGRvZXNuJ3Qg
cmVzb2x2ZSB0byBhIHZhbHVlOyBzaG91bGQgeWllbGQgbnVsbCwga2V5IHNob3VsZCBiZSBnZW5l
cmF0ZWQsIHB1dCByZXF1ZXN0IHNob3VsZCBzdWNjZWVkIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInN0b3JlLnB1dCh7fSkiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKLSAg
ICAgICAgdGVzdFBhc3NlZCgic3RvcmUucHV0IHN1Y2NlZWRlZCIpOwotCi0gICAgICAgIGRlYnVn
KCIiKTsKLSAgICAgICAgZGVidWcoIktleSBwYXRoIHJlc29sdmVzIHRvIGEgdmFsdWUgdGhhdCBp
cyBpbnZhbGlkIGtleTsgc2hvdWxkIHlpZWxkICdpbnZhbGlkJyBrZXksIHNob3VsZCB0aHJvdyBE
QVRBX0VSUiIpOwotICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5wdXQoe2Zv
bzogbnVsbH0pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0KLSAgICAgICAg
ZGVidWcoIiIpOwotICAgICAgICBkZWJ1ZygiS2V5IHBhdGggcmVzb2x2ZXMgdG8gYSB2YWx1ZSB0
aGF0IGlzIHZhbGlkIGtleTsgc2hvdWxkIHlpZWxkICdzdHJpbmcnIGtleSwgc2hvdWxkIHN1Y2Nl
ZWQiKTsKLSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLnB1dCh7Zm9vOiAnem9v
J30pIik7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAg
IHRlc3RQYXNzZWQoInN0b3JlLnB1dCBzdWNjZWVkZWQiKTsKLQotICAgICAgICB9OwotICAgIH07
Ci0KLSAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0g
ICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZpbmlzaEpTVGVzdDsKLX0KLQotdGVzdCgpOwot
Ci08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMva2V5cGF0aC1lZGdlcy5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtZmV0Y2gta2V5Lmh0bWwgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWZldGNoLWtleS5odG1sCmluZGV4IGMyYzRhNDgyM2M1
OTdiMDJlNDA0ZThhOWQ2MzYyYjYwN2E0ZDcyZmUuLmM4YzgwOGUzYjYzNTRjZGRlNjgwNDRmZTEz
ZDUzNzA0NDlmNWQ0M2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2tleXBhdGgtZmV0Y2gta2V5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIva2V5cGF0aC1mZXRjaC1rZXkuaHRtbApAQCAtMSw5MiArMSwxMCBAQAotPCFET0NUWVBFIGh0
bWw+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVk
LmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24o
IlRlc3QgSW5kZXhlZERCIGtleVBhdGhzIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJl
bW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFt
ZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAg
IGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotCi0gICAg
dGVzdERhdGEgPSBbeyBuYW1lOiAic2ltcGxlIGlkZW50aWZpZXIiLAotICAgICAgICAgICAgICAg
ICAgdmFsdWU6IHtpZDoxMH0sCi0gICAgICAgICAgICAgICAgICBrZXlQYXRoOiAiaWQiLAotICAg
ICAgICAgICAgICAgICAga2V5OiAxMCB9LAotICAgICAgICAgICAgICAgIHsgbmFtZTogInNpbXBs
ZSBpZGVudGlmaWVycyIsCi0gICAgICAgICAgICAgICAgICB2YWx1ZToge2lkMToxMCwgaWQyOjIw
fSwKLSAgICAgICAgICAgICAgICAgIGtleVBhdGg6ICJpZDEiLAotICAgICAgICAgICAgICAgICAg
a2V5OiAxMCB9LAotICAgICAgICAgICAgICAgIHsgbmFtZTogIm5lc3RlZCBpZGVudGlmaWVycyIs
Ci0gICAgICAgICAgICAgICAgICB2YWx1ZToge291dGVyOntpbm5lcjoxMH19LAotICAgICAgICAg
ICAgICAgICAga2V5UGF0aDogIm91dGVyLmlubmVyIiwKLSAgICAgICAgICAgICAgICAgIGtleTog
MTAgfSwKLSAgICAgICAgICAgICAgICB7IG5hbWU6ICJuZXN0ZWQgaWRlbnRpZmllcnMgd2l0aCBk
aXN0cmFjdGlvbnMiLAotICAgICAgICAgICAgICAgICAgdmFsdWU6IHtvdXRlcjp7aW5uZXI6MTB9
LCBpbm5lcjp7b3V0ZXI6MjB9fSwKLSAgICAgICAgICAgICAgICAgIGtleVBhdGg6ICJvdXRlci5p
bm5lciIsCi0gICAgICAgICAgICAgICAgICBrZXk6IDEwIH0sCi0gICAgXTsKLSAgICBuZXh0VG9P
cGVuID0gMDsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0
U3RvcmU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19
Ci0KLWZ1bmN0aW9uIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQotewotICAgIGRlYnVn
KCIiKTsKLSAgICBkZWJ1ZygidGVzdGluZyAiICsgdGVzdERhdGFbbmV4dFRvT3Blbl0ubmFtZSk7
Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBl
dmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKHRlc3REYXRhW25l
eHRUb09wZW5dLm5hbWUsIHtrZXlQYXRoOiB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5rZXlQYXRofSk7
Iik7Ci0gICAgcmVzdWx0ID0gZXZhbEFuZExvZygicmVzdWx0ID0gb2JqZWN0U3RvcmUuYWRkKHRl
c3REYXRhW25leHRUb09wZW5dLnZhbHVlKTsiKTsKLSAgICByZXN1bHQub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBvcGVuQ3Vyc29yOwot
fQotCi1mdW5jdGlvbiBvcGVuQ3Vyc29yKCkKLXsKLSAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJy
ZXN1bHQgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7Ci0gICAgcmVzdWx0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXN1bHQub25zdWNjZXNzID0gY2hlY2tD
dXJzb3I7Ci19Ci0KLWZ1bmN0aW9uIGNoZWNrQ3Vyc29yKCkKLXsKLSAgICBjdXJzb3IgPSBldmFs
QW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgIGlmIChjdXJzb3Ip
IHsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAidGVzdERhdGFbbmV4dFRvT3Blbl0u
a2V5Iik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiY3Vyc29yIGlzIG51bGwi
KTsKLSAgICB9Ci0gICAgaWYgKCsrbmV4dFRvT3BlbiA8IHRlc3REYXRhLmxlbmd0aCkgewotICAg
ICAgICBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfQotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2tleXBhdGgtZmV0Y2gta2V5LmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIva2V5cmFuZ2UtcmVxdWlyZWQtYXJndW1lbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9rZXlyYW5nZS1yZXF1aXJlZC1hcmd1bWVudHMuaHRtbAppbmRleCA4
ODE1ZmY0NDQxZmU3NDUxNmIwNzhiMDQ3OWZjOTA3N2VmY2YxNjE4Li4wNWI5OTdhZjE0M2ZiYzhk
MTZmNWIwNjI1ZmEyYjZhNTE5MzQ2NmE0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9rZXlyYW5nZS1yZXF1aXJlZC1hcmd1bWVudHMuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlyYW5nZS1yZXF1aXJlZC1hcmd1bWVudHMuaHRtbApA
QCAtMSwzMSArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlw
dCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxi
b2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGtleXJhbmdlIHJl
cXVpcmVkIGFyZ3VtZW50cyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5k
b3JQcmVmaXhlcygpOwotCi0gICAgc2hvdWxkVGhyb3coIklEQktleVJhbmdlLm9ubHkoKTsiKTsK
LSAgICBzaG91bGRUaHJvdygiSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgpOyIpOwotICAgIHNob3Vs
ZFRocm93KCJJREJLZXlSYW5nZS51cHBlckJvdW5kKCk7Iik7Ci0gICAgc2hvdWxkVGhyb3coIklE
QktleVJhbmdlLmJvdW5kKDEpOyIpOwotICAgIHNob3VsZFRocm93KCJJREJLZXlSYW5nZS5ib3Vu
ZCgpOyIpOwotCi0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMva2V5cmFuZ2UtcmVxdWlyZWQtYXJndW1lbnRzLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cmFuZ2UuaHRtbCBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL2tleXJhbmdlLmh0bWwKaW5kZXggNjM4ZDVmMzhhNjc5NDIwNDc4ZjM4YzY4
OGFiYmJlZDE4NTk1NDA5NS4uOWZkYzFjYmVmMTM3YjQ2MGUwNWYxMTIzZmNlZjNlMmMwZjU3ODhm
NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cmFuZ2UuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlyYW5nZS5odG1sCkBAIC00
LDE5MiArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+
CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWRE
QidzIEtleVJhbmdlLiIpOwotCi1mdW5jdGlvbiBjaGVja1NpbmdsZUtleVJhbmdlKHZhbHVlKQot
ewotICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygiSURCS2V5UmFuZ2Uub25seSgiICsgdmFsdWUg
KyAiKSIpOwotICAgIHNob3VsZEJlKCJrZXlSYW5nZS5sb3dlciIsICIiICsgdmFsdWUpOwotICAg
IHNob3VsZEJlKCJrZXlSYW5nZS51cHBlciIsICIiICsgdmFsdWUpOwotICAgIHNob3VsZEJlRmFs
c2UoImtleVJhbmdlLmxvd2VyT3BlbiIpOwotICAgIHNob3VsZEJlRmFsc2UoImtleVJhbmdlLnVw
cGVyT3BlbiIpOwotfQotCi1mdW5jdGlvbiBjaGVja0xvd2VyQm91bmRLZXlSYW5nZSh2YWx1ZSwg
b3BlbikKLXsKLSAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coIklEQktleVJhbmdlLmxvd2VyQm91
bmQoIiArIHZhbHVlICsgIiwiICsgb3BlbiArICIpIik7Ci0gICAgc2hvdWxkQmUoImtleVJhbmdl
Lmxvd2VyIiwgIiIgKyB2YWx1ZSk7Ci0gICAgaWYgKG9wZW4gPT09IHVuZGVmaW5lZCkKLSAgICAg
ICAgb3BlbiA9IGZhbHNlOwotICAgIHNob3VsZEJlKCJrZXlSYW5nZS5sb3dlck9wZW4iLCAiIiAr
IG9wZW4pOwotICAgIHNob3VsZEJlTnVsbCgia2V5UmFuZ2UudXBwZXIiKTsKLSAgICBzaG91bGRC
ZUZhbHNlKCJrZXlSYW5nZS51cHBlck9wZW4iKTsKLX0KLQotZnVuY3Rpb24gY2hlY2tVcHBlckJv
dW5kS2V5UmFuZ2UodmFsdWUsIG9wZW4pCi17Ci0gICAga2V5UmFuZ2UgPSBldmFsQW5kTG9nKCJJ
REJLZXlSYW5nZS51cHBlckJvdW5kKCIgKyB2YWx1ZSArICIsIiArIG9wZW4gKyAiKSIpOwotICAg
IHNob3VsZEJlKCJrZXlSYW5nZS51cHBlciIsICIiICsgdmFsdWUpOwotICAgIGlmIChvcGVuID09
PSB1bmRlZmluZWQpCi0gICAgICAgIG9wZW4gPSBmYWxzZTsKLSAgICBzaG91bGRCZSgia2V5UmFu
Z2UudXBwZXJPcGVuIiwgIiIgKyBvcGVuKTsKLSAgICBzaG91bGRCZU51bGwoImtleVJhbmdlLmxv
d2VyIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgia2V5UmFuZ2UubG93ZXJPcGVuIik7Ci19Ci0KLWZ1
bmN0aW9uIGNoZWNrQm91bmRLZXlSYW5nZShsb3dlciwgdXBwZXIsIGxvd2VyT3BlbiwgdXBwZXJP
cGVuKQotewotICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygiSURCS2V5UmFuZ2UuYm91bmQoIiAr
IGxvd2VyICsgIiwiICsgdXBwZXIgKyAiLCAiICsgbG93ZXJPcGVuICsgIiwgIiArIHVwcGVyT3Bl
biArICIpIik7Ci0gICAgc2hvdWxkQmUoImtleVJhbmdlLmxvd2VyIiwgIiIgKyBsb3dlcik7Ci0g
ICAgc2hvdWxkQmUoImtleVJhbmdlLnVwcGVyIiwgIiIgKyB1cHBlcik7Ci0gICAgaWYgKGxvd2Vy
T3BlbiA9PT0gdW5kZWZpbmVkKQotICAgICAgICBsb3dlck9wZW4gPSBmYWxzZTsKLSAgICBpZiAo
dXBwZXJPcGVuID09PSB1bmRlZmluZWQpCi0gICAgICAgIHVwcGVyT3BlbiA9IGZhbHNlOwotICAg
IHNob3VsZEJlKCJrZXlSYW5nZS5sb3dlck9wZW4iLCAiIiArIGxvd2VyT3Blbik7Ci0gICAgc2hv
dWxkQmUoImtleVJhbmdlLnVwcGVyT3BlbiIsICIiICsgdXBwZXJPcGVuKTsKLX0KLQotZnVuY3Rp
b24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICBzaG91bGRCZUZh
bHNlKCInbG93ZXInIGluIElEQktleVJhbmdlIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiJ3VwcGVy
JyBpbiBJREJLZXlSYW5nZSIpOwotICAgIHNob3VsZEJlRmFsc2UoIidsb3dlck9wZW4nIGluIElE
QktleVJhbmdlIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiJ3VwcGVyT3BlbicgaW4gSURCS2V5UmFu
Z2UiKTsKLSAgICBzaG91bGRCZVRydWUoIidvbmx5JyBpbiBJREJLZXlSYW5nZSIpOwotICAgIHNo
b3VsZEJlVHJ1ZSgiJ2xvd2VyQm91bmQnIGluIElEQktleVJhbmdlIik7Ci0gICAgc2hvdWxkQmVU
cnVlKCIndXBwZXJCb3VuZCcgaW4gSURCS2V5UmFuZ2UiKTsKLSAgICBzaG91bGRCZVRydWUoIidi
b3VuZCcgaW4gSURCS2V5UmFuZ2UiKTsKLQotICAgIGRlYnVnKCIiKTsKLQotICAgIHZhciBpbnN0
YW5jZSA9IGV2YWxBbmRMb2coImluc3RhbmNlID0gSURCS2V5UmFuZ2Uub25seSgxKSIpOwotICAg
IHNob3VsZEJlVHJ1ZSgiJ2xvd2VyJyBpbiBpbnN0YW5jZSIpOwotICAgIHNob3VsZEJlVHJ1ZSgi
J3VwcGVyJyBpbiBpbnN0YW5jZSIpOwotICAgIHNob3VsZEJlVHJ1ZSgiJ2xvd2VyT3BlbicgaW4g
aW5zdGFuY2UiKTsKLSAgICBzaG91bGRCZVRydWUoIid1cHBlck9wZW4nIGluIGluc3RhbmNlIik7
Ci0gICAgc2hvdWxkQmVGYWxzZSgiJ29ubHknIGluIGluc3RhbmNlIik7Ci0gICAgc2hvdWxkQmVG
YWxzZSgiJ2xvd2VyQm91bmQnIGluIGluc3RhbmNlIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiJ3Vw
cGVyQm91bmQnIGluIGluc3RhbmNlIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiJ2JvdW5kJyBpbiBp
bnN0YW5jZSIpOwotCi0gICAgZGVidWcoIiIpOwotCi0gICAgY2hlY2tTaW5nbGVLZXlSYW5nZSgx
KTsKLSAgICBjaGVja1NpbmdsZUtleVJhbmdlKDMuMTQpOwotICAgIGNoZWNrU2luZ2xlS2V5UmFu
Z2UoIidhJyIpOwotCi0gICAgY2hlY2tMb3dlckJvdW5kS2V5UmFuZ2UoMTAsIHRydWUpOwotICAg
IGNoZWNrTG93ZXJCb3VuZEtleVJhbmdlKDExLCBmYWxzZSk7Ci0gICAgY2hlY2tMb3dlckJvdW5k
S2V5UmFuZ2UoMTIpOwotICAgIGNoZWNrTG93ZXJCb3VuZEtleVJhbmdlKDEwLjEsIHRydWUpOwot
ICAgIGNoZWNrTG93ZXJCb3VuZEtleVJhbmdlKDExLjIsIGZhbHNlKTsKLSAgICBjaGVja0xvd2Vy
Qm91bmRLZXlSYW5nZSgxMi4zKTsKLSAgICBjaGVja0xvd2VyQm91bmRLZXlSYW5nZSgiJ2FhJyIs
IHRydWUpOwotICAgIGNoZWNrTG93ZXJCb3VuZEtleVJhbmdlKCInYWInIiwgZmFsc2UpOwotICAg
IGNoZWNrTG93ZXJCb3VuZEtleVJhbmdlKCInYWMnIik7Ci0KLSAgICBjaGVja1VwcGVyQm91bmRL
ZXlSYW5nZSgyMCwgdHJ1ZSk7Ci0gICAgY2hlY2tVcHBlckJvdW5kS2V5UmFuZ2UoMjEsIGZhbHNl
KTsKLSAgICBjaGVja1VwcGVyQm91bmRLZXlSYW5nZSgyMik7Ci0gICAgY2hlY2tVcHBlckJvdW5k
S2V5UmFuZ2UoMjAuMiwgdHJ1ZSk7Ci0gICAgY2hlY2tVcHBlckJvdW5kS2V5UmFuZ2UoMjEuMywg
ZmFsc2UpOwotICAgIGNoZWNrVXBwZXJCb3VuZEtleVJhbmdlKDIyLjQpOwotICAgIGNoZWNrVXBw
ZXJCb3VuZEtleVJhbmdlKCInYmEnIiwgdHJ1ZSk7Ci0gICAgY2hlY2tVcHBlckJvdW5kS2V5UmFu
Z2UoIidiYiciLCBmYWxzZSk7Ci0gICAgY2hlY2tVcHBlckJvdW5kS2V5UmFuZ2UoIidiYyciKTsK
LQotICAgIGNoZWNrQm91bmRLZXlSYW5nZSgzMCwgNDApOwotICAgIGNoZWNrQm91bmRLZXlSYW5n
ZSgzMSwgNDEsIGZhbHNlLCBmYWxzZSk7Ci0gICAgY2hlY2tCb3VuZEtleVJhbmdlKDMyLCA0Miwg
ZmFsc2UsIHRydWUpOwotICAgIGNoZWNrQm91bmRLZXlSYW5nZSgzMywgNDMsIHRydWUsIGZhbHNl
KTsKLSAgICBjaGVja0JvdW5kS2V5UmFuZ2UoMzQsIDQ0LCB0cnVlLCB0cnVlKTsKLQotICAgIGNo
ZWNrQm91bmRLZXlSYW5nZSgzMC4xLCA0MC4yKTsKLSAgICBjaGVja0JvdW5kS2V5UmFuZ2UoMzEu
MywgNDEuNCwgZmFsc2UsIGZhbHNlKTsKLSAgICBjaGVja0JvdW5kS2V5UmFuZ2UoMzIuNSwgNDIu
NiwgZmFsc2UsIHRydWUpOwotICAgIGNoZWNrQm91bmRLZXlSYW5nZSgzMy43LCA0My44LCB0cnVl
LCBmYWxzZSk7Ci0gICAgY2hlY2tCb3VuZEtleVJhbmdlKDM0LjksIDQ0LjAsIHRydWUsIHRydWUp
OwotCi0gICAgY2hlY2tCb3VuZEtleVJhbmdlKCInYWFhJyIsICInYWJhJyIsIGZhbHNlLCBmYWxz
ZSk7Ci0gICAgY2hlY2tCb3VuZEtleVJhbmdlKCInYWFiJyIsICInYWJiJyIpOwotICAgIGNoZWNr
Qm91bmRLZXlSYW5nZSgiJ2FhYyciLCAiJ2FiYyciLCBmYWxzZSwgZmFsc2UpOwotICAgIGNoZWNr
Qm91bmRLZXlSYW5nZSgiJ2FhZCciLCAiJ2FiZCciLCBmYWxzZSwgdHJ1ZSk7Ci0gICAgY2hlY2tC
b3VuZEtleVJhbmdlKCInYWFlJyIsICInYWJlJyIsIHRydWUsIGZhbHNlKTsKLSAgICBjaGVja0Jv
dW5kS2V5UmFuZ2UoIidhYWYnIiwgIidhYmYnIiwgdHJ1ZSwgdHJ1ZSk7Ci0KLSAgICB0cnkgewot
ICAgICAgICBkZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIG9ubHkoe30pIik7Ci0g
ICAgICAgIElEQktleVJhbmdlLm9ubHkoe30pOwotICAgICAgICB0ZXN0RmFpbGVkKCJObyBleGNl
cHRpb24gdGhyb3duIik7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICB0ZXN0UGFzc2VkKCJD
YXVnaHQgZXhjZXB0aW9uOiAiICsgZS50b1N0cmluZygpKTsKLSAgICB9Ci0KLSAgICB0cnkgewot
ICAgICAgICBkZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIHVwcGVyQm91bmQoe30p
Iik7Ci0gICAgICAgIElEQktleVJhbmdlLnVwcGVyQm91bmQoe30pOwotICAgICAgICB0ZXN0RmFp
bGVkKCJObyBleGNlcHRpb24gdGhyb3duIik7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICB0
ZXN0UGFzc2VkKCJDYXVnaHQgZXhjZXB0aW9uOiAiICsgZS50b1N0cmluZygpKTsKLSAgICB9Ci0g
Ci0gICAgdHJ5IHsKLSAgICAgICAgZGVidWcoIlBhc3NpbmcgYW4gaW52YWxpZCBrZXkgaW50byBs
b3dlckJvdW5kKHt9KSIpOwotICAgICAgICBJREJLZXlSYW5nZS5sb3dlckJvdW5kKHt9KTsKLSAg
ICAgICAgdGVzdEZhaWxlZCgiTm8gZXhjZXB0aW9uIHRocm93biIpOwotICAgIH0gY2F0Y2ggKGUp
IHsKLSAgICAgICAgdGVzdFBhc3NlZCgiQ2F1Z2h0IGV4Y2VwdGlvbjogIiArIGUudG9TdHJpbmco
KSk7Ci0gICAgfQotCi0gICAgdHJ5IHsKLSAgICAgICAgZGVidWcoIlBhc3NpbmcgYW4gaW52YWxp
ZCBrZXkgaW50byBib3VuZChudWxsLCB7fSkiKTsKLSAgICAgICAgSURCS2V5UmFuZ2UuYm91bmQo
bnVsbCwge30pOwotICAgICAgICB0ZXN0RmFpbGVkKCJObyBleGNlcHRpb24gdGhyb3duIik7Ci0g
ICAgfSBjYXRjaCAoZSkgewotICAgICAgICB0ZXN0UGFzc2VkKCJDYXVnaHQgZXhjZXB0aW9uOiAi
ICsgZS50b1N0cmluZygpKTsKLSAgICB9Ci0KLSAgICB0cnkgewotICAgICAgICBkZWJ1ZygiUGFz
c2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIGJvdW5kKHt9LG51bGwpIik7Ci0gICAgICAgIElEQktl
eVJhbmdlLmJvdW5kKHt9LCBudWxsKTsKLSAgICAgICAgdGVzdEZhaWxlZCgiTm8gZXhjZXB0aW9u
IHRocm93biIpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgdGVzdFBhc3NlZCgiQ2F1Z2h0
IGV4Y2VwdGlvbjogIiArIGUudG9TdHJpbmcoKSk7Ci0gICAgfQotCi0gICAgdHJ5IHsKLSAgICAg
ICAgZGVidWcoIlBhc3NpbmcgYW4gaW52YWxpZCBrZXkgaW50byBib3VuZCh7fSwge30pIik7Ci0g
ICAgICAgIElEQktleVJhbmdlLmJvdW5kKHt9LCB7fSk7Ci0gICAgICAgIHRlc3RGYWlsZWQoIk5v
IGV4Y2VwdGlvbiB0aHJvd24iKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIHRlc3RQYXNz
ZWQoIkNhdWdodCBleGNlcHRpb246ICIgKyBlLnRvU3RyaW5nKCkpOwotICAgIH0KLQotICAgIGRl
YnVnKCJMb3dlciBrZXkgZ3JlYXRlciB0aGFuIGhpZ2hlciBrZXksIGJvdW5kKDQsIDMpIik7Ci0g
ICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiSURCS2V5UmFuZ2UuYm91bmQoNCwgMykiLCAiSURC
RGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLQotICAgIGRlYnVnKCJFcXVhbCBrZXlzLCBl
aXRoZXIgb2YgdGhlIGJvdW5kcyBpcyBvcGVuLCBib3VuZCg0LCA0LCB0cnVlLCBmYWxzZSkiKTsK
LSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJJREJLZXlSYW5nZS5ib3VuZCg0LCA0LCB0cnVl
LCBmYWxzZSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLQotICAgIGRlYnVn
KCJFcXVhbCBrZXlzLCBlaXRoZXIgb2YgdGhlIGJvdW5kcyBpcyBvcGVuLCBib3VuZCg0LCA0LCBm
YWxzZSwgdHJ1ZSkiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJJREJLZXlSYW5nZS5i
b3VuZCg0LCA0LCBmYWxzZSwgdHJ1ZSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIi
KTsKLQotICAgIGRlYnVnKCJFcXVhbCBrZXlzLCBlaXRoZXIgb2YgdGhlIGJvdW5kcyBpcyBvcGVu
LCBib3VuZCg0LCA0LCB0cnVlLCB0cnVlKSIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24o
IklEQktleVJhbmdlLmJvdW5kKDQsIDQsIHRydWUsIHRydWUpIiwgIklEQkRhdGFiYXNlRXhjZXB0
aW9uLkRBVEFfRVJSIik7Ci0KLSAgICBkZWJ1ZygiRXF1YWwga2V5cywgbm9uZSBvZiB0aGUgYm91
bmRzIGlzIG9wZW4sIGJvdW5kKDQsIDQsIGZhbHNlLCBmYWxzZSkiKTsKLSAgICBJREJLZXlSYW5n
ZS5ib3VuZCg0LCA0LCBmYWxzZSwgZmFsc2UpOwotfQotCi10ZXN0KCk7Ci0KLWZpbmlzaEpTVGVz
dCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMva2V5cmFuZ2UuanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9saXN0LW9yZGVyaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9saXN0LW9yZGVyaW5nLmh0bWwKaW5kZXggMDc0MTJmNWI1M2NjNDE2ZTA5
OWRjMjJlOTkzMWVmMThmNWY4MDNmZS4uYjlkOWIzNTkxOTUzNGI4NmUwNWRmZjk0MmZmNmY4NWUz
MzYzYTU1OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbGlzdC1v
cmRlcmluZy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2xpc3Qtb3Jk
ZXJpbmcuaHRtbApAQCAtNCw5MiArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJl
ZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxpbnB1dCB0eXBlPSJmaWxlIiBpZD0i
ZmlsZUlucHV0IiBtdWx0aXBsZT48L2lucHV0PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRl
c3Qgc3RyaW5nIGxpc3Qgb3JkZXJpbmcgaW4gSW5kZXhlZERCLiIpOwotCi12YXIgZXhwZWN0ZWRf
b3JkZXIgPSBbCi0gICIiLAotICAiXHgwMCIsIC8vICdOVUxMJyAoVSswMDAwKQotICAiMCIsCi0g
ICIxIiwKLSAgIkEiLAotICAiQiIsCi0gICJhIiwKLSAgImIiLAotICAiXHg3RiIsIC8vICdERUxF
VEUnIChVKzAwN0YpCi0gICJceEMwIiwgLy8gJ0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBH
UkFWRScgKFUrMDBDMCkKLSAgIlx4QzEiLCAvLyAnTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRI
IEFDVVRFJyAoVSswMEMxKQotICAiXHhFMCIsIC8vICdMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRI
IEdSQVZFJyAoVSswMEUwKQotICAiXHhFMSIsIC8vICdMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRI
IEFDVVRFJyAoVSswMEUxKQotICAiXHhGRiIsIC8vICdMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRI
IERJQUVSRVNJUycgKFUrMDBGRikKLSAgIlx1MDEwMCIsIC8vICdMQVRJTiBDQVBJVEFMIExFVFRF
UiBBIFdJVEggTUFDUk9OJyAoVSswMTAwKQotICAiXHUxMDAwIiwgLy8gJ01ZQU5NQVIgTEVUVEVS
IEtBJyAoVSsxMDAwKQotICAiXHVEODM0XHVERDFFIiwgLy8gJ01VU0lDQUwgU1lNQk9MIEctQ0xF
RicgKFUrMUQxMUUpLCBVVEYtMTYgc3Vycm9nYXRlIHBhaXJzCi0gICJcdUZGRkQiIC8vICdSRVBM
QUNFTUVOVCBDSEFSQUNURVInIChVK0ZGRkQpCi1dOwotdmFyIGksIHRtcCwgcGVybXV0ZWRfb3Jk
ZXIgPSBleHBlY3RlZF9vcmRlci5zbGljZSgpOyBwZXJtdXRlZF9vcmRlci5yZXZlcnNlKCk7Ci1m
b3IgKGkgPSAwOyBpIDwgcGVybXV0ZWRfb3JkZXIubGVuZ3RoIC0gMjsgaSArPSAyKSB7Ci0gICAg
dG1wID0gcGVybXV0ZWRfb3JkZXJbaV07Ci0gICAgcGVybXV0ZWRfb3JkZXJbaV0gPSBwZXJtdXRl
ZF9vcmRlcltpICsgMV07Ci0gICAgcGVybXV0ZWRfb3JkZXJbaSArIDFdID0gdG1wOwotfQotCi1m
dW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIGRlYnVn
KCJjaGVjayB0aGF0IHRoZSBleHBlY3RlZCBvcmRlciBpcyB0aGUgY2Fub25pY2FsIEpTIHNvcnQg
b3JkZXI6Iik7Ci0gICAgZXZhbEFuZExvZygic29ydGVkX29yZGVyID0gZXhwZWN0ZWRfb3JkZXIu
c2xpY2UoKTsgc29ydGVkX29yZGVyLnNvcnQoKSIpOwotICAgIHNob3VsZEJlVHJ1ZSgiYXJlQXJy
YXlzRXF1YWwoc29ydGVkX29yZGVyLCBleHBlY3RlZF9vcmRlcikiKTsKLSAgICB0ZXN0U3RvcmVz
QW5kSW5kZXhlcygpOwotfQotCi0KLQotZnVuY3Rpb24gdGVzdFN0b3Jlc0FuZEluZGV4ZXMoKQot
ewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygidGVzdFN0b3Jlc0FuZEluZGV4ZXMoKToiKTsK
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCdsaXN0
LW9yZGVyaW5nJykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdsaXN0LW9yZGVyaW5nJykiKTsKLSAg
ICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgZXZhbEFuZExv
ZygiZGIgPSByZXF1ZXN0LnJlc3VsdCIpOwotICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJkYi52ZXJzaW9uIiwgIiIpOwotICAgICAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1
bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICB0cmFucyA9IHJlcXVlc3QucmVzdWx0OwotCi0g
ICAgICAgICAgICAgICAgZGVidWcoIiIpOwotICAgICAgICAgICAgICAgIGRlYnVnKCJPYmplY3Qg
c3RvcmVzOiIpOwotICAgICAgICAgICAgICAgIHBlcm11dGVkX29yZGVyLmZvckVhY2goZnVuY3Rp
b24gKG5hbWUpIHsKLSAgICAgICAgICAgICAgICAgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoIiArIEpTT04uc3RyaW5naWZ5KG5hbWUpICsiKSIpOwotICAgICAgICAgICAgICAg
IH0pOwotCi0gICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJhcmVBcnJheXNFcXVhbChkYi5v
YmplY3RTdG9yZU5hbWVzLCBleHBlY3RlZF9vcmRlcikiKTsKLQotICAgICAgICAgICAgICAgIGRl
YnVnKCIiKTsKLSAgICAgICAgICAgICAgICBkZWJ1ZygiSW5kZXhlczoiKTsKLSAgICAgICAgICAg
ICAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0
b3JlJykiKTsKLSAgICAgICAgICAgICAgICBwZXJtdXRlZF9vcmRlci5mb3JFYWNoKGZ1bmN0aW9u
IChuYW1lKSB7Ci0gICAgICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUlu
ZGV4KCIgKyBKU09OLnN0cmluZ2lmeShuYW1lKSArIiwgJ2tleVBhdGgnKSIpOwotICAgICAgICAg
ICAgICAgIH0pOwotCi0gICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJhcmVBcnJheXNFcXVh
bChzdG9yZS5pbmRleE5hbWVzLCBleHBlY3RlZF9vcmRlcikiKTsKLQotICAgICAgICAgICAgICAg
IHRyYW5zLm9uY29tcGxldGUgPSBmaW5pc2hKU1Rlc3Q7Ci0gICAgICAgICAgICB9OwotICAgICAg
ICB9OwotICAgIH07Ci19Ci0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2xpc3Qtb3JkZXJpbmcuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2Fk
ZC10d2ljZS1mYWlsdXJlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL2FkZC10d2ljZS1mYWlsdXJlLmh0bWwKaW5kZXggY2RkMjEyYmMzMWI1ZWM0ZTNkNDZmYTMz
OWI3OGU4Y2EyNzA5YWRhNy4uY2MzOTEzZGFmYjJiOGQ1OTFhMDUyYjhmNTc0ODAzYWY5ZTEwNTUy
OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9hZGQt
dHdpY2UtZmFpbHVyZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
emlsbGEvYWRkLXR3aWNlLWZhaWx1cmUuaHRtbApAQCAtMSw3MCArMSwxMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96
aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfYWRkX3R3aWNlX2ZhaWx1cmUu
aHRtbAotICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Ci0gICAgIiBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KLSAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgotLS0+CiA8aHRtbD4KIDxoZWFkPgog
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4K
IDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERC
IGJlaGF2aW9yIGFkZGluZyB0aGUgc2FtZSBwcm9wZXJ0eSB0d2ljZSIpOwotCi1mdW5jdGlvbiB0
ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYu
bG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0
aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5T
dWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9u
KCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNs
ZWFuRGF0YWJhc2UoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBv
YmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ2ZvbycpOyIpOwotICAgIGtleSA9IGV2YWxBbmRMb2coImtleSA9IDEwIik7Ci0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoe30sIGtleSk7Iik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRGaXJzdFN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGFkZEZpcnN0
U3VjY2VzcygpCi17Ci0gICAgc2hvdWxkQmUoInJlcXVlc3QucmVzdWx0IiwgImtleSIpOwotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKHt9LCBrZXkp
OyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSBhZGRTZWNvbmRFeHBlY3RlZEVycm9yOwotfQotCi1mdW5j
dGlvbiBhZGRTZWNvbmRFeHBlY3RlZEVycm9yKCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFy
Z2V0LmVycm9yQ29kZSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5DT05TVFJBSU5UX0VSUiIpOwot
ICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2FkZC10d2ljZS1mYWlsdXJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgogPC9ib2R5PgogPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL2F1dG9pbmNyZW1lbnQtaW5kZXhlcy5odG1sIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9hdXRvaW5jcmVtZW50LWluZGV4ZXMuaHRtbAppbmRl
eCAwOWZmZWZhZGZjZmNjZjdhMWQ2NTg3NjFkODViNTgzOWU4MWJmMTcwLi5kNzI5ZGU4N2NmODg5
MmZmOTdhMTVmZDIwYTVkYTYzOWJkYzMzZTQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL2F1dG9pbmNyZW1lbnQtaW5kZXhlcy5odG1sCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvYXV0b2luY3JlbWVudC1pbmRleGVz
Lmh0bWwKQEAgLTEsMTAwICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KLTwhLS0KLSAgb3JpZ2lu
YWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5k
ZXhlZERCL3Rlc3QvdGVzdF9hdXRvSW5jcmVtZW50X2luZGV4ZXMuaHRtbD9mb3JjZT0xCi0gIGxp
Y2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgotICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgog
PGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgaW5kZXhlcyBh
Z2FpbnN0IGF1dG9pbmNyZW1lbnRpbmcga2V5cyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAg
ICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0
aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsK
LSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldHVwT2JqZWN0U3RvcmU7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldHVwT2JqZWN0
U3RvcmUoKQotewotICAgIHRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKLSAgICBkZWxldGVB
bGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7IGtleVBhdGg6ICdpZCcsIGF1
dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7Ci0gICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuY3Jl
YXRlSW5kZXgoJ2ZpcnN0JywgJ2ZpcnN0Jyk7Iik7Ci0gICAgZXZhbEFuZExvZygib2JqZWN0U3Rv
cmUuY3JlYXRlSW5kZXgoJ3NlY29uZCcsICdzZWNvbmQnKTsiKTsKLSAgICBldmFsQW5kTG9nKCJv
YmplY3RTdG9yZS5jcmVhdGVJbmRleCgndGhpcmQnLCAndGhpcmQnKTsiKTsKLSAgICBkYXRhID0g
ZXZhbEFuZExvZygiZGF0YSA9IHsgZmlyc3Q6ICdmb28nLCBzZWNvbmQ6ICdmb28nLCB0aGlyZDog
J2ZvbycgfTsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0
b3JlLmFkZChkYXRhKTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldHVwSW5kZXhlczsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVu
Y3Rpb24gc2V0dXBJbmRleGVzKCkKLXsKLSAgICBrZXkgPSBldmFsQW5kTG9nKCJrZXkgPSBldmVu
dC50YXJnZXQucmVzdWx0OyIpOwotICAgIHNob3VsZEJlRmFsc2UoImtleSA9PSBudWxsIik7Ci0g
ICAgdHJhbnMub25jb21wbGV0ZSA9IHNldFZlcnNpb25Db21wbGV0ZTsKLX0KLQotZnVuY3Rpb24g
c2V0VmVyc2lvbkNvbXBsZXRlKCkKLXsKLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9i
amVjdFN0b3JlID0gZGIudHJhbnNhY3Rpb24oJ2ZvbycpLm9iamVjdFN0b3JlKCdmb28nKTsiKTsK
LSAgICBmaXJzdCA9IGV2YWxBbmRMb2coImZpcnN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ2ZpcnN0
Jyk7Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBmaXJzdC5nZXQoJ2Zv
bycpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2hlY2tGaXJzdEluZGV4QW5kUHJlcGFy
ZVNlY29uZDsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LX0KLQotZnVuY3Rpb24gY2hlY2tGaXJzdEluZGV4QW5kUHJlcGFyZVNlY29uZCgpCi17Ci0gICAg
c2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQuaWQiLCAia2V5Iik7Ci0gICAgc2Vjb25kID0g
ZXZhbEFuZExvZygic2Vjb25kID0gb2JqZWN0U3RvcmUuaW5kZXgoJ3NlY29uZCcpOyIpOwotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gc2Vjb25kLmdldCgnZm9vJyk7Iik7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjaGVja1NlY29uZEluZGV4QW5kUHJlcGFyZVRoaXJkOwot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5j
dGlvbiBjaGVja1NlY29uZEluZGV4QW5kUHJlcGFyZVRoaXJkKCkKLXsKLSAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0LnJlc3VsdC5pZCIsICJrZXkiKTsKLSAgICB0aGlyZCA9IGV2YWxBbmRMb2co
InRoaXJkID0gb2JqZWN0U3RvcmUuaW5kZXgoJ3RoaXJkJyk7Iik7Ci0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSB0aGlyZC5nZXQoJ2ZvbycpOyIpOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gY2hlY2tUaGlyZEluZGV4OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjaGVja1RoaXJkSW5kZXgoKQotewotICAg
IHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LmlkIiwgImtleSIpOwotICAgIGZpbmlzaEpT
VGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL2F1dG9pbmNyZW1lbnQtaW5kZXhlcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9k
eT4KIDwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW96aWxsYS9iYWQta2V5cGF0aC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW96aWxsYS9iYWQta2V5cGF0aC5odG1sCmluZGV4IDExZWUwNmQ0MWNlYjZiY2M4ZWZiNjdmZmUw
MjY4NTkxZWZkN2NhZjYuLjBhZTQ5MjEwOTBlM2RlZDViN2FiODgxMzUyMDNlZTE4Y2IxYzM5NjUg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvYmFkLWtl
eXBhdGguaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2Jh
ZC1rZXlwYXRoLmh0bWwKQEAgLTEsNjEgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLQot
ICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNl
L2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2JhZF9rZXlwYXRoLmh0bWwKLSAgbGljZW5zZSBvZiBv
cmlnaW5hbCB0ZXN0OgotICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCi0gICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvICIKLS0tPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxz
Y3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBhZGRpbmcgcHJvcGVydHkgd2l0
aCBpbnZhbGlkIGtleXBhdGgiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVu
ZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAg
IGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIgPSBl
dmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKLXsKLSAgICBk
ZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7IGtleVBhdGg6ICdr
ZXlQYXRoJyB9KTsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVj
dFN0b3JlLmFkZCh7IGtleVBhdGg6ICdmb28nIH0pOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gYWRkRmlyc3RTdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBhZGRGaXJzdFN1Y2Nlc3MoKQotewotICAgIGV2YWxB
bmRFeHBlY3RFeGNlcHRpb24oInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoe30pOyIsICJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0K
LXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JhZC1rZXlwYXRo
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgotCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NsZWFyLmh0bWwgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NsZWFyLmh0bWwKaW5kZXggMjc5MzI4
NTRmZTYyODkwMzU0Y2VlMGQ1Yjg0ZDk4ZjliY2YzYjcwNC4uNjBkOTNjZDA0YjY2Nzg3NDQyMzhh
ZWJmYjdmNDUzOWI5NDFmNmQyNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9jbGVhci5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvY2xlYXIuaHRtbApAQCAtMSw3MSArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIu
MC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfY2xlYXIuaHRtbAotICBsaWNlbnNlIG9m
IG9yaWdpbmFsIHRlc3Q6Ci0gICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KLSAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8gIgotLS0+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5Pgot
PHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgY2xlYXJpbmcgYW4gb2Jq
ZWN0IHN0b3JlIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZp
eGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlw
dGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5k
ZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExv
ZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gY2xlYW5EYXRhYmFzZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCi17Ci0gICAgZGVsZXRlQWxs
T2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0
U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJywgeyBhdXRvSW5jcmVtZW50OiB0cnVl
IH0pOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
YWRkKHt9KTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLSAgICBldmVudC50YXJnZXQucmVzdWx0Lm9uY29tcGxldGUgPSBjbGVhcjsKLX0KLQotZnVu
Y3Rpb24gY2xlYXIoKQotewotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0
aW9uKCdmb28nKS5vYmplY3RTdG9yZSgnZm9vJykuY2xlYXIoKTsiLCAiSURCRGF0YWJhc2VFeGNl
cHRpb24uUkVBRF9PTkxZX0VSUiIpOwotICAgIGV2YWxBbmRMb2coImRiLnRyYW5zYWN0aW9uKCdm
b28nLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKS5vYmplY3RTdG9yZSgnZm9vJykuY2xlYXIo
KTsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnRyYW5zYWN0aW9u
KCdmb28nKS5vYmplY3RTdG9yZSgnZm9vJykub3BlbkN1cnNvcigpOyIpOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gYXJlV2VDbGVhcllldDsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYXJlV2VDbGVhcllldCgpCi17Ci0gICAg
Y3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gcmVxdWVzdC5yZXN1bHQ7Iik7Ci0gICAgc2hv
dWxkQmUoImN1cnNvciIsICJudWxsIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVz
dCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY2xlYXIuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3JlYXRlLWluZGV4LXVuaXF1ZS5odG1sIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtaW5kZXgtdW5pcXVl
Lmh0bWwKaW5kZXggMGU2NDExM2RiNWFkYzRmZmZjNDNiNDRkNjFjNTQ0NmMwZTljYWNhMS4uYzE5
YTJmNTVlMzMzNWQzMzI5MDYxMTI2ZGY4ZGE4NmYzMWVmYjk2ZCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtaW5kZXgtdW5pcXVlLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtaW5kZXgt
dW5pcXVlLmh0bWwKQEAgLTEsNzIgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLQotICBv
cmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2Rv
bS9pbmRleGVkREIvdGVzdC90ZXN0X2NyZWF0ZV9pbmRleC5odG1sCi0gIGxpY2Vuc2Ugb2Ygb3Jp
Z2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgotICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2Ny
aXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBjcmVhdGluZyB1bmlxdWUgaW5k
ZXggYW5kIHVwZGF0aW5nIGluZGV4TmFtZXMiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAg
cmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhu
YW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0g
ICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRWZXJpZnlJbmRleDsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY3JlYXRlQW5k
VmVyaWZ5SW5kZXgoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBv
YmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ2EnLCB7IGtleVBhdGg6ICdpZCcsIGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7Ci0KLSAg
ICBpbmRleE5hbWUgPSAiMSI7Ci0gICAgaW5kZXhLZXlQYXRoID0gInVuaXF1ZV92YWx1ZSI7Ci0g
ICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KGlu
ZGV4TmFtZSwgaW5kZXhLZXlQYXRoLCB7IHVuaXF1ZTogdHJ1ZSB9KTsiLCAiSURCRGF0YWJhc2VF
eGNlcHRpb24uQ09OU1RSQUlOVF9FUlIiKTsKLSAgICBzaG91bGRCZSgiaW5kZXgubmFtZSIsICJp
bmRleE5hbWUiKTsKLSAgICBzaG91bGRCZSgiaW5kZXgua2V5UGF0aCIsICJpbmRleEtleVBhdGgi
KTsKLSAgICBzaG91bGRCZSgiaW5kZXgudW5pcXVlIiwgInRydWUiKTsKLSAgICBzaG91bGRCZSgi
b2JqZWN0U3RvcmUuaW5kZXhOYW1lcy5sZW5ndGgiLCAiMSIpOwotCi0gICAgZm91bmROZXdseUNy
ZWF0ZWRJbmRleCA9IGZhbHNlOwotICAgIGZvciAodmFyIGsgPSAwOyBrIDwgb2JqZWN0U3RvcmUu
aW5kZXhOYW1lcy5sZW5ndGg7IGsrKykgewotICAgICAgICBpZiAob2JqZWN0U3RvcmUuaW5kZXhO
YW1lcy5pdGVtKGspID09IGluZGV4TmFtZSkgewotICAgICAgICAgICAgZm91bmROZXdseUNyZWF0
ZWRJbmRleCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgc2hvdWxkQmVUcnVlKCJmb3Vu
ZE5ld2x5Q3JlYXRlZEluZGV4Iik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2Fj
dGlvbi5kYiIsICJkYiIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24u
cmVhZHlTdGF0ZSIsICJJREJUcmFuc2FjdGlvbi5MT0FESU5HIik7Ci0gICAgc2hvdWxkQmUoImV2
ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2RlIiwgIklEQlRyYW5zYWN0aW9uLlZFUlNJT05fQ0hB
TkdFIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY3JlYXRlLWluZGV4LXVuaXF1ZS5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtaW5kZXgtd2l0aC1pbnRlZ2VyLWtleXMu
aHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3JlYXRlLWluZGV4
LXdpdGgtaW50ZWdlci1rZXlzLmh0bWwKaW5kZXggYmRkOGNiYWI2YTg2NDA5YzA3NDNiMmUxNjcy
ZTRmODZkMmM5NGEzNS4uNzcxYjNkOGVjMWM1ZDFkNTQ4YzY5ODYyYjdiMTE3ZjUxYjhiNWU4NSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUt
aW5kZXgtd2l0aC1pbnRlZ2VyLWtleXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1pbmRleC13aXRoLWludGVnZXIta2V5cy5odG1sCkBAIC0x
LDY3ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KLTwhLS0KLSAgb3JpZ2luYWwgdGVzdDogaHR0
cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3Qv
dGVzdF9jcmVhdGVfaW5kZXhfd2l0aF9pbnRlZ2VyX2tleXMuaHRtbD9mb3JjZT0xCi0gIGxpY2Vu
c2Ugb2Ygb3JpZ2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgotICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJv
ZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBjcmVhdGluZyBp
bmRleCB3aXRoIGludGVnZXIga2V5cyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1v
dmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7
Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBk
YiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IHNldHVwT2JqZWN0U3RvcmVBbmRDcmVhdGVJbmRleDsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc2V0
dXBPYmplY3RTdG9yZUFuZENyZWF0ZUluZGV4KCkKLXsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9y
ZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7IGtleVBhdGg6ICdpZCcgfSk7Iik7Ci0gICAgZGF0
YSA9IGV2YWxBbmRMb2coImRhdGEgPSB7IGlkOiAxNiwgbnVtOiA0MiB9OyIpOwotICAgIGV2YWxB
bmRMb2coIm9iamVjdFN0b3JlLmFkZChkYXRhKTsiKTsKLSAgICBpbmRleCA9IGV2YWxBbmRMb2co
ImluZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ2ZvbycsICdudW0nKTsiKTsKLSAgICBy
ZXN1bHQgPSBldmFsQW5kTG9nKCJyZXN1bHQgPSBpbmRleC5vcGVuS2V5Q3Vyc29yKCk7Iik7Ci0g
ICAgcmVzdWx0Lm9uc3VjY2VzcyA9IHZlcmlmeUtleUN1cnNvcjsKLSAgICByZXN1bHQub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiB2ZXJpZnlLZXlDdXJz
b3IoKQotewotICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQ7Iik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiY3Vyc29yID09IG51bGwiKTsKLSAgICBzaG91
bGRCZSgiY3Vyc29yLmtleSIsICJkYXRhLm51bSIpOwotICAgIHNob3VsZEJlKCJjdXJzb3IucHJp
bWFyeUtleSIsICJkYXRhLmlkIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgp
OwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY3JlYXRlLWluZGV4LXdpdGgt
aW50ZWdlci1rZXlzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgot
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0
ZS1vYmplY3RzdG9yZS1iYXNpY3MuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vemlsbGEvY3JlYXRlLW9iamVjdHN0b3JlLWJhc2ljcy5odG1sCmluZGV4IDAwYjg0NDMzYmYy
ZDczYmZhOTRlZTQ5NmZiOGFmMTc2MzFhMmZkZmQuLmYzZDE0MTEzODgzZTMyOWE2MjNlMjg2ZGQ5
YzViYzE0ZDJjMGIyMjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vemlsbGEvY3JlYXRlLW9iamVjdHN0b3JlLWJhc2ljcy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3JlYXRlLW9iamVjdHN0b3JlLWJhc2ljcy5odG1s
CkBAIC0xLDc3ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KLTwhLS0KLSAgb3JpZ2luYWwgdGVz
dDogaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERC
L3Rlc3QvdGVzdF9jcmVhdGVfb2JqZWN0U3RvcmUuaHRtbAotICBsaWNlbnNlIG9mIG9yaWdpbmFs
IHRlc3Q6Ci0gICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KLSAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8gIgotLS0+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4K
LQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgY3JlYXRpbmcgb2JqZWN0IHN0b3JlIGFu
ZCB1cGRhdGluZyBwcm9wZXJ0aWVzIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92
ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsK
LSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRi
ID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCi17Ci0g
ICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9iamVjdFN0b3JlSW5mbyA9IFsK
LSAgICAgICAgeyBuYW1lOiAiMSIsIG9wdGlvbnM6IHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9IH0s
Ci0gICAgICAgIHsgbmFtZTogIjIiLCBvcHRpb25zOiB7IGF1dG9JbmNyZW1lbnQ6IGZhbHNlIH0g
fSwKLSAgICAgICAgeyBuYW1lOiAiMyIsIG9wdGlvbnM6IHsga2V5UGF0aDogIiIgfSB9LAotICAg
ICAgICB7IG5hbWU6ICI0Iiwgb3B0aW9uczogeyBrZXlQYXRoOiAiIiwgYXV0b0luY3JlbWVudDog
dHJ1ZSB9IH0sCi0gICAgICAgIHsgbmFtZTogIjUiLCBvcHRpb25zOiB7IGtleVBhdGg6ICIiLCBh
dXRvSW5jcmVtZW50OiBmYWxzZSB9IH0sCi0gICAgICAgIHsgbmFtZTogIjYiLCBvcHRpb25zOiB7
IGtleVBhdGg6ICJmb28iIH0gfSwKLSAgICAgICAgeyBuYW1lOiAiNyIsIG9wdGlvbnM6IHsga2V5
UGF0aDogImZvbyIsIGF1dG9JbmNyZW1lbnQ6IGZhbHNlIH0gfSwKLSAgICAgICAgeyBuYW1lOiAi
OCIsIG9wdGlvbnM6IHsga2V5UGF0aDogImZvbyIsIGF1dG9JbmNyZW1lbnQ6IHRydWUgfSB9Ci0g
ICAgXTsKLQotICAgIGZvciAodmFyIGluZGV4IGluIG9iamVjdFN0b3JlSW5mbykgewotICAgICAg
ICBpbmRleCA9IHBhcnNlSW50KGluZGV4KTsKLSAgICAgICAgaW5mbyA9IG9iamVjdFN0b3JlSW5m
b1tpbmRleF07Ci0gICAgICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUg
PSBkYi5jcmVhdGVPYmplY3RTdG9yZShpbmZvLm5hbWUsIGluZm8ub3B0aW9ucyk7Iik7Ci0gICAg
ICAgIHNob3VsZEJlKCJvYmplY3RTdG9yZS5uYW1lIiwgImluZm8ubmFtZSIpOwotICAgICAgICBp
ZiAoaW5mby5vcHRpb25zICYmIGluZm8ub3B0aW9ucy5rZXlQYXRoKSB7Ci0gICAgICAgICAgICBz
aG91bGRCZSgib2JqZWN0U3RvcmUua2V5UGF0aCIsICJpbmZvLm9wdGlvbnMua2V5UGF0aCIpOwot
ICAgICAgICB9Ci0gICAgICAgIHNob3VsZEJlKCJvYmplY3RTdG9yZS5pbmRleE5hbWVzLmxlbmd0
aCIsICIwIik7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24uZGIi
LCAiZGIiKTsKLSAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5yZWFk
eVN0YXRlIiwgIklEQlRyYW5zYWN0aW9uLkxPQURJTkciKTsKLSAgICAgICAgc2hvdWxkQmUoImV2
ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2RlIiwgIklEQlRyYW5zYWN0aW9uLlZFUlNJT05fQ0hB
TkdFIik7Ci0gICAgfQotCi0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY3JlYXRlLW9iamVjdHN0b3JlLWJhc2lj
cy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtb2JqZWN0c3Rv
cmUtbnVsbC1uYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L2NyZWF0ZS1vYmplY3RzdG9yZS1udWxsLW5hbWUuaHRtbAppbmRleCA0MzM2Y2JiZjFlNDExNDc5
N2E0Y2Q4Y2RiNzNjOWYzZjE3NjNkYjEwLi45YWZhYzcwNjdiZjA2NTAzYmFkODIxOWE5MjkxMmNk
MWYxYThiNjI5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL2NyZWF0ZS1vYmplY3RzdG9yZS1udWxsLW5hbWUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1vYmplY3RzdG9yZS1udWxsLW5hbWUuaHRt
bApAQCAtMSw1NSArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRl
c3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWRE
Qi90ZXN0L3Rlc3RfY3JlYXRlX29iamVjdFN0b3JlLmh0bWwKLSAgbGljZW5zZSBvZiBvcmlnaW5h
bCB0ZXN0OgotICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCi0gICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvICIKLS0tPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+
Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGNyZWF0aW5nIG9iamVjdCBzdG9yZSB3
aXRoIG51bGwgbmFtZSIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQ
cmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVz
Y3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxB
bmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGNsZWFuRGF0YWJhc2U7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQotewotICAgIGRlbGV0
ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9i
amVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUobnVsbCk7Iik7Ci0gICAgc2hvdWxkQmUo
Im9iamVjdFN0b3JlLm5hbWUiLCAiJ251bGwnIik7Ci0KLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0K
LQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jcmVhdGUt
b2JqZWN0c3RvcmUtbnVsbC1uYW1lLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5Pgog
PC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL2N1cnNvci1tdXRhdGlvbi1vYmplY3RzdG9yZS1vbmx5Lmh0bWwgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2N1cnNvci1tdXRhdGlvbi1vYmplY3RzdG9yZS1vbmx5
Lmh0bWwKaW5kZXggZGU4ZDEzY2JhZjMzYmQxNDhhOGU0NmZjN2M5NjJjZGYxYWY5NDAwOC4uZWI0
ZDBlYzZjZDFhNTk5NjdhNWRiOTNkZTQ0MTk3YzZjZGNhYWQ1OSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jdXJzb3ItbXV0YXRpb24tb2JqZWN0c3Rv
cmUtb25seS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEv
Y3Vyc29yLW11dGF0aW9uLW9iamVjdHN0b3JlLW9ubHkuaHRtbApAQCAtMSwxNTEgKzEsMTAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPCEtLQotICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemls
bGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2N1cnNvcl9t
dXRhdGlvbi5odG1sP2ZvcmNlPTEKLSAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgotICAgICIg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCi0gICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKLS0tPgog
PGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJl
ZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9u
KCJUZXN0IEluZGV4ZWREQidzIGN1cnNvciBtdXRhdGlvbiBkdXJpbmcgb2JqZWN0IHN0b3JlIGN1
cnNvciBpdGVyYXRpb24iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9y
UHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRl
c2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGVidWcoIm9w
ZW5TdWNjZXNzKCk6Iik7Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVy
c2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXR1cE9iamVjdFN0b3JlOwot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5j
dGlvbiBzZXR1cE9iamVjdFN0b3JlKCkKLXsKLSAgICBkZWJ1Zygic2V0dXBPYmplY3RTdG9yZSgp
OiIpOwotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBvYmplY3RTdG9yZSA9
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycsIHsg
a2V5UGF0aDogJ3NzJyB9KTsiKTsKLSAgICBvYmplY3RTdG9yZURhdGEgPSBldmFsQW5kTG9nKCJv
YmplY3RTdG9yZURhdGEgPSBbXG4iICsgCi0iICAgICAgICB7IHNzOiAnMjM3LTIzLTc3MzInLCBu
YW1lOiAnQm9iJyB9LFxuIiArIAotCi0iICAgICAgICB7IHNzOiAnMjM3LTIzLTc3MzMnLCBuYW1l
OiAnQW5uJyB9LFxuIiArCi0iICAgICAgICB7IHNzOiAnMjM3LTIzLTc3MzQnLCBuYW1lOiAnUm9u
JyB9LFxuIiArCi0iICAgICAgICB7IHNzOiAnMjM3LTIzLTc3MzUnLCBuYW1lOiAnU3VlJyB9LFxu
IiArCi0iICAgICAgICB7IHNzOiAnMjM3LTIzLTc3MzYnLCBuYW1lOiAnSm9lJyB9LFxuIiArCi0K
LSIgICAgICAgIHsgc3M6ICcyMzctMjMtNzczNycsIG5hbWU6ICdQYXQnIH1cbiIgKwotIiAgICBd
OyIpOwotCi0gICAgZm9yIChpID0gMDsgaSA8IG9iamVjdFN0b3JlRGF0YS5sZW5ndGggLSAxOyBp
KyspIHsKLSAgICAgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0
YVtpXSk7Iik7Ci0gICAgfQotCi0gICAgY291bnQgPSBldmFsQW5kTG9nKCJjb3VudCA9IDA7Iik7
Ci0gICAgc2F3QWRkZWQgPSBldmFsQW5kTG9nKCJzYXdBZGRlZCA9IGZhbHNlOyIpOwotICAgIHNh
d1JlbW92ZWQgPSBldmFsQW5kTG9nKCJzYXdSZW1vdmVkID0gZmFsc2U7Iik7Ci0KLSAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGl0ZXJhdGVDdXJzb3I7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGl0ZXJhdGVDdXJz
b3IoKQotewotICAgIGRlYnVnKCJpdGVyYXRlQ3Vyc29yKCk6Iik7Ci0gICAgZXZhbEFuZExvZygi
ZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBjaGVja0N1cnNvclJlc3VsdHNB
bmRTZXR1cE11dGF0aW5nQ3Vyc29yOyIpOwotICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNv
ciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgaWYgKGN1cnNvcikgewotICAgICAgICBp
ZiAoY3Vyc29yLnZhbHVlLm5hbWUgPT0gb2JqZWN0U3RvcmVEYXRhWzBdLm5hbWUpIHsKLSAgICAg
ICAgICAgIHNhd1JlbW92ZWQgPSBldmFsQW5kTG9nKCJzYXdSZW1vdmVkID0gdHJ1ZTsiKTsKLSAg
ICAgICAgfQotICAgICAgICBpZiAoY3Vyc29yLnZhbHVlLm5hbWUgPT0gb2JqZWN0U3RvcmVEYXRh
W29iamVjdFN0b3JlRGF0YS5sZW5ndGggLSAxXS5uYW1lKSB7Ci0gICAgICAgICAgICBzYXdBZGRl
ZCA9IGV2YWxBbmRMb2coInNhd0FkZGVkID0gdHJ1ZTsiKTsKLSAgICAgICAgfQotICAgICAgICBl
dmFsQW5kTG9nKCJjb3VudCsrOyIpOwotICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGlu
dWUoKTsiKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGNoZWNrQ3Vyc29yUmVzdWx0c0FuZFNldHVw
TXV0YXRpbmdDdXJzb3IoKQotewotICAgIGRlYnVnKCJjaGVja0N1cnNvclJlc3VsdHNBbmRTZXR1
cE11dGF0aW5nQ3Vyc29yKCk6Iik7Ci0gICAgc2hvdWxkQmUoImNvdW50IiwgIm9iamVjdFN0b3Jl
RGF0YS5sZW5ndGggLSAxIik7Ci0gICAgc2hvdWxkQmUoInNhd0FkZGVkIiwgImZhbHNlIik7Ci0g
ICAgc2hvdWxkQmUoInNhd1JlbW92ZWQiLCAidHJ1ZSIpOwotCi0gICAgY291bnQgPSBldmFsQW5k
TG9nKCJjb3VudCA9IDA7Iik7Ci0gICAgc2F3QWRkZWQgPSBldmFsQW5kTG9nKCJzYXdBZGRlZCA9
IGZhbHNlOyIpOwotICAgIHNhd1JlbW92ZWQgPSBldmFsQW5kTG9nKCJzYXdSZW1vdmVkID0gZmFs
c2U7Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnRyYW5zYWN0
aW9uKCdmb28nLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKS5vYmplY3RTdG9yZSgnZm9vJyku
b3BlbkN1cnNvcigpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gaXRlcmF0ZU11dGF0aW5n
Q3Vyc29yOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
fQotCi1mdW5jdGlvbiBpdGVyYXRlTXV0YXRpbmdDdXJzb3IoKQotewotICAgIGRlYnVnKCJpdGVy
YXRlTXV0YXRpbmdDdXJzb3IoKToiKTsKLSAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQudHJh
bnNhY3Rpb24ub25jb21wbGV0ZSA9IGNoZWNrTXV0YXRpbmdDdXJzb3JSZXN1bHRzOyIpOwotICAg
IGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0g
ICAgaWYgKGN1cnNvcikgewotICAgICAgICBpZiAoY3Vyc29yLnZhbHVlLm5hbWUgPT0gb2JqZWN0
U3RvcmVEYXRhWzBdLm5hbWUpIHsKLSAgICAgICAgICAgIHNhd1JlbW92ZWQgPSBldmFsQW5kTG9n
KCJzYXdSZW1vdmVkID0gdHJ1ZTsiKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoY3Vyc29yLnZh
bHVlLm5hbWUgPT0gb2JqZWN0U3RvcmVEYXRhW29iamVjdFN0b3JlRGF0YS5sZW5ndGggLSAxXS5u
YW1lKSB7Ci0gICAgICAgICAgICBzYXdBZGRlZCA9IGV2YWxBbmRMb2coInNhd0FkZGVkID0gdHJ1
ZTsiKTsKLSAgICAgICAgfQotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAi
JyIgKyBvYmplY3RTdG9yZURhdGFbY291bnRdLm5hbWUgKyAiJyIpOwotICAgICAgICBldmFsQW5k
TG9nKCJjb3VudCsrIik7Ci0KLSAgICAgICAgaWYgKGNvdW50ID09IDEpIHsKLSAgICAgICAgICAg
IG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBldmVudC50YXJnZXQudHJh
bnNhY3Rpb24ub2JqZWN0U3RvcmUoJ2ZvbycpOyIpOwotICAgICAgICAgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5kZWxldGUob2JqZWN0U3RvcmVEYXRhWzBd
LnNzKTsiKTsKLSAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkRmluYWxEYXRhOwot
ICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjdXJzb3IuY29udGludWUoKTsKLSAgICAgICAg
fQotICAgIH0KLX0KLQotZnVuY3Rpb24gYWRkRmluYWxEYXRhKCkKLXsKLSAgICBkZWJ1ZygiYWRk
RmluYWxEYXRhKCk6Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmpl
Y3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW29iamVjdFN0b3JlRGF0YS5sZW5ndGggLSAxXSk7
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7IGN1cnNvci5jb250aW51
ZSgpOyB9Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19
Ci0KLWZ1bmN0aW9uIGNoZWNrTXV0YXRpbmdDdXJzb3JSZXN1bHRzKCkKLXsKLSAgICBkZWJ1Zygi
Y2hlY2tNdXRhdGluZ0N1cnNvclJlc3VsdHMoKToiKTsKLSAgICBzaG91bGRCZSgiY291bnQiLCAi
b2JqZWN0U3RvcmVEYXRhLmxlbmd0aCIpOwotICAgIHNob3VsZEJlKCJzYXdBZGRlZCIsICJ0cnVl
Iik7Ci0gICAgc2hvdWxkQmUoInNhd1JlbW92ZWQiLCAidHJ1ZSIpOwotICAgIGZpbmlzaEpTVGVz
dCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2N1cnNvci1tdXRhdGlvbi1vYmplY3RzdG9yZS1vbmx5LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9jdXJzb3ItbXV0YXRpb24uaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvY3Vyc29yLW11dGF0aW9uLmh0bWwKaW5kZXggMGJkNTRlY2Y0NGM0
YTAyZDFhMWY3NzZjYTRiMmFmNzZkY2IzNjBiMi4uYzgwMTkzYjdkNDA5ZDkxZWJhNDhiNjgxMTRj
MTVlY2I1NzA1ZGEwNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW96aWxsYS9jdXJzb3ItbXV0YXRpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL2N1cnNvci1tdXRhdGlvbi5odG1sCkBAIC0xLDE5MSArMSwxMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxs
YS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfY3Vyc29yX211
dGF0aW9uLmh0bWw/Zm9yY2U9MQotICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Ci0gICAgIiBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KLSAgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgotLS0+CiA8
aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVk
LmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24o
IlRlc3QgSW5kZXhlZERCJ3MgY3Vyc29yIG11dGF0aW9uIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQot
ewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBkZWJ1ZygiIik7Ci0gICAgbmFt
ZSA9ICdjdXJzb3ItbXV0YXRpb24nOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVk
REIuZGVsZXRlRGF0YWJhc2UobmFtZSkiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsK
LSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUpIik7Ci0g
ICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIGV2YWxBbmRM
b2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgICAgICAgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgICAgICAgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgICAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IHNldHVwT2JqZWN0U3RvcmVBbmRDcmVhdGVJbmRleDsgICAgICAgICAgCi0gICAgICAg
IH07Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24gc2V0dXBPYmplY3RTdG9yZUFuZENyZWF0ZUluZGV4
KCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInNldHVwT2JqZWN0U3RvcmVBbmRDcmVh
dGVJbmRleCgpOiIpOwotCi0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IHJlcXVlc3Qu
cmVzdWx0Iik7Ci0KLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycsIHsga2V5UGF0aDogJ3NzJyB9KSIpOwotICAgIGlu
ZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgnbmFtZScs
ICduYW1lJywgeyB1bmlxdWU6IHRydWUgfSkiKTsKLSAgICBvYmplY3RTdG9yZURhdGEgPSBldmFs
QW5kTG9nKCJvYmplY3RTdG9yZURhdGEgPSBbXG4iICsgCi0gICAgICAgICAvLyBUbyBiZSByZW1v
dmVkLgotIiAgICAgICAgeyBzczogJzIzNy0yMy03NzMyJywgbmFtZTogJ0JvYicgfSxcbiIgKyAK
LQotICAgICAgICAgLy8gQWx3YXlzIHByZXNlbnQuCi0iICAgICAgICB7IHNzOiAnMjM3LTIzLTc3
MzMnLCBuYW1lOiAnQW5uJyB9LFxuIiArCi0iICAgICAgICB7IHNzOiAnMjM3LTIzLTc3MzQnLCBu
YW1lOiAnUm9uJyB9LFxuIiArCi0iICAgICAgICB7IHNzOiAnMjM3LTIzLTc3MzUnLCBuYW1lOiAn
U3VlJyB9LFxuIiArCi0iICAgICAgICB7IHNzOiAnMjM3LTIzLTc3MzYnLCBuYW1lOiAnSm9lJyB9
LFxuIiArCi0KLSAgICAgICAgIC8vIFRvIGJlIGFkZGVkLgotIiAgICAgICAgeyBzczogJzIzNy0y
My03NzM3JywgbmFtZTogJ1BhdCcgfVxuIiArCi0iICAgIF0iKTsKLQotICAgIGZvciAoaSA9IDA7
IGkgPCBvYmplY3RTdG9yZURhdGEubGVuZ3RoIC0gMTsgaSsrKSB7Ci0gICAgICAgIGV2YWxBbmRM
b2coIm9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbIiArIGkgKyAiXSkiKTsKLSAgICB9
Ci0KLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gY2hlY2tDdXJzb3JSZXN1bHRz
Iik7Ci0gICAgc2V0dXBDdXJzb3IoKTsKLX0KLQotZnVuY3Rpb24gc2V0dXBDdXJzb3IoKQotewot
ICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1Zygic2V0dXBDdXJzb3IoKToiKTsKLQotICAgIGNvdW50
ID0gZXZhbEFuZExvZygiY291bnQgPSAwIik7Ci0gICAgc2F3QWRkZWQgPSBldmFsQW5kTG9nKCJz
YXdBZGRlZCA9IGZhbHNlIik7Ci0gICAgc2F3UmVtb3ZlZCA9IGV2YWxBbmRMb2coInNhd1JlbW92
ZWQgPSBmYWxzZSIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmpl
Y3RTdG9yZS5vcGVuQ3Vyc29yKCkiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGl0ZXJhdGVDdXJzb3I7Ci19
Ci0KLWZ1bmN0aW9uIGl0ZXJhdGVDdXJzb3IoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1
ZygiaXRlcmF0ZUN1cnNvcigpOiIpOwotICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9
IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBpZiAoY3Vyc29yKSB7Ci0gICAgICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiY3Vyc29yLnZhbHVlLm5hbWUiLCBvYmplY3RTdG9yZURhdGFbY291
bnRdLm5hbWUpOwotICAgICAgICBpZiAoY3Vyc29yLnZhbHVlLm5hbWUgPT0gb2JqZWN0U3RvcmVE
YXRhWzBdLm5hbWUpIHsKLSAgICAgICAgICAgIHNhd1JlbW92ZWQgPSBldmFsQW5kTG9nKCJzYXdS
ZW1vdmVkID0gdHJ1ZSIpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChjdXJzb3IudmFsdWUubmFt
ZSA9PSBvYmplY3RTdG9yZURhdGFbb2JqZWN0U3RvcmVEYXRhLmxlbmd0aCAtIDFdLm5hbWUpIHsK
LSAgICAgICAgICAgIHNhd0FkZGVkID0gZXZhbEFuZExvZygic2F3QWRkZWQgPSB0cnVlIik7Ci0g
ICAgICAgIH0KLSAgICAgICAgZXZhbEFuZExvZygiY291bnQrKyIpOwotICAgICAgICBldmFsQW5k
TG9nKCJjdXJzb3IuY29udGludWUoKSIpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gY2hlY2tDdXJz
b3JSZXN1bHRzKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoImNoZWNrQ3Vyc29yUmVz
dWx0cygpOiIpOwotICAgIHNob3VsZEJlKCJjb3VudCIsICJvYmplY3RTdG9yZURhdGEubGVuZ3Ro
IC0gMSIpOwotICAgIHNob3VsZEJlKCJzYXdBZGRlZCIsICJmYWxzZSIpOwotICAgIHNob3VsZEJl
KCJzYXdSZW1vdmVkIiwgInRydWUiKTsKLQotICAgIHNldHVwTXV0YXRpbmdDdXJzb3IoKTsKLX0K
LQotZnVuY3Rpb24gc2V0dXBNdXRhdGluZ0N1cnNvcigpCi17Ci0gICAgZGVidWcoIiIpOwotICAg
IGRlYnVnKCJzZXR1cE11dGF0aW5nQ3Vyc29yKCk6Iik7Ci0gICAKLSAgICBjb3VudCA9IGV2YWxB
bmRMb2coImNvdW50ID0gMCIpOwotICAgIHNhd0FkZGVkID0gZXZhbEFuZExvZygic2F3QWRkZWQg
PSBmYWxzZSIpOwotICAgIHNhd1JlbW92ZWQgPSBldmFsQW5kTG9nKCJzYXdSZW1vdmVkID0gZmFs
c2UiKTsKLSAgICBkZWJ1ZygiW29iamVjdFN0b3JlRGF0YU5hbWVTb3J0IGlzIGFuIGFycmF5IG9m
IGluZGV4ZXMgaW50byBvYmplY3RTdG9yZURhdGEgaW4gYWxwaGFiZXRpY2FsIG9yZGVyIGJ5IG5h
bWVdIik7Ci0gICAgb2JqZWN0U3RvcmVEYXRhTmFtZVNvcnQgPSBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZURhdGFOYW1lU29ydCA9IFsgMSwgNCwgNSwgMiwgMyBdIik7Ci0KLSAgICBkZWJ1ZygiIik7
Ci0KLSAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ2Zvbycs
IElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5k
TG9nKCJvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdmb28nKSIpOwotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVu
Q3Vyc29yKCkiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGl0ZXJhdGVNdXRhdGluZ0N1cnNvcjsKLSAgICBl
dmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gY2hlY2tNdXRhdGluZ0N1cnNvclJlc3VsdHMi
KTsKLX0KLQotZnVuY3Rpb24gaXRlcmF0ZU11dGF0aW5nQ3Vyc29yKCkKLXsKLSAgICBkZWJ1Zygi
Iik7Ci0gICAgZGVidWcoIml0ZXJhdGVNdXRhdGluZ0N1cnNvcigpOiIpOwotICAgIGN1cnNvciA9
IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBpZiAoY3Vy
c29yKSB7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY3Vyc29yLnZhbHVlLm5hbWUi
LCBvYmplY3RTdG9yZURhdGFbb2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRbY291bnRdXS5uYW1lKTsK
LSAgICAgICAgaWYgKGN1cnNvci52YWx1ZS5uYW1lID09IG9iamVjdFN0b3JlRGF0YVswXS5uYW1l
KSB7Ci0gICAgICAgICAgICBzYXdSZW1vdmVkID0gZXZhbEFuZExvZygic2F3UmVtb3ZlZCA9IHRy
dWUiKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoY3Vyc29yLnZhbHVlLm5hbWUgPT0gb2JqZWN0
U3RvcmVEYXRhW29iamVjdFN0b3JlRGF0YS5sZW5ndGggLSAxXS5uYW1lKSB7Ci0gICAgICAgICAg
ICBzYXdBZGRlZCA9IGV2YWxBbmRMb2coInNhd0FkZGVkID0gdHJ1ZSIpOwotICAgICAgICB9Ci0g
ICAgICAgIGV2YWxBbmRMb2coImNvdW50KysiKTsKLQotICAgICAgICBpZiAoY291bnQgPT0gMSkg
ewotICAgICAgICAgICAgZGVidWcoIiIpOwotICAgICAgICAgICAgZGVidWcoIk11dGF0aW5nIHRo
ZSBvYmplY3Qgc3RvcmU6Iik7Ci0KLSAgICAgICAgICAgIGRlYnVnKCJSZW1vdmluZyAiICsgb2Jq
ZWN0U3RvcmVEYXRhWzBdLm5hbWUpOwotICAgICAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBvYmplY3RTdG9yZS5kZWxldGUob2JqZWN0U3RvcmVEYXRhWzBdLnNzKSIpOwot
ICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0g
ICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEZpbmFsRGF0YTsKLQotICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7Ci0gICAgICAgIH0KLSAgICB9
Ci19Ci0KLWZ1bmN0aW9uIGFkZEZpbmFsRGF0YSgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRl
YnVnKCJhZGRGaW5hbERhdGEoKToiKTsKLSAgICBkZWJ1ZygiQWRkaW5nICIgKyBvYmplY3RTdG9y
ZURhdGFbb2JqZWN0U3RvcmVEYXRhLmxlbmd0aCAtIDFdLm5hbWUpOwotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtvYmpl
Y3RTdG9yZURhdGEubGVuZ3RoIC0gMV0pIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7
Ci0gICAgICAgIGN1cnNvci5jb250aW51ZSgpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gY2hlY2tN
dXRhdGluZ0N1cnNvclJlc3VsdHMoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiY2hl
Y2tNdXRhdGluZ0N1cnNvclJlc3VsdHMoKToiKTsKLSAgICBzaG91bGRCZSgiY291bnQiLCAib2Jq
ZWN0U3RvcmVEYXRhLmxlbmd0aCAtIDEiKTsKLSAgICBzaG91bGRCZSgic2F3QWRkZWQiLCAidHJ1
ZSIpOwotICAgIHNob3VsZEJlKCJzYXdSZW1vdmVkIiwgImZhbHNlIik7Ci0gICAgZmluaXNoSlNU
ZXN0KCk7Ci19Ci0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2N1cnNvci1tdXRhdGlvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRt
bD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9j
dXJzb3ItdXBkYXRlLXVwZGF0ZXMtaW5kZXhlcy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW96aWxsYS9jdXJzb3ItdXBkYXRlLXVwZGF0ZXMtaW5kZXhlcy5odG1sCmluZGV4
IGI4OWFmNjU5Y2YzOGYzN2FiNTdlZGYxYmI2ZWQyOGQ5M2NjMzRiNDcuLjhjOTlmZjg0ZDNmYzg4
OTVjNjMzNDMyYjZmMzYyMjE3ZTQyODVjNDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vemlsbGEvY3Vyc29yLXVwZGF0ZS11cGRhdGVzLWluZGV4ZXMuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2N1cnNvci11cGRhdGUt
dXBkYXRlcy1pbmRleGVzLmh0bWwKQEAgLTEsMTI1ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTwhLS0KLSAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4w
L3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9jdXJzb3JfdXBkYXRlX3VwZGF0ZXNfaW5k
ZXhlcy5odG1sP2ZvcmNlPTEKLSAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgotICAgICIgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCi0gICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKLS0tPgogPGh0
bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5q
cyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJU
ZXN0IEluZGV4ZWREQjogbXV0YXRpbmcgcmVjb3JkcyB3aXRoIGEgci93IGN1cnNvciB1cGRhdGVz
IGluZGV4ZXMgb24gdGhvc2UgcmVjb3JkcyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICBy
ZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5h
bWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAg
ICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIGZpcnN0VmFsdWUgPSBldmFsQW5kTG9nKCJmaXJzdFZh
bHVlID0gJ2hpJzsiKTsKLSAgICBzZWNvbmRWYWx1ZSA9IGV2YWxBbmRMb2coInNlY29uZFZhbHVl
ID0gJ2J5ZSc7Iik7Ci0gICAgb2JqZWN0U3RvcmVJbmZvID0gZXZhbEFuZExvZygib2JqZWN0U3Rv
cmVJbmZvID0gW1xuIiArCi0iICAgICAgICB7IG5hbWU6ICcxJywgb3B0aW9uczoge30sIGtleTog
MSxcbiIgKwotIiAgICAgICAgICBlbnRyeTogeyBkYXRhOiBmaXJzdFZhbHVlIH0gfSxcbiIgKwot
IiAgICAgICAgeyBuYW1lOiAnMicsIG9wdGlvbnM6IHsga2V5UGF0aDogJ2ZvbycgfSxcbiIgKwot
IiAgICAgICAgICBlbnRyeTogeyBmb286IDEsIGRhdGE6IGZpcnN0VmFsdWUgfSB9LFxuIiArCi0i
ICAgICAgICB7IG5hbWU6ICczJywgb3B0aW9uczogeyBhdXRvSW5jcmVtZW50OiB0cnVlIH0sXG4i
ICsKLSIgICAgICAgICAgZW50cnk6IHsgZGF0YTogZmlyc3RWYWx1ZSB9IH0sXG4iICsKLSIgICAg
ICAgIHsgbmFtZTogJzQnLCBvcHRpb25zOiB7IGtleVBhdGg6ICdmb28nLCBhdXRvSW5jcmVtZW50
OiB0cnVlIH0sXG4iICsKLSIgICAgICAgICAgZW50cnk6IHsgZGF0YTogZmlyc3RWYWx1ZSB9IH0s
XG4iICsKLSIgICAgXTsiKTsKLSAgICBpID0gZXZhbEFuZExvZygiaSA9IDA7Iik7Ci0gICAgc2V0
VmVyc2lvbigpOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uKCkKLXsKLSAgICBpZiAoaSA8IG9i
amVjdFN0b3JlSW5mby5sZW5ndGgpIHsKLSAgICAgICAgaW5mbyA9IGV2YWxBbmRMb2coImluZm8g
PSBvYmplY3RTdG9yZUluZm9baV07Iik7Ci0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gc2V0dXBPYmplY3RTdG9yZUFuZENyZWF0ZUluZGV4QW5kQWRkOwotICAgICAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB9IGVsc2UgewotICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHNldHVwT2JqZWN0U3RvcmVB
bmRDcmVhdGVJbmRleEFuZEFkZCgpCi17Ci0gICAgZGVidWcoInNldHVwT2JqZWN0U3RvcmVBbmRD
cmVhdGVJbmRleCgpOiIpOwotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBv
YmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoaW5mby5uYW1lLCBpbmZvLm9wdGlvbnMpOyIpOwotCi0gICAgaW5kZXggPSBldmFsQW5kTG9n
KCJpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdkYXRhX2luZGV4JywgJ2RhdGEnLCB7
IHVuaXF1ZTogZmFsc2UgfSk7Iik7Ci0gICAgdW5pcXVlSW5kZXggPSBldmFsQW5kTG9nKCJ1bmlx
dWVJbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCd1bmlxdWVfZGF0YV9pbmRleCcsICdk
YXRhJywgeyB1bmlxdWU6IHRydWUgfSk7Iik7Ci0gICAgaWYgKGluZm8ua2V5KSB7Ci0gICAgICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKGluZm8uZW50
cnksIGluZm8ua2V5KTsiKTsKLSAgICB9IGVsc2UgewotICAgICAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChpbmZvLmVudHJ5KTsiKTsKLSAgICB9Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuQ3Vyc29yOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuQ3Vyc29yKCkKLXsK
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJz
b3IoKTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVwZGF0ZUN1cnNvcjsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gdXBk
YXRlQ3Vyc29yKCkKLXsKLSAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSByZXF1ZXN0
LnJlc3VsdDsiKTsKLSAgICB2YWx1ZSA9IGV2YWxBbmRMb2coInZhbHVlID0gY3Vyc29yLnZhbHVl
OyIpOwotICAgIHZhbHVlLmRhdGEgPSBldmFsQW5kTG9nKCJ2YWx1ZS5kYXRhID0gc2Vjb25kVmFs
dWU7Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBjdXJzb3IudXBkYXRl
KHZhbHVlKTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldEluZGV4MTsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZ2V0
SW5kZXgxKCkKLXsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4Lmdl
dChzZWNvbmRWYWx1ZSk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjaGVja0luZGV4MUFu
ZEdldEluZGV4MjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLX0KLQotZnVuY3Rpb24gY2hlY2tJbmRleDFBbmRHZXRJbmRleDIoKQotewotICAgIHNob3Vs
ZEJlKCJ2YWx1ZS5kYXRhIiwgImV2ZW50LnRhcmdldC5yZXN1bHQuZGF0YSIpOwotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gdW5pcXVlSW5kZXguZ2V0KHNlY29uZFZhbHVlKTsi
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNoZWNrSW5kZXgyOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjaGVja0luZGV4
MigpCi17Ci0gICAgc2hvdWxkQmUoInZhbHVlLmRhdGEiLCAiZXZlbnQudGFyZ2V0LnJlc3VsdC5k
YXRhIik7Ci0gICAgZXZhbEFuZExvZygiaSsrOyIpOwotICAgIHNldFZlcnNpb24oKTsKLX0KLQot
Ci10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jdXJzb3ItdXBk
YXRlLXVwZGF0ZXMtaW5kZXhlcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwv
aHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9jdXJzb3JzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2N1
cnNvcnMuaHRtbAppbmRleCBjYTNkNzJmZWEzNWY1ZjAwMjA4ZjZiNzBiMmI4NzAwMGQ5ZGU0MTIw
Li5jZWRlZDliZTk4OGU1Njg4MGFhYjYzNmIxMTdiMWFkNTM2YWE3YWFmIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2N1cnNvcnMuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2N1cnNvcnMuaHRtbApAQCAtMSwz
OTkgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLQotICBvcmlnaW5hbCB0ZXN0OiBodHRw
Oi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90
ZXN0X2N1cnNvcnMuaHRtbD9mb3JjZT0xCi0gIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKLSAg
ICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgotICAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCi0t
LT4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9z
aGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlw
dGlvbigiVGVzdCBJbmRleGVkREIgY3Vyc29yIGJlaGF2aW9yIik7Ci0KLWZ1bmN0aW9uIHRlc3Qo
KQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2Nh
dGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24p
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nl
c3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEn
KSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdGVzdEdyb3VwMTsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gdGVzdEdyb3Vw
MSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9iamVjdFN0b3Jl
ID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2F1dG9JbmNyZW1lbnQnLCB7IGF1
dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVx
dWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0
aW9uIChldmVudCkgewotICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAibnVs
bCIpOwotICAgICAgdGVzdEdyb3VwMigpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdEdyb3Vw
MigpCi17Ci0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9y
ZSgnYXV0b0luY3JlbWVudEtleVBhdGgnLCB7IGtleVBhdGg6ICdmb28nLCBhdXRvSW5jcmVtZW50
OiB0cnVlIH0pOyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmpl
Y3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQp
IHsKLSAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIm51bGwiKTsKLSAgICAg
IHRlc3RHcm91cDMoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDMoKQotewotICAg
IG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2tleVBhdGgn
LCB7IGtleVBhdGg6ICdmb28nIH0pOyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbiAoZXZlbnQpIHsKLSAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIm51
bGwiKTsKLSAgICAgIHRlc3RHcm91cDQoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91
cDQoKQotewotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ2ZvbycpOyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmpl
Y3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQp
IHsKLSAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIm51bGwiKTsKLSAgICAg
IHRlc3RHcm91cDUoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDUoKQotewotICAg
IGtleXMgPSBldmFsQW5kTG9nKCJrZXlzID0gWzEsIC0xLCAwLCAxMCwgMjAwMCwgJ3EnLCAneics
ICd0d28nLCAnYicsICdhJ107Iik7Ci0gICAgc29ydGVkS2V5cyA9IGV2YWxBbmRMb2coInNvcnRl
ZEtleXMgPSBbLTEsIDAsIDEsIDEwLCAyMDAwLCAnYScsICdiJywgJ3EnLCAndHdvJywgJ3onXTsi
KTsKLQotICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAwOyIpOwotCi0gICAg
Zm9yIChpIGluIGtleXMpIHsKLSAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
b2JqZWN0U3RvcmUuYWRkKCdmb28nLCBrZXlzW2ldKTsiKTsKLSAgICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbihldmVudCkgewotICAgICAgICBpZiAoKytrZXlJbmRleCA9PSBrZXlzLmxlbmd0aCkg
ewotICAgICAgICAgIHRlc3RHcm91cDYoKTsKLSAgICAgICAgfQotICAgICAgfTsKLSAgICB9Ci19
Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDYoKQotewotICAgIGtleUluZGV4ID0gMDsKLQotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIp
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICBjdXJzb3IgPSBldmFs
QW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgICAgaWYgKGN1cnNv
cikgewotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4
XSIpOwotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAic29ydGVkS2V5c1tr
ZXlJbmRleF0iKTsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZSIsICInZm9vJyIpOwot
Ci0gICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOwotICAgICAgICBldmFs
QW5kRXhwZWN0RXhjZXB0aW9uKCJjdXJzb3IuY29udGludWUoKTsiLCAiSURCRGF0YWJhc2VFeGNl
cHRpb24uTk9UX0FMTE9XRURfRVJSIik7Ci0KLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXki
LCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmlt
YXJ5S2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJz
b3IudmFsdWUiLCAiJ2ZvbyciKTsKLQotICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIp
OwotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJr
ZXlzLmxlbmd0aCIpOwotICAgICAgICB0ZXN0R3JvdXA3KCk7Ci0gICAgICB9Ci0gICAgfQotfQot
Ci1mdW5jdGlvbiB0ZXN0R3JvdXA3KCkKLXsKLSAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtl
eUluZGV4ID0gNDsiKTsKLQotICAgIHJhbmdlID0gZXZhbEFuZExvZygicmFuZ2UgPSBJREJLZXlS
YW5nZS5ib3VuZCgyMDAwLCAncScpOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcihyYW5nZSk7Iik7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2
ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICBpZiAoY3Vyc29yKSB7Ci0gICAgICAgIHNob3Vs
ZEJlKCJjdXJzb3Iua2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7Ci0gICAgICAgIHNob3Vs
ZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOwotICAgICAg
ICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgIidmb28nIik7Ci0KLSAgICAgICAgZXZhbEFuZExv
ZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7Ci0KLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXki
LCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmlt
YXJ5S2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJz
b3IudmFsdWUiLCAiJ2ZvbyciKTsKLQotICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIp
OwotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICI4
Iik7Ci0gICAgICAgIHRlc3RHcm91cDgoKTsKLSAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9u
IHRlc3RHcm91cDgoKQotewotICAgIGtleUluZGV4ID0gMDsKLQotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOwotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJz
b3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgICAgaWYgKGN1cnNvcikgewotICAgICAg
ICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOwotICAgICAg
ICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsK
LSAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZSIsICInZm9vJyIpOwotCi0gICAgICAgIGlm
IChrZXlJbmRleCkgewotICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIp
OwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNv
ci5jb250aW51ZSgnYicpOyIpOwotICAgICAgICB9Ci0KLSAgICAgICAgc2hvdWxkQmUoImN1cnNv
ci5rZXkiLCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNv
ci5wcmltYXJ5S2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7Ci0gICAgICAgIHNob3VsZEJl
KCJjdXJzb3IudmFsdWUiLCAiJ2ZvbyciKTsKLQotICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRl
eCArPSBrZXlJbmRleCA/IDE6IDY7Iik7Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAg
c2hvdWxkQmUoImtleUluZGV4IiwgImtleXMubGVuZ3RoIik7Ci0gICAgICAgIHRlc3RHcm91cDko
KTsKLSAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDkoKQotewotICAgIGtl
eUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAwOyIpOwotCi0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1
cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICBpZiAoY3Vyc29yKSB7Ci0gICAg
ICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7Ci0gICAg
ICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIp
OwotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgIidmb28nIik7Ci0KLSAgICAgICAg
aWYgKGtleUluZGV4KSB7Ci0gICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7
Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgZXZhbEFuZExvZygiY3Vy
c29yLmNvbnRpbnVlKDEwKTsiKTsKLSAgICAgICAgfQotCi0gICAgICAgIHNob3VsZEJlKCJjdXJz
b3Iua2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJz
b3IucHJpbWFyeUtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOwotICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLnZhbHVlIiwgIidmb28nIik7Ci0KLSAgICAgICAgZXZhbEFuZExvZygia2V5SW5k
ZXggKz0ga2V5SW5kZXggPyAxOiAzOyIpOwotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAg
IHNob3VsZEJlKCJrZXlJbmRleCIsICJrZXlzLmxlbmd0aCIpOwotICAgICAgICB0ZXN0R3JvdXAx
MCgpOwotICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdEdyb3VwMTAoKQotewotICAg
IGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAwOyIpOwotCi0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2co
ImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICBpZiAoY3Vyc29yKSB7Ci0g
ICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7Ci0g
ICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4
XSIpOwotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgIidmb28nIik7Ci0KLSAgICAg
ICAgaWYgKGtleUluZGV4KSB7Ci0gICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVl
KCk7Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgZXZhbEFuZExvZygi
Y3Vyc29yLmNvbnRpbnVlKCdjJyk7Iik7Ci0gICAgICAgIH0KLQotICAgICAgICBzaG91bGRCZSgi
Y3Vyc29yLmtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOwotICAgICAgICBzaG91bGRCZSgi
Y3Vyc29yLnByaW1hcnlLZXkiLCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKLSAgICAgICAgc2hv
dWxkQmUoImN1cnNvci52YWx1ZSIsICInZm9vJyIpOwotCi0gICAgICAgIGV2YWxBbmRMb2coImtl
eUluZGV4ICs9IGtleUluZGV4ID8gMSA6IDc7Iik7Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAg
ICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgImtleXMubGVuZ3RoIik7Ci0gICAgICAgIHRlc3RH
cm91cDExKCk7Ci0gICAgICB9Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXAxMSgpCi17
Ci0gICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDA7Iik7Ci0KLSAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewotICAgICAgY3Vyc29yID0gZXZhbEFu
ZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgIGlmIChjdXJzb3Ip
IHsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAic29ydGVkS2V5c1trZXlJbmRleF0i
KTsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgInNvcnRlZEtleXNba2V5
SW5kZXhdIik7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAiJ2ZvbyciKTsKLQot
ICAgICAgICBpZiAoa2V5SW5kZXggPT0gNCkgewotICAgICAgICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gY3Vyc29yLnVwZGF0ZSgnYmFyJyk7Iik7Ci0gICAgICAgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICAgICAgZXZhbEFuZExvZygia2V5
SW5kZXgrKzsiKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIp
OwotICAgICAgICAgIH07Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgZXZh
bEFuZExvZygia2V5SW5kZXgrKzsiKTsKLSAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29u
dGludWUoKTsiKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIHNo
b3VsZEJlKCJrZXlJbmRleCIsICJrZXlzLmxlbmd0aCIpOwotICAgICAgICB0ZXN0R3JvdXAxMigp
OwotICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdEdyb3VwMTIoKQotewotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KHNvcnRlZEtleXNb
NF0pOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdGVzdEdyb3VwMTJiOwotfQotCi1mdW5jdGlvbiB0ZXN0
R3JvdXAxMmIoKQotewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIidiYXIn
Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1
dCgnZm9vJywgc29ydGVkS2V5c1s0XSk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0ZXN0R3JvdXAxMzsK
LX0KLQotZnVuY3Rpb24gdGVzdEdyb3VwMTMoKQotewotICAgIGtleUluZGV4ID0gZXZhbEFuZExv
Zygia2V5SW5kZXggPSAwOyIpOwotCi0gICAgZ290UmVtb3ZlRXZlbnQgPSBmYWxzZTsKLSAgICBy
ZXR2YWwgPSBmYWxzZTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2Jq
ZWN0U3RvcmUub3BlbkN1cnNvcihudWxsLCBJREJDdXJzb3IuTkVYVCk7Iik7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNv
ciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICBpZiAoY3Vyc29yKSB7Ci0gICAgICAg
IHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7Ci0gICAgICAg
IHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOwot
ICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgIidmb28nIik7Ci0KLSAgICAgICAgaWYg
KGtleUluZGV4ID09IDQpIHsKLSAgICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IGN1cnNvci5kZWxldGUoKTsiKTsKLSAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0
aW9uKGV2ZW50KSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNSIpOwotICAg
ICAgICAgICAgZ290UmVtb3ZlRXZlbnQgPSBldmFsQW5kTG9nKCJnb3RSZW1vdmVFdmVudCA9IHRy
dWU7Iik7Ci0gICAgICAgICAgfTsKLSAgICAgICAgfQotCi0gICAgICAgIGV2YWxBbmRMb2coImtl
eUluZGV4Kys7Iik7Ci0gICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOwot
ICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJrZXlz
Lmxlbmd0aCIpOwotICAgICAgICBzaG91bGRCZSgiZ290UmVtb3ZlRXZlbnQiLCAidHJ1ZSIpOwot
ICAgICAgICB0ZXN0R3JvdXAxNCgpOwotICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVz
dEdyb3VwMTQoKQotewotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0
U3RvcmUuZ2V0KHNvcnRlZEtleXNbNF0pOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdGVzdEdyb3VwMTRi
OwotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXAxNGIoKQotewotICAgIHNob3VsZEJlKCJldmVudC50
YXJnZXQucmVzdWx0IiwgInVuZGVmaW5lZCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoJ2ZvbycsIHNvcnRlZEtleXNbNF0pOyIpOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gdGVzdEdyb3VwMTU7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDE1KCkKLXsK
LSAgICBrZXlJbmRleCA9IHNvcnRlZEtleXMubGVuZ3RoIC0gMTsKLQotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcihudWxsLCBJREJDdXJz
b3IuUFJFVik7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgIGN1
cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAg
ICBpZiAoY3Vyc29yKSB7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgInNvcnRlZEtl
eXNba2V5SW5kZXhdIik7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJz
b3J0ZWRLZXlzW2tleUluZGV4XSIpOwotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwg
Iidmb28nIik7Ci0KLSAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7Ci0K
LSAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsK
LSAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgInNvcnRlZEtleXNba2V5SW5k
ZXhdIik7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAiJ2ZvbyciKTsKLQotICAg
ICAgICBldmFsQW5kTG9nKCJrZXlJbmRleC0tOyIpOwotICAgICAgfQotICAgICAgZWxzZSB7Ci0g
ICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICItMSIpOwotICAgICAgICBmaW5pc2hKU1Rlc3Qo
KTsKLSAgICAgIH0KLSAgICB9Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvY3Vyc29ycy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4K
IDwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9kZWxldGUtcmVzdWx0Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL2RlbGV0ZS1yZXN1bHQuaHRtbAppbmRleCAxMGY0NmJjODUwNGIwM2MyNzIzZGY0ZTM2
M2QwZmQ5NDAxZjNlZWQ3Li5mN2ViNTI2Y2U1NTliZDg5YTk1ODhlMDE5ODFhYmM2MDY5MzQ1OWVh
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2RlbGV0
ZS1yZXN1bHQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L2RlbGV0ZS1yZXN1bHQuaHRtbApAQCAtMSw3MyArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08
IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9z
b3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3Rfb2RkX3Jlc3VsdF9vcmRlci5odG1sP3Jhdz0x
Ci0gIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgotICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+CiA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9o
ZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREI6IHJl
c3VsdCBwcm9wZXJ0eSBhZnRlciBkZWxldGluZyBleGlzdGluZyBhbmQgbm9uLWV4aXN0aW5nIHJl
Y29yZCIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygp
OwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24g
PSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWRE
Qi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3Bl
blN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRi
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVh
dGVPYmplY3RTdG9yZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLX0KLQotZnVuY3Rpb24gY3JlYXRlT2JqZWN0U3RvcmUoKQotewotICAgIGRlbGV0ZUFs
bE9iamVjdFN0b3JlcyhkYik7Ci0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7IGtleVBhdGg6ICdpZCcsIGF1dG9J
bmNyZW1lbnQ6IHRydWUgfSk7Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5hZGQoe30pOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRl
UmVjb3JkMTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LX0KLQotZnVuY3Rpb24gZGVsZXRlUmVjb3JkMSgpCi17Ci0gICAgaWQgPSBldmFsQW5kTG9nKCJp
ZCA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBvYmplY3RTdG9yZS5kZWxldGUoaWQpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZGVsZXRlUmVjb3JkMjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZGVsZXRlUmVjb3JkMigpCi17Ci0gICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldC5yZXN1bHQiLCAidW5kZWZpbmVkIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5kZWxldGUoaWQpOyIpOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZmluYWxDaGVjazsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
U3VjY2Vzc0NhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBmaW5hbENoZWNrKCkKLXsKLSAgICBzaG91
bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ1bmRlZmluZWQiKTsKLSAgICBmaW5pc2hKU1Rl
c3QoKTsKLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
ZGVsZXRlLXJlc3VsdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvZXZlbnQt
c291cmNlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2V2ZW50
LXNvdXJjZS5odG1sCmluZGV4IDM3YzEyZTUwZjY1MGE2NmU1YTk2ZDIzMzgxMzk4ZGQxYWRhNTJh
ZmYuLmRiMjFiYWE2OTk0ZDZhM2FiNGQ5MWVhYmViMWJiYTcyZDFjYWUwZTkgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvZXZlbnQtc291cmNlLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9ldmVudC1zb3VyY2Uu
aHRtbApAQCAtMSw2OCArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFs
IHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4
ZWREQi90ZXN0L3Rlc3RfZXZlbnRfc291cmNlLmh0bWwKLSAgbGljZW5zZSBvZiBvcmlnaW5hbCB0
ZXN0OgotICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCi0gICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvICIKLS0tPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0K
LWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGV2ZW50LnRhcmdldC5zb3VyY2UgaW4gc3Vj
Y2VzcyBjYWxsYmFja3MiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9y
UHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRl
c2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgc291cmNlID0g
ZXZhbEFuZExvZygic291cmNlID0gZXZlbnQudGFyZ2V0LnNvdXJjZTsiKTsKLSAgICBzaG91bGRC
ZSgic291cmNlIiwgImluZGV4ZWREQiIpOwotCi0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRh
YmFzZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0K
LQotZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCi17Ci0gICAgc291cmNlID0gZXZhbEFuZExvZygi
c291cmNlID0gZXZlbnQudGFyZ2V0LnNvdXJjZTsiKTsKLSAgICBzaG91bGRCZSgic291cmNlIiwg
ImRiIik7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3Rv
cmVOYW1lID0gIk9iamVjdHMiOwotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0
U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUsIHsgYXV0b0luY3Jl
bWVudDogdHJ1ZSB9KTsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9i
amVjdFN0b3JlLmFkZCh7fSk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhcmVXZURvbmVZ
ZXQ7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0K
LWZ1bmN0aW9uIGFyZVdlRG9uZVlldCgpCi17Ci0gICAgc291cmNlID0gZXZhbEFuZExvZygic291
cmNlID0gZXZlbnQudGFyZ2V0LnNvdXJjZTsiKTsKLSAgICBzaG91bGRCZSgic291cmNlIiwgIm9i
amVjdFN0b3JlIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZXZlbnQtc291cmNlLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2dsb2JhbC1kYXRhLmh0bWwgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2dsb2JhbC1kYXRhLmh0bWwKaW5kZXggY2RlMDY5NjU2
ZjY5ZWJmZDkxM2QzNmVjNGNhOTAyNzNhMjQwZDI0ZS4uYTJiMDY3M2RkYjEzNWJmN2EyNTFjNzIz
OTEyZDY2MmQ2NGMwN2MxZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW96aWxsYS9nbG9iYWwtZGF0YS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL21vemlsbGEvZ2xvYmFsLWRhdGEuaHRtbApAQCAtMSw4MCArMSwxMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcv
bW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfZ2xvYmFsX2RhdGEuaHRt
bAotICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Ci0gICAgIiBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KLSAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgotLS0+CiA8aHRtbD4KIDxoZWFkPgogPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwv
aGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mg
b3BlbmluZyBEQiBtb3JlIHRoYW4gb25jZSIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICBy
ZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5h
bWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAg
ICBkYjEgPSBldmFsQW5kTG9nKCJkYjEgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiMS5zZXRWZXJzaW9uKCcxJykiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFuRGF0YWJhc2Uo
KQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYjEpOwotCi0gICAgb2JqZWN0U3RvcmVO
YW1lID0gIk9iamVjdHMiOwotICAgIG9iamVjdFN0b3JlT3B0aW9ucyA9IHsga2V5UGF0aDogJ2lk
JywgYXV0b0luY3JlbWVudDogdHJ1ZSB9OwotICAgIGV2YWxBbmRMb2coImRiMS5jcmVhdGVPYmpl
Y3RTdG9yZShvYmplY3RTdG9yZU5hbWUsIG9iamVjdFN0b3JlT3B0aW9ucyk7Iik7Ci0KLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pOyIp
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbjJTdWNjZXNzOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuMlN1Y2Nl
c3MoKQotewotICAgIGRiMiA9IGV2YWxBbmRMb2coImRiMiA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKLQotICAgIHNob3VsZEJlVHJ1ZSgiZGIxICE9PSBkYjIiKTsKLSAgICBzaG91bGRCZSgiZGIx
Lm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjEiKTsKLSAgICBzaG91bGRCZSgiZGIxLm9iamVj
dFN0b3JlTmFtZXMuaXRlbSgwKSIsICJvYmplY3RTdG9yZU5hbWUiKTsKLSAgICBzaG91bGRCZSgi
ZGIyLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjEiKTsKLSAgICBzaG91bGRCZSgiZGIyLm9i
amVjdFN0b3JlTmFtZXMuaXRlbSgwKSIsICJvYmplY3RTdG9yZU5hbWUiKTsKLQotICAgIG9iamVj
dFN0b3JlMSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlMSA9IGRiMS50cmFuc2FjdGlvbihvYmpl
Y3RTdG9yZU5hbWUpLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7Iik7Ci0gICAgc2hvdWxk
QmUoIm9iamVjdFN0b3JlMS5uYW1lIiwgIm9iamVjdFN0b3JlTmFtZSIpOwotICAgIHNob3VsZEJl
KCJvYmplY3RTdG9yZTEua2V5UGF0aCIsICJvYmplY3RTdG9yZU9wdGlvbnMua2V5UGF0aCIpOwot
Ci0gICAgb2JqZWN0U3RvcmUyID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUyID0gZGIyLnRyYW5z
YWN0aW9uKG9iamVjdFN0b3JlTmFtZSkub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKTsiKTsK
LSAgICBzaG91bGRCZVRydWUoIm9iamVjdFN0b3JlMSAhPT0gb2JqZWN0U3RvcmUyIik7Ci0gICAg
c2hvdWxkQmUoIm9iamVjdFN0b3JlMi5uYW1lIiwgIm9iamVjdFN0b3JlTmFtZSIpOwotICAgIHNo
b3VsZEJlKCJvYmplY3RTdG9yZTIua2V5UGF0aCIsICJvYmplY3RTdG9yZU9wdGlvbnMua2V5UGF0
aCIpOwotCi0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZ2xvYmFsLWRhdGEuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvaW5kZXhlcy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9pbmRleGVzLmh0bWwKaW5kZXggNGZiN2UxMjRjNWIxMDk2YTQ2N2NkODE1
MTc0NWVkMGUwMWQ1YmU3NC4uOGI2YzZkY2ZiMzQxZDFiYWE4YWQxYzE5ODEyNmUzNDkzMjZkMDNm
MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9pbmRl
eGVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9pbmRl
eGVzLmh0bWwKQEAgLTEsMTAyMiArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9y
aWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9t
L2luZGV4ZWREQi90ZXN0L3Rlc3RfaW5kZXhlcy5odG1sP2ZvcmNlPTEKLSAgbGljZW5zZSBvZiBv
cmlnaW5hbCB0ZXN0OgotICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCi0gICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvICIKLS0tPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxz
Y3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQjogaXRlcmF0aW5nIHRocm91Z2gg
aW5kZXggY3Vyc29ycyB3aXRoIGtleXMgYW5kIGtleSByYW5nZXMiKTsKLQotZnVuY3Rpb24gdGVz
dCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxv
Y2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlv
bikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3Vj
Y2VzcygpCi17Ci0gICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7Ci0gICAgZGIgPSBldmFsQW5k
TG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIG9iamVjdFN0b3JlTmFtZSA9
ICJQZW9wbGUiOwotCi0gICAgb2JqZWN0U3RvcmVEYXRhID0gWwotICAgICAgICB7IGtleTogIjIz
Ny0yMy03NzMyIiwgdmFsdWU6IHsgbmFtZTogIkJvYiIsIGhlaWdodDogNjAsIHdlaWdodDogMTIw
IH0gfSwKLSAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczMyIsIHZhbHVlOiB7IG5hbWU6ICJBbm4i
LCBoZWlnaHQ6IDUyLCB3ZWlnaHQ6IDExMCB9IH0sCi0gICAgICAgIHsga2V5OiAiMjM3LTIzLTc3
MzQiLCB2YWx1ZTogeyBuYW1lOiAiUm9uIiwgaGVpZ2h0OiA3Mywgd2VpZ2h0OiAxODAgfSB9LAot
ICAgICAgICB7IGtleTogIjIzNy0yMy03NzM1IiwgdmFsdWU6IHsgbmFtZTogIlN1ZSIsIGhlaWdo
dDogNTgsIHdlaWdodDogMTMwIH0gfSwKLSAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNiIsIHZh
bHVlOiB7IG5hbWU6ICJKb2UiLCBoZWlnaHQ6IDY1LCB3ZWlnaHQ6IDE1MCB9IH0sCi0gICAgICAg
IHsga2V5OiAiMjM3LTIzLTc3MzciLCB2YWx1ZTogeyBuYW1lOiAiUGF0IiwgaGVpZ2h0OiA2NSwg
d2VpZ2h0OiAxMDAgfSB9Ci0gICAgXTsKLQotICAgIGluZGV4RGF0YSA9IFsKLSAgICAgICAgeyBu
YW1lOiAibmFtZSIsIGtleVBhdGg6ICJuYW1lIiwgb3B0aW9uczogeyB1bmlxdWU6IHRydWUgfSB9
LAotICAgICAgICB7IG5hbWU6ICJoZWlnaHQiLCBrZXlQYXRoOiAiaGVpZ2h0Iiwgb3B0aW9uczog
eyB9IH0sCi0gICAgICAgIHsgbmFtZTogIndlaWdodCIsIGtleVBhdGg6ICJ3ZWlnaHQiLCBvcHRp
b25zOiB7IHVuaXF1ZTogZmFsc2UgfSB9Ci0gICAgXTsKLQotICAgIG9iamVjdFN0b3JlRGF0YU5h
bWVTb3J0ID0gWwotICAgICAgICB7IGtleTogIjIzNy0yMy03NzMzIiwgdmFsdWU6IHsgbmFtZTog
IkFubiIsIGhlaWdodDogNTIsIHdlaWdodDogMTEwIH0gfSwKLSAgICAgICAgeyBrZXk6ICIyMzct
MjMtNzczMiIsIHZhbHVlOiB7IG5hbWU6ICJCb2IiLCBoZWlnaHQ6IDYwLCB3ZWlnaHQ6IDEyMCB9
IH0sCi0gICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzYiLCB2YWx1ZTogeyBuYW1lOiAiSm9lIiwg
aGVpZ2h0OiA2NSwgd2VpZ2h0OiAxNTAgfSB9LAotICAgICAgICB7IGtleTogIjIzNy0yMy03NzM3
IiwgdmFsdWU6IHsgbmFtZTogIlBhdCIsIGhlaWdodDogNjUsIHdlaWdodDogMTAwIH0gfSwKLSAg
ICAgICAgeyBrZXk6ICIyMzctMjMtNzczNCIsIHZhbHVlOiB7IG5hbWU6ICJSb24iLCBoZWlnaHQ6
IDczLCB3ZWlnaHQ6IDE4MCB9IH0sCi0gICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzUiLCB2YWx1
ZTogeyBuYW1lOiAiU3VlIiwgaGVpZ2h0OiA1OCwgd2VpZ2h0OiAxMzAgfSB9Ci0gICAgXTsKLQot
ICAgIG9iamVjdFN0b3JlRGF0YVdlaWdodFNvcnQgPSBbCi0gICAgICAgIHsga2V5OiAiMjM3LTIz
LTc3MzciLCB2YWx1ZTogeyBuYW1lOiAiUGF0IiwgaGVpZ2h0OiA2NSwgd2VpZ2h0OiAxMDAgfSB9
LAotICAgICAgICB7IGtleTogIjIzNy0yMy03NzMzIiwgdmFsdWU6IHsgbmFtZTogIkFubiIsIGhl
aWdodDogNTIsIHdlaWdodDogMTEwIH0gfSwKLSAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczMiIs
IHZhbHVlOiB7IG5hbWU6ICJCb2IiLCBoZWlnaHQ6IDYwLCB3ZWlnaHQ6IDEyMCB9IH0sCi0gICAg
ICAgIHsga2V5OiAiMjM3LTIzLTc3MzUiLCB2YWx1ZTogeyBuYW1lOiAiU3VlIiwgaGVpZ2h0OiA1
OCwgd2VpZ2h0OiAxMzAgfSB9LAotICAgICAgICB7IGtleTogIjIzNy0yMy03NzM2IiwgdmFsdWU6
IHsgbmFtZTogIkpvZSIsIGhlaWdodDogNjUsIHdlaWdodDogMTUwIH0gfSwKLSAgICAgICAgeyBr
ZXk6ICIyMzctMjMtNzczNCIsIHZhbHVlOiB7IG5hbWU6ICJSb24iLCBoZWlnaHQ6IDczLCB3ZWln
aHQ6IDE4MCB9IH0KLSAgICBdOwotCi0gICAgb2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydCA9IFsK
LSAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczMyIsIHZhbHVlOiB7IG5hbWU6ICJBbm4iLCBoZWln
aHQ6IDUyLCB3ZWlnaHQ6IDExMCB9IH0sCi0gICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzUiLCB2
YWx1ZTogeyBuYW1lOiAiU3VlIiwgaGVpZ2h0OiA1OCwgd2VpZ2h0OiAxMzAgfSB9LAotICAgICAg
ICB7IGtleTogIjIzNy0yMy03NzMyIiwgdmFsdWU6IHsgbmFtZTogIkJvYiIsIGhlaWdodDogNjAs
IHdlaWdodDogMTIwIH0gfSwKLSAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNiIsIHZhbHVlOiB7
IG5hbWU6ICJKb2UiLCBoZWlnaHQ6IDY1LCB3ZWlnaHQ6IDE1MCB9IH0sCi0gICAgICAgIHsga2V5
OiAiMjM3LTIzLTc3MzciLCB2YWx1ZTogeyBuYW1lOiAiUGF0IiwgaGVpZ2h0OiA2NSwgd2VpZ2h0
OiAxMDAgfSB9LAotICAgICAgICB7IGtleTogIjIzNy0yMy03NzM0IiwgdmFsdWU6IHsgbmFtZTog
IlJvbiIsIGhlaWdodDogNzMsIHdlaWdodDogMTgwIH0gfQotICAgIF07Ci0KLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZTsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY3JlYXRl
QW5kUG9wdWxhdGVPYmplY3RTdG9yZSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRi
KTsKLSAgICB0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Ci0KLSAgICBvYmplY3RTdG9yZSA9
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3Rv
cmVOYW1lKTsiKTsKLQotICAgIGRlYnVnKCJGaXJzdCwgYWRkIGFsbCBvdXIgZGF0YSB0byB0aGUg
b2JqZWN0IHN0b3JlLiIpOwotICAgIGFkZGVkRGF0YSA9IDA7Ci0gICAgZm9yIChpIGluIG9iamVj
dFN0b3JlRGF0YSkgewotICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmpl
Y3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW2ldLnZhbHVlLCBvYmplY3RTdG9yZURhdGFbaV0u
a2V5KTsiKTsKLSAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBp
ZiAoKythZGRlZERhdGEgPT0gb2JqZWN0U3RvcmVEYXRhLmxlbmd0aCkgewotICAgICAgICAgIGNy
ZWF0ZUluZGV4ZXMoKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24g
Y3JlYXRlSW5kZXhlcygpCi17Ci0gICAgZGVidWcoIk5vdyBjcmVhdGUgdGhlIGluZGV4ZXMuIik7
Ci0gICAgZm9yIChpIGluIGluZGV4RGF0YSkgewotICAgICAgZXZhbEFuZExvZygib2JqZWN0U3Rv
cmUuY3JlYXRlSW5kZXgoaW5kZXhEYXRhW2ldLm5hbWUsIGluZGV4RGF0YVtpXS5rZXlQYXRoLCBp
bmRleERhdGFbaV0ub3B0aW9ucyk7Iik7Ci0gICAgfQotICAgIHNob3VsZEJlKCJvYmplY3RTdG9y
ZS5pbmRleE5hbWVzLmxlbmd0aCIsICJpbmRleERhdGEubGVuZ3RoIik7Ci0gICAgdHJhbnMub25j
b21wbGV0ZSA9IHNldFZlcnNpb25Db21wbGV0ZTsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvbkNv
bXBsZXRlKCkKLXsKLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0g
ZGIudHJhbnNhY3Rpb24ob2JqZWN0U3RvcmVOYW1lKS5vYmplY3RTdG9yZShvYmplY3RTdG9yZU5h
bWUpOyIpOwotCi0gICAgLy8gQ2hlY2sgZ2xvYmFsIHByb3BlcnRpZXMgdG8gbWFrZSBzdXJlIHRo
ZXkgYXJlIGNvcnJlY3QuCi0gICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLmluZGV4TmFtZXMubGVu
Z3RoIiwgImluZGV4RGF0YS5sZW5ndGgiKTsKLSAgICBmb3IgKGkgaW4gaW5kZXhEYXRhKSB7Ci0g
ICAgICAgIGZvdW5kID0gZmFsc2U7Ci0gICAgICAgIGZvciAoaiA9IDA7IGogPCBvYmplY3RTdG9y
ZS5pbmRleE5hbWVzLmxlbmd0aDsgaisrKSB7Ci0gICAgICAgICAgICBpZiAob2JqZWN0U3RvcmUu
aW5kZXhOYW1lcy5pdGVtKGopID09IGluZGV4RGF0YVtpXS5uYW1lKSB7Ci0gICAgICAgICAgICAg
ICAgZm91bmQgPSB0cnVlOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgiZm91bmQiKTsKLSAgICAgICAgaW5kZXgg
PSBldmFsQW5kTG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmluZGV4KGluZGV4RGF0YVtpXS5uYW1l
KTsiKTsKLSAgICAgICAgc2hvdWxkQmUoImluZGV4Lm5hbWUiLCAiaW5kZXhEYXRhW2ldLm5hbWUi
KTsKLSAgICAgICAgc2hvdWxkQmUoImluZGV4LmtleVBhdGgiLCAiaW5kZXhEYXRhW2ldLmtleVBh
dGgiKTsKLSAgICAgICAgc2hvdWxkQmUoImluZGV4LnVuaXF1ZSIsIGluZGV4RGF0YVtpXS5vcHRp
b25zLnVuaXF1ZSA/ICJ0cnVlIiA6ICJmYWxzZSIpOwotICAgIH0KLQotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5nZXRLZXkoJ0Jv
YicpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2hlY2tHZXRLZXk7Ci19Ci0KLWZ1bmN0aW9uIGNoZWNr
R2V0S2V5KCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICInMjM3LTIz
LTc3MzInIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0
b3JlLmluZGV4KCduYW1lJykuZ2V0KCdCb2InKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNoZWNrR2V0
OwotfQotCi1mdW5jdGlvbiBjaGVja0dldCgpCi17Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdl
dC5yZXN1bHQubmFtZSIsICInQm9iJyIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVz
dWx0LmhlaWdodCIsICI2MCIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0Lndl
aWdodCIsICIxMjAiKTsKLQotICAgIGtleUluZGV4ID0gMDsKLQotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuS2V5Q3Vyc29y
KCk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAgY3Vyc29y
ID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgICAg
aWYgKGN1cnNvcikgewotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0
U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJ
bmRleF0ua2V5Iik7Ci0gICAgICAgICAgICBzaG91bGRCZUZhbHNlKCIndmFsdWUnIGluIGN1cnNv
ciIpOwotCi0gICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKLQot
ICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNv
cnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
cHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7Ci0g
ICAgICAgICAgICBzaG91bGRCZUZhbHNlKCIndmFsdWUnIGluIGN1cnNvciIpOwotCi0gICAgICAg
ICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2Ug
ewotICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJvYmplY3RTdG9yZURhdGEubGVuZ3Ro
Iik7Ci0gICAgICAgICAgdGVzdEdyb3VwMygpOwotICAgICAgICB9Ci0gICAgfTsKLX0KLQotZnVu
Y3Rpb24gdGVzdEdyb3VwMygpCi17Ci0gICAga2V5SW5kZXggPSAwOwotCi0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnd2VpZ2h0Jykub3Blbktl
eUN1cnNvcihudWxsLCBJREJDdXJzb3IuTkVYVCk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlv
biAoZXZlbnQpIHsKLSAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICAgICAgc2hv
dWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhV2VpZ2h0U29ydFtrZXlJbmRleF0u
dmFsdWUud2VpZ2h0Iik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXki
LCAib2JqZWN0U3RvcmVEYXRhV2VpZ2h0U29ydFtrZXlJbmRleF0ua2V5Iik7Ci0KLSAgICAgICAg
ICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOwotCi0gICAgICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFXZWlnaHRTb3J0W2tleUluZGV4XS52
YWx1ZS53ZWlnaHQiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIs
ICJvYmplY3RTdG9yZURhdGFXZWlnaHRTb3J0W2tleUluZGV4XS5rZXkiKTsKLQotICAgICAgICAg
ICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJvYmplY3RTdG9yZURhdGEubGVuZ3Ro
Iik7Ci0gICAgICAgICAgICB0ZXN0R3JvdXA0KCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1
bmN0aW9uIHRlc3RHcm91cDQoKQotewotLyogdGhpcyB3YXMgc3BsaXQgb3V0IGludG8gYSBzZXBh
cmF0ZSB0ZXN0Ci0gICAgZGVidWcoIkNoZWNrIHRoYXQgdGhlIG5hbWUgaW5kZXggZW5mb3JjZXMg
aXRzIHVuaXF1ZSBjb25zdHJhaW50LiIpOwotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygi
b2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUsIElEQlRyYW5zYWN0
aW9uLlJFQURfV1JJVEUpLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7Iik7Ci0gICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigib2JqZWN0U3RvcmUuYWRkKHsgbmFtZTogJ0JvYicsIGhlaWdo
dDogNjIsIHdlaWdodDogMTcwIH0sICcyMzctMjMtNzczOCcpOyIsICJJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5DT05TVFJBSU5UX0VSUiIpOwotKi8KLQotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExv
Zygib2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUpLm9iamVjdFN0
b3JlKG9iamVjdFN0b3JlTmFtZSk7Iik7Ci0gICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJ
bmRleCA9IG9iamVjdFN0b3JlRGF0YU5hbWVTb3J0Lmxlbmd0aCAtIDE7Iik7Ci0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9wZW5L
ZXlDdXJzb3IobnVsbCwgSURCQ3Vyc29yLlBSRVYpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24gKGV2ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50
LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52
YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAi
b2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotCi0gICAgICAgICAgICBl
dmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKLQotICAgICAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5h
bWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RT
dG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7Ci0KLSAgICAgICAgICAgIGV2YWxBbmRM
b2coImtleUluZGV4LS07Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICBzaG91bGRCZSgia2V5SW5kZXgiLCAiLTEiKTsKLSAgICAgICAgICAgIHRlc3RHcm91cDUoKTsK
LSAgICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdEdyb3VwNSgpCi17Ci0gICAga2V5
SW5kZXggPSAxOwotICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlS
YW5nZS5ib3VuZCgnQm9iJywgJ1JvbicpOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuS2V5Q3Vyc29yKGtleVJhbmdl
KTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewotICAgICAgICBjdXJzb3Ig
PSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgICAgICBp
ZiAoY3Vyc29yKSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RT
dG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOwotICAgICAgICAgICAgc2hv
dWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUlu
ZGV4XS5rZXkiKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIp
OwotICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKLSAgICAgICAgfQotICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICI1Iik7Ci0gICAg
ICAgICAgICB0ZXN0R3JvdXA2KCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRl
c3RHcm91cDYoKQotewotICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAyOyIp
OwotICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5ib3Vu
ZCgnQm9iJywgJ1JvbicsIHRydWUpOyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9wZW5LZXlDdXJzb3Ioa2V5UmFuZ2Up
OyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9
IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICAgIGlm
IChjdXJzb3IpIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0
b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5k
ZXhdLmtleSIpOwotCi0gICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsi
KTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7Ci0gICAgICAgIH0KLSAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNSIpOwotICAg
ICAgICAgICAgdGVzdEdyb3VwNygpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0
ZXN0R3JvdXA3KCkKLXsKLSAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gMTsi
KTsKLSAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtleVJhbmdlID0gSURCS2V5UmFuZ2UuYm91
bmQoJ0JvYicsICdSb24nLCBmYWxzZSwgdHJ1ZSk7Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCduYW1lJykub3BlbktleUN1cnNvcihr
ZXlSYW5nZSk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAg
Y3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAg
ICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAi
b2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29y
dFtrZXlJbmRleF0ua2V5Iik7Ci0KLSAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250
aW51ZSgpOyIpOwotICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKLSAgICAg
ICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICI0
Iik7Ci0gICAgICAgICAgICB0ZXN0R3JvdXA4KCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1
bmN0aW9uIHRlc3RHcm91cDgoKQotewotICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5k
ZXggPSAyOyIpOwotICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlS
YW5nZS5ib3VuZCgnQm9iJywgJ1JvbicsIHRydWUsIHRydWUpOyIpOwotCi0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9wZW5LZXlD
dXJzb3Ioa2V5UmFuZ2UpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0g
ICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7
Iik7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
a2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0g
ICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRh
TmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotCi0gICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJz
b3IuY29udGludWUoKTsiKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7
Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgia2V5SW5k
ZXgiLCAiNCIpOwotICAgICAgICAgICAgdGVzdEdyb3VwOSgpOwotICAgICAgICB9Ci0gICAgfQot
fQotCi1mdW5jdGlvbiB0ZXN0R3JvdXA5KCkKLXsKLSAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2co
ImtleUluZGV4ID0gMTsiKTsKLSAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtleVJhbmdlID0g
SURCS2V5UmFuZ2UubG93ZXJCb3VuZCgnQm9iJyk7Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCduYW1lJykub3BlbktleUN1cnNvcihr
ZXlSYW5nZSk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAg
Y3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAg
ICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAi
b2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29y
dFtrZXlJbmRleF0ua2V5Iik7Ci0KLSAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250
aW51ZSgpOyIpOwotICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKLSAgICAg
ICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJv
YmplY3RTdG9yZURhdGFOYW1lU29ydC5sZW5ndGgiKTsKLSAgICAgICAgICAgIHRlc3RHcm91cDEw
KCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDEwKCkKLXsKLSAg
ICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gMjsiKTsKLSAgICBrZXlSYW5nZSA9
IGV2YWxBbmRMb2coImtleVJhbmdlID0gSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgnQm9iJywgdHJ1
ZSk7Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3Jl
LmluZGV4KCduYW1lJykub3BlbktleUN1cnNvcihrZXlSYW5nZSk7Iik7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29y
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgICAgaWYgKGN1cnNvcikgewotICAgICAg
ICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5
SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFy
eUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7Ci0KLSAgICAg
ICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOwotICAgICAgICAgICAgZXZh
bEFuZExvZygia2V5SW5kZXgrKzsiKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydC5sZW5n
dGgiKTsKLSAgICAgICAgICAgIHRlc3RHcm91cDExKCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0K
LWZ1bmN0aW9uIHRlc3RHcm91cDExKCkKLXsKLSAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtl
eUluZGV4ID0gMDsiKTsKLSAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtleVJhbmdlID0gSURC
S2V5UmFuZ2UudXBwZXJCb3VuZCgnSm9lJyk7Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCduYW1lJykub3BlbktleUN1cnNvcihrZXlS
YW5nZSk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAgY3Vy
c29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAg
ICAgaWYgKGN1cnNvcikgewotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2Jq
ZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAg
IHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtr
ZXlJbmRleF0ua2V5Iik7Ci0KLSAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51
ZSgpOyIpOwotICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKLSAgICAgICAg
fQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiMyIpOwot
ICAgICAgICAgIHRlc3RHcm91cDEyKCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9u
IHRlc3RHcm91cDEyKCkKLXsKLSAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0g
MDsiKTsKLSAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtleVJhbmdlID0gSURCS2V5UmFuZ2Uu
dXBwZXJCb3VuZCgnSm9lJywgdHJ1ZSk7Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCduYW1lJykub3BlbktleUN1cnNvcihrZXlSYW5n
ZSk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAgY3Vyc29y
ID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgICAg
aWYgKGN1cnNvcikgewotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0
U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJ
bmRleF0ua2V5Iik7Ci0KLSAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgp
OyIpOwotICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKLSAgICAgICAgfQot
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICIyIik7Ci0g
ICAgICAgICAgICB0ZXN0R3JvdXAxMygpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1mdW5jdGlv
biB0ZXN0R3JvdXAxMygpCi17Ci0gICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9
IDM7Iik7Ci0gICAga2V5UmFuZ2UgPSBldmFsQW5kTG9nKCJrZXlSYW5nZSA9IElEQktleVJhbmdl
Lm9ubHkoJ1BhdCcpOyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBv
YmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9wZW5LZXlDdXJzb3Ioa2V5UmFuZ2UpOyIpOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2YWxBbmRM
b2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICAgIGlmIChjdXJzb3Ip
IHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5h
bWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vy
c29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIp
OwotCi0gICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKLSAgICAg
ICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNCIpOwotICAgICAgICAgICAg
dGVzdEdyb3VwMTQoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdEdyb3Vw
MTQoKQotewotICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAwOyIpOwotCi0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFt
ZScpLm9wZW5DdXJzb3IoKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewot
ICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0
OyIpOwotICAgICAgICBpZiAoY3Vyc29yKSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29y
LmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOwot
ICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0
YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
dmFsdWUubmFtZSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFt
ZSIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQiLCAib2JqZWN0
U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOwotICAgICAgICAgICAg
aWYgKCd3ZWlnaHQnIGluIGN1cnNvci52YWx1ZSkgewotICAgICAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4
XS52YWx1ZS53ZWlnaHQiKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZXZhbEFuZExv
ZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7Ci0KLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
a2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0g
ICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRh
TmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52
YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1l
Iik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RT
dG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7Ci0gICAgICAgICAgICBp
ZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci52YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhd
LnZhbHVlLndlaWdodCIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBldmFsQW5kTG9n
KCJrZXlJbmRleCsrOyIpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAg
c2hvdWxkQmUoImtleUluZGV4IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0Lmxlbmd0aCIpOwot
ICAgICAgICAgICAgdGVzdEdyb3VwMTUoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rp
b24gdGVzdEdyb3VwMTUoKQotewotICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXgg
PSBvYmplY3RTdG9yZURhdGFOYW1lU29ydC5sZW5ndGggLSAxOyIpOwotCi0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9wZW5DdXJz
b3IobnVsbCwgSURCQ3Vyc29yLlBSRVYpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2
ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQ7Iik7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5u
YW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0
U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotICAgICAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52
YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIs
ICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7Ci0gICAg
ICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7Ci0gICAgICAgICAgICAgICAg
c2hvdWxkQmUoImN1cnNvci52YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRb
a2V5SW5kZXhdLnZhbHVlLndlaWdodCIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBl
dmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKLQotICAgICAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5h
bWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RT
dG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7Ci0gICAgICAgICAgICBzaG91bGRCZSgi
Y3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZh
bHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0Iiwg
Im9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKLSAgICAg
ICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKLSAgICAgICAgICAgICAgICBz
aG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtr
ZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGtl
eUluZGV4LS07Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBzaG91bGRC
ZSgia2V5SW5kZXgiLCAiLTEiKTsKLSAgICAgICAgICAgIHRlc3RHcm91cDE2KCk7Ci0gICAgICAg
IH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDE2KCkKLXsKLSAgICBrZXlJbmRleCA9
IGV2YWxBbmRMb2coImtleUluZGV4ID0gMTsiKTsKLSAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2co
ImtleVJhbmdlID0gSURCS2V5UmFuZ2UuYm91bmQoJ0JvYicsICdSb24nKTsiKTsKLQotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5v
cGVuQ3Vyc29yKGtleVJhbmdlKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkg
ewotICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVz
dWx0OyIpOwotICAgICAgICBpZiAoY3Vyc29yKSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vy
c29yLmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIp
OwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3Jl
RGF0YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJz
b3IudmFsdWUubmFtZSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUu
bmFtZSIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQiLCAib2Jq
ZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOwotICAgICAgICAg
ICAgaWYgKCd3ZWlnaHQnIGluIGN1cnNvci52YWx1ZSkgewotICAgICAgICAgICAgICAgICAgc2hv
dWxkQmUoImN1cnNvci52YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5
SW5kZXhdLnZhbHVlLndlaWdodCIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBldmFs
QW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKLQotICAgICAgICAgICAgc2hvdWxkQmUoImN1
cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUi
KTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9y
ZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vy
c29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVl
Lm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0IiwgIm9i
amVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKLSAgICAgICAg
ICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKLSAgICAgICAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tl
eUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZXZh
bEFuZExvZygia2V5SW5kZXgrKzsiKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICI1Iik7Ci0gICAgICAgICAgICB0ZXN0R3JvdXAx
NygpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXAxNygpCi17Ci0g
ICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDI7Iik7Ci0gICAga2V5UmFuZ2Ug
PSBldmFsQW5kTG9nKCJrZXlSYW5nZSA9IElEQktleVJhbmdlLmJvdW5kKCdCb2InLCAnUm9uJywg
dHJ1ZSk7Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0
b3JlLmluZGV4KCduYW1lJykub3BlbkN1cnNvcihrZXlSYW5nZSk7Iik7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29y
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgICAgaWYgKGN1cnNvcikgewotICAgICAg
ICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5
SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFy
eUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7Ci0gICAgICAg
ICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNv
cnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
dmFsdWUuaGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5o
ZWlnaHQiKTsKLSAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKLSAg
ICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0
b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7Ci0KLSAgICAg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tl
eUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1h
cnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotICAgICAg
ICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0YU5hbWVT
b3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29y
LnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUu
aGVpZ2h0Iik7Ci0gICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7Ci0g
ICAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIsICJvYmplY3RT
dG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7Ci0gICAgICAgIH0KLSAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNSIpOwotICAg
ICAgICAgICAgdGVzdEdyb3VwMTgoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24g
dGVzdEdyb3VwMTgoKQotewotICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAx
OyIpOwotICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5i
b3VuZCgnQm9iJywgJ1JvbicsIGZhbHNlLCB0cnVlKTsiKTsKLQotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuQ3Vyc29yKGtl
eVJhbmdlKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewotICAgICAgICBj
dXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAg
ICAgICBpZiAoY3Vyc29yKSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJv
YmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOwotICAgICAgICAg
ICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0
W2tleUluZGV4XS5rZXkiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUubmFt
ZSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOwotICAg
ICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRh
TmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOwotICAgICAgICAgICAgaWYgKCd3ZWln
aHQnIGluIGN1cnNvci52YWx1ZSkgewotICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNv
ci52YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVl
LndlaWdodCIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJz
b3IuY29udGludWUoKTsiKTsKLQotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAi
b2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29y
dFtrZXlJbmRleF0ua2V5Iik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLm5h
bWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAg
ICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0
YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKLSAgICAgICAgICAgIGlmICgnd2Vp
Z2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKLSAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJz
b3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1
ZS53ZWlnaHQiKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZXZhbEFuZExvZygia2V5
SW5kZXgrKzsiKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHNob3Vs
ZEJlKCJrZXlJbmRleCIsICI0Iik7Ci0gICAgICAgICAgICB0ZXN0R3JvdXAxOSgpOwotICAgICAg
ICB9Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXAxOSgpCi17Ci0gICAga2V5SW5kZXgg
PSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDI7Iik7Ci0gICAga2V5UmFuZ2UgPSBldmFsQW5kTG9n
KCJrZXlSYW5nZSA9IElEQktleVJhbmdlLmJvdW5kKCdCb2InLCAnUm9uJywgdHJ1ZSwgdHJ1ZSk7
Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmlu
ZGV4KCduYW1lJykub3BlbkN1cnNvcihrZXlSYW5nZSk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbiAoZXZlbnQpIHsKLSAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZl
bnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICAgICAg
c2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhd
LnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIs
ICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7Ci0gICAgICAgICAgICBz
aG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5
SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUu
aGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQi
KTsKLSAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKLSAgICAgICAg
ICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0
YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7Ci0KLSAgICAgICAgICAg
IHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4
XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXki
LCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotICAgICAgICAgICAg
c2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tl
eUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVl
LmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0
Iik7Ci0gICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7Ci0gICAgICAg
ICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIsICJvYmplY3RTdG9yZURh
dGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7Ci0gICAgICAgIH0KLSAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNCIpOwotICAgICAgICAg
ICAgdGVzdEdyb3VwMjAoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdEdy
b3VwMjAoKQotewotICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSA0OyIpOwot
ICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5ib3VuZCgn
Qm9iJywgJ1JvbicpOyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBv
YmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9wZW5DdXJzb3Ioa2V5UmFuZ2UsIElEQkN1cnNvci5Q
UkVWKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewotICAgICAgICBjdXJz
b3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgICAg
ICBpZiAoY3Vyc29yKSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmpl
Y3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOwotICAgICAgICAgICAg
c2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tl
eUluZGV4XS5rZXkiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUubmFtZSIs
ICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOwotICAgICAg
ICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFt
ZVNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOwotICAgICAgICAgICAgaWYgKCd3ZWlnaHQn
IGluIGN1cnNvci52YWx1ZSkgewotICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52
YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLndl
aWdodCIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3Iu
Y29udGludWUoKTsiKTsKLQotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2Jq
ZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAg
IHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtr
ZXlJbmRleF0ua2V5Iik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUi
LCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5h
bWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKLSAgICAgICAgICAgIGlmICgnd2VpZ2h0
JyBpbiBjdXJzb3IudmFsdWUpIHsKLSAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
dmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS53
ZWlnaHQiKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5k
ZXgtLTsiKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHNob3VsZEJl
KCJrZXlJbmRleCIsICIwIik7Ci0gICAgICAgICAgICB0ZXN0R3JvdXAyMSgpOwotICAgICAgICB9
Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXAyMSgpCi17Ci0gICAga2V5SW5kZXggPSBl
dmFsQW5kTG9nKCJrZXlJbmRleCA9IDM7Iik7Ci0gICAga2V5UmFuZ2UgPSBldmFsQW5kTG9nKCJr
ZXlSYW5nZSA9IElEQktleVJhbmdlLm9ubHkoNjUpOyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnaGVpZ2h0Jykub3BlbktleUN1cnNv
cihrZXlSYW5nZSwgSURCQ3Vyc29yLk5FWFQpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24g
KGV2ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRh
cmdldC5yZXN1bHQ7Iik7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgICAgIHNob3Vs
ZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZh
bHVlLmhlaWdodCIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5Iiwg
Im9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLmtleSIpOwotCi0gICAgICAgICAg
ICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKLSAgICAgICAgICAgIGV2YWxBbmRM
b2coImtleUluZGV4Kys7Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNSIpOwotICAgICAgICAgICAgdGVzdEdyb3VwMjIoKTsK
LSAgICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdEdyb3VwMjIoKQotewotICAgIGtl
eUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAzOyIpOwotICAgIGtleVJhbmdlID0gZXZh
bEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5vbmx5KDY1KTsiKTsKLQotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ2hlaWdodCcpLm9w
ZW5LZXlDdXJzb3Ioa2V5UmFuZ2UsIElEQkN1cnNvci5ORVhUX05PX0RVUExJQ0FURSk7Iik7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAgY3Vyc29yID0gZXZhbEFu
ZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgICAgaWYgKGN1cnNv
cikgewotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRh
SGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7Ci0gICAgICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRl
eF0ua2V5Iik7Ci0KLSAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIp
OwotICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKLSAgICAgICAgfQotICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICI0Iik7Ci0gICAg
ICAgICAgICB0ZXN0R3JvdXAyNCgpOwotICAgICAgICB9Ci0gICAgfQotfQotCi0vKiB0aGlzIHdh
cyBzcGxpdCBvdXQgaW50byBhIHNlcGFyYXRlIHRlc3QKLWZ1bmN0aW9uIHRlc3RHcm91cDIzKCkK
LXsKLSAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gNTsiKTsKLQotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ2hlaWdodCcp
Lm9wZW5LZXlDdXJzb3IobnVsbCwgSURCQ3Vyc29yLlBSRVZfTk9fRFVQTElDQVRFKTsiKTsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewotICAgICAgICBjdXJzb3IgPSBldmFsQW5k
TG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgICAgICBpZiAoY3Vyc29y
KSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFI
ZWlnaHRTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKLSAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tleUluZGV4
XS5rZXkiKTsKLQotICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7
Ci0gICAgICAgICAgICBpZiAoa2V5SW5kZXggPT0gNSkgewotICAgICAgICAgICAgICAgIGV2YWxB
bmRMb2coImtleUluZGV4LS07Iik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBldmFsQW5k
TG9nKCJrZXlJbmRleC0tOyIpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgc2hvdWxkQmUoImtleUluZGV4IiwgIi0xIik7Ci0gICAgICAgICAgICB0ZXN0R3JvdXAyNCgp
OwotICAgICAgICB9Ci0gICAgfQotfQotKi8KLQotZnVuY3Rpb24gdGVzdEdyb3VwMjQoKQotewot
ICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAzOyIpOwotICAgIGtleVJhbmdl
ID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5vbmx5KDY1KTsiKTsKLQotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ2hlaWdo
dCcpLm9wZW5DdXJzb3Ioa2V5UmFuZ2UsIElEQkN1cnNvci5ORVhUKTsiKTsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uIChldmVudCkgewotICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJz
b3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgICAgICBpZiAoY3Vyc29yKSB7Ci0gICAg
ICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0
W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
cHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tleUluZGV4XS5rZXkiKTsK
LSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUubmFtZSIsICJvYmplY3RTdG9yZURh
dGFIZWlnaHRTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tleUlu
ZGV4XS52YWx1ZS5oZWlnaHQiKTsKLSAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3Iu
dmFsdWUpIHsKLSAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIs
ICJvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7
Iik7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOwotICAgICAgICB9Ci0g
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIjUiKTsKLSAg
ICAgICAgICAgIHRlc3RHcm91cDI1KCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9u
IHRlc3RHcm91cDI1KCkKLXsKLSAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0g
MzsiKTsKLSAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtleVJhbmdlID0gSURCS2V5UmFuZ2Uu
b25seSg2NSk7Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVj
dFN0b3JlLmluZGV4KCdoZWlnaHQnKS5vcGVuQ3Vyc29yKGtleVJhbmdlLCBJREJDdXJzb3IuTkVY
VF9OT19EVVBMSUNBVEUpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0g
ICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7
Iik7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
a2V5IiwgIm9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIp
OwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3Jl
RGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLmtleSIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1
cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZh
bHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0Iiwg
Im9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOwotICAg
ICAgICAgICAgaWYgKCd3ZWlnaHQnIGluIGN1cnNvci52YWx1ZSkgewotICAgICAgICAgICAgICAg
IHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YUhlaWdodFNv
cnRba2V5SW5kZXhdLnZhbHVlLndlaWdodCIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKLSAgICAgICAgICAgIGV2YWxBbmRM
b2coImtleUluZGV4Kys7Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNCIpOwotICAgICAgICAgICAgdGVzdEdyb3VwMjcoKTsK
LSAgICAgICAgfQotICAgIH0KLX0KLQotLyogdGhpcyB3YXMgc3BsaXQgb3V0IGludG8gYSBzZXBh
cmF0ZSB0ZXN0Ci1mdW5jdGlvbiB0ZXN0R3JvdXAyNigpCi17Ci0gICAga2V5SW5kZXggPSBldmFs
QW5kTG9nKCJrZXlJbmRleCA9IDU7Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVx
dWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCdoZWlnaHQnKS5vcGVuQ3Vyc29yKG51bGwsIElEQkN1
cnNvci5QUkVWX05PX0RVUExJQ0FURSk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZl
bnQpIHsKLSAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0
LnJlc3VsdDsiKTsKLSAgICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUu
aGVpZ2h0Iik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2Jq
ZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0ua2V5Iik7Ci0gICAgICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJ
bmRleF0udmFsdWUubmFtZSIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5o
ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0
Iik7Ci0gICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7Ci0gICAgICAg
ICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRh
SGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOwotICAgICAgICAgICAg
aWYgKGtleUluZGV4ID09IDUpIHsKLSAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRl
eC0tOyIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgt
LTsiKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJr
ZXlJbmRleCIsICItMSIpOwotICAgICAgICAgICAgdGVzdEdyb3VwMjcoKTsKLSAgICAgICAgfQot
ICAgIH0KLX0KLSovCi0KLWZ1bmN0aW9uIHRlc3RHcm91cDI3KCkKLXsKLSAgICBrZXlJbmRleCA9
IGV2YWxBbmRMb2coImtleUluZGV4ID0gMDsiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuS2V5Q3Vyc29yKCk7Iik7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAgY3Vyc29yID0gZXZh
bEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgICAgaWYgKGN1
cnNvcikgewotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVE
YXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0u
a2V5Iik7Ci0KLSAgICAgICAgICAgIG5leHRLZXkgPSBldmFsQW5kTG9nKCJuZXh0S2V5ID0gIWtl
eUluZGV4ID8gJ1BhdCcgOiB1bmRlZmluZWQ7Iik7Ci0gICAgICAgICAgICBpZiAobmV4dEtleSkg
ewotICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZShuZXh0S2V5KTsi
KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vy
c29yLmNvbnRpbnVlKCk7Iik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5u
YW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0
U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotCi0gICAgICAgICAgICBpZiAoIWtl
eUluZGV4KSB7Ci0gICAgICAgICAgICAgICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRl
eCA9IDM7Iik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
ICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIm9iamVj
dFN0b3JlRGF0YS5sZW5ndGgiKTsKLSAgICAgICAgICAgIHRlc3RHcm91cDI4KCk7Ci0gICAgICAg
IH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDI4KCkKLXsKLSAgICBrZXlJbmRleCA9
IGV2YWxBbmRMb2coImtleUluZGV4ID0gMDsiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuS2V5Q3Vyc29yKCk7Iik7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAgY3Vyc29yID0gZXZh
bEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgICAgaWYgKGN1
cnNvcikgewotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVE
YXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0u
a2V5Iik7Ci0KLSAgICAgICAgICAgIG5leHRLZXkgPSBldmFsQW5kTG9nKCJuZXh0S2V5ID0gIWtl
eUluZGV4ID8gJ0ZsbycgOiB1bmRlZmluZWQ7Iik7Ci0gICAgICAgICAgICBpZiAobmV4dEtleSkg
ewotICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZShuZXh0S2V5KTsi
KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vy
c29yLmNvbnRpbnVlKCk7Iik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5u
YW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0
U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotCi0gICAgICAgICAgICBrZXlJbmRl
eCArPSBrZXlJbmRleCA/IDEgOiAyOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIm9iamVjdFN0b3JlRGF0YS5sZW5ndGgiKTsKLSAg
ICAgICAgICAgIHRlc3RHcm91cDI5KCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9u
IHRlc3RHcm91cDI5KCkKLXsKLSAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0g
MDsiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
aW5kZXgoJ25hbWUnKS5vcGVuQ3Vyc29yKCk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAo
ZXZlbnQpIHsKLSAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFy
Z2V0LnJlc3VsdDsiKTsKLSAgICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICAgICAgc2hvdWxk
QmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVl
Lm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmpl
Y3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7Ci0gICAgICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhd
LnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0
IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKLSAg
ICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKLSAgICAgICAgICAgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVT
b3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgbmV4dEtleSA9IGV2YWxBbmRMb2coIm5leHRLZXkgPSAha2V5SW5kZXggPyAnUGF0JyA6IHVu
ZGVmaW5lZDsiKTsKLSAgICAgICAgICAgIGlmIChuZXh0S2V5KSB7Ci0gICAgICAgICAgICAgICAg
ZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKG5leHRLZXkpOyIpOwotICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2Jq
ZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAg
IHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtr
ZXlJbmRleF0ua2V5Iik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUi
LCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5h
bWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKLSAgICAgICAgICAgIGlmICgnd2VpZ2h0
JyBpbiBjdXJzb3IudmFsdWUpIHsKLSAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
dmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS53
ZWlnaHQiKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCFrZXlJbmRleCkgewot
ICAgICAgICAgICAgICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAzOyIpOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgZXZhbEFu
ZExvZygia2V5SW5kZXgrKzsiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJvYmplY3RTdG9yZURhdGFO
YW1lU29ydC5sZW5ndGgiKTsKLSAgICAgICAgICAgIHRlc3RHcm91cDMwKCk7Ci0gICAgICAgIH0K
LSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDMwKCkKLXsKLSAgICBrZXlJbmRleCA9IGV2
YWxBbmRMb2coImtleUluZGV4ID0gMDsiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuQ3Vyc29yKCk7Iik7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAgY3Vyc29yID0gZXZhbEFuZExv
ZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgICAgaWYgKGN1cnNvcikg
ewotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFt
ZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJz
b3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7
Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVE
YXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3IudmFsdWUuaGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4
XS52YWx1ZS5oZWlnaHQiKTsKLSAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFs
dWUpIHsKLSAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0Iiwg
Im9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgbmV4dEtleSA9IGV2YWxBbmRMb2coIm5leHRLZXkgPSAh
a2V5SW5kZXggPyAnRmxvJyA6IHVuZGVmaW5lZDsiKTsKLSAgICAgICAgICAgIGlmIChuZXh0S2V5
KSB7Ci0gICAgICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKG5leHRLZXkp
OyIpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJj
dXJzb3IuY29udGludWUoKTsiKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgc2hvdWxk
QmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVl
Lm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmpl
Y3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7Ci0gICAgICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhd
LnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0
IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKLSAg
ICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKLSAgICAgICAgICAgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVT
b3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAga2V5SW5kZXggKz0ga2V5SW5kZXggPyAxIDogMjsKLSAgICAgICAgfQotICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJvYmplY3RTdG9yZURhdGFOYW1l
U29ydC5sZW5ndGgiKTsKLSAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgICAgICB9Ci0g
ICAgfQotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2luZGV4ZXMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEva2V5LXJlcXVp
cmVtZW50cy1kZWxldGUtbnVsbC1rZXkuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEva2V5LXJlcXVpcmVtZW50cy1kZWxldGUtbnVsbC1rZXkuaHRtbAppbmRleCBl
OTAwODg3Mjg5MDVhNDhjMmE2ZGQ3Y2E1ZTI5YmQxMDA0MDc0MjlhLi5jZjY2NzVmYTc0ZjcxNjk5
MjY5MDcwOWU3ZjczOTg4ZGVmMzRiNzJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMtZGVsZXRlLW51bGwta2V5Lmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWlyZW1l
bnRzLWRlbGV0ZS1udWxsLWtleS5odG1sCkBAIC0xLDUzICsxLDEwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTwhLS0KLSAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxh
Mi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9rZXlfcmVxdWlyZW1lbnRzLmh0bWwK
LSAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgotICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCi0gICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKLS0tPgogPGh0bWw+CiA8aGVhZD4KIDxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hl
YWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGJl
aGF2aW9yIGRlbGV0aW5nIGVudHJ5IHdpdGggbm8ga2V5Iik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQot
ewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlv
bi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3Mo
KQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0K
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNp
b24gMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlQW5kQ3JlYXRl
T2JqZWN0U3RvcmU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFuRGF0YWJhc2VBbmRDcmVhdGVPYmplY3RTdG9yZSgpCi17
Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLSAgICBvYmplY3RTdG9yZSA9IGV2YWxB
bmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2JhcicpOyIpOwotICAg
IGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIm9iamVjdFN0b3JlLmRlbGV0ZShudWxsKTsiLCAiSURC
RGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQot
Ci10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9rZXktcmVxdWly
ZW1lbnRzLWRlbGV0ZS1udWxsLWtleS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4K
IDwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9rZXktcmVxdWlyZW1lbnRzLWlubGluZS1hbmQtcGFzc2VkLmh0bWwgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMtaW5saW5lLWFuZC1w
YXNzZWQuaHRtbAppbmRleCBkYzM1ZTU4MTIwMjk3NGY3MGJhNGNmZjVjMDg0NjcyZmE0YmFjNjUy
Li5iOWRiM2I3MDkxZmIwZmZiMGNlMjJkYWUwNTQwN2I3MzZmYjQ1OGUyIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMtaW5s
aW5lLWFuZC1wYXNzZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL2tleS1yZXF1aXJlbWVudHMtaW5saW5lLWFuZC1wYXNzZWQuaHRtbApAQCAtMSw1NCAr
MSwxMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9t
eHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3Rf
a2V5X3JlcXVpcmVtZW50cy5odG1sCi0gIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKLSAgICAi
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgotICAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCi0tLT4K
IDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFy
ZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlv
bigiVGVzdCBJbmRleGVkREIncyBiZWhhdmlvciBhZGRpbmcgaW5saW5lIGFuZCBwYXNzZWQga2V5
IHNpbXVsdGFuZW91c2x5Iik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRv
clByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBk
ZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJv
cGVuU3VjY2VzcygpOiIpOwotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZl
cnNpb24oJ3ZlcnNpb24gMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFi
YXNlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQot
Ci1mdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKLXsKLSAgICBkZWJ1ZygiY2xlYW5EYXRhYmFzZSgp
OiIpOwotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0gICAgb2JqZWN0U3RvcmUgPSBl
dmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdiYXonLCB7IGtl
eVBhdGg6ICdpZCcgfSk7Iik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigib2JqZWN0U3Rv
cmUuYWRkKHtpZDogNX0sIDUpOyIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwot
ICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2tleS1yZXF1aXJlbWVudHMtaW5saW5lLWFuZC1wYXNzZWQuanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMtcHV0LW5vLWtl
eS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWly
ZW1lbnRzLXB1dC1uby1rZXkuaHRtbAppbmRleCA1NWRmMDhhM2E4Njk4Nzk2ZDA5ZGI5NzhmNWUz
YTA3ZjM2MTY4ZmRlLi42ZDRlMDU2MGIzOGIyZjY3ZGM2M2RkYTU0YTQ1Zjc1NTU0NTkyY2UwIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1
aXJlbWVudHMtcHV0LW5vLWtleS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEva2V5LXJlcXVpcmVtZW50cy1wdXQtbm8ta2V5Lmh0bWwKQEAgLTEsNTMgKzEs
MTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLQotICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhy
Lm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2tl
eV9yZXF1aXJlbWVudHMuaHRtbAotICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Ci0gICAgIiBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KLSAgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgotLS0+CiA8
aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVk
LmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24o
IlRlc3QgSW5kZXhlZERCJ3MgYmVoYXZpb3IgcHV0aW5nIHdpdGhvdXQga2V5Iik7Ci0KLWZ1bmN0
aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0g
c2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFi
YXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVz
Y3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24g
b3BlblN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZl
cnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rp
b24gY2xlYW5EYXRhYmFzZSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLSAg
ICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ2JhcicpOyIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIm9iamVjdFN0b3Jl
LnB1dCh7fSk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0gICAgZmluaXNo
SlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMva2V5LXJlcXVpcmVtZW50cy1wdXQtbm8ta2V5LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgogPC9ib2R5PgogPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMtcHV0LW51bGwta2V5Lmh0bWwgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMtcHV0LW51
bGwta2V5Lmh0bWwKaW5kZXggYjRlMjlkYTM3OTRiNDZmZjkxZWI2NWQ4ZTJiNzYzOTdmYmRmNzFk
NC4uNzBjOTI0MTk2MDdkM2Q3ZjFmYjIwMDQ4Y2I5ZjAwM2QyNTUzNjE5NCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWlyZW1lbnRzLXB1
dC1udWxsLWtleS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEva2V5LXJlcXVpcmVtZW50cy1wdXQtbnVsbC1rZXkuaHRtbApAQCAtMSw1MyArMSwxMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxs
YS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3Rfa2V5X3JlcXVp
cmVtZW50cy5odG1sCi0gIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgotICAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgog
PGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwv
c2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJ
bmRleGVkREIncyBiZWhhdmlvciBwdXQoKWluZyB3aXRoIG51bGwga2V5Iik7Ci0KLWZ1bmN0aW9u
IHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2Vs
Zi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNl
IjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3Jp
cHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3Bl
blN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVz
dWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNp
b24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24g
Y2xlYW5EYXRhYmFzZSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLSAgICBv
YmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ2JhcicpOyIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIm9iamVjdFN0b3JlLnB1
dCh7fSwgbnVsbCk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0gICAgZmlu
aXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMva2V5LXJlcXVpcmVtZW50cy1wdXQtbnVsbC1rZXkuanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vemlsbGEva2V5LXJlcXVpcmVtZW50cy5odG1sIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWlyZW1lbnRzLmh0bWwKaW5kZXggODMx
ZjIzNTI4MzBjN2ZiNTQ1YzRhNTE5OTA5ZWEzYzc1ZjgwZDhlNC4uYzMyNGZmNTE0ZDBlNWVmOTIy
Njk2ODU4ZmRlYjE2NGQ4MzViOWExYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWlyZW1lbnRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWlyZW1lbnRzLmh0bWwKQEAgLTEsODYg
KzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLQotICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8v
bXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0
X2tleV9yZXF1aXJlbWVudHMuaHRtbAotICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Ci0gICAg
IiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KLSAgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgotLS0+
CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hh
cmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRp
b24oIlRlc3QgSW5kZXhlZERCJ3MgZXZlbnQudGFyZ2V0LnJlc3VsdCBhZnRlciBhZGQoKSBhbmQg
cHV0KCkiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMo
KTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9u
ID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVk
REIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9w
ZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJk
YiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBj
bGVhbkRhdGFiYXNlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotfQotCi1mdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKLXsKLSAgICBkZWxldGVBbGxPYmpl
Y3RTdG9yZXMoZGIpOwotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUg
PSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJywgeyBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOyIp
OwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKHt9
KTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RBZGQ7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHBvc3RBZGQoKQot
ewotICAgIGtleTEgPSBldmFsQW5kTG9nKCJrZXkxID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsK
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCh7fSwg
a2V5MSk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0UHV0MTsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gcG9zdFB1
dDEoKQotewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgImtleTEiKTsKLSAg
ICBrZXkyID0gZXZhbEFuZExvZygia2V5MiA9IDEwOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KHt9LCBrZXkyKTsiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IHBvc3RQdXQyOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBwb3N0UHV0MigpCi17Ci0gICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldC5yZXN1bHQiLCAia2V5MiIpOwotICAgIGtleTIgPSBldmFsQW5kTG9nKCJr
ZXkyID0gMTAwOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0
U3RvcmUucHV0KHt9LCBrZXkyKTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RQdXQz
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1m
dW5jdGlvbiBwb3N0UHV0MygpCi17Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQi
LCAia2V5MiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2tleS1yZXF1aXJlbWVudHMuanMiPjwvc2NyaXB0
PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0LWN1cnNvcnMuaHRtbCBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0LWN1cnNvcnMuaHRtbAppbmRleCAx
MDJhYTBhNDE0MDAzOTFiYTlmMjZkNmIxZjI4NDc1Yzk0NTFhMzY1Li5hMTQ3MWU4NjllYjUzYjZj
MjBmZmI3ZTRjOGUxMDk5NWNlMTJkNzA4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL29iamVjdC1jdXJzb3JzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9vYmplY3QtY3Vyc29ycy5odG1sCkBAIC0xLDk3ICsx
LDEwIEBACi08IURPQ1RZUEUgaHRtbD4KLTwhLS0KLSAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214
ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9v
YmplY3RDdXJzb3JzLmh0bWwKLSAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgotICAgICIgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCi0gICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKLS0tPgogPGh0
bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5q
cyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJU
ZXN0IEluZGV4ZWREQidzIGluZGV4IGN1cnNvcnMiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0g
ICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBh
dGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17
Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOwotICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjbGVhbkRhdGFiYXNl
KCkKLXsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotICAgIGF1dG9JbmNyZW1lbnQg
PSBldmFsQW5kTG9nKCJhdXRvSW5jcmVtZW50ID0gZmFsc2U7Iik7Ci0gICAgb2JqZWN0U3RvcmUg
PSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdhJywgeyBr
ZXlQYXRoOiAnaWQnLCBhdXRvSW5jcmVtZW50OiBhdXRvSW5jcmVtZW50IH0pOyIpOwotICAgIGlu
ZGV4ZXMgPSBbCi0gICAgICAgIHsgbmFtZTogImEiLCBvcHRpb25zOiB7IH0gfSwKLSAgICAgICAg
eyBuYW1lOiAiYiIsIG9wdGlvbnM6IHsgdW5pcXVlOiB0cnVlIH0gfQotICAgIF07Ci0gICAgZm9y
IChqIGluIGluZGV4ZXMpIHsKLSAgICAgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuY3JlYXRl
SW5kZXgoaW5kZXhlc1tqXS5uYW1lLCAnbmFtZScsIGluZGV4ZXNbal0ub3B0aW9ucyk7Iik7Ci0g
ICAgfQotICAgIGRhdGEgPSBldmFsQW5kTG9nKCJkYXRhID0geyBuYW1lOiAnQmVuJywgaWQ6IDEg
fTsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFk
ZChkYXRhKTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RBZGQ7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHBvc3RB
ZGQoKQotewotICAgIG51bUluZGV4ZXMgPSBpbmRleGVzLmxlbmd0aDsKLSAgICBpbmRleGVzRmlu
aXNoZWQgPSAwOwotICAgIGZvciAoaiBpbiBpbmRleGVzKSB7Ci0gICAgICAgIGluZGV4ID0gZXZh
bEFuZExvZygiaW5kZXggPSBvYmplY3RTdG9yZS5pbmRleChpbmRleGVzW2pdLm5hbWUpOyIpOwot
ICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4Lm9wZW5DdXJzb3Io
KTsiKTsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAg
ICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLm5hbWUiLCAiJ0JlbiciKTsK
LSAgICAgICAgICAgIGlmICgrK2luZGV4ZXNGaW5pc2hlZCA9PSBudW1JbmRleGVzKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKGF1dG9JbmNyZW1lbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgc2V0dXBBdXRvSW5jcmVtZW50KCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fQotICAgICAgICB9OwotICAgIH0KLX0KLQotZnVuY3Rpb24gc2V0dXBBdXRvSW5jcmVtZW50KCkK
LXsKLSAgICBhdXRvSW5jcmVtZW50ID0gZXZhbEFuZExvZygiYXV0b0luY3JlbWVudCA9IHRydWU7
Iik7Ci0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdiJywgeyBrZXlQYXRoOiAnaWQnLCBhdXRvSW5jcmVtZW50OiBhdXRvSW5j
cmVtZW50IH0pOyIpOwotICAgIGZvciAoaiBpbiBpbmRleGVzKSB7Ci0gICAgICAgIGV2YWxBbmRM
b2coIm9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KGluZGV4ZXNbal0ubmFtZSwgJ25hbWUnLCBpbmRl
eGVzW2pdLm9wdGlvbnMpOyIpOwotICAgIH0KLSAgICBkYXRhID0gZXZhbEFuZExvZygiZGF0YSA9
IHsgbmFtZTogJ0JlbicgfTsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IG9iamVjdFN0b3JlLmFkZChkYXRhKTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RB
ZGQ7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0K
LQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb2JqZWN0LWN1
cnNvcnMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0LWlkZW50
aXR5Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29iamVjdC1p
ZGVudGl0eS5odG1sCmluZGV4IGU0MTI0OTYxMTg1MDRkODhhNjIwMjEzMGVmYjE3M2NjYjcxOGUy
NDcuLmQxMGJlOWQ3NjQ1NjdlMjVlZGRiZjljMzdjMjhiODNmOTliNTcyOWMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0LWlkZW50aXR5Lmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9vYmplY3QtaWRl
bnRpdHkuaHRtbApAQCAtMSw3NiArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9y
aWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9t
L2luZGV4ZWREQi90ZXN0L3Rlc3Rfb2JqZWN0X2lkZW50aXR5Lmh0bWw/Zm9yY2U9MQotICBsaWNl
bnNlIG9mIG9yaWdpbmFsIHRlc3Q6Ci0gICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KLSAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgotLS0+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxi
b2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCOiBvYmplY3QgaWRl
bnRpdHkiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMo
KTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9u
ID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVk
REIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9w
ZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJk
YiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVx
dWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Jl
YXRlT2JqZWN0U3RvcmVBbmRJbmRleDsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY3JlYXRlT2JqZWN0U3RvcmVBbmRJbmRleCgp
Ci17Ci0gICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGV2ZW50LnRh
cmdldC50cmFuc2FjdGlvbjsiKTsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotICAg
IG9iamVjdFN0b3JlMSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlMSA9IGRiLmNyZWF0ZU9iamVj
dFN0b3JlKCdmb28nKTsiKTsKLSAgICBvYmplY3RTdG9yZTIgPSBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZTIgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnZm9vJyk7Iik7Ci0gICAgc2hvdWxkQmVU
cnVlKCJvYmplY3RTdG9yZTEgPT09IG9iamVjdFN0b3JlMiIpOwotICAgIGluZGV4MSA9IGV2YWxB
bmRMb2coImluZGV4MSA9IG9iamVjdFN0b3JlMS5jcmVhdGVJbmRleCgnYmFyJywgJ2tleScpOyIp
OwotICAgIGluZGV4MiA9IGV2YWxBbmRMb2coImluZGV4MiA9IG9iamVjdFN0b3JlMi5pbmRleCgn
YmFyJyk7Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJpbmRleDEgPT09IGluZGV4MiIpOwotICAgIGV2
YWxBbmRMb2coInRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB0ZXN0SWRlbnRpdHlTb21lTW9yZTsi
KTsKLX0KLQotZnVuY3Rpb24gdGVzdElkZW50aXR5U29tZU1vcmUoKQotewotICAgIHRyYW5zYWN0
aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignZm9vJyk7Iik7
Ci0gICAgb2JqZWN0U3RvcmUzID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUzID0gdHJhbnNhY3Rp
b24ub2JqZWN0U3RvcmUoJ2ZvbycpOyIpOwotICAgIG9iamVjdFN0b3JlNCA9IGV2YWxBbmRMb2co
Im9iamVjdFN0b3JlNCA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdmb28nKTsiKTsKLSAgICBz
aG91bGRCZVRydWUoIm9iamVjdFN0b3JlMyA9PT0gb2JqZWN0U3RvcmU0Iik7Ci0KLSAgICBzaG91
bGRCZUZhbHNlKCJvYmplY3RTdG9yZTMgPT09IG9iamVjdFN0b3JlMSIpOwotICAgIHNob3VsZEJl
RmFsc2UoIm9iamVjdFN0b3JlNCA9PT0gb2JqZWN0U3RvcmUyIik7Ci0KLSAgICBpbmRleDMgPSBl
dmFsQW5kTG9nKCJpbmRleDMgPSBvYmplY3RTdG9yZTMuaW5kZXgoJ2JhcicpOyIpOwotICAgIGlu
ZGV4NCA9IGV2YWxBbmRMb2coImluZGV4NCA9IG9iamVjdFN0b3JlNC5pbmRleCgnYmFyJyk7Iik7
Ci0gICAgc2hvdWxkQmVUcnVlKCJpbmRleDMgPT09IGluZGV4NCIpOwotCi0gICAgc2hvdWxkQmVG
YWxzZSgiaW5kZXgzID09PSBpbmRleDEiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJpbmRleDQgPT09
IGluZGV4MiIpOwotCi0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXRlc3QoKTsKLQotPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL29iamVjdC1pZGVudGl0eS5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9vYmplY3Qtc3RvcmUtaW5saW5lLWF1dG9pbmNyZW1l
bnQta2V5LWFkZGVkLW9uLXB1dC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW96aWxsYS9vYmplY3Qtc3RvcmUtaW5saW5lLWF1dG9pbmNyZW1lbnQta2V5LWFkZGVkLW9uLXB1
dC5odG1sCmluZGV4IDM1ZDlmMzM1N2QxNzc4YzlhYmU4ODVhOGE5OGE4MDNjYTIwYjM5NDkuLjky
MDExYjYzMWQwZjcyYzA5MjViMDQ1ZTBlNjdkOGEwMjU5NWFhMzMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0LXN0b3JlLWlubGluZS1hdXRv
aW5jcmVtZW50LWtleS1hZGRlZC1vbi1wdXQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL29iamVjdC1zdG9yZS1pbmxpbmUtYXV0b2luY3JlbWVudC1rZXkt
YWRkZWQtb24tcHV0Lmh0bWwKQEAgLTEsNzUgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEt
LQotICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291
cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X29iamVjdFN0b3JlX2lubGluZV9hdXRvaW5jcmVt
ZW50X2tleV9hZGRlZF9vbl9wdXQuaHRtbD9mb3JjZT0xCi0gIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwg
dGVzdDoKLSAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgotICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0Pgot
Ci1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgYWRkaW5nIGFuIGF1dG9pbmNyZW1lbnRlZCBr
ZXkgYW5kIHJldHJpZXZpbmcgaXQgc3VjY2Vzc2Z1bGx5Iik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQot
ewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlv
bi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3Mo
KQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0K
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIp
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0dXBPYmplY3RTdG9yZTsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc2V0dXBP
YmplY3RTdG9yZSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLSAgICB0ZXN0
ID0gZXZhbEFuZExvZygidGVzdCA9IHtcbiIgKwotIiAgICAgICAgbmFtZTogJ2lubGluZSBrZXk7
IGtleSBnZW5lcmF0b3InLFxuIiArCi0iICAgICAgICBhdXRvSW5jcmVtZW50OiB0cnVlLFxuIiAr
Ci0iICAgICAgICBzdG9yZWRPYmplY3Q6IHsgbmFtZTogJ0xpbmNvbG4nIH0sXG4iICsKLSIgICAg
ICAgIGtleU5hbWU6ICdpZCcsXG4iICsKLSIgICAgfTsiKTsKLSAgICBvYmplY3RTdG9yZSA9IGV2
YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUodGVzdC5uYW1lLCB7
IGtleVBhdGg6IHRlc3Qua2V5TmFtZSwgYXV0b0luY3JlbWVudDogdGVzdC5hdXRvSW5jcmVtZW50
IH0pOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
YWRkKHRlc3Quc3RvcmVkT2JqZWN0KTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZFN1
Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19
Ci0KLWZ1bmN0aW9uIGFkZFN1Y2Nlc3MoKQotewotICAgIGlkID0gZXZhbEFuZExvZygiaWQgPSBl
dmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gb2JqZWN0U3RvcmUuZ2V0KGlkKTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldFN1
Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19
Ci0KLWZ1bmN0aW9uIGdldFN1Y2Nlc3MoKQotewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQu
cmVzdWx0Lm5hbWUiLCAidGVzdC5zdG9yZWRPYmplY3QubmFtZSIpOwotICAgIHNob3VsZEJlKCJl
dmVudC50YXJnZXQucmVzdWx0LmlkIiwgImlkIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0K
LQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb2JqZWN0LXN0
b3JlLWlubGluZS1hdXRvaW5jcmVtZW50LWtleS1hZGRlZC1vbi1wdXQuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0LXN0b3JlLXJlbW92ZS12YWx1ZXMuaHRtbCBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0LXN0b3JlLXJlbW92
ZS12YWx1ZXMuaHRtbAppbmRleCBjMDkxNGJiZGMxYWU2NGQ0ZmU1NTdmYTMxMzcwZWIzNDAwZDJm
YzYyLi5kOGM0ZTk1N2U2YjQ2NGU3YzZhY2RlNjBlZjIwODZlNDQ1MzNiZTY2IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29iamVjdC1zdG9yZS1yZW1v
dmUtdmFsdWVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9vYmplY3Qtc3RvcmUtcmVtb3ZlLXZhbHVlcy5odG1sCkBAIC0xLDEzMiArMSwxMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5v
cmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3Rfb2JqZWN0U3RvcmVf
cmVtb3ZlX3ZhbHVlcy5odG1sP2ZvcmNlPTEKLSAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0Ogot
ICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCi0g
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIK
LS0tPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2Ny
aXB0aW9uKCJUZXN0IEluZGV4ZWREQjogYWRkcywgZ2V0cywgZGVsZXRlcywgYW5kIHJlLWdldHMg
YSByZWNvcmQgaW4gYSB2YXJpZXR5IG9mIGRpZmZlcmVudCBvYmplY3Qgc3RvcmUgY29uZmlndXJh
dGlvbnMiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMo
KTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9u
ID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVk
REIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9w
ZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJk
YiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIGRhdGEgPSBldmFsQW5kTG9nKCJkYXRh
ID0gW1xuIiArCi0iICAgICAgICB7IG5hbWU6ICdpbmxpbmUga2V5OyBrZXkgZ2VuZXJhdG9yJyxc
biIgKwotIiAgICAgICAgICBhdXRvSW5jcmVtZW50OiB0cnVlLFxuIiArCi0iICAgICAgICAgIHN0
b3JlZE9iamVjdDoge25hbWU6ICdMaW5jb2xuJ30sXG4iICsKLSIgICAgICAgICAga2V5TmFtZTog
J2lkJyxcbiIgKwotIiAgICAgICAgICBrZXlWYWx1ZTogdW5kZWZpbmVkLFxuIiArCi0iICAgICAg
ICB9LFxuIiArCi0iICAgICAgICB7IG5hbWU6ICdpbmxpbmUga2V5OyBubyBrZXkgZ2VuZXJhdG9y
JyxcbiIgKwotIiAgICAgICAgICBhdXRvSW5jcmVtZW50OiBmYWxzZSxcbiIgKwotIiAgICAgICAg
ICBzdG9yZWRPYmplY3Q6IHtpZDogMSwgbmFtZTogJ0xpbmNvbG4nfSxcbiIgKwotIiAgICAgICAg
ICBrZXlOYW1lOiAnaWQnLFxuIiArCi0iICAgICAgICAgIGtleVZhbHVlOiB1bmRlZmluZWQsXG4i
ICsKLSIgICAgICAgIH0sXG4iICsKLSIgICAgICAgIHsgbmFtZTogJ291dCBvZiBsaW5lIGtleTsg
a2V5IGdlbmVyYXRvcicsXG4iICsKLSIgICAgICAgICAgYXV0b0luY3JlbWVudDogdHJ1ZSxcbiIg
KwotIiAgICAgICAgICBzdG9yZWRPYmplY3Q6IHtuYW1lOiAnTGluY29sbid9LFxuIiArCi0iICAg
ICAgICAgIGtleU5hbWU6IHVuZGVmaW5lZCxcbiIgKwotIiAgICAgICAgICBrZXlWYWx1ZTogdW5k
ZWZpbmVkLFxuIiArCi0iICAgICAgICB9LFxuIiArCi0iICAgICAgICB7IG5hbWU6ICdvdXQgb2Yg
bGluZSBrZXk7IG5vIGtleSBnZW5lcmF0b3InLFxuIiArCi0iICAgICAgICAgIGF1dG9JbmNyZW1l
bnQ6IGZhbHNlLFxuIiArCi0iICAgICAgICAgIHN0b3JlZE9iamVjdDoge25hbWU6ICdMaW5jb2xu
J30sXG4iICsKLSIgICAgICAgICAga2V5TmFtZTogdW5kZWZpbmVkLFxuIiArCi0iICAgICAgICAg
IGtleVZhbHVlOiAxLFxuIiArCi0iICAgICAgICB9XG4iICsKLSIgICAgXTsiKTsKLQotICAgIGkg
PSBldmFsQW5kTG9nKCJpID0gMDsiKTsKLSAgICBzZXRWZXJzaW9uKCk7Ci19Ci0KLWZ1bmN0aW9u
IHNldFZlcnNpb24oKQotewotICAgIGlmIChpIDwgZGF0YS5sZW5ndGgpIHsKLSAgICAgICAgdGVz
dCA9IGRhdGFbaV07Ci0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIu
c2V0VmVyc2lvbignMScpIik7Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlT2Jq
ZWN0U3RvcmU7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0KLX0KLQot
ZnVuY3Rpb24gY3JlYXRlT2JqZWN0U3RvcmUoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jl
cyhkYik7Ci0KLSAgICBpZiAodGVzdC5rZXlOYW1lKSB7Ci0gICAgICAgIG9iamVjdFN0b3JlID0g
ZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSh0ZXN0Lm5hbWUs
IHsga2V5UGF0aDogdGVzdC5rZXlOYW1lLCBhdXRvSW5jcmVtZW50OiB0ZXN0LmF1dG9JbmNyZW1l
bnQgfSk7Iik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKHRlc3QubmFtZSwgeyBhdXRvSW5j
cmVtZW50OiB0ZXN0LmF1dG9JbmNyZW1lbnQgfSk7Iik7Ci0gICAgfQotICAgIGlmICh0ZXN0Lmtl
eVZhbHVlKSB7Ci0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0
U3RvcmUuYWRkKHRlc3Quc3RvcmVkT2JqZWN0LCB0ZXN0LmtleVZhbHVlKTsiKTsKLSAgICB9IGVs
c2UgewotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3Jl
LmFkZCh0ZXN0LnN0b3JlZE9iamVjdCk7Iik7Ci0gICAgfQotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZ2V0UmVjb3JkOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotfQotCi1mdW5jdGlvbiBnZXRSZWNvcmQoKQotewotICAgIGlkID0gZXZhbEFuZExvZygi
aWQgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KGlkKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZVJl
Y29yZDsKLX0KLQotZnVuY3Rpb24gZGVsZXRlUmVjb3JkKCkKLXsKLSAgICBzaG91bGRCZSgidGVz
dC5zdG9yZWRPYmplY3QubmFtZSIsICJldmVudC50YXJnZXQucmVzdWx0Lm5hbWUiKTsKLQotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZGVsZXRlKGlkKTsi
KTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldFJlY29yZEFnYWluOwotfQotCi1mdW5jdGlvbiBnZXRSZWNv
cmRBZ2FpbigpCi17Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RT
dG9yZS5nZXQoaWQpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZmluYWxDaGVjazsKLX0KLQotZnVuY3Rp
b24gZmluYWxDaGVjaygpCi17Ci0gICAgc2hvdWxkQmVUcnVlKCJldmVudC50YXJnZXQucmVzdWx0
ID09PSB1bmRlZmluZWQiKTsKLSAgICBpKys7Ci0gICAgc2V0VmVyc2lvbigpOwotfQotCi0KLXRl
c3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL29iamVjdC1zdG9yZS1y
ZW1vdmUtdmFsdWVzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgot
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29iamVj
dHN0b3JlbmFtZXMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEv
b2JqZWN0c3RvcmVuYW1lcy5odG1sCmluZGV4IGVlNThjMjUyZWQ2N2NhZWY2YTI0NTI4MGNkMzk5
MTM2NTc2MGQ4YzcuLjM5NDk0OTQ0Yjg5MWEwM2Y0OWVjMjUxMDk2YWVmN2UxZGZiZDM3NjYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0c3Rv
cmVuYW1lcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEv
b2JqZWN0c3RvcmVuYW1lcy5odG1sCkBAIC0xLDU4ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTwhLS0KLSAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4w
L3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9nbG9iYWxfZGF0YS5odG1sCi0gIGxpY2Vu
c2Ugb2Ygb3JpZ2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgotICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJv
ZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBvYmplY3RTdG9y
ZU5hbWVzIGFycmF5Iik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclBy
ZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNj
cmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
aW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFu
ZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gY2xlYW5EYXRhYmFzZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCi17Ci0gICAgZGVsZXRl
QWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9iamVjdFN0b3JlTmFtZSA9ICJhIjsKLSAgICBv
YmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUob2JqZWN0U3RvcmVOYW1lLCB7IGtleVBhdGg6ICdpZCcsIGF1dG9JbmNyZW1lbnQ6IHRydWUg
fSk7Iik7Ci0KLSAgICBzaG91bGRCZVRydWUoIidvYmplY3RTdG9yZU5hbWVzJyBpbiBkYiIpOwot
ICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIxIik7Ci0gICAgc2hv
dWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMuaXRlbSgwKSIsICJvYmplY3RTdG9yZU5hbWUiKTsK
LSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9vYmplY3RzdG9yZW5hbWVzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgogPC9ib2R5PgogPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL29kZC1yZXN1bHQtb3JkZXIuaHRtbCBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vemlsbGEvb2RkLXJlc3VsdC1vcmRlci5odG1sCmluZGV4IGNlNzE1NjNl
MDA5MWYwYmY5Y2FkNTcwNWM3Y2VjMTM2MTk2MTVmYzguLjc3Nzk3ZGZjNWYyM2UxNGViNDM1ODYz
YjhkZWYzMDI4MTlmZDYzYmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvb2RkLXJlc3VsdC1vcmRlci5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vemlsbGEvb2RkLXJlc3VsdC1vcmRlci5odG1sCkBAIC0xLDEyNyArMSwx
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIu
bW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3Rfb2Rk
X3Jlc3VsdF9vcmRlci5odG1sP3Jhdz0xCi0gIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKLSAg
ICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgotICAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCi0t
LT4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9z
aGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlw
dGlvbigiVGVzdCBJbmRleGVkREI6IHJlcXVlc3QgcmVzdWx0IHBlcnNpc3RzIGluIHNldFRpbWVv
dXQgY2FsbGJhY2siKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJl
Zml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2Ny
aXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGVidWcoIm9wZW5T
dWNjZXNzKCk6Iik7Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IG51bGw7Iik7Ci0gICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IHJlcXVl
c3QucmVzdWx0OyIpOwotICAgICAgICBjaGVja0RhdGFiYXNlVHlwZSgpOwotICAgIH0sIDApOwot
fQotCi1mdW5jdGlvbiBjaGVja0RhdGFiYXNlVHlwZSgpCi17Ci0gICAgZGVidWcoImNoZWNrRGF0
YWJhc2VUeXBlKCk6Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJkYiBpbnN0YW5jZW9mIElEQkRhdGFi
YXNlIik7Ci0gICAgZGIub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXR1cE9iamVjdFN0b3JlOwotICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXR1cE9iamVjdFN0
b3JlKCkKLXsKLSAgICBkZWJ1Zygic2V0dXBPYmplY3RTdG9yZSgpOiIpOwotICAgIGRlbGV0ZUFs
bE9iamVjdFN0b3JlcyhkYik7Ci0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7IGtleVBhdGg6ICdrZXknLCBhdXRv
SW5jcmVtZW50OiB0cnVlIH0pOyIpOwotICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBv
YmplY3RTdG9yZS5jcmVhdGVJbmRleCgnZm9vJywgJ2luZGV4Jyk7Iik7Ci0gICAgZXZhbEFuZExv
ZygiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBhZGRSZWNvcmQ7Iik7Ci19
Ci0KLWZ1bmN0aW9uIGFkZFJlY29yZCgpCi17Ci0gICAgZGVidWcoImFkZFJlY29yZCgpOiIpOwot
ICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlv
bignZm9vJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3RvcmUoJ2ZvbycpOyIp
OwotICAgIGRhdGEgPSBldmFsQW5kTG9nKCJkYXRhID0geyBrZXk6IDUsIGluZGV4OiAxMCB9OyIp
OwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKGRh
dGEpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkU3VjY2VzczsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYWRkU3Vj
Y2VzcygpCi17Ci0gICAgZGVidWcoImFkZFN1Y2Nlc3MoKToiKTsKLSAgICBrZXkgPSBldmFsQW5k
TG9nKCJrZXkgPSBudWxsOyIpOwotICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICBr
ZXkgPSBldmFsQW5kTG9nKCJrZXkgPSByZXF1ZXN0LnJlc3VsdDsiKTsKLSAgICAgIGNoZWNrQWRk
ZWRLZXkoKTsKLSAgICB9LCAwKTsKLX0KLQotZnVuY3Rpb24gY2hlY2tBZGRlZEtleSgpCi17Ci0g
ICAgZGVidWcoImNoZWNrQWRkZWRLZXkoKToiKTsKLSAgICBzaG91bGRCZSgia2V5IiwgImRhdGEu
a2V5Iik7Ci0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLnRy
YW5zYWN0aW9uKCdmb28nKS5vYmplY3RTdG9yZSgnZm9vJyk7Iik7Ci0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5nZXQoZGF0YS5rZXkpOyIpOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZ2V0U3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZ2V0U3VjY2VzcygpCi17Ci0gICAg
ZGVidWcoImdldFN1Y2Nlc3MoKToiKTsKLSAgICByZWNvcmQgPSBldmFsQW5kTG9nKCJyZWNvcmQg
PSBudWxsOyIpOwotICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICByZWNvcmQgPSBl
dmFsQW5kTG9nKCJyZWNvcmQgPSByZXF1ZXN0LnJlc3VsdDsiKTsKLSAgICAgIGNoZWNrUmV0cmll
dmVkS2V5KCk7Ci0gICAgfSwgMCk7Ci19Ci0KLWZ1bmN0aW9uIGNoZWNrUmV0cmlldmVkS2V5KCkK
LXsKLSAgICBkZWJ1ZygiY2hlY2tSZXRyaWV2ZWRLZXkoKToiKTsKLSAgICBzaG91bGRCZSgicmVj
b3JkLmtleSIsICJkYXRhLmtleSIpOwotICAgIHNob3VsZEJlKCJyZWNvcmQuaW5kZXgiLCAiZGF0
YS5pbmRleCIpOwotICAgIGRlbGV0ZVJlY29yZCgpOwotfQotCi1mdW5jdGlvbiBkZWxldGVSZWNv
cmQoKQotewotICAgIGRlYnVnKCJkZWxldGVSZWNvcmQoKToiKTsKLSAgICBvYmplY3RTdG9yZSA9
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIudHJhbnNhY3Rpb24oJ2ZvbycsIElEQlRyYW5z
YWN0aW9uLlJFQURfV1JJVEUpLm9iamVjdFN0b3JlKCdmb28nKTsiKTsKLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmRlbGV0ZShkYXRhLmtleSk7Iik7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVTdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBkZWxldGVTdWNjZXNz
KCkKLXsKLSAgICBkZWJ1ZygiZGVsZXRlU3VjY2VzcygpOiIpOwotICAgIGZpbmlzaEpTVGVzdCgp
OwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL29k
ZC1yZXN1bHQtb3JkZXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29wZW4t
ZGF0YWJhc2UtbnVsbC1uYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL29wZW4tZGF0YWJhc2UtbnVsbC1uYW1lLmh0bWwKaW5kZXggOTA5ODQwZGJjM2M0YTI1
OGNhMjU5NzBiNWZjZTJjMDZlY2Y2OTg0Yy4uOGQyN2U4M2JhNjNmMjJjYmYyMGYyYzBhZDY4YTEy
NjI4MTk2ZTM5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9vcGVuLWRhdGFiYXNlLW51bGwtbmFtZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vemlsbGEvb3Blbi1kYXRhYmFzZS1udWxsLW5hbWUuaHRtbApAQCAtMSw0
MiArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6
Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rl
c3Rfb3Blbl9lbXB0eV9kYi5odG1sP2ZvcmNlPTEKLSAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0
OgotICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
Ci0gICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
ICIKLS0tPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRl
c2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQjogc2hvdWxkIE5PVCB0aHJvdyB3aGVuIG9wZW5pbmcg
YSBkYXRhYmFzZSB3aXRoIGEgbnVsbCBuYW1lIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAg
IHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERh
dGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obnVsbCk7
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nl
c3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
Ci0gICAgc2hvdWxkQmUoImRiLm5hbWUiLCAiJ251bGwnIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7
Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3Bl
bi1kYXRhYmFzZS1udWxsLW5hbWUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8
L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEvcHV0LWdldC12YWx1ZXMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
emlsbGEvcHV0LWdldC12YWx1ZXMuaHRtbAppbmRleCAwY2FmYmEzMmM0YzRlODY2ZWQwZmEyYjhj
ZTE5NzIxYWNiNjlhMTQyLi41ODcwMGY2YmY5YjZkMzBhNmVkMzVjNDgyMWIzOTBmZDQ5NjE3MTM5
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3B1dC1n
ZXQtdmFsdWVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9wdXQtZ2V0LXZhbHVlcy5odG1sCkBAIC0xLDExOSArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIu
MC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfcHV0X2dldF92YWx1ZXMuaHRtbAotICBs
aWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Ci0gICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KLSAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgotLS0+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4K
IDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgcHV0dGlu
ZyBhbmQgZ2V0dGluZyB2YWx1ZXMgaW4gYW4gb2JqZWN0IHN0b3JlIik7Ci0KLWZ1bmN0aW9uIHRl
c3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5s
b2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsK
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRp
b24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1
Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcx
JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFu
RGF0YWJhc2UoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICB0ZXN0
U3RyaW5nID0gZXZhbEFuZExvZygidGVzdFN0cmluZyA9IHsga2V5OiAwLCB2YWx1ZTogJ3Rlc3RT
dHJpbmcnIH07Iik7Ci0gICAgdGVzdEludCA9IGV2YWxBbmRMb2coInRlc3RJbnQgPSB7IGtleTog
MSwgdmFsdWU6IDEwMDIgfTsiKTsKLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVj
dFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ09iamVjdHMnLCB7IGF1dG9JbmNyZW1lbnQ6
IGZhbHNlIH0pOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0
U3RvcmUuYWRkKHRlc3RTdHJpbmcudmFsdWUsIHRlc3RTdHJpbmcua2V5KTsiKTsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IHBvc3RBZGQ7Ci19Ci0KLWZ1bmN0aW9uIHBvc3RBZGQoKQotewotICAgIHNob3VsZEJl
KCJldmVudC50YXJnZXQucmVzdWx0IiwgInRlc3RTdHJpbmcua2V5Iik7Ci0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5nZXQodGVzdFN0cmluZy5rZXkpOyIp
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gcG9zdEdldDsKLX0KLQotZnVuY3Rpb24gcG9zdEdldCgpCi17Ci0g
ICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAidGVzdFN0cmluZy52YWx1ZSIpOwot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKHRlc3RJ
bnQudmFsdWUsIHRlc3RJbnQua2V5KTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RBZGRJbnQ7Ci19
Ci0KLWZ1bmN0aW9uIHBvc3RBZGRJbnQoKQotewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQu
cmVzdWx0IiwgInRlc3RJbnQua2V5Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVl
c3QgPSBvYmplY3RTdG9yZS5nZXQodGVzdEludC5rZXkpOyIpOwotICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9z
dEdldEludDsKLX0KLQotZnVuY3Rpb24gcG9zdEdldEludCgpCi17Ci0gICAgc2hvdWxkQmUoImV2
ZW50LnRhcmdldC5yZXN1bHQiLCAidGVzdEludC52YWx1ZSIpOwotICAgIG9iamVjdFN0b3JlQXV0
b0luY3JlbWVudCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlQXV0b0luY3JlbWVudCA9IGRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCdBdXRvSW5jcmVtZW50ZWQgT2JqZWN0cycsIHsgYXV0b0luY3JlbWVu
dDogdHJ1ZSB9KTsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVj
dFN0b3JlQXV0b0luY3JlbWVudC5hZGQodGVzdFN0cmluZy52YWx1ZSk7Iik7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBwb3N0QWRkQXV0b0luY3JlbWVudDsKLX0KLQotZnVuY3Rpb24gcG9zdEFkZEF1dG9JbmNy
ZW1lbnQoKQotewotICAgIHRlc3RTdHJpbmcua2V5ID0gZXZhbEFuZExvZygidGVzdFN0cmluZy5r
ZXkgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gb2JqZWN0U3RvcmVBdXRvSW5jcmVtZW50LmdldCh0ZXN0U3RyaW5nLmtleSk7Iik7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBwb3N0R2V0QXV0b0luY3JlbWVudDsKLX0KLQotZnVuY3Rpb24gcG9z
dEdldEF1dG9JbmNyZW1lbnQoKQotewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0
IiwgInRlc3RTdHJpbmcudmFsdWUiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IG9iamVjdFN0b3JlQXV0b0luY3JlbWVudC5hZGQodGVzdEludC52YWx1ZSk7Iik7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBwb3N0QWRkSW50QXV0b0luY3JlbWVudDsKLX0KLQotZnVuY3Rpb24gcG9zdEFk
ZEludEF1dG9JbmNyZW1lbnQoKQotewotICAgIHRlc3RJbnQua2V5ID0gZXZhbEFuZExvZygidGVz
dEludC5rZXkgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmVBdXRvSW5jcmVtZW50LmdldCh0ZXN0SW50LmtleSk7
Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0R2V0SW50QXV0b0luY3JlbWVudDsKLX0KLQotZnVuY3Rp
b24gcG9zdEdldEludEF1dG9JbmNyZW1lbnQoKQotewotICAgIHNob3VsZEJlKCJldmVudC50YXJn
ZXQucmVzdWx0IiwgInRlc3RJbnQudmFsdWUiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQot
Ci10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9wdXQtZ2V0LXZh
bHVlcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KLQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZWFkb25seS10cmFu
c2FjdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVh
ZG9ubHktdHJhbnNhY3Rpb25zLmh0bWwKaW5kZXggNDY0MTliYjNkYjNiMzdlOTNmZGZlZDQyNDdh
MGM4YzA0MzE5Y2Y2My4uMjNjOGZjMDY1NWYxZDMxMmFiOWZlNDM5ZjRjNWZjYTNiZWI5NzMyNCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZWFkb25s
eS10cmFuc2FjdGlvbnMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL3JlYWRvbmx5LXRyYW5zYWN0aW9ucy5odG1sCkBAIC0xLDY5ICsxLDEwIEBACi08IURP
Q1RZUEUgaHRtbD4KLTwhLS0KLSAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxhLm9y
Zy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9yZWFkb25seV90cmFu
c2FjdGlvbnMuaHRtbAotICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Ci0gICAgIiBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KLSAgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgotLS0+CiA8aHRtbD4K
IDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48
L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3Qg
SW5kZXhlZERCJ3MgcmVhZG9ubHkgdHJhbnNhY3Rpb25zIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQot
ewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlv
bi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3Mo
KQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0K
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIp
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY2xlYW5EYXRh
YmFzZSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9zTmFtZSA9
ICJ0ZXN0IHN0b3JlIjsKLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3Jl
ID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUob3NOYW1lLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7
Iik7Ci0gICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5vbmNvbXBsZXRlID0gc2V0VmVyc2lvbkNvbXBs
ZXRlOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uQ29tcGxldGUoKQotewotICAgIGV2YWxBbmRF
eHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKFtvc05hbWVdKS5vYmplY3RTdG9yZShvc05h
bWUpLmFkZCh7fSk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlJFQURfT05MWV9FUlIiKTsKLSAg
ICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbihvc05hbWUpLm9iamVjdFN0
b3JlKG9zTmFtZSkuYWRkKHt9KTsiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VS
UiIpOwotICAgIGtleTEgPSBldmFsQW5kTG9nKCJrZXkxID0gMTsiKTsKLSAgICBrZXkyID0gZXZh
bEFuZExvZygia2V5MiA9IDI7Iik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJh
bnNhY3Rpb24oW29zTmFtZV0pLm9iamVjdFN0b3JlKG9zTmFtZSkucHV0KHt9LCBrZXkxKTsiLCAi
SURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RF
eGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKG9zTmFtZSkub2JqZWN0U3RvcmUob3NOYW1lKS5wdXQo
e30sIGtleTIpOyIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5SRUFEX09OTFlfRVJSIik7Ci0gICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oW29zTmFtZV0pLm9iamVjdFN0
b3JlKG9zTmFtZSkucHV0KHt9LCBrZXkxKTsiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9P
TkxZX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKG9z
TmFtZSkub2JqZWN0U3RvcmUob3NOYW1lKS5wdXQoe30sIGtleTEpOyIsICJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5SRUFEX09OTFlfRVJSIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIu
dHJhbnNhY3Rpb24oW29zTmFtZV0pLm9iamVjdFN0b3JlKG9zTmFtZSkuZGVsZXRlKGtleTEpOyIs
ICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5SRUFEX09OTFlfRVJSIik7Ci0gICAgZXZhbEFuZEV4cGVj
dEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24ob3NOYW1lKS5vYmplY3RTdG9yZShvc05hbWUpLmRl
bGV0ZShrZXkyKTsiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUiIpOwotICAg
IGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3JlYWRvbmx5LXRyYW5zYWN0aW9ucy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KIDwvYm9keT4KIDwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW96aWxsYS9yZWFkd3JpdGUtdHJhbnNhY3Rpb25zLmh0bWwgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3JlYWR3cml0ZS10cmFuc2FjdGlvbnMuaHRtbApp
bmRleCBiMGMwNDJjMjFhYzNkODNkNWE4N2NmNTM1NGFjY2EyYTQ5NGQxY2ZkLi43ZmZmNTA4ZTgz
Y2Y5NjEwMmFmYzZmYWFhYTUxNmUxZGE1NDc4ZTU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3JlYWR3cml0ZS10cmFuc2FjdGlvbnMuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3JlYWR3cml0ZS10cmFuc2Fj
dGlvbnMuaHRtbApAQCAtMSwxMjUgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLQotICBv
cmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2Rv
bS9pbmRleGVkREIvdGVzdC90ZXN0X3JlYWRvbmx5X3RyYW5zYWN0aW9ucy5odG1sCi0gIGxpY2Vu
c2Ugb2Ygb3JpZ2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgotICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJv
ZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyByZWFkL3dyaXRl
IHRyYW5zYWN0aW9ucyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQ
cmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVz
Y3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxB
bmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGNsZWFuRGF0YWJhc2U7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQotewotICAgIGRlbGV0
ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBvc05hbWUgPSAidGVzdCBzdG9yZSI7Ci0gICAg
b2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0
b3JlKG9zTmFtZSwgeyBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOyIpOwotICAgIGV2ZW50LnRhcmdl
dC5yZXN1bHQub25jb21wbGV0ZSA9IHNldFZlcnNpb25Db21wbGV0ZTsKLX0KLQotZnVuY3Rpb24g
c2V0VmVyc2lvbkNvbXBsZXRlKCkKLXsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IGRiLnRyYW5zYWN0aW9uKFtvc05hbWVdLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKS5v
YmplY3RTdG9yZShvc05hbWUpLmFkZCh7fSk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBw
b3N0QWRkOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
fQotCi1mdW5jdGlvbiBwb3N0QWRkKCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRy
YW5zYWN0aW9uLm1vZGUiLCAiSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSIpOwotICAgIGtleTEg
PSBldmFsQW5kTG9nKCJrZXkxID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnRyYW5zYWN0aW9uKG9zTmFtZSwgSURCVHJhbnNh
Y3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3RvcmUob3NOYW1lKS5hZGQoe30pOyIpOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gcG9zdEFkZDI7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHBvc3RBZGQyKCkKLXsKLSAgICBzaG91
bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm1vZGUiLCAiSURCVHJhbnNhY3Rpb24uUkVB
RF9XUklURSIpOwotICAgIGtleTIgPSBldmFsQW5kTG9nKCJrZXkyID0gZXZlbnQudGFyZ2V0LnJl
c3VsdDsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnRyYW5zYWN0
aW9uKFtvc05hbWVdLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKS5vYmplY3RTdG9yZShvc05h
bWUpLnB1dCh7fSwga2V5MSk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0UHV0Owot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5j
dGlvbiBwb3N0UHV0KCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9u
Lm1vZGUiLCAiSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSIpOwotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gZGIudHJhbnNhY3Rpb24ob3NOYW1lLCBJREJUcmFuc2FjdGlvbi5S
RUFEX1dSSVRFKS5vYmplY3RTdG9yZShvc05hbWUpLnB1dCh7fSwga2V5Mik7Iik7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBwb3N0UHV0MjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gcG9zdFB1dDIoKQotewotICAgIHNob3Vs
ZEJlKCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24ubW9kZSIsICJJREJUcmFuc2FjdGlvbi5SRUFE
X1dSSVRFIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi50cmFuc2Fj
dGlvbihbb3NOYW1lXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3RvcmUob3NO
YW1lKS5wdXQoe30sIGtleTEpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdFB1dDM7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1
bmN0aW9uIHBvc3RQdXQzKCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0
aW9uLm1vZGUiLCAiSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSIpOwotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIudHJhbnNhY3Rpb24ob3NOYW1lLCBJREJUcmFuc2FjdGlv
bi5SRUFEX1dSSVRFKS5vYmplY3RTdG9yZShvc05hbWUpLnB1dCh7fSwga2V5MSk7Iik7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0UHV0NDsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gcG9zdFB1dDQoKQotewotICAgIHNo
b3VsZEJlKCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24ubW9kZSIsICJJREJUcmFuc2FjdGlvbi5S
RUFEX1dSSVRFIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi50cmFu
c2FjdGlvbihbb3NOYW1lXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3RvcmUo
b3NOYW1lKS5kZWxldGUoa2V5MSk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0RGVs
ZXRlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQot
Ci1mdW5jdGlvbiBwb3N0RGVsZXRlKCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRy
YW5zYWN0aW9uLm1vZGUiLCAiSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSIpOwotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIudHJhbnNhY3Rpb24ob3NOYW1lLCBJREJUcmFu
c2FjdGlvbi5SRUFEX1dSSVRFKS5vYmplY3RTdG9yZShvc05hbWUpLmRlbGV0ZShrZXkyKTsiKTsK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3REZWxldGUyOwotICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBwb3N0RGVsZXRlMigp
Ci17Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2RlIiwgIklEQlRy
YW5zYWN0aW9uLlJFQURfV1JJVEUiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0
KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWFkd3JpdGUtdHJhbnNh
Y3Rpb25zLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgotCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3JlYWR5U3RhdGUu
aHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVhZHlTdGF0ZS5o
dG1sCmluZGV4IDhkMTBhNGJhZGVkOTQ5OWRjMzNmMzI3M2VhYjBkNzZjNTdiYzRlZTYuLjVjMjJh
M2ZlMzRjYTJjYmM5ZDBiMmRhM2Q0NGExNzlhOWIxYTYxMDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVhZHlTdGF0ZS5odG1sCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVhZHlTdGF0ZS5odG1sCkBAIC0xLDgx
ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KLTwhLS0KLSAgb3JpZ2luYWwgdGVzdDogaHR0cDov
L214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVz
dF9yZXF1ZXN0X3JlYWR5U3RhdGUuaHRtbD9mb3JjZT0xCi0gIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwg
dGVzdDoKLSAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgotICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0Pgot
Ci1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgcmVhZHlTdGF0ZSBwcm9wZXJ0eSBkdXJpbmcg
ZGlmZmVyZW50IG9wZXJhdGlvbnMiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3Zl
VmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwot
ICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICBzaG91bGRC
ZSgicmVxdWVzdC5yZWFkeVN0YXRlIiwgIklEQlJlcXVlc3QuTE9BRElORyIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBk
ZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKLSAgICBzaG91bGRCZSgicmVxdWVzdC5yZWFkeVN0YXRl
IiwgIklEQlJlcXVlc3QuRE9ORSIpOwotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50
YXJnZXQucmVzdWx0Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5z
ZXRWZXJzaW9uKCcxJykiKTsKLSAgICBzaG91bGRCZSgicmVxdWVzdC5yZWFkeVN0YXRlIiwgIklE
QlJlcXVlc3QuTE9BRElORyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0dXBPYmplY3RT
dG9yZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0K
LQotZnVuY3Rpb24gc2V0dXBPYmplY3RTdG9yZSgpCi17Ci0gICAgZGVidWcoInNldHVwT2JqZWN0
U3RvcmUoKToiKTsKLSAgICBzaG91bGRCZSgicmVxdWVzdC5yZWFkeVN0YXRlIiwgIklEQlJlcXVl
c3QuRE9ORSIpOwotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBvYmplY3RT
dG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2Zv
bycpOyIpOwotICAgIGtleSA9IGV2YWxBbmRMb2coImtleSA9IDEwOyIpOwotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKHt9LCBrZXkpOyIpOwotICAg
IHNob3VsZEJlKCJyZXF1ZXN0LnJlYWR5U3RhdGUiLCAiSURCUmVxdWVzdC5MT0FESU5HIik7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRSZWNvcmQ7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGdldFJlY29yZCgpCi17Ci0g
ICAgZGVidWcoImdldFJlY29yZCgpOiIpOwotICAgIHNob3VsZEJlKCJyZXF1ZXN0LnJlYWR5U3Rh
dGUiLCAiSURCUmVxdWVzdC5ET05FIik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1
bHQiLCAia2V5Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RT
dG9yZS5nZXQoa2V5KTsiKTsKLSAgICBzaG91bGRCZSgicmVxdWVzdC5yZWFkeVN0YXRlIiwgIklE
QlJlcXVlc3QuTE9BRElORyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZmluYWxDaGVjazsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVu
Y3Rpb24gZmluYWxDaGVjaygpCi17Ci0gICAgZGVidWcoImZpbmFsQ2hlY2soKToiKTsKLSAgICBz
aG91bGRCZSgicmVxdWVzdC5yZWFkeVN0YXRlIiwgIklEQlJlcXVlc3QuRE9ORSIpOwotICAgIHNo
b3VsZEJlRmFsc2UoImV2ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCIpOwotICAgIGZpbmlzaEpT
VGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3JlYWR5U3RhdGUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+
Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVt
b3ZlLWluZGV4Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jl
bW92ZS1pbmRleC5odG1sCmluZGV4IGRhNTUzOTYwZjczOGM5MGE1OGQzMTQ4OGViYWZiZjg4ZGQ4
NGYzMDQuLjBlMjBhNzFkYjAzZjk5NTI0MTU2MTBmNmRiOTY4OWZhZGVjMjFmYzggMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVtb3ZlLWluZGV4Lmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZW1vdmUtaW5k
ZXguaHRtbApAQCAtMSw2NiArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9yaWdp
bmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2lu
ZGV4ZWREQi90ZXN0L3Rlc3RfcmVtb3ZlX2luZGV4Lmh0bWwKLSAgbGljZW5zZSBvZiBvcmlnaW5h
bCB0ZXN0OgotICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCi0gICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvICIKLS0tPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+
Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGNyZWF0aW5nIGFuZCBkZWxldGluZyBp
bmRleGVzIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVz
KCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlv
biA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhl
ZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBv
cGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygi
ZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
Y3JlYXRlQW5kRGVsZXRlSW5kZXg7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUFuZERlbGV0ZUluZGV4KCkKLXsKLSAg
ICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmVOYW1lID0gInRl
c3Qgc3RvcmUiOwotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBk
Yi5jcmVhdGVPYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUsIHsga2V5UGF0aDogJ2ZvbycgfSk7
Iik7Ci0gICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjEiKTsKLSAg
ICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5pdGVtKDApIiwgIm9iamVjdFN0b3JlTmFt
ZSIpOwotICAgIHNob3VsZEJlKCJvYmplY3RTdG9yZS5pbmRleE5hbWVzLmxlbmd0aCIsICIwIik7
Ci0KLSAgICBpbmRleE5hbWUgPSAiTXkgVGVzdCBJbmRleCI7Ci0gICAgaW5kZXggPSBldmFsQW5k
TG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KGluZGV4TmFtZSwgJ2ZvbycpOyIp
OwotICAgIHNob3VsZEJlKCJvYmplY3RTdG9yZS5pbmRleE5hbWVzLmxlbmd0aCIsICIxIik7Ci0g
ICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLmluZGV4TmFtZXMuaXRlbSgwKSIsICJpbmRleE5hbWUi
KTsKLQotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmRlbGV0ZUluZGV4KGluZGV4TmFtZSk7
Iik7Ci0gICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLmluZGV4TmFtZXMubGVuZ3RoIiwgIjAiKTsK
LQotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3JlbW92ZS1pbmRleC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
IDwvYm9keT4KIDwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9yZW1vdmUtb2JqZWN0c3RvcmUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vemlsbGEvcmVtb3ZlLW9iamVjdHN0b3JlLmh0bWwKaW5kZXggZjA2NjFj
NTQ3NWFiMTYxNGYwNTg4OWExMzY0MzYxYjY4Yjg5MmZkZC4uOTJiNzY1MTRiYzIyOGYwYmY3YWU3
ZmJjNWUxYTgzMTYxZjA0NDk4MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9yZW1vdmUtb2JqZWN0c3RvcmUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3JlbW92ZS1vYmplY3RzdG9yZS5odG1sCkBAIC0xLDEy
MCArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6
Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rl
c3RfcmVtb3ZlX29iamVjdFN0b3JlLmh0bWw/Zm9yY2U9MQotICBsaWNlbnNlIG9mIG9yaWdpbmFs
IHRlc3Q6Ci0gICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KLSAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8gIgotLS0+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4K
LQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGRlbGV0aW5nIGFuIG9iamVjdCBzdG9yZSIp
OwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0g
ICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkg
VGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVu
KG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nl
c3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0K
LWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxl
bmd0aCIsICIwIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNl
dFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5kUG9wdWxh
dGVPYmplY3RTdG9yZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLX0KLQotZnVuY3Rpb24gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSgpCi17Ci0g
ICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9iamVjdFN0b3JlTmFtZSA9IGV2
YWxBbmRMb2coIm9iamVjdFN0b3JlTmFtZSA9ICdPYmplY3RzJzsiKTsKLSAgICBvYmplY3RTdG9y
ZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0
U3RvcmVOYW1lLCB7IGtleVBhdGg6ICdmb28nIH0pOyIpOwotCi0gICAgYWRkZWRDb3VudCA9IGV2
YWxBbmRMb2coImFkZGVkQ291bnQgPSAwOyIpOwotICAgIGZvciAoaSA9IDA7IGkgPCAxMDA7IGkr
KykgewotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3Jl
LmFkZCh7Zm9vOiBpfSk7Iik7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50
KSB7Ci0gICAgICAgICAgICBpZiAoKythZGRlZENvdW50ID09IDEwMCkgewotICAgICAgICAgICAg
ICAgIGNoZWNrT2JqZWN0U3RvcmUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0K
LX0KLQotZnVuY3Rpb24gY2hlY2tPYmplY3RTdG9yZSgpCi17Ci0gICAgc2hvdWxkQmUoImRiLm9i
amVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjEiKTsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3Rv
cmVOYW1lcy5pdGVtKDApIiwgIm9iamVjdFN0b3JlTmFtZSIpOwotCi0gICAgcmVxdWVzdCA9IGRi
LnNldFZlcnNpb24oJzInKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RTZXRWZXJzaW9uMjsKLX0KLQot
ZnVuY3Rpb24gcG9zdFNldFZlcnNpb24yKCkKLXsKLSAgICBldmFsQW5kTG9nKCJkYi5kZWxldGVP
YmplY3RTdG9yZShvYmplY3RTdG9yZS5uYW1lKTsiKTsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0
U3RvcmVOYW1lcy5sZW5ndGgiLCAiMCIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSwgeyBr
ZXlQYXRoOiAnZm9vJyB9KTsiKTsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5s
ZW5ndGgiLCAiMSIpOwotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLml0ZW0oMCki
LCAib2JqZWN0U3RvcmVOYW1lIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KGV2ZW50KSB7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIm51bGwi
KTsKLSAgICAgICAgZGVsZXRlU2Vjb25kT2JqZWN0U3RvcmUoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0
aW9uIGRlbGV0ZVNlY29uZE9iamVjdFN0b3JlKCkKLXsKLSAgICBldmFsQW5kTG9nKCJkYi5kZWxl
dGVPYmplY3RTdG9yZShvYmplY3RTdG9yZS5uYW1lKTsiKTsKLSAgICBzaG91bGRCZSgiZGIub2Jq
ZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMCIpOwotICAgIHNldFZlcnNpb24zKCk7Ci19Ci0KLWZ1
bmN0aW9uIHNldFZlcnNpb24zKCkKLXsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IGRiLnNldFZlcnNpb24oJzMnKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RTZXRWZXJzaW9u
MzsKLX0KLQotZnVuY3Rpb24gcG9zdFNldFZlcnNpb24zKCkKLXsKLSAgICBvYmplY3RTdG9yZSA9
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3Rv
cmVOYW1lLCB7IGtleVBhdGg6ICdmb28nIH0pOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKHtmb286J2Jhcid9KTsiKTsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGRlbGV0ZVRoaXJkT2JqZWN0U3RvcmU7Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZVRoaXJkT2Jq
ZWN0U3RvcmUoKQotewotICAgIGV2YWxBbmRMb2coImRiLmRlbGV0ZU9iamVjdFN0b3JlKG9iamVj
dFN0b3JlTmFtZSk7Iik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVtb3ZlLW9iamVjdHN0b3JlLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9hZGQtdHdpY2UtZmFp
bHVyZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2Vz
L2FkZC10d2ljZS1mYWlsdXJlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmM2E5ZTRhNDkxZmI5ZWY0ZTNiYmYw
OTk2YTNiYmE5ZDRjNTk0YWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9hZGQtdHdpY2UtZmFpbHVyZS5qcwpAQCAtMCww
ICsxLDU5IEBACisvLyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9t
b3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9hZGRfdHdpY2VfZmFpbHVy
ZS5odG1sCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisvLyAiIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorLy8gICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKworaWYgKHRoaXMuaW1wb3J0U2Ny
aXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rl
c2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBiZWhhdmlvciBhZGRpbmcgdGhlIHNhbWUgcHJvcGVy
dHkgdHdpY2UiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4
ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0
aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRl
eGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9n
KCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBjbGVhbkRhdGFiYXNlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKK3sKKyAgICBkZWxldGVBbGxP
YmplY3RTdG9yZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nKTsiKTsKKyAgICBrZXkgPSBldmFsQW5k
TG9nKCJrZXkgPSAxMCIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2Jq
ZWN0U3RvcmUuYWRkKHt9LCBrZXkpOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkRmly
c3RTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworfQorCitmdW5jdGlvbiBhZGRGaXJzdFN1Y2Nlc3MoKQoreworICAgIHNob3VsZEJlKCJyZXF1
ZXN0LnJlc3VsdCIsICJrZXkiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IG9iamVjdFN0b3JlLmFkZCh7fSwga2V5KTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVu
ZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbmVycm9yID0gYWRkU2Vjb25k
RXhwZWN0ZWRFcnJvcjsKK30KKworZnVuY3Rpb24gYWRkU2Vjb25kRXhwZWN0ZWRFcnJvcigpCit7
CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5lcnJvckNvZGUiLCAiSURCRGF0YWJhc2VFeGNl
cHRpb24uQ09OU1RSQUlOVF9FUlIiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgp
OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2F1dG9pbmNyZW1lbnQtaW5kZXhlcy5q
cyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2F1dG9p
bmNyZW1lbnQtaW5kZXhlcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MDczOTI5MDRhYzgwZmI2ZGZkNzg2N2I2
NWIyNjlkMzYxNmM0N2U2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvYXV0b2luY3JlbWVudC1pbmRleGVzLmpzCkBAIC0w
LDAgKzEsODkgQEAKKy8vIG9yaWdpbmFsIHRlc3Q6CisvLyBodHRwOi8vbXhyLm1vemlsbGEub3Jn
L21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2F1dG9JbmNyZW1lbnRf
aW5kZXhlcy5odG1sP2ZvcmNlPTEKKy8vIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisvLyAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorCitpZiAo
dGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQu
anMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGluZGV4ZXMgYWdhaW5zdCBh
dXRvaW5jcmVtZW50aW5nIGtleXMiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3Zl
VmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwor
ICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIg
PSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBzZXR1cE9iamVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXR1cE9iamVjdFN0b3JlKCkK
K3sKKyAgICB0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgZGVsZXRlQWxsT2JqZWN0
U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUg
PSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJywgeyBrZXlQYXRoOiAnaWQnLCBhdXRvSW5jcmVt
ZW50OiB0cnVlIH0pOyIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmNyZWF0ZUluZGV4
KCdmaXJzdCcsICdmaXJzdCcpOyIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmNyZWF0
ZUluZGV4KCdzZWNvbmQnLCAnc2Vjb25kJyk7Iik7CisgICAgZXZhbEFuZExvZygib2JqZWN0U3Rv
cmUuY3JlYXRlSW5kZXgoJ3RoaXJkJywgJ3RoaXJkJyk7Iik7CisgICAgZGF0YSA9IGV2YWxBbmRM
b2coImRhdGEgPSB7IGZpcnN0OiAnZm9vJywgc2Vjb25kOiAnZm9vJywgdGhpcmQ6ICdmb28nIH07
Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQo
ZGF0YSk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXR1cEluZGV4ZXM7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNl
dHVwSW5kZXhlcygpCit7CisgICAga2V5ID0gZXZhbEFuZExvZygia2V5ID0gZXZlbnQudGFyZ2V0
LnJlc3VsdDsiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJrZXkgPT0gbnVsbCIpOworICAgIHRyYW5z
Lm9uY29tcGxldGUgPSBzZXRWZXJzaW9uQ29tcGxldGU7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNp
b25Db21wbGV0ZSgpCit7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9y
ZSA9IGRiLnRyYW5zYWN0aW9uKCdmb28nKS5vYmplY3RTdG9yZSgnZm9vJyk7Iik7CisgICAgZmly
c3QgPSBldmFsQW5kTG9nKCJmaXJzdCA9IG9iamVjdFN0b3JlLmluZGV4KCdmaXJzdCcpOyIpOwor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZmlyc3QuZ2V0KCdmb28nKTsiKTsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNoZWNrRmlyc3RJbmRleEFuZFByZXBhcmVTZWNvbmQ7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIGNoZWNrRmlyc3RJbmRleEFuZFByZXBhcmVTZWNvbmQoKQoreworICAgIHNob3VsZEJl
KCJldmVudC50YXJnZXQucmVzdWx0LmlkIiwgImtleSIpOworICAgIHNlY29uZCA9IGV2YWxBbmRM
b2coInNlY29uZCA9IG9iamVjdFN0b3JlLmluZGV4KCdzZWNvbmQnKTsiKTsKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHNlY29uZC5nZXQoJ2ZvbycpOyIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gY2hlY2tTZWNvbmRJbmRleEFuZFByZXBhcmVUaGlyZDsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2hl
Y2tTZWNvbmRJbmRleEFuZFByZXBhcmVUaGlyZCgpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRh
cmdldC5yZXN1bHQuaWQiLCAia2V5Iik7CisgICAgdGhpcmQgPSBldmFsQW5kTG9nKCJ0aGlyZCA9
IG9iamVjdFN0b3JlLmluZGV4KCd0aGlyZCcpOyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gdGhpcmQuZ2V0KCdmb28nKTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGNoZWNrVGhpcmRJbmRleDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gY2hlY2tUaGlyZEluZGV4KCkKK3sKKyAgICBzaG91bGRC
ZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5pZCIsICJrZXkiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsK
K30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2JhZC1rZXlwYXRo
LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvYmFk
LWtleXBhdGguanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzkzM2NlMWJmYjE2NDc1NWVkOWUwMjA2MTlmZTg4YWIy
NGI1YTAzNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vemlsbGEvcmVzb3VyY2VzL2JhZC1rZXlwYXRoLmpzCkBAIC0wLDAgKzEsNTAgQEAKKy8vIG9y
aWdpbmFsIHRlc3Q6CisvLyBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNl
L2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2JhZF9rZXlwYXRoLmh0bWwKKy8vIGxpY2Vuc2Ugb2Yg
b3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2Ny
aXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBp
bXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhl
ZERCIGFkZGluZyBwcm9wZXJ0eSB3aXRoIGludmFsaWQga2V5cGF0aCIpOworCitmdW5jdGlvbiB0
ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYu
bG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0
aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5T
dWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9u
KCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNs
ZWFuRGF0YWJhc2UoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBv
YmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ2ZvbycsIHsga2V5UGF0aDogJ2tleVBhdGgnIH0pOyIpOworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKHsga2V5UGF0aDogJ2ZvbycgfSk7Iik7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRGaXJzdFN1Y2Nlc3M7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGFkZEZpcnN0
U3VjY2VzcygpCit7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigicmVxdWVzdCA9IG9iamVj
dFN0b3JlLmFkZCh7fSk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisgICAg
ZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291
cmNlcy9jbGVhci5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVz
b3VyY2VzL2NsZWFyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhZGEyMmUzZjI5MTc3OTIxMGYwMWEwZGU4NTk5
YjQ5NmY5YTI4ODYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jbGVhci5qcwpAQCAtMCwwICsxLDYwIEBACisvLyBvcmln
aW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9k
b20vaW5kZXhlZERCL3Rlc3QvdGVzdF9jbGVhci5odG1sCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFs
IHRlc3Q6CisvLyAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorLy8gICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvICIKKworaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4u
Ly4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2Ny
aXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGNs
ZWFyaW5nIGFuIG9iamVjdCBzdG9yZSIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1v
dmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7
CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBk
YiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQorewor
ICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxB
bmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycsIHsgYXV0b0lu
Y3JlbWVudDogdHJ1ZSB9KTsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IG9iamVjdFN0b3JlLmFkZCh7fSk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7CisgICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5vbmNvbXBsZXRlID0gY2xl
YXI7Cit9CisKK2Z1bmN0aW9uIGNsZWFyKCkKK3sKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJkYi50cmFuc2FjdGlvbignZm9vJykub2JqZWN0U3RvcmUoJ2ZvbycpLmNsZWFyKCk7IiwgIklE
QkRhdGFiYXNlRXhjZXB0aW9uLlJFQURfT05MWV9FUlIiKTsKKyAgICBldmFsQW5kTG9nKCJkYi50
cmFuc2FjdGlvbignZm9vJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3RvcmUo
J2ZvbycpLmNsZWFyKCk7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBk
Yi50cmFuc2FjdGlvbignZm9vJykub2JqZWN0U3RvcmUoJ2ZvbycpLm9wZW5DdXJzb3IoKTsiKTsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFyZVdlQ2xlYXJZZXQ7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGFyZVdlQ2xlYXJZ
ZXQoKQoreworICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IHJlcXVlc3QucmVzdWx0
OyIpOworICAgIHNob3VsZEJlKCJjdXJzb3IiLCAibnVsbCIpOworICAgIGZpbmlzaEpTVGVzdCgp
OworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY3JlYXRlLWlu
ZGV4LXVuaXF1ZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVz
b3VyY2VzL2NyZWF0ZS1pbmRleC11bmlxdWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTE1ZWM3NDIxYmQyMjM4
Njk4MGRlOWE0NTdiNTVkMDkzODI0OGVjYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2NyZWF0ZS1pbmRleC11bmlxdWUu
anMKQEAgLTAsMCArMSw2MSBAQAorLy8gb3JpZ2luYWwgdGVzdDoKKy8vIGh0dHA6Ly9teHIubW96
aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfY3JlYXRl
X2luZGV4Lmh0bWwKKy8vIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBv
cnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30K
KworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgY3JlYXRpbmcgdW5pcXVlIGluZGV4IGFu
ZCB1cGRhdGluZyBpbmRleE5hbWVzIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92
ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsK
KyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRi
ID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gY3JlYXRlQW5kVmVyaWZ5SW5kZXg7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUFuZFZlcmlm
eUluZGV4KCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgb2JqZWN0
U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdh
JywgeyBrZXlQYXRoOiAnaWQnLCBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOyIpOworCisgICAgaW5k
ZXhOYW1lID0gIjEiOworICAgIGluZGV4S2V5UGF0aCA9ICJ1bmlxdWVfdmFsdWUiOworICAgIGlu
ZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBvYmplY3RTdG9yZS5jcmVhdGVJbmRleChpbmRleE5h
bWUsIGluZGV4S2V5UGF0aCwgeyB1bmlxdWU6IHRydWUgfSk7IiwgIklEQkRhdGFiYXNlRXhjZXB0
aW9uLkNPTlNUUkFJTlRfRVJSIik7CisgICAgc2hvdWxkQmUoImluZGV4Lm5hbWUiLCAiaW5kZXhO
YW1lIik7CisgICAgc2hvdWxkQmUoImluZGV4LmtleVBhdGgiLCAiaW5kZXhLZXlQYXRoIik7Cisg
ICAgc2hvdWxkQmUoImluZGV4LnVuaXF1ZSIsICJ0cnVlIik7CisgICAgc2hvdWxkQmUoIm9iamVj
dFN0b3JlLmluZGV4TmFtZXMubGVuZ3RoIiwgIjEiKTsKKworICAgIGZvdW5kTmV3bHlDcmVhdGVk
SW5kZXggPSBmYWxzZTsKKyAgICBmb3IgKHZhciBrID0gMDsgayA8IG9iamVjdFN0b3JlLmluZGV4
TmFtZXMubGVuZ3RoOyBrKyspIHsKKyAgICAgICAgaWYgKG9iamVjdFN0b3JlLmluZGV4TmFtZXMu
aXRlbShrKSA9PSBpbmRleE5hbWUpIHsKKyAgICAgICAgICAgIGZvdW5kTmV3bHlDcmVhdGVkSW5k
ZXggPSB0cnVlOworICAgICAgICB9CisgICAgfQorICAgIHNob3VsZEJlVHJ1ZSgiZm91bmROZXds
eUNyZWF0ZWRJbmRleCIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24u
ZGIiLCAiZGIiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLnJlYWR5
U3RhdGUiLCAiSURCVHJhbnNhY3Rpb24uTE9BRElORyIpOworICAgIHNob3VsZEJlKCJldmVudC50
YXJnZXQudHJhbnNhY3Rpb24ubW9kZSIsICJJREJUcmFuc2FjdGlvbi5WRVJTSU9OX0NIQU5HRSIp
OworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9yZXNvdXJjZXMvY3JlYXRlLWluZGV4LXdpdGgtaW50ZWdlci1rZXlzLmpzIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY3JlYXRlLWluZGV4LXdpdGgt
aW50ZWdlci1rZXlzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2ZGY5NGE0NTMyYjExOWJlYmQ1ODBjZWE0N2Rm
MzFiMjM5ZGNhZGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jcmVhdGUtaW5kZXgtd2l0aC1pbnRlZ2VyLWtleXMuanMK
QEAgLTAsMCArMSw1NiBAQAorLy8gb3JpZ2luYWwgdGVzdDoKKy8vIGh0dHA6Ly9teHIubW96aWxs
YS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfY3JlYXRlX2lu
ZGV4X3dpdGhfaW50ZWdlcl9rZXlzLmh0bWw/Zm9yY2U9MQorLy8gbGljZW5zZSBvZiBvcmlnaW5h
bCB0ZXN0OgorLy8gIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKy8vICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLyAiCisKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcu
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNj
cmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBj
cmVhdGluZyBpbmRleCB3aXRoIGludGVnZXIga2V5cyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sK
KyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24u
cGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkK
K3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldHVwT2JqZWN0U3RvcmVBbmRDcmVhdGVJbmRleDsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gc2V0dXBPYmplY3RTdG9yZUFuZENyZWF0ZUluZGV4KCkKK3sKKyAgICBkZWxldGVBbGxP
YmplY3RTdG9yZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7IGtleVBhdGg6ICdpZCcgfSk7Iik7
CisgICAgZGF0YSA9IGV2YWxBbmRMb2coImRhdGEgPSB7IGlkOiAxNiwgbnVtOiA0MiB9OyIpOwor
ICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZChkYXRhKTsiKTsKKyAgICBpbmRleCA9IGV2
YWxBbmRMb2coImluZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ2ZvbycsICdudW0nKTsi
KTsKKyAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJyZXN1bHQgPSBpbmRleC5vcGVuS2V5Q3Vyc29y
KCk7Iik7CisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9IHZlcmlmeUtleUN1cnNvcjsKKyAgICByZXN1
bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiB2ZXJp
ZnlLZXlDdXJzb3IoKQoreworICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50
LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiY3Vyc29yID09IG51bGwiKTsK
KyAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJkYXRhLm51bSIpOworICAgIHNob3VsZEJlKCJj
dXJzb3IucHJpbWFyeUtleSIsICJkYXRhLmlkIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisK
K3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jcmVhdGUtb2JqZWN0c3Rv
cmUtYmFzaWNzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNv
dXJjZXMvY3JlYXRlLW9iamVjdHN0b3JlLWJhc2ljcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZjFjYzZiMzhh
OWMxZTQ1MzAzMjdiOTM1MWVmMmVhMWQyZTBiMGRkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY3JlYXRlLW9iamVjdHN0
b3JlLWJhc2ljcy5qcwpAQCAtMCwwICsxLDY2IEBACisvLyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0
cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3Qv
dGVzdF9jcmVhdGVfb2JqZWN0U3RvcmUuaHRtbAorLy8gbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0
OgorLy8gIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
Ky8vICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAi
CisKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMo
J3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBjcmVhdGlu
ZyBvYmplY3Qgc3RvcmUgYW5kIHVwZGF0aW5nIHByb3BlcnRpZXMiKTsKKworZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxv
Y2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlv
bikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3Vj
Y2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbign
MScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVh
bkRhdGFiYXNlKCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgb2Jq
ZWN0U3RvcmVJbmZvID0gWworICAgICAgICB7IG5hbWU6ICIxIiwgb3B0aW9uczogeyBhdXRvSW5j
cmVtZW50OiB0cnVlIH0gfSwKKyAgICAgICAgeyBuYW1lOiAiMiIsIG9wdGlvbnM6IHsgYXV0b0lu
Y3JlbWVudDogZmFsc2UgfSB9LAorICAgICAgICB7IG5hbWU6ICIzIiwgb3B0aW9uczogeyBrZXlQ
YXRoOiAiIiB9IH0sCisgICAgICAgIHsgbmFtZTogIjQiLCBvcHRpb25zOiB7IGtleVBhdGg6ICIi
LCBhdXRvSW5jcmVtZW50OiB0cnVlIH0gfSwKKyAgICAgICAgeyBuYW1lOiAiNSIsIG9wdGlvbnM6
IHsga2V5UGF0aDogIiIsIGF1dG9JbmNyZW1lbnQ6IGZhbHNlIH0gfSwKKyAgICAgICAgeyBuYW1l
OiAiNiIsIG9wdGlvbnM6IHsga2V5UGF0aDogImZvbyIgfSB9LAorICAgICAgICB7IG5hbWU6ICI3
Iiwgb3B0aW9uczogeyBrZXlQYXRoOiAiZm9vIiwgYXV0b0luY3JlbWVudDogZmFsc2UgfSB9LAor
ICAgICAgICB7IG5hbWU6ICI4Iiwgb3B0aW9uczogeyBrZXlQYXRoOiAiZm9vIiwgYXV0b0luY3Jl
bWVudDogdHJ1ZSB9IH0KKyAgICBdOworCisgICAgZm9yICh2YXIgaW5kZXggaW4gb2JqZWN0U3Rv
cmVJbmZvKSB7CisgICAgICAgIGluZGV4ID0gcGFyc2VJbnQoaW5kZXgpOworICAgICAgICBpbmZv
ID0gb2JqZWN0U3RvcmVJbmZvW2luZGV4XTsKKyAgICAgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5k
TG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKGluZm8ubmFtZSwgaW5mby5v
cHRpb25zKTsiKTsKKyAgICAgICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLm5hbWUiLCAiaW5mby5u
YW1lIik7CisgICAgICAgIGlmIChpbmZvLm9wdGlvbnMgJiYgaW5mby5vcHRpb25zLmtleVBhdGgp
IHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJvYmplY3RTdG9yZS5rZXlQYXRoIiwgImluZm8ub3B0
aW9ucy5rZXlQYXRoIik7CisgICAgICAgIH0KKyAgICAgICAgc2hvdWxkQmUoIm9iamVjdFN0b3Jl
LmluZGV4TmFtZXMubGVuZ3RoIiwgIjAiKTsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdl
dC50cmFuc2FjdGlvbi5kYiIsICJkYiIpOworICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0
LnRyYW5zYWN0aW9uLnJlYWR5U3RhdGUiLCAiSURCVHJhbnNhY3Rpb24uTE9BRElORyIpOworICAg
ICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm1vZGUiLCAiSURCVHJhbnNh
Y3Rpb24uVkVSU0lPTl9DSEFOR0UiKTsKKyAgICB9CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30K
KwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2NyZWF0ZS1vYmplY3Rz
dG9yZS1udWxsLW5hbWUuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L3Jlc291cmNlcy9jcmVhdGUtb2JqZWN0c3RvcmUtbnVsbC1uYW1lLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEy
MDBiMWQ0YTk4YWUxNDgwNDI2NjQxY2NlOTEyNjUzYTVhOWYzZjgKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jcmVhdGUt
b2JqZWN0c3RvcmUtbnVsbC1uYW1lLmpzCkBAIC0wLDAgKzEsNDQgQEAKKy8vIG9yaWdpbmFsIHRl
c3Q6CisvLyBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRl
eGVkREIvdGVzdC90ZXN0X2NyZWF0ZV9vYmplY3RTdG9yZS5odG1sCisvLyBsaWNlbnNlIG9mIG9y
aWdpbmFsIHRlc3Q6CisvLyAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorLy8gICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvICIKKworaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlw
dHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1w
b3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWRE
QidzIGNyZWF0aW5nIG9iamVjdCBzdG9yZSB3aXRoIG51bGwgbmFtZSIpOworCitmdW5jdGlvbiB0
ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYu
bG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0
aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5T
dWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9u
KCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNs
ZWFuRGF0YWJhc2UoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBv
YmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUobnVsbCk7Iik7CisgICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLm5hbWUiLCAiJ251bGwnIik7
CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEvcmVzb3VyY2VzL2N1cnNvci1tdXRhdGlvbi1vYmplY3RzdG9yZS1vbmx5LmpzIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY3Vyc29yLW11dGF0aW9u
LW9iamVjdHN0b3JlLW9ubHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjE5NzRlYTRjODViMzUzMzljN2QwOGQ1
MDhkY2M0MzE3Y2VjYjg0OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2N1cnNvci1tdXRhdGlvbi1vYmplY3RzdG9yZS1v
bmx5LmpzCkBAIC0wLDAgKzEsMTQxIEBACisvLyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDovL214
ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9j
dXJzb3JfbXV0YXRpb24uaHRtbD9mb3JjZT0xCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6
CisvLyAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
Ly8gICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIK
KworaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygn
c2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGN1cnNvciBt
dXRhdGlvbiBkdXJpbmcgb2JqZWN0IHN0b3JlIGN1cnNvciBpdGVyYXRpb24iKTsKKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBz
ZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJh
c2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNj
cmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBv
cGVuU3VjY2VzcygpCit7CisgICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7CisgICAgZGIgPSBl
dmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBzZXR1cE9iamVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXR1cE9iamVjdFN0b3JlKCkKK3sK
KyAgICBkZWJ1Zygic2V0dXBPYmplY3RTdG9yZSgpOiIpOworICAgIGRlbGV0ZUFsbE9iamVjdFN0
b3JlcyhkYik7CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycsIHsga2V5UGF0aDogJ3NzJyB9KTsiKTsKKyAgICBv
YmplY3RTdG9yZURhdGEgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZURhdGEgPSBbXG4iICsgCisi
ICAgICAgICB7IHNzOiAnMjM3LTIzLTc3MzInLCBuYW1lOiAnQm9iJyB9LFxuIiArIAorCisiICAg
ICAgICB7IHNzOiAnMjM3LTIzLTc3MzMnLCBuYW1lOiAnQW5uJyB9LFxuIiArCisiICAgICAgICB7
IHNzOiAnMjM3LTIzLTc3MzQnLCBuYW1lOiAnUm9uJyB9LFxuIiArCisiICAgICAgICB7IHNzOiAn
MjM3LTIzLTc3MzUnLCBuYW1lOiAnU3VlJyB9LFxuIiArCisiICAgICAgICB7IHNzOiAnMjM3LTIz
LTc3MzYnLCBuYW1lOiAnSm9lJyB9LFxuIiArCisKKyIgICAgICAgIHsgc3M6ICcyMzctMjMtNzcz
NycsIG5hbWU6ICdQYXQnIH1cbiIgKworIiAgICBdOyIpOworCisgICAgZm9yIChpID0gMDsgaSA8
IG9iamVjdFN0b3JlRGF0YS5sZW5ndGggLSAxOyBpKyspIHsKKyAgICAgICAgZXZhbEFuZExvZygi
b2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXSk7Iik7CisgICAgfQorCisgICAgY291
bnQgPSBldmFsQW5kTG9nKCJjb3VudCA9IDA7Iik7CisgICAgc2F3QWRkZWQgPSBldmFsQW5kTG9n
KCJzYXdBZGRlZCA9IGZhbHNlOyIpOworICAgIHNhd1JlbW92ZWQgPSBldmFsQW5kTG9nKCJzYXdS
ZW1vdmVkID0gZmFsc2U7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGl0
ZXJhdGVDdXJzb3I7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Cit9CisKK2Z1bmN0aW9uIGl0ZXJhdGVDdXJzb3IoKQoreworICAgIGRlYnVnKCJpdGVyYXRl
Q3Vyc29yKCk6Iik7CisgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm9u
Y29tcGxldGUgPSBjaGVja0N1cnNvclJlc3VsdHNBbmRTZXR1cE11dGF0aW5nQ3Vyc29yOyIpOwor
ICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7
CisgICAgaWYgKGN1cnNvcikgeworICAgICAgICBpZiAoY3Vyc29yLnZhbHVlLm5hbWUgPT0gb2Jq
ZWN0U3RvcmVEYXRhWzBdLm5hbWUpIHsKKyAgICAgICAgICAgIHNhd1JlbW92ZWQgPSBldmFsQW5k
TG9nKCJzYXdSZW1vdmVkID0gdHJ1ZTsiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY3Vyc29y
LnZhbHVlLm5hbWUgPT0gb2JqZWN0U3RvcmVEYXRhW29iamVjdFN0b3JlRGF0YS5sZW5ndGggLSAx
XS5uYW1lKSB7CisgICAgICAgICAgICBzYXdBZGRlZCA9IGV2YWxBbmRMb2coInNhd0FkZGVkID0g
dHJ1ZTsiKTsKKyAgICAgICAgfQorICAgICAgICBldmFsQW5kTG9nKCJjb3VudCsrOyIpOworICAg
ICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKKyAgICB9Cit9CisKK2Z1bmN0
aW9uIGNoZWNrQ3Vyc29yUmVzdWx0c0FuZFNldHVwTXV0YXRpbmdDdXJzb3IoKQoreworICAgIGRl
YnVnKCJjaGVja0N1cnNvclJlc3VsdHNBbmRTZXR1cE11dGF0aW5nQ3Vyc29yKCk6Iik7CisgICAg
c2hvdWxkQmUoImNvdW50IiwgIm9iamVjdFN0b3JlRGF0YS5sZW5ndGggLSAxIik7CisgICAgc2hv
dWxkQmUoInNhd0FkZGVkIiwgImZhbHNlIik7CisgICAgc2hvdWxkQmUoInNhd1JlbW92ZWQiLCAi
dHJ1ZSIpOworCisgICAgY291bnQgPSBldmFsQW5kTG9nKCJjb3VudCA9IDA7Iik7CisgICAgc2F3
QWRkZWQgPSBldmFsQW5kTG9nKCJzYXdBZGRlZCA9IGZhbHNlOyIpOworICAgIHNhd1JlbW92ZWQg
PSBldmFsQW5kTG9nKCJzYXdSZW1vdmVkID0gZmFsc2U7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygicmVxdWVzdCA9IGRiLnRyYW5zYWN0aW9uKCdmb28nLCBJREJUcmFuc2FjdGlvbi5S
RUFEX1dSSVRFKS5vYmplY3RTdG9yZSgnZm9vJykub3BlbkN1cnNvcigpOyIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gaXRlcmF0ZU11dGF0aW5nQ3Vyc29yOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBpdGVyYXRlTXV0YXRp
bmdDdXJzb3IoKQoreworICAgIGRlYnVnKCJpdGVyYXRlTXV0YXRpbmdDdXJzb3IoKToiKTsKKyAg
ICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGNoZWNr
TXV0YXRpbmdDdXJzb3JSZXN1bHRzOyIpOworICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNv
ciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgaWYgKGN1cnNvcikgeworICAgICAgICBp
ZiAoY3Vyc29yLnZhbHVlLm5hbWUgPT0gb2JqZWN0U3RvcmVEYXRhWzBdLm5hbWUpIHsKKyAgICAg
ICAgICAgIHNhd1JlbW92ZWQgPSBldmFsQW5kTG9nKCJzYXdSZW1vdmVkID0gdHJ1ZTsiKTsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoY3Vyc29yLnZhbHVlLm5hbWUgPT0gb2JqZWN0U3RvcmVEYXRh
W29iamVjdFN0b3JlRGF0YS5sZW5ndGggLSAxXS5uYW1lKSB7CisgICAgICAgICAgICBzYXdBZGRl
ZCA9IGV2YWxBbmRMb2coInNhd0FkZGVkID0gdHJ1ZTsiKTsKKyAgICAgICAgfQorICAgICAgICBz
aG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAiJyIgKyBvYmplY3RTdG9yZURhdGFbY291bnRd
Lm5hbWUgKyAiJyIpOworICAgICAgICBldmFsQW5kTG9nKCJjb3VudCsrIik7CisKKyAgICAgICAg
aWYgKGNvdW50ID09IDEpIHsKKyAgICAgICAgICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygi
b2JqZWN0U3RvcmUgPSBldmVudC50YXJnZXQudHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ2Zvbycp
OyIpOworICAgICAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RT
dG9yZS5kZWxldGUob2JqZWN0U3RvcmVEYXRhWzBdLnNzKTsiKTsKKyAgICAgICAgICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gYWRkRmluYWxEYXRhOworICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBjdXJzb3IuY29udGludWUoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gYWRk
RmluYWxEYXRhKCkKK3sKKyAgICBkZWJ1ZygiYWRkRmluYWxEYXRhKCk6Iik7CisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRh
W29iamVjdFN0b3JlRGF0YS5sZW5ndGggLSAxXSk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbiAoKSB7IGN1cnNvci5jb250aW51ZSgpOyB9CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNoZWNrTXV0YXRpbmdD
dXJzb3JSZXN1bHRzKCkKK3sKKyAgICBkZWJ1ZygiY2hlY2tNdXRhdGluZ0N1cnNvclJlc3VsdHMo
KToiKTsKKyAgICBzaG91bGRCZSgiY291bnQiLCAib2JqZWN0U3RvcmVEYXRhLmxlbmd0aCIpOwor
ICAgIHNob3VsZEJlKCJzYXdBZGRlZCIsICJ0cnVlIik7CisgICAgc2hvdWxkQmUoInNhd1JlbW92
ZWQiLCAidHJ1ZSIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY3Vyc29yLW11dGF0aW9uLmpzIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY3Vyc29yLW11dGF0aW9uLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjc2YjY0MGY1ZjRiMjM3YjhjMmY2NGU4NDAzNTMyM2FmYmI4MTQ3YTQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291
cmNlcy9jdXJzb3ItbXV0YXRpb24uanMKQEAgLTAsMCArMSwxODEgQEAKKy8vIG9yaWdpbmFsIHRl
c3Q6CisvLyBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRl
eGVkREIvdGVzdC90ZXN0X2N1cnNvcl9tdXRhdGlvbi5odG1sP2ZvcmNlPTEKKy8vIGxpY2Vuc2Ug
b2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0
U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAg
ICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5k
ZXhlZERCJ3MgY3Vyc29yIG11dGF0aW9uIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJl
bW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBkZWJ1ZygiIik7CisgICAgbmFtZSA9ICdjdXJz
b3ItbXV0YXRpb24nOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIuZGVsZXRl
RGF0YWJhc2UobmFtZSkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUpIik7CisgICAgICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImRiID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgICAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImRiLnNldFZlcnNpb24oJzEnKSIpOworICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNl
dHVwT2JqZWN0U3RvcmVBbmRDcmVhdGVJbmRleDsgICAgICAgICAgCisgICAgICAgIH07CisgICAg
fTsKK30KKworZnVuY3Rpb24gc2V0dXBPYmplY3RTdG9yZUFuZENyZWF0ZUluZGV4KCkKK3sKKyAg
ICBkZWJ1ZygiIik7CisgICAgZGVidWcoInNldHVwT2JqZWN0U3RvcmVBbmRDcmVhdGVJbmRleCgp
OiIpOworCisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IHJlcXVlc3QucmVzdWx0Iik7
CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ2ZvbycsIHsga2V5UGF0aDogJ3NzJyB9KSIpOworICAgIGluZGV4ID0gZXZh
bEFuZExvZygiaW5kZXggPSBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgnbmFtZScsICduYW1lJywg
eyB1bmlxdWU6IHRydWUgfSkiKTsKKyAgICBvYmplY3RTdG9yZURhdGEgPSBldmFsQW5kTG9nKCJv
YmplY3RTdG9yZURhdGEgPSBbXG4iICsgCisgICAgICAgICAvLyBUbyBiZSByZW1vdmVkLgorIiAg
ICAgICAgeyBzczogJzIzNy0yMy03NzMyJywgbmFtZTogJ0JvYicgfSxcbiIgKyAKKworICAgICAg
ICAgLy8gQWx3YXlzIHByZXNlbnQuCisiICAgICAgICB7IHNzOiAnMjM3LTIzLTc3MzMnLCBuYW1l
OiAnQW5uJyB9LFxuIiArCisiICAgICAgICB7IHNzOiAnMjM3LTIzLTc3MzQnLCBuYW1lOiAnUm9u
JyB9LFxuIiArCisiICAgICAgICB7IHNzOiAnMjM3LTIzLTc3MzUnLCBuYW1lOiAnU3VlJyB9LFxu
IiArCisiICAgICAgICB7IHNzOiAnMjM3LTIzLTc3MzYnLCBuYW1lOiAnSm9lJyB9LFxuIiArCisK
KyAgICAgICAgIC8vIFRvIGJlIGFkZGVkLgorIiAgICAgICAgeyBzczogJzIzNy0yMy03NzM3Jywg
bmFtZTogJ1BhdCcgfVxuIiArCisiICAgIF0iKTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBvYmpl
Y3RTdG9yZURhdGEubGVuZ3RoIC0gMTsgaSsrKSB7CisgICAgICAgIGV2YWxBbmRMb2coIm9iamVj
dFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbIiArIGkgKyAiXSkiKTsKKyAgICB9CisKKyAgICBl
dmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gY2hlY2tDdXJzb3JSZXN1bHRzIik7CisgICAg
c2V0dXBDdXJzb3IoKTsKK30KKworZnVuY3Rpb24gc2V0dXBDdXJzb3IoKQoreworICAgIGRlYnVn
KCIiKTsKKyAgICBkZWJ1Zygic2V0dXBDdXJzb3IoKToiKTsKKworICAgIGNvdW50ID0gZXZhbEFu
ZExvZygiY291bnQgPSAwIik7CisgICAgc2F3QWRkZWQgPSBldmFsQW5kTG9nKCJzYXdBZGRlZCA9
IGZhbHNlIik7CisgICAgc2F3UmVtb3ZlZCA9IGV2YWxBbmRMb2coInNhd1JlbW92ZWQgPSBmYWxz
ZSIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5v
cGVuQ3Vyc29yKCkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGl0ZXJhdGVDdXJzb3I7Cit9CisKK2Z1bmN0
aW9uIGl0ZXJhdGVDdXJzb3IoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiaXRlcmF0
ZUN1cnNvcigpOiIpOworICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKKyAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygiY3Vyc29yLnZhbHVlLm5hbWUiLCBvYmplY3RTdG9yZURhdGFbY291bnRdLm5hbWUp
OworICAgICAgICBpZiAoY3Vyc29yLnZhbHVlLm5hbWUgPT0gb2JqZWN0U3RvcmVEYXRhWzBdLm5h
bWUpIHsKKyAgICAgICAgICAgIHNhd1JlbW92ZWQgPSBldmFsQW5kTG9nKCJzYXdSZW1vdmVkID0g
dHJ1ZSIpOworICAgICAgICB9CisgICAgICAgIGlmIChjdXJzb3IudmFsdWUubmFtZSA9PSBvYmpl
Y3RTdG9yZURhdGFbb2JqZWN0U3RvcmVEYXRhLmxlbmd0aCAtIDFdLm5hbWUpIHsKKyAgICAgICAg
ICAgIHNhd0FkZGVkID0gZXZhbEFuZExvZygic2F3QWRkZWQgPSB0cnVlIik7CisgICAgICAgIH0K
KyAgICAgICAgZXZhbEFuZExvZygiY291bnQrKyIpOworICAgICAgICBldmFsQW5kTG9nKCJjdXJz
b3IuY29udGludWUoKSIpOworICAgIH0KK30KKworZnVuY3Rpb24gY2hlY2tDdXJzb3JSZXN1bHRz
KCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImNoZWNrQ3Vyc29yUmVzdWx0cygpOiIp
OworICAgIHNob3VsZEJlKCJjb3VudCIsICJvYmplY3RTdG9yZURhdGEubGVuZ3RoIC0gMSIpOwor
ICAgIHNob3VsZEJlKCJzYXdBZGRlZCIsICJmYWxzZSIpOworICAgIHNob3VsZEJlKCJzYXdSZW1v
dmVkIiwgInRydWUiKTsKKworICAgIHNldHVwTXV0YXRpbmdDdXJzb3IoKTsKK30KKworZnVuY3Rp
b24gc2V0dXBNdXRhdGluZ0N1cnNvcigpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJz
ZXR1cE11dGF0aW5nQ3Vyc29yKCk6Iik7CisgICAKKyAgICBjb3VudCA9IGV2YWxBbmRMb2coImNv
dW50ID0gMCIpOworICAgIHNhd0FkZGVkID0gZXZhbEFuZExvZygic2F3QWRkZWQgPSBmYWxzZSIp
OworICAgIHNhd1JlbW92ZWQgPSBldmFsQW5kTG9nKCJzYXdSZW1vdmVkID0gZmFsc2UiKTsKKyAg
ICBkZWJ1ZygiW29iamVjdFN0b3JlRGF0YU5hbWVTb3J0IGlzIGFuIGFycmF5IG9mIGluZGV4ZXMg
aW50byBvYmplY3RTdG9yZURhdGEgaW4gYWxwaGFiZXRpY2FsIG9yZGVyIGJ5IG5hbWVdIik7Cisg
ICAgb2JqZWN0U3RvcmVEYXRhTmFtZVNvcnQgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZURhdGFO
YW1lU29ydCA9IFsgMSwgNCwgNSwgMiwgMyBdIik7CisKKyAgICBkZWJ1ZygiIik7CisKKyAgICB0
cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ2ZvbycsIElEQlRyYW5z
YWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdmb28nKSIpOworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuQ3Vyc29yKCki
KTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGl0ZXJhdGVNdXRhdGluZ0N1cnNvcjsKKyAgICBldmFsQW5kTG9n
KCJ0cmFucy5vbmNvbXBsZXRlID0gY2hlY2tNdXRhdGluZ0N1cnNvclJlc3VsdHMiKTsKK30KKwor
ZnVuY3Rpb24gaXRlcmF0ZU11dGF0aW5nQ3Vyc29yKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAg
ZGVidWcoIml0ZXJhdGVNdXRhdGluZ0N1cnNvcigpOiIpOworICAgIGN1cnNvciA9IGV2YWxBbmRM
b2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBpZiAoY3Vyc29yKSB7Cisg
ICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY3Vyc29yLnZhbHVlLm5hbWUiLCBvYmplY3RT
dG9yZURhdGFbb2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRbY291bnRdXS5uYW1lKTsKKyAgICAgICAg
aWYgKGN1cnNvci52YWx1ZS5uYW1lID09IG9iamVjdFN0b3JlRGF0YVswXS5uYW1lKSB7CisgICAg
ICAgICAgICBzYXdSZW1vdmVkID0gZXZhbEFuZExvZygic2F3UmVtb3ZlZCA9IHRydWUiKTsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoY3Vyc29yLnZhbHVlLm5hbWUgPT0gb2JqZWN0U3RvcmVEYXRh
W29iamVjdFN0b3JlRGF0YS5sZW5ndGggLSAxXS5uYW1lKSB7CisgICAgICAgICAgICBzYXdBZGRl
ZCA9IGV2YWxBbmRMb2coInNhd0FkZGVkID0gdHJ1ZSIpOworICAgICAgICB9CisgICAgICAgIGV2
YWxBbmRMb2coImNvdW50KysiKTsKKworICAgICAgICBpZiAoY291bnQgPT0gMSkgeworICAgICAg
ICAgICAgZGVidWcoIiIpOworICAgICAgICAgICAgZGVidWcoIk11dGF0aW5nIHRoZSBvYmplY3Qg
c3RvcmU6Iik7CisKKyAgICAgICAgICAgIGRlYnVnKCJSZW1vdmluZyAiICsgb2JqZWN0U3RvcmVE
YXRhWzBdLm5hbWUpOworICAgICAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5kZWxldGUob2JqZWN0U3RvcmVEYXRhWzBdLnNzKSIpOworICAgICAgICAg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgICAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEZpbmFsRGF0YTsKKworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1
bmN0aW9uIGFkZEZpbmFsRGF0YSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJhZGRG
aW5hbERhdGEoKToiKTsKKyAgICBkZWJ1ZygiQWRkaW5nICIgKyBvYmplY3RTdG9yZURhdGFbb2Jq
ZWN0U3RvcmVEYXRhLmxlbmd0aCAtIDFdLm5hbWUpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtvYmplY3RTdG9yZURh
dGEubGVuZ3RoIC0gMV0pIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAg
IGN1cnNvci5jb250aW51ZSgpOworICAgIH0KK30KKworZnVuY3Rpb24gY2hlY2tNdXRhdGluZ0N1
cnNvclJlc3VsdHMoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiY2hlY2tNdXRhdGlu
Z0N1cnNvclJlc3VsdHMoKToiKTsKKyAgICBzaG91bGRCZSgiY291bnQiLCAib2JqZWN0U3RvcmVE
YXRhLmxlbmd0aCAtIDEiKTsKKyAgICBzaG91bGRCZSgic2F3QWRkZWQiLCAidHJ1ZSIpOworICAg
IHNob3VsZEJlKCJzYXdSZW1vdmVkIiwgImZhbHNlIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9
CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jdXJzb3ItdXBkYXRl
LXVwZGF0ZXMtaW5kZXhlcy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEvcmVzb3VyY2VzL2N1cnNvci11cGRhdGUtdXBkYXRlcy1pbmRleGVzLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmVkZjY5MzhkMGYyY2Q2ZDUzYWNlMjVjNzdiY2E4M2UxMjQ0NDNlM2MKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jdXJz
b3ItdXBkYXRlLXVwZGF0ZXMtaW5kZXhlcy5qcwpAQCAtMCwwICsxLDExNCBAQAorLy8gb3JpZ2lu
YWwgdGVzdDoKKy8vIGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9t
L2luZGV4ZWREQi90ZXN0L3Rlc3RfY3Vyc29yX3VwZGF0ZV91cGRhdGVzX2luZGV4ZXMuaHRtbD9m
b3JjZT0xCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisvLyAiIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorLy8gICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKworaWYgKHRoaXMuaW1wb3J0U2Ny
aXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rl
c2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQjogbXV0YXRpbmcgcmVjb3JkcyB3aXRoIGEgci93IGN1
cnNvciB1cGRhdGVzIGluZGV4ZXMgb24gdGhvc2UgcmVjb3JkcyIpOworCitmdW5jdGlvbiB0ZXN0
KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9j
YXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Cisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9u
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNj
ZXNzKCkKK3sKKyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBkYiA9IGV2YWxBbmRM
b2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIGZpcnN0VmFsdWUgPSBldmFsQW5k
TG9nKCJmaXJzdFZhbHVlID0gJ2hpJzsiKTsKKyAgICBzZWNvbmRWYWx1ZSA9IGV2YWxBbmRMb2co
InNlY29uZFZhbHVlID0gJ2J5ZSc7Iik7CisgICAgb2JqZWN0U3RvcmVJbmZvID0gZXZhbEFuZExv
Zygib2JqZWN0U3RvcmVJbmZvID0gW1xuIiArCisiICAgICAgICB7IG5hbWU6ICcxJywgb3B0aW9u
czoge30sIGtleTogMSxcbiIgKworIiAgICAgICAgICBlbnRyeTogeyBkYXRhOiBmaXJzdFZhbHVl
IH0gfSxcbiIgKworIiAgICAgICAgeyBuYW1lOiAnMicsIG9wdGlvbnM6IHsga2V5UGF0aDogJ2Zv
bycgfSxcbiIgKworIiAgICAgICAgICBlbnRyeTogeyBmb286IDEsIGRhdGE6IGZpcnN0VmFsdWUg
fSB9LFxuIiArCisiICAgICAgICB7IG5hbWU6ICczJywgb3B0aW9uczogeyBhdXRvSW5jcmVtZW50
OiB0cnVlIH0sXG4iICsKKyIgICAgICAgICAgZW50cnk6IHsgZGF0YTogZmlyc3RWYWx1ZSB9IH0s
XG4iICsKKyIgICAgICAgIHsgbmFtZTogJzQnLCBvcHRpb25zOiB7IGtleVBhdGg6ICdmb28nLCBh
dXRvSW5jcmVtZW50OiB0cnVlIH0sXG4iICsKKyIgICAgICAgICAgZW50cnk6IHsgZGF0YTogZmly
c3RWYWx1ZSB9IH0sXG4iICsKKyIgICAgXTsiKTsKKyAgICBpID0gZXZhbEFuZExvZygiaSA9IDA7
Iik7CisgICAgc2V0VmVyc2lvbigpOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uKCkKK3sKKyAg
ICBpZiAoaSA8IG9iamVjdFN0b3JlSW5mby5sZW5ndGgpIHsKKyAgICAgICAgaW5mbyA9IGV2YWxB
bmRMb2coImluZm8gPSBvYmplY3RTdG9yZUluZm9baV07Iik7CisgICAgICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gc2V0dXBPYmplY3RTdG9yZUFuZENyZWF0ZUluZGV4QW5kQWRkOworICAg
ICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB9IGVs
c2UgeworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHNldHVw
T2JqZWN0U3RvcmVBbmRDcmVhdGVJbmRleEFuZEFkZCgpCit7CisgICAgZGVidWcoInNldHVwT2Jq
ZWN0U3RvcmVBbmRDcmVhdGVJbmRleCgpOiIpOworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jlcyhk
Yik7CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoaW5mby5uYW1lLCBpbmZvLm9wdGlvbnMpOyIpOworCisgICAgaW5kZXgg
PSBldmFsQW5kTG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdkYXRhX2luZGV4
JywgJ2RhdGEnLCB7IHVuaXF1ZTogZmFsc2UgfSk7Iik7CisgICAgdW5pcXVlSW5kZXggPSBldmFs
QW5kTG9nKCJ1bmlxdWVJbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCd1bmlxdWVfZGF0
YV9pbmRleCcsICdkYXRhJywgeyB1bmlxdWU6IHRydWUgfSk7Iik7CisgICAgaWYgKGluZm8ua2V5
KSB7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
YWRkKGluZm8uZW50cnksIGluZm8ua2V5KTsiKTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChpbmZvLmVudHJ5KTsi
KTsKKyAgICB9CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuQ3Vyc29yOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVu
Q3Vyc29yKCkKK3sKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0
b3JlLm9wZW5DdXJzb3IoKTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVwZGF0ZUN1cnNv
cjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKwor
ZnVuY3Rpb24gdXBkYXRlQ3Vyc29yKCkKK3sKKyAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJz
b3IgPSByZXF1ZXN0LnJlc3VsdDsiKTsKKyAgICB2YWx1ZSA9IGV2YWxBbmRMb2coInZhbHVlID0g
Y3Vyc29yLnZhbHVlOyIpOworICAgIHZhbHVlLmRhdGEgPSBldmFsQW5kTG9nKCJ2YWx1ZS5kYXRh
ID0gc2Vjb25kVmFsdWU7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBj
dXJzb3IudXBkYXRlKHZhbHVlKTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldEluZGV4
MTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKwor
ZnVuY3Rpb24gZ2V0SW5kZXgxKCkKK3sKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IGluZGV4LmdldChzZWNvbmRWYWx1ZSk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBj
aGVja0luZGV4MUFuZEdldEluZGV4MjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2hlY2tJbmRleDFBbmRHZXRJbmRleDIoKQor
eworICAgIHNob3VsZEJlKCJ2YWx1ZS5kYXRhIiwgImV2ZW50LnRhcmdldC5yZXN1bHQuZGF0YSIp
OworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gdW5pcXVlSW5kZXguZ2V0KHNl
Y29uZFZhbHVlKTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNoZWNrSW5kZXgyOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biBjaGVja0luZGV4MigpCit7CisgICAgc2hvdWxkQmUoInZhbHVlLmRhdGEiLCAiZXZlbnQudGFy
Z2V0LnJlc3VsdC5kYXRhIik7CisgICAgZXZhbEFuZExvZygiaSsrOyIpOworICAgIHNldFZlcnNp
b24oKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2N1cnNv
cnMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9j
dXJzb3JzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMzOWE3MDE1MDJiOGRhMDBiYmNjM2VjNjg1NzEyMDAyN2Fk
YzA3NGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL3Jlc291cmNlcy9jdXJzb3JzLmpzCkBAIC0wLDAgKzEsMzg4IEBACisvLyBvcmlnaW5h
bCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20v
aW5kZXhlZERCL3Rlc3QvdGVzdF9jdXJzb3JzLmh0bWw/Zm9yY2U9MQorLy8gbGljZW5zZSBvZiBv
cmlnaW5hbCB0ZXN0OgorLy8gIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKy8vICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLyAiCisKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3Jp
cHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGlt
cG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVk
REIgY3Vyc29yIGJlaGF2aW9yIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZl
bmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKKyAg
ICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0g
ZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gdGVzdEdyb3VwMTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gdGVzdEdyb3VwMSgpCit7CisgICAgZGVsZXRl
QWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygiZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ2F1dG9JbmNyZW1lbnQnLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUg
fSk7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3Jl
Lm9wZW5DdXJzb3IoKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgeworICAg
ICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAibnVsbCIpOworICAgICAgdGVzdEdy
b3VwMigpOworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdEdyb3VwMigpCit7CisgICAgb2JqZWN0
U3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnYXV0b0luY3JlbWVudEtl
eVBhdGgnLCB7IGtleVBhdGg6ICdmb28nLCBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOyIpOworCisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29y
KCk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgIHNob3VsZEJl
KCJldmVudC50YXJnZXQucmVzdWx0IiwgIm51bGwiKTsKKyAgICAgIHRlc3RHcm91cDMoKTsKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDMoKQoreworICAgIG9iamVjdFN0b3JlID0gZXZh
bEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2tleVBhdGgnLCB7IGtleVBhdGg6ICdmb28n
IH0pOyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9y
ZS5vcGVuQ3Vyc29yKCk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAg
ICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIm51bGwiKTsKKyAgICAgIHRlc3RH
cm91cDQoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDQoKQoreworICAgIG9iamVj
dFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycpOyIpOworCisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29y
KCk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgIHNob3VsZEJl
KCJldmVudC50YXJnZXQucmVzdWx0IiwgIm51bGwiKTsKKyAgICAgIHRlc3RHcm91cDUoKTsKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDUoKQoreworICAgIGtleXMgPSBldmFsQW5kTG9n
KCJrZXlzID0gWzEsIC0xLCAwLCAxMCwgMjAwMCwgJ3EnLCAneicsICd0d28nLCAnYicsICdhJ107
Iik7CisgICAgc29ydGVkS2V5cyA9IGV2YWxBbmRMb2coInNvcnRlZEtleXMgPSBbLTEsIDAsIDEs
IDEwLCAyMDAwLCAnYScsICdiJywgJ3EnLCAndHdvJywgJ3onXTsiKTsKKworICAgIGtleUluZGV4
ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAwOyIpOworCisgICAgZm9yIChpIGluIGtleXMpIHsK
KyAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKCdm
b28nLCBrZXlzW2ldKTsiKTsKKyAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgewor
ICAgICAgICBpZiAoKytrZXlJbmRleCA9PSBrZXlzLmxlbmd0aCkgeworICAgICAgICAgIHRlc3RH
cm91cDYoKTsKKyAgICAgICAgfQorICAgICAgfTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RH
cm91cDYoKQoreworICAgIGtleUluZGV4ID0gMDsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBl
dmVudC50YXJnZXQucmVzdWx0OyIpOworICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLmtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOworICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKKyAgICAg
ICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZSIsICInZm9vJyIpOworCisgICAgICAgIGV2YWxBbmRM
b2coImN1cnNvci5jb250aW51ZSgpOyIpOworICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJjdXJzb3IuY29udGludWUoKTsiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0FMTE9XRURf
RVJSIik7CisKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAic29ydGVkS2V5c1trZXlJ
bmRleF0iKTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgInNvcnRlZEtl
eXNba2V5SW5kZXhdIik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAiJ2Zvbyci
KTsKKworICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOworICAgICAgfQorICAgICAg
ZWxzZSB7CisgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJrZXlzLmxlbmd0aCIpOworICAg
ICAgICB0ZXN0R3JvdXA3KCk7CisgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0R3Jv
dXA3KCkKK3sKKyAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gNDsiKTsKKwor
ICAgIHJhbmdlID0gZXZhbEFuZExvZygicmFuZ2UgPSBJREJLZXlSYW5nZS5ib3VuZCgyMDAwLCAn
cScpOyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
b3BlbkN1cnNvcihyYW5nZSk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsK
KyAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7
Iik7CisgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5Iiwg
InNvcnRlZEtleXNba2V5SW5kZXhdIik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFy
eUtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOworICAgICAgICBzaG91bGRCZSgiY3Vyc29y
LnZhbHVlIiwgIidmb28nIik7CisKKyAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVl
KCk7Iik7CisKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAic29ydGVkS2V5c1trZXlJ
bmRleF0iKTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgInNvcnRlZEtl
eXNba2V5SW5kZXhdIik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAiJ2Zvbyci
KTsKKworICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOworICAgICAgfQorICAgICAg
ZWxzZSB7CisgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICI4Iik7CisgICAgICAgIHRlc3RH
cm91cDgoKTsKKyAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDgoKQorewor
ICAgIGtleUluZGV4ID0gMDsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
b2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2
ZW50KSB7CisgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQu
cmVzdWx0OyIpOworICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICBzaG91bGRCZSgiY3Vyc29y
LmtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOworICAgICAgICBzaG91bGRCZSgiY3Vyc29y
LnByaW1hcnlLZXkiLCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKKyAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci52YWx1ZSIsICInZm9vJyIpOworCisgICAgICAgIGlmIChrZXlJbmRleCkgeworICAg
ICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOworICAgICAgICB9CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgnYicpOyIp
OworICAgICAgICB9CisKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAic29ydGVkS2V5
c1trZXlJbmRleF0iKTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgInNv
cnRlZEtleXNba2V5SW5kZXhdIik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAi
J2ZvbyciKTsKKworICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCArPSBrZXlJbmRleCA/IDE6
IDY7Iik7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgc2hvdWxkQmUoImtleUluZGV4
IiwgImtleXMubGVuZ3RoIik7CisgICAgICAgIHRlc3RHcm91cDkoKTsKKyAgICAgIH0KKyAgICB9
Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDkoKQoreworICAgIGtleUluZGV4ID0gZXZhbEFuZExv
Zygia2V5SW5kZXggPSAwOyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAo
ZXZlbnQpIHsKKyAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQ7Iik7CisgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgIHNob3VsZEJlKCJjdXJz
b3Iua2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7CisgICAgICAgIHNob3VsZEJlKCJjdXJz
b3IucHJpbWFyeUtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOworICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLnZhbHVlIiwgIidmb28nIik7CisKKyAgICAgICAgaWYgKGtleUluZGV4KSB7Cisg
ICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisgICAgICAgIH0KKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKDEwKTsi
KTsKKyAgICAgICAgfQorCisgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgInNvcnRlZEtl
eXNba2V5SW5kZXhdIik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJz
b3J0ZWRLZXlzW2tleUluZGV4XSIpOworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwg
Iidmb28nIik7CisKKyAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXggKz0ga2V5SW5kZXggPyAx
OiAzOyIpOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHNob3VsZEJlKCJrZXlJbmRl
eCIsICJrZXlzLmxlbmd0aCIpOworICAgICAgICB0ZXN0R3JvdXAxMCgpOworICAgICAgfQorICAg
IH0KK30KKworZnVuY3Rpb24gdGVzdEdyb3VwMTAoKQoreworICAgIGtleUluZGV4ID0gZXZhbEFu
ZExvZygia2V5SW5kZXggPSAwOyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVl
c3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlv
biAoZXZlbnQpIHsKKyAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRh
cmdldC5yZXN1bHQ7Iik7CisgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgIHNob3VsZEJlKCJj
dXJzb3Iua2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7CisgICAgICAgIHNob3VsZEJlKCJj
dXJzb3IucHJpbWFyeUtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOworICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLnZhbHVlIiwgIidmb28nIik7CisKKyAgICAgICAgaWYgKGtleUluZGV4KSB7
CisgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisgICAgICAgIH0K
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCdj
Jyk7Iik7CisgICAgICAgIH0KKworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJzb3J0
ZWRLZXlzW2tleUluZGV4XSIpOworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXki
LCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1
ZSIsICInZm9vJyIpOworCisgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4ICs9IGtleUluZGV4
ID8gMSA6IDc7Iik7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgc2hvdWxkQmUoImtl
eUluZGV4IiwgImtleXMubGVuZ3RoIik7CisgICAgICAgIHRlc3RHcm91cDExKCk7CisgICAgICB9
CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0R3JvdXAxMSgpCit7CisgICAga2V5SW5kZXggPSBl
dmFsQW5kTG9nKCJrZXlJbmRleCA9IDA7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1
bmN0aW9uIChldmVudCkgeworICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZl
bnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgc2hvdWxk
QmUoImN1cnNvci5rZXkiLCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKKyAgICAgICAgc2hvdWxk
QmUoImN1cnNvci5wcmltYXJ5S2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7CisgICAgICAg
IHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAiJ2ZvbyciKTsKKworICAgICAgICBpZiAoa2V5SW5k
ZXggPT0gNCkgeworICAgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gY3Vy
c29yLnVwZGF0ZSgnYmFyJyk7Iik7CisgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlv
bihldmVudCkgeworICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKKyAgICAg
ICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOworICAgICAgICAgIH07Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgr
KzsiKTsKKyAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKKyAgICAg
ICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIs
ICJrZXlzLmxlbmd0aCIpOworICAgICAgICB0ZXN0R3JvdXAxMigpOworICAgICAgfQorICAgIH0K
K30KKworZnVuY3Rpb24gdGVzdEdyb3VwMTIoKQoreworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KHNvcnRlZEtleXNbNF0pOyIpOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gdGVzdEdyb3VwMTJiOworfQorCitmdW5jdGlvbiB0ZXN0R3JvdXAxMmIoKQoreworICAg
IHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIidiYXInIik7CisKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgnZm9vJywgc29ydGVkS2V5
c1s0XSk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0ZXN0R3JvdXAxMzsKK30KKworZnVuY3Rpb24gdGVz
dEdyb3VwMTMoKQoreworICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAwOyIp
OworCisgICAgZ290UmVtb3ZlRXZlbnQgPSBmYWxzZTsKKyAgICByZXR2YWwgPSBmYWxzZTsKKwor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNv
cihudWxsLCBJREJDdXJzb3IuTkVYVCk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZl
bnQpIHsKKyAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQ7Iik7CisgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
a2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
cHJpbWFyeUtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOworICAgICAgICBzaG91bGRCZSgi
Y3Vyc29yLnZhbHVlIiwgIidmb28nIik7CisKKyAgICAgICAgaWYgKGtleUluZGV4ID09IDQpIHsK
KyAgICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGN1cnNvci5kZWxldGUo
KTsiKTsKKyAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAg
ICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNSIpOworICAgICAgICAgICAgZ290UmVtb3Zl
RXZlbnQgPSBldmFsQW5kTG9nKCJnb3RSZW1vdmVFdmVudCA9IHRydWU7Iik7CisgICAgICAgICAg
fTsKKyAgICAgICAgfQorCisgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7CisgICAg
ICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOworICAgICAgfQorICAgICAgZWxz
ZSB7CisgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJrZXlzLmxlbmd0aCIpOworICAgICAg
ICBzaG91bGRCZSgiZ290UmVtb3ZlRXZlbnQiLCAidHJ1ZSIpOworICAgICAgICB0ZXN0R3JvdXAx
NCgpOworICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gdGVzdEdyb3VwMTQoKQoreworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KHNvcnRlZEtl
eXNbNF0pOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdGVzdEdyb3VwMTRiOworfQorCitmdW5jdGlvbiB0
ZXN0R3JvdXAxNGIoKQoreworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgInVu
ZGVmaW5lZCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RT
dG9yZS5hZGQoJ2ZvbycsIHNvcnRlZEtleXNbNF0pOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdGVzdEdy
b3VwMTU7Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDE1KCkKK3sKKyAgICBrZXlJbmRleCA9IHNv
cnRlZEtleXMubGVuZ3RoIC0gMTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcihudWxsLCBJREJDdXJzb3IuUFJFVik7Iik7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2co
ImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICBpZiAoY3Vyc29yKSB7Cisg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7Cisg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4
XSIpOworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgIidmb28nIik7CisKKyAgICAg
ICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisKKyAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci5rZXkiLCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKKyAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci5wcmltYXJ5S2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7CisgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3IudmFsdWUiLCAiJ2ZvbyciKTsKKworICAgICAgICBldmFsQW5kTG9nKCJr
ZXlJbmRleC0tOyIpOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHNob3VsZEJlKCJr
ZXlJbmRleCIsICItMSIpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgIH0KKyAgICB9
Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9kZWxldGUtcmVz
dWx0LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMv
ZGVsZXRlLXJlc3VsdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNDRjNTBiZTQ1OGY1ODA1MDQyZDVjMTg0ZWEz
MTczZGFmMWQ0MDVjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvZGVsZXRlLXJlc3VsdC5qcwpAQCAtMCwwICsxLDY0IEBA
CisvLyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4w
L3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9vZGRfcmVzdWx0X29yZGVyLmh0bWw/cmF3
PTEKKy8vIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBvcnRTY3JpcHRz
KSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3Jp
cHRpb24oIlRlc3QgSW5kZXhlZERCOiByZXN1bHQgcHJvcGVydHkgYWZ0ZXIgZGVsZXRpbmcgZXhp
c3RpbmcgYW5kIG5vbi1leGlzdGluZyByZWNvcmQiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7Cisg
ICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBh
dGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7
CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlT2JqZWN0U3RvcmU7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZU9iamVj
dFN0b3JlKCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworICAgIG9iamVjdFN0
b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9v
JywgeyBrZXlQYXRoOiAnaWQnLCBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOyIpOworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKHt9KTsiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZVJlY29yZDE7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZVJlY29yZDEoKQor
eworICAgIGlkID0gZXZhbEFuZExvZygiaWQgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZGVsZXRlKGlkKTsi
KTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZVJlY29yZDI7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZVJl
Y29yZDIoKQoreworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgInVuZGVmaW5l
ZCIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZGVs
ZXRlKGlkKTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZpbmFsQ2hlY2s7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
ZmluYWxDaGVjaygpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAidW5k
ZWZpbmVkIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL3Jlc291cmNlcy9ldmVudC1zb3VyY2UuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9ldmVudC1zb3VyY2UuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZWQ0YTE0N2U0MWQ2ZjM1ODkwYWU2YWYwNzI5OGI4M2M4MmJmOTc1MgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2V2ZW50
LXNvdXJjZS5qcwpAQCAtMCwwICsxLDU3IEBACisvLyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDov
L214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVz
dF9ldmVudF9zb3VyY2UuaHRtbAorLy8gbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorLy8gIiBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKy8vICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCisKK2lmICh0
aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5q
cycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBldmVudC50YXJnZXQuc291
cmNlIGluIHN1Y2Nlc3MgY2FsbGJhY2tzIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJl
bW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFt
ZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAg
IHNvdXJjZSA9IGV2YWxBbmRMb2coInNvdXJjZSA9IGV2ZW50LnRhcmdldC5zb3VyY2U7Iik7Cisg
ICAgc2hvdWxkQmUoInNvdXJjZSIsICJpbmRleGVkREIiKTsKKworICAgIGRiID0gZXZhbEFuZExv
ZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGNsZWFuRGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIHNvdXJjZSA9IGV2
YWxBbmRMb2coInNvdXJjZSA9IGV2ZW50LnRhcmdldC5zb3VyY2U7Iik7CisgICAgc2hvdWxkQmUo
InNvdXJjZSIsICJkYiIpOworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAg
IG9iamVjdFN0b3JlTmFtZSA9ICJPYmplY3RzIjsKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRM
b2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lLCB7
IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoe30pOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
YXJlV2VEb25lWWV0OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworfQorCitmdW5jdGlvbiBhcmVXZURvbmVZZXQoKQoreworICAgIHNvdXJjZSA9IGV2YWxB
bmRMb2coInNvdXJjZSA9IGV2ZW50LnRhcmdldC5zb3VyY2U7Iik7CisgICAgc2hvdWxkQmUoInNv
dXJjZSIsICJvYmplY3RTdG9yZSIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvZ2xvYmFsLWRhdGEuanMgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9nbG9iYWwtZGF0YS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iYjM2MDY1M2EyYWYyODM4NjA1NzZmOTU4M2VjZmY0NDliNzRjMzUyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNv
dXJjZXMvZ2xvYmFsLWRhdGEuanMKQEAgLTAsMCArMSw2OSBAQAorLy8gb3JpZ2luYWwgdGVzdDoK
Ky8vIGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWRE
Qi90ZXN0L3Rlc3RfZ2xvYmFsX2RhdGEuaHRtbAorLy8gbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0
OgorLy8gIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
Ky8vICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAi
CisKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMo
J3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBvcGVuaW5n
IERCIG1vcmUgdGhhbiBvbmNlIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZl
bmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKKyAg
ICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiMSA9
IGV2YWxBbmRMb2coImRiMSA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIxLnNldFZlcnNpb24oJzEnKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7Cisg
ICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiMSk7CisKKyAgICBvYmplY3RTdG9yZU5hbWUgPSAi
T2JqZWN0cyI7CisgICAgb2JqZWN0U3RvcmVPcHRpb25zID0geyBrZXlQYXRoOiAnaWQnLCBhdXRv
SW5jcmVtZW50OiB0cnVlIH07CisgICAgZXZhbEFuZExvZygiZGIxLmNyZWF0ZU9iamVjdFN0b3Jl
KG9iamVjdFN0b3JlTmFtZSwgb2JqZWN0U3RvcmVPcHRpb25zKTsiKTsKKworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbik7Iik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuMlN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW4yU3VjY2VzcygpCit7
CisgICAgZGIyID0gZXZhbEFuZExvZygiZGIyID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisg
ICAgc2hvdWxkQmVUcnVlKCJkYjEgIT09IGRiMiIpOworICAgIHNob3VsZEJlKCJkYjEub2JqZWN0
U3RvcmVOYW1lcy5sZW5ndGgiLCAiMSIpOworICAgIHNob3VsZEJlKCJkYjEub2JqZWN0U3RvcmVO
YW1lcy5pdGVtKDApIiwgIm9iamVjdFN0b3JlTmFtZSIpOworICAgIHNob3VsZEJlKCJkYjIub2Jq
ZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMSIpOworICAgIHNob3VsZEJlKCJkYjIub2JqZWN0U3Rv
cmVOYW1lcy5pdGVtKDApIiwgIm9iamVjdFN0b3JlTmFtZSIpOworCisgICAgb2JqZWN0U3RvcmUx
ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUxID0gZGIxLnRyYW5zYWN0aW9uKG9iamVjdFN0b3Jl
TmFtZSkub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKTsiKTsKKyAgICBzaG91bGRCZSgib2Jq
ZWN0U3RvcmUxLm5hbWUiLCAib2JqZWN0U3RvcmVOYW1lIik7CisgICAgc2hvdWxkQmUoIm9iamVj
dFN0b3JlMS5rZXlQYXRoIiwgIm9iamVjdFN0b3JlT3B0aW9ucy5rZXlQYXRoIik7CisKKyAgICBv
YmplY3RTdG9yZTIgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZTIgPSBkYjIudHJhbnNhY3Rpb24o
b2JqZWN0U3RvcmVOYW1lKS5vYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpOyIpOworICAgIHNo
b3VsZEJlVHJ1ZSgib2JqZWN0U3RvcmUxICE9PSBvYmplY3RTdG9yZTIiKTsKKyAgICBzaG91bGRC
ZSgib2JqZWN0U3RvcmUyLm5hbWUiLCAib2JqZWN0U3RvcmVOYW1lIik7CisgICAgc2hvdWxkQmUo
Im9iamVjdFN0b3JlMi5rZXlQYXRoIiwgIm9iamVjdFN0b3JlT3B0aW9ucy5rZXlQYXRoIik7CisK
KyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEv
cmVzb3VyY2VzL2luZGV4ZXMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL3Jlc291cmNlcy9pbmRleGVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5OGMyNDAxNjA2YjZlMDdlOTZk
MTYzOTIzYmUxMTQ2Y2UwNDZhYmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9pbmRleGVzLmpzCkBAIC0wLDAgKzEsMTAx
MSBAQAorLy8gb3JpZ2luYWwgdGVzdDoKKy8vIGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxs
YTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfaW5kZXhlcy5odG1sP2ZvcmNlPTEK
Ky8vIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7
CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRp
b24oIlRlc3QgSW5kZXhlZERCOiBpdGVyYXRpbmcgdGhyb3VnaCBpbmRleCBjdXJzb3JzIHdpdGgg
a2V5cyBhbmQga2V5IHJhbmdlcyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVW
ZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Cisg
ICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkZWJ1
Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFy
Z2V0LnJlc3VsdCIpOworCisgICAgb2JqZWN0U3RvcmVOYW1lID0gIlBlb3BsZSI7CisKKyAgICBv
YmplY3RTdG9yZURhdGEgPSBbCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzIiLCB2YWx1ZTog
eyBuYW1lOiAiQm9iIiwgaGVpZ2h0OiA2MCwgd2VpZ2h0OiAxMjAgfSB9LAorICAgICAgICB7IGtl
eTogIjIzNy0yMy03NzMzIiwgdmFsdWU6IHsgbmFtZTogIkFubiIsIGhlaWdodDogNTIsIHdlaWdo
dDogMTEwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNCIsIHZhbHVlOiB7IG5hbWU6
ICJSb24iLCBoZWlnaHQ6IDczLCB3ZWlnaHQ6IDE4MCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3
LTIzLTc3MzUiLCB2YWx1ZTogeyBuYW1lOiAiU3VlIiwgaGVpZ2h0OiA1OCwgd2VpZ2h0OiAxMzAg
fSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzM2IiwgdmFsdWU6IHsgbmFtZTogIkpvZSIs
IGhlaWdodDogNjUsIHdlaWdodDogMTUwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzcz
NyIsIHZhbHVlOiB7IG5hbWU6ICJQYXQiLCBoZWlnaHQ6IDY1LCB3ZWlnaHQ6IDEwMCB9IH0KKyAg
ICBdOworCisgICAgaW5kZXhEYXRhID0gWworICAgICAgICB7IG5hbWU6ICJuYW1lIiwga2V5UGF0
aDogIm5hbWUiLCBvcHRpb25zOiB7IHVuaXF1ZTogdHJ1ZSB9IH0sCisgICAgICAgIHsgbmFtZTog
ImhlaWdodCIsIGtleVBhdGg6ICJoZWlnaHQiLCBvcHRpb25zOiB7IH0gfSwKKyAgICAgICAgeyBu
YW1lOiAid2VpZ2h0Iiwga2V5UGF0aDogIndlaWdodCIsIG9wdGlvbnM6IHsgdW5pcXVlOiBmYWxz
ZSB9IH0KKyAgICBdOworCisgICAgb2JqZWN0U3RvcmVEYXRhTmFtZVNvcnQgPSBbCisgICAgICAg
IHsga2V5OiAiMjM3LTIzLTc3MzMiLCB2YWx1ZTogeyBuYW1lOiAiQW5uIiwgaGVpZ2h0OiA1Miwg
d2VpZ2h0OiAxMTAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzMyIiwgdmFsdWU6IHsg
bmFtZTogIkJvYiIsIGhlaWdodDogNjAsIHdlaWdodDogMTIwIH0gfSwKKyAgICAgICAgeyBrZXk6
ICIyMzctMjMtNzczNiIsIHZhbHVlOiB7IG5hbWU6ICJKb2UiLCBoZWlnaHQ6IDY1LCB3ZWlnaHQ6
IDE1MCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzciLCB2YWx1ZTogeyBuYW1lOiAi
UGF0IiwgaGVpZ2h0OiA2NSwgd2VpZ2h0OiAxMDAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0y
My03NzM0IiwgdmFsdWU6IHsgbmFtZTogIlJvbiIsIGhlaWdodDogNzMsIHdlaWdodDogMTgwIH0g
fSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNSIsIHZhbHVlOiB7IG5hbWU6ICJTdWUiLCBo
ZWlnaHQ6IDU4LCB3ZWlnaHQ6IDEzMCB9IH0KKyAgICBdOworCisgICAgb2JqZWN0U3RvcmVEYXRh
V2VpZ2h0U29ydCA9IFsKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNyIsIHZhbHVlOiB7IG5h
bWU6ICJQYXQiLCBoZWlnaHQ6IDY1LCB3ZWlnaHQ6IDEwMCB9IH0sCisgICAgICAgIHsga2V5OiAi
MjM3LTIzLTc3MzMiLCB2YWx1ZTogeyBuYW1lOiAiQW5uIiwgaGVpZ2h0OiA1Miwgd2VpZ2h0OiAx
MTAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzMyIiwgdmFsdWU6IHsgbmFtZTogIkJv
YiIsIGhlaWdodDogNjAsIHdlaWdodDogMTIwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMt
NzczNSIsIHZhbHVlOiB7IG5hbWU6ICJTdWUiLCBoZWlnaHQ6IDU4LCB3ZWlnaHQ6IDEzMCB9IH0s
CisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzYiLCB2YWx1ZTogeyBuYW1lOiAiSm9lIiwgaGVp
Z2h0OiA2NSwgd2VpZ2h0OiAxNTAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzM0Iiwg
dmFsdWU6IHsgbmFtZTogIlJvbiIsIGhlaWdodDogNzMsIHdlaWdodDogMTgwIH0gfQorICAgIF07
CisKKyAgICBvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0ID0gWworICAgICAgICB7IGtleTogIjIz
Ny0yMy03NzMzIiwgdmFsdWU6IHsgbmFtZTogIkFubiIsIGhlaWdodDogNTIsIHdlaWdodDogMTEw
IH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNSIsIHZhbHVlOiB7IG5hbWU6ICJTdWUi
LCBoZWlnaHQ6IDU4LCB3ZWlnaHQ6IDEzMCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3
MzIiLCB2YWx1ZTogeyBuYW1lOiAiQm9iIiwgaGVpZ2h0OiA2MCwgd2VpZ2h0OiAxMjAgfSB9LAor
ICAgICAgICB7IGtleTogIjIzNy0yMy03NzM2IiwgdmFsdWU6IHsgbmFtZTogIkpvZSIsIGhlaWdo
dDogNjUsIHdlaWdodDogMTUwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNyIsIHZh
bHVlOiB7IG5hbWU6ICJQYXQiLCBoZWlnaHQ6IDY1LCB3ZWlnaHQ6IDEwMCB9IH0sCisgICAgICAg
IHsga2V5OiAiMjM3LTIzLTc3MzQiLCB2YWx1ZTogeyBuYW1lOiAiUm9uIiwgaGVpZ2h0OiA3Mywg
d2VpZ2h0OiAxODAgfSB9CisgICAgXTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVh
dGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0
b3JlKCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworICAgIHRyYW5zID0gZXZl
bnQudGFyZ2V0LnJlc3VsdDsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0
U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpOyIpOworCisgICAg
ZGVidWcoIkZpcnN0LCBhZGQgYWxsIG91ciBkYXRhIHRvIHRoZSBvYmplY3Qgc3RvcmUuIik7Cisg
ICAgYWRkZWREYXRhID0gMDsKKyAgICBmb3IgKGkgaW4gb2JqZWN0U3RvcmVEYXRhKSB7CisgICAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RT
dG9yZURhdGFbaV0udmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOyIpOworICAgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGlmICgrK2FkZGVkRGF0YSA9PSBv
YmplY3RTdG9yZURhdGEubGVuZ3RoKSB7CisgICAgICAgICAgY3JlYXRlSW5kZXhlcygpOworICAg
ICAgICB9CisgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiBjcmVhdGVJbmRleGVzKCkKK3sK
KyAgICBkZWJ1ZygiTm93IGNyZWF0ZSB0aGUgaW5kZXhlcy4iKTsKKyAgICBmb3IgKGkgaW4gaW5k
ZXhEYXRhKSB7CisgICAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5jcmVhdGVJbmRleChpbmRl
eERhdGFbaV0ubmFtZSwgaW5kZXhEYXRhW2ldLmtleVBhdGgsIGluZGV4RGF0YVtpXS5vcHRpb25z
KTsiKTsKKyAgICB9CisgICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLmluZGV4TmFtZXMubGVuZ3Ro
IiwgImluZGV4RGF0YS5sZW5ndGgiKTsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gc2V0VmVyc2lv
bkNvbXBsZXRlOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uQ29tcGxldGUoKQoreworICAgIG9i
amVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbihvYmpl
Y3RTdG9yZU5hbWUpLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7Iik7CisKKyAgICAvLyBD
aGVjayBnbG9iYWwgcHJvcGVydGllcyB0byBtYWtlIHN1cmUgdGhleSBhcmUgY29ycmVjdC4KKyAg
ICBzaG91bGRCZSgib2JqZWN0U3RvcmUuaW5kZXhOYW1lcy5sZW5ndGgiLCAiaW5kZXhEYXRhLmxl
bmd0aCIpOworICAgIGZvciAoaSBpbiBpbmRleERhdGEpIHsKKyAgICAgICAgZm91bmQgPSBmYWxz
ZTsKKyAgICAgICAgZm9yIChqID0gMDsgaiA8IG9iamVjdFN0b3JlLmluZGV4TmFtZXMubGVuZ3Ro
OyBqKyspIHsKKyAgICAgICAgICAgIGlmIChvYmplY3RTdG9yZS5pbmRleE5hbWVzLml0ZW0oaikg
PT0gaW5kZXhEYXRhW2ldLm5hbWUpIHsKKyAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
c2hvdWxkQmVUcnVlKCJmb3VuZCIpOworICAgICAgICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4
ID0gb2JqZWN0U3RvcmUuaW5kZXgoaW5kZXhEYXRhW2ldLm5hbWUpOyIpOworICAgICAgICBzaG91
bGRCZSgiaW5kZXgubmFtZSIsICJpbmRleERhdGFbaV0ubmFtZSIpOworICAgICAgICBzaG91bGRC
ZSgiaW5kZXgua2V5UGF0aCIsICJpbmRleERhdGFbaV0ua2V5UGF0aCIpOworICAgICAgICBzaG91
bGRCZSgiaW5kZXgudW5pcXVlIiwgaW5kZXhEYXRhW2ldLm9wdGlvbnMudW5pcXVlID8gInRydWUi
IDogImZhbHNlIik7CisgICAgfQorCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScpLmdldEtleSgnQm9iJyk7Iik7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBjaGVja0dldEtleTsKK30KKworZnVuY3Rpb24gY2hlY2tHZXRLZXkoKQoreworICAgIHNo
b3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIicyMzctMjMtNzczMiciKTsKKworICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5n
ZXQoJ0JvYicpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2hlY2tHZXQ7Cit9CisKK2Z1bmN0aW9uIGNo
ZWNrR2V0KCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5uYW1lIiwgIidC
b2InIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQuaGVpZ2h0IiwgIjYwIik7
CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQud2VpZ2h0IiwgIjEyMCIpOworCisg
ICAga2V5SW5kZXggPSAwOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBv
YmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9wZW5LZXlDdXJzb3IoKTsiKTsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uIChldmVudCkgeworICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJz
b3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgICAgICBpZiAoY3Vyc29yKSB7CisgICAg
ICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtr
ZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmlt
YXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsKKyAgICAg
ICAgICAgIHNob3VsZEJlRmFsc2UoIid2YWx1ZScgaW4gY3Vyc29yIik7CisKKyAgICAgICAgICAg
IGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOworCisgICAgICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUu
bmFtZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVj
dFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsKKyAgICAgICAgICAgIHNob3VsZEJl
RmFsc2UoIid2YWx1ZScgaW4gY3Vyc29yIik7CisKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImtl
eUluZGV4Kys7Iik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgc2hvdWxk
QmUoImtleUluZGV4IiwgIm9iamVjdFN0b3JlRGF0YS5sZW5ndGgiKTsKKyAgICAgICAgICB0ZXN0
R3JvdXAzKCk7CisgICAgICAgIH0KKyAgICB9OworfQorCitmdW5jdGlvbiB0ZXN0R3JvdXAzKCkK
K3sKKyAgICBrZXlJbmRleCA9IDA7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IG9iamVjdFN0b3JlLmluZGV4KCd3ZWlnaHQnKS5vcGVuS2V5Q3Vyc29yKG51bGwsIElEQkN1
cnNvci5ORVhUKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgeworICAgICAg
ICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwor
ICAgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIs
ICJvYmplY3RTdG9yZURhdGFXZWlnaHRTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKKyAg
ICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFX
ZWlnaHRTb3J0W2tleUluZGV4XS5rZXkiKTsKKworICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vy
c29yLmNvbnRpbnVlKCk7Iik7CisKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5Iiwg
Im9iamVjdFN0b3JlRGF0YVdlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLndlaWdodCIpOworICAg
ICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YVdl
aWdodFNvcnRba2V5SW5kZXhdLmtleSIpOworCisgICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJ
bmRleCsrOyIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc2hvdWxk
QmUoImtleUluZGV4IiwgIm9iamVjdFN0b3JlRGF0YS5sZW5ndGgiKTsKKyAgICAgICAgICAgIHRl
c3RHcm91cDQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gdGVzdEdyb3VwNCgp
Cit7CisvKiB0aGlzIHdhcyBzcGxpdCBvdXQgaW50byBhIHNlcGFyYXRlIHRlc3QKKyAgICBkZWJ1
ZygiQ2hlY2sgdGhhdCB0aGUgbmFtZSBpbmRleCBlbmZvcmNlcyBpdHMgdW5pcXVlIGNvbnN0cmFp
bnQuIik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLnRy
YW5zYWN0aW9uKG9iamVjdFN0b3JlTmFtZSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2Jq
ZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKTsiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJvYmplY3RTdG9yZS5hZGQoeyBuYW1lOiAnQm9iJywgaGVpZ2h0OiA2Miwgd2VpZ2h0OiAxNzAg
fSwgJzIzNy0yMy03NzM4Jyk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkNPTlNUUkFJTlRfRVJS
Iik7CisqLworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRi
LnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFtZSkub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1l
KTsiKTsKKyAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gb2JqZWN0U3RvcmVE
YXRhTmFtZVNvcnQubGVuZ3RoIC0gMTsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVx
dWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCduYW1lJykub3BlbktleUN1cnNvcihudWxsLCBJREJD
dXJzb3IuUFJFVik7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAg
ICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsK
KyAgICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXki
LCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1l
U29ydFtrZXlJbmRleF0ua2V5Iik7CisKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5j
b250aW51ZSgpOyIpOworCisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmpl
Y3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAgICAgICAg
c2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tl
eUluZGV4XS5rZXkiKTsKKworICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgtLTsiKTsK
KyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRl
eCIsICItMSIpOworICAgICAgICAgICAgdGVzdEdyb3VwNSgpOworICAgICAgICB9CisgICAgfQor
fQorCitmdW5jdGlvbiB0ZXN0R3JvdXA1KCkKK3sKKyAgICBrZXlJbmRleCA9IDE7CisgICAga2V5
UmFuZ2UgPSBldmFsQW5kTG9nKCJrZXlSYW5nZSA9IElEQktleVJhbmdlLmJvdW5kKCdCb2InLCAn
Um9uJyk7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9y
ZS5pbmRleCgnbmFtZScpLm9wZW5LZXlDdXJzb3Ioa2V5UmFuZ2UpOyIpOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNv
ciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICAgIGlmIChjdXJzb3IpIHsKKyAgICAg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tl
eUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1h
cnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOworICAgICAg
ICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisgICAgICAgICAgICBldmFs
QW5kTG9nKCJrZXlJbmRleCsrOyIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIjUiKTsKKyAgICAgICAgICAgIHRlc3RHcm91cDYo
KTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gdGVzdEdyb3VwNigpCit7CisgICAg
a2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDI7Iik7CisgICAga2V5UmFuZ2UgPSBl
dmFsQW5kTG9nKCJrZXlSYW5nZSA9IElEQktleVJhbmdlLmJvdW5kKCdCb2InLCAnUm9uJywgdHJ1
ZSk7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3Jl
LmluZGV4KCduYW1lJykub3BlbktleUN1cnNvcihrZXlSYW5nZSk7Iik7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29y
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAgICAgaWYgKGN1cnNvcikgeworICAgICAg
ICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5
SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFy
eUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7CisKKyAgICAg
ICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOworICAgICAgICAgICAgZXZh
bEFuZExvZygia2V5SW5kZXgrKzsiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICI1Iik7CisgICAgICAgICAgICB0ZXN0R3JvdXA3
KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDcoKQoreworICAg
IGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAxOyIpOworICAgIGtleVJhbmdlID0g
ZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5ib3VuZCgnQm9iJywgJ1JvbicsIGZh
bHNlLCB0cnVlKTsiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2Jq
ZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuS2V5Q3Vyc29yKGtleVJhbmdlKTsiKTsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgeworICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9n
KCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgICAgICBpZiAoY3Vyc29yKSB7
CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1l
U29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNv
ci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsK
KworICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisgICAgICAg
ICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOworICAgICAgICB9CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIjQiKTsKKyAgICAgICAgICAgIHRl
c3RHcm91cDgoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gdGVzdEdyb3VwOCgp
Cit7CisgICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDI7Iik7CisgICAga2V5
UmFuZ2UgPSBldmFsQW5kTG9nKCJrZXlSYW5nZSA9IElEQktleVJhbmdlLmJvdW5kKCdCb2InLCAn
Um9uJywgdHJ1ZSwgdHJ1ZSk7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IG9iamVjdFN0b3JlLmluZGV4KCduYW1lJykub3BlbktleUN1cnNvcihrZXlSYW5nZSk7Iik7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgY3Vyc29yID0gZXZh
bEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAgICAgaWYgKGN1
cnNvcikgeworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVE
YXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0u
a2V5Iik7CisKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOwor
ICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKKyAgICAgICAgfQorICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICI0Iik7CisgICAgICAg
ICAgICB0ZXN0R3JvdXA5KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RH
cm91cDkoKQoreworICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAxOyIpOwor
ICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5sb3dlckJv
dW5kKCdCb2InKTsiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2Jq
ZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuS2V5Q3Vyc29yKGtleVJhbmdlKTsiKTsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgeworICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9n
KCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgICAgICBpZiAoY3Vyc29yKSB7
CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1l
U29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNv
ci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsK
KworICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisgICAgICAg
ICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOworICAgICAgICB9CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVT
b3J0Lmxlbmd0aCIpOworICAgICAgICAgICAgdGVzdEdyb3VwMTAoKTsKKyAgICAgICAgfQorICAg
IH0KK30KKworZnVuY3Rpb24gdGVzdEdyb3VwMTAoKQoreworICAgIGtleUluZGV4ID0gZXZhbEFu
ZExvZygia2V5SW5kZXggPSAyOyIpOworICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygia2V5UmFu
Z2UgPSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKCdCb2InLCB0cnVlKTsiKTsKKworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVu
S2V5Q3Vyc29yKGtleVJhbmdlKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkg
eworICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVz
dWx0OyIpOworICAgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vy
c29yLmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIp
OworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3Jl
RGF0YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsKKworICAgICAgICAgICAgZXZhbEFuZExvZygi
Y3Vyc29yLmNvbnRpbnVlKCk7Iik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsr
OyIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc2hvdWxkQmUoImtl
eUluZGV4IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0Lmxlbmd0aCIpOworICAgICAgICAgICAg
dGVzdEdyb3VwMTEoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gdGVzdEdyb3Vw
MTEoKQoreworICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAwOyIpOworICAg
IGtleVJhbmdlID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlSYW5nZS51cHBlckJvdW5k
KCdKb2UnKTsiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0
U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuS2V5Q3Vyc29yKGtleVJhbmdlKTsiKTsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGZ1bmN0aW9uIChldmVudCkgeworICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJj
dXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgICAgICBpZiAoY3Vyc29yKSB7Cisg
ICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29y
dFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5w
cmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsKKwor
ICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisgICAgICAgICAg
ICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOworICAgICAgICB9CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICIzIik7CisgICAgICAgICAgdGVzdEdyb3Vw
MTIoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gdGVzdEdyb3VwMTIoKQorewor
ICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAwOyIpOworICAgIGtleVJhbmdl
ID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlSYW5nZS51cHBlckJvdW5kKCdKb2UnLCB0
cnVlKTsiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3Rv
cmUuaW5kZXgoJ25hbWUnKS5vcGVuS2V5Q3Vyc29yKGtleVJhbmdlKTsiKTsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uIChldmVudCkgeworICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJz
b3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgICAgICBpZiAoY3Vyc29yKSB7CisgICAg
ICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtr
ZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmlt
YXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsKKworICAg
ICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisgICAgICAgICAgICBl
dmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIjIiKTsKKyAgICAgICAgICAgIHRlc3RHcm91
cDEzKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDEzKCkKK3sK
KyAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gMzsiKTsKKyAgICBrZXlSYW5n
ZSA9IGV2YWxBbmRMb2coImtleVJhbmdlID0gSURCS2V5UmFuZ2Uub25seSgnUGF0Jyk7Iik7CisK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCdu
YW1lJykub3BlbktleUN1cnNvcihrZXlSYW5nZSk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlv
biAoZXZlbnQpIHsKKyAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICAgICAgc2hv
dWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZh
bHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJv
YmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7CisKKyAgICAgICAgICAgIGV2
YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOworICAgICAgICAgICAgZXZhbEFuZExvZygi
a2V5SW5kZXgrKzsiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNo
b3VsZEJlKCJrZXlJbmRleCIsICI0Iik7CisgICAgICAgICAgICB0ZXN0R3JvdXAxNCgpOworICAg
ICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0R3JvdXAxNCgpCit7CisgICAga2V5SW5k
ZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDA7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCduYW1lJykub3BlbkN1cnNvcigpOyIp
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2
YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICAgIGlmIChj
dXJzb3IpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3Jl
RGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhd
LmtleSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVj
dFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBz
aG91bGRCZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtr
ZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7CisgICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vy
c29yLnZhbHVlKSB7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS53ZWln
aHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLndlaWdodCIpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUo
KTsiKTsKKworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVE
YXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0u
a2V5Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0
U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tl
eUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKKyAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJz
b3IudmFsdWUpIHsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdo
dCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgi
LCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnQubGVuZ3RoIik7CisgICAgICAgICAgICB0ZXN0R3Jv
dXAxNSgpOworICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0R3JvdXAxNSgpCit7
CisgICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IG9iamVjdFN0b3JlRGF0YU5h
bWVTb3J0Lmxlbmd0aCAtIDE7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IG9iamVjdFN0b3JlLmluZGV4KCduYW1lJykub3BlbkN1cnNvcihudWxsLCBJREJDdXJzb3Iu
UFJFVik7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgY3Vy
c29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAg
ICAgaWYgKGN1cnNvcikgeworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2Jq
ZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAg
IHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtr
ZXlJbmRleF0ua2V5Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUi
LCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5h
bWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKKyAgICAgICAgICAgIGlmICgnd2VpZ2h0
JyBpbiBjdXJzb3IudmFsdWUpIHsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZh
bHVlLndlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUud2Vp
Z2h0Iik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5j
b250aW51ZSgpOyIpOworCisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmpl
Y3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAgICAgICAg
c2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tl
eUluZGV4XS5rZXkiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUubmFtZSIs
ICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAg
ICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFt
ZVNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOworICAgICAgICAgICAgaWYgKCd3ZWlnaHQn
IGluIGN1cnNvci52YWx1ZSkgeworICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFs
dWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS53ZWln
aHQiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAga2V5SW5kZXgtLTsKKyAgICAgICAg
fQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICItMSIp
OworICAgICAgICAgICAgdGVzdEdyb3VwMTYoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVu
Y3Rpb24gdGVzdEdyb3VwMTYoKQoreworICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5k
ZXggPSAxOyIpOworICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlS
YW5nZS5ib3VuZCgnQm9iJywgJ1JvbicpOyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9wZW5DdXJzb3Ioa2V5UmFuZ2Up
OyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgIGN1cnNvciA9
IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICAgIGlm
IChjdXJzb3IpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0
b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5k
ZXhdLmtleSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9i
amVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAg
ICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29y
dFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7CisgICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4g
Y3Vyc29yLnZhbHVlKSB7CisgICAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVl
LndlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0
Iik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250
aW51ZSgpOyIpOworCisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RT
dG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAgICAgICAgc2hv
dWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUlu
ZGV4XS5rZXkiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUubmFtZSIsICJv
YmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAgICAg
ICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNv
cnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOworICAgICAgICAgICAgaWYgKCd3ZWlnaHQnIGlu
IGN1cnNvci52YWx1ZSkgeworICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1
ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLndlaWdo
dCIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsr
OyIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc2hvdWxkQmUoImtl
eUluZGV4IiwgIjUiKTsKKyAgICAgICAgICAgIHRlc3RHcm91cDE3KCk7CisgICAgICAgIH0KKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDE3KCkKK3sKKyAgICBrZXlJbmRleCA9IGV2YWxB
bmRMb2coImtleUluZGV4ID0gMjsiKTsKKyAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtleVJh
bmdlID0gSURCS2V5UmFuZ2UuYm91bmQoJ0JvYicsICdSb24nLCB0cnVlKTsiKTsKKworICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5v
cGVuQ3Vyc29yKGtleVJhbmdlKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkg
eworICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVz
dWx0OyIpOworICAgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vy
c29yLmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIp
OworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3Jl
RGF0YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJz
b3IudmFsdWUubmFtZSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUu
bmFtZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQiLCAib2Jq
ZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOworICAgICAgICAg
ICAgaWYgKCd3ZWlnaHQnIGluIGN1cnNvci52YWx1ZSkgeworICAgICAgICAgICAgICAgICAgc2hv
dWxkQmUoImN1cnNvci52YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5
SW5kZXhdLnZhbHVlLndlaWdodCIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBldmFs
QW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKKworICAgICAgICAgICAgc2hvdWxkQmUoImN1
cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUi
KTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9y
ZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vy
c29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVl
Lm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0IiwgIm9i
amVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKKyAgICAgICAg
ICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tl
eUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZXZh
bEFuZExvZygia2V5SW5kZXgrKzsiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICI1Iik7CisgICAgICAgICAgICB0ZXN0R3JvdXAx
OCgpOworICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0R3JvdXAxOCgpCit7Cisg
ICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDE7Iik7CisgICAga2V5UmFuZ2Ug
PSBldmFsQW5kTG9nKCJrZXlSYW5nZSA9IElEQktleVJhbmdlLmJvdW5kKCdCb2InLCAnUm9uJywg
ZmFsc2UsIHRydWUpOyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBv
YmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9wZW5DdXJzb3Ioa2V5UmFuZ2UpOyIpOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2co
ImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICAgIGlmIChjdXJzb3IpIHsK
KyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVT
b3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29y
LnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwor
ICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0
YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgi
Y3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0u
dmFsdWUuaGVpZ2h0Iik7CisgICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVl
KSB7CisgICAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIsICJv
YmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOwor
CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1l
U29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNv
ci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsK
KyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUubmFtZSIsICJvYmplY3RTdG9yZURh
dGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci52YWx1ZS5oZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhd
LnZhbHVlLmhlaWdodCIpOworICAgICAgICAgICAgaWYgKCd3ZWlnaHQnIGluIGN1cnNvci52YWx1
ZSkgeworICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS53ZWlnaHQiLCAi
b2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLndlaWdodCIpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOworICAgICAg
ICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIjQi
KTsKKyAgICAgICAgICAgIHRlc3RHcm91cDE5KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1
bmN0aW9uIHRlc3RHcm91cDE5KCkKK3sKKyAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUlu
ZGV4ID0gMjsiKTsKKyAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtleVJhbmdlID0gSURCS2V5
UmFuZ2UuYm91bmQoJ0JvYicsICdSb24nLCB0cnVlLCB0cnVlKTsiKTsKKworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuQ3Vy
c29yKGtleVJhbmdlKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgeworICAg
ICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIp
OworICAgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtl
eSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAg
ICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5h
bWVTb3J0W2tleUluZGV4XS5rZXkiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFs
dWUubmFtZSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIp
OworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQiLCAib2JqZWN0U3Rv
cmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOworICAgICAgICAgICAgaWYg
KCd3ZWlnaHQnIGluIGN1cnNvci52YWx1ZSkgeworICAgICAgICAgICAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci52YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhd
LnZhbHVlLndlaWdodCIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBldmFsQW5kTG9n
KCJjdXJzb3IuY29udGludWUoKTsiKTsKKworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5r
ZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAg
ICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFO
YW1lU29ydFtrZXlJbmRleF0ua2V5Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZh
bHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUi
KTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0IiwgIm9iamVjdFN0
b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKKyAgICAgICAgICAgIGlm
ICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4
XS52YWx1ZS53ZWlnaHQiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZXZhbEFuZExv
Zygia2V5SW5kZXgrKzsiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IHNob3VsZEJlKCJrZXlJbmRleCIsICI0Iik7CisgICAgICAgICAgICB0ZXN0R3JvdXAyMCgpOwor
ICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0R3JvdXAyMCgpCit7CisgICAga2V5
SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDQ7Iik7CisgICAga2V5UmFuZ2UgPSBldmFs
QW5kTG9nKCJrZXlSYW5nZSA9IElEQktleVJhbmdlLmJvdW5kKCdCb2InLCAnUm9uJyk7Iik7CisK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCdu
YW1lJykub3BlbkN1cnNvcihrZXlSYW5nZSwgSURCQ3Vyc29yLlBSRVYpOyIpOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1
cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICAgIGlmIChjdXJzb3IpIHsKKyAg
ICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0
W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnBy
aW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOworICAg
ICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0YU5h
bWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vy
c29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFs
dWUuaGVpZ2h0Iik7CisgICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7
CisgICAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIsICJvYmpl
Y3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOworCisg
ICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29y
dFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5w
cmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsKKyAg
ICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUubmFtZSIsICJvYmplY3RTdG9yZURhdGFO
YW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1
cnNvci52YWx1ZS5oZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZh
bHVlLmhlaWdodCIpOworICAgICAgICAgICAgaWYgKCd3ZWlnaHQnIGluIGN1cnNvci52YWx1ZSkg
eworICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS53ZWlnaHQiLCAib2Jq
ZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLndlaWdodCIpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleC0tOyIpOworICAgICAgICB9
CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIjAiKTsK
KyAgICAgICAgICAgIHRlc3RHcm91cDIxKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0
aW9uIHRlc3RHcm91cDIxKCkKK3sKKyAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4
ID0gMzsiKTsKKyAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtleVJhbmdlID0gSURCS2V5UmFu
Z2Uub25seSg2NSk7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9i
amVjdFN0b3JlLmluZGV4KCdoZWlnaHQnKS5vcGVuS2V5Q3Vyc29yKGtleVJhbmdlLCBJREJDdXJz
b3IuTkVYVCk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAg
Y3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAg
ICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAi
b2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7CisgICAg
ICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhSGVp
Z2h0U29ydFtrZXlJbmRleF0ua2V5Iik7CisKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNv
ci5jb250aW51ZSgpOyIpOworICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsK
KyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRl
eCIsICI1Iik7CisgICAgICAgICAgICB0ZXN0R3JvdXAyMigpOworICAgICAgICB9CisgICAgfQor
fQorCitmdW5jdGlvbiB0ZXN0R3JvdXAyMigpCit7CisgICAga2V5SW5kZXggPSBldmFsQW5kTG9n
KCJrZXlJbmRleCA9IDM7Iik7CisgICAga2V5UmFuZ2UgPSBldmFsQW5kTG9nKCJrZXlSYW5nZSA9
IElEQktleVJhbmdlLm9ubHkoNjUpOyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnaGVpZ2h0Jykub3BlbktleUN1cnNvcihrZXlSYW5n
ZSwgSURCQ3Vyc29yLk5FWFRfTk9fRFVQTElDQVRFKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0
aW9uIChldmVudCkgeworICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVu
dC50YXJnZXQucmVzdWx0OyIpOworICAgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgICAgICBz
aG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tleUluZGV4
XS52YWx1ZS5oZWlnaHQiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtl
eSIsICJvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tleUluZGV4XS5rZXkiKTsKKworICAgICAg
ICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisgICAgICAgICAgICBldmFs
QW5kTG9nKCJrZXlJbmRleCsrOyIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIjQiKTsKKyAgICAgICAgICAgIHRlc3RHcm91cDI0
KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8qIHRoaXMgd2FzIHNwbGl0IG91dCBpbnRvIGEg
c2VwYXJhdGUgdGVzdAorZnVuY3Rpb24gdGVzdEdyb3VwMjMoKQoreworICAgIGtleUluZGV4ID0g
ZXZhbEFuZExvZygia2V5SW5kZXggPSA1OyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnaGVpZ2h0Jykub3BlbktleUN1cnNvcihudWxs
LCBJREJDdXJzb3IuUFJFVl9OT19EVVBMSUNBVEUpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24gKGV2ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50
LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhd
LnZhbHVlLmhlaWdodCIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5
IiwgIm9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLmtleSIpOworCisgICAgICAg
ICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKKyAgICAgICAgICAgIGlmIChr
ZXlJbmRleCA9PSA1KSB7CisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgtLTsi
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4LS07Iik7
CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzaG91bGRCZSgia2V5SW5k
ZXgiLCAiLTEiKTsKKyAgICAgICAgICAgIHRlc3RHcm91cDI0KCk7CisgICAgICAgIH0KKyAgICB9
Cit9CisqLworCitmdW5jdGlvbiB0ZXN0R3JvdXAyNCgpCit7CisgICAga2V5SW5kZXggPSBldmFs
QW5kTG9nKCJrZXlJbmRleCA9IDM7Iik7CisgICAga2V5UmFuZ2UgPSBldmFsQW5kTG9nKCJrZXlS
YW5nZSA9IElEQktleVJhbmdlLm9ubHkoNjUpOyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnaGVpZ2h0Jykub3BlbkN1cnNvcihrZXlS
YW5nZSwgSURCQ3Vyc29yLk5FWFQpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50
KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQ7Iik7CisgICAgICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJj
dXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLmhl
aWdodCIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVj
dFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLmtleSIpOworICAgICAgICAgICAgc2hvdWxk
QmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5k
ZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVp
Z2h0IiwgIm9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIp
OworICAgICAgICAgICAgaWYgKCd3ZWlnaHQnIGluIGN1cnNvci52YWx1ZSkgeworICAgICAgICAg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YUhl
aWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLndlaWdodCIpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKKyAgICAgICAgICAgIGV2
YWxBbmRMb2coImtleUluZGV4Kys7Iik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNSIpOworICAgICAgICAgICAgdGVzdEdyb3Vw
MjUoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gdGVzdEdyb3VwMjUoKQorewor
ICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAzOyIpOworICAgIGtleVJhbmdl
ID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5vbmx5KDY1KTsiKTsKKworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ2hlaWdo
dCcpLm9wZW5DdXJzb3Ioa2V5UmFuZ2UsIElEQkN1cnNvci5ORVhUX05PX0RVUExJQ0FURSk7Iik7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgY3Vyc29yID0gZXZh
bEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAgICAgaWYgKGN1
cnNvcikgeworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVE
YXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7CisgICAgICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJ
bmRleF0ua2V5Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAi
b2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAg
ICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhSGVp
Z2h0U29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7CisgICAgICAgICAgICBpZiAoJ3dlaWdo
dCcgaW4gY3Vyc29yLnZhbHVlKSB7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52
YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUu
d2VpZ2h0Iik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNv
ci5jb250aW51ZSgpOyIpOworICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsK
KyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRl
eCIsICI0Iik7CisgICAgICAgICAgICB0ZXN0R3JvdXAyNygpOworICAgICAgICB9CisgICAgfQor
fQorCisvKiB0aGlzIHdhcyBzcGxpdCBvdXQgaW50byBhIHNlcGFyYXRlIHRlc3QKK2Z1bmN0aW9u
IHRlc3RHcm91cDI2KCkKK3sKKyAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0g
NTsiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
aW5kZXgoJ2hlaWdodCcpLm9wZW5DdXJzb3IobnVsbCwgSURCQ3Vyc29yLlBSRVZfTk9fRFVQTElD
QVRFKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgeworICAgICAgICBjdXJz
b3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgICAg
ICBpZiAoY3Vyc29yKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmpl
Y3RTdG9yZURhdGFIZWlnaHRTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFIZWlnaHRT
b3J0W2tleUluZGV4XS5rZXkiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUu
bmFtZSIsICJvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7
CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9y
ZURhdGFIZWlnaHRTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKKyAgICAgICAgICAgIGlm
ICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgi
Y3Vyc29yLnZhbHVlLndlaWdodCIsICJvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tleUluZGV4
XS52YWx1ZS53ZWlnaHQiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZXZhbEFuZExv
ZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisgICAgICAgICAgICBpZiAoa2V5SW5kZXggPT0gNSkg
eworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4LS07Iik7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleC0tOyIpOworICAgICAgICB9Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIi0xIik7Cisg
ICAgICAgICAgICB0ZXN0R3JvdXAyNygpOworICAgICAgICB9CisgICAgfQorfQorKi8KKworZnVu
Y3Rpb24gdGVzdEdyb3VwMjcoKQoreworICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5k
ZXggPSAwOyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RT
dG9yZS5pbmRleCgnbmFtZScpLm9wZW5LZXlDdXJzb3IoKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1
bmN0aW9uIChldmVudCkgeworICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBl
dmVudC50YXJnZXQucmVzdWx0OyIpOworICAgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgICAg
ICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRl
eF0udmFsdWUubmFtZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5
IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsKKworICAgICAgICAg
ICAgbmV4dEtleSA9IGV2YWxBbmRMb2coIm5leHRLZXkgPSAha2V5SW5kZXggPyAnUGF0JyA6IHVu
ZGVmaW5lZDsiKTsKKyAgICAgICAgICAgIGlmIChuZXh0S2V5KSB7CisgICAgICAgICAgICAgICAg
ZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKG5leHRLZXkpOyIpOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2Jq
ZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAg
IHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtr
ZXlJbmRleF0ua2V5Iik7CisKKyAgICAgICAgICAgIGlmICgha2V5SW5kZXgpIHsKKyAgICAgICAg
ICAgICAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gMzsiKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImtl
eUluZGV4Kys7Iik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAib2JqZWN0U3RvcmVEYXRhLmxlbmd0aCIp
OworICAgICAgICAgICAgdGVzdEdyb3VwMjgoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVu
Y3Rpb24gdGVzdEdyb3VwMjgoKQoreworICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5k
ZXggPSAwOyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RT
dG9yZS5pbmRleCgnbmFtZScpLm9wZW5LZXlDdXJzb3IoKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1
bmN0aW9uIChldmVudCkgeworICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBl
dmVudC50YXJnZXQucmVzdWx0OyIpOworICAgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgICAg
ICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRl
eF0udmFsdWUubmFtZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5
IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsKKworICAgICAgICAg
ICAgbmV4dEtleSA9IGV2YWxBbmRMb2coIm5leHRLZXkgPSAha2V5SW5kZXggPyAnRmxvJyA6IHVu
ZGVmaW5lZDsiKTsKKyAgICAgICAgICAgIGlmIChuZXh0S2V5KSB7CisgICAgICAgICAgICAgICAg
ZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKG5leHRLZXkpOyIpOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2Jq
ZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAg
IHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtr
ZXlJbmRleF0ua2V5Iik7CisKKyAgICAgICAgICAgIGtleUluZGV4ICs9IGtleUluZGV4ID8gMSA6
IDI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzaG91bGRCZSgia2V5
SW5kZXgiLCAib2JqZWN0U3RvcmVEYXRhLmxlbmd0aCIpOworICAgICAgICAgICAgdGVzdEdyb3Vw
MjkoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gdGVzdEdyb3VwMjkoKQorewor
ICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAwOyIpOworCisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9wZW5D
dXJzb3IoKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgeworICAgICAgICBj
dXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAg
ICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJv
YmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAgICAg
ICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0
W2tleUluZGV4XS5rZXkiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUubmFt
ZSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAg
ICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRh
TmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOworICAgICAgICAgICAgaWYgKCd3ZWln
aHQnIGluIGN1cnNvci52YWx1ZSkgeworICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNv
ci52YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVl
LndlaWdodCIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBuZXh0S2V5ID0gZXZhbEFu
ZExvZygibmV4dEtleSA9ICFrZXlJbmRleCA/ICdQYXQnIDogdW5kZWZpbmVkOyIpOworICAgICAg
ICAgICAgaWYgKG5leHRLZXkpIHsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3Iu
Y29udGludWUobmV4dEtleSk7Iik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29y
dFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5w
cmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsKKyAg
ICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUubmFtZSIsICJvYmplY3RTdG9yZURhdGFO
YW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1
cnNvci52YWx1ZS5oZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZh
bHVlLmhlaWdodCIpOworICAgICAgICAgICAgaWYgKCd3ZWlnaHQnIGluIGN1cnNvci52YWx1ZSkg
eworICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS53ZWlnaHQiLCAib2Jq
ZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLndlaWdodCIpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBpZiAoIWtleUluZGV4KSB7CisgICAgICAgICAgICAgICAga2V5
SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDM7Iik7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
c2hvdWxkQmUoImtleUluZGV4IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0Lmxlbmd0aCIpOwor
ICAgICAgICAgICAgdGVzdEdyb3VwMzAoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rp
b24gdGVzdEdyb3VwMzAoKQoreworICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXgg
PSAwOyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9y
ZS5pbmRleCgnbmFtZScpLm9wZW5DdXJzb3IoKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
IChldmVudCkgeworICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50
YXJnZXQucmVzdWx0OyIpOworICAgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFs
dWUubmFtZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9i
amVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsKKyAgICAgICAgICAgIHNob3Vs
ZEJlKCJjdXJzb3IudmFsdWUubmFtZSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRl
eF0udmFsdWUubmFtZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWln
aHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOwor
ICAgICAgICAgICAgaWYgKCd3ZWlnaHQnIGluIGN1cnNvci52YWx1ZSkgeworICAgICAgICAgICAg
ICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFt
ZVNvcnRba2V5SW5kZXhdLnZhbHVlLndlaWdodCIpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBuZXh0S2V5ID0gZXZhbEFuZExvZygibmV4dEtleSA9ICFrZXlJbmRleCA/ICdGbG8nIDog
dW5kZWZpbmVkOyIpOworICAgICAgICAgICAgaWYgKG5leHRLZXkpIHsKKyAgICAgICAgICAgICAg
ICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUobmV4dEtleSk7Iik7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJv
YmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAgICAg
ICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0
W2tleUluZGV4XS5rZXkiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUubmFt
ZSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAg
ICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRh
TmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOworICAgICAgICAgICAgaWYgKCd3ZWln
aHQnIGluIGN1cnNvci52YWx1ZSkgeworICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNv
ci52YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVl
LndlaWdodCIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBrZXlJbmRleCArPSBrZXlJ
bmRleCA/IDEgOiAyOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc2hv
dWxkQmUoImtleUluZGV4IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0Lmxlbmd0aCIpOworICAg
ICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3Rlc3QoKTsK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9rZXktcmVxdWlyZW1lbnRzLWRlbGV0ZS1u
dWxsLWtleS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3Vy
Y2VzL2tleS1yZXF1aXJlbWVudHMtZGVsZXRlLW51bGwta2V5LmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1NTI5
YTM3MzVkODFiNWI2MjllY2IzYmY5MjBjMDZlNGRkNDhhMWQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9rZXktcmVxdWly
ZW1lbnRzLWRlbGV0ZS1udWxsLWtleS5qcwpAQCAtMCwwICsxLDQyIEBACisvLyBvcmlnaW5hbCB0
ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5k
ZXhlZERCL3Rlc3QvdGVzdF9rZXlfcmVxdWlyZW1lbnRzLmh0bWwKKy8vIGxpY2Vuc2Ugb2Ygb3Jp
Z2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0
cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBv
cnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERC
J3MgYmVoYXZpb3IgZGVsZXRpbmcgZW50cnkgd2l0aCBubyBrZXkiKTsKKworZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxv
Y2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlv
bikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3Vj
Y2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbign
dmVyc2lvbiAxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2VBbmRD
cmVhdGVPYmplY3RTdG9yZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZUFuZENyZWF0ZU9iamVjdFN0b3Jl
KCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworICAgIG9iamVjdFN0b3JlID0g
ZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnYmFyJyk7Iik7
CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigib2JqZWN0U3RvcmUuZGVsZXRlKG51bGwpOyIs
ICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworICAgIGZpbmlzaEpTVGVzdCgpOwor
fQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMva2V5LXJlcXVpcmVt
ZW50cy1pbmxpbmUtYW5kLXBhc3NlZC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vemlsbGEvcmVzb3VyY2VzL2tleS1yZXF1aXJlbWVudHMtaW5saW5lLWFuZC1wYXNzZWQuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNWU2ZWJhZWM1ZWMyOTM0NDk2MzE4ZjQ1NTdjNjIxYTdiZGM4ODBiMAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVz
b3VyY2VzL2tleS1yZXF1aXJlbWVudHMtaW5saW5lLWFuZC1wYXNzZWQuanMKQEAgLTAsMCArMSw0
NCBAQAorLy8gb3JpZ2luYWwgdGVzdDoKKy8vIGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxs
YTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3Rfa2V5X3JlcXVpcmVtZW50cy5odG1s
CisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisvLyAiIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorLy8gICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKworaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykg
eworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0
aW9uKCJUZXN0IEluZGV4ZWREQidzIGJlaGF2aW9yIGFkZGluZyBpbmxpbmUgYW5kIHBhc3NlZCBr
ZXkgc2ltdWx0YW5lb3VzbHkiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVu
ZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAg
IGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGVidWco
Im9wZW5TdWNjZXNzKCk6Iik7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0
VmVyc2lvbigndmVyc2lvbiAxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0
YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRlYnVnKCJjbGVhbkRhdGFiYXNl
KCk6Iik7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKyAgICBvYmplY3RTdG9yZSA9
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2JheicsIHsg
a2V5UGF0aDogJ2lkJyB9KTsiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJvYmplY3RT
dG9yZS5hZGQoe2lkOiA1fSwgNSk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7
CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L3Jlc291cmNlcy9rZXktcmVxdWlyZW1lbnRzLXB1dC1uby1rZXkuanMgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9rZXktcmVxdWlyZW1lbnRzLXB1dC1u
by1rZXkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTNiZjhhMjdiMzE2MmFmYWU0NzkxZjgzMTQyZDYwZGZkNDA2
M2QwYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
emlsbGEvcmVzb3VyY2VzL2tleS1yZXF1aXJlbWVudHMtcHV0LW5vLWtleS5qcwpAQCAtMCwwICsx
LDQyIEBACisvLyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3pp
bGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9rZXlfcmVxdWlyZW1lbnRzLmh0
bWwKKy8vIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBvcnRTY3JpcHRz
KSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3Jp
cHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgYmVoYXZpb3IgcHV0aW5nIHdpdGhvdXQga2V5Iik7CisK
K2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBu
YW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0
IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFt
ZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50
YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRi
LnNldFZlcnNpb24oJzEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFz
ZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKwor
ZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRi
KTsKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ2JhcicpOyIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIm9iamVj
dFN0b3JlLnB1dCh7fSk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisgICAg
ZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291
cmNlcy9rZXktcmVxdWlyZW1lbnRzLXB1dC1udWxsLWtleS5qcyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2tleS1yZXF1aXJlbWVudHMtcHV0LW51bGwt
a2V5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdhNzAyZjhjMGQ1NzE1NzZhOWVhMGIwZGJmMGMzODlhMmNkZGI1
NDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL3Jlc291cmNlcy9rZXktcmVxdWlyZW1lbnRzLXB1dC1udWxsLWtleS5qcwpAQCAtMCwwICsx
LDQyIEBACisvLyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3pp
bGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9rZXlfcmVxdWlyZW1lbnRzLmh0
bWwKKy8vIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBvcnRTY3JpcHRz
KSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3Jp
cHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgYmVoYXZpb3IgcHV0KClpbmcgd2l0aCBudWxsIGtleSIp
OworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisg
ICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkg
VGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVu
KG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nl
c3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0
YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jl
cyhkYik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCdiYXInKTsiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJv
YmplY3RTdG9yZS5wdXQoe30sIG51bGwpOyIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VS
UiIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9yZXNvdXJjZXMva2V5LXJlcXVpcmVtZW50cy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2tleS1yZXF1aXJlbWVudHMuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYWY4Y2ExNjFiY2E5Njc5NWNmMjYxYjFkNmNmOTQ2MDY5ZmEzMzJhZgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2tl
eS1yZXF1aXJlbWVudHMuanMKQEAgLTAsMCArMSw3NSBAQAorLy8gb3JpZ2luYWwgdGVzdDoKKy8v
IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90
ZXN0L3Rlc3Rfa2V5X3JlcXVpcmVtZW50cy5odG1sCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRl
c3Q6CisvLyAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorLy8gICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
ICIKKworaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0
cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGV2ZW50
LnRhcmdldC5yZXN1bHQgYWZ0ZXIgYWRkKCkgYW5kIHB1dCgpIik7CisKK2Z1bmN0aW9uIHRlc3Qo
KQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2Nh
dGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24p
Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nl
c3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEn
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5E
YXRhYmFzZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKyAgICBvYmplY3RT
dG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2Zv
bycsIHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9KTsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZCh7fSk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBwb3N0QWRkOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworfQorCitmdW5jdGlvbiBwb3N0QWRkKCkKK3sKKyAgICBrZXkxID0gZXZhbEFuZExvZygi
a2V5MSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoe30sIGtleTEpOyIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gcG9zdFB1dDE7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHBvc3RQdXQxKCkKK3sKKyAgICBzaG91bGRCZSgiZXZl
bnQudGFyZ2V0LnJlc3VsdCIsICJrZXkxIik7CisgICAga2V5MiA9IGV2YWxBbmRMb2coImtleTIg
PSAxMDsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3Jl
LnB1dCh7fSwga2V5Mik7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0UHV0MjsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rp
b24gcG9zdFB1dDIoKQoreworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgImtl
eTIiKTsKKyAgICBrZXkyID0gZXZhbEFuZExvZygia2V5MiA9IDEwMDsiKTsKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCh7fSwga2V5Mik7Iik7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0UHV0MzsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gcG9zdFB1dDMoKQoreworICAg
IHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgImtleTIiKTsKKyAgICBmaW5pc2hKU1Rl
c3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL29iamVj
dC1jdXJzb3JzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNv
dXJjZXMvb2JqZWN0LWN1cnNvcnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmM4Yzc3MmYzNzNjNDEwMDY1MTAx
Y2EwNGU4MWIzNzFjM2EzODM1MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL29iamVjdC1jdXJzb3JzLmpzCkBAIC0wLDAg
KzEsODYgQEAKKy8vIG9yaWdpbmFsIHRlc3Q6CisvLyBodHRwOi8vbXhyLm1vemlsbGEub3JnL21v
emlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X29iamVjdEN1cnNvcnMuaHRt
bAorLy8gbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorLy8gIiBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKy8vICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCisKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMp
IHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlw
dGlvbigiVGVzdCBJbmRleGVkREIncyBpbmRleCBjdXJzb3JzIik7CisKK2Z1bmN0aW9uIHRlc3Qo
KQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2Nh
dGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24p
Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nl
c3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEn
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5E
YXRhYmFzZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKyAgICBhdXRvSW5j
cmVtZW50ID0gZXZhbEFuZExvZygiYXV0b0luY3JlbWVudCA9IGZhbHNlOyIpOworICAgIG9iamVj
dFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgn
YScsIHsga2V5UGF0aDogJ2lkJywgYXV0b0luY3JlbWVudDogYXV0b0luY3JlbWVudCB9KTsiKTsK
KyAgICBpbmRleGVzID0gWworICAgICAgICB7IG5hbWU6ICJhIiwgb3B0aW9uczogeyB9IH0sCisg
ICAgICAgIHsgbmFtZTogImIiLCBvcHRpb25zOiB7IHVuaXF1ZTogdHJ1ZSB9IH0KKyAgICBdOwor
ICAgIGZvciAoaiBpbiBpbmRleGVzKSB7CisgICAgICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3Jl
LmNyZWF0ZUluZGV4KGluZGV4ZXNbal0ubmFtZSwgJ25hbWUnLCBpbmRleGVzW2pdLm9wdGlvbnMp
OyIpOworICAgIH0KKyAgICBkYXRhID0gZXZhbEFuZExvZygiZGF0YSA9IHsgbmFtZTogJ0Jlbics
IGlkOiAxIH07Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RT
dG9yZS5hZGQoZGF0YSk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0QWRkOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biBwb3N0QWRkKCkKK3sKKyAgICBudW1JbmRleGVzID0gaW5kZXhlcy5sZW5ndGg7CisgICAgaW5k
ZXhlc0ZpbmlzaGVkID0gMDsKKyAgICBmb3IgKGogaW4gaW5kZXhlcykgeworICAgICAgICBpbmRl
eCA9IGV2YWxBbmRMb2coImluZGV4ID0gb2JqZWN0U3RvcmUuaW5kZXgoaW5kZXhlc1tqXS5uYW1l
KTsiKTsKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleC5vcGVu
Q3Vyc29yKCk7Iik7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7Cisg
ICAgICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS5uYW1lIiwgIidC
ZW4nIik7CisgICAgICAgICAgICBpZiAoKytpbmRleGVzRmluaXNoZWQgPT0gbnVtSW5kZXhlcykg
eworICAgICAgICAgICAgICAgIGlmIChhdXRvSW5jcmVtZW50KSB7CisgICAgICAgICAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgIHNldHVwQXV0b0luY3JlbWVudCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHNldHVwQXV0b0luY3Jl
bWVudCgpCit7CisgICAgYXV0b0luY3JlbWVudCA9IGV2YWxBbmRMb2coImF1dG9JbmNyZW1lbnQg
PSB0cnVlOyIpOworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBk
Yi5jcmVhdGVPYmplY3RTdG9yZSgnYicsIHsga2V5UGF0aDogJ2lkJywgYXV0b0luY3JlbWVudDog
YXV0b0luY3JlbWVudCB9KTsiKTsKKyAgICBmb3IgKGogaW4gaW5kZXhlcykgeworICAgICAgICBl
dmFsQW5kTG9nKCJvYmplY3RTdG9yZS5jcmVhdGVJbmRleChpbmRleGVzW2pdLm5hbWUsICduYW1l
JywgaW5kZXhlc1tqXS5vcHRpb25zKTsiKTsKKyAgICB9CisgICAgZGF0YSA9IGV2YWxBbmRMb2co
ImRhdGEgPSB7IG5hbWU6ICdCZW4nIH07Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoZGF0YSk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBwb3N0QWRkOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvb2JqZWN0LWlk
ZW50aXR5LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJj
ZXMvb2JqZWN0LWlkZW50aXR5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIxOTkyMGE5OWJmMmZkMDRlZWVlMTVh
NzViMDIzYzNjNzMwYTZkOWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9vYmplY3QtaWRlbnRpdHkuanMKQEAgLTAsMCAr
MSw2NiBAQAorLy8gb3JpZ2luYWwgdGVzdDoKKy8vIGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96
aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3Rfb2JqZWN0X2lkZW50aXR5Lmh0
bWw/Zm9yY2U9MQorLy8gbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorLy8gIiBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKy8vICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCisKK2lmICh0aGlzLmltcG9y
dFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQor
CitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREI6IG9iamVjdCBpZGVudGl0eSIpOworCitmdW5j
dGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9
IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRh
YmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRl
c2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVy
c2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVPYmplY3RTdG9yZUFu
ZEluZGV4OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBjcmVhdGVPYmplY3RTdG9yZUFuZEluZGV4KCkKK3sKKyAgICB0cmFuc2Fj
dGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9u
OyIpOworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisgICAgb2JqZWN0U3RvcmUxID0g
ZXZhbEFuZExvZygib2JqZWN0U3RvcmUxID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycpOyIp
OworICAgIG9iamVjdFN0b3JlMiA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlMiA9IHRyYW5zYWN0
aW9uLm9iamVjdFN0b3JlKCdmb28nKTsiKTsKKyAgICBzaG91bGRCZVRydWUoIm9iamVjdFN0b3Jl
MSA9PT0gb2JqZWN0U3RvcmUyIik7CisgICAgaW5kZXgxID0gZXZhbEFuZExvZygiaW5kZXgxID0g
b2JqZWN0U3RvcmUxLmNyZWF0ZUluZGV4KCdiYXInLCAna2V5Jyk7Iik7CisgICAgaW5kZXgyID0g
ZXZhbEFuZExvZygiaW5kZXgyID0gb2JqZWN0U3RvcmUyLmluZGV4KCdiYXInKTsiKTsKKyAgICBz
aG91bGRCZVRydWUoImluZGV4MSA9PT0gaW5kZXgyIik7CisgICAgZXZhbEFuZExvZygidHJhbnNh
Y3Rpb24ub25jb21wbGV0ZSA9IHRlc3RJZGVudGl0eVNvbWVNb3JlOyIpOworfQorCitmdW5jdGlv
biB0ZXN0SWRlbnRpdHlTb21lTW9yZSgpCit7CisgICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9n
KCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCdmb28nKTsiKTsKKyAgICBvYmplY3RTdG9y
ZTMgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZTMgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgn
Zm9vJyk7Iik7CisgICAgb2JqZWN0U3RvcmU0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmU0ID0g
dHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ2ZvbycpOyIpOworICAgIHNob3VsZEJlVHJ1ZSgib2Jq
ZWN0U3RvcmUzID09PSBvYmplY3RTdG9yZTQiKTsKKworICAgIHNob3VsZEJlRmFsc2UoIm9iamVj
dFN0b3JlMyA9PT0gb2JqZWN0U3RvcmUxIik7CisgICAgc2hvdWxkQmVGYWxzZSgib2JqZWN0U3Rv
cmU0ID09PSBvYmplY3RTdG9yZTIiKTsKKworICAgIGluZGV4MyA9IGV2YWxBbmRMb2coImluZGV4
MyA9IG9iamVjdFN0b3JlMy5pbmRleCgnYmFyJyk7Iik7CisgICAgaW5kZXg0ID0gZXZhbEFuZExv
ZygiaW5kZXg0ID0gb2JqZWN0U3RvcmU0LmluZGV4KCdiYXInKTsiKTsKKyAgICBzaG91bGRCZVRy
dWUoImluZGV4MyA9PT0gaW5kZXg0Iik7CisKKyAgICBzaG91bGRCZUZhbHNlKCJpbmRleDMgPT09
IGluZGV4MSIpOworICAgIHNob3VsZEJlRmFsc2UoImluZGV4NCA9PT0gaW5kZXgyIik7CisKKyAg
ICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVz
b3VyY2VzL29iamVjdC1zdG9yZS1pbmxpbmUtYXV0b2luY3JlbWVudC1rZXktYWRkZWQtb24tcHV0
LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvb2Jq
ZWN0LXN0b3JlLWlubGluZS1hdXRvaW5jcmVtZW50LWtleS1hZGRlZC1vbi1wdXQuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzFjYmVlNTY0OGI4M2M2YzY2YzUwN2ZlMWNlODZkMzMyZmNkZDljYwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2Vz
L29iamVjdC1zdG9yZS1pbmxpbmUtYXV0b2luY3JlbWVudC1rZXktYWRkZWQtb24tcHV0LmpzCkBA
IC0wLDAgKzEsNjQgQEAKKy8vIG9yaWdpbmFsIHRlc3Q6CisvLyBodHRwOi8vbXhyLm1vemlsbGEu
b3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X29iamVjdFN0b3Jl
X2lubGluZV9hdXRvaW5jcmVtZW50X2tleV9hZGRlZF9vbl9wdXQuaHRtbD9mb3JjZT0xCisvLyBs
aWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisvLyAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgorLy8gICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvICIKKworaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAg
IGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Jyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJU
ZXN0IEluZGV4ZWREQiBhZGRpbmcgYW4gYXV0b2luY3JlbWVudGVkIGtleSBhbmQgcmV0cmlldmlu
ZyBpdCBzdWNjZXNzZnVsbHkiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVu
ZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAg
IGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBl
dmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBzZXR1cE9iamVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXR1cE9iamVjdFN0b3JlKCkKK3sK
KyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworICAgIHRlc3QgPSBldmFsQW5kTG9nKCJ0
ZXN0ID0ge1xuIiArCisiICAgICAgICBuYW1lOiAnaW5saW5lIGtleTsga2V5IGdlbmVyYXRvcics
XG4iICsKKyIgICAgICAgIGF1dG9JbmNyZW1lbnQ6IHRydWUsXG4iICsKKyIgICAgICAgIHN0b3Jl
ZE9iamVjdDogeyBuYW1lOiAnTGluY29sbicgfSxcbiIgKworIiAgICAgICAga2V5TmFtZTogJ2lk
JyxcbiIgKworIiAgICB9OyIpOworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0
U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSh0ZXN0Lm5hbWUsIHsga2V5UGF0aDogdGVzdC5r
ZXlOYW1lLCBhdXRvSW5jcmVtZW50OiB0ZXN0LmF1dG9JbmNyZW1lbnQgfSk7Iik7CisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQodGVzdC5zdG9yZWRP
YmplY3QpOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkU3VjY2VzczsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gYWRk
U3VjY2VzcygpCit7CisgICAgaWQgPSBldmFsQW5kTG9nKCJpZCA9IGV2ZW50LnRhcmdldC5yZXN1
bHQ7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5n
ZXQoaWQpOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0U3VjY2VzczsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZ2V0
U3VjY2VzcygpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQubmFtZSIsICJ0
ZXN0LnN0b3JlZE9iamVjdC5uYW1lIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1
bHQuaWQiLCAiaWQiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL29iamVjdC1zdG9yZS1yZW1vdmUtdmFsdWVzLmpzIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvb2JqZWN0LXN0
b3JlLXJlbW92ZS12YWx1ZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjEyOWY0NTBiNzQ1M2NjNWIyYjZmYjI3
N2FmYThhZDNjYWM1MGM3NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL29iamVjdC1zdG9yZS1yZW1vdmUtdmFsdWVzLmpz
CkBAIC0wLDAgKzEsMTIxIEBACisvLyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3pp
bGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9vYmplY3RT
dG9yZV9yZW1vdmVfdmFsdWVzLmh0bWw/Zm9yY2U9MQorLy8gbGljZW5zZSBvZiBvcmlnaW5hbCB0
ZXN0OgorLy8gIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKy8vICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LyAiCisKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8u
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlw
dHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREI6IGFkZHMs
IGdldHMsIGRlbGV0ZXMsIGFuZCByZS1nZXRzIGEgcmVjb3JkIGluIGEgdmFyaWV0eSBvZiBkaWZm
ZXJlbnQgb2JqZWN0IHN0b3JlIGNvbmZpZ3VyYXRpb25zIik7CisKK2Z1bmN0aW9uIHRlc3QoKQor
eworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlv
bi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3Mo
KQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisK
KyAgICBkYXRhID0gZXZhbEFuZExvZygiZGF0YSA9IFtcbiIgKworIiAgICAgICAgeyBuYW1lOiAn
aW5saW5lIGtleTsga2V5IGdlbmVyYXRvcicsXG4iICsKKyIgICAgICAgICAgYXV0b0luY3JlbWVu
dDogdHJ1ZSxcbiIgKworIiAgICAgICAgICBzdG9yZWRPYmplY3Q6IHtuYW1lOiAnTGluY29sbid9
LFxuIiArCisiICAgICAgICAgIGtleU5hbWU6ICdpZCcsXG4iICsKKyIgICAgICAgICAga2V5VmFs
dWU6IHVuZGVmaW5lZCxcbiIgKworIiAgICAgICAgfSxcbiIgKworIiAgICAgICAgeyBuYW1lOiAn
aW5saW5lIGtleTsgbm8ga2V5IGdlbmVyYXRvcicsXG4iICsKKyIgICAgICAgICAgYXV0b0luY3Jl
bWVudDogZmFsc2UsXG4iICsKKyIgICAgICAgICAgc3RvcmVkT2JqZWN0OiB7aWQ6IDEsIG5hbWU6
ICdMaW5jb2xuJ30sXG4iICsKKyIgICAgICAgICAga2V5TmFtZTogJ2lkJyxcbiIgKworIiAgICAg
ICAgICBrZXlWYWx1ZTogdW5kZWZpbmVkLFxuIiArCisiICAgICAgICB9LFxuIiArCisiICAgICAg
ICB7IG5hbWU6ICdvdXQgb2YgbGluZSBrZXk7IGtleSBnZW5lcmF0b3InLFxuIiArCisiICAgICAg
ICAgIGF1dG9JbmNyZW1lbnQ6IHRydWUsXG4iICsKKyIgICAgICAgICAgc3RvcmVkT2JqZWN0OiB7
bmFtZTogJ0xpbmNvbG4nfSxcbiIgKworIiAgICAgICAgICBrZXlOYW1lOiB1bmRlZmluZWQsXG4i
ICsKKyIgICAgICAgICAga2V5VmFsdWU6IHVuZGVmaW5lZCxcbiIgKworIiAgICAgICAgfSxcbiIg
KworIiAgICAgICAgeyBuYW1lOiAnb3V0IG9mIGxpbmUga2V5OyBubyBrZXkgZ2VuZXJhdG9yJyxc
biIgKworIiAgICAgICAgICBhdXRvSW5jcmVtZW50OiBmYWxzZSxcbiIgKworIiAgICAgICAgICBz
dG9yZWRPYmplY3Q6IHtuYW1lOiAnTGluY29sbid9LFxuIiArCisiICAgICAgICAgIGtleU5hbWU6
IHVuZGVmaW5lZCxcbiIgKworIiAgICAgICAgICBrZXlWYWx1ZTogMSxcbiIgKworIiAgICAgICAg
fVxuIiArCisiICAgIF07Iik7CisKKyAgICBpID0gZXZhbEFuZExvZygiaSA9IDA7Iik7CisgICAg
c2V0VmVyc2lvbigpOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uKCkKK3sKKyAgICBpZiAoaSA8
IGRhdGEubGVuZ3RoKSB7CisgICAgICAgIHRlc3QgPSBkYXRhW2ldOworICAgICAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAgICAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZU9iamVjdFN0b3JlOworICAgICAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB9IGVsc2UgeworICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZU9iamVjdFN0b3JlKCkK
K3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgaWYgKHRlc3Qua2V5TmFt
ZSkgeworICAgICAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUodGVzdC5uYW1lLCB7IGtleVBhdGg6IHRlc3Qua2V5TmFtZSwgYXV0
b0luY3JlbWVudDogdGVzdC5hdXRvSW5jcmVtZW50IH0pOyIpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSh0ZXN0Lm5hbWUsIHsgYXV0b0luY3JlbWVudDogdGVzdC5hdXRvSW5jcmVtZW50IH0p
OyIpOworICAgIH0KKyAgICBpZiAodGVzdC5rZXlWYWx1ZSkgeworICAgICAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZCh0ZXN0LnN0b3JlZE9iamVjdCwg
dGVzdC5rZXlWYWx1ZSk7Iik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQodGVzdC5zdG9yZWRPYmplY3QpOyIpOwor
ICAgIH0KKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldFJlY29yZDsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZ2V0UmVjb3Jk
KCkKK3sKKyAgICBpZCA9IGV2YWxBbmRMb2coImlkID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmdldChpZCk7
Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVSZWNvcmQ7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZVJl
Y29yZCgpCit7CisgICAgc2hvdWxkQmUoInRlc3Quc3RvcmVkT2JqZWN0Lm5hbWUiLCAiZXZlbnQu
dGFyZ2V0LnJlc3VsdC5uYW1lIik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IG9iamVjdFN0b3JlLmRlbGV0ZShpZCk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRSZWNvcmRB
Z2FpbjsKK30KKworZnVuY3Rpb24gZ2V0UmVjb3JkQWdhaW4oKQoreworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KGlkKTsiKTsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZpbmFsQ2hlY2s7Cit9CisKK2Z1bmN0aW9uIGZpbmFsQ2hlY2soKQoreworICAgIHNob3Vs
ZEJlVHJ1ZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCA9PT0gdW5kZWZpbmVkIik7CisgICAgaSsrOwor
ICAgIHNldFZlcnNpb24oKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVz
b3VyY2VzL29iamVjdHN0b3JlbmFtZXMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL3Jlc291cmNlcy9vYmplY3RzdG9yZW5hbWVzLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5OWZl
NzQ4NzI4MTZkMTU2OTM4MTlkZTJhYjFlYjE4ZmVhMDM5ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9vYmplY3RzdG9y
ZW5hbWVzLmpzCkBAIC0wLDAgKzEsNDcgQEAKKy8vIG9yaWdpbmFsIHRlc3Q6CisvLyBodHRwOi8v
bXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0
X2dsb2JhbF9kYXRhLmh0bWwKKy8vIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhp
cy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMn
KTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mgb2JqZWN0U3RvcmVOYW1lcyBh
cnJheSIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygp
OworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24g
PSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWRE
Qi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3Bl
blN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRi
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNs
ZWFuRGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRlbGV0ZUFsbE9iamVj
dFN0b3JlcyhkYik7CisKKyAgICBvYmplY3RTdG9yZU5hbWUgPSAiYSI7CisgICAgb2JqZWN0U3Rv
cmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKG9iamVj
dFN0b3JlTmFtZSwgeyBrZXlQYXRoOiAnaWQnLCBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOyIpOwor
CisgICAgc2hvdWxkQmVUcnVlKCInb2JqZWN0U3RvcmVOYW1lcycgaW4gZGIiKTsKKyAgICBzaG91
bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMSIpOworICAgIHNob3VsZEJlKCJk
Yi5vYmplY3RTdG9yZU5hbWVzLml0ZW0oMCkiLCAib2JqZWN0U3RvcmVOYW1lIik7CisgICAgZmlu
aXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNl
cy9vZGQtcmVzdWx0LW9yZGVyLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9yZXNvdXJjZXMvb2RkLXJlc3VsdC1vcmRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OGQ5YTJhYzBl
MWEwNjg3YzkwMDE0NWY0NTliZDNhNzRmZjU2MjY0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvb2RkLXJlc3VsdC1vcmRl
ci5qcwpAQCAtMCwwICsxLDExNyBAQAorLy8gb3JpZ2luYWwgdGVzdDoKKy8vIGh0dHA6Ly9teHIu
bW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3Rfb2Rk
X3Jlc3VsdF9vcmRlci5odG1sP3Jhdz0xCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Cisv
LyAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorLy8g
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKwor
aWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hh
cmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQjogcmVxdWVzdCByZXN1
bHQgcGVyc2lzdHMgaW4gc2V0VGltZW91dCBjYWxsYmFjayIpOworCitmdW5jdGlvbiB0ZXN0KCkK
K3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRp
b24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNz
KCkKK3sKKyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBkYiA9IGV2YWxBbmRMb2co
ImRiID0gbnVsbDsiKTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICBkYiA9
IGV2YWxBbmRMb2coImRiID0gcmVxdWVzdC5yZXN1bHQ7Iik7CisgICAgICAgIGNoZWNrRGF0YWJh
c2VUeXBlKCk7CisgICAgfSwgMCk7Cit9CisKK2Z1bmN0aW9uIGNoZWNrRGF0YWJhc2VUeXBlKCkK
K3sKKyAgICBkZWJ1ZygiY2hlY2tEYXRhYmFzZVR5cGUoKToiKTsKKyAgICBzaG91bGRCZVRydWUo
ImRiIGluc3RhbmNlb2YgSURCRGF0YWJhc2UiKTsKKyAgICBkYi5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5z
ZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldHVwT2JqZWN0U3Rv
cmU7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIHNldHVwT2JqZWN0U3RvcmUoKQoreworICAgIGRlYnVnKCJzZXR1cE9iamVjdFN0
b3JlKCk6Iik7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKyAgICBvYmplY3RTdG9y
ZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2Zvbycs
IHsga2V5UGF0aDogJ2tleScsIGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7CisgICAgaW5kZXgg
PSBldmFsQW5kTG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdmb28nLCAnaW5k
ZXgnKTsiKTsKKyAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24ub25jb21w
bGV0ZSA9IGFkZFJlY29yZDsiKTsKK30KKworZnVuY3Rpb24gYWRkUmVjb3JkKCkKK3sKKyAgICBk
ZWJ1ZygiYWRkUmVjb3JkKCk6Iik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZSA9IGRiLnRyYW5zYWN0aW9uKCdmb28nLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRF
KS5vYmplY3RTdG9yZSgnZm9vJyk7Iik7CisgICAgZGF0YSA9IGV2YWxBbmRMb2coImRhdGEgPSB7
IGtleTogNSwgaW5kZXg6IDEwIH07Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVl
c3QgPSBvYmplY3RTdG9yZS5hZGQoZGF0YSk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBh
ZGRTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworfQorCitmdW5jdGlvbiBhZGRTdWNjZXNzKCkKK3sKKyAgICBkZWJ1ZygiYWRkU3VjY2Vzcygp
OiIpOworICAgIGtleSA9IGV2YWxBbmRMb2coImtleSA9IG51bGw7Iik7CisgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsKKyAgICAgIGtleSA9IGV2YWxBbmRMb2coImtleSA9IHJlcXVlc3QucmVz
dWx0OyIpOworICAgICAgY2hlY2tBZGRlZEtleSgpOworICAgIH0sIDApOworfQorCitmdW5jdGlv
biBjaGVja0FkZGVkS2V5KCkKK3sKKyAgICBkZWJ1ZygiY2hlY2tBZGRlZEtleSgpOiIpOworICAg
IHNob3VsZEJlKCJrZXkiLCAiZGF0YS5rZXkiKTsKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRM
b2coIm9iamVjdFN0b3JlID0gZGIudHJhbnNhY3Rpb24oJ2ZvbycpLm9iamVjdFN0b3JlKCdmb28n
KTsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmdl
dChkYXRhLmtleSk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRTdWNjZXNzOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biBnZXRTdWNjZXNzKCkKK3sKKyAgICBkZWJ1ZygiZ2V0U3VjY2VzcygpOiIpOworICAgIHJlY29y
ZCA9IGV2YWxBbmRMb2coInJlY29yZCA9IG51bGw7Iik7CisgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsKKyAgICAgIHJlY29yZCA9IGV2YWxBbmRMb2coInJlY29yZCA9IHJlcXVlc3QucmVzdWx0
OyIpOworICAgICAgY2hlY2tSZXRyaWV2ZWRLZXkoKTsKKyAgICB9LCAwKTsKK30KKworZnVuY3Rp
b24gY2hlY2tSZXRyaWV2ZWRLZXkoKQoreworICAgIGRlYnVnKCJjaGVja1JldHJpZXZlZEtleSgp
OiIpOworICAgIHNob3VsZEJlKCJyZWNvcmQua2V5IiwgImRhdGEua2V5Iik7CisgICAgc2hvdWxk
QmUoInJlY29yZC5pbmRleCIsICJkYXRhLmluZGV4Iik7CisgICAgZGVsZXRlUmVjb3JkKCk7Cit9
CisKK2Z1bmN0aW9uIGRlbGV0ZVJlY29yZCgpCit7CisgICAgZGVidWcoImRlbGV0ZVJlY29yZCgp
OiIpOworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi50cmFu
c2FjdGlvbignZm9vJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3RvcmUoJ2Zv
bycpOyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
ZGVsZXRlKGRhdGEua2V5KTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZVN1Y2Nl
c3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIGRlbGV0ZVN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJkZWxldGVTdWNjZXNzKCk6
Iik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL3Jlc291cmNlcy9vcGVuLWRhdGFiYXNlLW51bGwtbmFtZS5qcyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL29wZW4tZGF0YWJhc2UtbnVsbC1uYW1l
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmRlN2YzNWJkMzQ4OGExYzExNDVjM2Q2MmMxYzA3MDBhODc1MTg3ODQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L3Jlc291cmNlcy9vcGVuLWRhdGFiYXNlLW51bGwtbmFtZS5qcwpAQCAtMCwwICsxLDMxIEBACisv
LyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3Nv
dXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9vcGVuX2VtcHR5X2RiLmh0bWw/Zm9yY2U9MQor
Ly8gbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorLy8gIiBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKy8vICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCisKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsK
KyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlv
bigiVGVzdCBJbmRleGVkREI6IHNob3VsZCBOT1QgdGhyb3cgd2hlbiBvcGVuaW5nIGEgZGF0YWJh
c2Ugd2l0aCBhIG51bGwgbmFtZSIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVW
ZW5kb3JQcmVmaXhlcygpOworCisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG51bGwpOyIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sK
KyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNo
b3VsZEJlKCJkYi5uYW1lIiwgIidudWxsJyIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0
ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvcHV0LWdldC12YWx1ZXMuanMg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9wdXQtZ2V0
LXZhbHVlcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNDRkMzcyYTU3YjUyMDZkYWE2ZGI4NjQwMDM0Y2Y4M2Vm
NGI1OTEwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW96aWxsYS9yZXNvdXJjZXMvcHV0LWdldC12YWx1ZXMuanMKQEAgLTAsMCArMSwxMDggQEAKKy8v
IG9yaWdpbmFsIHRlc3Q6CisvLyBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291
cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X3B1dF9nZXRfdmFsdWVzLmh0bWwKKy8vIGxpY2Vu
c2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1w
b3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsK
KyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3Qg
SW5kZXhlZERCJ3MgcHV0dGluZyBhbmQgZ2V0dGluZyB2YWx1ZXMgaW4gYW4gb2JqZWN0IHN0b3Jl
Iik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisK
KyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJN
eSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9w
ZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3Vj
Y2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30K
KworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBl
dmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0
YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jl
cyhkYik7CisKKyAgICB0ZXN0U3RyaW5nID0gZXZhbEFuZExvZygidGVzdFN0cmluZyA9IHsga2V5
OiAwLCB2YWx1ZTogJ3Rlc3RTdHJpbmcnIH07Iik7CisgICAgdGVzdEludCA9IGV2YWxBbmRMb2co
InRlc3RJbnQgPSB7IGtleTogMSwgdmFsdWU6IDEwMDIgfTsiKTsKKyAgICBvYmplY3RTdG9yZSA9
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ09iamVjdHMn
LCB7IGF1dG9JbmNyZW1lbnQ6IGZhbHNlIH0pOyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKHRlc3RTdHJpbmcudmFsdWUsIHRlc3RTdHJpbmcu
a2V5KTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RBZGQ7Cit9CisKK2Z1bmN0aW9uIHBvc3RBZGQo
KQoreworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgInRlc3RTdHJpbmcua2V5
Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5nZXQo
dGVzdFN0cmluZy5rZXkpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdEdldDsKK30KKworZnVuY3Rp
b24gcG9zdEdldCgpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAidGVz
dFN0cmluZy52YWx1ZSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2Jq
ZWN0U3RvcmUuYWRkKHRlc3RJbnQudmFsdWUsIHRlc3RJbnQua2V5KTsiKTsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IHBvc3RBZGRJbnQ7Cit9CisKK2Z1bmN0aW9uIHBvc3RBZGRJbnQoKQoreworICAgIHNob3Vs
ZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgInRlc3RJbnQua2V5Iik7CisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5nZXQodGVzdEludC5rZXkpOyIpOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gcG9zdEdldEludDsKK30KKworZnVuY3Rpb24gcG9zdEdldEludCgpCit7
CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAidGVzdEludC52YWx1ZSIpOwor
ICAgIG9iamVjdFN0b3JlQXV0b0luY3JlbWVudCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlQXV0
b0luY3JlbWVudCA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdBdXRvSW5jcmVtZW50ZWQgT2JqZWN0
cycsIHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9KTsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygicmVxdWVzdCA9IG9iamVjdFN0b3JlQXV0b0luY3JlbWVudC5hZGQodGVzdFN0cmluZy52YWx1
ZSk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0QWRkQXV0b0luY3JlbWVudDsKK30KKworZnVuY3Rp
b24gcG9zdEFkZEF1dG9JbmNyZW1lbnQoKQoreworICAgIHRlc3RTdHJpbmcua2V5ID0gZXZhbEFu
ZExvZygidGVzdFN0cmluZy5rZXkgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmVBdXRvSW5jcmVtZW50LmdldCh0
ZXN0U3RyaW5nLmtleSk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0R2V0QXV0b0luY3JlbWVudDsK
K30KKworZnVuY3Rpb24gcG9zdEdldEF1dG9JbmNyZW1lbnQoKQoreworICAgIHNob3VsZEJlKCJl
dmVudC50YXJnZXQucmVzdWx0IiwgInRlc3RTdHJpbmcudmFsdWUiKTsKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlQXV0b0luY3JlbWVudC5hZGQodGVzdElu
dC52YWx1ZSk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0QWRkSW50QXV0b0luY3JlbWVudDsKK30K
KworZnVuY3Rpb24gcG9zdEFkZEludEF1dG9JbmNyZW1lbnQoKQoreworICAgIHRlc3RJbnQua2V5
ID0gZXZhbEFuZExvZygidGVzdEludC5rZXkgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmVBdXRvSW5jcmVtZW50
LmdldCh0ZXN0SW50LmtleSk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0R2V0SW50QXV0b0luY3Jl
bWVudDsKK30KKworZnVuY3Rpb24gcG9zdEdldEludEF1dG9JbmNyZW1lbnQoKQoreworICAgIHNo
b3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgInRlc3RJbnQudmFsdWUiKTsKKyAgICBmaW5p
c2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2Vz
L3JlYWRvbmx5LXRyYW5zYWN0aW9ucy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vemlsbGEvcmVzb3VyY2VzL3JlYWRvbmx5LXRyYW5zYWN0aW9ucy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
NzBjNDkyNWQ1NDhhNzY2YWJhMjgyNjBmYTY0MzYxYjVkYWU4NWZlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvcmVhZG9u
bHktdHJhbnNhY3Rpb25zLmpzCkBAIC0wLDAgKzEsNTggQEAKKy8vIG9yaWdpbmFsIHRlc3Q6Cisv
LyBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIv
dGVzdC90ZXN0X3JlYWRvbmx5X3RyYW5zYWN0aW9ucy5odG1sCisvLyBsaWNlbnNlIG9mIG9yaWdp
bmFsIHRlc3Q6CisvLyAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorLy8gICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvICIKKworaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMo
Jy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0
U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidz
IHJlYWRvbmx5IHRyYW5zYWN0aW9ucyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1v
dmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7
CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBk
YiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQorewor
ICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBvc05hbWUgPSAidGVzdCBzdG9y
ZSI7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKG9zTmFtZSwgeyBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOyIpOworICAgIGV2
ZW50LnRhcmdldC5yZXN1bHQub25jb21wbGV0ZSA9IHNldFZlcnNpb25Db21wbGV0ZTsKK30KKwor
ZnVuY3Rpb24gc2V0VmVyc2lvbkNvbXBsZXRlKCkKK3sKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJkYi50cmFuc2FjdGlvbihbb3NOYW1lXSkub2JqZWN0U3RvcmUob3NOYW1lKS5hZGQoe30p
OyIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5SRUFEX09OTFlfRVJSIik7CisgICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24ob3NOYW1lKS5vYmplY3RTdG9yZShvc05hbWUp
LmFkZCh7fSk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlJFQURfT05MWV9FUlIiKTsKKyAgICBr
ZXkxID0gZXZhbEFuZExvZygia2V5MSA9IDE7Iik7CisgICAga2V5MiA9IGV2YWxBbmRMb2coImtl
eTIgPSAyOyIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKFtv
c05hbWVdKS5vYmplY3RTdG9yZShvc05hbWUpLnB1dCh7fSwga2V5MSk7IiwgIklEQkRhdGFiYXNl
RXhjZXB0aW9uLlJFQURfT05MWV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJk
Yi50cmFuc2FjdGlvbihvc05hbWUpLm9iamVjdFN0b3JlKG9zTmFtZSkucHV0KHt9LCBrZXkyKTsi
LCAiSURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUiIpOworICAgIGV2YWxBbmRFeHBl
Y3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKFtvc05hbWVdKS5vYmplY3RTdG9yZShvc05hbWUp
LnB1dCh7fSwga2V5MSk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlJFQURfT05MWV9FUlIiKTsK
KyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbihvc05hbWUpLm9iamVj
dFN0b3JlKG9zTmFtZSkucHV0KHt9LCBrZXkxKTsiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uUkVB
RF9PTkxZX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9u
KFtvc05hbWVdKS5vYmplY3RTdG9yZShvc05hbWUpLmRlbGV0ZShrZXkxKTsiLCAiSURCRGF0YWJh
c2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24o
ImRiLnRyYW5zYWN0aW9uKG9zTmFtZSkub2JqZWN0U3RvcmUob3NOYW1lKS5kZWxldGUoa2V5Mik7
IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlJFQURfT05MWV9FUlIiKTsKKyAgICBmaW5pc2hKU1Rl
c3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL3JlYWR3
cml0ZS10cmFuc2FjdGlvbnMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL3Jlc291cmNlcy9yZWFkd3JpdGUtdHJhbnNhY3Rpb25zLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczYmYw
MjYyYTFmY2NlZGIyYzI2OWVlZjQzYmM3MTM1YTY4MDBjMTMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9yZWFkd3JpdGUt
dHJhbnNhY3Rpb25zLmpzCkBAIC0wLDAgKzEsMTE0IEBACisvLyBvcmlnaW5hbCB0ZXN0OgorLy8g
aHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rl
c3QvdGVzdF9yZWFkb25seV90cmFuc2FjdGlvbnMuaHRtbAorLy8gbGljZW5zZSBvZiBvcmlnaW5h
bCB0ZXN0OgorLy8gIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKy8vICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLyAiCisKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcu
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNj
cmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBy
ZWFkL3dyaXRlIHRyYW5zYWN0aW9ucyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1v
dmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7
CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBk
YiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQorewor
ICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBvc05hbWUgPSAidGVzdCBzdG9y
ZSI7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKG9zTmFtZSwgeyBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOyIpOworICAgIGV2
ZW50LnRhcmdldC5yZXN1bHQub25jb21wbGV0ZSA9IHNldFZlcnNpb25Db21wbGV0ZTsKK30KKwor
ZnVuY3Rpb24gc2V0VmVyc2lvbkNvbXBsZXRlKCkKK3sKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygicmVxdWVzdCA9IGRiLnRyYW5zYWN0aW9uKFtvc05hbWVdLCBJREJUcmFuc2FjdGlvbi5SRUFE
X1dSSVRFKS5vYmplY3RTdG9yZShvc05hbWUpLmFkZCh7fSk7Iik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBwb3N0QWRkOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBwb3N0QWRkKCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQu
dGFyZ2V0LnRyYW5zYWN0aW9uLm1vZGUiLCAiSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSIpOwor
ICAgIGtleTEgPSBldmFsQW5kTG9nKCJrZXkxID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnRyYW5zYWN0aW9uKG9zTmFtZSwg
SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3RvcmUob3NOYW1lKS5hZGQoe30pOyIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdEFkZDI7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHBvc3RBZGQyKCkKK3sK
KyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm1vZGUiLCAiSURCVHJhbnNh
Y3Rpb24uUkVBRF9XUklURSIpOworICAgIGtleTIgPSBldmFsQW5kTG9nKCJrZXkyID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdDsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRi
LnRyYW5zYWN0aW9uKFtvc05hbWVdLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKS5vYmplY3RT
dG9yZShvc05hbWUpLnB1dCh7fSwga2V5MSk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBw
b3N0UHV0OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBwb3N0UHV0KCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRy
YW5zYWN0aW9uLm1vZGUiLCAiSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSIpOworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIudHJhbnNhY3Rpb24ob3NOYW1lLCBJREJUcmFu
c2FjdGlvbi5SRUFEX1dSSVRFKS5vYmplY3RTdG9yZShvc05hbWUpLnB1dCh7fSwga2V5Mik7Iik7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0UHV0MjsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gcG9zdFB1dDIoKQorewor
ICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24ubW9kZSIsICJJREJUcmFuc2Fj
dGlvbi5SRUFEX1dSSVRFIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBk
Yi50cmFuc2FjdGlvbihbb3NOYW1lXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0
U3RvcmUob3NOYW1lKS5wdXQoe30sIGtleTEpOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
cG9zdFB1dDM7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Cit9CisKK2Z1bmN0aW9uIHBvc3RQdXQzKCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0
LnRyYW5zYWN0aW9uLm1vZGUiLCAiSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSIpOworICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIudHJhbnNhY3Rpb24ob3NOYW1lLCBJREJU
cmFuc2FjdGlvbi5SRUFEX1dSSVRFKS5vYmplY3RTdG9yZShvc05hbWUpLnB1dCh7fSwga2V5MSk7
Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0UHV0NDsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gcG9zdFB1dDQoKQor
eworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24ubW9kZSIsICJJREJUcmFu
c2FjdGlvbi5SRUFEX1dSSVRFIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBkYi50cmFuc2FjdGlvbihbb3NOYW1lXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2Jq
ZWN0U3RvcmUob3NOYW1lKS5kZWxldGUoa2V5MSk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBwb3N0RGVsZXRlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworfQorCitmdW5jdGlvbiBwb3N0RGVsZXRlKCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQu
dGFyZ2V0LnRyYW5zYWN0aW9uLm1vZGUiLCAiSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSIpOwor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIudHJhbnNhY3Rpb24ob3NOYW1l
LCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKS5vYmplY3RTdG9yZShvc05hbWUpLmRlbGV0ZShr
ZXkyKTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3REZWxldGUyOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBwb3N0
RGVsZXRlMigpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2Rl
IiwgIklEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30K
KwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL3JlYWR5U3RhdGUuanMg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9yZWFkeVN0
YXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmU5YTc2YjU4ODM5ZGI3OTI0YzQ2MTQxZmQzNDNhZDk1N2M5YzJm
YTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL3Jlc291cmNlcy9yZWFkeVN0YXRlLmpzCkBAIC0wLDAgKzEsNzAgQEAKKy8vIG9yaWdpbmFs
IHRlc3Q6CisvLyBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9p
bmRleGVkREIvdGVzdC90ZXN0X3JlcXVlc3RfcmVhZHlTdGF0ZS5odG1sP2ZvcmNlPTEKKy8vIGxp
Y2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAg
aW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMn
KTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRl
c3QgSW5kZXhlZERCIHJlYWR5U3RhdGUgcHJvcGVydHkgZHVyaW5nIGRpZmZlcmVudCBvcGVyYXRp
b25zIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7
CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9
ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERC
Lm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgc2hvdWxkQmUoInJlcXVlc3QucmVhZHlT
dGF0ZSIsICJJREJSZXF1ZXN0LkxPQURJTkciKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9w
ZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGVidWcoIm9wZW5TdWNjZXNz
KCk6Iik7CisgICAgc2hvdWxkQmUoInJlcXVlc3QucmVhZHlTdGF0ZSIsICJJREJSZXF1ZXN0LkRP
TkUiKTsKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7
CisgICAgc2hvdWxkQmUoInJlcXVlc3QucmVhZHlTdGF0ZSIsICJJREJSZXF1ZXN0LkxPQURJTkci
KTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldHVwT2JqZWN0U3RvcmU7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldHVw
T2JqZWN0U3RvcmUoKQoreworICAgIGRlYnVnKCJzZXR1cE9iamVjdFN0b3JlKCk6Iik7CisgICAg
c2hvdWxkQmUoInJlcXVlc3QucmVhZHlTdGF0ZSIsICJJREJSZXF1ZXN0LkRPTkUiKTsKKyAgICBk
ZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nKTsiKTsKKyAgICBrZXkg
PSBldmFsQW5kTG9nKCJrZXkgPSAxMDsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVx
dWVzdCA9IG9iamVjdFN0b3JlLmFkZCh7fSwga2V5KTsiKTsKKyAgICBzaG91bGRCZSgicmVxdWVz
dC5yZWFkeVN0YXRlIiwgIklEQlJlcXVlc3QuTE9BRElORyIpOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZ2V0UmVjb3JkOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBnZXRSZWNvcmQoKQoreworICAgIGRlYnVnKCJnZXRSZWNv
cmQoKToiKTsKKyAgICBzaG91bGRCZSgicmVxdWVzdC5yZWFkeVN0YXRlIiwgIklEQlJlcXVlc3Qu
RE9ORSIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgImtleSIpOworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KGtleSk7Iik7
CisgICAgc2hvdWxkQmUoInJlcXVlc3QucmVhZHlTdGF0ZSIsICJJREJSZXF1ZXN0LkxPQURJTkci
KTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZpbmFsQ2hlY2s7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGZpbmFsQ2hlY2so
KQoreworICAgIGRlYnVnKCJmaW5hbENoZWNrKCk6Iik7CisgICAgc2hvdWxkQmUoInJlcXVlc3Qu
cmVhZHlTdGF0ZSIsICJJREJSZXF1ZXN0LkRPTkUiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJldmVu
dC50YXJnZXQucmVzdWx0ID09IG51bGwiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVz
dCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL3JlbW92ZS1pbmRleC5qcyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL3JlbW92ZS1pbmRl
eC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yNTAyMGU3NThlMTVhNGM2NGFhNWJlN2ExNTlhOGE3MzljYzRiM2Fi
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9yZXNvdXJjZXMvcmVtb3ZlLWluZGV4LmpzCkBAIC0wLDAgKzEsNTUgQEAKKy8vIG9yaWdpbmFs
IHRlc3Q6CisvLyBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9p
bmRleGVkREIvdGVzdC90ZXN0X3JlbW92ZV9pbmRleC5odG1sCisvLyBsaWNlbnNlIG9mIG9yaWdp
bmFsIHRlc3Q6CisvLyAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorLy8gICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvICIKKworaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMo
Jy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0
U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidz
IGNyZWF0aW5nIGFuZCBkZWxldGluZyBpbmRleGVzIik7CisKK2Z1bmN0aW9uIHRlc3QoKQorewor
ICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5w
YXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQor
eworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5kRGVsZXRlSW5kZXg7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNyZWF0
ZUFuZERlbGV0ZUluZGV4KCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisg
ICAgb2JqZWN0U3RvcmVOYW1lID0gInRlc3Qgc3RvcmUiOworICAgIG9iamVjdFN0b3JlID0gZXZh
bEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShvYmplY3RTdG9yZU5h
bWUsIHsga2V5UGF0aDogJ2ZvbycgfSk7Iik7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3Jl
TmFtZXMubGVuZ3RoIiwgIjEiKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5p
dGVtKDApIiwgIm9iamVjdFN0b3JlTmFtZSIpOworICAgIHNob3VsZEJlKCJvYmplY3RTdG9yZS5p
bmRleE5hbWVzLmxlbmd0aCIsICIwIik7CisKKyAgICBpbmRleE5hbWUgPSAiTXkgVGVzdCBJbmRl
eCI7CisgICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUlu
ZGV4KGluZGV4TmFtZSwgJ2ZvbycpOyIpOworICAgIHNob3VsZEJlKCJvYmplY3RTdG9yZS5pbmRl
eE5hbWVzLmxlbmd0aCIsICIxIik7CisgICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLmluZGV4TmFt
ZXMuaXRlbSgwKSIsICJpbmRleE5hbWUiKTsKKworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3Jl
LmRlbGV0ZUluZGV4KGluZGV4TmFtZSk7Iik7CisgICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLmlu
ZGV4TmFtZXMubGVuZ3RoIiwgIjAiKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0
KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvcmVtb3ZlLW9iamVjdHN0b3JlLmpz
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvcmVtb3Zl
LW9iamVjdHN0b3JlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhMzRjZTRlMmY0ODE3ZjQ1OGE4ZWMxOTYzMWMx
MmE0MmE2MGJiM2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9yZW1vdmUtb2JqZWN0c3RvcmUuanMKQEAgLTAsMCArMSwx
MDkgQEAKKy8vIG9yaWdpbmFsIHRlc3Q6CisvLyBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemls
bGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X3JlbW92ZV9vYmplY3RTdG9yZS5o
dG1sP2ZvcmNlPTEKKy8vIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBv
cnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30K
KworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGRlbGV0aW5nIGFuIG9iamVjdCBzdG9yZSIp
OworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisg
ICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkg
VGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVu
KG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nl
c3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxl
bmd0aCIsICIwIik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNl
dFZlcnNpb24oJzEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5kUG9wdWxh
dGVPYmplY3RTdG9yZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKK30KKworZnVuY3Rpb24gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSgpCit7Cisg
ICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlTmFtZSA9IGV2
YWxBbmRMb2coIm9iamVjdFN0b3JlTmFtZSA9ICdPYmplY3RzJzsiKTsKKyAgICBvYmplY3RTdG9y
ZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0
U3RvcmVOYW1lLCB7IGtleVBhdGg6ICdmb28nIH0pOyIpOworCisgICAgYWRkZWRDb3VudCA9IGV2
YWxBbmRMb2coImFkZGVkQ291bnQgPSAwOyIpOworICAgIGZvciAoaSA9IDA7IGkgPCAxMDA7IGkr
KykgeworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3Jl
LmFkZCh7Zm9vOiBpfSk7Iik7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50
KSB7CisgICAgICAgICAgICBpZiAoKythZGRlZENvdW50ID09IDEwMCkgeworICAgICAgICAgICAg
ICAgIGNoZWNrT2JqZWN0U3RvcmUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
K30KKworZnVuY3Rpb24gY2hlY2tPYmplY3RTdG9yZSgpCit7CisgICAgc2hvdWxkQmUoImRiLm9i
amVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjEiKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3Rv
cmVOYW1lcy5pdGVtKDApIiwgIm9iamVjdFN0b3JlTmFtZSIpOworCisgICAgcmVxdWVzdCA9IGRi
LnNldFZlcnNpb24oJzInKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RTZXRWZXJzaW9uMjsKK30KKwor
ZnVuY3Rpb24gcG9zdFNldFZlcnNpb24yKCkKK3sKKyAgICBldmFsQW5kTG9nKCJkYi5kZWxldGVP
YmplY3RTdG9yZShvYmplY3RTdG9yZS5uYW1lKTsiKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0
U3RvcmVOYW1lcy5sZW5ndGgiLCAiMCIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSwgeyBr
ZXlQYXRoOiAnZm9vJyB9KTsiKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5s
ZW5ndGgiLCAiMSIpOworICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLml0ZW0oMCki
LCAib2JqZWN0U3RvcmVOYW1lIik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KGV2ZW50KSB7CisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIm51bGwi
KTsKKyAgICAgICAgZGVsZXRlU2Vjb25kT2JqZWN0U3RvcmUoKTsKKyAgICB9Cit9CisKK2Z1bmN0
aW9uIGRlbGV0ZVNlY29uZE9iamVjdFN0b3JlKCkKK3sKKyAgICBldmFsQW5kTG9nKCJkYi5kZWxl
dGVPYmplY3RTdG9yZShvYmplY3RTdG9yZS5uYW1lKTsiKTsKKyAgICBzaG91bGRCZSgiZGIub2Jq
ZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMCIpOworICAgIHNldFZlcnNpb24zKCk7Cit9CisKK2Z1
bmN0aW9uIHNldFZlcnNpb24zKCkKK3sKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IGRiLnNldFZlcnNpb24oJzMnKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RTZXRWZXJzaW9u
MzsKK30KKworZnVuY3Rpb24gcG9zdFNldFZlcnNpb24zKCkKK3sKKyAgICBvYmplY3RTdG9yZSA9
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3Rv
cmVOYW1lLCB7IGtleVBhdGg6ICdmb28nIH0pOyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKHtmb286J2Jhcid9KTsiKTsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGRlbGV0ZVRoaXJkT2JqZWN0U3RvcmU7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZVRoaXJkT2Jq
ZWN0U3RvcmUoKQoreworICAgIGV2YWxBbmRMb2coImRiLmRlbGV0ZU9iamVjdFN0b3JlKG9iamVj
dFN0b3JlTmFtZSk7Iik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy92ZXJzaW9uY2hhbmdlLWFib3J0LmpzIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvdmVyc2lvbmNoYW5nZS1h
Ym9ydC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mMmMwNzkzY2I3ZDZkNmU5N2Q2NWUzNDk5NTgwM2Y4MjdiYjZi
N2VlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9yZXNvdXJjZXMvdmVyc2lvbmNoYW5nZS1hYm9ydC5qcwpAQCAtMCwwICsxLDU3IEBACisv
LyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3Nv
dXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9zZXRWZXJzaW9uX2Fib3J0Lmh0bWwKKy8vIGxp
Y2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAg
aW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMn
KTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRl
c3QgSW5kZXhlZERCJ3MgYWJvcnRpbmcgc2V0VmVyc2lvbiIpOworCitmdW5jdGlvbiB0ZXN0KCkK
K3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRp
b24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNz
KCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwor
ICAgIGluaXRpYWxWZXJzaW9uID0gZXZhbEFuZExvZygiaW5pdGlhbFZlcnNpb24gPSBkYi52ZXJz
aW9uOyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lv
bignMicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBj
bGVhbkRhdGFiYXNlKCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAg
b2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0
b3JlKCdmb28nKTsiKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgi
LCAiMSIpOworCisgICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmNy
ZWF0ZUluZGV4KCdiYXInLCAnYmF6Jyk7Iik7CisgICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLmlu
ZGV4TmFtZXMubGVuZ3RoIiwgIjEiKTsKKworICAgIGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5v
bmNvbXBsZXRlID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKKyAgICBldmVudC50YXJnZXQu
dHJhbnNhY3Rpb24ub25hYm9ydCA9IHBvc3RBYm9ydDsKKyAgICBldmFsQW5kTG9nKCJldmVudC50
YXJnZXQudHJhbnNhY3Rpb24uYWJvcnQoKTsiKTsKK30KKworZnVuY3Rpb24gcG9zdEFib3J0KCkK
K3sKKyAgICBzaG91bGRCZSgiZGIudmVyc2lvbiIsICJpbml0aWFsVmVyc2lvbiIpOworICAgIHNo
b3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIwIik7CisKKyAgICBmaW5pc2hK
U1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL3Zl
cnNpb25jaGFuZ2UuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jl
c291cmNlcy92ZXJzaW9uY2hhbmdlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlMzMxMmFkNmY1NWFjMzkwNWVi
MmNhYzIzM2I4ZDc0MTNiZDM3MWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy92ZXJzaW9uY2hhbmdlLmpzCkBAIC0wLDAg
KzEsMTAxIEBACisvLyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9t
b3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9zZXRWZXJzaW9uX2V2ZW50
cy5odG1sCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisvLyAiIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorLy8gICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKworaWYgKHRoaXMuaW1wb3J0U2Ny
aXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rl
c2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIHRyaWdnZXJpbmcgdmVyc2lvbmNoYW5nZSBldmVu
dCIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwor
CisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAi
TXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5v
cGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1
Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYjEgPSBldmFsQW5kTG9nKCJkYjEg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgdmVyc2lvbkNoYW5nZUV2ZW50Q291bnQgPSBl
dmFsQW5kTG9nKCJ2ZXJzaW9uQ2hhbmdlRXZlbnRDb3VudCA9IDA7Iik7CisgICAgZGVidWcoImRi
MSB3aWxsIGJlIG9wZW4gd2hlbiB3ZSBjYWxsIGRiMi5zZXRWZXJzaW9uLCB3aGljaCB3aWxsIHRy
aWdnZXIgdmVyc2lvbmNoYW5nZSBvbiBkYjEiKTsKKyAgICBkYjEub252ZXJzaW9uY2hhbmdlID0g
ZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldCIsICJkYjEi
KTsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50LnZlcnNpb24iLCAiJzEnIik7CisgICAgICAgIHZl
cnNpb25DaGFuZ2VFdmVudENvdW50Kys7CisgICAgICAgIHNob3VsZEJlKCJ2ZXJzaW9uQ2hhbmdl
RXZlbnRDb3VudCIsICIxIik7CisgICAgICAgIGRlYnVnKCJjbG9zZSBkYjEgbm93IHNvIHZlcnNp
b25jaGFuZ2UgZG9lc24ndCB0cmlnZ2VyIG9uIGRiMSBhZ2FpbiB3aGVuIHdlIGNhbGwgZGIzLnNl
dFZlcnNpb24iKTsKKyAgICAgICAgZXZhbEFuZExvZygiZGIxLmNsb3NlKCk7Iik7CisgICAgfTsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRp
b24pIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczI7Cit9CisKK2Z1bmN0aW9uIG9wZW5T
dWNjZXNzMigpCit7CisgICAgZGIyID0gZXZhbEFuZExvZygiZGIyID0gZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOworICAgIGRlYnVnKCJkYjIgd2lsbCBiZSBvcGVuIHdoZW4gd2UgY2FsbCBkYjMuc2V0
VmVyc2lvbiwgd2hpY2ggd2lsbCB0cmlnZ2VyIHZlcnNpb25jaGFuZ2Ugb24gZGIyIik7CisgICAg
ZGIyLm9udmVyc2lvbmNoYW5nZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIHQgPSBldmVu
dC50YXJnZXQ7CisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAiZGIyIik7CisgICAg
ICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQudmVyc2lvbiIsICInMSciKTsKKyAgICAgICAgc2hv
dWxkQmUoImV2ZW50LnZlcnNpb24iLCAiJzInIik7CisgICAgICAgIHZlcnNpb25DaGFuZ2VFdmVu
dENvdW50Kys7CisgICAgICAgIHNob3VsZEJlKCJ2ZXJzaW9uQ2hhbmdlRXZlbnRDb3VudCIsICIy
Iik7CisgICAgICAgIGRlYnVnKCJkb24ndCBjbG9zZSBkYjIsIHNvIGl0IHdpbGwgYmxvY2sgZGIz
LnNldFZlcnNpb24iKTsKKyAgICB9CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBkYjIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0U2V0VmVyc2lvbjsK
KyAgICByZXF1ZXN0Lm9uYmxvY2tlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIHRlc3RQ
YXNzZWQoImRiMiByZWNlaXZlZCBibG9ja2VkIGV2ZW50Iik7CisgICAgfQorfQorCitmdW5jdGlv
biBwb3N0U2V0VmVyc2lvbigpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQi
LCAiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdl
dC50cmFuc2FjdGlvbi5tb2RlIiwgIklEQlRyYW5zYWN0aW9uLlZFUlNJT05fQ0hBTkdFIik7Cisg
ICAgc2hvdWxkQmUoImRiMi52ZXJzaW9uIiwgIicxJyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbik7Iik7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczM7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzMygp
Cit7CisgICAgZGIzID0gZXZhbEFuZExvZygiZGIzID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiMy5zZXRWZXJzaW9uKCcyJyk7
Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAg
ZGVidWcoInRoaXMgcmVxdWVzdCB3aWxsIGJsb2NrIGJlY2F1c2UgZGIyIGlzIHN0aWxsIG9wZW4i
KTsKKyAgICByZXF1ZXN0Lm9uYmxvY2tlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIHNo
b3VsZEJlKCJldmVudC50YXJnZXQuc291cmNlIiwgImRiMyIpOworICAgICAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0LnNvdXJjZS52ZXJzaW9uIiwgIicxJyIpOworICAgICAgICBzaG91bGRCZSgi
ZXZlbnQudmVyc2lvbiIsICInMiciKTsKKyAgICAgICAgdmVyc2lvbkNoYW5nZUV2ZW50Q291bnQr
KzsKKyAgICAgICAgZGVidWcoImNsb3NlIGRiMiBub3cgc28gb25zdWNjZXNzIHdpbGwgYmUgY2Fs
bGVkIik7CisgICAgICAgIGV2YWxBbmRMb2coImRiMi5jbG9zZSgpOyIpOworICAgIH0KKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RTZXRWZXJzaW9uMjsKK30KKworZnVuY3Rpb24gcG9zdFNl
dFZlcnNpb24yKCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJldmVu
dC50YXJnZXQudHJhbnNhY3Rpb24iKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5z
YWN0aW9uLm1vZGUiLCAiSURCVHJhbnNhY3Rpb24uVkVSU0lPTl9DSEFOR0UiKTsKKyAgICBzaG91
bGRCZSgiZGIzLnZlcnNpb24iLCAiJzInIik7CisgICAgc2hvdWxkQmUoInZlcnNpb25DaGFuZ2VF
dmVudENvdW50IiwgIjMiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvdmVyc2lvbmNoYW5nZS1hYm9ydC5odG1sIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS92ZXJzaW9uY2hhbmdlLWFib3J0Lmh0bWwKaW5kZXgg
NzJkZWRjOGU0ZDdmNGIwMWJlMzkwYzhmNDBhNmNmYjVhYTUzZWIzMi4uODFmY2E3M2VjZWVkNzBj
Y2I2N2I0NmNmY2E0M2ZjNTI0ZWMwZjFlZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS92ZXJzaW9uY2hhbmdlLWFib3J0Lmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS92ZXJzaW9uY2hhbmdlLWFib3J0Lmh0bWwK
QEAgLTEsNjcgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLQotICBvcmlnaW5hbCB0ZXN0
OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIv
dGVzdC90ZXN0X3NldFZlcnNpb25fYWJvcnQuaHRtbAotICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRl
c3Q6Ci0gICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KLSAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8gIgotLS0+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQot
ZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgYWJvcnRpbmcgc2V0VmVyc2lvbiIpOwotCi1m
dW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFt
ZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBE
YXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUs
IGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0
aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFy
Z2V0LnJlc3VsdCIpOwotICAgIGluaXRpYWxWZXJzaW9uID0gZXZhbEFuZExvZygiaW5pdGlhbFZl
cnNpb24gPSBkYi52ZXJzaW9uOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gZGIuc2V0VmVyc2lvbignMicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRh
dGFiYXNlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
fQotCi1mdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKLXsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9y
ZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nKTsiKTsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3Rv
cmVOYW1lcy5sZW5ndGgiLCAiMSIpOwotCi0gICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9
IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdiYXInLCAnYmF6Jyk7Iik7Ci0gICAgc2hvdWxkQmUo
Im9iamVjdFN0b3JlLmluZGV4TmFtZXMubGVuZ3RoIiwgIjEiKTsKLQotICAgIGV2ZW50LnRhcmdl
dC50cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKLSAg
ICBldmVudC50YXJnZXQudHJhbnNhY3Rpb24ub25hYm9ydCA9IHBvc3RBYm9ydDsKLSAgICBldmFs
QW5kTG9nKCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24uYWJvcnQoKTsiKTsKLX0KLQotZnVuY3Rp
b24gcG9zdEFib3J0KCkKLXsKLSAgICBzaG91bGRCZSgiZGIudmVyc2lvbiIsICJpbml0aWFsVmVy
c2lvbiIpOwotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIwIik7
Ci0KLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvdmVyc2lvbmNoYW5nZS1hYm9ydC5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS92ZXJzaW9uY2hhbmdlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL3ZlcnNpb25jaGFuZ2UuaHRtbAppbmRleCBmMDU4ZmQ1ZGIx
MzBiZTkxNWVkOGM4ODE2M2Y1ODc3MTI3MTg5YWE4Li4yZmZmNmIxYTJmMjczMmVmMzUzNDQwODYz
ZWRlNjg5MDZkNjNlNjFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL3ZlcnNpb25jaGFuZ2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL3ZlcnNpb25jaGFuZ2UuaHRtbApAQCAtMSwxMTIgKzEsMTAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPCEtLQotICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEu
b3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X3NldFZlcnNpb25f
ZXZlbnRzLmh0bWwKLSAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgotICAgICIgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCi0gICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKLS0tPgogPGh0bWw+CiA8
aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9z
Y3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IElu
ZGV4ZWREQidzIHRyaWdnZXJpbmcgdmVyc2lvbmNoYW5nZSBldmVudCIpOwotCi1mdW5jdGlvbiB0
ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYu
bG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0
aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5T
dWNjZXNzKCkKLXsKLSAgICBkYjEgPSBldmFsQW5kTG9nKCJkYjEgPSBldmVudC50YXJnZXQucmVz
dWx0Iik7Ci0gICAgdmVyc2lvbkNoYW5nZUV2ZW50Q291bnQgPSBldmFsQW5kTG9nKCJ2ZXJzaW9u
Q2hhbmdlRXZlbnRDb3VudCA9IDA7Iik7Ci0gICAgZGVidWcoImRiMSB3aWxsIGJlIG9wZW4gd2hl
biB3ZSBjYWxsIGRiMi5zZXRWZXJzaW9uLCB3aGljaCB3aWxsIHRyaWdnZXIgdmVyc2lvbmNoYW5n
ZSBvbiBkYjEiKTsKLSAgICBkYjEub252ZXJzaW9uY2hhbmdlID0gZnVuY3Rpb24oZXZlbnQpIHsK
LSAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldCIsICJkYjEiKTsKLSAgICAgICAgc2hvdWxk
QmUoImV2ZW50LnZlcnNpb24iLCAiJzEnIik7Ci0gICAgICAgIHZlcnNpb25DaGFuZ2VFdmVudENv
dW50Kys7Ci0gICAgICAgIHNob3VsZEJlKCJ2ZXJzaW9uQ2hhbmdlRXZlbnRDb3VudCIsICIxIik7
Ci0gICAgICAgIGRlYnVnKCJjbG9zZSBkYjEgbm93IHNvIHZlcnNpb25jaGFuZ2UgZG9lc24ndCB0
cmlnZ2VyIG9uIGRiMSBhZ2FpbiB3aGVuIHdlIGNhbGwgZGIzLnNldFZlcnNpb24iKTsKLSAgICAg
ICAgZXZhbEFuZExvZygiZGIxLmNsb3NlKCk7Iik7Ci0gICAgfTsKLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBvcGVuU3VjY2VzczI7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzMigpCi17Ci0gICAg
ZGIyID0gZXZhbEFuZExvZygiZGIyID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIGRlYnVn
KCJkYjIgd2lsbCBiZSBvcGVuIHdoZW4gd2UgY2FsbCBkYjMuc2V0VmVyc2lvbiwgd2hpY2ggd2ls
bCB0cmlnZ2VyIHZlcnNpb25jaGFuZ2Ugb24gZGIyIik7Ci0gICAgZGIyLm9udmVyc2lvbmNoYW5n
ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIHQgPSBldmVudC50YXJnZXQ7Ci0gICAgICAg
IHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAiZGIyIik7Ci0gICAgICAgIHNob3VsZEJlKCJldmVu
dC50YXJnZXQudmVyc2lvbiIsICInMSciKTsKLSAgICAgICAgc2hvdWxkQmUoImV2ZW50LnZlcnNp
b24iLCAiJzInIik7Ci0gICAgICAgIHZlcnNpb25DaGFuZ2VFdmVudENvdW50Kys7Ci0gICAgICAg
IHNob3VsZEJlKCJ2ZXJzaW9uQ2hhbmdlRXZlbnRDb3VudCIsICIyIik7Ci0gICAgICAgIGRlYnVn
KCJkb24ndCBjbG9zZSBkYjIsIHNvIGl0IHdpbGwgYmxvY2sgZGIzLnNldFZlcnNpb24iKTsKLSAg
ICB9Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYjIuc2V0VmVyc2lvbign
MScpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0U2V0VmVyc2lvbjsKLSAgICByZXF1ZXN0Lm9uYmxv
Y2tlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIHRlc3RQYXNzZWQoImRiMiByZWNlaXZl
ZCBibG9ja2VkIGV2ZW50Iik7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBwb3N0U2V0VmVyc2lvbigp
Ci17Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAiZXZlbnQudGFyZ2V0LnRy
YW5zYWN0aW9uIik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2Rl
IiwgIklEQlRyYW5zYWN0aW9uLlZFUlNJT05fQ0hBTkdFIik7Ci0gICAgc2hvdWxkQmUoImRiMi52
ZXJzaW9uIiwgIicxJyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBp
bmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbik7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVu
U3VjY2VzczM7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzMygpCi17Ci0gICAgZGIzID0gZXZh
bEFuZExvZygiZGIzID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygicmVxdWVzdCA9IGRiMy5zZXRWZXJzaW9uKCcyJyk7Iik7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgZGVidWcoInRoaXMgcmVxdWVz
dCB3aWxsIGJsb2NrIGJlY2F1c2UgZGIyIGlzIHN0aWxsIG9wZW4iKTsKLSAgICByZXF1ZXN0Lm9u
YmxvY2tlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50YXJn
ZXQuc291cmNlIiwgImRiMyIpOwotICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnNvdXJj
ZS52ZXJzaW9uIiwgIicxJyIpOwotICAgICAgICBzaG91bGRCZSgiZXZlbnQudmVyc2lvbiIsICIn
MiciKTsKLSAgICAgICAgdmVyc2lvbkNoYW5nZUV2ZW50Q291bnQrKzsKLSAgICAgICAgZGVidWco
ImNsb3NlIGRiMiBub3cgc28gb25zdWNjZXNzIHdpbGwgYmUgY2FsbGVkIik7Ci0gICAgICAgIGV2
YWxBbmRMb2coImRiMi5jbG9zZSgpOyIpOwotICAgIH0KLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IHBvc3RTZXRWZXJzaW9uMjsKLX0KLQotZnVuY3Rpb24gcG9zdFNldFZlcnNpb24yKCkKLXsKLSAg
ICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJldmVudC50YXJnZXQudHJhbnNhY3Rp
b24iKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm1vZGUiLCAiSURC
VHJhbnNhY3Rpb24uVkVSU0lPTl9DSEFOR0UiKTsKLSAgICBzaG91bGRCZSgiZGIzLnZlcnNpb24i
LCAiJzInIik7Ci0gICAgc2hvdWxkQmUoInZlcnNpb25DaGFuZ2VFdmVudENvdW50IiwgIjMiKTsK
LSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy92ZXJzaW9uY2hhbmdlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgog
PC9ib2R5PgogPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tdXRhdGluZy1jdXJzb3IuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L211dGF0aW5nLWN1cnNvci5odG1sCmluZGV4IDM0YjE5YjliYmEyYjhiZDM1N2NjY2ZiNTg4ODdl
ODE5MDM1ODJmNDcuLjQyZWYwMzBjZTNhNTQxYzUyZDM1YTRmNGRlNDAxMmU2NmI0MGFlNzIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL211dGF0aW5nLWN1cnNvci5o
dG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL211dGF0aW5nLWN1cnNvci5o
dG1sCkBAIC00LDEzOCArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+
PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0
IG11dGF0aW5nIGFuIEluZGV4ZWREQidzIG9iamVjdHN0b3JlIGZyb20gYSBjdXJzb3IuIik7Ci0K
LXRlc3QoKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMo
KTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ211dGF0aW5nLWN1
cnNvcicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3Bl
blN1Y2Nlc3MoKQotewotICAgIHZhciBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJzEn
KSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNl
dFZlcnNpb25TdWNjZXNzKCkKLXsKLSAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsK
LSAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJv
cnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gb3Bl
bkZvcndhcmRDdXJzb3I7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAg
dmFyIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnc3RvcmUnKSIpOwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgxLCAx
KS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKLSAgICBldmFsQW5kTG9nKCJv
YmplY3RTdG9yZS5hZGQoMiwgMikub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7
Ci0gICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKDMsIDMpLm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCg0LCA0
KS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKLX0KLQotZnVuY3Rpb24gb3Bl
bkZvcndhcmRDdXJzb3IoKQotewotICAgIGRlYnVnKCJvcGVuRm9yd2FyZEN1cnNvcigpIik7Ci0g
ICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlJ10sIElEQlRyYW5z
YWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9y
dENhbGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBmb3J3YXJkQ3Vyc29yQ29tcGxldGU7
Ci0KLSAgICBzZWxmLm9iamVjdFN0b3JlID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUo
J3N0b3JlJykiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUub3BlbkN1
cnNvcigpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmb3J3YXJkQ3Vyc29yOwotICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHNlbGYuY3Vyc29y
U3RlcHMgPSAwOwotfQotCi1mdW5jdGlvbiBmb3J3YXJkQ3Vyc29yKCkKLXsKLSAgICBkZWJ1Zygi
Zm9yd2FyZEN1cnNvcigpIik7Ci0gICAgc2VsZi5jdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0
OwotCi0gICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkgewotICAgICAgICBzaG91
bGRCZSgiY3Vyc29yU3RlcHMiLCAiNSIpOwotCi0gICAgICAgIC8vIExldCB0aGUgdHJhbnNhY3Rp
b24gZmluaXNoLgotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZGVidWcoKytjdXJzb3JT
dGVwcyk7Ci0gICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAiY3Vyc29yU3RlcHMiKTsKLSAgICBz
aG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgImN1cnNvclN0ZXBzIik7Ci0KLSAgICBpZiAoY3Vyc29y
U3RlcHMgPT0gMSkgewotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0
LnNvdXJjZS5hZGQoNSwgNSkiKTsKLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlv
bigpIHsgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCkiKTsgfQotICAgICAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB9IGVsc2UgewotICAgICAg
ICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKSIpOwotICAgIH0KLX0KLQotZnVuY3Rpb24g
Zm9yd2FyZEN1cnNvckNvbXBsZXRlKCkKLXsKLSAgICBkZWJ1ZygiZm9yd2FyZEN1cnNvckNvbXBs
ZXRlKCkiKTsKLSAgICBvcGVuUmV2ZXJzZUN1cnNvcigpCi19Ci0KLWZ1bmN0aW9uIG9wZW5SZXZl
cnNlQ3Vyc29yKCkKLXsKLSAgICBkZWJ1Zygib3BlblJldmVyc2VDdXJzb3IoKSIpOwotICAgIGV2
YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZSddLCBJREJUcmFuc2FjdGlv
bi5SRUFEX1dSSVRFKSIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxs
YmFjazsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gcmV2ZXJzZUN1cnNvckNvbXBsZXRlOwotCi0g
ICAgc2VsZi5vYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdzdG9y
ZScpIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLm9wZW5DdXJzb3Io
bnVsbCwgSURCQ3Vyc29yLlBSRVYpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSByZXZlcnNl
Q3Vyc29yOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
ICAgIHNlbGYuY3Vyc29yU3RlcHMgPSA2OwotfQotCi1mdW5jdGlvbiByZXZlcnNlQ3Vyc29yKCkK
LXsKLSAgICBkZWJ1ZygicmV2ZXJzZUN1cnNvcigpIik7Ci0gICAgc2VsZi5jdXJzb3IgPSBldmVu
dC50YXJnZXQucmVzdWx0OwotCi0gICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkg
ewotICAgICAgICBzaG91bGRCZSgiY3Vyc29yU3RlcHMiLCAiMCIpOwotCi0gICAgICAgIC8vIExl
dCB0aGUgdHJhbnNhY3Rpb24gZmluaXNoLgotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
ZGVidWcoLS1jdXJzb3JTdGVwcyk7Ci0gICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAiY3Vyc29y
U3RlcHMiKTsKLSAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgImN1cnNvclN0ZXBzIik7Ci0K
LSAgICBpZiAoY3Vyc29yU3RlcHMgPT0gMikgewotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiZXZlbnQudGFyZ2V0LnNvdXJjZS5hZGQoMCwgMCkiKTsKLSAgICAgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbigpIHsgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCkiKTsgfQot
ICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB9
IGVsc2UgewotICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKSIpOwotICAgIH0K
LX0KLQotZnVuY3Rpb24gcmV2ZXJzZUN1cnNvckNvbXBsZXRlKCkKLXsKLSAgICBkZWJ1ZygicmV2
ZXJzZUN1cnNvckNvbXBsZXRlKCkiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi08L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbXV0YXRpbmctY3Vyc29yLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvb2JqZWN0U3RvcmUtcmVxdWlyZWQtYXJndW1lbnRzLmh0bWwgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RTdG9yZS1yZXF1aXJlZC1hcmd1bWVudHMu
aHRtbAppbmRleCA2YTJmOTgxYWEyZTExYzVmNjJiYzgxYjI3YmI4ODZhNGVmNTBjNzA2Li44MTFj
NGUwMzkzZGExYTYxOWQ1ZGRmYjUzNDUzNWFjZGQ2NjhmOGUzIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RTdG9yZS1yZXF1aXJlZC1hcmd1bWVudHMuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RTdG9yZS1yZXF1aXJl
ZC1hcmd1bWVudHMuaHRtbApAQCAtMSw1NCArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+CiA8aHRt
bD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Nj
cmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5k
ZXhlZERCIG9iamVjdCBzdG9yZSByZXF1aXJlZCBhcmd1bWVudHMiKTsKLQotZnVuY3Rpb24gdGVz
dCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxv
Y2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlv
bikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3Vj
Y2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbign
MScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0
b3JlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQot
Ci1mdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKLXsKLSAgICBkZWxldGVB
bGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nKTsiKTsKLSAgICBzaG91bGRUaHJv
dygib2JqZWN0U3RvcmUucHV0KCk7Iik7Ci0gICAgc2hvdWxkVGhyb3coIm9iamVjdFN0b3JlLmFk
ZCgpOyIpOwotICAgIHNob3VsZFRocm93KCJvYmplY3RTdG9yZS5kZWxldGUoKTsiKTsKLSAgICBz
aG91bGRUaHJvdygib2JqZWN0U3RvcmUuZ2V0KCk7Iik7Ci0gICAgc2hvdWxkVGhyb3coIm9iamVj
dFN0b3JlLmNyZWF0ZUluZGV4KCk7Iik7Ci0gICAgc2hvdWxkVGhyb3coIm9iamVjdFN0b3JlLmNy
ZWF0ZUluZGV4KCdmb28nKTsiKTsKLSAgICBzaG91bGRUaHJvdygib2JqZWN0U3RvcmUuaW5kZXgo
KTsiKTsKLSAgICBzaG91bGRUaHJvdygib2JqZWN0U3RvcmUuZGVsZXRlSW5kZXgoKTsiKTsKLSAg
ICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9vYmplY3RTdG9yZS1yZXF1aXJlZC1hcmd1bWVudHMuanMiPjwvc2NyaXB0
PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1hdXRvaW5jcmVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1hdXRvaW5jcmVtZW50Lmh0bWwKaW5kZXgg
NDA1MWZhNGEwOTc1NTI3YzM2ZTc0NGY2YWEyNmViYjAwMzM5ODQ2ZS4uZGJmNjg1OWU1ODM2MzU2
ZGQxZGFhYzNiYjdhMmIyYjMwNjFjMzc4MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYXV0b2luY3JlbWVudC5odG1sCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWF1dG9pbmNyZW1lbnQuaHRtbApAQCAt
NCwyMDAgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0
PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVk
REIncyBJREJPYmplY3RTdG9yZSBhdXRvLWluY3JlbWVudCBmZWF0dXJlLiIpOwotCi1mdW5jdGlv
biB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJpbmRleGVkREIub3Blbignb2JqZWN0c3RvcmUtYXV0b2luY3JlbWVudCcpIik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3Mo
KQotewotICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOwotICAgIHNlbGYuZGIgPSBldmFsQW5k
TG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBzZXRWZXJzaW9uU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQotewotICAg
IGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOwotICAgIHNlbGYudHJhbnMgPSBldmFsQW5k
TG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRy
YW5zICE9PSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxi
YWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBzZXRWZXJzaW9uQ29tcGxldGVkOwotCi0gICAg
ZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIGRlYnVnKCJjcmVhdGVPYmplY3RTdG9y
ZSgpOiIpOwotICAgIHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9i
amVjdFN0b3JlKCdTdG9yZVdpdGhLZXlQYXRoJywge2tleVBhdGg6ICdpZCcsIGF1dG9JbmNyZW1l
bnQ6IHRydWV9KSIpOwotICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdTdG9y
ZVdpdGhBdXRvSW5jcmVtZW50Jywge2F1dG9JbmNyZW1lbnQ6IHRydWV9KSIpOwotICAgIGV2YWxB
bmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdQbGFpbk9sZFN0b3JlJywge2F1dG9JbmNyZW1l
bnQ6IGZhbHNlfSkiKTsKLSAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnU3Rv
cmVXaXRoTG9uZ0tleVBhdGgnLCB7a2V5UGF0aDogJ2EuYi5jLmlkJywgYXV0b0luY3JlbWVudDog
dHJ1ZX0pIik7Ci0gICAgdmFyIHN0b3JlTmFtZXMgPSBldmFsQW5kTG9nKCJzdG9yZU5hbWVzID0g
ZGIub2JqZWN0U3RvcmVOYW1lcyIpOwotCi0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzdG9y
ZS5uYW1lIiwgIlN0b3JlV2l0aEtleVBhdGgiKTsKLSAgICBzaG91bGRCZSgic3RvcmUua2V5UGF0
aCIsICInaWQnIik7Ci0gICAgc2hvdWxkQmUoInN0b3JlTmFtZXMuY29udGFpbnMoJ1N0b3JlV2l0
aEtleVBhdGgnKSIsICJ0cnVlIik7Ci0gICAgc2hvdWxkQmUoInN0b3JlTmFtZXMuY29udGFpbnMo
J1N0b3JlV2l0aEF1dG9JbmNyZW1lbnQnKSIsICJ0cnVlIik7Ci0gICAgc2hvdWxkQmUoInN0b3Jl
TmFtZXMuY29udGFpbnMoJ1BsYWluT2xkU3RvcmUnKSIsICJ0cnVlIik7Ci0gICAgc2hvdWxkQmUo
InN0b3JlTmFtZXMubGVuZ3RoIiwgIjQiKTsKLQotICAgIC8vIExldCB0aGUgc2V0VmVyc2lvbiB0
cmFuc2FjdGlvbiBjb21wbGV0ZS4KLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvbkNvbXBsZXRlZCgp
Ci17Ci0gICAgZGVidWcoInNldFZlcnNpb25Db21wbGV0ZWQoKToiKTsKLQotICAgIHNlbGYudHJh
bnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnU3RvcmVXaXRoS2V5UGF0
aCcsICdTdG9yZVdpdGhBdXRvSW5jcmVtZW50JywgJ1BsYWluT2xkU3RvcmUnXSwgSURCVHJhbnNh
Y3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0
Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IHRlc3RMb25nS2V5UGF0aDsKLQotICAg
IHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdTdG9y
ZVdpdGhLZXlQYXRoJykiKTsKLQotICAgIGRlYnVnKCJJbnNlcnQgaW50byBvYmplY3Qgc3RvcmUg
d2l0aCBhdXRvIGluY3JlbWVudCBhbmQga2V5IHBhdGgsIHdpdGgga2V5IGluIHRoZSBvYmplY3Qu
Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7bmFtZTogJ0plZmZlcnNz
b24nLCBudW1iZXI6ICc3MDEwJywgaWQ6IDN9KSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
YWRkSmVmZmVyc3NvblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGFkZEplZmZlcnNzb25TdWNjZXNzKCkKLXsKLSAg
ICBkZWJ1ZygiYWRkSmVmZmVyc3NvblN1Y2Nlc3MoKToiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQu
dGFyZ2V0LnJlc3VsdCIsICIzIik7Ci0KLSAgICBkZWJ1ZygiSW5zZXJ0IGludG8gb2JqZWN0IHN0
b3JlIHdpdGggYXV0byBpbmNyZW1lbnQgYW5kIGtleSBwYXRoLCB3aXRob3V0IGtleSBpbiB0aGUg
b2JqZWN0LiIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe25hbWU6ICdM
aW5jb2xuJywgbnVtYmVyOiAnNzAxMid9KSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRk
TGluY29sbldpdGhJbmplY3RLZXlTdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBhZGRMaW5jb2xuV2l0aEluamVjdEtl
eVN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJhZGRMaW5jb2xuV2l0aEluamVjdEtleVN1Y2Nlc3Mo
KToiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICI0Iik7Ci0KLSAgICBy
ZXN1bHQgPSBldmFsQW5kTG9nKCJzdG9yZS5nZXQoNCkiKTsKLSAgICByZXN1bHQub25zdWNjZXNz
ID0gZ2V0TGluY29sbkFmdGVySW5qZWN0ZWRLZXlTdWNjZXNzOwotICAgIHJlc3VsdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGdldExpbmNvbG5BZnRl
ckluamVjdGVkS2V5U3VjY2VzcygpCi17Ci0gICAgZGVidWcoImdldExpbmNvbG5BZnRlckluamVj
dGVkS2V5U3VjY2VzcygpOiIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFy
Z2V0LnJlc3VsdC5uYW1lIiwgIkxpbmNvbG4iKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
ImV2ZW50LnRhcmdldC5yZXN1bHQubnVtYmVyIiwgIjcwMTIiKTsKLSAgICBzaG91bGRCZSgiZXZl
bnQudGFyZ2V0LnJlc3VsdC5pZCIsICI0Iik7Ci0KLSAgICBzZWxmLnN0b3JlID0gZXZhbEFuZExv
Zygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnU3RvcmVXaXRoQXV0b0luY3JlbWVudCcpIik7
Ci0gICAgZGVidWcoIkluc2VydCBpbnRvIG9iamVjdCBzdG9yZSB3aXRoIGtleSBnZW4gdXNpbmcg
ZXhwbGljaXQga2V5Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7bmFt
ZTogJ0xpbmNvbG4nLCBudW1iZXI6ICc3MDEyJ30sIDUpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBhZGRMaW5jb2xuV2l0aEV4cGxpY2l0S2V5U3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYWRkTGluY29sbldp
dGhFeHBsaWNpdEtleVN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJhZGRMaW5jb2xuV2l0aEV4cGxp
Y2l0S2V5U3VjY2VzcygpOiIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0Iiwg
IjUiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5nZXQoNSkiKTsKLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldExpbmNvbG5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBnZXRMaW5jb2xuU3Vj
Y2VzcygpCi17Ci0gICAgZGVidWcoImdldExpbmNvbG5TdWNjZXNzKCk6Iik7Ci0gICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0Lm5hbWUiLCAiTGluY29sbiIpOwot
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5udW1iZXIiLCAi
NzAxMiIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLnB1dCh7bmFtZTogJ0Fi
cmFoYW0nLCBudW1iZXI6ICcyMTA3J30pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwdXRB
YnJhaGFtU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLX0KLQotZnVuY3Rpb24gcHV0QWJyYWhhbVN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJw
dXRBYnJhaGFtU3VjY2VzcygpOiIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0
IiwgIjYiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5nZXQoNikiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldEFicmFoYW1TdWNjZXNzOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBnZXRBYnJhaGFt
U3VjY2VzcygpCi17Ci0gICAgZGVidWcoImdldEFicmFoYW1TdWNjZXNzKCk6Iik7Ci0gICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0Lm5hbWUiLCAiQWJyYWhhbSIp
OwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5udW1iZXIi
LCAiMjEwNyIpOwotCi0gICAgc2VsZi5zdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMu
b2JqZWN0U3RvcmUoJ1BsYWluT2xkU3RvcmUnKSIpOwotICAgIGRlYnVnKCJUcnkgYWRkaW5nIHdp
dGggbm8ga2V5IHRvIG9iamVjdCBzdG9yZSB3aXRob3V0IGF1dG8gaW5jcmVtZW50LiIpOwotICAg
IGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmFkZCh7bmFtZTogJ0FkYW0nfSkiLCAiSURC
RGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
c3RvcmUuYWRkKHtuYW1lOiAnQWRhbSd9LCAxKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
YWRkQWRhbVN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGFkZEFkYW1TdWNjZXNzKCkKLXsKLSAgICBkZWJ1ZygiYWRk
QWRhbVN1Y2Nlc3MoKToiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICIx
Iik7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RMb25nS2V5UGF0aCgpCi17Ci0gICAgZGVidWcoInRlc3RM
b25nS2V5UGF0aCgpOiIpOwotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFu
c2FjdGlvbignU3RvcmVXaXRoTG9uZ0tleVBhdGgnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRF
KSIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0
cmFucy5vbmNvbXBsZXRlID0gZmluaXNoSlNUZXN0OwotCi0gICAgc3RvcmUgPSBldmFsQW5kTG9n
KCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdTdG9yZVdpdGhMb25nS2V5UGF0aCcpIik7Ci0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7Zm9vOiAnYmFyJ30pIik7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7Zm9vOiAnYmFyJywgYToge319KSIpOwotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJzdG9yZS5hZGQoe2ZvbzogJ2JhcicsIGE6IHtiOiB7fX19KSIpOwotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJzdG9yZS5hZGQoe2ZvbzogJ2JhcicsIGE6IHtiOiB7Yzoge319fX0pIik7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgY3Vyc29yUmVx
dWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLm9wZW5DdXJzb3IoKSIpOwotICAgIGN1cnNvclJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIGV2YWxBbmRMb2coImV4
cGVjdGVkID0gbnVsbCIpOwotICAgIGV2YWxBbmRMb2coImNvdW50ID0gMCIpOwotICAgIGN1cnNv
clJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewotICAgICAgICBjdXJzb3IgPSBjdXJz
b3JSZXF1ZXN0LnJlc3VsdDsKLSAgICAgICAgaWYgKCFjdXJzb3IpIHsKLSAgICAgICAgICAgIHNo
b3VsZEJlKCJjb3VudCIsICI0Iik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAg
ICAgICAgaWYgKGV4cGVjdGVkID09PSBudWxsKSB7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJl
eHBlY3RlZCA9IGN1cnNvci52YWx1ZS5hLmIuYy5pZCArIDEiKTsKLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuZm9vIiwgIidiYXInIik7Ci0gICAg
ICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmEuYi5jLmlkIiwgImV4cGVjdGVkIik7Ci0g
ICAgICAgICAgICBldmFsQW5kTG9nKCJleHBlY3RlZCA9IGN1cnNvci52YWx1ZS5hLmIuYy5pZCAr
IDEiKTsKLSAgICAgICAgfQotICAgICAgICBjb3VudCsrOwotICAgICAgICBjdXJzb3IuY29udGlu
dWUoKTsKLSAgICB9OwotfQotCi0KLXRlc3QoKTsKLQotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvb2JqZWN0c3RvcmUtYXV0b2luY3JlbWVudC5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL29iamVjdHN0b3JlLWNsZWFyLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9vYmplY3RzdG9yZS1jbGVhci5odG1sCmluZGV4IDY2ZWU1ZGNkMmFlMThhZmIxZDI2YmYy
OWZjMWVlYjAyNjc0MWU1ZTUuLjY4OGEzNThjM2Q5YTUzMWFiZmNhMGM2YWM4NDYwOTRmNjJkNDE0
NWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3Jl
LWNsZWFyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3Rv
cmUtY2xlYXIuaHRtbApAQCAtNCwxMDcgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9z
aGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlw
dGlvbigiVGVzdCBJbmRleGVkREIncyB3ZWJraXRJREJPYmplY3RTdG9yZS5jbGVhcigpLiIpOwot
Ci1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbignb2JqZWN0c3RvcmUtY2xlYXInKSIp
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc3RhcnRTZXRWZXJzaW9uOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzdGFydFNl
dFZlcnNpb24oKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVz
dWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZl
cnNpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9u
IGRlbGV0ZUV4aXN0aW5nKCkKLXsKLSAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVs
bCIpOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIHN0b3JlID0gZXZh
bEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCki
KTsKLQotICAgIHNlbGYuaW5kZXggPSBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnaW5k
ZXhOYW1lJywgJycpIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJzdG9yZS5pbmRleE5hbWVzLmNvbnRh
aW5zKCdpbmRleE5hbWUnKSIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFk
ZCgndmFsdWUnLCAna2V5JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZVNlY29u
ZE9iamVjdFN0b3JlQW5kQWRkVmFsdWU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZVNlY29uZE9iamVjdFN0b3JlQW5k
QWRkVmFsdWUoKQotewotICAgIG90aGVyU3RvcmUgPSBldmFsQW5kTG9nKCJvdGhlclN0b3JlID0g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ290aGVyU3RvcmVOYW1lJywgbnVsbCkiKTsKLQotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJvdGhlclN0b3JlLmFkZCgndmFsdWUnLCAna2V5JykiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFyT2JqZWN0U3RvcmU7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFyT2JqZWN0
U3RvcmUoKQotewotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5jbGVhcigpIik7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhclN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFyU3VjY2Vzcygp
Ci17Ci0gICAgc2hvdWxkQmVVbmRlZmluZWQoImV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5vcGVuQ3Vyc29yKCkiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IG9wZW5DdXJzb3JTdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuQ3Vyc29yU3VjY2Vzcygp
Ci17Ci0gICAgc2hvdWxkQmVOdWxsKCJldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICBpbmRl
eCA9IGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4TmFtZScpIik7Ci0gICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4Lm9wZW5LZXlDdXJzb3IoKSIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gb3BlbktleUN1cnNvclN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5LZXlDdXJzb3JT
dWNjZXNzKCkKLXsKLSAgICBkZWJ1Zygib3BlbktleUN1cnNvclN1Y2Nlc3MoKToiKTsKLSAgICBz
aG91bGRCZU51bGwoImV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICB0cmFucy5vbmNvbXBsZXRl
ID0gc2V0VmVyc2lvbkNvbXBsZXRlOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uQ29tcGxldGUo
KQotewotICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygiZGIudHJhbnNhY3Rpb24oWydvdGhl
clN0b3JlTmFtZSddKSIpOwotICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLSAgICB2YXIgb3RoZXJTdG9yZSA9IGV2YWxBbmRMb2coIm90aGVyU3RvcmUg
PSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnb3RoZXJTdG9yZU5hbWUnKSIpOwotCi0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coIm90aGVyU3RvcmUuZ2V0KCdrZXknKSIpOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZ2V0U3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZ2V0U3VjY2VzcygpCi17Ci0gICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0IiwgInZhbHVlIik7Ci0KLSAgICBm
aW5pc2hKU1Rlc3QoKTsKLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvb2JqZWN0c3RvcmUtY2xlYXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+
CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmpl
Y3RzdG9yZS1jb3VudC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0
c3RvcmUtY291bnQuaHRtbAppbmRleCA1MWUxNDVkZWE3ZmEzY2Y0ZTQ1NGZkM2E3MDcxMDc0YWRj
MTFjMzgyLi5kYTQyM2ZlNGI2N2Q4NWEzMTlkMTllM2Q0Nzg3OTk1YTA4NzY1Yjk0IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jb3VudC5odG1s
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWNvdW50Lmh0
bWwKQEAgLTQsMTQ5ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48
L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3Qg
SW5kZXhlZERCJ3MgSURCT2JqZWN0U3RvcmUuY291bnQoKS4iKTsKLQotZnVuY3Rpb24gdGVzdCgp
Ci17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiaW5kZXhlZERCLm9wZW4oJ29iamVjdHN0b3JlLWNvdW50JykiKTsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGZ1bmN0aW9uKCkgewotICAgICAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOwotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbign
bmV3IHZlcnNpb24nKSIpOwotICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwcmVwYXJlRGF0YWJhc2U7
Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKCkKLXsKLSAgICBkZWJ1Zygi
Iik7Ci0gICAgZGVidWcoInByZXBhcmluZyBkYXRhYmFzZSIpOwotICAgIHNlbGYudHJhbnMgPSBl
dmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRy
dWUoInRyYW5zICE9PSBudWxsIik7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwot
Ci0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdz
dG9yZU5hbWUnLCBudWxsKSIpOwotCi0gICAgZGVidWcoImFkZGluZyAwIC4uLiA5OSIpOwotICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKLSAgICAgICAgcmVxdWVzdCA9IHN0b3Jl
LmFkZChpLCBpKTsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci0gICAgfQotICAgIHRyYW5zLm9uY29tcGxldGUgPSB2ZXJpZnlDb3VudDsKLX0KLQot
ZnVuY3Rpb24gdmVyaWZ5Q291bnQoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygidmVy
aWZ5aW5nIGNvdW50IHdpdGhvdXQgcmFuZ2UiKTsKLSAgICB0cmFucyA9IGV2YWxBbmRMb2coInRy
YW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05M
WSkiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9IG51bGwiKTsKLSAgICB0cmFucy5vbmFi
b3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IHZl
cmlmeUNvdW50V2l0aFJhbmdlOwotCi0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRy
YW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotICAgIHNob3VsZEJlVHJ1ZSgic3RvcmUg
IT0gbnVsbCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdG9yZS5j
b3VudCgpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgIHNob3VsZEJl
VHJ1ZSgidHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXInIik7Ci0gICAgICAgICBzaG91
bGRCZSgicmVxdWVzdC5yZXN1bHQiLCAiMTAwIik7Ci0gICAgICAgICAvLyBsZXQgdGhlIHRyYW5z
YWN0aW9uIGNvbXBsZXRlCi0gICAgfTsKLX0KLQotZnVuY3Rpb24gdmVyaWZ5Q291bnRXaXRoUmFu
Z2UoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygidmVyaWZ5aW5nIGNvdW50IHdpdGgg
cmFuZ2UiKTsKLSAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24o
J3N0b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkiKTsKLSAgICBzaG91bGRCZVRy
dWUoInRyYW5zICE9IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0
Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IHZlcmlmeUNvdW50V2l0aEtleTsKLQot
ICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVO
YW1lJykiKTsKLSAgICBzaG91bGRCZVRydWUoInN0b3JlICE9IG51bGwiKTsKLQotICAgIHZhciB0
ZXN0cyA9IFsKLSAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDk5
LCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogMTAwIH0sCi0gICAgICAgIHsgbG93ZXI6IDAs
IGxvd2VyT3BlbjogdHJ1ZSwgdXBwZXI6IDk5LCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDog
OTkgfSwKLSAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDk5LCB1
cHBlck9wZW46IHRydWUsIGV4cGVjdGVkOiA5OSB9LAotICAgICAgICB7IGxvd2VyOiAwLCBsb3dl
ck9wZW46IHRydWUsIHVwcGVyOiA5OSwgdXBwZXJPcGVuOiB0cnVlLCBleHBlY3RlZDogOTggfSwK
LSAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDEwMCwgdXBwZXJP
cGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDEwMCB9LAotICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9w
ZW46IGZhbHNlLCB1cHBlcjogMTAwLCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogMTAwIH0s
Ci0gICAgICAgIHsgbG93ZXI6IDEwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogMTAwLCB1cHBl
ck9wZW46IGZhbHNlLCBleHBlY3RlZDogOTAgfSwKLSAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJP
cGVuOiBmYWxzZSwgdXBwZXI6IDAsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiAxIH0sCi0g
ICAgICAgIHsgbG93ZXI6IDUwMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDUwMCwgdXBwZXJP
cGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDAgfQotICAgIF07Ci0KLSAgICBmdW5jdGlvbiBuZXh0VGVz
dCgpIHsKLSAgICAgICAgZGVidWcoIiIpOwotICAgICAgICBldmFsQW5kTG9nKCJ0ZXN0ID0gIiAr
IEpTT04uc3RyaW5naWZ5KHRlc3RzLnNoaWZ0KCkpKTsKLSAgICAgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBzdG9yZS5jb3VudChJREJLZXlSYW5nZS5ib3VuZCh0ZXN0Lmxvd2Vy
LCB0ZXN0LnVwcGVyLCB0ZXN0Lmxvd2VyT3BlbiwgdGVzdC51cHBlck9wZW4pKSIpOwotICAgICAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICBzaG91bGRCZVRydWUo
InR5cGVvZiByZXF1ZXN0LnJlc3VsdCA9PSAnbnVtYmVyJyIpOwotICAgICAgICAgICAgIHNob3Vs
ZEJlKCJyZXF1ZXN0LnJlc3VsdCIsIFN0cmluZyh0ZXN0LmV4cGVjdGVkKSk7Ci0KLSAgICAgICAg
ICAgICBpZiAodGVzdHMubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgIG5leHRUZXN0KCk7Ci0g
ICAgICAgICAgICAgfQotICAgICAgICAgICAgIC8vIG90aGVyd2lzZSBsZXQgdGhlIHRyYW5zYWN0
aW9uIGNvbXBsZXRlCi0gICAgICAgIH07Ci0gICAgfQotCi0gICAgbmV4dFRlc3QoKTsKLX0KLQot
ZnVuY3Rpb24gdmVyaWZ5Q291bnRXaXRoS2V5KCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVi
dWcoInZlcmlmeWluZyBjb3VudCB3aXRoIGtleSIpOwotICAgIHRyYW5zID0gZXZhbEFuZExvZygi
dHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9P
TkxZKSIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT0gbnVsbCIpOwotICAgIHRyYW5zLm9u
YWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0g
ZmluaXNoSlNUZXN0OwotCi0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9i
amVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotICAgIHNob3VsZEJlVHJ1ZSgic3RvcmUgIT0gbnVs
bCIpOwotCi0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuY291bnQoTmFOKSIsICJJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRp
b24oInN0b3JlLmNvdW50KHt9KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwot
ICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmNvdW50KC9yZWdleC8pIiwgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0KLSAgICB2YXIgdGVzdHMgPSBbCi0gICAgICAg
IHsga2V5OiAwLCBleHBlY3RlZDogMSB9LAotICAgICAgICB7IGtleTogMTAwLCBleHBlY3RlZDog
MCB9LAotICAgICAgICB7IGtleTogbnVsbCwgZXhwZWN0ZWQ6IDEwMCB9Ci0gICAgXTsKLQotICAg
IGZ1bmN0aW9uIG5leHRUZXN0KCkgewotICAgICAgICBkZWJ1ZygiIik7Ci0gICAgICAgIGV2YWxB
bmRMb2coInRlc3QgPSAiICsgSlNPTi5zdHJpbmdpZnkodGVzdHMuc2hpZnQoKSkpOwotICAgICAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHN0b3JlLmNvdW50KHRlc3Qua2V5KSIp
OwotICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAg
ICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHNob3Vs
ZEJlVHJ1ZSgidHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXInIik7Ci0gICAgICAgICAg
ICBzaG91bGRCZSgicmVxdWVzdC5yZXN1bHQiLCBTdHJpbmcodGVzdC5leHBlY3RlZCkpOwotICAg
ICAgICAgICAgIGlmICh0ZXN0cy5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICAgbmV4dFRlc3Qo
KTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIGxldCB0aGUgdHJh
bnNhY3Rpb24gY29tcGxldGUKLSAgICAgICAgfTsKLSAgICB9Ci0KLSAgICBuZXh0VGVzdCgpOwot
fQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vYmplY3Rz
dG9yZS1jb3VudC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWN1cnNvci5o
dG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY3Vyc29yLmh0
bWwKaW5kZXggY2Q0ZjIyZGNkMDIzZWU5ZmFiMzlkYTBjYjMxYmFkOTkxYjc4MTE1MC4uNTk0MDdj
NGExYTVhODAzMWZiMWM1OWI3MjYzN2Q2ZTkyNWM2ZjQ0MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY3Vyc29yLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY3Vyc29yLmh0bWwKQEAgLTQsMjMx
ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwv
aGVhZD4KIDxib2R5PgotPHNjcmlwdD4gCi0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidz
IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IgKyB0aGUgY3Vyc29yIGl0IHByb2R1Y2VzIGluIGRlcHRo
LiIpOwotIAotLy8gSW4gb3JkZXIgb2YgaG93IGl0IHNob3VsZCBiZSBzb3J0ZWQgYnkgSW5kZXhl
ZERCLgotc2VsZi50ZXN0RGF0YSA9IFsKLSAgICAyLjcxODI4MTgyODQ1OSwKLSAgICAzLAotICAg
IDMuMTQxNTkyNjUsCi0gICAgMTAsCi0gICAgLy8gRklYTUU6IERhdGVzLgotICAgICJBIGJpZ2dl
ciBzdHJpbmciLAotICAgICJUaGUgYmlnZ2VzdCIsCi0gICAgImEgbG93IHN0cmluZyIKLV07Ci0g
Ci1mdW5jdGlvbiBvcGVuRGF0YWJhc2UoKQotewotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIub3Blbignb2JqZWN0c3RvcmUtY3Vyc29yJykiKTsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IHNldFZlcnNpb247Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0gCi1mdW5jdGlvbiBzZXRWZXJzaW9uKCkKLXsKLSAgICBzZWxmLmRiID0g
ZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKLXsKLSAg
ICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQg
PSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLQotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jlcyhk
Yik7Ci0KLSAgICBzZWxmLm9iamVjdFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ3NvbWVPYmplY3RTdG9yZScpIik7Ci0gICAgc2VsZi5uZXh0VG9BZGQgPSAwOwotICAg
IGFkZERhdGEoKTsKLX0KLQotZnVuY3Rpb24gYWRkRGF0YSgpCi17Ci0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnJywgdGVzdERhdGFbbmV4dFRvQWRkXSkiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9ICsrc2VsZi5uZXh0VG9BZGQgPCB0ZXN0RGF0YS5sZW5ndGgg
PyBhZGREYXRhIDogc2NoZWR1bGVUZXN0czsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc2NoZWR1bGVUZXN0cygpCi17Ci0gICAg
ZGVidWcoIlNjaGVkdWxpbmcgdGVzdHMuLi4iKTsKLSAgICBzZWxmLnNjaGVkdWxlZFRlc3RzID0g
W107Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0RGF0YS5sZW5ndGg7ICsraSkgewotICAg
ICAgICAvKiBsZWZ0IGJvdW5kLCBpcyBvcGVuLCByaWdodCBib3VuZCwgaXMgb3BlbiwgYXNjZW5k
aW5nICovCi0gICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIHRydWUsIG51bGwsIG51
bGwsIHRydWVdKTsKLSAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgZmFsc2UsIG51
bGwsIG51bGwsIHRydWVdKTsKLSAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbbnVsbCwg
bnVsbCwgaSwgdHJ1ZSwgdHJ1ZV0pOwotICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtu
dWxsLCBudWxsLCBpLCBmYWxzZSwgdHJ1ZV0pOwotICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNo
aWZ0KFtpLCB0cnVlLCBudWxsLCBudWxsLCBmYWxzZV0pOwotICAgICAgICBzY2hlZHVsZWRUZXN0
cy51bnNoaWZ0KFtpLCBmYWxzZSwgbnVsbCwgbnVsbCwgZmFsc2VdKTsKLSAgICAgICAgc2NoZWR1
bGVkVGVzdHMudW5zaGlmdChbbnVsbCwgbnVsbCwgaSwgdHJ1ZSwgZmFsc2VdKTsKLSAgICAgICAg
c2NoZWR1bGVkVGVzdHMudW5zaGlmdChbbnVsbCwgbnVsbCwgaSwgZmFsc2UsIGZhbHNlXSk7Ci0g
ICAgICAgIGZvciAodmFyIGogPSA2OyBqIDwgdGVzdERhdGEubGVuZ3RoOyArK2opIHsKLSAgICAg
ICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIHRydWUsIGosIHRydWUsIHRydWVdKTsK
LSAgICAgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIHRydWUsIGosIGZhbHNlLCB0
cnVlXSk7Ci0gICAgICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCBmYWxzZSwgaiwg
dHJ1ZSwgdHJ1ZV0pOwotICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgZmFs
c2UsIGosIGZhbHNlLCB0cnVlXSk7Ci0gICAgICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0
KFtpLCB0cnVlLCBqLCB0cnVlLCBmYWxzZV0pOwotICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMu
dW5zaGlmdChbaSwgdHJ1ZSwgaiwgZmFsc2UsIGZhbHNlXSk7Ci0gICAgICAgICAgICBzY2hlZHVs
ZWRUZXN0cy51bnNoaWZ0KFtpLCBmYWxzZSwgaiwgdHJ1ZSwgZmFsc2VdKTsKLSAgICAgICAgICAg
IHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBqLCBmYWxzZSwgZmFsc2VdKTsKLSAg
ICAgICAgfQotICAgIH0KLSAKLSAgICBkZWJ1ZygiUnVubmluZyB0ZXN0cy4uLiIpOwotICAgIHJ1
bk5leHRUZXN0KCk7Ci19Ci0gCi1mdW5jdGlvbiBydW5OZXh0VGVzdCgpCi17Ci0gICAgaWYgKCFz
Y2hlZHVsZWRUZXN0cy5sZW5ndGgpIHsKLSAgICAgICAgdGVzdE51bGxLZXlSYW5nZSgpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotIAotICAgIHZhciB0ZXN0ID0gc2NoZWR1bGVkVGVzdHMucG9w
KCk7Ci0gICAgc2VsZi5sb3dlciA9IHRlc3RbMF07Ci0gICAgc2VsZi5sb3dlcklzT3BlbiA9IHRl
c3RbMV07Ci0gICAgc2VsZi51cHBlciA9IHRlc3RbMl07Ci0gICAgc2VsZi51cHBlcklzT3BlbiA9
IHRlc3RbM107Ci0gICAgc2VsZi5hc2NlbmRpbmcgPSB0ZXN0WzRdOwotCi0gICAgc3RyID0gIk5l
eHQgdGVzdDogIjsKLSAgICBpZiAobG93ZXIgIT09IG51bGwpIHsKLSAgICAgICAgc3RyICs9ICJs
b3dlciAiOwotICAgICAgICBpZiAobG93ZXJJc09wZW4pCi0gICAgICAgICAgICBzdHIgKz0gIm9w
ZW4gIjsKLSAgICAgICAgc3RyICs9ICJib3VuZCBpcyAiICsgbG93ZXIgKyAiOyAiOwotICAgIH0K
LSAgICBpZiAodXBwZXIgIT09IG51bGwpIHsKLSAgICAgICAgc3RyICs9ICJ1cHBlciAiOwotICAg
ICAgICBpZiAodXBwZXJJc09wZW4pCi0gICAgICAgICAgICBzdHIgKz0gIm9wZW4gIjsKLSAgICAg
ICAgc3RyICs9ICJib3VuZCBpcyAiICsgdXBwZXIgKyAiOyAiOwotICAgIH0KLSAgICBpZiAoYXNj
ZW5kaW5nKQotICAgICAgICBzdHIgKz0gInNvcnRlZCBhc2NlbmRpbmcuIjsKLSAgICBlbHNlCi0g
ICAgICAgIHN0ciArPSAic29ydGVkIGRlc2NlbmRpbmcuIjsKLQotICAgIGRlYnVnKCIiKTsKLSAg
ICBkZWJ1ZyhzdHIpOwotIAotICAgIGlmIChhc2NlbmRpbmcpIHsKLSAgICAgICAgaWYgKGxvd2Vy
ICE9PSBudWxsKSB7Ci0gICAgICAgICAgICBpZiAoIWxvd2VySXNPcGVuKQotICAgICAgICAgICAg
ICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IGxvd2VyOwotICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IGxvd2VyKzE7Ci0gICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gMDsKLSAgICB9IGVsc2UgewotICAgICAg
ICBpZiAodXBwZXIgIT09IG51bGwpIHsKLSAgICAgICAgICAgIGlmICghdXBwZXJJc09wZW4pCi0g
ICAgICAgICAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gdXBwZXI7Ci0gICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gdXBwZXItMTsKLSAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSB0ZXN0RGF0YS5sZW5n
dGgtMTsKLSAgICB9Ci0gICAgdGVzdFdpdGhpbkJvdW5kcygpOwotIAotICAgIGlmICh0ZXN0RGF0
YVtsb3dlcl0gPT09IHRlc3REYXRhW3VwcGVyXSAmJiAobG93ZXJJc09wZW4gfHwgdXBwZXJJc09w
ZW4pKSB7Ci0gICAgICAgIGRlYnVnKCJTa2lwcGluZyBpbGxlZ2FsIGtleSByYW5nZS4iKTsKLSAg
ICAgICAgcnVuTmV4dFRlc3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHZhciBr
ZXlSYW5nZTsKLSAgICBpZiAobG93ZXIgIT09IG51bGwgJiYgdXBwZXIgIT09IG51bGwpCi0gICAg
ICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2UuYm91bmQodGVzdERhdGFbbG93ZXJdLCB0ZXN0RGF0
YVt1cHBlcl0sIGxvd2VySXNPcGVuLCB1cHBlcklzT3Blbik7Ci0gICAgZWxzZSBpZiAobG93ZXIg
IT09IG51bGwpCi0gICAgICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2UubG93ZXJCb3VuZCh0ZXN0
RGF0YVtsb3dlcl0sIGxvd2VySXNPcGVuKTsKLSAgICBlbHNlCi0gICAgICAgIGtleVJhbmdlID0g
SURCS2V5UmFuZ2UudXBwZXJCb3VuZCh0ZXN0RGF0YVt1cHBlcl0sIHVwcGVySXNPcGVuKTsKLSAK
LSAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3Ioa2V5UmFuZ2UsIGFzY2Vu
ZGluZyA/IElEQkN1cnNvci5ORVhUIDogSURCQ3Vyc29yLlBSRVYpOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gY3Vyc29ySXRlcmF0aW9uOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiB0ZXN0V2l0aGluQm91bmRzKCkKLXsKLSAg
ICBpZiAoZXhwZWN0ZWRJbmRleCA8IDAgfHwgdGVzdERhdGEubGVuZ3RoIDw9IGV4cGVjdGVkSW5k
ZXgpCi0gICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IG51bGw7Ci0gICAgaWYgKGxvd2VyICE9
PSBudWxsICYmIGV4cGVjdGVkSW5kZXggPCBsb3dlcikKLSAgICAgICAgc2VsZi5leHBlY3RlZElu
ZGV4ID0gbnVsbDsKLSAgICBpZiAodXBwZXIgIT09IG51bGwgJiYgdXBwZXIgPCBleHBlY3RlZElu
ZGV4KQotICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSBudWxsOwotICAgIGlmIChsb3dlciAh
PT0gbnVsbCAmJiBsb3dlcklzT3BlbiAmJiBleHBlY3RlZEluZGV4IDw9IGxvd2VyKQotICAgICAg
ICBzZWxmLmV4cGVjdGVkSW5kZXggPSBudWxsOwotICAgIGlmICh1cHBlciAhPT0gbnVsbCAmJiB1
cHBlcklzT3BlbiAmJiB1cHBlciA8PSBleHBlY3RlZEluZGV4KQotICAgICAgICBzZWxmLmV4cGVj
dGVkSW5kZXggPSBudWxsOwotfQotIAotZnVuY3Rpb24gY3Vyc29ySXRlcmF0aW9uKCkKLXsKLSAg
ICBpZiAoZXhwZWN0ZWRJbmRleCA9PT0gbnVsbCkgewotICAgICAgICBzaG91bGRCZU51bGwoImV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICAgICAgcnVuTmV4dFRlc3QoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9PT0gbnVsbCkgewotICAg
ICAgICB0ZXN0RmFpbGVkKCJldmVudC50YXJnZXQucmVzdWx0IHNob3VsZCBub3QgYmUgbnVsbC4i
KTsKLSAgICAgICAgcnVuTmV4dFRlc3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAKLSAg
ICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAidGVzdERhdGFbIiArIGV4cGVj
dGVkSW5kZXggKyAiXSIpOwotICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IGFzY2VuZGluZyA/IGV4
cGVjdGVkSW5kZXgrMSA6IGV4cGVjdGVkSW5kZXgtMTsKLSAgICB0ZXN0V2l0aGluQm91bmRzKCk7
Ci0KLSAgICBldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCk7Ci19Ci0gCi1zZWxmLm51bGxL
ZXlSYW5nZVN0ZXAgPSAwOwotZnVuY3Rpb24gdGVzdE51bGxLZXlSYW5nZSgpCi17Ci0gICAgc2Vs
Zi5sb3dlciA9IDA7Ci0gICAgc2VsZi5sb3dlcklzT3BlbiA9IGZhbHNlOwotICAgIHNlbGYudXBw
ZXIgPSB0ZXN0RGF0YS5sZW5ndGgtMTsKLSAgICBzZWxmLnVwcGVySXNPcGVuID0gZmFsc2U7Ci0K
LSAgICBzdHIgPSAiTmV4dCB0ZXN0OiBudWxsIGtleSBwYXRoICI7Ci0gICAgaWYgKHNlbGYubnVs
bEtleVJhbmdlU3RlcCA9PSAwKSB7Ci0gICAgICAgIHN0ciArPSAic29ydGVkIGFzY2VuZGluZy4i
OwotICAgICAgICBzZWxmLmFzY2VuZGluZyA9IHRydWU7Ci0gICAgICAgIHNlbGYuZXhwZWN0ZWRJ
bmRleCA9IGxvd2VyOwotICAgICAgICBzZWxmLm51bGxLZXlSYW5nZVN0ZXAgPSAxOwotICAgIH0g
ZWxzZSBpZiAoc2VsZi5udWxsS2V5UmFuZ2VTdGVwID09IDEpIHsKLSAgICAgICAgc3RyICs9ICJz
b3J0ZWQgZGVzY2VuZGluZy4iOwotICAgICAgICBzZWxmLmFzY2VuZGluZyA9IGZhbHNlOwotICAg
ICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSB1cHBlcjsKLSAgICAgICAgc2VsZi5udWxsS2V5UmFu
Z2VTdGVwID0gMjsKLSAgICB9IGVsc2UgewotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZyhzdHIpOwotIAot
ICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcihudWxsLCBhc2NlbmRpbmcg
PyBJREJDdXJzb3IuTkVYVCA6IElEQkN1cnNvci5QUkVWKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGN1cnNvckl0ZXJhdGlvbjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLX0KLSAKLXJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci1vcGVuRGF0YWJhc2Uo
KTsgLy8gVGhlIGZpcnN0IHN0ZXAuCi0gCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvb2JqZWN0c3RvcmUtY3Vyc29yLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3Rv
cmUtcmVtb3Zlb2JqZWN0c3RvcmUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L29iamVjdHN0b3JlLXJlbW92ZW9iamVjdHN0b3JlLmh0bWwKaW5kZXggNTExNDY1MTI2MmQ0ZGY5
ZWRjMjI4NWU3MjU4MTkwZjdmMzE5ZDdjMC4uNDczMTExNDAwYjA4ZjBiZTM5YTVkZDMyZjJiMjgz
M2EyOTM0ZmYwMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2Jq
ZWN0c3RvcmUtcmVtb3Zlb2JqZWN0c3RvcmUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9vYmplY3RzdG9yZS1yZW1vdmVvYmplY3RzdG9yZS5odG1sCkBAIC00LDEwMiAr
NCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hl
YWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIHdl
YmtpdElEQk9iamVjdFN0b3JlLmRlbGV0ZU9iamVjdFN0b3JlKCkuIik7Ci0KLWZ1bmN0aW9uIHRl
c3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImluZGV4ZWREQi5vcGVuKCdvYmplY3RzdG9yZS1yZW1vdmVvYmplY3RzdG9yZScpIik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzdGFydFNldFZlcnNpb247Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHN0YXJ0U2V0
VmVyc2lvbigpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVy
c2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24g
ZGVsZXRlRXhpc3RpbmcoKQotewotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9
IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxs
Iik7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgc3RvcmUgPSBldmFs
QW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIp
OwotCi0gICAgc2VsZi5pbmRleCA9IGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdpbmRl
eE5hbWUnLCAnJykiKTsKLSAgICBzaG91bGRCZVRydWUoInN0b3JlLmluZGV4TmFtZXMuY29udGFp
bnMoJ2luZGV4TmFtZScpIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRk
KCd2YWx1ZScsICdrZXknKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBnZXRWYWx1ZTsKLX0KLQotZnVuY3Rp
b24gZ2V0VmFsdWUoKQotewotICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygiZGIudHJhbnNh
Y3Rpb24oWydzdG9yZU5hbWUnXSkiKTsKLSAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0
cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLQotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJzdG9yZS5nZXQoJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBh
ZGRJbmRleDsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LX0KLQotZnVuY3Rpb24gYWRkSW5kZXgoKQotewotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
ZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ2YWx1ZSIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGRlbGV0ZU9iamVjdFN0b3JlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBkZWxldGVPYmplY3RTdG9yZSgpCi17Ci0gICAg
c2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwot
ICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0g
dW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0KLSAgICBldmFsQW5kTG9nKCJkYi5kZWxldGVPYmpl
Y3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLSAgICBjcmVhdGVPYmplY3RTdG9yZUFnYWluKCk7Ci19
Ci0KLWZ1bmN0aW9uIGNyZWF0ZU9iamVjdFN0b3JlQWdhaW4oKQotewotICAgIGV2YWxBbmRMb2co
ImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOwotICAgIHRyYW5zLm9u
Y29tcGxldGUgPSBnZXRWYWx1ZUFnYWluOwotfQotCi1mdW5jdGlvbiBnZXRWYWx1ZUFnYWluKCkK
LXsKLSAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coImRiLnRyYW5zYWN0aW9uKFsnc3RvcmVO
YW1lJ10pIik7Ci0gICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotICAgIHZhciBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2Jq
ZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3Rv
cmUuZ2V0KCdrZXknKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdmVyaWZ5Tm90Rm91bmQ7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1
bmN0aW9uIHZlcmlmeU5vdEZvdW5kKCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJl
c3VsdCIsICJ1bmRlZmluZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJldmVudC50YXJnZXQuc291
cmNlLmluZGV4TmFtZXMuY29udGFpbnMoJ2luZGV4TmFtZScpIik7Ci0KLSAgICBmaW5pc2hKU1Rl
c3QoKTsKLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
b2JqZWN0c3RvcmUtcmVtb3Zlb2JqZWN0c3RvcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2Jv
ZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9v
ZGQtc3RyaW5ncy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2RkLXN0cmlu
Z3MuaHRtbAppbmRleCBhOGEwNzJhMzQ3MzEwNTEwOTllMDdkZmFhMGRlZDA4OGYwM2IwZDY0Li42
NWEzNjNiZDBkOWYwOTk0NDk0MmIwNTliN2I3NjE1ZTQwZGE3ZmE0IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vZGQtc3RyaW5ncy5odG1sCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29kZC1zdHJpbmdzLmh0bWwKQEAgLTEsMTExICsxLDEwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJl
c291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0Pgot
Ci1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgb2RkIHZhbHVlIGRhdGF0eXBlcyIpOwotCi1m
dW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgdGVz
dERhdGEgPSBbeyBkZXNjcmlwdGlvbjogJ251bGwnLCAgICAgICAgICAgICAgIG5hbWU6ICdcdTAw
MDAnIH0sCi0gICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ2ZhaWh1JywgICAgICAgICAg
ICAgIG5hbWU6ICdcdWQ4MDBcdWRmNDYnIH0sCi0gICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlv
bjogJ3VucGFpcmVkIHN1cnJvZ2F0ZScsIG5hbWU6ICdcdWQ4MDAnIH0sCi0gICAgICAgICAgICAg
ICAgeyBkZXNjcmlwdGlvbjogJ2ZmZmUnLCAgICAgICAgICAgICAgIG5hbWU6ICdcdWZmZmUnIH0s
Ci0gICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ2ZmZmYnLCAgICAgICAgICAgICAgIG5h
bWU6ICdcdWZmZmYnIH0sCi0gICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ2xpbmUgc2Vw
YXJhdG9yJywgICAgIG5hbWU6ICdcdTIwMjgnIH0KLSAgICBdOwotICAgIG5leHRUb09wZW4gPSAw
OwotICAgIG9wZW5OZXh0RGF0YWJhc2UoKTsKLX0KLQotZnVuY3Rpb24gb3Blbk5leHREYXRhYmFz
ZSgpCi17Ci0gICAgZGVidWcoIm9wZW5pbmcgYSBkYXRhYmFzZSBuYW1lZCAiICsgdGVzdERhdGFb
bmV4dFRvT3Blbl0uZGVzY3JpcHRpb24pOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRl
eGVkREIub3Blbih0ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1lLCB0ZXN0RGF0YVtuZXh0VG9PcGVu
XS5kZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotfQotCi1mdW5j
dGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNl
dFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkQUtleTsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24g
YWRkQUtleSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9iamVj
dFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSh0
ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1lKTsiKTsKLSAgICBrZXkgPSBldmFsQW5kTG9nKCJrZXkg
PSB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1lIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoa2V5LCBrZXkpOyIpOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gY2xvc2VEYXRhYmFzZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY2xvc2VEYXRhYmFzZSgpCi17Ci0gICAgZXZh
bEFuZExvZygiZGIuY2xvc2UoKSIpOwotICAgIGRlYnVnKCIiKTsKLSAgICBpZiAoKytuZXh0VG9P
cGVuIDwgdGVzdERhdGEubGVuZ3RoKSB7Ci0gICAgICAgIG9wZW5OZXh0RGF0YWJhc2UoKTsKLSAg
ICB9IGVsc2UgewotICAgICAgICBuZXh0VG9PcGVuID0gMDsKLSAgICAgICAgdmVyaWZ5TmV4dERh
dGFiYXNlKCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB2ZXJpZnlOZXh0RGF0YWJhc2UoKQotewot
ICAgIGRlYnVnKCJyZW9wZW5pbmcgYSBkYXRhYmFzZSBuYW1lZCAiICsgdGVzdERhdGFbbmV4dFRv
T3Blbl0uZGVzY3JpcHRpb24pOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
b3Blbih0ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1lLCB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5kZXNj
cmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzMjsKLX0KLQotZnVuY3Rpb24g
b3BlblN1Y2Nlc3MyKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVy
c2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRBS2V5OwotfQotCi1mdW5jdGlvbiBnZXRB
S2V5KCkKLXsKLSAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOwotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSB0cmFu
cy5vYmplY3RTdG9yZSh0ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1lKTsiKTsKLSAgICBrZXkgPSBl
dmFsQW5kTG9nKCJrZXkgPSB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1lIik7Ci0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBvcGVuQ3Vyc29yU3VjY2VzczsKLX0KLQotZnVuY3Rpb24gb3BlbkN1cnNv
clN1Y2Nlc3MoKQotewotICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRh
cmdldC5yZXN1bHQ7Iik7Ci0gICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAidGVzdERhdGFbbmV4
dFRvT3Blbl0ubmFtZSIpOwotICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAidGVzdERhdGFb
bmV4dFRvT3Blbl0ubmFtZSIpOwotICAgIGlmICgrK25leHRUb09wZW4gPCB0ZXN0RGF0YS5sZW5n
dGgpIHsKLSAgICAgICAgZGVidWcoIiIpOwotICAgICAgICB2ZXJpZnlOZXh0RGF0YWJhc2UoKTsK
LSAgICB9IGVsc2UgewotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9Ci19Ci0KLQotdGVz
dCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb2RkLXN0cmluZ3MuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVuLWNsb3NlLXZlcnNpb24uaHRtbCBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4tY2xvc2UtdmVyc2lvbi5odG1sCmluZGV4IDZjMTRm
ZTEzYmZkNzIwNTYzZTM4YzY5YzAxMjk5NDY1ZTAyMDk2MDkuLjI5ZDNhZjNjZTczYWY5NTdiMzM2
NTY2OTg1MTQ0ODlkZjFiMjllM2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL29wZW4tY2xvc2UtdmVyc2lvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL29wZW4tY2xvc2UtdmVyc2lvbi5odG1sCkBAIC00LDI4OSArNCw3IEBACiA8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4K
LTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IGludGVybGVhdmVkIG9wZW4vY2xvc2Uvc2V0
VmVyc2lvbiBjYWxscyBpbiB2YXJpb3VzIHBlcm11dGF0aW9ucyIpOwotCi1mdW5jdGlvbiBDb25u
ZWN0aW9uKGlkKSB7Ci0gICAgaWQgPSBTdHJpbmcoaWQpOwotICAgIHZhciB0aGF0ID0gdGhpczsK
LSAgICB0aGlzLm9wZW4gPSBmdW5jdGlvbihvcHRzKSB7Ci0gICAgICAgIHNlbGYuc3RlcHMucHVz
aChldmFsQW5kTG9nKCInIiArIGlkICsgIi5vcGVuJyIpKTsKLSAgICAgICAgdmFyIHJlcSA9IGlu
ZGV4ZWREQi5vcGVuKHNlbGYuZGJuYW1lKTsKLSAgICAgICAgcmVxLm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7
Ci0gICAgICAgICAgICB0aGF0LmhhbmRsZSA9IGUudGFyZ2V0LnJlc3VsdDsKLSAgICAgICAgICAg
IHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5vcGVuLm9uc3VjY2Vzcyci
KSk7Ci0gICAgICAgICAgICB0aGF0LmhhbmRsZS5vbnZlcnNpb25jaGFuZ2UgPSBmdW5jdGlvbihl
KSB7Ci0gICAgICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQg
KyAiLm9udmVyc2lvbmNoYW5nZSciKSk7Ci0gICAgICAgICAgICAgICAgaWYgKG9wdHMgJiYgb3B0
cy5vbnZlcnNpb24pIHsgb3B0cy5vbnZlcnNpb24uY2FsbCh0aGF0KTsgfQotICAgICAgICAgICAg
fTsKLSAgICAgICAgICAgIGlmIChvcHRzICYmIG9wdHMub25zdWNjZXNzKSB7IG9wdHMub25zdWNj
ZXNzLmNhbGwodGhhdCk7IH0KLSAgICAgICAgfTsKLSAgICB9OwotCi0gICAgdGhpcy5jbG9zZSA9
IGZ1bmN0aW9uKCkgewotICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBp
ZCArICIuY2xvc2UnIikpOwotICAgICAgICB0aGlzLmhhbmRsZS5jbG9zZSgpOwotICAgIH07Ci0K
LSAgICB0aGlzLnNldFZlcnNpb24gPSBmdW5jdGlvbihvcHRzKSB7Ci0gICAgICAgIHNlbGYuc3Rl
cHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5zZXRWZXJzaW9uJyIpKTsKLSAgICAgICAg
dmFyIHJlcSA9IHRoaXMuaGFuZGxlLnNldFZlcnNpb24oU3RyaW5nKHNlbGYudmVyKyspKTsKLSAg
ICAgICAgcmVxLm9uYWJvcnQgPSBmdW5jdGlvbiAoZSkgewotICAgICAgICAgICAgc2VsZi5zdGVw
cy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLnNldFZlcnNpb24ub25hYm9ydCciKSk7Ci0g
ICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9uYWJvcnQpIHsgb3B0cy5vbmFib3J0LmNhbGwo
dGhhdCk7IH0KLSAgICAgICAgfTsKLSAgICAgICAgcmVxLm9uYmxvY2tlZCA9IGZ1bmN0aW9uIChl
KSB7Ci0gICAgICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIu
c2V0VmVyc2lvbi5vbmJsb2NrZWQnIikpOwotICAgICAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5v
bmJsb2NrZWQpIHsgb3B0cy5vbmJsb2NrZWQuY2FsbCh0aGF0KTsgfQotICAgICAgICB9OwotICAg
ICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAgICAgIHNlbGYuc3Rl
cHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5zZXRWZXJzaW9uLm9uc3VjY2VzcyciKSk7
Ci0gICAgICAgICAgICBpZiAodGhhdC5oYW5kbGUub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucygi
dGVzdC1zdG9yZSIgKyBzZWxmLnZlcikpIHsKLSAgICAgICAgICAgICAgICB0aGF0LmhhbmRsZS5k
ZWxldGVPYmplY3RTdG9yZSgidGVzdC1zdG9yZSIgKyBzZWxmLnZlcik7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICB2YXIgc3RvcmUgPSB0aGF0LmhhbmRsZS5jcmVhdGVPYmplY3RTdG9yZSgi
dGVzdC1zdG9yZSIgKyBzZWxmLnZlcik7Ci0gICAgICAgICAgICB2YXIgY291bnQgPSAwOwotICAg
ICAgICAgICAgZG9fYXN5bmNfcHV0cygpOyAvLyBLZWVwIHRoaXMgdHJhbnNhY3Rpb24gcnVubmlu
ZyBmb3IgYSB3aGlsZQotICAgICAgICAgICAgZnVuY3Rpb24gZG9fYXN5bmNfcHV0cygpIHsKLSAg
ICAgICAgICAgICAgICB2YXIgcmVxID0gc3RvcmUucHV0KGNvdW50LCBjb3VudCk7Ci0gICAgICAg
ICAgICAgICAgcmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAg
ICAgICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKCsrY291bnQgPCAxMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgZG9fYXN5bmNf
cHV0cygpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLnNldFZlcnNpb24u
dHJhbnNhY3Rpb24tY29tcGxldGUnIikpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9w
dHMgJiYgb3B0cy5vbnN1Y2Nlc3MpIHsgb3B0cy5vbnN1Y2Nlc3MuY2FsbCh0aGF0KTsgfQotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfTsKLSAgICAgICAgcmVxLm9uZXJyb3IgPSBmdW5jdGlvbiAoZSkgewotICAgICAgICAg
ICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLnNldFZlcnNpb24ub25l
cnJvciciKSk7Ci0gICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9uZXJyb3IpIHsgb3B0cy5v
bmVycm9yLmNhbGwodGhhdCk7IH0KLSAgICAgICAgfTsKLSAgICB9OwotfQotCi0vLyBydW4gYSBz
ZXJpZXMgb2Ygc3RlcHMgdGhhdCB0YWtlIGEgY29udGludWF0aW9uIGZ1bmN0aW9uCi1mdW5jdGlv
biBydW5TdGVwcyhjb21tYW5kcykgewotICAgIGlmIChjb21tYW5kcy5sZW5ndGgpIHsKLSAgICAg
ICAgdmFyIGNvbW1hbmQgPSBjb21tYW5kcy5zaGlmdCgpOwotICAgICAgICBjb21tYW5kKGZ1bmN0
aW9uKCkgeyBydW5TdGVwcyhjb21tYW5kcyk7IH0pOwotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVz
dCgpIHsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIHRlc3QxKCk7Ci19Ci0KLWZ1
bmN0aW9uIHRlc3QxKCkgewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiVEVTVDogc2V0VmVy
c2lvbiBibG9ja2VkIG9uIG9wZW4gaGFuZGxlcyIpOwotICAgIGV2YWxBbmRMb2coInNlbGYuZGJu
YW1lID0gJ3Rlc3QxJzsgc2VsZi52ZXIgPSAxOyBzZWxmLnN0ZXBzID0gW10iKTsKLSAgICB2YXIg
aDEgPSBuZXcgQ29ubmVjdGlvbigiaDEiKTsKLSAgICB2YXIgaDIgPSBuZXcgQ29ubmVjdGlvbigi
aDIiKTsKLSAgICBydW5TdGVwcyhbZnVuY3Rpb24oZG9OZXh0KSB7IGgxLm9wZW4oe29uc3VjY2Vz
czogZG9OZXh0fSk7IH0sCi0gICAgICAgICBmdW5jdGlvbihkb05leHQpIHsgaDIub3Blbih7b25z
dWNjZXNzOiBkb05leHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9udmVyc2lv
bjogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1
ZygiICAgIGgyIGNsb3NpbmcsIGJ1dCBub3QgaW1tZWRpYXRlbHkiKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGgyLmNsb3NlKCk7
IH0sIDApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fSk7IH0sCi0gICAgICAg
ICBmdW5jdGlvbihkb05leHQpIHsgaDEuc2V0VmVyc2lvbih7b25zdWNjZXNzOiBmaW5pc2hUZXN0
fSk7IH0sCi0gICAgICAgICBdKTsKLSAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgewotICAgICAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNlbGYuc3RlcHMudG9TdHJpbmcoKSIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbImgxLm9wZW4iLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJoMS5vcGVuLm9uc3VjY2VzcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImgyLm9wZW4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5vcGVu
Lm9uc3VjY2VzcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNp
b24iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5vbnZlcnNpb25jaGFuZ2Ui
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLm9uYmxvY2tl
ZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLmNsb3NlIiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbi5vbnN1Y2Nlc3MiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLnRyYW5zYWN0aW9uLWNvbXBs
ZXRlIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udG9TdHJpbmcoKSk7Ci0gICAg
ICAgIHRlc3QyKCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0MigpIHsKLSAgICBkZWJ1Zygi
Iik7Ci0gICAgZGVidWcoIlRFU1Q6IHNldFZlcnNpb24gbm90IGJsb2NrZWQgaWYgaGFuZGxlIGNs
b3NlZCBpbW1lZGlhdGVseSIpOwotICAgIGV2YWxBbmRMb2coInNlbGYuZGJuYW1lID0gJ3Rlc3Qy
Jzsgc2VsZi52ZXIgPSAxOyBzZWxmLnN0ZXBzID0gW10iKTsKLSAgICB2YXIgaDEgPSBuZXcgQ29u
bmVjdGlvbigiaDEiKTsKLSAgICB2YXIgaDIgPSBuZXcgQ29ubmVjdGlvbigiaDIiKTsKLSAgICBy
dW5TdGVwcyhbZnVuY3Rpb24oZG9OZXh0KSB7IGgxLm9wZW4oe29uc3VjY2VzczogZG9OZXh0fSk7
IH0sCi0gICAgICAgICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBoMi5vcGVuKHtvbnN1Y2Nlc3M6
IGRvTmV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9udmVy
c2lvbjogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGVidWcoIiAgICBoMiBjbG9zaW5nIGltbWVkaWF0ZWx5Iik7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaDIuY2xvc2UoKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19KTsgfSwKLSAgICAgICAgICAgICAg
ZnVuY3Rpb24oZG9OZXh0KSB7IGgxLnNldFZlcnNpb24oe29uc3VjY2VzczogZG9OZXh0fSk7IH0s
Ci0gICAgICAgICAgICAgIGZpbmlzaFRlc3QKLSAgICAgICAgICAgICAgXSk7Ci0KLSAgICBmdW5j
dGlvbiBmaW5pc2hUZXN0KCkgewotICAgICAgICBkZWJ1ZygiTk9URTogV2lsbCBGQUlMIHdpdGgg
ZXh0cmEgYm9ndXMgaDEuc2V0VmVyc2lvbi5vbmJsb2NrZWQgc3RlcDsgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMTMwIik7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygic2VsZi5zdGVwcy50b1N0cmluZygpIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFsiaDEub3BlbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLm9w
ZW4ub25zdWNjZXNzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIub3BlbiIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLm9wZW4ub25zdWNjZXNzIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbiIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImgyLm9udmVyc2lvbmNoYW5nZSIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImgyLmNsb3NlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiaDEuc2V0VmVyc2lvbi5vbnN1Y2Nlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJoMS5zZXRWZXJzaW9uLnRyYW5zYWN0aW9uLWNvbXBsZXRlIgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF0udG9TdHJpbmcoKSk7Ci0gICAgICAgIHRlc3QzKCk7Ci0gICAg
fQotfQotCi1mdW5jdGlvbiB0ZXN0MygpIHsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIlRF
U1Q6IG9wZW4gYW5kIHNldFZlcnNpb24gYmxvY2tlZCBpZiBhIFZFUlNJT05fQ0hBTkdFIHRyYW5z
YWN0aW9uIGlzIHJ1bm5pbmcgLSBjbG9zZSB3aGVuIGJsb2NrZWQiKTsKLSAgICBldmFsQW5kTG9n
KCJzZWxmLmRibmFtZSA9ICd0ZXN0Myc7IHNlbGYudmVyID0gMTsgc2VsZi5zdGVwcyA9IFtdIik7
Ci0gICAgdmFyIGgxID0gbmV3IENvbm5lY3Rpb24oImgxIik7Ci0gICAgdmFyIGgyID0gbmV3IENv
bm5lY3Rpb24oImgyIik7Ci0gICAgdmFyIGgzID0gbmV3IENvbm5lY3Rpb24oImgzIik7Ci0gICAg
cnVuU3RlcHMoW2Z1bmN0aW9uKGRvTmV4dCkgeyBoMS5vcGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dH0p
OyB9LAotICAgICAgICAgICAgICBmdW5jdGlvbihkb05leHQpIHsgaDIub3Blbih7b25zdWNjZXNz
OiBkb05leHR9KTsgfSwKLSAgICAgICAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGgxLnNldFZl
cnNpb24oKTsgZG9OZXh0KCk7IH0sCi0gICAgICAgICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBo
Mi5zZXRWZXJzaW9uKHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9uYmxvY2tlZDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoIiAgICBoMiBibG9ja2VkIHNv
IGNsb3NpbmciKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBoMi5jbG9zZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRvTmV4dCgpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0pOyB9LAotICAgICAgICAgICAgICBmdW5jdGlv
bigpIHsgaDMub3Blbih7b25zdWNjZXNzOiBmaW5pc2hUZXN0fSk7fQotICAgICAgICAgICAgICBd
KTsKLQotICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygic2VsZi5zdGVwcy50b1N0cmluZygpIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFsiaDEub3BlbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLm9w
ZW4ub25zdWNjZXNzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIub3BlbiIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLm9wZW4ub25zdWNjZXNzIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbiIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImgyLnNldFZlcnNpb24iLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJoMi5vbnZlcnNpb25jaGFuZ2UiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJoMS5zZXRWZXJzaW9uLm9uYmxvY2tlZCIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImgxLm9udmVyc2lvbmNoYW5nZSIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImgyLnNldFZlcnNpb24ub25ibG9ja2VkIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiaDIuY2xvc2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJo
My5vcGVuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIuc2V0VmVyc2lvbi5v
bmVycm9yIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbi5v
bnN1Y2Nlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9u
LnRyYW5zYWN0aW9uLWNvbXBsZXRlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
aDMub3Blbi5vbnN1Y2Nlc3MiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS50b1N0
cmluZygpKTsKLSAgICAgICAgdGVzdDQoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3Q0KCkg
ewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiVEVTVDogb3BlbiBhbmQgc2V0VmVyc2lvbiBi
bG9ja2VkIGlmIGEgVkVSU0lPTl9DSEFOR0UgdHJhbnNhY3Rpb24gaXMgcnVubmluZyAtIGp1c3Qg
Y2xvc2UiKTsKLSAgICBldmFsQW5kTG9nKCJzZWxmLmRibmFtZSA9ICd0ZXN0NCc7IHNlbGYudmVy
ID0gMTsgc2VsZi5zdGVwcyA9IFtdIik7Ci0gICAgdmFyIGgxID0gbmV3IENvbm5lY3Rpb24oImgx
Iik7Ci0gICAgdmFyIGgyID0gbmV3IENvbm5lY3Rpb24oImgyIik7Ci0gICAgdmFyIGgzID0gbmV3
IENvbm5lY3Rpb24oImgzIik7Ci0gICAgcnVuU3RlcHMoW2Z1bmN0aW9uKGRvTmV4dCkgeyBoMS5v
cGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dH0pOyB9LAotICAgICAgICAgICAgICBmdW5jdGlvbihkb05l
eHQpIHsgaDIub3Blbih7b25zdWNjZXNzOiBkb05leHR9KTsgfSwKLSAgICAgICAgICAgICAgZnVu
Y3Rpb24oZG9OZXh0KSB7IGgxLnNldFZlcnNpb24oKTsgZG9OZXh0KCk7IH0sCi0gICAgICAgICAg
ICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBoMy5vcGVuKHtvbnN1Y2Nlc3M6IGZpbmlzaFRlc3R9KTsg
ZG9OZXh0KCk7IH0sCi0gICAgICAgICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBoMi5jbG9zZSgp
OyB9LAotICAgICAgICAgICAgICBdKTsKLQotICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7Ci0g
ICAgICAgIGRlYnVnKCJOT1RFOiBXaWxsIEZBSUwgd2l0aCBleHRyYSBib2d1cyBoMS5zZXRWZXJz
aW9uLm9uYmxvY2tlZCBzdGVwOyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzExMzAiKTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzZWxmLnN0ZXBzLnRv
U3RyaW5nKCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJoMS5vcGVuIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEub3Blbi5vbnN1Y2Nlc3MiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5vcGVuIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiaDIub3Blbi5vbnN1Y2Nlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJoMS5zZXRWZXJzaW9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
aDMub3BlbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLmNsb3NlIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbi5vbnN1Y2Nlc3MiLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLnRyYW5zYWN0aW9u
LWNvbXBsZXRlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDMub3Blbi5vbnN1
Y2Nlc3MiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS50b1N0cmluZygpKTsKLSAg
ICAgICAgdGVzdDUoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3Q1KCkgewotICAgIGRlYnVn
KCIiKTsKLSAgICBkZWJ1ZygiVEVTVDogb3BlbiBibG9ja2VkIGlmIGEgVkVSU0lPTl9DSEFOR0Ug
dHJhbnNhY3Rpb24gaXMgcnVubmluZyIpOwotICAgIGV2YWxBbmRMb2coInNlbGYuZGJuYW1lID0g
J3Rlc3Q1Jzsgc2VsZi52ZXIgPSAxOyBzZWxmLnN0ZXBzID0gW10iKTsKLSAgICB2YXIgaDEgPSBu
ZXcgQ29ubmVjdGlvbigiaDEiKTsKLSAgICB2YXIgaDIgPSBuZXcgQ29ubmVjdGlvbigiaDIiKTsK
LQotICAgIHJ1blN0ZXBzKFtmdW5jdGlvbihkb05leHQpIHsgaDEub3Blbih7b25zdWNjZXNzOiBk
b05leHR9KTsgfSwKLSAgICAgICAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGgxLnNldFZlcnNp
b24oKTsgZG9OZXh0KCk7IH0sCi0gICAgICAgICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBoMi5v
cGVuKHtvbnN1Y2Nlc3M6IGZpbmlzaFRlc3R9KTsgfQotICAgICAgICAgICAgICBdKTsKLQotICAg
IGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
c2VsZi5zdGVwcy50b1N0cmluZygpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsi
aDEub3BlbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLm9wZW4ub25zdWNj
ZXNzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbiIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLm9wZW4iLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLm9uc3VjY2VzcyIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24udHJhbnNhY3Rpb24tY29tcGxldGUiLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5vcGVuLm9uc3VjY2VzcyIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBdLnRvU3RyaW5nKCkpOwotICAgICAgICB0ZXN0Nigp
OwotICAgIH0KLX0KLQotCi1mdW5jdGlvbiB0ZXN0NigpIHsKLSAgICBkZWJ1ZygiIik7Ci0gICAg
ZGVidWcoIlRFU1Q6IHR3byBzZXRWZXJzaW9ucyBmcm9tIHRoZSBzYW1lIGNvbm5lY3Rpb24iKTsK
LSAgICBldmFsQW5kTG9nKCJzZWxmLmRibmFtZSA9ICd0ZXN0Nic7IHNlbGYudmVyID0gMTsgc2Vs
Zi5zdGVwcyA9IFtdIik7Ci0gICAgdmFyIGgxID0gbmV3IENvbm5lY3Rpb24oImgxIik7Ci0KLSAg
ICBydW5TdGVwcyhbZnVuY3Rpb24oZG9OZXh0KSB7IGgxLm9wZW4oe29uc3VjY2VzczogZG9OZXh0
fSk7IH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICBm
dW5jdGlvbihkb05leHQpIHsgaDEuc2V0VmVyc2lvbih7b25zdWNjZXNzOiBoYWxmRG9uZX0pOyAK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGgxLnNldFZlcnNpb24oe29uc3VjY2Vz
czogaGFsZkRvbmV9KTsgfQotICAgICAgICAgICAgICBdKTsKLQotICAgIHZhciBjb3VudGVyID0g
MDsKLSAgICBmdW5jdGlvbiBoYWxmRG9uZSgpIHsKLSAgICAgICAgY291bnRlcisrOwotICAgICAg
ICBpZiAoY291bnRlciA8IDIpIHsKLSAgICAgICAgICAgIGRlYnVnKCdoYWxmIGRvbmUnKTsKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKLSAgICAgICAgfQotICAg
IH0gIAotCi0gICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKLSAgICAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJzZWxmLnN0ZXBzLnRvU3RyaW5nKCkiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgWyJoMS5vcGVuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEu
b3Blbi5vbnN1Y2Nlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRW
ZXJzaW9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbiIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24ub25zdWNjZXNz
IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbi50cmFuc2Fj
dGlvbi1jb21wbGV0ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZl
cnNpb24ub25zdWNjZXNzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0
VmVyc2lvbi50cmFuc2FjdGlvbi1jb21wbGV0ZSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBdLnRvU3RyaW5nKCkpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9Ci19Ci0K
LXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL29wZW4tY2xvc2Ut
dmVyc2lvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4tY3Vyc29yLmh0bWwgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVuLWN1cnNvci5odG1sCmluZGV4IDcxOGZlMWJi
YmE0NDQxMzk3NGY1YmE1OWRjMjI1ZmQ2Mzk5OTNhOWYuLmU0ZWIxODJiODA1ZDkwYmVlOTUwZmZi
MzJhOWEzNjY0YWRjOWRiNjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL29wZW4tY3Vyc29yLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
b3Blbi1jdXJzb3IuaHRtbApAQCAtNCw5MCArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2Ny
aXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIG9wZW5DdXJzb3IuIik7Ci0KLWZ1bmN0aW9uIGVtcHR5
Q3Vyc29yU3VjY2VzcygpCi17Ci0gICAgZGVidWcoIkVtcHR5IGN1cnNvciBvcGVuZWQgc3VjY2Vz
c2Z1bGx5LiIpCi0gICAgLy8gRklYTUU6IGNoZWNrIHRoYXQgd2UgY2FuIGl0ZXJhdGUgdGhlIGN1
cnNvci4KLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gb3BlbkVtcHR5Q3Vyc29y
KCkKLXsKLSAgICBkZWJ1ZygiT3BlbmluZyBhbiBlbXB0eSBjdXJzb3IuIik7Ci0gICAga2V5UmFu
Z2UgPSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKCJJbmV4aXN0ZW50S2V5Iik7Ci0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLm9wZW5DdXJzb3Ioa2V5UmFuZ2UpIik7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBlbXB0eUN1cnNvclN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGN1cnNvclN1Y2Nl
c3MoKQotewotICAgIGRlYnVnKCJDdXJzb3Igb3BlbmVkIHN1Y2Nlc3NmdWxseS4iKQotICAgIC8v
IEZJWE1FOiBjaGVjayB0aGF0IHdlIGNhbiBpdGVyYXRlIHRoZSBjdXJzb3IuCi0gICAgc2hvdWxk
QmUoImV2ZW50LnRhcmdldC5yZXN1bHQuZGlyZWN0aW9uIiwgIjAiKTsKLSAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAiJ215S2V5JyIpOwotICAgIHNob3VsZEJlKCJldmVu
dC50YXJnZXQucmVzdWx0LnZhbHVlIiwgIidteVZhbHVlJyIpOwotICAgIGRlYnVnKCIiKTsKLSAg
ICB0cnkgewotICAgICAgICBkZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIC5jb250
aW51ZSh7fSkuIik7Ci0gICAgICAgIGV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoe30pOwot
ICAgICAgICB0ZXN0RmFpbGVkKCJObyBleGNlcHRpb24gdGhyb3duIik7Ci0gICAgfSBjYXRjaCAo
ZSkgewotICAgICAgICB0ZXN0UGFzc2VkKCJDYXVnaHQgZXhjZXB0aW9uOiAiICsgZS50b1N0cmlu
ZygpKTsKLSAgICB9Ci0gICAgZGVidWcoIiIpOwotICAgIG9wZW5FbXB0eUN1cnNvcigpOwotfQot
Ci1mdW5jdGlvbiBvcGVuQ3Vyc29yKCkKLXsKLSAgICBkZWJ1ZygiT3BlbmluZyBjdXJzb3IiKTsK
LSAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQoIm15S2V5Iik7Ci0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5zb3VyY2Uub3BlbkN1cnNvcihrZXlSYW5n
ZSkiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvclN1Y2Nlc3M7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldFZl
cnNpb25TdWNjZXNzKCkKLXsKLSAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKLSAg
ICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQg
PSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLQotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jlcyhk
Yik7Ci0KLSAgICB2YXIgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCd0ZXN0JykiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
b2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlJywgJ215S2V5JykiKTsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IG9wZW5DdXJzb3I7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0gCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgdmFyIGRiID0g
ZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gCi0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IHNldFZlcnNpb25TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotIAotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVt
b3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERC
Lm9wZW4oJ29wZW4tY3Vyc29yJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNj
ZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQot
Ci10ZXN0KCk7Ci0KLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL29wZW4tY3Vy
c29yLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi1kdXJpbmctdHJhbnNhY3Rpb24uaHRt
bCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4tZHVyaW5nLXRyYW5zYWN0aW9u
Lmh0bWwKaW5kZXggY2JkZDM1Y2RjNWE2NzQ2MjQwOWQ1ZWJlMmY4MTE0ZjhkNjAxZWFjMC4uY2Q1
ZjhmNmRjMzQ4NjkzN2E5YjRhZjgxN2Y0NDUxMjRhMDhlNTlmNCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi1kdXJpbmctdHJhbnNhY3Rpb24uaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVuLWR1cmluZy10cmFuc2FjdGlvbi5o
dG1sCkBAIC0xLDg3ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFk
PgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgb3Blbmlu
ZyBkYXRhYmFzZSBjb25uZWN0aW9ucyBkdXJpbmcgdHJhbnNhY3Rpb25zIik7Ci0KLWZ1bmN0aW9u
IHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgcHJlcGFyZURhdGFi
YXNlKCk7Ci19Ci0KLWZ1bmN0aW9uIHByZXBhcmVEYXRhYmFzZSgpCi17Ci0gICAgZGVidWcoInBy
ZXBhcmUgZGF0YWJhc2UiKTsKLSAgICBldmFsQW5kTG9nKCJvcGVucmVxMSA9IGluZGV4ZWREQi5v
cGVuKCdkYjEnKSIpOwotICAgIG9wZW5yZXExLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLSAgICBvcGVucmVxMS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZSkgewotICAgICAgICBl
dmFsQW5kTG9nKCJkYmMxID0gb3BlbnJlcTEucmVzdWx0Iik7Ci0gICAgICAgIGV2YWxBbmRMb2co
InNldHZlcnJlcSA9IGRiYzEuc2V0VmVyc2lvbignMS4wJykiKTsKLSAgICAgICAgc2V0dmVycmVx
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgc2V0dmVycmVxLm9u
c3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJkYmMxLmNy
ZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotICAgICAgICAgICAgc2V0dmVycmVxLnJl
c3VsdC5vbmNvbXBsZXRlID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAgICAgICAgICBkZWJ1Zygi
ZGF0YWJhc2UgcHJlcGFyYXRpb24gY29tcGxldGUiKTsKLSAgICAgICAgICAgICAgICBkZWJ1Zygi
Iik7Ci0gICAgICAgICAgICAgICAgc3RhcnRUcmFuc2FjdGlvbigpOwotICAgICAgICAgICAgfTsK
LSAgICAgICAgfTsKLSAgICB9OwotfQotCi1mdW5jdGlvbiBzdGFydFRyYW5zYWN0aW9uKCkKLXsK
LSAgICBkZWJ1Zygic3RhcnRpbmcgdHJhbnNhY3Rpb24iKTsKLSAgICBldmFsQW5kTG9nKCJzdGF0
ZSA9ICdzdGFydGluZyciKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiYzEudHJhbnNhY3Rp
b24oJ3N0b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFu
ZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpLnB1dCgndmFsdWUnLCAna2V5Jyki
KTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJh
bnMub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxl
dGUgPSBmdW5jdGlvbiAoZSkgewotICAgICAgICBkZWJ1ZygidHJhbnNhY3Rpb24gY29tcGxldGUi
KTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzdGF0ZSIsICJvcGVuM2NvbXBsZXRl
Iik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH07Ci0KLSAgICBkZWJ1ZygiIik7Ci0g
ICAgdHJ5T3BlbnMoKTsKLX0KLQotCi1mdW5jdGlvbiB0cnlPcGVucygpCi17Ci0gICAgZGVidWco
InRyeWluZyB0byBvcGVuIHRoZSBzYW1lIGRhdGFiYXNlIik7Ci0gICAgZXZhbEFuZExvZygib3Bl
bnJlcTIgPSBpbmRleGVkREIub3BlbignZGIxJykiKTsKLSAgICBvcGVucmVxMi5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgb3BlbnJlcTIub25zdWNjZXNzID0gZnVuY3Rp
b24gKGUpIHsKLSAgICAgICAgZGVidWcoIm9wZW5yZXEyLm9uc3VjY2VzcyIpOwotICAgICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoInN0YXRlIiwgInN0YXJ0aW5nIik7Ci0gICAgICAgIGV2YWxB
bmRMb2coInN0YXRlID0gJ29wZW4yY29tcGxldGUnIik7Ci0gICAgICAgIGRlYnVnKCIiKTsKLSAg
ICB9Ci0gICAgZGVidWcoIiIpOwotCi0gICAgZGVidWcoInRyeWluZyB0byBvcGVuIGEgZGlmZmVy
ZW50IGRhdGFiYXNlIik7Ci0gICAgZXZhbEFuZExvZygib3BlbnJlcTMgPSBpbmRleGVkREIub3Bl
bignZGIyJykiKTsKLSAgICBvcGVucmVxMy5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci0gICAgb3BlbnJlcTMub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAgZGVi
dWcoIm9wZW5yZXEzLm9uc3VjY2VzcyIpOwotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
InN0YXRlIiwgIm9wZW4yY29tcGxldGUiKTsKLSAgICAgICAgZXZhbEFuZExvZygic3RhdGUgPSAn
b3BlbjNjb21wbGV0ZSciKTsKLSAgICAgICAgZGVidWcoIiIpOwotICAgIH0KLSAgICBkZWJ1Zygi
Iik7Ci19Ci0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL29w
ZW4tZHVyaW5nLXRyYW5zYWN0aW9uLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcHJlZmV0Y2gt
YnVnZml4LTEwODA3MS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcHJlZmV0
Y2gtYnVnZml4LTEwODA3MS5odG1sCmluZGV4IGVkYTI5OTc3YzVlNDQ2ZmNkZTZkZjQ1YTlmNmU1
YTM1ZDA2MGFlMDguLjg0YzdhNjU1N2VjYTJlZWE3YzRlZmQ3MjIyNGUwOTJiNzcwOTc5YzkgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ByZWZldGNoLWJ1Z2ZpeC0x
MDgwNzEuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9wcmVmZXRjaC1i
dWdmaXgtMTA4MDcxLmh0bWwKQEAgLTQsMTIzICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVz
Y3JpcHRpb24oIlRlc3QgZm9yIGNyYnVnLmNvbS8xMDgwNzEiKTsKLQotLy8gSGF2ZSB0byBiZSBh
dCBsZWFzdCA1IGhlcmU6IDEgaW5pdGlhbCwgMyBjb250aW51ZXMgdG8gdHJpZ2dlciBwcmVmZXRj
aCBhbmQgMQotLy8gcG9zdC1hYm9ydCBvdXRzdGFuZGluZyBjb250aW51ZS4KLXZhciBuYW1lcyA9
IFsnQWxwaGEnLCAnQnJhdm8nLCAnQ2hhcmxpZScsICdEZWx0YScsICdFY2hvJ107Ci0KLWZ1bmN0
aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgREJOQU1FID0g
J3ByZWZldGNoLWJ1Z2ZpeC0xMDgwNzEnOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRl
eGVkREIuZGVsZXRlRGF0YWJhc2UoREJOQU1FKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25ibG9ja2VkID0gdW5leHBlY3Rl
ZEJsb2NrZWRDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7
Ci0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihEQk5BTUUpIik7
Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIH07Ci19Ci0KLWZ1bmN0
aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICB2YXIgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJz
aW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9u
U3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJzZXRWZXJz
aW9uU3VjY2VzcygpOiIpOwotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7
Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIHRyYW5z
Lm9uY29tcGxldGUgPSBpdGVyYXRlQW5kRGVsZXRlRmlyc3RFbGVtZW50OwotCi0gICAgdmFyIG9i
amVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9y
ZSgnc3RvcmUnLCB7a2V5UGF0aDogJ2lkJ30pIik7Ci0gICAgcmVzZXRPYmplY3RTdG9yZSgpOwot
fQotCi1mdW5jdGlvbiByZXNldE9iamVjdFN0b3JlKCkKLXsKLSAgICBkZWJ1ZygiXG5yZXNldE9i
amVjdFN0b3JlKCk6Iik7Ci0KLSAgICBvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdz
dG9yZScpOwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmNsZWFyKCkiKTsKLSAgICBmb3Ig
KGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coIm9iamVjdFN0b3JlLmFkZCh7aWQ6ICIgKyBpICsgIiwgbmFtZTogXCIiICsgbmFtZXNb
aV0gKyAiXCJ9KSIpOwotICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLSAgICB9Ci0KLSAgICBkZWJ1ZygiIik7Ci19Ci0KLWZ1bmN0aW9uIGl0ZXJhdGVB
bmREZWxldGVGaXJzdEVsZW1lbnQoKQotewotICAgIGRlYnVnKCJpdGVyYXRlQW5kRGVsZXRlRmly
c3RFbGVtZW50KCk6Iik7Ci0KLSAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9u
KFsnc3RvcmUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICB0cmFucy5vbmFi
b3J0ID0gdHJhbnNhY3Rpb25BYm9ydGVkOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSB1bmV4cGVj
dGVkQ29tcGxldGVDYWxsYmFjazsKLQotICAgIC8vIENyZWF0ZSB0aGUgY3Vyc29yIGFuZCBpdGVy
YXRlIG92ZXIgdGhlIHdob2xlIHRoaW5nLgotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFu
cy5vYmplY3RTdG9yZSgnc3RvcmUnKS5vcGVuQ3Vyc29yKCkiKTsKLSAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1
bmN0aW9uICgpIHsKLSAgICAgICAgdmFyIGN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Ci0g
ICAgICAgIGlmIChjdXJzb3IgPT0gbnVsbCkgewotICAgICAgICAgICAgcmVzZXRPYmplY3RTdG9y
ZSgpOwotICAgICAgICAgICAgcHJlZmV0Y2hBbmRBYm9ydCgpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0KLSAgICAgICAgZGVidWcoY3Vyc29yLnZhbHVlLmlkICsgIjogIiArIGN1
cnNvci52YWx1ZS5uYW1lKTsKLQotICAgICAgICBpZiAoY3Vyc29yLnZhbHVlLmlkID09IDApIHsK
LSAgICAgICAgICAgIC8vIERlbGV0ZSB0aGUgZmlyc3QgZWxlbWVudCB3aGVuIHdlIHNlZSBpdC4K
LSAgICAgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnc3Rv
cmUnKS5kZWxldGUoMCkiKTsKLSAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlv
bigpIHsgY3Vyc29yLmNvbnRpbnVlKCk7IH07Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBjdXJzb3IuY29udGludWUoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24gcHJl
ZmV0Y2hBbmRBYm9ydCgpCi17Ci0gICAgZGVidWcoInByZWZldGNoQW5kQWJvcnQoKToiKTsKLQot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKS5vcGVu
Q3Vyc29yKCkiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgdmFyIGN1
cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Ci0gICAgICAgIGRlYnVnKGN1cnNvci52YWx1ZS5p
ZCArICI6ICIgKyBjdXJzb3IudmFsdWUubmFtZSk7Ci0gICAgICAgIC8vIEhhdmUgdG8gaXRlcmF0
ZSB0byAzIGluIG9yZGVyIHRvIHByZWZldGNoLCBidXQgY2FuJ3QgaXRlcmF0ZSBwYXN0IDMKLSAg
ICAgICAgLy8gc28gdGhhdCB0aGVyZSB3aWxsIGJlIGEgY29udGludWUgcmVtYWluaW5nLgotICAg
ICAgICBpZiAoY3Vyc29yLnZhbHVlLmlkID09IDMpIHsKLSAgICAgICAgICAgIGV2YWxBbmRMb2co
InRyYW5zLmFib3J0KCkiKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGN1cnNvci5j
b250aW51ZSgpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0cmFuc2FjdGlvbkFi
b3J0ZWQoKQotewotICAgIHRlc3RQYXNzZWQoIlRyYW5zYWN0aW9uIGFib3J0ZWQgYXMgZXhwZWN0
ZWQiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvcHJlZmV0Y2gtYnVnZml4LTEwODA3MS5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3F1ZXVlZC1jb21tYW5kcy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcXVldWVkLWNvbW1hbmRzLmh0bWwKaW5kZXggMmM0Yjk5ZmViNTg4NWUxYzE0OTE1
ZGU0NDYzZGQzMWM4ZDhlNDhlNC4uNTc4ZGNkZWEwOGFlNTY5MmEyNzQzZWIwYjQ5YzQ0MjZjYmRm
N2JhMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcXVldWVkLWNv
bW1hbmRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcXVldWVkLWNv
bW1hbmRzLmh0bWwKQEAgLTQsNjggKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFy
ZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlv
bigiVmVyaWZ5IHRoYXQgcXVldWluZyB1cCBzZXZlcmFsIGNvbW1hbmRzIHdvcmtzIChhbmQgdGhl
eSBhbGwgZmlyZSkuIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclBy
ZWZpeGVzKCk7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdxdWV1
ZWQtY29tbWFuZHMnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvbjsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rp
b24gc2V0VmVyc2lvbigpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCdu
ZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVu
Y3Rpb24gZGVsZXRlRXhpc3RpbmcoKQotewotICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2Vzcygp
OiIpOwotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0gICAgdHJhbnMu
b25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0
U3RvcmVzKGRiKTsKLQotICAgIHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLSAgICBzZWxmLmluZGV4T2JqZWN0ID0gZXZhbEFuZExv
Zygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZScsICd4JykiKTsKLQotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgdmVyaWZ5QWRkKDApOyB9Owot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotCi0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlMicsIHk6ICd6enoyJ30sICdr
ZXkyJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeyB2ZXJpZnlBZGQo
MSk7IH07Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0K
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUucHV0KHt4OiAndmFsdTInLCB5OiAnenoy
J30sICdreTInKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7IHZlcmlm
eUFkZCgyKTsgfTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLQotICAgIHNlbGYuYWRkQ291bnQgPSAwOwotfQotCi1mdW5jdGlvbiB2ZXJpZnlBZGQoZXhw
ZWN0ZWQpCi17Ci0gICAgc2hvdWxkQmUoIiIgKyBhZGRDb3VudCsrLCAiIiArIGV4cGVjdGVkKTsK
LQotICAgIGlmIChhZGRDb3VudCA9PSAzKQotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICBp
ZiAoYWRkQ291bnQgPiAzKQotICAgICAgICB0ZXN0RmFpbGVkKCJVbmV4cGVjdGVkIGNhbGwgdG8g
dmVyaWZ5QWRkISIpOwotfQotCi10ZXN0KCk7Ci0KLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3F1ZXVlZC1jb21tYW5kcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4K
IDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3JlYWRv
bmx5LXByb3BlcnRpZXMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3JlYWRv
bmx5LXByb3BlcnRpZXMuaHRtbAppbmRleCBlMmQ3ZGI1NzY4OWE0NDdhY2FlMTYwNGVlNjFiNzMw
MDYyNGFlYjViLi5kNDhiYjAwOGYyZGYxOTU4ZjEyNzY3YzY5ZGM1YWNkNmU2NzM2ZTc4IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZWFkb25seS1wcm9wZXJ0aWVz
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVhZG9ubHktcHJvcGVy
dGllcy5odG1sCkBAIC0xLDU4ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhl
YWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0Pgog
PC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIHJl
YWRvbmx5IHByb3BlcnRpZXMiKTsKLQotZnVuY3Rpb24gc2V0UmVhZG9ubHlQcm9wZXJ0eShwcm9w
ZXJ0eSwgdmFsdWUpCi17Ci0gICAgb2xkVmFsdWUgPSBldmFsKHByb3BlcnR5KTsKLSAgICBkZWJ1
ZygidHJ5aW5nIHRvIHNldCByZWFkb25seSBwcm9wZXJ0eSAiICsgcHJvcGVydHkpOwotICAgIGV2
YWxBbmRMb2cocHJvcGVydHkgKyAiID0gIiArIHZhbHVlKTsKLSAgICBuZXdWYWx1ZSA9IGV2YWwo
cHJvcGVydHkpOwotICAgIGlmIChvbGRWYWx1ZSA9PSBuZXdWYWx1ZSkgewotICAgICAgICB0ZXN0
UGFzc2VkKHByb3BlcnR5ICsgIiBpcyBzdGlsbCAiICsgb2xkVmFsdWUpOwotICAgIH0gZWxzZSB7
Ci0gICAgICAgIHRlc3RGYWlsZWQocHJvcGVydHkgKyAiIHZhbHVlIHdhcyBjaGFuZ2VkIHRvICIg
KyBuZXdWYWx1ZSk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVW
ZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9ICJmb28iOwotICAgIGRlc2NyaXB0aW9uID0g
Ik15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
b3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5T
dWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
fQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9
IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRl
QW5kUG9wdWxhdGVPYmplY3RTdG9yZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9y
ZSgpCi17Ci0gICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGV2ZW50
LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLSAgICBv
YmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ2ZvbycpOyIpOwotICAgIHNldFJlYWRvbmx5UHJvcGVydHkoIm9iamVjdFN0b3JlLnRyYW5z
YWN0aW9uIiwgInRoaXMiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0K
LTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWFkb25seS1wcm9wZXJ0aWVzLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVhZG9ubHkuaHRtbCBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3JlYWRvbmx5Lmh0bWwKaW5kZXggMTQ4ZTVlMGM3OTM2YjkwNWUzNzE4YWRh
NTA3MGM5NDM5YzY2NWM5OS4uMWUxMTYyMDNiNTZlODk5ZDBiNTFkM2I3M2MwZjk1YjRlZWFlYzhh
YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVhZG9ubHkuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZWFkb25seS5odG1sCkBAIC0x
LDExNSArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBz
cmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5
PgotPHNjcmlwdD4KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiByZWFkb25seSBwcm9wZXJ0
aWVzIik7Ci0KLWZ1bmN0aW9uIHNldFJlYWRvbmx5UHJvcGVydHkocHJvcGVydHksIHZhbHVlKQot
ewotICAgIG9sZFZhbHVlID0gZXZhbChwcm9wZXJ0eSk7Ci0gICAgZGVidWcoInRyeWluZyB0byBz
ZXQgcmVhZG9ubHkgcHJvcGVydHkgIiArIHByb3BlcnR5KTsKLSAgICBldmFsQW5kTG9nKHByb3Bl
cnR5ICsgIiA9ICIgKyB2YWx1ZSk7Ci0gICAgbmV3VmFsdWUgPSBldmFsKHByb3BlcnR5KTsKLSAg
ICBpZiAob2xkVmFsdWUgPT0gbmV3VmFsdWUpIHsKLSAgICAgICAgdGVzdFBhc3NlZChwcm9wZXJ0
eSArICIgaXMgc3RpbGwgIiArIG9sZFZhbHVlKTsKLSAgICB9IGVsc2UgewotICAgICAgICB0ZXN0
RmFpbGVkKHByb3BlcnR5ICsgIiB2YWx1ZSB3YXMgY2hhbmdlZCIpOwotICAgIH0KLX0KLQotZnVu
Y3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUg
PSAiZm9vIjsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQot
ewotICAgIHNldFJlYWRvbmx5UHJvcGVydHkoInJlcXVlc3QucmVzdWx0IiwgIkluZmluaXR5Iik7
Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgicmVxdWVzdC5lcnJvckNvZGUiLCAiNjY2Iik7Ci0g
ICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgicmVxdWVzdC5zb3VyY2UiLCAidGhpcyIpOwotICAgIHNl
dFJlYWRvbmx5UHJvcGVydHkoInJlcXVlc3QudHJhbnNhY3Rpb24iLCAidGhpcyIpOwotICAgIHNl
dFJlYWRvbmx5UHJvcGVydHkoInJlcXVlc3QucmVhZHlTdGF0ZSIsICI2NjYiKTsKLQotICAgIGRi
ID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2V0UmVhZG9u
bHlQcm9wZXJ0eSgiZGIubmFtZSIsICInYmFyJyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUFuZFBvcHVsYXRl
T2JqZWN0U3RvcmUoKQotewotICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rp
b24gPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgIHNldFJlYWRvbmx5UHJvcGVydHkoInRy
YW5zYWN0aW9uLm1vZGUiLCAiNjY2Iik7Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgidHJhbnNh
Y3Rpb24uZGIiLCAidGhpcyIpOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQot
ICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnZm9vJyk7Iik7Ci0KLSAgICBzZXRSZWFkb25seVByb3BlcnR5KCJvYmplY3RTdG9y
ZS5uYW1lIiwgIidiYXInIik7Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgib2JqZWN0U3RvcmUu
a2V5UGF0aCIsICInYmFyJyIpOwotLyogZmFpbHMsIHNwbGl0IGludG8gc2VwYXJhdGUgdGVzdAot
ICAgIHNldFJlYWRvbmx5UHJvcGVydHkoIm9iamVjdFN0b3JlLmluZGV4TmFtZXMiLCAiWydiYXIn
XSIpOwotKi8KLS8qIGZhaWxzLCBzcGxpdCBpbnRvIHNlcGFyYXRlIHRlc3QKLSAgICBzZXRSZWFk
b25seVByb3BlcnR5KCJvYmplY3RTdG9yZS50cmFuc2FjdGlvbiIsICJ0aGlzIik7Ci0qLwotCi0g
ICAgcmVzdWx0ID0gZXZhbEFuZExvZygicmVzdWx0ID0gb2JqZWN0U3RvcmUuYWRkKHt9LCAnZmly
c3QnKTsiKTsKLSAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
ICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBhZGRTdWNjZXNzOwotfQotCi1mdW5jdGlvbiBhZGRTdWNj
ZXNzKCkKLXsKLSAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJyZXN1bHQgPSBvYmplY3RTdG9yZS5v
cGVuQ3Vyc29yKCk7Iik7Ci0gICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLSAgICByZXN1bHQub25zdWNjZXNzID0gY2hlY2tDdXJzb3I7Ci19Ci0KLWZ1bmN0aW9u
IGNoZWNrQ3Vyc29yKCkKLXsKLSAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVu
dC50YXJnZXQucmVzdWx0OyIpOwotICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgc2V0UmVhZG9u
bHlQcm9wZXJ0eSgiY3Vyc29yLnNvdXJjZSIsICJ0aGlzIik7Ci0gICAgICAgIHNldFJlYWRvbmx5
UHJvcGVydHkoImN1cnNvci5kaXJlY3Rpb24iLCAiNjY2Iik7Ci0gICAgICAgIHNldFJlYWRvbmx5
UHJvcGVydHkoImN1cnNvci5rZXkiLCAiSW5maW5pdHkiKTsKLSAgICAgICAgc2V0UmVhZG9ubHlQ
cm9wZXJ0eSgiY3Vyc29yLnByaW1hcnlLZXkiLCAiSW5maW5pdHkiKTsKLSAgICB9IGVsc2Ugewot
ICAgICAgICB0ZXN0RmFpbGVkKCJjdXJzb3IgaXMgbnVsbCIpOwotICAgIH0KLQotICAgIGluZGV4
ID0gZXZhbEFuZExvZygiaW5kZXggPSBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgnZmlyc3QnLCAn
Zmlyc3QnKTsiKTsKLSAgICBzZXRSZWFkb25seVByb3BlcnR5KCJpbmRleC5uYW1lIiwgIidiYXIn
Iik7Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgiaW5kZXgub2JqZWN0U3RvcmUiLCAidGhpcyIp
OwotICAgIHNldFJlYWRvbmx5UHJvcGVydHkoImluZGV4LmtleVBhdGgiLCAiJ2JhciciKTsKLSAg
ICBzZXRSZWFkb25seVByb3BlcnR5KCJpbmRleC51bmlxdWUiLCAidHJ1ZSIpOwotCi0gICAga2V5
UmFuZ2UgPSBJREJLZXlSYW5nZS5vbmx5KCJmaXJzdCIpOwotICAgIHNldFJlYWRvbmx5UHJvcGVy
dHkoImtleVJhbmdlLmxvd2VyIiwgIkluZmluaXR5Iik7Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0
eSgia2V5UmFuZ2UudXBwZXIiLCAiSW5maW5pdHkiKTsKLSAgICBzZXRSZWFkb25seVByb3BlcnR5
KCJrZXlSYW5nZS5sb3dlck9wZW4iLCAidHJ1ZSIpOwotICAgIHNldFJlYWRvbmx5UHJvcGVydHko
ImtleVJhbmdlLnVwcGVyT3BlbiIsICJ0cnVlIik7Ci0KLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0K
LQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWFkb25s
eS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3JlcXVlc3QtZXZlbnQtcHJvcGFnYXRpb24uaHRt
bCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3JlcXVlc3QtZXZlbnQtcHJvcGFnYXRp
b24uaHRtbAppbmRleCBmOTFkOGVkNDFjY2Q1NDNmYzQzNGUwZTVmOThjZmJhYWRkMzE0ZWU3Li5i
MTExMWJkMmMzNmM0NmNlNDNiMWE4OWI4ZDk5ODA2YjEwNTg2NzA1IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXF1ZXN0LWV2ZW50LXByb3BhZ2F0aW9uLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVxdWVzdC1ldmVudC1wcm9wYWdh
dGlvbi5odG1sCkBAIC00LDI3MyArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJl
ZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9u
KCJUZXN0IGV2ZW50IHByb3BvZ2F0aW9uIG9uIElEQlJlcXVlc3QuIik7Ci0KLWZ1bmN0aW9uIHRl
c3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImluZGV4ZWREQi5vcGVuKCdyZXF1ZXN0LWV2ZW50LXByb3BhZ2F0aW9uJykiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb247Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb24oKQotewot
ICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZUV4aXN0aW5n
KCkKLXsKLSAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKLSAgICBzZWxmLnRyYW5z
ID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxk
QmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVk
QWJvcnRDYWxsYmFjazsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gc3RhcnRU
ZXN0Iik7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgc3RvcmUgPSBl
dmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxs
KSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6
ICd6enonfSwgJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHN0YXJ0VGVzdCgpCi17Ci0gICAgZGVidWcoIlZlcmlm
eSB0aGF0IGhhbmRsZXIgZmlyZXMgYW5kIHRoYXQgbm90IHByZXZlbnRpbmcgZGVmYXVsdCB3aWxs
IHJlc3VsdCBpbiBhbiBhYm9ydCIpOwotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBk
Yi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIp
OwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSB0cmFuc2FjdGlvbkFib3J0ZWQiKTsK
LSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2Fs
bGJhY2siKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmVycm9yID0gYWxsb3dEZWZhdWx0Iik7
Ci0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9y
ZU5hbWUnKSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1
ZScsIHk6ICd6enonfSwgJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVj
dGVkU3VjY2Vzc0NhbGxiYWNrOwotICAgIGhhbmRsZXJGaXJlZCA9IGZhbHNlOwotfQotCi1mdW5j
dGlvbiBhbGxvd0RlZmF1bHQoKQotewotICAgIHRlc3RQYXNzZWQoIkV2ZW50IGhhbmRsZXIgZmly
ZWQiKTsKLSAgICBkZWJ1ZygiRG9pbmcgbm90aGluZyB0byBwcmV2ZW50IHRoZSBkZWZhdWx0IGFj
dGlvbi4uLiIpOwotICAgIGhhbmRsZXJGaXJlZCA9IHRydWU7Ci19Ci0KLWZ1bmN0aW9uIHRyYW5z
YWN0aW9uQWJvcnRlZCgpCi17Ci0gICAgc2hvdWxkQmVUcnVlKCJoYW5kbGVyRmlyZWQiKTsKLSAg
ICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIlZlcmlmaW5nIGVycm9yIik7Ci0gICAgdHJhbnMgPSBl
dmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIElEQlRyYW5z
YWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMub25hYm9ydCA9IHRy
YW5zYWN0aW9uQWJvcnRlZDIiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0g
dW5leHBlY3RlZEFib3J0Q2FsbGJhY2siKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5hZGRFdmVu
dExpc3RlbmVyKCdlcnJvcicsIGVycm9yQ2FwdHVyZUNhbGxiYWNrLCB0cnVlKSIpOwotICAgIGV2
YWxBbmRMb2coInRyYW5zLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZXJyb3JCdWJibGVDYWxs
YmFjaywgZmFsc2UpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMuYWRkRXZlbnRMaXN0ZW5lcign
c3VjY2VzcycsIHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2ssIHRydWUpIik7Ci0gICAgZXZhbEFu
ZExvZygidHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignc3VjY2VzcycsIHVuZXhwZWN0ZWRTdWNjZXNz
Q2FsbGJhY2ssIGZhbHNlKSIpOwotICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50TGlzdGVuZXIo
J2Vycm9yJywgZGJFcnJvckNhcHR1cmVDYWxsYmFjaywgdHJ1ZSkiKTsKLSAgICBldmFsQW5kTG9n
KCJkYi5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGRiRXJyb3JCdWJibGVDYWxsYmFjaywgZmFs
c2UpIik7Ci0gICAgZXZhbEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignc3VjY2VzcycsIHVu
ZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2ssIHRydWUpIik7Ci0gICAgZXZhbEFuZExvZygiZGIuYWRk
RXZlbnRMaXN0ZW5lcignc3VjY2VzcycsIHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2ssIGZhbHNl
KSIpOwotICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgn
c3RvcmVOYW1lJykiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAn
dmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5l
eHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSBlcnJvckZpcmVk
Q2FsbGJhY2s7Ci0gICAgZGJDYXB0dXJlRmlyZWQgPSBmYWxzZTsKLSAgICBjYXB0dXJlRmlyZWQg
PSBmYWxzZTsKLSAgICByZXF1ZXN0RmlyZWQgPSBmYWxzZTsKLSAgICBidWJibGVGaXJlZCA9IGZh
bHNlOwotICAgIGRiQnViYmxlRmlyZWQgPSBmYWxzZTsKLX0KLQotZnVuY3Rpb24gZGJFcnJvckNh
cHR1cmVDYWxsYmFjaygpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJJbiBJREJEYXRh
YmFzZSBlcnJvciBjYXB0dXJlIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGJDYXB0dXJlRmlyZWQi
KTsKLSAgICBzaG91bGRCZUZhbHNlKCJjYXB0dXJlRmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNl
KCJyZXF1ZXN0RmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJidWJibGVGaXJlZCIpOwotICAg
IHNob3VsZEJlRmFsc2UoImRiQnViYmxlRmlyZWQiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFy
Z2V0IiwgInJlcXVlc3QiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQuY3VycmVudFRhcmdldCIsICJk
YiIpOwotICAgIGRiQ2FwdHVyZUZpcmVkID0gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gZXJyb3JDYXB0
dXJlQ2FsbGJhY2soKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiSW4gSURCVHJhbnNh
Y3Rpb24gZXJyb3IgY2FwdHVyZSIpOwotICAgIHNob3VsZEJlVHJ1ZSgiZGJDYXB0dXJlRmlyZWQi
KTsKLSAgICBzaG91bGRCZUZhbHNlKCJjYXB0dXJlRmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNl
KCJyZXF1ZXN0RmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJidWJibGVGaXJlZCIpOwotICAg
IHNob3VsZEJlRmFsc2UoImRiQnViYmxlRmlyZWQiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFy
Z2V0IiwgInJlcXVlc3QiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQuY3VycmVudFRhcmdldCIsICJ0
cmFucyIpOwotICAgIGNhcHR1cmVGaXJlZCA9IHRydWU7Ci19Ci0KLWZ1bmN0aW9uIGVycm9yRmly
ZWRDYWxsYmFjaygpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJJbiBJREJSZXF1ZXN0
IGhhbmRsZXIiKTsKLSAgICBzaG91bGRCZVRydWUoImRiQ2FwdHVyZUZpcmVkIik7Ci0gICAgc2hv
dWxkQmVUcnVlKCJjYXB0dXJlRmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJyZXF1ZXN0Rmly
ZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJidWJibGVGaXJlZCIpOwotICAgIHNob3VsZEJlRmFs
c2UoImRiQnViYmxlRmlyZWQiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0IiwgInJlcXVl
c3QiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQuY3VycmVudFRhcmdldCIsICJyZXF1ZXN0Iik7Ci0g
ICAgcmVxdWVzdEZpcmVkID0gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gZXJyb3JCdWJibGVDYWxsYmFj
aygpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJJbiBJREJUcmFuc2FjdGlvbiBlcnJv
ciBidWJibGUiKTsKLSAgICBzaG91bGRCZVRydWUoImRiQ2FwdHVyZUZpcmVkIik7Ci0gICAgc2hv
dWxkQmVUcnVlKCJjYXB0dXJlRmlyZWQiKTsKLSAgICBzaG91bGRCZVRydWUoInJlcXVlc3RGaXJl
ZCIpOwotICAgIHNob3VsZEJlRmFsc2UoImJ1YmJsZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxz
ZSgiZGJCdWJibGVGaXJlZCIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAicmVxdWVz
dCIpOwotICAgIHNob3VsZEJlKCJldmVudC5jdXJyZW50VGFyZ2V0IiwgInRyYW5zIik7Ci0gICAg
YnViYmxlRmlyZWQgPSB0cnVlOwotfQotCi1mdW5jdGlvbiBkYkVycm9yQnViYmxlQ2FsbGJhY2so
KQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiSW4gSURCRGF0YWJhc2UgZXJyb3IgYnVi
YmxlIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJkYkNhcHR1cmVGaXJlZCIpOwotICAgIHNob3VsZEJl
VHJ1ZSgiY2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJyZXF1ZXN0RmlyZWQiKTsK
LSAgICBzaG91bGRCZVRydWUoImJ1YmJsZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGJC
dWJibGVGaXJlZCIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAicmVxdWVzdCIpOwot
ICAgIHNob3VsZEJlKCJldmVudC5jdXJyZW50VGFyZ2V0IiwgImRiIik7Ci0gICAgZGJCdWJibGVG
aXJlZCA9IHRydWU7Ci19Ci0KLWZ1bmN0aW9uIHRyYW5zYWN0aW9uQWJvcnRlZDIoKQotewotICAg
IGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiVHJhbnNhY3Rpb24gYWJvcnRlZCIpOwotICAgIHNob3Vs
ZEJlVHJ1ZSgiZGJDYXB0dXJlRmlyZWQiKTsKLSAgICBzaG91bGRCZVRydWUoImNhcHR1cmVGaXJl
ZCIpOwotICAgIHNob3VsZEJlVHJ1ZSgicmVxdWVzdEZpcmVkIik7Ci0gICAgc2hvdWxkQmVUcnVl
KCJidWJibGVGaXJlZCIpOwotICAgIHNob3VsZEJlVHJ1ZSgiZGJCdWJibGVGaXJlZCIpOwotICAg
IGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiVmVyaWZpbmcgc3VjY2Vzcy4iKTsKLSAgICB0cmFucyA9
IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJh
bnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRl
ID0gdHJhbnNhY3Rpb25Db21wbGV0ZSIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQg
PSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLmFkZEV2
ZW50TGlzdGVuZXIoJ3N1Y2Nlc3MnLCBzdWNjZXNzQ2FwdHVyZUNhbGxiYWNrLCB0cnVlKSIpOwot
ICAgIGV2YWxBbmRMb2coInRyYW5zLmFkZEV2ZW50TGlzdGVuZXIoJ3N1Y2Nlc3MnLCBzdWNjZXNz
QnViYmxlQ2FsbGJhY2ssIGZhbHNlKSIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLmFkZEV2ZW50
TGlzdGVuZXIoJ2Vycm9yJywgdW5leHBlY3RlZEVycm9yQ2FsbGJhY2ssIHRydWUpIik7Ci0gICAg
ZXZhbEFuZExvZygidHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjaywgZmFsc2UpIik7Ci0gICAgZXZhbEFuZExvZygiZGIucmVtb3ZlRXZlbnRMaXN0
ZW5lcignZXJyb3InLCBkYkVycm9yQ2FwdHVyZUNhbGxiYWNrLCB0cnVlKSIpOwotICAgIGV2YWxB
bmRMb2coImRiLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZGJFcnJvckJ1YmJsZUNhbGxi
YWNrLCBmYWxzZSkiKTsKLSAgICBldmFsQW5kTG9nKCJkYi5yZW1vdmVFdmVudExpc3RlbmVyKCdz
dWNjZXNzJywgdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjaywgdHJ1ZSkiKTsKLSAgICBldmFsQW5k
TG9nKCJkYi5yZW1vdmVFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgdW5leHBlY3RlZFN1Y2Nlc3ND
YWxsYmFjaywgZmFsc2UpIik7Ci0gICAgZXZhbEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcign
c3VjY2VzcycsIGRiU3VjY2Vzc0NhcHR1cmVDYWxsYmFjaywgdHJ1ZSkiKTsKLSAgICBldmFsQW5k
TG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgZGJTdWNjZXNzQnViYmxlQ2FsbGJh
Y2ssIGZhbHNlKSIpOwotICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9y
JywgdW5leHBlY3RlZEVycm9yQ2FsbGJhY2ssIHRydWUpIik7Ci0gICAgZXZhbEFuZExvZygiZGIu
YWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjaywgZmFsc2Up
Iik7Ci0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdz
dG9yZU5hbWUnKSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2
YWx1ZScsIHk6ICd6enonfSwgJ2tleTInKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc3VjY2Vzc0ZpcmVk
Q2FsbGJhY2s7Ci0gICAgZGJDYXB0dXJlRmlyZWQgPSBmYWxzZTsKLSAgICBjYXB0dXJlRmlyZWQg
PSBmYWxzZTsKLSAgICByZXF1ZXN0RmlyZWQgPSBmYWxzZTsKLSAgICBidWJibGVGaXJlZCA9IGZh
bHNlOwotICAgIGRiQnViYmxlRmlyZWQgPSBmYWxzZTsKLX0KLQotZnVuY3Rpb24gZGJTdWNjZXNz
Q2FwdHVyZUNhbGxiYWNrKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIkluIElEQkRh
dGFiYXNlIHN1Y2Nlc3MgY2FwdHVyZSIpOwotICAgIHNob3VsZEJlRmFsc2UoImRiQ2FwdHVyZUZp
cmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiY2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVG
YWxzZSgicmVxdWVzdEZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiYnViYmxlRmlyZWQiKTsK
LSAgICBzaG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVkIik7Ci0gICAgc2hvdWxkQmUoImV2ZW50
LnRhcmdldCIsICJyZXF1ZXN0Iik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LmN1cnJlbnRUYXJnZXQi
LCAiZGIiKTsKLSAgICBkYkNhcHR1cmVGaXJlZCA9IHRydWU7Ci19Ci0KLWZ1bmN0aW9uIHN1Y2Nl
c3NDYXB0dXJlQ2FsbGJhY2soKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiSW4gSURC
VHJhbnNhY3Rpb24gc3VjY2VzcyBjYXB0dXJlIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJkYkNhcHR1
cmVGaXJlZCIpOwotICAgIHNob3VsZEJlRmFsc2UoImNhcHR1cmVGaXJlZCIpOwotICAgIHNob3Vs
ZEJlRmFsc2UoInJlcXVlc3RGaXJlZCIpOwotICAgIHNob3VsZEJlRmFsc2UoImJ1YmJsZUZpcmVk
Iik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVGaXJlZCIpOwotICAgIHNob3VsZEJlKCJl
dmVudC50YXJnZXQiLCAicmVxdWVzdCIpOwotICAgIHNob3VsZEJlKCJldmVudC5jdXJyZW50VGFy
Z2V0IiwgInRyYW5zIik7Ci0gICAgY2FwdHVyZUZpcmVkID0gdHJ1ZTsKLX0KLQotZnVuY3Rpb24g
c3VjY2Vzc0ZpcmVkQ2FsbGJhY2soKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiSW4g
SURCUmVxdWVzdCBoYW5kbGVyIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJkYkNhcHR1cmVGaXJlZCIp
OwotICAgIHNob3VsZEJlVHJ1ZSgiY2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgi
cmVxdWVzdEZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiYnViYmxlRmlyZWQiKTsKLSAgICBz
aG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVkIik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdl
dCIsICJyZXF1ZXN0Iik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LmN1cnJlbnRUYXJnZXQiLCAicmVx
dWVzdCIpOwotICAgIHJlcXVlc3RGaXJlZCA9IHRydWU7Ci19Ci0KLWZ1bmN0aW9uIHN1Y2Nlc3NC
dWJibGVDYWxsYmFjaygpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJJbiBJREJUcmFu
c2FjdGlvbiBzdWNjZXNzIGJ1YmJsZSIpOwotICAgIHRlc3RGYWlsZWQoIlN1Y2Nlc3MgYnViYmxl
IGNhbGxiYWNrIHNob3VsZCBOT1QgZmlyZSIpOwotICAgIGJ1YmJsZUZpcmVkID0gdHJ1ZTsKLX0K
LQotZnVuY3Rpb24gZGJTdWNjZXNzQnViYmxlQ2FsbGJhY2soKQotewotICAgIGRlYnVnKCIiKTsK
LSAgICBkZWJ1ZygiSW4gSURCRGF0YWJhc2Ugc3VjY2VzcyBidWJibGUiKTsKLSAgICB0ZXN0RmFp
bGVkKCJTdWNjZXNzIGJ1YmJsZSBjYWxsYmFjayBzaG91bGQgTk9UIGZpcmUiKTsKLSAgICBkYkJ1
YmJsZUZpcmVkID0gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gdHJhbnNhY3Rpb25Db21wbGV0ZSgpCi17
Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJUcmFuc2FjdGlvbiBjb21wbGV0ZWQiKTsKLSAg
ICBzaG91bGRCZVRydWUoImRiQ2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJjYXB0
dXJlRmlyZWQiKTsKLSAgICBzaG91bGRCZVRydWUoInJlcXVlc3RGaXJlZCIpOwotICAgIHNob3Vs
ZEJlRmFsc2UoImJ1YmJsZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVGaXJl
ZCIpOwotICAgIGRlYnVnKCIiKTsKLQotICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIHJldHVybjsK
LX0KLQotdGVzdCgpOwotCi0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZXF1
ZXN0LWV2ZW50LXByb3BhZ2F0aW9uLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L2NvbnN0YW50cy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9j
b25zdGFudHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGE1MjljMGJmMTIzYjZhNmNkYmFiYmNiYjViYTgxMTdh
ZDQ3N2FhYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9jb25zdGFudHMuanMKQEAgLTAsMCArMSwzOSBAQAoraWYgKHRoaXMuaW1wb3J0
U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisK
K2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGNvbnN0YW50cy4iKTsKKworZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBzaG91bGRCZSgiSURC
RGF0YWJhc2VFeGNlcHRpb24uVU5LTk9XTl9FUlIiLCAiMSIpOworICAgIHNob3VsZEJlKCJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5OT05fVFJBTlNJRU5UX0VSUiIsICIyIik7CisgICAgc2hvdWxkQmUo
IklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiLCAiMyIpOworICAgIHNob3VsZEJl
KCJJREJEYXRhYmFzZUV4Y2VwdGlvbi5DT05TVFJBSU5UX0VSUiIsICI0Iik7CisgICAgc2hvdWxk
QmUoIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIiwgIjUiKTsKKyAgICBzaG91bGRCZSgi
SURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0FMTE9XRURfRVJSIiwgIjYiKTsKKyAgICBzaG91bGRC
ZSgiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIiwgIjciKTsK
KyAgICBzaG91bGRCZSgiSURCRGF0YWJhc2VFeGNlcHRpb24uQUJPUlRfRVJSIiwgIjgiKTsKKyAg
ICBzaG91bGRCZSgiSURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUiIsICI5Iik7Cisg
ICAgc2hvdWxkQmUoIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRJTUVPVVRfRVJSIiwgIjEwIik7Cisg
ICAgc2hvdWxkQmUoIklEQkRhdGFiYXNlRXhjZXB0aW9uLlFVT1RBX0VSUiIsICIxMSIpOworICAg
IHNob3VsZEJlKCJJREJEYXRhYmFzZUV4Y2VwdGlvbi5WRVJfRVJSIiwgIjEyIik7CisKKyAgICBz
aG91bGRCZSgiSURCUmVxdWVzdC5MT0FESU5HIiwgIjEiKTsKKyAgICBzaG91bGRCZSgiSURCUmVx
dWVzdC5ET05FIiwgIjIiKTsKKworICAgIHNob3VsZEJlKCJJREJDdXJzb3IuTkVYVCIsICIwIik7
CisgICAgc2hvdWxkQmUoIklEQkN1cnNvci5ORVhUX05PX0RVUExJQ0FURSIsICIxIik7CisgICAg
c2hvdWxkQmUoIklEQkN1cnNvci5QUkVWIiwgIjIiKTsKKyAgICBzaG91bGRCZSgiSURCQ3Vyc29y
LlBSRVZfTk9fRFVQTElDQVRFIiwgIjMiKTsKKworICAgIHNob3VsZEJlKCJJREJUcmFuc2FjdGlv
bi5SRUFEX09OTFkiLCAiMCIpOworICAgIHNob3VsZEJlKCJJREJUcmFuc2FjdGlvbi5SRUFEX1dS
SVRFIiwgIjEiKTsKKyAgICBzaG91bGRCZSgiSURCVHJhbnNhY3Rpb24uVkVSU0lPTl9DSEFOR0Ui
LCAiMiIpOworfQorCit0ZXN0KCk7CisKK2ZpbmlzaEpTVGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9jcmVhdGUtYW5kLXJlbW92ZS1vYmplY3Qtc3RvcmUuanMgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3JlYXRlLWFuZC1yZW1vdmUtb2JqZWN0LXN0b3Jl
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjY1MDkyOTQ4YzBkYjE5MzY1Nzg5YzhkY2Y5MzJjMGMyZDgyOTNlZDgK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvY3JlYXRlLWFuZC1yZW1vdmUtb2JqZWN0LXN0b3JlLmpzCkBAIC0wLDAgKzEsNjYgQEAKK2lm
ICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJl
ZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBjcmVhdGUgYW5kIHJl
bW92ZU9iamVjdFN0b3JlIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRv
clByZWZpeGVzKCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdj
cmVhdGUtYW5kLXJlbW92ZS1vYmplY3Qtc3RvcmUnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygib3BlblN1
Y2Nlc3MoKToiKTsKKyAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7CisgICAgdGVzdENyZWF0ZUFuZFJlbW92ZSgpOworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXN1bHQgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB0ZXN0Q3JlYXRlQW5kUmVtb3ZlKCk7Cit9CisKK2Z1
bmN0aW9uIHRlc3RDcmVhdGVBbmRSZW1vdmUoKQoreworICAgIGRlYnVnKCJUcnlpbmcgY3JlYXRl
Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbignZGIuY3JlYXRlT2JqZWN0U3RvcmUoInNv
bWUgb3MiKScsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9FUlIiKTsKKyAgICBk
ZWJ1ZygiVHJ5aW5nIHJlbW92ZSIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oJ2RiLmRl
bGV0ZU9iamVjdFN0b3JlKCJzb21lIG9zIiknLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0FM
TE9XRURfRVJSIik7Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRlbGV0
ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBvcyA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9i
amVjdFN0b3JlKCd0bXAnKSIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLmNyZWF0
ZU9iamVjdFN0b3JlKCd0bXAnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5DT05TVFJBSU5UX0VS
UiIpOworICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25jb21wbGV0ZSA9IHNldFZlcnNpb25Db21w
bGV0ZTsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbkNvbXBsZXRlKCkKK3sKKyAgICB0cmFucyA9
IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWyd0bXAnXSkiKTsKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ3RtcCcpLmdldCgwKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gdHJ5T25jZU1vcmU7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHRyeU9uY2VNb3JlKCkKK3sK
KyAgICBzaG91bGRCZVVuZGVmaW5lZCgiZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgdGVz
dENyZWF0ZUFuZFJlbW92ZSgpOworCisgICAgZGVidWcoIlRyeWluZyBjcmVhdGUgd2l0aCBzdG9y
ZSB0aGF0IGFscmVhZHkgZXhpc3RzIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ3RtcCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9BTExP
V0VEX0VSUiIpOworICAgIGRlYnVnKCJUcnlpbmcgcmVtb3ZlIHdpdGggc3RvcmUgdGhhdCBhbHJl
YWR5IGV4aXN0cyIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLmRlbGV0ZU9iamVj
dFN0b3JlKCd0bXAnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9FUlIiKTsK
KworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL2NyZWF0ZS1vYmplY3Qtc3RvcmUtb3B0aW9ucy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9jcmVhdGUtb2JqZWN0LXN0b3JlLW9wdGlvbnMuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjhjNmE0YzBlM2VmMjBjNDY3Yzg3NWFjYjk3YmYxNTdhZjEyZDE3NAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jcmVhdGUt
b2JqZWN0LXN0b3JlLW9wdGlvbnMuanMKQEAgLTAsMCArMSw4MSBAQAoraWYgKHRoaXMuaW1wb3J0
U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisK
K2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGNyZWF0ZU9iamVjdFN0b3JlJ3MgdmFyaW91
cyBvcHRpb25zIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZp
eGVzKCk7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2NyZWF0
ZS1vYmplY3Qtc3RvcmUtb3B0aW9ucycsICdkZXNjcmlwdGlvbicpIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0g
ZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkK
K3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgZXZhbEFuZExvZygiZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ2EnLCB7a2V5UGF0aDogJ2EnfSkiKTsKKyAgICBldmFsQW5kTG9n
KCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnYicpIik7CisKKyAgICBkZWJ1ZygiZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ2MnLCB7YXV0b0luY3JlbWVudDogdHJ1ZX0pOyIpOworICAgIGRiLmNyZWF0ZU9i
amVjdFN0b3JlKCdjJywge2F1dG9JbmNyZW1lbnQ6IHRydWV9KTsKKyAgICBldmVudC50YXJnZXQu
cmVzdWx0Lm9uY29tcGxldGUgPSBzZXRWZXJzaW9uQ29tcGxldGU7Cit9CisKK2Z1bmN0aW9uIHNl
dFZlcnNpb25Db21wbGV0ZSgpCit7CisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRi
LnRyYW5zYWN0aW9uKFsnYScsICdiJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Cisg
ICAgc2hvdWxkQmUoInRyYW5zLm1vZGUiLCAiSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSIpOwor
CisgICAgcmVxID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2EnKS5wdXQoeydhJzog
MH0pIik7CisgICAgcmVxLm9uc3VjY2VzcyA9IHB1dEI7CisgICAgcmVxLm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKKworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb25DbGFzcygi
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2QnLCAnYmFyJyk7IiwgIlR5cGVFcnJvciIpOworICAgIGV2
YWxBbmRFeHBlY3RFeGNlcHRpb25DbGFzcygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2UnLCBmYWxz
ZSk7IiwgIlR5cGVFcnJvciIpOworfQorCitmdW5jdGlvbiBwdXRCKCkKK3sKKyAgICByZXEgPSBl
dmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYicpLnB1dCh7J2EnOiAwfSwgMCkiKTsgIC8v
IE9PUFMKKyAgICByZXEub25zdWNjZXNzID0gZ2V0QTsKKyAgICByZXEub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBnZXRBKCkKK3sKKyAgICByZXEgPSBl
dmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYScpLmdldCgwKSIpOworICAgIHJlcS5vbnN1
Y2Nlc3MgPSBnZXRCOworICAgIHJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Cit9CisKK2Z1bmN0aW9uIGdldEIoKQoreworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVz
dWx0LmEiLCAie2E6IDB9Iik7CisKKyAgICByZXEgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RT
dG9yZSgnYicpLmdldCgwKSIpOworICAgIHJlcS5vbnN1Y2Nlc3MgPSBjaGVja0I7CisgICAgcmVx
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2hlY2tC
KCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5hIiwgInthOiAwfSIpOwor
CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvY3JlYXRlT2JqZWN0U3RvcmUtbmFtZS1hcmd1bWVudC1yZXF1aXJlZC5qcyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jcmVhdGVPYmplY3RTdG9yZS1uYW1lLWFy
Z3VtZW50LXJlcXVpcmVkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5NTlmYTcyMGUyYzQzYzBiZGE4YTZlNTg5
MjY2NjU4Mjc4ODQzMDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvY3JlYXRlT2JqZWN0U3RvcmUtbmFtZS1hcmd1bWVudC1yZXF1aXJl
ZC5qcwpAQCAtMCwwICsxLDM2IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1w
b3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsK
KyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3Qg
SW5kZXhlZERCIGNyZWF0ZU9iamVjdFN0b3JlIG5hbWUgYXJndW1lbnQgaXMgcmVxdWlyZWQiKTsK
KworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAg
IG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRl
c3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbihu
YW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNz
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
ZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQ
b3B1bGF0ZU9iamVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkK
K3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgc2hvdWxkVGhyb3coImRi
LmNyZWF0ZU9iamVjdFN0b3JlKCk7Iik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3Qo
KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3JlYXRlT2JqZWN0U3RvcmUtbnVsbC1uYW1lLmpz
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2NyZWF0ZU9iamVjdFN0
b3JlLW51bGwtbmFtZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMTU1YTUwMzhkNmUwMGE5NmYyZjg1YmRmY2Q4
YjYzN2FjMjViOWU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL2NyZWF0ZU9iamVjdFN0b3JlLW51bGwtbmFtZS5qcwpAQCAtMCwwICsx
LDM3IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3Jp
cHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGNyZWF0
ZU9iamVjdFN0b3JlIG51bGwgaGFuZGxpbmciKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAg
cmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhu
YW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7Cisg
ICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBj
cmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9y
ZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RT
dG9yZShudWxsKTsiKTsKKyAgICBzaG91bGRCZSgib2JqZWN0U3RvcmUubmFtZSIsICInbnVsbCci
KTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9jdXJzb3ItY29udGludWUuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvY3Vyc29yLWNvbnRpbnVlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0YjBlZjhhNzhmZjQ3ZWM2
M2YwNDU4YzNkZTYwMDJkY2U1NTM5NGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWNvbnRpbnVlLmpzCkBAIC0wLDAgKzEs
MjcwIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3Jp
cHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgSURC
Q3Vyc29yLmNvbnRpbnVlKCkgd2l0aCBhIGtleSBwYXJhbWV0ZXIuIik7CisKK3ZhciBkYXRlID0g
bmV3IERhdGUoKTsKKworLy8gSW4gb3JkZXIgb2YgaG93IGl0IHNob3VsZCBiZSBzb3J0ZWQgYnkg
SW5kZXhlZERCLgorc2VsZi50ZXN0RGF0YSA9IFsKKyAgICAwLAorICAgIDEsCisgICAgMSwKKyAg
ICAzLjE0MTU5LAorICAgIDMuMTQxNTksCisgICAgMTAsCisgICAgMTEsCisgICAgMTIsCisgICAg
MTMsCisgICAgZGF0ZSwKKyAgICBkYXRlLAorICAgIG5ldyBEYXRlKGRhdGUudmFsdWVPZigpICsg
MTAwMCksCisgICAgIkEgYmlnIHN0cmluZyIsCisgICAgIkEgYmlnIHN0cmluZyIsCisgICAgIkEg
Yml0MSIsCisgICAgIkEgYml0MiIsCisgICAgIkEgYml0MyIsCisgICAgInRoZSBCSUdHRVNUIHN0
cmluZyIKK107CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVz
KCk7CisgICAgb3BlbkRhdGFiYXNlKCk7Cit9CisKK2Z1bmN0aW9uIG9wZW5EYXRhYmFzZSgpCit7
CisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2N1cnNvci1jb250aW51
ZScpIik7CisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb247CisgICAgcmVzdWx0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lv
bigpCit7CisgICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dCIpOworCisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNp
b24nKSIpOworICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKKyAgICByZXN1
bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxl
dGVFeGlzdGluZygpCit7CisgICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsK
KyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisKKyAgICBkZWxl
dGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgc2VsZi5vYmplY3RTdG9yZSA9IGV2YWxBbmRM
b2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzb21lT2JqZWN0U3RvcmUnKSIpOworICAgIHNlbGYu
aW5kZXhPYmplY3QgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgnc29tZUlu
ZGV4JywgJ3gnKSIpOworICAgIHNlbGYubmV4dFRvQWRkID0gMDsKKyAgICBhZGREYXRhKCk7Cit9
CisKK2Z1bmN0aW9uIGFkZERhdGEoKQoreworICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coIm9iamVj
dFN0b3JlLmFkZCh7J3gnOiB0ZXN0RGF0YVtuZXh0VG9BZGRdfSwgbmV4dFRvQWRkKSIpOworICAg
IHJlc3VsdC5vbnN1Y2Nlc3MgPSArK3NlbGYubmV4dFRvQWRkIDwgdGVzdERhdGEubGVuZ3RoID8g
YWRkRGF0YSA6IGFzY2VuZGluZ1Rlc3Q7CisgICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gYXNjZW5kaW5nVGVzdCgpCit7CisgICAgZGVi
dWcoIiIpOworICAgIHZhciByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhPYmplY3Qub3Blbktl
eUN1cnNvcihudWxsLCBJREJDdXJzb3IuTkVYVCkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGFzY2VuZGluZ0NhbGxiYWNrOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworICAgIHNlbGYuc3RhZ2UgPSAwOworfQorCitmdW5jdGlvbiBhc2NlbmRpbmdD
YWxsYmFjaygpCisKK3sKKyAgICBpZiAoc2VsZi5zdGFnZSA9PSAwKSB7CisgICAgICAgIHNob3Vs
ZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMCIpOworICAgICAgICBldmFs
QW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKDMuMTQxNTkpIik7CisgICAgfSBl
bHNlIGlmIChzZWxmLnN0YWdlID09IDEpIHsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdl
dC5yZXN1bHQucHJpbWFyeUtleSIsICIzIik7CisgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRh
cmdldC5yZXN1bHQuY29udGludWUoKSIpOworICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSAy
KSB7CisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAi
NCIpOworICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCki
KTsKKyAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gMykgeworICAgICAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjUiKTsKKyAgICAgICAgZXZhbEFuZExv
ZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgxMikiKTsKKyAgICB9IGVsc2UgaWYgKHNl
bGYuc3RhZ2UgPT0gNCkgeworICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5w
cmltYXJ5S2V5IiwgIjciKTsKKyAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3Vs
dC5jb250aW51ZShkYXRlKSIpOworICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSA1KSB7Cisg
ICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiOSIpOwor
ICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKKyAg
ICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gNikgeworICAgICAgICBzaG91bGRCZSgiZXZlbnQu
dGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjEwIik7CisgICAgICAgIGV2YWxBbmRMb2coImV2
ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOworICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFn
ZSA9PSA3KSB7CisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlL
ZXkiLCAiMTEiKTsKKyAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250
aW51ZSgnQSBiaXQxJykiKTsKKyAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gOCkgeworICAg
ICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjE0Iik7Cisg
ICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoJ0EgYml0Mycp
Iik7CisgICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDkpIHsKKyAgICAgICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIxNiIpOworICAgICAgICBldmFsQW5k
TG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCd0aGUgQklHR0VTVCBzdHJpbmcnKSIp
OworICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSAxMCkgeworICAgICAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjE3Iik7CisgICAgICAgIGV2YWxBbmRM
b2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOworICAgIH0gZWxzZSBpZiAoc2Vs
Zi5zdGFnZSA9PSAxMSkgeworICAgICAgICBzaG91bGRCZU51bGwoImV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKKyAgICAgICAgZGVzY2VuZGluZ1Rlc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0g
ZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQoIklsbGVnYWwgc3RhZ2UuIik7CisgICAgfQorICAg
IHNlbGYuc3RhZ2UrKzsKK30KKworZnVuY3Rpb24gZGVzY2VuZGluZ1Rlc3QoKQoreworICAgIGRl
YnVnKCIiKTsKKyAgICB2YXIgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0Lm9wZW5L
ZXlDdXJzb3IobnVsbCwgSURCQ3Vyc29yLlBSRVYpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBkZXNjZW5kaW5nQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisgICAgc2VsZi5zdGFnZSA9IDA7Cit9CisKK2Z1bmN0aW9uIGRlc2NlbmRp
bmdDYWxsYmFjaygpCit7CisgICAgaWYgKHNlbGYuc3RhZ2UgPT0gMCkgeworICAgICAgICBzaG91
bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjE3Iik7CisgICAgICAgIGV2
YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoJ0EgYml0MicpIik7CisgICAg
fSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDEpIHsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRh
cmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIxNSIpOworICAgICAgICBldmFsQW5kTG9nKCJldmVu
dC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKKyAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2Ug
PT0gMikgeworICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5
IiwgIjE0Iik7CisgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGlu
dWUoZGF0ZSkiKTsKKyAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gMykgeworICAgICAgICBz
aG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjEwIik7CisgICAgICAg
IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOworICAgIH0gZWxz
ZSBpZiAoc2VsZi5zdGFnZSA9PSA0KSB7CisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQu
cmVzdWx0LnByaW1hcnlLZXkiLCAiOSIpOworICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJn
ZXQucmVzdWx0LmNvbnRpbnVlKDEpIik7CisgICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDUp
IHsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIy
Iik7CisgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIp
OworICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSA2KSB7CisgICAgICAgIHNob3VsZEJlKCJl
dmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMSIpOworICAgICAgICBldmFsQW5kTG9n
KCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKKyAgICB9IGVsc2UgaWYgKHNlbGYu
c3RhZ2UgPT0gNykgeworICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmlt
YXJ5S2V5IiwgIjAiKTsKKyAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5j
b250aW51ZSgpIik7CisgICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDgpIHsKKyAgICAgICAg
c2hvdWxkQmVOdWxsKCJldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgICAgIGFzY2VuZGluZ0Vy
cm9yVGVzdExlc3NUaGFuKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9IGVsc2UgeworICAgICAg
ICB0ZXN0RmFpbGVkKCJJbGxlZ2FsIHN0YWdlLiIpOworICAgIH0KKyAgICBzZWxmLnN0YWdlKys7
Cit9CisKK2Z1bmN0aW9uIGFzY2VuZGluZ0Vycm9yVGVzdExlc3NUaGFuKCkKK3sKKyAgICBkZWJ1
ZygiIik7CisgICAgdmFyIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5vcGVuS2V5
Q3Vyc29yKG51bGwsIElEQkN1cnNvci5ORVhUKSIpOworICAgIHNlbGYuc3RhZ2UgPSAwOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGlmIChzZWxmLnN0YWdlID09PSAwKSB7
CisgICAgICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5Iiwg
IjAiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGlu
dWUoMy4xNDE1OSkiKTsKKyAgICAgICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDEpIHsKKyAg
ICAgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMyIp
OworICAgICAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZXZlbnQudGFyZ2V0LnJlc3Vs
dC5jb250aW51ZSgxKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworICAgICAg
ICAgICAgYXNjZW5kaW5nRXJyb3JUZXN0RXF1YWwoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgdGVzdEZhaWxlZCgiSWxsZWdhbCBzdGFnZS4iKTsK
KyAgICAgICAgfQorICAgICAgICBzZWxmLnN0YWdlKys7CisgICAgfTsKK30KKworZnVuY3Rpb24g
YXNjZW5kaW5nRXJyb3JUZXN0RXF1YWwoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICB2YXIgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3IobnVsbCwgSURCQ3Vy
c29yLk5FWFQpIik7CisgICAgc2VsZi5zdGFnZSA9IDA7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgaWYgKHNlbGYuc3RhZ2UgPT09IDApIHsKKyAgICAgICAgICAgIHNob3Vs
ZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMCIpOworICAgICAgICAgICAg
ZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgzLjE0MTU5KSIpOworICAg
ICAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gMSkgeworICAgICAgICAgICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIzIik7CisgICAgICAgICAgICBldmFs
QW5kRXhwZWN0RXhjZXB0aW9uKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKDMuMTQxNTkp
IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisgICAgICAgICAgICBkZXNjZW5k
aW5nRXJyb3JUZXN0R3JlYXRlclRoYW4oKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgdGVzdEZhaWxlZCgiSWxsZWdhbCBzdGFnZS4iKTsKKyAgICAg
ICAgfQorICAgICAgICBzZWxmLnN0YWdlKys7CisgICAgfTsKK30KKworZnVuY3Rpb24gZGVzY2Vu
ZGluZ0Vycm9yVGVzdEdyZWF0ZXJUaGFuKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgdmFyIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5vcGVuS2V5Q3Vyc29yKG51bGwsIElEQkN1
cnNvci5QUkVWKSIpOworICAgIHNlbGYuc3RhZ2UgPSAwOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24oKSB7CisgICAgICAgIGlmIChzZWxmLnN0YWdlID09IDApIHsKKyAgICAgICAgICAgIHNob3Vs
ZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMTciKTsKKyAgICAgICAgICAg
IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoJ0EgYml0MicpIik7Cisg
ICAgICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSAxKSB7CisgICAgICAgICAgICBzaG91bGRC
ZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjE1Iik7CisgICAgICAgICAgICBl
dmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCdBIGJp
dDMnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworICAgICAgICAgICAgZGVz
Y2VuZGluZ0Vycm9yVGVzdEVxdWFsKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgIHRlc3RGYWlsZWQoIklsbGVnYWwgc3RhZ2UuIik7CisgICAgICAg
IH0KKyAgICAgICAgc2VsZi5zdGFnZSsrOworICAgIH07Cit9CisKK2Z1bmN0aW9uIGRlc2NlbmRp
bmdFcnJvclRlc3RFcXVhbCgpCit7CisgICAgZGVidWcoIiIpOworICAgIHZhciByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhPYmplY3Qub3BlbktleUN1cnNvcihudWxsLCBJREJDdXJzb3IuUFJF
VikiKTsKKyAgICBzZWxmLnN0YWdlID0gMDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewor
ICAgICAgICBpZiAoc2VsZi5zdGFnZSA9PSAwKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiZXZl
bnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjE3Iik7CisgICAgICAgICAgICBldmFsQW5k
TG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCdBIGJpdDInKSIpOworICAgICAgICB9
IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gMSkgeworICAgICAgICAgICAgc2hvdWxkQmUoImV2ZW50
LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIxNSIpOworICAgICAgICAgICAgZXZhbEFuZExv
ZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgICAgICAgICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgnQSBiaXQyJykiLCAi
SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKyAgICAgICAgICAgIHNlbGYudHJhbnMu
b25jb21wbGV0ZSA9IG9uVHJhbnNhY3Rpb25Db21wbGV0ZTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgdGVzdEZhaWxlZCgiSWxsZWdhbCBzdGFnZS4i
KTsKKyAgICAgICAgfQorICAgICAgICBzZWxmLnN0YWdlKys7CisgICAgfTsKK30KKworZnVuY3Rp
b24gb25UcmFuc2FjdGlvbkNvbXBsZXRlKCkKK3sKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJjdXJzb3IuY29udGludWUoKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9J
TkFDVElWRV9FUlIiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1kZWxl
dGUuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWRl
bGV0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kYjZlMmI5MzU0OGEzYTQ5ZGI1NGIwZDcyMDAxNTg4NGMxMmVi
MzM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL2N1cnNvci1kZWxldGUuanMKQEAgLTAsMCArMSwxMDUgQEAKK2lmICh0aGlzLmltcG9y
dFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQor
CitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBvcGVuQ3Vyc29yLiIpOworCit0ZXN0KCk7
CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdjdXJzb3ItZGVsZXRlJykiKTsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2Vzcygp
Cit7CisgICAgdmFyIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24n
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNl
dFZlcnNpb25TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsK
KyAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJv
cnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gb3Bl
bkN1cnNvcjsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICB2YXIgb2Jq
ZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCd0ZXN0JykiKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ215VmFsdWUxJywg
J215S2V5MScpIik7CisgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlMics
ICdteUtleTInKSIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnbXlWYWx1ZTMn
LCAnbXlLZXkzJykiKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ215VmFsdWU0
JywgJ215S2V5NCcpIik7Cit9CisKK2Z1bmN0aW9uIG9wZW5DdXJzb3IoKQoreworICAgIGRlYnVn
KCJvcGVuQ3Vyc29yMSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24o
Wyd0ZXN0J10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAga2V5UmFuZ2UgPSBJ
REJLZXlSYW5nZS5sb3dlckJvdW5kKCJteUtleTEiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygidHJhbnMub2JqZWN0U3RvcmUoJ3Rlc3QnKS5vcGVuQ3Vyc29yKHtyYW5nZToga2V5UmFuZ2V9
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29yU3VjY2VzczsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBjb3VudGVyID0gMTsKK30K
KworZnVuY3Rpb24gY3Vyc29yU3VjY2VzcygpCit7CisgICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1
bHQgPT0gbnVsbCkgeworICAgICAgICBzaG91bGRCZSgiY291bnRlciIsICI1Iik7CisgICAgICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgndGVzdCcpLm9wZW5DdXJz
b3Ioa2V5UmFuZ2UpIik7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29yRW1wdHk7
CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQu
ZGVsZXRlKCkiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1
bHQudmFsdWUiLCAibXlWYWx1ZSIgKyBjb3VudGVyKyspOworICAgIGV2YWxBbmRMb2coImV2ZW50
LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOworfQorCitmdW5jdGlvbiBjdXJzb3JFbXB0eSgp
Cit7CisgICAgc2hvdWxkQmVOdWxsKCJldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgdHJhbnMu
b25jb21wbGV0ZSA9IGFkZE9iamVjdDsKK30KKworZnVuY3Rpb24gYWRkT2JqZWN0KCkKK3sKKyAg
ICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsndGVzdCddLCBJREJUcmFuc2Fj
dGlvbi5SRUFEX1dSSVRFKSIpOworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0
U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgndGVzdCcpIik7CisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coIm9iamVjdFN0b3JlLmFkZCgnbXlWYWx1ZTEnLCAnbXlLZXkxJykiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IG9wZW5DdXJzb3IyOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuQ3Vyc29yMigpCit7CisgICAg
ZGVidWcoIm9wZW5DdXJzb3IyIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0
b3JlLm9wZW5DdXJzb3Ioa2V5UmFuZ2UpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxl
dGVPYmplY3Q7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZU9iamVjdCgpCit7CisgICAgc2hvdWxkQmVOb25OdWxsKGV2
ZW50LnRhcmdldC5yZXN1bHQpOworICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQu
ZGVsZXRlKCkiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUuZ2V0KCdt
eUtleTEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdmVyaWZ5T2JqZWN0RGVsZXRlZDsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gdmVyaWZ5T2JqZWN0RGVsZXRlZCgpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdl
dC5yZXN1bHQiLCAidW5kZWZpbmVkIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL2N1cnNvci1pbmNvbnNpc3RlbmN5LmpzIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1pbmNvbnNpc3RlbmN5LmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmUwNjc3OWQ3YjVlM2Y5OWRmNmM1ODZlZGMyN2U3NDNiOTgwZWE1YjcKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWlu
Y29uc2lzdGVuY3kuanMKQEAgLTAsMCArMSw4NSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykg
eworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0
aW9uKCJUZXN0IGNvbnNpc3RlbmN5IG9mIEluZGV4ZWREQidzIGN1cnNvciBvYmplY3RzLiIpOwor
Cit0ZXN0KCk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVz
KCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdjdXJzb3ItaW5j
b25zaXN0ZW5jeScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rp
b24gb3BlblN1Y2Nlc3MoKQoreworICAgIHZhciBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNp
b24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb25T
dWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCit7CisgICAgZGVidWcoInNldFZlcnNp
b25TdWNjZXNzKCk6Iik7CisgICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsK
KyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnMu
b25jb21wbGV0ZSA9IG9wZW5CYXNpY0N1cnNvcjsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jl
cyhkYik7CisKKyAgICB2YXIgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdiYXNpY1N0b3JlJykiKTsKKyAgICBldmFsQW5kTG9nKCJv
YmplY3RTdG9yZS5hZGQoJ3NvbWVWYWx1ZTEnLCAnc29tZUtleTEnKS5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2siKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ3Nv
bWVWYWx1ZTInLCAnc29tZUtleTInKS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2si
KTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ3NvbWVWYWx1ZTMnLCAnc29tZUtl
eTMnKS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKKyAgICBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZS5hZGQoJ3NvbWVWYWx1ZTQnLCAnc29tZUtleTQnKS5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKKworfQorCitmdW5jdGlvbiBvcGVuQmFzaWNDdXJzb3Io
KQoreworICAgIGRlYnVnKCJvcGVuQmFzaWNDdXJzb3IoKSIpOworICAgIGV2YWxBbmRMb2coInRy
YW5zID0gZGIudHJhbnNhY3Rpb24oWydiYXNpY1N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURf
V1JJVEUpIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwor
ICAgIHRyYW5zLm9uY29tcGxldGUgPSB0cmFuc2FjdGlvbkNvbXBsZXRlOworCisgICAga2V5UmFu
Z2UgPSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKCJzb21lS2V5MSIpOworICAgIHNlbGYub2JqZWN0
U3RvcmUgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYmFzaWNTdG9yZScpIik7Cisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLm9wZW5DdXJzb3Ioa2V5UmFuZ2Up
Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjaGVja0N1cnNvcjsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBjb3VudGVyID0gMTsKK30KKwor
c3RvcmVkQ3Vyc29yID0gbnVsbDsKK2Z1bmN0aW9uIGNoZWNrQ3Vyc29yKCkKK3sKKyAgICBkZWJ1
ZygiIikKKyAgICBkZWJ1ZygiY2hlY2tDdXJzb3IoKSIpOworICAgIGlmIChldmVudC50YXJnZXQu
cmVzdWx0ID09IG51bGwpIHsKKyAgICAgICAgc2hvdWxkQmUoImNvdW50ZXIiLCAiNSIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChzdG9yZWRDdXJzb3IgPT0gbnVsbCkKKyAgICAg
IHN0b3JlZEN1cnNvciA9IGV2YWxBbmRMb2coInN0b3JlZEN1cnNvciA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKKworICAgIHNob3VsZEJlVHJ1ZSgic3RvcmVkQ3Vyc29yID09PSBldmVudC50YXJn
ZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzdG9yZWRDdXJzb3Iua2V5
IiwgInNvbWVLZXkiICsgY291bnRlcik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVu
dC50YXJnZXQucmVzdWx0LmtleSIsICJzb21lS2V5IiArIGNvdW50ZXIpOworICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygic3RvcmVkQ3Vyc29yLnZhbHVlIiwgInNvbWVWYWx1ZSIgKyBjb3VudGVy
KTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUi
LCAic29tZVZhbHVlIiArIGNvdW50ZXIpOworICAgIGNvdW50ZXIrKzsKKyAgICBldmFsQW5kTG9n
KCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKK30KKworZnVuY3Rpb24gdHJhbnNh
Y3Rpb25Db21wbGV0ZSgpCit7CisgICAgZGVidWcoInRyYW5zYWN0aW9uQ29tcGxldGUoKSIpOwor
ICAgIGZpbmlzaEpTVGVzdCgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItaW5k
ZXgtZGVsZXRlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1
cnNvci1pbmRleC1kZWxldGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmJlZWVhMjNhMTBmZjgzMTZhNDA1NTM5
OTFkMjliZTViYzg2MjcwZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItaW5kZXgtZGVsZXRlLmpzCkBAIC0wLDAgKzEsMTA5
IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRz
KCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mgb3BlbkN1
cnNvci4iKTsKKwordGVzdCgpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5k
b3JQcmVmaXhlcygpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbign
Y3Vyc29yLWluZGV4LWRlbGV0ZScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3Vj
Y2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30K
KworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIHZhciBkYiA9IGV2YWxBbmRMb2coImRi
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRi
LnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNl
dFZlcnNpb25TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCit7CisgICAgZGVidWco
InNldFZlcnNpb25TdWNjZXNzKCk6Iik7CisgICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRy
YW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09
IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Cisg
ICAgdHJhbnMub25jb21wbGV0ZSA9IG9wZW5DdXJzb3I7CisKKyAgICBkZWxldGVBbGxPYmplY3RT
dG9yZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCd0ZXN0JykiKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZS5jcmVhdGVJbmRleCgndGVzdEluZGV4JywgJ3gnKSIpOworCisgICAgZXZhbEFuZExvZygi
b2JqZWN0U3RvcmUuYWRkKHt4OiAxfSwgJ215S2V5MScpIik7CisgICAgZXZhbEFuZExvZygib2Jq
ZWN0U3RvcmUuYWRkKHt4OiAyfSwgJ215S2V5MicpIik7CisgICAgZXZhbEFuZExvZygib2JqZWN0
U3RvcmUuYWRkKHt4OiAzfSwgJ215S2V5MycpIik7CisgICAgZXZhbEFuZExvZygib2JqZWN0U3Rv
cmUuYWRkKHt4OiA0fSwgJ215S2V5NCcpIik7Cit9CisKK2Z1bmN0aW9uIG9wZW5DdXJzb3IoKQor
eworICAgIGRlYnVnKCJvcGVuQ3Vyc29yMSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIu
dHJhbnNhY3Rpb24oWyd0ZXN0J10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAg
a2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKDEpOworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgndGVzdCcpLmluZGV4KCd0ZXN0SW5kZXgnKS5vcGVu
Q3Vyc29yKGtleVJhbmdlKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29yU3VjY2Vz
czsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBj
b3VudGVyID0gMTsKK30KKworZnVuY3Rpb24gY3Vyc29yU3VjY2VzcygpCit7CisgICAgaWYgKGV2
ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkgeworICAgICAgICBzaG91bGRCZSgiY291bnRlciIs
ICI1Iik7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgn
dGVzdCcpLmluZGV4KCd0ZXN0SW5kZXgnKS5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOworICAgICAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvckVtcHR5OworICAgICAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICB2YXIgZGVsZXRlUmVxdWVzdCA9IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuZGVs
ZXRlKCkiKTsKKyAgICBkZWxldGVSZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAiY291bnRlcisr
Iik7CisgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7Cit9
CisKK2Z1bmN0aW9uIGN1cnNvckVtcHR5KCkKK3sKKyAgICBzaG91bGRCZU51bGwoImV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gYWRkT2JqZWN0OworfQorCitm
dW5jdGlvbiBhZGRPYmplY3QoKQoreworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNh
Y3Rpb24oWyd0ZXN0J10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgb2JqZWN0
U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCd0ZXN0
JykiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKHt4OiAxfSwg
J215S2V5MScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuQ3Vyc29yMjsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
b3BlbkN1cnNvcjIoKQoreworICAgIGRlYnVnKCJvcGVuQ3Vyc29yMiIpOworICAgIGV2YWxBbmRM
b2coImluZGV4ID0gZXZlbnQudGFyZ2V0LnNvdXJjZS5pbmRleCgndGVzdEluZGV4JykiKTsKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXgub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZU9iamVjdDsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVsZXRlT2JqZWN0KCkK
K3sKKyAgICBzaG91bGRCZU5vbk51bGwoZXZlbnQudGFyZ2V0LnJlc3VsdCk7CisgICAgZXZhbEFu
ZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5kZWxldGUoKSIpOworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJpbmRleC5nZXQoMSkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHZlcmlmeU9i
amVjdERlbGV0ZWQ7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Cit9CisKK2Z1bmN0aW9uIHZlcmlmeU9iamVjdERlbGV0ZWQoKQoreworICAgIHNob3VsZEJl
KCJldmVudC50YXJnZXQucmVzdWx0IiwgInVuZGVmaW5lZCIpOworICAgIGZpbmlzaEpTVGVzdCgp
OworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3Ita2V5LW9yZGVyLmpzIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1rZXktb3JkZXIuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzVjMjE5OTNmZDcyMGFhZjc1NTA3Njk0MTFlZWFiYjU2ZjRjNDA2NwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJz
b3Ita2V5LW9yZGVyLmpzCkBAIC0wLDAgKzEsMjI1IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRz
KSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3Jp
cHRpb24oIlRlc3QgSW5kZXhlZERCIGtleXMgb3JkZXJpbmcgYW5kIHJlYWRiYWNrIGZyb20gY3Vy
c29ycy4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMo
KTsKKworICAgIHByZXBhcmVEYXRhYmFzZSgpOworfQorCitmdW5jdGlvbiBwcmVwYXJlRGF0YWJh
c2UoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBldmFsQW5kTG9nKCJvcGVucmVxID0gaW5kZXhl
ZERCLm9wZW4oJ2N1cnNvci1rZXktb3JkZXInKSIpOworICAgIG9wZW5yZXEub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIG9wZW5yZXEub25zdWNjZXNzID0gZnVuY3Rpb24o
KSB7CisgICAgICAgIGV2YWxBbmRMb2coImRiID0gb3BlbnJlcS5yZXN1bHQiKTsKKyAgICAgICAg
ZXZhbEFuZExvZygidmVycmVxID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgICAgIHZlcnJl
cS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHZlcnJlcS5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9i
amVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgICAgICAgICB2ZXJyZXEucmVzdWx0Lm9uY29tcGxl
dGUgPSBwb3B1bGF0ZVN0b3JlOworICAgICAgICB9OworICAgIH07Cit9CisKK3NlbGYua2V5cyA9
IFsKKyAgICAiLUluZmluaXR5IiwKKyAgICAiLU51bWJlci5NQVhfVkFMVUUiLAorICAgICItMSIs
CisgICAgIi1OdW1iZXIuTUlOX1ZBTFVFIiwKKyAgICAiMCIsCisgICAgIk51bWJlci5NSU5fVkFM
VUUiLAorICAgICIxIiwKKyAgICAiTnVtYmVyLk1BWF9WQUxVRSIsCisgICAgIkluZmluaXR5IiwK
KworICAgICJuZXcgRGF0ZSgwKSIsCisgICAgIm5ldyBEYXRlKDEwMDApIiwKKyAgICAibmV3IERh
dGUoMTMxNzM5OTkzMTAyMykiLAorCisgICAgIicnIiwKKyAgICAiJ1x4MDAnIiwKKyAgICAiJ2En
IiwKKyAgICAiJ2FhJyIsCisgICAgIidiJyIsCisgICAgIidiYSciLAorCisgICAgIidceEEyJyIs
IC8vIFUrMDBBMiBDRU5UIFNJR04KKyAgICAiJ1x1NkMzNCciLCAvLyBVKzZDMzQgQ0pLIFVOSUZJ
RUQgSURFT0dSQVBIICh3YXRlcikKKyAgICAiJ1x1RDgzNFx1REQxRSciLCAvLyBVKzFEMTFFIE1V
U0lDQUwgU1lNQk9MIEctQ0xFRiAoVVRGLTE2IHN1cnJvZ2F0ZSBwYWlyKQorICAgICInXHVGRkZE
JyIsIC8vIFUrRkZGRCBSRVBMQUNFTUVOVCBDSEFSQUNURVIKKworICAgICJbXSIsCisKKyAgICAi
Wy1JbmZpbml0eV0iLAorICAgICJbLU51bWJlci5NQVhfVkFMVUVdIiwKKyAgICAiWy0xXSIsCisg
ICAgIlstTnVtYmVyLk1JTl9WQUxVRV0iLAorICAgICJbMF0iLAorICAgICJbTnVtYmVyLk1JTl9W
QUxVRV0iLAorICAgICJbMV0iLAorICAgICJbTnVtYmVyLk1BWF9WQUxVRV0iLAorICAgICJbSW5m
aW5pdHldIiwKKworICAgICJbbmV3IERhdGUoMCldIiwKKyAgICAiW25ldyBEYXRlKDEwMDApXSIs
CisgICAgIltuZXcgRGF0ZSgxMzE3Mzk5OTMxMDIzKV0iLAorCisgICAgIlsnJ10iLAorICAgICJb
J1x4MDAnXSIsCisgICAgIlsnYSddIiwKKyAgICAiWydhYSddIiwKKyAgICAiWydiJ10iLAorICAg
ICJbJ2JhJ10iLAorCisgICAgIlsnXHhBMiddIiwgLy8gVSswMEEyIENFTlQgU0lHTgorICAgICJb
J1x1NkMzNCddIiwgLy8gVSs2QzM0IENKSyBVTklGSUVEIElERU9HUkFQSCAod2F0ZXIpCisgICAg
IlsnXHVEODM0XHVERDFFJ10iLCAvLyBVKzFEMTFFIE1VU0lDQUwgU1lNQk9MIEctQ0xFRiAoVVRG
LTE2IHN1cnJvZ2F0ZSBwYWlyKQorICAgICJbJ1x1RkZGRCddIiwgLy8gVStGRkZEIFJFUExBQ0VN
RU5UIENIQVJBQ1RFUgorCisgICAgIltbXV0iLAorCisgICAgIltbXSwgW11dIiwKKyAgICAiW1td
LCBbXSwgW11dIiwKKworICAgICJbW1tdXV0iLAorICAgICJbW1tbXV1dXSIKK107CisKK2Z1bmN0
aW9uIGNvbXBhcmUoYSwgYikKK3sKKyAgICBpZiAodHlwZW9mIGEgIT09IHR5cGVvZiBiKSB7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHR5cGVvZiBhKSB7Cisg
ICAgICAgIGNhc2UgJ3VuZGVmaW5lZCc6IC8vIE5vdCB2YWxpZCBrZXlzLCBidXQgY29tcGFyZSBh
bnl3YXkuCisgICAgICAgIGNhc2UgJ2Jvb2xlYW4nOiAvLyBOb3QgdmFsaWQga2V5cywgYnV0IGNv
bXBhcmUgYW55d2F5LgorICAgICAgICBjYXNlICdzdHJpbmcnOgorICAgICAgICAgICAgcmV0dXJu
IGEgPT09IGI7CisgICAgICAgIGNhc2UgJ251bWJlcic6CisgICAgICAgICAgICBpZiAoYSA9PT0g
YikgeworICAgICAgICAgICAgICAgIHJldHVybiAoYSAhPT0gMCkgfHwgKDEgLyBhID09PSAxIC8g
Yik7IC8vIDAgaXNuJ3QgLTAKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGEgIT09IGEgJiYgYiAhPT0gYjsgLy8gTmFOIGlzIE5hTgorICAgICAgICAgICAgfQor
ICAgICAgICBjYXNlICdvYmplY3QnOgorICAgICAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBEYXRl
ICYmIGIgaW5zdGFuY2VvZiBEYXRlKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICthID09PSAr
YjsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoYSBpbnN0YW5jZW9mIEFycmF5ICYmIGIgaW5zdGFu
Y2VvZiBBcnJheSkgeworICAgICAgICAgICAgICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgp
IHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCFjb21wYXJlKGFbaV0sIGJbaV0pKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAvLyBGb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgdGVzdCwgb3RoZXIgb2Jq
ZWN0cyBkb24ndCBjb3VudAorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworZnVuY3Rpb24gcG9w
dWxhdGVTdG9yZSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJwb3B1bGF0aW5nIHN0
b3JlLi4uIik7CisgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUn
LCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlID0g
dHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7Iik7CisgICAgdHJhbnMub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRD
YWxsYmFjazsKKyAgICB2YXIgY291bnQgPSAwOworICAgIGtleXMuZm9yRWFjaChmdW5jdGlvbihr
ZXkpIHsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCIgKyAoY291bnQrKykgKyAiLCAi
ICsga2V5ICsgIikiKTsKKyAgICB9KTsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gY2hlY2tTdG9y
ZTsKK30KKworZnVuY3Rpb24gY2hlY2tTdG9yZSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRl
YnVnKCJpdGVyYXRpbmcgY3Vyc29yLi4uIik7CisgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50
cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7CisgICAgZXZh
bEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsiKTsKKyAgICB0cmFu
cy5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgdHJhbnMub25hYm9ydCA9
IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIGV2YWxBbmRMb2coImNvdW50ID0gMCIpOwor
ICAgIGN1cnJlcSA9IGV2YWxBbmRMb2coImN1cnJlcSA9IHN0b3JlLm9wZW5DdXJzb3IoKSIpOwor
ICAgIGN1cnJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgY3VycmVx
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAoY3VycmVxLnJlc3VsdCkgewor
ICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yID0gY3VycmVxLnJlc3VsdCIpOworICAgICAg
ICAgICAgc2hvdWxkQmVUcnVlKCJjb21wYXJlKGN1cnNvci5rZXksICIgKyBrZXlzW2NvdW50XSAr
ICIpIik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJnZXRyZXEgPSBzdG9yZS5nZXQoY3Vyc29y
LmtleSkiKTsKKyAgICAgICAgICAgIGdldHJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7CisgICAgICAgICAgICBnZXRyZXEub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJnZXRyZXEucmVzdWx0ID09PSBjb3VudCsrIik7Cisg
ICAgICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7CisgICAgICAgICAgICB9OworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJjb3VudCA9PT0ga2V5cy5sZW5n
dGgiKTsKKyAgICAgICAgICAgIGZpbmlzaFVwKCk7CisgICAgICAgIH0KKyAgICB9OworfQorCitm
dW5jdGlvbiBmaW5pc2hVcCgpCit7CisgICAgdGVzdEtleUNvbXBhcmUoKTsKKyAgICBmaW5pc2hK
U1Rlc3QoKTsKK30KKworZnVuY3Rpb24gdGVzdEtleUNvbXBhcmUoKQoreworICAgIGRlYnVnKCIi
KTsKKyAgICBkZWJ1ZygidmFsaWRhdGUgY29tcGFyZSBmdW5jdGlvbiIpOworICAgIHZhciBjYXNl
cyA9IFsKKyAgICAgICAgInVuZGVmaW5lZCIsCisgICAgICAgICJ0cnVlIiwKKyAgICAgICAgImZh
bHNlIiwKKyAgICAgICAgIjAiLAorICAgICAgICAiLTAiLAorICAgICAgICAiMTIzIiwKKyAgICAg
ICAgIkluZmluaXR5IiwKKyAgICAgICAgIi1JbmZpbml0eSIsCisgICAgICAgICJOYU4iLAorICAg
ICAgICAiJyciLAorICAgICAgICAiJ2FiYyciLAorICAgICAgICAiJ3h5eiciLAorICAgICAgICAi
bmV3IERhdGUoMCkiLAorICAgICAgICAibmV3IERhdGUoMWUzKSIsCisgICAgICAgICJuZXcgRGF0
ZSgxZTkpIiwKKyAgICAgICAgIltdIiwKKyAgICAgICAgIlsxMjNdIiwKKyAgICAgICAgIlsnYWJj
J10iLAorICAgICAgICAiWzEyMywgJ2FiYyddIiwKKyAgICAgICAgIlsnYWJjJywgMTIzXSIsCisg
ICAgICAgICJbW11dIiwKKyAgICAgICAgIltbMTIzXV0iLAorICAgICAgICAiW1snYWJjJ11dIiwK
KyAgICAgICAgIltbMTIzXSwgJ2FiYyddIiwKKyAgICAgICAgIltbMTIzXSwgMTIzXSIKKyAgICBd
OworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYXNlcy5sZW5ndGg7ICsraSkgeworICAgICAg
ICBmb3IgKHZhciBqID0gMDsgaiA8IGNhc2VzLmxlbmd0aDsgKytqKSB7CisgICAgICAgICAgICBp
ZiAoaSA9PT0gaikgeworICAgICAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiY29tcGFyZSgiICsg
Y2FzZXNbaV0gKyAiLCAiICsgY2FzZXNbal0gKyAiKSIpOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBzaG91bGRCZUZhbHNlKCJjb21wYXJlKCIgKyBjYXNlc1tpXSArICIs
ICIgKyBjYXNlc1tqXSArICIpIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9
CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXByaW1hcnkta2V5LW9y
ZGVyLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1w
cmltYXJ5LWtleS1vcmRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTI5MTBjMzZiZDM0YmJkZjg4OWYzNzJj
NjY1NmUyNWZjNDZjZjRhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1wcmltYXJ5LWtleS1vcmRlci5qcwpAQCAtMCwwICsx
LDk4IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3Jp
cHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIHByaW1h
cnkga2V5IG9yZGVyaW5nIGFuZCByZWFkYmFjayBmcm9tIGN1cnNvcnMuIik7CisKK2Z1bmN0aW9u
IHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBwcmVwYXJlRGF0
YWJhc2UoKTsKK30KKworZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKCkKK3sKKyAgICBkZWJ1Zygi
Iik7CisgICAgZXZhbEFuZExvZygib3BlblJlcXVlc3QgPSBpbmRleGVkREIub3BlbignY3Vyc29y
LXByaW1hcnkta2V5LW9yZGVyJykiKTsKKyAgICBvcGVuUmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7CisgICAgb3BlblJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24o
KSB7CisgICAgICAgIGV2YWxBbmRMb2coImRiID0gb3BlblJlcXVlc3QucmVzdWx0Iik7CisgICAg
ICAgIGV2YWxBbmRMb2coInZlcnNpb25DaGFuZ2VSZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScp
Iik7CisgICAgICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICAgICAgdmVyc2lvbkNoYW5nZVJlcXVlc3Qub25zdWNjZXNzID0gZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVj
dFN0b3JlKCdzdG9yZScpIik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3Jl
LmNyZWF0ZUluZGV4KCdpbmRleCcsICdpbmRleEtleScpIik7CisKKyAgICAgICAgICAgIHZlcnNp
b25DaGFuZ2VSZXF1ZXN0LnJlc3VsdC5vbmNvbXBsZXRlID0gcG9wdWxhdGVTdG9yZTsKKyAgICAg
ICAgfTsKKyAgICB9OworfQorCitzZWxmLmtleXMgPSBbCisgICAgIi1JbmZpbml0eSIsCisgICAg
Ii0yIiwKKyAgICAiLTEiLAorICAgICIwIiwKKyAgICAiMSIsCisgICAgIjIiLAorICAgICJJbmZp
bml0eSIsCisKKyAgICAiJzAnIiwKKyAgICAiJzEnIiwKKyAgICAiJzInIiwKKyAgICAiJ0EnIiwK
KyAgICAiJ0InIiwKKyAgICAiJ0MnIiwKKyAgICAiJ2EnIiwKKyAgICAiJ2InIiwKKyAgICAiJ2Mn
IgorXTsKKworZnVuY3Rpb24gcG9wdWxhdGVTdG9yZSgpCit7CisgICAgZGVidWcoIiIpOworICAg
IGRlYnVnKCJwb3B1bGF0aW5nIHN0b3JlLi4uIik7CisgICAgZXZhbEFuZExvZygidHJhbnMgPSBk
Yi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAg
IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7Iik7CisgICAg
dHJhbnMub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRyYW5zLm9uYWJv
cnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB2YXIgY291bnQgPSAwOworICAgIHZh
ciBpbmRleEtleSA9IDA7CisgICAgdmFyIGtleXMgPSBzZWxmLmtleXMuc2xpY2UoKTsKKyAgICBr
ZXlzLnJldmVyc2UoKTsKKyAgICBrZXlzLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7CisgICAgICAg
IHZhciB2YWx1ZSA9IHsgaW5kZXhLZXk6IGluZGV4S2V5LCBjb3VudDogY291bnQrKyB9OworICAg
ICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoIiArIEpTT04uc3RyaW5naWZ5KHZhbHVlKSArICIs
ICIgKyBrZXkgKyAiKSIpOworICAgIH0pOworICAgIHRyYW5zLm9uY29tcGxldGUgPSBjaGVja1N0
b3JlOworfQorCitmdW5jdGlvbiBjaGVja1N0b3JlKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAg
ZGVidWcoIml0ZXJhdGluZyBjdXJzb3IuLi4iKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRi
LnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkiKTsKKyAgICBl
dmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpOyIpOworICAgIGV2
YWxBbmRMb2coImluZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4Jyk7Iik7CisgICAgdHJhbnMub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4
cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICBjdXJzb3JSZXF1ZXN0ID0gZXZhbEFuZExvZygiY3Vy
c29yUmVxdWVzdCA9IGluZGV4Lm9wZW5DdXJzb3IoKSIpOworICAgIGV2YWxBbmRMb2coImNvdW50
ID0gMCIpOworICAgIHZhciBpbmRleEtleSA9IDA7CisgICAgY3Vyc29yUmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgY3Vyc29yUmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKGN1cnNvclJlcXVlc3QucmVzdWx0KSB7CisgICAg
ICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IgPSBjdXJzb3JSZXF1ZXN0LnJlc3VsdCIpOworICAg
ICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCBTdHJpbmcoaW5kZXhLZXkpKTsKKyAgICAg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsIHNlbGYua2V5c1tjb3VudCsrXSk7
CisgICAgICAgICAgICBjdXJzb3IuY29udGludWUoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIHNob3VsZEJlVHJ1ZSgiY291bnQgPT09IGtleXMubGVuZ3RoIik7CisgICAgICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorICAgIH07Cit9CisKK3Rlc3QoKTsKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXJldmVyc2UtYnVnLmpzIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1yZXZlcnNlLWJ1Zy5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jMDhlYWRlYThjODNkZTQ4MmYxMGYwOGQ4ZjAyM2JiZjBmOWMyOTQzCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1yZXZl
cnNlLWJ1Zy5qcwpAQCAtMCwwICsxLDEwMSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewor
ICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9u
KCJUZXN0IEluZGV4ZWREQiBrZXlzIG9yZGVyaW5nIGFuZCByZWFkYmFjayBmcm9tIGN1cnNvcnMu
Iik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisK
KyAgICBwcmVwYXJlRGF0YWJhc2UoKTsKK30KKworZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKCkK
K3sKKyAgICBkZWJ1ZygiIik7CisgICAgZXZhbEFuZExvZygib3BlbnJlcSA9IGluZGV4ZWREQi5v
cGVuKCdjdXJzb3ItcmV2ZXJzZS1idWcnKSIpOworICAgIG9wZW5yZXEub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIG9wZW5yZXEub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7
CisgICAgICAgIGV2YWxBbmRMb2coImRiID0gb3BlbnJlcS5yZXN1bHQiKTsKKyAgICAgICAgZXZh
bEFuZExvZygidmVycmVxID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgICAgIHZlcnJlcS5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHZlcnJlcS5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7
CisgICAgICAgICAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ3N0b3JlJykiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUlu
ZGV4KCdpbmRleCcsICcnKSIpOworICAgICAgICAgICAgdmVycmVxLnJlc3VsdC5vbmNvbXBsZXRl
ID0gcG9wdWxhdGVTdG9yZTsKKyAgICAgICAgfTsKKyAgICB9OworfQorCitmdW5jdGlvbiBwb3B1
bGF0ZVN0b3JlKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInBvcHVsYXRpbmcgc3Rv
cmUuLi4iKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScs
IElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUgPSB0
cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsiKTsKKyAgICB0cmFucy5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENh
bGxiYWNrOworCisgICAgZXZhbEFuZExvZygic3RvcmUucHV0KDEsIDEpIik7CisgICAgZXZhbEFu
ZExvZygic3RvcmUucHV0KDIsIDIpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUucHV0KDMsIDMp
Iik7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHRlc3RDdXJzb3I7Cit9CisKK3ZhciB0ZXN0cyA9
IFsKKyAgICAgICAgICAgICAgICB7dXBwZXJCb3VuZDogNywgb3BlbjogZmFsc2UsIGV4cGVjdGVk
OiAzfSwKKyAgICAgICAgICAgICAgICB7dXBwZXJCb3VuZDogNywgb3BlbjogdHJ1ZSwgIGV4cGVj
dGVkOiAzfSwKKyAgICAgICAgICAgICAgICB7dXBwZXJCb3VuZDogMywgb3BlbjogZmFsc2UsIGV4
cGVjdGVkOiAzfSwKKyAgICAgICAgICAgICAgICB7dXBwZXJCb3VuZDogMywgb3BlbjogdHJ1ZSwg
IGV4cGVjdGVkOiAyfQorICAgICAgICAgICAgXTsKKworZnVuY3Rpb24gdGVzdEN1cnNvcigpCit7
CisgICAgZGVidWcoInRlc3RDdXJzb3IoKSIpOworCisgICAgaWYgKHRlc3RzLmxlbmd0aCA9PT0g
MCkgeworICAgICAgICBkZWJ1ZygiTm8gbW9yZSB0ZXN0cy4iKTsKKyAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB0ZXN0ID0gdGVzdHMuc2hpZnQo
KTsKKworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURC
VHJhbnNhY3Rpb24uUkVBRF9PTkxZKSIpOworICAgIHRyYW5zLm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJh
Y2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHRlc3RDdXJzb3I7CisgICAgZXZhbEFuZExvZygi
c3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsiKTsKKyAgICBldmFsQW5kTG9nKCJp
bmRleCA9IHN0b3JlLmluZGV4KCdpbmRleCcpOyIpOworCisgICAgdmFyIHRlc3RGdW5jdGlvbiA9
IGZ1bmN0aW9uKCkgeworICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7CisgICAgICAgIGlmIChjdXJzb3IgPT09IG51bGwpIHsKKyAgICAgICAgICAgIGRl
YnVnKCJjdXJzb3Igc2hvdWxkIG5vdCBiZSBudWxsIik7CisgICAgICAgICAgICBmYWlsKCk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBzaG91bGRCZSgiY3Vyc29y
LmtleSIsICJ0ZXN0LmV4cGVjdGVkIik7CisgICAgICAgIGlmICgidmFsdWUiIGluIGN1cnNvcikK
KyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAidGVzdC5leHBlY3RlZCIpOwor
ICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAidGVzdC5leHBlY3RlZCIpOwor
CisgICAgICAgIC8vIExldCB0aGUgdHJhbnNhY3Rpb24gZmluaXNoLgorICAgIH0KKworICAgIGRl
YnVnKCJ1cHBlckJvdW5kOiAiICsgdGVzdC51cHBlckJvdW5kICsgIiBvcGVuOiAiICsgdGVzdC5v
cGVuICsgIiBleHBlY3RlZDogIiArIHRlc3QuZXhwZWN0ZWQpOworICAgIHN0b3JlUmVxID0gZXZh
bEFuZExvZygic3RvcmVSZXEgPSBzdG9yZS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91
bmQodGVzdC51cHBlckJvdW5kLCB0ZXN0Lm9wZW4pLCBJREJDdXJzb3IuUFJFVikiKTsKKyAgICBz
dG9yZVJlcS5vbnN1Y2Nlc3MgPSB0ZXN0RnVuY3Rpb247CisKKyAgICBpbmRleFJlcSA9IGV2YWxB
bmRMb2coImluZGV4UmVxID0gaW5kZXgub3BlbkN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5k
KHRlc3QudXBwZXJCb3VuZCwgdGVzdC5vcGVuKSwgSURCQ3Vyc29yLlBSRVYpIik7CisgICAgaW5k
ZXhSZXEub25zdWNjZXNzID0gdGVzdEZ1bmN0aW9uOworCisgICAgaW5kZXhLZXlSZXEgPSBldmFs
QW5kTG9nKCJpbmRleEtleVJlcSA9IGluZGV4Lm9wZW5LZXlDdXJzb3IoSURCS2V5UmFuZ2UudXBw
ZXJCb3VuZCh0ZXN0LnVwcGVyQm91bmQsIHRlc3Qub3BlbiksIElEQkN1cnNvci5QUkVWKSIpOwor
ICAgIGluZGV4S2V5UmVxLm9uc3VjY2VzcyA9IHRlc3RGdW5jdGlvbjsKK30KKwordGVzdCgpOwpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3Itc2tpcC1kZWxldGVkLmpzIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1za2lwLWRlbGV0ZWQuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNjBlNGQ0MWJjNTI0NGE1ZDUzNDhjMWMwMzE0OTQ4MDEzYTUyYjdkNwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJz
b3Itc2tpcC1kZWxldGVkLmpzCkBAIC0wLDAgKzEsMTkzIEBACitpZiAodGhpcy5pbXBvcnRTY3Jp
cHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVz
Y3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgY3Vyc29yIHNraXBzIGRlbGV0ZWQgZW50cmllcy4i
KTsKKwordmFyIG5hbWVzID0gWydBbHBoYScsICdCcmF2bycsICdDaGFybGllJywgJ0RlbHRhJywg
J0VjaG8nLCAnRm94dHJvdCcsICdHb2xmJywKKyAgICAgICAgICAgICAnSG90ZWwnLCAnSW5kaWEn
LCAnSnVsaWV0JywgJ0tpbG8nLCAnTGltYScsICdNaWtlJywgJ05vdmVtYmVyJywKKyAgICAgICAg
ICAgICAnT3NjYXInLCAnUGFwYScsICdRdWViZWMnLCAnUm9tZW8nLCAnU2llcnJhJywgJ1Rhbmdv
JywgJ1VuaWZvcm0nLAorICAgICAgICAgICAgICdWaWN0b3InLCAnV2hpc2tleScsICdYLXJheScs
ICdZYW5rZWUnLCAnWnVsdSddOworCit0ZXN0KCk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAg
IHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4
ZWREQi5vcGVuKCdjdXJzb3Itc2tpcC1kZWxldGVkJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgdmFyIGRiID0gZXZh
bEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb25TdWNjZXNzKCkKK3sK
KyAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKKyAgICBzZWxmLnRyYW5zID0gZXZh
bEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVl
KCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRD
YWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gYmFzaWNDdXJzb3JUZXN0OworCisgICAg
ZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIHZhciBvYmplY3RTdG9yZSA9IGV2YWxB
bmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJywge2tleVBh
dGg6ICdpZCd9KSIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdu
YW1lSW5kZXgnLCAnbmFtZScpIik7CisgICAgcmVzZXRPYmplY3RTdG9yZShmdW5jdGlvbigpIHt9
KTsKK30KKwordmFyIHNpbGVudEVycm9ySGFuZGxlciA9IGZ1bmN0aW9uKCkgeyBldmVudC5wcmV2
ZW50RGVmYXVsdCgpOyB9CisKK2Z1bmN0aW9uIHJlc2V0T2JqZWN0U3RvcmUoY2FsbGJhY2spCit7
CisgICAgZGVidWcoIlxucmVzZXRPYmplY3RTdG9yZSgpOiIpOworICAgIGlmIChjYWxsYmFjayA9
PT0gdW5kZWZpbmVkKQorICAgICAgICBjYWxsYmFjayA9IGZ1bmN0aW9uICgpIHt9OworCisgICAg
dmFyIG9iamVjdFN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykKKyAgICAgICAgb2JqZWN0U3RvcmUuZGVs
ZXRlKGkpLm9uZXJyb3IgPSBzaWxlbnRFcnJvckhhbmRsZXI7CisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykKKyAgICAgICAgb2JqZWN0U3RvcmUuYWRkKHtpZDogaSwg
bmFtZTogbmFtZXNbaV19KS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisKKyAg
ICBkZWJ1ZygiIik7CisgICAgY2FsbGJhY2soKTsKK30KKworZnVuY3Rpb24gY29udGFpbnMoYXJy
LCBvYmopCit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHsKKyAg
ICAgICAgaWYgKGFycltpXSA9PSBvYmopCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2YXIgY3Vyc29yOwordmFyIGRlbGV0ZWQ7Cit2YXIg
c2VlbjsKKworZnVuY3Rpb24gdGVzdEN1cnNvcihkZWxldGVMaXN0LCBjcmVhdGVDdXJzb3JDb21t
YW5kLCBjYWxsYmFjaykKK3sKKyAgICBkZWJ1ZygiXG50ZXN0Q3Vyc29yKCk6Iik7CisgICAgZGVs
ZXRlZCA9IFtdOworICAgIHNlZW4gPSBbXTsKKworICAgIC8vIENyZWF0ZSB0aGUgY3Vyc29yLgor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKGNyZWF0ZUN1cnNvckNvbW1hbmQpOworCisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0ID09
IG51bGwpIHsKKyAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBoYXZlIHNlZW4gZXZlcnkgbm9u
LWRlbGV0ZWQgaXRlbS4KKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZXMubGVu
Z3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAoY29udGFpbnMoZGVsZXRlZCwgaSkpCisg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgaWYgKCFjb250
YWlucyhzZWVuLCBpKSkKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiQ3Vyc29yIGRp
ZCBub3Qgc2VlIGl0ZW0gd2l0aCBpZDogIiArIGkpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAvLyBNYWtlIHN1cmUgd2UgdXNlZCBldmVyeSBydWxlIGluIHxkZWxldGVMaXN0fC4KKyAg
ICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVsZXRlTGlzdC5sZW5ndGg7IGkrKykgewor
ICAgICAgICAgICAgICAgIGlmICghY29udGFpbnMoc2VlbiwgZGVsZXRlTGlzdFtpXS5pZCkpCisg
ICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRlbGV0ZUxpc3QgcnVsZSB3aXRoIGlkOiAi
ICsgZGVsZXRlTGlzdFtpXS5pZCArICIgd2FzIG5ldmVyIHVzZWQuIik7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjdXJzb3IgPSBldmVudC50YXJn
ZXQucmVzdWx0OworICAgICAgICBkZWJ1ZyhldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLmlkICsg
IjogIiArIGV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUubmFtZSk7CisgICAgICAgIHNlZW4ucHVz
aChldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLmlkKTsKKworICAgICAgICAvLyBNYWtlIHN1cmUg
d2UgZG9uJ3Qgc2VlIGFueSBkZWxldGVkIGl0ZW1zLgorICAgICAgICBpZiAoY29udGFpbnMoZGVs
ZXRlZCwgZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS5pZCkpCisgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJDdXJzb3IgaGl0IHByZXZpb3VzbHkgZGVsZXRlZCBlbGVtZW50LiIpOworCisgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgZGVsZXRlTGlzdC5sZW5ndGg7IGkrKykgeworICAgICAgICAg
ICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUuaWQgPT0gZGVsZXRlTGlzdFtpXS5pZCkg
eworICAgICAgICAgICAgICAgIC8vIERlbGV0ZSBvYmplY3RzIHRhcmdldGVkIGJ5IHRoaXMgaWQu
CisgICAgICAgICAgICAgICAgdmFyIHRhcmdldHMgPSBkZWxldGVMaXN0W2ldLnRhcmdldHM7Cisg
ICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB0YXJnZXRzLmxlbmd0aDsgaisrKSB7
CisgICAgICAgICAgICAgICAgICAgIGRlbGV0ZWQucHVzaCh0YXJnZXRzW2pdKTsKKyAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSB0cmFucy5vYmplY3RT
dG9yZSgnc3RvcmUnKS5kZWxldGUoIiArIHRhcmdldHNbal0gKyAiKSIpOworICAgICAgICAgICAg
ICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKGogPT0gdGFyZ2V0cy5sZW5ndGggLSAxKQorICAgICAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgY3Vyc29yLmNvbnRp
bnVlKCk7IH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7CisgICAg
fQorfQorCitmdW5jdGlvbiBiYXNpY0N1cnNvclRlc3QoKQoreworICAgIGRlYnVnKCJiYXNpY0N1
cnNvclRlc3QoKSIpOworCisgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihb
J3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgdHJhbnMub25hYm9y
dCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSB0cmFu
c2FjdGlvbkNvbXBsZXRlOworCisgICAgdmFyIGRlbGV0ZXMgPSBbe2lkOiAxLCB0YXJnZXRzOiBb
MF19LAorICAgICAgICAgICAgICAgICAgIHtpZDogMiwgdGFyZ2V0czogW25hbWVzLmxlbmd0aCAt
IDFdfSwKKyAgICAgICAgICAgICAgICAgICB7aWQ6IDMsIHRhcmdldHM6IFs1LDYsN119LAorICAg
ICAgICAgICAgICAgICAgIHtpZDogMTAsIHRhcmdldHM6IFsxMF19LAorICAgICAgICAgICAgICAg
ICAgIHtpZDogMTIsIHRhcmdldHM6IFsxM119LAorICAgICAgICAgICAgICAgICAgIHtpZDogMTUs
IHRhcmdldHM6IFsxNF19LAorICAgICAgICAgICAgICAgICAgIHtpZDogMjAsIHRhcmdldHM6IFsx
NywxOF19CisgICAgICAgICAgICAgICAgICAgXTsKKworICAgIHRlc3RDdXJzb3IoZGVsZXRlcywg
InRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UubG93ZXJC
b3VuZCgwKSkiLCBmdW5jdGlvbigpIHsgcmVzZXRPYmplY3RTdG9yZShyZXZlcnNlQ3Vyc29yVGVz
dCk7IH0pOworfQorCitmdW5jdGlvbiByZXZlcnNlQ3Vyc29yVGVzdCgpCit7CisgICAgZGVidWco
InJldmVyc2VDdXJzb3JUZXN0KCk6Iik7CisKKyAgICB2YXIgZGVsZXRlcyA9IFt7aWQ6IDI0LCB0
YXJnZXRzOiBbbmFtZXMubGVuZ3RoIC0gMV19LAorICAgICAgICAgICAgICAgICAgIHtpZDogMjMs
IHRhcmdldHM6IFswXX0sCisgICAgICAgICAgICAgICAgICAge2lkOiAyMiwgdGFyZ2V0czogWzIw
LCAxOSwgMThdfSwKKyAgICAgICAgICAgICAgICAgICB7aWQ6IDE1LCB0YXJnZXRzOiBbMTVdfSwK
KyAgICAgICAgICAgICAgICAgICB7aWQ6IDEzLCB0YXJnZXRzOiBbMTJdfSwKKyAgICAgICAgICAg
ICAgICAgICB7aWQ6IDEwLCB0YXJnZXRzOiBbMTFdfSwKKyAgICAgICAgICAgICAgICAgICB7aWQ6
IDUsIHRhcmdldHM6IFs3LDhdfQorICAgICAgICAgICAgICAgICAgIF07CisKKyAgICB0ZXN0Q3Vy
c29yKGRlbGV0ZXMsICJ0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKS5vcGVuQ3Vyc29yKElEQktl
eVJhbmdlLmxvd2VyQm91bmQoMCksIElEQkN1cnNvci5QUkVWKSIsIGZ1bmN0aW9uKCkgeyByZXNl
dE9iamVjdFN0b3JlKGluZGV4Q3Vyc29yVGVzdCk7IH0pOworfQorCitmdW5jdGlvbiBpbmRleEN1
cnNvclRlc3QoKQoreworICAgIGRlYnVnKCJpbmRleEN1cnNvclRlc3QoKToiKTsKKworICAgIHZh
ciBkZWxldGVzID0gW3tpZDogMSwgdGFyZ2V0czogWzBdfSwKKyAgICAgICAgICAgICAgICAgICB7
aWQ6IDIsIHRhcmdldHM6IFtuYW1lcy5sZW5ndGggLSAxXX0sCisgICAgICAgICAgICAgICAgICAg
e2lkOiAzLCB0YXJnZXRzOiBbNSw2LDddfSwKKyAgICAgICAgICAgICAgICAgICB7aWQ6IDEwLCB0
YXJnZXRzOiBbMTBdfSwKKyAgICAgICAgICAgICAgICAgICB7aWQ6IDEyLCB0YXJnZXRzOiBbMTNd
fSwKKyAgICAgICAgICAgICAgICAgICB7aWQ6IDE1LCB0YXJnZXRzOiBbMTRdfSwKKyAgICAgICAg
ICAgICAgICAgICB7aWQ6IDIwLCB0YXJnZXRzOiBbMTcsMThdfQorICAgICAgICAgICAgICAgICAg
IF07CisKKyAgICB0ZXN0Q3Vyc29yKGRlbGV0ZXMsICJ0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUn
KS5pbmRleCgnbmFtZUluZGV4Jykub3BlbkN1cnNvcihJREJLZXlSYW5nZS5sb3dlckJvdW5kKCdB
bHBoYScpKSIsIGZ1bmN0aW9uKCkgeyB9KTsKK30KKworZnVuY3Rpb24gdHJhbnNhY3Rpb25Db21w
bGV0ZSgpCit7CisgICAgZGVidWcoInRyYW5zYWN0aW9uQ29tcGxldGUoKToiKTsKKyAgICBmaW5p
c2hKU1Rlc3QoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXVwZGF0ZS12YWx1
ZS1hcmd1bWVudC1yZXF1aXJlZC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9jdXJzb3ItdXBkYXRlLXZhbHVlLWFyZ3VtZW50LXJlcXVpcmVkLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmExYzI3M2QyYmU4YmVjYTZlMGNhMGU0OWNkNTQ3NmNhNTAwZDc4M2MKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXVw
ZGF0ZS12YWx1ZS1hcmd1bWVudC1yZXF1aXJlZC5qcwpAQCAtMCwwICsxLDczIEBACitpZiAodGhp
cy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMn
KTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGN1cnNvci51cGRhdGUgcmVxdWly
ZWQgYXJndW1lbnRzIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclBy
ZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNj
cmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
aW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFu
ZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gdGVzdEdyb3VwMTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gdGVzdEdyb3VwMSgpCit7CisgICAgZGVsZXRlQWxsT2Jq
ZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ2F1dG9JbmNyZW1lbnQnLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7
CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5D
dXJzb3IoKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgeworICAgICAgdGVz
dEdyb3VwMigpOworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdEdyb3VwMigpCit7CisgICAga2V5
cyA9IGV2YWxBbmRMb2coImtleXMgPSBbMSwgLTEsIDAsIDEwLCAyMDAwLCAncScsICd6JywgJ3R3
bycsICdiJywgJ2EnXTsiKTsKKworICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXgg
PSAwOyIpOworCisgICAgZm9yIChpIGluIGtleXMpIHsKKyAgICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKCdmb28nLCBrZXlzW2ldKTsiKTsKKyAgICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBpZiAoKytrZXlJbmRleCA9
PSBrZXlzLmxlbmd0aCkgeworICAgICAgICAgIHRlc3RHcm91cDMoKTsKKyAgICAgICAgfQorICAg
ICAgfTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDMoKQoreworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRM
b2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICAgIGlmIChjdXJzb3Ip
IHsKKyAgICAgICAgICAgIHNob3VsZFRocm93KCJjdXJzb3IudXBkYXRlKCk7Iik7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJjdXJzb3Igd2FzIG51bGwiKTsKKyAg
ICAgICAgfQorICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9Cit9CisKK3Rlc3QoKTsKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXVwZGF0ZS5qcyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItdXBkYXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjMGQ1
MWIxMjFkYWJlYzNlYWVkZGIyMzE5YTIwMzBjMmYwZGZhZGEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXVwZGF0ZS5qcwpA
QCAtMCwwICsxLDIxNiBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNj
cmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAg
aW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4
ZWREQidzIGN1cnNvciB1cGRhdGUuIik7CisKK3Rlc3QoKTsKKworZnVuY3Rpb24gdGVzdCgpCit7
CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
aW5kZXhlZERCLm9wZW4oJ2N1cnNvci11cGRhdGUnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICB2YXIgZGIgPSBldmFs
QW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQorewor
ICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOworICAgIHNlbGYudHJhbnMgPSBldmFs
QW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUo
InRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENh
bGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSBvcGVuQmFzaWNDdXJzb3I7CisKKyAgICBk
ZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgdmFyIG9iamVjdFN0b3JlID0gZXZhbEFu
ZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnYmFzaWNTdG9yZScpIik7
CisgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlMScsICdteUtleTEnKS5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKKyAgICBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZS5hZGQoJ215VmFsdWUyJywgJ215S2V5MicpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnbXlWYWx1ZTMn
LCAnbXlLZXkzJykub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7CisgICAgZXZh
bEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlNCcsICdteUtleTQnKS5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKKworICAgIHZhciBvYmplY3RTdG9yZSA9IGV2YWxB
bmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2F1dG9JbmNyZW1lbnRT
dG9yZScsIHthdXRvSW5jcmVtZW50OiB0cnVlfSkiKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZS5hZGQoJ2ZvbzEnKS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKKyAg
ICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ2ZvbzInKS5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2siKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ2ZvbzMn
KS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKKyAgICBldmFsQW5kTG9nKCJv
YmplY3RTdG9yZS5hZGQoJ2ZvbzQnKS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2si
KTsKKworICAgIHZhciBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ2tleVBhdGhTdG9yZScsIHtrZXlQYXRoOiAnaWQnfSkiKTsKKyAg
ICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgnbnVtYmVySW5kZXgnLCAnbnVt
YmVyJykiKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoe251bWJlcjogMSwgaWQ6
IDF9KS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKKyAgICBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZS5hZGQoe251bWJlcjogMiwgaWQ6IDJ9KS5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2siKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoe251bWJl
cjogMywgaWQ6IDN9KS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKKyAgICBl
dmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoe251bWJlcjogNCwgaWQ6IDR9KS5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKK30KKworZnVuY3Rpb24gb3BlbkJhc2ljQ3Vyc29y
KCkKK3sKKyAgICBkZWJ1Zygib3BlbkJhc2ljQ3Vyc29yKCkiKTsKKyAgICBldmFsQW5kTG9nKCJ0
cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnYmFzaWNTdG9yZScsICdhdXRvSW5jcmVtZW50U3RvcmUn
LCAna2V5UGF0aFN0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgdHJh
bnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxl
dGUgPSB0cmFuc2FjdGlvbkNvbXBsZXRlOworCisgICAga2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5s
b3dlckJvdW5kKCJteUtleTEiKTsKKyAgICBzZWxmLm9iamVjdFN0b3JlID0gZXZhbEFuZExvZygi
dHJhbnMub2JqZWN0U3RvcmUoJ2Jhc2ljU3RvcmUnKSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gYmFzaWNVcGRhdGVDdXJzb3I7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7CisgICAgY291bnRlciA9IDE7Cit9CisKK2Z1bmN0aW9uIGJhc2lj
VXBkYXRlQ3Vyc29yKCkKK3sKKyAgICBkZWJ1ZygiYmFzaWNVcGRhdGVDdXJzb3IoKSIpOworICAg
IHNob3VsZEJlKCJldmVudC50YXJnZXQuc291cmNlIiwgIm9iamVjdFN0b3JlIik7CisgICAgaWYg
KGV2ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkgeworICAgICAgICBzaG91bGRCZSgiY291bnRl
ciIsICI1Iik7CisgICAgICAgIGNvdW50ZXIgPSAxOworCisgICAgICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYmFzaWNTdG9yZScpLm9wZW5DdXJzb3Ioa2V5UmFu
Z2UpIik7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYmFzaWNDaGVja0N1cnNvcjsKKyAg
ICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0
LnJlc3VsdC51cGRhdGUoJ215VXBkYXRlZFZhbHVlJyArIGNvdW50ZXIrKykiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeyBldmFsQW5kTG9nKCJldmVudC50YXJnZXQuc291
cmNlLmNvbnRpbnVlKCkiKTsgfQorICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBiYXNpY0NoZWNrQ3Vyc29yKCkKK3sKKyAgICBkZWJ1
ZygiYmFzaWNDaGVja0N1cnNvcigpIik7CisgICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0g
bnVsbCkgeworICAgICAgICBzaG91bGRCZSgiY291bnRlciIsICI1Iik7CisgICAgICAgIGNvdW50
ZXIgPSAxOworCisgICAgICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgxKTsK
KyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdhdXRvSW5j
cmVtZW50U3RvcmUnKS5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOworICAgICAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGF1dG9JbmNyZW1lbnRVcGRhdGVDdXJzb3I7CisgICAgICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICJt
eUtleSIgKyBjb3VudGVyKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdl
dC5yZXN1bHQudmFsdWUiLCAibXlVcGRhdGVkVmFsdWUiICsgY291bnRlcisrKTsKKyAgICBldmFs
QW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKK30KKworZnVuY3Rpb24g
YXV0b0luY3JlbWVudFVwZGF0ZUN1cnNvcigpCit7CisgICAgZGVidWcoImF1dG9JbmNyZW1lbnRV
cGRhdGVDdXJzb3IoKSIpOworICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0ID09IG51bGwpIHsK
KyAgICAgICAgc2hvdWxkQmUoImNvdW50ZXIiLCAiNSIpOworICAgICAgICBjb3VudGVyID0gMTsK
KworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2F1dG9J
bmNyZW1lbnRTdG9yZScpLm9wZW5DdXJzb3Ioa2V5UmFuZ2UpIik7CisgICAgICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gYXV0b0luY3JlbWVudENoZWNrQ3Vyc29yOworICAgICAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LnVwZGF0ZSgn
bXlVcGRhdGVkRm9vJyArIGNvdW50ZXIrKykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1
bmN0aW9uKCkgeyBldmFsQW5kTG9nKCJldmVudC50YXJnZXQuc291cmNlLmNvbnRpbnVlKCkiKTsg
fQorICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiBhdXRvSW5jcmVtZW50Q2hlY2tDdXJzb3IoKQoreworICAgIGRlYnVnKCJhdXRvSW5j
cmVtZW50Q2hlY2tDdXJzb3IoKSIpOworICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0ID09IG51
bGwpIHsKKyAgICAgICAgc2hvdWxkQmUoImNvdW50ZXIiLCAiNSIpOworICAgICAgICBjb3VudGVy
ID0gMTsKKworICAgICAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQoMSk7Cisg
ICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgna2V5UGF0aFN0
b3JlJykub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBrZXlQYXRoVXBkYXRlQ3Vyc29yOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNob3VsZEJl
KCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICJjb3VudGVyIik7CisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LnZhbHVlIiwgIm15VXBkYXRlZEZvbyIgKyBj
b3VudGVyKyspOworICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUo
KSIpOworfQorCitmdW5jdGlvbiBrZXlQYXRoVXBkYXRlQ3Vyc29yKCkKK3sKKyAgICBkZWJ1Zygi
a2V5UGF0aFVwZGF0ZUN1cnNvcigpIik7CisgICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0g
bnVsbCkgeworICAgICAgICBzaG91bGRCZSgiY291bnRlciIsICI1Iik7CisgICAgICAgIGNvdW50
ZXIgPSAxOworCisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9y
ZSgna2V5UGF0aFN0b3JlJykub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKKyAgICAgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBrZXlQYXRoQ2hlY2tDdXJzb3I7CisgICAgICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZXZlbnQudGFyZ2V0LnJlc3VsdC51cGRhdGUoe2lk
OiAxMDAgKyBjb3VudGVyLCBudW1iZXI6IDEwMCArIGNvdW50ZXJ9KSIsICJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5EQVRBX0VSUiIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImV2ZW50LnRh
cmdldC5yZXN1bHQudXBkYXRlKHtpZDogY291bnRlciwgbnVtYmVyOiAxMDAgKyBjb3VudGVyKyt9
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7IGV2YWxBbmRMb2coImV2
ZW50LnRhcmdldC5zb3VyY2UuY29udGludWUoKSIpIH07CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGtleVBhdGhDaGVja0N1cnNv
cigpCit7CisgICAgZGVidWcoImtleVBhdGhDaGVja0N1cnNvcigpIik7CisgICAgaWYgKGV2ZW50
LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkgeworICAgICAgICBzaG91bGRCZSgiY291bnRlciIsICI1
Iik7CisgICAgICAgIGNvdW50ZXIgPSAxOworCisgICAgICAgIGtleVJhbmdlID0gSURCS2V5UmFu
Z2UubG93ZXJCb3VuZCgxMDEpOworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnMu
b2JqZWN0U3RvcmUoJ2tleVBhdGhTdG9yZScpLmluZGV4KCdudW1iZXJJbmRleCcpLm9wZW5LZXlD
dXJzb3Ioa2V5UmFuZ2UpIik7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0ga2V5Q3Vyc29y
OworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0
LmtleSIsICJjb3VudGVyIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQudmFs
dWUuaWQiLCAiY291bnRlciIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnZh
bHVlLm51bWJlciIsIChjb3VudGVyICsgMTAwKS50b1N0cmluZygpKTsKKyAgICBjb3VudGVyKys7
CisgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7Cit9CisK
K2Z1bmN0aW9uIGtleUN1cnNvcigpCit7CisgICAgZGVidWcoImtleUN1cnNvcigpIik7CisgICAg
aWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkgeworICAgICAgICBzaG91bGRCZSgiY291
bnRlciIsICI1Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaG91bGRCZSgiZXZl
bnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAiY291bnRlciArIDEwMCIpOworICAgIHNob3VsZEJlKCJl
dmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiY291bnRlciIpOworCisgICAgdHJ5IHsK
KyAgICAgICAgZGVidWcoImV2ZW50LnRhcmdldC5yZXN1bHQudXBkYXRlKHtpZDogY291bnRlciwg
bnVtYmVyOiBjb3VudGVyICsgMjAwfSkiKTsKKyAgICAgICAgZXZlbnQudGFyZ2V0LnJlc3VsdC51
cGRhdGUoe2lkOiBjb3VudGVyLCBudW1iZXI6IGNvdW50ZXIgKyAyMDB9KTsKKyAgICAgICAgdGVz
dEZhaWxlZCgiRXhwZWN0ZWQgZXhjZXB0aW9uLiIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgY29kZSA9IGUuY29kZTsKKyAgICAgICAgc2hvdWxkQmUoImNvZGUiLCAiSURCRGF0YWJhc2VF
eGNlcHRpb24uTk9UX0FMTE9XRURfRVJSIik7CisgICAgfQorCisgICAgY291bnRlcisrOworICAg
IGV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKTsKK30KKworZnVuY3Rpb24gdHJhbnNhY3Rp
b25Db21wbGV0ZSgpCit7CisgICAgZGVidWcoInRyYW5zYWN0aW9uQ29tcGxldGUoKSIpOworICAg
IGZpbmlzaEpTVGVzdCgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kYXRhLWNvcnJ1cHRp
b24uanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGF0YS1jb3Jy
dXB0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQxNTViODM4ZDJhMDdhOWM1Y2U2NGQwM2M1NmRjZjg3ZTI5
YzU4NmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvZGF0YS1jb3JydXB0aW9uLmpzCkBAIC0wLDAgKzEsNjUgQEAKK2lmICh0aGlzLmlt
cG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOwor
fQorCitkZXNjcmlwdGlvbigiVGVzdCB0aGF0IGRhdGEgaW5zZXJ0ZWQgaW50byBJbmRleGVkREIg
ZG9lcyBub3QgZ2V0IGNvcnJ1cHRlZCBvbiBkaXNrLiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sK
KyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIub3BlbignZGF0YS1jb3JydXB0aW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGVidWcoIm9wZW5T
dWNjZXNzKCk6Iik7CisgICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25l
dyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb25TdWNjZXNz
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCit7CisgICAgZGVidWcoInNldFZlcnNpb25TdWNj
ZXNzKCk6Iik7CisgICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFy
Z2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKyAgICB0
cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21w
bGV0ZSA9IGFkZERhdGE7CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAg
ZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Cit9CisKK3Zh
ciB0ZXN0RGF0ZSA9IG5ldyBEYXRlKCdGZWJydWFyeSAyNCwgMTk1NSAxMjowMDowOCcpOworCitm
dW5jdGlvbiBhZGREYXRhKCkKK3sKKyAgICBkZWJ1ZygiYWRkRGF0YSgpOiIpOworICAgIHZhciB0
cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydz
dG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICB2YXIgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVO
YW1lJykuYWRkKHt4OiB0ZXN0RGF0ZX0sICdrZXknKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBn
ZXREYXRhOworfQorCitmdW5jdGlvbiBnZXREYXRhKCkKK3sKKyAgICBkZWJ1ZygiYWRkRGF0YSgp
OiIpOworICAgIHZhciB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIu
dHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKSIpOwor
ICAgIHZhciByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHRyYW5zYWN0aW9uLm9iamVj
dFN0b3JlKCdzdG9yZU5hbWUnKS5nZXQoJ2tleScpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkb0NoZWNr
OworfQorCitmdW5jdGlvbiBkb0NoZWNrKCkKK3sKKyAgICBzaG91bGRCZVRydWUoImV2ZW50LnRh
cmdldC5yZXN1bHQueC50b1N0cmluZygpID09IHRlc3REYXRlLnRvU3RyaW5nKCkiKTsKKyAgICBm
aW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kYXRh
YmFzZS1iYXNpY3MuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
ZGF0YWJhc2UtYmFzaWNzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhNWE3YTczZTE0YWU1NjU3YzFhNWFjNGY1
NDU2OTcwZWQyYWI0OGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvZGF0YWJhc2UtYmFzaWNzLmpzCkBAIC0wLDAgKzEsMTE1IEBACitp
ZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFy
ZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgdGhlIGJhc2ljcyBvZiBJbmRleGVkREIn
cyBJREJEYXRhYmFzZS4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9y
UHJlZml4ZXMoKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbign
ZGF0YWJhc2UtYmFzaWNzJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNz
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNl
dFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZl
cnNpb25TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCit7CisgICAgZGVidWcoInNl
dFZlcnNpb25TdWNjZXNzKCk6Iik7CisgICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5z
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51
bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisKKyAg
ICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgZGVidWcoIlRlc3Rpbmcgc2V0VmVy
c2lvbi4iKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygnZGIuc2V0VmVyc2lvbigidmVyc2lv
biBhIiknKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb25BZ2FpbjsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
c2V0VmVyc2lvbkFnYWluKCkKK3sKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygnZGIuc2V0VmVy
c2lvbigidmVyc2lvbiBiIiknKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZU9iamVj
dFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBjcmVhdGVPYmplY3RTdG9yZSgpCit7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJkYi52ZXJzaW9uIiwgInZlcnNpb24gYiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygiZGIubmFtZSIsICJkYXRhYmFzZS1iYXNpY3MiKTsKKyAgICBzaG91bGRCZSgiZGIub2Jq
ZWN0U3RvcmVOYW1lcyIsICJbXSIpOworICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVz
Lmxlbmd0aCIsICIwIik7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFp
bnMoJycpIiwgImZhbHNlIik7CisgICAgc2hvdWxkQmVOdWxsKCJkYi5vYmplY3RTdG9yZU5hbWVz
WzBdIik7CisgICAgc2hvdWxkQmVOdWxsKCJkYi5vYmplY3RTdG9yZU5hbWVzLml0ZW0oMCkiKTsK
KworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygnZGIuY3JlYXRlT2JqZWN0U3RvcmUoInRl
c3QxMjMiKScpOworICAgIGNoZWNrT2JqZWN0U3RvcmUoKTsKKyAgICBjb21taXRBbmRDb250aW51
ZSgpOworfQorCitmdW5jdGlvbiBjaGVja09iamVjdFN0b3JlKCkKK3sKKyAgICBzaG91bGRCZSgi
ZGIub2JqZWN0U3RvcmVOYW1lcyIsICJbJ3Rlc3QxMjMnXSIpOworICAgIHNob3VsZEJlKCJkYi5v
YmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIxIik7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0
b3JlTmFtZXMuY29udGFpbnMoJycpIiwgImZhbHNlIik7CisgICAgc2hvdWxkQmUoImRiLm9iamVj
dFN0b3JlTmFtZXMuY29udGFpbnMoJ3Rlc3Q0NTYnKSIsICJmYWxzZSIpOworICAgIHNob3VsZEJl
KCJkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCd0ZXN0MTIzJykiLCAidHJ1ZSIpOworfQor
CitmdW5jdGlvbiBjb21taXRBbmRDb250aW51ZSgpCit7CisgICAgc2VsZi5zZXRUaW1lb3V0KHRl
c3RTZXRWZXJzaW9uQWJvcnQsIDApOworfQorCitmdW5jdGlvbiB0ZXN0U2V0VmVyc2lvbkFib3J0
KCkKK3sKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygnZGIuc2V0VmVyc2lvbigidmVyc2lvbiBj
IiknKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFub3RoZXJPYmplY3RTdG9yZTsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gY3JlYXRlQW5vdGhlck9iamVjdFN0b3JlKCkKK3sKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImRiLnZlcnNpb24iLCAidmVyc2lvbiBjIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJkYi5uYW1lIiwgImRhdGFiYXNlLWJhc2ljcyIpOworICAgIGNoZWNrT2JqZWN0U3RvcmUo
KTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygnZGIuY3JlYXRlT2JqZWN0U3RvcmUo
InRlc3Q0NTYiKScpOworICAgIHZhciBzZXRWZXJzaW9uVHJhbnMgPSBldmFsQW5kTG9nKCJzZXRW
ZXJzaW9uVHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJz
ZXRWZXJzaW9uVHJhbnMgIT09IG51bGwiKTsKKyAgICBzZXRWZXJzaW9uVHJhbnMub25jb21wbGV0
ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOworICAgIHNldFZlcnNpb25UcmFucy5vbmFi
b3J0ID0gY2hlY2tNZXRhZGF0YTsKKyAgICBzZXRWZXJzaW9uVHJhbnMuYWJvcnQoKTsKK30KKwor
ZnVuY3Rpb24gY2hlY2tNZXRhZGF0YSgpCit7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJk
Yi52ZXJzaW9uIiwgInZlcnNpb24gYiIpOworICAgIGNoZWNrT2JqZWN0U3RvcmUoKTsKKyAgICB0
ZXN0Q2xvc2UoKTsKK30KKworZnVuY3Rpb24gdGVzdENsb3NlKCkKK3sKKyAgICBldmFsQW5kTG9n
KCJkYi5jbG9zZSgpIik7CisgICAgZGVidWcoIk5vdyB0aGF0IHRoZSBjb25uZWN0aW9uIGlzIGNs
b3NlZCwgdHJhbnNhY3Rpb24gY3JlYXRpb24gc2hvdWxkIGZhaWwiKTsKKyAgICBldmFsQW5kRXhw
ZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbigndGVzdDEyMycpIiwgIklEQkRhdGFiYXNlRXhj
ZXB0aW9uLk5PVF9BTExPV0VEX0VSUiIpOworICAgIGRlYnVnKCJDYWxsIHR3aWNlLCBtYWtlIHN1
cmUgaXQncyBoYXJtbGVzcyIpOworICAgIGV2YWxBbmRMb2coImRiLmNsb3NlKCkiKTsKKyAgICBm
aW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kYXRh
YmFzZS1uYW1lLXVuZGVmaW5lZC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9kYXRhYmFzZS1uYW1lLXVuZGVmaW5lZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjY0OWNjNWNh
NTczNWYzYjQ1Y2U1MmE4MGM3OTZkZThkMmJiYWY3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGFiYXNlLW5hbWUtdW5kZWZpbmVk
LmpzCkBAIC0wLDAgKzEsMTUgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBv
cnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwor
ICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJ
bmRleGVkREIgdW5kZWZpbmVkIGFzIHJlY29yZCB2YWx1ZSIpOworCitmdW5jdGlvbiB0ZXN0KCkK
K3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAgIHNob3VsZFRocm93KCJpbmRleGVk
REIub3BlbigpOyIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL2RhdGFiYXNlLW9kZC1uYW1lcy5qcyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kYXRhYmFzZS1vZGQtbmFtZXMuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Mzk0ZjFlNzZlZTI1MGMyODBjZjE1MTIwOWM5MmYwYTY0MjMyYTc2MwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kYXRhYmFzZS1vZGQt
bmFtZXMuanMKQEAgLTAsMCArMSwzMSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAg
IGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Jyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJU
ZXN0IEluZGV4ZWREQiBvZGQgdmFsdWUgZGF0YXR5cGVzIik7CisKK2Z1bmN0aW9uIHRlc3QoKQor
eworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICB0ZXN0RGF0YSA9IFt7IGRlc2Ny
aXB0aW9uOiAnbnVsbCcsICAgICAgICAgICAgICAgbmFtZTogJ1x1MDAwMCcgfSwKKyAgICAgICAg
ICAgICAgICB7IGRlc2NyaXB0aW9uOiAnZmFpaHUnLCAgICAgICAgICAgICAgbmFtZTogJ1x1ZDgw
MFx1ZGY0NicgfSwKKyAgICAgICAgICAgICAgICB7IGRlc2NyaXB0aW9uOiAndW5wYWlyZWQgc3Vy
cm9nYXRlJywgbmFtZTogJ1x1ZDgwMCcgfSwKKyAgICAgICAgICAgICAgICB7IGRlc2NyaXB0aW9u
OiAnZmZmZScsICAgICAgICAgICAgICAgbmFtZTogJ1x1ZmZmZScgfSwKKyAgICAgICAgICAgICAg
ICB7IGRlc2NyaXB0aW9uOiAnZmZmZicsICAgICAgICAgICAgICAgbmFtZTogJ1x1ZmZmZicgfSwK
KyAgICAgICAgICAgICAgICB7IGRlc2NyaXB0aW9uOiAnbGluZSBzZXBhcmF0b3InLCAgICAgbmFt
ZTogJ1x1MjAyOCcgfQorICAgIF07CisgICAgbmV4dFRvT3BlbiA9IDA7CisgICAgb3Blbk5leHRE
YXRhYmFzZSgpOworfQorCitmdW5jdGlvbiBvcGVuTmV4dERhdGFiYXNlKCkKK3sKKyAgICBkZWJ1
Zygib3BlbmluZyBhIGRhdGFiYXNlIG5hbWVkICIgKyB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5kZXNj
cmlwdGlvbik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKHRlc3RE
YXRhW25leHRUb09wZW5dLm5hbWUsIHRlc3REYXRhW25leHRUb09wZW5dLmRlc2NyaXB0aW9uKSIp
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gKytuZXh0VG9PcGVuIDwgdGVzdERhdGEubGVuZ3RoID8gb3Blbk5l
eHREYXRhYmFzZSA6IGZpbmlzaEpTVGVzdDsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9kYXRhYmFzZS1xdW90YS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9kYXRhYmFzZS1xdW90YS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZTA5MTVmZDAyMjhlOTky
OWZmY2M1NmEzMDhkNjA4NDg5ODYwYWU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGFiYXNlLXF1b3RhLmpzCkBAIC0wLDAgKzEs
OTcgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8u
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlw
dHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdHMgSW5kZXhlZERCJ3MgcXVv
dGEgZW5mb3JjaW5nIG1lY2hhbmlzbS4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVt
b3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERC
Lm9wZW4oJ2RhdGFiYXNlLXF1b3RhJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5T
dWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgc2VsZi5kYiA9IGV2YWxBbmRMb2co
ImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IHNldFZlcnNpb25TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCit7CisgICAgZGVi
dWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7CisgICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2co
InRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMg
IT09IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7
CisgICAgdHJhbnMub25jb21wbGV0ZSA9IGNoZWNrUXVvdGFFbmZvcmNpbmc7CisKKyAgICBkZWxl
dGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkYi52
ZXJzaW9uIiwgIm5ldyB2ZXJzaW9uIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkYi5u
YW1lIiwgImRhdGFiYXNlLXF1b3RhIik7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFt
ZXMiLCAiW10iKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAi
MCIpOworICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCcnKSIsICJm
YWxzZSIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCdkYi5jcmVhdGVPYmplY3RT
dG9yZSgidGVzdDEyMyIpJyk7CisgICAgY2hlY2tPYmplY3RTdG9yZSgpOworfQorCitmdW5jdGlv
biBjaGVja09iamVjdFN0b3JlKCkKK3sKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1l
cyIsICJbJ3Rlc3QxMjMnXSIpOworICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxl
bmd0aCIsICIxIik7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMo
JycpIiwgImZhbHNlIik7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFp
bnMoJ3Rlc3Q0NTYnKSIsICJmYWxzZSIpOworICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5h
bWVzLmNvbnRhaW5zKCd0ZXN0MTIzJykiLCAidHJ1ZSIpOworfQorCitmdW5jdGlvbiBjaGVja1F1
b3RhRW5mb3JjaW5nKCkKK3sKKyAgICB2YXIgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRi
LnRyYW5zYWN0aW9uKFsndGVzdDEyMyddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwor
ICAgIHRyYW5zLm9uYWJvcnQgPSB0ZXN0Q29tcGxldGU7CisgICAgdHJhbnMub25jb21wbGV0ZSA9
IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOworICAgIGRlYnVnKCJDcmVhdGluZyAnZGF0YScg
d2hpY2ggY29udGFpbnMgNjRLIG9mIGRhdGEiKTsKKyAgICBzZWxmLmRhdGEgPSAiWCI7CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCAxNjsgaSsrKQorICAgICAgICBkYXRhICs9IGRhdGE7CisgICAg
c2hvdWxkQmUoImRhdGEubGVuZ3RoIiwgIjY1NTM2Iik7CisgICAgc2VsZi5kYXRhQWRkZWQgPSAw
OworICAgIHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3Jl
KCd0ZXN0MTIzJykiKTsKKyAgICBhZGREYXRhKCk7Cit9CisKK2Z1bmN0aW9uIGFkZERhdGEoKQor
eworICAgIGlmIChkYXRhQWRkZWQgPCA1ICogMTAyNCAqIDEwMjQpIHsKKyAgICAgICAgaWYgKGRh
dGFBZGRlZCA+IDApCisgICAgICAgICAgICBzdG9yZSA9IGV2ZW50LnRhcmdldC5zb3VyY2U7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiYWRkZWQgbW9yZSB0aGFuIHF1b3RhIik7
CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGRh
dGFBZGRlZCArPSA2NTUzNjsKKyAgICByZXF1ZXN0ID0gc3RvcmUuYWRkKHt4OiBkYXRhfSwgZGF0
YUFkZGVkKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZERhdGE7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gbG9nRXJyb3I7Cit9CisKK2Z1bmN0aW9uIGxvZ0Vycm9yKCkKK3sKKyAgICBkZWJ1
ZygiRXJyb3IgZnVuY3Rpb24gY2FsbGVkOiAoIiArIGV2ZW50LnRhcmdldC5lcnJvckNvZGUgKyAi
KSAiICsgZXZlbnQudGFyZ2V0LndlYmtpdEVycm9yTWVzc2FnZSk7CisgICAgZXZhbEFuZExvZygi
ZXZlbnQucHJldmVudERlZmF1bHQoKSIpOworfQorCitmdW5jdGlvbiB0ZXN0Q29tcGxldGUoKQor
eworICAgIHRlc3RQYXNzZWQoIkFkZGluZyBkYXRhIGZhaWxlZCBkdWUgdG8gcXVvdGEgZXJyb3Iu
IERhdGEgYWRkZWQgd2FzIGFib3V0ICIgKyBNYXRoLnJvdW5kKGRhdGFBZGRlZCAvIDEwMjQgLyAx
MDI0KSArICIgTUIiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9kZWxldGUtY2xvc2VkLWRhdGFiYXNlLW9iamVjdC5qcyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kZWxldGUtY2xvc2VkLWRhdGFiYXNl
LW9iamVjdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZDMyOWEyYjdhM2I3MGMwN2UxZmZmOGI2ZDZlYmExOGQy
ODQwM2I4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL2RlbGV0ZS1jbG9zZWQtZGF0YWJhc2Utb2JqZWN0LmpzCkBAIC0wLDAgKzEsNDkg
QEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMo
J3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiRW5zdXJlIHRoYXQgSURCRGF0YWJhc2Ug
b2JqZWN0cyBhcmUgZGVsZXRlZCB3aGVuIHRoZXJlIGFyZSBubyByZXRhaW5pbmcgcGF0aHMgbGVm
dCIpOworCitmdW5jdGlvbiB0ZXN0KCkgeworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Cisg
ICAgb3BlbkRCQ29ubmVjdGlvbigpOworfQorCitmdW5jdGlvbiBvcGVuREJDb25uZWN0aW9uKCkK
K3sKKyAgICBldmFsQW5kTG9nKCJzZWxmLnN0YXRlID0gJ3N0YXJ0aW5nJyIpOworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignZGVsZXRlLWNsb3NlZC1kYXRhYmFzZS1v
YmplY3QnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9w
ZW5TdWNjZXNzKCkKK3sKKyAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJn
ZXQucmVzdWx0Iik7CisKKyAgICAvLyBPcGVuIGEgc2Vjb25kIGNvbm5lY3Rpb24gdG8gdGhlIHNh
bWUgZGF0YWJhc2UuCisgICAgdmFyIHJlcXVlc3QyID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9w
ZW4oJ2RlbGV0ZS1jbG9zZWQtZGF0YWJhc2Utb2JqZWN0JykiKTsKKyAgICByZXF1ZXN0Mi5vbnN1
Y2Nlc3MgPSBvcGVuU3VjY2VzczI7CisgICAgcmVxdWVzdDIub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzczIoKQoreworICAgIGRlYnVn
KCJTZWNvbmQgY29ubmVjdGlvbiBzdWNjZXNzZnVsbHkgZXN0YWJsaXNoZWQuIik7CisgICAgLy8g
QWZ0ZXIgbGVhdmluZyB0aGlzIGZ1bmN0aW9uLCB0aGVyZSBhcmUgbm8gcmVtYWluaW5nIHJlZmVy
ZW5jZXMgdG8gdGhlCisgICAgLy8gc2Vjb25kIGNvbm5lY3Rpb24sIHNvIGl0IHNob3VsZCBnZXQg
ZGVsZXRlZC4KKyAgICBzZXRUaW1lb3V0KHNldFZlcnNpb24sIDIpOworfQorCitmdW5jdGlvbiBz
ZXRWZXJzaW9uKCkKK3sKKyAgICBnYygpOworICAgIGRlYnVnKCJjYWxsaW5nIHNldFZlcnNpb24o
KSAtIGNhbGxiYWNrIHNob3VsZCBydW4gaW1tZWRpYXRlbHkiKTsKKyAgICB2YXIgdmVyc2lvbkNo
YW5nZVJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOwor
ICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICB2ZXJzaW9uQ2hhbmdlUmVxdWVzdC5vbmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tl
ZENhbGxiYWNrOworICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uc3VjY2VzcyA9IGZpbmlzaEpT
VGVzdDsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kZWxldGUtcmFuZ2Uu
anMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGVsZXRlLXJhbmdl
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmE1ZGY3N2YyMzQ3MzY4OTg3ODQ5ZGM2ZTFjNTdkNzg2MmMzMWY2ZTkK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvZGVsZXRlLXJhbmdlLmpzCkBAIC0wLDAgKzEsOTAgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlw
dHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNj
cmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBJREJPYmplY3RTdG9yZS5kZWxldGUoSURCS2V5UmFu
Z2UpIG1ldGhvZC4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJl
Zml4ZXMoKTsKKworICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIuZGVsZXRlRGF0
YWJhc2UoJ2RlbGV0ZS1yYW5nZScpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIub3BlbignZGVsZXRlLXJhbmdl
JykiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
ZXZhbEFuZExvZygiZGIgPSByZXF1ZXN0LnJlc3VsdCIpOworICAgICAgICAgICAgZXZhbEFuZExv
ZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAgICAgICAgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgICAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJ0cmFu
cyA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAgICAgICAgICAgICAgdHJhbnMub25hYm9ydCA9IHVu
ZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworCisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygiZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKworICAgICAgICAgICAgICAgIHRyYW5zLm9u
Y29tcGxldGUgPSBydW5UZXN0czsKKyAgICAgICAgICAgIH07CisgICAgICAgIH07CisgICAgfQor
fQorCitmdW5jdGlvbiBjaGVja0tleXMoZXhwZWN0ZWQsIGNhbGxiYWNrKQoreworICAgIGRlYnVn
KCJnZXR0aW5nIGtleXMgZnJvbSBzdG9yZS4uLiIpOworICAgIGRlYnVnKCJleHBlY3Q6ICIgKyBK
U09OLnN0cmluZ2lmeShleHBlY3RlZCkpOworICAgIHZhciBrZXlzID0gW107CisgICAgcmVxdWVz
dCA9IHN0b3JlLm9wZW5DdXJzb3IoKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgY3Vyc29yID0gcmVxdWVzdC5yZXN1bHQ7CisgICAgICAgIGlmIChjdXJzb3IpIHsKKyAg
ICAgICAgICAgIGtleXMucHVzaChjdXJzb3Iua2V5KTsKKyAgICAgICAgICAgIGN1cnNvci5jb250
aW51ZSgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZGVidWcoImFjdHVhbDogIiAr
IEpTT04uc3RyaW5naWZ5KGtleXMpKTsKKyAgICAgICAgICAgIGlmIChKU09OLnN0cmluZ2lmeShl
eHBlY3RlZCkgPT09IEpTT04uc3RyaW5naWZ5KGtleXMpKSB7CisgICAgICAgICAgICAgICAgdGVz
dFBhc3NlZCgiTWF0Y2ghIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoIkRvbid0IG1hdGNoISIpOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfTsKK30KKwordmFyIHRlc3RzID0gWworICAgIHsgbG93ZXI6IDMsIHVwcGVyOiA4LCBsb3dl
ck9wZW46IGZhbHNlLCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogWzEsIDIsIDksIDEwXX0s
CisgICAgeyBsb3dlcjogMywgdXBwZXI6IDgsIGxvd2VyT3BlbjogdHJ1ZSwgdXBwZXJPcGVuOiBm
YWxzZSwgZXhwZWN0ZWQ6IFsxLCAyLCAzLCA5LCAxMF19LAorICAgIHsgbG93ZXI6IDMsIHVwcGVy
OiA4LCBsb3dlck9wZW46IGZhbHNlLCB1cHBlck9wZW46IHRydWUsIGV4cGVjdGVkOiBbMSwgMiwg
OCwgOSwgMTBdfSwKKyAgICB7IGxvd2VyOiAzLCB1cHBlcjogOCwgbG93ZXJPcGVuOiB0cnVlLCB1
cHBlck9wZW46IHRydWUsIGV4cGVjdGVkOiBbMSwgMiwgMywgOCwgOSwgMTBdfQorXTsKKworZnVu
Y3Rpb24gcnVuVGVzdHMoKQoreworICAgIGZ1bmN0aW9uIG5leHRUZXN0KCkgeworICAgICAgICB2
YXIgdGVzdCA9IHRlc3RzLnNoaWZ0KCk7CisgICAgICAgIGlmICh0ZXN0KSB7CisgICAgICAgICAg
ICBkZWJ1ZygiIik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0
aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgICAgICAgICBl
dmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgICAg
ICAgICBmb3IgKGkgPSAxOyBpIDw9IDEwOyArK2kpIHsKKyAgICAgICAgICAgICAgICBldmFsQW5k
TG9nKCJzdG9yZS5wdXQoIiArIGkgKyAiLCIgKyBpICsgIikiKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLmRlbGV0ZShJREJLZXlSYW5nZS5ib3VuZCgiICsK
KyAgICAgICAgICAgICAgICB0ZXN0Lmxvd2VyICsgIiwgIiArCisgICAgICAgICAgICAgICAgdGVz
dC51cHBlciArICIsICIgKworICAgICAgICAgICAgICAgIHRlc3QubG93ZXJPcGVuICsgIiwgIiAr
CisgICAgICAgICAgICAgICAgdGVzdC51cHBlck9wZW4gKyAiKSkiKTsKKyAgICAgICAgICAgIGNo
ZWNrS2V5cyh0ZXN0LmV4cGVjdGVkLCBuZXh0VGVzdCk7CisgICAgICAgICAgICB0cmFucy5vbmFi
b3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgICAgICAgICB0cmFucy5vbmNvbXBs
ZXRlID0gbmV4dFRlc3Q7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICBuZXh0VGVz
dCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RlbGV0ZUluZGV4Lmpz
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RlbGV0ZUluZGV4Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRjYjViZWRjNjAwODIzY2U5YmY5YzNiYWE0ZTg2ZjdhZmQxMTcyZTkKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
ZGVsZXRlSW5kZXguanMKQEAgLTAsMCArMSw1MCBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykg
eworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0
aW9uKCJUZXN0IEluZGV4ZWREQiBkZWxldGVJbmRleCBtZXRob2QiKTsKKworZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCLm9wZW4oJ2RlbGV0ZUluZGV4JykiKTsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFs
QW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSB0d2lkZGxlSW5kZXhlczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gdHdpZGRsZUluZGV4ZXMoKQoreworICAgIHRy
YW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBldmVudC50YXJnZXQucmVzdWx0
OyIpOworICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAg
dHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHBvc3RUd2lkZGxpbmc7CisgICAgZGVsZXRlQWxsT2Jq
ZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3Rv
cmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJyk7Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigib2JqZWN0U3RvcmUuZGVsZXRlSW5kZXgoJ2ZpcnN0JykiLCAiSURCRGF0YWJhc2VF
eGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOworICAgIHNob3VsZFRocm93KCJvYmplY3RTdG9yZS5k
ZWxldGVJbmRleCgpIik7IC8vIFR5cGVFcnJvcjogbm90IGVub3VnaCBhcmd1bWVudHMuCisgICAg
aW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdmaXJz
dCcsICdmaXJzdCcpOyIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIm9iamVjdFN0b3Jl
LmRlbGV0ZUluZGV4KCdGSVJTVCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9F
UlIiKTsKKyAgICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRl
SW5kZXgoJ3NlY29uZCcsICdzZWNvbmQnKTsiKTsKKyAgICByZXR1cm5WYWx1ZSA9IGV2YWxBbmRM
b2coInJldHVyblZhbHVlID0gb2JqZWN0U3RvcmUuZGVsZXRlSW5kZXgoJ2ZpcnN0Jyk7Iik7Cisg
ICAgc2hvdWxkQmUoInJldHVyblZhbHVlIiwgInVuZGVmaW5lZCIpOworfQorCitmdW5jdGlvbiBw
b3N0VHdpZGRsaW5nKCkKK3sKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi5jcmVhdGVP
YmplY3RTdG9yZSgnYmFyJyk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9BTExPV0VEX0VS
UiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIm9iamVjdFN0b3JlLmRlbGV0ZUluZGV4
KCdzZWNvbmQnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9F
UlIiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9kZWxldGVPYmplY3RTdG9yZS1uYW1lLWFyZ3VtZW50LXJlcXVpcmVkLmpzIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RlbGV0ZU9iamVjdFN0b3JlLW5h
bWUtYXJndW1lbnQtcmVxdWlyZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjYwOTJhMTM1ODkyNzY2YzZmMjIx
ZTI1ZTVkZWE5MmVkYzIyM2MyNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kZWxldGVPYmplY3RTdG9yZS1uYW1lLWFyZ3VtZW50LXJl
cXVpcmVkLmpzCkBAIC0wLDAgKzEsMzYgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAg
ICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigi
VGVzdCBJbmRleGVkREIgZGVsZXRlT2JqZWN0U3RvcmUgcmVxdWlyZWQgYXJndW1lbnQiKTsKKwor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5h
bWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3Qg
RGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1l
LCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIu
c2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1
bGF0ZU9iamVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKK3sK
KyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgc2hvdWxkVGhyb3coImRiLmRl
bGV0ZU9iamVjdFN0b3JlKCk7Iik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGVsZXRlT2JqZWN0U3RvcmUtbnVsbC1uYW1lLmpzIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RlbGV0ZU9iamVjdFN0b3Jl
LW51bGwtbmFtZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNGE4MzM1YWI3MWQ0NWZkMWUzNDZhOWM3NmE5ZTJj
MDI1ZWMxZDRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL2RlbGV0ZU9iamVjdFN0b3JlLW51bGwtbmFtZS5qcwpAQCAtMCwwICsxLDM3
IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRz
KCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGRlbGV0ZU9i
amVjdFN0b3JlIHJlcXVpcmVkIGFyZ3VtZW50Iik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAg
IHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRo
bmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQorewor
ICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZTsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
Y3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3Rv
cmVzKGRiKTsKKworICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdudWxsJyk7
Iik7CisgICAgZXZhbEFuZExvZygiZGIuZGVsZXRlT2JqZWN0U3RvcmUobnVsbCk7Iik7CisgICAg
ZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZHVw
bGljYXRlcy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kdXBs
aWNhdGVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxMzNhZThkMWM0ZDk1ZTc1YzM3Yzk3NTcxNGFkZmM5YWUy
Zjc2M2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvZHVwbGljYXRlcy5qcwpAQCAtMCwwICsxLDE2NiBAQAoraWYgKHRoaXMuaW1wb3J0
U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisK
K2Rlc2NyaXB0aW9uKCJWZXJpZnkgdGhhdCB5b3UgY2FuIHB1dCB0aGUgc2FtZSBkYXRhIGluIDIg
ZGlmZmVyZW50IGRhdGFiYXNlcyB3aXRob3V0IHVuaXF1ZW5lc3MgY29uc3RyYWludHMgZmlyaW5n
LiIpOworCit0ZXN0Q291bnQgPSAwOworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgaWYgKHRlc3RD
b3VudCsrID09IDApCisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Bl
bignZHVwbGljYXRlcy0xJykiKTsKKyAgICBlbHNlCisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJpbmRleGVkREIub3BlbignZHVwbGljYXRlcy0yJykiKTsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IHNldFZlcnNpb247CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb24oKQoreworICAgIGRiID0gZXZhbEFu
ZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZGVsZXRlRXhpc3Rpbmc7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKK3sKKyAgICBkZWJ1
Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKKyAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygi
dHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAh
PT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsK
KworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBzZWxmLnN0b3JlID0gZXZh
bEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7CisgICAg
c2VsZi5pbmRleE9iamVjdCA9IGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleE5h
bWUnLCAneCcpIik7CisgICAgYWRkRGF0YSgpOworfQorCitmdW5jdGlvbiBhZGREYXRhKCkKK3sK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6
J30sICdrZXknKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkTW9yZTsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gYWRk
TW9yZSgpCit7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5zb3VyY2Uu
YWRkKHt4OiAndmFsdWUyJywgeTogJ3p6ejInfSwgJ2tleTInKSIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZ2V0RGF0YTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gZ2V0RGF0YSgpCit7CisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImluZGV4T2JqZWN0LmdldEtleSgndmFsdWUnKSIpOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZ2V0T2JqZWN0RGF0YTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZ2V0T2JqZWN0RGF0YSgpCit7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0IiwgImtleSIpOworCisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0LmdldCgndmFsdWUnKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZ2V0RGF0YUZhaWw7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGdldERhdGFGYWlsKCkKK3sKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQueCIsICJ2YWx1ZSIpOwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC55IiwgInp6eiIp
OworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0LmdldEtleSgnZG9lcyBu
b3QgZXhpc3QnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0T2JqZWN0RGF0YUZhaWw7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIGdldE9iamVjdERhdGFGYWlsKCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0
LnJlc3VsdCIsICJ1bmRlZmluZWQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRl
eE9iamVjdC5nZXQoJ2RvZXMgbm90IGV4aXN0JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IG9wZW5LZXlDdXJzb3I7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5LZXlDdXJzb3IoKQoreworICAgIHNob3VsZEJlKCJl
dmVudC50YXJnZXQucmVzdWx0IiwgInVuZGVmaW5lZCIpOworCisgICAgc2VsZi5yZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhPYmplY3Qub3BlbktleUN1cnNvcigpIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBjdXJzb3IxQ29udGludWU7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGN1cnNvcjFDb250aW51ZSgpCit7Cisg
ICAgc2hvdWxkQmVGYWxzZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCA9PT0gbnVsbCIpOworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAidmFsdWUiKTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtl
eSIsICJrZXkiKTsKKworICAgIC8vIFdlIHJlLXVzZSB0aGUgbGFzdCByZXF1ZXN0IG9iamVjdC4K
KyAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKKyAgICBz
ZWxmLnJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29yMUNvbnRpbnVlMjsKK30KKworZnVuY3Rpb24g
Y3Vyc29yMUNvbnRpbnVlMigpCit7CisgICAgc2hvdWxkQmVGYWxzZSgiZXZlbnQudGFyZ2V0LnJl
c3VsdCA9PT0gbnVsbCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0
LnJlc3VsdC5rZXkiLCAidmFsdWUyIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVu
dC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAia2V5MiIpOworCisgICAgLy8gV2UgcmUtdXNl
IHRoZSBsYXN0IHJlcXVlc3Qgb2JqZWN0LgorICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5y
ZXN1bHQuY29udGludWUoKSIpOworICAgIHNlbGYucmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuT2Jq
ZWN0Q3Vyc29yOworfQorCitmdW5jdGlvbiBvcGVuT2JqZWN0Q3Vyc29yKCkKK3sKKyAgICBzaG91
bGRCZVRydWUoImV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwiKTsKKworICAgIHNlbGYucmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0Lm9wZW5DdXJzb3IoKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gY3Vyc29yMkNvbnRpbnVlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjdXJzb3IyQ29udGludWUoKQor
eworICAgIHNob3VsZEJlRmFsc2UoImV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwiKTsKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgInZhbHVl
Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LnZhbHVl
LngiLCAidmFsdWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5y
ZXN1bHQudmFsdWUueSIsICJ6enoiKTsKKworICAgIC8vIFdlIHJlLXVzZSB0aGUgbGFzdCByZXF1
ZXN0IG9iamVjdC4KKyAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVl
KCkiKTsKKyAgICBzZWxmLnJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29yMkNvbnRpbnVlMjsKK30K
KworZnVuY3Rpb24gY3Vyc29yMkNvbnRpbnVlMigpCit7CisgICAgc2hvdWxkQmVGYWxzZSgiZXZl
bnQudGFyZ2V0LnJlc3VsdCA9PT0gbnVsbCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
ZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAidmFsdWUyIik7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLngiLCAidmFsdWUyIik7ICAgIAorICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS55IiwgInp6
ejIiKTsKKworICAgIC8vIFdlIHJlLXVzZSB0aGUgbGFzdCByZXF1ZXN0IG9iamVjdC4KKyAgICBl
dmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKKyAgICBzZWxmLnJl
cXVlc3Qub25zdWNjZXNzID0gbGFzdDsKK30KKworZnVuY3Rpb24gbGFzdCgpCit7CisgICAgc2hv
dWxkQmVUcnVlKCJldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsIik7CisKKyAgICBpZiAodGVz
dENvdW50ID09IDEpCisgICAgICAgIHRlc3QoKTsKKyAgICBlbHNlCisgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworfQorCityZW1vdmVWZW5kb3JQcmVmaXhlcygpOwordGVzdCgpOwpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9lcnJvci1jYXVzZXMtYWJvcnQtYnktZGVmYXVsdC5qcyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9lcnJvci1jYXVzZXMtYWJvcnQtYnktZGVm
YXVsdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mZDNhN2NkZjQxNzU1OWIzY2YzODI3YTBhNzg3ZjQzZjI2NWRl
M2I1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL2Vycm9yLWNhdXNlcy1hYm9ydC1ieS1kZWZhdWx0LmpzCkBAIC0wLDAgKzEsMTAxIEBA
CitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdz
aGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlZlcmlmeSB0aGF0IGEgdHJhbnNhY3Rpb24g
d2l0aCBhbiBlcnJvciBhYm9ydHMgdW5sZXNzIHByZXZlbnREZWZhdWx0KCkgaXMgY2FsbGVkLiIp
OworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignZXJyb3ItY2F1c2VzLWFib3J0
LWJ5LWRlZmF1bHQnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvbjsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rp
b24gc2V0VmVyc2lvbigpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCdu
ZXcgdmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gZGVsZXRlRXhpc3RpbmcoKQoreworICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2Vzcygp
OiIpOworICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMu
b25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIGV2YWxBbmRMb2coInRyYW5z
Lm9uY29tcGxldGUgPSBhZGREYXRhIik7CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIp
OworCisgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51
bGwpIik7Cit9CisKK2Z1bmN0aW9uIGFkZERhdGEoKQoreworICAgIHRyYW5zID0gZXZhbEFuZExv
ZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5S
RUFEX1dSSVRFKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVk
QWJvcnRDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSB0cmFu
c2FjdGlvbkNvbXBsZXRlZCIpOworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFu
cy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
c3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gYWRkTW9yZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gYWRkTW9yZSgpCit7CisgICAgCisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5zb3VyY2UuYWRkKHt4OiAndmFsdWUnLCB5OiAn
enp6J30sICdrZXknKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nl
c3NDYWxsYmFjazsKKyAgICByZXF1ZXN0LmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIiwgcHJldmVu
dFRoZURlZmF1bHQpOworfQorCitmdW5jdGlvbiBwcmV2ZW50VGhlRGVmYXVsdCgpCit7CisgICAg
ZXZhbEFuZExvZygiZXZlbnQucHJldmVudERlZmF1bHQoKSIpOworfQorCitmdW5jdGlvbiB0cmFu
c2FjdGlvbkNvbXBsZXRlZCgpCit7CisgICAgdGVzdFBhc3NlZCgiVHJhbnNhY3Rpb24gY29tcGxl
dGVkIik7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCIiKTsKKyAgICB0cmFucyA9IGV2YWxB
bmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rp
b24uUkVBRF9XUklURSkiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmFib3J0ID0gdHJhbnNh
Y3Rpb25BYm9ydGVkMSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSB1bmV4
cGVjdGVkQ29tcGxldGVDYWxsYmFjayIpOworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUg
PSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSBhbGxvd0RlZmF1bHQ7Cit9CisKK2Z1bmN0aW9uIGFsbG93RGVmYXVsdCgpCit7
CisgICAgZGVidWcoIkRvaW5nIG5vdGhpbmcgdG8gcHJldmVudCB0aGUgZGVmYXVsdCBhY3Rpb24u
Li4iKTsKK30KKworZnVuY3Rpb24gdHJhbnNhY3Rpb25BYm9ydGVkMSgpCit7CisgICAgdGVzdFBh
c3NlZCgiVHJhbnNhY3Rpb24gYWJvcnRlZCIpOworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygi
Iik7CisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3Rv
cmVOYW1lJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgZXZhbEFuZExvZygi
dHJhbnMub25hYm9ydCA9IHRyYW5zYWN0aW9uQWJvcnRlZDIiKTsKKyAgICBldmFsQW5kTG9nKCJ0
cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2siKTsKKyAgICBzdG9y
ZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6
eid9LCAna2V5JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNz
Q2FsbGJhY2s7CisgICAgZGVidWcoIk9taXR0aW5nIGFuIG9uZXJyb3IgaGFuZGxlciIpOworfQor
CitmdW5jdGlvbiB0cmFuc2FjdGlvbkFib3J0ZWQyKCkKK3sKKyAgICB0ZXN0UGFzc2VkKCJUcmFu
c2FjdGlvbiBhYm9ydGVkIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvZXhjZXB0aW9uLWluLWV2ZW50LWFib3J0cy5qcyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9leGNlcHRpb24taW4tZXZlbnQtYWJv
cnRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjliMDU4NmZiYTBhMjgzZTllZTVlMzQ2YjU5MDc1MGY0ZDAwMTc3
ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvZXhjZXB0aW9uLWluLWV2ZW50LWFib3J0cy5qcwpAQCAtMCwwICsxLDEyMSBAQAoraWYg
KHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVk
LmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IGV4Y2VwdGlvbnMgaW4gSURCUmVxdWVzdCBo
YW5kbGVycyBjYXVzZSBhYm9ydHMuIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92
ZVZlbmRvclByZWZpeGVzKCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5v
cGVuKCdleGNlcHRpb24taW4tZXZlbnQtYWJvcnRzJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IHNldFZlcnNpb247CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb24oKQoreworICAgIGRiID0gZXZhbEFuZExv
ZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZGVsZXRlRXhpc3Rpbmc7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKK3sKKyAgICBkZWJ1Zygi
c2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKKyAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJh
bnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0g
bnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAg
ICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gc3RhcnRUZXN0Iik7CisKKyAgICBkZWxl
dGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIHN0YXJ0VGVzdCgpCit7CisgICAgZGVidWcoIiIpOworICAgIHRyYW5zID0gZXZhbEFu
ZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlv
bi5SRUFEX1dSSVRFKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSB0cmFuc2Fj
dGlvbkFib3J0ZWQxIik7CisgICAgZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IHVuZXhw
ZWN0ZWRDb21wbGV0ZUNhbGxiYWNrIik7CisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9
IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZTInLCB5OiAnenp6Mid9LCAna2V5MicpIik7CisgICAg
dHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignc3VjY2VzcycsIGNhdXNlRXhjZXB0aW9uLCB0cnVlKTsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gY2F1c2VFeGNlcHRpb24oKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBldmFsQW5kTG9n
KCJldmVudC5wcmV2ZW50RGVmYXVsdCgpIik7CisgICAgZGVidWcoIlRocm93aW5nIik7CisgICAg
dGhyb3cgInRoaXMgZXhjZXB0aW9uIGlzIGV4cGVjdGVkIjsKK30KKworZnVuY3Rpb24gdHJhbnNh
Y3Rpb25BYm9ydGVkMSgpCit7CisgICAgZGVidWcoIiIpOworICAgIHNob3VsZEhhdmVIYWRFcnJv
cigidGhpcyBleGNlcHRpb24gaXMgZXhwZWN0ZWQiKTsKKyAgICB0ZXN0UGFzc2VkKCJUaGUgdHJh
bnNhY3Rpb24gd2FzIGFib3J0ZWQuIik7CisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9
IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUp
Iik7CisgICAgZXZhbEFuZExvZygidHJhbnMub25hYm9ydCA9IHRyYW5zYWN0aW9uQWJvcnRlZDIi
KTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRl
Q2FsbGJhY2siKTsKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0
U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFk
ZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAna2V5JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7CisgICAgZGIub25lcnJvciA9IGNhdXNlRXhj
ZXB0aW9uOworfQorCitmdW5jdGlvbiB0cmFuc2FjdGlvbkFib3J0ZWQyKCkKK3sKKyAgICBkZWJ1
ZygiIik7CisgICAgc2hvdWxkSGF2ZUhhZEVycm9yKCJ0aGlzIGV4Y2VwdGlvbiBpcyBleHBlY3Rl
ZCIpOworICAgIHRlc3RQYXNzZWQoIlRoZSB0cmFuc2FjdGlvbiB3YXMgYWJvcnRlZC4iKTsKKyAg
ICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUn
XSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5v
bmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2siKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFu
cy5vbmNvbXBsZXRlID0gdHJhbnNhY3Rpb25Db21wbGV0ZWQxIik7CisgICAgc3RvcmUgPSBldmFs
QW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZTMnLCB5OiAnenp6Myd9LCAn
a2V5MycpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0aHJvd0FuZENhdGNoOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIGRiLm9uZXJyb3Ig
PSBudWxsOworfQorCitmdW5jdGlvbiB0aHJvd0FuZENhdGNoKCkKK3sKKyAgICBkZWJ1ZygiIik7
CisgICAgZXZhbEFuZExvZygiZXZlbnQucHJldmVudERlZmF1bHQoKSIpOworICAgIGRlYnVnKCJU
aHJvd2luZyB3aXRoaW4gYSB0cnkgYmxvY2siKTsKKyAgICB0cnkgeworICAgICAgICB0aHJvdyAi
QUhISCI7CisgICAgfSBjYXRjaCAoZSkgeworICAgIH0KK30KKworZnVuY3Rpb24gdHJhbnNhY3Rp
b25Db21wbGV0ZWQxKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgdGVzdFBhc3NlZCgiVGhlIHRy
YW5zYWN0aW9uIGNvbXBsZXRlZC4iKTsKKyAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0g
ZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSki
KTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJh
Y2siKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gdHJhbnNhY3Rpb25Db21w
bGV0ZWQyIik7CisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0
b3JlKCdzdG9yZU5hbWUnKSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQo
e3g6ICd2YWx1ZTQnLCB5OiAnenp6NCd9LCAna2V5NCcpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbigpIHsgdGVzdFBhc3NlZCgia2V5NCBhZGRlZCIpOyB9CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHRyYW5z
YWN0aW9uQ29tcGxldGVkMigpCit7CisgICAgZGVidWcoIiIpOworICAgIHRlc3RQYXNzZWQoIlRo
ZSB0cmFuc2FjdGlvbiBjb21wbGV0ZWQuIik7CisgICAgZGVidWcoIiIpOworICAgIGZpbmlzaEpT
VGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ZhY3RvcnktYmFz
aWNzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ZhY3Rvcnkt
YmFzaWNzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwMDdjZmE3MjNlODliZDVjOWViNDdjYzg4NWRiZDlhZGZm
YmY3MDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvZmFjdG9yeS1iYXNpY3MuanMKQEAgLTAsMCArMSw4MiBAQAoraWYgKHRoaXMuaW1w
b3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9
CisKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoZSBiYXNpY3Mgb2YgSW5kZXhlZERCJ3MgSURCRmFjdG9y
eS4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsK
KworICAgIHNob3VsZEJlVHJ1ZSgidHlwZW9mIGluZGV4ZWREQi5vcGVuID09PSAnZnVuY3Rpb24n
Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2YgaW5kZXhlZERCLmNtcCA9PT0gJ2Z1bmN0aW9u
JyIpOworICAgIHNob3VsZEJlVHJ1ZSgidHlwZW9mIGluZGV4ZWREQi5nZXREYXRhYmFzZU5hbWVz
ID09PSAnZnVuY3Rpb24nIik7CisKKyAgICBzaG91bGRCZVRydWUoInR5cGVvZiBpbmRleGVkREIu
ZGVsZXRlRGF0YWJhc2UgPT09ICdmdW5jdGlvbiciKTsKKworICAgIG5hbWUgPSAnc3RvcmFnZS9p
bmRleGVkZGIvZmFjdG9yeS1iYXNpY3MnOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0
YWJhc2UiOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5nZXREYXRhYmFz
ZU5hbWVzKCkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldERhdGFiYXNlTmFtZXNTdWNj
ZXNzMTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30K
KworZnVuY3Rpb24gZ2V0RGF0YWJhc2VOYW1lc1N1Y2Nlc3MxKCkKK3sKKyAgICB2YXIgZGF0YWJh
c2VOYW1lczsKKyAgICBldmFsQW5kTG9nKCJkYXRhYmFzZU5hbWVzID0gZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOworICAgIHNob3VsZEJlRmFsc2UoImRhdGFiYXNlTmFtZXMuY29udGFpbnMoJyIgKyBu
YW1lICsgIicpIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGF0YWJhc2VOYW1lcy5jb250YWlucygn
REFUQUJBU0UgVEhBVCBET0VTIE5PVCBFWElTVCcpIik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGV2YWxB
bmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY2xvc2UoKSIpOworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJpbmRleGVkREIuZ2V0RGF0YWJhc2VOYW1lcygpIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBnZXREYXRhYmFzZU5hbWVzU3VjY2VzczI7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGdldERhdGFiYXNlTmFtZXNT
dWNjZXNzMigpCit7CisgICAgdmFyIGRhdGFiYXNlTmFtZXM7CisgICAgZXZhbEFuZExvZygiZGF0
YWJhc2VOYW1lcyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoImRh
dGFiYXNlTmFtZXMuY29udGFpbnMoJyIgKyBuYW1lICsgIicpIik7CisgICAgc2hvdWxkQmVGYWxz
ZSgiZGF0YWJhc2VOYW1lcy5jb250YWlucygnREFUQUJBU0UgVEhBVCBET0VTIE5PVCBFWElTVCcp
Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNl
KCciICsgbmFtZSArICInKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlRGF0YWJh
c2VTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworfQorCitmdW5jdGlvbiBkZWxldGVEYXRhYmFzZVN1Y2Nlc3MoKQoreworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleGVkREIuZ2V0RGF0YWJhc2VOYW1lcygpIik7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBnZXREYXRhYmFzZU5hbWVzU3VjY2VzczM7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGdldERhdGFiYXNl
TmFtZXNTdWNjZXNzMygpCit7CisgICAgdmFyIGRhdGFiYXNlTmFtZXM7CisgICAgZXZhbEFuZExv
ZygiZGF0YWJhc2VOYW1lcyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZUZh
bHNlKCJkYXRhYmFzZU5hbWVzLmNvbnRhaW5zKCciICsgbmFtZSArICInKSIpOworICAgIHNob3Vs
ZEJlRmFsc2UoImRhdGFiYXNlTmFtZXMuY29udGFpbnMoJ0RBVEFCQVNFIFRIQVQgRE9FUyBOT1Qg
RVhJU1QnKSIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVE
YXRhYmFzZSgnREFUQUJBU0UgVEhBVCBET0VTIE5PVCBFWElTVCcpIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBkZWxldGVEYXRhYmFzZVN1Y2Nlc3MyOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxldGVEYXRhYmFzZVN1
Y2Nlc3MyKCkKK3sKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9mYWN0b3J5LWNtcC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9mYWN0b3J5LWNtcC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNDI2NzZhYzI0YjI5YzA4
OGMwNmRiYzIxMmUzMjdjMDJhMTczZTc1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ZhY3RvcnktY21wLmpzCkBAIC0wLDAgKzEsMTQx
IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRz
KCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGtleSBjb21w
YXJpc29uIHVzaW5nIElEQkZhY3RvcnkuY21wKCkuIik7CisKK2Z1bmN0aW9uIHRlc3QoKQorewor
ICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBzaG91bGRCZVRydWUoInR5cGVvZiBp
bmRleGVkREIuY21wID09PSAnZnVuY3Rpb24nIik7CisKKyAgICB0ZXN0VmFsaWRLZXlzKCk7Cisg
ICAgdGVzdEludmFsaWRLZXlzKCk7CisgICAgdGVzdElkZW50aWNhbEtleXMoKTsKKyAgICBmaW5p
c2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gdGVzdFZhbGlkS2V5cygpCit7CisgICAgZGVidWco
IiIpOworICAgIGRlYnVnKCJjb21wYXJlIHZhbGlkIGtleXMiKTsKKworICAgIHZhciBrZXlzID0g
WworICAgICAgICAiLUluZmluaXR5IiwKKyAgICAgICAgIi1OdW1iZXIuTUFYX1ZBTFVFIiwKKyAg
ICAgICAgIi0xIiwKKyAgICAgICAgIi1OdW1iZXIuTUlOX1ZBTFVFIiwKKyAgICAgICAgIjAiLAor
ICAgICAgICAiTnVtYmVyLk1JTl9WQUxVRSIsCisgICAgICAgICIxIiwKKyAgICAgICAgIk51bWJl
ci5NQVhfVkFMVUUiLAorICAgICAgICAiSW5maW5pdHkiLAorCisgICAgICAgICJuZXcgRGF0ZSgw
KSIsCisgICAgICAgICJuZXcgRGF0ZSgxMDAwKSIsCisgICAgICAgICJuZXcgRGF0ZSgxMzE3Mzk5
OTMxMDIzKSIsCisgICAgICAgIAorICAgICAgICAiJyciLAorICAgICAgICAiJ1x4MDAnIiwKKyAg
ICAgICAgIidhJyIsCisgICAgICAgICInYWEnIiwKKyAgICAgICAgIidiJyIsCisgICAgICAgICIn
YmEnIiwKKworICAgICAgICAiJ1x4QTInIiwgLy8gVSswMEEyIENFTlQgU0lHTgorICAgICAgICAi
J1x1NkMzNCciLCAvLyBVKzZDMzQgQ0pLIFVOSUZJRUQgSURFT0dSQVBIICh3YXRlcikKKyAgICAg
ICAgIidcdUQ4MzRcdUREMUUnIiwgLy8gVSsxRDExRSBNVVNJQ0FMIFNZTUJPTCBHLUNMRUYgKFVU
Ri0xNiBzdXJyb2dhdGUgcGFpcikKKyAgICAgICAgIidcdUZGRkQnIiwgLy8gVStGRkZEIFJFUExB
Q0VNRU5UIENIQVJBQ1RFUgorCisgICAgICAgICJbXSIsCisKKyAgICAgICAgIlstSW5maW5pdHld
IiwKKyAgICAgICAgIlstTnVtYmVyLk1BWF9WQUxVRV0iLAorICAgICAgICAiWy0xXSIsCisgICAg
ICAgICJbLU51bWJlci5NSU5fVkFMVUVdIiwKKyAgICAgICAgIlswXSIsCisgICAgICAgICJbTnVt
YmVyLk1JTl9WQUxVRV0iLAorICAgICAgICAiWzFdIiwKKyAgICAgICAgIltOdW1iZXIuTUFYX1ZB
TFVFXSIsCisgICAgICAgICJbSW5maW5pdHldIiwKKworICAgICAgICAiW25ldyBEYXRlKDApXSIs
CisgICAgICAgICJbbmV3IERhdGUoMTAwMCldIiwKKyAgICAgICAgIltuZXcgRGF0ZSgxMzE3Mzk5
OTMxMDIzKV0iLAorICAgICAgICAKKyAgICAgICAgIlsnJ10iLAorICAgICAgICAiWydceDAwJ10i
LAorICAgICAgICAiWydhJ10iLAorICAgICAgICAiWydhYSddIiwKKyAgICAgICAgIlsnYiddIiwK
KyAgICAgICAgIlsnYmEnXSIsCisKKyAgICAgICAgIlsnXHhBMiddIiwgLy8gVSswMEEyIENFTlQg
U0lHTgorICAgICAgICAiWydcdTZDMzQnXSIsIC8vIFUrNkMzNCBDSksgVU5JRklFRCBJREVPR1JB
UEggKHdhdGVyKQorICAgICAgICAiWydcdUQ4MzRcdUREMUUnXSIsIC8vIFUrMUQxMUUgTVVTSUNB
TCBTWU1CT0wgRy1DTEVGIChVVEYtMTYgc3Vycm9nYXRlIHBhaXIpCisgICAgICAgICJbJ1x1RkZG
RCddIiwgLy8gVStGRkZEIFJFUExBQ0VNRU5UIENIQVJBQ1RFUgorCisgICAgICAgICJbW11dIiwK
KyAgICAgICAgCisgICAgICAgICJbW10sIFtdXSIsCisgICAgICAgICJbW10sIFtdLCBbXV0iLAor
CisgICAgICAgICJbW1tdXV0iLAorICAgICAgICAiW1tbW11dXV0iCisgICAgXTsKKworICAgIHZh
ciBpLCBrZXkxLCBrZXkyOworICAgIGZvciAoaSA9IDA7IGkgPCBrZXlzLmxlbmd0aCAtIDE7IGkg
Kz0gMSkgeworICAgICAgICBrZXkxID0ga2V5c1tpXTsKKyAgICAgICAga2V5MiA9IGtleXNbaSAr
IDFdOworICAgICAgICBzaG91bGRCZVRydWUoImluZGV4ZWREQi5jbXAoIiArIGtleTEgKyAiLCIg
KyBrZXkyICsgIikgPT09IC0xIik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXhlZERCLmNt
cCgiICsga2V5MiArICIsIiArIGtleTEgKyAiKSA9PT0gMSIpOworICAgICAgICBzaG91bGRCZVRy
dWUoImluZGV4ZWREQi5jbXAoIiArIGtleTEgKyAiLCIgKyBrZXkxICsgIikgPT09IDAiKTsKKyAg
ICAgICAgc2hvdWxkQmVUcnVlKCJpbmRleGVkREIuY21wKCIgKyBrZXkyICsgIiwiICsga2V5MiAr
ICIpID09PSAwIik7CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0SW52YWxpZEtleXMoKQorewor
ICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiY29tcGFyZSBpbnZhbGlkIGtleXMiKTsKKworICAg
IHZhciBpbnZhbGlkS2V5cyA9IFsKKyAgICAgICAgInZvaWQgMCIsIC8vIHVuZGVmaW5lZAorICAg
ICAgICAidHJ1ZSIsCisgICAgICAgICJmYWxzZSIsCisgICAgICAgICJOYU4iLAorICAgICAgICAi
bmV3IERhdGUoTmFOKSIsCisgICAgICAgICJudWxsIiwKKyAgICAgICAgInt9IiwKKyAgICAgICAg
ImZ1bmN0aW9uICgpIHt9IiwKKyAgICAgICAgIi9yZWdleC8iLAorICAgICAgICAic2VsZiIsCisg
ICAgICAgICJzZWxmLmRvY3VtZW50IiwKKyAgICAgICAgInNlbGYuZG9jdW1lbnQuYm9keSIKKyAg
ICBdOworCisgICAgdmFyIGksIGtleTEsIGtleTI7CisgICAgZm9yIChpID0gMDsgaSA8IGludmFs
aWRLZXlzLmxlbmd0aCAtIDE7IGkgKz0gMSkgeworICAgICAgICBrZXkxID0gaW52YWxpZEtleXNb
aV07CisgICAgICAgIGtleTIgPSBpbnZhbGlkS2V5c1tpICsgMV07CisgICAgICAgIGV2YWxBbmRF
eHBlY3RFeGNlcHRpb24oImluZGV4ZWREQi5jbXAoIiArIGtleTEgKyAiLCAiICsga2V5MiArICIp
IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisgICAgICAgIGV2YWxBbmRFeHBl
Y3RFeGNlcHRpb24oImluZGV4ZWREQi5jbXAoIiArIGtleTIgKyAiLCAiICsga2V5MSArICIpIiwg
IklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisgICAgICAgIGV2YWxBbmRFeHBlY3RF
eGNlcHRpb24oImluZGV4ZWREQi5jbXAoIiArIGtleTEgKyAiLCAndmFsaWQnKSIsICJJREJEYXRh
YmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJpbmRleGVkREIuY21wKCd2YWxpZCcsICIgKyBrZXkxICsgIikiLCAiSURCRGF0YWJhc2VFeGNl
cHRpb24uREFUQV9FUlIiKTsKKyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXhl
ZERCLmNtcCgiICsga2V5MiArICIsICd2YWxpZCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRB
VEFfRVJSIik7CisgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4ZWREQi5jbXAo
J3ZhbGlkJywgIiArIGtleTIgKyAiKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIp
OworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdElkZW50aWNhbEtleXMoKQoreworICAgIGRlYnVn
KCIiKTsKKyAgICBkZWJ1ZygiY29tcGFyZSBpZGVudGljYWwga2V5cyIpOworCisgICAgc2hvdWxk
QmVUcnVlKCJpbmRleGVkREIuY21wKDAsIC0wKSA9PT0gMCIpOworfQorCit0ZXN0KCk7ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL2ZhY3RvcnktZGVsZXRlZGF0YWJhc2UtaW50ZXJhY3Rpb25zLmpz
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ZhY3RvcnktZGVsZXRl
ZGF0YWJhc2UtaW50ZXJhY3Rpb25zLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU5ZDliNzk0M2RlYTVmM2U2Njli
NTRlODJmMzU3ZDk2YjI4NGZiMGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZmFjdG9yeS1kZWxldGVkYXRhYmFzZS1pbnRlcmFjdGlv
bnMuanMKQEAgLTAsMCArMSwxODYgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBp
bXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycp
OworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVz
dCB0aGUgZGVsZXRlRGF0YWJhc2UgY2FsbCBhbmQgaXRzIGludGVyYWN0aW9uIHdpdGggb3Blbi9z
ZXRWZXJzaW9uIik7CisKK2Z1bmN0aW9uIENvbm5lY3Rpb24oaWQpIHsKKyAgICBpZCA9IFN0cmlu
ZyhpZCk7CisgICAgdmFyIHRoYXQgPSB0aGlzOworICAgIHRoaXMub3BlbiA9IGZ1bmN0aW9uKG9w
dHMpIHsKKyAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLm9w
ZW4nIikpOworICAgICAgICB2YXIgcmVxID0gaW5kZXhlZERCLm9wZW4oc2VsZi5kYm5hbWUpOwor
ICAgICAgICByZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICBy
ZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgICAgIHRoYXQuaGFuZGxlID0g
ZS50YXJnZXQucmVzdWx0OworICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2co
IiciICsgaWQgKyAiLm9wZW4ub25zdWNjZXNzJyIpKTsKKyAgICAgICAgICAgIHRoYXQuaGFuZGxl
Lm9udmVyc2lvbmNoYW5nZSA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgICAgICBzZWxmLnN0
ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIub252ZXJzaW9uY2hhbmdlJyIpKTsKKyAg
ICAgICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9udmVyc2lvbikgeyBvcHRzLm9udmVyc2lv
bi5jYWxsKHRoYXQpOyB9CisgICAgICAgICAgICB9OworICAgICAgICAgICAgaWYgKG9wdHMgJiYg
b3B0cy5vbnN1Y2Nlc3MpIHsgb3B0cy5vbnN1Y2Nlc3MuY2FsbCh0aGF0KTsgfQorICAgICAgICB9
OworICAgIH07CisKKyAgICB0aGlzLmNsb3NlID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHNlbGYu
c3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5jbG9zZSciKSk7CisgICAgICAgIHRo
aXMuaGFuZGxlLmNsb3NlKCk7CisgICAgfTsKKworICAgIHRoaXMuc2V0VmVyc2lvbiA9IGZ1bmN0
aW9uKG9wdHMpIHsKKyAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQg
KyAiLnNldFZlcnNpb24nIikpOworICAgICAgICB2YXIgcmVxID0gdGhpcy5oYW5kbGUuc2V0VmVy
c2lvbihTdHJpbmcoc2VsZi52ZXIrKykpOworICAgICAgICByZXEub25hYm9ydCA9IGZ1bmN0aW9u
IChlKSB7CisgICAgICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCAr
ICIuc2V0VmVyc2lvbi5vbmFib3J0JyIpKTsKKyAgICAgICAgICAgIGlmIChvcHRzICYmIG9wdHMu
b25hYm9ydCkgeyBvcHRzLm9uYWJvcnQuY2FsbCh0aGF0KTsgfQorICAgICAgICB9OworICAgICAg
ICByZXEub25ibG9ja2VkID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgICAgIHNlbGYuc3RlcHMu
cHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5zZXRWZXJzaW9uLm9uYmxvY2tlZCciKSk7Cisg
ICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9uYmxvY2tlZCkgeyBvcHRzLm9uYmxvY2tlZC5j
YWxsKHRoYXQpOyB9CisgICAgICAgIH07CisgICAgICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlv
biAoZSkgeworICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQg
KyAiLnNldFZlcnNpb24ub25zdWNjZXNzJyIpKTsKKyAgICAgICAgICAgIGlmICh0aGF0LmhhbmRs
ZS5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCJ0ZXN0LXN0b3JlIiArIHNlbGYudmVyKSkgewor
ICAgICAgICAgICAgICAgIHRoYXQuaGFuZGxlLmRlbGV0ZU9iamVjdFN0b3JlKCJ0ZXN0LXN0b3Jl
IiArIHNlbGYudmVyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhciBzdG9yZSA9IHRo
YXQuaGFuZGxlLmNyZWF0ZU9iamVjdFN0b3JlKCJ0ZXN0LXN0b3JlIiArIHNlbGYudmVyKTsKKyAg
ICAgICAgICAgIHZhciBjb3VudCA9IDA7CisgICAgICAgICAgICBkb19hc3luY19wdXRzKCk7IC8v
IEtlZXAgdGhpcyB0cmFuc2FjdGlvbiBydW5uaW5nIGZvciBhIHdoaWxlCisgICAgICAgICAgICBm
dW5jdGlvbiBkb19hc3luY19wdXRzKCkgeworICAgICAgICAgICAgICAgIHZhciByZXEgPSBzdG9y
ZS5wdXQoY291bnQsIGNvdW50KTsKKyAgICAgICAgICAgICAgICByZXEub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICAgICAgICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbiAoZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoKytjb3VudCA8IDEwKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBkb19hc3luY19wdXRzKCk7CisgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFu
ZExvZygiJyIgKyBpZCArICIuc2V0VmVyc2lvbi50cmFuc2FjdGlvbi1jb21wbGV0ZSciKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9uc3VjY2VzcykgeyBvcHRz
Lm9uc3VjY2Vzcy5jYWxsKHRoYXQpOyB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB9OworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgICAgICByZXEub25lcnJv
ciA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExv
ZygiJyIgKyBpZCArICIuc2V0VmVyc2lvbi5vbmVycm9yJyIpKTsKKyAgICAgICAgICAgIGlmIChv
cHRzICYmIG9wdHMub25lcnJvcikgeyBvcHRzLm9uZXJyb3IuY2FsbCh0aGF0KTsgfQorICAgICAg
ICB9OworICAgIH07Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZURhdGFiYXNlKGlkLCBuYW1lLCBvcHRz
KSB7CisgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIidkZWxldGVEYXRhYmFzZSgiICsg
aWQgKyAiKSciKSk7CisgICAgdmFyIHJlcSA9IGluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShuYW1l
KTsKKyAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgc2VsZi5zdGVw
cy5wdXNoKGV2YWxBbmRMb2coIidkZWxldGVEYXRhYmFzZSgiICsgaWQgKyAiKS5vbnN1Y2Nlc3Mn
IikpOworICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9uc3VjY2VzcykgeyBvcHRzLm9uc3VjY2Vz
cy5jYWxsKG51bGwpOyB9CisgICAgfTsKKyAgICByZXEub25lcnJvciA9IGZ1bmN0aW9uIChlKSB7
CisgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInZGVsZXRlRGF0YWJhc2UoIiAr
IGlkICsgIikub25lcnJvciciKSk7CisgICAgICAgIGlmIChvcHRzICYmIG9wdHMub25lcnJvcikg
eyBvcHRzLm9uZXJyb3IuY2FsbChudWxsKTsgfQorICAgIH07CisgICAgcmVxLm9uYmxvY2tlZCA9
IGZ1bmN0aW9uIChlKSB7CisgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInZGVs
ZXRlRGF0YWJhc2UoIiArIGlkICsgIikub25ibG9ja2VkJyIpKTsKKyAgICAgICAgaWYgKG9wdHMg
JiYgb3B0cy5vbmJsb2NrZWQpIHsgb3B0cy5vbmJsb2NrZWQuY2FsbChudWxsKTsgfQorICAgIH07
Cit9CisKKy8vIHJ1biBhIHNlcmllcyBvZiBzdGVwcyB0aGF0IHRha2UgYSBjb250aW51YXRpb24g
ZnVuY3Rpb24KK2Z1bmN0aW9uIHJ1blN0ZXBzKGNvbW1hbmRzKSB7CisgICAgaWYgKGNvbW1hbmRz
Lmxlbmd0aCkgeworICAgICAgICB2YXIgY29tbWFuZCA9IGNvbW1hbmRzLnNoaWZ0KCk7CisgICAg
ICAgIGNvbW1hbmQoZnVuY3Rpb24oKSB7IHJ1blN0ZXBzKGNvbW1hbmRzKTsgfSk7CisgICAgfQor
fQorCitmdW5jdGlvbiB0ZXN0KCkgeworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAg
dGVzdDEoKTsKK30KKworZnVuY3Rpb24gdGVzdDEoKSB7CisgICAgZGVidWcoIiIpOworICAgIGRl
YnVnKCJURVNUOiBkZWxldGVEYXRhYmFzZSBibG9ja2VkIG9uIG9wZW4gaGFuZGxlcyIpOworICAg
IGV2YWxBbmRMb2coInNlbGYuZGJuYW1lID0gJ3Rlc3QxJzsgc2VsZi52ZXIgPSAxOyBzZWxmLnN0
ZXBzID0gW10iKTsKKyAgICB2YXIgaCA9IG5ldyBDb25uZWN0aW9uKCJoIik7CisgICAgcnVuU3Rl
cHMoW2Z1bmN0aW9uKGRvTmV4dCkgeyBoLm9wZW4oe29uc3VjY2VzczogZG9OZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBvbnZlcnNpb246IGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoIiAgICBoIGNsb3NpbmcsIGJ1dCBu
b3QgaW1tZWRpYXRlbHkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IGguY2xvc2UoKTsgfSwgMCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH19KTsgfSwKKyAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGRlbGV0
ZURhdGFiYXNlKCIiLCBzZWxmLmRibmFtZSwgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
b25zdWNjZXNzOiBmaW5pc2hUZXN0fSk7IH0sCisgICAgICAgIF0pOworICAgIGZ1bmN0aW9uIGZp
bmlzaFRlc3QoKSB7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic2VsZi5zdGVwcy50
b1N0cmluZygpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiaC5vcGVuIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaC5vcGVuLm9uc3VjY2VzcyIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImRlbGV0ZURhdGFiYXNlKCkiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJoLm9udmVyc2lvbmNoYW5nZSIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImRlbGV0ZURhdGFiYXNlKCkub25ibG9ja2VkIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiaC5jbG9zZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImRlbGV0ZURhdGFiYXNlKCkub25zdWNjZXNzIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0udG9TdHJpbmcoKSk7CisgICAgICAgIHRlc3QyKCk7CisgICAgfQorfQorCitm
dW5jdGlvbiB0ZXN0MigpIHsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRFU1Q6IGRlbGV0
ZURhdGFiYXNlIG5vdCBibG9ja2VkIHdoZW4gaGFuZGxlcyBjbG9zZSBpbW1lZGlhdGVseSIpOwor
ICAgIGV2YWxBbmRMb2coInNlbGYuZGJuYW1lID0gJ3Rlc3QyJzsgc2VsZi52ZXIgPSAxOyBzZWxm
LnN0ZXBzID0gW10iKTsKKyAgICB2YXIgaCA9IG5ldyBDb25uZWN0aW9uKCJoIik7CisgICAgcnVu
U3RlcHMoW2Z1bmN0aW9uKGRvTmV4dCkgeyBoLm9wZW4oe29uc3VjY2VzczogZG9OZXh0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb252ZXJzaW9uOiBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1
ZygiICAgIGggY2xvc2luZyBpbW1lZGlhdGVseSIpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGguY2xvc2UoKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH19KTsgfSwKKyAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGRl
bGV0ZURhdGFiYXNlKCIiLCBzZWxmLmRibmFtZSwgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb25zdWNjZXNzOiBmaW5pc2hUZXN0fSk7IH0sCisgICAgICAgIF0pOworICAgIGZ1bmN0aW9u
IGZpbmlzaFRlc3QoKSB7CisgICAgICAgIGRlYnVnKCJOT1RFOiBXaWxsIEZBSUwgd2l0aCBleHRy
YSBib2d1cyBkZWxldGVEYXRhYmFzZSgpLm9uYmxvY2tlZCBzdGVwOyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzExMzAiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJzZWxmLnN0ZXBzLnRvU3RyaW5nKCkiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgWyJoLm9wZW4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoLm9wZW4u
b25zdWNjZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVsZXRlRGF0YWJh
c2UoKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgub252ZXJzaW9uY2hhbmdl
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaC5jbG9zZSIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImRlbGV0ZURhdGFiYXNlKCkub25zdWNjZXNzIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF0udG9TdHJpbmcoKSk7CisgICAgICAgIHRlc3QzKCk7
CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0MygpIHsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVi
dWcoIlRFU1Q6IGRlbGV0ZURhdGFiYXNlIGlzIGRlbGF5ZWQgaWYgYSBWRVJTSU9OX0NIQU5HRSB0
cmFuc2FjdGlvbiBpcyBydW5uaW5nIik7CisgICAgZXZhbEFuZExvZygic2VsZi5kYm5hbWUgPSAn
dGVzdDMnOyBzZWxmLnZlciA9IDE7IHNlbGYuc3RlcHMgPSBbXSIpOworICAgIHZhciBoID0gbmV3
IENvbm5lY3Rpb24oImgiKTsKKyAgICBydW5TdGVwcyhbZnVuY3Rpb24oZG9OZXh0KSB7IGgub3Bl
bih7b25zdWNjZXNzOiBkb05leHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9u
dmVyc2lvbjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkZWJ1ZygiICAgIGggY2xvc2luZywgYnV0IG5vdCBpbW1lZGlhdGVseSIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgaC5jbG9z
ZSgpOyB9LCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0pOyB9LAorICAg
ICAgICAgICAgICBmdW5jdGlvbihkb05leHQpIHsgaC5zZXRWZXJzaW9uKCk7IGRvTmV4dCgpOyB9
LAorICAgICAgICAgICAgICBmdW5jdGlvbihkb05leHQpIHsgZGVsZXRlRGF0YWJhc2UoIiIsIHNl
bGYuZGJuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7b25zdWNjZXNzOiBm
aW5pc2hUZXN0fSk7IH0sCisgICAgICAgICAgICAgIF0pOworCisgICAgZnVuY3Rpb24gZmluaXNo
VGVzdCgpIHsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzZWxmLnN0ZXBzLnRvU3Ry
aW5nKCkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJoLm9wZW4iLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJoLm9wZW4ub25zdWNjZXNzIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiaC5zZXRWZXJzaW9uIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiZGVsZXRlRGF0YWJhc2UoKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImguc2V0VmVyc2lvbi5vbnN1Y2Nlc3MiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJoLnNldFZlcnNpb24udHJhbnNhY3Rpb24tY29tcGxldGUiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJoLm9udmVyc2lvbmNoYW5nZSIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImRlbGV0ZURhdGFiYXNlKCkub25ibG9ja2VkIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiaC5jbG9zZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImRlbGV0ZURhdGFiYXNlKCkub25zdWNjZXNzIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0udG9TdHJpbmcoKSk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0K
K30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9mYWN0b3J5LWRlbGV0ZWRhdGFi
YXNlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ZhY3Rvcnkt
ZGVsZXRlZGF0YWJhc2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDZmYTU2MjI5YTc0MjY2NmVhOWZiMDUxNmE4
YWNiNzI0MTE1MGY5OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9mYWN0b3J5LWRlbGV0ZWRhdGFiYXNlLmpzCkBAIC0wLDAgKzEsOTEg
QEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMo
J3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyB3ZWJraXRJ
bmRleGVkREIuZGVsZXRlRGF0YWJhc2UoKS4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAg
cmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhl
ZERCLm9wZW4oJ2RhdGFiYXNlLXRvLWRlbGV0ZScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBzdGFydFNldFZlcnNpb247CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0U2V0VmVyc2lvbigpCit7CisgICAgZGIgPSBl
dmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVsZXRlRXhpc3RpbmcoKQoreworICAg
IHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsK
KyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisKKyAgICBzdG9yZSA9IGV2YWxB
bmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7
CisKKyAgICBzZWxmLmluZGV4ID0gZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4
TmFtZScsICcnKSIpOworICAgIHNob3VsZEJlVHJ1ZSgic3RvcmUuaW5kZXhOYW1lcy5jb250YWlu
cygnaW5kZXhOYW1lJykiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQo
J3ZhbHVlJywgJ2tleScpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IGdldFZhbHVlOworfQorCitmdW5jdGlv
biBnZXRWYWx1ZSgpCit7CisgICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJkYi50cmFuc2Fj
dGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICB0cmFu
c2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgdmFyIHN0b3Jl
ID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1l
JykiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5nZXQoJ2tleScpIik7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRJbmRleDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gYWRkSW5kZXgoKQoreworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ2YWx1ZSIpOwor
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJyki
KTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZURhdGFiYXNlOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxldGVE
YXRhYmFzZSgpCit7CisgICAgZGIub252ZXJzaW9uY2hhbmdlID0gZnVuY3Rpb24oKSB7IGRiLmNs
b3NlKCk7IH0KKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5k
ZWxldGVEYXRhYmFzZSgnZGF0YWJhc2UtdG8tZGVsZXRlJykiKTsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IHJlb3BlbkRhdGFiYXNlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiByZW9wZW5EYXRhYmFzZSgpCit7CisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdkYXRhYmFzZS10by1kZWxldGUnKSIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc3RhcnRTZXRWZXJzaW9uQWdhaW47CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHN0
YXJ0U2V0VmVyc2lvbkFnYWluKCkKK3sKKyAgICByZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJz
aW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB2ZXJpZnlOb3RG
b3VuZDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30K
KworZnVuY3Rpb24gdmVyaWZ5Tm90Rm91bmQoKQoreworICAgIHNob3VsZEJlKCJkYi5vYmplY3RT
dG9yZU5hbWVzLmxlbmd0aCIsICIwIik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVz
dCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbmRleC1jb3VudC5qcyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbmRleC1jb3VudC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
YjBlNGVmMDk4NDUwMTlmN2UxZmRmYWQ3ZDQ2YzZhYmFiYjQ2YTdmCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4LWNvdW50Lmpz
CkBAIC0wLDAgKzEsMTU0IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0
U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAg
ICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5k
ZXhlZERCJ3MgSURCSW5kZXguY291bnQoKS4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAg
cmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhl
ZERCLm9wZW4oJ2luZGV4LWNvdW50JykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewor
ICAgICAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAg
ICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIp
OworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwcmVwYXJlRGF0YWJhc2U7CisgICAgfTsKK30KKwor
ZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWco
InByZXBhcmluZyBkYXRhYmFzZSIpOworICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFu
cyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBu
dWxsIik7CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgc3RvcmUgPSBl
dmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxs
KSIpOworCisgICAgc2VsZi5pbmRleCA9IGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdp
bmRleE5hbWUnLCAnJykiKTsKKyAgICBzaG91bGRCZVRydWUoInN0b3JlLmluZGV4TmFtZXMuY29u
dGFpbnMoJ2luZGV4TmFtZScpIik7CisKKyAgICBkZWJ1ZygiYWRkaW5nIDAgLi4uIDk5Iik7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICByZXF1ZXN0ID0gc3Rv
cmUuYWRkKGksIGkpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKKyAgICB9CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHZlcmlmeUNvdW50OworfQor
CitmdW5jdGlvbiB2ZXJpZnlDb3VudCgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ2
ZXJpZnlpbmcgY291bnQgd2l0aG91dCByYW5nZSIpOworICAgIHRyYW5zID0gZXZhbEFuZExvZygi
dHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9P
TkxZKSIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT0gbnVsbCIpOworICAgIHRyYW5zLm9u
YWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0g
dmVyaWZ5Q291bnRXaXRoUmFuZ2U7CisKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0g
dHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgc2hvdWxkQmVUcnVlKCJzdG9y
ZSAhPSBudWxsIik7CisgICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmluZGV4
KCdpbmRleE5hbWUnKSIpOworICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXggIT0gbnVsbCIpOworCisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleC5jb3VudCgpIik7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgIHNob3VsZEJlVHJ1ZSgidHlwZW9mIHJl
cXVlc3QucmVzdWx0ID09ICdudW1iZXInIik7CisgICAgICAgICBzaG91bGRCZSgicmVxdWVzdC5y
ZXN1bHQiLCAiMTAwIik7CisgICAgICAgICAvLyBsZXQgdGhlIHRyYW5zYWN0aW9uIGNvbXBsZXRl
CisgICAgfTsKK30KKworZnVuY3Rpb24gdmVyaWZ5Q291bnRXaXRoUmFuZ2UoKQoreworICAgIGRl
YnVnKCIiKTsKKyAgICBkZWJ1ZygidmVyaWZ5aW5nIGNvdW50IHdpdGggcmFuZ2UiKTsKKyAgICB0
cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlTmFtZScsIElE
QlRyYW5zYWN0aW9uLlJFQURfT05MWSkiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9IG51
bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAg
dHJhbnMub25jb21wbGV0ZSA9IHZlcmlmeUNvdW50V2l0aEtleTsKKworICAgIHN0b3JlID0gZXZh
bEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICBz
aG91bGRCZVRydWUoInN0b3JlICE9IG51bGwiKTsKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coImlu
ZGV4ID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpLmluZGV4KCdpbmRleE5hbWUnKSIp
OworICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXggIT0gbnVsbCIpOworCisgICAgdmFyIHRlc3RzID0g
WworICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogOTksIHVwcGVy
T3BlbjogZmFsc2UsIGV4cGVjdGVkOiAxMDAgfSwKKyAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJP
cGVuOiB0cnVlLCB1cHBlcjogOTksIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiA5OSB9LAor
ICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogOTksIHVwcGVyT3Bl
bjogdHJ1ZSwgZXhwZWN0ZWQ6IDk5IH0sCisgICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3Blbjog
dHJ1ZSwgdXBwZXI6IDk5LCB1cHBlck9wZW46IHRydWUsIGV4cGVjdGVkOiA5OCB9LAorICAgICAg
ICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogMTAwLCB1cHBlck9wZW46IGZh
bHNlLCBleHBlY3RlZDogMTAwIH0sCisgICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogZmFs
c2UsIHVwcGVyOiAxMDAsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiAxMDAgfSwKKyAgICAg
ICAgeyBsb3dlcjogMTAsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiAxMDAsIHVwcGVyT3Blbjog
ZmFsc2UsIGV4cGVjdGVkOiA5MCB9LAorICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IGZh
bHNlLCB1cHBlcjogMCwgdXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDEgfSwKKyAgICAgICAg
eyBsb3dlcjogNTAwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogNTAwLCB1cHBlck9wZW46IGZh
bHNlLCBleHBlY3RlZDogMCB9CisgICAgXTsKKworICAgIGZ1bmN0aW9uIG5leHRUZXN0KCkgewor
ICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgIGV2YWxBbmRMb2coInRlc3QgPSAiICsgSlNPTi5z
dHJpbmdpZnkodGVzdHMuc2hpZnQoKSkpOworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IGluZGV4LmNvdW50KElEQktleVJhbmdlLmJvdW5kKHRlc3QubG93ZXIsIHRlc3Qu
dXBwZXIsIHRlc3QubG93ZXJPcGVuLCB0ZXN0LnVwcGVyT3BlbikpIik7CisgICAgICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgidHlwZW9m
IHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXInIik7CisgICAgICAgICAgICAgc2hvdWxkQmUoInJl
cXVlc3QucmVzdWx0IiwgU3RyaW5nKHRlc3QuZXhwZWN0ZWQpKTsKKworICAgICAgICAgICAgIGlm
ICh0ZXN0cy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgbmV4dFRlc3QoKTsKKyAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIGxldCB0aGUgdHJhbnNhY3Rpb24gY29t
cGxldGUKKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBuZXh0VGVzdCgpOworfQorCitmdW5jdGlv
biB2ZXJpZnlDb3VudFdpdGhLZXkoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidmVy
aWZ5aW5nIGNvdW50IHdpdGgga2V5Iik7CisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9
IGRiLnRyYW5zYWN0aW9uKCdzdG9yZU5hbWUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7
CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9
IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSBmaW5pc2hK
U1Rlc3Q7CisKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3Rv
cmUoJ3N0b3JlTmFtZScpIik7CisgICAgc2hvdWxkQmVUcnVlKCJzdG9yZSAhPSBudWxsIik7Cisg
ICAgc3RvcmUgPSBldmFsQW5kTG9nKCJpbmRleCA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5h
bWUnKS5pbmRleCgnaW5kZXhOYW1lJykiKTsKKyAgICBzaG91bGRCZVRydWUoImluZGV4ICE9IG51
bGwiKTsKKworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4LmNvdW50KE5hTikiLCAi
SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJpbmRleC5jb3VudCh7fSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsK
KyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJpbmRleC5jb3VudCgvcmVnZXgvKSIsICJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworCisgICAgdmFyIHRlc3RzID0gWworICAgICAg
ICB7IGtleTogMCwgZXhwZWN0ZWQ6IDEgfSwKKyAgICAgICAgeyBrZXk6IDEwMCwgZXhwZWN0ZWQ6
IDAgfSwKKyAgICAgICAgeyBrZXk6IG51bGwsIGV4cGVjdGVkOiAxMDAgfQorICAgIF07CisKKyAg
ICBmdW5jdGlvbiBuZXh0VGVzdCgpIHsKKyAgICAgICAgZGVidWcoIiIpOworICAgICAgICBldmFs
QW5kTG9nKCJ0ZXN0ID0gIiArIEpTT04uc3RyaW5naWZ5KHRlc3RzLnNoaWZ0KCkpKTsKKyAgICAg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleC5jb3VudCh0ZXN0LmtleSki
KTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cisg
ICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgc2hv
dWxkQmVUcnVlKCJ0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251bWJlciciKTsKKyAgICAgICAg
ICAgICBzaG91bGRCZSgicmVxdWVzdC5yZXN1bHQiLCBTdHJpbmcodGVzdC5leHBlY3RlZCkpOwor
CisgICAgICAgICAgICAgaWYgKHRlc3RzLmxlbmd0aCkgeworICAgICAgICAgICAgICAgICBuZXh0
VGVzdCgpOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAvLyBvdGhlcndpc2UgbGV0IHRo
ZSB0cmFuc2FjdGlvbiBjb21wbGV0ZQorICAgICAgICB9OworICAgIH0KKworICAgIG5leHRUZXN0
KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW5kZXgtY3Vyc29yLmpz
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4LWN1cnNvci5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jOTg4ZWJjMThjNDZlODg4MWM0ZjE1MDMzOGY3MjdiZjQ4NzUyNGY3Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L2luZGV4LWN1cnNvci5qcwpAQCAtMCwwICsxLDI0OSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0
cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2Ny
aXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIHdlYmtpdElEQkluZGV4Lm9wZW5DdXJzb3IgKyB0aGUg
Y3Vyc29yIGl0IHByb2R1Y2VzIGluIGRlcHRoLiIpOworCisvLyBJbiBvcmRlciBvZiBob3cgaXQg
c2hvdWxkIGJlIHNvcnRlZCBieSBJbmRleGVkREIuCitzZWxmLnRlc3REYXRhID0gWworICAgIDEs
CisgICAgMSwKKyAgICAzLjE0MTU5LAorICAgIDMuMTQxNTksCisgICAgMTAsCisgICAgLy8gRklY
TUU6IERhdGVzLgorICAgICJBIGJpZyBzdHJpbmciLAorICAgICJ0aGUgQklHRVNUIHN0cmluZyIs
CisgICAgInRoZSBCSUdFU1Qgc3RyaW5nIgorXTsKKworZnVuY3Rpb24gb3BlbkRhdGFiYXNlKCkK
K3sKKyAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignaW5kZXgtY3Vyc29y
JykiKTsKKyAgICByZXN1bHQub25zdWNjZXNzID0gc2V0VmVyc2lvbjsKKyAgICByZXN1bHQub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9u
KCkKK3sKKyAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7CisKKyAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lv
bicpIik7CisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4aXN0aW5nOworICAgIHJlc3Vs
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0
ZUV4aXN0aW5nKCkKK3sKKyAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwor
ICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKworICAgIGRlbGV0
ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBzZWxmLm9iamVjdFN0b3JlID0gZXZhbEFuZExv
ZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3NvbWVPYmplY3RTdG9yZScpIik7CisgICAgc2VsZi5p
bmRleE9iamVjdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdzb21lSW5k
ZXgnLCAneCcpIik7CisgICAgc2VsZi5uZXh0VG9BZGQgPSAwOworICAgIGFkZERhdGEoKTsKK30K
KworZnVuY3Rpb24gYWRkRGF0YSgpCit7CisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygib2JqZWN0
U3RvcmUuYWRkKHsneCc6IHRlc3REYXRhW25leHRUb0FkZF19LCBuZXh0VG9BZGQpIik7CisgICAg
cmVzdWx0Lm9uc3VjY2VzcyA9ICsrc2VsZi5uZXh0VG9BZGQgPCB0ZXN0RGF0YS5sZW5ndGggPyBh
ZGREYXRhIDogc2NoZWR1bGVUZXN0czsKKyAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzY2hlZHVsZVRlc3RzKCkKK3sKKyAgICBkZWJ1
ZygiU2NoZWR1bGluZyB0ZXN0cy4uLiIpOworICAgIHNlbGYuc2NoZWR1bGVkVGVzdHMgPSBbXTsK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRlc3REYXRhLmxlbmd0aDsgKytpKSB7CisgICAgICAg
IC8qIGxlZnQgYm91bmQsIGlzIG9wZW4sIHJpZ2h0IGJvdW5kLCBpcyBvcGVuLCBhc2NlbmRpbmcg
Ki8KKyAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwgbnVsbCwgbnVsbCwg
dHJ1ZV0pOworICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCBmYWxzZSwgbnVsbCwg
bnVsbCwgdHJ1ZV0pOworICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtudWxsLCBudWxs
LCBpLCB0cnVlLCB0cnVlXSk7CisgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW251bGws
IG51bGwsIGksIGZhbHNlLCB0cnVlXSk7CisgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQo
W2ksIHRydWUsIG51bGwsIG51bGwsIGZhbHNlXSk7CisgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVu
c2hpZnQoW2ksIGZhbHNlLCBudWxsLCBudWxsLCBmYWxzZV0pOworICAgICAgICBzY2hlZHVsZWRU
ZXN0cy51bnNoaWZ0KFtudWxsLCBudWxsLCBpLCB0cnVlLCBmYWxzZV0pOworICAgICAgICBzY2hl
ZHVsZWRUZXN0cy51bnNoaWZ0KFtudWxsLCBudWxsLCBpLCBmYWxzZSwgZmFsc2VdKTsKKyAgICAg
ICAgZm9yICh2YXIgaiA9IDY7IGogPCB0ZXN0RGF0YS5sZW5ndGg7ICsraikgeworICAgICAgICAg
ICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwgaiwgdHJ1ZSwgdHJ1ZV0pOworICAg
ICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwgaiwgZmFsc2UsIHRydWVd
KTsKKyAgICAgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBqLCB0cnVl
LCB0cnVlXSk7CisgICAgICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCBmYWxzZSwg
aiwgZmFsc2UsIHRydWVdKTsKKyAgICAgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ks
IHRydWUsIGosIHRydWUsIGZhbHNlXSk7CisgICAgICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNo
aWZ0KFtpLCB0cnVlLCBqLCBmYWxzZSwgZmFsc2VdKTsKKyAgICAgICAgICAgIHNjaGVkdWxlZFRl
c3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBqLCB0cnVlLCBmYWxzZV0pOworICAgICAgICAgICAgc2No
ZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgZmFsc2UsIGosIGZhbHNlLCBmYWxzZV0pOworICAgICAg
ICB9CisgICAgfQorCisgICAgZGVidWcoIlJ1bm5pbmcgdGVzdHMuLi4iKTsKKyAgICBydW5OZXh0
VGVzdCgpOworfQorCitmdW5jdGlvbiBydW5OZXh0VGVzdCgpCit7CisgICAgaWYgKCFzY2hlZHVs
ZWRUZXN0cy5sZW5ndGgpIHsKKyAgICAgICAgdGVzdE51bGxLZXlSYW5nZSgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgdmFyIHRlc3QgPSBzY2hlZHVsZWRUZXN0cy5wb3AoKTsKKyAg
ICBzZWxmLmxvd2VyID0gdGVzdFswXTsKKyAgICBzZWxmLmxvd2VySXNPcGVuID0gdGVzdFsxXTsK
KyAgICBzZWxmLnVwcGVyID0gdGVzdFsyXTsKKyAgICBzZWxmLnVwcGVySXNPcGVuID0gdGVzdFsz
XTsKKyAgICBzZWxmLmFzY2VuZGluZyA9IHRlc3RbNF07CisKKyAgICBzdHIgPSAiTmV4dCB0ZXN0
OiAiOworICAgIGlmIChsb3dlciAhPT0gbnVsbCkgeworICAgICAgICBzdHIgKz0gImxvd2VyICI7
CisgICAgICAgIGlmIChsb3dlcklzT3BlbikKKyAgICAgICAgICAgIHN0ciArPSAib3BlbiAiOwor
ICAgICAgICBzdHIgKz0gImJvdW5kIGlzICIgKyBsb3dlciArICI7ICI7CisgICAgfQorICAgIGlm
ICh1cHBlciAhPT0gbnVsbCkgeworICAgICAgICBzdHIgKz0gInVwcGVyICI7CisgICAgICAgIGlm
ICh1cHBlcklzT3BlbikKKyAgICAgICAgICAgIHN0ciArPSAib3BlbiAiOworICAgICAgICBzdHIg
Kz0gImJvdW5kIGlzICIgKyB1cHBlciArICI7ICI7CisgICAgfQorICAgIGlmIChhc2NlbmRpbmcp
CisgICAgICAgIHN0ciArPSAic29ydGVkIGFzY2VuZGluZy4iOworICAgIGVsc2UKKyAgICAgICAg
c3RyICs9ICJzb3J0ZWQgZGVzY2VuZGluZy4iOworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVn
KHN0cik7CisKKyAgICAvLyBXb3JrIGFyb3VuZCBmb3IgZHVwbGljYXRlIHZhbHVlcy4KKyAgICBp
ZiAodXBwZXIgIT09IG51bGwpIHsKKyAgICAgICAgaWYgKHVwcGVySXNPcGVuKSB7CisgICAgICAg
ICAgICB3aGlsZSAodXBwZXIgPiAwICYmIHRlc3REYXRhW3VwcGVyXSA9PT0gdGVzdERhdGFbdXBw
ZXIgLSAxXSkKKyAgICAgICAgICAgICAgICAtLXNlbGYudXBwZXI7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICB3aGlsZSAodXBwZXIgPCB0ZXN0RGF0YS5sZW5ndGggLSAxICYmIHRlc3RE
YXRhW3VwcGVyXSA9PT0gdGVzdERhdGFbdXBwZXIgKyAxXSkKKyAgICAgICAgICAgICAgICArK3Nl
bGYudXBwZXI7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGxvd2VyICE9PSBudWxsKSB7Cisg
ICAgICAgIGlmIChsb3dlcklzT3BlbikgeworICAgICAgICAgICAgd2hpbGUgKGxvd2VyIDwgdGVz
dERhdGEubGVuZ3RoIC0gMSAmJiB0ZXN0RGF0YVtsb3dlcl0gPT09IHRlc3REYXRhW2xvd2VyICsg
MV0pCisgICAgICAgICAgICAgICAgKytzZWxmLmxvd2VyOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgd2hpbGUgKGxvd2VyID4gMCAmJiB0ZXN0RGF0YVtsb3dlcl0gPT09IHRlc3REYXRh
W2xvd2VyIC0gMV0pCisgICAgICAgICAgICAgICAgLS1zZWxmLmxvd2VyOworICAgICAgICB9Cisg
ICAgfQorCisgICAgaWYgKGFzY2VuZGluZykgeworICAgICAgICBpZiAobG93ZXIgIT09IG51bGwp
IHsKKyAgICAgICAgICAgIGlmICghbG93ZXJJc09wZW4pCisgICAgICAgICAgICAgICAgc2VsZi5l
eHBlY3RlZEluZGV4ID0gbG93ZXI7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
c2VsZi5leHBlY3RlZEluZGV4ID0gbG93ZXIgKyAxOworICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IDA7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHVw
cGVyICE9PSBudWxsKSB7CisgICAgICAgICAgICBpZiAoIXVwcGVySXNPcGVuKQorICAgICAgICAg
ICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IHVwcGVyOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IHVwcGVyIC0gMTsKKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSB0ZXN0RGF0YS5sZW5ndGggLSAx
OworICAgIH0KKyAgICB0ZXN0V2l0aGluQm91bmRzKCk7CisKKyAgICBpZiAodGVzdERhdGFbbG93
ZXJdID09PSB0ZXN0RGF0YVt1cHBlcl0gJiYgKGxvd2VySXNPcGVuIHx8IHVwcGVySXNPcGVuKSkg
eworICAgICAgICBkZWJ1ZygiU2tpcHBpbmcgaWxsZWdhbCBrZXkgcmFuZ2UuIik7CisgICAgICAg
IHJ1bk5leHRUZXN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2YXIga2V5UmFu
Z2U7CisgICAgaWYgKGxvd2VyICE9PSBudWxsICYmIHVwcGVyICE9PSBudWxsKQorICAgICAgICBr
ZXlSYW5nZSA9IElEQktleVJhbmdlLmJvdW5kKHRlc3REYXRhW2xvd2VyXSwgdGVzdERhdGFbdXBw
ZXJdLCBsb3dlcklzT3BlbiwgdXBwZXJJc09wZW4pOworICAgIGVsc2UgaWYgKGxvd2VyICE9PSBu
dWxsKQorICAgICAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQodGVzdERhdGFb
bG93ZXJdLCBsb3dlcklzT3Blbik7CisgICAgZWxzZQorICAgICAgICBrZXlSYW5nZSA9IElEQktl
eVJhbmdlLnVwcGVyQm91bmQodGVzdERhdGFbdXBwZXJdLCB1cHBlcklzT3Blbik7CisKKyAgICB2
YXIgcmVxdWVzdCA9IGluZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3Ioa2V5UmFuZ2UsIGFzY2VuZGlu
ZyA/IElEQkN1cnNvci5ORVhUIDogSURCQ3Vyc29yLlBSRVYpOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gY3Vyc29ySXRlcmF0aW9uOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiB0ZXN0V2l0aGluQm91bmRzKCkKK3sKKyAgICBp
ZiAoZXhwZWN0ZWRJbmRleCA8IDAgfHwgdGVzdERhdGEubGVuZ3RoIDw9IGV4cGVjdGVkSW5kZXgp
CisgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IG51bGw7CisgICAgaWYgKGxvd2VyICE9PSBu
dWxsICYmIGV4cGVjdGVkSW5kZXggPCBsb3dlcikKKyAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4
ID0gbnVsbDsKKyAgICBpZiAodXBwZXIgIT09IG51bGwgJiYgdXBwZXIgPCBleHBlY3RlZEluZGV4
KQorICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSBudWxsOworICAgIGlmIChsb3dlciAhPT0g
bnVsbCAmJiBsb3dlcklzT3BlbiAmJiBleHBlY3RlZEluZGV4IDw9IGxvd2VyKQorICAgICAgICBz
ZWxmLmV4cGVjdGVkSW5kZXggPSBudWxsOworICAgIGlmICh1cHBlciAhPT0gbnVsbCAmJiB1cHBl
cklzT3BlbiAmJiB1cHBlciA8PSBleHBlY3RlZEluZGV4KQorICAgICAgICBzZWxmLmV4cGVjdGVk
SW5kZXggPSBudWxsOworfQorCitmdW5jdGlvbiBjdXJzb3JJdGVyYXRpb24oKQoreworICAgIGlm
IChleHBlY3RlZEluZGV4ID09PSBudWxsKSB7CisgICAgICAgIHNob3VsZEJlTnVsbCgiZXZlbnQu
dGFyZ2V0LnJlc3VsdCIpOworICAgICAgICBydW5OZXh0VGVzdCgpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsKSB7CisgICAgICAg
IHRlc3RGYWlsZWQoImV2ZW50LnRhcmdldC5yZXN1bHQgc2hvdWxkIG5vdCBiZSBudWxsLiIpOwor
ICAgICAgICBydW5OZXh0VGVzdCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2hv
dWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICJleHBlY3RlZEluZGV4Iik7
CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgInRlc3REYXRhWyIgKyBl
eHBlY3RlZEluZGV4ICsgIl0iKTsKKyAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSBhc2NlbmRpbmcg
PyBleHBlY3RlZEluZGV4ICsgMSA6IGV4cGVjdGVkSW5kZXggLSAxOworICAgIHRlc3RXaXRoaW5C
b3VuZHMoKTsKKworICAgIGV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKTsKK30KKworc2Vs
Zi5udWxsS2V5UmFuZ2VTdGVwID0gMDsKK2Z1bmN0aW9uIHRlc3ROdWxsS2V5UmFuZ2UoKQorewor
ICAgIHNlbGYubG93ZXIgPSAwOworICAgIHNlbGYubG93ZXJJc09wZW4gPSBmYWxzZTsKKyAgICBz
ZWxmLnVwcGVyID0gdGVzdERhdGEubGVuZ3RoLTE7CisgICAgc2VsZi51cHBlcklzT3BlbiA9IGZh
bHNlOworCisgICAgc3RyID0gIk5leHQgdGVzdDogbnVsbCBrZXkgcGF0aCAiOworICAgIGlmIChz
ZWxmLm51bGxLZXlSYW5nZVN0ZXAgPT0gMCkgeworICAgICAgICBzdHIgKz0gInNvcnRlZCBhc2Nl
bmRpbmcuIjsKKyAgICAgICAgc2VsZi5hc2NlbmRpbmcgPSB0cnVlOworICAgICAgICBzZWxmLmV4
cGVjdGVkSW5kZXggPSBsb3dlcjsKKyAgICAgICAgc2VsZi5udWxsS2V5UmFuZ2VTdGVwID0gMTsK
KyAgICB9IGVsc2UgaWYgKHNlbGYubnVsbEtleVJhbmdlU3RlcCA9PSAxKSB7CisgICAgICAgIHN0
ciArPSAic29ydGVkIGRlc2NlbmRpbmcuIjsKKyAgICAgICAgc2VsZi5hc2NlbmRpbmcgPSBmYWxz
ZTsKKyAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gdXBwZXI7CisgICAgICAgIHNlbGYubnVs
bEtleVJhbmdlU3RlcCA9IDI7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoc3Ry
KTsKKworICAgIHZhciByZXF1ZXN0ID0gaW5kZXhPYmplY3Qub3BlbktleUN1cnNvcihudWxsLCBh
c2NlbmRpbmcgPyBJREJDdXJzb3IuTkVYVCA6IElEQkN1cnNvci5QUkVWKTsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGN1cnNvckl0ZXJhdGlvbjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKK29wZW5E
YXRhYmFzZSgpOyAvLyBUaGUgZmlyc3Qgc3RlcC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbmRleC1nZXQta2V5LWFyZ3VtZW50LXJlcXVpcmVk
LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4LWdldC1r
ZXktYXJndW1lbnQtcmVxdWlyZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTNkMzg3MGVlZTlmNGViYTkwMTU2
OGVmMDk3YjMwZGZkZWM5Yjk3YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbmRleC1nZXQta2V5LWFyZ3VtZW50LXJlcXVpcmVkLmpz
CkBAIC0wLDAgKzEsMzkgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRT
Y3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAg
IGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRl
eGVkREIgaW5kZXggLmdldCgpIHJlcXVpcmVkIGFyZ3VtZW50Iik7CisKK2Z1bmN0aW9uIHRlc3Qo
KQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2Nh
dGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24p
Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nl
c3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEn
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9y
ZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKwor
ZnVuY3Rpb24gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSgpCit7CisgICAgZGVsZXRlQWxs
T2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0
U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJywgeyBrZXlQYXRoOiAnaWQnLCBhdXRv
SW5jcmVtZW50OiB0cnVlIH0pOyIpOworICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBv
YmplY3RTdG9yZS5jcmVhdGVJbmRleCgnZmlyc3QnLCAnZmlyc3QnKTsiKTsKKyAgICBzaG91bGRU
aHJvdygiaW5kZXguZ2V0KCk7Iik7CisgICAgc2hvdWxkVGhyb3coImluZGV4LmdldEtleSgpOyIp
OworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL2luZGV4LW11bHRpZW50cnkuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvaW5kZXgtbXVsdGllbnRyeS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wM2NkZDhhOTE1OWVmMTll
MTlhNzY3MjBhY2Y5NmU2MDdiMTc5M2QxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4LW11bHRpZW50cnkuanMKQEAgLTAsMCAr
MSwxNDAgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcu
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNj
cmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBmZWF0dXJlcyBvZiBJ
bmRleGVkREIncyBtdWx0aUVudHJ5IGluZGljZXMuIik7CisKK2Z1bmN0aW9uIHRlc3QoKQorewor
ICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
aW5kZXhlZERCLm9wZW4oJ2luZGV4LW11bHRpRW50cnknKSIpOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVu
Y3Rpb24oKSB7CisgICAgICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVz
dWx0Iik7CisKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJzEn
KSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwcmVwYXJlRGF0YWJhc2U7CisgICAgfTsKK30K
KworZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVi
dWcoIkNyZWF0aW5nIGVtcHR5IHN0b3JlcyBhbmQgaW5kZXhlcyIpOworICAgIHZhciB0cmFucyA9
IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJl
VHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFi
b3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IGFkZERhdGE7CisKKyAgICBkZWxl
dGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUu
Y3JlYXRlSW5kZXgoJ2luZGV4JywgJ3gnLCB7bXVsdGlFbnRyeTogdHJ1ZX0pIik7CisKKyAgICBz
dG9yZTIgPSBldmFsQW5kTG9nKCJzdG9yZTIgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUt
dW5pcXVlJykiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZTIuY3JlYXRlSW5kZXgoJ2luZGV4LXVu
aXF1ZScsICd4Jywge211bHRpRW50cnk6IHRydWUsIHVuaXF1ZTogdHJ1ZX0pIik7Cit9CisKK2Z1
bmN0aW9uIGFkZERhdGEoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiUG9wdWxhdGlu
ZyBzdG9yZXMgKGFuZCBpbmRleGVzKSIpOworICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygi
dHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJF
QURfV1JJVEUpIik7CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENh
bGxiYWNrOworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbigpIHsgdmVyaWZ5
SW5kZXhlcygnaW5kZXgnLCB2ZXJpZnlVbmlxdWVDb25zdHJhaW50KTsgfTsKKworICAgIGRlYnVn
KCJGaXJzdCB0cnkgc29tZSBrZXlzIHRoYXQgYXJlbid0IHdoYXQgd2UncmUgZXhwZWN0aW5nIik7
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9y
ZScpLnB1dCh7eDogWzcsIDgsIDldLCB5OiAnYSd9LCAnZm9vJykiKTsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBkZWJ1ZygiTm93IG92ZXJ3cml0
ZSB0aGVtIHdpdGggd2hhdCB3ZSdyZSBleHBlY3RpbmciKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KHt4OiBbMSwgMiwgM10s
IHk6ICdhJ30sICdmb28nKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RT
dG9yZSgnc3RvcmUnKS5wdXQoe3g6IFs0LCA1LCA2XSwgeTogJ2InfSwgJ2JhcicpIik7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IHZlcmlmeUluZGV4ZXMoaW5kZXhOYW1lLCBjYWxsYmFjaykKK3sKKyAgICBkZWJ1ZygiIik7Cisg
ICAgZGVidWcoIlZlcmlmeWluZyBpbmRleDogIiArIGluZGV4TmFtZSk7CisgICAgdHJhbnNhY3Rp
b24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUnXSwg
SURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKSIpOworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1
bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gY2Fs
bGJhY2s7CisKKyAgICBleHBlY3RlZCA9IFsKKyAgICAgICAgeyBrZXk6IDEsIHByaW1hcnlLZXk6
ICdmb28nLCB5OiAnYScgfSwKKyAgICAgICAgeyBrZXk6IDIsIHByaW1hcnlLZXk6ICdmb28nLCB5
OiAnYScgfSwKKyAgICAgICAgeyBrZXk6IDMsIHByaW1hcnlLZXk6ICdmb28nLCB5OiAnYScgfSwK
KyAgICAgICAgeyBrZXk6IDQsIHByaW1hcnlLZXk6ICdiYXInLCB5OiAnYicgfSwKKyAgICAgICAg
eyBrZXk6IDUsIHByaW1hcnlLZXk6ICdiYXInLCB5OiAnYicgfSwKKyAgICAgICAgeyBrZXk6IDYs
IHByaW1hcnlLZXk6ICdiYXInLCB5OiAnYicgfSwKKyAgICBdOworCisgICAgdmFyIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKS5pbmRleCgnIiAr
IGluZGV4TmFtZSArICInKS5vcGVuQ3Vyc29yKCkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KGV2ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKKyAgICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICAgICAgZXggPSBl
eHBlY3RlZC5zaGlmdCgpOworICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJleCAhPSBudWxsIik7
CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsIFN0cmluZyhleC5rZXkpKTsKKyAg
ICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY3Vyc29yLnByaW1hcnlLZXkiLCBleC5w
cmltYXJ5S2V5KTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY3Vyc29yLnZh
bHVlLnkiLCBleC55KTsKKyAgICAgICAgICAgIGN1cnNvci5jb250aW51ZSgpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJleHBlY3RlZC5sZW5ndGggPT09IDAi
KTsKKyAgICAgICAgfQorICAgIH07Cit9CisKK2Z1bmN0aW9uIHZlcmlmeVVuaXF1ZUNvbnN0cmFp
bnQoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVmVyaWZ5aW5nIHVuaXF1ZSBjb25z
dHJhaW50IG9uIG11bHRpRW50cnkgaW5kZXgiKTsKKyAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRM
b2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZS11bmlxdWUnXSwgSURCVHJh
bnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rp
b24gKCkgeworICAgICAgICBkZWJ1ZygiVHJhbnNhY3Rpb24gYWJvcnRlZCBhcyBleHBlY3RlZCIp
OworICAgICAgICBjcmVhdGVJbmRleE9uU3RvcmVXaXRoRGF0YSgpOworICAgIH07CisgICAgdHJh
bnNhY3Rpb24ub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOworCisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZS11bmlx
dWUnKS5wdXQoe3g6IFsxLCAyLCAzXSwgeTogJ2EnfSwgJ2ZvbycpIik7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgZGVidWcoInN1Y2Nlc3MhIik7CisgICAgICAgIGRlYnVn
KCJSZXBsYWNlIGFuIGV4aXN0aW5nIHJlY29yZCAtIHRoaXMgc2hvdWxkIHdvcmsiKTsKKyAgICAg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZS11
bmlxdWUnKS5wdXQoe3g6IFsxLCAyLCA3XSwgeTogJ2EnfSwgJ2ZvbycpIik7CisgICAgICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZGVidWcoInN1Y2Nlc3MhIik7
CisgICAgICAgICAgICBkZWJ1ZygiVGhpcyBzaG91bGQgZmFpbCB0aGUgdW5pcXVlbmVzcyBjb25z
dHJhaW50IG9uIHRoZSBpbmRleCwgYW5kIGZhaWw6Iik7CisgICAgICAgICAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlLXVuaXF1ZScpLnB1dCh7
eDogWzUsIDJdLCB5OiAnYyd9LCAnc2hvdWxkIGZhaWwnKSIpOworICAgICAgICAgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOworICAgICAgICAgICAgcmVx
dWVzdC5vbmVycm9yID0gZnVuY3Rpb24oKSB7IGRlYnVnKCJSZXF1ZXN0IGZhaWxlZCwgYXMgZXhw
ZWN0ZWQiKTsgfTsKKyAgICAgICAgfTsKKyAgICB9OworfQorCitmdW5jdGlvbiBjcmVhdGVJbmRl
eE9uU3RvcmVXaXRoRGF0YSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJDcmVhdGUg
YW4gaW5kZXggb24gYSBwb3B1bGF0ZWQgc3RvcmUiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJkYi5zZXRWZXJzaW9uKCcyJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewor
CisgICAgICAgIHZhciB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOworICAgICAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgICAg
IHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICAgICAgdHJhbnMu
b25jb21wbGV0ZSA9IGZ1bmN0aW9uKCkgeyB2ZXJpZnlJbmRleGVzKCdpbmRleC1uZXcnLCBmaW5p
c2hKU1Rlc3QpOyB9OworCisgICAgICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFu
cy5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5jcmVh
dGVJbmRleCgnaW5kZXgtbmV3JywgJ3gnLCB7bXVsdGlFbnRyeTogdHJ1ZX0pIik7CisgICAgfTsK
K30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbmRleC1wb3B1bGF0aW9uLmpz
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4LXBvcHVsYXRp
b24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYTk5NzI4NjY2ZmQ2ZDQyZGYwOWRiODE2Mzc0ZGU3OTNlMGExYTVj
ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9pbmRleC1wb3B1bGF0aW9uLmpzCkBAIC0wLDAgKzEsOTEgQEAKK2lmICh0aGlzLmltcG9y
dFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQor
CitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgaW5kZXggcG9wdWxhdGlvbi4iKTsKKworZnVu
Y3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoJ2luZGV4LXBvcHVsYXRp
b24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlU3VjY2VzczsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVs
ZXRlU3VjY2VzcygpCit7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVu
KCdpbmRleC1wb3B1bGF0aW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRvU2V0VmVy
c2lvbjE7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIGRvU2V0VmVyc2lvbjEoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1
ZygiZG9TZXRWZXJzaW9uMSgpOiIpOworICAgIHNlbGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBz
ZXRWZXJzaW9uMTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbjEoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBk
ZWJ1Zygic2V0VmVyc2lvbjEoKToiKTsKKyAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRy
YW5zYWN0aW9uID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhw
ZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5j
cmVhdGVPYmplY3RTdG9yZSgnc3RvcmUxJykiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQo
e2RhdGE6ICdhJywgaW5kZXhLZXk6IDEwfSwgMSkiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZS5w
dXQoe2RhdGE6ICdiJywgaW5kZXhLZXk6IDIwfSwgMikiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9y
ZS5wdXQoe2RhdGE6ICdjJywgaW5kZXhLZXk6IDEwfSwgMykiKTsKKyAgICBldmFsQW5kTG9nKCJz
dG9yZS5wdXQoe2RhdGE6ICdkJywgaW5kZXhLZXk6IDIwfSwgNCkiKTsKKyAgICBldmFsQW5kTG9n
KCJpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleDEnLCAnaW5kZXhLZXknKSIpOworICAg
IHNob3VsZEJlVHJ1ZSgiaW5kZXggaW5zdGFuY2VvZiBJREJJbmRleCIpOworICAgIHNob3VsZEJl
RmFsc2UoImluZGV4LnVuaXF1ZSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gaW5kZXguY291bnQoSURCS2V5UmFuZ2UuYm91bmQoLUluZmluaXR5LCBJbmZpbml0eSkpIik7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgIHNob3VsZEJlKCJyZXF1ZXN0
LnJlc3VsdCIsICI0Iik7CisgICAgfTsKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZG9T
ZXRWZXJzaW9uMjsKK30KKworZnVuY3Rpb24gZG9TZXRWZXJzaW9uMigpIHsKKyAgICBkZWJ1Zygi
Iik7CisgICAgZGVidWcoImRvU2V0VmVyc2lvbjIoKToiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMicpIik7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uMjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbjIoKQoreworICAgIGRl
YnVnKCIiKTsKKyAgICBkZWJ1Zygic2V0VmVyc2lvbjIoKToiKTsKKyAgICB0cmFuc2FjdGlvbjIg
PSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAgdHJhbnNh
Y3Rpb24yLm9uYWJvcnQgPSBzZXRWZXJzaW9uMkFib3J0OworICAgIHRyYW5zYWN0aW9uMi5vbmNv
bXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7CisgICAgc3RvcmUgPSBldmFsQW5k
TG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTInKSIpOworICAgIGV2YWxB
bmRMb2coInN0b3JlLnB1dCh7ZGF0YTogJ2EnLCBpbmRleEtleTogMTB9LCAxKSIpOworICAgIGV2
YWxBbmRMb2coInN0b3JlLnB1dCh7ZGF0YTogJ2InLCBpbmRleEtleTogMjB9LCAyKSIpOworICAg
IGV2YWxBbmRMb2coInN0b3JlLnB1dCh7ZGF0YTogJ2MnLCBpbmRleEtleTogMTB9LCAzKSIpOwor
ICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCh7ZGF0YTogJ2QnLCBpbmRleEtleTogMjB9LCA0KSIp
OworICAgIGV2YWxBbmRMb2coImluZGV4MiA9IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleDInLCAn
aW5kZXhLZXknLCB7IHVuaXF1ZTogdHJ1ZSB9KSIpOworICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXgy
IGluc3RhbmNlb2YgSURCSW5kZXgiKTsKKyAgICBzaG91bGRCZVRydWUoImluZGV4Mi51bmlxdWUi
KTsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbjJBYm9ydCgpCit7CisgICAgZGVidWcoIiIpOwor
ICAgIGRlYnVnKCJzZXRWZXJzaW9uMkFib3J0KCk6Iik7CisgICAgc2hvdWxkQmUoImRiLm9iamVj
dFN0b3JlTmFtZXMubGVuZ3RoIiwgIjEiKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVO
YW1lc1swXSIsICInc3RvcmUxJyIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4LXVuaXF1ZS5qcyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbmRleC11bmlxdWUuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWRi
ODViNjllNDgwODU0MWMwYjRhOWMyNjZmNzY3MGViNjhmYWU0YgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbmRleC11bmlxdWUuanMK
QEAgLTAsMCArMSwxMzYgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRT
Y3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAg
IGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBmZWF0
dXJlcyBvZiBJbmRleGVkREIncyB1bmlxdWUgaW5kaWNlcy4iKTsKKworZnVuY3Rpb24gdGVzdCgp
Cit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiaW5kZXhlZERCLm9wZW4oJ2luZGV4LXVuaXF1ZScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBzZXRWZXJzaW9uOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRM
b2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGRlbGV0ZUV4aXN0aW5nOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxldGVFeGlzdGluZygpCit7CisgICAgZGVidWco
ImRlbGV0ZUV4aXN0aW5nKCk6Iik7CisgICAgdmFyIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVs
bCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0
cmFucy5vbmNvbXBsZXRlID0gc2V0VmVyc2lvbkNvbXBsZXRlZDsKKworICAgIGRlbGV0ZUFsbE9i
amVjdFN0b3JlcyhkYik7CisKKyAgICBzZWxmLnN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICBzZWxmLmluZGV4T2JqZWN0ID0gZXZhbEFuZExv
Zygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4JywgJ3gnLCB7dW5pcXVlOiB0cnVlfSkiKTsKKwor
ICAgIC8vIExldCBzZXRWZXJzaW9uIHRyYW5zYWN0aW9uIGNvbXBsZXRlLgorfQorCitmdW5jdGlv
biBzZXRWZXJzaW9uQ29tcGxldGVkKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvbkNvbXBsZXRl
ZCgpOiIpOworICAgIHNlbGYudHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9
IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsK
KworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3Rv
cmUnKS5wdXQoe3g6IDF9LCAnZm9vJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZE1vcmVEYXRhOwor
fQorCitmdW5jdGlvbiBhZGRNb3JlRGF0YSgpCit7CisgICAgZGVidWcoImFkZE1vcmVEYXRhKCk6
Iik7CisKKyAgICAvLyBUaGUgeCB2YWx1ZSB2aW9sYXRlcyB0aGUgdW5pcXVlbmVzcyBjb25zdHJh
aW50IG9mIHRoZSBpbmRleC4KKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24u
b2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KHt4OiAxfSwgJ2JhcicpIik7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gYWRkTW9yZURhdGFGYWlsZWQ7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4
cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOworfQorCitmdW5jdGlvbiBhZGRNb3JlRGF0YUZhaWxlZCgp
Cit7CisgICAgZGVidWcoImFkZE1vcmVEYXRhRmFpbGVkKCk6Iik7CisKKyAgICAvLyBEb24ndCBh
Ym9ydCB0aGUgdHJhbnNhY3Rpb24uCisgICAgZXZhbEFuZExvZygiZXZlbnQucHJldmVudERlZmF1
bHQoKSIpOworCisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5lcnJvckNvZGUiLCAiSURCRGF0
YWJhc2VFeGNlcHRpb24uQ09OU1RSQUlOVF9FUlIiKTsKKworICAgIC8vIFVwZGF0ZSB0aGUgJ2Zv
bycgZW50cnkgaW4gb2JqZWN0IHN0b3JlLCBjaGFuZ2luZyB0aGUgdmFsdWUgb2YgeC4KKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0
KHt4OiAwfSwgJ2ZvbycpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjaGFuZ2VEYXRhU3VjY2VzczsKK30K
KworZnVuY3Rpb24gY2hhbmdlRGF0YVN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJjaGFuZ2VEYXRh
U3VjY2VzcygpOiIpOworCisgICAgLy8gQW4gaW5kZXggY3Vyc29yIHN0YXJ0aW5nIGF0IDEgc2hv
dWxkIG5vdCBmaW5kIGFueXRoaW5nLgorICAgIHZhciByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJh
bnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykuaW5kZXgoJ2luZGV4Jykub3BlbkN1cnNvcihJ
REJLZXlSYW5nZS5sb3dlckJvdW5kKDEpKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Vy
c29yU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gY3Vyc29yU3VjY2VzcygpCit7CisgICAgZGVidWcoImN1cnNvclN1
Y2Nlc3MoKToiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJudWxsIik7
CisKKyAgICAvLyBBIGtleSBjdXJzb3Igc3RhcnRpbmcgYXQgMSBzaG91bGQgbm90IGZpbmQgYW55
dGhpbmcuCisgICAgdmFyIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RT
dG9yZSgnc3RvcmUnKS5pbmRleCgnaW5kZXgnKS5vcGVuS2V5Q3Vyc29yKElEQktleVJhbmdlLmxv
d2VyQm91bmQoMSkpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBrZXlDdXJzb3JTdWNjZXNz
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiBrZXlDdXJzb3JTdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygia2V5Q3Vyc29yU3VjY2Vz
cygpOiIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIm51bGwiKTsKKwor
ICAgIC8vIE5vdyB3ZSBzaG91bGQgYmUgYWJsZSB0byBhZGQgYSB2YWx1ZSB3aXRoIHg6IDEuCisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScp
LnB1dCh7eDogMX0sICdiYXInKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkTW9yZURhdGFTdWNjZXM7
Cit9CisKK2Z1bmN0aW9uIGFkZE1vcmVEYXRhU3VjY2VzKCkKK3sKKyAgICBkZWJ1ZygiYWRkTW9y
ZURhdGFTdWNjZXMoKToiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlv
bi5vYmplY3RTdG9yZSgnc3RvcmUnKS5kZWxldGUoJ2JhcicpIik7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBk
ZWxldGVTdWNjZXNzOworfQorCitmdW5jdGlvbiBkZWxldGVTdWNjZXNzKCkKK3sKKyAgICBkZWJ1
ZygiZGVsZXRlU3VjY2VzcygpOiIpOworCisgICAgLy8gTm93IHdlIHNob3VsZCBiZSBhYmxlIHRv
IGFkZCBhIHZhbHVlIHdpdGggeDogMSBhZ2Fpbi4KKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
dHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KHt4OiAxfSwgJ2JheicpIik7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBmaW5hbEFkZFN1Y2Nlc3M7Cit9CisKK2Z1bmN0aW9uIGZpbmFsQWRkU3Vj
Y2VzcygpIHsKKyAgICBkZWJ1ZygiZmluYWxBZGRTdWNjZXNzKCk6Iik7CisKKyAgICAvLyBBbiBv
dmVyd3JpdGUgc2hvdWxkIGJlIG9rLgorICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2Fj
dGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKS5wdXQoe3g6IDF9LCAnYmF6JykiKTsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGZpbmlzaEpTVGVzdDsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9pbnZhbGlkLWtleXMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvaW52YWxpZC1rZXlzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2YzE3NTc2NzQwYjNkNTdmOTk2MzBlZTJh
NzAzODYwNTY1NGE2ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvaW52YWxpZC1rZXlzLmpzCkBAIC0wLDAgKzEsNjQgQEAKK2lmICh0
aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5q
cycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgaW52YWxpZCBrZXlzIik7CisK
K2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBu
YW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0
IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFt
ZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50
YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRi
LnNldFZlcnNpb24oJzEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdGVzdEdyb3VwMTsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gdGVzdEdyb3VwMSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKwor
ICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2Zvbycp
OyIpOworICAgIHRlc3RJbnZhbGlkS2V5cygpOworfQorCitmdW5jdGlvbiB0ZXN0SW52YWxpZEtl
eXMoKQoreworICAgIHZhciBpbnZhbGlkS2V5cyA9IFsKKyAgICAgICAgInZvaWQgMCIsIC8vIFVu
ZGVmaW5lZAorICAgICAgICAibnVsbCIsIC8vIE51bGwKKyAgICAgICAgIihmdW5jdGlvbigpIHsg
cmV0dXJuIGFyZ3VtZW50czsgfSgpKSIsIC8vIEFyZ3VtZW50cworICAgICAgICAidHJ1ZSIsIC8v
IEJvb2xlYW4KKyAgICAgICAgImZhbHNlIiwgLy8gQm9vbGVhbgorICAgICAgICAibmV3IEVycm9y
IiwgLy8gRXJyb3IKKyAgICAgICAgImZ1bmN0aW9uICgpIHt9IiwgLy8gRnVuY3Rpb24KKyAgICAg
ICAgIkpTT04iLCAvLyBKU09OCisgICAgICAgICJNYXRoIiwgLy8gTWF0aAorICAgICAgICAiTmFO
IiwgLy8gTnVtYmVyIChzcGVjaWFsIGNhc2UpCisgICAgICAgICJuZXcgRGF0ZShOYU4pIiwgLy8g
RGF0ZSAoc3BlY2lhbCBjYXNlKQorICAgICAgICAie30iLCAvLyBPYmplY3QKKyAgICAgICAgIi9y
ZWdleC8iLCAvLyBSZWdFeHAKKyAgICAgICAgInNlbGYiLCAvLyBnbG9iYWwKKyAgICAgICAgInNl
bGYuZG9jdW1lbnQiLCAvLyBIVE1MRG9jdW1lbnQKKyAgICAgICAgInNlbGYuZG9jdW1lbnQuYm9k
eSIgLy8gSFRNTEJvZHlFbGVtZW50CisgICAgXTsKKworICAgIGludmFsaWRLZXlzLmZvckVhY2go
ZnVuY3Rpb24oa2V5KSB7CisgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5wdXQoJ3ZhbHVlJywgIiArIGtleSArICIpIiwgIklEQkRhdGFiYXNlRXhj
ZXB0aW9uLkRBVEFfRVJSIik7CisgICAgfSk7CisgICAgCisgICAgZmluaXNoSlNUZXN0KCk7Cit9
CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5LWdlbmVyYXRvci5qcyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXktZ2VuZXJhdG9yLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjIxYjE3NTE4Y2UxMWIwNjFlMWM1ZmY4ZjkwYzBiY2NiZjExNmJiOWQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5
LWdlbmVyYXRvci5qcwpAQCAtMCwwICsxLDIwNiBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykg
eworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0
aW9uKCJUZXN0IEluZGV4ZWREQidzIGtleSBnZW5lcmF0b3IgYmVoYXZpb3IuIik7CisKK2Z1bmN0
aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBydW5UZXN0
cygpOworfQorCit2YXIgdGVzdHMgPSBbXTsKK2Z1bmN0aW9uIGRlZmluZVRlc3QoZGVzY3JpcHRp
b24sIHZlcmNoYW5nZSwgb3B0aW9uYWwpIHsKKyAgdGVzdHMucHVzaCgKKyAgICB7CisgICAgICBk
ZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sCisgICAgICB2ZXJjaGFuZ2U6IHZlcmNoYW5nZSwKKyAg
ICAgIG9wdGlvbmFsOiBvcHRpb25hbAorICAgIH0KKyAgKTsKK30KKworZnVuY3Rpb24gcnVuVGVz
dHMoKSB7CisKKyAgICBmdW5jdGlvbiBuZXh0VGVzdCgpIHsKKyAgICAgICAgaWYgKCF0ZXN0cy5s
ZW5ndGgpIHsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgdmFyIHRlc3QgPSB0ZXN0cy5zaGlmdCgpOworICAgICAg
ICBkZWJ1ZygiIik7CisgICAgICAgIGRlYnVnKHRlc3QuZGVzY3JpcHRpb24pOworCisgICAgICAg
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoJ2tleS1nZW5l
cmF0b3InKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oJ2tleS1nZW5lcmF0b3In
KSIpOworICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgICAgICBldmFsQW5kTG9nKCJkYiA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAgICAgICAg
ICAgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAgICAg
ICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAg
ICAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgICAgICBldmFsQW5kTG9nKCJ0cmFucyA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAgICAg
ICAgICAgICAgICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdC52ZXJjaGFuZ2UoZGIsIHRyYW5zKTsKKyAgICAgICAgICAg
ICAgICAgICAgdHJhbnMub25jb21wbGV0ZSA9IGZ1bmN0aW9uICgpIHsKKworICAgICAgICAgICAg
ICAgICAgICAgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBldmFsQW5kTG9nKCJkYi5jbG9zZSgpIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbmV4dFRlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHRlc3Qub3B0aW9uYWwpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0Lm9wdGlvbmFsKGRiLCBmaW5pc2hUZXN0KTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoVGVzdCgp
OworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9OworICAg
ICAgICAgICAgICAgIH07CisgICAgICAgICAgICB9OworICAgICAgICB9OworICAgIH0KKworICAg
IG5leHRUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIGNoZWNrKHN0b3JlLCBrZXksIGV4cGVjdGVkKSB7
CisgICAgc2VsZi5zdG9yZSA9IHN0b3JlOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gc3RvcmUuZ2V0KCIgKyBKU09OLnN0cmluZ2lmeShrZXkpICsgIikiKTsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgIHNlbGYuZXhwZWN0ZWQgPSBleHBlY3RlZDsK
KyAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KGV2ZW50LnRhcmdldC5yZXN1bHQpID09PSBKU09O
LnN0cmluZ2lmeShleHBlY3RlZCkpIHsKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkdvdCAiICsg
SlNPTi5zdHJpbmdpZnkoZXZlbnQudGFyZ2V0LnJlc3VsdCkgKyAiIGZvciBrZXk6ICIgKyBKU09O
LnN0cmluZ2lmeShrZXkpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRlc3RGYWls
ZWQoIkdvdCAiICsgSlNPTi5zdHJpbmdpZnkoZXZlbnQudGFyZ2V0LnJlc3VsdCkgKyAiIGZvciBr
ZXk6ICIgKyBKU09OLnN0cmluZ2lmeShrZXkpICsKKyAgICAgICAgICAgICAgICAiIGV4cGVjdGVk
OiAiICsgSlNPTi5zdHJpbmdpZnkoZXhwZWN0ZWQpKTsKKyAgICAgICAgfQorICAgIH07Cit9CisK
K2RlZmluZVRlc3QoCisgICAgJ1ZlcmlmeSB0aGF0IGVhY2ggb2JqZWN0IHN0b3JlIGhhcyBhbiBp
bmRlcGVuZGVudCBrZXkgZ2VuZXJhdG9yLicsCisgICAgZnVuY3Rpb24gKGRiLCB0cmFucykgewor
ICAgICAgICBldmFsQW5kTG9nKCJzdG9yZTEgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUx
JywgeyBhdXRvSW5jcmVtZW50OiB0cnVlIH0pIik7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3Jl
MS5wdXQoJ2EnKSIpOworICAgICAgICBjaGVjayhzdG9yZTEsIDEsICdhJyk7CisgICAgICAgIGV2
YWxBbmRMb2coInN0b3JlMiA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTInLCB7IGF1dG9J
bmNyZW1lbnQ6IHRydWUgfSkiKTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUyLnB1dCgnYScp
Iik7CisgICAgICAgIGNoZWNrKHN0b3JlMiwgMSwgJ2EnKTsKKyAgICAgICAgZXZhbEFuZExvZygi
c3RvcmUxLnB1dCgnYicpIik7CisgICAgICAgIGNoZWNrKHN0b3JlMSwgMiwgJ2InKTsKKyAgICAg
ICAgZXZhbEFuZExvZygic3RvcmUyLnB1dCgnYicpIik7CisgICAgICAgIGNoZWNrKHN0b3JlMiwg
MiwgJ2InKTsKKyAgICB9CispOworCitkZWZpbmVUZXN0KAorICAgICdWZXJpZnkgdGhhdCB0aGUg
a2V5IGdlbmVyYXRvciBpcyBub3QgdXBkYXRlZCBpZiBpbnNlcnRpb24gZmFpbHMnLAorICAgIGZ1
bmN0aW9uIChkYiwgdHJhbnMpIHsKKyAgICAgICAgdHJhbnMub25lcnJvciA9IGZ1bmN0aW9uKGUp
IHsgZS5wcmV2ZW50RGVmYXVsdCgpIH07CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlID0gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlMScsIHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9KSIpOwor
ICAgICAgICBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleDEnLCAn
aXgnLCB7IHVuaXF1ZTogdHJ1ZSB9KSIpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQo
eyBpeDogJ2EnfSkiKTsKKyAgICAgICAgY2hlY2soc3RvcmUsIDEsIHtpeDogJ2EnfSk7CisgICAg
ICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCh7IGl4OiAnYSd9KSIpOworICAgICAgICBldmFsQW5k
TG9nKCJzdG9yZS5wdXQoeyBpeDogJ2InfSkiKTsKKyAgICAgICAgY2hlY2soc3RvcmUsIDIsIHtp
eDogJ2InfSk7CisgICAgfQorKTsKKworZGVmaW5lVGVzdCgKKyAgICAnVmVyaWZ5IHRoYXQgdGhl
IGtleSBnZW5lcmF0b3IgaXMgbm90IGFmZmVjdGVkIGJ5IGl0ZW0gcmVtb3ZhbCAoZGVsZXRlIG9y
IGNsZWFyKS4nLAorICAgIGZ1bmN0aW9uIChkYiwgdHJhbnMpIHsKKyAgICAgICAgZXZhbEFuZExv
Zygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUxJywgeyBhdXRvSW5jcmVtZW50
OiB0cnVlIH0pIik7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgnYScpIik7CisgICAg
ICAgIGNoZWNrKHN0b3JlLCAxLCAnYScpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5kZWxl
dGUoMSkiKTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdiJykiKTsKKyAgICAgICAg
Y2hlY2soc3RvcmUsIDIsICdiJyk7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLmNsZWFyKCki
KTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdjJykiKTsKKyAgICAgICAgY2hlY2so
c3RvcmUsIDMsICdjJyk7CisgICAgICAgIC8vIEZJWE1FOiBJREJPYmplY3RTdG9yZS5kZWxldGUo
SURCS2V5UmFuZ2UpIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQgaW4gQ2hyb21pdW0uCisgICAgICAg
IC8vIGh0dHA6Ly9jcmJ1Zy5jb20vMTAxMzg0CisgICAgICAgIC8vZXZhbEFuZExvZygic3RvcmUu
ZGVsZXRlKElEQktleVJhbmdlLmxvd2VyQm91bmQoMCkpIik7CisgICAgICAgIGV2YWxBbmRMb2co
InN0b3JlLnB1dCgnZCcpIik7CisgICAgICAgIGNoZWNrKHN0b3JlLCA0LCAnZCcpOworICAgIH0K
Kyk7CisKK2RlZmluZVRlc3QoCisgICAgJ1ZlcmlmeSB0aGF0IHRoZSBrZXkgZ2VuZXJhdG9yIGlz
IG9ubHkgc2V0IGlmIGFuZCBvbmx5IGlmIGEgbnVtZXJpYyBrZXkgZ3JlYXRlciB0aGFuIHRoZSBs
YXN0IGdlbmVyYXRlZCBrZXkgaXMgdXNlZC4nLAorICAgIGZ1bmN0aW9uIChkYiwgdHJhbnMpIHsK
KyAgICAgICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUx
JywgeyBhdXRvSW5jcmVtZW50OiB0cnVlIH0pIik7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3Jl
LnB1dCgnYScpIik7CisgICAgICAgIGNoZWNrKHN0b3JlLCAxLCAnYScpOworICAgICAgICBldmFs
QW5kTG9nKCJzdG9yZS5wdXQoJ2InLCAzKSIpOworICAgICAgICBjaGVjayhzdG9yZSwgMywgJ2In
KTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdjJykiKTsKKyAgICAgICAgY2hlY2so
c3RvcmUsIDQsICdjJyk7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgnZCcsIC0xMCki
KTsKKyAgICAgICAgY2hlY2soc3RvcmUsIC0xMCwgJ2QnKTsKKyAgICAgICAgZXZhbEFuZExvZygi
c3RvcmUucHV0KCdlJykiKTsKKyAgICAgICAgY2hlY2soc3RvcmUsIDUsICdlJyk7CisgICAgICAg
IGV2YWxBbmRMb2coInN0b3JlLnB1dCgnZicsIDYuMDAwMDEpIik7CisgICAgICAgIGNoZWNrKHN0
b3JlLCA2LjAwMDAxLCAnZicpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2cnKSIp
OworICAgICAgICBjaGVjayhzdG9yZSwgNywgJ2cnKTsKKyAgICAgICAgZXZhbEFuZExvZygic3Rv
cmUucHV0KCdmJywgOC45OTk5KSIpOworICAgICAgICBjaGVjayhzdG9yZSwgOC45OTk5LCAnZicp
OworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2cnKSIpOworICAgICAgICBjaGVjayhz
dG9yZSwgOSwgJ2cnKTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdoJywgJ2Zvbycp
Iik7CisgICAgICAgIGNoZWNrKHN0b3JlLCAnZm9vJywgJ2gnKTsKKyAgICAgICAgZXZhbEFuZExv
Zygic3RvcmUucHV0KCdpJykiKTsKKyAgICAgICAgY2hlY2soc3RvcmUsIDEwLCAnaScpOworICAg
ICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2onLCBbMTAwMF0pIik7CisgICAgICAgIGNoZWNr
KHN0b3JlLCBbMTAwMF0sICdqJyk7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgnaycp
Iik7CisgICAgICAgIGNoZWNrKHN0b3JlLCAxMSwgJ2snKTsKKworICAgICAgICAvLyBGSVhNRTog
UmVwZWF0IHRoaXMgdGVzdCwgYnV0IHdpdGggYSBrZXlQYXRoIGFuZCBpbmxpbmUga2V5LgorICAg
IH0KKyk7CisKK2RlZmluZVRlc3QoCisgICAgJ1ZlcmlmeSB0aGF0IGFib3J0aW5nIGEgdHJhbnNh
Y3Rpb24gcmVzZXRzIHRoZSBrZXkgZ2VuZXJhdG9yIHN0YXRlLicsCisgICAgZnVuY3Rpb24gKGRi
LCB0cmFucykgeworICAgICAgICBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnLCB7IGF1dG9J
bmNyZW1lbnQ6IHRydWUgfSk7CisgICAgfSwKKworICAgIGZ1bmN0aW9uIChkYiwgY2FsbGJhY2sp
IHsKKyAgICAgICAgZXZhbEFuZExvZygidHJhbnMxID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZSdd
LCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9y
ZV90MSA9IHRyYW5zMS5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgICAgICBldmFsQW5kTG9n
KCJzdG9yZV90MS5wdXQoJ2EnKSIpOworICAgICAgICBjaGVjayhzdG9yZV90MSwgMSwgJ2EnKTsK
KyAgICAgICAgZXZhbEFuZExvZygic3RvcmVfdDEucHV0KCdiJykiKTsKKyAgICAgICAgY2hlY2so
c3RvcmVfdDEsIDIsICdiJyk7CisKKyAgICAgICAgLy8gU2NoZWR1bGUgdGhlIGFib3J0IGFzIGEg
dGFzayAobm90IHJ1biBpdCBzeW5jaHJvbm91c2x5KQorICAgICAgICBzdG9yZV90MS5nZXQoMCku
b25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgZGVidWcoJ2Fib3J0aW5nLi4u
Jyk7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJ0cmFuczEuYWJvcnQoKSIpOworICAgICAgICAg
ICAgdHJhbnMxLm9uYWJvcnQgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgZGVidWco
J2Fib3J0ZWQhJyk7CisKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJ0cmFuczIgPSBkYi50
cmFuc2FjdGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAg
ICAgICAgICAgICAgZXZhbEFuZExvZygic3RvcmVfdDIgPSB0cmFuczIub2JqZWN0U3RvcmUoJ3N0
b3JlJykiKTsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJzdG9yZV90Mi5wdXQoJ2MnKSIp
OworICAgICAgICAgICAgICAgIGNoZWNrKHN0b3JlX3QyLCAxLCAnYycpOworICAgICAgICAgICAg
ICAgIGV2YWxBbmRMb2coInN0b3JlX3QyLnB1dCgnZCcpIik7CisgICAgICAgICAgICAgICAgY2hl
Y2soc3RvcmVfdDIsIDIsICdkJyk7CisKKyAgICAgICAgICAgICAgICB0cmFuczIub25jb21wbGV0
ZSA9IGNhbGxiYWNrOworICAgICAgICAgICAgfTsKKyAgICAgICAgfTsKKyAgICB9CispOworCit0
ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleS1zb3J0LW9yZGVyLWFjcm9zcy10eXBl
cy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXktc29ydC1v
cmRlci1hY3Jvc3MtdHlwZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2M3ZmY4ZTQ3MGZlMWYwMmRlODEyZmY5
ZjUxZmY3YjA2NTI2ZDkxNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9rZXktc29ydC1vcmRlci1hY3Jvc3MtdHlwZXMuanMKQEAgLTAs
MCArMSw4NSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMo
Jy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0
U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBr
ZXkgY29tcGFyaXNvbiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQ
cmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVz
Y3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxB
bmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGFkZEtleTE7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIGFkZEtleTEoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0
b3JlcyhkYik7CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVj
dFN0b3JlKCdmb28nKTsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9i
amVjdFN0b3JlLmFkZChbXSwgSW5maW5pdHkpOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
YWRkS2V5MjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
K30KKworZnVuY3Rpb24gYWRkS2V5MigpCit7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoW10sIC1JbmZpbml0eSk7Iik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBhZGRLZXkzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBhZGRLZXkzKCkKK3sKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChbXSwgMS4wKTsiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGFkZEtleTQ7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGFkZEtleTQoKQoreworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKFtdLCAnJyk7Iik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRLZXk1OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBhZGRLZXk1KCkKK3sKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChbXSwgJzEuMCcpOyIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbkFDdXJzb3I7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5BQ3Vyc29y
KCkKK3sKKyAgICBrZXlJbmRleCA9IDA7CisgICAgc29ydGVkS2V5cyA9IGV2YWxBbmRMb2coInNv
cnRlZEtleSA9IFstSW5maW5pdHksIDEuMCwgSW5maW5pdHksICcnLCAnMS4wJ107Iik7CisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7
Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgY3Vyc29yID0g
ZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAgICAgaWYg
KGN1cnNvcikgeworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAic29ydGVkS2V5
c1trZXlJbmRleF0iKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgp
OyIpOworICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKKyAgICAgICAgfQor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9Cisg
ICAgfQorfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleS1zb3J0LW9yZGVy
LWRhdGUuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5LXNv
cnQtb3JkZXItZGF0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMWZmZjM3MjlkMThkNTcxZTVmZmJmN2Y3NzI4
NGYyN2I5NmU2ODQ1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL2tleS1zb3J0LW9yZGVyLWRhdGUuanMKQEAgLTAsMCArMSw4MiBAQAor
aWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hh
cmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBrZXkgY29tcGFyaXNv
biIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwor
CisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAi
TXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5v
cGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1
Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVl
c3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEtl
eTE7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIGFkZEtleTEoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisK
KyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28n
KTsiKTsKKyAgICBkYXRlMSA9IGV2YWxBbmRMb2coImRhdGUxID0gbmV3IERhdGUoMTAwMCk7Iik7
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoW10s
IGRhdGUxKTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEtleTI7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGFkZEtl
eTIoKQoreworICAgIGRhdGUwID0gZXZhbEFuZExvZygiZGF0ZTAgPSBuZXcgRGF0ZSgwKTsiKTsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChbXSwg
ZGF0ZTApOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkS2V5MzsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gYWRkS2V5
MygpCit7CisgICAgZGF0ZTMgPSBldmFsQW5kTG9nKCJkYXRlMyA9IG5ldyBEYXRlKDMwMDApOyIp
OworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKFtd
LCBkYXRlMyk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRLZXk0OworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBhZGRL
ZXk0KCkKK3sKKyAgICBkYXRlMiA9IGV2YWxBbmRMb2coImRhdGUyID0gbmV3IERhdGUoMjAwMCk7
Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQo
W10sIGRhdGUyKTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5BQ3Vyc29yOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biBvcGVuQUN1cnNvcigpCit7CisgICAga2V5SW5kZXggPSAwOworICAgIHNvcnRlZEtleXMgPSBl
dmFsQW5kTG9nKCJzb3J0ZWRLZXlzID0gW2RhdGUwLnRvU3RyaW5nKCksIGRhdGUxLnRvU3RyaW5n
KCksIGRhdGUyLnRvU3RyaW5nKCksIGRhdGUzLnRvU3RyaW5nKCldOyIpOworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRM
b2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICAgIGlmIChjdXJzb3Ip
IHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5LnRvU3RyaW5nKCkiLCAic29ydGVk
S2V5c1trZXlJbmRleF0iKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51
ZSgpOyIpOworICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKKyAgICAgICAg
fQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9
CisgICAgfQorfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleS10eXBlLWFy
cmF5LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleS10eXBl
LWFycmF5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViNjAzODEyZGQzNjMyZGMyY2QwNDI0ODI2Y2U1MjBkY2Zi
OGI5ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMva2V5LXR5cGUtYXJyYXkuanMKQEAgLTAsMCArMSwxOTcgQEAKK2lmICh0aGlzLmlt
cG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOwor
fQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIga2V5IHR5cGVzIik7CisKK2Z1bmN0aW9u
IHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBldmFsQW5kTG9n
KCJJREJUcmFuc2FjdGlvbiA9IHNlbGYuSURCVHJhbnNhY3Rpb24gfHwgc2VsZi5JREJUcmFuc2Fj
dGlvbjsiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJJREJUcmFuc2FjdGlvbiA9PSBudWxsIik7CisK
KyAgICBldmFsQW5kTG9nKCJJREJEYXRhYmFzZUV4Y2VwdGlvbiA9IHNlbGYuSURCRGF0YWJhc2VF
eGNlcHRpb24gfHwgc2VsZi5JREJEYXRhYmFzZUV4Y2VwdGlvbjsiKTsKKyAgICBzaG91bGRCZUZh
bHNlKCJJREJEYXRhYmFzZUV4Y2VwdGlvbiA9PSBudWxsIik7CisKKyAgICBuYW1lID0gc2VsZi5s
b2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsK
KyAgICBvcGVucmVxID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRp
b24pIik7CisgICAgb3BlbnJlcS5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICBvcGVucmVx
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1
Y2Nlc3MoKQoreworICAgIGV2YWxBbmRMb2coImRiID0gb3BlbnJlcS5yZXN1bHQiKTsKKyAgICBz
ZXR2ZXJyZXEgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Cisg
ICAgc2V0dmVycmVxLm9uc3VjY2VzcyA9IHNldFZlcnNpb25TdWNjZXNzOworICAgIHNldHZlcnJl
cS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZl
cnNpb25TdWNjZXNzKCkKK3sKKyAgICBkZWJ1ZygicHJlcGFyaW5nIGRhdGFiYXNlIik7CisgICAg
dHJhbnMgPSBzZXR2ZXJyZXEucmVzdWx0OworICAgIHRyYW5zLm9uY29tcGxldGUgPSB0ZXN0VmFs
aWRBcnJheUtleXM7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKyAgICBvYmplY3RT
dG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpOyIpOworICAg
IGRlYnVnKCIiKTsKK30KKworZnVuY3Rpb24gdGVzdFZhbGlkQXJyYXlLZXlzKCkKK3sKKyAgICBl
dmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9u
LlJFQURfV1JJVEUpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9y
ZSgnc3RvcmUnKSIpOworICAgIGRlYnVnKCIiKTsKKworICAgIGV2YWxBbmRMb2coImxvbmdfYXJy
YXkgPSBbXTsgZm9yIChpID0gMDsgaSA8IDEwMDA7ICsraSkgeyBsb25nX2FycmF5LnB1c2goJ2Fi
YycsIDEyMywgbmV3IERhdGUoMCksIFtdKTsgfSIpOworICAgIGRlYnVnKCIiKTsKKworICAgIGRl
YnVnKCJhcnJheSB0aGF0IGNvbnRhaW5zIG5vbi1udW1lcmljIHNlbGYtcmVmZXJlbmNlIik7Cisg
ICAgZXZhbEFuZExvZygic2VsZl9yZWZlcnJlbnRpYWxfYXJyYXkgPSBbXTsgc2VsZl9yZWZlcnJl
bnRpYWxfYXJyYXkuc2VsZiA9IHNlbGZfcmVmZXJyZW50aWFsX2FycmF5OyIpOworICAgIGRlYnVn
KCIiKTsKKworICAgIHZhciBuID0gMCwgY2FzZXMgPSBbCisgICAgICAgICJbXSIsCisKKyAgICAg
ICAgIlstSW5maW5pdHldIiwKKyAgICAgICAgIlstTnVtYmVyLk1BWF9WQUxVRV0iLAorICAgICAg
ICAiWy0xXSIsCisgICAgICAgICJbLU51bWJlci5NSU5fVkFMVUVdIiwKKyAgICAgICAgIlswXSIs
CisgICAgICAgICJbTnVtYmVyLk1JTl9WQUxVRV0iLAorICAgICAgICAiWzFdIiwKKyAgICAgICAg
IltOdW1iZXIuTUFYX1ZBTFVFXSIsCisgICAgICAgICJbSW5maW5pdHldIiwKKworICAgICAgICAi
WzEsMiwzXSIsCisKKyAgICAgICAgIltuZXcgRGF0ZSgwKV0iLAorICAgICAgICAiW25ldyBEYXRl
KCcyNTI1LTAxLTAxVDAwOjAwOjAwWicpXSIsCisKKyAgICAgICAgIltuZXcgRGF0ZSgwKSwgbmV3
IERhdGUoJzI1MjUtMDEtMDFUMDA6MDA6MDBaJyldIiwKKworICAgICAgICAiWycnXSIsCisgICAg
ICAgICJbJ1x4MDAnXSIsCisgICAgICAgICJbJ2FiYzEyMyddIiwKKworICAgICAgICAiWydhYmMn
LCAxMjNdIiwKKworICAgICAgICAiW1tdXSIsCisKKyAgICAgICAgIltbXSwgW11dIiwKKyAgICAg
ICAgIltbXSwgW10sIFtdXSIsCisKKyAgICAgICAgIltbW11dXSIsCisgICAgICAgICJbW1tbXV1d
XSIsCisKKyAgICAgICAgIlsxMjMsICdhYmMnLCBuZXcgRGF0ZSgwKSwgW11dIiwKKyAgICAgICAg
IltbMTIzLCAnYWJjJywgbmV3IERhdGUoMCksIFtdXSwgWzQ1NiwgJ2RlZicsIG5ldyBEYXRlKDk5
OSksIFtbXV1dXSIsCisKKyAgICAgICAgImxvbmdfYXJyYXkiLAorICAgICAgICAic2VsZl9yZWZl
cnJlbnRpYWxfYXJyYXkiCisgICAgXTsKKworICAgIGZ1bmN0aW9uIHRlc3RBcnJheVB1dEdldCh2
YWx1ZSwga2V5LCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGRlYnVnKCJ0ZXN0aW5nIGFycmF5
IGtleTogIiArIGtleSk7CisgICAgICAgIHB1dHJlcSA9IGV2YWxBbmRMb2coInN0b3JlLnB1dCgn
IiArIHZhbHVlICsgIicsICIgKyBrZXkgKyAiKTsiKTsKKyAgICAgICAgcHV0cmVxLm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcHV0cmVxLm9uc3VjY2VzcyA9IGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgZ2V0cmVxID0gZXZhbEFuZExvZygic3RvcmUuZ2V0KCIg
KyBrZXkgKyAiKTsiKTsKKyAgICAgICAgICAgIGdldHJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisgICAgICAgICAgICBnZXRyZXEub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJnZXRyZXEucmVzdWx0Iiwg
dmFsdWUpOworICAgICAgICAgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgICAgICAgICBjYWxs
YmFjaygpOworICAgICAgICAgICAgfTsKKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBuZXh0VGVzdCgpCisgICAgeworICAgICAgICB2YXIgdGVzdGNhc2UgPSBjYXNlcy5zaGlmdCgp
OworICAgICAgICBpZiAodGVzdGNhc2UpIHsKKyAgICAgICAgICAgIHRlc3RBcnJheVB1dEdldCgi
dmFsdWUiICsgKCsrbiksIHRlc3RjYXNlLCBuZXh0VGVzdCk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBuZXh0VGVzdCgpOworCisgICAgdHJhbnMub25jb21wbGV0ZSA9IHRlc3RJbnZhbGlkQXJy
YXlLZXlzOworfQorCitmdW5jdGlvbiB0ZXN0SW52YWxpZEFycmF5S2V5cygpCit7CisgICAgZXZh
bEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5S
RUFEX1dSSVRFKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUo
J3N0b3JlJykiKTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICBkZWJ1ZygiYXJyYXkgdGhhdCBjb250
YWlucyBpdHNlbGY6IGFycmF5ID0gWyBhcnJheSBdIik7CisgICAgZXZhbEFuZExvZygiY3ljbGlj
X2FycmF5ID0gW107IGN5Y2xpY19hcnJheS5wdXNoKGN5Y2xpY19hcnJheSkiKTsKKyAgICBzaG91
bGRUaHJvdygiSlNPTi5zdHJpbmdpZnkoY3ljbGljX2FycmF5KSIpOworCisgICAgZGVidWcoImFy
cmF5IHRoYXQgY29udGFpbnMgaXRzZWxmLCBvbmUgbGV2ZWwgZG93bjogYXJyYXkgPSBbIFsgYXJy
YXkgXSBdIik7CisgICAgZXZhbEFuZExvZygiY3ljbGljX2FycmF5MiA9IFtdOyBjeWNsaWNfYXJy
YXkyLnB1c2goW2N5Y2xpY19hcnJheTJdKSIpOworICAgIHNob3VsZFRocm93KCJKU09OLnN0cmlu
Z2lmeShjeWNsaWNfYXJyYXkyKSIpOworCisgICAgZGVidWcoImFycmF5IHRoYXQgY29udGFpbnMg
aXRzZWxmLCBub3QgYXMgZmlyc3QgZWxlbWVudDogYXJyYXkgPSBbMSwgJ2InLCBbXSwgYXJyYXld
Iik7CisgICAgZXZhbEFuZExvZygiY3ljbGljX2FycmF5MyA9IFsxLCAnYicsIFtdXTsgY3ljbGlj
X2FycmF5My5wdXNoKGN5Y2xpY19hcnJheTMpIik7CisgICAgc2hvdWxkVGhyb3coIkpTT04uc3Ry
aW5naWZ5KGN5Y2xpY19hcnJheTMpIik7CisgICAgZGVidWcoIiIpOworCisgICAgZGVidWcoImFy
cmF5IHRoYXQgY29udGFpbnMgYXJyYXkgdGhhdCBjb250YWlucyBpdHNlbGYiKTsKKyAgICBldmFs
QW5kTG9nKCJjeWNsaWNfYXJyYXk0ID0gW2N5Y2xpY19hcnJheV07Iik7CisgICAgc2hvdWxkVGhy
b3coIkpTT04uc3RyaW5naWZ5KGN5Y2xpY19hcnJheTQpIik7CisgICAgZGVidWcoIiIpOworCisg
ICAgdmFyIGludmFsaWRLZXlzID0gWworICAgICAgICAiWyB2b2lkIDAgXSIsIC8vIHVuZGVmaW5l
ZAorICAgICAgICAiWyB0cnVlIF0iLAorICAgICAgICAiWyBmYWxzZSBdIiwKKyAgICAgICAgIlsg
TmFOIF0iLAorICAgICAgICAiWyBudWxsIF0iLAorICAgICAgICAiWyB7fSBdIiwKKyAgICAgICAg
IlsgZnVuY3Rpb24gKCkge30gXSIsCisgICAgICAgICJbIC9yZWdleC8gXSIsCisgICAgICAgICJb
IHNlbGYgXSIsCisgICAgICAgICJbIHNlbGYuZG9jdW1lbnQgXSIsCisgICAgICAgICJbIHNlbGYu
ZG9jdW1lbnQuYm9keSBdIiwKKyAgICAgICAgImN5Y2xpY19hcnJheSIsCisgICAgICAgICJjeWNs
aWNfYXJyYXkyIiwKKyAgICAgICAgImN5Y2xpY19hcnJheTMiLAorICAgICAgICAiY3ljbGljX2Fy
cmF5NCIsCisgICAgICAgICJBcnJheSgxMDAwKSIgLy8gc3BhcnNlCisgICAgXTsKKworICAgIGlu
dmFsaWRLZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeworICAgICAgICBkZWJ1ZygidGVzdGlu
ZyBpbnZhbGlkIGFycmF5IGtleTogIiArIGtleSk7CisgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oInN0b3JlLnB1dCgndmFsdWUnLCAiICsga2V5ICsgIik7IiwgIklEQkRhdGFiYXNlRXhj
ZXB0aW9uLkRBVEFfRVJSIik7CisgICAgICAgIGRlYnVnKCIiKTsKKyAgICB9KTsKKworICAgIHRl
c3REZXB0aExpbWl0cygpOworfQorCitmdW5jdGlvbiBtYWtlQXJyYXlPZkRlcHRoKG4pCit7Cisg
ICAgdmFyIGFycmF5ID0gW107CisgICAgd2hpbGUgKC0tbikgeworICAgICAgICBhcnJheSA9IFth
cnJheV07CisgICAgfQorICAgIHJldHVybiBhcnJheTsKK30KKworZnVuY3Rpb24gdGVzdERlcHRo
TGltaXRzKCkKK3sKKyAgICBzaG91bGRCZSgiaW5kZXhlZERCLmNtcChtYWtlQXJyYXlPZkRlcHRo
KDI1KSwgMCkiLCAiMSIpOworICAgIHNob3VsZEJlKCJpbmRleGVkREIuY21wKG1ha2VBcnJheU9m
RGVwdGgoMjUwKSwgMCkiLCAiMSIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4
ZWREQi5jbXAobWFrZUFycmF5T2ZEZXB0aCgyNTAwKSwgMCkiLCAiSURCRGF0YWJhc2VFeGNlcHRp
b24uREFUQV9FUlIiKTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30K
KwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXktdHlwZS1pbmZpbml0eS5qcyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXktdHlwZS1pbmZpbml0
eS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kMzM3NmUxMDY3NzMyMDY0NmQ4OGRjOWRhNWQ1ODRiZWNlMmY3MDMw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL2tleS10eXBlLWluZmluaXR5LmpzCkBAIC0wLDAgKzEsNTIgQEAKK2lmICh0aGlzLmltcG9y
dFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQor
CitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIga2V5IHR5cGVzIik7CisKK2Z1bmN0aW9uIHRl
c3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5s
b2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRp
b24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1
Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24o
JzEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdGVzdEdyb3VwMTsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gdGVzdEdy
b3VwMSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0
b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycpOyIpOworICAgIGRl
YnVnKCJ0ZXN0IGtleSBhcyBpbmZpbml0eSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKFtdLCBJbmZpbml0eSk7Iik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSB0ZXN0R3JvdXAyOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiB0ZXN0R3JvdXAyKCkKK3sKKyAgICBkZWJ1Zygi
dGVzdCBrZXkgYXMgbmVnYXRpdmUgaW5maW5pdHkiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChbXSwgLUluZmluaXR5KTsiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IHRlc3RHcm91cDM7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDMoKQoreworICAgIGZp
bmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleXBh
dGgtYmFzaWNzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tl
eXBhdGgtYmFzaWNzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNjNzgxN2JiNmQwNmMwMDQ3NjkwOTBmY2VhNjg4
Yzc5NWE4NTQ4Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMva2V5cGF0aC1iYXNpY3MuanMKQEAgLTAsMCArMSw5MSBAQAoraWYgKHRo
aXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpz
Jyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IGZvciB2YWxpZCBhbmQgaW52YWxpZCBrZXlwYXRo
cyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwor
ICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15
IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Bl
bihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNj
ZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0ZXN0VmFs
aWRLZXlQYXRoczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gdGVzdFZhbGlkS2V5UGF0aHMoKQoreworICAgIGRlbGV0ZUFsbE9i
amVjdFN0b3JlcyhkYik7CisKKyAgICB0ZXN0S2V5UGF0aHMgPSBbbnVsbCwgdW5kZWZpbmVkLCAn
J107CisgICAgdGVzdEtleVBhdGhzLmZvckVhY2goZnVuY3Rpb24gKGtleVBhdGgpIHsKKyAgICAg
ICAgZ2xvYmFsS2V5UGF0aCA9IGtleVBhdGg7CisgICAgICAgIGRlYnVnKCJnbG9iYWxLZXlQYXRo
ID0gJyIgKyBnbG9iYWxLZXlQYXRoICsgIiciKTsKKyAgICAgICAgZXZhbEFuZExvZygiZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDogZ2xvYmFsS2V5UGF0aH0pIik7CisgICAg
ICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisgICAgfSk7CisKKyAgICB0ZXN0S2V5UGF0
aHMgPSBbJ2ZvbycsICdmb28uYmFyLmJheiddOworICAgIHRlc3RLZXlQYXRocy5mb3JFYWNoKGZ1
bmN0aW9uIChrZXlQYXRoKSB7CisgICAgICAgIGdsb2JhbEtleVBhdGggPSBrZXlQYXRoOworICAg
ICAgICBkZWJ1ZygiZ2xvYmFsS2V5UGF0aCA9ICciICsgZ2xvYmFsS2V5UGF0aCArICInIik7Cisg
ICAgICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCduYW1lJywge2tleVBhdGg6
IGdsb2JhbEtleVBhdGh9KSIpOworICAgICAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwor
ICAgIH0pOworCisgICAgdGVzdEtleVBhdGhzID0gW251bGwsIHVuZGVmaW5lZCwgJycsICdmb28n
LCAnZm9vLmJhci5iYXonXTsKKyAgICB0ZXN0S2V5UGF0aHMuZm9yRWFjaChmdW5jdGlvbiAoa2V5
UGF0aCkgeworICAgICAgICBnbG9iYWxLZXlQYXRoID0ga2V5UGF0aDsKKyAgICAgICAgZGVidWco
Imdsb2JhbEtleVBhdGggPSAnIiArIGdsb2JhbEtleVBhdGggKyAiJyIpOworICAgICAgICBzdG9y
ZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScp
Iik7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCduYW1lJywgZ2xvYmFs
S2V5UGF0aCkiKTsKKyAgICAgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKyAgICB9KTsK
KworICAgIHRlc3RJbnZhbGlkS2V5UGF0aHMoKTsKK30KKworZnVuY3Rpb24gdGVzdEludmFsaWRL
ZXlQYXRocygpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIHRlc3RL
ZXlQYXRocyA9IFsnW10nLCAnWyJmb28iXScsICdbImZvbyIsICJiYXIiXScsICdbIiIsICIiXScs
ICdbMS4wLCAyLjBdJywgJ1tbImZvbyJdXScsICdbImZvbyIsIFsiYmFyIl1dJ107CisgICAgdGVz
dEtleVBhdGhzLmZvckVhY2goZnVuY3Rpb24gKGtleVBhdGgpIHsKKyAgICAgICAgZ2xvYmFsS2V5
UGF0aCA9IGtleVBhdGg7CisgICAgICAgIGRlYnVnKCJnbG9iYWxLZXlQYXRoID0gJyIgKyBnbG9i
YWxLZXlQYXRoICsgIiciKTsKKyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDogZ2xvYmFsS2V5UGF0aH0pIiwgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLk5PTl9UUkFOU0lFTlRfRVJSIik7CisgICAgICAgIGRlbGV0ZUFsbE9i
amVjdFN0b3JlcyhkYik7CisgICAgfSk7CisKKyAgICB0ZXN0S2V5UGF0aHMgPSBbJyAnLCAnZm9v
ICcsICdmb28gYmFyJywgJ2Zvby4gYmFyJywgJ2ZvbyAuYmFyJywgJ2Zvby4uYmFyJywgJytmb28n
LCAnZm9vJSddOworICAgIHRlc3RLZXlQYXRocy5mb3JFYWNoKGZ1bmN0aW9uIChrZXlQYXRoKSB7
CisgICAgICAgIGdsb2JhbEtleVBhdGggPSBrZXlQYXRoOworICAgICAgICBkZWJ1ZygiZ2xvYmFs
S2V5UGF0aCA9ICciICsgZ2xvYmFsS2V5UGF0aCArICInIik7CisgICAgICAgIGV2YWxBbmRFeHBl
Y3RFeGNlcHRpb24oImRiLmNyZWF0ZU9iamVjdFN0b3JlKCduYW1lJywge2tleVBhdGg6IGdsb2Jh
bEtleVBhdGh9KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT05fVFJBTlNJRU5UX0VSUiIpOwor
ICAgICAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworICAgIH0pOworCisgICAgdGVzdEtl
eVBhdGhzID0gWycgJywgJ2ZvbyAnLCAnZm9vIGJhcicsICdmb28uIGJhcicsICdmb28gLmJhcics
ICdmb28uLmJhcicsICcrZm9vJywgJ2ZvbyUnXTsKKyAgICB0ZXN0S2V5UGF0aHMuZm9yRWFjaChm
dW5jdGlvbiAoa2V5UGF0aCkgeworICAgICAgICBnbG9iYWxLZXlQYXRoID0ga2V5UGF0aDsKKyAg
ICAgICAgZGVidWcoImdsb2JhbEtleVBhdGggPSAnIiArIGdsb2JhbEtleVBhdGggKyAiJyIpOwor
ICAgICAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUo
J3N0b3JlTmFtZScpIik7CisgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmNy
ZWF0ZUluZGV4KCduYW1lJywgZ2xvYmFsS2V5UGF0aCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24u
Tk9OX1RSQU5TSUVOVF9FUlIiKTsKKyAgICAgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsK
KyAgICB9KTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL2tleXBhdGgtZWRnZXMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMva2V5cGF0aC1lZGdlcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYmYxMWJiNmRjZTI3
NjQ3MTEwNWI4M2UxY2Q0OTQxMjJmYzhiNTAxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleXBhdGgtZWRnZXMuanMKQEAgLTAsMCAr
MSwxMTAgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcu
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNj
cmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIga2V5
UGF0aCBlZGdlIGNhc2VzIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRv
clByZWZpeGVzKCk7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0
ZURhdGFiYXNlKCdrZXlwYXRoLWVkZ2VzJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdrZXlwYXRo
LWVkZ2VzJykiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgfTsK
K30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1
Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFy
Z2V0LnJlc3VsdCIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0
VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgIHRy
YW5zYWN0aW9uID0gcmVxdWVzdC5yZXN1bHQ7CisgICAgICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQg
PSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICAgICAgZXZhbEFuZExvZygiZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ3N0b3JlLXdpdGgtcGF0aCcsIHtrZXlQYXRoOiAnZm9vJ30pIik7CisgICAg
ICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZS13aXRoLXBhdGgtYW5k
LWdlbmVyYXRvcicsIHtrZXlQYXRoOiAnZm9vJywgYXV0b0luY3JlbWVudDogdHJ1ZX0pIik7Cisg
ICAgICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB0ZXN0S2V5UGF0aHM7CisgICAgfTsKK30K
KworZnVuY3Rpb24gdGVzdEtleVBhdGhzKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWco
InRlc3RLZXlQYXRocygpOiIpOworCisgICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFu
c2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUtd2l0aC1wYXRoJ10sIElEQlRyYW5zYWN0
aW9uLlJFQURfV1JJVEUpIik7CisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5z
YWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZS13aXRoLXBhdGgnKSIpOworCisgICAgZGVidWcoIiIp
OworICAgIGRlYnVnKCJLZXkgcGF0aCBkb2Vzbid0IHJlc29sdmUgdG8gYSB2YWx1ZTsgc2hvdWxk
IHlpZWxkIG51bGwsIHNob3VsZCB0aHJvdyBEQVRBX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RF
eGNlcHRpb24oInN0b3JlLnB1dChudWxsKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VS
UiIpOworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJLZXkgcGF0aCBkb2Vzbid0IHJlc29s
dmUgdG8gYSB2YWx1ZTsgc2hvdWxkIHlpZWxkIG51bGwsIHNob3VsZCB0aHJvdyBEQVRBX0VSUiIp
OworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLnB1dCh7fSkiLCAiSURCRGF0YWJh
c2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiS2V5
IHBhdGggcmVzb2x2ZXMgdG8gYSB2YWx1ZSB0aGF0IGlzIGludmFsaWQga2V5OyBzaG91bGQgeWll
bGQgJ2ludmFsaWQnIGtleSwgc2hvdWxkIHRocm93IERBVEFfRVJSIik7CisgICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KHtmb286IG51bGx9KSIsICJJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5EQVRBX0VSUiIpOworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJLZXkgcGF0aCBy
ZXNvbHZlcyB0byBhIHZhbHVlIHRoYXQgaXMgdmFsaWQga2V5OyBzaG91bGQgeWllbGQgJ3N0cmlu
Zycga2V5LCBzaG91bGQgc3VjY2VlZCIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9y
ZS5wdXQoe2ZvbzogJ3pvbyd9KSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAg
ICAgICB0ZXN0UGFzc2VkKCJzdG9yZS5wdXQgc3VjY2VlZGVkIik7CisgICAgfTsKKworICAgIHRy
YW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFuc2Fj
dGlvbi5vbmNvbXBsZXRlID0gdGVzdEtleVBhdGhzQW5kR2VuZXJhdG9yOworfQorCitmdW5jdGlv
biB0ZXN0S2V5UGF0aHNBbmRHZW5lcmF0b3IoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1
ZygidGVzdEtleVBhdGhzQW5kR2VuZXJhdG9yKCk6Iik7CisKKyAgICB0cmFuc2FjdGlvbiA9IGV2
YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZS13aXRoLXBhdGgt
YW5kLWdlbmVyYXRvciddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIHN0b3Jl
ID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUtd2l0
aC1wYXRoLWFuZC1nZW5lcmF0b3InKSIpOworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJL
ZXkgcGF0aCBkb2Vzbid0IHJlc29sdmUgdG8gYSB2YWx1ZTsgc2hvdWxkIHlpZWxkIG51bGwgYnV0
IGluc2VydGlvbiB3b3VsZCBmYWlsLCBzbyBwdXQgcmVxdWVzdCBzaG91bGQgcmFpc2UgZXhjZXB0
aW9uIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KG51bGwpIiwgIklE
QkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVi
dWcoIktleSBwYXRoIGRvZXNuJ3QgcmVzb2x2ZSB0byBhIHZhbHVlOyBzaG91bGQgeWllbGQgbnVs
bCBidXQgaW5zZXJ0aW9uIHdvdWxkIGZhaWwsIHNvIHB1dCByZXF1ZXN0IHNob3VsZCByYWlzZSBl
eGNlcHRpb24iKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5wdXQoJ3N0cmlu
ZycpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICBkZWJ1ZygiIik7
CisgICAgZGVidWcoIktleSBwYXRoIGRvZXNuJ3QgcmVzb2x2ZSB0byBhIHZhbHVlOyBzaG91bGQg
eWllbGQgbnVsbCwga2V5IHNob3VsZCBiZSBnZW5lcmF0ZWQsIHB1dCByZXF1ZXN0IHNob3VsZCBz
dWNjZWVkIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLnB1dCh7fSkiKTsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgic3RvcmUucHV0
IHN1Y2NlZWRlZCIpOworCisgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgZGVidWcoIktleSBw
YXRoIHJlc29sdmVzIHRvIGEgdmFsdWUgdGhhdCBpcyBpbnZhbGlkIGtleTsgc2hvdWxkIHlpZWxk
ICdpbnZhbGlkJyBrZXksIHNob3VsZCB0aHJvdyBEQVRBX0VSUiIpOworICAgICAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5wdXQoe2ZvbzogbnVsbH0pIiwgIklEQkRhdGFiYXNlRXhj
ZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICAgICAgZGVidWcoIiIpOworICAgICAgICBkZWJ1Zygi
S2V5IHBhdGggcmVzb2x2ZXMgdG8gYSB2YWx1ZSB0aGF0IGlzIHZhbGlkIGtleTsgc2hvdWxkIHlp
ZWxkICdzdHJpbmcnIGtleSwgc2hvdWxkIHN1Y2NlZWQiKTsKKyAgICAgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInN0b3JlLnB1dCh7Zm9vOiAnem9vJ30pIik7CisgICAgICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoInN0b3JlLnB1dCBzdWNj
ZWVkZWQiKTsKKworICAgICAgICB9OworICAgIH07CisKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0
ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9
IGZpbmlzaEpTVGVzdDsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXlw
YXRoLWZldGNoLWtleS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9rZXlwYXRoLWZldGNoLWtleS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDIzMzUzYzMzNjQ0MTQwYmFmYzc2
YmM0Nzk3YWFlYzQxZTVhM2Q3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleXBhdGgtZmV0Y2gta2V5LmpzCkBAIC0wLDAgKzEsODIg
QEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMo
J3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIga2V5UGF0aHMi
KTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKwor
ICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15
IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Bl
bihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNj
ZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisKKyAgICB0ZXN0RGF0YSA9IFt7IG5hbWU6ICJzaW1w
bGUgaWRlbnRpZmllciIsCisgICAgICAgICAgICAgICAgICB2YWx1ZToge2lkOjEwfSwKKyAgICAg
ICAgICAgICAgICAgIGtleVBhdGg6ICJpZCIsCisgICAgICAgICAgICAgICAgICBrZXk6IDEwIH0s
CisgICAgICAgICAgICAgICAgeyBuYW1lOiAic2ltcGxlIGlkZW50aWZpZXJzIiwKKyAgICAgICAg
ICAgICAgICAgIHZhbHVlOiB7aWQxOjEwLCBpZDI6MjB9LAorICAgICAgICAgICAgICAgICAga2V5
UGF0aDogImlkMSIsCisgICAgICAgICAgICAgICAgICBrZXk6IDEwIH0sCisgICAgICAgICAgICAg
ICAgeyBuYW1lOiAibmVzdGVkIGlkZW50aWZpZXJzIiwKKyAgICAgICAgICAgICAgICAgIHZhbHVl
OiB7b3V0ZXI6e2lubmVyOjEwfX0sCisgICAgICAgICAgICAgICAgICBrZXlQYXRoOiAib3V0ZXIu
aW5uZXIiLAorICAgICAgICAgICAgICAgICAga2V5OiAxMCB9LAorICAgICAgICAgICAgICAgIHsg
bmFtZTogIm5lc3RlZCBpZGVudGlmaWVycyB3aXRoIGRpc3RyYWN0aW9ucyIsCisgICAgICAgICAg
ICAgICAgICB2YWx1ZToge291dGVyOntpbm5lcjoxMH0sIGlubmVyOntvdXRlcjoyMH19LAorICAg
ICAgICAgICAgICAgICAga2V5UGF0aDogIm91dGVyLmlubmVyIiwKKyAgICAgICAgICAgICAgICAg
IGtleTogMTAgfSwKKyAgICBdOworICAgIG5leHRUb09wZW4gPSAwOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZTsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY3JlYXRlQW5kUG9w
dWxhdGVPYmplY3RTdG9yZSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0aW5n
ICIgKyB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1lKTsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0
b3JlcyhkYik7CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUodGVzdERhdGFbbmV4dFRvT3Blbl0ubmFtZSwge2tleVBhdGg6
IHRlc3REYXRhW25leHRUb09wZW5dLmtleVBhdGh9KTsiKTsKKyAgICByZXN1bHQgPSBldmFsQW5k
TG9nKCJyZXN1bHQgPSBvYmplY3RTdG9yZS5hZGQodGVzdERhdGFbbmV4dFRvT3Blbl0udmFsdWUp
OyIpOworICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAg
cmVzdWx0Lm9uc3VjY2VzcyA9IG9wZW5DdXJzb3I7Cit9CisKK2Z1bmN0aW9uIG9wZW5DdXJzb3Io
KQoreworICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coInJlc3VsdCA9IG9iamVjdFN0b3JlLm9wZW5D
dXJzb3IoKTsiKTsKKyAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBjaGVja0N1cnNvcjsKK30KKworZnVuY3Rpb24gY2hl
Y2tDdXJzb3IoKQoreworICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRh
cmdldC5yZXN1bHQ7Iik7CisgICAgaWYgKGN1cnNvcikgeworICAgICAgICBzaG91bGRCZSgiY3Vy
c29yLmtleSIsICJ0ZXN0RGF0YVtuZXh0VG9PcGVuXS5rZXkiKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICB0ZXN0RmFpbGVkKCJjdXJzb3IgaXMgbnVsbCIpOworICAgIH0KKyAgICBpZiAoKytuZXh0
VG9PcGVuIDwgdGVzdERhdGEubGVuZ3RoKSB7CisgICAgICAgIGNyZWF0ZUFuZFBvcHVsYXRlT2Jq
ZWN0U3RvcmUoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9
Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5cmFuZ2UtcmVxdWlyZWQt
YXJndW1lbnRzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tl
eXJhbmdlLXJlcXVpcmVkLWFyZ3VtZW50cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MTMyMDk5MDI1YmY1N2Y1
N2VmOWViZGNkZDQ4ZDM3MGMwYmVmZjdiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleXJhbmdlLXJlcXVpcmVkLWFyZ3VtZW50cy5q
cwpAQCAtMCwwICsxLDIxIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0
U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAg
ICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5k
ZXhlZERCIGtleXJhbmdlIHJlcXVpcmVkIGFyZ3VtZW50cyIpOworCitmdW5jdGlvbiB0ZXN0KCkK
K3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgc2hvdWxkVGhyb3coIklEQktl
eVJhbmdlLm9ubHkoKTsiKTsKKyAgICBzaG91bGRUaHJvdygiSURCS2V5UmFuZ2UubG93ZXJCb3Vu
ZCgpOyIpOworICAgIHNob3VsZFRocm93KCJJREJLZXlSYW5nZS51cHBlckJvdW5kKCk7Iik7Cisg
ICAgc2hvdWxkVGhyb3coIklEQktleVJhbmdlLmJvdW5kKDEpOyIpOworICAgIHNob3VsZFRocm93
KCJJREJLZXlSYW5nZS5ib3VuZCgpOyIpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rl
c3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5cmFuZ2UuanMgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5cmFuZ2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzJmNWY2
NTY2ZDYxODFjOTA4YTM0NzAyMTZiOGYzMDk0NTVjZTdmNAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXlyYW5nZS5qcwpAQCAtMCww
ICsxLDE4NyBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMo
Jy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0
U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidz
IEtleVJhbmdlLiIpOworCitmdW5jdGlvbiBjaGVja1NpbmdsZUtleVJhbmdlKHZhbHVlKQorewor
ICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygiSURCS2V5UmFuZ2Uub25seSgiICsgdmFsdWUgKyAi
KSIpOworICAgIHNob3VsZEJlKCJrZXlSYW5nZS5sb3dlciIsICIiICsgdmFsdWUpOworICAgIHNo
b3VsZEJlKCJrZXlSYW5nZS51cHBlciIsICIiICsgdmFsdWUpOworICAgIHNob3VsZEJlRmFsc2Uo
ImtleVJhbmdlLmxvd2VyT3BlbiIpOworICAgIHNob3VsZEJlRmFsc2UoImtleVJhbmdlLnVwcGVy
T3BlbiIpOworfQorCitmdW5jdGlvbiBjaGVja0xvd2VyQm91bmRLZXlSYW5nZSh2YWx1ZSwgb3Bl
bikKK3sKKyAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coIklEQktleVJhbmdlLmxvd2VyQm91bmQo
IiArIHZhbHVlICsgIiwiICsgb3BlbiArICIpIik7CisgICAgc2hvdWxkQmUoImtleVJhbmdlLmxv
d2VyIiwgIiIgKyB2YWx1ZSk7CisgICAgaWYgKG9wZW4gPT09IHVuZGVmaW5lZCkKKyAgICAgICAg
b3BlbiA9IGZhbHNlOworICAgIHNob3VsZEJlKCJrZXlSYW5nZS5sb3dlck9wZW4iLCAiIiArIG9w
ZW4pOworICAgIHNob3VsZEJlTnVsbCgia2V5UmFuZ2UudXBwZXIiKTsKKyAgICBzaG91bGRCZUZh
bHNlKCJrZXlSYW5nZS51cHBlck9wZW4iKTsKK30KKworZnVuY3Rpb24gY2hlY2tVcHBlckJvdW5k
S2V5UmFuZ2UodmFsdWUsIG9wZW4pCit7CisgICAga2V5UmFuZ2UgPSBldmFsQW5kTG9nKCJJREJL
ZXlSYW5nZS51cHBlckJvdW5kKCIgKyB2YWx1ZSArICIsIiArIG9wZW4gKyAiKSIpOworICAgIHNo
b3VsZEJlKCJrZXlSYW5nZS51cHBlciIsICIiICsgdmFsdWUpOworICAgIGlmIChvcGVuID09PSB1
bmRlZmluZWQpCisgICAgICAgIG9wZW4gPSBmYWxzZTsKKyAgICBzaG91bGRCZSgia2V5UmFuZ2Uu
dXBwZXJPcGVuIiwgIiIgKyBvcGVuKTsKKyAgICBzaG91bGRCZU51bGwoImtleVJhbmdlLmxvd2Vy
Iik7CisgICAgc2hvdWxkQmVGYWxzZSgia2V5UmFuZ2UubG93ZXJPcGVuIik7Cit9CisKK2Z1bmN0
aW9uIGNoZWNrQm91bmRLZXlSYW5nZShsb3dlciwgdXBwZXIsIGxvd2VyT3BlbiwgdXBwZXJPcGVu
KQoreworICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygiSURCS2V5UmFuZ2UuYm91bmQoIiArIGxv
d2VyICsgIiwiICsgdXBwZXIgKyAiLCAiICsgbG93ZXJPcGVuICsgIiwgIiArIHVwcGVyT3BlbiAr
ICIpIik7CisgICAgc2hvdWxkQmUoImtleVJhbmdlLmxvd2VyIiwgIiIgKyBsb3dlcik7CisgICAg
c2hvdWxkQmUoImtleVJhbmdlLnVwcGVyIiwgIiIgKyB1cHBlcik7CisgICAgaWYgKGxvd2VyT3Bl
biA9PT0gdW5kZWZpbmVkKQorICAgICAgICBsb3dlck9wZW4gPSBmYWxzZTsKKyAgICBpZiAodXBw
ZXJPcGVuID09PSB1bmRlZmluZWQpCisgICAgICAgIHVwcGVyT3BlbiA9IGZhbHNlOworICAgIHNo
b3VsZEJlKCJrZXlSYW5nZS5sb3dlck9wZW4iLCAiIiArIGxvd2VyT3Blbik7CisgICAgc2hvdWxk
QmUoImtleVJhbmdlLnVwcGVyT3BlbiIsICIiICsgdXBwZXJPcGVuKTsKK30KKworZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBzaG91bGRCZUZhbHNl
KCInbG93ZXInIGluIElEQktleVJhbmdlIik7CisgICAgc2hvdWxkQmVGYWxzZSgiJ3VwcGVyJyBp
biBJREJLZXlSYW5nZSIpOworICAgIHNob3VsZEJlRmFsc2UoIidsb3dlck9wZW4nIGluIElEQktl
eVJhbmdlIik7CisgICAgc2hvdWxkQmVGYWxzZSgiJ3VwcGVyT3BlbicgaW4gSURCS2V5UmFuZ2Ui
KTsKKyAgICBzaG91bGRCZVRydWUoIidvbmx5JyBpbiBJREJLZXlSYW5nZSIpOworICAgIHNob3Vs
ZEJlVHJ1ZSgiJ2xvd2VyQm91bmQnIGluIElEQktleVJhbmdlIik7CisgICAgc2hvdWxkQmVUcnVl
KCIndXBwZXJCb3VuZCcgaW4gSURCS2V5UmFuZ2UiKTsKKyAgICBzaG91bGRCZVRydWUoIidib3Vu
ZCcgaW4gSURCS2V5UmFuZ2UiKTsKKworICAgIGRlYnVnKCIiKTsKKworICAgIHZhciBpbnN0YW5j
ZSA9IGV2YWxBbmRMb2coImluc3RhbmNlID0gSURCS2V5UmFuZ2Uub25seSgxKSIpOworICAgIHNo
b3VsZEJlVHJ1ZSgiJ2xvd2VyJyBpbiBpbnN0YW5jZSIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ3Vw
cGVyJyBpbiBpbnN0YW5jZSIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ2xvd2VyT3BlbicgaW4gaW5z
dGFuY2UiKTsKKyAgICBzaG91bGRCZVRydWUoIid1cHBlck9wZW4nIGluIGluc3RhbmNlIik7Cisg
ICAgc2hvdWxkQmVGYWxzZSgiJ29ubHknIGluIGluc3RhbmNlIik7CisgICAgc2hvdWxkQmVGYWxz
ZSgiJ2xvd2VyQm91bmQnIGluIGluc3RhbmNlIik7CisgICAgc2hvdWxkQmVGYWxzZSgiJ3VwcGVy
Qm91bmQnIGluIGluc3RhbmNlIik7CisgICAgc2hvdWxkQmVGYWxzZSgiJ2JvdW5kJyBpbiBpbnN0
YW5jZSIpOworCisgICAgZGVidWcoIiIpOworCisgICAgY2hlY2tTaW5nbGVLZXlSYW5nZSgxKTsK
KyAgICBjaGVja1NpbmdsZUtleVJhbmdlKDMuMTQpOworICAgIGNoZWNrU2luZ2xlS2V5UmFuZ2Uo
IidhJyIpOworCisgICAgY2hlY2tMb3dlckJvdW5kS2V5UmFuZ2UoMTAsIHRydWUpOworICAgIGNo
ZWNrTG93ZXJCb3VuZEtleVJhbmdlKDExLCBmYWxzZSk7CisgICAgY2hlY2tMb3dlckJvdW5kS2V5
UmFuZ2UoMTIpOworICAgIGNoZWNrTG93ZXJCb3VuZEtleVJhbmdlKDEwLjEsIHRydWUpOworICAg
IGNoZWNrTG93ZXJCb3VuZEtleVJhbmdlKDExLjIsIGZhbHNlKTsKKyAgICBjaGVja0xvd2VyQm91
bmRLZXlSYW5nZSgxMi4zKTsKKyAgICBjaGVja0xvd2VyQm91bmRLZXlSYW5nZSgiJ2FhJyIsIHRy
dWUpOworICAgIGNoZWNrTG93ZXJCb3VuZEtleVJhbmdlKCInYWInIiwgZmFsc2UpOworICAgIGNo
ZWNrTG93ZXJCb3VuZEtleVJhbmdlKCInYWMnIik7CisKKyAgICBjaGVja1VwcGVyQm91bmRLZXlS
YW5nZSgyMCwgdHJ1ZSk7CisgICAgY2hlY2tVcHBlckJvdW5kS2V5UmFuZ2UoMjEsIGZhbHNlKTsK
KyAgICBjaGVja1VwcGVyQm91bmRLZXlSYW5nZSgyMik7CisgICAgY2hlY2tVcHBlckJvdW5kS2V5
UmFuZ2UoMjAuMiwgdHJ1ZSk7CisgICAgY2hlY2tVcHBlckJvdW5kS2V5UmFuZ2UoMjEuMywgZmFs
c2UpOworICAgIGNoZWNrVXBwZXJCb3VuZEtleVJhbmdlKDIyLjQpOworICAgIGNoZWNrVXBwZXJC
b3VuZEtleVJhbmdlKCInYmEnIiwgdHJ1ZSk7CisgICAgY2hlY2tVcHBlckJvdW5kS2V5UmFuZ2Uo
IidiYiciLCBmYWxzZSk7CisgICAgY2hlY2tVcHBlckJvdW5kS2V5UmFuZ2UoIidiYyciKTsKKwor
ICAgIGNoZWNrQm91bmRLZXlSYW5nZSgzMCwgNDApOworICAgIGNoZWNrQm91bmRLZXlSYW5nZSgz
MSwgNDEsIGZhbHNlLCBmYWxzZSk7CisgICAgY2hlY2tCb3VuZEtleVJhbmdlKDMyLCA0MiwgZmFs
c2UsIHRydWUpOworICAgIGNoZWNrQm91bmRLZXlSYW5nZSgzMywgNDMsIHRydWUsIGZhbHNlKTsK
KyAgICBjaGVja0JvdW5kS2V5UmFuZ2UoMzQsIDQ0LCB0cnVlLCB0cnVlKTsKKworICAgIGNoZWNr
Qm91bmRLZXlSYW5nZSgzMC4xLCA0MC4yKTsKKyAgICBjaGVja0JvdW5kS2V5UmFuZ2UoMzEuMywg
NDEuNCwgZmFsc2UsIGZhbHNlKTsKKyAgICBjaGVja0JvdW5kS2V5UmFuZ2UoMzIuNSwgNDIuNiwg
ZmFsc2UsIHRydWUpOworICAgIGNoZWNrQm91bmRLZXlSYW5nZSgzMy43LCA0My44LCB0cnVlLCBm
YWxzZSk7CisgICAgY2hlY2tCb3VuZEtleVJhbmdlKDM0LjksIDQ0LjAsIHRydWUsIHRydWUpOwor
CisgICAgY2hlY2tCb3VuZEtleVJhbmdlKCInYWFhJyIsICInYWJhJyIsIGZhbHNlLCBmYWxzZSk7
CisgICAgY2hlY2tCb3VuZEtleVJhbmdlKCInYWFiJyIsICInYWJiJyIpOworICAgIGNoZWNrQm91
bmRLZXlSYW5nZSgiJ2FhYyciLCAiJ2FiYyciLCBmYWxzZSwgZmFsc2UpOworICAgIGNoZWNrQm91
bmRLZXlSYW5nZSgiJ2FhZCciLCAiJ2FiZCciLCBmYWxzZSwgdHJ1ZSk7CisgICAgY2hlY2tCb3Vu
ZEtleVJhbmdlKCInYWFlJyIsICInYWJlJyIsIHRydWUsIGZhbHNlKTsKKyAgICBjaGVja0JvdW5k
S2V5UmFuZ2UoIidhYWYnIiwgIidhYmYnIiwgdHJ1ZSwgdHJ1ZSk7CisKKyAgICB0cnkgeworICAg
ICAgICBkZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIG9ubHkoe30pIik7CisgICAg
ICAgIElEQktleVJhbmdlLm9ubHkoe30pOworICAgICAgICB0ZXN0RmFpbGVkKCJObyBleGNlcHRp
b24gdGhyb3duIik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICB0ZXN0UGFzc2VkKCJDYXVn
aHQgZXhjZXB0aW9uOiAiICsgZS50b1N0cmluZygpKTsKKyAgICB9CisKKyAgICB0cnkgeworICAg
ICAgICBkZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIHVwcGVyQm91bmQoe30pIik7
CisgICAgICAgIElEQktleVJhbmdlLnVwcGVyQm91bmQoe30pOworICAgICAgICB0ZXN0RmFpbGVk
KCJObyBleGNlcHRpb24gdGhyb3duIik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICB0ZXN0
UGFzc2VkKCJDYXVnaHQgZXhjZXB0aW9uOiAiICsgZS50b1N0cmluZygpKTsKKyAgICB9CisKKyAg
ICB0cnkgeworICAgICAgICBkZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIGxvd2Vy
Qm91bmQoe30pIik7CisgICAgICAgIElEQktleVJhbmdlLmxvd2VyQm91bmQoe30pOworICAgICAg
ICB0ZXN0RmFpbGVkKCJObyBleGNlcHRpb24gdGhyb3duIik7CisgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICB0ZXN0UGFzc2VkKCJDYXVnaHQgZXhjZXB0aW9uOiAiICsgZS50b1N0cmluZygpKTsK
KyAgICB9CisKKyAgICB0cnkgeworICAgICAgICBkZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtl
eSBpbnRvIGJvdW5kKG51bGwsIHt9KSIpOworICAgICAgICBJREJLZXlSYW5nZS5ib3VuZChudWxs
LCB7fSk7CisgICAgICAgIHRlc3RGYWlsZWQoIk5vIGV4Y2VwdGlvbiB0aHJvd24iKTsKKyAgICB9
IGNhdGNoIChlKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkNhdWdodCBleGNlcHRpb246ICIgKyBl
LnRvU3RyaW5nKCkpOworICAgIH0KKworICAgIHRyeSB7CisgICAgICAgIGRlYnVnKCJQYXNzaW5n
IGFuIGludmFsaWQga2V5IGludG8gYm91bmQoe30sbnVsbCkiKTsKKyAgICAgICAgSURCS2V5UmFu
Z2UuYm91bmQoe30sIG51bGwpOworICAgICAgICB0ZXN0RmFpbGVkKCJObyBleGNlcHRpb24gdGhy
b3duIik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICB0ZXN0UGFzc2VkKCJDYXVnaHQgZXhj
ZXB0aW9uOiAiICsgZS50b1N0cmluZygpKTsKKyAgICB9CisKKyAgICB0cnkgeworICAgICAgICBk
ZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIGJvdW5kKHt9LCB7fSkiKTsKKyAgICAg
ICAgSURCS2V5UmFuZ2UuYm91bmQoe30sIHt9KTsKKyAgICAgICAgdGVzdEZhaWxlZCgiTm8gZXhj
ZXB0aW9uIHRocm93biIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgi
Q2F1Z2h0IGV4Y2VwdGlvbjogIiArIGUudG9TdHJpbmcoKSk7CisgICAgfQorCisgICAgZGVidWco
Ikxvd2VyIGtleSBncmVhdGVyIHRoYW4gaGlnaGVyIGtleSwgYm91bmQoNCwgMykiKTsKKyAgICBl
dmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJJREJLZXlSYW5nZS5ib3VuZCg0LCAzKSIsICJJREJEYXRh
YmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworCisgICAgZGVidWcoIkVxdWFsIGtleXMsIGVpdGhl
ciBvZiB0aGUgYm91bmRzIGlzIG9wZW4sIGJvdW5kKDQsIDQsIHRydWUsIGZhbHNlKSIpOworICAg
IGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIklEQktleVJhbmdlLmJvdW5kKDQsIDQsIHRydWUsIGZh
bHNlKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworCisgICAgZGVidWcoIkVx
dWFsIGtleXMsIGVpdGhlciBvZiB0aGUgYm91bmRzIGlzIG9wZW4sIGJvdW5kKDQsIDQsIGZhbHNl
LCB0cnVlKSIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIklEQktleVJhbmdlLmJvdW5k
KDQsIDQsIGZhbHNlLCB0cnVlKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwor
CisgICAgZGVidWcoIkVxdWFsIGtleXMsIGVpdGhlciBvZiB0aGUgYm91bmRzIGlzIG9wZW4sIGJv
dW5kKDQsIDQsIHRydWUsIHRydWUpIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiSURC
S2V5UmFuZ2UuYm91bmQoNCwgNCwgdHJ1ZSwgdHJ1ZSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24u
REFUQV9FUlIiKTsKKworICAgIGRlYnVnKCJFcXVhbCBrZXlzLCBub25lIG9mIHRoZSBib3VuZHMg
aXMgb3BlbiwgYm91bmQoNCwgNCwgZmFsc2UsIGZhbHNlKSIpOworICAgIElEQktleVJhbmdlLmJv
dW5kKDQsIDQsIGZhbHNlLCBmYWxzZSk7Cit9CisKK3Rlc3QoKTsKKworZmluaXNoSlNUZXN0KCk7
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2xpc3Qtb3JkZXJpbmcuanMgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvbGlzdC1vcmRlcmluZy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
MzU5OGZkNzIzNTg2MGVkYTc4YjJmMTcxZWUxNGRiMGMwYzFhY2NmCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2xpc3Qtb3JkZXJpbmcu
anMKQEAgLTAsMCArMSw4NCBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9y
dFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Cisg
ICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IHN0
cmluZyBsaXN0IG9yZGVyaW5nIGluIEluZGV4ZWREQi4iKTsKKwordmFyIGV4cGVjdGVkX29yZGVy
ID0gWworICAiIiwKKyAgIlx4MDAiLCAvLyAnTlVMTCcgKFUrMDAwMCkKKyAgIjAiLAorICAiMSIs
CisgICJBIiwKKyAgIkIiLAorICAiYSIsCisgICJiIiwKKyAgIlx4N0YiLCAvLyAnREVMRVRFJyAo
VSswMDdGKQorICAiXHhDMCIsIC8vICdMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggR1JBVkUn
IChVKzAwQzApCisgICJceEMxIiwgLy8gJ0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBBQ1VU
RScgKFUrMDBDMSkKKyAgIlx4RTAiLCAvLyAnTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBHUkFW
RScgKFUrMDBFMCkKKyAgIlx4RTEiLCAvLyAnTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBBQ1VU
RScgKFUrMDBFMSkKKyAgIlx4RkYiLCAvLyAnTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBESUFF
UkVTSVMnIChVKzAwRkYpCisgICJcdTAxMDAiLCAvLyAnTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBX
SVRIIE1BQ1JPTicgKFUrMDEwMCkKKyAgIlx1MTAwMCIsIC8vICdNWUFOTUFSIExFVFRFUiBLQScg
KFUrMTAwMCkKKyAgIlx1RDgzNFx1REQxRSIsIC8vICdNVVNJQ0FMIFNZTUJPTCBHLUNMRUYnIChV
KzFEMTFFKSwgVVRGLTE2IHN1cnJvZ2F0ZSBwYWlycworICAiXHVGRkZEIiAvLyAnUkVQTEFDRU1F
TlQgQ0hBUkFDVEVSJyAoVStGRkZEKQorXTsKK3ZhciBpLCB0bXAsIHBlcm11dGVkX29yZGVyID0g
ZXhwZWN0ZWRfb3JkZXIuc2xpY2UoKTsgcGVybXV0ZWRfb3JkZXIucmV2ZXJzZSgpOworZm9yIChp
ID0gMDsgaSA8IHBlcm11dGVkX29yZGVyLmxlbmd0aCAtIDI7IGkgKz0gMikgeworICAgIHRtcCA9
IHBlcm11dGVkX29yZGVyW2ldOworICAgIHBlcm11dGVkX29yZGVyW2ldID0gcGVybXV0ZWRfb3Jk
ZXJbaSArIDFdOworICAgIHBlcm11dGVkX29yZGVyW2kgKyAxXSA9IHRtcDsKK30KKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBkZWJ1ZygiY2hl
Y2sgdGhhdCB0aGUgZXhwZWN0ZWQgb3JkZXIgaXMgdGhlIGNhbm9uaWNhbCBKUyBzb3J0IG9yZGVy
OiIpOworICAgIGV2YWxBbmRMb2coInNvcnRlZF9vcmRlciA9IGV4cGVjdGVkX29yZGVyLnNsaWNl
KCk7IHNvcnRlZF9vcmRlci5zb3J0KCkiKTsKKyAgICBzaG91bGRCZVRydWUoImFyZUFycmF5c0Vx
dWFsKHNvcnRlZF9vcmRlciwgZXhwZWN0ZWRfb3JkZXIpIik7CisgICAgdGVzdFN0b3Jlc0FuZElu
ZGV4ZXMoKTsKK30KKworZnVuY3Rpb24gdGVzdFN0b3Jlc0FuZEluZGV4ZXMoKQoreworICAgIGRl
YnVnKCIiKTsKKyAgICBkZWJ1ZygidGVzdFN0b3Jlc0FuZEluZGV4ZXMoKToiKTsKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCdsaXN0LW9yZGVyaW5n
JykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdsaXN0LW9yZGVyaW5nJykiKTsKKyAgICAgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgZXZhbEFuZExvZygiZGIgPSBy
ZXF1ZXN0LnJlc3VsdCIpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkYi52
ZXJzaW9uIiwgIiIpOworICAgICAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZl
cnNpb24oJzEnKSIpOworICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUp
IHsKKyAgICAgICAgICAgICAgICB0cmFucyA9IHJlcXVlc3QucmVzdWx0OworCisgICAgICAgICAg
ICAgICAgZGVidWcoIiIpOworICAgICAgICAgICAgICAgIGRlYnVnKCJPYmplY3Qgc3RvcmVzOiIp
OworICAgICAgICAgICAgICAgIHBlcm11dGVkX29yZGVyLmZvckVhY2goZnVuY3Rpb24gKG5hbWUp
IHsKKyAgICAgICAgICAgICAgICAgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUo
IiArIEpTT04uc3RyaW5naWZ5KG5hbWUpICsiKSIpOworICAgICAgICAgICAgICAgIH0pOworCisg
ICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJhcmVBcnJheXNFcXVhbChkYi5vYmplY3RTdG9y
ZU5hbWVzLCBleHBlY3RlZF9vcmRlcikiKTsKKworICAgICAgICAgICAgICAgIGRlYnVnKCIiKTsK
KyAgICAgICAgICAgICAgICBkZWJ1ZygiSW5kZXhlczoiKTsKKyAgICAgICAgICAgICAgICBzdG9y
ZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsK
KyAgICAgICAgICAgICAgICBwZXJtdXRlZF9vcmRlci5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7
CisgICAgICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCIgKyBK
U09OLnN0cmluZ2lmeShuYW1lKSArIiwgJ2tleVBhdGgnKSIpOworICAgICAgICAgICAgICAgIH0p
OworCisgICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJhcmVBcnJheXNFcXVhbChzdG9yZS5p
bmRleE5hbWVzLCBleHBlY3RlZF9vcmRlcikiKTsKKworICAgICAgICAgICAgICAgIHRyYW5zLm9u
Y29tcGxldGUgPSBmaW5pc2hKU1Rlc3Q7CisgICAgICAgICAgICB9OworICAgICAgICB9OworICAg
IH07Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvbXV0YXRpbmctY3Vyc29y
LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL211dGF0aW5nLWN1
cnNvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yN2Q2MWY2Y2M0MGIwNjYwODBhZjExZGU2NTFmMTgzMTE2N2Zh
MGNkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL211dGF0aW5nLWN1cnNvci5qcwpAQCAtMCwwICsxLDEzMiBAQAoraWYgKHRoaXMuaW1w
b3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9
CisKK2Rlc2NyaXB0aW9uKCJUZXN0IG11dGF0aW5nIGFuIEluZGV4ZWREQidzIG9iamVjdHN0b3Jl
IGZyb20gYSBjdXJzb3IuIik7CisKK3Rlc3QoKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAg
cmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhl
ZERCLm9wZW4oJ211dGF0aW5nLWN1cnNvcicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBv
cGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIHZhciBkYiA9IGV2YWxBbmRM
b2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImRiLnNldFZlcnNpb24oJzEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVy
c2lvblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb25TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygic2V0
VmVyc2lvblN1Y2Nlc3MoKToiKTsKKyAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVs
bCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0
cmFucy5vbmNvbXBsZXRlID0gb3BlbkZvcndhcmRDdXJzb3I7CisKKyAgICBkZWxldGVBbGxPYmpl
Y3RTdG9yZXMoZGIpOworCisgICAgdmFyIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0
U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgIGV2YWxBbmRMb2co
Im9iamVjdFN0b3JlLmFkZCgxLCAxKS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2si
KTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoMiwgMikub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrIik7CisgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKDMs
IDMpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2co
Im9iamVjdFN0b3JlLmFkZCg0LCA0KS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2si
KTsKK30KKworZnVuY3Rpb24gb3BlbkZvcndhcmRDdXJzb3IoKQoreworICAgIGRlYnVnKCJvcGVu
Rm9yd2FyZEN1cnNvcigpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlv
bihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgdHJhbnMub25h
Ym9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSBm
b3J3YXJkQ3Vyc29yQ29tcGxldGU7CisKKyAgICBzZWxmLm9iamVjdFN0b3JlID0gZXZhbEFuZExv
ZygidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
Zygib2JqZWN0U3RvcmUub3BlbkN1cnNvcigpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
b3J3YXJkQ3Vyc29yOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworICAgIHNlbGYuY3Vyc29yU3RlcHMgPSAwOworfQorCitmdW5jdGlvbiBmb3J3YXJkQ3Vy
c29yKCkKK3sKKyAgICBkZWJ1ZygiZm9yd2FyZEN1cnNvcigpIik7CisgICAgc2VsZi5jdXJzb3Ig
PSBldmVudC50YXJnZXQucmVzdWx0OworCisgICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0g
bnVsbCkgeworICAgICAgICBzaG91bGRCZSgiY3Vyc29yU3RlcHMiLCAiNSIpOworCisgICAgICAg
IC8vIExldCB0aGUgdHJhbnNhY3Rpb24gZmluaXNoLgorICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgZGVidWcoKytjdXJzb3JTdGVwcyk7CisgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAi
Y3Vyc29yU3RlcHMiKTsKKyAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgImN1cnNvclN0ZXBz
Iik7CisKKyAgICBpZiAoY3Vyc29yU3RlcHMgPT0gMSkgeworICAgICAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiZXZlbnQudGFyZ2V0LnNvdXJjZS5hZGQoNSwgNSkiKTsKKyAgICAgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCki
KTsgfQorICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICB9IGVsc2UgeworICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKSIpOwor
ICAgIH0KK30KKworZnVuY3Rpb24gZm9yd2FyZEN1cnNvckNvbXBsZXRlKCkKK3sKKyAgICBkZWJ1
ZygiZm9yd2FyZEN1cnNvckNvbXBsZXRlKCkiKTsKKyAgICBvcGVuUmV2ZXJzZUN1cnNvcigpCit9
CisKK2Z1bmN0aW9uIG9wZW5SZXZlcnNlQ3Vyc29yKCkKK3sKKyAgICBkZWJ1Zygib3BlblJldmVy
c2VDdXJzb3IoKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydz
dG9yZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIHRyYW5zLm9uYWJvcnQg
PSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gcmV2ZXJz
ZUN1cnNvckNvbXBsZXRlOworCisgICAgc2VsZi5vYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coInRy
YW5zLm9iamVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIm9i
amVjdFN0b3JlLm9wZW5DdXJzb3IobnVsbCwgSURCQ3Vyc29yLlBSRVYpIik7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSByZXZlcnNlQ3Vyc29yOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHNlbGYuY3Vyc29yU3RlcHMgPSA2OworfQorCitmdW5j
dGlvbiByZXZlcnNlQ3Vyc29yKCkKK3sKKyAgICBkZWJ1ZygicmV2ZXJzZUN1cnNvcigpIik7Cisg
ICAgc2VsZi5jdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OworCisgICAgaWYgKGV2ZW50LnRh
cmdldC5yZXN1bHQgPT0gbnVsbCkgeworICAgICAgICBzaG91bGRCZSgiY3Vyc29yU3RlcHMiLCAi
MCIpOworCisgICAgICAgIC8vIExldCB0aGUgdHJhbnNhY3Rpb24gZmluaXNoLgorICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgZGVidWcoLS1jdXJzb3JTdGVwcyk7CisgICAgc2hvdWxkQmUo
ImN1cnNvci5rZXkiLCAiY3Vyc29yU3RlcHMiKTsKKyAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVl
IiwgImN1cnNvclN0ZXBzIik7CisKKyAgICBpZiAoY3Vyc29yU3RlcHMgPT0gMikgeworICAgICAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnNvdXJjZS5hZGQoMCwgMCkiKTsK
KyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgZXZhbEFuZExvZygiY3Vy
c29yLmNvbnRpbnVlKCkiKTsgfQorICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKKyAgICB9IGVsc2UgeworICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3Iu
Y29udGludWUoKSIpOworICAgIH0KK30KKworZnVuY3Rpb24gcmV2ZXJzZUN1cnNvckNvbXBsZXRl
KCkKK3sKKyAgICBkZWJ1ZygicmV2ZXJzZUN1cnNvckNvbXBsZXRlKCkiKTsKKyAgICBmaW5pc2hK
U1Rlc3QoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0U3RvcmUtcmVxdWlyZWQt
YXJndW1lbnRzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29i
amVjdFN0b3JlLXJlcXVpcmVkLWFyZ3VtZW50cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZGY4YjcwNWM4Mjlh
ZWRjNjY5YWIxYWI1MjU2MTJhODZiNjA5OTYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdFN0b3JlLXJlcXVpcmVkLWFyZ3Vt
ZW50cy5qcwpAQCAtMCwwICsxLDQ0IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAg
aW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMn
KTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRl
c3QgSW5kZXhlZERCIG9iamVjdCBzdG9yZSByZXF1aXJlZCBhcmd1bWVudHMiKTsKKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBz
ZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJh
c2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNj
cmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBv
cGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVy
c2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9i
amVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworfQorCitmdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKK3sKKyAgICBk
ZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nKTsiKTsKKyAgICBzaG91
bGRUaHJvdygib2JqZWN0U3RvcmUucHV0KCk7Iik7CisgICAgc2hvdWxkVGhyb3coIm9iamVjdFN0
b3JlLmFkZCgpOyIpOworICAgIHNob3VsZFRocm93KCJvYmplY3RTdG9yZS5kZWxldGUoKTsiKTsK
KyAgICBzaG91bGRUaHJvdygib2JqZWN0U3RvcmUuZ2V0KCk7Iik7CisgICAgc2hvdWxkVGhyb3co
Im9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCk7Iik7CisgICAgc2hvdWxkVGhyb3coIm9iamVjdFN0
b3JlLmNyZWF0ZUluZGV4KCdmb28nKTsiKTsKKyAgICBzaG91bGRUaHJvdygib2JqZWN0U3RvcmUu
aW5kZXgoKTsiKTsKKyAgICBzaG91bGRUaHJvdygib2JqZWN0U3RvcmUuZGVsZXRlSW5kZXgoKTsi
KTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9vYmplY3RzdG9yZS1hdXRvaW5jcmVtZW50LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3JlLWF1dG9pbmNyZW1lbnQuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGIxYjQ5YTMxM2RjZDEwZTM3ZmY2Y2Q3N2JlZmViOGIwNDZjNWRiOQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vYmplY3RzdG9y
ZS1hdXRvaW5jcmVtZW50LmpzCkBAIC0wLDAgKzEsMTkzIEBACitpZiAodGhpcy5pbXBvcnRTY3Jp
cHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVz
Y3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgSURCT2JqZWN0U3RvcmUgYXV0by1pbmNyZW1lbnQg
ZmVhdHVyZS4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4
ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ29iamVjdHN0
b3JlLWF1dG9pbmNyZW1lbnQnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nl
c3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsK
KyAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZl
cnNpb25TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKKyAg
ICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQg
PSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gc2V0VmVy
c2lvbkNvbXBsZXRlZDsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBk
ZWJ1ZygiY3JlYXRlT2JqZWN0U3RvcmUoKToiKTsKKyAgICBzZWxmLnN0b3JlID0gZXZhbEFuZExv
Zygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnU3RvcmVXaXRoS2V5UGF0aCcsIHtrZXlQ
YXRoOiAnaWQnLCBhdXRvSW5jcmVtZW50OiB0cnVlfSkiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5j
cmVhdGVPYmplY3RTdG9yZSgnU3RvcmVXaXRoQXV0b0luY3JlbWVudCcsIHthdXRvSW5jcmVtZW50
OiB0cnVlfSkiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnUGxhaW5P
bGRTdG9yZScsIHthdXRvSW5jcmVtZW50OiBmYWxzZX0pIik7CisgICAgZXZhbEFuZExvZygiZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ1N0b3JlV2l0aExvbmdLZXlQYXRoJywge2tleVBhdGg6ICdhLmIu
Yy5pZCcsIGF1dG9JbmNyZW1lbnQ6IHRydWV9KSIpOworICAgIHZhciBzdG9yZU5hbWVzID0gZXZh
bEFuZExvZygic3RvcmVOYW1lcyA9IGRiLm9iamVjdFN0b3JlTmFtZXMiKTsKKworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygic3RvcmUubmFtZSIsICJTdG9yZVdpdGhLZXlQYXRoIik7CisgICAg
c2hvdWxkQmUoInN0b3JlLmtleVBhdGgiLCAiJ2lkJyIpOworICAgIHNob3VsZEJlKCJzdG9yZU5h
bWVzLmNvbnRhaW5zKCdTdG9yZVdpdGhLZXlQYXRoJykiLCAidHJ1ZSIpOworICAgIHNob3VsZEJl
KCJzdG9yZU5hbWVzLmNvbnRhaW5zKCdTdG9yZVdpdGhBdXRvSW5jcmVtZW50JykiLCAidHJ1ZSIp
OworICAgIHNob3VsZEJlKCJzdG9yZU5hbWVzLmNvbnRhaW5zKCdQbGFpbk9sZFN0b3JlJykiLCAi
dHJ1ZSIpOworICAgIHNob3VsZEJlKCJzdG9yZU5hbWVzLmxlbmd0aCIsICI0Iik7CisKKyAgICAv
LyBMZXQgdGhlIHNldFZlcnNpb24gdHJhbnNhY3Rpb24gY29tcGxldGUuCit9CisKK2Z1bmN0aW9u
IHNldFZlcnNpb25Db21wbGV0ZWQoKQoreworICAgIGRlYnVnKCJzZXRWZXJzaW9uQ29tcGxldGVk
KCk6Iik7CisKKyAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2Fj
dGlvbihbJ1N0b3JlV2l0aEtleVBhdGgnLCAnU3RvcmVXaXRoQXV0b0luY3JlbWVudCcsICdQbGFp
bk9sZFN0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgdHJhbnMub25h
Ym9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSB0
ZXN0TG9uZ0tleVBhdGg7CisKKyAgICBzZWxmLnN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0
cmFucy5vYmplY3RTdG9yZSgnU3RvcmVXaXRoS2V5UGF0aCcpIik7CisKKyAgICBkZWJ1ZygiSW5z
ZXJ0IGludG8gb2JqZWN0IHN0b3JlIHdpdGggYXV0byBpbmNyZW1lbnQgYW5kIGtleSBwYXRoLCB3
aXRoIGtleSBpbiB0aGUgb2JqZWN0LiIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9y
ZS5hZGQoe25hbWU6ICdKZWZmZXJzc29uJywgbnVtYmVyOiAnNzAxMCcsIGlkOiAzfSkiKTsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEplZmZlcnNzb25TdWNjZXNzOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBhZGRKZWZm
ZXJzc29uU3VjY2VzcygpCit7CisgICAgZGVidWcoImFkZEplZmZlcnNzb25TdWNjZXNzKCk6Iik7
CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAiMyIpOworCisgICAgZGVidWco
Ikluc2VydCBpbnRvIG9iamVjdCBzdG9yZSB3aXRoIGF1dG8gaW5jcmVtZW50IGFuZCBrZXkgcGF0
aCwgd2l0aG91dCBrZXkgaW4gdGhlIG9iamVjdC4iKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
Zygic3RvcmUuYWRkKHtuYW1lOiAnTGluY29sbicsIG51bWJlcjogJzcwMTInfSkiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZExpbmNvbG5XaXRoSW5qZWN0S2V5U3VjY2VzczsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
YWRkTGluY29sbldpdGhJbmplY3RLZXlTdWNjZXNzKCkKK3sKKyAgICBkZWJ1ZygiYWRkTGluY29s
bldpdGhJbmplY3RLZXlTdWNjZXNzKCk6Iik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5y
ZXN1bHQiLCAiNCIpOworCisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygic3RvcmUuZ2V0KDQpIik7
CisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGdldExpbmNvbG5BZnRlckluamVjdGVkS2V5U3VjY2Vz
czsKKyAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiBnZXRMaW5jb2xuQWZ0ZXJJbmplY3RlZEtleVN1Y2Nlc3MoKQoreworICAgIGRlYnVn
KCJnZXRMaW5jb2xuQWZ0ZXJJbmplY3RlZEtleVN1Y2Nlc3MoKToiKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQubmFtZSIsICJMaW5jb2xuIik7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0Lm51bWJlciIsICI3MDEy
Iik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQuaWQiLCAiNCIpOworCisgICAg
c2VsZi5zdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ1N0b3Jl
V2l0aEF1dG9JbmNyZW1lbnQnKSIpOworICAgIGRlYnVnKCJJbnNlcnQgaW50byBvYmplY3Qgc3Rv
cmUgd2l0aCBrZXkgZ2VuIHVzaW5nIGV4cGxpY2l0IGtleSIpOworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJzdG9yZS5hZGQoe25hbWU6ICdMaW5jb2xuJywgbnVtYmVyOiAnNzAxMid9LCA1KSIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkTGluY29sbldpdGhFeHBsaWNpdEtleVN1Y2Nl
c3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIGFkZExpbmNvbG5XaXRoRXhwbGljaXRLZXlTdWNjZXNzKCkKK3sKKyAgICBkZWJ1
ZygiYWRkTGluY29sbldpdGhFeHBsaWNpdEtleVN1Y2Nlc3MoKToiKTsKKyAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0LnJlc3VsdCIsICI1Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
c3RvcmUuZ2V0KDUpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRMaW5jb2xuU3VjY2Vz
czsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKwor
ZnVuY3Rpb24gZ2V0TGluY29sblN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJnZXRMaW5jb2xuU3Vj
Y2VzcygpOiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3Vs
dC5uYW1lIiwgIkxpbmNvbG4iKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRh
cmdldC5yZXN1bHQubnVtYmVyIiwgIjcwMTIiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJzdG9yZS5wdXQoe25hbWU6ICdBYnJhaGFtJywgbnVtYmVyOiAnMjEwNyd9KSIpOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gcHV0QWJyYWhhbVN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHB1dEFicmFoYW1TdWNj
ZXNzKCkKK3sKKyAgICBkZWJ1ZygicHV0QWJyYWhhbVN1Y2Nlc3MoKToiKTsKKyAgICBzaG91bGRC
ZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICI2Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
Zygic3RvcmUuZ2V0KDYpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRBYnJhaGFtU3Vj
Y2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30K
KworZnVuY3Rpb24gZ2V0QWJyYWhhbVN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJnZXRBYnJhaGFt
U3VjY2VzcygpOiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJl
c3VsdC5uYW1lIiwgIkFicmFoYW0iKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50
LnRhcmdldC5yZXN1bHQubnVtYmVyIiwgIjIxMDciKTsKKworICAgIHNlbGYuc3RvcmUgPSBldmFs
QW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdQbGFpbk9sZFN0b3JlJykiKTsKKyAg
ICBkZWJ1ZygiVHJ5IGFkZGluZyB3aXRoIG5vIGtleSB0byBvYmplY3Qgc3RvcmUgd2l0aG91dCBh
dXRvIGluY3JlbWVudC4iKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5hZGQo
e25hbWU6ICdBZGFtJ30pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7bmFtZTogJ0FkYW0nfSwgMSkiKTsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEFkYW1TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBhZGRBZGFtU3VjY2Vz
cygpCit7CisgICAgZGVidWcoImFkZEFkYW1TdWNjZXNzKCk6Iik7CisgICAgc2hvdWxkQmUoImV2
ZW50LnRhcmdldC5yZXN1bHQiLCAiMSIpOworfQorCitmdW5jdGlvbiB0ZXN0TG9uZ0tleVBhdGgo
KQoreworICAgIGRlYnVnKCJ0ZXN0TG9uZ0tleVBhdGgoKToiKTsKKyAgICB0cmFucyA9IGV2YWxB
bmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ1N0b3JlV2l0aExvbmdLZXlQYXRoJywgSURC
VHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3Rl
ZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IGZpbmlzaEpTVGVzdDsKKwor
ICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnU3RvcmVX
aXRoTG9uZ0tleVBhdGgnKSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQo
e2ZvbzogJ2Jhcid9KSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe2ZvbzogJ2Jhcics
IGE6IHt9fSkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHtmb286ICdiYXInLCBhOiB7
Yjoge319fSkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHtmb286ICdiYXInLCBhOiB7
Yjoge2M6IHt9fX19KSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworICAgIGN1cnNvclJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5vcGVuQ3Vyc29y
KCkiKTsKKyAgICBjdXJzb3JSZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICBldmFsQW5kTG9nKCJleHBlY3RlZCA9IG51bGwiKTsKKyAgICBldmFsQW5kTG9nKCJj
b3VudCA9IDAiKTsKKyAgICBjdXJzb3JSZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgY3Vyc29yID0gY3Vyc29yUmVxdWVzdC5yZXN1bHQ7CisgICAgICAgIGlmICghY3Vy
c29yKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiY291bnQiLCAiNCIpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChleHBlY3RlZCA9PT0gbnVsbCkgeworICAg
ICAgICAgICAgZXZhbEFuZExvZygiZXhwZWN0ZWQgPSBjdXJzb3IudmFsdWUuYS5iLmMuaWQgKyAx
Iik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVl
LmZvbyIsICInYmFyJyIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5hLmIu
Yy5pZCIsICJleHBlY3RlZCIpOworICAgICAgICAgICAgZXZhbEFuZExvZygiZXhwZWN0ZWQgPSBj
dXJzb3IudmFsdWUuYS5iLmMuaWQgKyAxIik7CisgICAgICAgIH0KKyAgICAgICAgY291bnQrKzsK
KyAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7CisgICAgfTsKK30KKwordGVzdCgpOwpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9vYmplY3RzdG9yZS1jbGVhci5qcyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vYmplY3RzdG9yZS1jbGVhci5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
OTQ3YzZjNzI0MWU3YTI0NTk2ZGVmZmJlNWJlYmUyNDg2YjNhYjRhCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3JlLWNs
ZWFyLmpzCkBAIC0wLDAgKzEsMTAyIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAg
aW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMn
KTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRl
c3QgSW5kZXhlZERCJ3Mgd2Via2l0SURCT2JqZWN0U3RvcmUuY2xlYXIoKS4iKTsKKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ29iamVjdHN0b3JlLWNsZWFyJykiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IHN0YXJ0U2V0VmVyc2lvbjsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc3RhcnRTZXRWZXJzaW9u
KCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwor
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJyki
KTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4aXN0aW5nOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxldGVF
eGlzdGluZygpCit7CisgICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKwor
ICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2co
InN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7CisKKyAg
ICBzZWxmLmluZGV4ID0gZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZScs
ICcnKSIpOworICAgIHNob3VsZEJlVHJ1ZSgic3RvcmUuaW5kZXhOYW1lcy5jb250YWlucygnaW5k
ZXhOYW1lJykiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoJ3ZhbHVl
JywgJ2tleScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVTZWNvbmRPYmplY3RT
dG9yZUFuZEFkZFZhbHVlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBjcmVhdGVTZWNvbmRPYmplY3RTdG9yZUFuZEFkZFZhbHVl
KCkKK3sKKyAgICBvdGhlclN0b3JlID0gZXZhbEFuZExvZygib3RoZXJTdG9yZSA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdvdGhlclN0b3JlTmFtZScsIG51bGwpIik7CisKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygib3RoZXJTdG9yZS5hZGQoJ3ZhbHVlJywgJ2tleScpIik7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBjbGVhck9iamVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVhck9iamVjdFN0b3JlKCkK
K3sKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuY2xlYXIoKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gY2xlYXJTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVhclN1Y2Nlc3MoKQoreworICAg
IHNob3VsZEJlVW5kZWZpbmVkKCJldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygic3RvcmUub3BlbkN1cnNvcigpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBvcGVuQ3Vyc29yU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlbkN1cnNvclN1Y2Nlc3MoKQoreworICAg
IHNob3VsZEJlTnVsbCgiZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgaW5kZXggPSBldmFs
QW5kTG9nKCJpbmRleCA9IHN0b3JlLmluZGV4KCdpbmRleE5hbWUnKSIpOworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleC5vcGVuS2V5Q3Vyc29yKCkiKTsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IG9wZW5LZXlDdXJzb3JTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuS2V5Q3Vyc29yU3VjY2Vzcygp
Cit7CisgICAgZGVidWcoIm9wZW5LZXlDdXJzb3JTdWNjZXNzKCk6Iik7CisgICAgc2hvdWxkQmVO
dWxsKCJldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHNldFZl
cnNpb25Db21wbGV0ZTsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbkNvbXBsZXRlKCkKK3sKKyAg
ICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coImRiLnRyYW5zYWN0aW9uKFsnb3RoZXJTdG9yZU5h
bWUnXSkiKTsKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgdmFyIG90aGVyU3RvcmUgPSBldmFsQW5kTG9nKCJvdGhlclN0b3JlID0gdHJhbnNh
Y3Rpb24ub2JqZWN0U3RvcmUoJ290aGVyU3RvcmVOYW1lJykiKTsKKworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJvdGhlclN0b3JlLmdldCgna2V5JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGdldFN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIGdldFN1Y2Nlc3MoKQoreworICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ2YWx1ZSIpOworCisgICAgZmluaXNoSlNU
ZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3RvcmUt
Y291bnQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0
c3RvcmUtY291bnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjlkYWUxNzY1NjQxNjgzYTUwZDk2YmNiMTUxMGMy
ODVmMjM5NTJmOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9vYmplY3RzdG9yZS1jb3VudC5qcwpAQCAtMCwwICsxLDE0NCBAQAoraWYg
KHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVk
LmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIElEQk9iamVjdFN0b3Jl
LmNvdW50KCkuIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZp
eGVzKCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdvYmplY3Rz
dG9yZS1jb3VudCcpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZGIg
PSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICAgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICAgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gcHJlcGFyZURhdGFiYXNlOworICAgIH07Cit9CisKK2Z1bmN0aW9uIHBy
ZXBhcmVEYXRhYmFzZSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJwcmVwYXJpbmcg
ZGF0YWJhc2UiKTsKKyAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50
YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworCisg
ICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIHN0b3JlID0gZXZhbEFuZExvZygi
c3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKKworICAg
IGRlYnVnKCJhZGRpbmcgMCAuLi4gOTkiKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsg
KytpKSB7CisgICAgICAgIHJlcXVlc3QgPSBzdG9yZS5hZGQoaSwgaSk7CisgICAgICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIH0KKyAgICB0cmFucy5v
bmNvbXBsZXRlID0gdmVyaWZ5Q291bnQ7Cit9CisKK2Z1bmN0aW9uIHZlcmlmeUNvdW50KCkKK3sK
KyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInZlcmlmeWluZyBjb3VudCB3aXRob3V0IHJhbmdl
Iik7CisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9y
ZU5hbWUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7CisgICAgc2hvdWxkQmVUcnVlKCJ0
cmFucyAhPSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxi
YWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSB2ZXJpZnlDb3VudFdpdGhSYW5nZTsKKworICAg
IHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1l
JykiKTsKKyAgICBzaG91bGRCZVRydWUoInN0b3JlICE9IG51bGwiKTsKKworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gc3RvcmUuY291bnQoKSIpOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgICBzaG91bGRCZVRydWUoInR5cGVvZiByZXF1ZXN0LnJlc3Vs
dCA9PSAnbnVtYmVyJyIpOworICAgICAgICAgc2hvdWxkQmUoInJlcXVlc3QucmVzdWx0IiwgIjEw
MCIpOworICAgICAgICAgLy8gbGV0IHRoZSB0cmFuc2FjdGlvbiBjb21wbGV0ZQorICAgIH07Cit9
CisKK2Z1bmN0aW9uIHZlcmlmeUNvdW50V2l0aFJhbmdlKCkKK3sKKyAgICBkZWJ1ZygiIik7Cisg
ICAgZGVidWcoInZlcmlmeWluZyBjb3VudCB3aXRoIHJhbmdlIik7CisgICAgdHJhbnMgPSBldmFs
QW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZU5hbWUnLCBJREJUcmFuc2FjdGlv
bi5SRUFEX09OTFkpIik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPSBudWxsIik7CisgICAg
dHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zLm9uY29t
cGxldGUgPSB2ZXJpZnlDb3VudFdpdGhLZXk7CisKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0
b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgc2hvdWxkQmVUcnVl
KCJzdG9yZSAhPSBudWxsIik7CisKKyAgICB2YXIgdGVzdHMgPSBbCisgICAgICAgIHsgbG93ZXI6
IDAsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiA5OSwgdXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0
ZWQ6IDEwMCB9LAorICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IHRydWUsIHVwcGVyOiA5
OSwgdXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDk5IH0sCisgICAgICAgIHsgbG93ZXI6IDAs
IGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiA5OSwgdXBwZXJPcGVuOiB0cnVlLCBleHBlY3RlZDog
OTkgfSwKKyAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiB0cnVlLCB1cHBlcjogOTksIHVw
cGVyT3BlbjogdHJ1ZSwgZXhwZWN0ZWQ6IDk4IH0sCisgICAgICAgIHsgbG93ZXI6IDAsIGxvd2Vy
T3BlbjogZmFsc2UsIHVwcGVyOiAxMDAsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiAxMDAg
fSwKKyAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDEwMCwgdXBw
ZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDEwMCB9LAorICAgICAgICB7IGxvd2VyOiAxMCwgbG93
ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDEwMCwgdXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDkw
IH0sCisgICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiAwLCB1cHBl
ck9wZW46IGZhbHNlLCBleHBlY3RlZDogMSB9LAorICAgICAgICB7IGxvd2VyOiA1MDAsIGxvd2Vy
T3BlbjogZmFsc2UsIHVwcGVyOiA1MDAsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiAwIH0K
KyAgICBdOworCisgICAgZnVuY3Rpb24gbmV4dFRlc3QoKSB7CisgICAgICAgIGRlYnVnKCIiKTsK
KyAgICAgICAgZXZhbEFuZExvZygidGVzdCA9ICIgKyBKU09OLnN0cmluZ2lmeSh0ZXN0cy5zaGlm
dCgpKSk7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gc3RvcmUuY291
bnQoSURCS2V5UmFuZ2UuYm91bmQodGVzdC5sb3dlciwgdGVzdC51cHBlciwgdGVzdC5sb3dlck9w
ZW4sIHRlc3QudXBwZXJPcGVuKSkiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0g
J251bWJlciciKTsKKyAgICAgICAgICAgICBzaG91bGRCZSgicmVxdWVzdC5yZXN1bHQiLCBTdHJp
bmcodGVzdC5leHBlY3RlZCkpOworCisgICAgICAgICAgICAgaWYgKHRlc3RzLmxlbmd0aCkgewor
ICAgICAgICAgICAgICAgICBuZXh0VGVzdCgpOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAvLyBvdGhlcndpc2UgbGV0IHRoZSB0cmFuc2FjdGlvbiBjb21wbGV0ZQorICAgICAgICB9Owor
ICAgIH0KKworICAgIG5leHRUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHZlcmlmeUNvdW50V2l0aEtl
eSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ2ZXJpZnlpbmcgY291bnQgd2l0aCBr
ZXkiKTsKKyAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0
b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkiKTsKKyAgICBzaG91bGRCZVRydWUo
InRyYW5zICE9IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2Fs
bGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IGZpbmlzaEpTVGVzdDsKKworICAgIHN0b3Jl
ID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsK
KyAgICBzaG91bGRCZVRydWUoInN0b3JlICE9IG51bGwiKTsKKworICAgIGV2YWxBbmRFeHBlY3RF
eGNlcHRpb24oInN0b3JlLmNvdW50KE5hTikiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9F
UlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5jb3VudCh7fSkiLCAiSURC
RGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJzdG9yZS5jb3VudCgvcmVnZXgvKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIp
OworCisgICAgdmFyIHRlc3RzID0gWworICAgICAgICB7IGtleTogMCwgZXhwZWN0ZWQ6IDEgfSwK
KyAgICAgICAgeyBrZXk6IDEwMCwgZXhwZWN0ZWQ6IDAgfSwKKyAgICAgICAgeyBrZXk6IG51bGws
IGV4cGVjdGVkOiAxMDAgfQorICAgIF07CisKKyAgICBmdW5jdGlvbiBuZXh0VGVzdCgpIHsKKyAg
ICAgICAgZGVidWcoIiIpOworICAgICAgICBldmFsQW5kTG9nKCJ0ZXN0ID0gIiArIEpTT04uc3Ry
aW5naWZ5KHRlc3RzLnNoaWZ0KCkpKTsKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBzdG9yZS5jb3VudCh0ZXN0LmtleSkiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBzaG91bGRCZVRydWUoInR5cGVvZiByZXF1ZXN0LnJl
c3VsdCA9PSAnbnVtYmVyJyIpOworICAgICAgICAgICAgc2hvdWxkQmUoInJlcXVlc3QucmVzdWx0
IiwgU3RyaW5nKHRlc3QuZXhwZWN0ZWQpKTsKKyAgICAgICAgICAgICBpZiAodGVzdHMubGVuZ3Ro
KSB7CisgICAgICAgICAgICAgICAgIG5leHRUZXN0KCk7CisgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgIC8vIG90aGVyd2lzZSBsZXQgdGhlIHRyYW5zYWN0aW9uIGNvbXBsZXRlCisgICAgICAg
IH07CisgICAgfQorCisgICAgbmV4dFRlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9vYmplY3RzdG9yZS1jdXJzb3IuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3RvcmUtY3Vyc29yLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyYzAy
YWM2MWE2MzRmYTNjY2ZlNGFkMjRlMDQxYTk4NzQ2YWIyOGEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3RvcmUtY3Vyc29y
LmpzCkBAIC0wLDAgKzEsMjI2IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1w
b3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsK
KyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3Qg
SW5kZXhlZERCJ3Mgb2JqZWN0U3RvcmUub3BlbkN1cnNvciArIHRoZSBjdXJzb3IgaXQgcHJvZHVj
ZXMgaW4gZGVwdGguIik7CisKKy8vIEluIG9yZGVyIG9mIGhvdyBpdCBzaG91bGQgYmUgc29ydGVk
IGJ5IEluZGV4ZWREQi4KK3NlbGYudGVzdERhdGEgPSBbCisgICAgMi43MTgyODE4Mjg0NTksCisg
ICAgMywKKyAgICAzLjE0MTU5MjY1LAorICAgIDEwLAorICAgIC8vIEZJWE1FOiBEYXRlcy4KKyAg
ICAiQSBiaWdnZXIgc3RyaW5nIiwKKyAgICAiVGhlIGJpZ2dlc3QiLAorICAgICJhIGxvdyBzdHJp
bmciCitdOworCitmdW5jdGlvbiBvcGVuRGF0YWJhc2UoKQoreworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJpbmRleGVkREIub3Blbignb2JqZWN0c3RvcmUtY3Vyc29yJykiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb247CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb24oKQoreworICAgIHNl
bGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVsZXRlRXhpc3Rpbmco
KQoreworICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMu
b25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworCisgICAgZGVsZXRlQWxsT2JqZWN0
U3RvcmVzKGRiKTsKKworICAgIHNlbGYub2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVh
dGVPYmplY3RTdG9yZSgnc29tZU9iamVjdFN0b3JlJykiKTsKKyAgICBzZWxmLm5leHRUb0FkZCA9
IDA7CisgICAgYWRkRGF0YSgpOworfQorCitmdW5jdGlvbiBhZGREYXRhKCkKK3sKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCcnLCB0ZXN0RGF0YVtuZXh0VG9BZGRd
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gKytzZWxmLm5leHRUb0FkZCA8IHRlc3REYXRh
Lmxlbmd0aCA/IGFkZERhdGEgOiBzY2hlZHVsZVRlc3RzOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzY2hlZHVsZVRlc3RzKCkK
K3sKKyAgICBkZWJ1ZygiU2NoZWR1bGluZyB0ZXN0cy4uLiIpOworICAgIHNlbGYuc2NoZWR1bGVk
VGVzdHMgPSBbXTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRlc3REYXRhLmxlbmd0aDsgKytp
KSB7CisgICAgICAgIC8qIGxlZnQgYm91bmQsIGlzIG9wZW4sIHJpZ2h0IGJvdW5kLCBpcyBvcGVu
LCBhc2NlbmRpbmcgKi8KKyAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwg
bnVsbCwgbnVsbCwgdHJ1ZV0pOworICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCBm
YWxzZSwgbnVsbCwgbnVsbCwgdHJ1ZV0pOworICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0
KFtudWxsLCBudWxsLCBpLCB0cnVlLCB0cnVlXSk7CisgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVu
c2hpZnQoW251bGwsIG51bGwsIGksIGZhbHNlLCB0cnVlXSk7CisgICAgICAgIHNjaGVkdWxlZFRl
c3RzLnVuc2hpZnQoW2ksIHRydWUsIG51bGwsIG51bGwsIGZhbHNlXSk7CisgICAgICAgIHNjaGVk
dWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBudWxsLCBudWxsLCBmYWxzZV0pOworICAgICAg
ICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtudWxsLCBudWxsLCBpLCB0cnVlLCBmYWxzZV0pOwor
ICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtudWxsLCBudWxsLCBpLCBmYWxzZSwgZmFs
c2VdKTsKKyAgICAgICAgZm9yICh2YXIgaiA9IDY7IGogPCB0ZXN0RGF0YS5sZW5ndGg7ICsraikg
eworICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwgaiwgdHJ1ZSwg
dHJ1ZV0pOworICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwgaiwg
ZmFsc2UsIHRydWVdKTsKKyAgICAgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZh
bHNlLCBqLCB0cnVlLCB0cnVlXSk7CisgICAgICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0
KFtpLCBmYWxzZSwgaiwgZmFsc2UsIHRydWVdKTsKKyAgICAgICAgICAgIHNjaGVkdWxlZFRlc3Rz
LnVuc2hpZnQoW2ksIHRydWUsIGosIHRydWUsIGZhbHNlXSk7CisgICAgICAgICAgICBzY2hlZHVs
ZWRUZXN0cy51bnNoaWZ0KFtpLCB0cnVlLCBqLCBmYWxzZSwgZmFsc2VdKTsKKyAgICAgICAgICAg
IHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBqLCB0cnVlLCBmYWxzZV0pOworICAg
ICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgZmFsc2UsIGosIGZhbHNlLCBmYWxz
ZV0pOworICAgICAgICB9CisgICAgfQorCisgICAgZGVidWcoIlJ1bm5pbmcgdGVzdHMuLi4iKTsK
KyAgICBydW5OZXh0VGVzdCgpOworfQorCitmdW5jdGlvbiBydW5OZXh0VGVzdCgpCit7CisgICAg
aWYgKCFzY2hlZHVsZWRUZXN0cy5sZW5ndGgpIHsKKyAgICAgICAgdGVzdE51bGxLZXlSYW5nZSgp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdmFyIHRlc3QgPSBzY2hlZHVsZWRUZXN0
cy5wb3AoKTsKKyAgICBzZWxmLmxvd2VyID0gdGVzdFswXTsKKyAgICBzZWxmLmxvd2VySXNPcGVu
ID0gdGVzdFsxXTsKKyAgICBzZWxmLnVwcGVyID0gdGVzdFsyXTsKKyAgICBzZWxmLnVwcGVySXNP
cGVuID0gdGVzdFszXTsKKyAgICBzZWxmLmFzY2VuZGluZyA9IHRlc3RbNF07CisKKyAgICBzdHIg
PSAiTmV4dCB0ZXN0OiAiOworICAgIGlmIChsb3dlciAhPT0gbnVsbCkgeworICAgICAgICBzdHIg
Kz0gImxvd2VyICI7CisgICAgICAgIGlmIChsb3dlcklzT3BlbikKKyAgICAgICAgICAgIHN0ciAr
PSAib3BlbiAiOworICAgICAgICBzdHIgKz0gImJvdW5kIGlzICIgKyBsb3dlciArICI7ICI7Cisg
ICAgfQorICAgIGlmICh1cHBlciAhPT0gbnVsbCkgeworICAgICAgICBzdHIgKz0gInVwcGVyICI7
CisgICAgICAgIGlmICh1cHBlcklzT3BlbikKKyAgICAgICAgICAgIHN0ciArPSAib3BlbiAiOwor
ICAgICAgICBzdHIgKz0gImJvdW5kIGlzICIgKyB1cHBlciArICI7ICI7CisgICAgfQorICAgIGlm
IChhc2NlbmRpbmcpCisgICAgICAgIHN0ciArPSAic29ydGVkIGFzY2VuZGluZy4iOworICAgIGVs
c2UKKyAgICAgICAgc3RyICs9ICJzb3J0ZWQgZGVzY2VuZGluZy4iOworCisgICAgZGVidWcoIiIp
OworICAgIGRlYnVnKHN0cik7CisKKyAgICBpZiAoYXNjZW5kaW5nKSB7CisgICAgICAgIGlmIChs
b3dlciAhPT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKCFsb3dlcklzT3BlbikKKyAgICAgICAg
ICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSBsb3dlcjsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSBsb3dlcisxOworICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IDA7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgaWYgKHVwcGVyICE9PSBudWxsKSB7CisgICAgICAgICAgICBpZiAoIXVwcGVySXNPcGVu
KQorICAgICAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IHVwcGVyOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IHVwcGVyLTE7Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gdGVzdERhdGEu
bGVuZ3RoLTE7CisgICAgfQorICAgIHRlc3RXaXRoaW5Cb3VuZHMoKTsKKworICAgIGlmICh0ZXN0
RGF0YVtsb3dlcl0gPT09IHRlc3REYXRhW3VwcGVyXSAmJiAobG93ZXJJc09wZW4gfHwgdXBwZXJJ
c09wZW4pKSB7CisgICAgICAgIGRlYnVnKCJTa2lwcGluZyBpbGxlZ2FsIGtleSByYW5nZS4iKTsK
KyAgICAgICAgcnVuTmV4dFRlc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZh
ciBrZXlSYW5nZTsKKyAgICBpZiAobG93ZXIgIT09IG51bGwgJiYgdXBwZXIgIT09IG51bGwpCisg
ICAgICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2UuYm91bmQodGVzdERhdGFbbG93ZXJdLCB0ZXN0
RGF0YVt1cHBlcl0sIGxvd2VySXNPcGVuLCB1cHBlcklzT3Blbik7CisgICAgZWxzZSBpZiAobG93
ZXIgIT09IG51bGwpCisgICAgICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2UubG93ZXJCb3VuZCh0
ZXN0RGF0YVtsb3dlcl0sIGxvd2VySXNPcGVuKTsKKyAgICBlbHNlCisgICAgICAgIGtleVJhbmdl
ID0gSURCS2V5UmFuZ2UudXBwZXJCb3VuZCh0ZXN0RGF0YVt1cHBlcl0sIHVwcGVySXNPcGVuKTsK
KworICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcihrZXlSYW5nZSwgYXNj
ZW5kaW5nID8gSURCQ3Vyc29yLk5FWFQgOiBJREJDdXJzb3IuUFJFVik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBjdXJzb3JJdGVyYXRpb247CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHRlc3RXaXRoaW5Cb3VuZHMoKQorewor
ICAgIGlmIChleHBlY3RlZEluZGV4IDwgMCB8fCB0ZXN0RGF0YS5sZW5ndGggPD0gZXhwZWN0ZWRJ
bmRleCkKKyAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gbnVsbDsKKyAgICBpZiAobG93ZXIg
IT09IG51bGwgJiYgZXhwZWN0ZWRJbmRleCA8IGxvd2VyKQorICAgICAgICBzZWxmLmV4cGVjdGVk
SW5kZXggPSBudWxsOworICAgIGlmICh1cHBlciAhPT0gbnVsbCAmJiB1cHBlciA8IGV4cGVjdGVk
SW5kZXgpCisgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IG51bGw7CisgICAgaWYgKGxvd2Vy
ICE9PSBudWxsICYmIGxvd2VySXNPcGVuICYmIGV4cGVjdGVkSW5kZXggPD0gbG93ZXIpCisgICAg
ICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IG51bGw7CisgICAgaWYgKHVwcGVyICE9PSBudWxsICYm
IHVwcGVySXNPcGVuICYmIHVwcGVyIDw9IGV4cGVjdGVkSW5kZXgpCisgICAgICAgIHNlbGYuZXhw
ZWN0ZWRJbmRleCA9IG51bGw7Cit9CisKK2Z1bmN0aW9uIGN1cnNvckl0ZXJhdGlvbigpCit7Cisg
ICAgaWYgKGV4cGVjdGVkSW5kZXggPT09IG51bGwpIHsKKyAgICAgICAgc2hvdWxkQmVOdWxsKCJl
dmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwpIHsKKyAg
ICAgICAgdGVzdEZhaWxlZCgiZXZlbnQudGFyZ2V0LnJlc3VsdCBzaG91bGQgbm90IGJlIG51bGwu
Iik7CisgICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAidGVzdERhdGFbIiArIGV4cGVj
dGVkSW5kZXggKyAiXSIpOworICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IGFzY2VuZGluZyA/IGV4
cGVjdGVkSW5kZXgrMSA6IGV4cGVjdGVkSW5kZXgtMTsKKyAgICB0ZXN0V2l0aGluQm91bmRzKCk7
CisKKyAgICBldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCk7Cit9CisKK3NlbGYubnVsbEtl
eVJhbmdlU3RlcCA9IDA7CitmdW5jdGlvbiB0ZXN0TnVsbEtleVJhbmdlKCkKK3sKKyAgICBzZWxm
Lmxvd2VyID0gMDsKKyAgICBzZWxmLmxvd2VySXNPcGVuID0gZmFsc2U7CisgICAgc2VsZi51cHBl
ciA9IHRlc3REYXRhLmxlbmd0aC0xOworICAgIHNlbGYudXBwZXJJc09wZW4gPSBmYWxzZTsKKwor
ICAgIHN0ciA9ICJOZXh0IHRlc3Q6IG51bGwga2V5IHBhdGggIjsKKyAgICBpZiAoc2VsZi5udWxs
S2V5UmFuZ2VTdGVwID09IDApIHsKKyAgICAgICAgc3RyICs9ICJzb3J0ZWQgYXNjZW5kaW5nLiI7
CisgICAgICAgIHNlbGYuYXNjZW5kaW5nID0gdHJ1ZTsKKyAgICAgICAgc2VsZi5leHBlY3RlZElu
ZGV4ID0gbG93ZXI7CisgICAgICAgIHNlbGYubnVsbEtleVJhbmdlU3RlcCA9IDE7CisgICAgfSBl
bHNlIGlmIChzZWxmLm51bGxLZXlSYW5nZVN0ZXAgPT0gMSkgeworICAgICAgICBzdHIgKz0gInNv
cnRlZCBkZXNjZW5kaW5nLiI7CisgICAgICAgIHNlbGYuYXNjZW5kaW5nID0gZmFsc2U7CisgICAg
ICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IHVwcGVyOworICAgICAgICBzZWxmLm51bGxLZXlSYW5n
ZVN0ZXAgPSAyOworICAgIH0gZWxzZSB7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKHN0cik7CisKKyAg
ICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IobnVsbCwgYXNjZW5kaW5nID8g
SURCQ3Vyc29yLk5FWFQgOiBJREJDdXJzb3IuUFJFVik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBjdXJzb3JJdGVyYXRpb247CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK3JlbW92ZVZlbmRvclByZWZpeGVzKCk7CitvcGVuRGF0YWJhc2UoKTsg
Ly8gVGhlIGZpcnN0IHN0ZXAuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3RvcmUtcmVtb3Zlb2JqZWN0c3RvcmUuanMgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3RvcmUtcmVtb3Zlb2JqZWN0
c3RvcmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uODM5ODQ3NTAxNmJkMTE1YTlmM2VmMjMwYTBjYmI4M2NjMmQy
MGMxZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9vYmplY3RzdG9yZS1yZW1vdmVvYmplY3RzdG9yZS5qcwpAQCAtMCwwICsxLDk3IEBA
CitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdz
aGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mgd2Via2l0SURC
T2JqZWN0U3RvcmUuZGVsZXRlT2JqZWN0U3RvcmUoKS4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7
CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
aW5kZXhlZERCLm9wZW4oJ29iamVjdHN0b3JlLXJlbW92ZW9iamVjdHN0b3JlJykiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IHN0YXJ0U2V0VmVyc2lvbjsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc3RhcnRTZXRWZXJzaW9u
KCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwor
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJyki
KTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4aXN0aW5nOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxldGVF
eGlzdGluZygpCit7CisgICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKwor
ICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2co
InN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7CisKKyAg
ICBzZWxmLmluZGV4ID0gZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZScs
ICcnKSIpOworICAgIHNob3VsZEJlVHJ1ZSgic3RvcmUuaW5kZXhOYW1lcy5jb250YWlucygnaW5k
ZXhOYW1lJykiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoJ3ZhbHVl
JywgJ2tleScpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IGdldFZhbHVlOworfQorCitmdW5jdGlvbiBnZXRW
YWx1ZSgpCit7CisgICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJkYi50cmFuc2FjdGlvbihb
J3N0b3JlTmFtZSddKSIpOworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0
aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInN0b3JlLmdldCgna2V5JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEluZGV4
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiBhZGRJbmRleCgpCit7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50
YXJnZXQucmVzdWx0IiwgInZhbHVlIik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIu
c2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVs
ZXRlT2JqZWN0U3RvcmU7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZU9iamVjdFN0b3JlKCkKK3sKKyAgICBzZWxmLnRy
YW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hv
dWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVj
dGVkQWJvcnRDYWxsYmFjazsKKworICAgIGV2YWxBbmRMb2coImRiLmRlbGV0ZU9iamVjdFN0b3Jl
KCdzdG9yZU5hbWUnKSIpOworICAgIGNyZWF0ZU9iamVjdFN0b3JlQWdhaW4oKTsKK30KKworZnVu
Y3Rpb24gY3JlYXRlT2JqZWN0U3RvcmVBZ2FpbigpCit7CisgICAgZXZhbEFuZExvZygiZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7CisgICAgdHJhbnMub25jb21wbGV0
ZSA9IGdldFZhbHVlQWdhaW47Cit9CisKK2Z1bmN0aW9uIGdldFZhbHVlQWdhaW4oKQoreworICAg
IHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygiZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSki
KTsKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cisg
ICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9y
ZSgnc3RvcmVOYW1lJykiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5nZXQo
J2tleScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB2ZXJpZnlOb3RGb3VuZDsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
dmVyaWZ5Tm90Rm91bmQoKQoreworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0Iiwg
InVuZGVmaW5lZCIpOworICAgIHNob3VsZEJlRmFsc2UoImV2ZW50LnRhcmdldC5zb3VyY2UuaW5k
ZXhOYW1lcy5jb250YWlucygnaW5kZXhOYW1lJykiKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOwor
fQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29kZC1zdHJpbmdzLmpzIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29kZC1zdHJpbmdzLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQzMWM1MGVmZmJiZmFlMmI2NDdjNmU0MTdlMjM5NWFkZDI0OWUyNDgKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2RkLXN0
cmluZ3MuanMKQEAgLTAsMCArMSwxMDEgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAg
ICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigi
VGVzdCBJbmRleGVkREIgb2RkIHZhbHVlIGRhdGF0eXBlcyIpOworCitmdW5jdGlvbiB0ZXN0KCkK
K3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgdGVzdERhdGEgPSBbeyBkZXNj
cmlwdGlvbjogJ251bGwnLCAgICAgICAgICAgICAgIG5hbWU6ICdcdTAwMDAnIH0sCisgICAgICAg
ICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ2ZhaWh1JywgICAgICAgICAgICAgIG5hbWU6ICdcdWQ4
MDBcdWRmNDYnIH0sCisgICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ3VucGFpcmVkIHN1
cnJvZ2F0ZScsIG5hbWU6ICdcdWQ4MDAnIH0sCisgICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlv
bjogJ2ZmZmUnLCAgICAgICAgICAgICAgIG5hbWU6ICdcdWZmZmUnIH0sCisgICAgICAgICAgICAg
ICAgeyBkZXNjcmlwdGlvbjogJ2ZmZmYnLCAgICAgICAgICAgICAgIG5hbWU6ICdcdWZmZmYnIH0s
CisgICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ2xpbmUgc2VwYXJhdG9yJywgICAgIG5h
bWU6ICdcdTIwMjgnIH0KKyAgICBdOworICAgIG5leHRUb09wZW4gPSAwOworICAgIG9wZW5OZXh0
RGF0YWJhc2UoKTsKK30KKworZnVuY3Rpb24gb3Blbk5leHREYXRhYmFzZSgpCit7CisgICAgZGVi
dWcoIm9wZW5pbmcgYSBkYXRhYmFzZSBuYW1lZCAiICsgdGVzdERhdGFbbmV4dFRvT3Blbl0uZGVz
Y3JpcHRpb24pOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbih0ZXN0
RGF0YVtuZXh0VG9PcGVuXS5uYW1lLCB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5kZXNjcmlwdGlvbiki
KTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2Vz
cygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkQUtleTsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gYWRkQUtleSgpCit7Cisg
ICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFu
ZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSh0ZXN0RGF0YVtuZXh0VG9P
cGVuXS5uYW1lKTsiKTsKKyAgICBrZXkgPSBldmFsQW5kTG9nKCJrZXkgPSB0ZXN0RGF0YVtuZXh0
VG9PcGVuXS5uYW1lIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmpl
Y3RTdG9yZS5hZGQoa2V5LCBrZXkpOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xvc2VE
YXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
K30KKworZnVuY3Rpb24gY2xvc2VEYXRhYmFzZSgpCit7CisgICAgZXZhbEFuZExvZygiZGIuY2xv
c2UoKSIpOworICAgIGRlYnVnKCIiKTsKKyAgICBpZiAoKytuZXh0VG9PcGVuIDwgdGVzdERhdGEu
bGVuZ3RoKSB7CisgICAgICAgIG9wZW5OZXh0RGF0YWJhc2UoKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBuZXh0VG9PcGVuID0gMDsKKyAgICAgICAgdmVyaWZ5TmV4dERhdGFiYXNlKCk7CisgICAg
fQorfQorCitmdW5jdGlvbiB2ZXJpZnlOZXh0RGF0YWJhc2UoKQoreworICAgIGRlYnVnKCJyZW9w
ZW5pbmcgYSBkYXRhYmFzZSBuYW1lZCAiICsgdGVzdERhdGFbbmV4dFRvT3Blbl0uZGVzY3JpcHRp
b24pOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbih0ZXN0RGF0YVtu
ZXh0VG9PcGVuXS5uYW1lLCB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5kZXNjcmlwdGlvbikiKTsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzMjsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MyKCkK
K3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBnZXRBS2V5OworfQorCitmdW5jdGlvbiBnZXRBS2V5KCkKK3sKKyAgICB0
cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIG9i
amVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSh0
ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1lKTsiKTsKKyAgICBrZXkgPSBldmFsQW5kTG9nKCJrZXkg
PSB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1lIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBv
cGVuQ3Vyc29yU3VjY2VzczsKK30KKworZnVuY3Rpb24gb3BlbkN1cnNvclN1Y2Nlc3MoKQorewor
ICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7
CisgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAidGVzdERhdGFbbmV4dFRvT3Blbl0ubmFtZSIp
OworICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAidGVzdERhdGFbbmV4dFRvT3Blbl0ubmFt
ZSIpOworICAgIGlmICgrK25leHRUb09wZW4gPCB0ZXN0RGF0YS5sZW5ndGgpIHsKKyAgICAgICAg
ZGVidWcoIiIpOworICAgICAgICB2ZXJpZnlOZXh0RGF0YWJhc2UoKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvb3Blbi1jbG9zZS12ZXJzaW9uLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL29wZW4tY2xvc2UtdmVyc2lvbi5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMjNl
MWQ4YjkyOTUyZjgyZjg1ZDU5ZGEyYTMyNWUwMWExMTEzMzNiCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4tY2xvc2UtdmVyc2lv
bi5qcwpAQCAtMCwwICsxLDI4MyBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGlt
cG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7
CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0
IGludGVybGVhdmVkIG9wZW4vY2xvc2Uvc2V0VmVyc2lvbiBjYWxscyBpbiB2YXJpb3VzIHBlcm11
dGF0aW9ucyIpOworCitmdW5jdGlvbiBDb25uZWN0aW9uKGlkKSB7CisgICAgaWQgPSBTdHJpbmco
aWQpOworICAgIHZhciB0aGF0ID0gdGhpczsKKyAgICB0aGlzLm9wZW4gPSBmdW5jdGlvbihvcHRz
KSB7CisgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5vcGVu
JyIpKTsKKyAgICAgICAgdmFyIHJlcSA9IGluZGV4ZWREQi5vcGVuKHNlbGYuZGJuYW1lKTsKKyAg
ICAgICAgcmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVx
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgICAgICB0aGF0LmhhbmRsZSA9IGUu
dGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCIn
IiArIGlkICsgIi5vcGVuLm9uc3VjY2VzcyciKSk7CisgICAgICAgICAgICB0aGF0LmhhbmRsZS5v
bnZlcnNpb25jaGFuZ2UgPSBmdW5jdGlvbihlKSB7CisgICAgICAgICAgICAgICAgc2VsZi5zdGVw
cy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLm9udmVyc2lvbmNoYW5nZSciKSk7CisgICAg
ICAgICAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5vbnZlcnNpb24pIHsgb3B0cy5vbnZlcnNpb24u
Y2FsbCh0aGF0KTsgfQorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGlmIChvcHRzICYmIG9w
dHMub25zdWNjZXNzKSB7IG9wdHMub25zdWNjZXNzLmNhbGwodGhhdCk7IH0KKyAgICAgICAgfTsK
KyAgICB9OworCisgICAgdGhpcy5jbG9zZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICBzZWxmLnN0
ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIuY2xvc2UnIikpOworICAgICAgICB0aGlz
LmhhbmRsZS5jbG9zZSgpOworICAgIH07CisKKyAgICB0aGlzLnNldFZlcnNpb24gPSBmdW5jdGlv
bihvcHRzKSB7CisgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsg
Ii5zZXRWZXJzaW9uJyIpKTsKKyAgICAgICAgdmFyIHJlcSA9IHRoaXMuaGFuZGxlLnNldFZlcnNp
b24oU3RyaW5nKHNlbGYudmVyKyspKTsKKyAgICAgICAgcmVxLm9uYWJvcnQgPSBmdW5jdGlvbiAo
ZSkgeworICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAi
LnNldFZlcnNpb24ub25hYm9ydCciKSk7CisgICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9u
YWJvcnQpIHsgb3B0cy5vbmFib3J0LmNhbGwodGhhdCk7IH0KKyAgICAgICAgfTsKKyAgICAgICAg
cmVxLm9uYmxvY2tlZCA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgICAgICBzZWxmLnN0ZXBzLnB1
c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIuc2V0VmVyc2lvbi5vbmJsb2NrZWQnIikpOworICAg
ICAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5vbmJsb2NrZWQpIHsgb3B0cy5vbmJsb2NrZWQuY2Fs
bCh0aGF0KTsgfQorICAgICAgICB9OworICAgICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24g
KGUpIHsKKyAgICAgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsg
Ii5zZXRWZXJzaW9uLm9uc3VjY2VzcyciKSk7CisgICAgICAgICAgICBpZiAodGhhdC5oYW5kbGUu
b2JqZWN0U3RvcmVOYW1lcy5jb250YWlucygidGVzdC1zdG9yZSIgKyBzZWxmLnZlcikpIHsKKyAg
ICAgICAgICAgICAgICB0aGF0LmhhbmRsZS5kZWxldGVPYmplY3RTdG9yZSgidGVzdC1zdG9yZSIg
KyBzZWxmLnZlcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2YXIgc3RvcmUgPSB0aGF0
LmhhbmRsZS5jcmVhdGVPYmplY3RTdG9yZSgidGVzdC1zdG9yZSIgKyBzZWxmLnZlcik7CisgICAg
ICAgICAgICB2YXIgY291bnQgPSAwOworICAgICAgICAgICAgZG9fYXN5bmNfcHV0cygpOyAvLyBL
ZWVwIHRoaXMgdHJhbnNhY3Rpb24gcnVubmluZyBmb3IgYSB3aGlsZQorICAgICAgICAgICAgZnVu
Y3Rpb24gZG9fYXN5bmNfcHV0cygpIHsKKyAgICAgICAgICAgICAgICB2YXIgcmVxID0gc3RvcmUu
cHV0KGNvdW50LCBjb3VudCk7CisgICAgICAgICAgICAgICAgcmVxLm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgICAgICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rp
b24gKGUpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCsrY291bnQgPCAxMCkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgZG9fYXN5bmNfcHV0cygpOworICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRM
b2coIiciICsgaWQgKyAiLnNldFZlcnNpb24udHJhbnNhY3Rpb24tY29tcGxldGUnIikpOworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5vbnN1Y2Nlc3MpIHsgb3B0cy5v
bnN1Y2Nlc3MuY2FsbCh0aGF0KTsgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgfTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgcmVxLm9uZXJyb3Ig
PSBmdW5jdGlvbiAoZSkgeworICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2co
IiciICsgaWQgKyAiLnNldFZlcnNpb24ub25lcnJvciciKSk7CisgICAgICAgICAgICBpZiAob3B0
cyAmJiBvcHRzLm9uZXJyb3IpIHsgb3B0cy5vbmVycm9yLmNhbGwodGhhdCk7IH0KKyAgICAgICAg
fTsKKyAgICB9OworfQorCisvLyBydW4gYSBzZXJpZXMgb2Ygc3RlcHMgdGhhdCB0YWtlIGEgY29u
dGludWF0aW9uIGZ1bmN0aW9uCitmdW5jdGlvbiBydW5TdGVwcyhjb21tYW5kcykgeworICAgIGlm
IChjb21tYW5kcy5sZW5ndGgpIHsKKyAgICAgICAgdmFyIGNvbW1hbmQgPSBjb21tYW5kcy5zaGlm
dCgpOworICAgICAgICBjb21tYW5kKGZ1bmN0aW9uKCkgeyBydW5TdGVwcyhjb21tYW5kcyk7IH0p
OworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhl
cygpOworICAgIHRlc3QxKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QxKCkgeworICAgIGRlYnVnKCIi
KTsKKyAgICBkZWJ1ZygiVEVTVDogc2V0VmVyc2lvbiBibG9ja2VkIG9uIG9wZW4gaGFuZGxlcyIp
OworICAgIGV2YWxBbmRMb2coInNlbGYuZGJuYW1lID0gJ3Rlc3QxJzsgc2VsZi52ZXIgPSAxOyBz
ZWxmLnN0ZXBzID0gW10iKTsKKyAgICB2YXIgaDEgPSBuZXcgQ29ubmVjdGlvbigiaDEiKTsKKyAg
ICB2YXIgaDIgPSBuZXcgQ29ubmVjdGlvbigiaDIiKTsKKyAgICBydW5TdGVwcyhbZnVuY3Rpb24o
ZG9OZXh0KSB7IGgxLm9wZW4oe29uc3VjY2VzczogZG9OZXh0fSk7IH0sCisgICAgICAgICBmdW5j
dGlvbihkb05leHQpIHsgaDIub3Blbih7b25zdWNjZXNzOiBkb05leHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9udmVyc2lvbjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiICAgIGgyIGNsb3NpbmcsIGJ1dCBub3QgaW1t
ZWRpYXRlbHkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IGgyLmNsb3NlKCk7IH0sIDApOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9fSk7IH0sCisgICAgICAgICBmdW5jdGlvbihkb05leHQpIHsgaDEuc2V0VmVy
c2lvbih7b25zdWNjZXNzOiBmaW5pc2hUZXN0fSk7IH0sCisgICAgICAgICBdKTsKKyAgICBmdW5j
dGlvbiBmaW5pc2hUZXN0KCkgeworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNlbGYu
c3RlcHMudG9TdHJpbmcoKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImgxLm9w
ZW4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5vcGVuLm9uc3VjY2VzcyIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLm9wZW4iLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJoMi5vcGVuLm9uc3VjY2VzcyIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJoMi5vbnZlcnNpb25jaGFuZ2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJoMS5zZXRWZXJzaW9uLm9uYmxvY2tlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImgyLmNsb3NlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0
VmVyc2lvbi5vbnN1Y2Nlc3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5z
ZXRWZXJzaW9uLnRyYW5zYWN0aW9uLWNvbXBsZXRlIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF0udG9TdHJpbmcoKSk7CisgICAgICAgIHRlc3QyKCk7CisgICAgfQorfQorCitmdW5j
dGlvbiB0ZXN0MigpIHsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRFU1Q6IHNldFZlcnNp
b24gbm90IGJsb2NrZWQgaWYgaGFuZGxlIGNsb3NlZCBpbW1lZGlhdGVseSIpOworICAgIGV2YWxB
bmRMb2coInNlbGYuZGJuYW1lID0gJ3Rlc3QyJzsgc2VsZi52ZXIgPSAxOyBzZWxmLnN0ZXBzID0g
W10iKTsKKyAgICB2YXIgaDEgPSBuZXcgQ29ubmVjdGlvbigiaDEiKTsKKyAgICB2YXIgaDIgPSBu
ZXcgQ29ubmVjdGlvbigiaDIiKTsKKyAgICBydW5TdGVwcyhbZnVuY3Rpb24oZG9OZXh0KSB7IGgx
Lm9wZW4oe29uc3VjY2VzczogZG9OZXh0fSk7IH0sCisgICAgICAgICAgICAgIGZ1bmN0aW9uKGRv
TmV4dCkgeyBoMi5vcGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9udmVyc2lvbjogZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoIiAgICBoMiBjbG9zaW5n
IGltbWVkaWF0ZWx5Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaDIuY2xvc2UoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH19KTsgfSwKKyAgICAgICAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGgxLnNldFZlcnNp
b24oe29uc3VjY2VzczogZG9OZXh0fSk7IH0sCisgICAgICAgICAgICAgIGZpbmlzaFRlc3QKKyAg
ICAgICAgICAgICAgXSk7CisKKyAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgeworICAgICAgICBk
ZWJ1ZygiTk9URTogV2lsbCBGQUlMIHdpdGggZXh0cmEgYm9ndXMgaDEuc2V0VmVyc2lvbi5vbmJs
b2NrZWQgc3RlcDsgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMTMw
Iik7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic2VsZi5zdGVwcy50b1N0cmluZygp
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiaDEub3BlbiIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImgxLm9wZW4ub25zdWNjZXNzIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiaDIub3BlbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImgyLm9wZW4ub25zdWNjZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
aDEuc2V0VmVyc2lvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLm9udmVy
c2lvbmNoYW5nZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLmNsb3NlIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbi5vbnN1Y2Nlc3Mi
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLnRyYW5zYWN0
aW9uLWNvbXBsZXRlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udG9TdHJpbmco
KSk7CisgICAgICAgIHRlc3QzKCk7CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0MygpIHsKKyAg
ICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRFU1Q6IG9wZW4gYW5kIHNldFZlcnNpb24gYmxvY2tl
ZCBpZiBhIFZFUlNJT05fQ0hBTkdFIHRyYW5zYWN0aW9uIGlzIHJ1bm5pbmcgLSBjbG9zZSB3aGVu
IGJsb2NrZWQiKTsKKyAgICBldmFsQW5kTG9nKCJzZWxmLmRibmFtZSA9ICd0ZXN0Myc7IHNlbGYu
dmVyID0gMTsgc2VsZi5zdGVwcyA9IFtdIik7CisgICAgdmFyIGgxID0gbmV3IENvbm5lY3Rpb24o
ImgxIik7CisgICAgdmFyIGgyID0gbmV3IENvbm5lY3Rpb24oImgyIik7CisgICAgdmFyIGgzID0g
bmV3IENvbm5lY3Rpb24oImgzIik7CisgICAgcnVuU3RlcHMoW2Z1bmN0aW9uKGRvTmV4dCkgeyBo
MS5vcGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dH0pOyB9LAorICAgICAgICAgICAgICBmdW5jdGlvbihk
b05leHQpIHsgaDIub3Blbih7b25zdWNjZXNzOiBkb05leHR9KTsgfSwKKyAgICAgICAgICAgICAg
ZnVuY3Rpb24oZG9OZXh0KSB7IGgxLnNldFZlcnNpb24oKTsgZG9OZXh0KCk7IH0sCisgICAgICAg
ICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBoMi5zZXRWZXJzaW9uKHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uYmxvY2tlZDogZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGVidWcoIiAgICBoMiBibG9ja2VkIHNvIGNsb3NpbmciKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoMi5jbG9zZSgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvTmV4dCgp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0p
OyB9LAorICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgaDMub3Blbih7b25zdWNjZXNzOiBmaW5p
c2hUZXN0fSk7fQorICAgICAgICAgICAgICBdKTsKKworICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3Qo
KSB7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic2VsZi5zdGVwcy50b1N0cmluZygp
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiaDEub3BlbiIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImgxLm9wZW4ub25zdWNjZXNzIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiaDIub3BlbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImgyLm9wZW4ub25zdWNjZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
aDEuc2V0VmVyc2lvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLnNldFZl
cnNpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5vbnZlcnNpb25jaGFu
Z2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLm9uYmxv
Y2tlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLm9udmVyc2lvbmNoYW5n
ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLnNldFZlcnNpb24ub25ibG9j
a2VkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIuY2xvc2UiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJoMy5vcGVuIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiaDIuc2V0VmVyc2lvbi5vbmVycm9yIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiaDEuc2V0VmVyc2lvbi5vbnN1Y2Nlc3MiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLnRyYW5zYWN0aW9uLWNvbXBsZXRlIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiaDMub3Blbi5vbnN1Y2Nlc3MiCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXS50b1N0cmluZygpKTsKKyAgICAgICAgdGVzdDQoKTsKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIHRlc3Q0KCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygi
VEVTVDogb3BlbiBhbmQgc2V0VmVyc2lvbiBibG9ja2VkIGlmIGEgVkVSU0lPTl9DSEFOR0UgdHJh
bnNhY3Rpb24gaXMgcnVubmluZyAtIGp1c3QgY2xvc2UiKTsKKyAgICBldmFsQW5kTG9nKCJzZWxm
LmRibmFtZSA9ICd0ZXN0NCc7IHNlbGYudmVyID0gMTsgc2VsZi5zdGVwcyA9IFtdIik7CisgICAg
dmFyIGgxID0gbmV3IENvbm5lY3Rpb24oImgxIik7CisgICAgdmFyIGgyID0gbmV3IENvbm5lY3Rp
b24oImgyIik7CisgICAgdmFyIGgzID0gbmV3IENvbm5lY3Rpb24oImgzIik7CisgICAgcnVuU3Rl
cHMoW2Z1bmN0aW9uKGRvTmV4dCkgeyBoMS5vcGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dH0pOyB9LAor
ICAgICAgICAgICAgICBmdW5jdGlvbihkb05leHQpIHsgaDIub3Blbih7b25zdWNjZXNzOiBkb05l
eHR9KTsgfSwKKyAgICAgICAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGgxLnNldFZlcnNpb24o
KTsgZG9OZXh0KCk7IH0sCisgICAgICAgICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBoMy5vcGVu
KHtvbnN1Y2Nlc3M6IGZpbmlzaFRlc3R9KTsgZG9OZXh0KCk7IH0sCisgICAgICAgICAgICAgIGZ1
bmN0aW9uKGRvTmV4dCkgeyBoMi5jbG9zZSgpOyB9LAorICAgICAgICAgICAgICBdKTsKKworICAg
IGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgICAgIGRlYnVnKCJOT1RFOiBXaWxsIEZBSUwg
d2l0aCBleHRyYSBib2d1cyBoMS5zZXRWZXJzaW9uLm9uYmxvY2tlZCBzdGVwOyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzExMzAiKTsKKyAgICAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJzZWxmLnN0ZXBzLnRvU3RyaW5nKCkiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgWyJoMS5vcGVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
aDEub3Blbi5vbnN1Y2Nlc3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5v
cGVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIub3Blbi5vbnN1Y2Nlc3Mi
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiaDMub3BlbiIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImgyLmNsb3NlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
aDEuc2V0VmVyc2lvbi5vbnN1Y2Nlc3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJoMS5zZXRWZXJzaW9uLnRyYW5zYWN0aW9uLWNvbXBsZXRlIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiaDMub3Blbi5vbnN1Y2Nlc3MiCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXS50b1N0cmluZygpKTsKKyAgICAgICAgdGVzdDUoKTsKKyAgICB9Cit9CisKK2Z1
bmN0aW9uIHRlc3Q1KCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVEVTVDogb3BlbiBi
bG9ja2VkIGlmIGEgVkVSU0lPTl9DSEFOR0UgdHJhbnNhY3Rpb24gaXMgcnVubmluZyIpOworICAg
IGV2YWxBbmRMb2coInNlbGYuZGJuYW1lID0gJ3Rlc3Q1Jzsgc2VsZi52ZXIgPSAxOyBzZWxmLnN0
ZXBzID0gW10iKTsKKyAgICB2YXIgaDEgPSBuZXcgQ29ubmVjdGlvbigiaDEiKTsKKyAgICB2YXIg
aDIgPSBuZXcgQ29ubmVjdGlvbigiaDIiKTsKKworICAgIHJ1blN0ZXBzKFtmdW5jdGlvbihkb05l
eHQpIHsgaDEub3Blbih7b25zdWNjZXNzOiBkb05leHR9KTsgfSwKKyAgICAgICAgICAgICAgZnVu
Y3Rpb24oZG9OZXh0KSB7IGgxLnNldFZlcnNpb24oKTsgZG9OZXh0KCk7IH0sCisgICAgICAgICAg
ICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBoMi5vcGVuKHtvbnN1Y2Nlc3M6IGZpbmlzaFRlc3R9KTsg
fQorICAgICAgICAgICAgICBdKTsKKworICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAg
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic2VsZi5zdGVwcy50b1N0cmluZygpIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFsiaDEub3BlbiIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImgxLm9wZW4ub25zdWNjZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiaDEuc2V0VmVyc2lvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImgyLm9wZW4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9u
Lm9uc3VjY2VzcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNp
b24udHJhbnNhY3Rpb24tY29tcGxldGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJoMi5vcGVuLm9uc3VjY2VzcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnRv
U3RyaW5nKCkpOworICAgICAgICB0ZXN0NigpOworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdDYo
KSB7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJURVNUOiB0d28gc2V0VmVyc2lvbnMgZnJv
bSB0aGUgc2FtZSBjb25uZWN0aW9uIik7CisgICAgZXZhbEFuZExvZygic2VsZi5kYm5hbWUgPSAn
dGVzdDYnOyBzZWxmLnZlciA9IDE7IHNlbGYuc3RlcHMgPSBbXSIpOworICAgIHZhciBoMSA9IG5l
dyBDb25uZWN0aW9uKCJoMSIpOworCisgICAgcnVuU3RlcHMoW2Z1bmN0aW9uKGRvTmV4dCkgeyBo
MS5vcGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dH0pOyB9LCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGgxLnNldFZlcnNpb24o
e29uc3VjY2VzczogaGFsZkRvbmV9KTsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBoMS5zZXRWZXJzaW9uKHtvbnN1Y2Nlc3M6IGhhbGZEb25lfSk7IH0KKyAgICAgICAgICAgICAg
XSk7CisKKyAgICB2YXIgY291bnRlciA9IDA7CisgICAgZnVuY3Rpb24gaGFsZkRvbmUoKSB7Cisg
ICAgICAgIGNvdW50ZXIrKzsKKyAgICAgICAgaWYgKGNvdW50ZXIgPCAyKSB7CisgICAgICAgICAg
ICBkZWJ1ZygnaGFsZiBkb25lJyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmaW5p
c2hUZXN0KCk7CisgICAgICAgIH0KKyAgICB9ICAKKworICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3Qo
KSB7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic2VsZi5zdGVwcy50b1N0cmluZygp
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiaDEub3BlbiIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImgxLm9wZW4ub25zdWNjZXNzIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbiIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImgxLnNldFZlcnNpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJoMS5zZXRWZXJzaW9uLm9uc3VjY2VzcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImgxLnNldFZlcnNpb24udHJhbnNhY3Rpb24tY29tcGxldGUiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLm9uc3VjY2VzcyIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24udHJhbnNhY3Rpb24tY29tcGxldGUiCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS50b1N0cmluZygpKTsKKyAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgfQorfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L29wZW4tY3Vyc29yLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L29wZW4tY3Vyc29yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlmOWRjM2I2Yjc5NWJmMGVkOWU5MzY0ZjdhYmY4
OGNkMGU2Y2I4N2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvb3Blbi1jdXJzb3IuanMKQEAgLTAsMCArMSw4NCBAQAoraWYgKHRoaXMu
aW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7
Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIG9wZW5DdXJzb3IuIik7CisKK2Z1
bmN0aW9uIGVtcHR5Q3Vyc29yU3VjY2VzcygpCit7CisgICAgZGVidWcoIkVtcHR5IGN1cnNvciBv
cGVuZWQgc3VjY2Vzc2Z1bGx5LiIpCisgICAgLy8gRklYTUU6IGNoZWNrIHRoYXQgd2UgY2FuIGl0
ZXJhdGUgdGhlIGN1cnNvci4KKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gb3Bl
bkVtcHR5Q3Vyc29yKCkKK3sKKyAgICBkZWJ1ZygiT3BlbmluZyBhbiBlbXB0eSBjdXJzb3IuIik7
CisgICAga2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKCJJbmV4aXN0ZW50S2V5Iik7
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLm9wZW5DdXJzb3Ioa2V5UmFu
Z2UpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBlbXB0eUN1cnNvclN1Y2Nlc3M7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IGN1cnNvclN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJDdXJzb3Igb3BlbmVkIHN1Y2Nlc3NmdWxs
eS4iKQorICAgIC8vIEZJWE1FOiBjaGVjayB0aGF0IHdlIGNhbiBpdGVyYXRlIHRoZSBjdXJzb3Iu
CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQuZGlyZWN0aW9uIiwgIjAiKTsKKyAg
ICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAiJ215S2V5JyIpOworICAgIHNo
b3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnZhbHVlIiwgIidteVZhbHVlJyIpOworICAgIGRl
YnVnKCIiKTsKKyAgICB0cnkgeworICAgICAgICBkZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtl
eSBpbnRvIC5jb250aW51ZSh7fSkuIik7CisgICAgICAgIGV2ZW50LnRhcmdldC5yZXN1bHQuY29u
dGludWUoe30pOworICAgICAgICB0ZXN0RmFpbGVkKCJObyBleGNlcHRpb24gdGhyb3duIik7Cisg
ICAgfSBjYXRjaCAoZSkgeworICAgICAgICB0ZXN0UGFzc2VkKCJDYXVnaHQgZXhjZXB0aW9uOiAi
ICsgZS50b1N0cmluZygpKTsKKyAgICB9CisgICAgZGVidWcoIiIpOworICAgIG9wZW5FbXB0eUN1
cnNvcigpOworfQorCitmdW5jdGlvbiBvcGVuQ3Vyc29yKCkKK3sKKyAgICBkZWJ1ZygiT3Blbmlu
ZyBjdXJzb3IiKTsKKyAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQoIm15S2V5
Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5zb3VyY2Uub3BlbkN1
cnNvcihrZXlSYW5nZSkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvclN1Y2Nlc3M7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIHNldFZlcnNpb25TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nl
c3MoKToiKTsKKyAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJn
ZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRy
YW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKworICAgIGRlbGV0ZUFsbE9i
amVjdFN0b3JlcyhkYik7CisKKyAgICB2YXIgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCd0ZXN0JykiKTsKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlJywgJ215S2V5JykiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5DdXJzb3I7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAg
ICB2YXIgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7
CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
aW5kZXhlZERCLm9wZW4oJ29wZW4tY3Vyc29yJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4tZHVyaW5nLXRy
YW5zYWN0aW9uLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29w
ZW4tZHVyaW5nLXRyYW5zYWN0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUzYzE5ZDdkOWYwNGFiMTM2NDUw
YjczMTI2ZWI3MDBlMjMzYjUwMjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Blbi1kdXJpbmctdHJhbnNhY3Rpb24uanMKQEAgLTAs
MCArMSw3NyBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMo
Jy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0
U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBv
cGVuaW5nIGRhdGFiYXNlIGNvbm5lY3Rpb25zIGR1cmluZyB0cmFuc2FjdGlvbnMiKTsKKworZnVu
Y3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBwcmVwYXJl
RGF0YWJhc2UoKTsKK30KKworZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKCkKK3sKKyAgICBkZWJ1
ZygicHJlcGFyZSBkYXRhYmFzZSIpOworICAgIGV2YWxBbmRMb2coIm9wZW5yZXExID0gaW5kZXhl
ZERCLm9wZW4oJ2RiMScpIik7CisgICAgb3BlbnJlcTEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworICAgIG9wZW5yZXExLm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7CisgICAg
ICAgIGV2YWxBbmRMb2coImRiYzEgPSBvcGVucmVxMS5yZXN1bHQiKTsKKyAgICAgICAgZXZhbEFu
ZExvZygic2V0dmVycmVxID0gZGJjMS5zZXRWZXJzaW9uKCcxLjAnKSIpOworICAgICAgICBzZXR2
ZXJyZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICBzZXR2ZXJy
ZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImRi
YzEuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgICAgICAgICBzZXR2ZXJy
ZXEucmVzdWx0Lm9uY29tcGxldGUgPSBmdW5jdGlvbiAoZSkgeworICAgICAgICAgICAgICAgIGRl
YnVnKCJkYXRhYmFzZSBwcmVwYXJhdGlvbiBjb21wbGV0ZSIpOworICAgICAgICAgICAgICAgIGRl
YnVnKCIiKTsKKyAgICAgICAgICAgICAgICBzdGFydFRyYW5zYWN0aW9uKCk7CisgICAgICAgICAg
ICB9OworICAgICAgICB9OworICAgIH07Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VHJhbnNhY3Rpb24o
KQoreworICAgIGRlYnVnKCJzdGFydGluZyB0cmFuc2FjdGlvbiIpOworICAgIGV2YWxBbmRMb2co
InN0YXRlID0gJ3N0YXJ0aW5nJyIpOworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGJjMS50cmFu
c2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICBl
dmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykucHV0KCd2YWx1ZScsICdr
ZXknKSIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAg
ICB0cmFucy5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgdHJhbnMub25j
b21wbGV0ZSA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgIGRlYnVnKCJ0cmFuc2FjdGlvbiBjb21w
bGV0ZSIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInN0YXRlIiwgIm9wZW4zY29t
cGxldGUiKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfTsKKworICAgIGRlYnVnKCIi
KTsKKyAgICB0cnlPcGVucygpOworfQorCitmdW5jdGlvbiB0cnlPcGVucygpCit7CisgICAgZGVi
dWcoInRyeWluZyB0byBvcGVuIHRoZSBzYW1lIGRhdGFiYXNlIik7CisgICAgZXZhbEFuZExvZygi
b3BlbnJlcTIgPSBpbmRleGVkREIub3BlbignZGIxJykiKTsKKyAgICBvcGVucmVxMi5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgb3BlbnJlcTIub25zdWNjZXNzID0gZnVu
Y3Rpb24gKGUpIHsKKyAgICAgICAgZGVidWcoIm9wZW5yZXEyLm9uc3VjY2VzcyIpOworICAgICAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInN0YXRlIiwgInN0YXJ0aW5nIik7CisgICAgICAgIGV2
YWxBbmRMb2coInN0YXRlID0gJ29wZW4yY29tcGxldGUnIik7CisgICAgICAgIGRlYnVnKCIiKTsK
KyAgICB9CisgICAgZGVidWcoIiIpOworCisgICAgZGVidWcoInRyeWluZyB0byBvcGVuIGEgZGlm
ZmVyZW50IGRhdGFiYXNlIik7CisgICAgZXZhbEFuZExvZygib3BlbnJlcTMgPSBpbmRleGVkREIu
b3BlbignZGIyJykiKTsKKyAgICBvcGVucmVxMy5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7CisgICAgb3BlbnJlcTMub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAg
ZGVidWcoIm9wZW5yZXEzLm9uc3VjY2VzcyIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoInN0YXRlIiwgIm9wZW4yY29tcGxldGUiKTsKKyAgICAgICAgZXZhbEFuZExvZygic3RhdGUg
PSAnb3BlbjNjb21wbGV0ZSciKTsKKyAgICAgICAgZGVidWcoIiIpOworICAgIH0KKyAgICBkZWJ1
ZygiIik7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvcHJlZmV0Y2gtYnVn
Zml4LTEwODA3MS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9w
cmVmZXRjaC1idWdmaXgtMTA4MDcxLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmMTQxNjdhMWRlNGE1NGI1NGJj
ZDNiM2VkMmZiNDY5OWM5ZjFjMDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvcHJlZmV0Y2gtYnVnZml4LTEwODA3MS5qcwpAQCAtMCww
ICsxLDExOCBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMo
Jy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0
U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IGZvciBjcmJ1Zy5j
b20vMTA4MDcxIik7CisKKy8vIEhhdmUgdG8gYmUgYXQgbGVhc3QgNSBoZXJlOiAxIGluaXRpYWws
IDMgY29udGludWVzIHRvIHRyaWdnZXIgcHJlZmV0Y2ggYW5kIDEKKy8vIHBvc3QtYWJvcnQgb3V0
c3RhbmRpbmcgY29udGludWUuCit2YXIgbmFtZXMgPSBbJ0FscGhhJywgJ0JyYXZvJywgJ0NoYXJs
aWUnLCAnRGVsdGEnLCAnRWNobyddOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVW
ZW5kb3JQcmVmaXhlcygpOworICAgIERCTkFNRSA9ICdwcmVmZXRjaC1idWdmaXgtMTA4MDcxJzsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKERCTkFN
RSkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICByZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZSkgeworICAgICAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCLm9wZW4oREJOQU1FKSIpOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IG9wZW5TdWNjZXNzOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICB9OworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAg
dmFyIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb25T
dWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKKyAgICBzZWxm
LnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAg
c2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4
cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gaXRlcmF0ZUFuZERl
bGV0ZUZpcnN0RWxlbWVudDsKKworICAgIHZhciBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9i
amVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJywge2tleVBhdGg6ICdpZCd9
KSIpOworICAgIHJlc2V0T2JqZWN0U3RvcmUoKTsKK30KKworZnVuY3Rpb24gcmVzZXRPYmplY3RT
dG9yZSgpCit7CisgICAgZGVidWcoIlxucmVzZXRPYmplY3RTdG9yZSgpOiIpOworCisgICAgb2Jq
ZWN0U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsKKyAgICBldmFsQW5kTG9nKCJv
YmplY3RTdG9yZS5jbGVhcigpIik7CisgICAgZm9yIChpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsg
aSsrKSB7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoe2lk
OiAiICsgaSArICIsIG5hbWU6IFwiIiArIG5hbWVzW2ldICsgIlwifSkiKTsKKyAgICAgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgfQorCisgICAgZGVi
dWcoIiIpOworfQorCitmdW5jdGlvbiBpdGVyYXRlQW5kRGVsZXRlRmlyc3RFbGVtZW50KCkKK3sK
KyAgICBkZWJ1ZygiaXRlcmF0ZUFuZERlbGV0ZUZpcnN0RWxlbWVudCgpOiIpOworCisgICAgZXZh
bEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9u
LlJFQURfV1JJVEUpIik7CisgICAgdHJhbnMub25hYm9ydCA9IHRyYW5zYWN0aW9uQWJvcnRlZDsK
KyAgICB0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7CisKKyAg
ICAvLyBDcmVhdGUgdGhlIGN1cnNvciBhbmQgaXRlcmF0ZSBvdmVyIHRoZSB3aG9sZSB0aGluZy4K
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykub3Bl
bkN1cnNvcigpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgIHZhciBj
dXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgICAgICBpZiAoY3Vyc29yID09IG51bGwp
IHsKKyAgICAgICAgICAgIHJlc2V0T2JqZWN0U3RvcmUoKTsKKyAgICAgICAgICAgIHByZWZldGNo
QW5kQWJvcnQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGRl
YnVnKGN1cnNvci52YWx1ZS5pZCArICI6ICIgKyBjdXJzb3IudmFsdWUubmFtZSk7CisKKyAgICAg
ICAgaWYgKGN1cnNvci52YWx1ZS5pZCA9PSAwKSB7CisgICAgICAgICAgICAvLyBEZWxldGUgdGhl
IGZpcnN0IGVsZW1lbnQgd2hlbiB3ZSBzZWUgaXQuCisgICAgICAgICAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykuZGVsZXRlKDApIik7CisgICAgICAg
ICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAg
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7IGN1cnNvci5jb250aW51ZSgpOyB9
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIHByZWZldGNoQW5kQWJvcnQoKQoreworICAgIGRl
YnVnKCJwcmVmZXRjaEFuZEFib3J0KCk6Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
dHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykub3BlbkN1cnNvcigpIik7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbiAoKSB7CisgICAgICAgIHZhciBjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0
OworICAgICAgICBkZWJ1ZyhjdXJzb3IudmFsdWUuaWQgKyAiOiAiICsgY3Vyc29yLnZhbHVlLm5h
bWUpOworICAgICAgICAvLyBIYXZlIHRvIGl0ZXJhdGUgdG8gMyBpbiBvcmRlciB0byBwcmVmZXRj
aCwgYnV0IGNhbid0IGl0ZXJhdGUgcGFzdCAzCisgICAgICAgIC8vIHNvIHRoYXQgdGhlcmUgd2ls
bCBiZSBhIGNvbnRpbnVlIHJlbWFpbmluZy4KKyAgICAgICAgaWYgKGN1cnNvci52YWx1ZS5pZCA9
PSAzKSB7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJ0cmFucy5hYm9ydCgpIik7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBjdXJzb3IuY29udGludWUoKTsKKyAgICAgICAgfQorICAg
IH0KK30KKworZnVuY3Rpb24gdHJhbnNhY3Rpb25BYm9ydGVkKCkKK3sKKyAgICB0ZXN0UGFzc2Vk
KCJUcmFuc2FjdGlvbiBhYm9ydGVkIGFzIGV4cGVjdGVkIik7CisgICAgZmluaXNoSlNUZXN0KCk7
Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvcXVldWVkLWNvbW1hbmRzLmpz
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3F1ZXVlZC1jb21tYW5k
cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xMDBiZmQ1YTE2Y2VjZTEwNDc1MjEyNjdmNmEyYTk5MzE5YjQ4MmIy
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL3F1ZXVlZC1jb21tYW5kcy5qcwpAQCAtMCwwICsxLDYyIEBACitpZiAodGhpcy5pbXBvcnRT
Y3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKwor
ZGVzY3JpcHRpb24oIlZlcmlmeSB0aGF0IHF1ZXVpbmcgdXAgc2V2ZXJhbCBjb21tYW5kcyB3b3Jr
cyAoYW5kIHRoZXkgYWxsIGZpcmUpLiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1v
dmVWZW5kb3JQcmVmaXhlcygpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
b3BlbigncXVldWVkLWNvbW1hbmRzJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZl
cnNpb247CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIHNldFZlcnNpb24oKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBl
dmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0
VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRl
RXhpc3Rpbmc7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lv
blN1Y2Nlc3MoKToiKTsKKyAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwor
ICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKworICAgIGRlbGV0
ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBzZWxmLnN0b3JlID0gZXZhbEFuZExvZygiZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgc2VsZi5pbmRleE9iamVjdCA9
IGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleE5hbWUnLCAneCcpIik7CisKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30s
ICdrZXknKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7IHZlcmlmeUFk
ZCgwKTsgfTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZTInLCB5OiAn
enp6Mid9LCAna2V5MicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsg
dmVyaWZ5QWRkKDEpOyB9OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLnB1dCh7eDogJ3ZhbHUy
JywgeTogJ3p6Mid9LCAna3kyJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KCkgeyB2ZXJpZnlBZGQoMik7IH07CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisKKyAgICBzZWxmLmFkZENvdW50ID0gMDsKK30KKworZnVuY3Rpb24gdmVy
aWZ5QWRkKGV4cGVjdGVkKQoreworICAgIHNob3VsZEJlKCIiICsgYWRkQ291bnQrKywgIiIgKyBl
eHBlY3RlZCk7CisKKyAgICBpZiAoYWRkQ291bnQgPT0gMykKKyAgICAgICAgZmluaXNoSlNUZXN0
KCk7CisgICAgaWYgKGFkZENvdW50ID4gMykKKyAgICAgICAgdGVzdEZhaWxlZCgiVW5leHBlY3Rl
ZCBjYWxsIHRvIHZlcmlmeUFkZCEiKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9yZWFkb25seS1wcm9wZXJ0aWVzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL3JlYWRvbmx5LXByb3BlcnRpZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzI1YzA0MWIw
MTgxOWMxNDZlMmI2M2ExNjY5YWQzOThkNzdhYjJjNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9yZWFkb25seS1wcm9wZXJ0aWVzLmpz
CkBAIC0wLDAgKzEsNDkgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRT
Y3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAg
IGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRl
eGVkREIgcmVhZG9ubHkgcHJvcGVydGllcyIpOworCitmdW5jdGlvbiBzZXRSZWFkb25seVByb3Bl
cnR5KHByb3BlcnR5LCB2YWx1ZSkKK3sKKyAgICBvbGRWYWx1ZSA9IGV2YWwocHJvcGVydHkpOwor
ICAgIGRlYnVnKCJ0cnlpbmcgdG8gc2V0IHJlYWRvbmx5IHByb3BlcnR5ICIgKyBwcm9wZXJ0eSk7
CisgICAgZXZhbEFuZExvZyhwcm9wZXJ0eSArICIgPSAiICsgdmFsdWUpOworICAgIG5ld1ZhbHVl
ID0gZXZhbChwcm9wZXJ0eSk7CisgICAgaWYgKG9sZFZhbHVlID09IG5ld1ZhbHVlKSB7CisgICAg
ICAgIHRlc3RQYXNzZWQocHJvcGVydHkgKyAiIGlzIHN0aWxsICIgKyBvbGRWYWx1ZSk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZChwcm9wZXJ0eSArICIgdmFsdWUgd2FzIGNoYW5n
ZWQgdG8gIiArIG5ld1ZhbHVlKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAg
IHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gImZvbyI7CisgICAgZGVzY3Jp
cHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImlu
ZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRM
b2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9i
amVjdFN0b3JlKCkKK3sKKyAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9u
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIp
OworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVP
YmplY3RTdG9yZSgnZm9vJyk7Iik7CisgICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgib2JqZWN0U3Rv
cmUudHJhbnNhY3Rpb24iLCAidGhpcyIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0
KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3JlYWRvbmx5LmpzIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3JlYWRvbmx5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2ZDMxY2Y4
ODkyZGIxNGNhMzY5ODBhYWY4Y2QzMWZmYTVmOWNmMmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvcmVhZG9ubHkuanMKQEAgLTAsMCAr
MSwxMDYgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcu
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNj
cmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgcmVh
ZG9ubHkgcHJvcGVydGllcyIpOworCitmdW5jdGlvbiBzZXRSZWFkb25seVByb3BlcnR5KHByb3Bl
cnR5LCB2YWx1ZSkKK3sKKyAgICBvbGRWYWx1ZSA9IGV2YWwocHJvcGVydHkpOworICAgIGRlYnVn
KCJ0cnlpbmcgdG8gc2V0IHJlYWRvbmx5IHByb3BlcnR5ICIgKyBwcm9wZXJ0eSk7CisgICAgZXZh
bEFuZExvZyhwcm9wZXJ0eSArICIgPSAiICsgdmFsdWUpOworICAgIG5ld1ZhbHVlID0gZXZhbChw
cm9wZXJ0eSk7CisgICAgaWYgKG9sZFZhbHVlID09IG5ld1ZhbHVlKSB7CisgICAgICAgIHRlc3RQ
YXNzZWQocHJvcGVydHkgKyAiIGlzIHN0aWxsICIgKyBvbGRWYWx1ZSk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgdGVzdEZhaWxlZChwcm9wZXJ0eSArICIgdmFsdWUgd2FzIGNoYW5nZWQiKTsKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7
CisKKyAgICBuYW1lID0gImZvbyI7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFz
ZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2Ny
aXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9w
ZW5TdWNjZXNzKCkKK3sKKyAgICBzZXRSZWFkb25seVByb3BlcnR5KCJyZXF1ZXN0LnJlc3VsdCIs
ICJJbmZpbml0eSIpOworICAgIHNldFJlYWRvbmx5UHJvcGVydHkoInJlcXVlc3QuZXJyb3JDb2Rl
IiwgIjY2NiIpOworICAgIHNldFJlYWRvbmx5UHJvcGVydHkoInJlcXVlc3Quc291cmNlIiwgInRo
aXMiKTsKKyAgICBzZXRSZWFkb25seVByb3BlcnR5KCJyZXF1ZXN0LnRyYW5zYWN0aW9uIiwgInRo
aXMiKTsKKyAgICBzZXRSZWFkb25seVByb3BlcnR5KCJyZXF1ZXN0LnJlYWR5U3RhdGUiLCAiNjY2
Iik7CisKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwor
ICAgIHNldFJlYWRvbmx5UHJvcGVydHkoImRiLm5hbWUiLCAiJ2JhciciKTsKKworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjcmVh
dGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKK3sKKyAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRM
b2coInRyYW5zYWN0aW9uID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICBzZXRSZWFkb25s
eVByb3BlcnR5KCJ0cmFuc2FjdGlvbi5tb2RlIiwgIjY2NiIpOworICAgIHNldFJlYWRvbmx5UHJv
cGVydHkoInRyYW5zYWN0aW9uLmRiIiwgInRoaXMiKTsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0
b3JlcyhkYik7CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycpOyIpOworCisgICAgc2V0UmVhZG9ubHlQcm9wZXJ0
eSgib2JqZWN0U3RvcmUubmFtZSIsICInYmFyJyIpOworICAgIHNldFJlYWRvbmx5UHJvcGVydHko
Im9iamVjdFN0b3JlLmtleVBhdGgiLCAiJ2JhciciKTsKKy8qIGZhaWxzLCBzcGxpdCBpbnRvIHNl
cGFyYXRlIHRlc3QKKyAgICBzZXRSZWFkb25seVByb3BlcnR5KCJvYmplY3RTdG9yZS5pbmRleE5h
bWVzIiwgIlsnYmFyJ10iKTsKKyovCisvKiBmYWlscywgc3BsaXQgaW50byBzZXBhcmF0ZSB0ZXN0
CisgICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgib2JqZWN0U3RvcmUudHJhbnNhY3Rpb24iLCAidGhp
cyIpOworKi8KKworICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coInJlc3VsdCA9IG9iamVjdFN0b3Jl
LmFkZCh7fSwgJ2ZpcnN0Jyk7Iik7CisgICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICByZXN1bHQub25zdWNjZXNzID0gYWRkU3VjY2VzczsKK30KKworZnVu
Y3Rpb24gYWRkU3VjY2VzcygpCit7CisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygicmVzdWx0ID0g
b2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOworICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGNoZWNrQ3Vyc29yOwor
fQorCitmdW5jdGlvbiBjaGVja0N1cnNvcigpCit7CisgICAgY3Vyc29yID0gZXZhbEFuZExvZygi
Y3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICBpZiAoY3Vyc29yKSB7CisgICAg
ICAgIHNldFJlYWRvbmx5UHJvcGVydHkoImN1cnNvci5zb3VyY2UiLCAidGhpcyIpOworICAgICAg
ICBzZXRSZWFkb25seVByb3BlcnR5KCJjdXJzb3IuZGlyZWN0aW9uIiwgIjY2NiIpOworICAgICAg
ICBzZXRSZWFkb25seVByb3BlcnR5KCJjdXJzb3Iua2V5IiwgIkluZmluaXR5Iik7CisgICAgICAg
IHNldFJlYWRvbmx5UHJvcGVydHkoImN1cnNvci5wcmltYXJ5S2V5IiwgIkluZmluaXR5Iik7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiY3Vyc29yIGlzIG51bGwiKTsKKyAgICB9
CisKKyAgICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5k
ZXgoJ2ZpcnN0JywgJ2ZpcnN0Jyk7Iik7CisgICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgiaW5kZXgu
bmFtZSIsICInYmFyJyIpOworICAgIHNldFJlYWRvbmx5UHJvcGVydHkoImluZGV4Lm9iamVjdFN0
b3JlIiwgInRoaXMiKTsKKyAgICBzZXRSZWFkb25seVByb3BlcnR5KCJpbmRleC5rZXlQYXRoIiwg
IidiYXInIik7CisgICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgiaW5kZXgudW5pcXVlIiwgInRydWUi
KTsKKworICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2Uub25seSgiZmlyc3QiKTsKKyAgICBzZXRS
ZWFkb25seVByb3BlcnR5KCJrZXlSYW5nZS5sb3dlciIsICJJbmZpbml0eSIpOworICAgIHNldFJl
YWRvbmx5UHJvcGVydHkoImtleVJhbmdlLnVwcGVyIiwgIkluZmluaXR5Iik7CisgICAgc2V0UmVh
ZG9ubHlQcm9wZXJ0eSgia2V5UmFuZ2UubG93ZXJPcGVuIiwgInRydWUiKTsKKyAgICBzZXRSZWFk
b25seVByb3BlcnR5KCJrZXlSYW5nZS51cHBlck9wZW4iLCAidHJ1ZSIpOworCisgICAgZmluaXNo
SlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvcmVxdWVzdC1l
dmVudC1wcm9wYWdhdGlvbi5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9yZXF1ZXN0LWV2ZW50LXByb3BhZ2F0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5NjcyMzVlMjBi
ZmRmOGY2MGYwMDQyYmFhNzgxNjdiYjFjYzUyNzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvcmVxdWVzdC1ldmVudC1wcm9wYWdhdGlv
bi5qcwpAQCAtMCwwICsxLDI2NyBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGlt
cG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7
CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0
IGV2ZW50IHByb3BvZ2F0aW9uIG9uIElEQlJlcXVlc3QuIik7CisKK2Z1bmN0aW9uIHRlc3QoKQor
eworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImluZGV4ZWREQi5vcGVuKCdyZXF1ZXN0LWV2ZW50LXByb3BhZ2F0aW9uJykiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb247CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb24oKQoreworICAgIGRi
ID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKK3sK
KyAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKKyAgICBzZWxmLnRyYW5zID0gZXZh
bEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVl
KCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRD
YWxsYmFjazsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gc3RhcnRUZXN0Iik7
CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgc3RvcmUgPSBldmFsQW5k
TG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOwor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enon
fSwgJ2tleScpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgpCit7CisgICAgZGVidWcoIlZlcmlmeSB0aGF0
IGhhbmRsZXIgZmlyZXMgYW5kIHRoYXQgbm90IHByZXZlbnRpbmcgZGVmYXVsdCB3aWxsIHJlc3Vs
dCBpbiBhbiBhYm9ydCIpOworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFu
c2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAg
IGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSB0cmFuc2FjdGlvbkFib3J0ZWQiKTsKKyAgICBl
dmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2si
KTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmVycm9yID0gYWxsb3dEZWZhdWx0Iik7CisgICAg
c3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUn
KSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6
ICd6enonfSwgJ2tleScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3Vj
Y2Vzc0NhbGxiYWNrOworICAgIGhhbmRsZXJGaXJlZCA9IGZhbHNlOworfQorCitmdW5jdGlvbiBh
bGxvd0RlZmF1bHQoKQoreworICAgIHRlc3RQYXNzZWQoIkV2ZW50IGhhbmRsZXIgZmlyZWQiKTsK
KyAgICBkZWJ1ZygiRG9pbmcgbm90aGluZyB0byBwcmV2ZW50IHRoZSBkZWZhdWx0IGFjdGlvbi4u
LiIpOworICAgIGhhbmRsZXJGaXJlZCA9IHRydWU7Cit9CisKK2Z1bmN0aW9uIHRyYW5zYWN0aW9u
QWJvcnRlZCgpCit7CisgICAgc2hvdWxkQmVUcnVlKCJoYW5kbGVyRmlyZWQiKTsKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoIlZlcmlmaW5nIGVycm9yIik7CisgICAgdHJhbnMgPSBldmFsQW5k
TG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIElEQlRyYW5zYWN0aW9u
LlJFQURfV1JJVEUpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMub25hYm9ydCA9IHRyYW5zYWN0
aW9uQWJvcnRlZDIiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gdW5leHBl
Y3RlZEFib3J0Q2FsbGJhY2siKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5hZGRFdmVudExpc3Rl
bmVyKCdlcnJvcicsIGVycm9yQ2FwdHVyZUNhbGxiYWNrLCB0cnVlKSIpOworICAgIGV2YWxBbmRM
b2coInRyYW5zLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZXJyb3JCdWJibGVDYWxsYmFjaywg
ZmFsc2UpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignc3VjY2Vz
cycsIHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2ssIHRydWUpIik7CisgICAgZXZhbEFuZExvZygi
dHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignc3VjY2VzcycsIHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJh
Y2ssIGZhbHNlKSIpOworICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9y
JywgZGJFcnJvckNhcHR1cmVDYWxsYmFjaywgdHJ1ZSkiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5h
ZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGRiRXJyb3JCdWJibGVDYWxsYmFjaywgZmFsc2UpIik7
CisgICAgZXZhbEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignc3VjY2VzcycsIHVuZXhwZWN0
ZWRTdWNjZXNzQ2FsbGJhY2ssIHRydWUpIik7CisgICAgZXZhbEFuZExvZygiZGIuYWRkRXZlbnRM
aXN0ZW5lcignc3VjY2VzcycsIHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2ssIGZhbHNlKSIpOwor
ICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVO
YW1lJykiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWUn
LCB5OiAnenp6J30sICdrZXknKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3Rl
ZFN1Y2Nlc3NDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBlcnJvckZpcmVkQ2FsbGJh
Y2s7CisgICAgZGJDYXB0dXJlRmlyZWQgPSBmYWxzZTsKKyAgICBjYXB0dXJlRmlyZWQgPSBmYWxz
ZTsKKyAgICByZXF1ZXN0RmlyZWQgPSBmYWxzZTsKKyAgICBidWJibGVGaXJlZCA9IGZhbHNlOwor
ICAgIGRiQnViYmxlRmlyZWQgPSBmYWxzZTsKK30KKworZnVuY3Rpb24gZGJFcnJvckNhcHR1cmVD
YWxsYmFjaygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJJbiBJREJEYXRhYmFzZSBl
cnJvciBjYXB0dXJlIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGJDYXB0dXJlRmlyZWQiKTsKKyAg
ICBzaG91bGRCZUZhbHNlKCJjYXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJyZXF1
ZXN0RmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJidWJibGVGaXJlZCIpOworICAgIHNob3Vs
ZEJlRmFsc2UoImRiQnViYmxlRmlyZWQiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0Iiwg
InJlcXVlc3QiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQuY3VycmVudFRhcmdldCIsICJkYiIpOwor
ICAgIGRiQ2FwdHVyZUZpcmVkID0gdHJ1ZTsKK30KKworZnVuY3Rpb24gZXJyb3JDYXB0dXJlQ2Fs
bGJhY2soKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiSW4gSURCVHJhbnNhY3Rpb24g
ZXJyb3IgY2FwdHVyZSIpOworICAgIHNob3VsZEJlVHJ1ZSgiZGJDYXB0dXJlRmlyZWQiKTsKKyAg
ICBzaG91bGRCZUZhbHNlKCJjYXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJyZXF1
ZXN0RmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJidWJibGVGaXJlZCIpOworICAgIHNob3Vs
ZEJlRmFsc2UoImRiQnViYmxlRmlyZWQiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0Iiwg
InJlcXVlc3QiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQuY3VycmVudFRhcmdldCIsICJ0cmFucyIp
OworICAgIGNhcHR1cmVGaXJlZCA9IHRydWU7Cit9CisKK2Z1bmN0aW9uIGVycm9yRmlyZWRDYWxs
YmFjaygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJJbiBJREJSZXF1ZXN0IGhhbmRs
ZXIiKTsKKyAgICBzaG91bGRCZVRydWUoImRiQ2FwdHVyZUZpcmVkIik7CisgICAgc2hvdWxkQmVU
cnVlKCJjYXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJyZXF1ZXN0RmlyZWQiKTsK
KyAgICBzaG91bGRCZUZhbHNlKCJidWJibGVGaXJlZCIpOworICAgIHNob3VsZEJlRmFsc2UoImRi
QnViYmxlRmlyZWQiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0IiwgInJlcXVlc3QiKTsK
KyAgICBzaG91bGRCZSgiZXZlbnQuY3VycmVudFRhcmdldCIsICJyZXF1ZXN0Iik7CisgICAgcmVx
dWVzdEZpcmVkID0gdHJ1ZTsKK30KKworZnVuY3Rpb24gZXJyb3JCdWJibGVDYWxsYmFjaygpCit7
CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJJbiBJREJUcmFuc2FjdGlvbiBlcnJvciBidWJi
bGUiKTsKKyAgICBzaG91bGRCZVRydWUoImRiQ2FwdHVyZUZpcmVkIik7CisgICAgc2hvdWxkQmVU
cnVlKCJjYXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRCZVRydWUoInJlcXVlc3RGaXJlZCIpOwor
ICAgIHNob3VsZEJlRmFsc2UoImJ1YmJsZUZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGJC
dWJibGVGaXJlZCIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAicmVxdWVzdCIpOwor
ICAgIHNob3VsZEJlKCJldmVudC5jdXJyZW50VGFyZ2V0IiwgInRyYW5zIik7CisgICAgYnViYmxl
RmlyZWQgPSB0cnVlOworfQorCitmdW5jdGlvbiBkYkVycm9yQnViYmxlQ2FsbGJhY2soKQorewor
ICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiSW4gSURCRGF0YWJhc2UgZXJyb3IgYnViYmxlIik7
CisgICAgc2hvdWxkQmVUcnVlKCJkYkNhcHR1cmVGaXJlZCIpOworICAgIHNob3VsZEJlVHJ1ZSgi
Y2FwdHVyZUZpcmVkIik7CisgICAgc2hvdWxkQmVUcnVlKCJyZXF1ZXN0RmlyZWQiKTsKKyAgICBz
aG91bGRCZVRydWUoImJ1YmJsZUZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVG
aXJlZCIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAicmVxdWVzdCIpOworICAgIHNo
b3VsZEJlKCJldmVudC5jdXJyZW50VGFyZ2V0IiwgImRiIik7CisgICAgZGJCdWJibGVGaXJlZCA9
IHRydWU7Cit9CisKK2Z1bmN0aW9uIHRyYW5zYWN0aW9uQWJvcnRlZDIoKQoreworICAgIGRlYnVn
KCIiKTsKKyAgICBkZWJ1ZygiVHJhbnNhY3Rpb24gYWJvcnRlZCIpOworICAgIHNob3VsZEJlVHJ1
ZSgiZGJDYXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRCZVRydWUoImNhcHR1cmVGaXJlZCIpOwor
ICAgIHNob3VsZEJlVHJ1ZSgicmVxdWVzdEZpcmVkIik7CisgICAgc2hvdWxkQmVUcnVlKCJidWJi
bGVGaXJlZCIpOworICAgIHNob3VsZEJlVHJ1ZSgiZGJCdWJibGVGaXJlZCIpOworICAgIGRlYnVn
KCIiKTsKKyAgICBkZWJ1ZygiVmVyaWZpbmcgc3VjY2Vzcy4iKTsKKyAgICB0cmFucyA9IGV2YWxB
bmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rp
b24uUkVBRF9XUklURSkiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gdHJh
bnNhY3Rpb25Db21wbGV0ZSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSB1bmV4
cGVjdGVkQWJvcnRDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLmFkZEV2ZW50TGlz
dGVuZXIoJ3N1Y2Nlc3MnLCBzdWNjZXNzQ2FwdHVyZUNhbGxiYWNrLCB0cnVlKSIpOworICAgIGV2
YWxBbmRMb2coInRyYW5zLmFkZEV2ZW50TGlzdGVuZXIoJ3N1Y2Nlc3MnLCBzdWNjZXNzQnViYmxl
Q2FsbGJhY2ssIGZhbHNlKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLmFkZEV2ZW50TGlzdGVu
ZXIoJ2Vycm9yJywgdW5leHBlY3RlZEVycm9yQ2FsbGJhY2ssIHRydWUpIik7CisgICAgZXZhbEFu
ZExvZygidHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjaywgZmFsc2UpIik7CisgICAgZXZhbEFuZExvZygiZGIucmVtb3ZlRXZlbnRMaXN0ZW5lcign
ZXJyb3InLCBkYkVycm9yQ2FwdHVyZUNhbGxiYWNrLCB0cnVlKSIpOworICAgIGV2YWxBbmRMb2co
ImRiLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZGJFcnJvckJ1YmJsZUNhbGxiYWNrLCBm
YWxzZSkiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5yZW1vdmVFdmVudExpc3RlbmVyKCdzdWNjZXNz
JywgdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjaywgdHJ1ZSkiKTsKKyAgICBldmFsQW5kTG9nKCJk
Yi5yZW1vdmVFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFj
aywgZmFsc2UpIik7CisgICAgZXZhbEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignc3VjY2Vz
cycsIGRiU3VjY2Vzc0NhcHR1cmVDYWxsYmFjaywgdHJ1ZSkiKTsKKyAgICBldmFsQW5kTG9nKCJk
Yi5hZGRFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgZGJTdWNjZXNzQnViYmxlQ2FsbGJhY2ssIGZh
bHNlKSIpOworICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2ssIHRydWUpIik7CisgICAgZXZhbEFuZExvZygiZGIuYWRkRXZl
bnRMaXN0ZW5lcignZXJyb3InLCB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjaywgZmFsc2UpIik7Cisg
ICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5h
bWUnKSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScs
IHk6ICd6enonfSwgJ2tleTInKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc3VjY2Vzc0ZpcmVkQ2FsbGJh
Y2s7CisgICAgZGJDYXB0dXJlRmlyZWQgPSBmYWxzZTsKKyAgICBjYXB0dXJlRmlyZWQgPSBmYWxz
ZTsKKyAgICByZXF1ZXN0RmlyZWQgPSBmYWxzZTsKKyAgICBidWJibGVGaXJlZCA9IGZhbHNlOwor
ICAgIGRiQnViYmxlRmlyZWQgPSBmYWxzZTsKK30KKworZnVuY3Rpb24gZGJTdWNjZXNzQ2FwdHVy
ZUNhbGxiYWNrKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIkluIElEQkRhdGFiYXNl
IHN1Y2Nlc3MgY2FwdHVyZSIpOworICAgIHNob3VsZEJlRmFsc2UoImRiQ2FwdHVyZUZpcmVkIik7
CisgICAgc2hvdWxkQmVGYWxzZSgiY2FwdHVyZUZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgi
cmVxdWVzdEZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiYnViYmxlRmlyZWQiKTsKKyAgICBz
aG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVkIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdl
dCIsICJyZXF1ZXN0Iik7CisgICAgc2hvdWxkQmUoImV2ZW50LmN1cnJlbnRUYXJnZXQiLCAiZGIi
KTsKKyAgICBkYkNhcHR1cmVGaXJlZCA9IHRydWU7Cit9CisKK2Z1bmN0aW9uIHN1Y2Nlc3NDYXB0
dXJlQ2FsbGJhY2soKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiSW4gSURCVHJhbnNh
Y3Rpb24gc3VjY2VzcyBjYXB0dXJlIik7CisgICAgc2hvdWxkQmVUcnVlKCJkYkNhcHR1cmVGaXJl
ZCIpOworICAgIHNob3VsZEJlRmFsc2UoImNhcHR1cmVGaXJlZCIpOworICAgIHNob3VsZEJlRmFs
c2UoInJlcXVlc3RGaXJlZCIpOworICAgIHNob3VsZEJlRmFsc2UoImJ1YmJsZUZpcmVkIik7Cisg
ICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVGaXJlZCIpOworICAgIHNob3VsZEJlKCJldmVudC50
YXJnZXQiLCAicmVxdWVzdCIpOworICAgIHNob3VsZEJlKCJldmVudC5jdXJyZW50VGFyZ2V0Iiwg
InRyYW5zIik7CisgICAgY2FwdHVyZUZpcmVkID0gdHJ1ZTsKK30KKworZnVuY3Rpb24gc3VjY2Vz
c0ZpcmVkQ2FsbGJhY2soKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiSW4gSURCUmVx
dWVzdCBoYW5kbGVyIik7CisgICAgc2hvdWxkQmVUcnVlKCJkYkNhcHR1cmVGaXJlZCIpOworICAg
IHNob3VsZEJlVHJ1ZSgiY2FwdHVyZUZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgicmVxdWVz
dEZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiYnViYmxlRmlyZWQiKTsKKyAgICBzaG91bGRC
ZUZhbHNlKCJkYkJ1YmJsZUZpcmVkIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldCIsICJy
ZXF1ZXN0Iik7CisgICAgc2hvdWxkQmUoImV2ZW50LmN1cnJlbnRUYXJnZXQiLCAicmVxdWVzdCIp
OworICAgIHJlcXVlc3RGaXJlZCA9IHRydWU7Cit9CisKK2Z1bmN0aW9uIHN1Y2Nlc3NCdWJibGVD
YWxsYmFjaygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJJbiBJREJUcmFuc2FjdGlv
biBzdWNjZXNzIGJ1YmJsZSIpOworICAgIHRlc3RGYWlsZWQoIlN1Y2Nlc3MgYnViYmxlIGNhbGxi
YWNrIHNob3VsZCBOT1QgZmlyZSIpOworICAgIGJ1YmJsZUZpcmVkID0gdHJ1ZTsKK30KKworZnVu
Y3Rpb24gZGJTdWNjZXNzQnViYmxlQ2FsbGJhY2soKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBk
ZWJ1ZygiSW4gSURCRGF0YWJhc2Ugc3VjY2VzcyBidWJibGUiKTsKKyAgICB0ZXN0RmFpbGVkKCJT
dWNjZXNzIGJ1YmJsZSBjYWxsYmFjayBzaG91bGQgTk9UIGZpcmUiKTsKKyAgICBkYkJ1YmJsZUZp
cmVkID0gdHJ1ZTsKK30KKworZnVuY3Rpb24gdHJhbnNhY3Rpb25Db21wbGV0ZSgpCit7CisgICAg
ZGVidWcoIiIpOworICAgIGRlYnVnKCJUcmFuc2FjdGlvbiBjb21wbGV0ZWQiKTsKKyAgICBzaG91
bGRCZVRydWUoImRiQ2FwdHVyZUZpcmVkIik7CisgICAgc2hvdWxkQmVUcnVlKCJjYXB0dXJlRmly
ZWQiKTsKKyAgICBzaG91bGRCZVRydWUoInJlcXVlc3RGaXJlZCIpOworICAgIHNob3VsZEJlRmFs
c2UoImJ1YmJsZUZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVGaXJlZCIpOwor
ICAgIGRlYnVnKCIiKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworICAgIHJldHVybjsKK30KKwor
dGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zZXRWZXJzaW9uLW51bGwuanMgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2V0VmVyc2lvbi1udWxsLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmE4OGEzYzc1ZjYyYzQ2ZTRhMmMzNzg4ZTgwMjFjM2UzOWYzY2QzZWQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2V0
VmVyc2lvbi1udWxsLmpzCkBAIC0wLDAgKzEsMzUgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMp
IHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlw
dGlvbigiVGVzdCBJbmRleGVkREIgd2l0aCBudWxsIHZlcnNpb24gc3RyaW5nIik7CisKK2Z1bmN0
aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0g
c2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFi
YXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVz
Y3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
b3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbihudWxs
KTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RTZXRWZXJzaW9uOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBwb3N0
U2V0VmVyc2lvbigpCit7CisgICAgc2hvdWxkQmUoImRiLnZlcnNpb24iLCAiJ251bGwnIik7Cisg
ICAgZmluaXNoSlNUZXN0KCk7Cit9CisKKwordGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NldFZlcnNpb24tdW5kZWZpbmVkLmpzIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NldFZlcnNpb24tdW5kZWZp
bmVkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA3ODMzNmUzODg0MzQwZjgzMWE3NTdjNmM2MDkwYmMzNWQzMmE0
MTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvc2V0VmVyc2lvbi11bmRlZmluZWQuanMKQEAgLTAsMCArMSwyOCBAQAoraWYgKHRoaXMu
aW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7
Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiB2ZXJzaW9uIHN0cmluZyBpcyByZXF1
aXJlZCIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygp
OworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24g
PSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWRE
Qi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3Bl
blN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRi
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgc2hvdWxkVGhyb3coImRiLnNldFZlcnNp
b24oKTsiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworCit0ZXN0KCk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2V0X3ZlcnNpb25fYmxv
Y2tlZC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zZXRfdmVy
c2lvbl9ibG9ja2VkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzM2ViN2M5OTg4MjQ2MmI0NjZiMTA4ZWZlODRm
NGU3NzJlNGYwNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvc2V0X3ZlcnNpb25fYmxvY2tlZC5qcwpAQCAtMCwwICsxLDU1IEBACitp
ZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFy
ZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIkFuIG9wZW4gY29ubmVjdGlvbiBibG9ja3MgYSBz
ZXBhcmF0ZSBjb25uZWN0aW9uJ3Mgc2V0VmVyc2lvbiBjYWxsIik7CisKK2Nvbm5lY3Rpb25zID0g
W10KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAg
b3BlbkRCQ29ubmVjdGlvbigpOworfQorCitmdW5jdGlvbiBvcGVuREJDb25uZWN0aW9uKCkKK3sK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3NldC12ZXJzaW9uLWJs
b2NrZWQnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9w
ZW5TdWNjZXNzKCkKK3sKKyAgICBjb25uZWN0aW9uID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAg
ICBjb25uZWN0aW9ucy5wdXNoKGNvbm5lY3Rpb24pOworICAgIG9yaWdpbmFsX3ZlcnNpb24gPSBj
b25uZWN0aW9uLnZlcnNpb247CisgICAgaWYgKGNvbm5lY3Rpb25zLmxlbmd0aCA8IDIpCisgICAg
ICAgIG9wZW5EQkNvbm5lY3Rpb24oKTsKKyAgICBlbHNlIHsKKyAgICAgICAgdmFyIHZlcnNpb25D
aGFuZ2VSZXF1ZXN0ID0gZXZhbEFuZExvZygiY29ubmVjdGlvbnNbMF0uc2V0VmVyc2lvbigndmVy
c2lvbiAxJykiKTsKKyAgICAgICAgdmVyc2lvbkNoYW5nZVJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICB2ZXJzaW9uQ2hhbmdlUmVxdWVzdC5vbnN1Y2Nl
c3MgPSBpblNldFZlcnNpb247CisgICAgICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uYmxvY2tl
ZCA9IGJsb2NrZWQ7CisgICAgfQorfQorCitzZWVuX2Jsb2NrZWRfZXZlbnQgPSBmYWxzZTsKK2Z1
bmN0aW9uIGJsb2NrZWQoKQoreworICAgIGV2YWxBbmRMb2coInNlZW5fYmxvY2tlZF9ldmVudCA9
IHRydWUiKTsKKyAgICBibG9ja2VkX2V2ZW50ID0gZXZlbnQ7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJibG9ja2VkX2V2ZW50LnZlcnNpb24iLCAidmVyc2lvbiAxIik7CisgICAgc2hvdWxk
RXZhbHVhdGVUbygiYmxvY2tlZF9ldmVudC50YXJnZXQucmVhZHlTdGF0ZSIsIDEpOworICAgIGV2
YWxBbmRMb2coImNvbm5lY3Rpb25zWzFdLmNsb3NlKCkiKTsKK30KKworZnVuY3Rpb24gaW5TZXRW
ZXJzaW9uKCkKK3sKKyAgICBkZWJ1ZygiaW4gc2V0VmVyc2lvbi5vbnN1Y2Nlc3MiKTsKKyAgICBz
aG91bGRCZVRydWUoInNlZW5fYmxvY2tlZF9ldmVudCIpOworICAgIGRlbGV0ZUFsbE9iamVjdFN0
b3Jlcyhjb25uZWN0aW9uc1swXSk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zZXRf
dmVyc2lvbl9xdWV1ZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9zZXRfdmVyc2lvbl9xdWV1ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYWEzNDVkNDM3YzY4NThiYWRhMzc2
MmQ5OTY2MWZlZDExYjY1YzYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NldF92ZXJzaW9uX3F1ZXVlLmpzCkBAIC0wLDAgKzEsMTIy
IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRz
KCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIjQgb3BlbiBjb25uZWN0aW9ucyB0cnkg
dG8gc2V0VmVyc2lvbiBhdCB0aGUgc2FtZSB0aW1lLiAgMyBjb25uZWN0aW9ucyBldmVudHVhbGx5
IGNsb3NlLCBhbGxvd2luZyAxIHNldFZlcnNpb24gY2FsbCB0byBwcm9jZWVkLiIpOworCitjb25u
ZWN0aW9ucyA9IFtdCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhl
cygpOworCisgICAgb3BlbkRCQ29ubmVjdGlvbigpOworfQorCitmdW5jdGlvbiBvcGVuREJDb25u
ZWN0aW9uKCkKK3sKKyAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbignc2V0
LXZlcnNpb24tcXVldWUnKSIpOworICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsK
KyAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgY29ubmVjdGlvbiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQ7CisgICAgY29ubmVjdGlvbi5vbnZlcnNpb25jaGFuZ2UgPSBnZW5lcmF0ZVZlcnNpb25DaGFu
Z2VIYW5kbGVyKCk7CisgICAgY29ubmVjdGlvbnMucHVzaChjb25uZWN0aW9uKTsKKyAgICBpZiAo
Y29ubmVjdGlvbnMubGVuZ3RoIDwgNCkKKyAgICAgICAgb3BlbkRCQ29ubmVjdGlvbigpOworICAg
IGVsc2UgeworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiY29ubmVjdGlvbnNbMF0uc2V0
VmVyc2lvbigndmVyc2lvbiAwJykiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rp
b24oZXZlbnQpeyBjb25uZWN0aW9uRXJyb3IoZXZlbnQsIDApIH07CisgICAgICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5v
bmJsb2NrZWQgPSBibG9ja2VkMDsKKyAgICAgICAgcmVxdWVzdDEgPSBldmFsQW5kTG9nKCJjb25u
ZWN0aW9uc1sxXS5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgICAgICByZXF1ZXN0MS5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3QxLm9uc3Vj
Y2VzcyA9IGluU2V0VmVyc2lvbjE7CisgICAgICAgIHJlcXVlc3QxLm9uYmxvY2tlZCA9IGJsb2Nr
ZWQxOworICAgICAgICByZXF1ZXN0MiA9IGV2YWxBbmRMb2coImNvbm5lY3Rpb25zWzJdLnNldFZl
cnNpb24oJ3ZlcnNpb24gMicpIik7CisgICAgICAgIHJlcXVlc3QyLm9uZXJyb3IgPSBmdW5jdGlv
bihldmVudCl7IGNvbm5lY3Rpb25FcnJvcihldmVudCwgMikgfTsKKyAgICAgICAgcmVxdWVzdDIu
b25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdDIu
b25ibG9ja2VkID0gYmxvY2tlZDI7CisgICAgICAgIHJlcXVlc3QzID0gZXZhbEFuZExvZygiY29u
bmVjdGlvbnNbM10uc2V0VmVyc2lvbigndmVyc2lvbiAzJykiKTsKKyAgICAgICAgcmVxdWVzdDMu
b25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KXsgY29ubmVjdGlvbkVycm9yKGV2ZW50LCAzKSB9Owor
ICAgICAgICByZXF1ZXN0My5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOwor
ICAgICAgICByZXF1ZXN0My5vbmJsb2NrZWQgPSBibG9ja2VkMzsKKyAgICAgICAgZGVidWcoIiIp
OworICAgIH0KK30KKworZnVuY3Rpb24gZ2VuZXJhdGVWZXJzaW9uQ2hhbmdlSGFuZGxlcigpCit7
CisgICAgdmFyIGNvbm5lY3Rpb25OdW0gPSBjb25uZWN0aW9ucy5sZW5ndGg7CisgICAgcmV0dXJu
IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJldmVudC52ZXJz
aW9uLmxlbmd0aCA+IDAiKTsKKyAgICAgICAgZGVidWcoImNvbm5lY3Rpb25bIiArIGNvbm5lY3Rp
b25OdW0gKyAiXSByZWNlaXZlZCB2ZXJzaW9uQ2hhbmdlRXZlbnQ6ICIgKyBldmVudC52ZXJzaW9u
KTsKKyAgICB9Cit9CisKK2Jsb2NrZWQwZmlyZWQgPSBmYWxzZTsKK2Jsb2NrZWQyZmlyZWQgPSBm
YWxzZTsKK2Z1bmN0aW9uIGJsb2NrZWQwKGV2ZW50KQoreworICAgIGRlYnVnKCIiKTsKKyAgICB0
ZXN0UGFzc2VkKCJjb25uZWN0aW9uWzBdIGdvdCBibG9ja2VkIGV2ZW50Iik7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJldmVudC52ZXJzaW9uIiwgInZlcnNpb24gMCIpOworICAgIGRlYnVn
KCJDbG9zZSB0aGUgY29ubmVjdGlvbiB0aGF0IHJlY2VpdmVkIHRoZSBibG9jayBldmVudDoiKTsK
KyAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uc1swXS5jbG9zZSgpIik7CisgICAgZGVidWcoIkNs
b3NlIGFub3RoZXIgY29ubmVjdGlvbiBhcyB3ZWxsLCB0byB0ZXN0IDQuNy40LW5vdGU6Iik7Cisg
ICAgZXZhbEFuZExvZygiY29ubmVjdGlvbnNbM10uY2xvc2UoKSIpOworICAgIGV2YWxBbmRMb2co
ImJsb2NrZWQwZmlyZWQgPSB0cnVlIik7CisgICAgZGVidWcoIiIpOworfQorCitmdW5jdGlvbiBi
bG9ja2VkMShldmVudCkKK3sKKyAgICBkZWJ1ZygiIikKKyAgICB0ZXN0UGFzc2VkKCJjb25uZWN0
aW9uWzFdIGdvdCBibG9ja2VkIGV2ZW50Iik7CisgICAgZGVidWcoIkVuc3VyZSB0aGF0IHRoaXMg
YmxvY2tlZCBldmVudCBpcyBpbiBvcmRlcjoiKTsKKyAgICBzaG91bGRCZVRydWUoImJsb2NrZWQw
ZmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJibG9ja2VkMmZpcmVkIik7CisgICAgZGVidWco
IiIpCit9CisKK2Z1bmN0aW9uIGJsb2NrZWQyKGV2ZW50KQoreworICAgIGRlYnVnKCIiKQorICAg
IHRlc3RQYXNzZWQoImNvbm5lY3Rpb25bMl0gZ290IGJsb2NrZWQgZXZlbnQiKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnZlcnNpb24iLCAidmVyc2lvbiAyIik7CisgICAgZXZh
bEFuZExvZygiY29ubmVjdGlvbnNbMl0uY2xvc2UoKSIpOworICAgIGV2YWxBbmRMb2coImJsb2Nr
ZWQyZmlyZWQgPSB0cnVlIik7CisgICAgZGVidWcoIiIpCit9CisKK2Z1bmN0aW9uIGJsb2NrZWQz
KGV2ZW50KQoreworICAgIGRlYnVnKCIiKQorICAgIHRlc3RQYXNzZWQoImNvbm5lY3Rpb25bM10g
Z290IGJsb2NrZWQgZXZlbnQiKTsKKyAgICBkZWJ1ZygiTm90ZTogVGhpcyBtZWFucyB0aGF0IGEg
Y29ubmVjdGlvbiBjYW4gcmVjZWl2ZSBhIGJsb2NrZWQgZXZlbnQgYWZ0ZXIgaXRzIGNsb3NlKCkg
bWV0aG9kIGhhcyBiZWVuIGNhbGxlZC4gIFNwZWMgaXMgc2lsZW50IG9uIHRoZSBpc3N1ZSBhbmQg
dGhpcyBpcyBlYXNpZXN0IHRvIGltcGxlbWVudC4iKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoImV2ZW50LnZlcnNpb24iLCAidmVyc2lvbiAzIik7Cit9CisKK2Z1bmN0aW9uIGNvbm5lY3Rp
b25FcnJvcihldmVudCwgY29ubmVjdGlvbklkKQoreworICAgIGRlYnVnKCIiKQorICAgIHRlc3RQ
YXNzZWQoImNvbm5lY3Rpb25bIiArIGNvbm5lY3Rpb25JZCArICJdIGdvdCBlcnJvciBldmVudCIp
OworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuZXJyb3JDb2RlIiwgIklEQkRhdGFiYXNlRXhj
ZXB0aW9uLkFCT1JUX0VSUiIpCisgICAgaWYgKCd3ZWJraXRFcnJvck1lc3NhZ2UnIGluIGV2ZW50
LnRhcmdldCkgeworICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LndlYmtpdEVycm9yTWVz
c2FnZS5sZW5ndGggPiAwIiwgInRydWUiKTsKKyAgICAgICAgZGVidWcoZXZlbnQudGFyZ2V0Lndl
YmtpdEVycm9yTWVzc2FnZSk7CisgICAgfQorfQorCitmdW5jdGlvbiBpblNldFZlcnNpb24xKGV2
ZW50KQoreworICAgIGRlYnVnKCIiKQorICAgIHRlc3RQYXNzZWQoImNvbm5lY3Rpb25bMV0gZ290
IGludG8gU2V0VmVyc2lvbiIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc3RydWN0
dXJlZC1jbG9uZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9z
dHJ1Y3R1cmVkLWNsb25lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2NzU5MzI3NGIwMTIyYTU3Mzg2YjViNGQz
YTQ3NjQ0YzJkNTAxZDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvc3RydWN0dXJlZC1jbG9uZS5qcwpAQCAtMCwwICsxLDUzMSBAQAor
aWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hh
cmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IHN0cnVjdHVyZWQgY2xvbmUgcGVybXV0
YXRpb25zIGluIEluZGV4ZWREQi4gRmlsZS9GaWxlTGlzdCB0ZXN0cyByZXF1aXJlIER1bXBSZW5k
ZXJUcmVlLiIpOworCitpZiAoc2VsZi5ldmVudFNlbmRlcikgeworICAgIHZhciBmaWxlSW5wdXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmlsZUlucHV0Iik7CisgICAgdmFyIGZpbGVSZWN0
ID0gZmlsZUlucHV0LmdldENsaWVudFJlY3RzKClbMF07CisgICAgdmFyIHRhcmdldFggPSBmaWxl
UmVjdC5sZWZ0ICsgZmlsZVJlY3Qud2lkdGggLyAyOworICAgIHZhciB0YXJnZXRZID0gZmlsZVJl
Y3QudG9wICsgZmlsZVJlY3QuaGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5iZWdpbkRyYWdX
aXRoRmlsZXMoWydyZXNvdXJjZXMvdGVzdC1kYXRhLmh0bWwnLCAncmVzb3VyY2VzL3Rlc3QtZGF0
YS50eHQnXSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8odGFyZ2V0WCwgdGFyZ2V0WSk7
CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAgIHByZXBhcmVEYXRhYmFzZSgpOworfQorCitm
dW5jdGlvbiBwcmVwYXJlRGF0YWJhc2UoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygi
UHJlcGFyZSBEYXRhYmFzZSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
ZGVsZXRlRGF0YWJhc2UoJ3N0cnVjdHVyZWQtY2xvbmUnKSIpOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVu
Y3Rpb24oZSkgeworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4o
J3N0cnVjdHVyZWQtY2xvbmUnKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihl
KSB7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJkYiA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAg
ICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLnZlcnNpb24iLCAiIik7CisgICAgICAg
ICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgICAg
ICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAg
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgICAgIGV2
YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworICAgICAgICAg
ICAgICAgIHZhciB0cmFucyA9IHJlcXVlc3QucmVzdWx0OworICAgICAgICAgICAgICAgIHRyYW5z
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgICAgICAgICB0cmFu
cy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgICAgICAgICAgICAgdHJh
bnMub25jb21wbGV0ZSA9IHN0YXJ0VGVzdHM7CisgICAgICAgICAgICB9OworICAgICAgICB9Owor
ICAgIH07Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdHMoKQoreworICAgIGRlYnVnKCIiKTsKKyAg
ICBkZWJ1ZygiUnVubmluZyB0ZXN0cy4uLiIpOworICAgIHZhciB0ZXN0c190b19ydW4gPSBbCisg
ICAgICAgIHRlc3RVbmRlZmluZWQsCisgICAgICAgIHRlc3ROdWxsLAorICAgICAgICB0ZXN0Qm9v
bGVhbiwKKyAgICAgICAgdGVzdE51bWJlciwKKyAgICAgICAgdGVzdFN0cmluZywKKyAgICAgICAg
dGVzdEJvb2xlYW5PYmplY3QsCisgICAgICAgIHRlc3ROdW1iZXJPYmplY3QsCisgICAgICAgIHRl
c3RTdHJpbmdPYmplY3QsCisgICAgICAgIHRlc3REYXRlT2JqZWN0LAorICAgICAgICB0ZXN0UmVn
RXhwT2JqZWN0LAorICAgICAgICB0ZXN0SW1hZ2VEYXRhLAorICAgICAgICB0ZXN0QmxvYiwKKyAg
ICAgICAgdGVzdEZpbGUsCisgICAgICAgIHRlc3RGaWxlTGlzdCwKKyAgICAgICAgdGVzdEFycmF5
LAorICAgICAgICB0ZXN0T2JqZWN0CisgICAgXTsKKworICAgIGZ1bmN0aW9uIG5leHRUZXN0KCkg
eworICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgIGlmICh0ZXN0c190b19ydW4ubGVuZ3RoKSB7
CisgICAgICAgICAgICB2YXIgdGVzdCA9IHRlc3RzX3RvX3J1bi5zaGlmdCgpOworICAgICAgICAg
ICAgdGVzdChuZXh0VGVzdCk7IC8vIFdoZW4gZG9uZSwgY2FsbCB0aGlzIGFnYWluLgorICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgdGVzdEJhZFR5cGVzKCk7CisgICAgICAgIH0KKyAgICB9
CisgICAgbmV4dFRlc3QoKTsKK30KKworZnVuY3Rpb24gZm9yRWFjaFdpdGhDYWxsYmFjayh0ZXN0
RnVuY3Rpb24sIHZhbHVlcywgY2FsbGJhY2spCit7CisgICAgZnVuY3Rpb24gbmV4dFZhbHVlKCkg
eworICAgICAgICBpZiAodmFsdWVzLmxlbmd0aCkgeworICAgICAgICAgICAgdGVzdEZ1bmN0aW9u
KHZhbHVlcy5zaGlmdCgpLCBuZXh0VmFsdWUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgY2FsbGJhY2soKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG5leHRWYWx1ZSgpOworfQor
CitmdW5jdGlvbiB0ZXN0VmFsdWUodmFsdWUsIGNhbGxiYWNrKQoreworICAgIC8vIE9uZSB0cmFu
c2FjdGlvbiBwZXIgdGVzdCwgc2luY2Ugc29tZSB0ZXN0cyByZXF1aXJlIGFzeW5jaHJvbm91cwor
ICAgIC8vIG9wZXJhdGlvbnMgdG8gdmVyaWZ5IHRoZSByZXN1bHQgKGUuZy4gdmlhIEZpbGVSZWFk
ZXIpCisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmVO
YW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICB0cmFuc2FjdGlvbi5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9
IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNh
Y3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisKKyAgICBzZWxmLnZhbHVlID0gdmFs
dWU7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLnB1dCh2YWx1ZSwgJ2tleScpIik7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihlKSB7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJzdG9yZS5nZXQoJ2tleScpIik7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KGUpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKHJlcXVlc3QucmVzdWx0KTsKKyAgICAgICAgfTsK
KyAgICB9OworfQorCisvLyBJZGVudGl0eSB0ZXN0aW5nLCBzZW5zaXRpdmUgdG8gTmFOIGFuZCAt
MAorZnVuY3Rpb24gaXMoeCwgeSkgeworICAgIGlmICh4ID09PSB5KSB7CisgICAgICAgIHJldHVy
biB4ICE9PSAwIHx8IDEgLyB4ID09PSAxIC8geTsKKyAgICB9CisgICAgcmV0dXJuIHggIT09IHgg
JiYgeSAhPT0geTsKK30KKworZnVuY3Rpb24gYXJyYXlDb21wYXJlKGEsIGIpIHsKKyAgICBpZiAo
YS5sZW5ndGggIT09IGIubGVuZ3RoKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhLmxlbmd0aDsgKytpKSB7CisgICAgICAgIGlmICghaXMo
YVtpXSwgYltpXSkpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAg
IH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZnVuY3Rpb24gdGVzdFByaW1pdGl2ZVZhbHVlKHN0
cmluZywgY2FsbGJhY2spCit7CisgICAgZGVidWcoIlRlc3Rpbmc6ICIgKyBzdHJpbmcpOworICAg
IHZhciB2YWx1ZSA9IGV2YWwoInZhbHVlID0gKCIgKyBzdHJpbmcgKyAiKSIpOworICAgIHRlc3Rf
ZGF0YSA9IHZhbHVlOworICAgIHRlc3RWYWx1ZSh0ZXN0X2RhdGEsIGZ1bmN0aW9uKHJlc3VsdCkg
eworICAgICAgICBzZWxmLnJlc3VsdCA9IHJlc3VsdDsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJp
cyh0ZXN0X2RhdGEsIHJlc3VsdCkiKTsKKyAgICAgICAgZGVidWcoIiIpOworICAgICAgICBjYWxs
YmFjaygpOworICAgIH0pOworfQorCitmdW5jdGlvbiB0ZXN0T2JqZWN0V2l0aFZhbHVlKHN0cmlu
ZywgY2FsbGJhY2spCit7CisgICAgZGVidWcoIlRlc3Rpbmc6ICIgKyBzdHJpbmcpOworICAgIHZh
ciB2YWx1ZSA9IGV2YWwoInZhbHVlID0gKCIgKyBzdHJpbmcgKyAiKSIpOworICAgIHRlc3RfZGF0
YSA9IHZhbHVlOworICAgIHRlc3RWYWx1ZSh0ZXN0X2RhdGEsIGZ1bmN0aW9uKHJlc3VsdCkgewor
ICAgICAgICBzZWxmLnJlc3VsdCA9IHJlc3VsdDsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJ0eXBlb2YgcmVzdWx0IiwgIm9iamVjdCIpOworICAgICAgICBzaG91bGRCZSgiT2JqZWN0
LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHJlc3VsdCkiLCAiT2JqZWN0LnByb3RvdHlwZS50b1N0
cmluZy5jYWxsKHRlc3RfZGF0YSkiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXN0X2RhdGEg
IT09IHJlc3VsdCIpOworICAgICAgICBzaG91bGRCZSgicmVzdWx0LnRvU3RyaW5nKCkiLCAidGVz
dF9kYXRhLnRvU3RyaW5nKCkiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJpcyh0ZXN0X2RhdGEu
dmFsdWVPZigpLCByZXN1bHQudmFsdWVPZigpKSIpOworICAgICAgICBkZWJ1ZygiIik7CisgICAg
ICAgIGNhbGxiYWNrKCk7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIHRlc3RVbmRlZmluZWQoY2Fs
bGJhY2spCit7CisgICAgdGVzdFByaW1pdGl2ZVZhbHVlKCJ1bmRlZmluZWQiLCBjYWxsYmFjayk7
Cit9CisKK2Z1bmN0aW9uIHRlc3ROdWxsKGNhbGxiYWNrKQoreworICAgIHRlc3RQcmltaXRpdmVW
YWx1ZSgibnVsbCIsIGNhbGxiYWNrKTsKK30KKworZnVuY3Rpb24gdGVzdEJvb2xlYW4oY2FsbGJh
Y2spCit7CisgICAgZGVidWcoIlRlc3RpbmcgYm9vbGVhbiBwcmltaXRpdmVzIik7CisgICAgZGVi
dWcoIiIpOworICAgIGZvckVhY2hXaXRoQ2FsbGJhY2sodGVzdFByaW1pdGl2ZVZhbHVlLCBbInRy
dWUiLCAiZmFsc2UiXSwgY2FsbGJhY2spOworfQorCitmdW5jdGlvbiB0ZXN0Qm9vbGVhbk9iamVj
dChjYWxsYmFjaykKK3sKKyAgICBkZWJ1ZygiVGVzdGluZyBCb29sZWFuIG9iamVjdHMiKTsKKyAg
ICBkZWJ1ZygiIik7CisgICAgZm9yRWFjaFdpdGhDYWxsYmFjayh0ZXN0T2JqZWN0V2l0aFZhbHVl
LCBbCisgICAgICAgICJuZXcgQm9vbGVhbih0cnVlKSIsCisgICAgICAgICJuZXcgQm9vbGVhbihm
YWxzZSkiCisgICAgXSwgY2FsbGJhY2spOworfQorCitmdW5jdGlvbiB0ZXN0U3RyaW5nKGNhbGxi
YWNrKQoreworICAgIGRlYnVnKCJUZXN0aW5nIHN0cmluZyBwcmltaXRpdmVzIik7CisgICAgZGVi
dWcoIiIpOworICAgIGZvckVhY2hXaXRoQ2FsbGJhY2sodGVzdFByaW1pdGl2ZVZhbHVlLCBbCisg
ICAgICAgICInJyIsCisgICAgICAgICIndGhpcyBpcyBhIHNhbXBsZSBzdHJpbmcnIiwKKyAgICAg
ICAgIidudWxsKFxcMCknIgorICAgIF0sIGNhbGxiYWNrKTsKK30KKworZnVuY3Rpb24gdGVzdFN0
cmluZ09iamVjdChjYWxsYmFjaykKK3sKKyAgICBkZWJ1ZygiVGVzdGluZyBTdHJpbmcgb2JqZWN0
cyIpOworICAgIGRlYnVnKCIiKTsKKyAgICBmb3JFYWNoV2l0aENhbGxiYWNrKHRlc3RPYmplY3RX
aXRoVmFsdWUsIFsKKyAgICAgICAgIm5ldyBTdHJpbmcoKSIsCisgICAgICAgICJuZXcgU3RyaW5n
KCd0aGlzIGlzIGEgc2FtcGxlIHN0cmluZycpIiwKKyAgICAgICAgIm5ldyBTdHJpbmcoJ251bGwo
XFwwKScpIgorICAgIF0sIGNhbGxiYWNrKTsKK30KKworZnVuY3Rpb24gdGVzdE51bWJlcihjYWxs
YmFjaykKK3sKKyAgICBkZWJ1ZygiVGVzdGluZyBudW1iZXIgcHJpbWl0aXZlcyIpOworICAgIGRl
YnVnKCIiKTsKKyAgICBmb3JFYWNoV2l0aENhbGxiYWNrKHRlc3RQcmltaXRpdmVWYWx1ZSwgWwor
ICAgICAgICAiTmFOIiwKKyAgICAgICAgIi1JbmZpbml0eSIsCisgICAgICAgICItTnVtYmVyLk1B
WF9WQUxVRSIsCisgICAgICAgICItTnVtYmVyLk1JTl9WQUxVRSIsCisgICAgICAgICItMCIsCisg
ICAgICAgICIwIiwKKyAgICAgICAgIk51bWJlci5NSU5fVkFMVUUiLAorICAgICAgICAiTnVtYmVy
Lk1BWF9WQUxVRSIsCisgICAgICAgICJJbmZpbml0eSIKKyAgICBdLCBjYWxsYmFjayk7Cit9CisK
K2Z1bmN0aW9uIHRlc3ROdW1iZXJPYmplY3QoY2FsbGJhY2spCit7CisgICAgZGVidWcoIlRlc3Rp
bmcgTnVtYmVyIG9iamVjdHMiKTsKKyAgICBkZWJ1ZygiIik7CisgICAgZm9yRWFjaFdpdGhDYWxs
YmFjayh0ZXN0T2JqZWN0V2l0aFZhbHVlLCBbCisgICAgICAgICJuZXcgTnVtYmVyKE5hTikiLAor
ICAgICAgICAibmV3IE51bWJlcigtSW5maW5pdHkpIiwKKyAgICAgICAgIm5ldyBOdW1iZXIoLU51
bWJlci5NQVhfVkFMVUUpIiwKKyAgICAgICAgIm5ldyBOdW1iZXIoLU51bWJlci5NSU5fVkFMVUUp
IiwKKyAgICAgICAgIm5ldyBOdW1iZXIoLTApIiwKKyAgICAgICAgIm5ldyBOdW1iZXIoMCkiLAor
ICAgICAgICAibmV3IE51bWJlcihOdW1iZXIuTUlOX1ZBTFVFKSIsCisgICAgICAgICJuZXcgTnVt
YmVyKE51bWJlci5NQVhfVkFMVUUpIiwKKyAgICAgICAgIm5ldyBOdW1iZXIoSW5maW5pdHkpIgor
ICAgIF0sIGNhbGxiYWNrKTsKK30KKworZnVuY3Rpb24gdGVzdERhdGVPYmplY3QoY2FsbGJhY2sp
Cit7CisgICAgZGVidWcoIlRlc3RpbmcgRGF0ZSBvYmplY3RzIik7CisgICAgZGVidWcoIiIpOwor
ICAgIGZvckVhY2hXaXRoQ2FsbGJhY2sodGVzdE9iamVjdFdpdGhWYWx1ZSwgWworICAgICAgICAi
bmV3IERhdGUoLTFlMTMpIiwKKyAgICAgICAgIm5ldyBEYXRlKC0xZTEyKSIsCisgICAgICAgICJu
ZXcgRGF0ZSgtMWU5KSIsCisgICAgICAgICJuZXcgRGF0ZSgtMWU2KSIsCisgICAgICAgICJuZXcg
RGF0ZSgtMWUzKSIsCisgICAgICAgICJuZXcgRGF0ZSgwKSIsCisgICAgICAgICJuZXcgRGF0ZSgx
ZTMpIiwKKyAgICAgICAgIm5ldyBEYXRlKDFlNikiLAorICAgICAgICAibmV3IERhdGUoMWU5KSIs
CisgICAgICAgICJuZXcgRGF0ZSgxZTEyKSIsCisgICAgICAgICJuZXcgRGF0ZSgxZTEzKSIKKyAg
ICBdLCBjYWxsYmFjayk7Cit9CisKK2Z1bmN0aW9uIHRlc3RSZWdFeHBPYmplY3QoY2FsbGJhY2sp
Cit7CisgICAgZGVidWcoIlRlc3RpbmcgUmVnRXhwIG9iamVjdHMiKTsKKyAgICBkZWJ1ZygiIik7
CisgICAgZnVuY3Rpb24gdGVzdFJlZ0V4cChzdHJpbmcsIGNhbGxiYWNrKSB7CisgICAgICAgIGRl
YnVnKCJUZXN0aW5nIFJlZ0V4cDogIiArIHN0cmluZyk7CisgICAgICAgIHZhciB2YWx1ZSA9IGV2
YWwoInZhbHVlID0gKCIgKyBzdHJpbmcgKyAiKSIpOworICAgICAgICB0ZXN0X2RhdGEgPSB2YWx1
ZTsKKyAgICAgICAgdGVzdFZhbHVlKHRlc3RfZGF0YSwgZnVuY3Rpb24ocmVzdWx0KSB7CisgICAg
ICAgICAgICBzZWxmLnJlc3VsdCA9IHJlc3VsdDsKKyAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgi
dGVzdF9kYXRhICE9PSByZXN1bHQiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygiT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHJlc3VsdCkiLCAiW29iamVjdCBSZWdF
eHBdIik7CisgICAgICAgICAgICBzaG91bGRCZSgicmVzdWx0LnRvU3RyaW5nKCkiLCAidGVzdF9k
YXRhLnRvU3RyaW5nKCkiKTsKKyAgICAgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgICAgIGNh
bGxiYWNrKCk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZvckVhY2hXaXRoQ2FsbGJhY2so
dGVzdFJlZ0V4cCwgWworICAgICAgICAibmV3IFJlZ0V4cCgpIiwKKyAgICAgICAgIi9hYmMvIiwK
KyAgICAgICAgIi9hYmMvZyIsCisgICAgICAgICIvYWJjL2kiLAorICAgICAgICAiL2FiYy9naSIs
CisgICAgICAgICIvYWJjL20iLAorICAgICAgICAiL2FiYy9tZyIsCisgICAgICAgICIvYWJjL21p
IiwKKyAgICAgICAgIi9hYmMvbWdpIgorICAgIF0sIGNhbGxiYWNrKTsKK30KKworZnVuY3Rpb24g
dGVzdEltYWdlRGF0YShjYWxsYmFjaykKK3sKKyAgICBkZWJ1ZygiVGVzdGluZyBJbWFnZURhdGEi
KTsKKyAgICBldmFsQW5kTG9nKCJjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52
YXMnKSIpOworICAgIGV2YWxBbmRMb2coImNhbnZhcy53aWR0aCA9IDgiKTsKKyAgICBldmFsQW5k
TG9nKCJjYW52YXMuaGVpZ2h0ID0gOCIpOworICAgIGV2YWxBbmRMb2coInRlc3RfZGF0YSA9IGNh
bnZhcy5nZXRDb250ZXh0KCcyZCcpLmdldEltYWdlRGF0YSgwLCAwLCA4LCA4KSIpOworCisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCAyNTY7ICsraSkgeworICAgICAgICB0ZXN0X2RhdGEuZGF0YVtp
XSA9IGk7CisgICAgfQorCisgICAgdGVzdFZhbHVlKHRlc3RfZGF0YSwgZnVuY3Rpb24ocmVzdWx0
KSB7CisgICAgICAgIHNlbGYucmVzdWx0ID0gcmVzdWx0OworICAgICAgICBzaG91bGRCZVRydWUo
InRlc3RfZGF0YSAhPT0gcmVzdWx0Iik7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHJlc3VsdCkiLCAiW29iamVjdCBJbWFnZURh
dGFdIik7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHQud2lkdGgiLCAidGVzdF9kYXRhLndpZHRo
Iik7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHQuaGVpZ2h0IiwgInRlc3RfZGF0YS5oZWlnaHQi
KTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdC5kYXRhLmxlbmd0aCIsICJ0ZXN0X2RhdGEuZGF0
YS5sZW5ndGgiKTsKKyAgICAgICAgaWYgKGFycmF5Q29tcGFyZSh0ZXN0X2RhdGEuZGF0YSwgcmVz
dWx0LmRhdGEpKSB7CisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJyZXN1bHQgZGF0YSBtYXRjaGVz
Iik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJyZXN1bHQgZGF0
YSBkb2Vzbid0IG1hdGNoIik7CisgICAgICAgIH0KKyAgICAgICAgY2FsbGJhY2soKTsKKyAgICB9
KTsKK30KKworZnVuY3Rpb24gcmVhZEJsb2JBc1RleHQoYmxvYiwgY2FsbGJhY2spCit7CisgICAg
dmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7CisgICAgcmVhZGVyLm9ubG9hZCA9IGZ1bmN0
aW9uKGUpIHsKKyAgICAgICAgaWYgKGUudGFyZ2V0LnJlYWR5U3RhdGUgPT09IEZpbGVSZWFkZXIu
RE9ORSkgeworICAgICAgICAgICAgY2FsbGJhY2soZS50YXJnZXQucmVzdWx0KTsKKyAgICAgICAg
fQorICAgIH07CisgICAgcmVhZGVyLm9uZXJyb3IgPSBmdW5jdGlvbihlKSB7CisgICAgICAgIHRl
c3RGYWlsZWQoIkVycm9yIHJlYWRpbmcgYmxvYiBhcyB0ZXh0OiAiICsgZSk7CisgICAgICAgIGZp
bmlzaEpTVGVzdCgpOworICAgIH07CisgICAgcmVhZGVyLnJlYWRBc1RleHQoYmxvYik7Cit9CisK
K2Z1bmN0aW9uIGNoZWNrQmxvYkNvbnRlbnRzKGJsb2IsIGV4cGVjdGVkLCBjYWxsYmFjaykKK3sK
KyAgICByZWFkQmxvYkFzVGV4dChibG9iLCBmdW5jdGlvbih0ZXh0KSB7CisgICAgICAgIHNlbGYu
dGV4dCA9IHRleHQ7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidGV4dCIsIGV4cGVj
dGVkKTsKKyAgICAgICAgY2FsbGJhY2soKTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gY29tcGFy
ZUJsb2JzKGJsb2IxLCBibG9iMiwgY2FsbGJhY2spCit7CisgICAgcmVhZEJsb2JBc1RleHQoYmxv
YjEsIGZ1bmN0aW9uKHRleHQxKSB7CisgICAgICAgIHJlYWRCbG9iQXNUZXh0KGJsb2IyLCBmdW5j
dGlvbih0ZXh0MikgeworICAgICAgICAgICAgc2VsZi50ZXh0MSA9IHRleHQxOworICAgICAgICAg
ICAgc2VsZi50ZXh0MiA9IHRleHQyOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJ0ZXh0MiIsIHRleHQxKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIH0pOwor
ICAgIH0pOworfQorCitmdW5jdGlvbiB0ZXN0QmxvYihjYWxsYmFjaykKK3sKKyAgICBkZWJ1Zygi
VGVzdGluZyBCbG9iIik7CisKKyAgICAvLyBGSVhNRTogQmxvYiwgRmlsZSwgYW5kIEZpbGVMaXN0
IHN1cHBvcnQgaXMgaW5jb21wbGV0ZS4KKyAgICAvLyBodHRwOi8vY3JidWcuY29tLzEwODAxMgor
ICAgIGRlYnVnKCJTa2lwcGluZyB0ZXN0Iik7CisgICAgY2FsbGJhY2soKTsKKyAgICByZXR1cm47
CisKKyAgICBldmFsQW5kTG9nKCJCbG9iQnVpbGRlciA9IHNlbGYuQmxvYkJ1aWxkZXIgfHwgc2Vs
Zi5XZWJLaXRCbG9iQnVpbGRlciIpOworICAgIHNob3VsZEJlVHJ1ZSgiQmxvYkJ1aWxkZXIgIT0g
bnVsbCIpOworICAgIHNob3VsZEJlVHJ1ZSgiRmlsZVJlYWRlciAhPSBudWxsIik7CisgICAgZXZh
bEFuZExvZygiYnVpbGRlciA9IG5ldyBCbG9iQnVpbGRlcigpIik7CisgICAgZXZhbEFuZExvZygi
dGVzdF9jb250ZW50ID0gJ1RoaXMgaXMgYSB0ZXN0LiBUaGlzIGlzIG9ubHkgYSB0ZXN0LiciKTsK
KyAgICBldmFsQW5kTG9nKCJidWlsZGVyLmFwcGVuZCh0ZXN0X2NvbnRlbnQpIik7CisgICAgZXZh
bEFuZExvZygidGVzdF9kYXRhID0gYnVpbGRlci5nZXRCbG9iKCkiKTsKKyAgICB0ZXN0VmFsdWUo
dGVzdF9kYXRhLCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgICAgc2VsZi5yZXN1bHQgPSByZXN1
bHQ7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgidGVzdF9kYXRhICE9PSByZXN1bHQiKTsKKyAgICAg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwo
cmVzdWx0KSIsICJbb2JqZWN0IEJsb2JdIik7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHQuc2l6
ZSIsICJ0ZXN0X2RhdGEuc2l6ZSIpOworICAgICAgICBzaG91bGRCZSgicmVzdWx0LnR5cGUiLCAi
dGVzdF9kYXRhLnR5cGUiKTsKKyAgICAgICAgY2hlY2tCbG9iQ29udGVudHMocmVzdWx0LCB0ZXN0
X2NvbnRlbnQsIGNhbGxiYWNrKTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gY29tcGFyZUZpbGVz
KGZpbGUxLCBmaWxlMiwgY2FsbGJhY2spCit7CisgICAgc2VsZi5maWxlMSA9IGZpbGUxOworICAg
IHNlbGYuZmlsZTIgPSBmaWxlMjsKKyAgICBzaG91bGRCZVRydWUoImZpbGUxICE9PSBmaWxlMiIp
OworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5j
YWxsKGZpbGUxKSIsICJbb2JqZWN0IEZpbGVdIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZmlsZTIpIiwgIltvYmplY3QgRmlsZV0i
KTsKKyAgICBkZWJ1ZygiZmlsZTEuc2l6ZTogIiArIGZpbGUxLnNpemUpOworICAgIHNob3VsZEJl
KCJmaWxlMS5zaXplIiwgImZpbGUyLnNpemUiKTsKKyAgICBkZWJ1ZygiZmlsZTEudHlwZTogIiAr
IGZpbGUxLnR5cGUpOworICAgIHNob3VsZEJlKCJmaWxlMS50eXBlIiwgImZpbGUyLnR5cGUiKTsK
KyAgICBkZWJ1ZygiZmlsZTEubmFtZTogIiArIGZpbGUxLm5hbWUpOworICAgIHNob3VsZEJlKCJm
aWxlMS5uYW1lIiwgImZpbGUyLm5hbWUiKTsKKyAgICBzaG91bGRCZSgiU3RyaW5nKGZpbGUxLmxh
c3RNb2RpZmllZERhdGUpIiwgIlN0cmluZyhmaWxlMi5sYXN0TW9kaWZpZWREYXRlKSIpOworICAg
IGlmIChjYWxsYmFjaykgeworICAgICAgICBjb21wYXJlQmxvYnMoZmlsZTEsIGZpbGUyLCBjYWxs
YmFjayk7CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0RmlsZShjYWxsYmFjaykKK3sKKyAgICBk
ZWJ1ZygiVGVzdGluZyBGaWxlIik7CisKKyAgICAvLyBGSVhNRTogQmxvYiwgRmlsZSwgYW5kIEZp
bGVMaXN0IHN1cHBvcnQgaXMgaW5jb21wbGV0ZS4KKyAgICAvLyBodHRwOi8vY3JidWcuY29tLzEw
ODAxMgorICAgIGRlYnVnKCJTa2lwcGluZyB0ZXN0Iik7CisgICAgY2FsbGJhY2soKTsKKyAgICBy
ZXR1cm47CisKKyAgICBldmFsQW5kTG9nKCJ0ZXN0X2NvbnRlbnQgPSBmaWxlSW5wdXQuZmlsZXNb
MF0iKTsKKworICAgIHNlbGYudGVzdF9kYXRhID0gdGVzdF9jb250ZW50OworICAgIHRlc3RWYWx1
ZSh0ZXN0X2RhdGEsIGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICBzZWxmLnJlc3VsdCA9IHJl
c3VsdDsKKyAgICAgICAgY29tcGFyZUZpbGVzKHJlc3VsdCwgdGVzdF9kYXRhLCBjYWxsYmFjayk7
CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIHRlc3RGaWxlTGlzdChjYWxsYmFjaykKK3sKKyAgICBk
ZWJ1ZygiVGVzdGluZyBGaWxlTGlzdCIpOworCisgICAgLy8gRklYTUU6IEJsb2IsIEZpbGUsIGFu
ZCBGaWxlTGlzdCBzdXBwb3J0IGlzIGluY29tcGxldGUuCisgICAgLy8gaHR0cDovL2NyYnVnLmNv
bS8xMDgwMTIKKyAgICBkZWJ1ZygiU2tpcHBpbmcgdGVzdCIpOworICAgIGNhbGxiYWNrKCk7Cisg
ICAgcmV0dXJuOworCisgICAgZXZhbEFuZExvZygidGVzdF9jb250ZW50ID0gZmlsZUlucHV0LmZp
bGVzIik7CisKKyAgICBzZWxmLnRlc3RfZGF0YSA9IHRlc3RfY29udGVudDsKKyAgICB0ZXN0VmFs
dWUodGVzdF9kYXRhLCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgICAgc2VsZi5yZXN1bHQgPSBy
ZXN1bHQ7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgidGVzdF9kYXRhICE9PSByZXN1bHQiKTsKKyAg
ICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNh
bGwocmVzdWx0KSIsICJbb2JqZWN0IEZpbGVMaXN0XSIpOworICAgICAgICBzaG91bGRCZSgicmVz
dWx0Lmxlbmd0aCIsICJ0ZXN0X2RhdGEubGVuZ3RoIik7CisgICAgICAgIGkgPSAwOworICAgICAg
ICBmdW5jdGlvbiBkb05leHQoKSB7CisgICAgICAgICAgICBpZiAoaSA+PSB0ZXN0X2RhdGEubGVu
Z3RoKSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgZGVidWcoImNvbXBhcmluZyBmaWxlWyIgKyBpICsgIl0iKTsKKyAg
ICAgICAgICAgICAgICBjb21wYXJlRmlsZXMocmVzdWx0W2ldLCB0ZXN0X2RhdGFbaSsrXSwgZG9O
ZXh0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBkb05leHQoKTsKKyAgICB9
KTsKK30KKworZnVuY3Rpb24gdGVzdEFycmF5KGNhbGxiYWNrKSB7CisgICAgZGVidWcoIlRlc3Rp
bmcgQXJyYXkiKTsKKyAgICBldmFsQW5kTG9nKCJ0ZXN0X2RhdGEgPSBbXSIpOworICAgIGV2YWxB
bmRMb2coInRlc3RfZGF0YVswXSA9ICdmb28nIik7CisgICAgZXZhbEFuZExvZygidGVzdF9kYXRh
WzFdID0gJ2JhciciKTsKKyAgICBldmFsQW5kTG9nKCJ0ZXN0X2RhdGFbMTBdID0gdHJ1ZSIpOwor
ICAgIGV2YWxBbmRMb2coInRlc3RfZGF0YVsxMV0gPSBmYWxzZSIpOworICAgIGV2YWxBbmRMb2co
InRlc3RfZGF0YVsyMF0gPSAxMjMiKTsKKyAgICBldmFsQW5kTG9nKCJ0ZXN0X2RhdGFbMjFdID0g
NDU2Iik7CisgICAgZXZhbEFuZExvZygidGVzdF9kYXRhWzMwXSA9IG51bGwiKTsKKworICAgIHRl
c3RWYWx1ZSh0ZXN0X2RhdGEsIGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICBzZWxmLnJlc3Vs
dCA9IHJlc3VsdDsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXN0X2RhdGEgIT09IHJlc3VsdCIp
OworICAgICAgICBzaG91bGRCZVRydWUoInRlc3RfZGF0YS5sZW5ndGggPT09IHJlc3VsdC5sZW5n
dGgiKTsKKyAgICAgICAgT2JqZWN0LmtleXModGVzdF9kYXRhKS5mb3JFYWNoKAorICAgICAgICAg
ICAgZnVuY3Rpb24oa2V5KSB7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoInRlc3RfZGF0YVsi
ICsga2V5ICsgIl0iLCAicmVzdWx0WyIgKyBrZXkgKyAiXSIpOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgIGNhbGxiYWNrKCk7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIHRlc3RPYmplY3QoY2Fs
bGJhY2spIHsKKyAgICBkZWJ1ZygiVGVzdGluZyBPYmplY3QiKTsKKyAgICBldmFsQW5kTG9nKCJ0
ZXN0X2RhdGEgPSBbXSIpOworICAgIGV2YWxBbmRMb2coInRlc3RfZGF0YVswXSA9ICdmb28nIik7
CisgICAgZXZhbEFuZExvZygidGVzdF9kYXRhWzFdID0gJ2JhciciKTsKKyAgICBldmFsQW5kTG9n
KCJ0ZXN0X2RhdGFbJ2EnXSA9IHRydWUiKTsKKyAgICBldmFsQW5kTG9nKCJ0ZXN0X2RhdGFbJ2In
XSA9IGZhbHNlIik7CisgICAgZXZhbEFuZExvZygidGVzdF9kYXRhWydmb28nXSA9IDEyMyIpOwor
ICAgIGV2YWxBbmRMb2coInRlc3RfZGF0YVsnYmFyJ10gPSA0NTYiKTsKKyAgICBldmFsQW5kTG9n
KCJ0ZXN0X2RhdGFbJyddID0gbnVsbCIpOworCisgICAgdGVzdFZhbHVlKHRlc3RfZGF0YSwgZnVu
Y3Rpb24ocmVzdWx0KSB7CisgICAgICAgIHNlbGYucmVzdWx0ID0gcmVzdWx0OworICAgICAgICBz
aG91bGRCZVRydWUoInRlc3RfZGF0YSAhPT0gcmVzdWx0Iik7CisgICAgICAgIHNob3VsZEJlVHJ1
ZSgiYXJyYXlDb21wYXJlKE9iamVjdC5rZXlzKHJlc3VsdCkuc29ydCgpLCBPYmplY3Qua2V5cyh0
ZXN0X2RhdGEpLnNvcnQoKSkiKTsKKyAgICAgICAgT2JqZWN0LmtleXModGVzdF9kYXRhKS5mb3JF
YWNoKAorICAgICAgICAgICAgZnVuY3Rpb24oa2V5KSB7CisgICAgICAgICAgICAgICAgc2hvdWxk
QmUoInRlc3RfZGF0YVsiICsgSlNPTi5zdHJpbmdpZnkoa2V5KSArICJdIiwgInJlc3VsdFsiICsg
SlNPTi5zdHJpbmdpZnkoa2V5KSArICJdIik7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgY2Fs
bGJhY2soKTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gdGVzdEJhZFR5cGVzKCkKK3sKKyAgICBk
ZWJ1ZygiIik7CisgICAgZGVidWcoIlRlc3QgdHlwZXMgdGhhdCBjYW4ndCBiZSBjbG9uZWQ6Iik7
CisgICAgZGVidWcoIiIpOworCisgICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFu
c2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICBl
dmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIp
OworICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7Cisg
ICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IGZpbmlzaEpTVGVzdDsKKworICAgIGRlYnVnKCIiKTsK
KyAgICBkZWJ1ZygiT3RoZXIgSmF2YVNjcmlwdCBvYmplY3QgdHlwZXM6Iik7CisgICAgZXZhbEFu
ZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KG5ldyBFcnJvciwgJ2tleScpIiwgIkRPTUV4Y2Vw
dGlvbi5EQVRBX0NMT05FX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3Jl
LnB1dChuZXcgRnVuY3Rpb24sICdrZXknKSIsICJET01FeGNlcHRpb24uREFUQV9DTE9ORV9FUlIi
KTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiT3RoZXIgaG9zdCBvYmplY3QgdHlwZXM6
Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KHNlbGYsICdrZXknKSIs
ICJET01FeGNlcHRpb24uREFUQV9DTE9ORV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJzdG9yZS5wdXQoZG9jdW1lbnQsICdrZXknKSIsICJET01FeGNlcHRpb24uREFUQV9DTE9O
RV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5wdXQoZG9jdW1lbnQu
Ym9keSwgJ2tleScpIiwgIkRPTUV4Y2VwdGlvbi5EQVRBX0NMT05FX0VSUiIpOworfQorCit0ZXN0
KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWFib3J0LmpzIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWFib3J0LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjU4NjhlODc5ZTNjNDQ5NDZjOWQ5MTFiY2U4YmU2OTYwMjA3MzM3NjMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJh
bnNhY3Rpb24tYWJvcnQuanMKQEAgLTAsMCArMSw5MCBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0
cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2Ny
aXB0aW9uKCJUZXN0IHRyYW5zYWN0aW9uIGFib3J0cyBzZW5kIHRoZSBwcm9wZXIgb25hYm9ydCBt
ZXNzYWdlcy4uIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZp
eGVzKCk7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ25hbWUn
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvbjsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lv
bigpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsK
KworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicp
Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVsZXRl
RXhpc3RpbmcoKQoreworICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOworICAgIHNl
bGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAg
ICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVu
ZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUg
PSBzdGFydFRlc3QiKTsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBz
dG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFt
ZScsIG51bGwpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3Zh
bHVlJywgeTogJ3p6eid9LCAna2V5JykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc3RhcnRUZXN0KCkKK3sKKyAgICB0cmFu
cyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURC
VHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmFib3J0
ID0gdHJhbnNhY3Rpb25BYm9ydGVkIik7CisgICAgZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0
ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrIik7CisgICAgc3RvcmUgPSBldmFsQW5kTG9n
KCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZTInLCB5OiAnenp6Mid9LCAna2V5Micp
Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gZmlyc3RBZGQ7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJzdG9yZS5hZGQoe3g6ICd2YWx1ZTMnLCB5OiAnenp6Myd9LCAna2V5MycpIik7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gc2Vjb25kQWRkOworICAgIHRyYW5zLmFib3J0KCk7CisKKyAgICBmaXJz
dEVycm9yID0gZmFsc2U7CisgICAgc2Vjb25kRXJyb3IgPSBmYWxzZTsKKyAgICBhYm9ydEZpcmVk
ID0gZmFsc2U7Cit9CisKK2Z1bmN0aW9uIGZpcnN0QWRkKCkKK3sKKyAgICBzaG91bGRCZSgiZXZl
bnQudGFyZ2V0LmVycm9yQ29kZSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5BQk9SVF9FUlIiKTsK
KyAgICBzaG91bGRCZUZhbHNlKCJmaXJzdEVycm9yIik7CisgICAgc2hvdWxkQmVGYWxzZSgic2Vj
b25kRXJyb3IiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJhYm9ydEZpcmVkIik7CisgICAgZmlyc3RF
cnJvciA9IHRydWU7CisKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5hZGQoe3g6
ICd2YWx1ZTQnLCB5OiAnenp6NCd9LCAna2V5NCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRS
QU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOworfQorCitmdW5jdGlvbiBzZWNvbmRBZGQoKQorewor
ICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuZXJyb3JDb2RlIiwgIklEQkRhdGFiYXNlRXhjZXB0
aW9uLkFCT1JUX0VSUiIpOworICAgIHNob3VsZEJlVHJ1ZSgiZmlyc3RFcnJvciIpOworICAgIHNo
b3VsZEJlRmFsc2UoInNlY29uZEVycm9yIik7CisgICAgc2hvdWxkQmVGYWxzZSgiYWJvcnRGaXJl
ZCIpOworICAgIHNlY29uZEVycm9yID0gdHJ1ZTsKK30KKworZnVuY3Rpb24gdHJhbnNhY3Rpb25B
Ym9ydGVkKCkKK3sKKyAgICBzaG91bGRCZVRydWUoImZpcnN0RXJyb3IiKTsKKyAgICBzaG91bGRC
ZVRydWUoInNlY29uZEVycm9yIik7CisgICAgc2hvdWxkQmVGYWxzZSgiYWJvcnRGaXJlZCIpOwor
ICAgIGFib3J0RmlyZWQgPSB0cnVlOworCisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3Rv
cmUuYWRkKHt4OiAndmFsdWU1JywgeTogJ3p6ejUnfSwgJ2tleTUnKSIsICJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsK
K30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1hZnRlci1j
bG9zZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2Fj
dGlvbi1hZnRlci1jbG9zZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNjBmNmRiZDViOWM5YWVhYmI0YTUwZjI0
NWI0MWFkNzkzNWFmZTc3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWFmdGVyLWNsb3NlLmpzCkBAIC0wLDAgKzEs
ODEgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8u
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlw
dHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBjbG9zaW5nIGEgZGF0YWJh
c2UgY29ubmVjdGlvbiBpbiBJbmRleGVkREIuIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAg
IHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5k
ZXhlZERCLm9wZW4oJ3RyYW5zYWN0aW9uLWFmdGVyLWNsb3NlJykiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGVidWco
Im9wZW5TdWNjZXNzKCk6Iik7CisgICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdCIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIu
c2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGluU2V0
VmVyc2lvbjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
K30KKworZnVuY3Rpb24gaW5TZXRWZXJzaW9uKCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9y
ZXMoZGIpOworCisgICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5vbmNvbXBsZXRlID0gcnVuRmlyc3RS
ZWd1bGFyVHJhbnNhY3Rpb247CisgICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5vbmFib3J0ID0gdW5l
eHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBzdG9yZS5wdXQoJ3gnLCAneScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBvblB1dFN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9uUHV0U3VjY2VzcygpCit7CisgICAgdGVzdFBhc3NlZCgi
UHV0IHN1Y2Nlc3MiKQorfQorCitmdW5jdGlvbiBydW5GaXJzdFJlZ3VsYXJUcmFuc2FjdGlvbigp
Cit7CisgICAgZGVidWcoInJ1bm5pbmcgZmlyc3QgdHJhbnNhY3Rpb24iKQorICAgIGN1cnJlbnRU
cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coImN1cnJlbnRUcmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0
aW9uKFsnc3RvcmUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICBjdXJyZW50
VHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIGN1cnJl
bnRUcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZmlyc3RUcmFuc2FjdGlvbkNvbXBsZXRlOworICAg
IG9iamVjdFN0b3JlID0gY3VycmVudFRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpOwor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5wdXQoJ2EnLCAnYicpIik7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0
aW9uIGZpcnN0VHJhbnNhY3Rpb25Db21wbGV0ZSgpCit7CisgICAgZXZhbEFuZExvZygiZGIuY2xv
c2UoKSIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKFsnc3Rv
cmUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24u
Tk9UX0FMTE9XRURfRVJSIik7CisKKyAgICBkZWJ1ZygiIikKKyAgICBkZWJ1ZygidmVyaWZ5IHRo
YXQgd2UgY2FuIHJlb3BlbiB0aGUgZGIgYWZ0ZXIgY2FsbGluZyBjbG9zZSIpCisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCd0cmFuc2FjdGlvbi1hZnRlci1jbG9zZScp
Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvblNlY29uZE9wZW4KKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb25TZWNvbmRP
cGVuKCkgeworICAgIHNlY29uZF9kYiA9IGV2YWxBbmRMb2coInNlY29uZF9kYiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKKyAgICBjdXJyZW50VHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJjdXJy
ZW50VHJhbnNhY3Rpb24gPSBzZWNvbmRfZGIudHJhbnNhY3Rpb24oWydzdG9yZSddLCBJREJUcmFu
c2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIHN0b3JlID0gY3VycmVudFRyYW5zYWN0aW9uLm9i
amVjdFN0b3JlKCdzdG9yZScpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
c3RvcmUucHV0KCcxJywgJzInKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb25GaW5hbFB1
dFN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CisgICAgY3VycmVudFRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmaW5pc2hKU1Rlc3Q7CisgICAg
Y3VycmVudFRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKK30K
KworZnVuY3Rpb24gb25GaW5hbFB1dFN1Y2Nlc3MoKSB7CisgICAgdGVzdFBhc3NlZCgiZmluYWwg
cHV0IHN1Y2Nlc3MiKTsKK30KKwordGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWFuZC1vYmplY3RzdG9yZS1jYWxs
cy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlv
bi1hbmQtb2JqZWN0c3RvcmUtY2FsbHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGFjNjFkODMyYjk3ZjMzY2E2
ZjAyNjI5ZGI0OGFjMTNlMjM3NjIyNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1hbmQtb2JqZWN0c3RvcmUtY2Fs
bHMuanMKQEAgLTAsMCArMSwxMjQgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBp
bXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycp
OworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVz
dCBJbmRleGVkREIncyB0cmFuc2FjdGlvbiBhbmQgb2JqZWN0U3RvcmUgY2FsbHMiKTsKKworZnVu
Y3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndHJhbnNhY3Rpb24tYW5kLW9iamVjdHN0
b3JlLWNhbGxzJywgJ2Rlc2NyaXB0aW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9w
ZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgc2VsZi5kYiA9IGV2YWxBbmRM
b2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXN1bHQgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7CisgICAgdHJh
bnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBkZWxl
dGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ2EnKSIpOworICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdiJyki
KTsKKyAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKS5jcmVhdGVJ
bmRleCgnaW5kZXgnLCAnc29tZV9wYXRoJykiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5hZGRF
dmVudExpc3RlbmVyKCdjb21wbGV0ZScsIGNyZWF0ZWQsIHRydWUpIik7CisgICAgZGVidWcoIiIp
OworfQorCitmdW5jdGlvbiBjcmVhdGVkKCkKK3sKKyAgICB0cmFucyA9IGV2YWxBbmRMb2coInRy
YW5zID0gZGIudHJhbnNhY3Rpb24oWydhJ10pIik7CisgICAgZXZhbEFuZExvZygidHJhbnMub2Jq
ZWN0U3RvcmUoJ2EnKSIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInRyYW5zLm9iamVj
dFN0b3JlKCdiJykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOworICAg
IGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInRyYW5zLm9iamVjdFN0b3JlKCd4JykiLCAiSURCRGF0
YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOworICAgIGRlYnVnKCIiKTsKKworICAgIHRy
YW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ2EnXSkiKTsKKyAgICBl
dmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYScpIik7CisgICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ2InKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5O
T1RfRk9VTkRfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigidHJhbnMub2JqZWN0
U3RvcmUoJ3gnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7CisgICAg
ZGVidWcoIiIpOworCisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0
aW9uKFsnYiddKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdiJykiKTsK
KyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0cmFucy5vYmplY3RTdG9yZSgnYScpIiwgIklE
QkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJ0cmFucy5vYmplY3RTdG9yZSgneCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5P
VF9GT1VORF9FUlIiKTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICB0cmFucyA9IGV2YWxBbmRMb2co
InRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydhJywgJ2InXSkiKTsKKyAgICBldmFsQW5kTG9nKCJ0
cmFucy5vYmplY3RTdG9yZSgnYScpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3Rv
cmUoJ2InKSIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInRyYW5zLm9iamVjdFN0b3Jl
KCd4JykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOworICAgIGRlYnVn
KCIiKTsKKworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihb
J2InLCAnYSddKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdhJykiKTsK
KyAgICBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYicpIik7CisgICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ3gnKSIsICJJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5OT1RfRk9VTkRfRVJSIik7CisgICAgZGVidWcoIiIpOworCisgICAgZGVidWcoIlBhc3Np
bmcgYSBzdHJpbmcgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIGEgc2hvcnRjdXQgZm9yIGp1c3Qg
b25lIG9iamVjdCBzdG9yZToiKTsKKyAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIu
dHJhbnNhY3Rpb24oJ2EnKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdh
JykiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0cmFucy5vYmplY3RTdG9yZSgnYicp
IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKKyAgICBldmFsQW5kRXhw
ZWN0RXhjZXB0aW9uKCJ0cmFucy5vYmplY3RTdG9yZSgneCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0
aW9uLk5PVF9GT1VORF9FUlIiKTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICBzaG91bGRUaHJvdygi
dHJhbnMgPSBkYi50cmFuc2FjdGlvbigpIik7CisgICAgZGVidWcoIiIpOworCisgICAgZXZhbEFu
ZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oWyd4J10pIiwgIklEQkRhdGFiYXNlRXhj
ZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50
cmFuc2FjdGlvbihbJ3gnXSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIp
OworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKFsnYScsICd4J10p
IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKKyAgICBldmFsQW5kRXhw
ZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbihbJ3gnLCAneCddKSIsICJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIu
dHJhbnNhY3Rpb24oWydhJywgJ3gnLCAnYiddKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1Rf
Rk9VTkRfRVJSIik7CisgICAgZGVidWcoIiIpOworCisgICAgZGVidWcoIkV4Y2VwdGlvbiB0aHJv
d24gd2hlbiBubyBzdG9yZXMgc3BlY2lmaWVkOiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRp
b24oImRiLnRyYW5zYWN0aW9uKFtdKSIsICJET01FeGNlcHRpb24uSU5WQUxJRF9BQ0NFU1NfRVJS
Iik7CisgICAgZGVidWcoIiIpOworCisgICAgZGVidWcoInt9IGNvZXJjZXMgdG8gYSBzdHJpbmcg
LSBzbyBubyBtYXRjaCwgYnV0IG5vdCBhIHR5cGUgZXJyb3I6Iik7CisgICAgZXZhbEFuZEV4cGVj
dEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oe30pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5P
VF9GT1VORF9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlv
bih7bW9kZTowfSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOworICAg
IGRlYnVnKCIiKTsKKworICAgIGRlYnVnKCJPdmVycmlkaW5nIHRoZSBkZWZhdWx0IHN0cmluZyBj
b2VyY2lvbiBtYWtlcyB0aGVzZSB3b3JrOiIpOworICAgIGV2YWxBbmRMb2coImRiLnRyYW5zYWN0
aW9uKHt0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiAnYSc7fX0pIik7CisgICAgZXZhbEFuZExv
ZygiZGIudHJhbnNhY3Rpb24oW3t0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiAnYSc7fX1dKSIp
OworICAgIGRlYnVnKCIuLi4gYnV0IHlvdSBzdGlsbCBuZWVkIHRvIHNwZWNpZnkgYSByZWFsIHN0
b3JlOiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKFt7dG9T
dHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gJ3gnO319XSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24u
Tk9UX0ZPVU5EX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0
aW9uKFt7dG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gJ3gnO319XSkiLCAiSURCRGF0YWJhc2VF
eGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOworICAgIGRlYnVnKCIiKTsKKworICAgIHRyYW5zID0g
ZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlJ10pIik7CisgICAgc2hv
dWxkQmVUcnVlKCJ0cmFucyAhPSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0
ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gYWZ0ZXJDb21wbGV0ZTsKKyAgICBldmFsQW5k
TG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgc2hvdWxkQmVU
cnVlKCJzdG9yZSAhPSBudWxsIik7CisgICAgZXZhbEFuZExvZygic3RvcmUuZ2V0KCdzb21lX2tl
eScpIik7Cit9CisKK2Z1bmN0aW9uIGFmdGVyQ29tcGxldGUoKQoreworICAgIGRlYnVnKCJ0cmFu
c2FjdGlvbiBjb21wbGV0ZSwgZW5zdXJpbmcgbWV0aG9kcyBmYWlsIik7CisgICAgc2hvdWxkQmVU
cnVlKCJ0cmFucyAhPSBudWxsIik7CisgICAgc2hvdWxkQmVUcnVlKCJzdG9yZSAhPSBudWxsIik7
CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyki
LCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0FMTE9XRURfRVJSIik7CisgICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigic3RvcmUuaW5kZXgoJ2luZGV4JykiLCAiSURCRGF0YWJhc2VFeGNlcHRp
b24uTk9UX0FMTE9XRURfRVJSIik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgp
OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1iYXNpY3MuanMgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tYmFzaWNzLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjFiNWRkYzZkYmRkODE5MDg3MTkzNzI1NDJmYjM4OWVlNTI2YzJlYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJh
bnNhY3Rpb24tYmFzaWNzLmpzCkBAIC0wLDAgKzEsMjg2IEBACitpZiAodGhpcy5pbXBvcnRTY3Jp
cHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVz
Y3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIHRyYW5zYWN0aW9uIGJhc2ljcy4iKTsKKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndHJhbnNhY3Rpb24tYmFzaWNzJykiKTsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7
CisgICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7CisgICAgc2VsZi5kYiA9IGV2YWxBbmRMb2co
ImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGNsZWFuRGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRlbGV0
ZUFsbE9iamVjdFN0b3JlcyhkYiwgY2hlY2tNZXRhZGF0YUVtcHR5KTsKKyAgICBldmVudC50YXJn
ZXQucmVzdWx0Lm9uY29tcGxldGUgPSB0ZXN0U2V0VmVyc2lvbkFib3J0MTsKK30KKworZnVuY3Rp
b24gdGVzdFNldFZlcnNpb25BYm9ydDEoKQoreworICAgIGNoZWNrTWV0YWRhdGFFbXB0eSgpOwor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gc3RhcnRTZXRWZXJzaW9uKCd2ZXJz
aW9uIGZhaWwnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkUmVtb3ZlSURCT2JqZWN0
czsKK30KKworZnVuY3Rpb24gYWRkUmVtb3ZlSURCT2JqZWN0cygpCit7CisgICAgZGVidWcoImFk
ZFJlbW92ZUlEQk9iamVjdHMoKToiKTsKKyAgICB2YXIgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFu
cyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBu
dWxsIik7CisgICAgdHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCB0ZXN0U2V0VmVyc2lv
bkFib3J0MiwgdHJ1ZSk7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0
ZUNhbGxiYWNrOworCisgICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVh
dGVPYmplY3RTdG9yZSgnc3RvcmVGYWlsJywgbnVsbCkiKTsKKyAgICB2YXIgaW5kZXggPSBldmFs
QW5kTG9nKCJpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleEZhaWwnLCAneCcpIik7CisK
KyAgICBldmFsQW5kTG9nKCJkYi5kZWxldGVPYmplY3RTdG9yZSgnc3RvcmVGYWlsJykiKTsKKyAg
ICBldmFsQW5kTG9nKCJzdG9yZS5kZWxldGVJbmRleCgnaW5kZXhGYWlsJykiKTsKKworICAgIHRy
YW5zLmFib3J0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTZXRWZXJzaW9uQWJvcnQyKCkKK3sKKyAg
ICBkZWJ1ZygiIik7CisgICAgZGVidWcoInRlc3RTZXRWZXJzaW9uQWJvcnQyKCk6Iik7CisgICAg
Y2hlY2tNZXRhZGF0YUVtcHR5KCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBzdGFydFNldFZlcnNpb24oJ3ZlcnNpb24gZmFpbCcpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBhZGRSZW1vdmVBZGRJREJPYmplY3RzOworfQorCitmdW5jdGlvbiBhZGRSZW1vdmVBZGRJ
REJPYmplY3RzKCkKK3sKKyAgICBkZWJ1ZygiYWRkUmVtb3ZlQWRkSURCT2JqZWN0cygpOiIpOwor
ICAgIHZhciB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIp
OworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKyAgICB0cmFucy5hZGRFdmVu
dExpc3RlbmVyKCdhYm9ydCcsIHRlc3RTZXRWZXJzaW9uQWJvcnQzLCBmYWxzZSk7CisgICAgdHJh
bnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOworCisgICAgdmFyIHN0
b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVGYWls
JywgbnVsbCkiKTsKKyAgICB2YXIgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmNy
ZWF0ZUluZGV4KCdpbmRleEZhaWwnLCAneCcpIik7CisKKyAgICBldmFsQW5kTG9nKCJkYi5kZWxl
dGVPYmplY3RTdG9yZSgnc3RvcmVGYWlsJykiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZS5kZWxl
dGVJbmRleCgnaW5kZXhGYWlsJykiKTsKKworICAgIHZhciBzdG9yZSA9IGV2YWxBbmRMb2coInN0
b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlRmFpbCcsIG51bGwpIik7CisgICAgdmFy
IGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhGYWls
JywgJ3gnKSIpOworCisgICAgdHJhbnMuYWJvcnQoKTsKK30KKworZnVuY3Rpb24gdGVzdFNldFZl
cnNpb25BYm9ydDMoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidGVzdFNldFZlcnNp
b25BYm9ydDMoKToiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJldmVudC5jYW5jZWxhYmxlIik7Cisg
ICAgY2hlY2tNZXRhZGF0YUVtcHR5KCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVl
c3QgPSBzdGFydFNldFZlcnNpb24oJ3ZlcnNpb24gZmFpbCcpIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBhZGRJREJPYmplY3RzOworfQorCitmdW5jdGlvbiBhZGRJREJPYmplY3RzKCkKK3sK
KyAgICBkZWJ1ZygiYWRkSURCT2JqZWN0cygpOiIpOworICAgIHNob3VsZEJlRmFsc2UoImV2ZW50
LmNhbmNlbGFibGUiKTsKKyAgICB2YXIgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Cisg
ICAgdHJhbnMub25hYm9ydCA9IHRlc3RJbmFjdGl2ZUFib3J0ZWRUcmFuc2FjdGlvbjsKKyAgICB0
cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7CisKKyAgICBzdG9y
ZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlRmFpbCcs
IG51bGwpIik7CisgICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmNyZWF0ZUlu
ZGV4KCdpbmRleEZhaWwnLCAneCcpIik7CisKKyAgICB0cmFucy5hYm9ydCgpOworfQorCitmdW5j
dGlvbiB0ZXN0SW5hY3RpdmVBYm9ydGVkVHJhbnNhY3Rpb24oKQoreworICAgIGRlYnVnKCIiKTsK
KyAgICBkZWJ1ZygidGVzdEluYWN0aXZlQWJvcnRlZFRyYW5zYWN0aW9uKCk6Iik7CisgICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXgub3BlbkN1cnNvcigpIiwgIklEQkRhdGFiYXNlRXhj
ZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oImluZGV4Lm9wZW5LZXlDdXJzb3IoKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFO
U0FDVElPTl9JTkFDVElWRV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJpbmRl
eC5nZXQoMCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJS
Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXguZ2V0S2V5KDApIiwgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOworICAgIGV2YWxBbmRF
eHBlY3RFeGNlcHRpb24oImluZGV4LmNvdW50KCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJB
TlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7CisKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJz
dG9yZS5wdXQoMCwgMCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJ
VkVfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuYWRkKDAsIDApIiwg
IklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOworICAgIGV2
YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmRlbGV0ZSgwKSIsICJJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJzdG9yZS5jbGVhcigpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lO
QUNUSVZFX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmdldCgwKSIs
ICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsKKyAgICBl
dmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5vcGVuQ3Vyc29yKCkiLCAiSURCRGF0YWJhc2VF
eGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7CisKKyAgICB0ZXN0U2V0VmVyc2lv
bkFib3J0NCgpOworfQorCitmdW5jdGlvbiB0ZXN0U2V0VmVyc2lvbkFib3J0NCgpCit7CisgICAg
ZGVidWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0U2V0VmVyc2lvbkFib3J0NCgpOiIpOworICAgIGNo
ZWNrTWV0YWRhdGFFbXB0eSgpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
c3RhcnRTZXRWZXJzaW9uKCd2ZXJzaW9uIGZhaWwnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gYWRkSURCT2JqZWN0c0FuZENvbW1pdDsKK30KKworZnVuY3Rpb24gYWRkSURCT2JqZWN0c0Fu
ZENvbW1pdCgpCit7CisgICAgZGVidWcoImFkZElEQk9iamVjdHNBbmRDb21taXQoKToiKTsKKyAg
ICB2YXIgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsK
KyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9
IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworCisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9y
ZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZUZhaWwnLCBudWxsKSIpOworICAgIGluZGV4
ID0gZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhGYWlsJywgJ3gn
KSIpOworCisgICAgdHJhbnMub25jb21wbGV0ZSA9IHRlc3RJbmFjdGl2ZUNvbXBsZXRlZFRyYW5z
YWN0aW9uOworfQorCitmdW5jdGlvbiB0ZXN0SW5hY3RpdmVDb21wbGV0ZWRUcmFuc2FjdGlvbigp
Cit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0SW5hY3RpdmVDb21wbGV0ZWRUcmFu
c2FjdGlvbigpOiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4Lm9wZW5DdXJz
b3IoKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsK
KyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJpbmRleC5vcGVuS2V5Q3Vyc29yKCkiLCAiSURC
RGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7CisgICAgZXZhbEFu
ZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXguZ2V0KDApIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRS
QU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImlu
ZGV4LmdldEtleSgwKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElW
RV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJpbmRleC5jb3VudCgpIiwgIklE
QkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOworCisgICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KDAsIDApIiwgIklEQkRhdGFiYXNlRXhjZXB0
aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRp
b24oInN0b3JlLmFkZCgwLCAwKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9J
TkFDVElWRV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5kZWxldGUo
MCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7Cisg
ICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuY2xlYXIoKSIsICJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJzdG9yZS5nZXQoMCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05f
SU5BQ1RJVkVfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUub3BlbkN1
cnNvcigpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIp
OworCisgICAgdGVzdFNldFZlcnNpb25BYm9ydDUoKTsKK30KKworZnVuY3Rpb24gdGVzdFNldFZl
cnNpb25BYm9ydDUoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidGVzdFNldFZlcnNp
b25BYm9ydDUoKToiKTsKKyAgICBjaGVja01ldGFkYXRhRXhpc3RpbmdPYmplY3RTdG9yZSgpOwor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gc3RhcnRTZXRWZXJzaW9uKCd2ZXJz
aW9uIGZhaWwnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcmVtb3ZlSURCT2JqZWN0czsK
K30KKworZnVuY3Rpb24gcmVtb3ZlSURCT2JqZWN0cygpCit7CisgICAgZGVidWcoInJlbW92ZUlE
Qk9iamVjdHMoKToiKTsKKyAgICB2YXIgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Cisg
ICAgdHJhbnMub25hYm9ydCA9IHRlc3RTZXRWZXJzaW9uQWJvcnQ2OworICAgIHRyYW5zLm9uY29t
cGxldGUgPSB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjazsKKworICAgIHZhciBzdG9yZSA9IGV2
YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlRmFpbCcpIik7CisgICAg
ZXZhbEFuZExvZygic3RvcmUuZGVsZXRlSW5kZXgoJ2luZGV4RmFpbCcpIik7CisgICAgZXZhbEFu
ZExvZygiZGIuZGVsZXRlT2JqZWN0U3RvcmUoJ3N0b3JlRmFpbCcpIik7CisKKyAgICB0cmFucy5h
Ym9ydCgpOworfQorCitmdW5jdGlvbiB0ZXN0U2V0VmVyc2lvbkFib3J0NigpCit7CisgICAgZGVi
dWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0U2V0VmVyc2lvbkFib3J0NigpOiIpOworICAgIGNoZWNr
TWV0YWRhdGFFeGlzdGluZ09iamVjdFN0b3JlKCk7CisgICAgc2V0TmV3VmVyc2lvbigpOworfQor
CitmdW5jdGlvbiBzdGFydFNldFZlcnNpb24odmVyc2lvbk5hbWUpCit7CisgICAgcmVxdWVzdCA9
IGRiLnNldFZlcnNpb24odmVyc2lvbk5hbWUpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJldHVybiByZXF1ZXN0OworfQorCitmdW5jdGlvbiBj
aGVja01ldGFkYXRhRW1wdHkoKQoreworICAgIHNob3VsZEJlKCJzZWxmLmRiLm9iamVjdFN0b3Jl
TmFtZXMiLCAiW10iKTsKKyAgICBzaG91bGRCZSgic2VsZi5kYi5vYmplY3RTdG9yZU5hbWVzLmxl
bmd0aCIsICIwIik7CisgICAgc2hvdWxkQmUoInNlbGYuZGIub2JqZWN0U3RvcmVOYW1lcy5jb250
YWlucygnc3RvcmVGYWlsJykiLCAiZmFsc2UiKTsKK30KKworZnVuY3Rpb24gY2hlY2tNZXRhZGF0
YUV4aXN0aW5nT2JqZWN0U3RvcmUoKQoreworICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5h
bWVzIiwgIlsnc3RvcmVGYWlsJ10iKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1l
cy5sZW5ndGgiLCAiMSIpOworICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRh
aW5zKCdzdG9yZUZhaWwnKSIsICJ0cnVlIik7Cit9CisKK2Z1bmN0aW9uIHNldE5ld1ZlcnNpb24o
KQoreworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lv
bicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
c2V0VmVyc2lvblN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygic2V0VmVy
c2lvblN1Y2Nlc3MoKToiKTsKKyAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBl
dmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIp
OworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFu
cy5hZGRFdmVudExpc3RlbmVyKCdjb21wbGV0ZScsIGNvbXBsZXRlQ2FsbGJhY2ssIGZhbHNlKTsK
KyAgICBzZWxmLmNvbXBsZXRlRXZlbnRGaXJlZCA9IGZhbHNlOworCisgICAgZGVsZXRlQWxsT2Jq
ZWN0U3RvcmVzKGRiKTsKKworICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdz
dG9yZU5hbWUnLCBudWxsKSIpOworfQorCitmdW5jdGlvbiBjb21wbGV0ZUNhbGxiYWNrKCkKK3sK
KyAgICBzaG91bGRCZUZhbHNlKCJldmVudC5jYW5jZWxhYmxlIik7CisgICAgdGVzdFBhc3NlZCgi
Y29tcGxldGUgZXZlbnQgZmlyZWQiKTsKKyAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coImRi
LnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10pIik7CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9
IGFib3J0Q2FsbGJhY2s7CisgICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFu
c2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoInN0b3JlLm5hbWUiLCAic3RvcmVOYW1lIik7Cit9CisKK2Z1bmN0aW9uIGFib3J0Q2Fs
bGJhY2soKQoreworICAgIHRlc3RQYXNzZWQoImFib3J0IGV2ZW50IGZpcmVkIik7CisgICAgdGVz
dERPTVN0cmluZ0xpc3QoKTsKK30KKworZnVuY3Rpb24gdGVzdERPTVN0cmluZ0xpc3QoKQorewor
ICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVmVyaWZ5aW5nIERPTVN0cmluZ0xpc3Qgd29ya3Mg
YXMgYXJndW1lbnQgZm9yIElEQkRhdGFiYXNlLnRyYW5zYWN0aW9uKCkiKTsKKyAgICBkZWJ1Zygi
ZGIub2JqZWN0U3RvcmVOYW1lcyBpcyAiICsgZGIub2JqZWN0U3RvcmVOYW1lcyk7CisgICAgZGVi
dWcoIi4uLiB3aGljaCBjb250YWluczogIiArIEpTT04uc3RyaW5naWZ5KEFycmF5LnByb3RvdHlw
ZS5zbGljZS5jYWxsKGRiLm9iamVjdFN0b3JlTmFtZXMpKSk7CisgICAgZXZhbEFuZExvZygidHJh
bnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihkYi5vYmplY3RTdG9yZU5hbWVzKSIpOworICAgIHRl
c3RQYXNzZWQoIm5vIGV4Y2VwdGlvbiB0aHJvd24iKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgIHNob3VsZEJlVHJ1ZSgi
dHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoIiArIEpTT04uc3RyaW5naWZ5KGRiLm9iamVjdFN0b3Jl
TmFtZXNbaV0pICsgIikgIT0gbnVsbCIpOworICAgIH0KKyAgICB0ZXN0UGFzc2VkKCJhbGwgc3Rv
cmVzIHByZXNlbnQgaW4gdHJhbnNhY3Rpb24iKTsKKyAgICB0ZXN0SW52YWxpZE1vZGUoKTsKK30K
KworZnVuY3Rpb24gdGVzdEludmFsaWRNb2RlKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVi
dWcoIlZlcmlmeSB0aGF0IHNwZWNpZnlpbmcgYW4gaW52YWxpZCBtb2RlIHJhaXNlcyBhbiBleGNl
cHRpb24iKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbihbJ3N0
b3JlTmFtZSddLCAzKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT05fVFJBTlNJRU5UX0VSUiIp
OworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tY3Jhc2gtb24tYWJv
cnQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rp
b24tY3Jhc2gtb24tYWJvcnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjMzZWIwNGJlZDE0YzQyZDQ4MDY3NDk3
NDlhOTY2ZTVmODRlYzM1ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1jcmFzaC1vbi1hYm9ydC5qcwpAQCAtMCww
ICsxLDM5IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygn
Li4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRT
Y3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIHRy
YW5zYWN0aW9uIGRvZXMgbm90IGNyYXNoIG9uIGFib3J0LiIpOworCitmdW5jdGlvbiB0ZXN0KCkK
K3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImluZGV4ZWREQi5vcGVuKCd0cmFuc2FjdGlvbi1jcmFzaC1vbi1hYm9ydCcpIik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQorewor
ICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBl
dmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZl
cnNpb24oJzEuMCcpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2Vz
czsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKwor
ZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQoreworICAgIGV2YWxBbmRMb2coImRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdmb28nKSIpOworICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25jb21wbGV0
ZSA9IHNldFZlcnNpb25Db21wbGV0ZTsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbkNvbXBsZXRl
KCkKK3sKKyAgICBldmFsQW5kTG9nKCJkYi50cmFuc2FjdGlvbignZm9vJykiKTsKKyAgICBldmFs
QW5kTG9nKCJzZWxmLmdjKCkiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1ldmVudC1wcm9wYWdhdGlvbi5qcyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1ldmVu
dC1wcm9wYWdhdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZDVjNjFhYmU1Y2QxY2Q3ZmFkNjhmOTMzZjkw
NmI1OTllZWZiNWZmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWV2ZW50LXByb3BhZ2F0aW9uLmpzCkBAIC0wLDAg
KzEsMTQ0IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygn
Li4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRT
Y3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgZXZlbnQgcHJvcG9n
YXRpb24gb24gSURCVHJhbnNhY3Rpb24uIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJl
bW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWRE
Qi5vcGVuKCd0cmFuc2FjdGlvbi1ldmVudC1wcm9wYWdhdGlvbicpIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBzZXRWZXJzaW9uOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uKCkKK3sKKyAgICBkYiA9IGV2
YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGRlbGV0ZUV4aXN0aW5nOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxldGVFeGlzdGluZygpCit7CisgICAg
c2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwor
ICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0g
dW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0
ZSA9IHN0YXJ0VGVzdCIpOworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAg
IHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVO
YW1lJywgbnVsbCkiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAn
dmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzdGFydFRlc3QoKQoreworICAgIGRl
YnVnKCJWZXJpZmluZyBhYm9ydCIpOworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBk
Yi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIp
OworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSBhYm9ydEZpcmVkQ2FsbGJhY2siKTsK
KyAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZEFib3J0Q2FsbGJh
Y2siKTsKKyAgICBldmFsQW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIGRiQWJv
cnRDYXB0dXJlQ2FsbGJhY2ssIHRydWUpIik7CisgICAgZXZhbEFuZExvZygiZGIuYWRkRXZlbnRM
aXN0ZW5lcignYWJvcnQnLCBkYkFib3J0QnViYmxlQ2FsbGJhY2ssIGZhbHNlKSIpOworICAgIGV2
YWxBbmRMb2coImRiLmFkZEV2ZW50TGlzdGVuZXIoJ2NvbXBsZXRlJywgdW5leHBlY3RlZENvbXBs
ZXRlQ2FsbGJhY2ssIHRydWUpIik7CisgICAgZXZhbEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5l
cignY29tcGxldGUnLCB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjaywgZmFsc2UpIik7CisgICAg
c3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUn
KSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAn
a2V5JykiKTsKKyAgICBkYkNhcHR1cmVGaXJlZCA9IGZhbHNlOworICAgIGFib3J0RmlyZWQgPSBm
YWxzZTsKKyAgICBkYkJ1YmJsZUZpcmVkMSA9IGZhbHNlOworfQorCitmdW5jdGlvbiBkYkFib3J0
Q2FwdHVyZUNhbGxiYWNrKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIkluIElEQkRh
dGFiYXNlIGFib3J0IGNhcHR1cmUiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJkYkNhcHR1cmVGaXJl
ZCIpOworICAgIHNob3VsZEJlRmFsc2UoImFib3J0RmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNl
KCJkYkJ1YmJsZUZpcmVkMSIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAidHJhbnMi
KTsKKyAgICBzaG91bGRCZSgiZXZlbnQuY3VycmVudFRhcmdldCIsICJkYiIpOworICAgIGRiQ2Fw
dHVyZUZpcmVkID0gdHJ1ZTsKK30KKworZnVuY3Rpb24gYWJvcnRGaXJlZENhbGxiYWNrKCkKK3sK
KyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIkluIGFib3J0IGhhbmRsZXIiKTsKKyAgICBzaG91
bGRCZVRydWUoImRiQ2FwdHVyZUZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiYWJvcnRGaXJl
ZCIpOworICAgIHNob3VsZEJlRmFsc2UoImRiQnViYmxlRmlyZWQxIik7CisgICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldCIsICJ0cmFucyIpOworICAgIHNob3VsZEJlKCJldmVudC5jdXJyZW50VGFy
Z2V0IiwgInRyYW5zIik7CisgICAgYWJvcnRGaXJlZCA9IHRydWU7Cit9CisKK2Z1bmN0aW9uIGRi
QWJvcnRCdWJibGVDYWxsYmFjaygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJJbiBJ
REJEYXRhYmFzZSBlcnJvciBidWJibGUiKTsKKyAgICBzaG91bGRCZVRydWUoImRiQ2FwdHVyZUZp
cmVkIik7CisgICAgc2hvdWxkQmVUcnVlKCJhYm9ydEZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxz
ZSgiZGJCdWJibGVGaXJlZDEiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0IiwgInRyYW5z
Iik7CisgICAgc2hvdWxkQmUoImV2ZW50LmN1cnJlbnRUYXJnZXQiLCAiZGIiKTsKKyAgICBkYkJ1
YmJsZUZpcmVkMSA9IHRydWU7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJWZXJpZmluZyBz
dWNjZXNzLiIpOworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlv
bihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIGV2YWxB
bmRMb2coInRyYW5zLm9uY29tcGxldGUgPSBjb21wbGV0ZUZpcmVkQ2FsbGJhY2siKTsKKyAgICBl
dmFsQW5kTG9nKCJ0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2siKTsKKyAg
ICBldmFsQW5kTG9nKCJkYi5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIGRiQWJvcnRDYXB0
dXJlQ2FsbGJhY2ssIHRydWUpIik7CisgICAgZXZhbEFuZExvZygiZGIucmVtb3ZlRXZlbnRMaXN0
ZW5lcignYWJvcnQnLCBkYkFib3J0QnViYmxlQ2FsbGJhY2ssIGZhbHNlKSIpOworICAgIGV2YWxB
bmRMb2coImRiLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NvbXBsZXRlJywgdW5leHBlY3RlZENvbXBs
ZXRlQ2FsbGJhY2ssIHRydWUpIik7CisgICAgZXZhbEFuZExvZygiZGIucmVtb3ZlRXZlbnRMaXN0
ZW5lcignY29tcGxldGUnLCB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjaywgZmFsc2UpIik7Cisg
ICAgZXZhbEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignY29tcGxldGUnLCBkYkNvbXBsZXRl
Q2FwdHVyZUNhbGxiYWNrLCB0cnVlKSIpOworICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50TGlz
dGVuZXIoJ2NvbXBsZXRlJywgZGJDb21wbGV0ZUJ1YmJsZUNhbGxiYWNrLCBmYWxzZSkiKTsKKyAg
ICBldmFsQW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIHVuZXhwZWN0ZWRBYm9y
dENhbGxiYWNrLCB0cnVlKSIpOworICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50TGlzdGVuZXIo
J2Fib3J0JywgdW5leHBlY3RlZEFib3J0Q2FsbGJhY2ssIGZhbHNlKSIpOworICAgIHN0b3JlID0g
ZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAg
ICBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleTInKSIp
OworICAgIGRiQ2FwdHVyZUZpcmVkID0gZmFsc2U7CisgICAgY29tcGxldGVGaXJlZCA9IGZhbHNl
OworICAgIGRiQnViYmxlRmlyZWQyID0gZmFsc2U7Cit9CisKK2Z1bmN0aW9uIGRiQ29tcGxldGVD
YXB0dXJlQ2FsbGJhY2soKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiSW4gSURCRGF0
YWJhc2UgY29tcGxldGUgY2FwdHVyZSIpOworICAgIHNob3VsZEJlRmFsc2UoImRiQ2FwdHVyZUZp
cmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiY29tcGxldGVGaXJlZCIpOworICAgIHNob3VsZEJl
RmFsc2UoImRiQnViYmxlRmlyZWQyIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldCIsICJ0
cmFucyIpOworICAgIHNob3VsZEJlKCJldmVudC5jdXJyZW50VGFyZ2V0IiwgImRiIik7CisgICAg
ZGJDYXB0dXJlRmlyZWQgPSB0cnVlOworfQorCitmdW5jdGlvbiBjb21wbGV0ZUZpcmVkQ2FsbGJh
Y2soKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiSW4gSURCUmVxdWVzdCBoYW5kbGVy
Iik7CisgICAgc2hvdWxkQmVUcnVlKCJkYkNhcHR1cmVGaXJlZCIpOworICAgIHNob3VsZEJlRmFs
c2UoImNvbXBsZXRlRmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVkMiIp
OworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAidHJhbnMiKTsKKyAgICBzaG91bGRCZSgi
ZXZlbnQuY3VycmVudFRhcmdldCIsICJ0cmFucyIpOworICAgIGNvbXBsZXRlRmlyZWQgPSB0cnVl
OworICAgIGRlYnVnKCIiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gZGJD
b21wbGV0ZUJ1YmJsZUNhbGxiYWNrKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIklu
IElEQkRhdGFiYXNlIGNvbXBsZXRlIGJ1YmJsZSIpOworICAgIHRlc3RGYWlsZWQoIkNvbXBsZXRl
IGJ1YmJsZSBjYWxsYmFjayBzaG91bGQgTk9UIGZpcmUiKTsKKyAgICBkYkJ1YmJsZUZpcmVkMiA9
IHRydWU7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24t
cmVhZC1vbmx5LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3Ry
YW5zYWN0aW9uLXJlYWQtb25seS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOTQzYTMxY2ZkN2I1YWEwYzcxN2Rh
MTNkN2FmZDA5ZjEwYTM5YmFkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLXJlYWQtb25seS5qcwpAQCAtMCwwICsx
LDU4IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3Jp
cHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgcmVhZC1vbmx5IHRyYW5z
YWN0aW9ucyBpbiBJbmRleGVkREIuIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92
ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERC
Lm9wZW4oJ3RyYW5zYWN0aW9uLXJlYWQtb25seScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJvcGVuU3Vj
Y2VzcygpOiIpOworICAgIHNlbGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVzdWx0ID0gZGIuc2V0VmVyc2lv
bigndmVyc2lvbiAxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7
CisKKyAgICBldmVudC50YXJnZXQucmVzdWx0Lm9uY29tcGxldGUgPSBzZXRWZXJzaW9uRG9uZTsK
KyAgICBldmVudC50YXJnZXQucmVzdWx0Lm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFj
azsKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUo
J3N0b3JlJykiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ3gnLCAneScpIik7Cit9CisK
K2Z1bmN0aW9uIHNldFZlcnNpb25Eb25lKCkKK3sKKyAgICB0cmFucyA9IGV2YWxBbmRMb2coInRy
YW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJykiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJ0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKS5wdXQoJ2EnLCAnYicpIiwgIklEQkRhdGFi
YXNlRXhjZXB0aW9uLlJFQURfT05MWV9FUlIiKTsKKworICAgIHRyYW5zID0gZXZhbEFuZExvZygi
dHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnKSIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oInRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpLmRlbGV0ZSgneCcpIiwgIklEQkRhdGFi
YXNlRXhjZXB0aW9uLlJFQURfT05MWV9FUlIiKTsKKworICAgIHRyYW5zID0gZXZhbEFuZExvZygi
dHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnKSIpOworICAgIGN1ciA9IGV2YWxBbmRMb2co
ImN1ciA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpLm9wZW5DdXJzb3IoKSIpOworICAgIGN1
ci5vbnN1Y2Nlc3MgPSBnb3RDdXJzb3I7CisgICAgY3VyLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZ290Q3Vyc29yKCkKK3sKKyAgICBzaG91bGRCZUZh
bHNlKCIhZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24o
ImV2ZW50LnRhcmdldC5yZXN1bHQuZGVsZXRlKCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uUkVB
RF9PTkxZX0VSUiIpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlv
bi1yb2xsYmFjay5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90
cmFuc2FjdGlvbi1yb2xsYmFjay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZDg0ODMzYWI2MDlmMzI0NTU5YTVh
ZTQ1NzY0YmM4YTY2YTQ1MTAzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLXJvbGxiYWNrLmpzCkBAIC0wLDAgKzEs
OTEgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8u
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlw
dHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgdHJhbnNh
Y3Rpb24gcm9sbGJhY2suIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRv
clByZWZpeGVzKCk7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4o
J3RyYW5zYWN0aW9uLXJvbGxiYWNrJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5T
dWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6
Iik7CisgICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIp
OworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigndmVy
c2lvbiAxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRlYnVnKCJjbGVhbkRhdGFiYXNlKCk6Iik7CisgICAg
c2VsZi50cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gc2V0VmVyc2lvbkNvbXBsZXRlOwor
CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5jcmVh
dGVPYmplY3RTdG9yZSgnbXlPYmplY3RTdG9yZScpIik7CisgICAgc2hvdWxkQmUoImRiLm9iamVj
dFN0b3JlTmFtZXMubGVuZ3RoIiwgIjEiKTsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbkNvbXBs
ZXRlKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvbkNvbXBsZXRlKCk6Iik7CisKKyAgICBzZWxm
LnRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihb
J215T2JqZWN0U3RvcmUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICB0cmFu
c2FjdGlvbi5vbmFib3J0ID0gYWJvcnRDYWxsYmFjazsKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBs
ZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7CisKKyAgICBzZWxmLnN0b3JlID0gZXZh
bEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnbXlPYmplY3RTdG9yZScp
Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCgncm9sbGJhY2tWYWx1ZScs
ICdyb2xsYmFja0tleTEyMycpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRTdWNjZXNz
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiBhZGRTdWNjZXNzKCkKK3sKKyAgICBkZWJ1ZygiYWRkU3VjY2VzcygpOiIpOworICAg
IHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIidyb2xsYmFja0tleTEyMyciKTsKKwor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5vcGVuQ3Vyc29yKCkiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IG9wZW5DdXJzb3JTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuQ3Vyc29yU3VjY2Vz
cygpCit7CisgICAgZGVidWcoIm9wZW5DdXJzb3JTdWNjZXNzKCk6Iik7CisgICAgc2VsZi5jdXJz
b3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICB0
cmFuc2FjdGlvbi5hYm9ydCgpOworfQorCitmdW5jdGlvbiBhYm9ydENhbGxiYWNrKCkKK3sKKyAg
ICBkZWJ1ZygiYWJvcnRDYWxsYmFjaygpOiIpOworICAgIGRlYnVnKCdUcmFuc2FjdGlvbiB3YXMg
YWJvcnRlZC4nKTsKKworICAgIHNlbGYudHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2Fj
dGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnbXlPYmplY3RTdG9yZSddLCBJREJUcmFuc2FjdGlvbi5S
RUFEKSIpOworICAgIHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9u
Lm9iamVjdFN0b3JlKCdteU9iamVjdFN0b3JlJykiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
Zygic3RvcmUuZ2V0KCdyb2xsYmFja0tleTEyMycpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRTdWNj
ZXNzOworfQorCitmdW5jdGlvbiBnZXRTdWNjZXNzKCkKK3sKKyAgICBkZWJ1ZygiZ2V0U3VjY2Vz
cygpOiIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgInVuZGVmaW5lZCIp
OworCisgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZSIsICIncm9sbGJhY2tWYWx1ZSciKTsKKyAg
ICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90
cmFuc2FjdGlvbi1zdG9yZU5hbWVzLXJlcXVpcmVkLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLXN0b3JlTmFtZXMtcmVxdWlyZWQuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZTVhM2VkMTJhYWM4YTgwNDliOTg4Nzc0MDk1ZDViZTJlNWE2NDJlZAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFu
c2FjdGlvbi1zdG9yZU5hbWVzLXJlcXVpcmVkLmpzCkBAIC0wLDAgKzEsMzYgQEAKK2lmICh0aGlz
LmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycp
OworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREI6IHRyYW5zYWN0aW9uIHN0b3JlTmFt
ZXMgcmVxdWlyZWQgYXJndW1lbnRzIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92
ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsK
KyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRi
ID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZTsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY3JlYXRl
QW5kUG9wdWxhdGVPYmplY3RTdG9yZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRi
KTsKKworICAgIHNob3VsZFRocm93KCJkYi50cmFuc2FjdGlvbigpOyIpOworICAgIGZpbmlzaEpT
VGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3R3by12ZXJzaW9u
LWNoYW5nZXMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHdv
LXZlcnNpb24tY2hhbmdlcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNjZlNTE0ZTY1MjVkMWU4NjIwY2M3Yjlj
ZDhjZjcyMzIxMzQwNzNmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL3R3by12ZXJzaW9uLWNoYW5nZXMuanMKQEAgLTAsMCArMSwxMDYg
QEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMo
J3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBiZWhhdmlvciB3aGVuIHRoZSBz
YW1lIGNvbm5lY3Rpb24gY2FsbHMgc2V0VmVyc2lvbiB0d2ljZSIpOworCitmdW5jdGlvbiB0ZXN0
KCkgeworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBzaG91bGRCZUZhbHNlKCJp
bmRleGVkREIgPT0gbnVsbCIpOworICAgIHNob3VsZEJlRmFsc2UoIklEQlRyYW5zYWN0aW9uID09
IG51bGwiKTsKKyAgICBvcGVuREJDb25uZWN0aW9uKCk7Cit9CisKK2Z1bmN0aW9uIG9wZW5EQkNv
bm5lY3Rpb24oKQoreworICAgIGV2YWxBbmRMb2coInNlbGYuc3RhdGUgPSAnc3RhcnRpbmcnIik7
CisgICAgdmFyIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndHdvLXZlcnNp
b25zLW9uZS1jb25uZWN0aW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNj
ZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRi
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIGV2YWxBbmRMb2coInNlbGYuc3RhdGUgPSAw
Iik7CisKKyAgICB2YXIgdmVyc2lvbkNoYW5nZVJlcXVlc3QxID0gZXZhbEFuZExvZygiZGIuc2V0
VmVyc2lvbigndmVyc2lvbiAxJykiKTsKKyAgICB2ZXJzaW9uQ2hhbmdlUmVxdWVzdDEub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0MS5v
bnN1Y2Nlc3MgPSBpblNldFZlcnNpb24xOworCisgICAgLy8gYW5kIGNvbmN1cnJlbnRseS4uLgor
CisgICAgdmFyIHZlcnNpb25DaGFuZ2VSZXF1ZXN0MiA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNp
b24oJ3ZlcnNpb24gMicpIik7CisgICAgdmVyc2lvbkNoYW5nZVJlcXVlc3QyLm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB2ZXJzaW9uQ2hhbmdlUmVxdWVzdDIub25zdWNj
ZXNzID0gaW5TZXRWZXJzaW9uMjsKK30KKworZnVuY3Rpb24gaW5TZXRWZXJzaW9uMSgpCit7Cisg
ICAgZGVidWcoInNldFZlcnNpb24oKSAjMSBjYWxsYmFjayIpOworICAgIHRyYW5zID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdDsKKyAgICBldmFsQW5kTG9nKCJzZWxmLnN0b3JlMSA9IGRiLmNyZWF0ZU9i
amVjdFN0b3JlKCd0ZXN0LXN0b3JlMScpIik7CisgICAgc2hvdWxkQmUoIisrc2VsZi5zdGF0ZSIs
ICIxIik7CisgICAgdmFyIHJlcSA9IGV2YWxBbmRMb2coInNlbGYuc3RvcmUxLnB1dCgnYWFhJywg
MTExKSIpOworICAgIHJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAg
cmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgIHNob3VsZEJlKCIrK3NlbGYu
c3RhdGUiLCAiMiIpOworICAgICAgICBoYWxmd2F5RG9uZSgpOworICAgIH07Cit9CisKK2Z1bmN0
aW9uIGluU2V0VmVyc2lvbjIoKQoreworICAgIGRlYnVnKCJzZXRWZXJzaW9uKCkgIzIgY2FsbGJh
Y2siKTsKKyAgICB0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgc2hvdWxkQmUoIisr
c2VsZi5zdGF0ZSIsICI0Iik7CisgICAgZXZhbEFuZExvZygic2VsZi5zdG9yZTIgPSBkYi5jcmVh
dGVPYmplY3RTdG9yZSgndGVzdC1zdG9yZTInKSIpOworCisgICAgdmFyIHJlcSA9IGV2YWxBbmRM
b2coInNlbGYuc3RvcmUyLnB1dCgnYmJiJywgMjIyKSIpOworICAgIHJlcS5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7
CisgICAgICAgIHNob3VsZEJlKCIrK3NlbGYuc3RhdGUiLCAiNSIpOworICAgICAgICBoYWxmd2F5
RG9uZSgpOworICAgIH07Cit9CisKK3ZhciBjb3VudGVyID0gMDsKK2Z1bmN0aW9uIGhhbGZ3YXlE
b25lKCkgCit7CisgICAgY291bnRlciArPSAxOworICAgIGlmIChjb3VudGVyIDwgMikgeworICAg
ICAgICBzaG91bGRCZSgiKytzZWxmLnN0YXRlIiwgIjMiKTsKKyAgICAgICAgZGVidWcoImhhbGZ3
YXkgdGhlcmUuLi4iICk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2hvdWxkQmUoIisrc2VsZi5z
dGF0ZSIsICI2Iik7CisgICAgICAgIGNoZWNrUmVzdWx0cygpOworICAgIH0KK30KKworZnVuY3Rp
b24gY2hlY2tSZXN1bHRzKCkgeworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic2VsZi5kYi52
ZXJzaW9uIiwgInZlcnNpb24gMiIpOworICAgIHRyYW5zLm9uY29tcGxldGUgPSBzZXRWZXJzaW9u
Q29tcGxldGU7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb25Db21wbGV0ZSgpCit7CisgICAgdHJh
bnMgPSBldmFsQW5kTG9nKCJzZWxmLnRyYW5zID0gZGIudHJhbnNhY3Rpb24oWyd0ZXN0LXN0b3Jl
MScsICd0ZXN0LXN0b3JlMiddKSIpOworICAgIHN0b3JlID0gZXZhbEFuZExvZygic2VsZi5zdG9y
ZSA9IHNlbGYudHJhbnMub2JqZWN0U3RvcmUoJ3Rlc3Qtc3RvcmUxJykiKTsKKyAgICByZXEgPSBl
dmFsQW5kTG9nKCJzZWxmLnJlcSA9IHNlbGYuc3RvcmUuZ2V0KDExMSkiKTsKKyAgICByZXEub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbiAoZSkgeworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5y
ZXN1bHQiLCAiYWFhIik7CisKKyAgICAgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzZWxmLnN0b3Jl
ID0gc2VsZi50cmFucy5vYmplY3RTdG9yZSgndGVzdC1zdG9yZTInKSIpOworICAgICAgICByZXEg
PSBldmFsQW5kTG9nKCJzZWxmLnJlcSA9IHNlbGYuc3RvcmUuZ2V0KDIyMikiKTsKKyAgICAgICAg
cmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxLm9uc3Vj
Y2VzcyA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
ImV2ZW50LnRhcmdldC5yZXN1bHQiLCAiYmJiIik7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3Qo
KTsKKyAgICAgICAgfTsKKyAgICB9OworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL3ZhbHVlLXVuZGVmaW5lZC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy92YWx1ZS11bmRlZmluZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjk3MDMzYzc4N2NmZGFiNjU1
ZDM3YzE2NjEzNWNmOGQ3MWQ3MGI0ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy92YWx1ZS11bmRlZmluZWQuanMKQEAgLTAsMCArMSw2
NiBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0
cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiB1bmRlZmlu
ZWQgYXMgcmVjb3JkIHZhbHVlIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZl
bmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKKyAg
ICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0g
ZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZTsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY3JlYXRlQW5k
UG9wdWxhdGVPYmplY3RTdG9yZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsK
KworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVP
YmplY3RTdG9yZSgnZm9vJyk7Iik7CisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygicmVzdWx0ID0g
b2JqZWN0U3RvcmUuYWRkKHVuZGVmaW5lZCwgSW5maW5pdHkpOyIpOworICAgIHJlc3VsdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGdl
dFZhbHVlOworfQorCitmdW5jdGlvbiBnZXRWYWx1ZSgpCit7CisgICAgcmVzdWx0ID0gZXZhbEFu
ZExvZygicmVzdWx0ID0gb2JqZWN0U3RvcmUuZ2V0KEluZmluaXR5KTsiKTsKKyAgICByZXN1bHQu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlc3VsdC5vbnN1Y2Nlc3Mg
PSBjaGVja1ZhbHVlOworfQorCitmdW5jdGlvbiBjaGVja1ZhbHVlKCkKK3sKKyAgICB2YWx1ZSA9
IGV2YWxBbmRMb2coInZhbHVlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICBzaG91bGRC
ZSgidmFsdWUiLCAidW5kZWZpbmVkIik7CisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygicmVzdWx0
ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOworICAgIHJlc3VsdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGNoZWNrQ3Vyc29y
OworfQorCitmdW5jdGlvbiBjaGVja0N1cnNvcigpCit7CisgICAgY3Vyc29yID0gZXZhbEFuZExv
ZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICBpZiAoY3Vyc29yKSB7Cisg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIkluZmluaXR5Iik7CisgICAgICAgIHNob3Vs
ZEJlKCJjdXJzb3IudmFsdWUiLCAidW5kZWZpbmVkIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
dGVzdEZhaWxlZCgiY3Vyc29yIGlzIG51bGwiKTsKKyAgICB9CisgICAgZmluaXNoSlNUZXN0KCk7
Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdmFsdWVzLW9kZC10eXBlcy5q
cyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy92YWx1ZXMtb2RkLXR5
cGVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmNhZTExNWJjZGViMGJmNmZmMjY1ZDkxYWE5OTQ0ZTU2OGI1NmY0
ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvdmFsdWVzLW9kZC10eXBlcy5qcwpAQCAtMCwwICsxLDc4IEBACitpZiAodGhpcy5pbXBv
cnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30K
KworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIG9kZCB2YWx1ZSBkYXRhdHlwZXMiKTsKKwor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5h
bWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3Qg
RGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1l
LCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIu
c2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRLZXkxOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biBhZGRLZXkxKCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgb2Jq
ZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJywge2F1dG9J
bmNyZW1lbnQ6IHRydWV9KTsiKTsKKworICAgIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2NhbnZhcycpOworICAgIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTsKKyAg
ICBpbWFnZWRhdGEgPSBjb250ZXh0LmNyZWF0ZUltYWdlRGF0YSgxLCAxKTsKKyAgICB2YWxpZFR5
cGVzID0gW3sgZGVzY3JpcHRpb246ICdyZWdleHAnLCAgICB2YWx1ZTogbmV3IFJlZ0V4cCgnXFxc
XCcpIH0sCisgICAgICAgICAgICAgICAgICB7IGRlc2NyaXB0aW9uOiAnZGF0ZScsICAgICAgdmFs
dWU6IG5ldyBEYXRlKDApIH0sCisgICAgICAgICAgICAgICAgICB7IGRlc2NyaXB0aW9uOiAnb2Jq
ZWN0JywgICAgdmFsdWU6IG5ldyBPYmplY3QoKSB9LAorICAgICAgICAgICAgICAgICAgeyBkZXNj
cmlwdGlvbjogJ2ltYWdlZGF0YScsIHZhbHVlOiBpbWFnZWRhdGEgfSwKKyAgICBdOworICAgIG5l
eHRUb0FkZCA9IDA7CisgICAgYWRkRGF0YSgpOworfQorCitmdW5jdGlvbiBhZGREYXRhKCkKK3sK
KyAgICBkZWJ1ZygiYWRkaW5nICIgKyB2YWxpZFR5cGVzW25leHRUb0FkZF0uZGVzY3JpcHRpb24g
KyAiIHZhbHVlIik7CisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKHZh
bGlkVHlwZXNbbmV4dFRvQWRkXS52YWx1ZSkiKTsKKyAgICByZXN1bHQub25zdWNjZXNzID0gKytu
ZXh0VG9BZGQgPCB2YWxpZFR5cGVzLmxlbmd0aCA/IGFkZERhdGEgOiBvcGVuQUN1cnNvcjsKKyAg
ICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biBvcGVuQUN1cnNvcigpCit7CisgICAgdmFsdWVJbmRleCA9IDA7CisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygi
Y3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAgICAgaWYgKGN1cnNvcikgewor
ICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS50b1N0cmluZygpIiwgInZhbGlkVHlw
ZXNbdmFsdWVJbmRleF0udmFsdWUudG9TdHJpbmcoKSIpOworICAgICAgICAgICAgaWYgKHZhbHVl
SW5kZXggPT0gMSkgeworICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUudG9V
VENTdHJpbmcoKSIsICInVGh1LCAwMSBKYW4gMTk3MCAwMDowMDowMCBHTVQnIik7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAodmFsdWVJbmRleCA9PSAzKSB7CisgICAgICAgICAgICAg
ICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS53aWR0aCIsICIxIik7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKKyAgICAgICAgICAg
IGV2YWxBbmRMb2coInZhbHVlSW5kZXgrKzsiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisgICAgfQorfQorCit0ZXN0
KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3ZlcnNpb24tY2hhbmdlLWFib3J0LmpzIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3ZlcnNpb24tY2hhbmdlLWFib3J0
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjBiNDQ3MTcyZmJlODBmMWNlMWRlMjgzYTM1ZmRjZGMxODA0NTBkOTMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvdmVyc2lvbi1jaGFuZ2UtYWJvcnQuanMKQEAgLTAsMCArMSw4OSBAQAoraWYgKHRoaXMuaW1w
b3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9
CisKK2Rlc2NyaXB0aW9uKCJFbnN1cmUgdGhhdCBhYm9ydGVkIFZFUlNJT05fQ0hBTkdFIHRyYW5z
YWN0aW9ucyBhcmUgY29tcGxldGVseSByb2xsZWQgYmFjayIpOworCitmdW5jdGlvbiB0ZXN0KCkg
eworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgb3BlbkRCQ29ubmVjdGlvbigpOwor
fQorCitmdW5jdGlvbiBvcGVuREJDb25uZWN0aW9uKCkKK3sKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCLm9wZW4oJ3ZlcnNpb24tY2hhbmdlLWFib3J0JykiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAg
c2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIGRl
YnVnKCIiKTsKKworICAgIGV2YWxBbmRMb2coInZjcmVxID0gZGIuc2V0VmVyc2lvbigndmVyc2lv
biAxJykiKTsKKyAgICB2Y3JlcS5vbnN1Y2Nlc3MgPSBpblNldFZlcnNpb24xOworICAgIHZjcmVx
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gaW5TZXRW
ZXJzaW9uMSgpCit7CisgICAgZGVidWcoInNldFZlcnNpb24xKCkgY2FsbGJhY2siKTsKKyAgICBz
aG91bGRCZVRydWUoInZjcmVxLnJlc3VsdCBpbnN0YW5jZW9mIElEQlRyYW5zYWN0aW9uIik7Cisg
ICAgdHJhbnMgPSB2Y3JlcS5yZXN1bHQ7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRB
Ym9ydENhbGxiYWNrOworICAgIHRyYW5zLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gc2V0VmVyc2lvbjFDb21wbGV0ZTsKKworICAgIGV2
YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlMScpIik7Cit9CisK
K2Z1bmN0aW9uIHNldFZlcnNpb24xQ29tcGxldGUoKQoreworICAgIGRlYnVnKCJzZXRWZXJzaW9u
MSBjb21wbGV0ZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGIudmVyc2lvbiIsICJ2
ZXJzaW9uIDEiKTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICBldmFsQW5kTG9nKCJ2Y3JlcSA9IGRi
LnNldFZlcnNpb24oJ3ZlcnNpb24gMicpIik7CisgICAgdmNyZXEub25zdWNjZXNzID0gaW5TZXRW
ZXJzaW9uMjsKKyAgICB2Y3JlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIGluU2V0VmVyc2lvbjIoKQoreworICAgIGRlYnVnKCJzZXRWZXJzaW9uMigp
IGNhbGxiYWNrIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkYi52ZXJzaW9uIiwgInZl
cnNpb24gMiIpOworICAgIHNob3VsZEJlVHJ1ZSgidmNyZXEucmVzdWx0IGluc3RhbmNlb2YgSURC
VHJhbnNhY3Rpb24iKTsKKyAgICB0cmFucyA9IHZjcmVxLnJlc3VsdDsKKyAgICB0cmFucy5vbmFi
b3J0ID0gc2V0VmVyc2lvbjJBYm9ydDsKKyAgICB0cmFucy5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNh
bGxiYWNrOworCisgICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5kZWxldGVPYmplY3RTdG9yZSgn
c3RvcmUxJykiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdzdG9yZTInKSIpOworCisgICAgLy8gRW5zdXJlIHRoZSB0ZXN0IGhhcm5lc3MgZXJyb3IgaGFu
ZGxlciBpcyBub3QgaW52b2tlZC4KKyAgICBzZWxmLm9yaWdpbmFsV2luZG93T25FcnJvciA9IHNl
bGYub25lcnJvcjsKKyAgICBzZWxmLm9uZXJyb3IgPSBudWxsOworCisgICAgZGVidWcoInJhaXNp
bmcgZXhjZXB0aW9uIik7CisgICAgdGhyb3cgbmV3IEVycm9yKCJUaGlzIHNob3VsZCAqTk9UKiBi
ZSBjYXVnaHQhIik7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb24yQWJvcnQoKQoreworICAgIGRl
YnVnKCIiKTsKKyAgICBkZWJ1Zygic2V0VmVyc2lvbjJBYm9ydCgpIGNhbGxiYWNrIik7CisKKyAg
ICAvLyBSZXN0b3JlIHRlc3QgaGFybmVzcyBlcnJvciBoYW5kbGVyLgorICAgIHNlbGYub25lcnJv
ciA9IHNlbGYub3JpZ2luYWxXaW5kb3dPbkVycm9yOworCisgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJkYi52ZXJzaW9uIiwgInZlcnNpb24gMSIpOworICAgIHNob3VsZEJlVHJ1ZSgiZGIub2Jq
ZWN0U3RvcmVOYW1lcy5jb250YWlucygnc3RvcmUxJykiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJk
Yi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCdzdG9yZTInKSIpOworCisgICAgZmluaXNoSlNU
ZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdmVyc2lvbi1jaGFu
Z2UtZXhjbHVzaXZlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L3ZlcnNpb24tY2hhbmdlLWV4Y2x1c2l2ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MWFhNThhODgzMjk1ZTQ3
MTI3ZDZhOTMxNjRiYmNlZDgzOWIwOTFhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3ZlcnNpb24tY2hhbmdlLWV4Y2x1c2l2ZS5qcwpA
QCAtMCwwICsxLDcwIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2Ny
aXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBp
bXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIkVuc3VyZSBWRVJT
SU9OX0NIQU5HRSB0cmFuc2FjdGlvbiBkb2Vzbid0IHJ1biBjb25jdXJyZW50bHkgd2l0aCBvdGhl
ciB0cmFuc2FjdGlvbnMiKTsKKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICByZW1vdmVWZW5kb3JQ
cmVmaXhlcygpOworICAgIG9wZW5EQkNvbm5lY3Rpb24oKTsKK30KKworZnVuY3Rpb24gb3BlbkRC
Q29ubmVjdGlvbigpCit7CisgICAgZXZhbEFuZExvZygic2VsZi5zdGF0ZSA9ICdzdGFydGluZyci
KTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3ZlcnNpb24tY2hh
bmdlLWV4Y2x1c2l2ZScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIHNlbGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIGRlYnVnKCJjYWxsaW5nIHNldFZlcnNpb24oKSAt
IGNhbGxiYWNrIHNob3VsZCBydW4gaW1tZWRpYXRlbHkiKTsKKyAgICB2YXIgdmVyc2lvbkNoYW5n
ZVJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAg
IHZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICB2ZXJzaW9uQ2hhbmdlUmVxdWVzdC5vbnN1Y2Nlc3MgPSBpblNldFZlcnNpb247CisKKyAg
ICAvLyBhbmQgY29uY3VycmVudGx5Li4uCisKKyAgICBkZWJ1ZygiY2FsbGluZyBvcGVuKCkgLSBj
YWxsYmFjayBzaG91bGQgd2FpdCB1bnRpbCBWRVJTSU9OX0NIQU5HRSB0cmFuc2FjdGlvbiBpcyBj
b21wbGV0ZSIpOworICAgIHZhciBvcGVuUmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5v
cGVuKCd2ZXJzaW9uLWNoYW5nZS1leGNsdXNpdmUnKSIpOworICAgIG9wZW5SZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IG9wZW5BZ2FpblN1Y2Nlc3M7CisgICAgb3BlblJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBpblNldFZlcnNpb24oKQoreworICAg
IGRlYnVnKCJzZXRWZXJzaW9uKCkgY2FsbGJhY2siKTsKKyAgICBkZWJ1Zygic3RhcnRpbmcgd29y
ayBpbiBWRVJTSU9OX0NIQU5HRSB0cmFuc2FjdGlvbiIpOworICAgIGV2YWxBbmRMb2coInNlbGYu
c3RhdGUgPSAnVkVSU0lPTl9DSEFOR0Ugc3RhcnRlZCciKTsKKworICAgIHNlbGYuc3RvcmUgPSBl
dmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCd0ZXN0LXN0b3JlJykiKTsK
KyAgICBzZWxmLmNvdW50ID0gMDsKKyAgICBkb19hc3luY19wdXRzKCk7CisKKyAgICBmdW5jdGlv
biBkb19hc3luY19wdXRzKCkgeworICAgICAgICB2YXIgcmVxID0gZXZhbEFuZExvZygic3RvcmUu
cHV0KCIgKyBjb3VudCArICIsICIgKyBjb3VudCArICIpIik7CisgICAgICAgIHJlcS5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbiAoZSkgeworICAgICAgICAgICAgZGVidWcoImluIHB1dCdzIG9uc3VjY2VzcyIpOworICAg
ICAgICAgICAgaWYgKCsrc2VsZi5jb3VudCA8IDEwKSB7CisgICAgICAgICAgICAgICAgZG9fYXN5
bmNfcHV0cygpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkZWJ1Zygi
ZW5kaW5nIHdvcmsgaW4gVkVSU0lPTl9DSEFOR0UgdHJhbnNhY3Rpb24iKTsKKyAgICAgICAgICAg
ICAgICBldmFsQW5kTG9nKCJzZWxmLnN0YXRlID0gJ1ZFUlNJT05fQ0hBTkdFIGZpbmlzaGVkJyIp
OworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KK30KKworZnVuY3Rpb24gb3BlbkFn
YWluU3VjY2VzcygpCit7CisgICAgZGVidWcoIm9wZW4oKSBjYWxsYmFjayAtIHRoaXMgc2hvdWxk
IGFwcGVhciBhZnRlciBWRVJTSU9OX0NIQU5HRSB0cmFuc2FjdGlvbiBlbmRzIik7CisgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJzZWxmLnN0YXRlIiwgIlZFUlNJT05fQ0hBTkdFIGZpbmlzaGVk
Iik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvdmVyc2lvbmNoYW5nZXJlcXVlc3QtYWN0aXZlZG9tb2JqZWN0LmpzIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3ZlcnNpb25jaGFuZ2VyZXF1ZXN0LWFjdGl2
ZWRvbW9iamVjdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NWFhYjQxNGE1MDJhODE0M2MzM2M2Y2JhZDExNDU4
MjU4NjljY2U2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL3ZlcnNpb25jaGFuZ2VyZXF1ZXN0LWFjdGl2ZWRvbW9iamVjdC5qcwpAQCAt
MCwwICsxLDY3IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0
cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBv
cnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIkVuc3VyZSB0aGF0IElE
QlZlcnNpb25DaGFuZ2VSZXF1ZXN0IG9iamVjdHMgYXJlIG5vdCBHQydkIGlmIHRoZXkgaGF2ZSBw
ZW5kaW5nIGV2ZW50cyIpOworCitmdW5jdGlvbiB0ZXN0KCkgeworICAgIHJlbW92ZVZlbmRvclBy
ZWZpeGVzKCk7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZXZhbEFuZExvZygic2VsZi5kYm5hbWUg
PSAndmVyc2lvbmNoYW5nZXJlcXVlc3QtYWN0aXZlZG9tb2JqZWN0JyIpOworCisgICAgdGVzdERl
bGV0ZURhdGFiYXNlKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3REZWxldGVEYXRhYmFzZSgpCit7Cisg
ICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0RGVsZXRlRGF0YWJhc2UoKToiKTsKKyAgICAv
LyBOT1RFOiBkZWxldGVSZXF1ZXN0IGlzIGxvY2FsIHZhcmlhYmxlIHNvIGl0IGlzIG5vdCBjYXB0
dXJlZCBpbiBnbG9iYWwgc2NvcGUuCisgICAgdmFyIGRlbGV0ZVJlcXVlc3QgPSBldmFsQW5kTG9n
KCJpbmRleGVkREIuZGVsZXRlRGF0YWJhc2Uoc2VsZi5kYm5hbWUpIik7CisgICAgZGVsZXRlUmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgZGVsZXRlUmVxdWVz
dC5vbmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNrOworICAgIGRlbGV0ZVJlcXVl
c3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7IGRlbGV0ZVN1Y2Nlc3MoKTsgfTsKKyAgICBkZWxl
dGVSZXF1ZXN0ID0gbnVsbDsKKyAgICBpZiAoc2VsZi5nYykgeworICAgICAgICBldmFsQW5kTG9n
KCJzZWxmLmdjKCkiKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZVN1Y2Nlc3MoKQorewor
ICAgIHRlc3RQYXNzZWQoImRlbGV0ZURhdGFiYXNlJ3MgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Qu
b25zdWNjZXNzIGV2ZW50IGZpcmVkIik7CisgICAgdGVzdFNldFZlcnNpb24oKTsKK30KKworZnVu
Y3Rpb24gdGVzdFNldFZlcnNpb24oKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidGVz
dFNldFZlcnNpb24oKToiKTsKKworICAgIC8vIE5PVEU6IFRoaXMgaXMganVzdCBhbiBJREJSZXF1
ZXN0LCBpdCBjYW4gYmUgZ2xvYmFsLgorICAgIGV2YWxBbmRMb2coIm9wZW5SZXF1ZXN0ID0gaW5k
ZXhlZERCLm9wZW4oc2VsZi5kYm5hbWUpIik7CisgICAgb3BlblJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIG9wZW5SZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgZXZhbEFuZExvZygiZGIgPSBvcGVuUmVxdWVzdC5yZXN1bHQiKTsK
KworICAgICAgICAvLyBOT1RFOiB2ZXJzaW9uUmVxdWVzdCBpcyBsb2NhbCB2YXJpYWJsZSBzbyBp
dCBpcyBub3QgY2FwdHVyZWQgaW4gZ2xvYmFsIHNjb3BlLgorICAgICAgICB2YXIgdmVyc2lvblJl
cXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICAgICAgdmVyc2lv
blJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICB2ZXJz
aW9uUmVxdWVzdC5vbmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNrOworICAgICAg
ICB2ZXJzaW9uUmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgdmVyc2lvblN1Y2Nlc3Mo
KTsgfTsKKyAgICAgICAgdmVyc2lvblJlcXVlc3QgPSBudWxsOworICAgICAgICBpZiAoc2VsZi5n
YykgeworICAgICAgICAgICAgZXZhbEFuZExvZygic2VsZi5nYygpIik7CisgICAgICAgIH0KKyAg
ICB9OworfQorCitmdW5jdGlvbiB2ZXJzaW9uU3VjY2VzcygpCit7CisgICAgdGVzdFBhc3NlZCgi
c2V0VmVyc2lvbidzIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uc3VjY2VzcyBldmVudCBmaXJl
ZCIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0
VmVyc2lvbi1udWxsLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRWZXJz
aW9uLW51bGwuaHRtbAppbmRleCBjYjJiYzZlZTFhZWQ0NjhjN2Q5NzI0YWJhOTdhOGQ5MmJmYzAy
NDJjLi5kZjNmM2QwODcwMmRjNTk1NWIwOWIyZTEyYWI2OWRhY2M0YjBjNjEwIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRWZXJzaW9uLW51bGwuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRWZXJzaW9uLW51bGwuaHRtbApAQCAt
MSw0NCArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+IAotPGh0bWw+IAorPGh0bWw+CiA8aGVhZD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+IAotPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PiAKLTwv
aGVhZD4gCi08Ym9keT4gCi08c2NyaXB0PiAKLSAKLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWRE
QiB3aXRoIG51bGwgdmVyc2lvbiBzdHJpbmciKTsKLSAKLWZ1bmN0aW9uIHRlc3QoKQotewotICAg
IHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0
aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0gCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17
Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAKLSAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbihudWxsKTsiKTsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IHBvc3RTZXRWZXJzaW9uOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBwb3N0U2V0VmVyc2lvbigpCi17
Ci0gICAgc2hvdWxkQmUoImRiLnZlcnNpb24iLCAiJ251bGwnIik7Ci0gICAgZmluaXNoSlNUZXN0
KCk7Ci19Ci0gCi0gCi10ZXN0KCk7Ci0gCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvc2V0VmVyc2lvbi1udWxsLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3Jj
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9i
b2R5PiAKKzwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3NldFZlcnNpb24tdW5kZWZpbmVkLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9zZXRWZXJzaW9uLXVuZGVmaW5lZC5odG1sCmluZGV4IGJlZGMxZTA1YjU0MTAx
ZGJhM2Y4MTg3NmM3NGY4NDc3N2I4OTg3N2EuLmFlNjBmMWM1ZTkzODQ3YTA0YTIzN2NkM2ZiMzI5
MjljZmRmNTVjOGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Nl
dFZlcnNpb24tdW5kZWZpbmVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvc2V0VmVyc2lvbi11bmRlZmluZWQuaHRtbApAQCAtMSwzNyArMSwxMCBAQAotPCFET0NUWVBF
IGh0bWw+IAotPGh0bWw+IAorPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+IAotPHNjcmlwdCBzcmM9InJl
c291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PiAKLTwvaGVhZD4gCi08Ym9keT4gCi08c2NyaXB0
PiAKLSAKLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiB2ZXJzaW9uIHN0cmluZyBpcyByZXF1
aXJlZCIpOwotIAotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMo
KTsKLSAKLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlv
biA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhl
ZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBv
cGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLX0KLSAKLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2co
ImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotIAotICAgIHNob3VsZFRocm93KCJkYi5zZXRW
ZXJzaW9uKCk7Iik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0gCi0gCi10ZXN0KCk7Ci0gCi08
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2V0VmVyc2lvbi11
bmRlZmluZWQuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+IAorPC9ib2R5PgogPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNpb25f
YmxvY2tlZC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNpb25f
YmxvY2tlZC5odG1sCmluZGV4IGMyNDRkNDMyY2ZiZDQ5MTQ2ZGFjMTFhMGMzMzFlYjA1OWE3MzRl
NTIuLjQwOGU2ZmEyOTdiYjdjZDI4Nzg1YmIwNjUyYmI5NjJhZDllYzA5MDQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJzaW9uX2Jsb2NrZWQuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9ibG9ja2VkLmh0
bWwKQEAgLTEsNjQgKzEsMTAgQEAKLTxodG1sPg0KLTxoZWFkPg0KLTxzY3JpcHQgc3JjPSIuLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+DQotPHNjcmlwdCBz
cmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0Pg0KLTwvaGVhZD4NCi08Ym9keT4NCi08
c2NyaXB0Pg0KLQ0KLWRlc2NyaXB0aW9uKCJBbiBvcGVuIGNvbm5lY3Rpb24gYmxvY2tzIGEgc2Vw
YXJhdGUgY29ubmVjdGlvbidzIHNldFZlcnNpb24gY2FsbCIpOw0KLQ0KLWNvbm5lY3Rpb25zID0g
W10NCi1mdW5jdGlvbiB0ZXN0KCkNCi17DQotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7DQot
ICAgIG9wZW5EQkNvbm5lY3Rpb24oKTsNCi19DQotDQotZnVuY3Rpb24gb3BlbkRCQ29ubmVjdGlv
bigpDQotew0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3NldC12
ZXJzaW9uLWJsb2NrZWQnKSIpOw0KLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNz
Ow0KLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsNCi19DQot
DQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQ0KLXsNCi0gICAgY29ubmVjdGlvbiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQ7DQotICAgIGNvbm5lY3Rpb25zLnB1c2goY29ubmVjdGlvbik7DQotICAgIG9y
aWdpbmFsX3ZlcnNpb24gPSBjb25uZWN0aW9uLnZlcnNpb247DQotICAgIGlmIChjb25uZWN0aW9u
cy5sZW5ndGggPCAyKQ0KLSAgICAgICAgb3BlbkRCQ29ubmVjdGlvbigpOw0KLSAgICBlbHNlIHsN
Ci0gICAgICAgIHZhciB2ZXJzaW9uQ2hhbmdlUmVxdWVzdCA9IGV2YWxBbmRMb2coImNvbm5lY3Rp
b25zWzBdLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7DQotICAgICAgICB2ZXJzaW9uQ2hhbmdl
UmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQotICAgICAgICB2ZXJz
aW9uQ2hhbmdlUmVxdWVzdC5vbnN1Y2Nlc3MgPSBpblNldFZlcnNpb247DQotICAgICAgICB2ZXJz
aW9uQ2hhbmdlUmVxdWVzdC5vbmJsb2NrZWQgPSBibG9ja2VkOw0KLSAgICB9DQotfQ0KLQ0KLXNl
ZW5fYmxvY2tlZF9ldmVudCA9IGZhbHNlOw0KLWZ1bmN0aW9uIGJsb2NrZWQoKQ0KLXsNCi0gICAg
ZXZhbEFuZExvZygic2Vlbl9ibG9ja2VkX2V2ZW50ID0gdHJ1ZSIpOw0KLSAgICBibG9ja2VkX2V2
ZW50ID0gZXZlbnQ7DQotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiYmxvY2tlZF9ldmVudC52
ZXJzaW9uIiwgInZlcnNpb24gMSIpOw0KLSAgICBzaG91bGRFdmFsdWF0ZVRvKCJibG9ja2VkX2V2
ZW50LnRhcmdldC5yZWFkeVN0YXRlIiwgMSk7DQotICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb25z
WzFdLmNsb3NlKCkiKTsNCi19DQotDQotZnVuY3Rpb24gaW5TZXRWZXJzaW9uKCkNCi17DQotICAg
IGRlYnVnKCJpbiBzZXRWZXJzaW9uLm9uc3VjY2VzcyIpOw0KLSAgICBzaG91bGRCZVRydWUoInNl
ZW5fYmxvY2tlZF9ldmVudCIpOw0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoY29ubmVjdGlv
bnNbMF0pOw0KLSAgICBmaW5pc2hKU1Rlc3QoKTsNCi19DQotDQotDQotdGVzdCgpOw0KLQ0KLTwv
c2NyaXB0Pg0KLTxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0Pg0KLTwvYm9keT4NCi08L2h0bWw+DQorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2V0X3ZlcnNpb25fYmxvY2tlZC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJzaW9uX3F1ZXVlLmh0bWwgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9xdWV1ZS5odG1sCmluZGV4IDRlYWJlYzZh
OTVlODBkNjlkMjgwYTdjZDk1ZGJjMjEyMmY4ODE3NDYuLmMxNmNkZDcxYzA3YmM1MjA2MDc4YTMx
MzRlOTA4MTFiZDcyZGNlZjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3NldF92ZXJzaW9uX3F1ZXVlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvc2V0X3ZlcnNpb25fcXVldWUuaHRtbApAQCAtMSwxMzEgKzEsMTAgQEAKLTxodG1sPg0K
LTxoZWFkPg0KLTxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+DQotPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2Ny
aXB0Pg0KLTwvaGVhZD4NCi08Ym9keT4NCi08c2NyaXB0Pg0KLQ0KLWRlc2NyaXB0aW9uKCI0IG9w
ZW4gY29ubmVjdGlvbnMgdHJ5IHRvIHNldFZlcnNpb24gYXQgdGhlIHNhbWUgdGltZS4gIDMgY29u
bmVjdGlvbnMgZXZlbnR1YWxseSBjbG9zZSwgYWxsb3dpbmcgMSBzZXRWZXJzaW9uIGNhbGwgdG8g
cHJvY2VlZC4iKTsNCi0NCi1jb25uZWN0aW9ucyA9IFtdDQotZnVuY3Rpb24gdGVzdCgpDQotew0K
LSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOw0KLQ0KLSAgICBvcGVuREJDb25uZWN0aW9uKCk7
DQotfQ0KLQ0KLWZ1bmN0aW9uIG9wZW5EQkNvbm5lY3Rpb24oKQ0KLXsNCi0gICAgcmVzdWx0ID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3NldC12ZXJzaW9uLXF1ZXVlJykiKTsNCi0gICAg
cmVzdWx0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOw0KLSAgICByZXN1bHQub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOw0KLX0NCi0NCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpDQot
ew0KLSAgICBjb25uZWN0aW9uID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsNCi0gICAgY29ubmVjdGlv
bi5vbnZlcnNpb25jaGFuZ2UgPSBnZW5lcmF0ZVZlcnNpb25DaGFuZ2VIYW5kbGVyKCk7DQotICAg
IGNvbm5lY3Rpb25zLnB1c2goY29ubmVjdGlvbik7DQotICAgIGlmIChjb25uZWN0aW9ucy5sZW5n
dGggPCA0KQ0KLSAgICAgICAgb3BlbkRCQ29ubmVjdGlvbigpOw0KLSAgICBlbHNlIHsNCi0gICAg
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJjb25uZWN0aW9uc1swXS5zZXRWZXJzaW9uKCd2ZXJz
aW9uIDAnKSIpOw0KLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpeyBj
b25uZWN0aW9uRXJyb3IoZXZlbnQsIDApIH07DQotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7DQotICAgICAgICByZXF1ZXN0Lm9uYmxvY2tlZCA9
IGJsb2NrZWQwOw0KLSAgICAgICAgcmVxdWVzdDEgPSBldmFsQW5kTG9nKCJjb25uZWN0aW9uc1sx
XS5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOw0KLSAgICAgICAgcmVxdWVzdDEub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOw0KLSAgICAgICAgcmVxdWVzdDEub25zdWNjZXNzID0g
aW5TZXRWZXJzaW9uMTsNCi0gICAgICAgIHJlcXVlc3QxLm9uYmxvY2tlZCA9IGJsb2NrZWQxOw0K
LSAgICAgICAgcmVxdWVzdDIgPSBldmFsQW5kTG9nKCJjb25uZWN0aW9uc1syXS5zZXRWZXJzaW9u
KCd2ZXJzaW9uIDInKSIpOw0KLSAgICAgICAgcmVxdWVzdDIub25lcnJvciA9IGZ1bmN0aW9uKGV2
ZW50KXsgY29ubmVjdGlvbkVycm9yKGV2ZW50LCAyKSB9Ow0KLSAgICAgICAgcmVxdWVzdDIub25z
dWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsNCi0gICAgICAgIHJlcXVlc3QyLm9u
YmxvY2tlZCA9IGJsb2NrZWQyOw0KLSAgICAgICAgcmVxdWVzdDMgPSBldmFsQW5kTG9nKCJjb25u
ZWN0aW9uc1szXS5zZXRWZXJzaW9uKCd2ZXJzaW9uIDMnKSIpOw0KLSAgICAgICAgcmVxdWVzdDMu
b25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KXsgY29ubmVjdGlvbkVycm9yKGV2ZW50LCAzKSB9Ow0K
LSAgICAgICAgcmVxdWVzdDMub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsN
Ci0gICAgICAgIHJlcXVlc3QzLm9uYmxvY2tlZCA9IGJsb2NrZWQzOw0KLSAgICAgICAgZGVidWco
IiIpOw0KLSAgICB9DQotfQ0KLQ0KLWZ1bmN0aW9uIGdlbmVyYXRlVmVyc2lvbkNoYW5nZUhhbmRs
ZXIoKQ0KLXsNCi0gICAgdmFyIGNvbm5lY3Rpb25OdW0gPSBjb25uZWN0aW9ucy5sZW5ndGg7DQot
ICAgIHJldHVybiBmdW5jdGlvbihldmVudCkNCi0gICAgew0KLSAgICAgICAgc2hvdWxkQmVUcnVl
KCJldmVudC52ZXJzaW9uLmxlbmd0aCA+IDAiKTsNCi0gICAgICAgIGRlYnVnKCJjb25uZWN0aW9u
WyIgKyBjb25uZWN0aW9uTnVtICsgIl0gcmVjZWl2ZWQgdmVyc2lvbkNoYW5nZUV2ZW50OiAiICsg
ZXZlbnQudmVyc2lvbik7DQotICAgIH0NCi19DQotDQotYmxvY2tlZDBmaXJlZCA9IGZhbHNlOw0K
LWJsb2NrZWQyZmlyZWQgPSBmYWxzZTsNCi1mdW5jdGlvbiBibG9ja2VkMChldmVudCkNCi17DQot
ICAgIGRlYnVnKCIiKTsNCi0gICAgdGVzdFBhc3NlZCgiY29ubmVjdGlvblswXSBnb3QgYmxvY2tl
ZCBldmVudCIpOw0KLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnZlcnNpb24iLCAi
dmVyc2lvbiAwIik7DQotICAgIGRlYnVnKCJDbG9zZSB0aGUgY29ubmVjdGlvbiB0aGF0IHJlY2Vp
dmVkIHRoZSBibG9jayBldmVudDoiKTsNCi0gICAgZXZhbEFuZExvZygiY29ubmVjdGlvbnNbMF0u
Y2xvc2UoKSIpOw0KLSAgICBkZWJ1ZygiQ2xvc2UgYW5vdGhlciBjb25uZWN0aW9uIGFzIHdlbGws
IHRvIHRlc3QgNC43LjQtbm90ZToiKTsNCi0gICAgZXZhbEFuZExvZygiY29ubmVjdGlvbnNbM10u
Y2xvc2UoKSIpOw0KLSAgICBldmFsQW5kTG9nKCJibG9ja2VkMGZpcmVkID0gdHJ1ZSIpOw0KLSAg
ICBkZWJ1ZygiIik7DQotfQ0KLQ0KLWZ1bmN0aW9uIGJsb2NrZWQxKGV2ZW50KQ0KLXsNCi0gICAg
ZGVidWcoIiIpDQotICAgIHRlc3RQYXNzZWQoImNvbm5lY3Rpb25bMV0gZ290IGJsb2NrZWQgZXZl
bnQiKTsNCi0gICAgZGVidWcoIkVuc3VyZSB0aGF0IHRoaXMgYmxvY2tlZCBldmVudCBpcyBpbiBv
cmRlcjoiKTsNCi0gICAgc2hvdWxkQmVUcnVlKCJibG9ja2VkMGZpcmVkIik7DQotICAgIHNob3Vs
ZEJlRmFsc2UoImJsb2NrZWQyZmlyZWQiKTsNCi0gICAgZGVidWcoIiIpDQotfQ0KLQ0KLWZ1bmN0
aW9uIGJsb2NrZWQyKGV2ZW50KQ0KLXsNCi0gICAgZGVidWcoIiIpDQotICAgIHRlc3RQYXNzZWQo
ImNvbm5lY3Rpb25bMl0gZ290IGJsb2NrZWQgZXZlbnQiKTsNCi0gICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJldmVudC52ZXJzaW9uIiwgInZlcnNpb24gMiIpOw0KLSAgICBldmFsQW5kTG9nKCJj
b25uZWN0aW9uc1syXS5jbG9zZSgpIik7DQotICAgIGV2YWxBbmRMb2coImJsb2NrZWQyZmlyZWQg
PSB0cnVlIik7DQotICAgIGRlYnVnKCIiKQ0KLX0NCi0NCi1mdW5jdGlvbiBibG9ja2VkMyhldmVu
dCkNCi17DQotICAgIGRlYnVnKCIiKQ0KLSAgICB0ZXN0UGFzc2VkKCJjb25uZWN0aW9uWzNdIGdv
dCBibG9ja2VkIGV2ZW50Iik7DQotICAgIGRlYnVnKCJOb3RlOiBUaGlzIG1lYW5zIHRoYXQgYSBj
b25uZWN0aW9uIGNhbiByZWNlaXZlIGEgYmxvY2tlZCBldmVudCBhZnRlciBpdHMgY2xvc2UoKSBt
ZXRob2QgaGFzIGJlZW4gY2FsbGVkLiAgU3BlYyBpcyBzaWxlbnQgb24gdGhlIGlzc3VlIGFuZCB0
aGlzIGlzIGVhc2llc3QgdG8gaW1wbGVtZW50LiIpOw0KLSAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoImV2ZW50LnZlcnNpb24iLCAidmVyc2lvbiAzIik7DQotfQ0KLQ0KLWZ1bmN0aW9uIGNvbm5l
Y3Rpb25FcnJvcihldmVudCwgY29ubmVjdGlvbklkKQ0KLXsNCi0gICAgZGVidWcoIiIpDQotICAg
IHRlc3RQYXNzZWQoImNvbm5lY3Rpb25bIiArIGNvbm5lY3Rpb25JZCArICJdIGdvdCBlcnJvciBl
dmVudCIpOw0KLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LmVycm9yQ29kZSIsICJJREJEYXRh
YmFzZUV4Y2VwdGlvbi5BQk9SVF9FUlIiKQ0KLSAgICBpZiAoJ3dlYmtpdEVycm9yTWVzc2FnZScg
aW4gZXZlbnQudGFyZ2V0KSB7DQotICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LndlYmtp
dEVycm9yTWVzc2FnZS5sZW5ndGggPiAwIiwgInRydWUiKTsNCi0gICAgICAgIGRlYnVnKGV2ZW50
LnRhcmdldC53ZWJraXRFcnJvck1lc3NhZ2UpOw0KLSAgICB9DQotfQ0KLQ0KLWZ1bmN0aW9uIGlu
U2V0VmVyc2lvbjEoZXZlbnQpDQotew0KLSAgICBkZWJ1ZygiIikNCi0gICAgdGVzdFBhc3NlZCgi
Y29ubmVjdGlvblsxXSBnb3QgaW50byBTZXRWZXJzaW9uIik7DQotICAgIGZpbmlzaEpTVGVzdCgp
Ow0KLX0NCi0NCi0NCi10ZXN0KCk7DQotDQotPC9zY3JpcHQ+DQotPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+DQotPC9ib2R5Pg0K
LTwvaHRtbD4NCis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
c2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy9zZXRfdmVyc2lvbl9xdWV1ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3N0cnVjdHVy
ZWQtY2xvbmUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3N0cnVjdHVyZWQt
Y2xvbmUuaHRtbAppbmRleCBmZGE4ZDJiYzhlOGJiYTc5OGFlMGYwODI2MmUzYjczMzAyOWM2MWIx
Li5iMjE3OWFiMGJmN2VjNDZkN2ZlMTM0NzUwNzg0MzE4YTEzMTAyZTZhIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zdHJ1Y3R1cmVkLWNsb25lLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc3RydWN0dXJlZC1jbG9uZS5odG1sCkBAIC01
LDUzNyArNSw3IEBACiA8L2hlYWQ+CiA8Ym9keT4KIDxpbnB1dCB0eXBlPSJmaWxlIiBpZD0iZmls
ZUlucHV0IiBtdWx0aXBsZT48L2lucHV0PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3Qg
c3RydWN0dXJlZCBjbG9uZSBwZXJtdXRhdGlvbnMgaW4gSW5kZXhlZERCLiBGaWxlL0ZpbGVMaXN0
IHRlc3RzIHJlcXVpcmUgRHVtcFJlbmRlclRyZWUuIik7Ci0KLWlmIChzZWxmLmV2ZW50U2VuZGVy
KSB7Ci0gICAgdmFyIGZpbGVJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmaWxlSW5w
dXQiKTsKLSAgICB2YXIgZmlsZVJlY3QgPSBmaWxlSW5wdXQuZ2V0Q2xpZW50UmVjdHMoKVswXTsK
LSAgICB2YXIgdGFyZ2V0WCA9IGZpbGVSZWN0LmxlZnQgKyBmaWxlUmVjdC53aWR0aCAvIDI7Ci0g
ICAgdmFyIHRhcmdldFkgPSBmaWxlUmVjdC50b3AgKyBmaWxlUmVjdC5oZWlnaHQgLyAyOwotICAg
IGV2ZW50U2VuZGVyLmJlZ2luRHJhZ1dpdGhGaWxlcyhbJ3Jlc291cmNlcy90ZXN0LWRhdGEuaHRt
bCcsICdyZXNvdXJjZXMvdGVzdC1kYXRhLnR4dCddKTsKLSAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyh0YXJnZXRYLCB0YXJnZXRZKTsKLSAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Ci19Ci0K
LWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgcHJl
cGFyZURhdGFiYXNlKCk7Ci19Ci0KLWZ1bmN0aW9uIHByZXBhcmVEYXRhYmFzZSgpCi17Ci0gICAg
ZGVidWcoIiIpOwotICAgIGRlYnVnKCJQcmVwYXJlIERhdGFiYXNlIik7Ci0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgnc3RydWN0dXJlZC1jbG9uZScp
Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihlKSB7Ci0gICAgICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJpbmRleGVkREIub3Blbignc3RydWN0dXJlZC1jbG9uZScpIik7Ci0gICAgICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImRiID0g
cmVxdWVzdC5yZXN1bHQiKTsKLSAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGIu
dmVyc2lvbiIsICIiKTsKLSAgICAgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRW
ZXJzaW9uKCcxJykiKTsKLSAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihl
KSB7Ci0gICAgICAgICAgICAgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0
b3JlTmFtZScpIik7Ci0gICAgICAgICAgICAgICAgdmFyIHRyYW5zID0gcmVxdWVzdC5yZXN1bHQ7
Ci0gICAgICAgICAgICAgICAgdHJhbnMub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotICAgICAgICAgICAgICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFj
azsKLSAgICAgICAgICAgICAgICB0cmFucy5vbmNvbXBsZXRlID0gc3RhcnRUZXN0czsKLSAgICAg
ICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24gc3RhcnRUZXN0cygp
Ci17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJSdW5uaW5nIHRlc3RzLi4uIik7Ci0gICAg
dmFyIHRlc3RzX3RvX3J1biA9IFsKLSAgICAgICAgdGVzdFVuZGVmaW5lZCwKLSAgICAgICAgdGVz
dE51bGwsCi0gICAgICAgIHRlc3RCb29sZWFuLAotICAgICAgICB0ZXN0TnVtYmVyLAotICAgICAg
ICB0ZXN0U3RyaW5nLAotICAgICAgICB0ZXN0Qm9vbGVhbk9iamVjdCwKLSAgICAgICAgdGVzdE51
bWJlck9iamVjdCwKLSAgICAgICAgdGVzdFN0cmluZ09iamVjdCwKLSAgICAgICAgdGVzdERhdGVP
YmplY3QsCi0gICAgICAgIHRlc3RSZWdFeHBPYmplY3QsCi0gICAgICAgIHRlc3RJbWFnZURhdGEs
Ci0gICAgICAgIHRlc3RCbG9iLAotICAgICAgICB0ZXN0RmlsZSwKLSAgICAgICAgdGVzdEZpbGVM
aXN0LAotICAgICAgICB0ZXN0QXJyYXksCi0gICAgICAgIHRlc3RPYmplY3QKLSAgICBdOwotCi0g
ICAgZnVuY3Rpb24gbmV4dFRlc3QoKSB7Ci0gICAgICAgIGRlYnVnKCIiKTsKLSAgICAgICAgaWYg
KHRlc3RzX3RvX3J1bi5sZW5ndGgpIHsKLSAgICAgICAgICAgIHZhciB0ZXN0ID0gdGVzdHNfdG9f
cnVuLnNoaWZ0KCk7Ci0gICAgICAgICAgICB0ZXN0KG5leHRUZXN0KTsgLy8gV2hlbiBkb25lLCBj
YWxsIHRoaXMgYWdhaW4uCi0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0ZXN0QmFkVHlw
ZXMoKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBuZXh0VGVzdCgpOwotfQotCi1mdW5jdGlvbiBm
b3JFYWNoV2l0aENhbGxiYWNrKHRlc3RGdW5jdGlvbiwgdmFsdWVzLCBjYWxsYmFjaykKLXsKLSAg
ICBmdW5jdGlvbiBuZXh0VmFsdWUoKSB7Ci0gICAgICAgIGlmICh2YWx1ZXMubGVuZ3RoKSB7Ci0g
ICAgICAgICAgICB0ZXN0RnVuY3Rpb24odmFsdWVzLnNoaWZ0KCksIG5leHRWYWx1ZSk7Ci0gICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjYWxsYmFjaygpOwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgbmV4dFZhbHVlKCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RWYWx1ZSh2YWx1ZSwgY2FsbGJh
Y2spCi17Ci0gICAgLy8gT25lIHRyYW5zYWN0aW9uIHBlciB0ZXN0LCBzaW5jZSBzb21lIHRlc3Rz
IHJlcXVpcmUgYXN5bmNocm9ub3VzCi0gICAgLy8gb3BlcmF0aW9ucyB0byB2ZXJpZnkgdGhlIHJl
c3VsdCAoZS5nLiB2aWEgRmlsZVJlYWRlcikKLSAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9
IGRiLnRyYW5zYWN0aW9uKCdzdG9yZU5hbWUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIp
OwotICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAg
ICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgZXZh
bEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsK
LQotICAgIHNlbGYudmFsdWUgPSB2YWx1ZTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3Rv
cmUucHV0KHZhbHVlLCAna2V5JykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpIHsKLSAg
ICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmdldCgna2V5JykiKTsKLSAgICAgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgY2FsbGJhY2socmVxdWVz
dC5yZXN1bHQpOwotICAgICAgICB9OwotICAgIH07Ci19Ci0KLS8vIElkZW50aXR5IHRlc3Rpbmcs
IHNlbnNpdGl2ZSB0byBOYU4gYW5kIC0wCi1mdW5jdGlvbiBpcyh4LCB5KSB7Ci0gICAgaWYgKHgg
PT09IHkpIHsKLSAgICAgICAgcmV0dXJuIHggIT09IDAgfHwgMSAvIHggPT09IDEgLyB5OwotICAg
IH0KLSAgICByZXR1cm4geCAhPT0geCAmJiB5ICE9PSB5OwotfQotCi1mdW5jdGlvbiBhcnJheUNv
bXBhcmUoYSwgYikgewotICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHsKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyAr
K2kpIHsKLSAgICAgICAgaWYgKCFpcyhhW2ldLCBiW2ldKSkgewotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1mdW5jdGlv
biB0ZXN0UHJpbWl0aXZlVmFsdWUoc3RyaW5nLCBjYWxsYmFjaykKLXsKLSAgICBkZWJ1ZygiVGVz
dGluZzogIiArIHN0cmluZyk7Ci0gICAgdmFyIHZhbHVlID0gZXZhbCgidmFsdWUgPSAoIiArIHN0
cmluZyArICIpIik7Ci0gICAgdGVzdF9kYXRhID0gdmFsdWU7Ci0gICAgdGVzdFZhbHVlKHRlc3Rf
ZGF0YSwgZnVuY3Rpb24ocmVzdWx0KSB7Ci0gICAgICAgIHNlbGYucmVzdWx0ID0gcmVzdWx0Owot
ICAgICAgICBzaG91bGRCZVRydWUoImlzKHRlc3RfZGF0YSwgcmVzdWx0KSIpOwotICAgICAgICBk
ZWJ1ZygiIik7Ci0gICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIHRl
c3RPYmplY3RXaXRoVmFsdWUoc3RyaW5nLCBjYWxsYmFjaykKLXsKLSAgICBkZWJ1ZygiVGVzdGlu
ZzogIiArIHN0cmluZyk7Ci0gICAgdmFyIHZhbHVlID0gZXZhbCgidmFsdWUgPSAoIiArIHN0cmlu
ZyArICIpIik7Ci0gICAgdGVzdF9kYXRhID0gdmFsdWU7Ci0gICAgdGVzdFZhbHVlKHRlc3RfZGF0
YSwgZnVuY3Rpb24ocmVzdWx0KSB7Ci0gICAgICAgIHNlbGYucmVzdWx0ID0gcmVzdWx0OwotICAg
ICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiByZXN1bHQiLCAib2JqZWN0Iik7Ci0g
ICAgICAgIHNob3VsZEJlKCJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocmVzdWx0KSIs
ICJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodGVzdF9kYXRhKSIpOwotICAgICAgICBz
aG91bGRCZVRydWUoInRlc3RfZGF0YSAhPT0gcmVzdWx0Iik7Ci0gICAgICAgIHNob3VsZEJlKCJy
ZXN1bHQudG9TdHJpbmcoKSIsICJ0ZXN0X2RhdGEudG9TdHJpbmcoKSIpOwotICAgICAgICBzaG91
bGRCZVRydWUoImlzKHRlc3RfZGF0YS52YWx1ZU9mKCksIHJlc3VsdC52YWx1ZU9mKCkpIik7Ci0g
ICAgICAgIGRlYnVnKCIiKTsKLSAgICAgICAgY2FsbGJhY2soKTsKLSAgICB9KTsKLX0KLQotZnVu
Y3Rpb24gdGVzdFVuZGVmaW5lZChjYWxsYmFjaykKLXsKLSAgICB0ZXN0UHJpbWl0aXZlVmFsdWUo
InVuZGVmaW5lZCIsIGNhbGxiYWNrKTsKLX0KLQotZnVuY3Rpb24gdGVzdE51bGwoY2FsbGJhY2sp
Ci17Ci0gICAgdGVzdFByaW1pdGl2ZVZhbHVlKCJudWxsIiwgY2FsbGJhY2spOwotfQotCi1mdW5j
dGlvbiB0ZXN0Qm9vbGVhbihjYWxsYmFjaykKLXsKLSAgICBkZWJ1ZygiVGVzdGluZyBib29sZWFu
IHByaW1pdGl2ZXMiKTsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZm9yRWFjaFdpdGhDYWxsYmFjayh0
ZXN0UHJpbWl0aXZlVmFsdWUsIFsidHJ1ZSIsICJmYWxzZSJdLCBjYWxsYmFjayk7Ci19Ci0KLWZ1
bmN0aW9uIHRlc3RCb29sZWFuT2JqZWN0KGNhbGxiYWNrKQotewotICAgIGRlYnVnKCJUZXN0aW5n
IEJvb2xlYW4gb2JqZWN0cyIpOwotICAgIGRlYnVnKCIiKTsKLSAgICBmb3JFYWNoV2l0aENhbGxi
YWNrKHRlc3RPYmplY3RXaXRoVmFsdWUsIFsKLSAgICAgICAgIm5ldyBCb29sZWFuKHRydWUpIiwK
LSAgICAgICAgIm5ldyBCb29sZWFuKGZhbHNlKSIKLSAgICBdLCBjYWxsYmFjayk7Ci19Ci0KLWZ1
bmN0aW9uIHRlc3RTdHJpbmcoY2FsbGJhY2spCi17Ci0gICAgZGVidWcoIlRlc3Rpbmcgc3RyaW5n
IHByaW1pdGl2ZXMiKTsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZm9yRWFjaFdpdGhDYWxsYmFjayh0
ZXN0UHJpbWl0aXZlVmFsdWUsIFsKLSAgICAgICAgIicnIiwKLSAgICAgICAgIid0aGlzIGlzIGEg
c2FtcGxlIHN0cmluZyciLAotICAgICAgICAiJ251bGwoXFwwKSciCi0gICAgXSwgY2FsbGJhY2sp
OwotfQotCi1mdW5jdGlvbiB0ZXN0U3RyaW5nT2JqZWN0KGNhbGxiYWNrKQotewotICAgIGRlYnVn
KCJUZXN0aW5nIFN0cmluZyBvYmplY3RzIik7Ci0gICAgZGVidWcoIiIpOwotICAgIGZvckVhY2hX
aXRoQ2FsbGJhY2sodGVzdE9iamVjdFdpdGhWYWx1ZSwgWwotICAgICAgICAibmV3IFN0cmluZygp
IiwKLSAgICAgICAgIm5ldyBTdHJpbmcoJ3RoaXMgaXMgYSBzYW1wbGUgc3RyaW5nJykiLAotICAg
ICAgICAibmV3IFN0cmluZygnbnVsbChcXDApJykiCi0gICAgXSwgY2FsbGJhY2spOwotfQotCi1m
dW5jdGlvbiB0ZXN0TnVtYmVyKGNhbGxiYWNrKQotewotICAgIGRlYnVnKCJUZXN0aW5nIG51bWJl
ciBwcmltaXRpdmVzIik7Ci0gICAgZGVidWcoIiIpOwotICAgIGZvckVhY2hXaXRoQ2FsbGJhY2so
dGVzdFByaW1pdGl2ZVZhbHVlLCBbCi0gICAgICAgICJOYU4iLAotICAgICAgICAiLUluZmluaXR5
IiwKLSAgICAgICAgIi1OdW1iZXIuTUFYX1ZBTFVFIiwKLSAgICAgICAgIi1OdW1iZXIuTUlOX1ZB
TFVFIiwKLSAgICAgICAgIi0wIiwKLSAgICAgICAgIjAiLAotICAgICAgICAiTnVtYmVyLk1JTl9W
QUxVRSIsCi0gICAgICAgICJOdW1iZXIuTUFYX1ZBTFVFIiwKLSAgICAgICAgIkluZmluaXR5Igot
ICAgIF0sIGNhbGxiYWNrKTsKLX0KLQotZnVuY3Rpb24gdGVzdE51bWJlck9iamVjdChjYWxsYmFj
aykKLXsKLSAgICBkZWJ1ZygiVGVzdGluZyBOdW1iZXIgb2JqZWN0cyIpOwotICAgIGRlYnVnKCIi
KTsKLSAgICBmb3JFYWNoV2l0aENhbGxiYWNrKHRlc3RPYmplY3RXaXRoVmFsdWUsIFsKLSAgICAg
ICAgIm5ldyBOdW1iZXIoTmFOKSIsCi0gICAgICAgICJuZXcgTnVtYmVyKC1JbmZpbml0eSkiLAot
ICAgICAgICAibmV3IE51bWJlcigtTnVtYmVyLk1BWF9WQUxVRSkiLAotICAgICAgICAibmV3IE51
bWJlcigtTnVtYmVyLk1JTl9WQUxVRSkiLAotICAgICAgICAibmV3IE51bWJlcigtMCkiLAotICAg
ICAgICAibmV3IE51bWJlcigwKSIsCi0gICAgICAgICJuZXcgTnVtYmVyKE51bWJlci5NSU5fVkFM
VUUpIiwKLSAgICAgICAgIm5ldyBOdW1iZXIoTnVtYmVyLk1BWF9WQUxVRSkiLAotICAgICAgICAi
bmV3IE51bWJlcihJbmZpbml0eSkiCi0gICAgXSwgY2FsbGJhY2spOwotfQotCi1mdW5jdGlvbiB0
ZXN0RGF0ZU9iamVjdChjYWxsYmFjaykKLXsKLSAgICBkZWJ1ZygiVGVzdGluZyBEYXRlIG9iamVj
dHMiKTsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZm9yRWFjaFdpdGhDYWxsYmFjayh0ZXN0T2JqZWN0
V2l0aFZhbHVlLCBbCi0gICAgICAgICJuZXcgRGF0ZSgtMWUxMykiLAotICAgICAgICAibmV3IERh
dGUoLTFlMTIpIiwKLSAgICAgICAgIm5ldyBEYXRlKC0xZTkpIiwKLSAgICAgICAgIm5ldyBEYXRl
KC0xZTYpIiwKLSAgICAgICAgIm5ldyBEYXRlKC0xZTMpIiwKLSAgICAgICAgIm5ldyBEYXRlKDAp
IiwKLSAgICAgICAgIm5ldyBEYXRlKDFlMykiLAotICAgICAgICAibmV3IERhdGUoMWU2KSIsCi0g
ICAgICAgICJuZXcgRGF0ZSgxZTkpIiwKLSAgICAgICAgIm5ldyBEYXRlKDFlMTIpIiwKLSAgICAg
ICAgIm5ldyBEYXRlKDFlMTMpIgotICAgIF0sIGNhbGxiYWNrKTsKLX0KLQotZnVuY3Rpb24gdGVz
dFJlZ0V4cE9iamVjdChjYWxsYmFjaykKLXsKLSAgICBkZWJ1ZygiVGVzdGluZyBSZWdFeHAgb2Jq
ZWN0cyIpOwotICAgIGRlYnVnKCIiKTsKLSAgICBmdW5jdGlvbiB0ZXN0UmVnRXhwKHN0cmluZywg
Y2FsbGJhY2spIHsKLSAgICAgICAgZGVidWcoIlRlc3RpbmcgUmVnRXhwOiAiICsgc3RyaW5nKTsK
LSAgICAgICAgdmFyIHZhbHVlID0gZXZhbCgidmFsdWUgPSAoIiArIHN0cmluZyArICIpIik7Ci0g
ICAgICAgIHRlc3RfZGF0YSA9IHZhbHVlOwotICAgICAgICB0ZXN0VmFsdWUodGVzdF9kYXRhLCBm
dW5jdGlvbihyZXN1bHQpIHsKLSAgICAgICAgICAgIHNlbGYucmVzdWx0ID0gcmVzdWx0OwotICAg
ICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXN0X2RhdGEgIT09IHJlc3VsdCIpOwotICAgICAgICAg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwo
cmVzdWx0KSIsICJbb2JqZWN0IFJlZ0V4cF0iKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJyZXN1
bHQudG9TdHJpbmcoKSIsICJ0ZXN0X2RhdGEudG9TdHJpbmcoKSIpOwotICAgICAgICAgICAgZGVi
dWcoIiIpOwotICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0g
ICAgZm9yRWFjaFdpdGhDYWxsYmFjayh0ZXN0UmVnRXhwLCBbCi0gICAgICAgICJuZXcgUmVnRXhw
KCkiLAotICAgICAgICAiL2FiYy8iLAotICAgICAgICAiL2FiYy9nIiwKLSAgICAgICAgIi9hYmMv
aSIsCi0gICAgICAgICIvYWJjL2dpIiwKLSAgICAgICAgIi9hYmMvbSIsCi0gICAgICAgICIvYWJj
L21nIiwKLSAgICAgICAgIi9hYmMvbWkiLAotICAgICAgICAiL2FiYy9tZ2kiCi0gICAgXSwgY2Fs
bGJhY2spOwotfQotCi1mdW5jdGlvbiB0ZXN0SW1hZ2VEYXRhKGNhbGxiYWNrKQotewotICAgIGRl
YnVnKCJUZXN0aW5nIEltYWdlRGF0YSIpOwotICAgIGV2YWxBbmRMb2coImNhbnZhcyA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpIik7Ci0gICAgZXZhbEFuZExvZygiY2FudmFzLndp
ZHRoID0gOCIpOwotICAgIGV2YWxBbmRMb2coImNhbnZhcy5oZWlnaHQgPSA4Iik7Ci0gICAgZXZh
bEFuZExvZygidGVzdF9kYXRhID0gY2FudmFzLmdldENvbnRleHQoJzJkJykuZ2V0SW1hZ2VEYXRh
KDAsIDAsIDgsIDgpIik7Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI1NjsgKytpKSB7Ci0g
ICAgICAgIHRlc3RfZGF0YS5kYXRhW2ldID0gaTsKLSAgICB9Ci0KLSAgICB0ZXN0VmFsdWUodGVz
dF9kYXRhLCBmdW5jdGlvbihyZXN1bHQpIHsKLSAgICAgICAgc2VsZi5yZXN1bHQgPSByZXN1bHQ7
Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgidGVzdF9kYXRhICE9PSByZXN1bHQiKTsKLSAgICAgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocmVz
dWx0KSIsICJbb2JqZWN0IEltYWdlRGF0YV0iKTsKLSAgICAgICAgc2hvdWxkQmUoInJlc3VsdC53
aWR0aCIsICJ0ZXN0X2RhdGEud2lkdGgiKTsKLSAgICAgICAgc2hvdWxkQmUoInJlc3VsdC5oZWln
aHQiLCAidGVzdF9kYXRhLmhlaWdodCIpOwotICAgICAgICBzaG91bGRCZSgicmVzdWx0LmRhdGEu
bGVuZ3RoIiwgInRlc3RfZGF0YS5kYXRhLmxlbmd0aCIpOwotICAgICAgICBpZiAoYXJyYXlDb21w
YXJlKHRlc3RfZGF0YS5kYXRhLCByZXN1bHQuZGF0YSkpIHsKLSAgICAgICAgICAgIHRlc3RQYXNz
ZWQoInJlc3VsdCBkYXRhIG1hdGNoZXMiKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IHRlc3RGYWlsZWQoInJlc3VsdCBkYXRhIGRvZXNuJ3QgbWF0Y2giKTsKLSAgICAgICAgfQotICAg
ICAgICBjYWxsYmFjaygpOwotICAgIH0pOwotfQotCi1mdW5jdGlvbiByZWFkQmxvYkFzVGV4dChi
bG9iLCBjYWxsYmFjaykKLXsKLSAgICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsKLSAg
ICByZWFkZXIub25sb2FkID0gZnVuY3Rpb24oZSkgewotICAgICAgICBpZiAoZS50YXJnZXQucmVh
ZHlTdGF0ZSA9PT0gRmlsZVJlYWRlci5ET05FKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhlLnRh
cmdldC5yZXN1bHQpOwotICAgICAgICB9Ci0gICAgfTsKLSAgICByZWFkZXIub25lcnJvciA9IGZ1
bmN0aW9uKGUpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiRXJyb3IgcmVhZGluZyBibG9iIGFzIHRl
eHQ6ICIgKyBlKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfTsKLSAgICByZWFkZXIu
cmVhZEFzVGV4dChibG9iKTsKLX0KLQotZnVuY3Rpb24gY2hlY2tCbG9iQ29udGVudHMoYmxvYiwg
ZXhwZWN0ZWQsIGNhbGxiYWNrKQotewotICAgIHJlYWRCbG9iQXNUZXh0KGJsb2IsIGZ1bmN0aW9u
KHRleHQpIHsKLSAgICAgICAgc2VsZi50ZXh0ID0gdGV4dDsKLSAgICAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJ0ZXh0IiwgZXhwZWN0ZWQpOwotICAgICAgICBjYWxsYmFjaygpOwotICAgIH0p
OwotfQotCi1mdW5jdGlvbiBjb21wYXJlQmxvYnMoYmxvYjEsIGJsb2IyLCBjYWxsYmFjaykKLXsK
LSAgICByZWFkQmxvYkFzVGV4dChibG9iMSwgZnVuY3Rpb24odGV4dDEpIHsKLSAgICAgICAgcmVh
ZEJsb2JBc1RleHQoYmxvYjIsIGZ1bmN0aW9uKHRleHQyKSB7Ci0gICAgICAgICAgICBzZWxmLnRl
eHQxID0gdGV4dDE7Ci0gICAgICAgICAgICBzZWxmLnRleHQyID0gdGV4dDI7Ci0gICAgICAgICAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInRleHQyIiwgdGV4dDEpOwotICAgICAgICAgICAgY2Fs
bGJhY2soKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RCbG9iKGNh
bGxiYWNrKQotewotICAgIGRlYnVnKCJUZXN0aW5nIEJsb2IiKTsKLQotICAgIC8vIEZJWE1FOiBC
bG9iLCBGaWxlLCBhbmQgRmlsZUxpc3Qgc3VwcG9ydCBpcyBpbmNvbXBsZXRlLgotICAgIC8vIGh0
dHA6Ly9jcmJ1Zy5jb20vMTA4MDEyCi0gICAgZGVidWcoIlNraXBwaW5nIHRlc3QiKTsKLSAgICBj
YWxsYmFjaygpOwotICAgIHJldHVybjsKLQotICAgIGV2YWxBbmRMb2coIkJsb2JCdWlsZGVyID0g
c2VsZi5CbG9iQnVpbGRlciB8fCBzZWxmLldlYktpdEJsb2JCdWlsZGVyIik7Ci0gICAgc2hvdWxk
QmVUcnVlKCJCbG9iQnVpbGRlciAhPSBudWxsIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJGaWxlUmVh
ZGVyICE9IG51bGwiKTsKLSAgICBldmFsQW5kTG9nKCJidWlsZGVyID0gbmV3IEJsb2JCdWlsZGVy
KCkiKTsKLSAgICBldmFsQW5kTG9nKCJ0ZXN0X2NvbnRlbnQgPSAnVGhpcyBpcyBhIHRlc3QuIFRo
aXMgaXMgb25seSBhIHRlc3QuJyIpOwotICAgIGV2YWxBbmRMb2coImJ1aWxkZXIuYXBwZW5kKHRl
c3RfY29udGVudCkiKTsKLSAgICBldmFsQW5kTG9nKCJ0ZXN0X2RhdGEgPSBidWlsZGVyLmdldEJs
b2IoKSIpOwotICAgIHRlc3RWYWx1ZSh0ZXN0X2RhdGEsIGZ1bmN0aW9uKHJlc3VsdCkgewotICAg
ICAgICBzZWxmLnJlc3VsdCA9IHJlc3VsdDsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXN0X2Rh
dGEgIT09IHJlc3VsdCIpOwotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIk9iamVjdC5w
cm90b3R5cGUudG9TdHJpbmcuY2FsbChyZXN1bHQpIiwgIltvYmplY3QgQmxvYl0iKTsKLSAgICAg
ICAgc2hvdWxkQmUoInJlc3VsdC5zaXplIiwgInRlc3RfZGF0YS5zaXplIik7Ci0gICAgICAgIHNo
b3VsZEJlKCJyZXN1bHQudHlwZSIsICJ0ZXN0X2RhdGEudHlwZSIpOwotICAgICAgICBjaGVja0Js
b2JDb250ZW50cyhyZXN1bHQsIHRlc3RfY29udGVudCwgY2FsbGJhY2spOwotICAgIH0pOwotfQot
Ci1mdW5jdGlvbiBjb21wYXJlRmlsZXMoZmlsZTEsIGZpbGUyLCBjYWxsYmFjaykKLXsKLSAgICBz
ZWxmLmZpbGUxID0gZmlsZTE7Ci0gICAgc2VsZi5maWxlMiA9IGZpbGUyOwotICAgIHNob3VsZEJl
VHJ1ZSgiZmlsZTEgIT09IGZpbGUyIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJPYmpl
Y3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZmlsZTEpIiwgIltvYmplY3QgRmlsZV0iKTsKLSAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChm
aWxlMikiLCAiW29iamVjdCBGaWxlXSIpOwotICAgIGRlYnVnKCJmaWxlMS5zaXplOiAiICsgZmls
ZTEuc2l6ZSk7Ci0gICAgc2hvdWxkQmUoImZpbGUxLnNpemUiLCAiZmlsZTIuc2l6ZSIpOwotICAg
IGRlYnVnKCJmaWxlMS50eXBlOiAiICsgZmlsZTEudHlwZSk7Ci0gICAgc2hvdWxkQmUoImZpbGUx
LnR5cGUiLCAiZmlsZTIudHlwZSIpOwotICAgIGRlYnVnKCJmaWxlMS5uYW1lOiAiICsgZmlsZTEu
bmFtZSk7Ci0gICAgc2hvdWxkQmUoImZpbGUxLm5hbWUiLCAiZmlsZTIubmFtZSIpOwotICAgIHNo
b3VsZEJlKCJTdHJpbmcoZmlsZTEubGFzdE1vZGlmaWVkRGF0ZSkiLCAiU3RyaW5nKGZpbGUyLmxh
c3RNb2RpZmllZERhdGUpIik7Ci0gICAgaWYgKGNhbGxiYWNrKSB7Ci0gICAgICAgIGNvbXBhcmVC
bG9icyhmaWxlMSwgZmlsZTIsIGNhbGxiYWNrKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RG
aWxlKGNhbGxiYWNrKQotewotICAgIGRlYnVnKCJUZXN0aW5nIEZpbGUiKTsKLQotICAgIC8vIEZJ
WE1FOiBCbG9iLCBGaWxlLCBhbmQgRmlsZUxpc3Qgc3VwcG9ydCBpcyBpbmNvbXBsZXRlLgotICAg
IC8vIGh0dHA6Ly9jcmJ1Zy5jb20vMTA4MDEyCi0gICAgZGVidWcoIlNraXBwaW5nIHRlc3QiKTsK
LSAgICBjYWxsYmFjaygpOwotICAgIHJldHVybjsKLQotICAgIGV2YWxBbmRMb2coInRlc3RfY29u
dGVudCA9IGZpbGVJbnB1dC5maWxlc1swXSIpOwotCi0gICAgc2VsZi50ZXN0X2RhdGEgPSB0ZXN0
X2NvbnRlbnQ7Ci0gICAgdGVzdFZhbHVlKHRlc3RfZGF0YSwgZnVuY3Rpb24ocmVzdWx0KSB7Ci0g
ICAgICAgIHNlbGYucmVzdWx0ID0gcmVzdWx0OwotICAgICAgICBjb21wYXJlRmlsZXMocmVzdWx0
LCB0ZXN0X2RhdGEsIGNhbGxiYWNrKTsKLSAgICB9KTsKLX0KLQotCi1mdW5jdGlvbiB0ZXN0Rmls
ZUxpc3QoY2FsbGJhY2spCi17Ci0gICAgZGVidWcoIlRlc3RpbmcgRmlsZUxpc3QiKTsKLQotICAg
IC8vIEZJWE1FOiBCbG9iLCBGaWxlLCBhbmQgRmlsZUxpc3Qgc3VwcG9ydCBpcyBpbmNvbXBsZXRl
LgotICAgIC8vIGh0dHA6Ly9jcmJ1Zy5jb20vMTA4MDEyCi0gICAgZGVidWcoIlNraXBwaW5nIHRl
c3QiKTsKLSAgICBjYWxsYmFjaygpOwotICAgIHJldHVybjsKLQotICAgIGV2YWxBbmRMb2coInRl
c3RfY29udGVudCA9IGZpbGVJbnB1dC5maWxlcyIpOwotCi0gICAgc2VsZi50ZXN0X2RhdGEgPSB0
ZXN0X2NvbnRlbnQ7Ci0gICAgdGVzdFZhbHVlKHRlc3RfZGF0YSwgZnVuY3Rpb24ocmVzdWx0KSB7
Ci0gICAgICAgIHNlbGYucmVzdWx0ID0gcmVzdWx0OwotICAgICAgICBzaG91bGRCZVRydWUoInRl
c3RfZGF0YSAhPT0gcmVzdWx0Iik7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiT2Jq
ZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHJlc3VsdCkiLCAiW29iamVjdCBGaWxlTGlzdF0i
KTsKLSAgICAgICAgc2hvdWxkQmUoInJlc3VsdC5sZW5ndGgiLCAidGVzdF9kYXRhLmxlbmd0aCIp
OwotICAgICAgICBpID0gMDsKLSAgICAgICAgZnVuY3Rpb24gZG9OZXh0KCkgewotICAgICAgICAg
ICAgaWYgKGkgPj0gdGVzdF9kYXRhLmxlbmd0aCkgewotICAgICAgICAgICAgICAgIGNhbGxiYWNr
KCk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGRlYnVnKCJjb21wYXJp
bmcgZmlsZVsiICsgaSArICJdIik7Ci0gICAgICAgICAgICAgICAgY29tcGFyZUZpbGVzKHJlc3Vs
dFtpXSwgdGVzdF9kYXRhW2krK10sIGRvTmV4dCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICAgICAgZG9OZXh0KCk7Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RBcnJheShjYWxs
YmFjaykgewotICAgIGRlYnVnKCJUZXN0aW5nIEFycmF5Iik7Ci0gICAgZXZhbEFuZExvZygidGVz
dF9kYXRhID0gW10iKTsKLSAgICBldmFsQW5kTG9nKCJ0ZXN0X2RhdGFbMF0gPSAnZm9vJyIpOwot
ICAgIGV2YWxBbmRMb2coInRlc3RfZGF0YVsxXSA9ICdiYXInIik7Ci0gICAgZXZhbEFuZExvZygi
dGVzdF9kYXRhWzEwXSA9IHRydWUiKTsKLSAgICBldmFsQW5kTG9nKCJ0ZXN0X2RhdGFbMTFdID0g
ZmFsc2UiKTsKLSAgICBldmFsQW5kTG9nKCJ0ZXN0X2RhdGFbMjBdID0gMTIzIik7Ci0gICAgZXZh
bEFuZExvZygidGVzdF9kYXRhWzIxXSA9IDQ1NiIpOwotICAgIGV2YWxBbmRMb2coInRlc3RfZGF0
YVszMF0gPSBudWxsIik7Ci0KLSAgICB0ZXN0VmFsdWUodGVzdF9kYXRhLCBmdW5jdGlvbihyZXN1
bHQpIHsKLSAgICAgICAgc2VsZi5yZXN1bHQgPSByZXN1bHQ7Ci0gICAgICAgIHNob3VsZEJlVHJ1
ZSgidGVzdF9kYXRhICE9PSByZXN1bHQiKTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXN0X2Rh
dGEubGVuZ3RoID09PSByZXN1bHQubGVuZ3RoIik7Ci0gICAgICAgIE9iamVjdC5rZXlzKHRlc3Rf
ZGF0YSkuZm9yRWFjaCgKLSAgICAgICAgICAgIGZ1bmN0aW9uKGtleSkgewotICAgICAgICAgICAg
ICAgIHNob3VsZEJlKCJ0ZXN0X2RhdGFbIiArIGtleSArICJdIiwgInJlc3VsdFsiICsga2V5ICsg
Il0iKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICBjYWxsYmFjaygpOwotICAgIH0pOwotfQot
Ci1mdW5jdGlvbiB0ZXN0T2JqZWN0KGNhbGxiYWNrKSB7Ci0gICAgZGVidWcoIlRlc3RpbmcgT2Jq
ZWN0Iik7Ci0gICAgZXZhbEFuZExvZygidGVzdF9kYXRhID0gW10iKTsKLSAgICBldmFsQW5kTG9n
KCJ0ZXN0X2RhdGFbMF0gPSAnZm9vJyIpOwotICAgIGV2YWxBbmRMb2coInRlc3RfZGF0YVsxXSA9
ICdiYXInIik7Ci0gICAgZXZhbEFuZExvZygidGVzdF9kYXRhWydhJ10gPSB0cnVlIik7Ci0gICAg
ZXZhbEFuZExvZygidGVzdF9kYXRhWydiJ10gPSBmYWxzZSIpOwotICAgIGV2YWxBbmRMb2coInRl
c3RfZGF0YVsnZm9vJ10gPSAxMjMiKTsKLSAgICBldmFsQW5kTG9nKCJ0ZXN0X2RhdGFbJ2Jhcidd
ID0gNDU2Iik7Ci0gICAgZXZhbEFuZExvZygidGVzdF9kYXRhWycnXSA9IG51bGwiKTsKLQotICAg
IHRlc3RWYWx1ZSh0ZXN0X2RhdGEsIGZ1bmN0aW9uKHJlc3VsdCkgewotICAgICAgICBzZWxmLnJl
c3VsdCA9IHJlc3VsdDsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXN0X2RhdGEgIT09IHJlc3Vs
dCIpOwotICAgICAgICBzaG91bGRCZVRydWUoImFycmF5Q29tcGFyZShPYmplY3Qua2V5cyhyZXN1
bHQpLnNvcnQoKSwgT2JqZWN0LmtleXModGVzdF9kYXRhKS5zb3J0KCkpIik7Ci0gICAgICAgIE9i
amVjdC5rZXlzKHRlc3RfZGF0YSkuZm9yRWFjaCgKLSAgICAgICAgICAgIGZ1bmN0aW9uKGtleSkg
ewotICAgICAgICAgICAgICAgIHNob3VsZEJlKCJ0ZXN0X2RhdGFbIiArIEpTT04uc3RyaW5naWZ5
KGtleSkgKyAiXSIsICJyZXN1bHRbIiArIEpTT04uc3RyaW5naWZ5KGtleSkgKyAiXSIpOwotICAg
ICAgICAgICAgfSk7Ci0gICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0aW9u
IHRlc3RCYWRUeXBlcygpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJUZXN0IHR5cGVz
IHRoYXQgY2FuJ3QgYmUgY2xvbmVkOiIpOwotICAgIGRlYnVnKCIiKTsKLQotICAgIGV2YWxBbmRM
b2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlTmFtZScsIElEQlRyYW5zYWN0
aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5v
YmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLSAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHVuZXhw
ZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOwotICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmaW5pc2hK
U1Rlc3Q7Ci0KLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIk90aGVyIEphdmFTY3JpcHQgb2Jq
ZWN0IHR5cGVzOiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLnB1dChuZXcg
RXJyb3IsICdrZXknKSIsICJET01FeGNlcHRpb24uREFUQV9DTE9ORV9FUlIiKTsKLSAgICBldmFs
QW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5wdXQobmV3IEZ1bmN0aW9uLCAna2V5JykiLCAiRE9N
RXhjZXB0aW9uLkRBVEFfQ0xPTkVfRVJSIik7Ci0KLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWco
Ik90aGVyIGhvc3Qgb2JqZWN0IHR5cGVzOiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24o
InN0b3JlLnB1dChzZWxmLCAna2V5JykiLCAiRE9NRXhjZXB0aW9uLkRBVEFfQ0xPTkVfRVJSIik7
Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KGRvY3VtZW50LCAna2V5Jyki
LCAiRE9NRXhjZXB0aW9uLkRBVEFfQ0xPTkVfRVJSIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2Vw
dGlvbigic3RvcmUucHV0KGRvY3VtZW50LmJvZHksICdrZXknKSIsICJET01FeGNlcHRpb24uREFU
QV9DTE9ORV9FUlIiKTsKLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvc3RydWN0dXJlZC1jbG9uZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4K
IDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5z
YWN0aW9uLWFib3J0Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2Fj
dGlvbi1hYm9ydC5odG1sCmluZGV4IDM0MTBmNDYzYTIwMzE4OTY1MzNiNGE0Njk5YzY3YWQzNTgx
NTdlZGQuLjFiYWNiNWZiNzhjYTUyMzIzNGRmZWRmZGNiM2NiMmEzNzBlOWJjM2QgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFib3J0Lmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQuaHRt
bApAQCAtNCw5NiArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9z
Y3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IHRy
YW5zYWN0aW9uIGFib3J0cyBzZW5kIHRoZSBwcm9wZXIgb25hYm9ydCBtZXNzYWdlcy4uIik7Ci0K
LWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ25hbWUnKSIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gc2V0VmVyc2lvbjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvbigpCi17Ci0gICAgZGIg
PSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZGVsZXRlRXhpc3RpbmcoKQotewot
ICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOwotICAgIHNlbGYudHJhbnMgPSBldmFs
QW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUo
InRyYW5zICE9PSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENh
bGxiYWNrOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSBzdGFydFRlc3QiKTsK
LQotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBzdG9yZSA9IGV2YWxBbmRM
b2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7Ci0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9
LCAna2V5JykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLX0KLQotZnVuY3Rpb24gc3RhcnRUZXN0KCkKLXsKLSAgICB0cmFucyA9IGV2YWxBbmRMb2co
InRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rpb24uUkVB
RF9XUklURSkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmFib3J0ID0gdHJhbnNhY3Rpb25B
Ym9ydGVkIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRD
b21wbGV0ZUNhbGxiYWNrIik7Ci0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5z
Lm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJz
dG9yZS5hZGQoe3g6ICd2YWx1ZTInLCB5OiAnenp6Mid9LCAna2V5MicpIik7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gZmlyc3RBZGQ7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVk
U3VjY2Vzc0NhbGxiYWNrOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6
ICd2YWx1ZTMnLCB5OiAnenp6Myd9LCAna2V5MycpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
c2Vjb25kQWRkOwotICAgIHRyYW5zLmFib3J0KCk7Ci0KLSAgICBmaXJzdEVycm9yID0gZmFsc2U7
Ci0gICAgc2Vjb25kRXJyb3IgPSBmYWxzZTsKLSAgICBhYm9ydEZpcmVkID0gZmFsc2U7Ci19Ci0K
LWZ1bmN0aW9uIGZpcnN0QWRkKCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LmVycm9y
Q29kZSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5BQk9SVF9FUlIiKTsKLSAgICBzaG91bGRCZUZh
bHNlKCJmaXJzdEVycm9yIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgic2Vjb25kRXJyb3IiKTsKLSAg
ICBzaG91bGRCZUZhbHNlKCJhYm9ydEZpcmVkIik7Ci0gICAgZmlyc3RFcnJvciA9IHRydWU7Ci0K
LSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZTQnLCB5OiAn
enp6NCd9LCAna2V5NCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNU
SVZFX0VSUiIpOwotfQotCi1mdW5jdGlvbiBzZWNvbmRBZGQoKQotewotICAgIHNob3VsZEJlKCJl
dmVudC50YXJnZXQuZXJyb3JDb2RlIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkFCT1JUX0VSUiIp
OwotICAgIHNob3VsZEJlVHJ1ZSgiZmlyc3RFcnJvciIpOwotICAgIHNob3VsZEJlRmFsc2UoInNl
Y29uZEVycm9yIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiYWJvcnRGaXJlZCIpOwotICAgIHNlY29u
ZEVycm9yID0gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gdHJhbnNhY3Rpb25BYm9ydGVkKCkKLXsKLSAg
ICBzaG91bGRCZVRydWUoImZpcnN0RXJyb3IiKTsKLSAgICBzaG91bGRCZVRydWUoInNlY29uZEVy
cm9yIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiYWJvcnRGaXJlZCIpOwotICAgIGFib3J0RmlyZWQg
PSB0cnVlOwotCi0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuYWRkKHt4OiAndmFs
dWU1JywgeTogJ3p6ejUnfSwgJ2tleTUnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FD
VElPTl9JTkFDVElWRV9FUlIiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotdGVzdCgpOwot
Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90cmFuc2FjdGlvbi1hYm9ydC5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFmdGVyLWNsb3NlLmh0bWwgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hZnRlci1jbG9zZS5odG1s
CmluZGV4IGY4MjdlYTcyNjVmY2E3MjcxN2MxYWVlMzMxYTE5NDU1MWJlMWUwZGUuLjNhNDE2MTRj
YzBmYzdlYTEwNjlkNDk4NWI3YTMxMjkzZmU5MjUyNTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFmdGVyLWNsb3NlLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWZ0ZXItY2xvc2UuaHRtbApA
QCAtMSw5MCArMSwxMCBAQAotPGh0bWw+DQotPGhlYWQ+DQotPHNjcmlwdCBzcmM9Ii4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4NCi08c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+DQotPC9oZWFkPg0KLTxib2R5Pg0KLTxzY3Jp
cHQ+DQotDQotZGVzY3JpcHRpb24oIlRlc3QgY2xvc2luZyBhIGRhdGFiYXNlIGNvbm5lY3Rpb24g
aW4gSW5kZXhlZERCLiIpOw0KLQ0KLWZ1bmN0aW9uIHRlc3QoKQ0KLXsNCi0gICAgcmVtb3ZlVmVu
ZG9yUHJlZml4ZXMoKTsNCi0NCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5v
cGVuKCd0cmFuc2FjdGlvbi1hZnRlci1jbG9zZScpIik7DQotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gb3BlblN1Y2Nlc3M7DQotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOw0KLX0NCi0NCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpDQotew0KLSAgICBkZWJ1Zygi
b3BlblN1Y2Nlc3MoKToiKTsNCi0gICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdCIpOw0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRi
LnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7DQotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gaW5T
ZXRWZXJzaW9uOw0KLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsNCi19DQotDQotZnVuY3Rpb24gaW5TZXRWZXJzaW9uKCkNCi17DQotICAgIGRlbGV0ZUFsbE9i
amVjdFN0b3JlcyhkYik7DQotDQotICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25jb21wbGV0ZSA9
IHJ1bkZpcnN0UmVndWxhclRyYW5zYWN0aW9uOw0KLSAgICBldmVudC50YXJnZXQucmVzdWx0Lm9u
YWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsNCi0gICAgc3RvcmUgPSBldmFsQW5kTG9n
KCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7DQotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gc3RvcmUucHV0KCd4JywgJ3knKSIpOw0KLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IG9uUHV0U3VjY2VzczsNCi0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7DQotfQ0KLQ0KLWZ1bmN0aW9uIG9uUHV0U3VjY2VzcygpDQot
ew0KLSAgICB0ZXN0UGFzc2VkKCJQdXQgc3VjY2VzcyIpDQotfQ0KLQ0KLWZ1bmN0aW9uIHJ1bkZp
cnN0UmVndWxhclRyYW5zYWN0aW9uKCkNCi17DQotICAgIGRlYnVnKCJydW5uaW5nIGZpcnN0IHRy
YW5zYWN0aW9uIikNCi0gICAgY3VycmVudFRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygiY3VycmVu
dFRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZSddLCBJREJUcmFuc2FjdGlvbi5S
RUFEX1dSSVRFKSIpOw0KLSAgICBjdXJyZW50VHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0
ZWRBYm9ydENhbGxiYWNrOw0KLSAgICBjdXJyZW50VHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZp
cnN0VHJhbnNhY3Rpb25Db21wbGV0ZTsNCi0gICAgb2JqZWN0U3RvcmUgPSBjdXJyZW50VHJhbnNh
Y3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJyk7DQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJv
YmplY3RTdG9yZS5wdXQoJ2EnLCAnYicpIik7DQotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOw0KLX0NCi0NCi1mdW5jdGlvbiBmaXJzdFRyYW5zYWN0aW9uQ29t
cGxldGUoKQ0KLXsNCi0gICAgZXZhbEFuZExvZygiZGIuY2xvc2UoKSIpOw0KLSAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9u
LlJFQURfV1JJVEUpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9BTExPV0VEX0VSUiIpOw0K
LQ0KLSAgICBkZWJ1ZygiIikNCi0gICAgZGVidWcoInZlcmlmeSB0aGF0IHdlIGNhbiByZW9wZW4g
dGhlIGRiIGFmdGVyIGNhbGxpbmcgY2xvc2UiKQ0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
aW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0aW9uLWFmdGVyLWNsb3NlJykiKTsNCi0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBvblNlY29uZE9wZW4NCi0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7DQotfQ0KLQ0KLWZ1bmN0aW9uIG9uU2Vjb25kT3BlbigpIHsNCi0g
ICAgc2Vjb25kX2RiID0gZXZhbEFuZExvZygic2Vjb25kX2RiID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dCIpOw0KLSAgICBjdXJyZW50VHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJjdXJyZW50VHJhbnNh
Y3Rpb24gPSBzZWNvbmRfZGIudHJhbnNhY3Rpb24oWydzdG9yZSddLCBJREJUcmFuc2FjdGlvbi5S
RUFEX1dSSVRFKSIpOw0KLSAgICBzdG9yZSA9IGN1cnJlbnRUcmFuc2FjdGlvbi5vYmplY3RTdG9y
ZSgnc3RvcmUnKTsNCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdG9yZS5w
dXQoJzEnLCAnMicpIik7DQotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb25GaW5hbFB1dFN1Y2Nl
c3M7DQotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOw0KLSAg
ICBjdXJyZW50VHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZpbmlzaEpTVGVzdDsNCi0gICAgY3Vy
cmVudFRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsNCi19DQot
DQotZnVuY3Rpb24gb25GaW5hbFB1dFN1Y2Nlc3MoKSB7DQotICAgIHRlc3RQYXNzZWQoImZpbmFs
IHB1dCBzdWNjZXNzIik7DQotfQ0KLQ0KLQ0KLXRlc3QoKTsNCi0NCi08L3NjcmlwdD4NCi08c2Ny
aXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4NCi08L2JvZHk+DQotPC9odG1sPg0KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3RyYW5zYWN0aW9uLWFmdGVyLWNsb3NlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYW5kLW9iamVjdHN0b3JlLWNhbGxzLmh0bWwgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hbmQtb2JqZWN0c3RvcmUtY2Fs
bHMuaHRtbAppbmRleCA2YWZiYzM1OWY2MjVkOWZjOGU0NTkxMmJmZDYwYTVlYjQ0ZGMyMDY1Li4x
YTBiNWVmOThiZGUyNmY0MGRiYjg4MDE0NTczOGIxMjQ2ZjViY2VmIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hbmQtb2JqZWN0c3RvcmUtY2Fs
bHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1h
bmQtb2JqZWN0c3RvcmUtY2FsbHMuaHRtbApAQCAtNCwxMjkgKzQsNyBAQAogPHNjcmlwdCBzcmM9
InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0
PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyB0cmFuc2FjdGlvbiBhbmQgb2JqZWN0
U3RvcmUgY2FsbHMiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJl
Zml4ZXMoKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndHJh
bnNhY3Rpb24tYW5kLW9iamVjdHN0b3JlLWNhbGxzJywgJ2Rlc2NyaXB0aW9uJykiKTsKLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0g
ICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXN1bHQgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEn
KSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY2xlYW5E
YXRhYmFzZSgpCi17Ci0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgZXZhbEFu
ZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2EnKSIpOwotICAgIGV2YWxBbmRMb2coImRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCdiJykiKTsKLSAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RT
dG9yZSgnc3RvcmUnKS5jcmVhdGVJbmRleCgnaW5kZXgnLCAnc29tZV9wYXRoJykiKTsKLSAgICBl
dmFsQW5kTG9nKCJ0cmFucy5hZGRFdmVudExpc3RlbmVyKCdjb21wbGV0ZScsIGNyZWF0ZWQsIHRy
dWUpIik7Ci0gICAgZGVidWcoIiIpOwotfQotCi1mdW5jdGlvbiBjcmVhdGVkKCkKLXsKLSAgICB0
cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydhJ10pIik7Ci0gICAg
ZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2EnKSIpOwotICAgIGV2YWxBbmRFeHBlY3RF
eGNlcHRpb24oInRyYW5zLm9iamVjdFN0b3JlKCdiJykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24u
Tk9UX0ZPVU5EX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInRyYW5zLm9iamVj
dFN0b3JlKCd4JykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOwotICAg
IGRlYnVnKCIiKTsKLQotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2Fj
dGlvbihbJ2EnXSkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYScpIik7
Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ2InKSIsICJJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ3gnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5O
T1RfRk9VTkRfRVJSIik7Ci0gICAgZGVidWcoIiIpOwotCi0gICAgdHJhbnMgPSBldmFsQW5kTG9n
KCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnYiddKSIpOwotICAgIGV2YWxBbmRMb2coInRyYW5z
Lm9iamVjdFN0b3JlKCdiJykiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0cmFucy5v
YmplY3RTdG9yZSgnYScpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsK
LSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0cmFucy5vYmplY3RTdG9yZSgneCcpIiwgIklE
QkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKLSAgICBkZWJ1ZygiIik7Ci0KLSAg
ICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydhJywgJ2InXSki
KTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYScpIik7Ci0gICAgZXZhbEFu
ZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2InKSIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRp
b24oInRyYW5zLm9iamVjdFN0b3JlKCd4JykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZP
VU5EX0VSUiIpOwotICAgIGRlYnVnKCIiKTsKLQotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJh
bnMgPSBkYi50cmFuc2FjdGlvbihbJ2InLCAnYSddKSIpOwotICAgIGV2YWxBbmRMb2coInRyYW5z
Lm9iamVjdFN0b3JlKCdhJykiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgn
YicpIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ3gn
KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7Ci0gICAgZGVidWcoIiIp
OwotCi0gICAgZGVidWcoIlBhc3NpbmcgYSBzdHJpbmcgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IGlz
IGEgc2hvcnRjdXQgZm9yIGp1c3Qgb25lIG9iamVjdCBzdG9yZToiKTsKLSAgICB0cmFucyA9IGV2
YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ2EnKSIpOwotICAgIGV2YWxBbmRMb2co
InRyYW5zLm9iamVjdFN0b3JlKCdhJykiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0
cmFucy5vYmplY3RTdG9yZSgnYicpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9F
UlIiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0cmFucy5vYmplY3RTdG9yZSgneCcp
IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKLSAgICBkZWJ1ZygiIik7
Ci0KLSAgICBzaG91bGRUaHJvdygidHJhbnMgPSBkYi50cmFuc2FjdGlvbigpIik7Ci0gICAgZGVi
dWcoIiIpOwotCi0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oWyd4
J10pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKLSAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbihbJ3gnXSkiLCAiSURCRGF0YWJhc2VFeGNl
cHRpb24uTk9UX0ZPVU5EX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRy
YW5zYWN0aW9uKFsnYScsICd4J10pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9F
UlIiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbihbJ3gnLCAn
eCddKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7Ci0gICAgZXZhbEFu
ZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oWydhJywgJ3gnLCAnYiddKSIsICJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7Ci0gICAgZGVidWcoIiIpOwotCi0gICAg
ZGVidWcoIkV4Y2VwdGlvbiB0aHJvd24gd2hlbiBubyBzdG9yZXMgc3BlY2lmaWVkOiIpOwotICAg
IGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKFtdKSIsICJET01FeGNlcHRp
b24uSU5WQUxJRF9BQ0NFU1NfRVJSIik7Ci0gICAgZGVidWcoIiIpOwotCi0gICAgZGVidWcoInt9
IGNvZXJjZXMgdG8gYSBzdHJpbmcgLSBzbyBubyBtYXRjaCwgYnV0IG5vdCBhIHR5cGUgZXJyb3I6
Iik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oe30pIiwgIklE
QkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJkYi50cmFuc2FjdGlvbih7bW9kZTowfSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24u
Tk9UX0ZPVU5EX0VSUiIpOwotICAgIGRlYnVnKCIiKTsKLQotICAgIGRlYnVnKCJPdmVycmlkaW5n
IHRoZSBkZWZhdWx0IHN0cmluZyBjb2VyY2lvbiBtYWtlcyB0aGVzZSB3b3JrOiIpOwotICAgIGV2
YWxBbmRMb2coImRiLnRyYW5zYWN0aW9uKHt0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiAnYSc7
fX0pIik7Ci0gICAgZXZhbEFuZExvZygiZGIudHJhbnNhY3Rpb24oW3t0b1N0cmluZzpmdW5jdGlv
bigpe3JldHVybiAnYSc7fX1dKSIpOwotICAgIGRlYnVnKCIuLi4gYnV0IHlvdSBzdGlsbCBuZWVk
IHRvIHNwZWNpZnkgYSByZWFsIHN0b3JlOiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24o
ImRiLnRyYW5zYWN0aW9uKFt7dG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gJ3gnO319XSkiLCAi
SURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RF
eGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKFt7dG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gJ3gn
O319XSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOwotICAgIGRlYnVn
KCIiKTsKLQotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihb
J3N0b3JlJ10pIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPSBudWxsIik7Ci0gICAgdHJh
bnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIHRyYW5zLm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gYWZ0ZXJD
b21wbGV0ZTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9y
ZScpIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJzdG9yZSAhPSBudWxsIik7Ci0gICAgZXZhbEFuZExv
Zygic3RvcmUuZ2V0KCdzb21lX2tleScpIik7Ci19Ci0KLWZ1bmN0aW9uIGFmdGVyQ29tcGxldGUo
KQotewotICAgIGRlYnVnKCJ0cmFuc2FjdGlvbiBjb21wbGV0ZSwgZW5zdXJpbmcgbWV0aG9kcyBm
YWlsIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPSBudWxsIik7Ci0gICAgc2hvdWxkQmVU
cnVlKCJzdG9yZSAhPSBudWxsIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigidHJhbnMu
b2JqZWN0U3RvcmUoJ3N0b3JlJykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0FMTE9XRURf
RVJSIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuaW5kZXgoJ2luZGV4Jyki
LCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0FMTE9XRURfRVJSIik7Ci0KLSAgICBmaW5pc2hK
U1Rlc3QoKTsKLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvdHJhbnNhY3Rpb24tYW5kLW9iamVjdHN0b3JlLWNhbGxzLmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvdHJhbnNhY3Rpb24tYmFzaWNzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi90cmFuc2FjdGlvbi1iYXNpY3MuaHRtbAppbmRleCBmMWIzYjE2YTlhN2E0YzZjNjEzYjQ1
NGZmZTM4MzAyNWUyNDIwZjliLi5kNWE3ZDIzYmNlMTE1M2QzNzdlZDAyM2U5MTdmZDExYTBiNmFi
ZWI1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlv
bi1iYXNpY3MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2Fj
dGlvbi1iYXNpY3MuaHRtbApAQCAtMSwyOTQgKzEsMTAgQEAKLTxodG1sPg0KLTxoZWFkPg0KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+DQotPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0Pg0KLTwvaGVh
ZD4NCi08Ym9keT4NCi08c2NyaXB0Pg0KLQ0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiB0
cmFuc2FjdGlvbiBiYXNpY3MuIik7DQotDQotZnVuY3Rpb24gdGVzdCgpDQotew0KLSAgICByZW1v
dmVWZW5kb3JQcmVmaXhlcygpOw0KLQ0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhl
ZERCLm9wZW4oJ3RyYW5zYWN0aW9uLWJhc2ljcycpIik7DQotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gb3BlblN1Y2Nlc3M7DQotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOw0KLX0NCi0NCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpDQotew0KLSAgICBkZWJ1Zygi
b3BlblN1Y2Nlc3MoKToiKTsNCi0gICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdCIpOw0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRi
LnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7DQotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xl
YW5EYXRhYmFzZTsNCi0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7DQotfQ0KLQ0KLWZ1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQ0KLXsNCi0gICAgZGVsZXRlQWxs
T2JqZWN0U3RvcmVzKGRiLCBjaGVja01ldGFkYXRhRW1wdHkpOw0KLSAgICBldmVudC50YXJnZXQu
cmVzdWx0Lm9uY29tcGxldGUgPSB0ZXN0U2V0VmVyc2lvbkFib3J0MTsNCi19DQotDQotZnVuY3Rp
b24gdGVzdFNldFZlcnNpb25BYm9ydDEoKQ0KLXsNCi0gICAgY2hlY2tNZXRhZGF0YUVtcHR5KCk7
DQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gc3RhcnRTZXRWZXJzaW9uKCd2
ZXJzaW9uIGZhaWwnKSIpOw0KLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZFJlbW92ZUlEQk9i
amVjdHM7DQotfQ0KLQ0KLWZ1bmN0aW9uIGFkZFJlbW92ZUlEQk9iamVjdHMoKQ0KLXsNCi0gICAg
ZGVidWcoImFkZFJlbW92ZUlEQk9iamVjdHMoKToiKTsNCi0gICAgdmFyIHRyYW5zID0gZXZhbEFu
ZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7DQotICAgIHNob3VsZEJlVHJ1ZSgi
dHJhbnMgIT09IG51bGwiKTsNCi0gICAgdHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCB0
ZXN0U2V0VmVyc2lvbkFib3J0MiwgdHJ1ZSk7DQotICAgIHRyYW5zLm9uY29tcGxldGUgPSB1bmV4
cGVjdGVkQ29tcGxldGVDYWxsYmFjazsNCi0NCi0gICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygi
c3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVGYWlsJywgbnVsbCkiKTsNCi0gICAg
dmFyIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhG
YWlsJywgJ3gnKSIpOw0KLQ0KLSAgICBldmFsQW5kTG9nKCJkYi5kZWxldGVPYmplY3RTdG9yZSgn
c3RvcmVGYWlsJykiKTsNCi0gICAgZXZhbEFuZExvZygic3RvcmUuZGVsZXRlSW5kZXgoJ2luZGV4
RmFpbCcpIik7DQotDQotICAgIHRyYW5zLmFib3J0KCk7DQotfQ0KLQ0KLWZ1bmN0aW9uIHRlc3RT
ZXRWZXJzaW9uQWJvcnQyKCkNCi17DQotICAgIGRlYnVnKCIiKTsNCi0gICAgZGVidWcoInRlc3RT
ZXRWZXJzaW9uQWJvcnQyKCk6Iik7DQotICAgIGNoZWNrTWV0YWRhdGFFbXB0eSgpOw0KLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHN0YXJ0U2V0VmVyc2lvbigndmVyc2lvbiBm
YWlsJykiKTsNCi0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRSZW1vdmVBZGRJREJPYmplY3Rz
Ow0KLX0NCi0NCi1mdW5jdGlvbiBhZGRSZW1vdmVBZGRJREJPYmplY3RzKCkNCi17DQotICAgIGRl
YnVnKCJhZGRSZW1vdmVBZGRJREJPYmplY3RzKCk6Iik7DQotICAgIHZhciB0cmFucyA9IGV2YWxB
bmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOw0KLSAgICBzaG91bGRCZVRydWUo
InRyYW5zICE9PSBudWxsIik7DQotICAgIHRyYW5zLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywg
dGVzdFNldFZlcnNpb25BYm9ydDMsIGZhbHNlKTsNCi0gICAgdHJhbnMub25jb21wbGV0ZSA9IHVu
ZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOw0KLQ0KLSAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9n
KCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZUZhaWwnLCBudWxsKSIpOw0KLSAg
ICB2YXIgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRl
eEZhaWwnLCAneCcpIik7DQotDQotICAgIGV2YWxBbmRMb2coImRiLmRlbGV0ZU9iamVjdFN0b3Jl
KCdzdG9yZUZhaWwnKSIpOw0KLSAgICBldmFsQW5kTG9nKCJzdG9yZS5kZWxldGVJbmRleCgnaW5k
ZXhGYWlsJykiKTsNCi0NCi0gICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5j
cmVhdGVPYmplY3RTdG9yZSgnc3RvcmVGYWlsJywgbnVsbCkiKTsNCi0gICAgdmFyIGluZGV4ID0g
ZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhGYWlsJywgJ3gnKSIp
Ow0KLQ0KLSAgICB0cmFucy5hYm9ydCgpOw0KLX0NCi0NCi1mdW5jdGlvbiB0ZXN0U2V0VmVyc2lv
bkFib3J0MygpDQotew0KLSAgICBkZWJ1ZygiIik7DQotICAgIGRlYnVnKCJ0ZXN0U2V0VmVyc2lv
bkFib3J0MygpOiIpOw0KLSAgICBzaG91bGRCZUZhbHNlKCJldmVudC5jYW5jZWxhYmxlIik7DQot
ICAgIGNoZWNrTWV0YWRhdGFFbXB0eSgpOw0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVx
dWVzdCA9IHN0YXJ0U2V0VmVyc2lvbigndmVyc2lvbiBmYWlsJykiKTsNCi0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBhZGRJREJPYmplY3RzOw0KLX0NCi0NCi1mdW5jdGlvbiBhZGRJREJPYmplY3Rz
KCkNCi17DQotICAgIGRlYnVnKCJhZGRJREJPYmplY3RzKCk6Iik7DQotICAgIHNob3VsZEJlRmFs
c2UoImV2ZW50LmNhbmNlbGFibGUiKTsNCi0gICAgdmFyIHRyYW5zID0gZXZhbEFuZExvZygidHJh
bnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7DQotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09
IG51bGwiKTsNCi0gICAgdHJhbnMub25hYm9ydCA9IHRlc3RJbmFjdGl2ZUFib3J0ZWRUcmFuc2Fj
dGlvbjsNCi0gICAgdHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNr
Ow0KLQ0KLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ3N0b3JlRmFpbCcsIG51bGwpIik7DQotICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXgg
PSBzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhGYWlsJywgJ3gnKSIpOw0KLQ0KLSAgICB0cmFucy5h
Ym9ydCgpOw0KLX0NCi0NCi1mdW5jdGlvbiB0ZXN0SW5hY3RpdmVBYm9ydGVkVHJhbnNhY3Rpb24o
KQ0KLXsNCi0gICAgZGVidWcoIiIpOw0KLSAgICBkZWJ1ZygidGVzdEluYWN0aXZlQWJvcnRlZFRy
YW5zYWN0aW9uKCk6Iik7DQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4Lm9wZW5D
dXJzb3IoKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIi
KTsNCi0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXgub3BlbktleUN1cnNvcigpIiwg
IklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOw0KLSAgICBl
dmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJpbmRleC5nZXQoMCkiLCAiSURCRGF0YWJhc2VFeGNlcHRp
b24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7DQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRp
b24oImluZGV4LmdldEtleSgwKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9J
TkFDVElWRV9FUlIiKTsNCi0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXguY291bnQo
KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsNCi0N
Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KDAsIDApIiwgIklEQkRhdGFi
YXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOw0KLSAgICBldmFsQW5kRXhw
ZWN0RXhjZXB0aW9uKCJzdG9yZS5hZGQoMCwgMCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJB
TlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7DQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0
b3JlLmRlbGV0ZSgwKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElW
RV9FUlIiKTsNCi0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuY2xlYXIoKSIsICJJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsNCi0gICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuZ2V0KDApIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9u
LlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOw0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJzdG9yZS5vcGVuQ3Vyc29yKCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05f
SU5BQ1RJVkVfRVJSIik7DQotDQotICAgIHRlc3RTZXRWZXJzaW9uQWJvcnQ0KCk7DQotfQ0KLQ0K
LWZ1bmN0aW9uIHRlc3RTZXRWZXJzaW9uQWJvcnQ0KCkNCi17DQotICAgIGRlYnVnKCIiKTsNCi0g
ICAgZGVidWcoInRlc3RTZXRWZXJzaW9uQWJvcnQ0KCk6Iik7DQotICAgIGNoZWNrTWV0YWRhdGFF
bXB0eSgpOw0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHN0YXJ0U2V0VmVy
c2lvbigndmVyc2lvbiBmYWlsJykiKTsNCi0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRJREJP
YmplY3RzQW5kQ29tbWl0Ow0KLX0NCi0NCi1mdW5jdGlvbiBhZGRJREJPYmplY3RzQW5kQ29tbWl0
KCkNCi17DQotICAgIGRlYnVnKCJhZGRJREJPYmplY3RzQW5kQ29tbWl0KCk6Iik7DQotICAgIHZh
ciB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOw0KLSAg
ICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7DQotICAgIHRyYW5zLm9uYWJvcnQgPSB1
bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsNCi0NCi0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9y
ZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZUZhaWwnLCBudWxsKSIpOw0KLSAgICBpbmRl
eCA9IGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4RmFpbCcsICd4
JykiKTsNCi0NCi0gICAgdHJhbnMub25jb21wbGV0ZSA9IHRlc3RJbmFjdGl2ZUNvbXBsZXRlZFRy
YW5zYWN0aW9uOw0KLX0NCi0NCi1mdW5jdGlvbiB0ZXN0SW5hY3RpdmVDb21wbGV0ZWRUcmFuc2Fj
dGlvbigpDQotew0KLSAgICBkZWJ1ZygiIik7DQotICAgIGRlYnVnKCJ0ZXN0SW5hY3RpdmVDb21w
bGV0ZWRUcmFuc2FjdGlvbigpOiIpOw0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJpbmRl
eC5vcGVuQ3Vyc29yKCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJ
VkVfRVJSIik7DQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4Lm9wZW5LZXlDdXJz
b3IoKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsN
Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXguZ2V0KDApIiwgIklEQkRhdGFiYXNl
RXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOw0KLSAgICBldmFsQW5kRXhwZWN0
RXhjZXB0aW9uKCJpbmRleC5nZXRLZXkoMCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNB
Q1RJT05fSU5BQ1RJVkVfRVJSIik7DQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4
LmNvdW50KCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJS
Iik7DQotDQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLnB1dCgwLCAwKSIsICJJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsNCi0gICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuYWRkKDAsIDApIiwgIklEQkRhdGFiYXNlRXhjZXB0
aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOw0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJzdG9yZS5kZWxldGUoMCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05f
SU5BQ1RJVkVfRVJSIik7DQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmNsZWFy
KCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7DQot
ICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmdldCgwKSIsICJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsNCi0gICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigic3RvcmUub3BlbkN1cnNvcigpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5T
QUNUSU9OX0lOQUNUSVZFX0VSUiIpOw0KLQ0KLSAgICB0ZXN0U2V0VmVyc2lvbkFib3J0NSgpOw0K
LX0NCi0NCi1mdW5jdGlvbiB0ZXN0U2V0VmVyc2lvbkFib3J0NSgpDQotew0KLSAgICBkZWJ1Zygi
Iik7DQotICAgIGRlYnVnKCJ0ZXN0U2V0VmVyc2lvbkFib3J0NSgpOiIpOw0KLSAgICBjaGVja01l
dGFkYXRhRXhpc3RpbmdPYmplY3RTdG9yZSgpOw0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IHN0YXJ0U2V0VmVyc2lvbigndmVyc2lvbiBmYWlsJykiKTsNCi0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSByZW1vdmVJREJPYmplY3RzOw0KLX0NCi0NCi1mdW5jdGlvbiByZW1vdmVJ
REJPYmplY3RzKCkNCi17DQotICAgIGRlYnVnKCJyZW1vdmVJREJPYmplY3RzKCk6Iik7DQotICAg
IHZhciB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOw0K
LSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7DQotICAgIHRyYW5zLm9uYWJvcnQg
PSB0ZXN0U2V0VmVyc2lvbkFib3J0NjsNCi0gICAgdHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0
ZWRDb21wbGV0ZUNhbGxiYWNrOw0KLQ0KLSAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9y
ZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZUZhaWwnKSIpOw0KLSAgICBldmFsQW5kTG9nKCJz
dG9yZS5kZWxldGVJbmRleCgnaW5kZXhGYWlsJykiKTsNCi0gICAgZXZhbEFuZExvZygiZGIuZGVs
ZXRlT2JqZWN0U3RvcmUoJ3N0b3JlRmFpbCcpIik7DQotDQotICAgIHRyYW5zLmFib3J0KCk7DQot
fQ0KLQ0KLWZ1bmN0aW9uIHRlc3RTZXRWZXJzaW9uQWJvcnQ2KCkNCi17DQotICAgIGRlYnVnKCIi
KTsNCi0gICAgZGVidWcoInRlc3RTZXRWZXJzaW9uQWJvcnQ2KCk6Iik7DQotICAgIGNoZWNrTWV0
YWRhdGFFeGlzdGluZ09iamVjdFN0b3JlKCk7DQotICAgIHNldE5ld1ZlcnNpb24oKTsNCi19DQot
DQotZnVuY3Rpb24gc3RhcnRTZXRWZXJzaW9uKHZlcnNpb25OYW1lKQ0KLXsNCi0gICAgcmVxdWVz
dCA9IGRiLnNldFZlcnNpb24odmVyc2lvbk5hbWUpOw0KLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsNCi0gICAgcmV0dXJuIHJlcXVlc3Q7DQotfQ0KLQ0KLWZ1
bmN0aW9uIGNoZWNrTWV0YWRhdGFFbXB0eSgpDQotew0KLSAgICBzaG91bGRCZSgic2VsZi5kYi5v
YmplY3RTdG9yZU5hbWVzIiwgIltdIik7DQotICAgIHNob3VsZEJlKCJzZWxmLmRiLm9iamVjdFN0
b3JlTmFtZXMubGVuZ3RoIiwgIjAiKTsNCi0gICAgc2hvdWxkQmUoInNlbGYuZGIub2JqZWN0U3Rv
cmVOYW1lcy5jb250YWlucygnc3RvcmVGYWlsJykiLCAiZmFsc2UiKTsNCi19DQotDQotZnVuY3Rp
b24gY2hlY2tNZXRhZGF0YUV4aXN0aW5nT2JqZWN0U3RvcmUoKQ0KLXsNCi0gICAgc2hvdWxkQmUo
ImRiLm9iamVjdFN0b3JlTmFtZXMiLCAiWydzdG9yZUZhaWwnXSIpOw0KLSAgICBzaG91bGRCZSgi
ZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMSIpOw0KLSAgICBzaG91bGRCZSgiZGIub2Jq
ZWN0U3RvcmVOYW1lcy5jb250YWlucygnc3RvcmVGYWlsJykiLCAidHJ1ZSIpOw0KLX0NCi0NCi1m
dW5jdGlvbiBzZXROZXdWZXJzaW9uKCkNCi17DQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJk
Yi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7DQotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
c2V0VmVyc2lvblN1Y2Nlc3M7DQotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOw0KLX0NCi0NCi1mdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpDQotew0KLSAg
ICBkZWJ1ZygiIik7DQotICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOw0KLSAgICBz
ZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7DQot
ICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsNCi0gICAgdHJhbnMub25hYm9ydCA9
IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOw0KLSAgICB0cmFucy5hZGRFdmVudExpc3RlbmVyKCdj
b21wbGV0ZScsIGNvbXBsZXRlQ2FsbGJhY2ssIGZhbHNlKTsNCi0gICAgc2VsZi5jb21wbGV0ZUV2
ZW50RmlyZWQgPSBmYWxzZTsNCi0NCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsNCi0N
Ci0gICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwp
Iik7DQotfQ0KLQ0KLWZ1bmN0aW9uIGNvbXBsZXRlQ2FsbGJhY2soKQ0KLXsNCi0gICAgc2hvdWxk
QmVGYWxzZSgiZXZlbnQuY2FuY2VsYWJsZSIpOw0KLSAgICB0ZXN0UGFzc2VkKCJjb21wbGV0ZSBl
dmVudCBmaXJlZCIpOw0KLSAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coImRiLnRyYW5zYWN0
aW9uKFsnc3RvcmVOYW1lJ10pIik7DQotICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSBhYm9ydENh
bGxiYWNrOw0KLSAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9u
Lm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOw0KLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
InN0b3JlLm5hbWUiLCAic3RvcmVOYW1lIik7DQotfQ0KLQ0KLWZ1bmN0aW9uIGFib3J0Q2FsbGJh
Y2soKQ0KLXsNCi0gICAgdGVzdFBhc3NlZCgiYWJvcnQgZXZlbnQgZmlyZWQiKTsNCi0gICAgdGVz
dERPTVN0cmluZ0xpc3QoKTsNCi19DQotDQotZnVuY3Rpb24gdGVzdERPTVN0cmluZ0xpc3QoKQ0K
LXsNCi0gICAgZGVidWcoIiIpOw0KLSAgICBkZWJ1ZygiVmVyaWZ5aW5nIERPTVN0cmluZ0xpc3Qg
d29ya3MgYXMgYXJndW1lbnQgZm9yIElEQkRhdGFiYXNlLnRyYW5zYWN0aW9uKCkiKTsNCi0gICAg
ZGVidWcoImRiLm9iamVjdFN0b3JlTmFtZXMgaXMgIiArIGRiLm9iamVjdFN0b3JlTmFtZXMpOw0K
LSAgICBkZWJ1ZygiLi4uIHdoaWNoIGNvbnRhaW5zOiAiICsgSlNPTi5zdHJpbmdpZnkoQXJyYXku
cHJvdG90eXBlLnNsaWNlLmNhbGwoZGIub2JqZWN0U3RvcmVOYW1lcykpKTsNCi0gICAgZXZhbEFu
ZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihkYi5vYmplY3RTdG9yZU5hbWVzKSIp
Ow0KLSAgICB0ZXN0UGFzc2VkKCJubyBleGNlcHRpb24gdGhyb3duIik7DQotICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGg7ICsraSkgew0KLSAgICAgIHNo
b3VsZEJlVHJ1ZSgidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoIiArIEpTT04uc3RyaW5naWZ5KGRi
Lm9iamVjdFN0b3JlTmFtZXNbaV0pICsgIikgIT0gbnVsbCIpOw0KLSAgICB9DQotICAgIHRlc3RQ
YXNzZWQoImFsbCBzdG9yZXMgcHJlc2VudCBpbiB0cmFuc2FjdGlvbiIpOw0KLSAgICB0ZXN0SW52
YWxpZE1vZGUoKTsNCi19DQotDQotZnVuY3Rpb24gdGVzdEludmFsaWRNb2RlKCkNCi17DQotICAg
IGRlYnVnKCIiKTsNCi0gICAgZGVidWcoIlZlcmlmeSB0aGF0IHNwZWNpZnlpbmcgYW4gaW52YWxp
ZCBtb2RlIHJhaXNlcyBhbiBleGNlcHRpb24iKTsNCi0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlv
bigiZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgMykiLCAiSURCRGF0YWJhc2VFeGNlcHRp
b24uTk9OX1RSQU5TSUVOVF9FUlIiKTsNCi0gICAgZmluaXNoSlNUZXN0KCk7DQotfQ0KLQ0KLXRl
c3QoKTsNCi0NCi08L3NjcmlwdD4NCi08c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4NCi08L2JvZHk+DQotPC9odG1sPg0KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3RyYW5zYWN0aW9u
LWJhc2ljcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNyYXNoLW9uLWFi
b3J0Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jcmFz
aC1vbi1hYm9ydC5odG1sCmluZGV4IGQ3OTM3MjFkNzM2MmJmZDc5YTI1NTM2YTMxMmE2MzViY2Vi
MWUyOTIuLjExNTlkMjk0MjA3Y2ViNGU5NmUzNTBjMDI3ZGJkMWNhOWFkNTUyNmEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNyYXNoLW9uLWFi
b3J0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24t
Y3Jhc2gtb24tYWJvcnQuaHRtbApAQCAtNCw0NSArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRl
c2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiB0cmFuc2FjdGlvbiBkb2VzIG5vdCBjcmFzaCBvbiBh
Ym9ydC4iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMo
KTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndHJhbnNhY3Rp
b24tY3Jhc2gtb24tYWJvcnQnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nl
c3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0K
LWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsK
LSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCcxLjAnKSIpOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb25TdWNjZXNzKCkK
LXsKLSAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJykiKTsKLSAgICBl
dmVudC50YXJnZXQucmVzdWx0Lm9uY29tcGxldGUgPSBzZXRWZXJzaW9uQ29tcGxldGU7Ci19Ci0K
LWZ1bmN0aW9uIHNldFZlcnNpb25Db21wbGV0ZSgpCi17Ci0gICAgZXZhbEFuZExvZygiZGIudHJh
bnNhY3Rpb24oJ2ZvbycpIik7Ci0gICAgZXZhbEFuZExvZygic2VsZi5nYygpIik7Ci0gICAgZmlu
aXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvdHJhbnNhY3Rpb24tY3Jhc2gtb24tYWJvcnQuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi90cmFuc2FjdGlvbi1ldmVudC1wcm9wYWdhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tZXZlbnQtcHJvcGFnYXRpb24uaHRtbAppbmRleCA4
OTUyOGE4YzE2OWU0NDM5MmU5NDFhMmI5ODQ1YTdkN2I1YmU0NTk3Li5mMDNlYTMxNzJhZDJmN2I3
ODIzMDNiYzM2ZjU4YWQ1MWZmYmVjYzM0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi90cmFuc2FjdGlvbi1ldmVudC1wcm9wYWdhdGlvbi5odG1sCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWV2ZW50LXByb3BhZ2F0aW9uLmh0
bWwKQEAgLTQsMTUwICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48
L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3Qg
ZXZlbnQgcHJvcG9nYXRpb24gb24gSURCVHJhbnNhY3Rpb24uIik7Ci0KLWZ1bmN0aW9uIHRlc3Qo
KQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImluZGV4ZWREQi5vcGVuKCd0cmFuc2FjdGlvbi1ldmVudC1wcm9wYWdhdGlvbicpIik7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uKCkKLXsK
LSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4aXN0aW5nOwotICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBkZWxldGVFeGlzdGlu
ZygpCi17Ci0gICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKLSAgICB0cmFu
cy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgZXZhbEFuZExvZygidHJh
bnMub25jb21wbGV0ZSA9IHN0YXJ0VGVzdCIpOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVz
KGRiKTsKLQotICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RT
dG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3Rv
cmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzdGFydFRlc3Qo
KQotewotICAgIGRlYnVnKCJWZXJpZmluZyBhYm9ydCIpOwotICAgIHRyYW5zID0gZXZhbEFuZExv
ZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5S
RUFEX1dSSVRFKSIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSBhYm9ydEZpcmVk
Q2FsbGJhY2siKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3Rl
ZEFib3J0Q2FsbGJhY2siKTsKLSAgICBldmFsQW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdh
Ym9ydCcsIGRiQWJvcnRDYXB0dXJlQ2FsbGJhY2ssIHRydWUpIik7Ci0gICAgZXZhbEFuZExvZygi
ZGIuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBkYkFib3J0QnViYmxlQ2FsbGJhY2ssIGZhbHNl
KSIpOwotICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50TGlzdGVuZXIoJ2NvbXBsZXRlJywgdW5l
eHBlY3RlZENvbXBsZXRlQ2FsbGJhY2ssIHRydWUpIik7Ci0gICAgZXZhbEFuZExvZygiZGIuYWRk
RXZlbnRMaXN0ZW5lcignY29tcGxldGUnLCB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjaywgZmFs
c2UpIik7Ci0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3Jl
KCdzdG9yZU5hbWUnKSIpOwotICAgIGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywg
eTogJ3p6eid9LCAna2V5JykiKTsKLSAgICBkYkNhcHR1cmVGaXJlZCA9IGZhbHNlOwotICAgIGFi
b3J0RmlyZWQgPSBmYWxzZTsKLSAgICBkYkJ1YmJsZUZpcmVkMSA9IGZhbHNlOwotfQotCi1mdW5j
dGlvbiBkYkFib3J0Q2FwdHVyZUNhbGxiYWNrKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVi
dWcoIkluIElEQkRhdGFiYXNlIGFib3J0IGNhcHR1cmUiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJk
YkNhcHR1cmVGaXJlZCIpOwotICAgIHNob3VsZEJlRmFsc2UoImFib3J0RmlyZWQiKTsKLSAgICBz
aG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVkMSIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJn
ZXQiLCAidHJhbnMiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQuY3VycmVudFRhcmdldCIsICJkYiIp
OwotICAgIGRiQ2FwdHVyZUZpcmVkID0gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gYWJvcnRGaXJlZENh
bGxiYWNrKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIkluIGFib3J0IGhhbmRsZXIi
KTsKLSAgICBzaG91bGRCZVRydWUoImRiQ2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxz
ZSgiYWJvcnRGaXJlZCIpOwotICAgIHNob3VsZEJlRmFsc2UoImRiQnViYmxlRmlyZWQxIik7Ci0g
ICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldCIsICJ0cmFucyIpOwotICAgIHNob3VsZEJlKCJldmVu
dC5jdXJyZW50VGFyZ2V0IiwgInRyYW5zIik7Ci0gICAgYWJvcnRGaXJlZCA9IHRydWU7Ci19Ci0K
LWZ1bmN0aW9uIGRiQWJvcnRCdWJibGVDYWxsYmFjaygpCi17Ci0gICAgZGVidWcoIiIpOwotICAg
IGRlYnVnKCJJbiBJREJEYXRhYmFzZSBlcnJvciBidWJibGUiKTsKLSAgICBzaG91bGRCZVRydWUo
ImRiQ2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJhYm9ydEZpcmVkIik7Ci0gICAg
c2hvdWxkQmVGYWxzZSgiZGJCdWJibGVGaXJlZDEiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFy
Z2V0IiwgInRyYW5zIik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LmN1cnJlbnRUYXJnZXQiLCAiZGIi
KTsKLSAgICBkYkJ1YmJsZUZpcmVkMSA9IHRydWU7Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVn
KCJWZXJpZmluZyBzdWNjZXNzLiIpOwotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBk
Yi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIp
OwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSBjb21wbGV0ZUZpcmVkQ2FsbGJh
Y2siKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2Fs
bGJhY2siKTsKLSAgICBldmFsQW5kTG9nKCJkYi5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcs
IGRiQWJvcnRDYXB0dXJlQ2FsbGJhY2ssIHRydWUpIik7Ci0gICAgZXZhbEFuZExvZygiZGIucmVt
b3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBkYkFib3J0QnViYmxlQ2FsbGJhY2ssIGZhbHNlKSIp
OwotICAgIGV2YWxBbmRMb2coImRiLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NvbXBsZXRlJywgdW5l
eHBlY3RlZENvbXBsZXRlQ2FsbGJhY2ssIHRydWUpIik7Ci0gICAgZXZhbEFuZExvZygiZGIucmVt
b3ZlRXZlbnRMaXN0ZW5lcignY29tcGxldGUnLCB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjaywg
ZmFsc2UpIik7Ci0gICAgZXZhbEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignY29tcGxldGUn
LCBkYkNvbXBsZXRlQ2FwdHVyZUNhbGxiYWNrLCB0cnVlKSIpOwotICAgIGV2YWxBbmRMb2coImRi
LmFkZEV2ZW50TGlzdGVuZXIoJ2NvbXBsZXRlJywgZGJDb21wbGV0ZUJ1YmJsZUNhbGxiYWNrLCBm
YWxzZSkiKTsKLSAgICBldmFsQW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIHVu
ZXhwZWN0ZWRBYm9ydENhbGxiYWNrLCB0cnVlKSIpOwotICAgIGV2YWxBbmRMb2coImRiLmFkZEV2
ZW50TGlzdGVuZXIoJ2Fib3J0JywgdW5leHBlY3RlZEFib3J0Q2FsbGJhY2ssIGZhbHNlKSIpOwot
ICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVO
YW1lJykiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enon
fSwgJ2tleTInKSIpOwotICAgIGRiQ2FwdHVyZUZpcmVkID0gZmFsc2U7Ci0gICAgY29tcGxldGVG
aXJlZCA9IGZhbHNlOwotICAgIGRiQnViYmxlRmlyZWQyID0gZmFsc2U7Ci19Ci0KLWZ1bmN0aW9u
IGRiQ29tcGxldGVDYXB0dXJlQ2FsbGJhY2soKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1
ZygiSW4gSURCRGF0YWJhc2UgY29tcGxldGUgY2FwdHVyZSIpOwotICAgIHNob3VsZEJlRmFsc2Uo
ImRiQ2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiY29tcGxldGVGaXJlZCIpOwot
ICAgIHNob3VsZEJlRmFsc2UoImRiQnViYmxlRmlyZWQyIik7Ci0gICAgc2hvdWxkQmUoImV2ZW50
LnRhcmdldCIsICJ0cmFucyIpOwotICAgIHNob3VsZEJlKCJldmVudC5jdXJyZW50VGFyZ2V0Iiwg
ImRiIik7Ci0gICAgZGJDYXB0dXJlRmlyZWQgPSB0cnVlOwotfQotCi1mdW5jdGlvbiBjb21wbGV0
ZUZpcmVkQ2FsbGJhY2soKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiSW4gSURCUmVx
dWVzdCBoYW5kbGVyIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJkYkNhcHR1cmVGaXJlZCIpOwotICAg
IHNob3VsZEJlRmFsc2UoImNvbXBsZXRlRmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJkYkJ1
YmJsZUZpcmVkMiIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAidHJhbnMiKTsKLSAg
ICBzaG91bGRCZSgiZXZlbnQuY3VycmVudFRhcmdldCIsICJ0cmFucyIpOwotICAgIGNvbXBsZXRl
RmlyZWQgPSB0cnVlOwotICAgIGRlYnVnKCIiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQot
ZnVuY3Rpb24gZGJDb21wbGV0ZUJ1YmJsZUNhbGxiYWNrKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0g
ICAgZGVidWcoIkluIElEQkRhdGFiYXNlIGNvbXBsZXRlIGJ1YmJsZSIpOwotICAgIHRlc3RGYWls
ZWQoIkNvbXBsZXRlIGJ1YmJsZSBjYWxsYmFjayBzaG91bGQgTk9UIGZpcmUiKTsKLSAgICBkYkJ1
YmJsZUZpcmVkMiA9IHRydWU7Ci19Ci0KLXRlc3QoKTsKLQotCi08L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvdHJhbnNhY3Rpb24tZXZlbnQtcHJvcGFnYXRpb24uanMiPjwvc2NyaXB0
PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1yZWFkLW9ubHkuaHRtbCBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXJlYWQtb25seS5odG1sCmluZGV4IDQ5NWNiYzFj
MmI0Yjc0YzljMzUyNTlhZDNhYTM3M2JlODMyMTAzZTkuLmE5MGNjN2ExNjZjY2FhNzQ0OGZkNTNk
MGRiNGY2MTQ0ZTJmOGQ2MDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3RyYW5zYWN0aW9uLXJlYWQtb25seS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3RyYW5zYWN0aW9uLXJlYWQtb25seS5odG1sCkBAIC0xLDY3ICsxLDEwIEBACi08
aHRtbD4NCi08aGVhZD4NCi08c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0Pg0KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpz
Ij48L3NjcmlwdD4NCi08L2hlYWQ+DQotPGJvZHk+DQotPHNjcmlwdD4NCi0NCi1kZXNjcmlwdGlv
bigiVGVzdCByZWFkLW9ubHkgdHJhbnNhY3Rpb25zIGluIEluZGV4ZWREQi4iKTsNCi0NCi1mdW5j
dGlvbiB0ZXN0KCkNCi17DQotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7DQotDQotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndHJhbnNhY3Rpb24tcmVhZC1vbmx5
JykiKTsNCi0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsNCi0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQotfQ0KLQ0KLWZ1bmN0aW9uIG9w
ZW5TdWNjZXNzKCkNCi17DQotICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOw0KLSAgICBzZWxm
LmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7DQotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXN1bHQgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOw0K
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7DQotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOw0KLX0NCi0NCi1mdW5jdGlvbiBjbGVhbkRh
dGFiYXNlKCkNCi17DQotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7DQotDQotICAgIGV2
ZW50LnRhcmdldC5yZXN1bHQub25jb21wbGV0ZSA9IHNldFZlcnNpb25Eb25lOw0KLSAgICBldmVu
dC50YXJnZXQucmVzdWx0Lm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsNCi0gICAg
c3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScp
Iik7DQotICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgneCcsICd5JykiKTsNCi19DQotDQotZnVu
Y3Rpb24gc2V0VmVyc2lvbkRvbmUoKQ0KLXsNCi0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFu
cyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScpIik7DQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRp
b24oInRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpLnB1dCgnYScsICdiJykiLCAiSURCRGF0YWJh
c2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUiIpOw0KLQ0KLSAgICB0cmFucyA9IGV2YWxBbmRMb2co
InRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJykiKTsNCi0gICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykuZGVsZXRlKCd4JykiLCAiSURCRGF0
YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUiIpOw0KLQ0KLSAgICB0cmFucyA9IGV2YWxBbmRM
b2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJykiKTsNCi0gICAgY3VyID0gZXZhbEFu
ZExvZygiY3VyID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykub3BlbkN1cnNvcigpIik7DQot
ICAgIGN1ci5vbnN1Y2Nlc3MgPSBnb3RDdXJzb3I7DQotICAgIGN1ci5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7DQotfQ0KLQ0KLWZ1bmN0aW9uIGdvdEN1cnNvcigpDQotew0KLSAg
ICBzaG91bGRCZUZhbHNlKCIhZXZlbnQudGFyZ2V0LnJlc3VsdCIpOw0KLSAgICBldmFsQW5kRXhw
ZWN0RXhjZXB0aW9uKCJldmVudC50YXJnZXQucmVzdWx0LmRlbGV0ZSgpIiwgIklEQkRhdGFiYXNl
RXhjZXB0aW9uLlJFQURfT05MWV9FUlIiKTsNCi0NCi0gICAgZmluaXNoSlNUZXN0KCk7DQotfQ0K
LQ0KLQ0KLXRlc3QoKTsNCi0NCi08L3NjcmlwdD4NCi08c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4NCi08L2JvZHk+DQotPC9odG1s
Pg0KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Ry
YW5zYWN0aW9uLXJlYWQtb25seS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9u
LXJvbGxiYWNrLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlv
bi1yb2xsYmFjay5odG1sCmluZGV4IDhhMjczODkwNDczOWNhNWUxMjY0NmQ2NTBiMTVjMWU5NmEz
ZDBjNzUuLjdkYmQ4MDRhYzY1OTRlMjZkZTQzZjM1NzJiMzkxYjJmMzkwYjFiNzQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXJvbGxiYWNrLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tcm9sbGJh
Y2suaHRtbApAQCAtNCw5NyArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5q
cyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJU
ZXN0IEluZGV4ZWREQiB0cmFuc2FjdGlvbiByb2xsYmFjay4iKTsKLQotZnVuY3Rpb24gdGVzdCgp
Ci17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJpbmRleGVkREIub3BlbigndHJhbnNhY3Rpb24tcm9sbGJhY2snKSIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBk
ZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKLSAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBl
dmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
Y2xlYW5EYXRhYmFzZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLX0KLQotZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCi17Ci0gICAgZGVidWcoImNsZWFu
RGF0YWJhc2UoKToiKTsKLSAgICBzZWxmLnRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNh
Y3Rpb24gPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBz
ZXRWZXJzaW9uQ29tcGxldGU7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotICAg
IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdteU9iamVjdFN0b3JlJykiKTsKLSAg
ICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMSIpOwotfQotCi1mdW5j
dGlvbiBzZXRWZXJzaW9uQ29tcGxldGUoKQotewotICAgIGRlYnVnKCJzZXRWZXJzaW9uQ29tcGxl
dGUoKToiKTsKLQotICAgIHNlbGYudHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlv
biA9IGRiLnRyYW5zYWN0aW9uKFsnbXlPYmplY3RTdG9yZSddLCBJREJUcmFuc2FjdGlvbi5SRUFE
X1dSSVRFKSIpOwotICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSBhYm9ydENhbGxiYWNrOwotICAg
IHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjazsKLQot
ICAgIHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0
b3JlKCdteU9iamVjdFN0b3JlJykiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUu
YWRkKCdyb2xsYmFja1ZhbHVlJywgJ3JvbGxiYWNrS2V5MTIzJykiKTsKLSAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGFkZFN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGFkZFN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJh
ZGRTdWNjZXNzKCk6Iik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAiJ3Jv
bGxiYWNrS2V5MTIzJyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLm9wZW5D
dXJzb3IoKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbkN1cnNvclN1Y2Nlc3M7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0
aW9uIG9wZW5DdXJzb3JTdWNjZXNzKCkKLXsKLSAgICBkZWJ1Zygib3BlbkN1cnNvclN1Y2Nlc3Mo
KToiKTsKLSAgICBzZWxmLmN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKLQotICAgIHRyYW5zYWN0aW9uLmFib3J0KCk7Ci19Ci0KLWZ1bmN0aW9uIGFi
b3J0Q2FsbGJhY2soKQotewotICAgIGRlYnVnKCJhYm9ydENhbGxiYWNrKCk6Iik7Ci0gICAgZGVi
dWcoJ1RyYW5zYWN0aW9uIHdhcyBhYm9ydGVkLicpOwotCi0gICAgc2VsZi50cmFuc2FjdGlvbiA9
IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydteU9iamVjdFN0b3Jl
J10sIElEQlRyYW5zYWN0aW9uLlJFQUQpIik7Ci0gICAgc2VsZi5zdG9yZSA9IGV2YWxBbmRMb2co
InN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ215T2JqZWN0U3RvcmUnKSIpOwotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5nZXQoJ3JvbGxiYWNrS2V5MTIzJykiKTsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGdldFN1Y2Nlc3M7Ci19Ci0KLWZ1bmN0aW9uIGdldFN1Y2Nlc3MoKQotewot
ICAgIGRlYnVnKCJnZXRTdWNjZXNzKCk6Iik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5y
ZXN1bHQiLCAidW5kZWZpbmVkIik7Ci0KLSAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgIidy
b2xsYmFja1ZhbHVlJyIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQot
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3RyYW5zYWN0aW9uLXJvbGxiYWNrLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tc3RvcmVOYW1lcy1yZXF1aXJlZC5o
dG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tc3RvcmVOYW1l
cy1yZXF1aXJlZC5odG1sCmluZGV4IGU3M2U4NjkyOGVmMThjMmM0OTYwNmRlYjZmOTk1ODUwYmRk
YmQ4ZjQuLmIyYWNjYzM3NjZmYWRmYzNkM2IyMTg3MjAyMmY0OTgxOGVlODc4YmQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXN0b3JlTmFtZXMt
cmVxdWlyZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2Fj
dGlvbi1zdG9yZU5hbWVzLXJlcXVpcmVkLmh0bWwKQEAgLTEsNDYgKzEsMTAgQEAKLTwhRE9DVFlQ
RSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3No
YXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0
aW9uKCJUZXN0IEluZGV4ZWREQjogdHJhbnNhY3Rpb24gc3RvcmVOYW1lcyByZXF1aXJlZCBhcmd1
bWVudHMiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMo
KTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9u
ID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVk
REIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9w
ZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJk
YiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBj
cmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVj
dFN0b3JlKCkKLXsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgc2hvdWxk
VGhyb3coImRiLnRyYW5zYWN0aW9uKCk7Iik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQot
dGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdHJhbnNhY3Rpb24t
c3RvcmVOYW1lcy1yZXF1aXJlZC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3R3by12ZXJzaW9u
LWNoYW5nZXMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3R3by12ZXJzaW9u
LWNoYW5nZXMuaHRtbAppbmRleCA5YTFmZmFmMWFlYTg0NDI0ZWUxYTRhOThlMzAzMzczNjMwOWJh
NjMwLi5jNTY5MDlhNGY0YjM5MTliYWI3NGQxNjQwNWU4OGVjN2NkMjZjNzMzIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90d28tdmVyc2lvbi1jaGFuZ2VzLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHdvLXZlcnNpb24tY2hhbmdlcy5o
dG1sCkBAIC00LDExNCArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+
PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0
IGJlaGF2aW9yIHdoZW4gdGhlIHNhbWUgY29ubmVjdGlvbiBjYWxscyBzZXRWZXJzaW9uIHR3aWNl
Iik7Ci0KLQotZnVuY3Rpb24gdGVzdCgpIHsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwot
Ci0gICAgc2hvdWxkQmVGYWxzZSgiaW5kZXhlZERCID09IG51bGwiKTsKLSAgICBzaG91bGRCZUZh
bHNlKCJJREJUcmFuc2FjdGlvbiA9PSBudWxsIik7Ci0gICAgb3BlbkRCQ29ubmVjdGlvbigpOwot
fQotCi1mdW5jdGlvbiBvcGVuREJDb25uZWN0aW9uKCkKLXsKLSAgICBldmFsQW5kTG9nKCJzZWxm
LnN0YXRlID0gJ3N0YXJ0aW5nJyIpOwotICAgIHZhciByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5k
ZXhlZERCLm9wZW4oJ3R3by12ZXJzaW9ucy1vbmUtY29ubmVjdGlvbicpIik7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIHNl
bGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBldmFs
QW5kTG9nKCJzZWxmLnN0YXRlID0gMCIpOwotCi0gICAgdmFyIHZlcnNpb25DaGFuZ2VSZXF1ZXN0
MSA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7Ci0gICAgdmVyc2lv
bkNoYW5nZVJlcXVlc3QxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB2
ZXJzaW9uQ2hhbmdlUmVxdWVzdDEub25zdWNjZXNzID0gaW5TZXRWZXJzaW9uMTsKLQotICAgIC8v
IGFuZCBjb25jdXJyZW50bHkuLi4KLQotICAgIHZhciB2ZXJzaW9uQ2hhbmdlUmVxdWVzdDIgPSBl
dmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDInKSIpOwotICAgIHZlcnNpb25DaGFu
Z2VSZXF1ZXN0Mi5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgdmVyc2lv
bkNoYW5nZVJlcXVlc3QyLm9uc3VjY2VzcyA9IGluU2V0VmVyc2lvbjI7Ci19Ci0KLWZ1bmN0aW9u
IGluU2V0VmVyc2lvbjEoKQotewotICAgIGRlYnVnKCJzZXRWZXJzaW9uKCkgIzEgY2FsbGJhY2si
KTsKLSAgICB0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Ci0gICAgZXZhbEFuZExvZygic2Vs
Zi5zdG9yZTEgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgndGVzdC1zdG9yZTEnKSIpOwotICAgIHNo
b3VsZEJlKCIrK3NlbGYuc3RhdGUiLCAiMSIpOwotICAgIHZhciByZXEgPSBldmFsQW5kTG9nKCJz
ZWxmLnN0b3JlMS5wdXQoJ2FhYScsIDExMSkiKTsKLSAgICByZXEub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZSkgewotICAg
ICAgICBzaG91bGRCZSgiKytzZWxmLnN0YXRlIiwgIjIiKTsKLSAgICAgICAgaGFsZndheURvbmUo
KTsKLSAgICB9OwotfQotCi1mdW5jdGlvbiBpblNldFZlcnNpb24yKCkKLXsKLSAgICBkZWJ1Zygi
c2V0VmVyc2lvbigpICMyIGNhbGxiYWNrIik7Ci0gICAgdHJhbnMgPSBldmVudC50YXJnZXQucmVz
dWx0OwotICAgIHNob3VsZEJlKCIrK3NlbGYuc3RhdGUiLCAiNCIpOwotICAgIGV2YWxBbmRMb2co
InNlbGYuc3RvcmUyID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Rlc3Qtc3RvcmUyJykiKTsKLQot
Ci0gICAgdmFyIHJlcSA9IGV2YWxBbmRMb2coInNlbGYuc3RvcmUyLnB1dCgnYmJiJywgMjIyKSIp
OwotICAgIHJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxLm9u
c3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7Ci0gICAgICAgIHNob3VsZEJlKCIrK3NlbGYuc3RhdGUi
LCAiNSIpOwotICAgICAgICBoYWxmd2F5RG9uZSgpOwotICAgIH07Ci19Ci0KLXZhciBjb3VudGVy
ID0gMDsKLWZ1bmN0aW9uIGhhbGZ3YXlEb25lKCkgCi17Ci0gICAgY291bnRlciArPSAxOwotICAg
IGlmIChjb3VudGVyIDwgMikgewotICAgICAgICBzaG91bGRCZSgiKytzZWxmLnN0YXRlIiwgIjMi
KTsKLSAgICAgICAgZGVidWcoImhhbGZ3YXkgdGhlcmUuLi4iICk7Ci0gICAgfSBlbHNlIHsKLSAg
ICAgICAgc2hvdWxkQmUoIisrc2VsZi5zdGF0ZSIsICI2Iik7Ci0gICAgICAgIGNoZWNrUmVzdWx0
cygpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gY2hlY2tSZXN1bHRzKCkgewotICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygic2VsZi5kYi52ZXJzaW9uIiwgInZlcnNpb24gMiIpOwotICAgIHRyYW5z
Lm9uY29tcGxldGUgPSBzZXRWZXJzaW9uQ29tcGxldGU7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNp
b25Db21wbGV0ZSgpCi17Ci0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJzZWxmLnRyYW5zID0gZGIu
dHJhbnNhY3Rpb24oWyd0ZXN0LXN0b3JlMScsICd0ZXN0LXN0b3JlMiddKSIpOwotICAgIHN0b3Jl
ID0gZXZhbEFuZExvZygic2VsZi5zdG9yZSA9IHNlbGYudHJhbnMub2JqZWN0U3RvcmUoJ3Rlc3Qt
c3RvcmUxJykiKTsKLSAgICByZXEgPSBldmFsQW5kTG9nKCJzZWxmLnJlcSA9IHNlbGYuc3RvcmUu
Z2V0KDExMSkiKTsKLSAgICByZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
ICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZSkgewotICAgICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAiYWFhIik7Ci0KLSAgICAgICAgc3RvcmUg
PSBldmFsQW5kTG9nKCJzZWxmLnN0b3JlID0gc2VsZi50cmFucy5vYmplY3RTdG9yZSgndGVzdC1z
dG9yZTInKSIpOwotICAgICAgICByZXEgPSBldmFsQW5kTG9nKCJzZWxmLnJlcSA9IHNlbGYuc3Rv
cmUuZ2V0KDIyMikiKTsKLSAgICAgICAgcmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLSAgICAgICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7Ci0gICAgICAgICAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAiYmJiIik7Ci0g
ICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAgICAgfTsKLSAgICB9OwotfQotCi0KLXRl
c3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3R3by12ZXJzaW9uLWNo
YW5nZXMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi92YWx1ZS11bmRlZmluZWQuaHRtbCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ZhbHVlLXVuZGVmaW5lZC5odG1sCmluZGV4IDY3
MDFmMDZhOTUxYmE5MDkxYTk3YTJkN2Q1MjU3OGUyNjYyYTBkODEuLjM5M2FiNDQ1ODBmODVhNDFi
ZDA3MWM5YmVmM2Q2MGNmMDBkN2IzZGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3ZhbHVlLXVuZGVmaW5lZC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3ZhbHVlLXVuZGVmaW5lZC5odG1sCkBAIC0xLDc2ICsxLDEwIEBACi08IURPQ1RZ
UEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9z
aGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlw
dGlvbigiVGVzdCBJbmRleGVkREIgdW5kZWZpbmVkIGFzIHJlY29yZCB2YWx1ZSIpOwotCi1mdW5j
dGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9
IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRh
YmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRl
c2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9u
IG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRW
ZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRl
T2JqZWN0U3RvcmU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQotewotICAg
IGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRM
b2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycpOyIpOwotICAgIHJl
c3VsdCA9IGV2YWxBbmRMb2coInJlc3VsdCA9IG9iamVjdFN0b3JlLmFkZCh1bmRlZmluZWQsIElu
ZmluaXR5KTsiKTsKLSAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBnZXRWYWx1ZTsKLX0KLQotZnVuY3Rpb24gZ2V0VmFs
dWUoKQotewotICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coInJlc3VsdCA9IG9iamVjdFN0b3JlLmdl
dChJbmZpbml0eSk7Iik7Ci0gICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLSAgICByZXN1bHQub25zdWNjZXNzID0gY2hlY2tWYWx1ZTsKLX0KLQotZnVuY3Rpb24g
Y2hlY2tWYWx1ZSgpCi17Ci0gICAgdmFsdWUgPSBldmFsQW5kTG9nKCJ2YWx1ZSA9IGV2ZW50LnRh
cmdldC5yZXN1bHQ7Iik7Ci0gICAgc2hvdWxkQmUoInZhbHVlIiwgInVuZGVmaW5lZCIpOwotICAg
IHJlc3VsdCA9IGV2YWxBbmRMb2coInJlc3VsdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKTsi
KTsKLSAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJl
c3VsdC5vbnN1Y2Nlc3MgPSBjaGVja0N1cnNvcjsKLX0KLQotZnVuY3Rpb24gY2hlY2tDdXJzb3Io
KQotewotICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1
bHQ7Iik7Ci0gICAgaWYgKGN1cnNvcikgewotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIs
ICJJbmZpbml0eSIpOwotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgInVuZGVmaW5l
ZCIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoImN1cnNvciBpcyBudWxsIik7
Ci0gICAgfQotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3ZhbHVlLXVuZGVmaW5lZC5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3ZhbHVlcy1vZGQtdHlwZXMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3ZhbHVlcy1vZGQtdHlwZXMuaHRtbAppbmRleCAyYzg2M2YzOGFmYzIxMzkzNGU5OTg0
OTcxNzBhMGMwNzUzZjAyY2MyLi44NDhhYzdjOWU4OWQ0ZmEyZWNmZmMyYjhjMjZjYTFhMTQ2Mjc3
YmRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi92YWx1ZXMtb2Rk
LXR5cGVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmFsdWVzLW9k
ZC10eXBlcy5odG1sCkBAIC0xLDg4ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KIDxodG1sPgog
PGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0
PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVk
REIgb2RkIHZhbHVlIGRhdGF0eXBlcyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1v
dmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7
Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBk
YiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGFkZEtleTE7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGFkZEtleTEoKQotewotICAgIGRlbGV0ZUFs
bE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7YXV0b0luY3JlbWVudDogdHJ1ZX0pOyIpOwotCi0gICAg
Y2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7Ci0gICAgY29udGV4dCA9
IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOwotICAgIGltYWdlZGF0YSA9IGNvbnRleHQuY3JlYXRl
SW1hZ2VEYXRhKDEsIDEpOwotICAgIHZhbGlkVHlwZXMgPSBbeyBkZXNjcmlwdGlvbjogJ3JlZ2V4
cCcsICAgIHZhbHVlOiBuZXcgUmVnRXhwKCdcXFxcJykgfSwKLSAgICAgICAgICAgICAgICAgIHsg
ZGVzY3JpcHRpb246ICdkYXRlJywgICAgICB2YWx1ZTogbmV3IERhdGUoMCkgfSwKLSAgICAgICAg
ICAgICAgICAgIHsgZGVzY3JpcHRpb246ICdvYmplY3QnLCAgICB2YWx1ZTogbmV3IE9iamVjdCgp
IH0sCi0gICAgICAgICAgICAgICAgICB7IGRlc2NyaXB0aW9uOiAnaW1hZ2VkYXRhJywgdmFsdWU6
IGltYWdlZGF0YSB9LAotICAgIF07Ci0gICAgbmV4dFRvQWRkID0gMDsKLSAgICBhZGREYXRhKCk7
Ci19Ci0KLWZ1bmN0aW9uIGFkZERhdGEoKQotewotICAgIGRlYnVnKCJhZGRpbmcgIiArIHZhbGlk
VHlwZXNbbmV4dFRvQWRkXS5kZXNjcmlwdGlvbiArICIgdmFsdWUiKTsKLSAgICByZXN1bHQgPSBl
dmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQodmFsaWRUeXBlc1tuZXh0VG9BZGRdLnZhbHVlKSIp
OwotICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSArK25leHRUb0FkZCA8IHZhbGlkVHlwZXMubGVuZ3Ro
ID8gYWRkRGF0YSA6IG9wZW5BQ3Vyc29yOwotICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5BQ3Vyc29yKCkKLXsKLSAgICB2YWx1
ZUluZGV4ID0gMDsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0
b3JlLm9wZW5DdXJzb3IoKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewot
ICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0
OyIpOwotICAgICAgICBpZiAoY3Vyc29yKSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29y
LnZhbHVlLnRvU3RyaW5nKCkiLCAidmFsaWRUeXBlc1t2YWx1ZUluZGV4XS52YWx1ZS50b1N0cmlu
ZygpIik7Ci0gICAgICAgICAgICBpZiAodmFsdWVJbmRleCA9PSAxKSB7Ci0gICAgICAgICAgICAg
ICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS50b1VUQ1N0cmluZygpIiwgIidUaHUsIDAxIEphbiAx
OTcwIDAwOjAwOjAwIEdNVCciKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICh2YWx1
ZUluZGV4ID09IDMpIHsKLSAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndp
ZHRoIiwgIjEiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNv
ci5jb250aW51ZSgpOyIpOwotICAgICAgICAgICAgZXZhbEFuZExvZygidmFsdWVJbmRleCsrOyIp
OwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvdmFsdWVzLW9kZC10eXBlcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwv
Ym9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3ZlcnNpb24tY2hhbmdlLWFib3J0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWFib3J0LWV4cGVjdGVkLnR4dAppbmRleCAzMTVkNGQ1
N2NlODViMWM5ZmU1ODliYjhlN2MxMTBkOTU1NzJjMDA1Li4zMWViZDYxM2FiZTY3ZjQ0YWYwN2Iz
ODUyZTJmOTQyMTIwNzZiMDJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi92ZXJzaW9uLWNoYW5nZS1hYm9ydC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1jaGFuZ2UtYWJvcnQtZXhwZWN0ZWQudHh0CkBAIC0x
LDQgKzEsNCBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDc2OiBVbmNhdWdodCBFcnJvcjogVGhp
cyBzaG91bGQgKk5PVCogYmUgY2F1Z2h0IQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDcxOiBVbmNh
dWdodCBFcnJvcjogVGhpcyBzaG91bGQgKk5PVCogYmUgY2F1Z2h0IQogRW5zdXJlIHRoYXQgYWJv
cnRlZCBWRVJTSU9OX0NIQU5HRSB0cmFuc2FjdGlvbnMgYXJlIGNvbXBsZXRlbHkgcm9sbGVkIGJh
Y2sKIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1jaGFuZ2UtYWJvcnQuaHRtbCBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWFib3J0Lmh0bWwKaW5kZXggY2RjOWFj
YTBlMzE4MTcxMTEzODA4NDFiMjM1NTQ0MGZhNWIyZTIxNC4uNTdkZTAwOTBhNTZkNTk1NTZhYjQ5
Yjk5ZDUyZjg0NTFmOWMzYzJlYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvdmVyc2lvbi1jaGFuZ2UtYWJvcnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi92ZXJzaW9uLWNoYW5nZS1hYm9ydC5odG1sCkBAIC0xLDk5ICsxLDEwIEBACi08
IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291
cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1k
ZXNjcmlwdGlvbigiRW5zdXJlIHRoYXQgYWJvcnRlZCBWRVJTSU9OX0NIQU5HRSB0cmFuc2FjdGlv
bnMgYXJlIGNvbXBsZXRlbHkgcm9sbGVkIGJhY2siKTsKLQotCi1mdW5jdGlvbiB0ZXN0KCkgewot
ICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgb3BlbkRCQ29ubmVjdGlvbigpOwotfQot
Ci1mdW5jdGlvbiBvcGVuREJDb25uZWN0aW9uKCkKLXsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiaW5kZXhlZERCLm9wZW4oJ3ZlcnNpb24tY2hhbmdlLWFib3J0JykiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgc2Vs
Zi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIGRlYnVn
KCIiKTsKLQotICAgIGV2YWxBbmRMb2coInZjcmVxID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAx
JykiKTsKLSAgICB2Y3JlcS5vbnN1Y2Nlc3MgPSBpblNldFZlcnNpb24xOwotICAgIHZjcmVxLm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gaW5TZXRWZXJz
aW9uMSgpCi17Ci0gICAgZGVidWcoInNldFZlcnNpb24xKCkgY2FsbGJhY2siKTsKLSAgICBzaG91
bGRCZVRydWUoInZjcmVxLnJlc3VsdCBpbnN0YW5jZW9mIElEQlRyYW5zYWN0aW9uIik7Ci0gICAg
dHJhbnMgPSB2Y3JlcS5yZXN1bHQ7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9y
dENhbGxiYWNrOwotICAgIHRyYW5zLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LSAgICB0cmFucy5vbmNvbXBsZXRlID0gc2V0VmVyc2lvbjFDb21wbGV0ZTsKLQotICAgIGV2YWxB
bmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlMScpIik7Ci19Ci0KLWZ1
bmN0aW9uIHNldFZlcnNpb24xQ29tcGxldGUoKQotewotICAgIGRlYnVnKCJzZXRWZXJzaW9uMSBj
b21wbGV0ZSIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGIudmVyc2lvbiIsICJ2ZXJz
aW9uIDEiKTsKLSAgICBkZWJ1ZygiIik7Ci0KLSAgICBldmFsQW5kTG9nKCJ2Y3JlcSA9IGRiLnNl
dFZlcnNpb24oJ3ZlcnNpb24gMicpIik7Ci0gICAgdmNyZXEub25zdWNjZXNzID0gaW5TZXRWZXJz
aW9uMjsKLSAgICB2Y3JlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0K
LWZ1bmN0aW9uIGluU2V0VmVyc2lvbjIoKQotewotICAgIGRlYnVnKCJzZXRWZXJzaW9uMigpIGNh
bGxiYWNrIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkYi52ZXJzaW9uIiwgInZlcnNp
b24gMiIpOwotICAgIHNob3VsZEJlVHJ1ZSgidmNyZXEucmVzdWx0IGluc3RhbmNlb2YgSURCVHJh
bnNhY3Rpb24iKTsKLSAgICB0cmFucyA9IHZjcmVxLnJlc3VsdDsKLSAgICB0cmFucy5vbmFib3J0
ID0gc2V0VmVyc2lvbjJBYm9ydDsKLSAgICB0cmFucy5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxi
YWNrOwotCi0gICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5kZWxldGVPYmplY3RTdG9yZSgnc3Rv
cmUxJykiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdz
dG9yZTInKSIpOwotCi0gICAgLy8gRW5zdXJlIHRoZSB0ZXN0IGhhcm5lc3MgZXJyb3IgaGFuZGxl
ciBpcyBub3QgaW52b2tlZC4KLSAgICBzZWxmLm9yaWdpbmFsV2luZG93T25FcnJvciA9IHNlbGYu
b25lcnJvcjsKLSAgICBzZWxmLm9uZXJyb3IgPSBudWxsOwotCi0gICAgZGVidWcoInJhaXNpbmcg
ZXhjZXB0aW9uIik7Ci0gICAgdGhyb3cgbmV3IEVycm9yKCJUaGlzIHNob3VsZCAqTk9UKiBiZSBj
YXVnaHQhIik7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb24yQWJvcnQoKQotewotICAgIGRlYnVn
KCIiKTsKLSAgICBkZWJ1Zygic2V0VmVyc2lvbjJBYm9ydCgpIGNhbGxiYWNrIik7Ci0KLSAgICAv
LyBSZXN0b3JlIHRlc3QgaGFybmVzcyBlcnJvciBoYW5kbGVyLgotICAgIHNlbGYub25lcnJvciA9
IHNlbGYub3JpZ2luYWxXaW5kb3dPbkVycm9yOwotCi0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJkYi52ZXJzaW9uIiwgInZlcnNpb24gMSIpOwotICAgIHNob3VsZEJlVHJ1ZSgiZGIub2JqZWN0
U3RvcmVOYW1lcy5jb250YWlucygnc3RvcmUxJykiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJkYi5v
YmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCdzdG9yZTInKSIpOwotCi0gICAgZmluaXNoSlNUZXN0
KCk7Ci19Ci0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Zl
cnNpb24tY2hhbmdlLWFib3J0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1jaGFu
Z2UtZXhjbHVzaXZlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9u
LWNoYW5nZS1leGNsdXNpdmUuaHRtbAppbmRleCA0OTQ5NmRlYjI0YWI5ODdkMTNhNjgxNDE0YjZl
ZTU4YzNmOWVlNTMyLi40YTBlNDYyYTY3YWI5YTEyODMxMDFjNzZmODY0Njc4OTg1NTRkOWZlIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9uLWNoYW5nZS1l
eGNsdXNpdmUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9u
LWNoYW5nZS1leGNsdXNpdmUuaHRtbApAQCAtNCw3NyArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0K
LWRlc2NyaXB0aW9uKCJFbnN1cmUgVkVSU0lPTl9DSEFOR0UgdHJhbnNhY3Rpb24gZG9lc24ndCBy
dW4gY29uY3VycmVudGx5IHdpdGggb3RoZXIgdHJhbnNhY3Rpb25zIik7Ci0KLQotZnVuY3Rpb24g
dGVzdCgpIHsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIG9wZW5EQkNvbm5lY3Rp
b24oKTsKLX0KLQotZnVuY3Rpb24gb3BlbkRCQ29ubmVjdGlvbigpCi17Ci0gICAgZXZhbEFuZExv
Zygic2VsZi5zdGF0ZSA9ICdzdGFydGluZyciKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
aW5kZXhlZERCLm9wZW4oJ3ZlcnNpb24tY2hhbmdlLWV4Y2x1c2l2ZScpIik7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIHNl
bGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIGRl
YnVnKCJjYWxsaW5nIHNldFZlcnNpb24oKSAtIGNhbGxiYWNrIHNob3VsZCBydW4gaW1tZWRpYXRl
bHkiKTsKLSAgICB2YXIgdmVyc2lvbkNoYW5nZVJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRW
ZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOwotICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB2ZXJzaW9uQ2hhbmdlUmVxdWVzdC5vbnN1
Y2Nlc3MgPSBpblNldFZlcnNpb247Ci0KLSAgICAvLyBhbmQgY29uY3VycmVudGx5Li4uCi0KLSAg
ICBkZWJ1ZygiY2FsbGluZyBvcGVuKCkgLSBjYWxsYmFjayBzaG91bGQgd2FpdCB1bnRpbCBWRVJT
SU9OX0NIQU5HRSB0cmFuc2FjdGlvbiBpcyBjb21wbGV0ZSIpOwotICAgIHZhciBvcGVuUmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCd2ZXJzaW9uLWNoYW5nZS1leGNsdXNpdmUn
KSIpOwotICAgIG9wZW5SZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5BZ2FpblN1Y2Nlc3M7Ci0gICAg
b3BlblJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5j
dGlvbiBpblNldFZlcnNpb24oKQotewotICAgIGRlYnVnKCJzZXRWZXJzaW9uKCkgY2FsbGJhY2si
KTsKLSAgICBkZWJ1Zygic3RhcnRpbmcgd29yayBpbiBWRVJTSU9OX0NIQU5HRSB0cmFuc2FjdGlv
biIpOwotICAgIGV2YWxBbmRMb2coInNlbGYuc3RhdGUgPSAnVkVSU0lPTl9DSEFOR0Ugc3RhcnRl
ZCciKTsKLQotICAgIHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9i
amVjdFN0b3JlKCd0ZXN0LXN0b3JlJykiKTsKLSAgICBzZWxmLmNvdW50ID0gMDsKLSAgICBkb19h
c3luY19wdXRzKCk7Ci0KLSAgICBmdW5jdGlvbiBkb19hc3luY19wdXRzKCkgewotICAgICAgICB2
YXIgcmVxID0gZXZhbEFuZExvZygic3RvcmUucHV0KCIgKyBjb3VudCArICIsICIgKyBjb3VudCAr
ICIpIik7Ci0gICAgICAgIHJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0g
ICAgICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZSkgewotICAgICAgICAgICAgZGVidWco
ImluIHB1dCdzIG9uc3VjY2VzcyIpOwotICAgICAgICAgICAgaWYgKCsrc2VsZi5jb3VudCA8IDEw
KSB7Ci0gICAgICAgICAgICAgICAgZG9fYXN5bmNfcHV0cygpOwotICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICBkZWJ1ZygiZW5kaW5nIHdvcmsgaW4gVkVSU0lPTl9DSEFOR0Ug
dHJhbnNhY3Rpb24iKTsKLSAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJzZWxmLnN0YXRlID0g
J1ZFUlNJT05fQ0hBTkdFIGZpbmlzaGVkJyIpOwotICAgICAgICAgICAgfQotICAgICAgICB9Owot
ICAgIH0KLX0KLQotZnVuY3Rpb24gb3BlbkFnYWluU3VjY2VzcygpCi17Ci0gICAgZGVidWcoIm9w
ZW4oKSBjYWxsYmFjayAtIHRoaXMgc2hvdWxkIGFwcGVhciBhZnRlciBWRVJTSU9OX0NIQU5HRSB0
cmFuc2FjdGlvbiBlbmRzIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzZWxmLnN0YXRl
IiwgIlZFUlNJT05fQ0hBTkdFIGZpbmlzaGVkIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0K
LQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdmVyc2lvbi1j
aGFuZ2UtZXhjbHVzaXZlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbmNoYW5nZXJl
cXVlc3QtYWN0aXZlZG9tb2JqZWN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi92ZXJzaW9uY2hhbmdlcmVxdWVzdC1hY3RpdmVkb21vYmplY3QuaHRtbAppbmRleCA5YTdjMzUw
ZGI1MmJjZGIwZTNjYTQwOGQzOGJjODZjZjhmYTc1MTRkLi41NDc0NWQ3MDE2YjA1Njk3NDg3ZmZh
MDg4MDIzZjU1ZmRhNmIzNTY3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi92ZXJzaW9uY2hhbmdlcmVxdWVzdC1hY3RpdmVkb21vYmplY3QuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9uY2hhbmdlcmVxdWVzdC1hY3RpdmVkb21v
YmplY3QuaHRtbApAQCAtMSw3NiArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxo
ZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4K
IDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIkVuc3VyZSB0aGF0IElE
QlZlcnNpb25DaGFuZ2VSZXF1ZXN0IG9iamVjdHMgYXJlIG5vdCBHQydkIGlmIHRoZXkgaGF2ZSBw
ZW5kaW5nIGV2ZW50cyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkgewotICAgIHJlbW92ZVZlbmRvclBy
ZWZpeGVzKCk7Ci0KLSAgICBkZWJ1ZygiIik7Ci0gICAgZXZhbEFuZExvZygic2VsZi5kYm5hbWUg
PSAndmVyc2lvbmNoYW5nZXJlcXVlc3QtYWN0aXZlZG9tb2JqZWN0JyIpOwotCi0gICAgdGVzdERl
bGV0ZURhdGFiYXNlKCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3REZWxldGVEYXRhYmFzZSgpCi17Ci0g
ICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJ0ZXN0RGVsZXRlRGF0YWJhc2UoKToiKTsKLSAgICAv
LyBOT1RFOiBkZWxldGVSZXF1ZXN0IGlzIGxvY2FsIHZhcmlhYmxlIHNvIGl0IGlzIG5vdCBjYXB0
dXJlZCBpbiBnbG9iYWwgc2NvcGUuCi0gICAgdmFyIGRlbGV0ZVJlcXVlc3QgPSBldmFsQW5kTG9n
KCJpbmRleGVkREIuZGVsZXRlRGF0YWJhc2Uoc2VsZi5kYm5hbWUpIik7Ci0gICAgZGVsZXRlUmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgZGVsZXRlUmVxdWVz
dC5vbmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNrOwotICAgIGRlbGV0ZVJlcXVl
c3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7IGRlbGV0ZVN1Y2Nlc3MoKTsgfTsKLSAgICBkZWxl
dGVSZXF1ZXN0ID0gbnVsbDsKLSAgICBpZiAoc2VsZi5nYykgewotICAgICAgICBldmFsQW5kTG9n
KCJzZWxmLmdjKCkiKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZVN1Y2Nlc3MoKQotewot
ICAgIHRlc3RQYXNzZWQoImRlbGV0ZURhdGFiYXNlJ3MgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Qu
b25zdWNjZXNzIGV2ZW50IGZpcmVkIik7Ci0gICAgdGVzdFNldFZlcnNpb24oKTsKLX0KLQotZnVu
Y3Rpb24gdGVzdFNldFZlcnNpb24oKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygidGVz
dFNldFZlcnNpb24oKToiKTsKLQotICAgIC8vIE5PVEU6IFRoaXMgaXMganVzdCBhbiBJREJSZXF1
ZXN0LCBpdCBjYW4gYmUgZ2xvYmFsLgotICAgIGV2YWxBbmRMb2coIm9wZW5SZXF1ZXN0ID0gaW5k
ZXhlZERCLm9wZW4oc2VsZi5kYm5hbWUpIik7Ci0gICAgb3BlblJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIG9wZW5SZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0
aW9uICgpIHsKLSAgICAgICAgZXZhbEFuZExvZygiZGIgPSBvcGVuUmVxdWVzdC5yZXN1bHQiKTsK
LQotICAgICAgICAvLyBOT1RFOiB2ZXJzaW9uUmVxdWVzdCBpcyBsb2NhbCB2YXJpYWJsZSBzbyBp
dCBpcyBub3QgY2FwdHVyZWQgaW4gZ2xvYmFsIHNjb3BlLgotICAgICAgICB2YXIgdmVyc2lvblJl
cXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICAgICAgdmVyc2lv
blJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICB2ZXJz
aW9uUmVxdWVzdC5vbmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNrOwotICAgICAg
ICB2ZXJzaW9uUmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgdmVyc2lvblN1Y2Nlc3Mo
KTsgfTsKLSAgICAgICAgdmVyc2lvblJlcXVlc3QgPSBudWxsOwotICAgICAgICBpZiAoc2VsZi5n
YykgewotICAgICAgICAgICAgZXZhbEFuZExvZygic2VsZi5nYygpIik7Ci0gICAgICAgIH0KLSAg
ICB9OwotfQotCi1mdW5jdGlvbiB2ZXJzaW9uU3VjY2VzcygpCi17Ci0gICAgdGVzdFBhc3NlZCgi
c2V0VmVyc2lvbidzIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uc3VjY2VzcyBldmVudCBmaXJl
ZCIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy92ZXJzaW9uY2hhbmdlcmVxdWVzdC1hY3RpdmVkb21vYmplY3Qu
anMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133551</attachid>
            <date>2012-03-23 13:52:39 -0700</date>
            <delta_ts>2012-03-23 15:48:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81440-20120323135238.patch</filename>
            <type>text/plain</type>
            <size>1048356</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExODU1CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTdkYTMzZDViZjdiNDhmNDE0Y2Qy
YjA0M2VlNjkwNTQ5MTI3OWZiNi4uY2YwMDVhMjhiYzRjM2E4ZDQ3NzNlYjFlYjcwOGEzYTQ4MzI2
ZTg4NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyODQgQEAKKzIwMTItMDMtMjMgIERhdmlkIEdyb2dhbiAg
PGRncm9nYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEV4dHJhY3QgbG9naWMgb2YgaW5kZXhl
ZGRiIGh0bWwgbGF5b3V0IHRlc3RzIGludG8ganMgZmlsZXMgdGhhdCBjYW4KKyAgICAgICAgYmUg
cnVuIGZyb20gZWl0aGVyIGEgd29ya2VyIG9yIGEgd2luZG93LgorCisgICAgICAgIFRoZSB0d28g
Y2hhbmdlZCAtZXhwZWN0ZWQudHh0IGZpbGVzIGFyZSBqdXN0IGZvciBsaW5lIG51bWJlcnMgaW4g
SlMKKyAgICAgICAgZXJyb3IgbWVzc2FnZXMuCisKKyAgICAgICAgU2tpcHBlZCB3ZXJlOgorICAg
ICAgICAtIHRyYW5zYWN0aW9uLWFib3J0LXdpdGgtanMtcmVjdXJzaW9uLmh0bWwKKyAgICAgICAg
LSB0cmFuc2FjdGlvbi1hYm9ydC13aXRoLWpzLXJlY3Vyc2lvbi1jcm9zcy1mcmFtZS5odG1sCisg
ICAgICAgIC0gbm9ibG9icy5odG1sCisgICAgICAgIC0gdHV0b3JpYWwuaHRtbAorICAgICAgICBU
aGUgZmlyc3QgdGhyZWUgc2ltdWxhdGUgbW91c2UgZXZlbnRzIGFuZCB0aGUgbGFzdCBpc24ndCBy
ZWFsbHkgYSB0ZXN0LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04MTQ0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY29uc3RhbnRzLmh0bWw6CisgICAgICAgICogc3Rv
cmFnZS9pbmRleGVkZGIvY3JlYXRlLWFuZC1yZW1vdmUtb2JqZWN0LXN0b3JlLmh0bWw6CisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlLW9iamVjdC1zdG9yZS1vcHRpb25zLmh0bWw6
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlT2JqZWN0U3RvcmUtbmFtZS1hcmd1
bWVudC1yZXF1aXJlZC5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZU9i
amVjdFN0b3JlLW51bGwtbmFtZS5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2N1
cnNvci1jb250aW51ZS5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1k
ZWxldGUuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItaW5jb25zaXN0
ZW5jeS5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1pbmRleC1kZWxl
dGUuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3Ita2V5LW9yZGVyLmh0
bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXByaW1hcnkta2V5LW9yZGVy
Lmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXJldmVyc2UtYnVnLmh0
bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXNraXAtZGVsZXRlZC5odG1s
OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci11cGRhdGUtdmFsdWUtYXJndW1l
bnQtcmVxdWlyZWQuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItdXBk
YXRlLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvZGF0YS1jb3JydXB0aW9uLmh0
bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtYmFzaWNzLmh0bWw6Cisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtbmFtZS11bmRlZmluZWQuaHRtbDoK
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1vZGQtbmFtZXMuaHRtbDoKKyAg
ICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1xdW90YS5odG1sOgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZS1jbG9zZWQtZGF0YWJhc2Utb2JqZWN0Lmh0bWw6Cisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlLXJhbmdlLmh0bWw6CisgICAgICAgICog
c3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlSW5kZXguaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2lu
ZGV4ZWRkYi9kZWxldGVPYmplY3RTdG9yZS1uYW1lLWFyZ3VtZW50LXJlcXVpcmVkLmh0bWw6Cisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlT2JqZWN0U3RvcmUtbnVsbC1uYW1lLmh0
bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvZHVwbGljYXRlcy5odG1sOgorICAgICAg
ICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2Vycm9yLWNhdXNlcy1hYm9ydC1ieS1kZWZhdWx0Lmh0bWw6
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvZXhjZXB0aW9uLWluLWV2ZW50LWFib3J0cy1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvZXhjZXB0aW9uLWluLWV2
ZW50LWFib3J0cy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2ZhY3RvcnktYmFz
aWNzLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvZmFjdG9yeS1jbXAuaHRtbDoK
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9mYWN0b3J5LWRlbGV0ZWRhdGFiYXNlLWludGVy
YWN0aW9ucy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2ZhY3RvcnktZGVsZXRl
ZGF0YWJhc2UuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1jb3VudC5o
dG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWN1cnNvci5odG1sOgorICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWdldC1rZXktYXJndW1lbnQtcmVxdWlyZWQu
aHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1tdWx0aWVudHJ5Lmh0bWw6
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtcG9wdWxhdGlvbi5odG1sOgorICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LXVuaXF1ZS5odG1sOgorICAgICAgICAqIHN0
b3JhZ2UvaW5kZXhlZGRiL2ludmFsaWQta2V5cy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5k
ZXhlZGRiL2tleS1nZW5lcmF0b3IuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9r
ZXktc29ydC1vcmRlci1hY3Jvc3MtdHlwZXMuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4
ZWRkYi9rZXktc29ydC1vcmRlci1kYXRlLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVk
ZGIva2V5LXR5cGUtYXJyYXkuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9rZXkt
dHlwZS1pbmZpbml0eS5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgt
YmFzaWNzLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1lZGdlcy5o
dG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtZmV0Y2gta2V5Lmh0bWw6
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIva2V5cmFuZ2UtcmVxdWlyZWQtYXJndW1lbnRz
Lmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIva2V5cmFuZ2UuaHRtbDoKKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9saXN0LW9yZGVyaW5nLmh0bWw6CisgICAgICAgICogc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9hZGQtdHdpY2UtZmFpbHVyZS5odG1sOgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvYXV0b2luY3JlbWVudC1pbmRleGVzLmh0bWw6Cisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9iYWQta2V5cGF0aC5odG1sOgorICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY2xlYXIuaHRtbDoKKyAgICAgICAgKiBz
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1pbmRleC11bmlxdWUuaHRtbDoKKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1pbmRleC13aXRoLWludGVnZXIt
a2V5cy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3JlYXRlLW9i
amVjdHN0b3JlLWJhc2ljcy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEvY3JlYXRlLW9iamVjdHN0b3JlLW51bGwtbmFtZS5odG1sOgorICAgICAgICAqIHN0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvY3Vyc29yLW11dGF0aW9uLW9iamVjdHN0b3JlLW9ubHkuaHRtbDoK
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2N1cnNvci1tdXRhdGlvbi5odG1s
OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3Vyc29yLXVwZGF0ZS11cGRh
dGVzLWluZGV4ZXMuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2N1
cnNvcnMuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2RlbGV0ZS1y
ZXN1bHQuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2V2ZW50LXNv
dXJjZS5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvZ2xvYmFsLWRh
dGEuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2luZGV4ZXMuaHRt
bDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMt
ZGVsZXRlLW51bGwta2V5Lmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9rZXktcmVxdWlyZW1lbnRzLWlubGluZS1hbmQtcGFzc2VkLmh0bWw6CisgICAgICAgICogc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWlyZW1lbnRzLXB1dC1uby1rZXkuaHRtbDoK
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMtcHV0
LW51bGwta2V5Lmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXkt
cmVxdWlyZW1lbnRzLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9v
YmplY3QtY3Vyc29ycy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEv
b2JqZWN0LWlkZW50aXR5Lmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9vYmplY3Qtc3RvcmUtaW5saW5lLWF1dG9pbmNyZW1lbnQta2V5LWFkZGVkLW9uLXB1dC5odG1s
OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0LXN0b3JlLXJlbW92
ZS12YWx1ZXMuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29iamVj
dHN0b3JlbmFtZXMuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29k
ZC1yZXN1bHQtb3JkZXIuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L29wZW4tZGF0YWJhc2UtbnVsbC1uYW1lLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVk
ZGIvbW96aWxsYS9wdXQtZ2V0LXZhbHVlcy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvcmVhZG9ubHktdHJhbnNhY3Rpb25zLmh0bWw6CisgICAgICAgICogc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9yZWFkd3JpdGUtdHJhbnNhY3Rpb25zLmh0bWw6CisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZWFkeVN0YXRlLmh0bWw6CisgICAgICAgICog
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZW1vdmUtaW5kZXguaHRtbDoKKyAgICAgICAgKiBz
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3JlbW92ZS1vYmplY3RzdG9yZS5odG1sOgorICAgICAg
ICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2FkZC10d2ljZS1mYWlsdXJl
LmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2Fk
ZC10d2ljZS1mYWlsdXJlLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNj
ZXNzKToKKyAgICAgICAgKGNsZWFuRGF0YWJhc2UpOgorICAgICAgICAoYWRkRmlyc3RTdWNjZXNz
KToKKyAgICAgICAgKGFkZFNlY29uZEV4cGVjdGVkRXJyb3IpOgorICAgICAgICAqIHN0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2F1dG9pbmNyZW1lbnQtaW5kZXhlcy5qczogQ29w
aWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9hdXRvaW5jcmVt
ZW50LWluZGV4ZXMuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3BlblN1Y2Nlc3Mp
OgorICAgICAgICAoc2V0dXBPYmplY3RTdG9yZSk6CisgICAgICAgIChzZXR1cEluZGV4ZXMpOgor
ICAgICAgICAoc2V0VmVyc2lvbkNvbXBsZXRlKToKKyAgICAgICAgKGNoZWNrRmlyc3RJbmRleEFu
ZFByZXBhcmVTZWNvbmQpOgorICAgICAgICAoY2hlY2tTZWNvbmRJbmRleEFuZFByZXBhcmVUaGly
ZCk6CisgICAgICAgIChjaGVja1RoaXJkSW5kZXgpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvcmVzb3VyY2VzL2JhZC1rZXlwYXRoLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2JhZC1rZXlwYXRoLmh0bWwuCisgICAgICAg
ICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGNsZWFuRGF0YWJhc2Up
OgorICAgICAgICAoYWRkRmlyc3RTdWNjZXNzKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL3Jlc291cmNlcy9jbGVhci5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9jbGVhci5odG1sLgorICAgICAgICAodGVzdCk6CisgICAg
ICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChjbGVhbkRhdGFiYXNlKToKKyAgICAgICAgKGNs
ZWFyKToKKyAgICAgICAgKGFyZVdlQ2xlYXJZZXQpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvcmVzb3VyY2VzL2NyZWF0ZS1pbmRleC11bmlxdWUuanM6IENvcGllZCBmcm9t
IExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3JlYXRlLWluZGV4LXVuaXF1
ZS5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAg
IChjcmVhdGVBbmRWZXJpZnlJbmRleCk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9yZXNvdXJjZXMvY3JlYXRlLWluZGV4LXdpdGgtaW50ZWdlci1rZXlzLmpzOiBDb3BpZWQg
ZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1pbmRleC13
aXRoLWludGVnZXIta2V5cy5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChvcGVuU3Vj
Y2Vzcyk6CisgICAgICAgIChzZXR1cE9iamVjdFN0b3JlQW5kQ3JlYXRlSW5kZXgpOgorICAgICAg
ICAodmVyaWZ5S2V5Q3Vyc29yKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L3Jlc291cmNlcy9jcmVhdGUtb2JqZWN0c3RvcmUtYmFzaWNzLmpzOiBDb3BpZWQgZnJvbSBMYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1vYmplY3RzdG9yZS1iYXNp
Y3MuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAg
ICAoY2xlYW5EYXRhYmFzZSk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9y
ZXNvdXJjZXMvY3JlYXRlLW9iamVjdHN0b3JlLW51bGwtbmFtZS5qczogQ29waWVkIGZyb20gTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtb2JqZWN0c3RvcmUtbnVs
bC1uYW1lLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAg
ICAgICAgKGNsZWFuRGF0YWJhc2UpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEvcmVzb3VyY2VzL2N1cnNvci1tdXRhdGlvbi1vYmplY3RzdG9yZS1vbmx5LmpzOiBDb3BpZWQg
ZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2N1cnNvci1tdXRhdGlv
bi1vYmplY3RzdG9yZS1vbmx5Lmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5T
dWNjZXNzKToKKyAgICAgICAgKHNldHVwT2JqZWN0U3RvcmUpOgorICAgICAgICAoaXRlcmF0ZUN1
cnNvcik6CisgICAgICAgIChjaGVja0N1cnNvclJlc3VsdHNBbmRTZXR1cE11dGF0aW5nQ3Vyc29y
KToKKyAgICAgICAgKGl0ZXJhdGVNdXRhdGluZ0N1cnNvcik6CisgICAgICAgIChhZGRGaW5hbERh
dGEucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAoYWRkRmluYWxEYXRhKToKKyAgICAgICAg
KGNoZWNrTXV0YXRpbmdDdXJzb3JSZXN1bHRzKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL3Jlc291cmNlcy9jdXJzb3ItbXV0YXRpb24uanM6IENvcGllZCBmcm9tIExheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3Vyc29yLW11dGF0aW9uLmh0bWwuCisg
ICAgICAgICh0ZXN0LnJlcXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAg
ICAgKHRlc3QucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdCk6CisgICAgICAgIChz
ZXR1cE9iamVjdFN0b3JlQW5kQ3JlYXRlSW5kZXgpOgorICAgICAgICAoc2V0dXBDdXJzb3IpOgor
ICAgICAgICAoaXRlcmF0ZUN1cnNvcik6CisgICAgICAgIChjaGVja0N1cnNvclJlc3VsdHMpOgor
ICAgICAgICAoc2V0dXBNdXRhdGluZ0N1cnNvcik6CisgICAgICAgIChpdGVyYXRlTXV0YXRpbmdD
dXJzb3IpOgorICAgICAgICAoYWRkRmluYWxEYXRhLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAg
ICAgKGFkZEZpbmFsRGF0YSk6CisgICAgICAgIChjaGVja011dGF0aW5nQ3Vyc29yUmVzdWx0cyk6
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY3Vyc29yLXVw
ZGF0ZS11cGRhdGVzLWluZGV4ZXMuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvY3Vyc29yLXVwZGF0ZS11cGRhdGVzLWluZGV4ZXMuaHRtbC4KKyAg
ICAgICAgKHRlc3QpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAoc2V0VmVyc2lv
bik6CisgICAgICAgIChzZXR1cE9iamVjdFN0b3JlQW5kQ3JlYXRlSW5kZXhBbmRBZGQpOgorICAg
ICAgICAob3BlbkN1cnNvcik6CisgICAgICAgICh1cGRhdGVDdXJzb3IpOgorICAgICAgICAoZ2V0
SW5kZXgxKToKKyAgICAgICAgKGNoZWNrSW5kZXgxQW5kR2V0SW5kZXgyKToKKyAgICAgICAgKGNo
ZWNrSW5kZXgyKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNl
cy9jdXJzb3JzLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL2N1cnNvcnMuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3BlblN1Y2Nl
c3MpOgorICAgICAgICAodGVzdEdyb3VwMS5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgICh0
ZXN0R3JvdXAxKToKKyAgICAgICAgKHRlc3RHcm91cDIucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAg
ICAgICAodGVzdEdyb3VwMik6CisgICAgICAgICh0ZXN0R3JvdXAzLnJlcXVlc3Qub25zdWNjZXNz
KToKKyAgICAgICAgKHRlc3RHcm91cDMpOgorICAgICAgICAodGVzdEdyb3VwNC5yZXF1ZXN0Lm9u
c3VjY2Vzcyk6CisgICAgICAgICh0ZXN0R3JvdXA0KToKKyAgICAgICAgKHRlc3RHcm91cDUucmVx
dWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwNSk6CisgICAgICAgICh0ZXN0R3Jv
dXA2LnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHRlc3RHcm91cDYpOgorICAgICAgICAo
dGVzdEdyb3VwNy5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgICh0ZXN0R3JvdXA3KToKKyAg
ICAgICAgKHRlc3RHcm91cDgucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3Vw
OCk6CisgICAgICAgICh0ZXN0R3JvdXA5LnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHRl
c3RHcm91cDkpOgorICAgICAgICAodGVzdEdyb3VwMTAucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAg
ICAgICAodGVzdEdyb3VwMTApOgorICAgICAgICAodGVzdEdyb3VwMTEucmVxdWVzdC5vbnN1Y2Nl
c3MucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwMTEucmVxdWVzdC5vbnN1
Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwMTEpOgorICAgICAgICAodGVzdEdyb3VwMTIpOgor
ICAgICAgICAodGVzdEdyb3VwMTJiKToKKyAgICAgICAgKHRlc3RHcm91cDEzLnJlcXVlc3Qub25z
dWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHRlc3RHcm91cDEzLnJlcXVlc3Qu
b25zdWNjZXNzKToKKyAgICAgICAgKHRlc3RHcm91cDEzKToKKyAgICAgICAgKHRlc3RHcm91cDE0
KToKKyAgICAgICAgKHRlc3RHcm91cDE0Yik6CisgICAgICAgICh0ZXN0R3JvdXAxNS5yZXF1ZXN0
Lm9uc3VjY2Vzcyk6CisgICAgICAgICh0ZXN0R3JvdXAxNSk6CisgICAgICAgICogc3RvcmFnZS9p
bmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvZGVsZXRlLXJlc3VsdC5qczogQ29waWVkIGZyb20g
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9kZWxldGUtcmVzdWx0Lmh0bWwu
CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGNyZWF0
ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKGRlbGV0ZVJlY29yZDEpOgorICAgICAgICAoZGVsZXRl
UmVjb3JkMik6CisgICAgICAgIChmaW5hbENoZWNrKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9ldmVudC1zb3VyY2UuanM6IENvcGllZCBmcm9tIExheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvZXZlbnQtc291cmNlLmh0bWwuCisgICAg
ICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGNsZWFuRGF0YWJh
c2UpOgorICAgICAgICAoYXJlV2VEb25lWWV0KToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL3Jlc291cmNlcy9nbG9iYWwtZGF0YS5qczogQ29waWVkIGZyb20gTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9nbG9iYWwtZGF0YS5odG1sLgorICAgICAgICAo
dGVzdCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChjbGVhbkRhdGFiYXNlKToK
KyAgICAgICAgKG9wZW4yU3VjY2Vzcyk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9yZXNvdXJjZXMvaW5kZXhlcy5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9pbmRleGVzLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAg
ICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUu
cmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAoY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9y
ZSk6CisgICAgICAgIChjcmVhdGVJbmRleGVzKToKKyAgICAgICAgKHNldFZlcnNpb25Db21wbGV0
ZSk6CisgICAgICAgIChjaGVja0dldEtleSk6CisgICAgICAgIChjaGVja0dldC5yZXF1ZXN0Lm9u
c3VjY2Vzcyk6CisgICAgICAgIChjaGVja0dldCk6CisgICAgICAgICh0ZXN0R3JvdXAzLnJlcXVl
c3Qub25zdWNjZXNzKToKKyAgICAgICAgKHRlc3RHcm91cDMpOgorICAgICAgICAodGVzdEdyb3Vw
NC5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgICh0ZXN0R3JvdXA0KToKKyAgICAgICAgKHRl
c3RHcm91cDUucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwNSk6CisgICAg
ICAgICh0ZXN0R3JvdXA2LnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHRlc3RHcm91cDYp
OgorICAgICAgICAodGVzdEdyb3VwNy5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgICh0ZXN0
R3JvdXA3KToKKyAgICAgICAgKHRlc3RHcm91cDgucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAg
ICAodGVzdEdyb3VwOCk6CisgICAgICAgICh0ZXN0R3JvdXA5LnJlcXVlc3Qub25zdWNjZXNzKToK
KyAgICAgICAgKHRlc3RHcm91cDkpOgorICAgICAgICAodGVzdEdyb3VwMTAucmVxdWVzdC5vbnN1
Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwMTApOgorICAgICAgICAodGVzdEdyb3VwMTEucmVx
dWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwMTEpOgorICAgICAgICAodGVzdEdy
b3VwMTIucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwMTIpOgorICAgICAg
ICAodGVzdEdyb3VwMTMucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwMTMp
OgorICAgICAgICAodGVzdEdyb3VwMTQucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVz
dEdyb3VwMTQpOgorICAgICAgICAodGVzdEdyb3VwMTUucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAg
ICAgICAodGVzdEdyb3VwMTUpOgorICAgICAgICAodGVzdEdyb3VwMTYucmVxdWVzdC5vbnN1Y2Nl
c3MpOgorICAgICAgICAodGVzdEdyb3VwMTYpOgorICAgICAgICAodGVzdEdyb3VwMTcucmVxdWVz
dC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwMTcpOgorICAgICAgICAodGVzdEdyb3Vw
MTgucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwMTgpOgorICAgICAgICAo
dGVzdEdyb3VwMTkucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwMTkpOgor
ICAgICAgICAodGVzdEdyb3VwMjAucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdy
b3VwMjApOgorICAgICAgICAodGVzdEdyb3VwMjEucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAg
ICAodGVzdEdyb3VwMjEpOgorICAgICAgICAodGVzdEdyb3VwMjIucmVxdWVzdC5vbnN1Y2Nlc3Mp
OgorICAgICAgICAodGVzdEdyb3VwMjIpOgorICAgICAgICAodGVzdEdyb3VwMjQucmVxdWVzdC5v
bnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwMjQpOgorICAgICAgICAodGVzdEdyb3VwMjUu
cmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwMjUpOgorICAgICAgICAodGVz
dEdyb3VwMjcucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwMjcpOgorICAg
ICAgICAodGVzdEdyb3VwMjgucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3Vw
MjgpOgorICAgICAgICAodGVzdEdyb3VwMjkucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAo
dGVzdEdyb3VwMjkpOgorICAgICAgICAodGVzdEdyb3VwMzAucmVxdWVzdC5vbnN1Y2Nlc3MpOgor
ICAgICAgICAodGVzdEdyb3VwMzApOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEvcmVzb3VyY2VzL2tleS1yZXF1aXJlbWVudHMtZGVsZXRlLW51bGwta2V5LmpzOiBDb3BpZWQg
ZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVu
dHMtZGVsZXRlLW51bGwta2V5Lmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5T
dWNjZXNzKToKKyAgICAgICAgKGNsZWFuRGF0YWJhc2VBbmRDcmVhdGVPYmplY3RTdG9yZSk6Cisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMva2V5LXJlcXVpcmVt
ZW50cy1pbmxpbmUtYW5kLXBhc3NlZC5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWlyZW1lbnRzLWlubGluZS1hbmQtcGFzc2VkLmh0
bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGNs
ZWFuRGF0YWJhc2UpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3Vy
Y2VzL2tleS1yZXF1aXJlbWVudHMtcHV0LW5vLWtleS5qczogQ29waWVkIGZyb20gTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWlyZW1lbnRzLXB1dC1uby1rZXku
aHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAo
Y2xlYW5EYXRhYmFzZSk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNv
dXJjZXMva2V5LXJlcXVpcmVtZW50cy1wdXQtbnVsbC1rZXkuanM6IENvcGllZCBmcm9tIExheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEva2V5LXJlcXVpcmVtZW50cy1wdXQtbnVs
bC1rZXkuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAg
ICAgICAoY2xlYW5EYXRhYmFzZSk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9yZXNvdXJjZXMva2V5LXJlcXVpcmVtZW50cy5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWlyZW1lbnRzLmh0bWwuCisgICAgICAg
ICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGNsZWFuRGF0YWJhc2Up
OgorICAgICAgICAocG9zdEFkZCk6CisgICAgICAgIChwb3N0UHV0MSk6CisgICAgICAgIChwb3N0
UHV0Mik6CisgICAgICAgIChwb3N0UHV0Myk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIv
bW96aWxsYS9yZXNvdXJjZXMvb2JqZWN0LWN1cnNvcnMuanM6IENvcGllZCBmcm9tIExheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0LWN1cnNvcnMuaHRtbC4KKyAgICAg
ICAgKHRlc3QpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAoY2xlYW5EYXRhYmFz
ZSk6CisgICAgICAgIChwb3N0QWRkLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHBvc3RB
ZGQpOgorICAgICAgICAoc2V0dXBBdXRvSW5jcmVtZW50KToKKyAgICAgICAgKiBzdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9vYmplY3QtaWRlbnRpdHkuanM6IENvcGllZCBmcm9t
IExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0LWlkZW50aXR5Lmh0
bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGNy
ZWF0ZU9iamVjdFN0b3JlQW5kSW5kZXgpOgorICAgICAgICAodGVzdElkZW50aXR5U29tZU1vcmUp
OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL29iamVjdC1z
dG9yZS1pbmxpbmUtYXV0b2luY3JlbWVudC1rZXktYWRkZWQtb24tcHV0LmpzOiBDb3BpZWQgZnJv
bSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29iamVjdC1zdG9yZS1pbmxp
bmUtYXV0b2luY3JlbWVudC1rZXktYWRkZWQtb24tcHV0Lmh0bWwuCisgICAgICAgICh0ZXN0KToK
KyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKHNldHVwT2JqZWN0U3RvcmUpOgorICAg
ICAgICAoYWRkU3VjY2Vzcyk6CisgICAgICAgIChnZXRTdWNjZXNzKToKKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9vYmplY3Qtc3RvcmUtcmVtb3ZlLXZhbHVl
cy5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9v
YmplY3Qtc3RvcmUtcmVtb3ZlLXZhbHVlcy5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAg
IChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChzZXRWZXJzaW9uKToKKyAgICAgICAgKGNyZWF0ZU9i
amVjdFN0b3JlKToKKyAgICAgICAgKGdldFJlY29yZCk6CisgICAgICAgIChkZWxldGVSZWNvcmQp
OgorICAgICAgICAoZ2V0UmVjb3JkQWdhaW4pOgorICAgICAgICAoZmluYWxDaGVjayk6CisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvb2JqZWN0c3RvcmVuYW1l
cy5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9v
YmplY3RzdG9yZW5hbWVzLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNj
ZXNzKToKKyAgICAgICAgKGNsZWFuRGF0YWJhc2UpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvcmVzb3VyY2VzL29kZC1yZXN1bHQtb3JkZXIuanM6IENvcGllZCBmcm9tIExh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2RkLXJlc3VsdC1vcmRlci5odG1s
LgorICAgICAgICAodGVzdCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChzZXR1
cE9iamVjdFN0b3JlKToKKyAgICAgICAgKGFkZFJlY29yZCk6CisgICAgICAgIChhZGRTdWNjZXNz
KToKKyAgICAgICAgKGdldFN1Y2Nlc3MpOgorICAgICAgICAoZGVsZXRlUmVjb3JkKToKKyAgICAg
ICAgKGRlbGV0ZVN1Y2Nlc3MpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEv
cmVzb3VyY2VzL29wZW4tZGF0YWJhc2UtbnVsbC1uYW1lLmpzOiBBZGRlZC4KKyAgICAgICAgKHRl
c3QpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L21vemlsbGEvcmVzb3VyY2VzL3B1dC1nZXQtdmFsdWVzLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3B1dC1nZXQtdmFsdWVzLmh0bWwuCisgICAg
ICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGNsZWFuRGF0YWJh
c2UpOgorICAgICAgICAocG9zdEFkZCk6CisgICAgICAgIChwb3N0R2V0KToKKyAgICAgICAgKHBv
c3RBZGRJbnQpOgorICAgICAgICAocG9zdEdldEludCk6CisgICAgICAgIChwb3N0QWRkQXV0b0lu
Y3JlbWVudCk6CisgICAgICAgIChwb3N0R2V0QXV0b0luY3JlbWVudCk6CisgICAgICAgIChwb3N0
QWRkSW50QXV0b0luY3JlbWVudCk6CisgICAgICAgIChwb3N0R2V0SW50QXV0b0luY3JlbWVudCk6
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvcmVhZG9ubHkt
dHJhbnNhY3Rpb25zLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL3JlYWRvbmx5LXRyYW5zYWN0aW9ucy5odG1sLgorICAgICAgICAodGVzdCk6Cisg
ICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChjbGVhbkRhdGFiYXNlKToKKyAgICAgICAg
KHNldFZlcnNpb25Db21wbGV0ZSk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9yZXNvdXJjZXMvcmVhZHdyaXRlLXRyYW5zYWN0aW9ucy5qczogQ29waWVkIGZyb20gTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZWFkd3JpdGUtdHJhbnNhY3Rpb25zLmh0
bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGNs
ZWFuRGF0YWJhc2UpOgorICAgICAgICAoc2V0VmVyc2lvbkNvbXBsZXRlKToKKyAgICAgICAgKHBv
c3RBZGQpOgorICAgICAgICAocG9zdEFkZDIpOgorICAgICAgICAocG9zdFB1dCk6CisgICAgICAg
IChwb3N0UHV0Mik6CisgICAgICAgIChwb3N0UHV0Myk6CisgICAgICAgIChwb3N0UHV0NCk6Cisg
ICAgICAgIChwb3N0RGVsZXRlKToKKyAgICAgICAgKHBvc3REZWxldGUyKToKKyAgICAgICAgKiBz
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9yZWFkeVN0YXRlLmpzOiBDb3BpZWQg
ZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3JlYWR5U3RhdGUuaHRt
bC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAoc2V0
dXBPYmplY3RTdG9yZSk6CisgICAgICAgIChnZXRSZWNvcmQpOgorICAgICAgICAoZmluYWxDaGVj
ayk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvcmVtb3Zl
LWluZGV4LmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL3JlbW92ZS1pbmRleC5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChvcGVuU3Vj
Y2Vzcyk6CisgICAgICAgIChjcmVhdGVBbmREZWxldGVJbmRleCk6CisgICAgICAgICogc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvcmVtb3ZlLW9iamVjdHN0b3JlLmpzOiBDb3Bp
ZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3JlbW92ZS1vYmpl
Y3RzdG9yZS5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6Cisg
ICAgICAgIChjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlLnJlcXVlc3Qub25zdWNjZXNzKToK
KyAgICAgICAgKGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoY2hlY2tP
YmplY3RTdG9yZSk6CisgICAgICAgIChwb3N0U2V0VmVyc2lvbjIucmVxdWVzdC5vbnN1Y2Nlc3Mp
OgorICAgICAgICAocG9zdFNldFZlcnNpb24yKToKKyAgICAgICAgKGRlbGV0ZVNlY29uZE9iamVj
dFN0b3JlKToKKyAgICAgICAgKHNldFZlcnNpb24zKToKKyAgICAgICAgKHBvc3RTZXRWZXJzaW9u
Myk6CisgICAgICAgIChkZWxldGVUaGlyZE9iamVjdFN0b3JlKToKKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy92ZXJzaW9uY2hhbmdlLWFib3J0LmpzOiBDb3Bp
ZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3ZlcnNpb25jaGFu
Z2UtYWJvcnQuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgor
ICAgICAgICAoY2xlYW5EYXRhYmFzZSk6CisgICAgICAgIChwb3N0QWJvcnQpOgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL3ZlcnNpb25jaGFuZ2UuanM6IENv
cGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvdmVyc2lvbmNo
YW5nZS5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChvcGVuU3VjY2Vzcy5kYjEub252
ZXJzaW9uY2hhbmdlKToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKG9wZW5TdWNj
ZXNzMi5kYjIub252ZXJzaW9uY2hhbmdlKToKKyAgICAgICAgKG9wZW5TdWNjZXNzMi5yZXF1ZXN0
Lm9uYmxvY2tlZCk6CisgICAgICAgIChvcGVuU3VjY2VzczIpOgorICAgICAgICAocG9zdFNldFZl
cnNpb24pOgorICAgICAgICAob3BlblN1Y2Nlc3MzLnJlcXVlc3Qub25ibG9ja2VkKToKKyAgICAg
ICAgKG9wZW5TdWNjZXNzMyk6CisgICAgICAgIChwb3N0U2V0VmVyc2lvbjIpOgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvdmVyc2lvbmNoYW5nZS1hYm9ydC5odG1sOgorICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvdmVyc2lvbmNoYW5nZS5odG1sOgorICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL211dGF0aW5nLWN1cnNvci5odG1sOgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdFN0b3JlLXJlcXVpcmVkLWFyZ3VtZW50cy5odG1sOgor
ICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWF1dG9pbmNyZW1lbnQuaHRt
bDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jbGVhci5odG1sOgor
ICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWNvdW50Lmh0bWw6CisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY3Vyc29yLmh0bWw6CisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtcmVtb3Zlb2JqZWN0c3RvcmUuaHRtbDoK
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9vZGQtc3RyaW5ncy5odG1sOgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL29wZW4tY2xvc2UtdmVyc2lvbi5odG1sOgorICAgICAgICAqIHN0
b3JhZ2UvaW5kZXhlZGRiL29wZW4tY3Vyc29yLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRl
eGVkZGIvb3Blbi1kdXJpbmctdHJhbnNhY3Rpb24uaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2lu
ZGV4ZWRkYi9wcmVmZXRjaC1idWdmaXgtMTA4MDcxLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9p
bmRleGVkZGIvcXVldWVkLWNvbW1hbmRzLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVk
ZGIvcmVhZG9ubHktcHJvcGVydGllcy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L3JlYWRvbmx5Lmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVxdWVzdC1ldmVu
dC1wcm9wYWdhdGlvbi5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9jb25zdGFudHMuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2NvbnN0YW50cy5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL2NyZWF0ZS1hbmQtcmVtb3ZlLW9iamVjdC1zdG9yZS5qczogQ29waWVk
IGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlLWFuZC1yZW1vdmUtb2Jq
ZWN0LXN0b3JlLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToK
KyAgICAgICAgKHRlc3RDcmVhdGVBbmRSZW1vdmUpOgorICAgICAgICAoY2xlYW5EYXRhYmFzZSk6
CisgICAgICAgIChzZXRWZXJzaW9uQ29tcGxldGUpOgorICAgICAgICAodHJ5T25jZU1vcmUpOgor
ICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jcmVhdGUtb2JqZWN0LXN0b3Jl
LW9wdGlvbnMuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Ny
ZWF0ZS1vYmplY3Qtc3RvcmUtb3B0aW9ucy5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAg
IChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChjbGVhbkRhdGFiYXNlKToKKyAgICAgICAgKHNldFZl
cnNpb25Db21wbGV0ZSk6CisgICAgICAgIChwdXRCKToKKyAgICAgICAgKGdldEEpOgorICAgICAg
ICAoZ2V0Qik6CisgICAgICAgIChjaGVja0IpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9jcmVhdGVPYmplY3RTdG9yZS1uYW1lLWFyZ3VtZW50LXJlcXVpcmVkLmpzOiBD
b3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jcmVhdGVPYmplY3RTdG9y
ZS1uYW1lLWFyZ3VtZW50LXJlcXVpcmVkLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAg
KG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUpOgor
ICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jcmVhdGVPYmplY3RTdG9yZS1u
dWxsLW5hbWUuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Ny
ZWF0ZU9iamVjdFN0b3JlLW51bGwtbmFtZS5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAg
IChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKToK
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWNvbnRpbnVlLmpz
OiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItY29udGlu
dWUuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3BlbkRhdGFiYXNlKToKKyAgICAg
ICAgKHNldFZlcnNpb24pOgorICAgICAgICAoZGVsZXRlRXhpc3RpbmcpOgorICAgICAgICAoYWRk
RGF0YSk6CisgICAgICAgIChhc2NlbmRpbmdUZXN0KToKKyAgICAgICAgKGFzY2VuZGluZ0NhbGxi
YWNrKToKKyAgICAgICAgKGRlc2NlbmRpbmdUZXN0KToKKyAgICAgICAgKGRlc2NlbmRpbmdDYWxs
YmFjayk6CisgICAgICAgIChhc2NlbmRpbmdFcnJvclRlc3RMZXNzVGhhbi5yZXF1ZXN0Lm9uc3Vj
Y2Vzcyk6CisgICAgICAgIChhc2NlbmRpbmdFcnJvclRlc3RMZXNzVGhhbik6CisgICAgICAgIChh
c2NlbmRpbmdFcnJvclRlc3RFcXVhbC5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgIChhc2Nl
bmRpbmdFcnJvclRlc3RFcXVhbCk6CisgICAgICAgIChkZXNjZW5kaW5nRXJyb3JUZXN0R3JlYXRl
clRoYW4ucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAoZGVzY2VuZGluZ0Vycm9yVGVzdEdy
ZWF0ZXJUaGFuKToKKyAgICAgICAgKGRlc2NlbmRpbmdFcnJvclRlc3RFcXVhbC5yZXF1ZXN0Lm9u
c3VjY2Vzcyk6CisgICAgICAgIChkZXNjZW5kaW5nRXJyb3JUZXN0RXF1YWwpOgorICAgICAgICAo
b25UcmFuc2FjdGlvbkNvbXBsZXRlKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvY3Vyc29yLWRlbGV0ZS5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvY3Vyc29yLWRlbGV0ZS5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChv
cGVuU3VjY2Vzcyk6CisgICAgICAgIChzZXRWZXJzaW9uU3VjY2Vzcyk6CisgICAgICAgIChvcGVu
Q3Vyc29yKToKKyAgICAgICAgKGN1cnNvclN1Y2Nlc3MpOgorICAgICAgICAoY3Vyc29yRW1wdHkp
OgorICAgICAgICAoYWRkT2JqZWN0KToKKyAgICAgICAgKG9wZW5DdXJzb3IyKToKKyAgICAgICAg
KGRlbGV0ZU9iamVjdCk6CisgICAgICAgICh2ZXJpZnlPYmplY3REZWxldGVkKToKKyAgICAgICAg
KiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWluY29uc2lzdGVuY3kuanM6IENv
cGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1pbmNvbnNpc3Rl
bmN5Lmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAg
ICAgKHNldFZlcnNpb25TdWNjZXNzKToKKyAgICAgICAgKG9wZW5CYXNpY0N1cnNvcik6CisgICAg
ICAgIChjaGVja0N1cnNvcik6CisgICAgICAgICh0cmFuc2FjdGlvbkNvbXBsZXRlKToKKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWluZGV4LWRlbGV0ZS5qczog
Q29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWluZGV4LWRl
bGV0ZS5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAg
ICAgIChzZXRWZXJzaW9uU3VjY2Vzcyk6CisgICAgICAgIChvcGVuQ3Vyc29yKToKKyAgICAgICAg
KGN1cnNvclN1Y2Nlc3MpOgorICAgICAgICAoY3Vyc29yRW1wdHkpOgorICAgICAgICAoYWRkT2Jq
ZWN0KToKKyAgICAgICAgKG9wZW5DdXJzb3IyKToKKyAgICAgICAgKGRlbGV0ZU9iamVjdCk6Cisg
ICAgICAgICh2ZXJpZnlPYmplY3REZWxldGVkKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvY3Vyc29yLWtleS1vcmRlci5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWtleS1vcmRlci5odG1sLgorICAgICAgICAodGVzdCk6
CisgICAgICAgIChwcmVwYXJlRGF0YWJhc2Uub3BlbnJlcS5vbnN1Y2Nlc3MudmVycmVxLm9uc3Vj
Y2Vzcyk6CisgICAgICAgIChwcmVwYXJlRGF0YWJhc2Uub3BlbnJlcS5vbnN1Y2Nlc3MpOgorICAg
ICAgICAocHJlcGFyZURhdGFiYXNlKToKKyAgICAgICAgKGNvbXBhcmUpOgorICAgICAgICAoY2hl
Y2tTdG9yZS5jdXJyZXEub25zdWNjZXNzLmdldHJlcS5vbnN1Y2Nlc3MpOgorICAgICAgICAoY2hl
Y2tTdG9yZS5jdXJyZXEub25zdWNjZXNzKToKKyAgICAgICAgKGNoZWNrU3RvcmUpOgorICAgICAg
ICAoZmluaXNoVXApOgorICAgICAgICAodGVzdEtleUNvbXBhcmUpOgorICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItcHJpbWFyeS1rZXktb3JkZXIuanM6IENvcGll
ZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1wcmltYXJ5LWtleS1v
cmRlci5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChwcmVwYXJlRGF0YWJhc2Uub3Bl
blJlcXVlc3Qub25zdWNjZXNzLnZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAg
ICAgIChwcmVwYXJlRGF0YWJhc2Uub3BlblJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHBy
ZXBhcmVEYXRhYmFzZSk6CisgICAgICAgIChwb3B1bGF0ZVN0b3JlKToKKyAgICAgICAgKGNoZWNr
U3RvcmUuY3Vyc29yUmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAoY2hlY2tTdG9yZSk6Cisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1yZXZlcnNlLWJ1Zy5q
czogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXJldmVy
c2UtYnVnLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKHByZXBhcmVEYXRhYmFzZS5v
cGVucmVxLm9uc3VjY2Vzcy52ZXJyZXEub25zdWNjZXNzKToKKyAgICAgICAgKHByZXBhcmVEYXRh
YmFzZS5vcGVucmVxLm9uc3VjY2Vzcyk6CisgICAgICAgIChwcmVwYXJlRGF0YWJhc2UpOgorICAg
ICAgICAocG9wdWxhdGVTdG9yZSk6CisgICAgICAgICh0ZXN0Q3Vyc29yLnRlc3RGdW5jdGlvbik6
CisgICAgICAgICh0ZXN0Q3Vyc29yKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvY3Vyc29yLXNraXAtZGVsZXRlZC5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvY3Vyc29yLXNraXAtZGVsZXRlZC5odG1sLgorICAgICAgICAodGVzdCk6
CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChzZXRWZXJzaW9uU3VjY2Vzcyk6Cisg
ICAgICAgICh2YXIuc2lsZW50RXJyb3JIYW5kbGVyKToKKyAgICAgICAgKHJlc2V0T2JqZWN0U3Rv
cmUuY2FsbGJhY2spOgorICAgICAgICAocmVzZXRPYmplY3RTdG9yZSk6CisgICAgICAgIChjb250
YWlucyk6CisgICAgICAgICh0ZXN0Q3Vyc29yLnJlcXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25z
dWNjZXNzKToKKyAgICAgICAgKHRlc3RDdXJzb3IucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAg
ICAodGVzdEN1cnNvcik6CisgICAgICAgIChiYXNpY0N1cnNvclRlc3QpOgorICAgICAgICAocmV2
ZXJzZUN1cnNvclRlc3QpOgorICAgICAgICAoaW5kZXhDdXJzb3JUZXN0KToKKyAgICAgICAgKHRy
YW5zYWN0aW9uQ29tcGxldGUpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9jdXJzb3ItdXBkYXRlLXZhbHVlLWFyZ3VtZW50LXJlcXVpcmVkLmpzOiBDb3BpZWQgZnJvbSBM
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItdXBkYXRlLXZhbHVlLWFyZ3VtZW50
LXJlcXVpcmVkLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToK
KyAgICAgICAgKHRlc3RHcm91cDEucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdy
b3VwMSk6CisgICAgICAgICh0ZXN0R3JvdXAyLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAg
KHRlc3RHcm91cDIpOgorICAgICAgICAodGVzdEdyb3VwMy5yZXF1ZXN0Lm9uc3VjY2Vzcyk6Cisg
ICAgICAgICh0ZXN0R3JvdXAzKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvY3Vyc29yLXVwZGF0ZS5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvY3Vyc29yLXVwZGF0ZS5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChvcGVu
U3VjY2Vzcyk6CisgICAgICAgIChzZXRWZXJzaW9uU3VjY2Vzcyk6CisgICAgICAgIChvcGVuQmFz
aWNDdXJzb3IpOgorICAgICAgICAoYmFzaWNVcGRhdGVDdXJzb3IucmVxdWVzdC5vbnN1Y2Nlc3Mp
OgorICAgICAgICAoYmFzaWNVcGRhdGVDdXJzb3IpOgorICAgICAgICAoYmFzaWNDaGVja0N1cnNv
cik6CisgICAgICAgIChhdXRvSW5jcmVtZW50VXBkYXRlQ3Vyc29yLnJlcXVlc3Qub25zdWNjZXNz
KToKKyAgICAgICAgKGF1dG9JbmNyZW1lbnRVcGRhdGVDdXJzb3IpOgorICAgICAgICAoYXV0b0lu
Y3JlbWVudENoZWNrQ3Vyc29yKToKKyAgICAgICAgKGtleVBhdGhVcGRhdGVDdXJzb3IucmVxdWVz
dC5vbnN1Y2Nlc3MpOgorICAgICAgICAoa2V5UGF0aFVwZGF0ZUN1cnNvcik6CisgICAgICAgIChr
ZXlQYXRoQ2hlY2tDdXJzb3IpOgorICAgICAgICAoa2V5Q3Vyc29yKToKKyAgICAgICAgKHRyYW5z
YWN0aW9uQ29tcGxldGUpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9k
YXRhLWNvcnJ1cHRpb24uanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2RhdGEtY29ycnVwdGlvbi5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChvcGVu
U3VjY2Vzcyk6CisgICAgICAgIChzZXRWZXJzaW9uU3VjY2Vzcyk6CisgICAgICAgIChhZGREYXRh
KToKKyAgICAgICAgKGdldERhdGEpOgorICAgICAgICAoZG9DaGVjayk6CisgICAgICAgICogc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGFiYXNlLWJhc2ljcy5qczogQ29waWVkIGZyb20g
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtYmFzaWNzLmh0bWwuCisgICAg
ICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKHNldFZlcnNpb25T
dWNjZXNzKToKKyAgICAgICAgKHNldFZlcnNpb25BZ2Fpbik6CisgICAgICAgIChjcmVhdGVPYmpl
Y3RTdG9yZSk6CisgICAgICAgIChjaGVja09iamVjdFN0b3JlKToKKyAgICAgICAgKGNvbW1pdEFu
ZENvbnRpbnVlKToKKyAgICAgICAgKHRlc3RTZXRWZXJzaW9uQWJvcnQpOgorICAgICAgICAoY3Jl
YXRlQW5vdGhlck9iamVjdFN0b3JlKToKKyAgICAgICAgKGNoZWNrTWV0YWRhdGEpOgorICAgICAg
ICAodGVzdENsb3NlKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGF0
YWJhc2UtbmFtZS11bmRlZmluZWQuanM6IEFkZGVkLgorICAgICAgICAodGVzdCk6CisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGFiYXNlLW9kZC1uYW1lcy5qczogQ29w
aWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2Utb2RkLW5hbWVz
Lmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5OZXh0RGF0YWJhc2UpOgorICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kYXRhYmFzZS1xdW90YS5qczogQ29w
aWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtcXVvdGEuaHRt
bC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAoc2V0
VmVyc2lvblN1Y2Nlc3MpOgorICAgICAgICAoY2hlY2tPYmplY3RTdG9yZSk6CisgICAgICAgIChj
aGVja1F1b3RhRW5mb3JjaW5nKToKKyAgICAgICAgKGFkZERhdGEpOgorICAgICAgICAobG9nRXJy
b3IpOgorICAgICAgICAodGVzdENvbXBsZXRlKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvZGVsZXRlLWNsb3NlZC1kYXRhYmFzZS1vYmplY3QuanM6IENvcGllZCBmcm9t
IExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZS1jbG9zZWQtZGF0YWJhc2Utb2Jq
ZWN0Lmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5EQkNvbm5lY3Rpb24pOgor
ICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAob3BlblN1Y2Nlc3MyKToKKyAgICAgICAg
KHNldFZlcnNpb24pOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kZWxl
dGUtcmFuZ2UuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Rl
bGV0ZS1yYW5nZS5odG1sLgorICAgICAgICAodGVzdC5yZXF1ZXN0Lm9uc3VjY2Vzcy5yZXF1ZXN0
Lm9uc3VjY2Vzcy5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgICh0ZXN0LnJlcXVlc3Qub25z
dWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHRlc3QucmVxdWVzdC5vbnN1Y2Nl
c3MpOgorICAgICAgICAodGVzdCk6CisgICAgICAgIChjaGVja0tleXMucmVxdWVzdC5vbnN1Y2Nl
c3MpOgorICAgICAgICAoY2hlY2tLZXlzKToKKyAgICAgICAgKHJ1blRlc3RzLm5leHRUZXN0KToK
KyAgICAgICAgKHJ1blRlc3RzKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvZGVsZXRlSW5kZXguanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2RlbGV0ZUluZGV4Lmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNj
ZXNzKToKKyAgICAgICAgKHR3aWRkbGVJbmRleGVzKToKKyAgICAgICAgKHBvc3RUd2lkZGxpbmcp
OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kZWxldGVPYmplY3RTdG9y
ZS1uYW1lLWFyZ3VtZW50LXJlcXVpcmVkLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9kZWxldGVPYmplY3RTdG9yZS1uYW1lLWFyZ3VtZW50LXJlcXVpcmVkLmh0
bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGNy
ZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9kZWxldGVPYmplY3RTdG9yZS1udWxsLW5hbWUuanM6IENvcGllZCBmcm9tIExh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZU9iamVjdFN0b3JlLW51bGwtbmFtZS5o
dG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChj
cmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvZHVwbGljYXRlcy5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvZHVwbGljYXRlcy5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChz
ZXRWZXJzaW9uKToKKyAgICAgICAgKGRlbGV0ZUV4aXN0aW5nKToKKyAgICAgICAgKGFkZERhdGEp
OgorICAgICAgICAoYWRkTW9yZSk6CisgICAgICAgIChnZXREYXRhKToKKyAgICAgICAgKGdldE9i
amVjdERhdGEpOgorICAgICAgICAoZ2V0RGF0YUZhaWwpOgorICAgICAgICAoZ2V0T2JqZWN0RGF0
YUZhaWwpOgorICAgICAgICAob3BlbktleUN1cnNvcik6CisgICAgICAgIChjdXJzb3IxQ29udGlu
dWUpOgorICAgICAgICAoY3Vyc29yMUNvbnRpbnVlMik6CisgICAgICAgIChvcGVuT2JqZWN0Q3Vy
c29yKToKKyAgICAgICAgKGN1cnNvcjJDb250aW51ZSk6CisgICAgICAgIChjdXJzb3IyQ29udGlu
dWUyKToKKyAgICAgICAgKGxhc3QpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9lcnJvci1jYXVzZXMtYWJvcnQtYnktZGVmYXVsdC5qczogQ29waWVkIGZyb20gTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZXJyb3ItY2F1c2VzLWFib3J0LWJ5LWRlZmF1bHQuaHRt
bC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAoc2V0VmVyc2lvbik6CisgICAgICAgIChkZWxl
dGVFeGlzdGluZyk6CisgICAgICAgIChhZGREYXRhKToKKyAgICAgICAgKGFkZE1vcmUpOgorICAg
ICAgICAocHJldmVudFRoZURlZmF1bHQpOgorICAgICAgICAodHJhbnNhY3Rpb25Db21wbGV0ZWQp
OgorICAgICAgICAoYWxsb3dEZWZhdWx0KToKKyAgICAgICAgKHRyYW5zYWN0aW9uQWJvcnRlZDEp
OgorICAgICAgICAodHJhbnNhY3Rpb25BYm9ydGVkMik6CisgICAgICAgICogc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL2V4Y2VwdGlvbi1pbi1ldmVudC1hYm9ydHMuanM6IENvcGllZCBmcm9t
IExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2V4Y2VwdGlvbi1pbi1ldmVudC1hYm9ydHMu
aHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAoc2V0VmVyc2lvbik6CisgICAgICAgIChk
ZWxldGVFeGlzdGluZyk6CisgICAgICAgIChzdGFydFRlc3QpOgorICAgICAgICAoY2F1c2VFeGNl
cHRpb24pOgorICAgICAgICAodHJhbnNhY3Rpb25BYm9ydGVkMSk6CisgICAgICAgICh0cmFuc2Fj
dGlvbkFib3J0ZWQyKToKKyAgICAgICAgKHRocm93QW5kQ2F0Y2gpOgorICAgICAgICAodHJhbnNh
Y3Rpb25Db21wbGV0ZWQxLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHRyYW5zYWN0aW9u
Q29tcGxldGVkMSk6CisgICAgICAgICh0cmFuc2FjdGlvbkNvbXBsZXRlZDIpOgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9mYWN0b3J5LWJhc2ljcy5qczogQ29waWVkIGZy
b20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZmFjdG9yeS1iYXNpY3MuaHRtbC4KKyAg
ICAgICAgKHRlc3QpOgorICAgICAgICAoZ2V0RGF0YWJhc2VOYW1lc1N1Y2Nlc3MxKToKKyAgICAg
ICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGdldERhdGFiYXNlTmFtZXNTdWNjZXNzMik6Cisg
ICAgICAgIChkZWxldGVEYXRhYmFzZVN1Y2Nlc3MpOgorICAgICAgICAoZ2V0RGF0YWJhc2VOYW1l
c1N1Y2Nlc3MzKToKKyAgICAgICAgKGRlbGV0ZURhdGFiYXNlU3VjY2VzczIpOgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9mYWN0b3J5LWNtcC5qczogQ29waWVkIGZyb20g
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZmFjdG9yeS1jbXAuaHRtbC4KKyAgICAgICAg
KHRlc3QpOgorICAgICAgICAodGVzdFZhbGlkS2V5cyk6CisgICAgICAgICh0ZXN0SW52YWxpZEtl
eXMpOgorICAgICAgICAodGVzdElkZW50aWNhbEtleXMpOgorICAgICAgICAqIHN0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9mYWN0b3J5LWRlbGV0ZWRhdGFiYXNlLWludGVyYWN0aW9ucy5qczog
Q29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZmFjdG9yeS1kZWxldGVk
YXRhYmFzZS1pbnRlcmFjdGlvbnMuaHRtbC4KKyAgICAgICAgKENvbm5lY3Rpb24udGhpcy5vcGVu
LnJlcS5vbnN1Y2Nlc3MudGhhdC5oYW5kbGUub252ZXJzaW9uY2hhbmdlKToKKyAgICAgICAgKENv
bm5lY3Rpb24udGhpcy5vcGVuLnJlcS5vbnN1Y2Nlc3MpOgorICAgICAgICAoQ29ubmVjdGlvbi50
aGlzLm9wZW4pOgorICAgICAgICAoQ29ubmVjdGlvbi50aGlzLmNsb3NlKToKKyAgICAgICAgKENv
bm5lY3Rpb24udGhpcy5zZXRWZXJzaW9uLnJlcS5vbmFib3J0KToKKyAgICAgICAgKENvbm5lY3Rp
b24udGhpcy5zZXRWZXJzaW9uLnJlcS5vbmJsb2NrZWQpOgorICAgICAgICAoQ29ubmVjdGlvbi50
aGlzLnNldFZlcnNpb24ucmVxLm9uc3VjY2Vzcy5kb19hc3luY19wdXRzLnJlcS5vbnN1Y2Nlc3Mp
OgorICAgICAgICAoQ29ubmVjdGlvbi50aGlzLnNldFZlcnNpb24ucmVxLm9uc3VjY2Vzcy5kb19h
c3luY19wdXRzKToKKyAgICAgICAgKENvbm5lY3Rpb24udGhpcy5zZXRWZXJzaW9uLnJlcS5vbnN1
Y2Nlc3MpOgorICAgICAgICAoQ29ubmVjdGlvbi50aGlzLnNldFZlcnNpb24ucmVxLm9uZXJyb3Ip
OgorICAgICAgICAoQ29ubmVjdGlvbi50aGlzLnNldFZlcnNpb24pOgorICAgICAgICAoQ29ubmVj
dGlvbik6CisgICAgICAgIChkZWxldGVEYXRhYmFzZS5yZXEub25zdWNjZXNzKToKKyAgICAgICAg
KGRlbGV0ZURhdGFiYXNlLnJlcS5vbmVycm9yKToKKyAgICAgICAgKGRlbGV0ZURhdGFiYXNlLnJl
cS5vbmJsb2NrZWQpOgorICAgICAgICAoZGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAocnVuU3Rl
cHMpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICh0ZXN0MS5ydW5TdGVwcy4pOgorICAgICAg
ICAodGVzdDEpOgorICAgICAgICAodGVzdDIucnVuU3RlcHMuKToKKyAgICAgICAgKHRlc3QyKToK
KyAgICAgICAgKHRlc3QzLnJ1blN0ZXBzLik6CisgICAgICAgICh0ZXN0Myk6CisgICAgICAgICog
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ZhY3RvcnktZGVsZXRlZGF0YWJhc2UuanM6IENv
cGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ZhY3RvcnktZGVsZXRlZGF0
YWJhc2UuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAoc3RhcnRTZXRWZXJzaW9uKToK
KyAgICAgICAgKGRlbGV0ZUV4aXN0aW5nKToKKyAgICAgICAgKGdldFZhbHVlKToKKyAgICAgICAg
KGFkZEluZGV4KToKKyAgICAgICAgKGRlbGV0ZURhdGFiYXNlLmRiLm9udmVyc2lvbmNoYW5nZSk6
CisgICAgICAgIChkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChyZW9wZW5EYXRhYmFzZSk6Cisg
ICAgICAgIChzdGFydFNldFZlcnNpb25BZ2Fpbik6CisgICAgICAgICh2ZXJpZnlOb3RGb3VuZCk6
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4LWNvdW50LmpzOiBD
b3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1jb3VudC5odG1s
LgorICAgICAgICAodGVzdC5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgICh0ZXN0KToKKyAg
ICAgICAgKHByZXBhcmVEYXRhYmFzZSk6CisgICAgICAgICh2ZXJpZnlDb3VudC5yZXF1ZXN0Lm9u
c3VjY2Vzcyk6CisgICAgICAgICh2ZXJpZnlDb3VudCk6CisgICAgICAgICh2ZXJpZnlDb3VudFdp
dGhSYW5nZS5uZXh0VGVzdC5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgICh2ZXJpZnlDb3Vu
dFdpdGhSYW5nZS5uZXh0VGVzdCk6CisgICAgICAgICh2ZXJpZnlDb3VudFdpdGhSYW5nZSk6Cisg
ICAgICAgICh2ZXJpZnlDb3VudFdpdGhLZXkubmV4dFRlc3QucmVxdWVzdC5vbnN1Y2Nlc3MpOgor
ICAgICAgICAodmVyaWZ5Q291bnRXaXRoS2V5Lm5leHRUZXN0KToKKyAgICAgICAgKHZlcmlmeUNv
dW50V2l0aEtleSk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4
LWN1cnNvci5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5k
ZXgtY3Vyc29yLmh0bWwuCisgICAgICAgIChvcGVuRGF0YWJhc2UpOgorICAgICAgICAoc2V0VmVy
c2lvbik6CisgICAgICAgIChkZWxldGVFeGlzdGluZyk6CisgICAgICAgIChhZGREYXRhKToKKyAg
ICAgICAgKHNjaGVkdWxlVGVzdHMpOgorICAgICAgICAocnVuTmV4dFRlc3QpOgorICAgICAgICAo
dGVzdFdpdGhpbkJvdW5kcyk6CisgICAgICAgIChjdXJzb3JJdGVyYXRpb24pOgorICAgICAgICAo
dGVzdE51bGxLZXlSYW5nZSk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L2luZGV4LWdldC1rZXktYXJndW1lbnQtcmVxdWlyZWQuanM6IENvcGllZCBmcm9tIExheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWdldC1rZXktYXJndW1lbnQtcmVxdWlyZWQuaHRt
bC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAoY3Jl
YXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL2luZGV4LW11bHRpZW50cnkuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2luZGV4LW11bHRpZW50cnkuaHRtbC4KKyAgICAgICAgKHRlc3QucmVx
dWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdCk6CisgICAgICAgIChwcmVwYXJlRGF0YWJh
c2UpOgorICAgICAgICAoYWRkRGF0YS50cmFuc2FjdGlvbi5vbmNvbXBsZXRlKToKKyAgICAgICAg
KGFkZERhdGEpOgorICAgICAgICAodmVyaWZ5SW5kZXhlcy5yZXF1ZXN0Lm9uc3VjY2Vzcyk6Cisg
ICAgICAgICh2ZXJpZnlJbmRleGVzKToKKyAgICAgICAgKHZlcmlmeVVuaXF1ZUNvbnN0cmFpbnQu
dHJhbnNhY3Rpb24ub25hYm9ydCk6CisgICAgICAgICh2ZXJpZnlVbmlxdWVDb25zdHJhaW50LnJl
cXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25lcnJvcik6CisgICAg
ICAgICh2ZXJpZnlVbmlxdWVDb25zdHJhaW50LnJlcXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25z
dWNjZXNzKToKKyAgICAgICAgKHZlcmlmeVVuaXF1ZUNvbnN0cmFpbnQucmVxdWVzdC5vbnN1Y2Nl
c3MpOgorICAgICAgICAodmVyaWZ5VW5pcXVlQ29uc3RyYWludCk6CisgICAgICAgIChjcmVhdGVJ
bmRleE9uU3RvcmVXaXRoRGF0YS5yZXF1ZXN0Lm9uc3VjY2Vzcy50cmFucy5vbmNvbXBsZXRlKToK
KyAgICAgICAgKGNyZWF0ZUluZGV4T25TdG9yZVdpdGhEYXRhLnJlcXVlc3Qub25zdWNjZXNzKToK
KyAgICAgICAgKGNyZWF0ZUluZGV4T25TdG9yZVdpdGhEYXRhKToKKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvaW5kZXgtcG9wdWxhdGlvbi5qczogQ29waWVkIGZyb20gTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtcG9wdWxhdGlvbi5odG1sLgorICAgICAg
ICAodGVzdCk6CisgICAgICAgIChkZWxldGVTdWNjZXNzKToKKyAgICAgICAgKGRvU2V0VmVyc2lv
bjEpOgorICAgICAgICAoc2V0VmVyc2lvbjEucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAo
c2V0VmVyc2lvbjEpOgorICAgICAgICAoZG9TZXRWZXJzaW9uMik6CisgICAgICAgIChzZXRWZXJz
aW9uMik6CisgICAgICAgIChzZXRWZXJzaW9uMkFib3J0KToKKyAgICAgICAgKiBzdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvaW5kZXgtdW5pcXVlLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC11bmlxdWUuaHRtbC4KKyAgICAgICAgKHRlc3QpOgor
ICAgICAgICAoc2V0VmVyc2lvbik6CisgICAgICAgIChkZWxldGVFeGlzdGluZyk6CisgICAgICAg
IChzZXRWZXJzaW9uQ29tcGxldGVkKToKKyAgICAgICAgKGFkZE1vcmVEYXRhKToKKyAgICAgICAg
KGFkZE1vcmVEYXRhRmFpbGVkKToKKyAgICAgICAgKGNoYW5nZURhdGFTdWNjZXNzKToKKyAgICAg
ICAgKGN1cnNvclN1Y2Nlc3MpOgorICAgICAgICAoa2V5Q3Vyc29yU3VjY2Vzcyk6CisgICAgICAg
IChhZGRNb3JlRGF0YVN1Y2Nlcyk6CisgICAgICAgIChkZWxldGVTdWNjZXNzKToKKyAgICAgICAg
KGZpbmFsQWRkU3VjY2Vzcyk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L2ludmFsaWQta2V5cy5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvaW52YWxpZC1rZXlzLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNj
ZXNzKToKKyAgICAgICAgKHRlc3RHcm91cDEpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9rZXktZ2VuZXJhdG9yLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9rZXktZ2VuZXJhdG9yLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAg
ICAgKHJ1blRlc3RzLm5leHRUZXN0LnJlcXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNz
LnJlcXVlc3Qub25zdWNjZXNzLnRyYW5zLm9uY29tcGxldGUpOgorICAgICAgICAocnVuVGVzdHMu
bmV4dFRlc3QucmVxdWVzdC5vbnN1Y2Nlc3MucmVxdWVzdC5vbnN1Y2Nlc3MucmVxdWVzdC5vbnN1
Y2Nlc3MpOgorICAgICAgICAocnVuVGVzdHMubmV4dFRlc3QucmVxdWVzdC5vbnN1Y2Nlc3MucmVx
dWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAocnVuVGVzdHMubmV4dFRlc3QucmVxdWVzdC5vbnN1
Y2Nlc3MpOgorICAgICAgICAocnVuVGVzdHMubmV4dFRlc3QpOgorICAgICAgICAoY2hlY2sucmVx
dWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAoY2hlY2spOgorICAgICAgICAoZGVmaW5lVGVzdCk6
CisgICAgICAgICguKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5
LXNvcnQtb3JkZXItYWNyb3NzLXR5cGVzLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9rZXktc29ydC1vcmRlci1hY3Jvc3MtdHlwZXMuaHRtbC4KKyAgICAgICAg
KHRlc3QpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAoYWRkS2V5MSk6CisgICAg
ICAgIChhZGRLZXkyKToKKyAgICAgICAgKGFkZEtleTMpOgorICAgICAgICAoYWRkS2V5NCk6Cisg
ICAgICAgIChhZGRLZXk1KToKKyAgICAgICAgKG9wZW5BQ3Vyc29yLnJlcXVlc3Qub25zdWNjZXNz
KToKKyAgICAgICAgKG9wZW5BQ3Vyc29yKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMva2V5LXNvcnQtb3JkZXItZGF0ZS5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIva2V5LXNvcnQtb3JkZXItZGF0ZS5odG1sLgorICAgICAgICAodGVz
dCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChhZGRLZXkxKToKKyAgICAgICAg
KGFkZEtleTIpOgorICAgICAgICAoYWRkS2V5Myk6CisgICAgICAgIChhZGRLZXk0KToKKyAgICAg
ICAgKG9wZW5BQ3Vyc29yLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKG9wZW5BQ3Vyc29y
KToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5LXR5cGUtYXJyYXku
anM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleS10eXBlLWFy
cmF5Lmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAg
ICAgKHNldFZlcnNpb25TdWNjZXNzKToKKyAgICAgICAgKHRlc3RWYWxpZEFycmF5S2V5cy50ZXN0
QXJyYXlQdXRHZXQucHV0cmVxLm9uc3VjY2Vzcy5nZXRyZXEub25zdWNjZXNzKToKKyAgICAgICAg
KHRlc3RWYWxpZEFycmF5S2V5cy50ZXN0QXJyYXlQdXRHZXQucHV0cmVxLm9uc3VjY2Vzcyk6Cisg
ICAgICAgICh0ZXN0VmFsaWRBcnJheUtleXMudGVzdEFycmF5UHV0R2V0KToKKyAgICAgICAgKHRl
c3RWYWxpZEFycmF5S2V5cy5uZXh0VGVzdCk6CisgICAgICAgICh0ZXN0VmFsaWRBcnJheUtleXMp
OgorICAgICAgICAobWFrZUFycmF5T2ZEZXB0aCk6CisgICAgICAgICh0ZXN0RGVwdGhMaW1pdHMp
OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXktdHlwZS1pbmZpbml0
eS5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5LXR5cGUt
aW5maW5pdHkuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgor
ICAgICAgICAodGVzdEdyb3VwMSk6CisgICAgICAgICh0ZXN0R3JvdXAyKToKKyAgICAgICAgKHRl
c3RHcm91cDMpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXlwYXRo
LWJhc2ljcy5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5
cGF0aC1iYXNpY3MuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3BlblN1Y2Nlc3Mp
OgorICAgICAgICAodGVzdFZhbGlkS2V5UGF0aHMpOgorICAgICAgICAodGVzdEludmFsaWRLZXlQ
YXRocyk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleXBhdGgtZWRn
ZXMuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgt
ZWRnZXMuaHRtbC4KKyAgICAgICAgKHRlc3QucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAo
dGVzdCk6CisgICAgICAgIChvcGVuU3VjY2Vzcy5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAg
IChvcGVuU3VjY2Vzcyk6CisgICAgICAgICh0ZXN0S2V5UGF0aHMucmVxdWVzdC5vbnN1Y2Nlc3Mp
OgorICAgICAgICAodGVzdEtleVBhdGhzKToKKyAgICAgICAgKHRlc3RLZXlQYXRoc0FuZEdlbmVy
YXRvci5yZXF1ZXN0Lm9uc3VjY2Vzcy5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgICh0ZXN0
S2V5UGF0aHNBbmRHZW5lcmF0b3IucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEtl
eVBhdGhzQW5kR2VuZXJhdG9yKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMva2V5cGF0aC1mZXRjaC1rZXkuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2tleXBhdGgtZmV0Y2gta2V5Lmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAg
ICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUp
OgorICAgICAgICAob3BlbkN1cnNvcik6CisgICAgICAgIChjaGVja0N1cnNvcik6CisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleXJhbmdlLXJlcXVpcmVkLWFyZ3VtZW50
cy5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cmFuZ2Ut
cmVxdWlyZWQtYXJndW1lbnRzLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5cmFuZ2UuanM6IENvcGllZCBmcm9tIExheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleXJhbmdlLmh0bWwuCisgICAgICAgIChjaGVja1Npbmds
ZUtleVJhbmdlKToKKyAgICAgICAgKGNoZWNrTG93ZXJCb3VuZEtleVJhbmdlKToKKyAgICAgICAg
KGNoZWNrVXBwZXJCb3VuZEtleVJhbmdlKToKKyAgICAgICAgKGNoZWNrQm91bmRLZXlSYW5nZSk6
CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
bGlzdC1vcmRlcmluZy5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbGlzdC1vcmRlcmluZy5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgICh0ZXN0U3Rv
cmVzQW5kSW5kZXhlcy5yZXF1ZXN0Lm9uc3VjY2Vzcy5yZXF1ZXN0Lm9uc3VjY2Vzcy5yZXF1ZXN0
Lm9uc3VjY2Vzcy5zaG91bGRCZVRydWUpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9tdXRhdGluZy1jdXJzb3IuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL211dGF0aW5nLWN1cnNvci5odG1sLgorICAgICAgICAodGVzdCk6CisgICAg
ICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChzZXRWZXJzaW9uU3VjY2Vzcyk6CisgICAgICAg
IChvcGVuRm9yd2FyZEN1cnNvcik6CisgICAgICAgIChmb3J3YXJkQ3Vyc29yLnJlcXVlc3Qub25z
dWNjZXNzKToKKyAgICAgICAgKGZvcndhcmRDdXJzb3IpOgorICAgICAgICAoZm9yd2FyZEN1cnNv
ckNvbXBsZXRlKToKKyAgICAgICAgKG9wZW5SZXZlcnNlQ3Vyc29yKToKKyAgICAgICAgKHJldmVy
c2VDdXJzb3IucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAocmV2ZXJzZUN1cnNvcik6Cisg
ICAgICAgIChyZXZlcnNlQ3Vyc29yQ29tcGxldGUpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9vYmplY3RTdG9yZS1yZXF1aXJlZC1hcmd1bWVudHMuanM6IENvcGllZCBm
cm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdFN0b3JlLXJlcXVpcmVkLWFy
Z3VtZW50cy5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6Cisg
ICAgICAgIChjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3RvcmUtYXV0b2luY3JlbWVudC5qczogQ29waWVk
IGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYXV0b2luY3Jl
bWVudC5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAg
ICAgIChzZXRWZXJzaW9uU3VjY2Vzcyk6CisgICAgICAgIChzZXRWZXJzaW9uQ29tcGxldGVkKToK
KyAgICAgICAgKGFkZEplZmZlcnNzb25TdWNjZXNzKToKKyAgICAgICAgKGFkZExpbmNvbG5XaXRo
SW5qZWN0S2V5U3VjY2Vzcyk6CisgICAgICAgIChnZXRMaW5jb2xuQWZ0ZXJJbmplY3RlZEtleVN1
Y2Nlc3MpOgorICAgICAgICAoYWRkTGluY29sbldpdGhFeHBsaWNpdEtleVN1Y2Nlc3MpOgorICAg
ICAgICAoZ2V0TGluY29sblN1Y2Nlc3MpOgorICAgICAgICAocHV0QWJyYWhhbVN1Y2Nlc3MpOgor
ICAgICAgICAoZ2V0QWJyYWhhbVN1Y2Nlc3MpOgorICAgICAgICAoYWRkQWRhbVN1Y2Nlc3MpOgor
ICAgICAgICAodGVzdExvbmdLZXlQYXRoLmN1cnNvclJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAg
ICAgKHRlc3RMb25nS2V5UGF0aCk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL29iamVjdHN0b3JlLWNsZWFyLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jbGVhci5odG1sLgorICAgICAgICAodGVzdCk6CisgICAg
ICAgIChzdGFydFNldFZlcnNpb24pOgorICAgICAgICAoZGVsZXRlRXhpc3RpbmcpOgorICAgICAg
ICAoY3JlYXRlU2Vjb25kT2JqZWN0U3RvcmVBbmRBZGRWYWx1ZSk6CisgICAgICAgIChjbGVhck9i
amVjdFN0b3JlKToKKyAgICAgICAgKGNsZWFyU3VjY2Vzcyk6CisgICAgICAgIChvcGVuQ3Vyc29y
U3VjY2Vzcyk6CisgICAgICAgIChvcGVuS2V5Q3Vyc29yU3VjY2Vzcyk6CisgICAgICAgIChzZXRW
ZXJzaW9uQ29tcGxldGUpOgorICAgICAgICAoZ2V0U3VjY2Vzcyk6CisgICAgICAgICogc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3JlLWNvdW50LmpzOiBDb3BpZWQgZnJvbSBM
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jb3VudC5odG1sLgorICAg
ICAgICAodGVzdC5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAg
KHByZXBhcmVEYXRhYmFzZSk6CisgICAgICAgICh2ZXJpZnlDb3VudC5yZXF1ZXN0Lm9uc3VjY2Vz
cyk6CisgICAgICAgICh2ZXJpZnlDb3VudCk6CisgICAgICAgICh2ZXJpZnlDb3VudFdpdGhSYW5n
ZS5uZXh0VGVzdC5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgICh2ZXJpZnlDb3VudFdpdGhS
YW5nZS5uZXh0VGVzdCk6CisgICAgICAgICh2ZXJpZnlDb3VudFdpdGhSYW5nZSk6CisgICAgICAg
ICh2ZXJpZnlDb3VudFdpdGhLZXkubmV4dFRlc3QucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAg
ICAodmVyaWZ5Q291bnRXaXRoS2V5Lm5leHRUZXN0KToKKyAgICAgICAgKHZlcmlmeUNvdW50V2l0
aEtleSk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3Jl
LWN1cnNvci5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2Jq
ZWN0c3RvcmUtY3Vyc29yLmh0bWwuCisgICAgICAgIChvcGVuRGF0YWJhc2UpOgorICAgICAgICAo
c2V0VmVyc2lvbik6CisgICAgICAgIChkZWxldGVFeGlzdGluZyk6CisgICAgICAgIChhZGREYXRh
KToKKyAgICAgICAgKHNjaGVkdWxlVGVzdHMpOgorICAgICAgICAocnVuTmV4dFRlc3QpOgorICAg
ICAgICAodGVzdFdpdGhpbkJvdW5kcyk6CisgICAgICAgIChjdXJzb3JJdGVyYXRpb24pOgorICAg
ICAgICAodGVzdE51bGxLZXlSYW5nZSk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL29iamVjdHN0b3JlLXJlbW92ZW9iamVjdHN0b3JlLmpzOiBDb3BpZWQgZnJvbSBMYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1yZW1vdmVvYmplY3RzdG9yZS5o
dG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChzdGFydFNldFZlcnNpb24pOgorICAgICAg
ICAoZGVsZXRlRXhpc3RpbmcpOgorICAgICAgICAoZ2V0VmFsdWUpOgorICAgICAgICAoYWRkSW5k
ZXgpOgorICAgICAgICAoZGVsZXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoY3JlYXRlT2JqZWN0
U3RvcmVBZ2Fpbik6CisgICAgICAgIChnZXRWYWx1ZUFnYWluKToKKyAgICAgICAgKHZlcmlmeU5v
dEZvdW5kKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2RkLXN0cmlu
Z3MuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29kZC1zdHJp
bmdzLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5OZXh0RGF0YWJhc2UpOgor
ICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAoYWRkQUtleSk6CisgICAgICAgIChjbG9z
ZURhdGFiYXNlKToKKyAgICAgICAgKHZlcmlmeU5leHREYXRhYmFzZSk6CisgICAgICAgIChvcGVu
U3VjY2VzczIpOgorICAgICAgICAoZ2V0QUtleSk6CisgICAgICAgIChvcGVuQ3Vyc29yU3VjY2Vz
cyk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4tY2xvc2UtdmVy
c2lvbi5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi1j
bG9zZS12ZXJzaW9uLmh0bWwuCisgICAgICAgIChDb25uZWN0aW9uLnRoaXMub3Blbi5yZXEub25z
dWNjZXNzLnRoYXQuaGFuZGxlLm9udmVyc2lvbmNoYW5nZSk6CisgICAgICAgIChDb25uZWN0aW9u
LnRoaXMub3Blbi5yZXEub25zdWNjZXNzKToKKyAgICAgICAgKENvbm5lY3Rpb24udGhpcy5vcGVu
KToKKyAgICAgICAgKENvbm5lY3Rpb24udGhpcy5jbG9zZSk6CisgICAgICAgIChDb25uZWN0aW9u
LnRoaXMuc2V0VmVyc2lvbi5yZXEub25hYm9ydCk6CisgICAgICAgIChDb25uZWN0aW9uLnRoaXMu
c2V0VmVyc2lvbi5yZXEub25ibG9ja2VkKToKKyAgICAgICAgKENvbm5lY3Rpb24udGhpcy5zZXRW
ZXJzaW9uLnJlcS5vbnN1Y2Nlc3MuZG9fYXN5bmNfcHV0cy5yZXEub25zdWNjZXNzKToKKyAgICAg
ICAgKENvbm5lY3Rpb24udGhpcy5zZXRWZXJzaW9uLnJlcS5vbnN1Y2Nlc3MuZG9fYXN5bmNfcHV0
cyk6CisgICAgICAgIChDb25uZWN0aW9uLnRoaXMuc2V0VmVyc2lvbi5yZXEub25zdWNjZXNzKToK
KyAgICAgICAgKENvbm5lY3Rpb24udGhpcy5zZXRWZXJzaW9uLnJlcS5vbmVycm9yKToKKyAgICAg
ICAgKENvbm5lY3Rpb24udGhpcy5zZXRWZXJzaW9uKToKKyAgICAgICAgKENvbm5lY3Rpb24pOgor
ICAgICAgICAocnVuU3RlcHMpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICh0ZXN0MS4pOgor
ICAgICAgICAodGVzdDEpOgorICAgICAgICAodGVzdDIuKToKKyAgICAgICAgKHRlc3QyKToKKyAg
ICAgICAgKHRlc3QzKToKKyAgICAgICAgKHRlc3QzLik6CisgICAgICAgICh0ZXN0NCk6CisgICAg
ICAgICh0ZXN0NSk6CisgICAgICAgICh0ZXN0Nik6CisgICAgICAgICh0ZXN0Ni5oYWxmRG9uZSk6
CisgICAgICAgICh0ZXN0Ni5maW5pc2hUZXN0KToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvb3Blbi1jdXJzb3IuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL29wZW4tY3Vyc29yLmh0bWwuCisgICAgICAgIChlbXB0eUN1cnNvclN1Y2Nl
c3MpOgorICAgICAgICAob3BlbkVtcHR5Q3Vyc29yKToKKyAgICAgICAgKGN1cnNvclN1Y2Nlc3Mp
OgorICAgICAgICAob3BlbkN1cnNvcik6CisgICAgICAgIChzZXRWZXJzaW9uU3VjY2Vzcyk6Cisg
ICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Blbi1kdXJpbmctdHJhbnNhY3Rpb24uanM6IENvcGllZCBm
cm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4tZHVyaW5nLXRyYW5zYWN0aW9u
Lmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKHByZXBhcmVEYXRhYmFzZS5vcGVucmVx
MS5vbnN1Y2Nlc3Muc2V0dmVycmVxLm9uc3VjY2Vzcy5zZXR2ZXJyZXEucmVzdWx0Lm9uY29tcGxl
dGUpOgorICAgICAgICAocHJlcGFyZURhdGFiYXNlLm9wZW5yZXExLm9uc3VjY2Vzcy5zZXR2ZXJy
ZXEub25zdWNjZXNzKToKKyAgICAgICAgKHByZXBhcmVEYXRhYmFzZS5vcGVucmVxMS5vbnN1Y2Nl
c3MpOgorICAgICAgICAocHJlcGFyZURhdGFiYXNlKToKKyAgICAgICAgKHN0YXJ0VHJhbnNhY3Rp
b24udHJhbnMub25jb21wbGV0ZSk6CisgICAgICAgIChzdGFydFRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKHRyeU9wZW5zLm9wZW5yZXEyLm9uc3VjY2Vzcyk6CisgICAgICAgICh0cnlPcGVucy5vcGVu
cmVxMy5vbnN1Y2Nlc3MpOgorICAgICAgICAodHJ5T3BlbnMpOgorICAgICAgICAqIHN0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9wcmVmZXRjaC1idWdmaXgtMTA4MDcxLmpzOiBDb3BpZWQgZnJv
bSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9wcmVmZXRjaC1idWdmaXgtMTA4MDcxLmh0
bWwuCisgICAgICAgICh0ZXN0LnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHRlc3QpOgor
ICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAoc2V0VmVyc2lvblN1Y2Nlc3MpOgorICAg
ICAgICAocmVzZXRPYmplY3RTdG9yZSk6CisgICAgICAgIChpdGVyYXRlQW5kRGVsZXRlRmlyc3RF
bGVtZW50LnJlcXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKGl0
ZXJhdGVBbmREZWxldGVGaXJzdEVsZW1lbnQucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAo
aXRlcmF0ZUFuZERlbGV0ZUZpcnN0RWxlbWVudCk6CisgICAgICAgIChwcmVmZXRjaEFuZEFib3J0
LnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHByZWZldGNoQW5kQWJvcnQpOgorICAgICAg
ICAodHJhbnNhY3Rpb25BYm9ydGVkKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvcXVldWVkLWNvbW1hbmRzLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9xdWV1ZWQtY29tbWFuZHMuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAg
ICAoc2V0VmVyc2lvbik6CisgICAgICAgIChkZWxldGVFeGlzdGluZy5yZXF1ZXN0Lm9uc3VjY2Vz
cyk6CisgICAgICAgIChkZWxldGVFeGlzdGluZyk6CisgICAgICAgICh2ZXJpZnlBZGQpOgorICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9yZWFkb25seS1wcm9wZXJ0aWVzLmpz
OiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZWFkb25seS1wcm9w
ZXJ0aWVzLmh0bWwuCisgICAgICAgIChzZXRSZWFkb25seVByb3BlcnR5KToKKyAgICAgICAgKHRl
c3QpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAoY3JlYXRlQW5kUG9wdWxhdGVP
YmplY3RTdG9yZSk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3JlYWRv
bmx5LmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZWFkb25s
eS5odG1sLgorICAgICAgICAoc2V0UmVhZG9ubHlQcm9wZXJ0eSk6CisgICAgICAgICh0ZXN0KToK
KyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0
U3RvcmUpOgorICAgICAgICAoYWRkU3VjY2Vzcyk6CisgICAgICAgIChjaGVja0N1cnNvcik6Cisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3JlcXVlc3QtZXZlbnQtcHJvcGFn
YXRpb24uanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3JlcXVl
c3QtZXZlbnQtcHJvcGFnYXRpb24uaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAoc2V0
VmVyc2lvbik6CisgICAgICAgIChkZWxldGVFeGlzdGluZyk6CisgICAgICAgIChzdGFydFRlc3Qp
OgorICAgICAgICAoYWxsb3dEZWZhdWx0KToKKyAgICAgICAgKHRyYW5zYWN0aW9uQWJvcnRlZCk6
CisgICAgICAgIChkYkVycm9yQ2FwdHVyZUNhbGxiYWNrKToKKyAgICAgICAgKGVycm9yQ2FwdHVy
ZUNhbGxiYWNrKToKKyAgICAgICAgKGVycm9yRmlyZWRDYWxsYmFjayk6CisgICAgICAgIChlcnJv
ckJ1YmJsZUNhbGxiYWNrKToKKyAgICAgICAgKGRiRXJyb3JCdWJibGVDYWxsYmFjayk6CisgICAg
ICAgICh0cmFuc2FjdGlvbkFib3J0ZWQyKToKKyAgICAgICAgKGRiU3VjY2Vzc0NhcHR1cmVDYWxs
YmFjayk6CisgICAgICAgIChzdWNjZXNzQ2FwdHVyZUNhbGxiYWNrKToKKyAgICAgICAgKHN1Y2Nl
c3NGaXJlZENhbGxiYWNrKToKKyAgICAgICAgKHN1Y2Nlc3NCdWJibGVDYWxsYmFjayk6CisgICAg
ICAgIChkYlN1Y2Nlc3NCdWJibGVDYWxsYmFjayk6CisgICAgICAgICh0cmFuc2FjdGlvbkNvbXBs
ZXRlKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2V0VmVyc2lvbi1u
dWxsLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRWZXJz
aW9uLW51bGwuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgor
ICAgICAgICAocG9zdFNldFZlcnNpb24pOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9zZXRWZXJzaW9uLXVuZGVmaW5lZC5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvc2V0VmVyc2lvbi11bmRlZmluZWQuaHRtbC4KKyAgICAgICAgKHRl
c3QpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9zZXRfdmVyc2lvbl9ibG9ja2VkLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9ibG9ja2VkLmh0bWwuCisgICAgICAgIChj
b25uZWN0aW9ucyk6CisgICAgICAgIChvcGVuREJDb25uZWN0aW9uKToKKyAgICAgICAgKG9wZW5T
dWNjZXNzKToKKyAgICAgICAgKGJsb2NrZWQpOgorICAgICAgICAoaW5TZXRWZXJzaW9uKToKKyAg
ICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2V0X3ZlcnNpb25fcXVldWUuanM6
IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJzaW9uX3F1
ZXVlLmh0bWwuCisgICAgICAgIChjb25uZWN0aW9ucyk6CisgICAgICAgIChvcGVuREJDb25uZWN0
aW9uKToKKyAgICAgICAgKG9wZW5TdWNjZXNzLmVsc2UucmVxdWVzdC5vbmVycm9yKToKKyAgICAg
ICAgKG9wZW5TdWNjZXNzLmVsc2UucmVxdWVzdDIub25lcnJvcik6CisgICAgICAgIChvcGVuU3Vj
Y2Vzcy5lbHNlLnJlcXVlc3QzLm9uZXJyb3IpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAg
ICAgICAoYmxvY2tlZDApOgorICAgICAgICAoYmxvY2tlZDEpOgorICAgICAgICAoYmxvY2tlZDIp
OgorICAgICAgICAoYmxvY2tlZDMpOgorICAgICAgICAoY29ubmVjdGlvbkVycm9yKToKKyAgICAg
ICAgKGluU2V0VmVyc2lvbjEpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9zdHJ1Y3R1cmVkLWNsb25lLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9zdHJ1Y3R1cmVkLWNsb25lLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAg
KHByZXBhcmVEYXRhYmFzZS5yZXF1ZXN0Lm9uc3VjY2Vzcy5yZXF1ZXN0Lm9uc3VjY2Vzcy5yZXF1
ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgIChwcmVwYXJlRGF0YWJhc2UucmVxdWVzdC5vbnN1Y2Nl
c3MucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAocHJlcGFyZURhdGFiYXNlLnJlcXVlc3Qu
b25zdWNjZXNzKToKKyAgICAgICAgKHByZXBhcmVEYXRhYmFzZSk6CisgICAgICAgIChzdGFydFRl
c3RzLm5leHRUZXN0KToKKyAgICAgICAgKHN0YXJ0VGVzdHMpOgorICAgICAgICAoZm9yRWFjaFdp
dGhDYWxsYmFjay5uZXh0VmFsdWUpOgorICAgICAgICAoZm9yRWFjaFdpdGhDYWxsYmFjayk6Cisg
ICAgICAgICh0ZXN0VmFsdWUucmVxdWVzdC5vbnN1Y2Nlc3MucmVxdWVzdC5vbnN1Y2Nlc3MpOgor
ICAgICAgICAodGVzdFZhbHVlLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHRlc3RWYWx1
ZSk6CisgICAgICAgIChpcyk6CisgICAgICAgIChhcnJheUNvbXBhcmUpOgorICAgICAgICAodGVz
dFByaW1pdGl2ZVZhbHVlKToKKyAgICAgICAgKHRlc3ROdWxsKToKKyAgICAgICAgKHRlc3RCb29s
ZWFuKToKKyAgICAgICAgKHRlc3RCb29sZWFuT2JqZWN0KToKKyAgICAgICAgKHRlc3RTdHJpbmcp
OgorICAgICAgICAodGVzdFN0cmluZ09iamVjdCk6CisgICAgICAgICh0ZXN0TnVtYmVyKToKKyAg
ICAgICAgKHRlc3ROdW1iZXJPYmplY3QpOgorICAgICAgICAodGVzdERhdGVPYmplY3QpOgorICAg
ICAgICAodGVzdFJlZ0V4cE9iamVjdC50ZXN0UmVnRXhwKToKKyAgICAgICAgKHRlc3RSZWdFeHBP
YmplY3QpOgorICAgICAgICAodGVzdEltYWdlRGF0YSk6CisgICAgICAgIChyZWFkQmxvYkFzVGV4
dC5yZWFkZXIub25sb2FkKToKKyAgICAgICAgKHJlYWRCbG9iQXNUZXh0LnJlYWRlci5vbmVycm9y
KToKKyAgICAgICAgKGNoZWNrQmxvYkNvbnRlbnRzKToKKyAgICAgICAgKHRlc3RGaWxlKToKKyAg
ICAgICAgKHRlc3RGaWxlTGlzdC50ZXN0VmFsdWUpOgorICAgICAgICAodGVzdEFycmF5LnRlc3RW
YWx1ZSk6CisgICAgICAgICh0ZXN0T2JqZWN0LnRlc3RWYWx1ZSk6CisgICAgICAgICogc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWFib3J0LmpzOiBDb3BpZWQgZnJvbSBM
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hYm9ydC5odG1sLgorICAg
ICAgICAodGVzdCk6CisgICAgICAgIChzZXRWZXJzaW9uKToKKyAgICAgICAgKGRlbGV0ZUV4aXN0
aW5nKToKKyAgICAgICAgKHN0YXJ0VGVzdCk6CisgICAgICAgIChmaXJzdEFkZCk6CisgICAgICAg
IChzZWNvbmRBZGQpOgorICAgICAgICAodHJhbnNhY3Rpb25BYm9ydGVkKToKKyAgICAgICAgKiBz
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tYWZ0ZXItY2xvc2UuanM6IENv
cGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFmdGVy
LWNsb3NlLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAg
ICAgICAgKGluU2V0VmVyc2lvbik6CisgICAgICAgIChvblB1dFN1Y2Nlc3MpOgorICAgICAgICAo
cnVuRmlyc3RSZWd1bGFyVHJhbnNhY3Rpb24pOgorICAgICAgICAoZmlyc3RUcmFuc2FjdGlvbkNv
bXBsZXRlKToKKyAgICAgICAgKG9uU2Vjb25kT3Blbik6CisgICAgICAgIChvbkZpbmFsUHV0U3Vj
Y2Vzcyk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9u
LWFuZC1vYmplY3RzdG9yZS1jYWxscy5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYW5kLW9iamVjdHN0b3JlLWNhbGxzLmh0bWwuCisgICAg
ICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGNsZWFuRGF0YWJh
c2UpOgorICAgICAgICAoY3JlYXRlZCk6CisgICAgICAgIChhZnRlckNvbXBsZXRlKToKKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tYmFzaWNzLmpzOiBD
b3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1iYXNp
Y3MuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAg
ICAoY2xlYW5EYXRhYmFzZSk6CisgICAgICAgICh0ZXN0U2V0VmVyc2lvbkFib3J0MSk6CisgICAg
ICAgIChhZGRSZW1vdmVJREJPYmplY3RzKToKKyAgICAgICAgKHRlc3RTZXRWZXJzaW9uQWJvcnQy
KToKKyAgICAgICAgKGFkZFJlbW92ZUFkZElEQk9iamVjdHMpOgorICAgICAgICAodGVzdFNldFZl
cnNpb25BYm9ydDMpOgorICAgICAgICAoYWRkSURCT2JqZWN0cyk6CisgICAgICAgICh0ZXN0SW5h
Y3RpdmVBYm9ydGVkVHJhbnNhY3Rpb24pOgorICAgICAgICAodGVzdFNldFZlcnNpb25BYm9ydDQp
OgorICAgICAgICAoYWRkSURCT2JqZWN0c0FuZENvbW1pdCk6CisgICAgICAgICh0ZXN0SW5hY3Rp
dmVDb21wbGV0ZWRUcmFuc2FjdGlvbik6CisgICAgICAgICh0ZXN0U2V0VmVyc2lvbkFib3J0NSk6
CisgICAgICAgIChyZW1vdmVJREJPYmplY3RzKToKKyAgICAgICAgKHRlc3RTZXRWZXJzaW9uQWJv
cnQ2KToKKyAgICAgICAgKHN0YXJ0U2V0VmVyc2lvbik6CisgICAgICAgIChjaGVja01ldGFkYXRh
RW1wdHkpOgorICAgICAgICAoY2hlY2tNZXRhZGF0YUV4aXN0aW5nT2JqZWN0U3RvcmUpOgorICAg
ICAgICAoc2V0TmV3VmVyc2lvbik6CisgICAgICAgIChzZXRWZXJzaW9uU3VjY2Vzcyk6CisgICAg
ICAgIChjb21wbGV0ZUNhbGxiYWNrKToKKyAgICAgICAgKGFib3J0Q2FsbGJhY2spOgorICAgICAg
ICAodGVzdERPTVN0cmluZ0xpc3QpOgorICAgICAgICAodGVzdEludmFsaWRNb2RlKToKKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tY3Jhc2gtb24tYWJv
cnQuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0
aW9uLWNyYXNoLW9uLWFib3J0Lmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5T
dWNjZXNzKToKKyAgICAgICAgKHNldFZlcnNpb25TdWNjZXNzKToKKyAgICAgICAgKHNldFZlcnNp
b25Db21wbGV0ZSk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5z
YWN0aW9uLWV2ZW50LXByb3BhZ2F0aW9uLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1ldmVudC1wcm9wYWdhdGlvbi5odG1sLgorICAgICAg
ICAodGVzdCk6CisgICAgICAgIChzZXRWZXJzaW9uKToKKyAgICAgICAgKGRlbGV0ZUV4aXN0aW5n
KToKKyAgICAgICAgKHN0YXJ0VGVzdCk6CisgICAgICAgIChkYkFib3J0Q2FwdHVyZUNhbGxiYWNr
KToKKyAgICAgICAgKGFib3J0RmlyZWRDYWxsYmFjayk6CisgICAgICAgIChkYkFib3J0QnViYmxl
Q2FsbGJhY2spOgorICAgICAgICAoZGJDb21wbGV0ZUNhcHR1cmVDYWxsYmFjayk6CisgICAgICAg
IChjb21wbGV0ZUZpcmVkQ2FsbGJhY2spOgorICAgICAgICAoZGJDb21wbGV0ZUJ1YmJsZUNhbGxi
YWNrKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24t
cmVhZC1vbmx5LmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90
cmFuc2FjdGlvbi1yZWFkLW9ubHkuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3Bl
blN1Y2Nlc3MpOgorICAgICAgICAoY2xlYW5EYXRhYmFzZSk6CisgICAgICAgIChzZXRWZXJzaW9u
RG9uZSk6CisgICAgICAgIChnb3RDdXJzb3IpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy90cmFuc2FjdGlvbi1yb2xsYmFjay5qczogQ29waWVkIGZyb20gTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tcm9sbGJhY2suaHRtbC4KKyAgICAgICAg
KHRlc3QpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAoY2xlYW5EYXRhYmFzZSk6
CisgICAgICAgIChzZXRWZXJzaW9uQ29tcGxldGUpOgorICAgICAgICAoYWRkU3VjY2Vzcyk6Cisg
ICAgICAgIChvcGVuQ3Vyc29yU3VjY2Vzcyk6CisgICAgICAgIChhYm9ydENhbGxiYWNrKToKKyAg
ICAgICAgKGdldFN1Y2Nlc3MpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy90cmFuc2FjdGlvbi1zdG9yZU5hbWVzLXJlcXVpcmVkLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1zdG9yZU5hbWVzLXJlcXVpcmVkLmh0
bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGNy
ZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy90d28tdmVyc2lvbi1jaGFuZ2VzLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi90d28tdmVyc2lvbi1jaGFuZ2VzLmh0bWwuCisgICAgICAgICh0
ZXN0KToKKyAgICAgICAgKG9wZW5EQkNvbm5lY3Rpb24pOgorICAgICAgICAob3BlblN1Y2Nlc3Mp
OgorICAgICAgICAoaW5TZXRWZXJzaW9uMS5yZXEub25zdWNjZXNzKToKKyAgICAgICAgKGluU2V0
VmVyc2lvbjEpOgorICAgICAgICAoaW5TZXRWZXJzaW9uMi5yZXEub25zdWNjZXNzKToKKyAgICAg
ICAgKGluU2V0VmVyc2lvbjIpOgorICAgICAgICAoaGFsZndheURvbmUpOgorICAgICAgICAoY2hl
Y2tSZXN1bHRzKToKKyAgICAgICAgKHNldFZlcnNpb25Db21wbGV0ZS5yZXEub25zdWNjZXNzLnJl
cS5vbnN1Y2Nlc3MpOgorICAgICAgICAoc2V0VmVyc2lvbkNvbXBsZXRlLnJlcS5vbnN1Y2Nlc3Mp
OgorICAgICAgICAoc2V0VmVyc2lvbkNvbXBsZXRlKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvdmFsdWUtdW5kZWZpbmVkLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi92YWx1ZS11bmRlZmluZWQuaHRtbC4KKyAgICAgICAgKHRlc3Qp
OgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAoY3JlYXRlQW5kUG9wdWxhdGVPYmpl
Y3RTdG9yZSk6CisgICAgICAgIChnZXRWYWx1ZSk6CisgICAgICAgIChjaGVja1ZhbHVlKToKKyAg
ICAgICAgKGNoZWNrQ3Vyc29yKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvdmFsdWVzLW9kZC10eXBlcy5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvdmFsdWVzLW9kZC10eXBlcy5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAg
IChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChhZGRLZXkxKToKKyAgICAgICAgKGFkZERhdGEpOgor
ICAgICAgICAob3BlbkFDdXJzb3IucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAob3BlbkFD
dXJzb3IpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy92ZXJzaW9uLWNo
YW5nZS1hYm9ydC5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
dmVyc2lvbi1jaGFuZ2UtYWJvcnQuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3Bl
bkRCQ29ubmVjdGlvbik6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChpblNldFZl
cnNpb24xKToKKyAgICAgICAgKHNldFZlcnNpb24xQ29tcGxldGUpOgorICAgICAgICAoaW5TZXRW
ZXJzaW9uMik6CisgICAgICAgIChzZXRWZXJzaW9uMkFib3J0KToKKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvdmVyc2lvbi1jaGFuZ2UtZXhjbHVzaXZlLmpzOiBDb3BpZWQg
ZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9uLWNoYW5nZS1leGNsdXNp
dmUuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3BlbkRCQ29ubmVjdGlvbik6Cisg
ICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChpblNldFZlcnNpb24uZG9fYXN5bmNfcHV0
cy5yZXEub25zdWNjZXNzKToKKyAgICAgICAgKGluU2V0VmVyc2lvbi5kb19hc3luY19wdXRzKToK
KyAgICAgICAgKGluU2V0VmVyc2lvbik6CisgICAgICAgIChvcGVuQWdhaW5TdWNjZXNzKToKKyAg
ICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdmVyc2lvbmNoYW5nZXJlcXVlc3Qt
YWN0aXZlZG9tb2JqZWN0LmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi92ZXJzaW9uY2hhbmdlcmVxdWVzdC1hY3RpdmVkb21vYmplY3QuaHRtbC4KKyAgICAgICAg
KHRlc3QpOgorICAgICAgICAodGVzdERlbGV0ZURhdGFiYXNlLmRlbGV0ZVJlcXVlc3Qub25zdWNj
ZXNzKToKKyAgICAgICAgKHRlc3REZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChkZWxldGVTdWNj
ZXNzKToKKyAgICAgICAgKHRlc3RTZXRWZXJzaW9uLm9wZW5SZXF1ZXN0Lm9uc3VjY2Vzcy52ZXJz
aW9uUmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdFNldFZlcnNpb24ub3BlblJlcXVl
c3Qub25zdWNjZXNzKToKKyAgICAgICAgKHRlc3RTZXRWZXJzaW9uKToKKyAgICAgICAgKHZlcnNp
b25TdWNjZXNzKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9zZXRWZXJzaW9uLW51bGwu
aHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9zZXRWZXJzaW9uLXVuZGVmaW5lZC5o
dG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJzaW9uX2Jsb2NrZWQuaHRt
bDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9xdWV1ZS5odG1sOgor
ICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3N0cnVjdHVyZWQtY2xvbmUuaHRtbDoKKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hYm9ydC5odG1sOgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFmdGVyLWNsb3NlLmh0bWw6CisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYW5kLW9iamVjdHN0b3JlLWNhbGxzLmh0
bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYmFzaWNzLmh0bWw6
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY3Jhc2gtb24tYWJvcnQu
aHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1ldmVudC1wcm9w
YWdhdGlvbi5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXJl
YWQtb25seS5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXJv
bGxiYWNrLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tc3Rv
cmVOYW1lcy1yZXF1aXJlZC5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3R3by12
ZXJzaW9uLWNoYW5nZXMuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi92YWx1ZS11
bmRlZmluZWQuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi92YWx1ZXMtb2RkLXR5
cGVzLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1jaGFuZ2UtYWJv
cnQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb24tY2hh
bmdlLWFib3J0Lmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1jaGFu
Z2UtZXhjbHVzaXZlLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbmNo
YW5nZXJlcXVlc3QtYWN0aXZlZG9tb2JqZWN0Lmh0bWw6CisKIDIwMTItMDMtMjMgIEFsbGFuIFNh
bmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CiAKICAgICAgICAgVG91Y2gg
YWRqdXN0bWVudCBmb3JnZXRzIHNvbWUgc3VidGFyZ2V0IHF1YWRzLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY29uc3RhbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9jb25zdGFudHMuaHRtbAppbmRleCBmZThhY2FiMzgxOTVjZGNiZDc5
MjA4ODdhMGJmMGM0ZGE3MmI0YzQxLi5kN2YwZjE0NGRmZTdiYTc4YTY0MjRiMWUwYTc1MzM5MmYw
ZGJjZmIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jb25zdGFu
dHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jb25zdGFudHMuaHRt
bApAQCAtNCw0NCArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9z
Y3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IElu
ZGV4ZWREQidzIGNvbnN0YW50cy4iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3Zl
VmVuZG9yUHJlZml4ZXMoKTsKLSAgICBzaG91bGRCZSgiSURCRGF0YWJhc2VFeGNlcHRpb24uVU5L
Tk9XTl9FUlIiLCAiMSIpOwotICAgIHNob3VsZEJlKCJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT05f
VFJBTlNJRU5UX0VSUiIsICIyIik7Ci0gICAgc2hvdWxkQmUoIklEQkRhdGFiYXNlRXhjZXB0aW9u
Lk5PVF9GT1VORF9FUlIiLCAiMyIpOwotICAgIHNob3VsZEJlKCJJREJEYXRhYmFzZUV4Y2VwdGlv
bi5DT05TVFJBSU5UX0VSUiIsICI0Iik7Ci0gICAgc2hvdWxkQmUoIklEQkRhdGFiYXNlRXhjZXB0
aW9uLkRBVEFfRVJSIiwgIjUiKTsKLSAgICBzaG91bGRCZSgiSURCRGF0YWJhc2VFeGNlcHRpb24u
Tk9UX0FMTE9XRURfRVJSIiwgIjYiKTsKLSAgICBzaG91bGRCZSgiSURCRGF0YWJhc2VFeGNlcHRp
b24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIiwgIjciKTsKLSAgICBzaG91bGRCZSgiSURCRGF0
YWJhc2VFeGNlcHRpb24uQUJPUlRfRVJSIiwgIjgiKTsKLSAgICBzaG91bGRCZSgiSURCRGF0YWJh
c2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUiIsICI5Iik7Ci0gICAgc2hvdWxkQmUoIklEQkRhdGFi
YXNlRXhjZXB0aW9uLlRJTUVPVVRfRVJSIiwgIjEwIik7Ci0gICAgc2hvdWxkQmUoIklEQkRhdGFi
YXNlRXhjZXB0aW9uLlFVT1RBX0VSUiIsICIxMSIpOwotICAgIHNob3VsZEJlKCJJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5WRVJfRVJSIiwgIjEyIik7Ci0KLSAgICBzaG91bGRCZSgiSURCUmVxdWVzdC5M
T0FESU5HIiwgIjEiKTsKLSAgICBzaG91bGRCZSgiSURCUmVxdWVzdC5ET05FIiwgIjIiKTsKLQot
ICAgIHNob3VsZEJlKCJJREJDdXJzb3IuTkVYVCIsICIwIik7Ci0gICAgc2hvdWxkQmUoIklEQkN1
cnNvci5ORVhUX05PX0RVUExJQ0FURSIsICIxIik7Ci0gICAgc2hvdWxkQmUoIklEQkN1cnNvci5Q
UkVWIiwgIjIiKTsKLSAgICBzaG91bGRCZSgiSURCQ3Vyc29yLlBSRVZfTk9fRFVQTElDQVRFIiwg
IjMiKTsKLQotICAgIHNob3VsZEJlKCJJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkiLCAiMCIpOwot
ICAgIHNob3VsZEJlKCJJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFIiwgIjEiKTsKLSAgICBzaG91
bGRCZSgiSURCVHJhbnNhY3Rpb24uVkVSU0lPTl9DSEFOR0UiLCAiMiIpOwotfQotCi10ZXN0KCk7
Ci0KLWZpbmlzaEpTVGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
Y29uc3RhbnRzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlLWFuZC1yZW1vdmUtb2Jq
ZWN0LXN0b3JlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jcmVhdGUtYW5k
LXJlbW92ZS1vYmplY3Qtc3RvcmUuaHRtbAppbmRleCA3MTY5NWMwZDU3OGRkZWNmYmNhNjViYjVh
MjZlMGJkYjZmNzQ4NzNlLi43Yzg5ZjVlOTljNmI2ODQ0MzQ3ZDQ2YmFlNTczYjg0MDljNzQ1YWJm
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jcmVhdGUtYW5kLXJl
bW92ZS1vYmplY3Qtc3RvcmUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9jcmVhdGUtYW5kLXJlbW92ZS1vYmplY3Qtc3RvcmUuaHRtbApAQCAtNCw3MiArNCw3IEBACiA8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9k
eT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGNyZWF0ZSBhbmQg
cmVtb3ZlT2JqZWN0U3RvcmUiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVu
ZG9yUHJlZml4ZXMoKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4o
J2NyZWF0ZS1hbmQtcmVtb3ZlLW9iamVjdC1zdG9yZScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJvcGVu
U3VjY2VzcygpOiIpOwotICAgIHNlbGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKLSAgICB0ZXN0Q3JlYXRlQW5kUmVtb3ZlKCk7Ci0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlc3VsdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHRlc3RDcmVhdGVBbmRSZW1vdmUoKTsKLX0KLQot
ZnVuY3Rpb24gdGVzdENyZWF0ZUFuZFJlbW92ZSgpCi17Ci0gICAgZGVidWcoIlRyeWluZyBjcmVh
dGUiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCdkYi5jcmVhdGVPYmplY3RTdG9yZSgi
c29tZSBvcyIpJywgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9BTExPV0VEX0VSUiIpOwotICAg
IGRlYnVnKCJUcnlpbmcgcmVtb3ZlIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbignZGIu
ZGVsZXRlT2JqZWN0U3RvcmUoInNvbWUgb3MiKScsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1Rf
QUxMT1dFRF9FUlIiKTsKLX0KLQotZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCi17Ci0gICAgZGVs
ZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9zID0gZXZhbEFuZExvZygiZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ3RtcCcpIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ3RtcCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkNPTlNUUkFJTlRf
RVJSIik7Ci0gICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5vbmNvbXBsZXRlID0gc2V0VmVyc2lvbkNv
bXBsZXRlOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uQ29tcGxldGUoKQotewotICAgIHRyYW5z
ID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3RtcCddKSIpOwotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgndG1wJykuZ2V0KDApIik7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0cnlPbmNlTW9yZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gdHJ5T25jZU1vcmUoKQot
ewotICAgIHNob3VsZEJlVW5kZWZpbmVkKCJldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICB0
ZXN0Q3JlYXRlQW5kUmVtb3ZlKCk7Ci0KLSAgICBkZWJ1ZygiVHJ5aW5nIGNyZWF0ZSB3aXRoIHN0
b3JlIHRoYXQgYWxyZWFkeSBleGlzdHMiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJk
Yi5jcmVhdGVPYmplY3RTdG9yZSgndG1wJykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0FM
TE9XRURfRVJSIik7Ci0gICAgZGVidWcoIlRyeWluZyByZW1vdmUgd2l0aCBzdG9yZSB0aGF0IGFs
cmVhZHkgZXhpc3RzIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIuZGVsZXRlT2Jq
ZWN0U3RvcmUoJ3RtcCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9BTExPV0VEX0VSUiIp
OwotCi0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvY3JlYXRlLWFuZC1yZW1vdmUtb2JqZWN0LXN0b3JlLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlLW9iamVjdC1zdG9yZS1vcHRpb25zLmh0bWwgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jcmVhdGUtb2JqZWN0LXN0b3JlLW9wdGlvbnMu
aHRtbAppbmRleCBkZGFiMGYyYzhhZDg5ZDJiNjlhNjJmMzYwOTVjMTZhMDlhNmI3YzM1Li43N2Mz
MzNhYmU5ZGFjNjk3MDFlNmQxMDJiODVmNWRjMWZlNzFhYWU4IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jcmVhdGUtb2JqZWN0LXN0b3JlLW9wdGlvbnMuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jcmVhdGUtb2JqZWN0LXN0b3JlLW9w
dGlvbnMuaHRtbApAQCAtNCw4NyArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJl
ZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9u
KCJUZXN0IEluZGV4ZWREQidzIGNyZWF0ZU9iamVjdFN0b3JlJ3MgdmFyaW91cyBvcHRpb25zIik7
Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2NyZWF0ZS1vYmplY3Qtc3Rv
cmUtb3B0aW9ucycsICdkZXNjcmlwdGlvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBv
cGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygi
ZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKLXsKLSAgICBkZWxl
dGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ2EnLCB7a2V5UGF0aDogJ2EnfSkiKTsKLSAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVP
YmplY3RTdG9yZSgnYicpIik7Ci0KLSAgICBkZWJ1ZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2Mn
LCB7YXV0b0luY3JlbWVudDogdHJ1ZX0pOyIpOwotICAgIGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdj
Jywge2F1dG9JbmNyZW1lbnQ6IHRydWV9KTsKLSAgICBldmVudC50YXJnZXQucmVzdWx0Lm9uY29t
cGxldGUgPSBzZXRWZXJzaW9uQ29tcGxldGU7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb25Db21w
bGV0ZSgpCi17Ci0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9u
KFsnYScsICdiJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgc2hvdWxkQmUo
InRyYW5zLm1vZGUiLCAiSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSIpOwotCi0gICAgcmVxID0g
ZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2EnKS5wdXQoeydhJzogMH0pIik7Ci0gICAg
cmVxLm9uc3VjY2VzcyA9IHB1dEI7Ci0gICAgcmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb25DbGFzcygiZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ2QnLCAnYmFyJyk7IiwgIlR5cGVFcnJvciIpOwotICAgIGV2YWxBbmRFeHBlY3RF
eGNlcHRpb25DbGFzcygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2UnLCBmYWxzZSk7IiwgIlR5cGVF
cnJvciIpOwotfQotCi1mdW5jdGlvbiBwdXRCKCkKLXsKLSAgICByZXEgPSBldmFsQW5kTG9nKCJ0
cmFucy5vYmplY3RTdG9yZSgnYicpLnB1dCh7J2EnOiAwfSwgMCkiKTsgIC8vIE9PUFMKLSAgICBy
ZXEub25zdWNjZXNzID0gZ2V0QTsKLSAgICByZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotfQotCi1mdW5jdGlvbiBnZXRBKCkKLXsKLSAgICByZXEgPSBldmFsQW5kTG9nKCJ0
cmFucy5vYmplY3RTdG9yZSgnYScpLmdldCgwKSIpOwotICAgIHJlcS5vbnN1Y2Nlc3MgPSBnZXRC
OwotICAgIHJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0
aW9uIGdldEIoKQotewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LmEiLCAie2E6
IDB9Iik7Ci0KLSAgICByZXEgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYicpLmdl
dCgwKSIpOwotICAgIHJlcS5vbnN1Y2Nlc3MgPSBjaGVja0I7Ci0gICAgcmVxLm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY2hlY2tCKCkKLXsKLSAgICBz
aG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5hIiwgInthOiAwfSIpOwotCi0gICAgZmluaXNo
SlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvY3JlYXRlLW9iamVjdC1zdG9yZS1vcHRpb25zLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgog
PC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvY3JlYXRlT2JqZWN0U3RvcmUtbmFtZS1hcmd1bWVudC1yZXF1aXJlZC5odG1sIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlT2JqZWN0U3RvcmUtbmFtZS1hcmd1bWVudC1y
ZXF1aXJlZC5odG1sCmluZGV4IDI3MmZjNDMwOWFjY2Q1NjRmMmJmYzdmZDExZGI5NmM3MTZlMjZl
OGMuLmVlOGZhOGU3N2QyNGRlZjg4MGU3MTZlNmQ5NjFlODc5NDQzMDFiNTcgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZU9iamVjdFN0b3JlLW5hbWUtYXJn
dW1lbnQtcmVxdWlyZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9j
cmVhdGVPYmplY3RTdG9yZS1uYW1lLWFyZ3VtZW50LXJlcXVpcmVkLmh0bWwKQEAgLTEsNDYgKzEs
MTAgQEAKLTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3Jp
cHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBjcmVhdGVPYmplY3RTdG9yZSBuYW1l
IGFyZ3VtZW50IGlzIHJlcXVpcmVkIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92
ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsK
LSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRi
ID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZTsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY3JlYXRl
QW5kUG9wdWxhdGVPYmplY3RTdG9yZSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRi
KTsKLQotICAgIHNob3VsZFRocm93KCJkYi5jcmVhdGVPYmplY3RTdG9yZSgpOyIpOwotICAgIGZp
bmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL2NyZWF0ZU9iamVjdFN0b3JlLW5hbWUtYXJndW1lbnQtcmVxdWlyZWQuanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9jcmVhdGVPYmplY3RTdG9yZS1udWxsLW5hbWUuaHRtbCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZU9iamVjdFN0b3JlLW51bGwtbmFtZS5o
dG1sCmluZGV4IDRiMjVlMTQ0YTg4MDUwODAyYmUyNWY4YTFhYzdhY2FjMGMwMTA5ZTkuLmIyYWE4
YTMwODFhMTAwY2Q1MTFjMTVlNWRmY2UxMjE1NzkxNzdjZmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZU9iamVjdFN0b3JlLW51bGwtbmFtZS5odG1sCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZU9iamVjdFN0b3JlLW51bGwt
bmFtZS5odG1sCkBAIC0xLDQ3ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhl
YWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0Pgog
PC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIg
Y3JlYXRlT2JqZWN0U3RvcmUgbnVsbCBoYW5kbGluZyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsK
LSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24u
cGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkK
LXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0
aW9uIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQotewotICAgIGRlbGV0ZUFsbE9iamVj
dFN0b3JlcyhkYik7Ci0KLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9i
amVjdFN0b3JlKG51bGwpOyIpOwotICAgIHNob3VsZEJlKCJvYmplY3RTdG9yZS5uYW1lIiwgIidu
dWxsJyIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NyZWF0ZU9iamVjdFN0b3JlLW51bGwtbmFtZS5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1jb250aW51ZS5odG1sIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWNvbnRpbnVlLmh0bWwKaW5kZXggNzEyY2QyYjM5ZDYy
ZGEyNzkzYWZlNjYyMzAxNTZjY2UxMzEwNzUxYy4uMDZiZjcxNThhNzM5MzFjNDBhOTI3YmYxMDdi
ZWQ3YmRlMmYxMDBmMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
Y3Vyc29yLWNvbnRpbnVlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
Y3Vyc29yLWNvbnRpbnVlLmh0bWwKQEAgLTQsMjc1ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4gCi0K
LWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIElEQkN1cnNvci5jb250aW51ZSgpIHdpdGgg
YSBrZXkgcGFyYW1ldGVyLiIpOwotCi12YXIgZGF0ZSA9IG5ldyBEYXRlKCk7Ci0KLS8vIEluIG9y
ZGVyIG9mIGhvdyBpdCBzaG91bGQgYmUgc29ydGVkIGJ5IEluZGV4ZWREQi4KLXNlbGYudGVzdERh
dGEgPSBbCi0gICAgMCwKLSAgICAxLAotICAgIDEsCi0gICAgMy4xNDE1OSwKLSAgICAzLjE0MTU5
LAotICAgIDEwLAotICAgIDExLAotICAgIDEyLAotICAgIDEzLAotICAgIGRhdGUsCi0gICAgZGF0
ZSwKLSAgICBuZXcgRGF0ZShkYXRlLnZhbHVlT2YoKSArIDEwMDApLAotICAgICJBIGJpZyBzdHJp
bmciLAotICAgICJBIGJpZyBzdHJpbmciLAotICAgICJBIGJpdDEiLAotICAgICJBIGJpdDIiLAot
ICAgICJBIGJpdDMiLAotICAgICJ0aGUgQklHR0VTVCBzdHJpbmciCi1dOwotCi1mdW5jdGlvbiB0
ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIG9wZW5EYXRhYmFzZSgp
OwotfQotCi1mdW5jdGlvbiBvcGVuRGF0YWJhc2UoKQotewotICAgIHJlc3VsdCA9IGV2YWxBbmRM
b2coImluZGV4ZWREQi5vcGVuKCdjdXJzb3ItY29udGludWUnKSIpOwotICAgIHJlc3VsdC5vbnN1
Y2Nlc3MgPSBzZXRWZXJzaW9uOwotICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0gCi1mdW5jdGlvbiBzZXRWZXJzaW9uKCkKLXsKLSAgICBzZWxmLmRiID0g
ZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXN1bHQgPSBl
dmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVzdWx0Lm9u
c3VjY2VzcyA9IGRlbGV0ZUV4aXN0aW5nOwotICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKLXsKLSAgICBz
ZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0g
ICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1
bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLQotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7
Ci0KLSAgICBzZWxmLm9iamVjdFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ3NvbWVPYmplY3RTdG9yZScpIik7Ci0gICAgc2VsZi5pbmRleE9iamVjdCA9IGV2YWxBbmRM
b2coIm9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdzb21lSW5kZXgnLCAneCcpIik7Ci0gICAgc2Vs
Zi5uZXh0VG9BZGQgPSAwOwotICAgIGFkZERhdGEoKTsKLX0KLQotZnVuY3Rpb24gYWRkRGF0YSgp
Ci17Ci0gICAgcmVzdWx0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKHsneCc6IHRlc3RE
YXRhW25leHRUb0FkZF19LCBuZXh0VG9BZGQpIik7Ci0gICAgcmVzdWx0Lm9uc3VjY2VzcyA9ICsr
c2VsZi5uZXh0VG9BZGQgPCB0ZXN0RGF0YS5sZW5ndGggPyBhZGREYXRhIDogYXNjZW5kaW5nVGVz
dDsKLSAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1m
dW5jdGlvbiBhc2NlbmRpbmdUZXN0KCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgdmFyIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5vcGVuS2V5Q3Vyc29yKG51bGwsIElEQkN1cnNv
ci5ORVhUKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYXNjZW5kaW5nQ2FsbGJhY2s7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgc2VsZi5z
dGFnZSA9IDA7Ci19Ci0KLWZ1bmN0aW9uIGFzY2VuZGluZ0NhbGxiYWNrKCkKLQotewotICAgIGlm
IChzZWxmLnN0YWdlID09IDApIHsKLSAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1
bHQucHJpbWFyeUtleSIsICIwIik7Ci0gICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5y
ZXN1bHQuY29udGludWUoMy4xNDE1OSkiKTsKLSAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0g
MSkgewotICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5Iiwg
IjMiKTsKLSAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgp
Iik7Ci0gICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDIpIHsKLSAgICAgICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICI0Iik7Ci0gICAgICAgIGV2YWxBbmRM
b2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOwotICAgIH0gZWxzZSBpZiAoc2Vs
Zi5zdGFnZSA9PSAzKSB7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnBy
aW1hcnlLZXkiLCAiNSIpOwotICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0
LmNvbnRpbnVlKDEyKSIpOwotICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSA0KSB7Ci0gICAg
ICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiNyIpOwotICAg
ICAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKGRhdGUpIik7Ci0g
ICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDUpIHsKLSAgICAgICAgc2hvdWxkQmUoImV2ZW50
LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICI5Iik7Ci0gICAgICAgIGV2YWxBbmRMb2coImV2
ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOwotICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFn
ZSA9PSA2KSB7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlL
ZXkiLCAiMTAiKTsKLSAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250
aW51ZSgpIik7Ci0gICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDcpIHsKLSAgICAgICAgc2hv
dWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIxMSIpOwotICAgICAgICBl
dmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCdBIGJpdDEnKSIpOwotICAg
IH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSA4KSB7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50
YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMTQiKTsKLSAgICAgICAgZXZhbEFuZExvZygiZXZl
bnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgnQSBiaXQzJykiKTsKLSAgICB9IGVsc2UgaWYgKHNl
bGYuc3RhZ2UgPT0gOSkgewotICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5w
cmltYXJ5S2V5IiwgIjE2Iik7Ci0gICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1
bHQuY29udGludWUoJ3RoZSBCSUdHRVNUIHN0cmluZycpIik7Ci0gICAgfSBlbHNlIGlmIChzZWxm
LnN0YWdlID09IDEwKSB7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnBy
aW1hcnlLZXkiLCAiMTciKTsKLSAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3Vs
dC5jb250aW51ZSgpIik7Ci0gICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDExKSB7Ci0gICAg
ICAgIHNob3VsZEJlTnVsbCgiZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgICAgICBkZXNjZW5k
aW5nVGVzdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdGVzdEZh
aWxlZCgiSWxsZWdhbCBzdGFnZS4iKTsKLSAgICB9Ci0gICAgc2VsZi5zdGFnZSsrOwotfQotCi1m
dW5jdGlvbiBkZXNjZW5kaW5nVGVzdCgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIHZhciByZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhPYmplY3Qub3BlbktleUN1cnNvcihudWxsLCBJREJDdXJz
b3IuUFJFVikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlc2NlbmRpbmdDYWxsYmFjazsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICBzZWxm
LnN0YWdlID0gMDsKLX0KLQotZnVuY3Rpb24gZGVzY2VuZGluZ0NhbGxiYWNrKCkKLXsKLSAgICBp
ZiAoc2VsZi5zdGFnZSA9PSAwKSB7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVz
dWx0LnByaW1hcnlLZXkiLCAiMTciKTsKLSAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0
LnJlc3VsdC5jb250aW51ZSgnQSBiaXQyJykiKTsKLSAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2Ug
PT0gMSkgewotICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5
IiwgIjE1Iik7Ci0gICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGlu
dWUoKSIpOwotICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSAyKSB7Ci0gICAgICAgIHNob3Vs
ZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMTQiKTsKLSAgICAgICAgZXZh
bEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZShkYXRlKSIpOwotICAgIH0gZWxz
ZSBpZiAoc2VsZi5zdGFnZSA9PSAzKSB7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQu
cmVzdWx0LnByaW1hcnlLZXkiLCAiMTAiKTsKLSAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFy
Z2V0LnJlc3VsdC5jb250aW51ZSgpIik7Ci0gICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDQp
IHsKLSAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICI5
Iik7Ci0gICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoMSki
KTsKLSAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gNSkgewotICAgICAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjIiKTsKLSAgICAgICAgZXZhbEFuZExv
ZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7Ci0gICAgfSBlbHNlIGlmIChzZWxm
LnN0YWdlID09IDYpIHsKLSAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJp
bWFyeUtleSIsICIxIik7Ci0gICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQu
Y29udGludWUoKSIpOwotICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSA3KSB7Ci0gICAgICAg
IHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMCIpOwotICAgICAg
ICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKLSAgICB9IGVs
c2UgaWYgKHNlbGYuc3RhZ2UgPT0gOCkgewotICAgICAgICBzaG91bGRCZU51bGwoImV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKLSAgICAgICAgYXNjZW5kaW5nRXJyb3JUZXN0TGVzc1RoYW4oKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIklsbGVnYWwg
c3RhZ2UuIik7Ci0gICAgfQotICAgIHNlbGYuc3RhZ2UrKzsKLX0KLQotZnVuY3Rpb24gYXNjZW5k
aW5nRXJyb3JUZXN0TGVzc1RoYW4oKQotewotICAgIGRlYnVnKCIiKTsKLSAgICB2YXIgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3IobnVsbCwgSURCQ3Vyc29y
Lk5FWFQpIik7Ci0gICAgc2VsZi5zdGFnZSA9IDA7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigp
IHsKLSAgICAgICAgaWYgKHNlbGYuc3RhZ2UgPT09IDApIHsKLSAgICAgICAgICAgIHNob3VsZEJl
KCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMCIpOwotICAgICAgICAgICAgZXZh
bEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgzLjE0MTU5KSIpOwotICAgICAg
ICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gMSkgewotICAgICAgICAgICAgc2hvdWxkQmUoImV2
ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIzIik7Ci0gICAgICAgICAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKDEpIiwgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0gICAgICAgICAgICBhc2NlbmRpbmdFcnJvclRl
c3RFcXVhbCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJJbGxlZ2FsIHN0YWdlLiIpOwotICAgICAgICB9Ci0gICAgICAgIHNl
bGYuc3RhZ2UrKzsKLSAgICB9OwotfQotCi1mdW5jdGlvbiBhc2NlbmRpbmdFcnJvclRlc3RFcXVh
bCgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIHZhciByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5k
ZXhPYmplY3Qub3BlbktleUN1cnNvcihudWxsLCBJREJDdXJzb3IuTkVYVCkiKTsKLSAgICBzZWxm
LnN0YWdlID0gMDsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAoc2Vs
Zi5zdGFnZSA9PT0gMCkgewotICAgICAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1
bHQucHJpbWFyeUtleSIsICIwIik7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJn
ZXQucmVzdWx0LmNvbnRpbnVlKDMuMTQxNTkpIik7Ci0gICAgICAgIH0gZWxzZSBpZiAoc2VsZi5z
dGFnZSA9PSAxKSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5w
cmltYXJ5S2V5IiwgIjMiKTsKLSAgICAgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImV2
ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoMy4xNDE1OSkiLCAiSURCRGF0YWJhc2VFeGNlcHRp
b24uREFUQV9FUlIiKTsKLSAgICAgICAgICAgIGRlc2NlbmRpbmdFcnJvclRlc3RHcmVhdGVyVGhh
bigpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICB0
ZXN0RmFpbGVkKCJJbGxlZ2FsIHN0YWdlLiIpOwotICAgICAgICB9Ci0gICAgICAgIHNlbGYuc3Rh
Z2UrKzsKLSAgICB9OwotfQotCi1mdW5jdGlvbiBkZXNjZW5kaW5nRXJyb3JUZXN0R3JlYXRlclRo
YW4oKQotewotICAgIGRlYnVnKCIiKTsKLSAgICB2YXIgcmVxdWVzdCA9IGV2YWxBbmRMb2coImlu
ZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3IobnVsbCwgSURCQ3Vyc29yLlBSRVYpIik7Ci0gICAgc2Vs
Zi5zdGFnZSA9IDA7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHNl
bGYuc3RhZ2UgPT0gMCkgewotICAgICAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1
bHQucHJpbWFyeUtleSIsICIxNyIpOwotICAgICAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFy
Z2V0LnJlc3VsdC5jb250aW51ZSgnQSBiaXQyJykiKTsKLSAgICAgICAgfSBlbHNlIGlmIChzZWxm
LnN0YWdlID09IDEpIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0
LnByaW1hcnlLZXkiLCAiMTUiKTsKLSAgICAgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24o
ImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoJ0EgYml0MycpIiwgIklEQkRhdGFiYXNlRXhj
ZXB0aW9uLkRBVEFfRVJSIik7Ci0gICAgICAgICAgICBkZXNjZW5kaW5nRXJyb3JUZXN0RXF1YWwo
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgdGVz
dEZhaWxlZCgiSWxsZWdhbCBzdGFnZS4iKTsKLSAgICAgICAgfQotICAgICAgICBzZWxmLnN0YWdl
Kys7Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24gZGVzY2VuZGluZ0Vycm9yVGVzdEVxdWFsKCkKLXsK
LSAgICBkZWJ1ZygiIik7Ci0gICAgdmFyIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVj
dC5vcGVuS2V5Q3Vyc29yKG51bGwsIElEQkN1cnNvci5QUkVWKSIpOwotICAgIHNlbGYuc3RhZ2Ug
PSAwOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmIChzZWxmLnN0YWdl
ID09IDApIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1h
cnlLZXkiLCAiMTciKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1
bHQuY29udGludWUoJ0EgYml0MicpIik7Ci0gICAgICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9
PSAxKSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5
S2V5IiwgIjE1Iik7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJn
ZXQucmVzdWx0Iik7Ci0gICAgICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJldmVudC50
YXJnZXQucmVzdWx0LmNvbnRpbnVlKCdBIGJpdDInKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5E
QVRBX0VSUiIpOwotICAgICAgICAgICAgc2VsZi50cmFucy5vbmNvbXBsZXRlID0gb25UcmFuc2Fj
dGlvbkNvbXBsZXRlOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJJbGxlZ2FsIHN0YWdlLiIpOwotICAgICAgICB9Ci0gICAgICAg
IHNlbGYuc3RhZ2UrKzsKLSAgICB9OwotfQotCi1mdW5jdGlvbiBvblRyYW5zYWN0aW9uQ29tcGxl
dGUoKQotewotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImN1cnNvci5jb250aW51ZSgpIiwg
IklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOwotICAgIGZp
bmlzaEpTVGVzdCgpOwotfQotCi10ZXN0KCk7Ci0gCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvY3Vyc29yLWNvbnRpbnVlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5Pgog
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29y
LWRlbGV0ZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWRlbGV0
ZS5odG1sCmluZGV4IGQ3NDA3M2FiN2Y5YWMxOWNiNzAyN2FlZjdhMmJjMWFiM2FlMDZiM2MuLmVi
ZDZiN2Y3YzM1M2E4NGIwODVhN2Y0MTZiNmI2YTg4MWNmMDNkNDAgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1kZWxldGUuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItZGVsZXRlLmh0bWwKQEAgLTQsMTExICs0LDcg
QEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4K
IDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mgb3BlbkN1
cnNvci4iKTsKLQotdGVzdCgpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5k
b3JQcmVmaXhlcygpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbign
Y3Vyc29yLWRlbGV0ZScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVu
Y3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIHZhciBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZl
cnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNp
b25TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCi17Ci0gICAgZGVidWcoInNldFZl
cnNpb25TdWNjZXNzKCk6Iik7Ci0gICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwi
KTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJh
bnMub25jb21wbGV0ZSA9IG9wZW5DdXJzb3I7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMo
ZGIpOwotCi0gICAgdmFyIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBk
Yi5jcmVhdGVPYmplY3RTdG9yZSgndGVzdCcpIik7Ci0gICAgZXZhbEFuZExvZygib2JqZWN0U3Rv
cmUuYWRkKCdteVZhbHVlMScsICdteUtleTEnKSIpOwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0
b3JlLmFkZCgnbXlWYWx1ZTInLCAnbXlLZXkyJykiKTsKLSAgICBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZS5hZGQoJ215VmFsdWUzJywgJ215S2V5MycpIik7Ci0gICAgZXZhbEFuZExvZygib2JqZWN0
U3RvcmUuYWRkKCdteVZhbHVlNCcsICdteUtleTQnKSIpOwotfQotCi1mdW5jdGlvbiBvcGVuQ3Vy
c29yKCkKLXsKLSAgICBkZWJ1Zygib3BlbkN1cnNvcjEiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFu
cyA9IGRiLnRyYW5zYWN0aW9uKFsndGVzdCddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIp
OwotICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgibXlLZXkxIik7Ci0gICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCd0ZXN0Jykub3BlbkN1cnNv
cih7cmFuZ2U6IGtleVJhbmdlfSkiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvclN1
Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0g
ICAgY291bnRlciA9IDE7Ci19Ci0KLWZ1bmN0aW9uIGN1cnNvclN1Y2Nlc3MoKQotewotICAgIGlm
IChldmVudC50YXJnZXQucmVzdWx0ID09IG51bGwpIHsKLSAgICAgICAgc2hvdWxkQmUoImNvdW50
ZXIiLCAiNSIpOwotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3Rv
cmUoJ3Rlc3QnKS5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOwotICAgICAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGN1cnNvckVtcHR5OwotICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBldmFsQW5kTG9nKCJl
dmVudC50YXJnZXQucmVzdWx0LmRlbGV0ZSgpIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJldmVudC50YXJnZXQucmVzdWx0LnZhbHVlIiwgIm15VmFsdWUiICsgY291bnRlcisrKTsKLSAg
ICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKLX0KLQotZnVu
Y3Rpb24gY3Vyc29yRW1wdHkoKQotewotICAgIHNob3VsZEJlTnVsbCgiZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBhZGRPYmplY3Q7Ci19Ci0KLWZ1bmN0aW9u
IGFkZE9iamVjdCgpCi17Ci0gICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihb
J3Rlc3QnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICBvYmplY3RTdG9yZSA9
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3Rlc3QnKSIpOwot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ215VmFsdWUxJywgJ215
S2V5MScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuQ3Vyc29yMjsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3Bl
bkN1cnNvcjIoKQotewotICAgIGRlYnVnKCJvcGVuQ3Vyc29yMiIpOwotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZGVsZXRlT2JqZWN0OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBkZWxldGVPYmplY3QoKQotewotICAg
IHNob3VsZEJlTm9uTnVsbChldmVudC50YXJnZXQucmVzdWx0KTsKLSAgICBldmFsQW5kTG9nKCJl
dmVudC50YXJnZXQucmVzdWx0LmRlbGV0ZSgpIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
Im9iamVjdFN0b3JlLmdldCgnbXlLZXkxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHZl
cmlmeU9iamVjdERlbGV0ZWQ7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHZlcmlmeU9iamVjdERlbGV0ZWQoKQotewotICAgIHNo
b3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgInVuZGVmaW5lZCIpOwotICAgIGZpbmlzaEpT
VGVzdCgpOwotfQotCi0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jdXJzb3It
ZGVsZXRlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWluY29uc2lzdGVuY3kuaHRt
bCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1pbmNvbnNpc3RlbmN5Lmh0
bWwKaW5kZXggYTQ4NTc2YzgwYzk2NGVkODk3ZjJhZGRmNjRiM2U2ZGI0Y2U4NTNlNi4uZjJjZWEw
YjFhZDczZjE0ZDI2YzVlMWJhNDU3YzdmZTBhYzU5MGJmYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWluY29uc2lzdGVuY3kuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItaW5jb25zaXN0ZW5jeS5odG1sCkBAIC00
LDkxICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4K
IDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgY29uc2lzdGVu
Y3kgb2YgSW5kZXhlZERCJ3MgY3Vyc29yIG9iamVjdHMuIik7Ci0KLXRlc3QoKTsKLQotZnVuY3Rp
b24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2N1cnNvci1pbmNvbnNpc3RlbmN5JykiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17
Ci0gICAgdmFyIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0K
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIp
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldFZl
cnNpb25TdWNjZXNzKCkKLXsKLSAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKLSAg
ICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQg
PSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gb3BlbkJh
c2ljQ3Vyc29yOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIHZhciBv
YmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ2Jhc2ljU3RvcmUnKSIpOwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnc29t
ZVZhbHVlMScsICdzb21lS2V5MScpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIp
OwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnc29tZVZhbHVlMicsICdzb21lS2V5
MicpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2co
Im9iamVjdFN0b3JlLmFkZCgnc29tZVZhbHVlMycsICdzb21lS2V5MycpLm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgn
c29tZVZhbHVlNCcsICdzb21lS2V5NCcpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
ayIpOwotCi19Ci0KLWZ1bmN0aW9uIG9wZW5CYXNpY0N1cnNvcigpCi17Ci0gICAgZGVidWcoIm9w
ZW5CYXNpY0N1cnNvcigpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlv
bihbJ2Jhc2ljU3RvcmUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICB0cmFu
cy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21wbGV0
ZSA9IHRyYW5zYWN0aW9uQ29tcGxldGU7Ci0KLSAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxv
d2VyQm91bmQoInNvbWVLZXkxIik7Ci0gICAgc2VsZi5vYmplY3RTdG9yZSA9IGV2YWxBbmRMb2co
InRyYW5zLm9iamVjdFN0b3JlKCdiYXNpY1N0b3JlJykiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygib2JqZWN0U3RvcmUub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKLSAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGNoZWNrQ3Vyc29yOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotICAgIGNvdW50ZXIgPSAxOwotfQotCi1zdG9yZWRDdXJzb3IgPSBudWxs
OwotZnVuY3Rpb24gY2hlY2tDdXJzb3IoKQotewotICAgIGRlYnVnKCIiKQotICAgIGRlYnVnKCJj
aGVja0N1cnNvcigpIik7Ci0gICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkgewot
ICAgICAgICBzaG91bGRCZSgiY291bnRlciIsICI1Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgaWYgKHN0b3JlZEN1cnNvciA9PSBudWxsKQotICAgICAgc3RvcmVkQ3Vyc29yID0gZXZh
bEFuZExvZygic3RvcmVkQ3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgc2hv
dWxkQmVUcnVlKCJzdG9yZWRDdXJzb3IgPT09IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoInN0b3JlZEN1cnNvci5rZXkiLCAic29tZUtleSIgKyBjb3Vu
dGVyKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5
IiwgInNvbWVLZXkiICsgY291bnRlcik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzdG9y
ZWRDdXJzb3IudmFsdWUiLCAic29tZVZhbHVlIiArIGNvdW50ZXIpOwotICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZSIsICJzb21lVmFsdWUiICsgY291
bnRlcik7Ci0gICAgY291bnRlcisrOwotICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1
bHQuY29udGludWUoKSIpOwotfQotCi1mdW5jdGlvbiB0cmFuc2FjdGlvbkNvbXBsZXRlKCkKLXsK
LSAgICBkZWJ1ZygidHJhbnNhY3Rpb25Db21wbGV0ZSgpIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7
Ci19Ci0KLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2N1cnNvci1pbmNvbnNp
c3RlbmN5LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWluZGV4LWRlbGV0ZS5odG1s
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWluZGV4LWRlbGV0ZS5odG1s
CmluZGV4IDFjNjMwMDczZjU3MzE5YmE1N2QxNzNhYTc0MmI3OTI4YzEyZjU5YWMuLmFkY2E3OGVj
OTRhMjRlNWY4MGJmODg1ZGQxMTJlYTc3NDE3ZjQ5NDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1pbmRleC1kZWxldGUuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItaW5kZXgtZGVsZXRlLmh0bWwKQEAgLTQsMTE1
ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwv
aGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mg
b3BlbkN1cnNvci4iKTsKLQotdGVzdCgpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1v
dmVWZW5kb3JQcmVmaXhlcygpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
b3BlbignY3Vyc29yLWluZGV4LWRlbGV0ZScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBv
cGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIHZhciBkYiA9IGV2YWxBbmRM
b2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IHNldFZlcnNpb25TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCi17Ci0gICAg
ZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7Ci0gICAgc2VsZi50cmFucyA9IGV2YWxBbmRM
b2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJh
bnMgIT09IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJh
Y2s7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IG9wZW5DdXJzb3I7Ci0KLSAgICBkZWxldGVBbGxP
YmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCd0ZXN0JykiKTsKLSAgICBldmFsQW5kTG9nKCJv
YmplY3RTdG9yZS5jcmVhdGVJbmRleCgndGVzdEluZGV4JywgJ3gnKSIpOwotCi0gICAgZXZhbEFu
ZExvZygib2JqZWN0U3RvcmUuYWRkKHt4OiAxfSwgJ215S2V5MScpIik7Ci0gICAgZXZhbEFuZExv
Zygib2JqZWN0U3RvcmUuYWRkKHt4OiAyfSwgJ215S2V5MicpIik7Ci0gICAgZXZhbEFuZExvZygi
b2JqZWN0U3RvcmUuYWRkKHt4OiAzfSwgJ215S2V5MycpIik7Ci0gICAgZXZhbEFuZExvZygib2Jq
ZWN0U3RvcmUuYWRkKHt4OiA0fSwgJ215S2V5NCcpIik7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5DdXJz
b3IoKQotewotICAgIGRlYnVnKCJvcGVuQ3Vyc29yMSIpOwotICAgIGV2YWxBbmRMb2coInRyYW5z
ID0gZGIudHJhbnNhY3Rpb24oWyd0ZXN0J10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7
Ci0gICAga2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKDEpOwotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgndGVzdCcpLmluZGV4KCd0ZXN0SW5kZXgn
KS5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29y
U3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LSAgICBjb3VudGVyID0gMTsKLX0KLQotZnVuY3Rpb24gY3Vyc29yU3VjY2VzcygpCi17Ci0gICAg
aWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkgewotICAgICAgICBzaG91bGRCZSgiY291
bnRlciIsICI1Iik7Ci0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RT
dG9yZSgndGVzdCcpLmluZGV4KCd0ZXN0SW5kZXgnKS5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOwot
ICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvckVtcHR5OwotICAgICAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICB2YXIgZGVsZXRlUmVxdWVzdCA9IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1
bHQuZGVsZXRlKCkiKTsKLSAgICBkZWxldGVSZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAiY291
bnRlcisrIik7Ci0gICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgp
Iik7Ci19Ci0KLWZ1bmN0aW9uIGN1cnNvckVtcHR5KCkKLXsKLSAgICBzaG91bGRCZU51bGwoImV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gYWRkT2JqZWN0Owot
fQotCi1mdW5jdGlvbiBhZGRPYmplY3QoKQotewotICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIu
dHJhbnNhY3Rpb24oWyd0ZXN0J10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAg
b2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3Jl
KCd0ZXN0JykiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKHt4
OiAxfSwgJ215S2V5MScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuQ3Vyc29yMjsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVu
Y3Rpb24gb3BlbkN1cnNvcjIoKQotewotICAgIGRlYnVnKCJvcGVuQ3Vyc29yMiIpOwotICAgIGV2
YWxBbmRMb2coImluZGV4ID0gZXZlbnQudGFyZ2V0LnNvdXJjZS5pbmRleCgndGVzdEluZGV4Jyki
KTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXgub3BlbkN1cnNvcihrZXlSYW5nZSki
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZU9iamVjdDsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZGVsZXRlT2Jq
ZWN0KCkKLXsKLSAgICBzaG91bGRCZU5vbk51bGwoZXZlbnQudGFyZ2V0LnJlc3VsdCk7Ci0gICAg
ZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5kZWxldGUoKSIpOwotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleC5nZXQoMSkiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHZl
cmlmeU9iamVjdERlbGV0ZWQ7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHZlcmlmeU9iamVjdERlbGV0ZWQoKQotewotICAgIHNo
b3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgInVuZGVmaW5lZCIpOwotICAgIGZpbmlzaEpT
VGVzdCgpOwotfQotCi0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jdXJzb3It
aW5kZXgtZGVsZXRlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWtleS1vcmRlci5o
dG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWtleS1vcmRlci5odG1s
CmluZGV4IDNhMTFlNjkyOWI5YzRiYzljZGIzYzNhYjIxMmE3MGM2MjlkYTcwMDguLjQwMzA5ZGU0
NjgzZTY2Njc4ZGMyNzBmNjY3Mjk2NGU3MzA1M2RiNTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1rZXktb3JkZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3Ita2V5LW9yZGVyLmh0bWwKQEAgLTQsMjMwICs0LDcg
QEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4K
IDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGtleXMgb3Jk
ZXJpbmcgYW5kIHJlYWRiYWNrIGZyb20gY3Vyc29ycy4iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17
Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIHByZXBhcmVEYXRhYmFzZSgpOwot
fQotCi1mdW5jdGlvbiBwcmVwYXJlRGF0YWJhc2UoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBl
dmFsQW5kTG9nKCJvcGVucmVxID0gaW5kZXhlZERCLm9wZW4oJ2N1cnNvci1rZXktb3JkZXInKSIp
OwotICAgIG9wZW5yZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIG9w
ZW5yZXEub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGV2YWxBbmRMb2coImRiID0g
b3BlbnJlcS5yZXN1bHQiKTsKLSAgICAgICAgZXZhbEFuZExvZygidmVycmVxID0gZGIuc2V0VmVy
c2lvbignMScpIik7Ci0gICAgICAgIHZlcnJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci0gICAgICAgIHZlcnJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAg
ICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7Ci0gICAgICAg
ICAgICB2ZXJyZXEucmVzdWx0Lm9uY29tcGxldGUgPSBwb3B1bGF0ZVN0b3JlOwotICAgICAgICB9
OwotICAgIH07Ci19Ci0KLXNlbGYua2V5cyA9IFsKLSAgICAiLUluZmluaXR5IiwKLSAgICAiLU51
bWJlci5NQVhfVkFMVUUiLAotICAgICItMSIsCi0gICAgIi1OdW1iZXIuTUlOX1ZBTFVFIiwKLSAg
ICAiMCIsCi0gICAgIk51bWJlci5NSU5fVkFMVUUiLAotICAgICIxIiwKLSAgICAiTnVtYmVyLk1B
WF9WQUxVRSIsCi0gICAgIkluZmluaXR5IiwKLQotICAgICJuZXcgRGF0ZSgwKSIsCi0gICAgIm5l
dyBEYXRlKDEwMDApIiwKLSAgICAibmV3IERhdGUoMTMxNzM5OTkzMTAyMykiLAotCi0gICAgIicn
IiwKLSAgICAiJ1x4MDAnIiwKLSAgICAiJ2EnIiwKLSAgICAiJ2FhJyIsCi0gICAgIidiJyIsCi0g
ICAgIidiYSciLAotCi0gICAgIidceEEyJyIsIC8vIFUrMDBBMiBDRU5UIFNJR04KLSAgICAiJ1x1
NkMzNCciLCAvLyBVKzZDMzQgQ0pLIFVOSUZJRUQgSURFT0dSQVBIICh3YXRlcikKLSAgICAiJ1x1
RDgzNFx1REQxRSciLCAvLyBVKzFEMTFFIE1VU0lDQUwgU1lNQk9MIEctQ0xFRiAoVVRGLTE2IHN1
cnJvZ2F0ZSBwYWlyKQotICAgICInXHVGRkZEJyIsIC8vIFUrRkZGRCBSRVBMQUNFTUVOVCBDSEFS
QUNURVIKLQotICAgICJbXSIsCi0KLSAgICAiWy1JbmZpbml0eV0iLAotICAgICJbLU51bWJlci5N
QVhfVkFMVUVdIiwKLSAgICAiWy0xXSIsCi0gICAgIlstTnVtYmVyLk1JTl9WQUxVRV0iLAotICAg
ICJbMF0iLAotICAgICJbTnVtYmVyLk1JTl9WQUxVRV0iLAotICAgICJbMV0iLAotICAgICJbTnVt
YmVyLk1BWF9WQUxVRV0iLAotICAgICJbSW5maW5pdHldIiwKLQotICAgICJbbmV3IERhdGUoMCld
IiwKLSAgICAiW25ldyBEYXRlKDEwMDApXSIsCi0gICAgIltuZXcgRGF0ZSgxMzE3Mzk5OTMxMDIz
KV0iLAotCi0gICAgIlsnJ10iLAotICAgICJbJ1x4MDAnXSIsCi0gICAgIlsnYSddIiwKLSAgICAi
WydhYSddIiwKLSAgICAiWydiJ10iLAotICAgICJbJ2JhJ10iLAotCi0gICAgIlsnXHhBMiddIiwg
Ly8gVSswMEEyIENFTlQgU0lHTgotICAgICJbJ1x1NkMzNCddIiwgLy8gVSs2QzM0IENKSyBVTklG
SUVEIElERU9HUkFQSCAod2F0ZXIpCi0gICAgIlsnXHVEODM0XHVERDFFJ10iLCAvLyBVKzFEMTFF
IE1VU0lDQUwgU1lNQk9MIEctQ0xFRiAoVVRGLTE2IHN1cnJvZ2F0ZSBwYWlyKQotICAgICJbJ1x1
RkZGRCddIiwgLy8gVStGRkZEIFJFUExBQ0VNRU5UIENIQVJBQ1RFUgotCi0gICAgIltbXV0iLAot
Ci0gICAgIltbXSwgW11dIiwKLSAgICAiW1tdLCBbXSwgW11dIiwKLQotICAgICJbW1tdXV0iLAot
ICAgICJbW1tbXV1dXSIKLV07Ci0KLWZ1bmN0aW9uIGNvbXBhcmUoYSwgYikKLXsKLSAgICBpZiAo
dHlwZW9mIGEgIT09IHR5cGVvZiBiKSB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0K
LSAgICBzd2l0Y2ggKHR5cGVvZiBhKSB7Ci0gICAgICAgIGNhc2UgJ3VuZGVmaW5lZCc6IC8vIE5v
dCB2YWxpZCBrZXlzLCBidXQgY29tcGFyZSBhbnl3YXkuCi0gICAgICAgIGNhc2UgJ2Jvb2xlYW4n
OiAvLyBOb3QgdmFsaWQga2V5cywgYnV0IGNvbXBhcmUgYW55d2F5LgotICAgICAgICBjYXNlICdz
dHJpbmcnOgotICAgICAgICAgICAgcmV0dXJuIGEgPT09IGI7Ci0gICAgICAgIGNhc2UgJ251bWJl
cic6Ci0gICAgICAgICAgICBpZiAoYSA9PT0gYikgewotICAgICAgICAgICAgICAgIHJldHVybiAo
YSAhPT0gMCkgfHwgKDEgLyBhID09PSAxIC8gYik7IC8vIDAgaXNuJ3QgLTAKLSAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGEgIT09IGEgJiYgYiAhPT0gYjsgLy8g
TmFOIGlzIE5hTgotICAgICAgICAgICAgfQotICAgICAgICBjYXNlICdvYmplY3QnOgotICAgICAg
ICAgICAgaWYgKGEgaW5zdGFuY2VvZiBEYXRlICYmIGIgaW5zdGFuY2VvZiBEYXRlKSB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuICthID09PSArYjsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoYSBp
bnN0YW5jZW9mIEFycmF5ICYmIGIgaW5zdGFuY2VvZiBBcnJheSkgewotICAgICAgICAgICAgICAg
IGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGEubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb21wYXJl
KGFbaV0sIGJbaV0pKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBGb3IgdGhlIHB1cnBv
c2VzIG9mIHRoaXMgdGVzdCwgb3RoZXIgb2JqZWN0cyBkb24ndCBjb3VudAotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLX0KLQotZnVuY3Rpb24gcG9wdWxhdGVTdG9yZSgpCi17Ci0gICAgZGVidWcoIiIp
OwotICAgIGRlYnVnKCJwb3B1bGF0aW5nIHN0b3JlLi4uIik7Ci0gICAgZXZhbEFuZExvZygidHJh
bnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIp
OwotICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7Iik7
Ci0gICAgdHJhbnMub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHRyYW5z
Lm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB2YXIgY291bnQgPSAwOwot
ICAgIGtleXMuZm9yRWFjaChmdW5jdGlvbihrZXkpIHsKLSAgICAgICAgZXZhbEFuZExvZygic3Rv
cmUucHV0KCIgKyAoY291bnQrKykgKyAiLCAiICsga2V5ICsgIikiKTsKLSAgICB9KTsKLSAgICB0
cmFucy5vbmNvbXBsZXRlID0gY2hlY2tTdG9yZTsKLX0KLQotZnVuY3Rpb24gY2hlY2tTdG9yZSgp
Ci17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJpdGVyYXRpbmcgY3Vyc29yLi4uIik7Ci0g
ICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2Fj
dGlvbi5SRUFEX09OTFkpIik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RT
dG9yZSgnc3RvcmUnKTsiKTsKLSAgICB0cmFucy5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAg
IGV2YWxBbmRMb2coImNvdW50ID0gMCIpOwotICAgIGN1cnJlcSA9IGV2YWxBbmRMb2coImN1cnJl
cSA9IHN0b3JlLm9wZW5DdXJzb3IoKSIpOwotICAgIGN1cnJlcS5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci0gICAgY3VycmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAg
ICAgICBpZiAoY3VycmVxLnJlc3VsdCkgewotICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29y
ID0gY3VycmVxLnJlc3VsdCIpOwotICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJjb21wYXJlKGN1
cnNvci5rZXksICIgKyBrZXlzW2NvdW50XSArICIpIik7Ci0gICAgICAgICAgICBldmFsQW5kTG9n
KCJnZXRyZXEgPSBzdG9yZS5nZXQoY3Vyc29yLmtleSkiKTsKLSAgICAgICAgICAgIGdldHJlcS5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgICAgICBnZXRyZXEub25z
dWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJnZXRy
ZXEucmVzdWx0ID09PSBjb3VudCsrIik7Ci0gICAgICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVl
KCk7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc2hvdWxk
QmVUcnVlKCJjb3VudCA9PT0ga2V5cy5sZW5ndGgiKTsKLSAgICAgICAgICAgIGZpbmlzaFVwKCk7
Ci0gICAgICAgIH0KLSAgICB9OwotfQotCi1mdW5jdGlvbiBmaW5pc2hVcCgpCi17Ci0gICAgdGVz
dEtleUNvbXBhcmUoKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gdGVzdEtl
eUNvbXBhcmUoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygidmFsaWRhdGUgY29tcGFy
ZSBmdW5jdGlvbiIpOwotICAgIHZhciBjYXNlcyA9IFsKLSAgICAgICAgInVuZGVmaW5lZCIsCi0g
ICAgICAgICJ0cnVlIiwKLSAgICAgICAgImZhbHNlIiwKLSAgICAgICAgIjAiLAotICAgICAgICAi
LTAiLAotICAgICAgICAiMTIzIiwKLSAgICAgICAgIkluZmluaXR5IiwKLSAgICAgICAgIi1JbmZp
bml0eSIsCi0gICAgICAgICJOYU4iLAotICAgICAgICAiJyciLAotICAgICAgICAiJ2FiYyciLAot
ICAgICAgICAiJ3h5eiciLAotICAgICAgICAibmV3IERhdGUoMCkiLAotICAgICAgICAibmV3IERh
dGUoMWUzKSIsCi0gICAgICAgICJuZXcgRGF0ZSgxZTkpIiwKLSAgICAgICAgIltdIiwKLSAgICAg
ICAgIlsxMjNdIiwKLSAgICAgICAgIlsnYWJjJ10iLAotICAgICAgICAiWzEyMywgJ2FiYyddIiwK
LSAgICAgICAgIlsnYWJjJywgMTIzXSIsCi0gICAgICAgICJbW11dIiwKLSAgICAgICAgIltbMTIz
XV0iLAotICAgICAgICAiW1snYWJjJ11dIiwKLSAgICAgICAgIltbMTIzXSwgJ2FiYyddIiwKLSAg
ICAgICAgIltbMTIzXSwgMTIzXSIKLSAgICBdOwotCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBj
YXNlcy5sZW5ndGg7ICsraSkgewotICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGNhc2VzLmxl
bmd0aDsgKytqKSB7Ci0gICAgICAgICAgICBpZiAoaSA9PT0gaikgewotICAgICAgICAgICAgICAg
IHNob3VsZEJlVHJ1ZSgiY29tcGFyZSgiICsgY2FzZXNbaV0gKyAiLCAiICsgY2FzZXNbal0gKyAi
KSIpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBzaG91bGRCZUZhbHNl
KCJjb21wYXJlKCIgKyBjYXNlc1tpXSArICIsICIgKyBjYXNlc1tqXSArICIpIik7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2N1cnNvci1rZXktb3JkZXIuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9jdXJzb3ItcHJpbWFyeS1rZXktb3JkZXIuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2N1cnNvci1wcmltYXJ5LWtleS1vcmRlci5odG1sCmluZGV4IGE3YzM1ZTc5Yjky
OWE0NTNkNGEzYTgyNjEzZGU4OGUyNDFjM2FmYWUuLjNmMTkzYWJiNGNlYjJmZTExZmUxNTMwYjFi
YTcxOWI4YzhhYWUwZWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2N1cnNvci1wcmltYXJ5LWtleS1vcmRlci5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2N1cnNvci1wcmltYXJ5LWtleS1vcmRlci5odG1sCkBAIC0xLDEwOCArMSwxMCBA
QAogPGh0bWw+CiA8aGVhZD4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4K
LQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIHByaW1hcnkga2V5IG9yZGVyaW5nIGFuZCBy
ZWFkYmFjayBmcm9tIGN1cnNvcnMuIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92
ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBwcmVwYXJlRGF0YWJhc2UoKTsKLX0KLQotZnVuY3Rp
b24gcHJlcGFyZURhdGFiYXNlKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZXZhbEFuZExvZygi
b3BlblJlcXVlc3QgPSBpbmRleGVkREIub3BlbignY3Vyc29yLXByaW1hcnkta2V5LW9yZGVyJyki
KTsKLSAgICBvcGVuUmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0g
ICAgb3BlblJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGV2YWxBbmRM
b2coImRiID0gb3BlblJlcXVlc3QucmVzdWx0Iik7Ci0gICAgICAgIGV2YWxBbmRMb2coInZlcnNp
b25DaGFuZ2VSZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgICAgIHZlcnNpb25D
aGFuZ2VSZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAg
dmVyc2lvbkNoYW5nZVJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg
ICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7Ci0g
ICAgICAgICAgICBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleCcs
ICdpbmRleEtleScpIik7Ci0KLSAgICAgICAgICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0LnJlc3Vs
dC5vbmNvbXBsZXRlID0gcG9wdWxhdGVTdG9yZTsKLSAgICAgICAgfTsKLSAgICB9OwotfQotCi1z
ZWxmLmtleXMgPSBbCi0gICAgIi1JbmZpbml0eSIsCi0gICAgIi0yIiwKLSAgICAiLTEiLAotICAg
ICIwIiwKLSAgICAiMSIsCi0gICAgIjIiLAotICAgICJJbmZpbml0eSIsCi0KLSAgICAiJzAnIiwK
LSAgICAiJzEnIiwKLSAgICAiJzInIiwKLSAgICAiJ0EnIiwKLSAgICAiJ0InIiwKLSAgICAiJ0Mn
IiwKLSAgICAiJ2EnIiwKLSAgICAiJ2InIiwKLSAgICAiJ2MnIgotXTsKLQotCi1mdW5jdGlvbiBw
b3B1bGF0ZVN0b3JlKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInBvcHVsYXRpbmcg
c3RvcmUuLi4iKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9y
ZScsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUg
PSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsiKTsKLSAgICB0cmFucy5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9y
dENhbGxiYWNrOwotICAgIHZhciBjb3VudCA9IDA7Ci0gICAgdmFyIGluZGV4S2V5ID0gMDsKLSAg
ICB2YXIga2V5cyA9IHNlbGYua2V5cy5zbGljZSgpOwotICAgIGtleXMucmV2ZXJzZSgpOwotICAg
IGtleXMuZm9yRWFjaChmdW5jdGlvbihrZXkpIHsKLSAgICAgICAgdmFyIHZhbHVlID0geyBpbmRl
eEtleTogaW5kZXhLZXksIGNvdW50OiBjb3VudCsrIH07Ci0gICAgICAgIGV2YWxBbmRMb2coInN0
b3JlLnB1dCgiICsgSlNPTi5zdHJpbmdpZnkodmFsdWUpICsgIiwgIiArIGtleSArICIpIik7Ci0g
ICAgfSk7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IGNoZWNrU3RvcmU7Ci19Ci0KLWZ1bmN0aW9u
IGNoZWNrU3RvcmUoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiaXRlcmF0aW5nIGN1
cnNvci4uLiIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3Jl
JywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKSIpOwotICAgIGV2YWxBbmRMb2coInN0b3JlID0g
dHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7Iik7Ci0gICAgZXZhbEFuZExvZygiaW5kZXggPSBz
dG9yZS5pbmRleCgnaW5kZXgnKTsiKTsKLSAgICB0cmFucy5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNr
OwotICAgIGN1cnNvclJlcXVlc3QgPSBldmFsQW5kTG9nKCJjdXJzb3JSZXF1ZXN0ID0gaW5kZXgu
b3BlbkN1cnNvcigpIik7Ci0gICAgZXZhbEFuZExvZygiY291bnQgPSAwIik7Ci0gICAgdmFyIGlu
ZGV4S2V5ID0gMDsKLSAgICBjdXJzb3JSZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLSAgICBjdXJzb3JSZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAg
ICAgICBpZiAoY3Vyc29yUmVxdWVzdC5yZXN1bHQpIHsKLSAgICAgICAgICAgIGV2YWxBbmRMb2co
ImN1cnNvciA9IGN1cnNvclJlcXVlc3QucmVzdWx0Iik7Ci0gICAgICAgICAgICBzaG91bGRCZSgi
Y3Vyc29yLmtleSIsIFN0cmluZyhpbmRleEtleSkpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1
cnNvci5wcmltYXJ5S2V5Iiwgc2VsZi5rZXlzW2NvdW50KytdKTsKLSAgICAgICAgICAgIGN1cnNv
ci5jb250aW51ZSgpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc2hvdWxkQmVUcnVl
KCJjb3VudCA9PT0ga2V5cy5sZW5ndGgiKTsKLSAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwot
ICAgICAgICB9Ci0gICAgfTsKLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvY3Vyc29yLXByaW1hcnkta2V5LW9yZGVyLmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvY3Vyc29yLXJldmVyc2UtYnVnLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9jdXJzb3ItcmV2ZXJzZS1idWcuaHRtbAppbmRleCAxYTY2MWM0NmUwMDgyM2Q5NjFmNTc1
ZTc5NTEwNTk1MjdjNTVmNzAzLi5lYmVmNTkzODgwOTQ3NmE0MDYwYTNhZmQ1MTRhMDRkMDdjMmVj
M2MzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItcmV2
ZXJzZS1idWcuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3It
cmV2ZXJzZS1idWcuaHRtbApAQCAtNCwxMDcgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNl
cy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNj
cmlwdGlvbigiVGVzdCBJbmRleGVkREIga2V5cyBvcmRlcmluZyBhbmQgcmVhZGJhY2sgZnJvbSBj
dXJzb3JzLiIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhl
cygpOwotCi0gICAgcHJlcGFyZURhdGFiYXNlKCk7Ci19Ci0KLWZ1bmN0aW9uIHByZXBhcmVEYXRh
YmFzZSgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGV2YWxBbmRMb2coIm9wZW5yZXEgPSBpbmRl
eGVkREIub3BlbignY3Vyc29yLXJldmVyc2UtYnVnJykiKTsKLSAgICBvcGVucmVxLm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICBvcGVucmVxLm9uc3VjY2VzcyA9IGZ1bmN0
aW9uKCkgewotICAgICAgICBldmFsQW5kTG9nKCJkYiA9IG9wZW5yZXEucmVzdWx0Iik7Ci0gICAg
ICAgIGV2YWxBbmRMb2coInZlcnJlcSA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgICAgICB2
ZXJyZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICB2ZXJyZXEu
b25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBkZWxldGVBbGxPYmplY3RTdG9y
ZXMoZGIpOwotICAgICAgICAgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5j
cmVhdGVJbmRleCgnaW5kZXgnLCAnJykiKTsKLSAgICAgICAgICAgIHZlcnJlcS5yZXN1bHQub25j
b21wbGV0ZSA9IHBvcHVsYXRlU3RvcmU7Ci0gICAgICAgIH07Ci0gICAgfTsKLX0KLQotZnVuY3Rp
b24gcG9wdWxhdGVTdG9yZSgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJwb3B1bGF0
aW5nIHN0b3JlLi4uIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbign
c3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIGV2YWxBbmRMb2coInN0
b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7Iik7Ci0gICAgdHJhbnMub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVk
QWJvcnRDYWxsYmFjazsKLQotICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgxLCAxKSIpOwotICAg
IGV2YWxBbmRMb2coInN0b3JlLnB1dCgyLCAyKSIpOwotICAgIGV2YWxBbmRMb2coInN0b3JlLnB1
dCgzLCAzKSIpOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSB0ZXN0Q3Vyc29yOwotfQotCi12YXIg
dGVzdHMgPSBbCi0gICAgICAgICAgICAgICAge3VwcGVyQm91bmQ6IDcsIG9wZW46IGZhbHNlLCBl
eHBlY3RlZDogM30sCi0gICAgICAgICAgICAgICAge3VwcGVyQm91bmQ6IDcsIG9wZW46IHRydWUs
ICBleHBlY3RlZDogM30sCi0gICAgICAgICAgICAgICAge3VwcGVyQm91bmQ6IDMsIG9wZW46IGZh
bHNlLCBleHBlY3RlZDogM30sCi0gICAgICAgICAgICAgICAge3VwcGVyQm91bmQ6IDMsIG9wZW46
IHRydWUsICBleHBlY3RlZDogMn0KLSAgICAgICAgICAgIF07Ci0KLWZ1bmN0aW9uIHRlc3RDdXJz
b3IoKQotewotICAgIGRlYnVnKCJ0ZXN0Q3Vyc29yKCkiKTsKLQotICAgIGlmICh0ZXN0cy5sZW5n
dGggPT09IDApIHsKLSAgICAgICAgZGVidWcoIk5vIG1vcmUgdGVzdHMuIik7Ci0gICAgICAgIGZp
bmlzaEpTVGVzdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdGVzdCA9IHRlc3Rz
LnNoaWZ0KCk7Ci0KLSAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9y
ZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkiKTsKLSAgICB0cmFucy5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9y
dENhbGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSB0ZXN0Q3Vyc29yOwotICAgIGV2YWxB
bmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7Iik7Ci0gICAgZXZhbEFu
ZExvZygiaW5kZXggPSBzdG9yZS5pbmRleCgnaW5kZXgnKTsiKTsKLQotICAgIHZhciB0ZXN0RnVu
Y3Rpb24gPSBmdW5jdGlvbigpIHsKLSAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdCIpOwotICAgICAgICBpZiAoY3Vyc29yID09PSBudWxsKSB7Ci0gICAgICAg
ICAgICBkZWJ1ZygiY3Vyc29yIHNob3VsZCBub3QgYmUgbnVsbCIpOwotICAgICAgICAgICAgZmFp
bCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci5rZXkiLCAidGVzdC5leHBlY3RlZCIpOwotICAgICAgICBpZiAoInZhbHVlIiBpbiBj
dXJzb3IpCi0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgInRlc3QuZXhwZWN0
ZWQiKTsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgInRlc3QuZXhwZWN0
ZWQiKTsKLQotICAgICAgICAvLyBMZXQgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaC4KLSAgICB9Ci0K
LSAgICBkZWJ1ZygidXBwZXJCb3VuZDogIiArIHRlc3QudXBwZXJCb3VuZCArICIgb3BlbjogIiAr
IHRlc3Qub3BlbiArICIgZXhwZWN0ZWQ6ICIgKyB0ZXN0LmV4cGVjdGVkKTsKLSAgICBzdG9yZVJl
cSA9IGV2YWxBbmRMb2coInN0b3JlUmVxID0gc3RvcmUub3BlbkN1cnNvcihJREJLZXlSYW5nZS51
cHBlckJvdW5kKHRlc3QudXBwZXJCb3VuZCwgdGVzdC5vcGVuKSwgSURCQ3Vyc29yLlBSRVYpIik7
Ci0gICAgc3RvcmVSZXEub25zdWNjZXNzID0gdGVzdEZ1bmN0aW9uOwotCi0gICAgaW5kZXhSZXEg
PSBldmFsQW5kTG9nKCJpbmRleFJlcSA9IGluZGV4Lm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBw
ZXJCb3VuZCh0ZXN0LnVwcGVyQm91bmQsIHRlc3Qub3BlbiksIElEQkN1cnNvci5QUkVWKSIpOwot
ICAgIGluZGV4UmVxLm9uc3VjY2VzcyA9IHRlc3RGdW5jdGlvbjsKLQotICAgIGluZGV4S2V5UmVx
ID0gZXZhbEFuZExvZygiaW5kZXhLZXlSZXEgPSBpbmRleC5vcGVuS2V5Q3Vyc29yKElEQktleVJh
bmdlLnVwcGVyQm91bmQodGVzdC51cHBlckJvdW5kLCB0ZXN0Lm9wZW4pLCBJREJDdXJzb3IuUFJF
VikiKTsKLSAgICBpbmRleEtleVJlcS5vbnN1Y2Nlc3MgPSB0ZXN0RnVuY3Rpb247Ci19Ci0KLXRl
c3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2N1cnNvci1yZXZlcnNl
LWJ1Zy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXNraXAtZGVsZXRlZC5odG1s
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXNraXAtZGVsZXRlZC5odG1s
CmluZGV4IDUxYWNkMzRkNjQ1ZWJkZTEzNmI3MjJiNDAyY2VmOTNlOGFmZTYyODIuLmEwY2RiYmNh
YjFlODNiM2U5OTdlYjUxYTEzMzFkY2Q5ZTI5NjkxNDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1za2lwLWRlbGV0ZWQuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3Itc2tpcC1kZWxldGVkLmh0bWwKQEAgLTQsMjAw
ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwv
aGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mg
Y3Vyc29yIHNraXBzIGRlbGV0ZWQgZW50cmllcy4iKTsKLQotdmFyIG5hbWVzID0gWydBbHBoYScs
ICdCcmF2bycsICdDaGFybGllJywgJ0RlbHRhJywgJ0VjaG8nLCAnRm94dHJvdCcsICdHb2xmJywK
LSAgICAgICAgICAgICAnSG90ZWwnLCAnSW5kaWEnLCAnSnVsaWV0JywgJ0tpbG8nLCAnTGltYScs
ICdNaWtlJywgJ05vdmVtYmVyJywKLSAgICAgICAgICAgICAnT3NjYXInLCAnUGFwYScsICdRdWVi
ZWMnLCAnUm9tZW8nLCAnU2llcnJhJywgJ1RhbmdvJywgJ1VuaWZvcm0nLAotICAgICAgICAgICAg
ICdWaWN0b3InLCAnV2hpc2tleScsICdYLXJheScsICdZYW5rZWUnLCAnWnVsdSddOwotCi10ZXN0
KCk7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdjdXJzb3Itc2tpcC1kZWxl
dGVkJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVu
U3VjY2VzcygpCi17Ci0gICAgdmFyIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3
IHZlcnNpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1
bmN0aW9uIHNldFZlcnNpb25TdWNjZXNzKCkKLXsKLSAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nl
c3MoKToiKTsKLSAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJn
ZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwotICAgIHRy
YW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBs
ZXRlID0gYmFzaWNDdXJzb3JUZXN0OwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsK
LQotICAgIHZhciBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ3N0b3JlJywge2tleVBhdGg6ICdpZCd9KSIpOwotICAgIGV2YWxBbmRM
b2coIm9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCduYW1lSW5kZXgnLCAnbmFtZScpIik7Ci0gICAg
cmVzZXRPYmplY3RTdG9yZShmdW5jdGlvbigpIHt9KTsKLX0KLQotdmFyIHNpbGVudEVycm9ySGFu
ZGxlciA9IGZ1bmN0aW9uKCkgeyBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyB9Ci0KLWZ1bmN0aW9u
IHJlc2V0T2JqZWN0U3RvcmUoY2FsbGJhY2spCi17Ci0gICAgZGVidWcoIlxucmVzZXRPYmplY3RT
dG9yZSgpOiIpOwotICAgIGlmIChjYWxsYmFjayA9PT0gdW5kZWZpbmVkKQotICAgICAgICBjYWxs
YmFjayA9IGZ1bmN0aW9uICgpIHt9OwotCi0gICAgdmFyIG9iamVjdFN0b3JlID0gdHJhbnMub2Jq
ZWN0U3RvcmUoJ3N0b3JlJyk7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7
IGkrKykKLSAgICAgICAgb2JqZWN0U3RvcmUuZGVsZXRlKGkpLm9uZXJyb3IgPSBzaWxlbnRFcnJv
ckhhbmRsZXI7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykKLSAg
ICAgICAgb2JqZWN0U3RvcmUuYWRkKHtpZDogaSwgbmFtZTogbmFtZXNbaV19KS5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0KLSAgICBkZWJ1ZygiIik7Ci0gICAgY2FsbGJhY2so
KTsKLX0KLQotZnVuY3Rpb24gY29udGFpbnMoYXJyLCBvYmopCi17Ci0gICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgaWYgKGFycltpXSA9PSBvYmopCi0g
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12
YXIgY3Vyc29yOwotdmFyIGRlbGV0ZWQ7Ci12YXIgc2VlbjsKLQotZnVuY3Rpb24gdGVzdEN1cnNv
cihkZWxldGVMaXN0LCBjcmVhdGVDdXJzb3JDb21tYW5kLCBjYWxsYmFjaykKLXsKLSAgICBkZWJ1
ZygiXG50ZXN0Q3Vyc29yKCk6Iik7Ci0gICAgZGVsZXRlZCA9IFtdOwotICAgIHNlZW4gPSBbXTsK
LQotICAgIC8vIENyZWF0ZSB0aGUgY3Vyc29yLgotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKGNy
ZWF0ZUN1cnNvckNvbW1hbmQpOwotCi0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7Ci0gICAg
ICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0ID09IG51bGwpIHsKLSAgICAgICAgICAgIC8vIE1h
a2Ugc3VyZSB3ZSBoYXZlIHNlZW4gZXZlcnkgbm9uLWRlbGV0ZWQgaXRlbS4KLSAgICAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAg
ICBpZiAoY29udGFpbnMoZGVsZXRlZCwgaSkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotCi0gICAgICAgICAgICAgICAgaWYgKCFjb250YWlucyhzZWVuLCBpKSkKLSAgICAgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiQ3Vyc29yIGRpZCBub3Qgc2VlIGl0ZW0gd2l0aCBpZDogIiAr
IGkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBNYWtlIHN1cmUgd2UgdXNlZCBl
dmVyeSBydWxlIGluIHxkZWxldGVMaXN0fC4KLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgZGVsZXRlTGlzdC5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgICAgIGlmICghY29udGFp
bnMoc2VlbiwgZGVsZXRlTGlzdFtpXS5pZCkpCi0gICAgICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoImRlbGV0ZUxpc3QgcnVsZSB3aXRoIGlkOiAiICsgZGVsZXRlTGlzdFtpXS5pZCArICIgd2Fz
IG5ldmVyIHVzZWQuIik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGRlYnVnKCIiKTsK
LSAgICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LQotICAgICAgICBjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OwotICAgICAgICBkZWJ1Zyhl
dmVudC50YXJnZXQucmVzdWx0LnZhbHVlLmlkICsgIjogIiArIGV2ZW50LnRhcmdldC5yZXN1bHQu
dmFsdWUubmFtZSk7Ci0gICAgICAgIHNlZW4ucHVzaChldmVudC50YXJnZXQucmVzdWx0LnZhbHVl
LmlkKTsKLQotICAgICAgICAvLyBNYWtlIHN1cmUgd2UgZG9uJ3Qgc2VlIGFueSBkZWxldGVkIGl0
ZW1zLgotICAgICAgICBpZiAoY29udGFpbnMoZGVsZXRlZCwgZXZlbnQudGFyZ2V0LnJlc3VsdC52
YWx1ZS5pZCkpCi0gICAgICAgICAgICB0ZXN0RmFpbGVkKCJDdXJzb3IgaGl0IHByZXZpb3VzbHkg
ZGVsZXRlZCBlbGVtZW50LiIpOwotCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVsZXRl
TGlzdC5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQu
dmFsdWUuaWQgPT0gZGVsZXRlTGlzdFtpXS5pZCkgewotICAgICAgICAgICAgICAgIC8vIERlbGV0
ZSBvYmplY3RzIHRhcmdldGVkIGJ5IHRoaXMgaWQuCi0gICAgICAgICAgICAgICAgdmFyIHRhcmdl
dHMgPSBkZWxldGVMaXN0W2ldLnRhcmdldHM7Ci0gICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9
IDA7IGogPCB0YXJnZXRzLmxlbmd0aDsgaisrKSB7Ci0gICAgICAgICAgICAgICAgICAgIGRlbGV0
ZWQucHVzaCh0YXJnZXRzW2pdKTsKLSAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKS5kZWxldGUoIiArIHRh
cmdldHNbal0gKyAiKSIpOwotICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGogPT0gdGFy
Z2V0cy5sZW5ndGggLSAxKQotICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbigpIHsgY3Vyc29yLmNvbnRpbnVlKCk7IH0KLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAg
ICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBiYXNpY0N1cnNv
clRlc3QoKQotewotICAgIGRlYnVnKCJiYXNpY0N1cnNvclRlc3QoKSIpOwotCi0gICAgZXZhbEFu
ZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJF
QURfV1JJVEUpIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNr
OwotICAgIHRyYW5zLm9uY29tcGxldGUgPSB0cmFuc2FjdGlvbkNvbXBsZXRlOwotCi0gICAgdmFy
IGRlbGV0ZXMgPSBbe2lkOiAxLCB0YXJnZXRzOiBbMF19LAotICAgICAgICAgICAgICAgICAgIHtp
ZDogMiwgdGFyZ2V0czogW25hbWVzLmxlbmd0aCAtIDFdfSwKLSAgICAgICAgICAgICAgICAgICB7
aWQ6IDMsIHRhcmdldHM6IFs1LDYsN119LAotICAgICAgICAgICAgICAgICAgIHtpZDogMTAsIHRh
cmdldHM6IFsxMF19LAotICAgICAgICAgICAgICAgICAgIHtpZDogMTIsIHRhcmdldHM6IFsxM119
LAotICAgICAgICAgICAgICAgICAgIHtpZDogMTUsIHRhcmdldHM6IFsxNF19LAotICAgICAgICAg
ICAgICAgICAgIHtpZDogMjAsIHRhcmdldHM6IFsxNywxOF19Ci0gICAgICAgICAgICAgICAgICAg
XTsKLQotICAgIHRlc3RDdXJzb3IoZGVsZXRlcywgInRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScp
Lm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgwKSkiLCBmdW5jdGlvbigpIHsgcmVz
ZXRPYmplY3RTdG9yZShyZXZlcnNlQ3Vyc29yVGVzdCk7IH0pOwotfQotCi1mdW5jdGlvbiByZXZl
cnNlQ3Vyc29yVGVzdCgpCi17Ci0gICAgZGVidWcoInJldmVyc2VDdXJzb3JUZXN0KCk6Iik7Ci0K
LSAgICB2YXIgZGVsZXRlcyA9IFt7aWQ6IDI0LCB0YXJnZXRzOiBbbmFtZXMubGVuZ3RoIC0gMV19
LAotICAgICAgICAgICAgICAgICAgIHtpZDogMjMsIHRhcmdldHM6IFswXX0sCi0gICAgICAgICAg
ICAgICAgICAge2lkOiAyMiwgdGFyZ2V0czogWzIwLCAxOSwgMThdfSwKLSAgICAgICAgICAgICAg
ICAgICB7aWQ6IDE1LCB0YXJnZXRzOiBbMTVdfSwKLSAgICAgICAgICAgICAgICAgICB7aWQ6IDEz
LCB0YXJnZXRzOiBbMTJdfSwKLSAgICAgICAgICAgICAgICAgICB7aWQ6IDEwLCB0YXJnZXRzOiBb
MTFdfSwKLSAgICAgICAgICAgICAgICAgICB7aWQ6IDUsIHRhcmdldHM6IFs3LDhdfQotICAgICAg
ICAgICAgICAgICAgIF07Ci0KLQotICAgIHRlc3RDdXJzb3IoZGVsZXRlcywgInRyYW5zLm9iamVj
dFN0b3JlKCdzdG9yZScpLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgwKSwgSURC
Q3Vyc29yLlBSRVYpIiwgZnVuY3Rpb24oKSB7IHJlc2V0T2JqZWN0U3RvcmUoaW5kZXhDdXJzb3JU
ZXN0KTsgfSk7Ci19Ci0KLWZ1bmN0aW9uIGluZGV4Q3Vyc29yVGVzdCgpCi17Ci0gICAgZGVidWco
ImluZGV4Q3Vyc29yVGVzdCgpOiIpOwotCi0gICAgdmFyIGRlbGV0ZXMgPSBbe2lkOiAxLCB0YXJn
ZXRzOiBbMF19LAotICAgICAgICAgICAgICAgICAgIHtpZDogMiwgdGFyZ2V0czogW25hbWVzLmxl
bmd0aCAtIDFdfSwKLSAgICAgICAgICAgICAgICAgICB7aWQ6IDMsIHRhcmdldHM6IFs1LDYsN119
LAotICAgICAgICAgICAgICAgICAgIHtpZDogMTAsIHRhcmdldHM6IFsxMF19LAotICAgICAgICAg
ICAgICAgICAgIHtpZDogMTIsIHRhcmdldHM6IFsxM119LAotICAgICAgICAgICAgICAgICAgIHtp
ZDogMTUsIHRhcmdldHM6IFsxNF19LAotICAgICAgICAgICAgICAgICAgIHtpZDogMjAsIHRhcmdl
dHM6IFsxNywxOF19Ci0gICAgICAgICAgICAgICAgICAgXTsKLQotICAgIHRlc3RDdXJzb3IoZGVs
ZXRlcywgInRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpLmluZGV4KCduYW1lSW5kZXgnKS5vcGVu
Q3Vyc29yKElEQktleVJhbmdlLmxvd2VyQm91bmQoJ0FscGhhJykpIiwgZnVuY3Rpb24oKSB7IH0p
OwotfQotCi1mdW5jdGlvbiB0cmFuc2FjdGlvbkNvbXBsZXRlKCkKLXsKLSAgICBkZWJ1ZygidHJh
bnNhY3Rpb25Db21wbGV0ZSgpOiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLTwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jdXJzb3Itc2tpcC1kZWxldGVkLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXVwZGF0ZS12YWx1ZS1hcmd1bWVudC1yZXF1aXJlZC5o
dG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXVwZGF0ZS12YWx1ZS1h
cmd1bWVudC1yZXF1aXJlZC5odG1sCmluZGV4IGMzZmRjN2VjOGFhYmNhMWYwYmNiNDZjNzRmZDI5
ZjdlOWY3ZDcyM2UuLjY4NTljN2NkZjY0Y2ZkMmUxMWY5MDlhYmJjNjliMWExNWFlZDc0NjIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci11cGRhdGUtdmFs
dWUtYXJndW1lbnQtcmVxdWlyZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9jdXJzb3ItdXBkYXRlLXZhbHVlLWFyZ3VtZW50LXJlcXVpcmVkLmh0bWwKQEAgLTEsODQg
KzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIu
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxz
Y3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBjdXJzb3IudXBkYXRlIHJlcXVp
cmVkIGFyZ3VtZW50cyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQ
cmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVz
Y3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxB
bmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IHRlc3RHcm91cDE7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDEoKQotewotICAgIGRlbGV0ZUFsbE9i
amVjdFN0b3JlcyhkYik7Ci0KLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdhdXRvSW5jcmVtZW50JywgeyBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOyIp
OwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVu
Q3Vyc29yKCk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgIHRl
c3RHcm91cDIoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDIoKQotewotICAgIGtl
eXMgPSBldmFsQW5kTG9nKCJrZXlzID0gWzEsIC0xLCAwLCAxMCwgMjAwMCwgJ3EnLCAneicsICd0
d28nLCAnYicsICdhJ107Iik7Ci0KLSAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4
ID0gMDsiKTsKLQotICAgIGZvciAoaSBpbiBrZXlzKSB7Ci0gICAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZCgnZm9vJywga2V5c1tpXSk7Iik7Ci0gICAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgaWYgKCsra2V5SW5kZXgg
PT0ga2V5cy5sZW5ndGgpIHsKLSAgICAgICAgICB0ZXN0R3JvdXAzKCk7Ci0gICAgICAgIH0KLSAg
ICAgIH07Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXAzKCkKLXsKLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewotICAgICAgICBjdXJzb3IgPSBldmFsQW5k
TG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgICAgICBpZiAoY3Vyc29y
KSB7Ci0gICAgICAgICAgICBzaG91bGRUaHJvdygiY3Vyc29yLnVwZGF0ZSgpOyIpOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgdGVzdEZhaWxlZCgiY3Vyc29yIHdhcyBudWxsIik7Ci0g
ICAgICAgIH0KLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfQotfQotCi0KLXRlc3QoKTsK
LQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2N1cnNvci11cGRhdGUtdmFsdWUt
YXJndW1lbnQtcmVxdWlyZWQuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+
Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci11cGRh
dGUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci11cGRhdGUuaHRt
bAppbmRleCA5NjU0YzYyNTBmODEwZjE1MDE0NWIyZDg2OTcwYjcxNDY2ZTYzMTdkLi5hNDZhNzBk
NDcwZjRjMGQ1MDFjYzJiZWFkM2JmYWFkN2I4YzI3M2VjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItdXBkYXRlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXVwZGF0ZS5odG1sCkBAIC00LDIyMiArNCw3IEBACiA8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9k
eT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGN1cnNvciB1cGRh
dGUuIik7Ci0KLXRlc3QoKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9y
UHJlZml4ZXMoKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2N1
cnNvci11cGRhdGUnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0
aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICB2YXIgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJz
aW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9u
U3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJzZXRWZXJz
aW9uU3VjY2VzcygpOiIpOwotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7
Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIHRyYW5z
Lm9uY29tcGxldGUgPSBvcGVuQmFzaWNDdXJzb3I7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9y
ZXMoZGIpOwotCi0gICAgdmFyIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUg
PSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnYmFzaWNTdG9yZScpIik7Ci0gICAgZXZhbEFuZExvZygi
b2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlMScsICdteUtleTEnKS5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2siKTsKLSAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ215VmFs
dWUyJywgJ215S2V5MicpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOwotICAg
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnbXlWYWx1ZTMnLCAnbXlLZXkzJykub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7Ci0gICAgZXZhbEFuZExvZygib2JqZWN0U3Rv
cmUuYWRkKCdteVZhbHVlNCcsICdteUtleTQnKS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2siKTsKLQotICAgIHZhciBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3Jl
ID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2F1dG9JbmNyZW1lbnRTdG9yZScsIHthdXRvSW5jcmVt
ZW50OiB0cnVlfSkiKTsKLSAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ2ZvbzEnKS5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKLSAgICBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZS5hZGQoJ2ZvbzInKS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsK
LSAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ2ZvbzMnKS5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2siKTsKLSAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ2Zv
bzQnKS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKLQotICAgIHZhciBvYmpl
Y3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUo
J2tleVBhdGhTdG9yZScsIHtrZXlQYXRoOiAnaWQnfSkiKTsKLSAgICBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZS5jcmVhdGVJbmRleCgnbnVtYmVySW5kZXgnLCAnbnVtYmVyJykiKTsKLSAgICBldmFs
QW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoe251bWJlcjogMSwgaWQ6IDF9KS5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKLSAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQo
e251bWJlcjogMiwgaWQ6IDJ9KS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsK
LSAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoe251bWJlcjogMywgaWQ6IDN9KS5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKLSAgICBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZS5hZGQoe251bWJlcjogNCwgaWQ6IDR9KS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2siKTsKLX0KLQotZnVuY3Rpb24gb3BlbkJhc2ljQ3Vyc29yKCkKLXsKLSAgICBkZWJ1Zygi
b3BlbkJhc2ljQ3Vyc29yKCkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0
aW9uKFsnYmFzaWNTdG9yZScsICdhdXRvSW5jcmVtZW50U3RvcmUnLCAna2V5UGF0aFN0b3JlJ10s
IElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhw
ZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSB0cmFuc2FjdGlvbkNv
bXBsZXRlOwotCi0gICAga2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKCJteUtleTEi
KTsKLSAgICBzZWxmLm9iamVjdFN0b3JlID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUo
J2Jhc2ljU3RvcmUnKSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5v
cGVuQ3Vyc29yKGtleVJhbmdlKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYmFzaWNVcGRh
dGVDdXJzb3I7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci0gICAgY291bnRlciA9IDE7Ci19Ci0KLWZ1bmN0aW9uIGJhc2ljVXBkYXRlQ3Vyc29yKCkKLXsK
LSAgICBkZWJ1ZygiYmFzaWNVcGRhdGVDdXJzb3IoKSIpOwotICAgIHNob3VsZEJlKCJldmVudC50
YXJnZXQuc291cmNlIiwgIm9iamVjdFN0b3JlIik7Ci0gICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1
bHQgPT0gbnVsbCkgewotICAgICAgICBzaG91bGRCZSgiY291bnRlciIsICI1Iik7Ci0gICAgICAg
IGNvdW50ZXIgPSAxOwotCi0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmpl
Y3RTdG9yZSgnYmFzaWNTdG9yZScpLm9wZW5DdXJzb3Ioa2V5UmFuZ2UpIik7Ci0gICAgICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gYmFzaWNDaGVja0N1cnNvcjsKLSAgICAgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC51cGRhdGUoJ215
VXBkYXRlZFZhbHVlJyArIGNvdW50ZXIrKykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1
bmN0aW9uKCkgeyBldmFsQW5kTG9nKCJldmVudC50YXJnZXQuc291cmNlLmNvbnRpbnVlKCkiKTsg
fQotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1m
dW5jdGlvbiBiYXNpY0NoZWNrQ3Vyc29yKCkKLXsKLSAgICBkZWJ1ZygiYmFzaWNDaGVja0N1cnNv
cigpIik7Ci0gICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkgewotICAgICAgICBz
aG91bGRCZSgiY291bnRlciIsICI1Iik7Ci0gICAgICAgIGNvdW50ZXIgPSAxOwotCi0gICAgICAg
IGtleVJhbmdlID0gSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgxKTsKLSAgICAgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdhdXRvSW5jcmVtZW50U3RvcmUnKS5vcGVu
Q3Vyc29yKGtleVJhbmdlKSIpOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGF1dG9JbmNy
ZW1lbnRVcGRhdGVDdXJzb3I7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICJteUtleSIgKyBjb3VudGVyKTsK
LSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUiLCAi
bXlVcGRhdGVkVmFsdWUiICsgY291bnRlcisrKTsKLSAgICBldmFsQW5kTG9nKCJldmVudC50YXJn
ZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKLX0KLQotZnVuY3Rpb24gYXV0b0luY3JlbWVudFVwZGF0
ZUN1cnNvcigpCi17Ci0gICAgZGVidWcoImF1dG9JbmNyZW1lbnRVcGRhdGVDdXJzb3IoKSIpOwot
ICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0ID09IG51bGwpIHsKLSAgICAgICAgc2hvdWxkQmUo
ImNvdW50ZXIiLCAiNSIpOwotICAgICAgICBjb3VudGVyID0gMTsKLQotICAgICAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2F1dG9JbmNyZW1lbnRTdG9yZScpLm9w
ZW5DdXJzb3Ioa2V5UmFuZ2UpIik7Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYXV0b0lu
Y3JlbWVudENoZWNrQ3Vyc29yOwotICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LnVwZGF0ZSgnbXlVcGRhdGVkRm9vJyArIGNv
dW50ZXIrKykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeyBldmFsQW5k
TG9nKCJldmVudC50YXJnZXQuc291cmNlLmNvbnRpbnVlKCkiKTsgfQotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBhdXRvSW5jcmVt
ZW50Q2hlY2tDdXJzb3IoKQotewotICAgIGRlYnVnKCJhdXRvSW5jcmVtZW50Q2hlY2tDdXJzb3Io
KSIpOwotICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0ID09IG51bGwpIHsKLSAgICAgICAgc2hv
dWxkQmUoImNvdW50ZXIiLCAiNSIpOwotICAgICAgICBjb3VudGVyID0gMTsKLQotICAgICAgICBr
ZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQoMSk7Ci0gICAgICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgna2V5UGF0aFN0b3JlJykub3BlbkN1cnNvcihr
ZXlSYW5nZSkiKTsKLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBrZXlQYXRoVXBkYXRlQ3Vy
c29yOwotICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVz
dWx0LmtleSIsICJjb3VudGVyIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50
YXJnZXQucmVzdWx0LnZhbHVlIiwgIm15VXBkYXRlZEZvbyIgKyBjb3VudGVyKyspOwotICAgIGV2
YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOwotfQotCi1mdW5jdGlv
biBrZXlQYXRoVXBkYXRlQ3Vyc29yKCkKLXsKLSAgICBkZWJ1Zygia2V5UGF0aFVwZGF0ZUN1cnNv
cigpIik7Ci0gICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkgewotICAgICAgICBz
aG91bGRCZSgiY291bnRlciIsICI1Iik7Ci0gICAgICAgIGNvdW50ZXIgPSAxOwotCi0gICAgICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgna2V5UGF0aFN0b3JlJyku
b3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBrZXlQ
YXRoQ2hlY2tDdXJzb3I7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigiZXZlbnQudGFyZ2V0LnJlc3VsdC51cGRhdGUoe2lkOiAxMDAgKyBjb3VudGVyLCBu
dW1iZXI6IDEwMCArIGNvdW50ZXJ9KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIp
OwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQudXBkYXRl
KHtpZDogY291bnRlciwgbnVtYmVyOiAxMDAgKyBjb3VudGVyKyt9KSIpOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24oKSB7IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5zb3VyY2Uu
Y29udGludWUoKSIpIH07Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGtleVBhdGhDaGVja0N1cnNvcigpCi17Ci0gICAgZGVidWco
ImtleVBhdGhDaGVja0N1cnNvcigpIik7Ci0gICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0g
bnVsbCkgewotICAgICAgICBzaG91bGRCZSgiY291bnRlciIsICI1Iik7Ci0gICAgICAgIGNvdW50
ZXIgPSAxOwotCi0gICAgICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgxMDEp
OwotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2tleVBh
dGhTdG9yZScpLmluZGV4KCdudW1iZXJJbmRleCcpLm9wZW5LZXlDdXJzb3Ioa2V5UmFuZ2UpIik7
Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0ga2V5Q3Vyc29yOwotICAgICAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICJjb3VudGVyIik7
Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUuaWQiLCAiY291bnRlciIp
OwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLm51bWJlciIsIChjb3Vu
dGVyICsgMTAwKS50b1N0cmluZygpKTsKLSAgICBjb3VudGVyKys7Ci0gICAgZXZhbEFuZExvZygi
ZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7Ci19Ci0KLWZ1bmN0aW9uIGtleUN1cnNv
cigpCi17Ci0gICAgZGVidWcoImtleUN1cnNvcigpIik7Ci0gICAgaWYgKGV2ZW50LnRhcmdldC5y
ZXN1bHQgPT0gbnVsbCkgewotICAgICAgICBzaG91bGRCZSgiY291bnRlciIsICI1Iik7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5r
ZXkiLCAiY291bnRlciArIDEwMCIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0
LnByaW1hcnlLZXkiLCAiY291bnRlciIpOwotCi0gICAgdHJ5IHsKLSAgICAgICAgZGVidWcoImV2
ZW50LnRhcmdldC5yZXN1bHQudXBkYXRlKHtpZDogY291bnRlciwgbnVtYmVyOiBjb3VudGVyICsg
MjAwfSkiKTsKLSAgICAgICAgZXZlbnQudGFyZ2V0LnJlc3VsdC51cGRhdGUoe2lkOiBjb3VudGVy
LCBudW1iZXI6IGNvdW50ZXIgKyAyMDB9KTsKLSAgICAgICAgdGVzdEZhaWxlZCgiRXhwZWN0ZWQg
ZXhjZXB0aW9uLiIpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgY29kZSA9IGUuY29kZTsK
LSAgICAgICAgc2hvdWxkQmUoImNvZGUiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0FMTE9X
RURfRVJSIik7Ci0gICAgfQotCi0gICAgY291bnRlcisrOwotICAgIGV2ZW50LnRhcmdldC5yZXN1
bHQuY29udGludWUoKTsKLX0KLQotZnVuY3Rpb24gdHJhbnNhY3Rpb25Db21wbGV0ZSgpCi17Ci0g
ICAgZGVidWcoInRyYW5zYWN0aW9uQ29tcGxldGUoKSIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwot
fQotCi0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jdXJzb3ItdXBkYXRlLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YS1jb3JydXB0aW9uLmh0bWwgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhLWNvcnJ1cHRpb24uaHRtbAppbmRleCA1YzYyMmU3Yzc4
NDJlNzIyNjVmZWQwMmI3NTdlMDg1MTU0ZjBmMGYyLi45NTk3YzViMzUzNWZiY2ZmZDk1ZDc3MWM5
YTg3OWZiODk2OTFiMThlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9kYXRhLWNvcnJ1cHRpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9kYXRhLWNvcnJ1cHRpb24uaHRtbApAQCAtNCw3MSArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0K
LWRlc2NyaXB0aW9uKCJUZXN0IHRoYXQgZGF0YSBpbnNlcnRlZCBpbnRvIEluZGV4ZWREQiBkb2Vz
IG5vdCBnZXQgY29ycnVwdGVkIG9uIGRpc2suIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAg
IHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4
ZWREQi5vcGVuKCdkYXRhLWNvcnJ1cHRpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
b3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkZWJ1Zygib3BlblN1Y2Nl
c3MoKToiKTsKLSAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVz
dWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZl
cnNpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0
aW9uIHNldFZlcnNpb25TdWNjZXNzKCkKLXsKLSAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3Mo
KToiKTsKLSAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwotICAgIHRyYW5z
Lm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBsZXRl
ID0gYWRkRGF0YTsKLQotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBldmFs
QW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLX0KLQotdmFyIHRl
c3REYXRlID0gbmV3IERhdGUoJ0ZlYnJ1YXJ5IDI0LCAxOTU1IDEyOjAwOjA4Jyk7Ci0KLWZ1bmN0
aW9uIGFkZERhdGEoKQotewotICAgIGRlYnVnKCJhZGREYXRhKCk6Iik7Ci0gICAgdmFyIHRyYW5z
YWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ3N0b3Jl
TmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIHZhciByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUn
KS5hZGQoe3g6IHRlc3REYXRlfSwgJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGdldERh
dGE7Ci19Ci0KLWZ1bmN0aW9uIGdldERhdGEoKQotewotICAgIGRlYnVnKCJhZGREYXRhKCk6Iik7
Ci0gICAgdmFyIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFu
c2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7Ci0gICAg
dmFyIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gdHJhbnNhY3Rpb24ub2JqZWN0U3Rv
cmUoJ3N0b3JlTmFtZScpLmdldCgna2V5JykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRvQ2hlY2s7Ci19
Ci0KLWZ1bmN0aW9uIGRvQ2hlY2soKQotewotICAgIHNob3VsZEJlVHJ1ZSgiZXZlbnQudGFyZ2V0
LnJlc3VsdC54LnRvU3RyaW5nKCkgPT0gdGVzdERhdGUudG9TdHJpbmcoKSIpOwotICAgIGZpbmlz
aEpTVGVzdCgpOwotfQotCi10ZXN0KCk7Ci0KLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2RhdGEtY29ycnVwdGlvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNl
LWJhc2ljcy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtYmFz
aWNzLmh0bWwKaW5kZXggNzFlNWU1Njg0ZjRmMTQ5ZDFiZDgwYmIxMzhkNzFjZmZlOWEwZjlkOS4u
MTBlY2IwNTQ0ZTI2OWYxMTcxMzdmZjk3NzY4NTAxYjEzMTk1Yjk0MyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtYmFzaWNzLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtYmFzaWNzLmh0bWwKQEAgLTQsMTIx
ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwv
aGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgdGhlIGJhc2ljcyBv
ZiBJbmRleGVkREIncyBJREJEYXRhYmFzZS4iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAg
cmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRl
eGVkREIub3BlbignZGF0YWJhc2UtYmFzaWNzJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgc2VsZi5kYiA9IGV2YWxB
bmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IHNldFZlcnNpb25TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCi17Ci0g
ICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7Ci0gICAgc2VsZi50cmFucyA9IGV2YWxB
bmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgi
dHJhbnMgIT09IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2Fs
bGJhY2s7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgZGVidWcoIlRl
c3Rpbmcgc2V0VmVyc2lvbi4iKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygnZGIuc2V0VmVy
c2lvbigidmVyc2lvbiBhIiknKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb25B
Z2FpbjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0K
LQotZnVuY3Rpb24gc2V0VmVyc2lvbkFnYWluKCkKLXsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygnZGIuc2V0VmVyc2lvbigidmVyc2lvbiBiIiknKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGNyZWF0ZU9iamVjdFN0b3JlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjcmVhdGVPYmplY3RTdG9yZSgpCi17Ci0gICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJkYi52ZXJzaW9uIiwgInZlcnNpb24gYiIpOwotICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiZGIubmFtZSIsICJkYXRhYmFzZS1iYXNpY3MiKTsKLSAgICBzaG91
bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcyIsICJbXSIpOwotICAgIHNob3VsZEJlKCJkYi5vYmpl
Y3RTdG9yZU5hbWVzLmxlbmd0aCIsICIwIik7Ci0gICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3Jl
TmFtZXMuY29udGFpbnMoJycpIiwgImZhbHNlIik7Ci0gICAgc2hvdWxkQmVOdWxsKCJkYi5vYmpl
Y3RTdG9yZU5hbWVzWzBdIik7Ci0gICAgc2hvdWxkQmVOdWxsKCJkYi5vYmplY3RTdG9yZU5hbWVz
Lml0ZW0oMCkiKTsKLQotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygnZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoInRlc3QxMjMiKScpOwotICAgIGNoZWNrT2JqZWN0U3RvcmUoKTsKLSAgICBjb21t
aXRBbmRDb250aW51ZSgpOwotfQotCi1mdW5jdGlvbiBjaGVja09iamVjdFN0b3JlKCkKLXsKLSAg
ICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcyIsICJbJ3Rlc3QxMjMnXSIpOwotICAgIHNo
b3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIxIik7Ci0gICAgc2hvdWxkQmUo
ImRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJycpIiwgImZhbHNlIik7Ci0gICAgc2hvdWxk
QmUoImRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJ3Rlc3Q0NTYnKSIsICJmYWxzZSIpOwot
ICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCd0ZXN0MTIzJykiLCAi
dHJ1ZSIpOwotfQotCi1mdW5jdGlvbiBjb21taXRBbmRDb250aW51ZSgpCi17Ci0gICAgc2VsZi5z
ZXRUaW1lb3V0KHRlc3RTZXRWZXJzaW9uQWJvcnQsIDApOwotfQotCi1mdW5jdGlvbiB0ZXN0U2V0
VmVyc2lvbkFib3J0KCkKLXsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygnZGIuc2V0VmVyc2lv
bigidmVyc2lvbiBjIiknKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFub3RoZXJP
YmplY3RTdG9yZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLX0KLQotZnVuY3Rpb24gY3JlYXRlQW5vdGhlck9iamVjdFN0b3JlKCkKLXsKLSAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImRiLnZlcnNpb24iLCAidmVyc2lvbiBjIik7Ci0gICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJkYi5uYW1lIiwgImRhdGFiYXNlLWJhc2ljcyIpOwotICAgIGNoZWNr
T2JqZWN0U3RvcmUoKTsKLQotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygnZGIuY3JlYXRl
T2JqZWN0U3RvcmUoInRlc3Q0NTYiKScpOwotICAgIHZhciBzZXRWZXJzaW9uVHJhbnMgPSBldmFs
QW5kTG9nKCJzZXRWZXJzaW9uVHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hv
dWxkQmVUcnVlKCJzZXRWZXJzaW9uVHJhbnMgIT09IG51bGwiKTsKLSAgICBzZXRWZXJzaW9uVHJh
bnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOwotICAgIHNldFZlcnNp
b25UcmFucy5vbmFib3J0ID0gY2hlY2tNZXRhZGF0YTsKLSAgICBzZXRWZXJzaW9uVHJhbnMuYWJv
cnQoKTsKLX0KLQotZnVuY3Rpb24gY2hlY2tNZXRhZGF0YSgpCi17Ci0gICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJkYi52ZXJzaW9uIiwgInZlcnNpb24gYiIpOwotICAgIGNoZWNrT2JqZWN0U3Rv
cmUoKTsKLSAgICB0ZXN0Q2xvc2UoKTsKLX0KLQotZnVuY3Rpb24gdGVzdENsb3NlKCkKLXsKLSAg
ICBldmFsQW5kTG9nKCJkYi5jbG9zZSgpIik7Ci0gICAgZGVidWcoIk5vdyB0aGF0IHRoZSBjb25u
ZWN0aW9uIGlzIGNsb3NlZCwgdHJhbnNhY3Rpb24gY3JlYXRpb24gc2hvdWxkIGZhaWwiKTsKLSAg
ICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbigndGVzdDEyMycpIiwgIklE
QkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9BTExPV0VEX0VSUiIpOwotICAgIGRlYnVnKCJDYWxsIHR3
aWNlLCBtYWtlIHN1cmUgaXQncyBoYXJtbGVzcyIpOwotICAgIGV2YWxBbmRMb2coImRiLmNsb3Nl
KCkiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotdGVzdCgpOwotCi0KLTwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9kYXRhYmFzZS1iYXNpY3MuanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9kYXRhYmFzZS1uYW1lLXVuZGVmaW5lZC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvZGF0YWJhc2UtbmFtZS11bmRlZmluZWQuaHRtbAppbmRleCA3ODAwMjg2ZDlm
MWMxMDM2NTEwNTJiYzAzMjA3Nzg1Y2QyYzRhMTA1Li5iNmY5MTQ0NWUzZjIxNjdhMGQ4YTJkNTU2
MjliODVkOTA2NDhhOGRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9kYXRhYmFzZS1uYW1lLXVuZGVmaW5lZC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2RhdGFiYXNlLW5hbWUtdW5kZWZpbmVkLmh0bWwKQEAgLTEsMjUgKzEsMTAgQEAK
LTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0K
LWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiB1bmRlZmluZWQgYXMgcmVjb3JkIHZhbHVlIik7
Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAg
c2hvdWxkVGhyb3coImluZGV4ZWREQi5vcGVuKCk7Iik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19
Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZGF0YWJh
c2UtbmFtZS11bmRlZmluZWQuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1vZGQt
bmFtZXMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLW9kZC1u
YW1lcy5odG1sCmluZGV4IGYzMzEyOTJmMzVhOWRjZDM0OWUxOWM1NWM0MWFhNDFhNGNmMzkxYjMu
LjEzZWVkOWU5NzdjOWQ2Y2E3YmY4MDEzMTM0Njc2YzRiMmIxOTlmMDUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLW9kZC1uYW1lcy5odG1sCisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLW9kZC1uYW1lcy5odG1sCkBA
IC0xLDQxICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJv
ZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgb2RkIHZhbHVlIGRh
dGF0eXBlcyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhl
cygpOwotCi0gICAgdGVzdERhdGEgPSBbeyBkZXNjcmlwdGlvbjogJ251bGwnLCAgICAgICAgICAg
ICAgIG5hbWU6ICdcdTAwMDAnIH0sCi0gICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ2Zh
aWh1JywgICAgICAgICAgICAgIG5hbWU6ICdcdWQ4MDBcdWRmNDYnIH0sCi0gICAgICAgICAgICAg
ICAgeyBkZXNjcmlwdGlvbjogJ3VucGFpcmVkIHN1cnJvZ2F0ZScsIG5hbWU6ICdcdWQ4MDAnIH0s
Ci0gICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ2ZmZmUnLCAgICAgICAgICAgICAgIG5h
bWU6ICdcdWZmZmUnIH0sCi0gICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ2ZmZmYnLCAg
ICAgICAgICAgICAgIG5hbWU6ICdcdWZmZmYnIH0sCi0gICAgICAgICAgICAgICAgeyBkZXNjcmlw
dGlvbjogJ2xpbmUgc2VwYXJhdG9yJywgICAgIG5hbWU6ICdcdTIwMjgnIH0KLSAgICBdOwotICAg
IG5leHRUb09wZW4gPSAwOwotICAgIG9wZW5OZXh0RGF0YWJhc2UoKTsKLX0KLQotZnVuY3Rpb24g
b3Blbk5leHREYXRhYmFzZSgpCi17Ci0gICAgZGVidWcoIm9wZW5pbmcgYSBkYXRhYmFzZSBuYW1l
ZCAiICsgdGVzdERhdGFbbmV4dFRvT3Blbl0uZGVzY3JpcHRpb24pOwotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJpbmRleGVkREIub3Blbih0ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1lLCB0ZXN0
RGF0YVtuZXh0VG9PcGVuXS5kZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9ICsrbmV4dFRv
T3BlbiA8IHRlc3REYXRhLmxlbmd0aCA/IG9wZW5OZXh0RGF0YWJhc2UgOiBmaW5pc2hKU1Rlc3Q7
Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZGF0
YWJhc2Utb2RkLW5hbWVzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtcXVvdGEu
aHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLXF1b3RhLmh0bWwK
aW5kZXggMzM3Njg5MjRmNTdjYjU5MGJiMDIwYmUyNDU2Njc3YTE5YWIzMTA1Mi4uZGY2Mzc2ZWZk
YjhiNWFhZmIyODg0ZmYwNTNjYTk0MTIwY2ZmZDRjNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtcXVvdGEuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1xdW90YS5odG1sCkBAIC00LDEwMyArNCw3IEBACiA8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9k
eT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0cyBJbmRleGVkREIncyBxdW90YSBlbmZv
cmNpbmcgbWVjaGFuaXNtLiIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5k
b3JQcmVmaXhlcygpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbign
ZGF0YWJhc2UtcXVvdGEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1
bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBl
dmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0
VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVy
c2lvblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb25TdWNjZXNzKCkKLXsKLSAgICBkZWJ1Zygic2V0
VmVyc2lvblN1Y2Nlc3MoKToiKTsKLSAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVs
bCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0
cmFucy5vbmNvbXBsZXRlID0gY2hlY2tRdW90YUVuZm9yY2luZzsKLQotICAgIGRlbGV0ZUFsbE9i
amVjdFN0b3JlcyhkYik7Ci0KLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLnZlcnNpb24i
LCAibmV3IHZlcnNpb24iKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLm5hbWUiLCAi
ZGF0YWJhc2UtcXVvdGEiKTsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcyIsICJb
XSIpOwotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIwIik7Ci0g
ICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJycpIiwgImZhbHNlIik7
Ci0KLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coJ2RiLmNyZWF0ZU9iamVjdFN0b3JlKCJ0
ZXN0MTIzIiknKTsKLSAgICBjaGVja09iamVjdFN0b3JlKCk7Ci19Ci0KLWZ1bmN0aW9uIGNoZWNr
T2JqZWN0U3RvcmUoKQotewotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzIiwgIlsn
dGVzdDEyMyddIik7Ci0gICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwg
IjEiKTsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucygnJykiLCAi
ZmFsc2UiKTsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucygndGVz
dDQ1NicpIiwgImZhbHNlIik7Ci0gICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMuY29u
dGFpbnMoJ3Rlc3QxMjMnKSIsICJ0cnVlIik7Ci19Ci0KLWZ1bmN0aW9uIGNoZWNrUXVvdGFFbmZv
cmNpbmcoKQotewotICAgIHZhciB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNh
Y3Rpb24oWyd0ZXN0MTIzJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgdHJh
bnMub25hYm9ydCA9IHRlc3RDb21wbGV0ZTsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gdW5leHBl
Y3RlZENvbXBsZXRlQ2FsbGJhY2s7Ci0gICAgZGVidWcoIkNyZWF0aW5nICdkYXRhJyB3aGljaCBj
b250YWlucyA2NEsgb2YgZGF0YSIpOwotICAgIHNlbGYuZGF0YSA9ICJYIjsKLSAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IDE2OyBpKyspCi0gICAgICAgIGRhdGEgKz0gZGF0YTsKLSAgICBzaG91bGRC
ZSgiZGF0YS5sZW5ndGgiLCAiNjU1MzYiKTsKLSAgICBzZWxmLmRhdGFBZGRlZCA9IDA7Ci0gICAg
c2VsZi5zdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3Rlc3Qx
MjMnKSIpOwotICAgIGFkZERhdGEoKTsKLX0KLQotZnVuY3Rpb24gYWRkRGF0YSgpCi17Ci0gICAg
aWYgKGRhdGFBZGRlZCA8IDUgKiAxMDI0ICogMTAyNCkgewotICAgICAgICBpZiAoZGF0YUFkZGVk
ID4gMCkKLSAgICAgICAgICAgIHN0b3JlID0gZXZlbnQudGFyZ2V0LnNvdXJjZTsKLSAgICB9IGVs
c2UgewotICAgICAgICB0ZXN0RmFpbGVkKCJhZGRlZCBtb3JlIHRoYW4gcXVvdGEiKTsKLSAgICAg
ICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgZGF0YUFkZGVk
ICs9IDY1NTM2OwotICAgIHJlcXVlc3QgPSBzdG9yZS5hZGQoe3g6IGRhdGF9LCBkYXRhQWRkZWQp
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkRGF0YTsKLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSBsb2dFcnJvcjsKLX0KLQotZnVuY3Rpb24gbG9nRXJyb3IoKQotewotICAgIGRlYnVnKCJFcnJv
ciBmdW5jdGlvbiBjYWxsZWQ6ICgiICsgZXZlbnQudGFyZ2V0LmVycm9yQ29kZSArICIpICIgKyBl
dmVudC50YXJnZXQud2Via2l0RXJyb3JNZXNzYWdlKTsKLSAgICBldmFsQW5kTG9nKCJldmVudC5w
cmV2ZW50RGVmYXVsdCgpIik7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RDb21wbGV0ZSgpCi17Ci0gICAg
dGVzdFBhc3NlZCgiQWRkaW5nIGRhdGEgZmFpbGVkIGR1ZSB0byBxdW90YSBlcnJvci4gRGF0YSBh
ZGRlZCB3YXMgYWJvdXQgIiArIE1hdGgucm91bmQoZGF0YUFkZGVkIC8gMTAyNCAvIDEwMjQpICsg
IiBNQiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi10ZXN0KCk7Ci0KLQotPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RhdGFiYXNlLXF1b3RhLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvZGVsZXRlLWNsb3NlZC1kYXRhYmFzZS1vYmplY3QuaHRtbCBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZS1jbG9zZWQtZGF0YWJhc2Utb2JqZWN0Lmh0bWwKaW5k
ZXggNGFiNTBkMjA4Mjk1NTAxNzFkYThhMWFkYWZmNWRkN2Q3MjU2NWRjMi4uN2ZkZjU4ZTFkM2Y4
YjIxNzRhNzMyNDc4OGM2OGNhZjY3ODQ5N2RlNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvZGVsZXRlLWNsb3NlZC1kYXRhYmFzZS1vYmplY3QuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGUtY2xvc2VkLWRhdGFiYXNlLW9iamVj
dC5odG1sCkBAIC00LDU2ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpz
Ij48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIkVu
c3VyZSB0aGF0IElEQkRhdGFiYXNlIG9iamVjdHMgYXJlIGRlbGV0ZWQgd2hlbiB0aGVyZSBhcmUg
bm8gcmV0YWluaW5nIHBhdGhzIGxlZnQiKTsKLQotCi1mdW5jdGlvbiB0ZXN0KCkgewotICAgIHJl
bW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgb3BlbkRCQ29ubmVjdGlvbigpOwotfQotCi1mdW5j
dGlvbiBvcGVuREJDb25uZWN0aW9uKCkKLXsKLSAgICBldmFsQW5kTG9nKCJzZWxmLnN0YXRlID0g
J3N0YXJ0aW5nJyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbign
ZGVsZXRlLWNsb3NlZC1kYXRhYmFzZS1vYmplY3QnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBzZWxmLmRiID0gZXZh
bEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICAvLyBPcGVuIGEgc2Vj
b25kIGNvbm5lY3Rpb24gdG8gdGhlIHNhbWUgZGF0YWJhc2UuCi0gICAgdmFyIHJlcXVlc3QyID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2RlbGV0ZS1jbG9zZWQtZGF0YWJhc2Utb2JqZWN0
JykiKTsKLSAgICByZXF1ZXN0Mi5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczI7Ci0gICAgcmVxdWVz
dDIub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVu
U3VjY2VzczIoKQotewotICAgIGRlYnVnKCJTZWNvbmQgY29ubmVjdGlvbiBzdWNjZXNzZnVsbHkg
ZXN0YWJsaXNoZWQuIik7Ci0gICAgLy8gQWZ0ZXIgbGVhdmluZyB0aGlzIGZ1bmN0aW9uLCB0aGVy
ZSBhcmUgbm8gcmVtYWluaW5nIHJlZmVyZW5jZXMgdG8gdGhlCi0gICAgLy8gc2Vjb25kIGNvbm5l
Y3Rpb24sIHNvIGl0IHNob3VsZCBnZXQgZGVsZXRlZC4KLSAgICBzZXRUaW1lb3V0KHNldFZlcnNp
b24sIDIpOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uKCkKLXsKLSAgICBnYygpOwotICAgIGRl
YnVnKCJjYWxsaW5nIHNldFZlcnNpb24oKSAtIGNhbGxiYWNrIHNob3VsZCBydW4gaW1tZWRpYXRl
bHkiKTsKLSAgICB2YXIgdmVyc2lvbkNoYW5nZVJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRW
ZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOwotICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB2ZXJzaW9uQ2hhbmdlUmVxdWVzdC5vbmJs
b2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNrOwotICAgIHZlcnNpb25DaGFuZ2VSZXF1
ZXN0Lm9uc3VjY2VzcyA9IGZpbmlzaEpTVGVzdDsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9kZWxldGUtY2xvc2VkLWRhdGFiYXNlLW9iamVjdC5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZS1yYW5nZS5odG1sIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlLXJhbmdlLmh0bWwKaW5kZXggNGZhMmYyMzEwMTdkMWZk
ODExMmJkNjAxODE2NzkyOGMzYzE1NGViYS4uYzgwMDQxMThkZGQ1NWM4YzE5YWU3ODUzNjkzMGI0
N2NjYjcwNzIxYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGVs
ZXRlLXJhbmdlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRl
LXJhbmdlLmh0bWwKQEAgLTQsOTUgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFy
ZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlv
bigiVGVzdCBJbmRleGVkREIncyBJREJPYmplY3RTdG9yZS5kZWxldGUoSURCS2V5UmFuZ2UpIG1l
dGhvZC4iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMo
KTsKLQotICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIuZGVsZXRlRGF0YWJhc2Uo
J2RlbGV0ZS1yYW5nZScpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAg
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIub3BlbignZGVsZXRlLXJhbmdlJykiKTsK
LSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAg
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgZXZhbEFu
ZExvZygiZGIgPSByZXF1ZXN0LnJlc3VsdCIpOwotICAgICAgICAgICAgZXZhbEFuZExvZygicmVx
dWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJ0cmFucyA9IHJl
cXVlc3QucmVzdWx0Iik7Ci0gICAgICAgICAgICAgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0
ZWRBYm9ydENhbGxiYWNrOwotCi0gICAgICAgICAgICAgICAgZXZhbEFuZExvZygiZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKLQotICAgICAgICAgICAgICAgIHRyYW5zLm9uY29tcGxl
dGUgPSBydW5UZXN0czsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgfQotfQotCi1m
dW5jdGlvbiBjaGVja0tleXMoZXhwZWN0ZWQsIGNhbGxiYWNrKQotewotICAgIGRlYnVnKCJnZXR0
aW5nIGtleXMgZnJvbSBzdG9yZS4uLiIpOwotICAgIGRlYnVnKCJleHBlY3Q6ICIgKyBKU09OLnN0
cmluZ2lmeShleHBlY3RlZCkpOwotICAgIHZhciBrZXlzID0gW107Ci0gICAgcmVxdWVzdCA9IHN0
b3JlLm9wZW5DdXJzb3IoKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAg
Y3Vyc29yID0gcmVxdWVzdC5yZXN1bHQ7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAg
ICAgIGtleXMucHVzaChjdXJzb3Iua2V5KTsKLSAgICAgICAgICAgIGN1cnNvci5jb250aW51ZSgp
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZGVidWcoImFjdHVhbDogIiArIEpTT04u
c3RyaW5naWZ5KGtleXMpKTsKLSAgICAgICAgICAgIGlmIChKU09OLnN0cmluZ2lmeShleHBlY3Rl
ZCkgPT09IEpTT04uc3RyaW5naWZ5KGtleXMpKSB7Ci0gICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiTWF0Y2ghIik7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoIkRvbid0IG1hdGNoISIpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfTsK
LX0KLQotdmFyIHRlc3RzID0gWwotICAgIHsgbG93ZXI6IDMsIHVwcGVyOiA4LCBsb3dlck9wZW46
IGZhbHNlLCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogWzEsIDIsIDksIDEwXX0sCi0gICAg
eyBsb3dlcjogMywgdXBwZXI6IDgsIGxvd2VyT3BlbjogdHJ1ZSwgdXBwZXJPcGVuOiBmYWxzZSwg
ZXhwZWN0ZWQ6IFsxLCAyLCAzLCA5LCAxMF19LAotICAgIHsgbG93ZXI6IDMsIHVwcGVyOiA4LCBs
b3dlck9wZW46IGZhbHNlLCB1cHBlck9wZW46IHRydWUsIGV4cGVjdGVkOiBbMSwgMiwgOCwgOSwg
MTBdfSwKLSAgICB7IGxvd2VyOiAzLCB1cHBlcjogOCwgbG93ZXJPcGVuOiB0cnVlLCB1cHBlck9w
ZW46IHRydWUsIGV4cGVjdGVkOiBbMSwgMiwgMywgOCwgOSwgMTBdfQotXTsKLQotZnVuY3Rpb24g
cnVuVGVzdHMoKQotewotICAgIGZ1bmN0aW9uIG5leHRUZXN0KCkgewotICAgICAgICB2YXIgdGVz
dCA9IHRlc3RzLnNoaWZ0KCk7Ci0gICAgICAgIGlmICh0ZXN0KSB7Ci0gICAgICAgICAgICBkZWJ1
ZygiIik7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdz
dG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgICAgICAgICBldmFsQW5k
TG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpIik7Ci0gICAgICAgICAgICBm
b3IgKGkgPSAxOyBpIDw9IDEwOyArK2kpIHsKLSAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJz
dG9yZS5wdXQoIiArIGkgKyAiLCIgKyBpICsgIikiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGV2YWxBbmRMb2coInN0b3JlLmRlbGV0ZShJREJLZXlSYW5nZS5ib3VuZCgiICsKLSAgICAg
ICAgICAgICAgICB0ZXN0Lmxvd2VyICsgIiwgIiArCi0gICAgICAgICAgICAgICAgdGVzdC51cHBl
ciArICIsICIgKwotICAgICAgICAgICAgICAgIHRlc3QubG93ZXJPcGVuICsgIiwgIiArCi0gICAg
ICAgICAgICAgICAgdGVzdC51cHBlck9wZW4gKyAiKSkiKTsKLSAgICAgICAgICAgIGNoZWNrS2V5
cyh0ZXN0LmV4cGVjdGVkLCBuZXh0VGVzdCk7Ci0gICAgICAgICAgICB0cmFucy5vbmFib3J0ID0g
dW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgICAgICAgICB0cmFucy5vbmNvbXBsZXRlID0g
bmV4dFRlc3Q7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLSAgICBuZXh0VGVzdCgpOwot
fQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9kZWxldGUt
cmFuZ2UuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVJbmRleC5odG1sIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlSW5kZXguaHRtbAppbmRleCA0ZTc2MWZlZTZh
MGZjYzMzOTFhYjI3MmI5OTI3NDkyZjEyNjFlMjczLi5iMmNhNDQzNWU1ZTNmMWQyNThjYzFiNGM2
OWQzMWE4M2M0YWRmMGQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9kZWxldGVJbmRleC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Rl
bGV0ZUluZGV4Lmh0bWwKQEAgLTEsNTkgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgogPGh0bWw+
CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3Jp
cHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4
ZWREQiBkZWxldGVJbmRleCBtZXRob2QiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVt
b3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERC
Lm9wZW4oJ2RlbGV0ZUluZGV4JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNj
ZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQot
Ci1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0d2lkZGxl
SW5kZXhlczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LX0KLQotZnVuY3Rpb24gdHdpZGRsZUluZGV4ZXMoKQotewotICAgIHRyYW5zYWN0aW9uID0gZXZh
bEFuZExvZygidHJhbnNhY3Rpb24gPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgIHRyYW5z
YWN0aW9uLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB0cmFuc2FjdGlv
bi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnNhY3Rpb24ub25j
b21wbGV0ZSA9IHBvc3RUd2lkZGxpbmc7Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsK
LQotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVP
YmplY3RTdG9yZSgnZm9vJyk7Iik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigib2JqZWN0
U3RvcmUuZGVsZXRlSW5kZXgoJ2ZpcnN0JykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZP
VU5EX0VSUiIpOwotICAgIHNob3VsZFRocm93KCJvYmplY3RTdG9yZS5kZWxldGVJbmRleCgpIik7
IC8vIFR5cGVFcnJvcjogbm90IGVub3VnaCBhcmd1bWVudHMuCi0gICAgaW5kZXggPSBldmFsQW5k
TG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdmaXJzdCcsICdmaXJzdCcpOyIp
OwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIm9iamVjdFN0b3JlLmRlbGV0ZUluZGV4KCdG
SVJTVCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKLSAgICBpbmRl
eCA9IGV2YWxBbmRMb2coImluZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ3NlY29uZCcs
ICdzZWNvbmQnKTsiKTsKLSAgICByZXR1cm5WYWx1ZSA9IGV2YWxBbmRMb2coInJldHVyblZhbHVl
ID0gb2JqZWN0U3RvcmUuZGVsZXRlSW5kZXgoJ2ZpcnN0Jyk7Iik7Ci0gICAgc2hvdWxkQmUoInJl
dHVyblZhbHVlIiwgInVuZGVmaW5lZCIpOwotfQotCi1mdW5jdGlvbiBwb3N0VHdpZGRsaW5nKCkK
LXsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnYmFy
Jyk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9BTExPV0VEX0VSUiIpOwotICAgIGV2YWxB
bmRFeHBlY3RFeGNlcHRpb24oIm9iamVjdFN0b3JlLmRlbGV0ZUluZGV4KCdzZWNvbmQnKSIsICJJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsKLSAgICBmaW5p
c2hKU1Rlc3QoKTsKLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvZGVsZXRlSW5kZXguanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVPYmplY3RT
dG9yZS1uYW1lLWFyZ3VtZW50LXJlcXVpcmVkLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9kZWxldGVPYmplY3RTdG9yZS1uYW1lLWFyZ3VtZW50LXJlcXVpcmVkLmh0bWwKaW5k
ZXggZGUyOTY2M2UxYmZiODgzZmU1YWViZmU2ZjYzNDExNjBlOTdiMWNjNi4uMTdhODllZGFkZjY3
NTQ1YjEzZGZjMjBlOWI3OWY3MzYwOTBiODlmOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvZGVsZXRlT2JqZWN0U3RvcmUtbmFtZS1hcmd1bWVudC1yZXF1aXJlZC5o
dG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZU9iamVjdFN0b3Jl
LW5hbWUtYXJndW1lbnQtcmVxdWlyZWQuaHRtbApAQCAtMSw0NiArMSwxMCBAQAotPCFET0NUWVBF
IGh0bWw+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hh
cmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRp
b24oIlRlc3QgSW5kZXhlZERCIGRlbGV0ZU9iamVjdFN0b3JlIHJlcXVpcmVkIGFyZ3VtZW50Iik7
Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAg
ICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBU
ZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4o
bmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2Vz
czsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQot
ZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5k
UG9wdWxhdGVPYmplY3RTdG9yZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSgp
Ci17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIHNob3VsZFRocm93KCJk
Yi5kZWxldGVPYmplY3RTdG9yZSgpOyIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRl
c3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RlbGV0ZU9iamVjdFN0
b3JlLW5hbWUtYXJndW1lbnQtcmVxdWlyZWQuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+
CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxl
dGVPYmplY3RTdG9yZS1udWxsLW5hbWUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2RlbGV0ZU9iamVjdFN0b3JlLW51bGwtbmFtZS5odG1sCmluZGV4IGMzNmRiZGI2ZDczN2Mz
ZDg2OWFiODkwYmY0ZmI2ZGRmMWM5NWNlNjguLjJmOGU3MGJjMDBjYzEyNWUxZTM1NzBmYzEzYmVk
MWQxNTNmOTI3ZDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Rl
bGV0ZU9iamVjdFN0b3JlLW51bGwtbmFtZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2RlbGV0ZU9iamVjdFN0b3JlLW51bGwtbmFtZS5odG1sCkBAIC0xLDQ3ICsxLDEw
IEBACi08IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0
PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgZGVsZXRlT2JqZWN0U3RvcmUgcmVxdWly
ZWQgYXJndW1lbnQiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJl
Zml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2Ny
aXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5k
TG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0
ZU9iamVjdFN0b3JlKCkKLXsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAg
ZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ251bGwnKTsiKTsKLSAgICBldmFsQW5k
TG9nKCJkYi5kZWxldGVPYmplY3RTdG9yZShudWxsKTsiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsK
LX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9kZWxl
dGVPYmplY3RTdG9yZS1udWxsLW5hbWUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kdXBsaWNh
dGVzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kdXBsaWNhdGVzLmh0bWwK
aW5kZXggMGQ4MmIzYzkwMzk1ZTBhYTc3Mzk2NzBmMmIzNmQ5MjIxMDFiODM5MS4uNWU5NDlkZDhj
MjhhYjhjNjI0NzA5NzZiNjIzYTRhZTMxNmNhOTJiOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvZHVwbGljYXRlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL2R1cGxpY2F0ZXMuaHRtbApAQCAtNCwxNzIgKzQsNyBAQAogPHNjcmlwdCBz
cmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2Ny
aXB0PgotCi1kZXNjcmlwdGlvbigiVmVyaWZ5IHRoYXQgeW91IGNhbiBwdXQgdGhlIHNhbWUgZGF0
YSBpbiAyIGRpZmZlcmVudCBkYXRhYmFzZXMgd2l0aG91dCB1bmlxdWVuZXNzIGNvbnN0cmFpbnRz
IGZpcmluZy4iKTsKLQotdGVzdENvdW50ID0gMDsKLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIGlm
ICh0ZXN0Q291bnQrKyA9PSAwKQotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhl
ZERCLm9wZW4oJ2R1cGxpY2F0ZXMtMScpIik7Ci0gICAgZWxzZQotICAgICAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2R1cGxpY2F0ZXMtMicpIik7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uKCkKLXsKLSAgICBkYiA9
IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4aXN0aW5nOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBkZWxldGVFeGlzdGluZygpCi17Ci0g
ICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7Ci0gICAgc2VsZi50cmFucyA9IGV2YWxB
bmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgi
dHJhbnMgIT09IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2Fs
bGJhY2s7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgc2VsZi5zdG9y
ZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIp
OwotICAgIHNlbGYuaW5kZXhPYmplY3QgPSBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgn
aW5kZXhOYW1lJywgJ3gnKSIpOwotICAgIGFkZERhdGEoKTsKLX0KLQotZnVuY3Rpb24gYWRkRGF0
YSgpCi17Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywg
eTogJ3p6eid9LCAna2V5JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZE1vcmU7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0
aW9uIGFkZE1vcmUoKQotewotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJldmVudC50YXJnZXQu
c291cmNlLmFkZCh7eDogJ3ZhbHVlMicsIHk6ICd6enoyJ30sICdrZXkyJykiKTsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGdldERhdGE7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGdldERhdGEoKQotewotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5nZXRLZXkoJ3ZhbHVlJykiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGdldE9iamVjdERhdGE7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGdldE9iamVjdERhdGEoKQotewotICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJrZXkiKTsKLQot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5nZXQoJ3ZhbHVlJykiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldERhdGFGYWlsOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBnZXREYXRhRmFpbCgpCi17
Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LngiLCAidmFs
dWUiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQueSIs
ICJ6enoiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5nZXRLZXko
J2RvZXMgbm90IGV4aXN0JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldE9iamVjdERh
dGFGYWlsOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
fQotCi1mdW5jdGlvbiBnZXRPYmplY3REYXRhRmFpbCgpCi17Ci0gICAgc2hvdWxkQmUoImV2ZW50
LnRhcmdldC5yZXN1bHQiLCAidW5kZWZpbmVkIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiaW5kZXhPYmplY3QuZ2V0KCdkb2VzIG5vdCBleGlzdCcpIik7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBvcGVuS2V5Q3Vyc29yOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuS2V5Q3Vyc29yKCkKLXsKLSAgICBzaG91
bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ1bmRlZmluZWQiKTsKLQotICAgIHNlbGYucmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3IoKSIpOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gY3Vyc29yMUNvbnRpbnVlOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjdXJzb3IxQ29udGludWUo
KQotewotICAgIHNob3VsZEJlRmFsc2UoImV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwiKTsK
LSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgInZh
bHVlIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LnBy
aW1hcnlLZXkiLCAia2V5Iik7Ci0KLSAgICAvLyBXZSByZS11c2UgdGhlIGxhc3QgcmVxdWVzdCBv
YmplY3QuCi0gICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7
Ci0gICAgc2VsZi5yZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvcjFDb250aW51ZTI7Ci19Ci0KLWZ1
bmN0aW9uIGN1cnNvcjFDb250aW51ZTIoKQotewotICAgIHNob3VsZEJlRmFsc2UoImV2ZW50LnRh
cmdldC5yZXN1bHQgPT09IG51bGwiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50
LnRhcmdldC5yZXN1bHQua2V5IiwgInZhbHVlMiIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgImtleTIiKTsKLQotICAgIC8vIFdl
IHJlLXVzZSB0aGUgbGFzdCByZXF1ZXN0IG9iamVjdC4KLSAgICBldmFsQW5kTG9nKCJldmVudC50
YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKLSAgICBzZWxmLnJlcXVlc3Qub25zdWNjZXNzID0g
b3Blbk9iamVjdEN1cnNvcjsKLX0KLQotZnVuY3Rpb24gb3Blbk9iamVjdEN1cnNvcigpCi17Ci0g
ICAgc2hvdWxkQmVUcnVlKCJldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsIik7Ci0KLSAgICBz
ZWxmLnJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5vcGVuQ3Vyc29yKCkiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvcjJDb250aW51ZTsKLSAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY3Vyc29yMkNvbnRp
bnVlKCkKLXsKLSAgICBzaG91bGRCZUZhbHNlKCJldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxs
Iik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIs
ICJ2YWx1ZSIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3Vs
dC52YWx1ZS54IiwgInZhbHVlIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50
YXJnZXQucmVzdWx0LnZhbHVlLnkiLCAienp6Iik7Ci0KLSAgICAvLyBXZSByZS11c2UgdGhlIGxh
c3QgcmVxdWVzdCBvYmplY3QuCi0gICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5j
b250aW51ZSgpIik7Ci0gICAgc2VsZi5yZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvcjJDb250aW51
ZTI7Ci19Ci0KLWZ1bmN0aW9uIGN1cnNvcjJDb250aW51ZTIoKQotewotICAgIHNob3VsZEJlRmFs
c2UoImV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgInZhbHVlMiIpOwotICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS54IiwgInZhbHVlMiIpOyAg
ICAKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUu
eSIsICJ6enoyIik7Ci0KLSAgICAvLyBXZSByZS11c2UgdGhlIGxhc3QgcmVxdWVzdCBvYmplY3Qu
Ci0gICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7Ci0gICAg
c2VsZi5yZXF1ZXN0Lm9uc3VjY2VzcyA9IGxhc3Q7Ci19Ci0KLWZ1bmN0aW9uIGxhc3QoKQotewot
ICAgIHNob3VsZEJlVHJ1ZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCA9PT0gbnVsbCIpOwotCi0gICAg
aWYgKHRlc3RDb3VudCA9PSAxKQotICAgICAgICB0ZXN0KCk7Ci0gICAgZWxzZQotICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKLX0KLQotcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLXRlc3QoKTsKLQot
Ci08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZHVwbGljYXRlcy5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2Vycm9yLWNhdXNlcy1hYm9ydC1ieS1kZWZhdWx0Lmh0bWwgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9lcnJvci1jYXVzZXMtYWJvcnQtYnktZGVmYXVsdC5o
dG1sCmluZGV4IDBkYTgwYjExMWE2ZjI2ZTExODYwNzY3MGEwN2I0ZmI4YTJhYjkwNGMuLmZhNzRk
MTI1MjcwNTFmNzE3Y2E0YWYyNGI1YzI3MDUzNTA3MjE2MGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Vycm9yLWNhdXNlcy1hYm9ydC1ieS1kZWZhdWx0Lmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZXJyb3ItY2F1c2VzLWFib3J0LWJ5
LWRlZmF1bHQuaHRtbApAQCAtNCwxMDcgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9z
aGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlw
dGlvbigiVmVyaWZ5IHRoYXQgYSB0cmFuc2FjdGlvbiB3aXRoIGFuIGVycm9yIGFib3J0cyB1bmxl
c3MgcHJldmVudERlZmF1bHQoKSBpcyBjYWxsZWQuIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewot
ICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImlu
ZGV4ZWREQi5vcGVuKCdlcnJvci1jYXVzZXMtYWJvcnQtYnktZGVmYXVsdCcpIik7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uKCkKLXsKLSAgICBk
YiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4aXN0aW5nOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBkZWxldGVFeGlzdGluZygpCi17
Ci0gICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7Ci0gICAgc2VsZi50cmFucyA9IGV2
YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlVHJ1
ZSgidHJhbnMgIT09IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0
Q2FsbGJhY2s7Ci0gICAgZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IGFkZERhdGEiKTsK
LQotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBldmFsQW5kTG9nKCJkYi5j
cmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKLX0KLQotZnVuY3Rpb24gYWRk
RGF0YSgpCi17Ci0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9u
KFsnc3RvcmVOYW1lJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFu
ZExvZygidHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrIik7Ci0gICAgZXZh
bEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IHRyYW5zYWN0aW9uQ29tcGxldGVkIik7Ci0gICAg
c3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUn
KSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6
ICd6enonfSwgJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRNb3JlOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlv
biBhZGRNb3JlKCkKLXsKLSAgICAKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZXZlbnQudGFy
Z2V0LnNvdXJjZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOwotICAgIHJlcXVlc3Qu
YWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLCBwcmV2ZW50VGhlRGVmYXVsdCk7Ci19Ci0KLWZ1bmN0
aW9uIHByZXZlbnRUaGVEZWZhdWx0KCkKLXsKLSAgICBldmFsQW5kTG9nKCJldmVudC5wcmV2ZW50
RGVmYXVsdCgpIik7Ci19Ci0KLWZ1bmN0aW9uIHRyYW5zYWN0aW9uQ29tcGxldGVkKCkKLXsKLSAg
ICB0ZXN0UGFzc2VkKCJUcmFuc2FjdGlvbiBjb21wbGV0ZWQiKTsKLSAgICBkZWJ1ZygiIik7Ci0g
ICAgZGVidWcoIiIpOwotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2Fj
dGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIGV2
YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSB0cmFuc2FjdGlvbkFib3J0ZWQxIik7Ci0gICAgZXZh
bEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrIik7
Ci0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9y
ZU5hbWUnKSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1
ZScsIHk6ICd6enonfSwgJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVj
dGVkU3VjY2Vzc0NhbGxiYWNrOwotICAgIHJlcXVlc3Qub25lcnJvciA9IGFsbG93RGVmYXVsdDsK
LX0KLQotZnVuY3Rpb24gYWxsb3dEZWZhdWx0KCkKLXsKLSAgICBkZWJ1ZygiRG9pbmcgbm90aGlu
ZyB0byBwcmV2ZW50IHRoZSBkZWZhdWx0IGFjdGlvbi4uLiIpOwotfQotCi1mdW5jdGlvbiB0cmFu
c2FjdGlvbkFib3J0ZWQxKCkKLXsKLSAgICB0ZXN0UGFzc2VkKCJUcmFuc2FjdGlvbiBhYm9ydGVk
Iik7Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCIiKTsKLSAgICB0cmFucyA9IGV2YWxBbmRM
b2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rpb24u
UkVBRF9XUklURSkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmFib3J0ID0gdHJhbnNhY3Rp
b25BYm9ydGVkMiIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSB1bmV4cGVj
dGVkQ29tcGxldGVDYWxsYmFjayIpOwotICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0
cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
Zygic3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKLSAgICBkZWJ1ZygiT21p
dHRpbmcgYW4gb25lcnJvciBoYW5kbGVyIik7Ci19Ci0KLWZ1bmN0aW9uIHRyYW5zYWN0aW9uQWJv
cnRlZDIoKQotewotICAgIHRlc3RQYXNzZWQoIlRyYW5zYWN0aW9uIGFib3J0ZWQiKTsKLSAgICBm
aW5pc2hKU1Rlc3QoKTsKLX0KLQotdGVzdCgpOwotCi0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9lcnJvci1jYXVzZXMtYWJvcnQtYnktZGVmYXVsdC5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2V4Y2VwdGlvbi1pbi1ldmVudC1hYm9ydHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZXhjZXB0aW9uLWluLWV2ZW50LWFib3J0cy1leHBlY3Rl
ZC50eHQKaW5kZXggN2QxZTJkMmE3NDljNTQ1Yjg5ZTNiMDc2ODQ4ZDhjZDk5M2U5ZjZmMy4uYTBh
OTYwMTRhYzFkNDUxZmQ0NjNjODliYzZhZmRjNjYwZmY4ZDM3YiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZXhjZXB0aW9uLWluLWV2ZW50LWFib3J0cy1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZXhjZXB0aW9uLWluLWV2
ZW50LWFib3J0cy1leHBlY3RlZC50eHQKQEAgLTEsNSArMSw1IEBACi1DT05TT0xFIE1FU1NBR0U6
IGxpbmUgNjA6IFVuY2F1Z2h0IHRoaXMgZXhjZXB0aW9uIGlzIGV4cGVjdGVkCi1DT05TT0xFIE1F
U1NBR0U6IGxpbmUgNjA6IFVuY2F1Z2h0IHRoaXMgZXhjZXB0aW9uIGlzIGV4cGVjdGVkCitDT05T
T0xFIE1FU1NBR0U6IGxpbmUgNTc6IFVuY2F1Z2h0IHRoaXMgZXhjZXB0aW9uIGlzIGV4cGVjdGVk
CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNTc6IFVuY2F1Z2h0IHRoaXMgZXhjZXB0aW9uIGlzIGV4
cGVjdGVkCiBUZXN0IGV4Y2VwdGlvbnMgaW4gSURCUmVxdWVzdCBoYW5kbGVycyBjYXVzZSBhYm9y
dHMuCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2V4Y2VwdGlvbi1pbi1ldmVudC1hYm9ydHMuaHRtbCBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2V4Y2VwdGlvbi1pbi1ldmVudC1hYm9ydHMuaHRtbApp
bmRleCAwNDNjZmFjZThmYzJhMDkyMWJkODZlM2ExNDQwZmRmNmY3MzBkMzE3Li44Y2RiZDY5NjYx
MzE3NzBkMzVjZWQ3MzI4MWMwMGE0YTQxYjhjZTU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9leGNlcHRpb24taW4tZXZlbnQtYWJvcnRzLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZXhjZXB0aW9uLWluLWV2ZW50LWFib3J0cy5odG1s
CkBAIC00LDEyNyArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9z
Y3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IGV4
Y2VwdGlvbnMgaW4gSURCUmVxdWVzdCBoYW5kbGVycyBjYXVzZSBhYm9ydHMuIik7Ci0KLWZ1bmN0
aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdleGNlcHRpb24taW4tZXZlbnQtYWJvcnRzJyki
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb247Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb24o
KQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0K
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIp
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZUV4
aXN0aW5nKCkKLXsKLSAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKLSAgICBzZWxm
LnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAg
c2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4
cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0g
c3RhcnRUZXN0Iik7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgc3Rv
cmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUn
LCBudWxsKSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1
ZScsIHk6ICd6enonfSwgJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHN0YXJ0VGVzdCgpCi17Ci0gICAgZGVidWco
IiIpOwotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0
b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIGV2YWxBbmRMb2co
InRyYW5zLm9uYWJvcnQgPSB0cmFuc2FjdGlvbkFib3J0ZWQxIik7Ci0gICAgZXZhbEFuZExvZygi
dHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrIik7Ci0gICAgc3Rv
cmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIp
OwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZTInLCB5OiAn
enp6Mid9LCAna2V5MicpIik7Ci0gICAgdHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignc3VjY2Vzcycs
IGNhdXNlRXhjZXB0aW9uLCB0cnVlKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY2F1c2VFeGNlcHRpb24oKQotewotICAgIGRl
YnVnKCIiKTsKLSAgICBldmFsQW5kTG9nKCJldmVudC5wcmV2ZW50RGVmYXVsdCgpIik7Ci0gICAg
ZGVidWcoIlRocm93aW5nIik7Ci0gICAgdGhyb3cgInRoaXMgZXhjZXB0aW9uIGlzIGV4cGVjdGVk
IjsKLX0KLQotZnVuY3Rpb24gdHJhbnNhY3Rpb25BYm9ydGVkMSgpCi17Ci0gICAgZGVidWcoIiIp
OwotICAgIHNob3VsZEhhdmVIYWRFcnJvcigidGhpcyBleGNlcHRpb24gaXMgZXhwZWN0ZWQiKTsK
LSAgICB0ZXN0UGFzc2VkKCJUaGUgdHJhbnNhY3Rpb24gd2FzIGFib3J0ZWQuIik7Ci0gICAgdHJh
bnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIElE
QlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMub25hYm9y
dCA9IHRyYW5zYWN0aW9uQWJvcnRlZDIiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBs
ZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2siKTsKLSAgICBzdG9yZSA9IGV2YWxBbmRM
b2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAna2V5Jyki
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7Ci0g
ICAgZGIub25lcnJvciA9IGNhdXNlRXhjZXB0aW9uOwotfQotCi1mdW5jdGlvbiB0cmFuc2FjdGlv
bkFib3J0ZWQyKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgc2hvdWxkSGF2ZUhhZEVycm9yKCJ0
aGlzIGV4Y2VwdGlvbiBpcyBleHBlY3RlZCIpOwotICAgIHRlc3RQYXNzZWQoIlRoZSB0cmFuc2Fj
dGlvbiB3YXMgYWJvcnRlZC4iKTsKLSAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIu
dHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsK
LSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2si
KTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gdHJhbnNhY3Rpb25Db21wbGV0
ZWQxIik7Ci0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3Jl
KCdzdG9yZU5hbWUnKSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6
ICd2YWx1ZTMnLCB5OiAnenp6Myd9LCAna2V5MycpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSB0aHJvd0FuZENhdGNoOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotICAgIGRiLm9uZXJyb3IgPSBudWxsOwotfQotCi1mdW5jdGlvbiB0aHJvd0FuZENh
dGNoKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZXZhbEFuZExvZygiZXZlbnQucHJldmVudERl
ZmF1bHQoKSIpOwotICAgIGRlYnVnKCJUaHJvd2luZyB3aXRoaW4gYSB0cnkgYmxvY2siKTsKLSAg
ICB0cnkgewotICAgICAgICB0aHJvdyAiQUhISCI7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgIH0K
LX0KLQotZnVuY3Rpb24gdHJhbnNhY3Rpb25Db21wbGV0ZWQxKCkKLXsKLSAgICBkZWJ1ZygiIik7
Ci0gICAgdGVzdFBhc3NlZCgiVGhlIHRyYW5zYWN0aW9uIGNvbXBsZXRlZC4iKTsKLSAgICB0cmFu
cyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURC
VHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmFib3J0
ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2siKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNv
bXBsZXRlID0gdHJhbnNhY3Rpb25Db21wbGV0ZWQyIik7Ci0gICAgc3RvcmUgPSBldmFsQW5kTG9n
KCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZTQnLCB5OiAnenp6NCd9LCAna2V5NCcp
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgdGVzdFBhc3NlZCgia2V5
NCBhZGRlZCIpOyB9Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIHRyYW5zYWN0aW9uQ29tcGxldGVkMigpCi17Ci0gICAgZGVidWco
IiIpOwotICAgIHRlc3RQYXNzZWQoIlRoZSB0cmFuc2FjdGlvbiBjb21wbGV0ZWQuIik7Ci0gICAg
ZGVidWcoIiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi10ZXN0KCk7Ci0KLQotPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2V4Y2VwdGlvbi1pbi1ldmVudC1hYm9ydHMuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9mYWN0b3J5LWJhc2ljcy5odG1sIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvZmFjdG9yeS1iYXNpY3MuaHRtbAppbmRleCBkNDRjYWIyNTI5NmFm
YzU1ZGI2YWNmNTc3NGFiMmE3NTc5MDczMWJkLi4yYjcxZDZjZDYyY2RlY2UxNTA4ZTcyMmJmZDJi
OTU5YzczZTY0NzQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9m
YWN0b3J5LWJhc2ljcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Zh
Y3RvcnktYmFzaWNzLmh0bWwKQEAgLTQsODggKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNl
cy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNj
cmlwdGlvbigiVGVzdCB0aGUgYmFzaWNzIG9mIEluZGV4ZWREQidzIElEQkZhY3RvcnkuIik7Ci0K
LWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBz
aG91bGRCZVRydWUoInR5cGVvZiBpbmRleGVkREIub3BlbiA9PT0gJ2Z1bmN0aW9uJyIpOwotICAg
IHNob3VsZEJlVHJ1ZSgidHlwZW9mIGluZGV4ZWREQi5jbXAgPT09ICdmdW5jdGlvbiciKTsKLSAg
ICBzaG91bGRCZVRydWUoInR5cGVvZiBpbmRleGVkREIuZ2V0RGF0YWJhc2VOYW1lcyA9PT0gJ2Z1
bmN0aW9uJyIpOwotCi0gICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2YgaW5kZXhlZERCLmRlbGV0ZURh
dGFiYXNlID09PSAnZnVuY3Rpb24nIik7Ci0KLSAgICBuYW1lID0gJ3N0b3JhZ2UvaW5kZXhlZGRi
L2ZhY3RvcnktYmFzaWNzJzsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsK
LQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIuZ2V0RGF0YWJhc2VOYW1lcygp
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXREYXRhYmFzZU5hbWVzU3VjY2VzczE7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0
aW9uIGdldERhdGFiYXNlTmFtZXNTdWNjZXNzMSgpCi17Ci0gICAgdmFyIGRhdGFiYXNlTmFtZXM7
Ci0gICAgZXZhbEFuZExvZygiZGF0YWJhc2VOYW1lcyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsK
LSAgICBzaG91bGRCZUZhbHNlKCJkYXRhYmFzZU5hbWVzLmNvbnRhaW5zKCciICsgbmFtZSArICIn
KSIpOwotICAgIHNob3VsZEJlRmFsc2UoImRhdGFiYXNlTmFtZXMuY29udGFpbnMoJ0RBVEFCQVNF
IFRIQVQgRE9FUyBOT1QgRVhJU1QnKSIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImlu
ZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBldmFsQW5kTG9nKCJl
dmVudC50YXJnZXQucmVzdWx0LmNsb3NlKCkiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
aW5kZXhlZERCLmdldERhdGFiYXNlTmFtZXMoKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
Z2V0RGF0YWJhc2VOYW1lc1N1Y2Nlc3MyOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBnZXREYXRhYmFzZU5hbWVzU3VjY2VzczIo
KQotewotICAgIHZhciBkYXRhYmFzZU5hbWVzOwotICAgIGV2YWxBbmRMb2coImRhdGFiYXNlTmFt
ZXMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJkYXRhYmFzZU5h
bWVzLmNvbnRhaW5zKCciICsgbmFtZSArICInKSIpOwotICAgIHNob3VsZEJlRmFsc2UoImRhdGFi
YXNlTmFtZXMuY29udGFpbnMoJ0RBVEFCQVNFIFRIQVQgRE9FUyBOT1QgRVhJU1QnKSIpOwotCi0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgnIiArIG5h
bWUgKyAiJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZURhdGFiYXNlU3VjY2Vz
czsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQot
ZnVuY3Rpb24gZGVsZXRlRGF0YWJhc2VTdWNjZXNzKCkKLXsKLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCLmdldERhdGFiYXNlTmFtZXMoKSIpOwotICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZ2V0RGF0YWJhc2VOYW1lc1N1Y2Nlc3MzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBnZXREYXRhYmFzZU5hbWVzU3Vj
Y2VzczMoKQotewotICAgIHZhciBkYXRhYmFzZU5hbWVzOwotICAgIGV2YWxBbmRMb2coImRhdGFi
YXNlTmFtZXMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGF0
YWJhc2VOYW1lcy5jb250YWlucygnIiArIG5hbWUgKyAiJykiKTsKLSAgICBzaG91bGRCZUZhbHNl
KCJkYXRhYmFzZU5hbWVzLmNvbnRhaW5zKCdEQVRBQkFTRSBUSEFUIERPRVMgTk9UIEVYSVNUJyki
KTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIuZGVsZXRlRGF0YWJhc2Uo
J0RBVEFCQVNFIFRIQVQgRE9FUyBOT1QgRVhJU1QnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZGVsZXRlRGF0YWJhc2VTdWNjZXNzMjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZGVsZXRlRGF0YWJhc2VTdWNjZXNzMigp
Ci17Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXRlc3QoKTsKLQotCi08L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvZmFjdG9yeS1iYXNpY3MuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9mYWN0b3J5LWNtcC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZmFj
dG9yeS1jbXAuaHRtbAppbmRleCBmNzI4NTMzYjM4MTRjMTU5MzQ4NDgwYjJhYTFmMjZlZTYwN2Fh
ZTcxLi40MmYwYWM2MmJlNzJhMDcxNDc1MzU0ZGQ2MWExYzY0MjVlZWI1NDZkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9mYWN0b3J5LWNtcC5odG1sCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ZhY3RvcnktY21wLmh0bWwKQEAgLTQsMTQ3ICs0
LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVh
ZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGtleSBj
b21wYXJpc29uIHVzaW5nIElEQkZhY3RvcnkuY21wKCkuIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQot
ewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBzaG91bGRCZVRydWUoInR5cGVv
ZiBpbmRleGVkREIuY21wID09PSAnZnVuY3Rpb24nIik7Ci0KLSAgICB0ZXN0VmFsaWRLZXlzKCk7
Ci0gICAgdGVzdEludmFsaWRLZXlzKCk7Ci0gICAgdGVzdElkZW50aWNhbEtleXMoKTsKLSAgICBm
aW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gdGVzdFZhbGlkS2V5cygpCi17Ci0gICAgZGVi
dWcoIiIpOwotICAgIGRlYnVnKCJjb21wYXJlIHZhbGlkIGtleXMiKTsKLQotICAgIHZhciBrZXlz
ID0gWwotICAgICAgICAiLUluZmluaXR5IiwKLSAgICAgICAgIi1OdW1iZXIuTUFYX1ZBTFVFIiwK
LSAgICAgICAgIi0xIiwKLSAgICAgICAgIi1OdW1iZXIuTUlOX1ZBTFVFIiwKLSAgICAgICAgIjAi
LAotICAgICAgICAiTnVtYmVyLk1JTl9WQUxVRSIsCi0gICAgICAgICIxIiwKLSAgICAgICAgIk51
bWJlci5NQVhfVkFMVUUiLAotICAgICAgICAiSW5maW5pdHkiLAotIAotICAgICAgICAibmV3IERh
dGUoMCkiLAotICAgICAgICAibmV3IERhdGUoMTAwMCkiLAotICAgICAgICAibmV3IERhdGUoMTMx
NzM5OTkzMTAyMykiLAotICAgICAgICAKLSAgICAgICAgIicnIiwKLSAgICAgICAgIidceDAwJyIs
Ci0gICAgICAgICInYSciLAotICAgICAgICAiJ2FhJyIsCi0gICAgICAgICInYiciLAotICAgICAg
ICAiJ2JhJyIsCi0KLSAgICAgICAgIidceEEyJyIsIC8vIFUrMDBBMiBDRU5UIFNJR04KLSAgICAg
ICAgIidcdTZDMzQnIiwgLy8gVSs2QzM0IENKSyBVTklGSUVEIElERU9HUkFQSCAod2F0ZXIpCi0g
ICAgICAgICInXHVEODM0XHVERDFFJyIsIC8vIFUrMUQxMUUgTVVTSUNBTCBTWU1CT0wgRy1DTEVG
IChVVEYtMTYgc3Vycm9nYXRlIHBhaXIpCi0gICAgICAgICInXHVGRkZEJyIsIC8vIFUrRkZGRCBS
RVBMQUNFTUVOVCBDSEFSQUNURVIKLQotICAgICAgICAiW10iLAotCi0gICAgICAgICJbLUluZmlu
aXR5XSIsCi0gICAgICAgICJbLU51bWJlci5NQVhfVkFMVUVdIiwKLSAgICAgICAgIlstMV0iLAot
ICAgICAgICAiWy1OdW1iZXIuTUlOX1ZBTFVFXSIsCi0gICAgICAgICJbMF0iLAotICAgICAgICAi
W051bWJlci5NSU5fVkFMVUVdIiwKLSAgICAgICAgIlsxXSIsCi0gICAgICAgICJbTnVtYmVyLk1B
WF9WQUxVRV0iLAotICAgICAgICAiW0luZmluaXR5XSIsCi0gCi0gICAgICAgICJbbmV3IERhdGUo
MCldIiwKLSAgICAgICAgIltuZXcgRGF0ZSgxMDAwKV0iLAotICAgICAgICAiW25ldyBEYXRlKDEz
MTczOTk5MzEwMjMpXSIsCi0gICAgICAgIAotICAgICAgICAiWycnXSIsCi0gICAgICAgICJbJ1x4
MDAnXSIsCi0gICAgICAgICJbJ2EnXSIsCi0gICAgICAgICJbJ2FhJ10iLAotICAgICAgICAiWydi
J10iLAotICAgICAgICAiWydiYSddIiwKLQotICAgICAgICAiWydceEEyJ10iLCAvLyBVKzAwQTIg
Q0VOVCBTSUdOCi0gICAgICAgICJbJ1x1NkMzNCddIiwgLy8gVSs2QzM0IENKSyBVTklGSUVEIElE
RU9HUkFQSCAod2F0ZXIpCi0gICAgICAgICJbJ1x1RDgzNFx1REQxRSddIiwgLy8gVSsxRDExRSBN
VVNJQ0FMIFNZTUJPTCBHLUNMRUYgKFVURi0xNiBzdXJyb2dhdGUgcGFpcikKLSAgICAgICAgIlsn
XHVGRkZEJ10iLCAvLyBVK0ZGRkQgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSCi0KLSAgICAgICAgIltb
XV0iLAotICAgICAgICAKLSAgICAgICAgIltbXSwgW11dIiwKLSAgICAgICAgIltbXSwgW10sIFtd
XSIsCi0KLSAgICAgICAgIltbW11dXSIsCi0gICAgICAgICJbW1tbXV1dXSIKLSAgICBdOwotCi0g
ICAgdmFyIGksIGtleTEsIGtleTI7Ci0gICAgZm9yIChpID0gMDsgaSA8IGtleXMubGVuZ3RoIC0g
MTsgaSArPSAxKSB7Ci0gICAgICAgIGtleTEgPSBrZXlzW2ldOwotICAgICAgICBrZXkyID0ga2V5
c1tpICsgMV07Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXhlZERCLmNtcCgiICsga2V5MSAr
ICIsIiArIGtleTIgKyAiKSA9PT0gLTEiKTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJpbmRleGVk
REIuY21wKCIgKyBrZXkyICsgIiwiICsga2V5MSArICIpID09PSAxIik7Ci0gICAgICAgIHNob3Vs
ZEJlVHJ1ZSgiaW5kZXhlZERCLmNtcCgiICsga2V5MSArICIsIiArIGtleTEgKyAiKSA9PT0gMCIp
OwotICAgICAgICBzaG91bGRCZVRydWUoImluZGV4ZWREQi5jbXAoIiArIGtleTIgKyAiLCIgKyBr
ZXkyICsgIikgPT09IDAiKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RJbnZhbGlkS2V5cygp
Ci17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJjb21wYXJlIGludmFsaWQga2V5cyIpOwot
Ci0gICAgdmFyIGludmFsaWRLZXlzID0gWwotICAgICAgICAidm9pZCAwIiwgLy8gdW5kZWZpbmVk
Ci0gICAgICAgICJ0cnVlIiwKLSAgICAgICAgImZhbHNlIiwKLSAgICAgICAgIk5hTiIsCi0gICAg
ICAgICJuZXcgRGF0ZShOYU4pIiwKLSAgICAgICAgIm51bGwiLAotICAgICAgICAie30iLAotICAg
ICAgICAiZnVuY3Rpb24gKCkge30iLAotICAgICAgICAiL3JlZ2V4LyIsCi0gICAgICAgICJzZWxm
IiwKLSAgICAgICAgInNlbGYuZG9jdW1lbnQiLAotICAgICAgICAic2VsZi5kb2N1bWVudC5ib2R5
IgotICAgIF07Ci0KLSAgICB2YXIgaSwga2V5MSwga2V5MjsKLSAgICBmb3IgKGkgPSAwOyBpIDwg
aW52YWxpZEtleXMubGVuZ3RoIC0gMTsgaSArPSAxKSB7Ci0gICAgICAgIGtleTEgPSBpbnZhbGlk
S2V5c1tpXTsKLSAgICAgICAga2V5MiA9IGludmFsaWRLZXlzW2kgKyAxXTsKLSAgICAgICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXhlZERCLmNtcCgiICsga2V5MSArICIsICIgKyBrZXky
ICsgIikiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLSAgICAgICAgZXZhbEFu
ZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXhlZERCLmNtcCgiICsga2V5MiArICIsICIgKyBrZXkxICsg
IikiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLSAgICAgICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigiaW5kZXhlZERCLmNtcCgiICsga2V5MSArICIsICd2YWxpZCcpIiwgIklE
QkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0gICAgICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oImluZGV4ZWREQi5jbXAoJ3ZhbGlkJywgIiArIGtleTEgKyAiKSIsICJJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJp
bmRleGVkREIuY21wKCIgKyBrZXkyICsgIiwgJ3ZhbGlkJykiLCAiSURCRGF0YWJhc2VFeGNlcHRp
b24uREFUQV9FUlIiKTsKLSAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXhlZERC
LmNtcCgndmFsaWQnLCAiICsga2V5MiArICIpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFf
RVJSIik7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0SWRlbnRpY2FsS2V5cygpCi17Ci0gICAg
ZGVidWcoIiIpOwotICAgIGRlYnVnKCJjb21wYXJlIGlkZW50aWNhbCBrZXlzIik7Ci0KLSAgICBz
aG91bGRCZVRydWUoImluZGV4ZWREQi5jbXAoMCwgLTApID09PSAwIik7Ci19Ci0KLQotdGVzdCgp
OwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZmFjdG9yeS1jbXAuanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9mYWN0b3J5LWRlbGV0ZWRhdGFiYXNlLWludGVyYWN0aW9ucy5o
dG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZmFjdG9yeS1kZWxldGVkYXRhYmFz
ZS1pbnRlcmFjdGlvbnMuaHRtbAppbmRleCBlNWMwZGM2MWJmNmNiMGQzNTVjMTIyZTljMDc5ZDFl
MGFlZjhjOWE1Li5mMGVmNDc4ZGNkZGY0Y2M5YzVjZjM2MDRkNzk4YzAxMTg5YWMxMTZhIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9mYWN0b3J5LWRlbGV0ZWRhdGFi
YXNlLWludGVyYWN0aW9ucy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2ZhY3RvcnktZGVsZXRlZGF0YWJhc2UtaW50ZXJhY3Rpb25zLmh0bWwKQEAgLTQsMTkxICs0LDcg
QEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4K
IDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgdGhlIGRlbGV0ZURhdGFiYXNl
IGNhbGwgYW5kIGl0cyBpbnRlcmFjdGlvbiB3aXRoIG9wZW4vc2V0VmVyc2lvbiIpOwotCi1mdW5j
dGlvbiBDb25uZWN0aW9uKGlkKSB7Ci0gICAgaWQgPSBTdHJpbmcoaWQpOwotICAgIHZhciB0aGF0
ID0gdGhpczsKLSAgICB0aGlzLm9wZW4gPSBmdW5jdGlvbihvcHRzKSB7Ci0gICAgICAgIHNlbGYu
c3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5vcGVuJyIpKTsKLSAgICAgICAgdmFy
IHJlcSA9IGluZGV4ZWREQi5vcGVuKHNlbGYuZGJuYW1lKTsKLSAgICAgICAgcmVxLm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0
aW9uIChlKSB7Ci0gICAgICAgICAgICB0aGF0LmhhbmRsZSA9IGUudGFyZ2V0LnJlc3VsdDsKLSAg
ICAgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5vcGVuLm9u
c3VjY2VzcyciKSk7Ci0gICAgICAgICAgICB0aGF0LmhhbmRsZS5vbnZlcnNpb25jaGFuZ2UgPSBm
dW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2co
IiciICsgaWQgKyAiLm9udmVyc2lvbmNoYW5nZSciKSk7Ci0gICAgICAgICAgICAgICAgaWYgKG9w
dHMgJiYgb3B0cy5vbnZlcnNpb24pIHsgb3B0cy5vbnZlcnNpb24uY2FsbCh0aGF0KTsgfQotICAg
ICAgICAgICAgfTsKLSAgICAgICAgICAgIGlmIChvcHRzICYmIG9wdHMub25zdWNjZXNzKSB7IG9w
dHMub25zdWNjZXNzLmNhbGwodGhhdCk7IH0KLSAgICAgICAgfTsKLSAgICB9OwotCi0gICAgdGhp
cy5jbG9zZSA9IGZ1bmN0aW9uKCkgewotICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExv
ZygiJyIgKyBpZCArICIuY2xvc2UnIikpOwotICAgICAgICB0aGlzLmhhbmRsZS5jbG9zZSgpOwot
ICAgIH07Ci0KLSAgICB0aGlzLnNldFZlcnNpb24gPSBmdW5jdGlvbihvcHRzKSB7Ci0gICAgICAg
IHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5zZXRWZXJzaW9uJyIpKTsK
LSAgICAgICAgdmFyIHJlcSA9IHRoaXMuaGFuZGxlLnNldFZlcnNpb24oU3RyaW5nKHNlbGYudmVy
KyspKTsKLSAgICAgICAgcmVxLm9uYWJvcnQgPSBmdW5jdGlvbiAoZSkgewotICAgICAgICAgICAg
c2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLnNldFZlcnNpb24ub25hYm9y
dCciKSk7Ci0gICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9uYWJvcnQpIHsgb3B0cy5vbmFi
b3J0LmNhbGwodGhhdCk7IH0KLSAgICAgICAgfTsKLSAgICAgICAgcmVxLm9uYmxvY2tlZCA9IGZ1
bmN0aW9uIChlKSB7Ci0gICAgICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIg
KyBpZCArICIuc2V0VmVyc2lvbi5vbmJsb2NrZWQnIikpOwotICAgICAgICAgICAgaWYgKG9wdHMg
JiYgb3B0cy5vbmJsb2NrZWQpIHsgb3B0cy5vbmJsb2NrZWQuY2FsbCh0aGF0KTsgfQotICAgICAg
ICB9OwotICAgICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAgICAg
IHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5zZXRWZXJzaW9uLm9uc3Vj
Y2VzcyciKSk7Ci0gICAgICAgICAgICBpZiAodGhhdC5oYW5kbGUub2JqZWN0U3RvcmVOYW1lcy5j
b250YWlucygidGVzdC1zdG9yZSIgKyBzZWxmLnZlcikpIHsKLSAgICAgICAgICAgICAgICB0aGF0
LmhhbmRsZS5kZWxldGVPYmplY3RTdG9yZSgidGVzdC1zdG9yZSIgKyBzZWxmLnZlcik7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB2YXIgc3RvcmUgPSB0aGF0LmhhbmRsZS5jcmVhdGVPYmpl
Y3RTdG9yZSgidGVzdC1zdG9yZSIgKyBzZWxmLnZlcik7Ci0gICAgICAgICAgICB2YXIgY291bnQg
PSAwOwotICAgICAgICAgICAgZG9fYXN5bmNfcHV0cygpOyAvLyBLZWVwIHRoaXMgdHJhbnNhY3Rp
b24gcnVubmluZyBmb3IgYSB3aGlsZQotICAgICAgICAgICAgZnVuY3Rpb24gZG9fYXN5bmNfcHV0
cygpIHsKLSAgICAgICAgICAgICAgICB2YXIgcmVxID0gc3RvcmUucHV0KGNvdW50LCBjb3VudCk7
Ci0gICAgICAgICAgICAgICAgcmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LSAgICAgICAgICAgICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKCsrY291bnQgPCAxMCkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ZG9fYXN5bmNfcHV0cygpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLnNl
dFZlcnNpb24udHJhbnNhY3Rpb24tY29tcGxldGUnIikpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKG9wdHMgJiYgb3B0cy5vbnN1Y2Nlc3MpIHsgb3B0cy5vbnN1Y2Nlc3MuY2FsbCh0aGF0
KTsgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfTsKLSAgICAgICAgcmVxLm9uZXJyb3IgPSBmdW5jdGlvbiAoZSkgewot
ICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLnNldFZl
cnNpb24ub25lcnJvciciKSk7Ci0gICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9uZXJyb3Ip
IHsgb3B0cy5vbmVycm9yLmNhbGwodGhhdCk7IH0KLSAgICAgICAgfTsKLSAgICB9OwotfQotCi1m
dW5jdGlvbiBkZWxldGVEYXRhYmFzZShpZCwgbmFtZSwgb3B0cykgewotICAgIHNlbGYuc3RlcHMu
cHVzaChldmFsQW5kTG9nKCInZGVsZXRlRGF0YWJhc2UoIiArIGlkICsgIiknIikpOwotICAgIHZh
ciByZXEgPSBpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UobmFtZSk7Ci0gICAgcmVxLm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uIChlKSB7Ci0gICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCIn
ZGVsZXRlRGF0YWJhc2UoIiArIGlkICsgIikub25zdWNjZXNzJyIpKTsKLSAgICAgICAgaWYgKG9w
dHMgJiYgb3B0cy5vbnN1Y2Nlc3MpIHsgb3B0cy5vbnN1Y2Nlc3MuY2FsbChudWxsKTsgfQotICAg
IH07Ci0gICAgcmVxLm9uZXJyb3IgPSBmdW5jdGlvbiAoZSkgewotICAgICAgICBzZWxmLnN0ZXBz
LnB1c2goZXZhbEFuZExvZygiJ2RlbGV0ZURhdGFiYXNlKCIgKyBpZCArICIpLm9uZXJyb3InIikp
OwotICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9uZXJyb3IpIHsgb3B0cy5vbmVycm9yLmNhbGwo
bnVsbCk7IH0KLSAgICB9OwotICAgIHJlcS5vbmJsb2NrZWQgPSBmdW5jdGlvbiAoZSkgewotICAg
ICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJ2RlbGV0ZURhdGFiYXNlKCIgKyBpZCAr
ICIpLm9uYmxvY2tlZCciKSk7Ci0gICAgICAgIGlmIChvcHRzICYmIG9wdHMub25ibG9ja2VkKSB7
IG9wdHMub25ibG9ja2VkLmNhbGwobnVsbCk7IH0KLSAgICB9OwotfQotCi0vLyBydW4gYSBzZXJp
ZXMgb2Ygc3RlcHMgdGhhdCB0YWtlIGEgY29udGludWF0aW9uIGZ1bmN0aW9uCi1mdW5jdGlvbiBy
dW5TdGVwcyhjb21tYW5kcykgewotICAgIGlmIChjb21tYW5kcy5sZW5ndGgpIHsKLSAgICAgICAg
dmFyIGNvbW1hbmQgPSBjb21tYW5kcy5zaGlmdCgpOwotICAgICAgICBjb21tYW5kKGZ1bmN0aW9u
KCkgeyBydW5TdGVwcyhjb21tYW5kcyk7IH0pOwotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdCgp
IHsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIHRlc3QxKCk7Ci19Ci0KLWZ1bmN0
aW9uIHRlc3QxKCkgewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiVEVTVDogZGVsZXRlRGF0
YWJhc2UgYmxvY2tlZCBvbiBvcGVuIGhhbmRsZXMiKTsKLSAgICBldmFsQW5kTG9nKCJzZWxmLmRi
bmFtZSA9ICd0ZXN0MSc7IHNlbGYudmVyID0gMTsgc2VsZi5zdGVwcyA9IFtdIik7Ci0gICAgdmFy
IGggPSBuZXcgQ29ubmVjdGlvbigiaCIpOwotICAgIHJ1blN0ZXBzKFtmdW5jdGlvbihkb05leHQp
IHsgaC5vcGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb252ZXJzaW9uOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRlYnVnKCIgICAgaCBjbG9zaW5nLCBidXQgbm90IGltbWVkaWF0ZWx5Iik7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBoLmNsb3NlKCk7IH0sIDApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fSk7
IH0sCi0gICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBkZWxldGVEYXRhYmFzZSgiIiwgc2VsZi5k
Ym5hbWUsIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uc3VjY2VzczogZmluaXNoVGVz
dH0pOyB9LAotICAgICAgICBdKTsKLSAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgewotICAgICAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNlbGYuc3RlcHMudG9TdHJpbmcoKSIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbImgub3BlbiIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImgub3Blbi5vbnN1Y2Nlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJkZWxldGVEYXRhYmFzZSgpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
aC5vbnZlcnNpb25jaGFuZ2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWxl
dGVEYXRhYmFzZSgpLm9uYmxvY2tlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImguY2xvc2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWxldGVEYXRhYmFz
ZSgpLm9uc3VjY2VzcyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnRvU3RyaW5n
KCkpOwotICAgICAgICB0ZXN0MigpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdDIoKSB7Ci0g
ICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJURVNUOiBkZWxldGVEYXRhYmFzZSBub3QgYmxvY2tl
ZCB3aGVuIGhhbmRsZXMgY2xvc2UgaW1tZWRpYXRlbHkiKTsKLSAgICBldmFsQW5kTG9nKCJzZWxm
LmRibmFtZSA9ICd0ZXN0Mic7IHNlbGYudmVyID0gMTsgc2VsZi5zdGVwcyA9IFtdIik7Ci0gICAg
dmFyIGggPSBuZXcgQ29ubmVjdGlvbigiaCIpOwotICAgIHJ1blN0ZXBzKFtmdW5jdGlvbihkb05l
eHQpIHsgaC5vcGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9udmVyc2lvbjogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoIiAgICBoIGNsb3NpbmcgaW1t
ZWRpYXRlbHkiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBoLmNsb3NlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
fSk7IH0sCi0gICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBkZWxldGVEYXRhYmFzZSgiIiwgc2Vs
Zi5kYm5hbWUsIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uc3VjY2VzczogZmluaXNo
VGVzdH0pOyB9LAotICAgICAgICBdKTsKLSAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgewotICAg
ICAgICBkZWJ1ZygiTk9URTogV2lsbCBGQUlMIHdpdGggZXh0cmEgYm9ndXMgZGVsZXRlRGF0YWJh
c2UoKS5vbmJsb2NrZWQgc3RlcDsgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTcxMTMwIik7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic2VsZi5zdGVwcy50
b1N0cmluZygpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiaC5vcGVuIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaC5vcGVuLm9uc3VjY2VzcyIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImRlbGV0ZURhdGFiYXNlKCkiLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJoLm9udmVyc2lvbmNoYW5nZSIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImguY2xvc2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJkZWxldGVEYXRhYmFzZSgpLm9uc3VjY2VzcyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBdLnRvU3RyaW5nKCkpOwotICAgICAgICB0ZXN0MygpOwotICAgIH0KLX0KLQotZnVuY3Rp
b24gdGVzdDMoKSB7Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJURVNUOiBkZWxldGVEYXRh
YmFzZSBpcyBkZWxheWVkIGlmIGEgVkVSU0lPTl9DSEFOR0UgdHJhbnNhY3Rpb24gaXMgcnVubmlu
ZyIpOwotICAgIGV2YWxBbmRMb2coInNlbGYuZGJuYW1lID0gJ3Rlc3QzJzsgc2VsZi52ZXIgPSAx
OyBzZWxmLnN0ZXBzID0gW10iKTsKLSAgICB2YXIgaCA9IG5ldyBDb25uZWN0aW9uKCJoIik7Ci0g
ICAgcnVuU3RlcHMoW2Z1bmN0aW9uKGRvTmV4dCkgeyBoLm9wZW4oe29uc3VjY2VzczogZG9OZXh0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbnZlcnNpb246IGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoIiAgICBoIGNsb3Np
bmcsIGJ1dCBub3QgaW1tZWRpYXRlbHkiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGguY2xvc2UoKTsgfSwgMCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH19KTsgfSwKLSAgICAgICAgICAgICAgZnVuY3Rpb24o
ZG9OZXh0KSB7IGguc2V0VmVyc2lvbigpOyBkb05leHQoKTsgfSwKLSAgICAgICAgICAgICAgZnVu
Y3Rpb24oZG9OZXh0KSB7IGRlbGV0ZURhdGFiYXNlKCIiLCBzZWxmLmRibmFtZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAge29uc3VjY2VzczogZmluaXNoVGVzdH0pOyB9LAotICAg
ICAgICAgICAgICBdKTsKLQotICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7Ci0gICAgICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygic2VsZi5zdGVwcy50b1N0cmluZygpIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFsiaC5vcGVuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiaC5vcGVuLm9uc3VjY2VzcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Imguc2V0VmVyc2lvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlbGV0ZURh
dGFiYXNlKCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoLnNldFZlcnNpb24u
b25zdWNjZXNzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaC5zZXRWZXJzaW9u
LnRyYW5zYWN0aW9uLWNvbXBsZXRlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
aC5vbnZlcnNpb25jaGFuZ2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWxl
dGVEYXRhYmFzZSgpLm9uYmxvY2tlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImguY2xvc2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWxldGVEYXRhYmFz
ZSgpLm9uc3VjY2VzcyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnRvU3RyaW5n
KCkpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9Ci19Ci0KLXRlc3QoKTsKLQotPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZhY3RvcnktZGVsZXRlZGF0YWJhc2UtaW50
ZXJhY3Rpb25zLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZmFjdG9yeS1kZWxldGVkYXRhYmFz
ZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZmFjdG9yeS1kZWxldGVkYXRh
YmFzZS5odG1sCmluZGV4IDNkMzMyM2M0OTI4MjYxZGNkOTRjNDI2Y2I0ODA1MDVhNDZlY2FkMTEu
LmQwYzgyNmJmYzViOGMyNDk1NGM4ZDBlYWI4ZTliM2QwZjdmMjE2NWMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ZhY3RvcnktZGVsZXRlZGF0YWJhc2UuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9mYWN0b3J5LWRlbGV0ZWRhdGFiYXNl
Lmh0bWwKQEAgLTQsOTUgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMi
Pjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVz
dCBJbmRleGVkREIncyB3ZWJraXRJbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoKS4iKTsKLQotZnVu
Y3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2RhdGFiYXNlLXRvLWRlbGV0ZScpIik7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzdGFydFNldFZlcnNpb247Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHN0YXJ0U2V0VmVy
c2lvbigpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lv
bicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZGVs
ZXRlRXhpc3RpbmcoKQotewotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7
Ci0KLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUo
J3N0b3JlTmFtZScsIG51bGwpIik7Ci0KLSAgICBzZWxmLmluZGV4ID0gZXZhbEFuZExvZygic3Rv
cmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZScsICcnKSIpOwotICAgIHNob3VsZEJlVHJ1ZSgic3Rv
cmUuaW5kZXhOYW1lcy5jb250YWlucygnaW5kZXhOYW1lJykiKTsKLQotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJzdG9yZS5hZGQoJ3ZhbHVlJywgJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IGdl
dFZhbHVlOwotfQotCi1mdW5jdGlvbiBnZXRWYWx1ZSgpCi17Ci0gICAgdHJhbnNhY3Rpb24gPSBl
dmFsQW5kTG9nKCJkYi50cmFuc2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVB
RF9XUklURSkiKTsKLSAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci0gICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5v
YmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJz
dG9yZS5nZXQoJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRJbmRleDsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rp
b24gYWRkSW5kZXgoKQotewotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0
LnJlc3VsdCIsICJ2YWx1ZSIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZl
cnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZURh
dGFiYXNlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
fQotCi1mdW5jdGlvbiBkZWxldGVEYXRhYmFzZSgpCi17Ci0gICAgZGIub252ZXJzaW9uY2hhbmdl
ID0gZnVuY3Rpb24oKSB7IGRiLmNsb3NlKCk7IH0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IGluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgnZGF0YWJhc2UtdG8tZGVsZXRlJyki
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHJlb3BlbkRhdGFiYXNlOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiByZW9wZW5E
YXRhYmFzZSgpCi17Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdk
YXRhYmFzZS10by1kZWxldGUnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc3RhcnRTZXRW
ZXJzaW9uQWdhaW47Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIHN0YXJ0U2V0VmVyc2lvbkFnYWluKCkKLXsKLSAgICByZGIgPSBl
dmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSB2ZXJpZnlOb3RGb3VuZDsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gdmVyaWZ5Tm90Rm91bmQoKQotewotICAg
IHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIwIik7Ci0KLSAgICBmaW5p
c2hKU1Rlc3QoKTsKLX0KLQotdGVzdCgpOwotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL2ZhY3RvcnktZGVsZXRlZGF0YWJhc2UuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+
CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRl
eC1jb3VudC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtY291bnQu
aHRtbAppbmRleCBmMzJhZTEzNmFlNmY1NDcwNjc5MTY4ZTgyYWU2ZDUyN2UwMmI0ODZjLi5mODAx
MThlMGNmMmRkYzkwYTc2YTE3OWQyZGM4MGMxNzNhNDg3M2FiIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1jb3VudC5odG1sCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWNvdW50Lmh0bWwKQEAgLTQsMTU5ICs0LDcgQEAKIDxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5
PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgSURCSW5kZXguY291
bnQoKS4iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMo
KTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2luZGV4LWNvdW50
JykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAgICBkYiA9IGV2YWxBbmRM
b2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgICAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOwotICAgICAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBwcmVwYXJlRGF0YWJhc2U7Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24gcHJlcGFyZURhdGFi
YXNlKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInByZXBhcmluZyBkYXRhYmFzZSIp
OwotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0KLSAgICBkZWxldGVB
bGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOwotCi0gICAgc2VsZi5pbmRl
eCA9IGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleE5hbWUnLCAnJykiKTsKLSAg
ICBzaG91bGRCZVRydWUoInN0b3JlLmluZGV4TmFtZXMuY29udGFpbnMoJ2luZGV4TmFtZScpIik7
Ci0KLSAgICBkZWJ1ZygiYWRkaW5nIDAgLi4uIDk5Iik7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkg
PCAxMDA7ICsraSkgewotICAgICAgICByZXF1ZXN0ID0gc3RvcmUuYWRkKGksIGkpOwotICAgICAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB9Ci0gICAg
dHJhbnMub25jb21wbGV0ZSA9IHZlcmlmeUNvdW50OwotfQotCi1mdW5jdGlvbiB2ZXJpZnlDb3Vu
dCgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJ2ZXJpZnlpbmcgY291bnQgd2l0aG91
dCByYW5nZSIpOwotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlv
bignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKSIpOwotICAgIHNob3VsZEJl
VHJ1ZSgidHJhbnMgIT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJv
cnRDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gdmVyaWZ5Q291bnRXaXRoUmFuZ2U7
Ci0KLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0
b3JlTmFtZScpIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJzdG9yZSAhPSBudWxsIik7Ci0gICAgaW5k
ZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmluZGV4KCdpbmRleE5hbWUnKSIpOwotICAg
IHNob3VsZEJlVHJ1ZSgiaW5kZXggIT0gbnVsbCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBpbmRleC5jb3VudCgpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigp
IHsKLSAgICAgICAgIHNob3VsZEJlVHJ1ZSgidHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1i
ZXInIik7Ci0gICAgICAgICBzaG91bGRCZSgicmVxdWVzdC5yZXN1bHQiLCAiMTAwIik7Ci0gICAg
ICAgICAvLyBsZXQgdGhlIHRyYW5zYWN0aW9uIGNvbXBsZXRlCi0gICAgfTsKLX0KLQotZnVuY3Rp
b24gdmVyaWZ5Q291bnRXaXRoUmFuZ2UoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1Zygi
dmVyaWZ5aW5nIGNvdW50IHdpdGggcmFuZ2UiKTsKLSAgICB0cmFucyA9IGV2YWxBbmRMb2coInRy
YW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05M
WSkiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9IG51bGwiKTsKLSAgICB0cmFucy5vbmFi
b3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IHZl
cmlmeUNvdW50V2l0aEtleTsKLQotICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFu
cy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLSAgICBzaG91bGRCZVRydWUoInN0b3JlICE9
IG51bGwiKTsKLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coImluZGV4ID0gdHJhbnMub2JqZWN0U3Rv
cmUoJ3N0b3JlTmFtZScpLmluZGV4KCdpbmRleE5hbWUnKSIpOwotICAgIHNob3VsZEJlVHJ1ZSgi
aW5kZXggIT0gbnVsbCIpOwotCi0gICAgdmFyIHRlc3RzID0gWwotICAgICAgICB7IGxvd2VyOiAw
LCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogOTksIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVk
OiAxMDAgfSwKLSAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiB0cnVlLCB1cHBlcjogOTks
IHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiA5OSB9LAotICAgICAgICB7IGxvd2VyOiAwLCBs
b3dlck9wZW46IGZhbHNlLCB1cHBlcjogOTksIHVwcGVyT3BlbjogdHJ1ZSwgZXhwZWN0ZWQ6IDk5
IH0sCi0gICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogdHJ1ZSwgdXBwZXI6IDk5LCB1cHBl
ck9wZW46IHRydWUsIGV4cGVjdGVkOiA5OCB9LAotICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9w
ZW46IGZhbHNlLCB1cHBlcjogMTAwLCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogMTAwIH0s
Ci0gICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiAxMDAsIHVwcGVy
T3BlbjogZmFsc2UsIGV4cGVjdGVkOiAxMDAgfSwKLSAgICAgICAgeyBsb3dlcjogMTAsIGxvd2Vy
T3BlbjogZmFsc2UsIHVwcGVyOiAxMDAsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiA5MCB9
LAotICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogMCwgdXBwZXJP
cGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDEgfSwKLSAgICAgICAgeyBsb3dlcjogNTAwLCBsb3dlck9w
ZW46IGZhbHNlLCB1cHBlcjogNTAwLCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogMCB9Ci0g
ICAgXTsKLQotICAgIGZ1bmN0aW9uIG5leHRUZXN0KCkgewotICAgICAgICBkZWJ1ZygiIik7Ci0g
ICAgICAgIGV2YWxBbmRMb2coInRlc3QgPSAiICsgSlNPTi5zdHJpbmdpZnkodGVzdHMuc2hpZnQo
KSkpOwotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4LmNvdW50
KElEQktleVJhbmdlLmJvdW5kKHRlc3QubG93ZXIsIHRlc3QudXBwZXIsIHRlc3QubG93ZXJPcGVu
LCB0ZXN0LnVwcGVyT3BlbikpIik7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgidHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdu
dW1iZXInIik7Ci0gICAgICAgICAgICAgc2hvdWxkQmUoInJlcXVlc3QucmVzdWx0IiwgU3RyaW5n
KHRlc3QuZXhwZWN0ZWQpKTsKLQotICAgICAgICAgICAgIGlmICh0ZXN0cy5sZW5ndGgpIHsKLSAg
ICAgICAgICAgICAgICAgbmV4dFRlc3QoKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
Ly8gb3RoZXJ3aXNlIGxldCB0aGUgdHJhbnNhY3Rpb24gY29tcGxldGUKLSAgICAgICAgfTsKLSAg
ICB9Ci0KLSAgICBuZXh0VGVzdCgpOwotfQotCi1mdW5jdGlvbiB2ZXJpZnlDb3VudFdpdGhLZXko
KQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygidmVyaWZ5aW5nIGNvdW50IHdpdGgga2V5
Iik7Ci0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9y
ZU5hbWUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0
cmFucyAhPSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxi
YWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBmaW5pc2hKU1Rlc3Q7Ci0KLSAgICBzdG9yZSA9
IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0g
ICAgc2hvdWxkQmVUcnVlKCJzdG9yZSAhPSBudWxsIik7Ci0gICAgc3RvcmUgPSBldmFsQW5kTG9n
KCJpbmRleCA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKS5pbmRleCgnaW5kZXhOYW1l
JykiKTsKLSAgICBzaG91bGRCZVRydWUoImluZGV4ICE9IG51bGwiKTsKLQotICAgIGV2YWxBbmRF
eHBlY3RFeGNlcHRpb24oImluZGV4LmNvdW50KE5hTikiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24u
REFUQV9FUlIiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJpbmRleC5jb3VudCh7fSki
LCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJpbmRleC5jb3VudCgvcmVnZXgvKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRB
X0VSUiIpOwotCi0gICAgdmFyIHRlc3RzID0gWwotICAgICAgICB7IGtleTogMCwgZXhwZWN0ZWQ6
IDEgfSwKLSAgICAgICAgeyBrZXk6IDEwMCwgZXhwZWN0ZWQ6IDAgfSwKLSAgICAgICAgeyBrZXk6
IG51bGwsIGV4cGVjdGVkOiAxMDAgfQotICAgIF07Ci0KLSAgICBmdW5jdGlvbiBuZXh0VGVzdCgp
IHsKLSAgICAgICAgZGVidWcoIiIpOwotICAgICAgICBldmFsQW5kTG9nKCJ0ZXN0ID0gIiArIEpT
T04uc3RyaW5naWZ5KHRlc3RzLnNoaWZ0KCkpKTsKLSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBpbmRleC5jb3VudCh0ZXN0LmtleSkiKTsKLSAgICAgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2YgcmVx
dWVzdC5yZXN1bHQgPT0gJ251bWJlciciKTsKLSAgICAgICAgICAgICBzaG91bGRCZSgicmVxdWVz
dC5yZXN1bHQiLCBTdHJpbmcodGVzdC5leHBlY3RlZCkpOwotCi0gICAgICAgICAgICAgaWYgKHRl
c3RzLmxlbmd0aCkgewotICAgICAgICAgICAgICAgICBuZXh0VGVzdCgpOwotICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAvLyBvdGhlcndpc2UgbGV0IHRoZSB0cmFuc2FjdGlvbiBjb21wbGV0
ZQotICAgICAgICB9OwotICAgIH0KLQotICAgIG5leHRUZXN0KCk7Ci19Ci0KLXRlc3QoKTsKLQot
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2luZGV4LWNvdW50LmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvaW5kZXgtY3Vyc29yLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9pbmRleC1jdXJzb3IuaHRtbAppbmRleCAzMGExNjA3MzA5YThjNzU1Yzc4ZGEzM2Fj
ZGY3MWI4OThhZDZlMmIzLi5jOWQ5NDQ0Njk3NzY5MjMzN2JhYjgyM2RhNjdhMWE3OWIxNmQ5ZjU2
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1jdXJzb3Iu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1jdXJzb3IuaHRt
bApAQCAtNCwyNTQgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwv
c2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PiAKLQotZGVzY3JpcHRpb24oIlRlc3Qg
SW5kZXhlZERCJ3Mgd2Via2l0SURCSW5kZXgub3BlbkN1cnNvciArIHRoZSBjdXJzb3IgaXQgcHJv
ZHVjZXMgaW4gZGVwdGguIik7Ci0gCi0vLyBJbiBvcmRlciBvZiBob3cgaXQgc2hvdWxkIGJlIHNv
cnRlZCBieSBJbmRleGVkREIuCi1zZWxmLnRlc3REYXRhID0gWwotICAgIDEsCi0gICAgMSwKLSAg
ICAzLjE0MTU5LAotICAgIDMuMTQxNTksCi0gICAgMTAsCi0gICAgLy8gRklYTUU6IERhdGVzLgot
ICAgICJBIGJpZyBzdHJpbmciLAotICAgICJ0aGUgQklHRVNUIHN0cmluZyIsCi0gICAgInRoZSBC
SUdFU1Qgc3RyaW5nIgotXTsKLSAKLWZ1bmN0aW9uIG9wZW5EYXRhYmFzZSgpCi17Ci0gICAgcmVz
dWx0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2luZGV4LWN1cnNvcicpIik7Ci0gICAg
cmVzdWx0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb247Ci0gICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLSAKLWZ1bmN0aW9uIHNldFZlcnNpb24oKQotewotICAg
IHNlbGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAg
IHJlc3VsdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAg
ICByZXN1bHQub25zdWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7Ci0gICAgcmVzdWx0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZGVsZXRlRXhpc3Rpbmco
KQotewotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0gICAgdHJhbnMu
b25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0
U3RvcmVzKGRiKTsKLQotICAgIHNlbGYub2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVh
dGVPYmplY3RTdG9yZSgnc29tZU9iamVjdFN0b3JlJykiKTsKLSAgICBzZWxmLmluZGV4T2JqZWN0
ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ3NvbWVJbmRleCcsICd4Jyki
KTsKLSAgICBzZWxmLm5leHRUb0FkZCA9IDA7Ci0gICAgYWRkRGF0YSgpOwotfQotCi1mdW5jdGlv
biBhZGREYXRhKCkKLXsKLSAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQo
eyd4JzogdGVzdERhdGFbbmV4dFRvQWRkXX0sIG5leHRUb0FkZCkiKTsKLSAgICByZXN1bHQub25z
dWNjZXNzID0gKytzZWxmLm5leHRUb0FkZCA8IHRlc3REYXRhLmxlbmd0aCA/IGFkZERhdGEgOiBz
Y2hlZHVsZVRlc3RzOwotICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIHNjaGVkdWxlVGVzdHMoKQotewotICAgIGRlYnVnKCJTY2hlZHVs
aW5nIHRlc3RzLi4uIik7Ci0gICAgc2VsZi5zY2hlZHVsZWRUZXN0cyA9IFtdOwotICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgdGVzdERhdGEubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgLyogbGVmdCBi
b3VuZCwgaXMgb3BlbiwgcmlnaHQgYm91bmQsIGlzIG9wZW4sIGFzY2VuZGluZyAqLwotICAgICAg
ICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCB0cnVlLCBudWxsLCBudWxsLCB0cnVlXSk7Ci0g
ICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBudWxsLCBudWxsLCB0cnVl
XSk7Ci0gICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW251bGwsIG51bGwsIGksIHRydWUs
IHRydWVdKTsKLSAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbbnVsbCwgbnVsbCwgaSwg
ZmFsc2UsIHRydWVdKTsKLSAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwg
bnVsbCwgbnVsbCwgZmFsc2VdKTsKLSAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwg
ZmFsc2UsIG51bGwsIG51bGwsIGZhbHNlXSk7Ci0gICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hp
ZnQoW251bGwsIG51bGwsIGksIHRydWUsIGZhbHNlXSk7Ci0gICAgICAgIHNjaGVkdWxlZFRlc3Rz
LnVuc2hpZnQoW251bGwsIG51bGwsIGksIGZhbHNlLCBmYWxzZV0pOwotICAgICAgICBmb3IgKHZh
ciBqID0gNjsgaiA8IHRlc3REYXRhLmxlbmd0aDsgKytqKSB7Ci0gICAgICAgICAgICBzY2hlZHVs
ZWRUZXN0cy51bnNoaWZ0KFtpLCB0cnVlLCBqLCB0cnVlLCB0cnVlXSk7Ci0gICAgICAgICAgICBz
Y2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCB0cnVlLCBqLCBmYWxzZSwgdHJ1ZV0pOwotICAgICAg
ICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgZmFsc2UsIGosIHRydWUsIHRydWVdKTsK
LSAgICAgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBqLCBmYWxzZSwg
dHJ1ZV0pOwotICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwgaiwg
dHJ1ZSwgZmFsc2VdKTsKLSAgICAgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIHRy
dWUsIGosIGZhbHNlLCBmYWxzZV0pOwotICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlm
dChbaSwgZmFsc2UsIGosIHRydWUsIGZhbHNlXSk7Ci0gICAgICAgICAgICBzY2hlZHVsZWRUZXN0
cy51bnNoaWZ0KFtpLCBmYWxzZSwgaiwgZmFsc2UsIGZhbHNlXSk7Ci0gICAgICAgIH0KLSAgICB9
Ci0gCi0gICAgZGVidWcoIlJ1bm5pbmcgdGVzdHMuLi4iKTsKLSAgICBydW5OZXh0VGVzdCgpOwot
fQotIAotZnVuY3Rpb24gcnVuTmV4dFRlc3QoKQotewotICAgIGlmICghc2NoZWR1bGVkVGVzdHMu
bGVuZ3RoKSB7Ci0gICAgICAgIHRlc3ROdWxsS2V5UmFuZ2UoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAKLSAgICB2YXIgdGVzdCA9IHNjaGVkdWxlZFRlc3RzLnBvcCgpOwotICAgIHNlbGYu
bG93ZXIgPSB0ZXN0WzBdOwotICAgIHNlbGYubG93ZXJJc09wZW4gPSB0ZXN0WzFdOwotICAgIHNl
bGYudXBwZXIgPSB0ZXN0WzJdOwotICAgIHNlbGYudXBwZXJJc09wZW4gPSB0ZXN0WzNdOwotICAg
IHNlbGYuYXNjZW5kaW5nID0gdGVzdFs0XTsKLQotICAgIHN0ciA9ICJOZXh0IHRlc3Q6ICI7Ci0g
ICAgaWYgKGxvd2VyICE9PSBudWxsKSB7Ci0gICAgICAgIHN0ciArPSAibG93ZXIgIjsKLSAgICAg
ICAgaWYgKGxvd2VySXNPcGVuKQotICAgICAgICAgICAgc3RyICs9ICJvcGVuICI7Ci0gICAgICAg
IHN0ciArPSAiYm91bmQgaXMgIiArIGxvd2VyICsgIjsgIjsKLSAgICB9Ci0gICAgaWYgKHVwcGVy
ICE9PSBudWxsKSB7Ci0gICAgICAgIHN0ciArPSAidXBwZXIgIjsKLSAgICAgICAgaWYgKHVwcGVy
SXNPcGVuKQotICAgICAgICAgICAgc3RyICs9ICJvcGVuICI7Ci0gICAgICAgIHN0ciArPSAiYm91
bmQgaXMgIiArIHVwcGVyICsgIjsgIjsKLSAgICB9Ci0gICAgaWYgKGFzY2VuZGluZykKLSAgICAg
ICAgc3RyICs9ICJzb3J0ZWQgYXNjZW5kaW5nLiI7Ci0gICAgZWxzZQotICAgICAgICBzdHIgKz0g
InNvcnRlZCBkZXNjZW5kaW5nLiI7Ci0KLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoc3RyKTsK
LQotICAgIC8vIFdvcmsgYXJvdW5kIGZvciBkdXBsaWNhdGUgdmFsdWVzLgotICAgIGlmICh1cHBl
ciAhPT0gbnVsbCkgewotICAgICAgICBpZiAodXBwZXJJc09wZW4pIHsKLSAgICAgICAgICAgIHdo
aWxlICh1cHBlciA+IDAgJiYgdGVzdERhdGFbdXBwZXJdID09PSB0ZXN0RGF0YVt1cHBlciAtIDFd
KQotICAgICAgICAgICAgICAgIC0tc2VsZi51cHBlcjsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIHdoaWxlICh1cHBlciA8IHRlc3REYXRhLmxlbmd0aCAtIDEgJiYgdGVzdERhdGFbdXBw
ZXJdID09PSB0ZXN0RGF0YVt1cHBlciArIDFdKQotICAgICAgICAgICAgICAgICsrc2VsZi51cHBl
cjsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAobG93ZXIgIT09IG51bGwpIHsKLSAgICAgICAg
aWYgKGxvd2VySXNPcGVuKSB7Ci0gICAgICAgICAgICB3aGlsZSAobG93ZXIgPCB0ZXN0RGF0YS5s
ZW5ndGggLSAxICYmIHRlc3REYXRhW2xvd2VyXSA9PT0gdGVzdERhdGFbbG93ZXIgKyAxXSkKLSAg
ICAgICAgICAgICAgICArK3NlbGYubG93ZXI7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICB3aGlsZSAobG93ZXIgPiAwICYmIHRlc3REYXRhW2xvd2VyXSA9PT0gdGVzdERhdGFbbG93ZXIg
LSAxXSkKLSAgICAgICAgICAgICAgICAtLXNlbGYubG93ZXI7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICBpZiAoYXNjZW5kaW5nKSB7Ci0gICAgICAgIGlmIChsb3dlciAhPT0gbnVsbCkgewotICAg
ICAgICAgICAgaWYgKCFsb3dlcklzT3BlbikKLSAgICAgICAgICAgICAgICBzZWxmLmV4cGVjdGVk
SW5kZXggPSBsb3dlcjsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBzZWxmLmV4
cGVjdGVkSW5kZXggPSBsb3dlciArIDE7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgc2Vs
Zi5leHBlY3RlZEluZGV4ID0gMDsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAodXBwZXIgIT09
IG51bGwpIHsKLSAgICAgICAgICAgIGlmICghdXBwZXJJc09wZW4pCi0gICAgICAgICAgICAgICAg
c2VsZi5leHBlY3RlZEluZGV4ID0gdXBwZXI7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gdXBwZXIgLSAxOwotICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IHRlc3REYXRhLmxlbmd0aCAtIDE7Ci0gICAg
fQotICAgIHRlc3RXaXRoaW5Cb3VuZHMoKTsKLSAKLSAgICBpZiAodGVzdERhdGFbbG93ZXJdID09
PSB0ZXN0RGF0YVt1cHBlcl0gJiYgKGxvd2VySXNPcGVuIHx8IHVwcGVySXNPcGVuKSkgewotICAg
ICAgICBkZWJ1ZygiU2tpcHBpbmcgaWxsZWdhbCBrZXkgcmFuZ2UuIik7Ci0gICAgICAgIHJ1bk5l
eHRUZXN0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB2YXIga2V5UmFuZ2U7Ci0g
ICAgaWYgKGxvd2VyICE9PSBudWxsICYmIHVwcGVyICE9PSBudWxsKQotICAgICAgICBrZXlSYW5n
ZSA9IElEQktleVJhbmdlLmJvdW5kKHRlc3REYXRhW2xvd2VyXSwgdGVzdERhdGFbdXBwZXJdLCBs
b3dlcklzT3BlbiwgdXBwZXJJc09wZW4pOwotICAgIGVsc2UgaWYgKGxvd2VyICE9PSBudWxsKQot
ICAgICAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQodGVzdERhdGFbbG93ZXJd
LCBsb3dlcklzT3Blbik7Ci0gICAgZWxzZQotICAgICAgICBrZXlSYW5nZSA9IElEQktleVJhbmdl
LnVwcGVyQm91bmQodGVzdERhdGFbdXBwZXJdLCB1cHBlcklzT3Blbik7Ci0gCi0gICAgdmFyIHJl
cXVlc3QgPSBpbmRleE9iamVjdC5vcGVuS2V5Q3Vyc29yKGtleVJhbmdlLCBhc2NlbmRpbmcgPyBJ
REJDdXJzb3IuTkVYVCA6IElEQkN1cnNvci5QUkVWKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGN1cnNvckl0ZXJhdGlvbjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLX0KLQotZnVuY3Rpb24gdGVzdFdpdGhpbkJvdW5kcygpCi17Ci0gICAgaWYgKGV4
cGVjdGVkSW5kZXggPCAwIHx8IHRlc3REYXRhLmxlbmd0aCA8PSBleHBlY3RlZEluZGV4KQotICAg
ICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSBudWxsOwotICAgIGlmIChsb3dlciAhPT0gbnVsbCAm
JiBleHBlY3RlZEluZGV4IDwgbG93ZXIpCi0gICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IG51
bGw7Ci0gICAgaWYgKHVwcGVyICE9PSBudWxsICYmIHVwcGVyIDwgZXhwZWN0ZWRJbmRleCkKLSAg
ICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gbnVsbDsKLSAgICBpZiAobG93ZXIgIT09IG51bGwg
JiYgbG93ZXJJc09wZW4gJiYgZXhwZWN0ZWRJbmRleCA8PSBsb3dlcikKLSAgICAgICAgc2VsZi5l
eHBlY3RlZEluZGV4ID0gbnVsbDsKLSAgICBpZiAodXBwZXIgIT09IG51bGwgJiYgdXBwZXJJc09w
ZW4gJiYgdXBwZXIgPD0gZXhwZWN0ZWRJbmRleCkKLSAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4
ID0gbnVsbDsKLX0KLSAKLWZ1bmN0aW9uIGN1cnNvckl0ZXJhdGlvbigpCi17Ci0gICAgaWYgKGV4
cGVjdGVkSW5kZXggPT09IG51bGwpIHsKLSAgICAgICAgc2hvdWxkQmVOdWxsKCJldmVudC50YXJn
ZXQucmVzdWx0Iik7Ci0gICAgICAgIHJ1bk5leHRUZXN0KCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwpIHsKLSAgICAgICAgdGVz
dEZhaWxlZCgiZXZlbnQudGFyZ2V0LnJlc3VsdCBzaG91bGQgbm90IGJlIG51bGwuIik7Ci0gICAg
ICAgIHJ1bk5leHRUZXN0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gCi0gICAgc2hvdWxk
QmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICJleHBlY3RlZEluZGV4Iik7Ci0g
ICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgInRlc3REYXRhWyIgKyBleHBl
Y3RlZEluZGV4ICsgIl0iKTsKLSAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSBhc2NlbmRpbmcgPyBl
eHBlY3RlZEluZGV4ICsgMSA6IGV4cGVjdGVkSW5kZXggLSAxOwotICAgIHRlc3RXaXRoaW5Cb3Vu
ZHMoKTsKLQotICAgIGV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKTsKLX0KLSAKLXNlbGYu
bnVsbEtleVJhbmdlU3RlcCA9IDA7Ci1mdW5jdGlvbiB0ZXN0TnVsbEtleVJhbmdlKCkKLXsKLSAg
ICBzZWxmLmxvd2VyID0gMDsKLSAgICBzZWxmLmxvd2VySXNPcGVuID0gZmFsc2U7Ci0gICAgc2Vs
Zi51cHBlciA9IHRlc3REYXRhLmxlbmd0aC0xOwotICAgIHNlbGYudXBwZXJJc09wZW4gPSBmYWxz
ZTsKLQotICAgIHN0ciA9ICJOZXh0IHRlc3Q6IG51bGwga2V5IHBhdGggIjsKLSAgICBpZiAoc2Vs
Zi5udWxsS2V5UmFuZ2VTdGVwID09IDApIHsKLSAgICAgICAgc3RyICs9ICJzb3J0ZWQgYXNjZW5k
aW5nLiI7Ci0gICAgICAgIHNlbGYuYXNjZW5kaW5nID0gdHJ1ZTsKLSAgICAgICAgc2VsZi5leHBl
Y3RlZEluZGV4ID0gbG93ZXI7Ci0gICAgICAgIHNlbGYubnVsbEtleVJhbmdlU3RlcCA9IDE7Ci0g
ICAgfSBlbHNlIGlmIChzZWxmLm51bGxLZXlSYW5nZVN0ZXAgPT0gMSkgewotICAgICAgICBzdHIg
Kz0gInNvcnRlZCBkZXNjZW5kaW5nLiI7Ci0gICAgICAgIHNlbGYuYXNjZW5kaW5nID0gZmFsc2U7
Ci0gICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IHVwcGVyOwotICAgICAgICBzZWxmLm51bGxL
ZXlSYW5nZVN0ZXAgPSAyOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKHN0cik7
Ci0gCi0gICAgdmFyIHJlcXVlc3QgPSBpbmRleE9iamVjdC5vcGVuS2V5Q3Vyc29yKG51bGwsIGFz
Y2VuZGluZyA/IElEQkN1cnNvci5ORVhUIDogSURCQ3Vyc29yLlBSRVYpOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gY3Vyc29ySXRlcmF0aW9uOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotIAotcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLW9wZW5E
YXRhYmFzZSgpOyAvLyBUaGUgZmlyc3Qgc3RlcC4KLSAKLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9pbmRleC1jdXJzb3IuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1n
ZXQta2V5LWFyZ3VtZW50LXJlcXVpcmVkLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9pbmRleC1nZXQta2V5LWFyZ3VtZW50LXJlcXVpcmVkLmh0bWwKaW5kZXggM2I5ZWExZDY1
YzdjZjA3OTMyMjEwYTZlMjVlMzRhN2E2ZWJjZjIzYS4uZGRiN2NlMzcxNmU2YzhmYWRmN2Q1MThi
NGQzNzBmMjIzZmE1NzQzYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvaW5kZXgtZ2V0LWtleS1hcmd1bWVudC1yZXF1aXJlZC5odG1sCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWdldC1rZXktYXJndW1lbnQtcmVxdWlyZWQuaHRtbApA
QCAtMSw0OSArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlw
dCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxi
b2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGluZGV4IC5nZXQo
KSByZXF1aXJlZCBhcmd1bWVudCIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVW
ZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0g
ICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9
IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUFu
ZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7
Ci0KLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ2ZvbycsIHsga2V5UGF0aDogJ2lkJywgYXV0b0luY3JlbWVudDogdHJ1ZSB9
KTsiKTsKLSAgICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRl
SW5kZXgoJ2ZpcnN0JywgJ2ZpcnN0Jyk7Iik7Ci0gICAgc2hvdWxkVGhyb3coImluZGV4LmdldCgp
OyIpOwotICAgIHNob3VsZFRocm93KCJpbmRleC5nZXRLZXkoKTsiKTsKLSAgICBmaW5pc2hKU1Rl
c3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9pbmRleC1nZXQta2V5LWFyZ3VtZW50LXJlcXVpcmVkLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgog
PC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvaW5kZXgtbXVsdGllbnRyeS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
aW5kZXgtbXVsdGllbnRyeS5odG1sCmluZGV4IDVjNzU5OWYwYzUwMmY3ZTY3ZGY0OTJkODQyNWQy
NWE4MDAwZGEwODUuLmY4YjJkZjU5ZjZiM2U4NzliN2MxMDZiM2Y1NDc5ODY3YmI0Y2RlZjIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LW11bHRpZW50cnku
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1tdWx0aWVudHJ5
Lmh0bWwKQEAgLTQsMTQ2ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpz
Ij48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRl
c3QgZmVhdHVyZXMgb2YgSW5kZXhlZERCJ3MgbXVsdGlFbnRyeSBpbmRpY2VzLiIpOwotCi1mdW5j
dGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdpbmRleC1tdWx0aUVudHJ5JykiKTsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAgICBkYiA9IGV2YWxBbmRMb2coImRiID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJk
Yi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcHJlcGFyZURhdGFi
YXNlOwotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIHByZXBhcmVEYXRhYmFzZSgpCi17Ci0gICAgZGVi
dWcoIiIpOwotICAgIGRlYnVnKCJDcmVhdGluZyBlbXB0eSBzdG9yZXMgYW5kIGluZGV4ZXMiKTsK
LSAgICB2YXIgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9y
dCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBhZGRE
YXRhOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIHN0b3JlID0gZXZh
bEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOwotICAgIGV2
YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleCcsICd4Jywge211bHRpRW50cnk6IHRy
dWV9KSIpOwotCi0gICAgc3RvcmUyID0gZXZhbEFuZExvZygic3RvcmUyID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ3N0b3JlLXVuaXF1ZScpIik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUyLmNyZWF0
ZUluZGV4KCdpbmRleC11bmlxdWUnLCAneCcsIHttdWx0aUVudHJ5OiB0cnVlLCB1bmlxdWU6IHRy
dWV9KSIpOwotfQotCi1mdW5jdGlvbiBhZGREYXRhKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAg
ZGVidWcoIlBvcHVsYXRpbmcgc3RvcmVzIChhbmQgaW5kZXhlcykiKTsKLSAgICB0cmFuc2FjdGlv
biA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZSddLCBJ
REJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1
bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVu
Y3Rpb24oKSB7IHZlcmlmeUluZGV4ZXMoJ2luZGV4JywgdmVyaWZ5VW5pcXVlQ29uc3RyYWludCk7
IH07Ci0KLSAgICBkZWJ1ZygiRmlyc3QgdHJ5IHNvbWUga2V5cyB0aGF0IGFyZW4ndCB3aGF0IHdl
J3JlIGV4cGVjdGluZyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5v
YmplY3RTdG9yZSgnc3RvcmUnKS5wdXQoe3g6IFs3LCA4LCA5XSwgeTogJ2EnfSwgJ2ZvbycpIik7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgZGVi
dWcoIk5vdyBvdmVyd3JpdGUgdGhlbSB3aXRoIHdoYXQgd2UncmUgZXhwZWN0aW5nIik7Ci0gICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLnB1
dCh7eDogWzEsIDIsIDNdLCB5OiAnYSd9LCAnZm9vJykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJh
bnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KHt4OiBbNCwgNSwgNl0sIHk6ICdiJ30s
ICdiYXInKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotfQotCi1mdW5jdGlvbiB2ZXJpZnlJbmRleGVzKGluZGV4TmFtZSwgY2FsbGJhY2spCi17Ci0g
ICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJWZXJpZnlpbmcgaW5kZXg6ICIgKyBpbmRleE5hbWUp
OwotICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2Fj
dGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkiKTsKLSAgICB0cmFuc2Fj
dGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnNhY3Rpb24u
b25jb21wbGV0ZSA9IGNhbGxiYWNrOwotCi0gICAgZXhwZWN0ZWQgPSBbCi0gICAgICAgIHsga2V5
OiAxLCBwcmltYXJ5S2V5OiAnZm9vJywgeTogJ2EnIH0sCi0gICAgICAgIHsga2V5OiAyLCBwcmlt
YXJ5S2V5OiAnZm9vJywgeTogJ2EnIH0sCi0gICAgICAgIHsga2V5OiAzLCBwcmltYXJ5S2V5OiAn
Zm9vJywgeTogJ2EnIH0sCi0gICAgICAgIHsga2V5OiA0LCBwcmltYXJ5S2V5OiAnYmFyJywgeTog
J2InIH0sCi0gICAgICAgIHsga2V5OiA1LCBwcmltYXJ5S2V5OiAnYmFyJywgeTogJ2InIH0sCi0g
ICAgICAgIHsga2V5OiA2LCBwcmltYXJ5S2V5OiAnYmFyJywgeTogJ2InIH0sCi0gICAgXTsKLQot
ICAgIHZhciByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0
b3JlJykuaW5kZXgoJyIgKyBpbmRleE5hbWUgKyAiJykub3BlbkN1cnNvcigpIik7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJj
dXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsKLSAg
ICAgICAgICAgIGV4ID0gZXhwZWN0ZWQuc2hpZnQoKTsKLSAgICAgICAgICAgIHNob3VsZEJlVHJ1
ZSgiZXggIT0gbnVsbCIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCBTdHJp
bmcoZXgua2V5KSk7Ci0gICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImN1cnNvci5w
cmltYXJ5S2V5IiwgZXgucHJpbWFyeUtleSk7Ci0gICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImN1cnNvci52YWx1ZS55IiwgZXgueSk7Ci0gICAgICAgICAgICBjdXJzb3IuY29udGlu
dWUoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiZXhwZWN0
ZWQubGVuZ3RoID09PSAwIik7Ci0gICAgICAgIH0KLSAgICB9OwotfQotCi1mdW5jdGlvbiB2ZXJp
ZnlVbmlxdWVDb25zdHJhaW50KCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIlZlcmlm
eWluZyB1bmlxdWUgY29uc3RyYWludCBvbiBtdWx0aUVudHJ5IGluZGV4Iik7Ci0gICAgdHJhbnNh
Y3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUt
dW5pcXVlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgdHJhbnNhY3Rpb24u
b25hYm9ydCA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgZGVidWcoIlRyYW5zYWN0aW9uIGFib3J0
ZWQgYXMgZXhwZWN0ZWQiKTsKLSAgICAgICAgY3JlYXRlSW5kZXhPblN0b3JlV2l0aERhdGEoKTsK
LSAgICB9OwotICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQ29tcGxldGVD
YWxsYmFjazsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RT
dG9yZSgnc3RvcmUtdW5pcXVlJykucHV0KHt4OiBbMSwgMiwgM10sIHk6ICdhJ30sICdmb28nKSIp
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGRlYnVnKCJzdWNjZXNzISIp
OwotICAgICAgICBkZWJ1ZygiUmVwbGFjZSBhbiBleGlzdGluZyByZWNvcmQgLSB0aGlzIHNob3Vs
ZCB3b3JrIik7Ci0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmpl
Y3RTdG9yZSgnc3RvcmUtdW5pcXVlJykucHV0KHt4OiBbMSwgMiwgN10sIHk6ICdhJ30sICdmb28n
KSIpOwotICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGRl
YnVnKCJzdWNjZXNzISIpOwotICAgICAgICAgICAgZGVidWcoIlRoaXMgc2hvdWxkIGZhaWwgdGhl
IHVuaXF1ZW5lc3MgY29uc3RyYWludCBvbiB0aGUgaW5kZXgsIGFuZCBmYWlsOiIpOwotICAgICAg
ICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9y
ZS11bmlxdWUnKS5wdXQoe3g6IFs1LCAyXSwgeTogJ2MnfSwgJ3Nob3VsZCBmYWlsJykiKTsKLSAg
ICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsK
LSAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKCkgeyBkZWJ1ZygiUmVxdWVz
dCBmYWlsZWQsIGFzIGV4cGVjdGVkIik7IH07Ci0gICAgICAgIH07Ci0gICAgfTsKLX0KLQotZnVu
Y3Rpb24gY3JlYXRlSW5kZXhPblN0b3JlV2l0aERhdGEoKQotewotICAgIGRlYnVnKCIiKTsKLSAg
ICBkZWJ1ZygiQ3JlYXRlIGFuIGluZGV4IG9uIGEgcG9wdWxhdGVkIHN0b3JlIik7Ci0KLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignMicpIik7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbigpIHsKLQotICAgICAgICB2YXIgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9
IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0g
bnVsbCIpOwotICAgICAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7
Ci0gICAgICAgIHRyYW5zLm9uY29tcGxldGUgPSBmdW5jdGlvbigpIHsgdmVyaWZ5SW5kZXhlcygn
aW5kZXgtbmV3JywgZmluaXNoSlNUZXN0KTsgfTsKLQotICAgICAgICBzdG9yZSA9IGV2YWxBbmRM
b2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKLSAgICAgICAgZXZhbEFu
ZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4LW5ldycsICd4Jywge211bHRpRW50cnk6IHRy
dWV9KSIpOwotICAgIH07Ci19Ci0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL2luZGV4LW11bHRpZW50cnkuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+
CiA8L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2lu
ZGV4LXBvcHVsYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4
LXBvcHVsYXRpb24uaHRtbAppbmRleCAxY2IyODViM2E2MmI1ZDBkNWZmOGE0ZDJhZDE3OTVkYTgz
MjlmMjY0Li40OWYzODNlMDBjZTZhMDM4NDNkYWRjMWI5YjExODI3MzM0NDVmNTVmIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1wb3B1bGF0aW9uLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtcG9wdWxhdGlvbi5odG1s
CkBAIC00LDk2ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Nj
cmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5k
ZXhlZERCIGluZGV4IHBvcHVsYXRpb24uIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJl
bW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhl
ZERCLmRlbGV0ZURhdGFiYXNlKCdpbmRleC1wb3B1bGF0aW9uJykiKTsKLSAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGRlbGV0ZVN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZVN1Y2Nlc3MoKQotewotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignaW5kZXgtcG9wdWxhdGlvbicpIik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkb1NldFZlcnNpb24xOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBkb1NldFZlcnNp
b24xKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoImRvU2V0VmVyc2lvbjEoKToiKTsK
LSAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9u
IDEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvbjE7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldFZl
cnNpb24xKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInNldFZlcnNpb24xKCk6Iik7
Ci0gICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IHJlcXVlc3QucmVz
dWx0Iik7Ci0gICAgdHJhbnNhY3Rpb24ub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAg
ICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3Jl
MScpIik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUucHV0KHtkYXRhOiAnYScsIGluZGV4S2V5OiAx
MH0sIDEpIik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUucHV0KHtkYXRhOiAnYicsIGluZGV4S2V5
OiAyMH0sIDIpIik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUucHV0KHtkYXRhOiAnYycsIGluZGV4
S2V5OiAxMH0sIDMpIik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUucHV0KHtkYXRhOiAnZCcsIGlu
ZGV4S2V5OiAyMH0sIDQpIik7Ci0gICAgZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5jcmVhdGVJ
bmRleCgnaW5kZXgxJywgJ2luZGV4S2V5JykiKTsKLSAgICBzaG91bGRCZVRydWUoImluZGV4IGlu
c3RhbmNlb2YgSURCSW5kZXgiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJpbmRleC51bmlxdWUiKTsK
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4LmNvdW50KElEQktleVJh
bmdlLmJvdW5kKC1JbmZpbml0eSwgSW5maW5pdHkpKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24gKCkgewotICAgICAgICBzaG91bGRCZSgicmVxdWVzdC5yZXN1bHQiLCAiNCIpOwotICAgIH07
Ci0gICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGRvU2V0VmVyc2lvbjI7Ci19Ci0KLWZ1bmN0
aW9uIGRvU2V0VmVyc2lvbjIoKSB7Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJkb1NldFZl
cnNpb24yKCk6Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRW
ZXJzaW9uKCd2ZXJzaW9uIDInKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lv
bjI7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0K
LWZ1bmN0aW9uIHNldFZlcnNpb24yKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInNl
dFZlcnNpb24yKCk6Iik7Ci0gICAgdHJhbnNhY3Rpb24yID0gZXZhbEFuZExvZygidHJhbnNhY3Rp
b24gPSByZXF1ZXN0LnJlc3VsdCIpOwotICAgIHRyYW5zYWN0aW9uMi5vbmFib3J0ID0gc2V0VmVy
c2lvbjJBYm9ydDsKLSAgICB0cmFuc2FjdGlvbjIub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21w
bGV0ZUNhbGxiYWNrOwotICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVP
YmplY3RTdG9yZSgnc3RvcmUyJykiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoe2RhdGE6
ICdhJywgaW5kZXhLZXk6IDEwfSwgMSkiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoe2Rh
dGE6ICdiJywgaW5kZXhLZXk6IDIwfSwgMikiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQo
e2RhdGE6ICdjJywgaW5kZXhLZXk6IDEwfSwgMykiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZS5w
dXQoe2RhdGE6ICdkJywgaW5kZXhLZXk6IDIwfSwgNCkiKTsKLSAgICBldmFsQW5kTG9nKCJpbmRl
eDIgPSBzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXgyJywgJ2luZGV4S2V5JywgeyB1bmlxdWU6IHRy
dWUgfSkiKTsKLSAgICBzaG91bGRCZVRydWUoImluZGV4MiBpbnN0YW5jZW9mIElEQkluZGV4Iik7
Ci0gICAgc2hvdWxkQmVUcnVlKCJpbmRleDIudW5pcXVlIik7Ci19Ci0KLWZ1bmN0aW9uIHNldFZl
cnNpb24yQWJvcnQoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1Zygic2V0VmVyc2lvbjJB
Ym9ydCgpOiIpOwotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIx
Iik7Ci0gICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXNbMF0iLCAiJ3N0b3JlMSciKTsK
LSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvaW5kZXgtcG9wdWxhdGlvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwv
Ym9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2luZGV4LXVuaXF1ZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgt
dW5pcXVlLmh0bWwKaW5kZXggNWE1NDQzYzU5ZThhYmYwMmUzYzhmNWNmZTI5MjZkNzkyY2M4YzZh
NS4uYzY2MzhkZjZhMDZiZjNjNGIyZjRiYTgyNzgwZmFkMDRiZDhlYjM4NyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtdW5pcXVlLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtdW5pcXVlLmh0bWwKQEAgLTQsMTQzICs0
LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVh
ZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgZmVhdHVyZXMgb2YgSW5k
ZXhlZERCJ3MgdW5pcXVlIGluZGljZXMuIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJl
bW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWRE
Qi5vcGVuKCdpbmRleC11bmlxdWUnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVy
c2lvbjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0K
LQotZnVuY3Rpb24gc2V0VmVyc2lvbigpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRW
ZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVF
eGlzdGluZzsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LX0KLQotZnVuY3Rpb24gZGVsZXRlRXhpc3RpbmcoKQotewotICAgIGRlYnVnKCJkZWxldGVFeGlz
dGluZygpOiIpOwotICAgIHZhciB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFy
Z2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKLSAgICB0
cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21w
bGV0ZSA9IHNldFZlcnNpb25Db21wbGV0ZWQ7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMo
ZGIpOwotCi0gICAgc2VsZi5zdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdzdG9yZScpIik7Ci0gICAgc2VsZi5pbmRleE9iamVjdCA9IGV2YWxBbmRMb2coInN0b3JlLmNy
ZWF0ZUluZGV4KCdpbmRleCcsICd4Jywge3VuaXF1ZTogdHJ1ZX0pIik7Ci0KLSAgICAvLyBMZXQg
c2V0VmVyc2lvbiB0cmFuc2FjdGlvbiBjb21wbGV0ZS4KLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lv
bkNvbXBsZXRlZCgpCi17Ci0gICAgZGVidWcoInNldFZlcnNpb25Db21wbGV0ZWQoKToiKTsKLSAg
ICBzZWxmLnRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2Fj
dGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0KLSAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KHt4
OiAxfSwgJ2ZvbycpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRNb3JlRGF0YTsKLX0KLQotZnVuY3Rp
b24gYWRkTW9yZURhdGEoKQotewotICAgIGRlYnVnKCJhZGRNb3JlRGF0YSgpOiIpOwotCi0gICAg
Ly8gVGhlIHggdmFsdWUgdmlvbGF0ZXMgdGhlIHVuaXF1ZW5lc3MgY29uc3RyYWludCBvZiB0aGUg
aW5kZXguCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3Jl
KCdzdG9yZScpLnB1dCh7eDogMX0sICdiYXInKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IGFk
ZE1vcmVEYXRhRmFpbGVkOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nl
c3NDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYWRkTW9yZURhdGFGYWlsZWQoKQotewotICAgIGRl
YnVnKCJhZGRNb3JlRGF0YUZhaWxlZCgpOiIpOwotCi0gICAgLy8gRG9uJ3QgYWJvcnQgdGhlIHRy
YW5zYWN0aW9uLgotICAgIGV2YWxBbmRMb2coImV2ZW50LnByZXZlbnREZWZhdWx0KCkiKTsKLQot
ICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuZXJyb3JDb2RlIiwgIklEQkRhdGFiYXNlRXhjZXB0
aW9uLkNPTlNUUkFJTlRfRVJSIik7Ci0KLSAgICAvLyBVcGRhdGUgdGhlICdmb28nIGVudHJ5IGlu
IG9iamVjdCBzdG9yZSwgY2hhbmdpbmcgdGhlIHZhbHVlIG9mIHguCi0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLnB1dCh7eDogMH0sICdm
b28nKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2hhbmdlRGF0YVN1Y2Nlc3M7Ci19Ci0KLWZ1bmN0aW9u
IGNoYW5nZURhdGFTdWNjZXNzKCkKLXsKLSAgICBkZWJ1ZygiY2hhbmdlRGF0YVN1Y2Nlc3MoKToi
KTsKLQotICAgIC8vIEFuIGluZGV4IGN1cnNvciBzdGFydGluZyBhdCAxIHNob3VsZCBub3QgZmlu
ZCBhbnl0aGluZy4KLSAgICB2YXIgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9i
amVjdFN0b3JlKCdzdG9yZScpLmluZGV4KCdpbmRleCcpLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2Uu
bG93ZXJCb3VuZCgxKSkiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvclN1Y2Nlc3M7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1
bmN0aW9uIGN1cnNvclN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJjdXJzb3JTdWNjZXNzKCk6Iik7
Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAibnVsbCIpOwotCi0gICAgLy8g
QSBrZXkgY3Vyc29yIHN0YXJ0aW5nIGF0IDEgc2hvdWxkIG5vdCBmaW5kIGFueXRoaW5nLgotICAg
IHZhciByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3Jl
JykuaW5kZXgoJ2luZGV4Jykub3BlbktleUN1cnNvcihJREJLZXlSYW5nZS5sb3dlckJvdW5kKDEp
KSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0ga2V5Q3Vyc29yU3VjY2VzczsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24ga2V5
Q3Vyc29yU3VjY2VzcygpCi17Ci0gICAgZGVidWcoImtleUN1cnNvclN1Y2Nlc3MoKToiKTsKLSAg
ICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJudWxsIik7Ci0KLSAgICAvLyBOb3cg
d2Ugc2hvdWxkIGJlIGFibGUgdG8gYWRkIGEgdmFsdWUgd2l0aCB4OiAxLgotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKS5wdXQoe3g6IDF9
LCAnYmFyJykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZE1vcmVEYXRhU3VjY2VzOwotfQotCi1mdW5j
dGlvbiBhZGRNb3JlRGF0YVN1Y2NlcygpCi17Ci0gICAgZGVidWcoImFkZE1vcmVEYXRhU3VjY2Vz
KCk6Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3Rv
cmUoJ3N0b3JlJykuZGVsZXRlKCdiYXInKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlU3VjY2Vz
czsKLX0KLQotZnVuY3Rpb24gZGVsZXRlU3VjY2VzcygpCi17Ci0gICAgZGVidWcoImRlbGV0ZVN1
Y2Nlc3MoKToiKTsKLQotICAgIC8vIE5vdyB3ZSBzaG91bGQgYmUgYWJsZSB0byBhZGQgYSB2YWx1
ZSB3aXRoIHg6IDEgYWdhaW4uCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9u
Lm9iamVjdFN0b3JlKCdzdG9yZScpLnB1dCh7eDogMX0sICdiYXonKSIpOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZmluYWxBZGRTdWNjZXNzOwotfQotCi1mdW5jdGlvbiBmaW5hbEFkZFN1Y2Nlc3MoKSB7Ci0g
ICAgZGVidWcoImZpbmFsQWRkU3VjY2VzcygpOiIpOwotCi0gICAgLy8gQW4gb3ZlcndyaXRlIHNo
b3VsZCBiZSBvay4KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0
U3RvcmUoJ3N0b3JlJykucHV0KHt4OiAxfSwgJ2JheicpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmaW5p
c2hKU1Rlc3Q7Ci19Ci0KLXRlc3QoKTsKLQotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvaW5kZXgtdW5pcXVlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1s
PgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnZhbGlkLWtl
eXMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludmFsaWQta2V5cy5odG1s
CmluZGV4IGZmOTE1ZTA5NmViOTcxNGJiNTJlMzNmNmIxOTdjMTUzOGYwYTAyMTUuLmUzNWFiMThm
YzYzNjA1OGQ2YmZhZWE2ZDdiOTA0NGVjM2Y1NDBmZjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2ludmFsaWQta2V5cy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2ludmFsaWQta2V5cy5odG1sCkBAIC0xLDc0ICsxLDEwIEBACi08IURP
Q1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNl
cy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNj
cmlwdGlvbigiVGVzdCBJbmRleGVkREIgaW52YWxpZCBrZXlzIik7Ci0KLWZ1bmN0aW9uIHRlc3Qo
KQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2Nh
dGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24p
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nl
c3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEn
KSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdGVzdEdyb3VwMTsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gdGVzdEdyb3Vw
MSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9iamVjdFN0b3Jl
ID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycpOyIpOwotICAgIHRlc3RJ
bnZhbGlkS2V5cygpOwotfQotCi1mdW5jdGlvbiB0ZXN0SW52YWxpZEtleXMoKQotewotICAgIHZh
ciBpbnZhbGlkS2V5cyA9IFsKLSAgICAgICAgInZvaWQgMCIsIC8vIFVuZGVmaW5lZAotICAgICAg
ICAibnVsbCIsIC8vIE51bGwKLSAgICAgICAgIihmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50
czsgfSgpKSIsIC8vIEFyZ3VtZW50cwotICAgICAgICAidHJ1ZSIsIC8vIEJvb2xlYW4KLSAgICAg
ICAgImZhbHNlIiwgLy8gQm9vbGVhbgotICAgICAgICAibmV3IEVycm9yIiwgLy8gRXJyb3IKLSAg
ICAgICAgImZ1bmN0aW9uICgpIHt9IiwgLy8gRnVuY3Rpb24KLSAgICAgICAgIkpTT04iLCAvLyBK
U09OCi0gICAgICAgICJNYXRoIiwgLy8gTWF0aAotICAgICAgICAiTmFOIiwgLy8gTnVtYmVyIChz
cGVjaWFsIGNhc2UpCi0gICAgICAgICJuZXcgRGF0ZShOYU4pIiwgLy8gRGF0ZSAoc3BlY2lhbCBj
YXNlKQotICAgICAgICAie30iLCAvLyBPYmplY3QKLSAgICAgICAgIi9yZWdleC8iLCAvLyBSZWdF
eHAKLSAgICAgICAgInNlbGYiLCAvLyBnbG9iYWwKLSAgICAgICAgInNlbGYuZG9jdW1lbnQiLCAv
LyBIVE1MRG9jdW1lbnQKLSAgICAgICAgInNlbGYuZG9jdW1lbnQuYm9keSIgLy8gSFRNTEJvZHlF
bGVtZW50Ci0gICAgXTsKLQotICAgIGludmFsaWRLZXlzLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7
Ci0gICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInJlcXVlc3QgPSBvYmplY3RTdG9yZS5w
dXQoJ3ZhbHVlJywgIiArIGtleSArICIpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJS
Iik7Ci0gICAgfSk7Ci0gICAgCi0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwot
Ci08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaW52YWxpZC1rZXlzLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIva2V5LWdlbmVyYXRvci5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIva2V5LWdlbmVyYXRvci5odG1sCmluZGV4IGE3YjA3ZmZhZDkxYTdkYmViYzRm
YWRkYWE4Y2E4ZjI0NjcyZjg3ZjEuLjg0OWQ0ZjIxOTI2Yzk1OGJkNDhkMGJmZDE4ZjIwZGE3NTJj
NGRmOTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleS1nZW5l
cmF0b3IuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXktZ2VuZXJh
dG9yLmh0bWwKQEAgLTQsMjEyICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVk
LmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24o
IlRlc3QgSW5kZXhlZERCJ3Mga2V5IGdlbmVyYXRvciBiZWhhdmlvci4iKTsKLQotZnVuY3Rpb24g
dGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIHJ1blRlc3RzKCk7
Ci19Ci0KLXZhciB0ZXN0cyA9IFtdOwotZnVuY3Rpb24gZGVmaW5lVGVzdChkZXNjcmlwdGlvbiwg
dmVyY2hhbmdlLCBvcHRpb25hbCkgewotICB0ZXN0cy5wdXNoKAotICAgIHsKLSAgICAgIGRlc2Ny
aXB0aW9uOiBkZXNjcmlwdGlvbiwKLSAgICAgIHZlcmNoYW5nZTogdmVyY2hhbmdlLAotICAgICAg
b3B0aW9uYWw6IG9wdGlvbmFsCi0gICAgfQotICApOwotfQotCi0KLWZ1bmN0aW9uIHJ1blRlc3Rz
KCkgewotCi0gICAgZnVuY3Rpb24gbmV4dFRlc3QoKSB7Ci0gICAgICAgIGlmICghdGVzdHMubGVu
Z3RoKSB7Ci0gICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotCi0gICAgICAgIHZhciB0ZXN0ID0gdGVzdHMuc2hpZnQoKTsKLSAgICAgICAg
ZGVidWcoIiIpOwotICAgICAgICBkZWJ1Zyh0ZXN0LmRlc2NyaXB0aW9uKTsKLQotICAgICAgICBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCdrZXktZ2VuZXJh
dG9yJykiKTsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewotICAgICAgICAg
ICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKCdrZXktZ2VuZXJhdG9yJyki
KTsKLSAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAg
ICAgICAgICAgZXZhbEFuZExvZygiZGIgPSByZXF1ZXN0LnJlc3VsdCIpOwotICAgICAgICAgICAg
ICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICAgICAg
ICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAg
ICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAg
ICAgICAgICAgZXZhbEFuZExvZygidHJhbnMgPSByZXF1ZXN0LnJlc3VsdCIpOwotICAgICAgICAg
ICAgICAgICAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAg
ICAgICAgICAgICAgICAgIHRlc3QudmVyY2hhbmdlKGRiLCB0cmFucyk7Ci0gICAgICAgICAgICAg
ICAgICAgIHRyYW5zLm9uY29tcGxldGUgPSBmdW5jdGlvbiAoKSB7Ci0KLSAgICAgICAgICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXZhbEFuZExvZygiZGIuY2xvc2UoKSIpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5leHRUZXN0KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICh0ZXN0Lm9wdGlvbmFsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGVzdC5vcHRpb25hbChkYiwgZmluaXNoVGVzdCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfTsKLSAgICAg
ICAgICAgICAgICB9OwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICB9Ci0KLSAgICBu
ZXh0VGVzdCgpOwotfQotCi1mdW5jdGlvbiBjaGVjayhzdG9yZSwga2V5LCBleHBlY3RlZCkgewot
ICAgIHNlbGYuc3RvcmUgPSBzdG9yZTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IHN0b3JlLmdldCgiICsgSlNPTi5zdHJpbmdpZnkoa2V5KSArICIpIik7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbiAoZSkgewotICAgICAgICBzZWxmLmV4cGVjdGVkID0gZXhwZWN0ZWQ7Ci0g
ICAgICAgIGlmIChKU09OLnN0cmluZ2lmeShldmVudC50YXJnZXQucmVzdWx0KSA9PT0gSlNPTi5z
dHJpbmdpZnkoZXhwZWN0ZWQpKSB7Ci0gICAgICAgICAgICB0ZXN0UGFzc2VkKCJHb3QgIiArIEpT
T04uc3RyaW5naWZ5KGV2ZW50LnRhcmdldC5yZXN1bHQpICsgIiBmb3Iga2V5OiAiICsgSlNPTi5z
dHJpbmdpZnkoa2V5KSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0ZXN0RmFpbGVk
KCJHb3QgIiArIEpTT04uc3RyaW5naWZ5KGV2ZW50LnRhcmdldC5yZXN1bHQpICsgIiBmb3Iga2V5
OiAiICsgSlNPTi5zdHJpbmdpZnkoa2V5KSArCi0gICAgICAgICAgICAgICAgIiBleHBlY3RlZDog
IiArIEpTT04uc3RyaW5naWZ5KGV4cGVjdGVkKSk7Ci0gICAgICAgIH0KLSAgICB9OwotfQotCi1k
ZWZpbmVUZXN0KAotICAgICdWZXJpZnkgdGhhdCBlYWNoIG9iamVjdCBzdG9yZSBoYXMgYW4gaW5k
ZXBlbmRlbnQga2V5IGdlbmVyYXRvci4nLAotICAgIGZ1bmN0aW9uIChkYiwgdHJhbnMpIHsKLSAg
ICAgICAgZXZhbEFuZExvZygic3RvcmUxID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlMScs
IHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9KSIpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZTEu
cHV0KCdhJykiKTsKLSAgICAgICAgY2hlY2soc3RvcmUxLCAxLCAnYScpOwotICAgICAgICBldmFs
QW5kTG9nKCJzdG9yZTIgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUyJywgeyBhdXRvSW5j
cmVtZW50OiB0cnVlIH0pIik7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlMi5wdXQoJ2EnKSIp
OwotICAgICAgICBjaGVjayhzdG9yZTIsIDEsICdhJyk7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0
b3JlMS5wdXQoJ2InKSIpOwotICAgICAgICBjaGVjayhzdG9yZTEsIDIsICdiJyk7Ci0gICAgICAg
IGV2YWxBbmRMb2coInN0b3JlMi5wdXQoJ2InKSIpOwotICAgICAgICBjaGVjayhzdG9yZTIsIDIs
ICdiJyk7Ci0gICAgfQotKTsKLQotZGVmaW5lVGVzdCgKLSAgICAnVmVyaWZ5IHRoYXQgdGhlIGtl
eSBnZW5lcmF0b3IgaXMgbm90IHVwZGF0ZWQgaWYgaW5zZXJ0aW9uIGZhaWxzJywKLSAgICBmdW5j
dGlvbiAoZGIsIHRyYW5zKSB7Ci0gICAgICAgIHRyYW5zLm9uZXJyb3IgPSBmdW5jdGlvbihlKSB7
IGUucHJldmVudERlZmF1bHQoKSB9OwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTEnLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSkiKTsKLSAg
ICAgICAgZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXgxJywgJ2l4
JywgeyB1bmlxdWU6IHRydWUgfSkiKTsKLSAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KHsg
aXg6ICdhJ30pIik7Ci0gICAgICAgIGNoZWNrKHN0b3JlLCAxLCB7aXg6ICdhJ30pOwotICAgICAg
ICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoeyBpeDogJ2EnfSkiKTsKLSAgICAgICAgZXZhbEFuZExv
Zygic3RvcmUucHV0KHsgaXg6ICdiJ30pIik7Ci0gICAgICAgIGNoZWNrKHN0b3JlLCAyLCB7aXg6
ICdiJ30pOwotICAgIH0KLSk7Ci0KLWRlZmluZVRlc3QoCi0gICAgJ1ZlcmlmeSB0aGF0IHRoZSBr
ZXkgZ2VuZXJhdG9yIGlzIG5vdCBhZmZlY3RlZCBieSBpdGVtIHJlbW92YWwgKGRlbGV0ZSBvciBj
bGVhcikuJywKLSAgICBmdW5jdGlvbiAoZGIsIHRyYW5zKSB7Ci0gICAgICAgIGV2YWxBbmRMb2co
InN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlMScsIHsgYXV0b0luY3JlbWVudDog
dHJ1ZSB9KSIpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2EnKSIpOwotICAgICAg
ICBjaGVjayhzdG9yZSwgMSwgJ2EnKTsKLSAgICAgICAgZXZhbEFuZExvZygic3RvcmUuZGVsZXRl
KDEpIik7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgnYicpIik7Ci0gICAgICAgIGNo
ZWNrKHN0b3JlLCAyLCAnYicpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5jbGVhcigpIik7
Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgnYycpIik7Ci0gICAgICAgIGNoZWNrKHN0
b3JlLCAzLCAnYycpOwotICAgICAgICAvLyBGSVhNRTogSURCT2JqZWN0U3RvcmUuZGVsZXRlKElE
QktleVJhbmdlKSBpcyBub3QgeWV0IGltcGxlbWVudGVkIGluIENocm9taXVtLgotICAgICAgICAv
LyBodHRwOi8vY3JidWcuY29tLzEwMTM4NAotICAgICAgICAvL2V2YWxBbmRMb2coInN0b3JlLmRl
bGV0ZShJREJLZXlSYW5nZS5sb3dlckJvdW5kKDApKSIpOwotICAgICAgICBldmFsQW5kTG9nKCJz
dG9yZS5wdXQoJ2QnKSIpOwotICAgICAgICBjaGVjayhzdG9yZSwgNCwgJ2QnKTsKLSAgICB9Ci0p
OwotCi1kZWZpbmVUZXN0KAotICAgICdWZXJpZnkgdGhhdCB0aGUga2V5IGdlbmVyYXRvciBpcyBv
bmx5IHNldCBpZiBhbmQgb25seSBpZiBhIG51bWVyaWMga2V5IGdyZWF0ZXIgdGhhbiB0aGUgbGFz
dCBnZW5lcmF0ZWQga2V5IGlzIHVzZWQuJywKLSAgICBmdW5jdGlvbiAoZGIsIHRyYW5zKSB7Ci0g
ICAgICAgIGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlMScs
IHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9KSIpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5w
dXQoJ2EnKSIpOwotICAgICAgICBjaGVjayhzdG9yZSwgMSwgJ2EnKTsKLSAgICAgICAgZXZhbEFu
ZExvZygic3RvcmUucHV0KCdiJywgMykiKTsKLSAgICAgICAgY2hlY2soc3RvcmUsIDMsICdiJyk7
Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgnYycpIik7Ci0gICAgICAgIGNoZWNrKHN0
b3JlLCA0LCAnYycpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2QnLCAtMTApIik7
Ci0gICAgICAgIGNoZWNrKHN0b3JlLCAtMTAsICdkJyk7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0
b3JlLnB1dCgnZScpIik7Ci0gICAgICAgIGNoZWNrKHN0b3JlLCA1LCAnZScpOwotICAgICAgICBl
dmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2YnLCA2LjAwMDAxKSIpOwotICAgICAgICBjaGVjayhzdG9y
ZSwgNi4wMDAwMSwgJ2YnKTsKLSAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdnJykiKTsK
LSAgICAgICAgY2hlY2soc3RvcmUsIDcsICdnJyk7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3Jl
LnB1dCgnZicsIDguOTk5OSkiKTsKLSAgICAgICAgY2hlY2soc3RvcmUsIDguOTk5OSwgJ2YnKTsK
LSAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdnJykiKTsKLSAgICAgICAgY2hlY2soc3Rv
cmUsIDksICdnJyk7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgnaCcsICdmb28nKSIp
OwotICAgICAgICBjaGVjayhzdG9yZSwgJ2ZvbycsICdoJyk7Ci0gICAgICAgIGV2YWxBbmRMb2co
InN0b3JlLnB1dCgnaScpIik7Ci0gICAgICAgIGNoZWNrKHN0b3JlLCAxMCwgJ2knKTsKLSAgICAg
ICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdqJywgWzEwMDBdKSIpOwotICAgICAgICBjaGVjayhz
dG9yZSwgWzEwMDBdLCAnaicpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2snKSIp
OwotICAgICAgICBjaGVjayhzdG9yZSwgMTEsICdrJyk7Ci0KLSAgICAgICAgLy8gRklYTUU6IFJl
cGVhdCB0aGlzIHRlc3QsIGJ1dCB3aXRoIGEga2V5UGF0aCBhbmQgaW5saW5lIGtleS4KLSAgICB9
Ci0pOwotCi1kZWZpbmVUZXN0KAotICAgICdWZXJpZnkgdGhhdCBhYm9ydGluZyBhIHRyYW5zYWN0
aW9uIHJlc2V0cyB0aGUga2V5IGdlbmVyYXRvciBzdGF0ZS4nLAotICAgIGZ1bmN0aW9uIChkYiwg
dHJhbnMpIHsKLSAgICAgICAgZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJywgeyBhdXRvSW5j
cmVtZW50OiB0cnVlIH0pOwotICAgIH0sCi0KLSAgICBmdW5jdGlvbiAoZGIsIGNhbGxiYWNrKSB7
Ci0gICAgICAgIGV2YWxBbmRMb2coInRyYW5zMSA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUnXSwg
SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICAgICAgZXZhbEFuZExvZygic3RvcmVf
dDEgPSB0cmFuczEub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKLSAgICAgICAgZXZhbEFuZExvZygi
c3RvcmVfdDEucHV0KCdhJykiKTsKLSAgICAgICAgY2hlY2soc3RvcmVfdDEsIDEsICdhJyk7Ci0g
ICAgICAgIGV2YWxBbmRMb2coInN0b3JlX3QxLnB1dCgnYicpIik7Ci0gICAgICAgIGNoZWNrKHN0
b3JlX3QxLCAyLCAnYicpOwotCi0gICAgICAgIC8vIFNjaGVkdWxlIHRoZSBhYm9ydCBhcyBhIHRh
c2sgKG5vdCBydW4gaXQgc3luY2hyb25vdXNseSkKLSAgICAgICAgc3RvcmVfdDEuZ2V0KDApLm9u
c3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIGRlYnVnKCdhYm9ydGluZy4uLicp
OwotICAgICAgICAgICAgZXZhbEFuZExvZygidHJhbnMxLmFib3J0KCkiKTsKLSAgICAgICAgICAg
IHRyYW5zMS5vbmFib3J0ID0gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgIGRlYnVnKCdh
Ym9ydGVkIScpOwotCi0gICAgICAgICAgICAgICAgZXZhbEFuZExvZygidHJhbnMyID0gZGIudHJh
bnNhY3Rpb24oWydzdG9yZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgICAg
ICAgICAgICAgIGV2YWxBbmRMb2coInN0b3JlX3QyID0gdHJhbnMyLm9iamVjdFN0b3JlKCdzdG9y
ZScpIik7Ci0gICAgICAgICAgICAgICAgZXZhbEFuZExvZygic3RvcmVfdDIucHV0KCdjJykiKTsK
LSAgICAgICAgICAgICAgICBjaGVjayhzdG9yZV90MiwgMSwgJ2MnKTsKLSAgICAgICAgICAgICAg
ICBldmFsQW5kTG9nKCJzdG9yZV90Mi5wdXQoJ2QnKSIpOwotICAgICAgICAgICAgICAgIGNoZWNr
KHN0b3JlX3QyLCAyLCAnZCcpOwotCi0gICAgICAgICAgICAgICAgdHJhbnMyLm9uY29tcGxldGUg
PSBjYWxsYmFjazsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgfQotKTsKLQotdGVz
dCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMva2V5LWdlbmVyYXRvci5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleS1zb3J0LW9yZGVyLWFjcm9zcy10eXBlcy5odG1s
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5LXNvcnQtb3JkZXItYWNyb3NzLXR5
cGVzLmh0bWwKaW5kZXggMGEyNDI0M2MyNGNmMjAxZjkyOTRhODA5OGQ2ZDAxNGMyYzRlZjg2Yy4u
NjQzZjdkY2Y4MDg1NjAzNzg5Yjk4OTE0MTc2NWMyYTA2YzQxMzgwZCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5LXNvcnQtb3JkZXItYWNyb3NzLXR5cGVzLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5LXNvcnQtb3JkZXItYWNy
b3NzLXR5cGVzLmh0bWwKQEAgLTEsOTUgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgogPGh0bWw+
CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3Jp
cHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4
ZWREQiBrZXkgY29tcGFyaXNvbiIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVW
ZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0g
ICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9
IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGFkZEtleTE7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGFkZEtleTEoKQotewotICAgIGRlbGV0ZUFsbE9i
amVjdFN0b3JlcyhkYik7Ci0KLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdmb28nKTsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IG9iamVjdFN0b3JlLmFkZChbXSwgSW5maW5pdHkpOyIpOwotICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gYWRkS2V5MjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLX0KLQotZnVuY3Rpb24gYWRkS2V5MigpCi17Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoW10sIC1JbmZpbml0eSk7Iik7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBhZGRLZXkzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBhZGRLZXkzKCkKLXsKLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChbXSwgMS4wKTsiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEtleTQ7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGFkZEtleTQoKQotewotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKFtdLCAnJyk7Iik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRLZXk1OwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBhZGRLZXk1KCkKLXsKLSAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChbXSwgJzEu
MCcpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbkFDdXJzb3I7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5B
Q3Vyc29yKCkKLXsKLSAgICBrZXlJbmRleCA9IDA7Ci0gICAgc29ydGVkS2V5cyA9IGV2YWxBbmRM
b2coInNvcnRlZEtleSA9IFstSW5maW5pdHksIDEuMCwgSW5maW5pdHksICcnLCAnMS4wJ107Iik7
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vy
c29yKCk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAgY3Vy
c29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAg
ICAgaWYgKGN1cnNvcikgewotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAic29y
dGVkS2V5c1trZXlJbmRleF0iKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250
aW51ZSgpOyIpOwotICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKLSAgICAg
ICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgICAg
ICB9Ci0gICAgfQotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2tleS1zb3J0LW9yZGVyLWFjcm9zcy10eXBlcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
IDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2tleS1zb3J0LW9yZGVyLWRhdGUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2tleS1zb3J0LW9yZGVyLWRhdGUuaHRtbAppbmRleCA1ZDcwMmQwYmFhZTlhOGU1NmM2ZWE3
ZDg5OGNmODQyN2JhZjRhYzE2Li4yZjBlNGVjNmY2ZGQ2N2VjNjYzYmQzMzcxNjdiODkzYTgzZTJj
YjMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXktc29ydC1v
cmRlci1kYXRlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5LXNv
cnQtb3JkZXItZGF0ZS5odG1sCkBAIC0xLDkyICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KIDxo
dG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwv
c2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJ
bmRleGVkREIga2V5IGNvbXBhcmlzb24iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVt
b3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1l
OwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAg
ZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBhZGRLZXkxOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBhZGRLZXkxKCkKLXsKLSAgICBkZWxldGVB
bGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJkYi5j
cmVhdGVPYmplY3RTdG9yZSgnZm9vJyk7Iik7Ci0gICAgZGF0ZTEgPSBldmFsQW5kTG9nKCJkYXRl
MSA9IG5ldyBEYXRlKDEwMDApOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gb2JqZWN0U3RvcmUuYWRkKFtdLCBkYXRlMSk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBhZGRLZXkyOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotfQotCi1mdW5jdGlvbiBhZGRLZXkyKCkKLXsKLSAgICBkYXRlMCA9IGV2YWxBbmRMb2coImRh
dGUwID0gbmV3IERhdGUoMCk7Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5hZGQoW10sIGRhdGUwKTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGFkZEtleTM7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci19Ci0KLWZ1bmN0aW9uIGFkZEtleTMoKQotewotICAgIGRhdGUzID0gZXZhbEFuZExvZygiZGF0
ZTMgPSBuZXcgRGF0ZSgzMDAwKTsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IG9iamVjdFN0b3JlLmFkZChbXSwgZGF0ZTMpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gYWRkS2V5NDsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLX0KLQotZnVuY3Rpb24gYWRkS2V5NCgpCi17Ci0gICAgZGF0ZTIgPSBldmFsQW5kTG9nKCJk
YXRlMiA9IG5ldyBEYXRlKDIwMDApOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKFtdLCBkYXRlMik7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBvcGVuQUN1cnNvcjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlbkFDdXJzb3IoKQotewotICAgIGtleUluZGV4ID0g
MDsKLSAgICBzb3J0ZWRLZXlzID0gZXZhbEFuZExvZygic29ydGVkS2V5cyA9IFtkYXRlMC50b1N0
cmluZygpLCBkYXRlMS50b1N0cmluZygpLCBkYXRlMi50b1N0cmluZygpLCBkYXRlMy50b1N0cmlu
ZygpXTsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3Jl
Lm9wZW5DdXJzb3IoKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewotICAg
ICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIp
OwotICAgICAgICBpZiAoY3Vyc29yKSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtl
eS50b1N0cmluZygpIiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7Ci0gICAgICAgICAgICBldmFs
QW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImtl
eUluZGV4Kys7Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9rZXktc29ydC1vcmRlci1kYXRlLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIva2V5LXR5cGUtYXJyYXkuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2tleS10eXBlLWFycmF5Lmh0bWwKaW5kZXggYjcxNWYwM2IzMmM3OWFjMGZjMTg3
YjBkNzQzMGFlNjBhZGEyZDZlMi4uYWI1MGQxYTE0ZmI0Yjk1ZTMwZWIzN2EyNWRmZjhjODY5NDJm
MzAzMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5LXR5cGUt
YXJyYXkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXktdHlwZS1h
cnJheS5odG1sCkBAIC0xLDIwOCArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxo
ZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4K
IDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERC
IGtleSB0eXBlcyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVm
aXhlcygpOwotCi0gICAgZXZhbEFuZExvZygiSURCVHJhbnNhY3Rpb24gPSBzZWxmLklEQlRyYW5z
YWN0aW9uIHx8IHNlbGYuSURCVHJhbnNhY3Rpb247Iik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiSURC
VHJhbnNhY3Rpb24gPT0gbnVsbCIpOwotCi0gICAgZXZhbEFuZExvZygiSURCRGF0YWJhc2VFeGNl
cHRpb24gPSBzZWxmLklEQkRhdGFiYXNlRXhjZXB0aW9uIHx8IHNlbGYuSURCRGF0YWJhc2VFeGNl
cHRpb247Iik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiSURCRGF0YWJhc2VFeGNlcHRpb24gPT0gbnVs
bCIpOwotCi0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlw
dGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICBvcGVucmVxID0gZXZhbEFuZExvZygiaW5k
ZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgb3BlbnJlcS5vbnN1Y2Nlc3Mg
PSBvcGVuU3VjY2VzczsKLSAgICBvcGVucmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGV2YWxBbmRMb2coImRi
ID0gb3BlbnJlcS5yZXN1bHQiKTsKLSAgICBzZXR2ZXJyZXEgPSBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgc2V0dmVycmVxLm9uc3VjY2VzcyA9IHNldFZl
cnNpb25TdWNjZXNzOwotICAgIHNldHZlcnJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb25TdWNjZXNzKCkKLXsKLSAgICBkZWJ1Zygi
cHJlcGFyaW5nIGRhdGFiYXNlIik7Ci0gICAgdHJhbnMgPSBzZXR2ZXJyZXEucmVzdWx0OwotICAg
IHRyYW5zLm9uY29tcGxldGUgPSB0ZXN0VmFsaWRBcnJheUtleXM7Ci0gICAgZGVsZXRlQWxsT2Jq
ZWN0U3RvcmVzKGRiKTsKLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9i
amVjdFN0b3JlKCdzdG9yZScpOyIpOwotICAgIGRlYnVnKCIiKTsKLX0KLQotZnVuY3Rpb24gdGVz
dFZhbGlkQXJyYXlLZXlzKCkKLXsKLSAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0
aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFuZExv
Zygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOwotICAgIGRlYnVnKCIiKTsK
LQotICAgIGV2YWxBbmRMb2coImxvbmdfYXJyYXkgPSBbXTsgZm9yIChpID0gMDsgaSA8IDEwMDA7
ICsraSkgeyBsb25nX2FycmF5LnB1c2goJ2FiYycsIDEyMywgbmV3IERhdGUoMCksIFtdKTsgfSIp
OwotICAgIGRlYnVnKCIiKTsKLQotICAgIGRlYnVnKCJhcnJheSB0aGF0IGNvbnRhaW5zIG5vbi1u
dW1lcmljIHNlbGYtcmVmZXJlbmNlIik7Ci0gICAgZXZhbEFuZExvZygic2VsZl9yZWZlcnJlbnRp
YWxfYXJyYXkgPSBbXTsgc2VsZl9yZWZlcnJlbnRpYWxfYXJyYXkuc2VsZiA9IHNlbGZfcmVmZXJy
ZW50aWFsX2FycmF5OyIpOwotICAgIGRlYnVnKCIiKTsKLQotICAgIHZhciBuID0gMCwgY2FzZXMg
PSBbCi0gICAgICAgICJbXSIsCi0KLSAgICAgICAgIlstSW5maW5pdHldIiwKLSAgICAgICAgIlst
TnVtYmVyLk1BWF9WQUxVRV0iLAotICAgICAgICAiWy0xXSIsCi0gICAgICAgICJbLU51bWJlci5N
SU5fVkFMVUVdIiwKLSAgICAgICAgIlswXSIsCi0gICAgICAgICJbTnVtYmVyLk1JTl9WQUxVRV0i
LAotICAgICAgICAiWzFdIiwKLSAgICAgICAgIltOdW1iZXIuTUFYX1ZBTFVFXSIsCi0gICAgICAg
ICJbSW5maW5pdHldIiwKLQotICAgICAgICAiWzEsMiwzXSIsCi0KLSAgICAgICAgIltuZXcgRGF0
ZSgwKV0iLAotICAgICAgICAiW25ldyBEYXRlKCcyNTI1LTAxLTAxVDAwOjAwOjAwWicpXSIsCi0K
LSAgICAgICAgIltuZXcgRGF0ZSgwKSwgbmV3IERhdGUoJzI1MjUtMDEtMDFUMDA6MDA6MDBaJyld
IiwKLQotICAgICAgICAiWycnXSIsCi0gICAgICAgICJbJ1x4MDAnXSIsCi0gICAgICAgICJbJ2Fi
YzEyMyddIiwKLQotICAgICAgICAiWydhYmMnLCAxMjNdIiwKLQotICAgICAgICAiW1tdXSIsCi0K
LSAgICAgICAgIltbXSwgW11dIiwKLSAgICAgICAgIltbXSwgW10sIFtdXSIsCi0KLSAgICAgICAg
IltbW11dXSIsCi0gICAgICAgICJbW1tbXV1dXSIsCi0KLSAgICAgICAgIlsxMjMsICdhYmMnLCBu
ZXcgRGF0ZSgwKSwgW11dIiwKLSAgICAgICAgIltbMTIzLCAnYWJjJywgbmV3IERhdGUoMCksIFtd
XSwgWzQ1NiwgJ2RlZicsIG5ldyBEYXRlKDk5OSksIFtbXV1dXSIsCi0KLSAgICAgICAgImxvbmdf
YXJyYXkiLAotICAgICAgICAic2VsZl9yZWZlcnJlbnRpYWxfYXJyYXkiCi0gICAgXTsKLQotICAg
IGZ1bmN0aW9uIHRlc3RBcnJheVB1dEdldCh2YWx1ZSwga2V5LCBjYWxsYmFjaykKLSAgICB7Ci0g
ICAgICAgIGRlYnVnKCJ0ZXN0aW5nIGFycmF5IGtleTogIiArIGtleSk7Ci0gICAgICAgIHB1dHJl
cSA9IGV2YWxBbmRMb2coInN0b3JlLnB1dCgnIiArIHZhbHVlICsgIicsICIgKyBrZXkgKyAiKTsi
KTsKLSAgICAgICAgcHV0cmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAg
ICAgICAgcHV0cmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgZ2V0cmVx
ID0gZXZhbEFuZExvZygic3RvcmUuZ2V0KCIgKyBrZXkgKyAiKTsiKTsKLSAgICAgICAgICAgIGdl
dHJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgICAgICBnZXRy
ZXEub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJnZXRyZXEucmVzdWx0IiwgdmFsdWUpOwotICAgICAgICAgICAgICAgIGRlYnVn
KCIiKTsKLSAgICAgICAgICAgICAgICBjYWxsYmFjaygpOwotICAgICAgICAgICAgfTsKLSAgICAg
ICAgfTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBuZXh0VGVzdCgpCi0gICAgewotICAgICAgICB2
YXIgdGVzdGNhc2UgPSBjYXNlcy5zaGlmdCgpOwotICAgICAgICBpZiAodGVzdGNhc2UpIHsKLSAg
ICAgICAgICAgIHRlc3RBcnJheVB1dEdldCgidmFsdWUiICsgKCsrbiksIHRlc3RjYXNlLCBuZXh0
VGVzdCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBuZXh0VGVzdCgpOwotCi0gICAgdHJhbnMu
b25jb21wbGV0ZSA9IHRlc3RJbnZhbGlkQXJyYXlLZXlzOwotfQotCi0KLWZ1bmN0aW9uIHRlc3RJ
bnZhbGlkQXJyYXlLZXlzKCkKLXsKLSAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0
aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFuZExv
Zygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOwotICAgIGRlYnVnKCIiKTsK
LQotICAgIGRlYnVnKCJhcnJheSB0aGF0IGNvbnRhaW5zIGl0c2VsZjogYXJyYXkgPSBbIGFycmF5
IF0iKTsKLSAgICBldmFsQW5kTG9nKCJjeWNsaWNfYXJyYXkgPSBbXTsgY3ljbGljX2FycmF5LnB1
c2goY3ljbGljX2FycmF5KSIpOwotICAgIHNob3VsZFRocm93KCJKU09OLnN0cmluZ2lmeShjeWNs
aWNfYXJyYXkpIik7Ci0KLSAgICBkZWJ1ZygiYXJyYXkgdGhhdCBjb250YWlucyBpdHNlbGYsIG9u
ZSBsZXZlbCBkb3duOiBhcnJheSA9IFsgWyBhcnJheSBdIF0iKTsKLSAgICBldmFsQW5kTG9nKCJj
eWNsaWNfYXJyYXkyID0gW107IGN5Y2xpY19hcnJheTIucHVzaChbY3ljbGljX2FycmF5Ml0pIik7
Ci0gICAgc2hvdWxkVGhyb3coIkpTT04uc3RyaW5naWZ5KGN5Y2xpY19hcnJheTIpIik7Ci0KLSAg
ICBkZWJ1ZygiYXJyYXkgdGhhdCBjb250YWlucyBpdHNlbGYsIG5vdCBhcyBmaXJzdCBlbGVtZW50
OiBhcnJheSA9IFsxLCAnYicsIFtdLCBhcnJheV0iKTsKLSAgICBldmFsQW5kTG9nKCJjeWNsaWNf
YXJyYXkzID0gWzEsICdiJywgW11dOyBjeWNsaWNfYXJyYXkzLnB1c2goY3ljbGljX2FycmF5Myki
KTsKLSAgICBzaG91bGRUaHJvdygiSlNPTi5zdHJpbmdpZnkoY3ljbGljX2FycmF5MykiKTsKLSAg
ICBkZWJ1ZygiIik7Ci0KLSAgICBkZWJ1ZygiYXJyYXkgdGhhdCBjb250YWlucyBhcnJheSB0aGF0
IGNvbnRhaW5zIGl0c2VsZiIpOwotICAgIGV2YWxBbmRMb2coImN5Y2xpY19hcnJheTQgPSBbY3lj
bGljX2FycmF5XTsiKTsKLSAgICBzaG91bGRUaHJvdygiSlNPTi5zdHJpbmdpZnkoY3ljbGljX2Fy
cmF5NCkiKTsKLSAgICBkZWJ1ZygiIik7Ci0KLSAgICB2YXIgaW52YWxpZEtleXMgPSBbCi0gICAg
ICAgICJbIHZvaWQgMCBdIiwgLy8gdW5kZWZpbmVkCi0gICAgICAgICJbIHRydWUgXSIsCi0gICAg
ICAgICJbIGZhbHNlIF0iLAotICAgICAgICAiWyBOYU4gXSIsCi0gICAgICAgICJbIG51bGwgXSIs
Ci0gICAgICAgICJbIHt9IF0iLAotICAgICAgICAiWyBmdW5jdGlvbiAoKSB7fSBdIiwKLSAgICAg
ICAgIlsgL3JlZ2V4LyBdIiwKLSAgICAgICAgIlsgc2VsZiBdIiwKLSAgICAgICAgIlsgc2VsZi5k
b2N1bWVudCBdIiwKLSAgICAgICAgIlsgc2VsZi5kb2N1bWVudC5ib2R5IF0iLAotICAgICAgICAi
Y3ljbGljX2FycmF5IiwKLSAgICAgICAgImN5Y2xpY19hcnJheTIiLAotICAgICAgICAiY3ljbGlj
X2FycmF5MyIsCi0gICAgICAgICJjeWNsaWNfYXJyYXk0IiwKLSAgICAgICAgIkFycmF5KDEwMDAp
IiAvLyBzcGFyc2UKLSAgICBdOwotCi0gICAgaW52YWxpZEtleXMuZm9yRWFjaChmdW5jdGlvbiAo
a2V5KSB7Ci0gICAgICAgIGRlYnVnKCJ0ZXN0aW5nIGludmFsaWQgYXJyYXkga2V5OiAiICsga2V5
KTsKLSAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KCd2YWx1ZScsICIg
KyBrZXkgKyAiKTsiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLSAgICAgICAg
ZGVidWcoIiIpOwotICAgIH0pOwotCi0gICAgdGVzdERlcHRoTGltaXRzKCk7Ci19Ci0KLWZ1bmN0
aW9uIG1ha2VBcnJheU9mRGVwdGgobikKLXsKLSAgICB2YXIgYXJyYXkgPSBbXTsKLSAgICB3aGls
ZSAoLS1uKSB7Ci0gICAgICAgIGFycmF5ID0gW2FycmF5XTsKLSAgICB9Ci0gICAgcmV0dXJuIGFy
cmF5OwotfQotCi1mdW5jdGlvbiB0ZXN0RGVwdGhMaW1pdHMoKQotewotICAgIHNob3VsZEJlKCJp
bmRleGVkREIuY21wKG1ha2VBcnJheU9mRGVwdGgoMjUpLCAwKSIsICIxIik7Ci0gICAgc2hvdWxk
QmUoImluZGV4ZWREQi5jbXAobWFrZUFycmF5T2ZEZXB0aCgyNTApLCAwKSIsICIxIik7Ci0gICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXhlZERCLmNtcChtYWtlQXJyYXlPZkRlcHRoKDI1
MDApLCAwKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotICAgIGRlYnVnKCIi
KTsKLQotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9rZXktdHlwZS1hcnJheS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
IDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2tleS10eXBlLWluZmluaXR5Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9rZXktdHlwZS1pbmZpbml0eS5odG1sCmluZGV4IGQzOTY0Yjg4Y2FlYWVkNTcxOTYyYWM2Mjcx
ODRmNjFjY2FjZmIzY2MuLjA1MDc1YWMxNjlmOWQ4NjlhYWI0ODUzNzNmZGIzZjg2NDJhMTUyZGIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleS10eXBlLWluZmlu
aXR5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5LXR5cGUtaW5m
aW5pdHkuaHRtbApAQCAtMSw2MiArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxo
ZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4K
IDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERC
IGtleSB0eXBlcyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVm
aXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3Jp
cHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImlu
ZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRM
b2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IHRlc3RHcm91cDE7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDEoKQotewotICAgIGRlbGV0ZUFsbE9iamVj
dFN0b3JlcyhkYik7Ci0KLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9i
amVjdFN0b3JlKCdmb28nKTsiKTsKLSAgICBkZWJ1ZygidGVzdCBrZXkgYXMgaW5maW5pdHkiKTsK
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChbXSwg
SW5maW5pdHkpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdGVzdEdyb3VwMjsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24g
dGVzdEdyb3VwMigpCi17Ci0gICAgZGVidWcoInRlc3Qga2V5IGFzIG5lZ2F0aXZlIGluZmluaXR5
Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQo
W10sIC1JbmZpbml0eSk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0ZXN0R3JvdXAzOwot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5j
dGlvbiB0ZXN0R3JvdXAzKCkKLXsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7
Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9rZXktdHlwZS1pbmZpbml0eS5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtYmFzaWNzLmh0bWwgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWJhc2ljcy5odG1sCmluZGV4IGE2NmQyY2Q4N2Rj
MmVhMzgxMDVhNmI1MjlkMzQxNmQxNzZhYTljMzMuLjcwNGNjYzkyYzU0NGRlMjJlNWIxOTJmNGNm
ODc1MzNiOWI2NDFiNzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2tleXBhdGgtYmFzaWNzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
a2V5cGF0aC1iYXNpY3MuaHRtbApAQCAtMSwxMDEgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgog
PGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+
PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0
IGZvciB2YWxpZCBhbmQgaW52YWxpZCBrZXlwYXRocyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsK
LSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBh
dGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17
Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0ZXN0VmFsaWRLZXlQYXRoczsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gdGVzdFZhbGlk
S2V5UGF0aHMoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICB0ZXN0
S2V5UGF0aHMgPSBbbnVsbCwgdW5kZWZpbmVkLCAnJ107Ci0gICAgdGVzdEtleVBhdGhzLmZvckVh
Y2goZnVuY3Rpb24gKGtleVBhdGgpIHsKLSAgICAgICAgZ2xvYmFsS2V5UGF0aCA9IGtleVBhdGg7
Ci0gICAgICAgIGRlYnVnKCJnbG9iYWxLZXlQYXRoID0gJyIgKyBnbG9iYWxLZXlQYXRoICsgIici
KTsKLSAgICAgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ25hbWUnLCB7a2V5
UGF0aDogZ2xvYmFsS2V5UGF0aH0pIik7Ci0gICAgICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jlcyhk
Yik7Ci0gICAgfSk7Ci0KLSAgICB0ZXN0S2V5UGF0aHMgPSBbJ2ZvbycsICdmb28uYmFyLmJheidd
OwotICAgIHRlc3RLZXlQYXRocy5mb3JFYWNoKGZ1bmN0aW9uIChrZXlQYXRoKSB7Ci0gICAgICAg
IGdsb2JhbEtleVBhdGggPSBrZXlQYXRoOwotICAgICAgICBkZWJ1ZygiZ2xvYmFsS2V5UGF0aCA9
ICciICsgZ2xvYmFsS2V5UGF0aCArICInIik7Ci0gICAgICAgIGV2YWxBbmRMb2coImRiLmNyZWF0
ZU9iamVjdFN0b3JlKCduYW1lJywge2tleVBhdGg6IGdsb2JhbEtleVBhdGh9KSIpOwotICAgICAg
ICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotICAgIH0pOwotCi0gICAgdGVzdEtleVBhdGhz
ID0gW251bGwsIHVuZGVmaW5lZCwgJycsICdmb28nLCAnZm9vLmJhci5iYXonXTsKLSAgICB0ZXN0
S2V5UGF0aHMuZm9yRWFjaChmdW5jdGlvbiAoa2V5UGF0aCkgewotICAgICAgICBnbG9iYWxLZXlQ
YXRoID0ga2V5UGF0aDsKLSAgICAgICAgZGVidWcoImdsb2JhbEtleVBhdGggPSAnIiArIGdsb2Jh
bEtleVBhdGggKyAiJyIpOwotICAgICAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0
b3JlLmNyZWF0ZUluZGV4KCduYW1lJywgZ2xvYmFsS2V5UGF0aCkiKTsKLSAgICAgICAgZGVsZXRl
QWxsT2JqZWN0U3RvcmVzKGRiKTsKLSAgICB9KTsKLQotICAgIHRlc3RJbnZhbGlkS2V5UGF0aHMo
KTsKLX0KLQotZnVuY3Rpb24gdGVzdEludmFsaWRLZXlQYXRocygpCi17Ci0gICAgZGVsZXRlQWxs
T2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIHRlc3RLZXlQYXRocyA9IFsnW10nLCAnWyJmb28iXScs
ICdbImZvbyIsICJiYXIiXScsICdbIiIsICIiXScsICdbMS4wLCAyLjBdJywgJ1tbImZvbyJdXScs
ICdbImZvbyIsIFsiYmFyIl1dJ107Ci0gICAgdGVzdEtleVBhdGhzLmZvckVhY2goZnVuY3Rpb24g
KGtleVBhdGgpIHsKLSAgICAgICAgZ2xvYmFsS2V5UGF0aCA9IGtleVBhdGg7Ci0gICAgICAgIGRl
YnVnKCJnbG9iYWxLZXlQYXRoID0gJyIgKyBnbG9iYWxLZXlQYXRoICsgIiciKTsKLSAgICAgICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ25hbWUnLCB7a2V5
UGF0aDogZ2xvYmFsS2V5UGF0aH0pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PTl9UUkFOU0lF
TlRfRVJSIik7Ci0gICAgICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0gICAgfSk7Ci0K
LSAgICB0ZXN0S2V5UGF0aHMgPSBbJyAnLCAnZm9vICcsICdmb28gYmFyJywgJ2Zvby4gYmFyJywg
J2ZvbyAuYmFyJywgJ2Zvby4uYmFyJywgJytmb28nLCAnZm9vJSddOwotICAgIHRlc3RLZXlQYXRo
cy5mb3JFYWNoKGZ1bmN0aW9uIChrZXlQYXRoKSB7Ci0gICAgICAgIGdsb2JhbEtleVBhdGggPSBr
ZXlQYXRoOwotICAgICAgICBkZWJ1ZygiZ2xvYmFsS2V5UGF0aCA9ICciICsgZ2xvYmFsS2V5UGF0
aCArICInIik7Ci0gICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLmNyZWF0ZU9iamVj
dFN0b3JlKCduYW1lJywge2tleVBhdGg6IGdsb2JhbEtleVBhdGh9KSIsICJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5OT05fVFJBTlNJRU5UX0VSUiIpOwotICAgICAgICBkZWxldGVBbGxPYmplY3RTdG9y
ZXMoZGIpOwotICAgIH0pOwotCi0gICAgdGVzdEtleVBhdGhzID0gWycgJywgJ2ZvbyAnLCAnZm9v
IGJhcicsICdmb28uIGJhcicsICdmb28gLmJhcicsICdmb28uLmJhcicsICcrZm9vJywgJ2ZvbyUn
XTsKLSAgICB0ZXN0S2V5UGF0aHMuZm9yRWFjaChmdW5jdGlvbiAoa2V5UGF0aCkgewotICAgICAg
ICBnbG9iYWxLZXlQYXRoID0ga2V5UGF0aDsKLSAgICAgICAgZGVidWcoImdsb2JhbEtleVBhdGgg
PSAnIiArIGdsb2JhbEtleVBhdGggKyAiJyIpOwotICAgICAgICBzdG9yZSA9IGV2YWxBbmRMb2co
InN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0gICAgICAgIGV2
YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmNyZWF0ZUluZGV4KCduYW1lJywgZ2xvYmFsS2V5
UGF0aCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9OX1RSQU5TSUVOVF9FUlIiKTsKLSAgICAg
ICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLSAgICB9KTsKLQotICAgIGZpbmlzaEpTVGVz
dCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2tleXBhdGgtYmFzaWNzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1lZGdlcy5o
dG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1lZGdlcy5odG1sCmlu
ZGV4IDQ2OGY0MDJiMWE3NWRkNzg4Y2IwZmYwNzRiZTA0MjZmYzA0Y2ExZTEuLmZmOWRhZGQyNDQ4
ZDVjMzI1YjkzZGVhYjNhNzg4YTI5NmUyNDVlMjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtZWRnZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9rZXlwYXRoLWVkZ2VzLmh0bWwKQEAgLTEsMTE5ICsxLDEwIEBACi08IURP
Q1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNl
cy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNj
cmlwdGlvbigiVGVzdCBJbmRleGVkREIga2V5UGF0aCBlZGdlIGNhc2VzIik7Ci0KLWZ1bmN0aW9u
IHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCdrZXlwYXRoLWVkZ2VzJykiKTsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImluZGV4ZWREQi5vcGVuKCdrZXlwYXRoLWVkZ2VzJykiKTsKLSAgICAgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQot
ewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKLSAgICBkYiA9
IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHRyYW5zYWN0aW9uID0gcmVxdWVzdC5yZXN1bHQ7Ci0g
ICAgICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAg
ICAgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlLXdpdGgtcGF0aCcs
IHtrZXlQYXRoOiAnZm9vJ30pIik7Ci0gICAgICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVj
dFN0b3JlKCdzdG9yZS13aXRoLXBhdGgtYW5kLWdlbmVyYXRvcicsIHtrZXlQYXRoOiAnZm9vJywg
YXV0b0luY3JlbWVudDogdHJ1ZX0pIik7Ci0gICAgICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUg
PSB0ZXN0S2V5UGF0aHM7Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24gdGVzdEtleVBhdGhzKCkKLXsK
LSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInRlc3RLZXlQYXRocygpOiIpOwotCi0gICAgdHJh
bnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnc3Rv
cmUtd2l0aC1wYXRoJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgc3RvcmUg
PSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZS13aXRo
LXBhdGgnKSIpOwotCi0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJLZXkgcGF0aCBkb2Vzbid0
IHJlc29sdmUgdG8gYSB2YWx1ZTsgc2hvdWxkIHlpZWxkIG51bGwsIHNob3VsZCB0aHJvdyBEQVRB
X0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLnB1dChudWxsKSIsICJJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotCi0gICAgZGVidWcoIiIpOwotICAgIGRl
YnVnKCJLZXkgcGF0aCBkb2Vzbid0IHJlc29sdmUgdG8gYSB2YWx1ZTsgc2hvdWxkIHlpZWxkIG51
bGwsIHNob3VsZCB0aHJvdyBEQVRBX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24o
InN0b3JlLnB1dCh7fSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLQotICAg
IGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiS2V5IHBhdGggcmVzb2x2ZXMgdG8gYSB2YWx1ZSB0aGF0
IGlzIGludmFsaWQga2V5OyBzaG91bGQgeWllbGQgJ2ludmFsaWQnIGtleSwgc2hvdWxkIHRocm93
IERBVEFfRVJSIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KHtmb286
IG51bGx9KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotCi0gICAgZGVidWco
IiIpOwotICAgIGRlYnVnKCJLZXkgcGF0aCByZXNvbHZlcyB0byBhIHZhbHVlIHRoYXQgaXMgdmFs
aWQga2V5OyBzaG91bGQgeWllbGQgJ3N0cmluZycga2V5LCBzaG91bGQgc3VjY2VlZCIpOwotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5wdXQoe2ZvbzogJ3pvbyd9KSIpOwotICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZnVuY3Rpb24gKCkgewotICAgICAgICB0ZXN0UGFzc2VkKCJzdG9yZS5wdXQgc3Vj
Y2VlZGVkIik7Ci0gICAgfTsKLQotICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVk
QWJvcnRDYWxsYmFjazsKLSAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gdGVzdEtleVBhdGhz
QW5kR2VuZXJhdG9yOwotfQotCi1mdW5jdGlvbiB0ZXN0S2V5UGF0aHNBbmRHZW5lcmF0b3IoKQot
ewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygidGVzdEtleVBhdGhzQW5kR2VuZXJhdG9yKCk6
Iik7Ci0KLSAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJh
bnNhY3Rpb24oWydzdG9yZS13aXRoLXBhdGgtYW5kLWdlbmVyYXRvciddLCBJREJUcmFuc2FjdGlv
bi5SRUFEX1dSSVRFKSIpOwotICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2Fj
dGlvbi5vYmplY3RTdG9yZSgnc3RvcmUtd2l0aC1wYXRoLWFuZC1nZW5lcmF0b3InKSIpOwotCi0g
ICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJLZXkgcGF0aCBkb2Vzbid0IHJlc29sdmUgdG8gYSB2
YWx1ZTsgc2hvdWxkIHlpZWxkIG51bGwgYnV0IGluc2VydGlvbiB3b3VsZCBmYWlsLCBzbyBwdXQg
cmVxdWVzdCBzaG91bGQgcmFpc2UgZXhjZXB0aW9uIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2Vw
dGlvbigic3RvcmUucHV0KG51bGwpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7
Ci0KLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIktleSBwYXRoIGRvZXNuJ3QgcmVzb2x2ZSB0
byBhIHZhbHVlOyBzaG91bGQgeWllbGQgbnVsbCBidXQgaW5zZXJ0aW9uIHdvdWxkIGZhaWwsIHNv
IHB1dCByZXF1ZXN0IHNob3VsZCByYWlzZSBleGNlcHRpb24iKTsKLSAgICBldmFsQW5kRXhwZWN0
RXhjZXB0aW9uKCJzdG9yZS5wdXQoJ3N0cmluZycpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRB
VEFfRVJSIik7Ci0KLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIktleSBwYXRoIGRvZXNuJ3Qg
cmVzb2x2ZSB0byBhIHZhbHVlOyBzaG91bGQgeWllbGQgbnVsbCwga2V5IHNob3VsZCBiZSBnZW5l
cmF0ZWQsIHB1dCByZXF1ZXN0IHNob3VsZCBzdWNjZWVkIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInN0b3JlLnB1dCh7fSkiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKLSAg
ICAgICAgdGVzdFBhc3NlZCgic3RvcmUucHV0IHN1Y2NlZWRlZCIpOwotCi0gICAgICAgIGRlYnVn
KCIiKTsKLSAgICAgICAgZGVidWcoIktleSBwYXRoIHJlc29sdmVzIHRvIGEgdmFsdWUgdGhhdCBp
cyBpbnZhbGlkIGtleTsgc2hvdWxkIHlpZWxkICdpbnZhbGlkJyBrZXksIHNob3VsZCB0aHJvdyBE
QVRBX0VSUiIpOwotICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5wdXQoe2Zv
bzogbnVsbH0pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0KLSAgICAgICAg
ZGVidWcoIiIpOwotICAgICAgICBkZWJ1ZygiS2V5IHBhdGggcmVzb2x2ZXMgdG8gYSB2YWx1ZSB0
aGF0IGlzIHZhbGlkIGtleTsgc2hvdWxkIHlpZWxkICdzdHJpbmcnIGtleSwgc2hvdWxkIHN1Y2Nl
ZWQiKTsKLSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLnB1dCh7Zm9vOiAnem9v
J30pIik7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAg
IHRlc3RQYXNzZWQoInN0b3JlLnB1dCBzdWNjZWVkZWQiKTsKLQotICAgICAgICB9OwotICAgIH07
Ci0KLSAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0g
ICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZpbmlzaEpTVGVzdDsKLX0KLQotdGVzdCgpOwot
Ci08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMva2V5cGF0aC1lZGdlcy5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtZmV0Y2gta2V5Lmh0bWwgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWZldGNoLWtleS5odG1sCmluZGV4IGMyYzRhNDgyM2M1
OTdiMDJlNDA0ZThhOWQ2MzYyYjYwN2E0ZDcyZmUuLmM4YzgwOGUzYjYzNTRjZGRlNjgwNDRmZTEz
ZDUzNzA0NDlmNWQ0M2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2tleXBhdGgtZmV0Y2gta2V5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIva2V5cGF0aC1mZXRjaC1rZXkuaHRtbApAQCAtMSw5MiArMSwxMCBAQAotPCFET0NUWVBFIGh0
bWw+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVk
LmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24o
IlRlc3QgSW5kZXhlZERCIGtleVBhdGhzIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJl
bW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFt
ZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAg
IGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotCi0gICAg
dGVzdERhdGEgPSBbeyBuYW1lOiAic2ltcGxlIGlkZW50aWZpZXIiLAotICAgICAgICAgICAgICAg
ICAgdmFsdWU6IHtpZDoxMH0sCi0gICAgICAgICAgICAgICAgICBrZXlQYXRoOiAiaWQiLAotICAg
ICAgICAgICAgICAgICAga2V5OiAxMCB9LAotICAgICAgICAgICAgICAgIHsgbmFtZTogInNpbXBs
ZSBpZGVudGlmaWVycyIsCi0gICAgICAgICAgICAgICAgICB2YWx1ZToge2lkMToxMCwgaWQyOjIw
fSwKLSAgICAgICAgICAgICAgICAgIGtleVBhdGg6ICJpZDEiLAotICAgICAgICAgICAgICAgICAg
a2V5OiAxMCB9LAotICAgICAgICAgICAgICAgIHsgbmFtZTogIm5lc3RlZCBpZGVudGlmaWVycyIs
Ci0gICAgICAgICAgICAgICAgICB2YWx1ZToge291dGVyOntpbm5lcjoxMH19LAotICAgICAgICAg
ICAgICAgICAga2V5UGF0aDogIm91dGVyLmlubmVyIiwKLSAgICAgICAgICAgICAgICAgIGtleTog
MTAgfSwKLSAgICAgICAgICAgICAgICB7IG5hbWU6ICJuZXN0ZWQgaWRlbnRpZmllcnMgd2l0aCBk
aXN0cmFjdGlvbnMiLAotICAgICAgICAgICAgICAgICAgdmFsdWU6IHtvdXRlcjp7aW5uZXI6MTB9
LCBpbm5lcjp7b3V0ZXI6MjB9fSwKLSAgICAgICAgICAgICAgICAgIGtleVBhdGg6ICJvdXRlci5p
bm5lciIsCi0gICAgICAgICAgICAgICAgICBrZXk6IDEwIH0sCi0gICAgXTsKLSAgICBuZXh0VG9P
cGVuID0gMDsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0
U3RvcmU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19
Ci0KLWZ1bmN0aW9uIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQotewotICAgIGRlYnVn
KCIiKTsKLSAgICBkZWJ1ZygidGVzdGluZyAiICsgdGVzdERhdGFbbmV4dFRvT3Blbl0ubmFtZSk7
Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBl
dmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKHRlc3REYXRhW25l
eHRUb09wZW5dLm5hbWUsIHtrZXlQYXRoOiB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5rZXlQYXRofSk7
Iik7Ci0gICAgcmVzdWx0ID0gZXZhbEFuZExvZygicmVzdWx0ID0gb2JqZWN0U3RvcmUuYWRkKHRl
c3REYXRhW25leHRUb09wZW5dLnZhbHVlKTsiKTsKLSAgICByZXN1bHQub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBvcGVuQ3Vyc29yOwot
fQotCi1mdW5jdGlvbiBvcGVuQ3Vyc29yKCkKLXsKLSAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJy
ZXN1bHQgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7Ci0gICAgcmVzdWx0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXN1bHQub25zdWNjZXNzID0gY2hlY2tD
dXJzb3I7Ci19Ci0KLWZ1bmN0aW9uIGNoZWNrQ3Vyc29yKCkKLXsKLSAgICBjdXJzb3IgPSBldmFs
QW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgIGlmIChjdXJzb3Ip
IHsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAidGVzdERhdGFbbmV4dFRvT3Blbl0u
a2V5Iik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiY3Vyc29yIGlzIG51bGwi
KTsKLSAgICB9Ci0gICAgaWYgKCsrbmV4dFRvT3BlbiA8IHRlc3REYXRhLmxlbmd0aCkgewotICAg
ICAgICBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfQotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2tleXBhdGgtZmV0Y2gta2V5LmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIva2V5cmFuZ2UtcmVxdWlyZWQtYXJndW1lbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9rZXlyYW5nZS1yZXF1aXJlZC1hcmd1bWVudHMuaHRtbAppbmRleCA4
ODE1ZmY0NDQxZmU3NDUxNmIwNzhiMDQ3OWZjOTA3N2VmY2YxNjE4Li4wNWI5OTdhZjE0M2ZiYzhk
MTZmNWIwNjI1ZmEyYjZhNTE5MzQ2NmE0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9rZXlyYW5nZS1yZXF1aXJlZC1hcmd1bWVudHMuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlyYW5nZS1yZXF1aXJlZC1hcmd1bWVudHMuaHRtbApA
QCAtMSwzMSArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlw
dCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxi
b2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGtleXJhbmdlIHJl
cXVpcmVkIGFyZ3VtZW50cyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5k
b3JQcmVmaXhlcygpOwotCi0gICAgc2hvdWxkVGhyb3coIklEQktleVJhbmdlLm9ubHkoKTsiKTsK
LSAgICBzaG91bGRUaHJvdygiSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgpOyIpOwotICAgIHNob3Vs
ZFRocm93KCJJREJLZXlSYW5nZS51cHBlckJvdW5kKCk7Iik7Ci0gICAgc2hvdWxkVGhyb3coIklE
QktleVJhbmdlLmJvdW5kKDEpOyIpOwotICAgIHNob3VsZFRocm93KCJJREJLZXlSYW5nZS5ib3Vu
ZCgpOyIpOwotCi0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMva2V5cmFuZ2UtcmVxdWlyZWQtYXJndW1lbnRzLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cmFuZ2UuaHRtbCBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL2tleXJhbmdlLmh0bWwKaW5kZXggNjM4ZDVmMzhhNjc5NDIwNDc4ZjM4YzY4
OGFiYmJlZDE4NTk1NDA5NS4uOWZkYzFjYmVmMTM3YjQ2MGUwNWYxMTIzZmNlZjNlMmMwZjU3ODhm
NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cmFuZ2UuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlyYW5nZS5odG1sCkBAIC00
LDE5MiArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+
CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWRE
QidzIEtleVJhbmdlLiIpOwotCi1mdW5jdGlvbiBjaGVja1NpbmdsZUtleVJhbmdlKHZhbHVlKQot
ewotICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygiSURCS2V5UmFuZ2Uub25seSgiICsgdmFsdWUg
KyAiKSIpOwotICAgIHNob3VsZEJlKCJrZXlSYW5nZS5sb3dlciIsICIiICsgdmFsdWUpOwotICAg
IHNob3VsZEJlKCJrZXlSYW5nZS51cHBlciIsICIiICsgdmFsdWUpOwotICAgIHNob3VsZEJlRmFs
c2UoImtleVJhbmdlLmxvd2VyT3BlbiIpOwotICAgIHNob3VsZEJlRmFsc2UoImtleVJhbmdlLnVw
cGVyT3BlbiIpOwotfQotCi1mdW5jdGlvbiBjaGVja0xvd2VyQm91bmRLZXlSYW5nZSh2YWx1ZSwg
b3BlbikKLXsKLSAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coIklEQktleVJhbmdlLmxvd2VyQm91
bmQoIiArIHZhbHVlICsgIiwiICsgb3BlbiArICIpIik7Ci0gICAgc2hvdWxkQmUoImtleVJhbmdl
Lmxvd2VyIiwgIiIgKyB2YWx1ZSk7Ci0gICAgaWYgKG9wZW4gPT09IHVuZGVmaW5lZCkKLSAgICAg
ICAgb3BlbiA9IGZhbHNlOwotICAgIHNob3VsZEJlKCJrZXlSYW5nZS5sb3dlck9wZW4iLCAiIiAr
IG9wZW4pOwotICAgIHNob3VsZEJlTnVsbCgia2V5UmFuZ2UudXBwZXIiKTsKLSAgICBzaG91bGRC
ZUZhbHNlKCJrZXlSYW5nZS51cHBlck9wZW4iKTsKLX0KLQotZnVuY3Rpb24gY2hlY2tVcHBlckJv
dW5kS2V5UmFuZ2UodmFsdWUsIG9wZW4pCi17Ci0gICAga2V5UmFuZ2UgPSBldmFsQW5kTG9nKCJJ
REJLZXlSYW5nZS51cHBlckJvdW5kKCIgKyB2YWx1ZSArICIsIiArIG9wZW4gKyAiKSIpOwotICAg
IHNob3VsZEJlKCJrZXlSYW5nZS51cHBlciIsICIiICsgdmFsdWUpOwotICAgIGlmIChvcGVuID09
PSB1bmRlZmluZWQpCi0gICAgICAgIG9wZW4gPSBmYWxzZTsKLSAgICBzaG91bGRCZSgia2V5UmFu
Z2UudXBwZXJPcGVuIiwgIiIgKyBvcGVuKTsKLSAgICBzaG91bGRCZU51bGwoImtleVJhbmdlLmxv
d2VyIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgia2V5UmFuZ2UubG93ZXJPcGVuIik7Ci19Ci0KLWZ1
bmN0aW9uIGNoZWNrQm91bmRLZXlSYW5nZShsb3dlciwgdXBwZXIsIGxvd2VyT3BlbiwgdXBwZXJP
cGVuKQotewotICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygiSURCS2V5UmFuZ2UuYm91bmQoIiAr
IGxvd2VyICsgIiwiICsgdXBwZXIgKyAiLCAiICsgbG93ZXJPcGVuICsgIiwgIiArIHVwcGVyT3Bl
biArICIpIik7Ci0gICAgc2hvdWxkQmUoImtleVJhbmdlLmxvd2VyIiwgIiIgKyBsb3dlcik7Ci0g
ICAgc2hvdWxkQmUoImtleVJhbmdlLnVwcGVyIiwgIiIgKyB1cHBlcik7Ci0gICAgaWYgKGxvd2Vy
T3BlbiA9PT0gdW5kZWZpbmVkKQotICAgICAgICBsb3dlck9wZW4gPSBmYWxzZTsKLSAgICBpZiAo
dXBwZXJPcGVuID09PSB1bmRlZmluZWQpCi0gICAgICAgIHVwcGVyT3BlbiA9IGZhbHNlOwotICAg
IHNob3VsZEJlKCJrZXlSYW5nZS5sb3dlck9wZW4iLCAiIiArIGxvd2VyT3Blbik7Ci0gICAgc2hv
dWxkQmUoImtleVJhbmdlLnVwcGVyT3BlbiIsICIiICsgdXBwZXJPcGVuKTsKLX0KLQotZnVuY3Rp
b24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICBzaG91bGRCZUZh
bHNlKCInbG93ZXInIGluIElEQktleVJhbmdlIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiJ3VwcGVy
JyBpbiBJREJLZXlSYW5nZSIpOwotICAgIHNob3VsZEJlRmFsc2UoIidsb3dlck9wZW4nIGluIElE
QktleVJhbmdlIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiJ3VwcGVyT3BlbicgaW4gSURCS2V5UmFu
Z2UiKTsKLSAgICBzaG91bGRCZVRydWUoIidvbmx5JyBpbiBJREJLZXlSYW5nZSIpOwotICAgIHNo
b3VsZEJlVHJ1ZSgiJ2xvd2VyQm91bmQnIGluIElEQktleVJhbmdlIik7Ci0gICAgc2hvdWxkQmVU
cnVlKCIndXBwZXJCb3VuZCcgaW4gSURCS2V5UmFuZ2UiKTsKLSAgICBzaG91bGRCZVRydWUoIidi
b3VuZCcgaW4gSURCS2V5UmFuZ2UiKTsKLQotICAgIGRlYnVnKCIiKTsKLQotICAgIHZhciBpbnN0
YW5jZSA9IGV2YWxBbmRMb2coImluc3RhbmNlID0gSURCS2V5UmFuZ2Uub25seSgxKSIpOwotICAg
IHNob3VsZEJlVHJ1ZSgiJ2xvd2VyJyBpbiBpbnN0YW5jZSIpOwotICAgIHNob3VsZEJlVHJ1ZSgi
J3VwcGVyJyBpbiBpbnN0YW5jZSIpOwotICAgIHNob3VsZEJlVHJ1ZSgiJ2xvd2VyT3BlbicgaW4g
aW5zdGFuY2UiKTsKLSAgICBzaG91bGRCZVRydWUoIid1cHBlck9wZW4nIGluIGluc3RhbmNlIik7
Ci0gICAgc2hvdWxkQmVGYWxzZSgiJ29ubHknIGluIGluc3RhbmNlIik7Ci0gICAgc2hvdWxkQmVG
YWxzZSgiJ2xvd2VyQm91bmQnIGluIGluc3RhbmNlIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiJ3Vw
cGVyQm91bmQnIGluIGluc3RhbmNlIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiJ2JvdW5kJyBpbiBp
bnN0YW5jZSIpOwotCi0gICAgZGVidWcoIiIpOwotCi0gICAgY2hlY2tTaW5nbGVLZXlSYW5nZSgx
KTsKLSAgICBjaGVja1NpbmdsZUtleVJhbmdlKDMuMTQpOwotICAgIGNoZWNrU2luZ2xlS2V5UmFu
Z2UoIidhJyIpOwotCi0gICAgY2hlY2tMb3dlckJvdW5kS2V5UmFuZ2UoMTAsIHRydWUpOwotICAg
IGNoZWNrTG93ZXJCb3VuZEtleVJhbmdlKDExLCBmYWxzZSk7Ci0gICAgY2hlY2tMb3dlckJvdW5k
S2V5UmFuZ2UoMTIpOwotICAgIGNoZWNrTG93ZXJCb3VuZEtleVJhbmdlKDEwLjEsIHRydWUpOwot
ICAgIGNoZWNrTG93ZXJCb3VuZEtleVJhbmdlKDExLjIsIGZhbHNlKTsKLSAgICBjaGVja0xvd2Vy
Qm91bmRLZXlSYW5nZSgxMi4zKTsKLSAgICBjaGVja0xvd2VyQm91bmRLZXlSYW5nZSgiJ2FhJyIs
IHRydWUpOwotICAgIGNoZWNrTG93ZXJCb3VuZEtleVJhbmdlKCInYWInIiwgZmFsc2UpOwotICAg
IGNoZWNrTG93ZXJCb3VuZEtleVJhbmdlKCInYWMnIik7Ci0KLSAgICBjaGVja1VwcGVyQm91bmRL
ZXlSYW5nZSgyMCwgdHJ1ZSk7Ci0gICAgY2hlY2tVcHBlckJvdW5kS2V5UmFuZ2UoMjEsIGZhbHNl
KTsKLSAgICBjaGVja1VwcGVyQm91bmRLZXlSYW5nZSgyMik7Ci0gICAgY2hlY2tVcHBlckJvdW5k
S2V5UmFuZ2UoMjAuMiwgdHJ1ZSk7Ci0gICAgY2hlY2tVcHBlckJvdW5kS2V5UmFuZ2UoMjEuMywg
ZmFsc2UpOwotICAgIGNoZWNrVXBwZXJCb3VuZEtleVJhbmdlKDIyLjQpOwotICAgIGNoZWNrVXBw
ZXJCb3VuZEtleVJhbmdlKCInYmEnIiwgdHJ1ZSk7Ci0gICAgY2hlY2tVcHBlckJvdW5kS2V5UmFu
Z2UoIidiYiciLCBmYWxzZSk7Ci0gICAgY2hlY2tVcHBlckJvdW5kS2V5UmFuZ2UoIidiYyciKTsK
LQotICAgIGNoZWNrQm91bmRLZXlSYW5nZSgzMCwgNDApOwotICAgIGNoZWNrQm91bmRLZXlSYW5n
ZSgzMSwgNDEsIGZhbHNlLCBmYWxzZSk7Ci0gICAgY2hlY2tCb3VuZEtleVJhbmdlKDMyLCA0Miwg
ZmFsc2UsIHRydWUpOwotICAgIGNoZWNrQm91bmRLZXlSYW5nZSgzMywgNDMsIHRydWUsIGZhbHNl
KTsKLSAgICBjaGVja0JvdW5kS2V5UmFuZ2UoMzQsIDQ0LCB0cnVlLCB0cnVlKTsKLQotICAgIGNo
ZWNrQm91bmRLZXlSYW5nZSgzMC4xLCA0MC4yKTsKLSAgICBjaGVja0JvdW5kS2V5UmFuZ2UoMzEu
MywgNDEuNCwgZmFsc2UsIGZhbHNlKTsKLSAgICBjaGVja0JvdW5kS2V5UmFuZ2UoMzIuNSwgNDIu
NiwgZmFsc2UsIHRydWUpOwotICAgIGNoZWNrQm91bmRLZXlSYW5nZSgzMy43LCA0My44LCB0cnVl
LCBmYWxzZSk7Ci0gICAgY2hlY2tCb3VuZEtleVJhbmdlKDM0LjksIDQ0LjAsIHRydWUsIHRydWUp
OwotCi0gICAgY2hlY2tCb3VuZEtleVJhbmdlKCInYWFhJyIsICInYWJhJyIsIGZhbHNlLCBmYWxz
ZSk7Ci0gICAgY2hlY2tCb3VuZEtleVJhbmdlKCInYWFiJyIsICInYWJiJyIpOwotICAgIGNoZWNr
Qm91bmRLZXlSYW5nZSgiJ2FhYyciLCAiJ2FiYyciLCBmYWxzZSwgZmFsc2UpOwotICAgIGNoZWNr
Qm91bmRLZXlSYW5nZSgiJ2FhZCciLCAiJ2FiZCciLCBmYWxzZSwgdHJ1ZSk7Ci0gICAgY2hlY2tC
b3VuZEtleVJhbmdlKCInYWFlJyIsICInYWJlJyIsIHRydWUsIGZhbHNlKTsKLSAgICBjaGVja0Jv
dW5kS2V5UmFuZ2UoIidhYWYnIiwgIidhYmYnIiwgdHJ1ZSwgdHJ1ZSk7Ci0KLSAgICB0cnkgewot
ICAgICAgICBkZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIG9ubHkoe30pIik7Ci0g
ICAgICAgIElEQktleVJhbmdlLm9ubHkoe30pOwotICAgICAgICB0ZXN0RmFpbGVkKCJObyBleGNl
cHRpb24gdGhyb3duIik7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICB0ZXN0UGFzc2VkKCJD
YXVnaHQgZXhjZXB0aW9uOiAiICsgZS50b1N0cmluZygpKTsKLSAgICB9Ci0KLSAgICB0cnkgewot
ICAgICAgICBkZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIHVwcGVyQm91bmQoe30p
Iik7Ci0gICAgICAgIElEQktleVJhbmdlLnVwcGVyQm91bmQoe30pOwotICAgICAgICB0ZXN0RmFp
bGVkKCJObyBleGNlcHRpb24gdGhyb3duIik7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICB0
ZXN0UGFzc2VkKCJDYXVnaHQgZXhjZXB0aW9uOiAiICsgZS50b1N0cmluZygpKTsKLSAgICB9Ci0g
Ci0gICAgdHJ5IHsKLSAgICAgICAgZGVidWcoIlBhc3NpbmcgYW4gaW52YWxpZCBrZXkgaW50byBs
b3dlckJvdW5kKHt9KSIpOwotICAgICAgICBJREJLZXlSYW5nZS5sb3dlckJvdW5kKHt9KTsKLSAg
ICAgICAgdGVzdEZhaWxlZCgiTm8gZXhjZXB0aW9uIHRocm93biIpOwotICAgIH0gY2F0Y2ggKGUp
IHsKLSAgICAgICAgdGVzdFBhc3NlZCgiQ2F1Z2h0IGV4Y2VwdGlvbjogIiArIGUudG9TdHJpbmco
KSk7Ci0gICAgfQotCi0gICAgdHJ5IHsKLSAgICAgICAgZGVidWcoIlBhc3NpbmcgYW4gaW52YWxp
ZCBrZXkgaW50byBib3VuZChudWxsLCB7fSkiKTsKLSAgICAgICAgSURCS2V5UmFuZ2UuYm91bmQo
bnVsbCwge30pOwotICAgICAgICB0ZXN0RmFpbGVkKCJObyBleGNlcHRpb24gdGhyb3duIik7Ci0g
ICAgfSBjYXRjaCAoZSkgewotICAgICAgICB0ZXN0UGFzc2VkKCJDYXVnaHQgZXhjZXB0aW9uOiAi
ICsgZS50b1N0cmluZygpKTsKLSAgICB9Ci0KLSAgICB0cnkgewotICAgICAgICBkZWJ1ZygiUGFz
c2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIGJvdW5kKHt9LG51bGwpIik7Ci0gICAgICAgIElEQktl
eVJhbmdlLmJvdW5kKHt9LCBudWxsKTsKLSAgICAgICAgdGVzdEZhaWxlZCgiTm8gZXhjZXB0aW9u
IHRocm93biIpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgdGVzdFBhc3NlZCgiQ2F1Z2h0
IGV4Y2VwdGlvbjogIiArIGUudG9TdHJpbmcoKSk7Ci0gICAgfQotCi0gICAgdHJ5IHsKLSAgICAg
ICAgZGVidWcoIlBhc3NpbmcgYW4gaW52YWxpZCBrZXkgaW50byBib3VuZCh7fSwge30pIik7Ci0g
ICAgICAgIElEQktleVJhbmdlLmJvdW5kKHt9LCB7fSk7Ci0gICAgICAgIHRlc3RGYWlsZWQoIk5v
IGV4Y2VwdGlvbiB0aHJvd24iKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIHRlc3RQYXNz
ZWQoIkNhdWdodCBleGNlcHRpb246ICIgKyBlLnRvU3RyaW5nKCkpOwotICAgIH0KLQotICAgIGRl
YnVnKCJMb3dlciBrZXkgZ3JlYXRlciB0aGFuIGhpZ2hlciBrZXksIGJvdW5kKDQsIDMpIik7Ci0g
ICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiSURCS2V5UmFuZ2UuYm91bmQoNCwgMykiLCAiSURC
RGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLQotICAgIGRlYnVnKCJFcXVhbCBrZXlzLCBl
aXRoZXIgb2YgdGhlIGJvdW5kcyBpcyBvcGVuLCBib3VuZCg0LCA0LCB0cnVlLCBmYWxzZSkiKTsK
LSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJJREJLZXlSYW5nZS5ib3VuZCg0LCA0LCB0cnVl
LCBmYWxzZSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLQotICAgIGRlYnVn
KCJFcXVhbCBrZXlzLCBlaXRoZXIgb2YgdGhlIGJvdW5kcyBpcyBvcGVuLCBib3VuZCg0LCA0LCBm
YWxzZSwgdHJ1ZSkiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJJREJLZXlSYW5nZS5i
b3VuZCg0LCA0LCBmYWxzZSwgdHJ1ZSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIi
KTsKLQotICAgIGRlYnVnKCJFcXVhbCBrZXlzLCBlaXRoZXIgb2YgdGhlIGJvdW5kcyBpcyBvcGVu
LCBib3VuZCg0LCA0LCB0cnVlLCB0cnVlKSIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24o
IklEQktleVJhbmdlLmJvdW5kKDQsIDQsIHRydWUsIHRydWUpIiwgIklEQkRhdGFiYXNlRXhjZXB0
aW9uLkRBVEFfRVJSIik7Ci0KLSAgICBkZWJ1ZygiRXF1YWwga2V5cywgbm9uZSBvZiB0aGUgYm91
bmRzIGlzIG9wZW4sIGJvdW5kKDQsIDQsIGZhbHNlLCBmYWxzZSkiKTsKLSAgICBJREJLZXlSYW5n
ZS5ib3VuZCg0LCA0LCBmYWxzZSwgZmFsc2UpOwotfQotCi10ZXN0KCk7Ci0KLWZpbmlzaEpTVGVz
dCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMva2V5cmFuZ2UuanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9saXN0LW9yZGVyaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9saXN0LW9yZGVyaW5nLmh0bWwKaW5kZXggMDc0MTJmNWI1M2NjNDE2ZTA5
OWRjMjJlOTkzMWVmMThmNWY4MDNmZS4uYjlkOWIzNTkxOTUzNGI4NmUwNWRmZjk0MmZmNmY4NWUz
MzYzYTU1OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbGlzdC1v
cmRlcmluZy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2xpc3Qtb3Jk
ZXJpbmcuaHRtbApAQCAtNCw5MiArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJl
ZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxpbnB1dCB0eXBlPSJmaWxlIiBpZD0i
ZmlsZUlucHV0IiBtdWx0aXBsZT48L2lucHV0PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRl
c3Qgc3RyaW5nIGxpc3Qgb3JkZXJpbmcgaW4gSW5kZXhlZERCLiIpOwotCi12YXIgZXhwZWN0ZWRf
b3JkZXIgPSBbCi0gICIiLAotICAiXHgwMCIsIC8vICdOVUxMJyAoVSswMDAwKQotICAiMCIsCi0g
ICIxIiwKLSAgIkEiLAotICAiQiIsCi0gICJhIiwKLSAgImIiLAotICAiXHg3RiIsIC8vICdERUxF
VEUnIChVKzAwN0YpCi0gICJceEMwIiwgLy8gJ0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBH
UkFWRScgKFUrMDBDMCkKLSAgIlx4QzEiLCAvLyAnTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRI
IEFDVVRFJyAoVSswMEMxKQotICAiXHhFMCIsIC8vICdMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRI
IEdSQVZFJyAoVSswMEUwKQotICAiXHhFMSIsIC8vICdMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRI
IEFDVVRFJyAoVSswMEUxKQotICAiXHhGRiIsIC8vICdMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRI
IERJQUVSRVNJUycgKFUrMDBGRikKLSAgIlx1MDEwMCIsIC8vICdMQVRJTiBDQVBJVEFMIExFVFRF
UiBBIFdJVEggTUFDUk9OJyAoVSswMTAwKQotICAiXHUxMDAwIiwgLy8gJ01ZQU5NQVIgTEVUVEVS
IEtBJyAoVSsxMDAwKQotICAiXHVEODM0XHVERDFFIiwgLy8gJ01VU0lDQUwgU1lNQk9MIEctQ0xF
RicgKFUrMUQxMUUpLCBVVEYtMTYgc3Vycm9nYXRlIHBhaXJzCi0gICJcdUZGRkQiIC8vICdSRVBM
QUNFTUVOVCBDSEFSQUNURVInIChVK0ZGRkQpCi1dOwotdmFyIGksIHRtcCwgcGVybXV0ZWRfb3Jk
ZXIgPSBleHBlY3RlZF9vcmRlci5zbGljZSgpOyBwZXJtdXRlZF9vcmRlci5yZXZlcnNlKCk7Ci1m
b3IgKGkgPSAwOyBpIDwgcGVybXV0ZWRfb3JkZXIubGVuZ3RoIC0gMjsgaSArPSAyKSB7Ci0gICAg
dG1wID0gcGVybXV0ZWRfb3JkZXJbaV07Ci0gICAgcGVybXV0ZWRfb3JkZXJbaV0gPSBwZXJtdXRl
ZF9vcmRlcltpICsgMV07Ci0gICAgcGVybXV0ZWRfb3JkZXJbaSArIDFdID0gdG1wOwotfQotCi1m
dW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIGRlYnVn
KCJjaGVjayB0aGF0IHRoZSBleHBlY3RlZCBvcmRlciBpcyB0aGUgY2Fub25pY2FsIEpTIHNvcnQg
b3JkZXI6Iik7Ci0gICAgZXZhbEFuZExvZygic29ydGVkX29yZGVyID0gZXhwZWN0ZWRfb3JkZXIu
c2xpY2UoKTsgc29ydGVkX29yZGVyLnNvcnQoKSIpOwotICAgIHNob3VsZEJlVHJ1ZSgiYXJlQXJy
YXlzRXF1YWwoc29ydGVkX29yZGVyLCBleHBlY3RlZF9vcmRlcikiKTsKLSAgICB0ZXN0U3RvcmVz
QW5kSW5kZXhlcygpOwotfQotCi0KLQotZnVuY3Rpb24gdGVzdFN0b3Jlc0FuZEluZGV4ZXMoKQot
ewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygidGVzdFN0b3Jlc0FuZEluZGV4ZXMoKToiKTsK
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCdsaXN0
LW9yZGVyaW5nJykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdsaXN0LW9yZGVyaW5nJykiKTsKLSAg
ICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgZXZhbEFuZExv
ZygiZGIgPSByZXF1ZXN0LnJlc3VsdCIpOwotICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJkYi52ZXJzaW9uIiwgIiIpOwotICAgICAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1
bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICB0cmFucyA9IHJlcXVlc3QucmVzdWx0OwotCi0g
ICAgICAgICAgICAgICAgZGVidWcoIiIpOwotICAgICAgICAgICAgICAgIGRlYnVnKCJPYmplY3Qg
c3RvcmVzOiIpOwotICAgICAgICAgICAgICAgIHBlcm11dGVkX29yZGVyLmZvckVhY2goZnVuY3Rp
b24gKG5hbWUpIHsKLSAgICAgICAgICAgICAgICAgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoIiArIEpTT04uc3RyaW5naWZ5KG5hbWUpICsiKSIpOwotICAgICAgICAgICAgICAg
IH0pOwotCi0gICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJhcmVBcnJheXNFcXVhbChkYi5v
YmplY3RTdG9yZU5hbWVzLCBleHBlY3RlZF9vcmRlcikiKTsKLQotICAgICAgICAgICAgICAgIGRl
YnVnKCIiKTsKLSAgICAgICAgICAgICAgICBkZWJ1ZygiSW5kZXhlczoiKTsKLSAgICAgICAgICAg
ICAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0
b3JlJykiKTsKLSAgICAgICAgICAgICAgICBwZXJtdXRlZF9vcmRlci5mb3JFYWNoKGZ1bmN0aW9u
IChuYW1lKSB7Ci0gICAgICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUlu
ZGV4KCIgKyBKU09OLnN0cmluZ2lmeShuYW1lKSArIiwgJ2tleVBhdGgnKSIpOwotICAgICAgICAg
ICAgICAgIH0pOwotCi0gICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJhcmVBcnJheXNFcXVh
bChzdG9yZS5pbmRleE5hbWVzLCBleHBlY3RlZF9vcmRlcikiKTsKLQotICAgICAgICAgICAgICAg
IHRyYW5zLm9uY29tcGxldGUgPSBmaW5pc2hKU1Rlc3Q7Ci0gICAgICAgICAgICB9OwotICAgICAg
ICB9OwotICAgIH07Ci19Ci0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2xpc3Qtb3JkZXJpbmcuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2Fk
ZC10d2ljZS1mYWlsdXJlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL2FkZC10d2ljZS1mYWlsdXJlLmh0bWwKaW5kZXggY2RkMjEyYmMzMWI1ZWM0ZTNkNDZmYTMz
OWI3OGU4Y2EyNzA5YWRhNy4uY2MzOTEzZGFmYjJiOGQ1OTFhMDUyYjhmNTc0ODAzYWY5ZTEwNTUy
OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9hZGQt
dHdpY2UtZmFpbHVyZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
emlsbGEvYWRkLXR3aWNlLWZhaWx1cmUuaHRtbApAQCAtMSw3MCArMSwxMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96
aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfYWRkX3R3aWNlX2ZhaWx1cmUu
aHRtbAotICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Ci0gICAgIiBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KLSAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgotLS0+CiA8aHRtbD4KIDxoZWFkPgog
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4K
IDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERC
IGJlaGF2aW9yIGFkZGluZyB0aGUgc2FtZSBwcm9wZXJ0eSB0d2ljZSIpOwotCi1mdW5jdGlvbiB0
ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYu
bG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0
aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5T
dWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9u
KCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNs
ZWFuRGF0YWJhc2UoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBv
YmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ2ZvbycpOyIpOwotICAgIGtleSA9IGV2YWxBbmRMb2coImtleSA9IDEwIik7Ci0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoe30sIGtleSk7Iik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRGaXJzdFN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGFkZEZpcnN0
U3VjY2VzcygpCi17Ci0gICAgc2hvdWxkQmUoInJlcXVlc3QucmVzdWx0IiwgImtleSIpOwotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKHt9LCBrZXkp
OyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSBhZGRTZWNvbmRFeHBlY3RlZEVycm9yOwotfQotCi1mdW5j
dGlvbiBhZGRTZWNvbmRFeHBlY3RlZEVycm9yKCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFy
Z2V0LmVycm9yQ29kZSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5DT05TVFJBSU5UX0VSUiIpOwot
ICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2FkZC10d2ljZS1mYWlsdXJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgogPC9ib2R5PgogPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL2F1dG9pbmNyZW1lbnQtaW5kZXhlcy5odG1sIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9hdXRvaW5jcmVtZW50LWluZGV4ZXMuaHRtbAppbmRl
eCAwOWZmZWZhZGZjZmNjZjdhMWQ2NTg3NjFkODViNTgzOWU4MWJmMTcwLi5kNzI5ZGU4N2NmODg5
MmZmOTdhMTVmZDIwYTVkYTYzOWJkYzMzZTQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL2F1dG9pbmNyZW1lbnQtaW5kZXhlcy5odG1sCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvYXV0b2luY3JlbWVudC1pbmRleGVz
Lmh0bWwKQEAgLTEsMTAwICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KLTwhLS0KLSAgb3JpZ2lu
YWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5k
ZXhlZERCL3Rlc3QvdGVzdF9hdXRvSW5jcmVtZW50X2luZGV4ZXMuaHRtbD9mb3JjZT0xCi0gIGxp
Y2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgotICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgog
PGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgaW5kZXhlcyBh
Z2FpbnN0IGF1dG9pbmNyZW1lbnRpbmcga2V5cyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAg
ICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0
aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsK
LSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldHVwT2JqZWN0U3RvcmU7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldHVwT2JqZWN0
U3RvcmUoKQotewotICAgIHRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKLSAgICBkZWxldGVB
bGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7IGtleVBhdGg6ICdpZCcsIGF1
dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7Ci0gICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuY3Jl
YXRlSW5kZXgoJ2ZpcnN0JywgJ2ZpcnN0Jyk7Iik7Ci0gICAgZXZhbEFuZExvZygib2JqZWN0U3Rv
cmUuY3JlYXRlSW5kZXgoJ3NlY29uZCcsICdzZWNvbmQnKTsiKTsKLSAgICBldmFsQW5kTG9nKCJv
YmplY3RTdG9yZS5jcmVhdGVJbmRleCgndGhpcmQnLCAndGhpcmQnKTsiKTsKLSAgICBkYXRhID0g
ZXZhbEFuZExvZygiZGF0YSA9IHsgZmlyc3Q6ICdmb28nLCBzZWNvbmQ6ICdmb28nLCB0aGlyZDog
J2ZvbycgfTsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0
b3JlLmFkZChkYXRhKTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldHVwSW5kZXhlczsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVu
Y3Rpb24gc2V0dXBJbmRleGVzKCkKLXsKLSAgICBrZXkgPSBldmFsQW5kTG9nKCJrZXkgPSBldmVu
dC50YXJnZXQucmVzdWx0OyIpOwotICAgIHNob3VsZEJlRmFsc2UoImtleSA9PSBudWxsIik7Ci0g
ICAgdHJhbnMub25jb21wbGV0ZSA9IHNldFZlcnNpb25Db21wbGV0ZTsKLX0KLQotZnVuY3Rpb24g
c2V0VmVyc2lvbkNvbXBsZXRlKCkKLXsKLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9i
amVjdFN0b3JlID0gZGIudHJhbnNhY3Rpb24oJ2ZvbycpLm9iamVjdFN0b3JlKCdmb28nKTsiKTsK
LSAgICBmaXJzdCA9IGV2YWxBbmRMb2coImZpcnN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ2ZpcnN0
Jyk7Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBmaXJzdC5nZXQoJ2Zv
bycpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2hlY2tGaXJzdEluZGV4QW5kUHJlcGFy
ZVNlY29uZDsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LX0KLQotZnVuY3Rpb24gY2hlY2tGaXJzdEluZGV4QW5kUHJlcGFyZVNlY29uZCgpCi17Ci0gICAg
c2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQuaWQiLCAia2V5Iik7Ci0gICAgc2Vjb25kID0g
ZXZhbEFuZExvZygic2Vjb25kID0gb2JqZWN0U3RvcmUuaW5kZXgoJ3NlY29uZCcpOyIpOwotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gc2Vjb25kLmdldCgnZm9vJyk7Iik7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjaGVja1NlY29uZEluZGV4QW5kUHJlcGFyZVRoaXJkOwot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5j
dGlvbiBjaGVja1NlY29uZEluZGV4QW5kUHJlcGFyZVRoaXJkKCkKLXsKLSAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0LnJlc3VsdC5pZCIsICJrZXkiKTsKLSAgICB0aGlyZCA9IGV2YWxBbmRMb2co
InRoaXJkID0gb2JqZWN0U3RvcmUuaW5kZXgoJ3RoaXJkJyk7Iik7Ci0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSB0aGlyZC5nZXQoJ2ZvbycpOyIpOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gY2hlY2tUaGlyZEluZGV4OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjaGVja1RoaXJkSW5kZXgoKQotewotICAg
IHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LmlkIiwgImtleSIpOwotICAgIGZpbmlzaEpT
VGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL2F1dG9pbmNyZW1lbnQtaW5kZXhlcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9k
eT4KIDwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW96aWxsYS9iYWQta2V5cGF0aC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW96aWxsYS9iYWQta2V5cGF0aC5odG1sCmluZGV4IDExZWUwNmQ0MWNlYjZiY2M4ZWZiNjdmZmUw
MjY4NTkxZWZkN2NhZjYuLjBhZTQ5MjEwOTBlM2RlZDViN2FiODgxMzUyMDNlZTE4Y2IxYzM5NjUg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvYmFkLWtl
eXBhdGguaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2Jh
ZC1rZXlwYXRoLmh0bWwKQEAgLTEsNjEgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLQot
ICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNl
L2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2JhZF9rZXlwYXRoLmh0bWwKLSAgbGljZW5zZSBvZiBv
cmlnaW5hbCB0ZXN0OgotICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCi0gICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvICIKLS0tPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxz
Y3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBhZGRpbmcgcHJvcGVydHkgd2l0
aCBpbnZhbGlkIGtleXBhdGgiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVu
ZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAg
IGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIgPSBl
dmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKLXsKLSAgICBk
ZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7IGtleVBhdGg6ICdr
ZXlQYXRoJyB9KTsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVj
dFN0b3JlLmFkZCh7IGtleVBhdGg6ICdmb28nIH0pOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gYWRkRmlyc3RTdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBhZGRGaXJzdFN1Y2Nlc3MoKQotewotICAgIGV2YWxB
bmRFeHBlY3RFeGNlcHRpb24oInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoe30pOyIsICJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0K
LXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JhZC1rZXlwYXRo
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgotCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NsZWFyLmh0bWwgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NsZWFyLmh0bWwKaW5kZXggMjc5MzI4
NTRmZTYyODkwMzU0Y2VlMGQ1Yjg0ZDk4ZjliY2YzYjcwNC4uNjBkOTNjZDA0YjY2Nzg3NDQyMzhh
ZWJmYjdmNDUzOWI5NDFmNmQyNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9jbGVhci5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvY2xlYXIuaHRtbApAQCAtMSw3MSArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIu
MC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfY2xlYXIuaHRtbAotICBsaWNlbnNlIG9m
IG9yaWdpbmFsIHRlc3Q6Ci0gICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KLSAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8gIgotLS0+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5Pgot
PHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgY2xlYXJpbmcgYW4gb2Jq
ZWN0IHN0b3JlIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZp
eGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlw
dGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5k
ZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExv
ZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gY2xlYW5EYXRhYmFzZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCi17Ci0gICAgZGVsZXRlQWxs
T2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0
U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJywgeyBhdXRvSW5jcmVtZW50OiB0cnVl
IH0pOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
YWRkKHt9KTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLSAgICBldmVudC50YXJnZXQucmVzdWx0Lm9uY29tcGxldGUgPSBjbGVhcjsKLX0KLQotZnVu
Y3Rpb24gY2xlYXIoKQotewotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0
aW9uKCdmb28nKS5vYmplY3RTdG9yZSgnZm9vJykuY2xlYXIoKTsiLCAiSURCRGF0YWJhc2VFeGNl
cHRpb24uUkVBRF9PTkxZX0VSUiIpOwotICAgIGV2YWxBbmRMb2coImRiLnRyYW5zYWN0aW9uKCdm
b28nLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKS5vYmplY3RTdG9yZSgnZm9vJykuY2xlYXIo
KTsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnRyYW5zYWN0aW9u
KCdmb28nKS5vYmplY3RTdG9yZSgnZm9vJykub3BlbkN1cnNvcigpOyIpOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gYXJlV2VDbGVhcllldDsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYXJlV2VDbGVhcllldCgpCi17Ci0gICAg
Y3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gcmVxdWVzdC5yZXN1bHQ7Iik7Ci0gICAgc2hv
dWxkQmUoImN1cnNvciIsICJudWxsIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVz
dCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY2xlYXIuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3JlYXRlLWluZGV4LXVuaXF1ZS5odG1sIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtaW5kZXgtdW5pcXVl
Lmh0bWwKaW5kZXggMGU2NDExM2RiNWFkYzRmZmZjNDNiNDRkNjFjNTQ0NmMwZTljYWNhMS4uYzE5
YTJmNTVlMzMzNWQzMzI5MDYxMTI2ZGY4ZGE4NmYzMWVmYjk2ZCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtaW5kZXgtdW5pcXVlLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtaW5kZXgt
dW5pcXVlLmh0bWwKQEAgLTEsNzIgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLQotICBv
cmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2Rv
bS9pbmRleGVkREIvdGVzdC90ZXN0X2NyZWF0ZV9pbmRleC5odG1sCi0gIGxpY2Vuc2Ugb2Ygb3Jp
Z2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgotICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2Ny
aXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBjcmVhdGluZyB1bmlxdWUgaW5k
ZXggYW5kIHVwZGF0aW5nIGluZGV4TmFtZXMiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAg
cmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhu
YW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0g
ICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRWZXJpZnlJbmRleDsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY3JlYXRlQW5k
VmVyaWZ5SW5kZXgoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBv
YmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ2EnLCB7IGtleVBhdGg6ICdpZCcsIGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7Ci0KLSAg
ICBpbmRleE5hbWUgPSAiMSI7Ci0gICAgaW5kZXhLZXlQYXRoID0gInVuaXF1ZV92YWx1ZSI7Ci0g
ICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KGlu
ZGV4TmFtZSwgaW5kZXhLZXlQYXRoLCB7IHVuaXF1ZTogdHJ1ZSB9KTsiLCAiSURCRGF0YWJhc2VF
eGNlcHRpb24uQ09OU1RSQUlOVF9FUlIiKTsKLSAgICBzaG91bGRCZSgiaW5kZXgubmFtZSIsICJp
bmRleE5hbWUiKTsKLSAgICBzaG91bGRCZSgiaW5kZXgua2V5UGF0aCIsICJpbmRleEtleVBhdGgi
KTsKLSAgICBzaG91bGRCZSgiaW5kZXgudW5pcXVlIiwgInRydWUiKTsKLSAgICBzaG91bGRCZSgi
b2JqZWN0U3RvcmUuaW5kZXhOYW1lcy5sZW5ndGgiLCAiMSIpOwotCi0gICAgZm91bmROZXdseUNy
ZWF0ZWRJbmRleCA9IGZhbHNlOwotICAgIGZvciAodmFyIGsgPSAwOyBrIDwgb2JqZWN0U3RvcmUu
aW5kZXhOYW1lcy5sZW5ndGg7IGsrKykgewotICAgICAgICBpZiAob2JqZWN0U3RvcmUuaW5kZXhO
YW1lcy5pdGVtKGspID09IGluZGV4TmFtZSkgewotICAgICAgICAgICAgZm91bmROZXdseUNyZWF0
ZWRJbmRleCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgc2hvdWxkQmVUcnVlKCJmb3Vu
ZE5ld2x5Q3JlYXRlZEluZGV4Iik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2Fj
dGlvbi5kYiIsICJkYiIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24u
cmVhZHlTdGF0ZSIsICJJREJUcmFuc2FjdGlvbi5MT0FESU5HIik7Ci0gICAgc2hvdWxkQmUoImV2
ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2RlIiwgIklEQlRyYW5zYWN0aW9uLlZFUlNJT05fQ0hB
TkdFIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY3JlYXRlLWluZGV4LXVuaXF1ZS5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtaW5kZXgtd2l0aC1pbnRlZ2VyLWtleXMu
aHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3JlYXRlLWluZGV4
LXdpdGgtaW50ZWdlci1rZXlzLmh0bWwKaW5kZXggYmRkOGNiYWI2YTg2NDA5YzA3NDNiMmUxNjcy
ZTRmODZkMmM5NGEzNS4uNzcxYjNkOGVjMWM1ZDFkNTQ4YzY5ODYyYjdiMTE3ZjUxYjhiNWU4NSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUt
aW5kZXgtd2l0aC1pbnRlZ2VyLWtleXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1pbmRleC13aXRoLWludGVnZXIta2V5cy5odG1sCkBAIC0x
LDY3ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KLTwhLS0KLSAgb3JpZ2luYWwgdGVzdDogaHR0
cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3Qv
dGVzdF9jcmVhdGVfaW5kZXhfd2l0aF9pbnRlZ2VyX2tleXMuaHRtbD9mb3JjZT0xCi0gIGxpY2Vu
c2Ugb2Ygb3JpZ2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgotICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJv
ZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBjcmVhdGluZyBp
bmRleCB3aXRoIGludGVnZXIga2V5cyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1v
dmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7
Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBk
YiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IHNldHVwT2JqZWN0U3RvcmVBbmRDcmVhdGVJbmRleDsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc2V0
dXBPYmplY3RTdG9yZUFuZENyZWF0ZUluZGV4KCkKLXsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9y
ZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7IGtleVBhdGg6ICdpZCcgfSk7Iik7Ci0gICAgZGF0
YSA9IGV2YWxBbmRMb2coImRhdGEgPSB7IGlkOiAxNiwgbnVtOiA0MiB9OyIpOwotICAgIGV2YWxB
bmRMb2coIm9iamVjdFN0b3JlLmFkZChkYXRhKTsiKTsKLSAgICBpbmRleCA9IGV2YWxBbmRMb2co
ImluZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ2ZvbycsICdudW0nKTsiKTsKLSAgICBy
ZXN1bHQgPSBldmFsQW5kTG9nKCJyZXN1bHQgPSBpbmRleC5vcGVuS2V5Q3Vyc29yKCk7Iik7Ci0g
ICAgcmVzdWx0Lm9uc3VjY2VzcyA9IHZlcmlmeUtleUN1cnNvcjsKLSAgICByZXN1bHQub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiB2ZXJpZnlLZXlDdXJz
b3IoKQotewotICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQ7Iik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiY3Vyc29yID09IG51bGwiKTsKLSAgICBzaG91
bGRCZSgiY3Vyc29yLmtleSIsICJkYXRhLm51bSIpOwotICAgIHNob3VsZEJlKCJjdXJzb3IucHJp
bWFyeUtleSIsICJkYXRhLmlkIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgp
OwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY3JlYXRlLWluZGV4LXdpdGgt
aW50ZWdlci1rZXlzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgot
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0
ZS1vYmplY3RzdG9yZS1iYXNpY3MuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vemlsbGEvY3JlYXRlLW9iamVjdHN0b3JlLWJhc2ljcy5odG1sCmluZGV4IDAwYjg0NDMzYmYy
ZDczYmZhOTRlZTQ5NmZiOGFmMTc2MzFhMmZkZmQuLmYzZDE0MTEzODgzZTMyOWE2MjNlMjg2ZGQ5
YzViYzE0ZDJjMGIyMjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vemlsbGEvY3JlYXRlLW9iamVjdHN0b3JlLWJhc2ljcy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3JlYXRlLW9iamVjdHN0b3JlLWJhc2ljcy5odG1s
CkBAIC0xLDc3ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KLTwhLS0KLSAgb3JpZ2luYWwgdGVz
dDogaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERC
L3Rlc3QvdGVzdF9jcmVhdGVfb2JqZWN0U3RvcmUuaHRtbAotICBsaWNlbnNlIG9mIG9yaWdpbmFs
IHRlc3Q6Ci0gICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KLSAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8gIgotLS0+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4K
LQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgY3JlYXRpbmcgb2JqZWN0IHN0b3JlIGFu
ZCB1cGRhdGluZyBwcm9wZXJ0aWVzIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92
ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsK
LSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRi
ID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCi17Ci0g
ICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9iamVjdFN0b3JlSW5mbyA9IFsK
LSAgICAgICAgeyBuYW1lOiAiMSIsIG9wdGlvbnM6IHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9IH0s
Ci0gICAgICAgIHsgbmFtZTogIjIiLCBvcHRpb25zOiB7IGF1dG9JbmNyZW1lbnQ6IGZhbHNlIH0g
fSwKLSAgICAgICAgeyBuYW1lOiAiMyIsIG9wdGlvbnM6IHsga2V5UGF0aDogIiIgfSB9LAotICAg
ICAgICB7IG5hbWU6ICI0Iiwgb3B0aW9uczogeyBrZXlQYXRoOiAiIiwgYXV0b0luY3JlbWVudDog
dHJ1ZSB9IH0sCi0gICAgICAgIHsgbmFtZTogIjUiLCBvcHRpb25zOiB7IGtleVBhdGg6ICIiLCBh
dXRvSW5jcmVtZW50OiBmYWxzZSB9IH0sCi0gICAgICAgIHsgbmFtZTogIjYiLCBvcHRpb25zOiB7
IGtleVBhdGg6ICJmb28iIH0gfSwKLSAgICAgICAgeyBuYW1lOiAiNyIsIG9wdGlvbnM6IHsga2V5
UGF0aDogImZvbyIsIGF1dG9JbmNyZW1lbnQ6IGZhbHNlIH0gfSwKLSAgICAgICAgeyBuYW1lOiAi
OCIsIG9wdGlvbnM6IHsga2V5UGF0aDogImZvbyIsIGF1dG9JbmNyZW1lbnQ6IHRydWUgfSB9Ci0g
ICAgXTsKLQotICAgIGZvciAodmFyIGluZGV4IGluIG9iamVjdFN0b3JlSW5mbykgewotICAgICAg
ICBpbmRleCA9IHBhcnNlSW50KGluZGV4KTsKLSAgICAgICAgaW5mbyA9IG9iamVjdFN0b3JlSW5m
b1tpbmRleF07Ci0gICAgICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUg
PSBkYi5jcmVhdGVPYmplY3RTdG9yZShpbmZvLm5hbWUsIGluZm8ub3B0aW9ucyk7Iik7Ci0gICAg
ICAgIHNob3VsZEJlKCJvYmplY3RTdG9yZS5uYW1lIiwgImluZm8ubmFtZSIpOwotICAgICAgICBp
ZiAoaW5mby5vcHRpb25zICYmIGluZm8ub3B0aW9ucy5rZXlQYXRoKSB7Ci0gICAgICAgICAgICBz
aG91bGRCZSgib2JqZWN0U3RvcmUua2V5UGF0aCIsICJpbmZvLm9wdGlvbnMua2V5UGF0aCIpOwot
ICAgICAgICB9Ci0gICAgICAgIHNob3VsZEJlKCJvYmplY3RTdG9yZS5pbmRleE5hbWVzLmxlbmd0
aCIsICIwIik7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24uZGIi
LCAiZGIiKTsKLSAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5yZWFk
eVN0YXRlIiwgIklEQlRyYW5zYWN0aW9uLkxPQURJTkciKTsKLSAgICAgICAgc2hvdWxkQmUoImV2
ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2RlIiwgIklEQlRyYW5zYWN0aW9uLlZFUlNJT05fQ0hB
TkdFIik7Ci0gICAgfQotCi0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY3JlYXRlLW9iamVjdHN0b3JlLWJhc2lj
cy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtb2JqZWN0c3Rv
cmUtbnVsbC1uYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L2NyZWF0ZS1vYmplY3RzdG9yZS1udWxsLW5hbWUuaHRtbAppbmRleCA0MzM2Y2JiZjFlNDExNDc5
N2E0Y2Q4Y2RiNzNjOWYzZjE3NjNkYjEwLi45YWZhYzcwNjdiZjA2NTAzYmFkODIxOWE5MjkxMmNk
MWYxYThiNjI5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL2NyZWF0ZS1vYmplY3RzdG9yZS1udWxsLW5hbWUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1vYmplY3RzdG9yZS1udWxsLW5hbWUuaHRt
bApAQCAtMSw1NSArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRl
c3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWRE
Qi90ZXN0L3Rlc3RfY3JlYXRlX29iamVjdFN0b3JlLmh0bWwKLSAgbGljZW5zZSBvZiBvcmlnaW5h
bCB0ZXN0OgotICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCi0gICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvICIKLS0tPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+
Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGNyZWF0aW5nIG9iamVjdCBzdG9yZSB3
aXRoIG51bGwgbmFtZSIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQ
cmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVz
Y3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxB
bmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGNsZWFuRGF0YWJhc2U7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQotewotICAgIGRlbGV0
ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9i
amVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUobnVsbCk7Iik7Ci0gICAgc2hvdWxkQmUo
Im9iamVjdFN0b3JlLm5hbWUiLCAiJ251bGwnIik7Ci0KLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0K
LQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jcmVhdGUt
b2JqZWN0c3RvcmUtbnVsbC1uYW1lLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5Pgog
PC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL2N1cnNvci1tdXRhdGlvbi1vYmplY3RzdG9yZS1vbmx5Lmh0bWwgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2N1cnNvci1tdXRhdGlvbi1vYmplY3RzdG9yZS1vbmx5
Lmh0bWwKaW5kZXggZGU4ZDEzY2JhZjMzYmQxNDhhOGU0NmZjN2M5NjJjZGYxYWY5NDAwOC4uZWI0
ZDBlYzZjZDFhNTk5NjdhNWRiOTNkZTQ0MTk3YzZjZGNhYWQ1OSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jdXJzb3ItbXV0YXRpb24tb2JqZWN0c3Rv
cmUtb25seS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEv
Y3Vyc29yLW11dGF0aW9uLW9iamVjdHN0b3JlLW9ubHkuaHRtbApAQCAtMSwxNTEgKzEsMTAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPCEtLQotICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemls
bGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2N1cnNvcl9t
dXRhdGlvbi5odG1sP2ZvcmNlPTEKLSAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgotICAgICIg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCi0gICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKLS0tPgog
PGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJl
ZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9u
KCJUZXN0IEluZGV4ZWREQidzIGN1cnNvciBtdXRhdGlvbiBkdXJpbmcgb2JqZWN0IHN0b3JlIGN1
cnNvciBpdGVyYXRpb24iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9y
UHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRl
c2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGVidWcoIm9w
ZW5TdWNjZXNzKCk6Iik7Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVy
c2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXR1cE9iamVjdFN0b3JlOwot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5j
dGlvbiBzZXR1cE9iamVjdFN0b3JlKCkKLXsKLSAgICBkZWJ1Zygic2V0dXBPYmplY3RTdG9yZSgp
OiIpOwotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBvYmplY3RTdG9yZSA9
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycsIHsg
a2V5UGF0aDogJ3NzJyB9KTsiKTsKLSAgICBvYmplY3RTdG9yZURhdGEgPSBldmFsQW5kTG9nKCJv
YmplY3RTdG9yZURhdGEgPSBbXG4iICsgCi0iICAgICAgICB7IHNzOiAnMjM3LTIzLTc3MzInLCBu
YW1lOiAnQm9iJyB9LFxuIiArIAotCi0iICAgICAgICB7IHNzOiAnMjM3LTIzLTc3MzMnLCBuYW1l
OiAnQW5uJyB9LFxuIiArCi0iICAgICAgICB7IHNzOiAnMjM3LTIzLTc3MzQnLCBuYW1lOiAnUm9u
JyB9LFxuIiArCi0iICAgICAgICB7IHNzOiAnMjM3LTIzLTc3MzUnLCBuYW1lOiAnU3VlJyB9LFxu
IiArCi0iICAgICAgICB7IHNzOiAnMjM3LTIzLTc3MzYnLCBuYW1lOiAnSm9lJyB9LFxuIiArCi0K
LSIgICAgICAgIHsgc3M6ICcyMzctMjMtNzczNycsIG5hbWU6ICdQYXQnIH1cbiIgKwotIiAgICBd
OyIpOwotCi0gICAgZm9yIChpID0gMDsgaSA8IG9iamVjdFN0b3JlRGF0YS5sZW5ndGggLSAxOyBp
KyspIHsKLSAgICAgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0
YVtpXSk7Iik7Ci0gICAgfQotCi0gICAgY291bnQgPSBldmFsQW5kTG9nKCJjb3VudCA9IDA7Iik7
Ci0gICAgc2F3QWRkZWQgPSBldmFsQW5kTG9nKCJzYXdBZGRlZCA9IGZhbHNlOyIpOwotICAgIHNh
d1JlbW92ZWQgPSBldmFsQW5kTG9nKCJzYXdSZW1vdmVkID0gZmFsc2U7Iik7Ci0KLSAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGl0ZXJhdGVDdXJzb3I7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGl0ZXJhdGVDdXJz
b3IoKQotewotICAgIGRlYnVnKCJpdGVyYXRlQ3Vyc29yKCk6Iik7Ci0gICAgZXZhbEFuZExvZygi
ZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBjaGVja0N1cnNvclJlc3VsdHNB
bmRTZXR1cE11dGF0aW5nQ3Vyc29yOyIpOwotICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNv
ciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgaWYgKGN1cnNvcikgewotICAgICAgICBp
ZiAoY3Vyc29yLnZhbHVlLm5hbWUgPT0gb2JqZWN0U3RvcmVEYXRhWzBdLm5hbWUpIHsKLSAgICAg
ICAgICAgIHNhd1JlbW92ZWQgPSBldmFsQW5kTG9nKCJzYXdSZW1vdmVkID0gdHJ1ZTsiKTsKLSAg
ICAgICAgfQotICAgICAgICBpZiAoY3Vyc29yLnZhbHVlLm5hbWUgPT0gb2JqZWN0U3RvcmVEYXRh
W29iamVjdFN0b3JlRGF0YS5sZW5ndGggLSAxXS5uYW1lKSB7Ci0gICAgICAgICAgICBzYXdBZGRl
ZCA9IGV2YWxBbmRMb2coInNhd0FkZGVkID0gdHJ1ZTsiKTsKLSAgICAgICAgfQotICAgICAgICBl
dmFsQW5kTG9nKCJjb3VudCsrOyIpOwotICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGlu
dWUoKTsiKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGNoZWNrQ3Vyc29yUmVzdWx0c0FuZFNldHVw
TXV0YXRpbmdDdXJzb3IoKQotewotICAgIGRlYnVnKCJjaGVja0N1cnNvclJlc3VsdHNBbmRTZXR1
cE11dGF0aW5nQ3Vyc29yKCk6Iik7Ci0gICAgc2hvdWxkQmUoImNvdW50IiwgIm9iamVjdFN0b3Jl
RGF0YS5sZW5ndGggLSAxIik7Ci0gICAgc2hvdWxkQmUoInNhd0FkZGVkIiwgImZhbHNlIik7Ci0g
ICAgc2hvdWxkQmUoInNhd1JlbW92ZWQiLCAidHJ1ZSIpOwotCi0gICAgY291bnQgPSBldmFsQW5k
TG9nKCJjb3VudCA9IDA7Iik7Ci0gICAgc2F3QWRkZWQgPSBldmFsQW5kTG9nKCJzYXdBZGRlZCA9
IGZhbHNlOyIpOwotICAgIHNhd1JlbW92ZWQgPSBldmFsQW5kTG9nKCJzYXdSZW1vdmVkID0gZmFs
c2U7Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnRyYW5zYWN0
aW9uKCdmb28nLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKS5vYmplY3RTdG9yZSgnZm9vJyku
b3BlbkN1cnNvcigpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gaXRlcmF0ZU11dGF0aW5n
Q3Vyc29yOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
fQotCi1mdW5jdGlvbiBpdGVyYXRlTXV0YXRpbmdDdXJzb3IoKQotewotICAgIGRlYnVnKCJpdGVy
YXRlTXV0YXRpbmdDdXJzb3IoKToiKTsKLSAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQudHJh
bnNhY3Rpb24ub25jb21wbGV0ZSA9IGNoZWNrTXV0YXRpbmdDdXJzb3JSZXN1bHRzOyIpOwotICAg
IGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0g
ICAgaWYgKGN1cnNvcikgewotICAgICAgICBpZiAoY3Vyc29yLnZhbHVlLm5hbWUgPT0gb2JqZWN0
U3RvcmVEYXRhWzBdLm5hbWUpIHsKLSAgICAgICAgICAgIHNhd1JlbW92ZWQgPSBldmFsQW5kTG9n
KCJzYXdSZW1vdmVkID0gdHJ1ZTsiKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoY3Vyc29yLnZh
bHVlLm5hbWUgPT0gb2JqZWN0U3RvcmVEYXRhW29iamVjdFN0b3JlRGF0YS5sZW5ndGggLSAxXS5u
YW1lKSB7Ci0gICAgICAgICAgICBzYXdBZGRlZCA9IGV2YWxBbmRMb2coInNhd0FkZGVkID0gdHJ1
ZTsiKTsKLSAgICAgICAgfQotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAi
JyIgKyBvYmplY3RTdG9yZURhdGFbY291bnRdLm5hbWUgKyAiJyIpOwotICAgICAgICBldmFsQW5k
TG9nKCJjb3VudCsrIik7Ci0KLSAgICAgICAgaWYgKGNvdW50ID09IDEpIHsKLSAgICAgICAgICAg
IG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBldmVudC50YXJnZXQudHJh
bnNhY3Rpb24ub2JqZWN0U3RvcmUoJ2ZvbycpOyIpOwotICAgICAgICAgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5kZWxldGUob2JqZWN0U3RvcmVEYXRhWzBd
LnNzKTsiKTsKLSAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkRmluYWxEYXRhOwot
ICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjdXJzb3IuY29udGludWUoKTsKLSAgICAgICAg
fQotICAgIH0KLX0KLQotZnVuY3Rpb24gYWRkRmluYWxEYXRhKCkKLXsKLSAgICBkZWJ1ZygiYWRk
RmluYWxEYXRhKCk6Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmpl
Y3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW29iamVjdFN0b3JlRGF0YS5sZW5ndGggLSAxXSk7
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7IGN1cnNvci5jb250aW51
ZSgpOyB9Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19
Ci0KLWZ1bmN0aW9uIGNoZWNrTXV0YXRpbmdDdXJzb3JSZXN1bHRzKCkKLXsKLSAgICBkZWJ1Zygi
Y2hlY2tNdXRhdGluZ0N1cnNvclJlc3VsdHMoKToiKTsKLSAgICBzaG91bGRCZSgiY291bnQiLCAi
b2JqZWN0U3RvcmVEYXRhLmxlbmd0aCIpOwotICAgIHNob3VsZEJlKCJzYXdBZGRlZCIsICJ0cnVl
Iik7Ci0gICAgc2hvdWxkQmUoInNhd1JlbW92ZWQiLCAidHJ1ZSIpOwotICAgIGZpbmlzaEpTVGVz
dCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2N1cnNvci1tdXRhdGlvbi1vYmplY3RzdG9yZS1vbmx5LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9jdXJzb3ItbXV0YXRpb24uaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvY3Vyc29yLW11dGF0aW9uLmh0bWwKaW5kZXggMGJkNTRlY2Y0NGM0
YTAyZDFhMWY3NzZjYTRiMmFmNzZkY2IzNjBiMi4uYzgwMTkzYjdkNDA5ZDkxZWJhNDhiNjgxMTRj
MTVlY2I1NzA1ZGEwNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW96aWxsYS9jdXJzb3ItbXV0YXRpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL2N1cnNvci1tdXRhdGlvbi5odG1sCkBAIC0xLDE5MSArMSwxMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxs
YS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfY3Vyc29yX211
dGF0aW9uLmh0bWw/Zm9yY2U9MQotICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Ci0gICAgIiBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KLSAgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgotLS0+CiA8
aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVk
LmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24o
IlRlc3QgSW5kZXhlZERCJ3MgY3Vyc29yIG11dGF0aW9uIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQot
ewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBkZWJ1ZygiIik7Ci0gICAgbmFt
ZSA9ICdjdXJzb3ItbXV0YXRpb24nOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVk
REIuZGVsZXRlRGF0YWJhc2UobmFtZSkiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsK
LSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUpIik7Ci0g
ICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIGV2YWxBbmRM
b2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgICAgICAgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgICAgICAgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgICAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IHNldHVwT2JqZWN0U3RvcmVBbmRDcmVhdGVJbmRleDsgICAgICAgICAgCi0gICAgICAg
IH07Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24gc2V0dXBPYmplY3RTdG9yZUFuZENyZWF0ZUluZGV4
KCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInNldHVwT2JqZWN0U3RvcmVBbmRDcmVh
dGVJbmRleCgpOiIpOwotCi0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IHJlcXVlc3Qu
cmVzdWx0Iik7Ci0KLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycsIHsga2V5UGF0aDogJ3NzJyB9KSIpOwotICAgIGlu
ZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgnbmFtZScs
ICduYW1lJywgeyB1bmlxdWU6IHRydWUgfSkiKTsKLSAgICBvYmplY3RTdG9yZURhdGEgPSBldmFs
QW5kTG9nKCJvYmplY3RTdG9yZURhdGEgPSBbXG4iICsgCi0gICAgICAgICAvLyBUbyBiZSByZW1v
dmVkLgotIiAgICAgICAgeyBzczogJzIzNy0yMy03NzMyJywgbmFtZTogJ0JvYicgfSxcbiIgKyAK
LQotICAgICAgICAgLy8gQWx3YXlzIHByZXNlbnQuCi0iICAgICAgICB7IHNzOiAnMjM3LTIzLTc3
MzMnLCBuYW1lOiAnQW5uJyB9LFxuIiArCi0iICAgICAgICB7IHNzOiAnMjM3LTIzLTc3MzQnLCBu
YW1lOiAnUm9uJyB9LFxuIiArCi0iICAgICAgICB7IHNzOiAnMjM3LTIzLTc3MzUnLCBuYW1lOiAn
U3VlJyB9LFxuIiArCi0iICAgICAgICB7IHNzOiAnMjM3LTIzLTc3MzYnLCBuYW1lOiAnSm9lJyB9
LFxuIiArCi0KLSAgICAgICAgIC8vIFRvIGJlIGFkZGVkLgotIiAgICAgICAgeyBzczogJzIzNy0y
My03NzM3JywgbmFtZTogJ1BhdCcgfVxuIiArCi0iICAgIF0iKTsKLQotICAgIGZvciAoaSA9IDA7
IGkgPCBvYmplY3RTdG9yZURhdGEubGVuZ3RoIC0gMTsgaSsrKSB7Ci0gICAgICAgIGV2YWxBbmRM
b2coIm9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbIiArIGkgKyAiXSkiKTsKLSAgICB9
Ci0KLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gY2hlY2tDdXJzb3JSZXN1bHRz
Iik7Ci0gICAgc2V0dXBDdXJzb3IoKTsKLX0KLQotZnVuY3Rpb24gc2V0dXBDdXJzb3IoKQotewot
ICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1Zygic2V0dXBDdXJzb3IoKToiKTsKLQotICAgIGNvdW50
ID0gZXZhbEFuZExvZygiY291bnQgPSAwIik7Ci0gICAgc2F3QWRkZWQgPSBldmFsQW5kTG9nKCJz
YXdBZGRlZCA9IGZhbHNlIik7Ci0gICAgc2F3UmVtb3ZlZCA9IGV2YWxBbmRMb2coInNhd1JlbW92
ZWQgPSBmYWxzZSIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmpl
Y3RTdG9yZS5vcGVuQ3Vyc29yKCkiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGl0ZXJhdGVDdXJzb3I7Ci19
Ci0KLWZ1bmN0aW9uIGl0ZXJhdGVDdXJzb3IoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1
ZygiaXRlcmF0ZUN1cnNvcigpOiIpOwotICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9
IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBpZiAoY3Vyc29yKSB7Ci0gICAgICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiY3Vyc29yLnZhbHVlLm5hbWUiLCBvYmplY3RTdG9yZURhdGFbY291
bnRdLm5hbWUpOwotICAgICAgICBpZiAoY3Vyc29yLnZhbHVlLm5hbWUgPT0gb2JqZWN0U3RvcmVE
YXRhWzBdLm5hbWUpIHsKLSAgICAgICAgICAgIHNhd1JlbW92ZWQgPSBldmFsQW5kTG9nKCJzYXdS
ZW1vdmVkID0gdHJ1ZSIpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChjdXJzb3IudmFsdWUubmFt
ZSA9PSBvYmplY3RTdG9yZURhdGFbb2JqZWN0U3RvcmVEYXRhLmxlbmd0aCAtIDFdLm5hbWUpIHsK
LSAgICAgICAgICAgIHNhd0FkZGVkID0gZXZhbEFuZExvZygic2F3QWRkZWQgPSB0cnVlIik7Ci0g
ICAgICAgIH0KLSAgICAgICAgZXZhbEFuZExvZygiY291bnQrKyIpOwotICAgICAgICBldmFsQW5k
TG9nKCJjdXJzb3IuY29udGludWUoKSIpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gY2hlY2tDdXJz
b3JSZXN1bHRzKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoImNoZWNrQ3Vyc29yUmVz
dWx0cygpOiIpOwotICAgIHNob3VsZEJlKCJjb3VudCIsICJvYmplY3RTdG9yZURhdGEubGVuZ3Ro
IC0gMSIpOwotICAgIHNob3VsZEJlKCJzYXdBZGRlZCIsICJmYWxzZSIpOwotICAgIHNob3VsZEJl
KCJzYXdSZW1vdmVkIiwgInRydWUiKTsKLQotICAgIHNldHVwTXV0YXRpbmdDdXJzb3IoKTsKLX0K
LQotZnVuY3Rpb24gc2V0dXBNdXRhdGluZ0N1cnNvcigpCi17Ci0gICAgZGVidWcoIiIpOwotICAg
IGRlYnVnKCJzZXR1cE11dGF0aW5nQ3Vyc29yKCk6Iik7Ci0gICAKLSAgICBjb3VudCA9IGV2YWxB
bmRMb2coImNvdW50ID0gMCIpOwotICAgIHNhd0FkZGVkID0gZXZhbEFuZExvZygic2F3QWRkZWQg
PSBmYWxzZSIpOwotICAgIHNhd1JlbW92ZWQgPSBldmFsQW5kTG9nKCJzYXdSZW1vdmVkID0gZmFs
c2UiKTsKLSAgICBkZWJ1ZygiW29iamVjdFN0b3JlRGF0YU5hbWVTb3J0IGlzIGFuIGFycmF5IG9m
IGluZGV4ZXMgaW50byBvYmplY3RTdG9yZURhdGEgaW4gYWxwaGFiZXRpY2FsIG9yZGVyIGJ5IG5h
bWVdIik7Ci0gICAgb2JqZWN0U3RvcmVEYXRhTmFtZVNvcnQgPSBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZURhdGFOYW1lU29ydCA9IFsgMSwgNCwgNSwgMiwgMyBdIik7Ci0KLSAgICBkZWJ1ZygiIik7
Ci0KLSAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ2Zvbycs
IElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5k
TG9nKCJvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdmb28nKSIpOwotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVu
Q3Vyc29yKCkiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGl0ZXJhdGVNdXRhdGluZ0N1cnNvcjsKLSAgICBl
dmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gY2hlY2tNdXRhdGluZ0N1cnNvclJlc3VsdHMi
KTsKLX0KLQotZnVuY3Rpb24gaXRlcmF0ZU11dGF0aW5nQ3Vyc29yKCkKLXsKLSAgICBkZWJ1Zygi
Iik7Ci0gICAgZGVidWcoIml0ZXJhdGVNdXRhdGluZ0N1cnNvcigpOiIpOwotICAgIGN1cnNvciA9
IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBpZiAoY3Vy
c29yKSB7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY3Vyc29yLnZhbHVlLm5hbWUi
LCBvYmplY3RTdG9yZURhdGFbb2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRbY291bnRdXS5uYW1lKTsK
LSAgICAgICAgaWYgKGN1cnNvci52YWx1ZS5uYW1lID09IG9iamVjdFN0b3JlRGF0YVswXS5uYW1l
KSB7Ci0gICAgICAgICAgICBzYXdSZW1vdmVkID0gZXZhbEFuZExvZygic2F3UmVtb3ZlZCA9IHRy
dWUiKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoY3Vyc29yLnZhbHVlLm5hbWUgPT0gb2JqZWN0
U3RvcmVEYXRhW29iamVjdFN0b3JlRGF0YS5sZW5ndGggLSAxXS5uYW1lKSB7Ci0gICAgICAgICAg
ICBzYXdBZGRlZCA9IGV2YWxBbmRMb2coInNhd0FkZGVkID0gdHJ1ZSIpOwotICAgICAgICB9Ci0g
ICAgICAgIGV2YWxBbmRMb2coImNvdW50KysiKTsKLQotICAgICAgICBpZiAoY291bnQgPT0gMSkg
ewotICAgICAgICAgICAgZGVidWcoIiIpOwotICAgICAgICAgICAgZGVidWcoIk11dGF0aW5nIHRo
ZSBvYmplY3Qgc3RvcmU6Iik7Ci0KLSAgICAgICAgICAgIGRlYnVnKCJSZW1vdmluZyAiICsgb2Jq
ZWN0U3RvcmVEYXRhWzBdLm5hbWUpOwotICAgICAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBvYmplY3RTdG9yZS5kZWxldGUob2JqZWN0U3RvcmVEYXRhWzBdLnNzKSIpOwot
ICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0g
ICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEZpbmFsRGF0YTsKLQotICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7Ci0gICAgICAgIH0KLSAgICB9
Ci19Ci0KLWZ1bmN0aW9uIGFkZEZpbmFsRGF0YSgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRl
YnVnKCJhZGRGaW5hbERhdGEoKToiKTsKLSAgICBkZWJ1ZygiQWRkaW5nICIgKyBvYmplY3RTdG9y
ZURhdGFbb2JqZWN0U3RvcmVEYXRhLmxlbmd0aCAtIDFdLm5hbWUpOwotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtvYmpl
Y3RTdG9yZURhdGEubGVuZ3RoIC0gMV0pIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7
Ci0gICAgICAgIGN1cnNvci5jb250aW51ZSgpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gY2hlY2tN
dXRhdGluZ0N1cnNvclJlc3VsdHMoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiY2hl
Y2tNdXRhdGluZ0N1cnNvclJlc3VsdHMoKToiKTsKLSAgICBzaG91bGRCZSgiY291bnQiLCAib2Jq
ZWN0U3RvcmVEYXRhLmxlbmd0aCAtIDEiKTsKLSAgICBzaG91bGRCZSgic2F3QWRkZWQiLCAidHJ1
ZSIpOwotICAgIHNob3VsZEJlKCJzYXdSZW1vdmVkIiwgImZhbHNlIik7Ci0gICAgZmluaXNoSlNU
ZXN0KCk7Ci19Ci0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2N1cnNvci1tdXRhdGlvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRt
bD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9j
dXJzb3ItdXBkYXRlLXVwZGF0ZXMtaW5kZXhlcy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW96aWxsYS9jdXJzb3ItdXBkYXRlLXVwZGF0ZXMtaW5kZXhlcy5odG1sCmluZGV4
IGI4OWFmNjU5Y2YzOGYzN2FiNTdlZGYxYmI2ZWQyOGQ5M2NjMzRiNDcuLjhjOTlmZjg0ZDNmYzg4
OTVjNjMzNDMyYjZmMzYyMjE3ZTQyODVjNDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vemlsbGEvY3Vyc29yLXVwZGF0ZS11cGRhdGVzLWluZGV4ZXMuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2N1cnNvci11cGRhdGUt
dXBkYXRlcy1pbmRleGVzLmh0bWwKQEAgLTEsMTI1ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTwhLS0KLSAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4w
L3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9jdXJzb3JfdXBkYXRlX3VwZGF0ZXNfaW5k
ZXhlcy5odG1sP2ZvcmNlPTEKLSAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgotICAgICIgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCi0gICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKLS0tPgogPGh0
bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5q
cyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJU
ZXN0IEluZGV4ZWREQjogbXV0YXRpbmcgcmVjb3JkcyB3aXRoIGEgci93IGN1cnNvciB1cGRhdGVz
IGluZGV4ZXMgb24gdGhvc2UgcmVjb3JkcyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICBy
ZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5h
bWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAg
ICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIGZpcnN0VmFsdWUgPSBldmFsQW5kTG9nKCJmaXJzdFZh
bHVlID0gJ2hpJzsiKTsKLSAgICBzZWNvbmRWYWx1ZSA9IGV2YWxBbmRMb2coInNlY29uZFZhbHVl
ID0gJ2J5ZSc7Iik7Ci0gICAgb2JqZWN0U3RvcmVJbmZvID0gZXZhbEFuZExvZygib2JqZWN0U3Rv
cmVJbmZvID0gW1xuIiArCi0iICAgICAgICB7IG5hbWU6ICcxJywgb3B0aW9uczoge30sIGtleTog
MSxcbiIgKwotIiAgICAgICAgICBlbnRyeTogeyBkYXRhOiBmaXJzdFZhbHVlIH0gfSxcbiIgKwot
IiAgICAgICAgeyBuYW1lOiAnMicsIG9wdGlvbnM6IHsga2V5UGF0aDogJ2ZvbycgfSxcbiIgKwot
IiAgICAgICAgICBlbnRyeTogeyBmb286IDEsIGRhdGE6IGZpcnN0VmFsdWUgfSB9LFxuIiArCi0i
ICAgICAgICB7IG5hbWU6ICczJywgb3B0aW9uczogeyBhdXRvSW5jcmVtZW50OiB0cnVlIH0sXG4i
ICsKLSIgICAgICAgICAgZW50cnk6IHsgZGF0YTogZmlyc3RWYWx1ZSB9IH0sXG4iICsKLSIgICAg
ICAgIHsgbmFtZTogJzQnLCBvcHRpb25zOiB7IGtleVBhdGg6ICdmb28nLCBhdXRvSW5jcmVtZW50
OiB0cnVlIH0sXG4iICsKLSIgICAgICAgICAgZW50cnk6IHsgZGF0YTogZmlyc3RWYWx1ZSB9IH0s
XG4iICsKLSIgICAgXTsiKTsKLSAgICBpID0gZXZhbEFuZExvZygiaSA9IDA7Iik7Ci0gICAgc2V0
VmVyc2lvbigpOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uKCkKLXsKLSAgICBpZiAoaSA8IG9i
amVjdFN0b3JlSW5mby5sZW5ndGgpIHsKLSAgICAgICAgaW5mbyA9IGV2YWxBbmRMb2coImluZm8g
PSBvYmplY3RTdG9yZUluZm9baV07Iik7Ci0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gc2V0dXBPYmplY3RTdG9yZUFuZENyZWF0ZUluZGV4QW5kQWRkOwotICAgICAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB9IGVsc2UgewotICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHNldHVwT2JqZWN0U3RvcmVB
bmRDcmVhdGVJbmRleEFuZEFkZCgpCi17Ci0gICAgZGVidWcoInNldHVwT2JqZWN0U3RvcmVBbmRD
cmVhdGVJbmRleCgpOiIpOwotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBv
YmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoaW5mby5uYW1lLCBpbmZvLm9wdGlvbnMpOyIpOwotCi0gICAgaW5kZXggPSBldmFsQW5kTG9n
KCJpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdkYXRhX2luZGV4JywgJ2RhdGEnLCB7
IHVuaXF1ZTogZmFsc2UgfSk7Iik7Ci0gICAgdW5pcXVlSW5kZXggPSBldmFsQW5kTG9nKCJ1bmlx
dWVJbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCd1bmlxdWVfZGF0YV9pbmRleCcsICdk
YXRhJywgeyB1bmlxdWU6IHRydWUgfSk7Iik7Ci0gICAgaWYgKGluZm8ua2V5KSB7Ci0gICAgICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKGluZm8uZW50
cnksIGluZm8ua2V5KTsiKTsKLSAgICB9IGVsc2UgewotICAgICAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChpbmZvLmVudHJ5KTsiKTsKLSAgICB9Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuQ3Vyc29yOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuQ3Vyc29yKCkKLXsK
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJz
b3IoKTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVwZGF0ZUN1cnNvcjsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gdXBk
YXRlQ3Vyc29yKCkKLXsKLSAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSByZXF1ZXN0
LnJlc3VsdDsiKTsKLSAgICB2YWx1ZSA9IGV2YWxBbmRMb2coInZhbHVlID0gY3Vyc29yLnZhbHVl
OyIpOwotICAgIHZhbHVlLmRhdGEgPSBldmFsQW5kTG9nKCJ2YWx1ZS5kYXRhID0gc2Vjb25kVmFs
dWU7Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBjdXJzb3IudXBkYXRl
KHZhbHVlKTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldEluZGV4MTsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZ2V0
SW5kZXgxKCkKLXsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4Lmdl
dChzZWNvbmRWYWx1ZSk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjaGVja0luZGV4MUFu
ZEdldEluZGV4MjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLX0KLQotZnVuY3Rpb24gY2hlY2tJbmRleDFBbmRHZXRJbmRleDIoKQotewotICAgIHNob3Vs
ZEJlKCJ2YWx1ZS5kYXRhIiwgImV2ZW50LnRhcmdldC5yZXN1bHQuZGF0YSIpOwotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gdW5pcXVlSW5kZXguZ2V0KHNlY29uZFZhbHVlKTsi
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNoZWNrSW5kZXgyOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjaGVja0luZGV4
MigpCi17Ci0gICAgc2hvdWxkQmUoInZhbHVlLmRhdGEiLCAiZXZlbnQudGFyZ2V0LnJlc3VsdC5k
YXRhIik7Ci0gICAgZXZhbEFuZExvZygiaSsrOyIpOwotICAgIHNldFZlcnNpb24oKTsKLX0KLQot
Ci10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jdXJzb3ItdXBk
YXRlLXVwZGF0ZXMtaW5kZXhlcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwv
aHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9jdXJzb3JzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2N1
cnNvcnMuaHRtbAppbmRleCBjYTNkNzJmZWEzNWY1ZjAwMjA4ZjZiNzBiMmI4NzAwMGQ5ZGU0MTIw
Li5jZWRlZDliZTk4OGU1Njg4MGFhYjYzNmIxMTdiMWFkNTM2YWE3YWFmIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2N1cnNvcnMuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2N1cnNvcnMuaHRtbApAQCAtMSwz
OTkgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLQotICBvcmlnaW5hbCB0ZXN0OiBodHRw
Oi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90
ZXN0X2N1cnNvcnMuaHRtbD9mb3JjZT0xCi0gIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKLSAg
ICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgotICAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCi0t
LT4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9z
aGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlw
dGlvbigiVGVzdCBJbmRleGVkREIgY3Vyc29yIGJlaGF2aW9yIik7Ci0KLWZ1bmN0aW9uIHRlc3Qo
KQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2Nh
dGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24p
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nl
c3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEn
KSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdGVzdEdyb3VwMTsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gdGVzdEdyb3Vw
MSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9iamVjdFN0b3Jl
ID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2F1dG9JbmNyZW1lbnQnLCB7IGF1
dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVx
dWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0
aW9uIChldmVudCkgewotICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAibnVs
bCIpOwotICAgICAgdGVzdEdyb3VwMigpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdEdyb3Vw
MigpCi17Ci0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9y
ZSgnYXV0b0luY3JlbWVudEtleVBhdGgnLCB7IGtleVBhdGg6ICdmb28nLCBhdXRvSW5jcmVtZW50
OiB0cnVlIH0pOyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmpl
Y3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQp
IHsKLSAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIm51bGwiKTsKLSAgICAg
IHRlc3RHcm91cDMoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDMoKQotewotICAg
IG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2tleVBhdGgn
LCB7IGtleVBhdGg6ICdmb28nIH0pOyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbiAoZXZlbnQpIHsKLSAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIm51
bGwiKTsKLSAgICAgIHRlc3RHcm91cDQoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91
cDQoKQotewotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ2ZvbycpOyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmpl
Y3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQp
IHsKLSAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIm51bGwiKTsKLSAgICAg
IHRlc3RHcm91cDUoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDUoKQotewotICAg
IGtleXMgPSBldmFsQW5kTG9nKCJrZXlzID0gWzEsIC0xLCAwLCAxMCwgMjAwMCwgJ3EnLCAneics
ICd0d28nLCAnYicsICdhJ107Iik7Ci0gICAgc29ydGVkS2V5cyA9IGV2YWxBbmRMb2coInNvcnRl
ZEtleXMgPSBbLTEsIDAsIDEsIDEwLCAyMDAwLCAnYScsICdiJywgJ3EnLCAndHdvJywgJ3onXTsi
KTsKLQotICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAwOyIpOwotCi0gICAg
Zm9yIChpIGluIGtleXMpIHsKLSAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
b2JqZWN0U3RvcmUuYWRkKCdmb28nLCBrZXlzW2ldKTsiKTsKLSAgICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbihldmVudCkgewotICAgICAgICBpZiAoKytrZXlJbmRleCA9PSBrZXlzLmxlbmd0aCkg
ewotICAgICAgICAgIHRlc3RHcm91cDYoKTsKLSAgICAgICAgfQotICAgICAgfTsKLSAgICB9Ci19
Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDYoKQotewotICAgIGtleUluZGV4ID0gMDsKLQotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIp
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICBjdXJzb3IgPSBldmFs
QW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgICAgaWYgKGN1cnNv
cikgewotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4
XSIpOwotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAic29ydGVkS2V5c1tr
ZXlJbmRleF0iKTsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZSIsICInZm9vJyIpOwot
Ci0gICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOwotICAgICAgICBldmFs
QW5kRXhwZWN0RXhjZXB0aW9uKCJjdXJzb3IuY29udGludWUoKTsiLCAiSURCRGF0YWJhc2VFeGNl
cHRpb24uTk9UX0FMTE9XRURfRVJSIik7Ci0KLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXki
LCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmlt
YXJ5S2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJz
b3IudmFsdWUiLCAiJ2ZvbyciKTsKLQotICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIp
OwotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJr
ZXlzLmxlbmd0aCIpOwotICAgICAgICB0ZXN0R3JvdXA3KCk7Ci0gICAgICB9Ci0gICAgfQotfQot
Ci1mdW5jdGlvbiB0ZXN0R3JvdXA3KCkKLXsKLSAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtl
eUluZGV4ID0gNDsiKTsKLQotICAgIHJhbmdlID0gZXZhbEFuZExvZygicmFuZ2UgPSBJREJLZXlS
YW5nZS5ib3VuZCgyMDAwLCAncScpOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcihyYW5nZSk7Iik7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2
ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICBpZiAoY3Vyc29yKSB7Ci0gICAgICAgIHNob3Vs
ZEJlKCJjdXJzb3Iua2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7Ci0gICAgICAgIHNob3Vs
ZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOwotICAgICAg
ICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgIidmb28nIik7Ci0KLSAgICAgICAgZXZhbEFuZExv
ZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7Ci0KLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXki
LCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmlt
YXJ5S2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJz
b3IudmFsdWUiLCAiJ2ZvbyciKTsKLQotICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIp
OwotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICI4
Iik7Ci0gICAgICAgIHRlc3RHcm91cDgoKTsKLSAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9u
IHRlc3RHcm91cDgoKQotewotICAgIGtleUluZGV4ID0gMDsKLQotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOwotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJz
b3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgICAgaWYgKGN1cnNvcikgewotICAgICAg
ICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOwotICAgICAg
ICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsK
LSAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZSIsICInZm9vJyIpOwotCi0gICAgICAgIGlm
IChrZXlJbmRleCkgewotICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIp
OwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNv
ci5jb250aW51ZSgnYicpOyIpOwotICAgICAgICB9Ci0KLSAgICAgICAgc2hvdWxkQmUoImN1cnNv
ci5rZXkiLCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNv
ci5wcmltYXJ5S2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7Ci0gICAgICAgIHNob3VsZEJl
KCJjdXJzb3IudmFsdWUiLCAiJ2ZvbyciKTsKLQotICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRl
eCArPSBrZXlJbmRleCA/IDE6IDY7Iik7Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAg
c2hvdWxkQmUoImtleUluZGV4IiwgImtleXMubGVuZ3RoIik7Ci0gICAgICAgIHRlc3RHcm91cDko
KTsKLSAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDkoKQotewotICAgIGtl
eUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAwOyIpOwotCi0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1
cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICBpZiAoY3Vyc29yKSB7Ci0gICAg
ICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7Ci0gICAg
ICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIp
OwotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgIidmb28nIik7Ci0KLSAgICAgICAg
aWYgKGtleUluZGV4KSB7Ci0gICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7
Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgZXZhbEFuZExvZygiY3Vy
c29yLmNvbnRpbnVlKDEwKTsiKTsKLSAgICAgICAgfQotCi0gICAgICAgIHNob3VsZEJlKCJjdXJz
b3Iua2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJz
b3IucHJpbWFyeUtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOwotICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLnZhbHVlIiwgIidmb28nIik7Ci0KLSAgICAgICAgZXZhbEFuZExvZygia2V5SW5k
ZXggKz0ga2V5SW5kZXggPyAxOiAzOyIpOwotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAg
IHNob3VsZEJlKCJrZXlJbmRleCIsICJrZXlzLmxlbmd0aCIpOwotICAgICAgICB0ZXN0R3JvdXAx
MCgpOwotICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdEdyb3VwMTAoKQotewotICAg
IGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAwOyIpOwotCi0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2co
ImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICBpZiAoY3Vyc29yKSB7Ci0g
ICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7Ci0g
ICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4
XSIpOwotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgIidmb28nIik7Ci0KLSAgICAg
ICAgaWYgKGtleUluZGV4KSB7Ci0gICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVl
KCk7Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgZXZhbEFuZExvZygi
Y3Vyc29yLmNvbnRpbnVlKCdjJyk7Iik7Ci0gICAgICAgIH0KLQotICAgICAgICBzaG91bGRCZSgi
Y3Vyc29yLmtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOwotICAgICAgICBzaG91bGRCZSgi
Y3Vyc29yLnByaW1hcnlLZXkiLCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKLSAgICAgICAgc2hv
dWxkQmUoImN1cnNvci52YWx1ZSIsICInZm9vJyIpOwotCi0gICAgICAgIGV2YWxBbmRMb2coImtl
eUluZGV4ICs9IGtleUluZGV4ID8gMSA6IDc7Iik7Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAg
ICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgImtleXMubGVuZ3RoIik7Ci0gICAgICAgIHRlc3RH
cm91cDExKCk7Ci0gICAgICB9Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXAxMSgpCi17
Ci0gICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDA7Iik7Ci0KLSAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewotICAgICAgY3Vyc29yID0gZXZhbEFu
ZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgIGlmIChjdXJzb3Ip
IHsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAic29ydGVkS2V5c1trZXlJbmRleF0i
KTsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgInNvcnRlZEtleXNba2V5
SW5kZXhdIik7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAiJ2ZvbyciKTsKLQot
ICAgICAgICBpZiAoa2V5SW5kZXggPT0gNCkgewotICAgICAgICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gY3Vyc29yLnVwZGF0ZSgnYmFyJyk7Iik7Ci0gICAgICAgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICAgICAgZXZhbEFuZExvZygia2V5
SW5kZXgrKzsiKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIp
OwotICAgICAgICAgIH07Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgZXZh
bEFuZExvZygia2V5SW5kZXgrKzsiKTsKLSAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29u
dGludWUoKTsiKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIHNo
b3VsZEJlKCJrZXlJbmRleCIsICJrZXlzLmxlbmd0aCIpOwotICAgICAgICB0ZXN0R3JvdXAxMigp
OwotICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdEdyb3VwMTIoKQotewotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KHNvcnRlZEtleXNb
NF0pOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdGVzdEdyb3VwMTJiOwotfQotCi1mdW5jdGlvbiB0ZXN0
R3JvdXAxMmIoKQotewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIidiYXIn
Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1
dCgnZm9vJywgc29ydGVkS2V5c1s0XSk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0ZXN0R3JvdXAxMzsK
LX0KLQotZnVuY3Rpb24gdGVzdEdyb3VwMTMoKQotewotICAgIGtleUluZGV4ID0gZXZhbEFuZExv
Zygia2V5SW5kZXggPSAwOyIpOwotCi0gICAgZ290UmVtb3ZlRXZlbnQgPSBmYWxzZTsKLSAgICBy
ZXR2YWwgPSBmYWxzZTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2Jq
ZWN0U3RvcmUub3BlbkN1cnNvcihudWxsLCBJREJDdXJzb3IuTkVYVCk7Iik7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNv
ciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICBpZiAoY3Vyc29yKSB7Ci0gICAgICAg
IHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7Ci0gICAgICAg
IHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOwot
ICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgIidmb28nIik7Ci0KLSAgICAgICAgaWYg
KGtleUluZGV4ID09IDQpIHsKLSAgICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IGN1cnNvci5kZWxldGUoKTsiKTsKLSAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0
aW9uKGV2ZW50KSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNSIpOwotICAg
ICAgICAgICAgZ290UmVtb3ZlRXZlbnQgPSBldmFsQW5kTG9nKCJnb3RSZW1vdmVFdmVudCA9IHRy
dWU7Iik7Ci0gICAgICAgICAgfTsKLSAgICAgICAgfQotCi0gICAgICAgIGV2YWxBbmRMb2coImtl
eUluZGV4Kys7Iik7Ci0gICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOwot
ICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJrZXlz
Lmxlbmd0aCIpOwotICAgICAgICBzaG91bGRCZSgiZ290UmVtb3ZlRXZlbnQiLCAidHJ1ZSIpOwot
ICAgICAgICB0ZXN0R3JvdXAxNCgpOwotICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVz
dEdyb3VwMTQoKQotewotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0
U3RvcmUuZ2V0KHNvcnRlZEtleXNbNF0pOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdGVzdEdyb3VwMTRi
OwotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXAxNGIoKQotewotICAgIHNob3VsZEJlKCJldmVudC50
YXJnZXQucmVzdWx0IiwgInVuZGVmaW5lZCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoJ2ZvbycsIHNvcnRlZEtleXNbNF0pOyIpOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gdGVzdEdyb3VwMTU7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDE1KCkKLXsK
LSAgICBrZXlJbmRleCA9IHNvcnRlZEtleXMubGVuZ3RoIC0gMTsKLQotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcihudWxsLCBJREJDdXJz
b3IuUFJFVik7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgIGN1
cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAg
ICBpZiAoY3Vyc29yKSB7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgInNvcnRlZEtl
eXNba2V5SW5kZXhdIik7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJz
b3J0ZWRLZXlzW2tleUluZGV4XSIpOwotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwg
Iidmb28nIik7Ci0KLSAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7Ci0K
LSAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsK
LSAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgInNvcnRlZEtleXNba2V5SW5k
ZXhdIik7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAiJ2ZvbyciKTsKLQotICAg
ICAgICBldmFsQW5kTG9nKCJrZXlJbmRleC0tOyIpOwotICAgICAgfQotICAgICAgZWxzZSB7Ci0g
ICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICItMSIpOwotICAgICAgICBmaW5pc2hKU1Rlc3Qo
KTsKLSAgICAgIH0KLSAgICB9Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvY3Vyc29ycy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4K
IDwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9kZWxldGUtcmVzdWx0Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL2RlbGV0ZS1yZXN1bHQuaHRtbAppbmRleCAxMGY0NmJjODUwNGIwM2MyNzIzZGY0ZTM2
M2QwZmQ5NDAxZjNlZWQ3Li5mN2ViNTI2Y2U1NTliZDg5YTk1ODhlMDE5ODFhYmM2MDY5MzQ1OWVh
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2RlbGV0
ZS1yZXN1bHQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L2RlbGV0ZS1yZXN1bHQuaHRtbApAQCAtMSw3MyArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08
IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9z
b3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3Rfb2RkX3Jlc3VsdF9vcmRlci5odG1sP3Jhdz0x
Ci0gIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgotICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+CiA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9o
ZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREI6IHJl
c3VsdCBwcm9wZXJ0eSBhZnRlciBkZWxldGluZyBleGlzdGluZyBhbmQgbm9uLWV4aXN0aW5nIHJl
Y29yZCIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygp
OwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24g
PSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWRE
Qi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3Bl
blN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRi
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVh
dGVPYmplY3RTdG9yZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLX0KLQotZnVuY3Rpb24gY3JlYXRlT2JqZWN0U3RvcmUoKQotewotICAgIGRlbGV0ZUFs
bE9iamVjdFN0b3JlcyhkYik7Ci0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7IGtleVBhdGg6ICdpZCcsIGF1dG9J
bmNyZW1lbnQ6IHRydWUgfSk7Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5hZGQoe30pOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRl
UmVjb3JkMTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LX0KLQotZnVuY3Rpb24gZGVsZXRlUmVjb3JkMSgpCi17Ci0gICAgaWQgPSBldmFsQW5kTG9nKCJp
ZCA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBvYmplY3RTdG9yZS5kZWxldGUoaWQpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZGVsZXRlUmVjb3JkMjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZGVsZXRlUmVjb3JkMigpCi17Ci0gICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldC5yZXN1bHQiLCAidW5kZWZpbmVkIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5kZWxldGUoaWQpOyIpOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZmluYWxDaGVjazsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
U3VjY2Vzc0NhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBmaW5hbENoZWNrKCkKLXsKLSAgICBzaG91
bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ1bmRlZmluZWQiKTsKLSAgICBmaW5pc2hKU1Rl
c3QoKTsKLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
ZGVsZXRlLXJlc3VsdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvZXZlbnQt
c291cmNlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2V2ZW50
LXNvdXJjZS5odG1sCmluZGV4IDM3YzEyZTUwZjY1MGE2NmU1YTk2ZDIzMzgxMzk4ZGQxYWRhNTJh
ZmYuLmRiMjFiYWE2OTk0ZDZhM2FiNGQ5MWVhYmViMWJiYTcyZDFjYWUwZTkgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvZXZlbnQtc291cmNlLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9ldmVudC1zb3VyY2Uu
aHRtbApAQCAtMSw2OCArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFs
IHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4
ZWREQi90ZXN0L3Rlc3RfZXZlbnRfc291cmNlLmh0bWwKLSAgbGljZW5zZSBvZiBvcmlnaW5hbCB0
ZXN0OgotICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCi0gICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvICIKLS0tPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0K
LWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGV2ZW50LnRhcmdldC5zb3VyY2UgaW4gc3Vj
Y2VzcyBjYWxsYmFja3MiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9y
UHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRl
c2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgc291cmNlID0g
ZXZhbEFuZExvZygic291cmNlID0gZXZlbnQudGFyZ2V0LnNvdXJjZTsiKTsKLSAgICBzaG91bGRC
ZSgic291cmNlIiwgImluZGV4ZWREQiIpOwotCi0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRh
YmFzZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0K
LQotZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCi17Ci0gICAgc291cmNlID0gZXZhbEFuZExvZygi
c291cmNlID0gZXZlbnQudGFyZ2V0LnNvdXJjZTsiKTsKLSAgICBzaG91bGRCZSgic291cmNlIiwg
ImRiIik7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3Rv
cmVOYW1lID0gIk9iamVjdHMiOwotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0
U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUsIHsgYXV0b0luY3Jl
bWVudDogdHJ1ZSB9KTsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9i
amVjdFN0b3JlLmFkZCh7fSk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhcmVXZURvbmVZ
ZXQ7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0K
LWZ1bmN0aW9uIGFyZVdlRG9uZVlldCgpCi17Ci0gICAgc291cmNlID0gZXZhbEFuZExvZygic291
cmNlID0gZXZlbnQudGFyZ2V0LnNvdXJjZTsiKTsKLSAgICBzaG91bGRCZSgic291cmNlIiwgIm9i
amVjdFN0b3JlIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZXZlbnQtc291cmNlLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2dsb2JhbC1kYXRhLmh0bWwgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2dsb2JhbC1kYXRhLmh0bWwKaW5kZXggY2RlMDY5NjU2
ZjY5ZWJmZDkxM2QzNmVjNGNhOTAyNzNhMjQwZDI0ZS4uYTJiMDY3M2RkYjEzNWJmN2EyNTFjNzIz
OTEyZDY2MmQ2NGMwN2MxZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW96aWxsYS9nbG9iYWwtZGF0YS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL21vemlsbGEvZ2xvYmFsLWRhdGEuaHRtbApAQCAtMSw4MCArMSwxMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcv
bW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfZ2xvYmFsX2RhdGEuaHRt
bAotICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Ci0gICAgIiBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KLSAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgotLS0+CiA8aHRtbD4KIDxoZWFkPgogPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwv
aGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mg
b3BlbmluZyBEQiBtb3JlIHRoYW4gb25jZSIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICBy
ZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5h
bWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAg
ICBkYjEgPSBldmFsQW5kTG9nKCJkYjEgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiMS5zZXRWZXJzaW9uKCcxJykiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFuRGF0YWJhc2Uo
KQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYjEpOwotCi0gICAgb2JqZWN0U3RvcmVO
YW1lID0gIk9iamVjdHMiOwotICAgIG9iamVjdFN0b3JlT3B0aW9ucyA9IHsga2V5UGF0aDogJ2lk
JywgYXV0b0luY3JlbWVudDogdHJ1ZSB9OwotICAgIGV2YWxBbmRMb2coImRiMS5jcmVhdGVPYmpl
Y3RTdG9yZShvYmplY3RTdG9yZU5hbWUsIG9iamVjdFN0b3JlT3B0aW9ucyk7Iik7Ci0KLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pOyIp
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbjJTdWNjZXNzOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuMlN1Y2Nl
c3MoKQotewotICAgIGRiMiA9IGV2YWxBbmRMb2coImRiMiA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKLQotICAgIHNob3VsZEJlVHJ1ZSgiZGIxICE9PSBkYjIiKTsKLSAgICBzaG91bGRCZSgiZGIx
Lm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjEiKTsKLSAgICBzaG91bGRCZSgiZGIxLm9iamVj
dFN0b3JlTmFtZXMuaXRlbSgwKSIsICJvYmplY3RTdG9yZU5hbWUiKTsKLSAgICBzaG91bGRCZSgi
ZGIyLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjEiKTsKLSAgICBzaG91bGRCZSgiZGIyLm9i
amVjdFN0b3JlTmFtZXMuaXRlbSgwKSIsICJvYmplY3RTdG9yZU5hbWUiKTsKLQotICAgIG9iamVj
dFN0b3JlMSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlMSA9IGRiMS50cmFuc2FjdGlvbihvYmpl
Y3RTdG9yZU5hbWUpLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7Iik7Ci0gICAgc2hvdWxk
QmUoIm9iamVjdFN0b3JlMS5uYW1lIiwgIm9iamVjdFN0b3JlTmFtZSIpOwotICAgIHNob3VsZEJl
KCJvYmplY3RTdG9yZTEua2V5UGF0aCIsICJvYmplY3RTdG9yZU9wdGlvbnMua2V5UGF0aCIpOwot
Ci0gICAgb2JqZWN0U3RvcmUyID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUyID0gZGIyLnRyYW5z
YWN0aW9uKG9iamVjdFN0b3JlTmFtZSkub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKTsiKTsK
LSAgICBzaG91bGRCZVRydWUoIm9iamVjdFN0b3JlMSAhPT0gb2JqZWN0U3RvcmUyIik7Ci0gICAg
c2hvdWxkQmUoIm9iamVjdFN0b3JlMi5uYW1lIiwgIm9iamVjdFN0b3JlTmFtZSIpOwotICAgIHNo
b3VsZEJlKCJvYmplY3RTdG9yZTIua2V5UGF0aCIsICJvYmplY3RTdG9yZU9wdGlvbnMua2V5UGF0
aCIpOwotCi0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZ2xvYmFsLWRhdGEuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvaW5kZXhlcy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9pbmRleGVzLmh0bWwKaW5kZXggNGZiN2UxMjRjNWIxMDk2YTQ2N2NkODE1
MTc0NWVkMGUwMWQ1YmU3NC4uOGI2YzZkY2ZiMzQxZDFiYWE4YWQxYzE5ODEyNmUzNDkzMjZkMDNm
MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9pbmRl
eGVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9pbmRl
eGVzLmh0bWwKQEAgLTEsMTAyMiArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9y
aWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9t
L2luZGV4ZWREQi90ZXN0L3Rlc3RfaW5kZXhlcy5odG1sP2ZvcmNlPTEKLSAgbGljZW5zZSBvZiBv
cmlnaW5hbCB0ZXN0OgotICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCi0gICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvICIKLS0tPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxz
Y3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQjogaXRlcmF0aW5nIHRocm91Z2gg
aW5kZXggY3Vyc29ycyB3aXRoIGtleXMgYW5kIGtleSByYW5nZXMiKTsKLQotZnVuY3Rpb24gdGVz
dCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxv
Y2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlv
bikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3Vj
Y2VzcygpCi17Ci0gICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7Ci0gICAgZGIgPSBldmFsQW5k
TG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIG9iamVjdFN0b3JlTmFtZSA9
ICJQZW9wbGUiOwotCi0gICAgb2JqZWN0U3RvcmVEYXRhID0gWwotICAgICAgICB7IGtleTogIjIz
Ny0yMy03NzMyIiwgdmFsdWU6IHsgbmFtZTogIkJvYiIsIGhlaWdodDogNjAsIHdlaWdodDogMTIw
IH0gfSwKLSAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczMyIsIHZhbHVlOiB7IG5hbWU6ICJBbm4i
LCBoZWlnaHQ6IDUyLCB3ZWlnaHQ6IDExMCB9IH0sCi0gICAgICAgIHsga2V5OiAiMjM3LTIzLTc3
MzQiLCB2YWx1ZTogeyBuYW1lOiAiUm9uIiwgaGVpZ2h0OiA3Mywgd2VpZ2h0OiAxODAgfSB9LAot
ICAgICAgICB7IGtleTogIjIzNy0yMy03NzM1IiwgdmFsdWU6IHsgbmFtZTogIlN1ZSIsIGhlaWdo
dDogNTgsIHdlaWdodDogMTMwIH0gfSwKLSAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNiIsIHZh
bHVlOiB7IG5hbWU6ICJKb2UiLCBoZWlnaHQ6IDY1LCB3ZWlnaHQ6IDE1MCB9IH0sCi0gICAgICAg
IHsga2V5OiAiMjM3LTIzLTc3MzciLCB2YWx1ZTogeyBuYW1lOiAiUGF0IiwgaGVpZ2h0OiA2NSwg
d2VpZ2h0OiAxMDAgfSB9Ci0gICAgXTsKLQotICAgIGluZGV4RGF0YSA9IFsKLSAgICAgICAgeyBu
YW1lOiAibmFtZSIsIGtleVBhdGg6ICJuYW1lIiwgb3B0aW9uczogeyB1bmlxdWU6IHRydWUgfSB9
LAotICAgICAgICB7IG5hbWU6ICJoZWlnaHQiLCBrZXlQYXRoOiAiaGVpZ2h0Iiwgb3B0aW9uczog
eyB9IH0sCi0gICAgICAgIHsgbmFtZTogIndlaWdodCIsIGtleVBhdGg6ICJ3ZWlnaHQiLCBvcHRp
b25zOiB7IHVuaXF1ZTogZmFsc2UgfSB9Ci0gICAgXTsKLQotICAgIG9iamVjdFN0b3JlRGF0YU5h
bWVTb3J0ID0gWwotICAgICAgICB7IGtleTogIjIzNy0yMy03NzMzIiwgdmFsdWU6IHsgbmFtZTog
IkFubiIsIGhlaWdodDogNTIsIHdlaWdodDogMTEwIH0gfSwKLSAgICAgICAgeyBrZXk6ICIyMzct
MjMtNzczMiIsIHZhbHVlOiB7IG5hbWU6ICJCb2IiLCBoZWlnaHQ6IDYwLCB3ZWlnaHQ6IDEyMCB9
IH0sCi0gICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzYiLCB2YWx1ZTogeyBuYW1lOiAiSm9lIiwg
aGVpZ2h0OiA2NSwgd2VpZ2h0OiAxNTAgfSB9LAotICAgICAgICB7IGtleTogIjIzNy0yMy03NzM3
IiwgdmFsdWU6IHsgbmFtZTogIlBhdCIsIGhlaWdodDogNjUsIHdlaWdodDogMTAwIH0gfSwKLSAg
ICAgICAgeyBrZXk6ICIyMzctMjMtNzczNCIsIHZhbHVlOiB7IG5hbWU6ICJSb24iLCBoZWlnaHQ6
IDczLCB3ZWlnaHQ6IDE4MCB9IH0sCi0gICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzUiLCB2YWx1
ZTogeyBuYW1lOiAiU3VlIiwgaGVpZ2h0OiA1OCwgd2VpZ2h0OiAxMzAgfSB9Ci0gICAgXTsKLQot
ICAgIG9iamVjdFN0b3JlRGF0YVdlaWdodFNvcnQgPSBbCi0gICAgICAgIHsga2V5OiAiMjM3LTIz
LTc3MzciLCB2YWx1ZTogeyBuYW1lOiAiUGF0IiwgaGVpZ2h0OiA2NSwgd2VpZ2h0OiAxMDAgfSB9
LAotICAgICAgICB7IGtleTogIjIzNy0yMy03NzMzIiwgdmFsdWU6IHsgbmFtZTogIkFubiIsIGhl
aWdodDogNTIsIHdlaWdodDogMTEwIH0gfSwKLSAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczMiIs
IHZhbHVlOiB7IG5hbWU6ICJCb2IiLCBoZWlnaHQ6IDYwLCB3ZWlnaHQ6IDEyMCB9IH0sCi0gICAg
ICAgIHsga2V5OiAiMjM3LTIzLTc3MzUiLCB2YWx1ZTogeyBuYW1lOiAiU3VlIiwgaGVpZ2h0OiA1
OCwgd2VpZ2h0OiAxMzAgfSB9LAotICAgICAgICB7IGtleTogIjIzNy0yMy03NzM2IiwgdmFsdWU6
IHsgbmFtZTogIkpvZSIsIGhlaWdodDogNjUsIHdlaWdodDogMTUwIH0gfSwKLSAgICAgICAgeyBr
ZXk6ICIyMzctMjMtNzczNCIsIHZhbHVlOiB7IG5hbWU6ICJSb24iLCBoZWlnaHQ6IDczLCB3ZWln
aHQ6IDE4MCB9IH0KLSAgICBdOwotCi0gICAgb2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydCA9IFsK
LSAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczMyIsIHZhbHVlOiB7IG5hbWU6ICJBbm4iLCBoZWln
aHQ6IDUyLCB3ZWlnaHQ6IDExMCB9IH0sCi0gICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzUiLCB2
YWx1ZTogeyBuYW1lOiAiU3VlIiwgaGVpZ2h0OiA1OCwgd2VpZ2h0OiAxMzAgfSB9LAotICAgICAg
ICB7IGtleTogIjIzNy0yMy03NzMyIiwgdmFsdWU6IHsgbmFtZTogIkJvYiIsIGhlaWdodDogNjAs
IHdlaWdodDogMTIwIH0gfSwKLSAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNiIsIHZhbHVlOiB7
IG5hbWU6ICJKb2UiLCBoZWlnaHQ6IDY1LCB3ZWlnaHQ6IDE1MCB9IH0sCi0gICAgICAgIHsga2V5
OiAiMjM3LTIzLTc3MzciLCB2YWx1ZTogeyBuYW1lOiAiUGF0IiwgaGVpZ2h0OiA2NSwgd2VpZ2h0
OiAxMDAgfSB9LAotICAgICAgICB7IGtleTogIjIzNy0yMy03NzM0IiwgdmFsdWU6IHsgbmFtZTog
IlJvbiIsIGhlaWdodDogNzMsIHdlaWdodDogMTgwIH0gfQotICAgIF07Ci0KLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZTsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY3JlYXRl
QW5kUG9wdWxhdGVPYmplY3RTdG9yZSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRi
KTsKLSAgICB0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Ci0KLSAgICBvYmplY3RTdG9yZSA9
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3Rv
cmVOYW1lKTsiKTsKLQotICAgIGRlYnVnKCJGaXJzdCwgYWRkIGFsbCBvdXIgZGF0YSB0byB0aGUg
b2JqZWN0IHN0b3JlLiIpOwotICAgIGFkZGVkRGF0YSA9IDA7Ci0gICAgZm9yIChpIGluIG9iamVj
dFN0b3JlRGF0YSkgewotICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmpl
Y3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW2ldLnZhbHVlLCBvYmplY3RTdG9yZURhdGFbaV0u
a2V5KTsiKTsKLSAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBp
ZiAoKythZGRlZERhdGEgPT0gb2JqZWN0U3RvcmVEYXRhLmxlbmd0aCkgewotICAgICAgICAgIGNy
ZWF0ZUluZGV4ZXMoKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24g
Y3JlYXRlSW5kZXhlcygpCi17Ci0gICAgZGVidWcoIk5vdyBjcmVhdGUgdGhlIGluZGV4ZXMuIik7
Ci0gICAgZm9yIChpIGluIGluZGV4RGF0YSkgewotICAgICAgZXZhbEFuZExvZygib2JqZWN0U3Rv
cmUuY3JlYXRlSW5kZXgoaW5kZXhEYXRhW2ldLm5hbWUsIGluZGV4RGF0YVtpXS5rZXlQYXRoLCBp
bmRleERhdGFbaV0ub3B0aW9ucyk7Iik7Ci0gICAgfQotICAgIHNob3VsZEJlKCJvYmplY3RTdG9y
ZS5pbmRleE5hbWVzLmxlbmd0aCIsICJpbmRleERhdGEubGVuZ3RoIik7Ci0gICAgdHJhbnMub25j
b21wbGV0ZSA9IHNldFZlcnNpb25Db21wbGV0ZTsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvbkNv
bXBsZXRlKCkKLXsKLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0g
ZGIudHJhbnNhY3Rpb24ob2JqZWN0U3RvcmVOYW1lKS5vYmplY3RTdG9yZShvYmplY3RTdG9yZU5h
bWUpOyIpOwotCi0gICAgLy8gQ2hlY2sgZ2xvYmFsIHByb3BlcnRpZXMgdG8gbWFrZSBzdXJlIHRo
ZXkgYXJlIGNvcnJlY3QuCi0gICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLmluZGV4TmFtZXMubGVu
Z3RoIiwgImluZGV4RGF0YS5sZW5ndGgiKTsKLSAgICBmb3IgKGkgaW4gaW5kZXhEYXRhKSB7Ci0g
ICAgICAgIGZvdW5kID0gZmFsc2U7Ci0gICAgICAgIGZvciAoaiA9IDA7IGogPCBvYmplY3RTdG9y
ZS5pbmRleE5hbWVzLmxlbmd0aDsgaisrKSB7Ci0gICAgICAgICAgICBpZiAob2JqZWN0U3RvcmUu
aW5kZXhOYW1lcy5pdGVtKGopID09IGluZGV4RGF0YVtpXS5uYW1lKSB7Ci0gICAgICAgICAgICAg
ICAgZm91bmQgPSB0cnVlOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgiZm91bmQiKTsKLSAgICAgICAgaW5kZXgg
PSBldmFsQW5kTG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmluZGV4KGluZGV4RGF0YVtpXS5uYW1l
KTsiKTsKLSAgICAgICAgc2hvdWxkQmUoImluZGV4Lm5hbWUiLCAiaW5kZXhEYXRhW2ldLm5hbWUi
KTsKLSAgICAgICAgc2hvdWxkQmUoImluZGV4LmtleVBhdGgiLCAiaW5kZXhEYXRhW2ldLmtleVBh
dGgiKTsKLSAgICAgICAgc2hvdWxkQmUoImluZGV4LnVuaXF1ZSIsIGluZGV4RGF0YVtpXS5vcHRp
b25zLnVuaXF1ZSA/ICJ0cnVlIiA6ICJmYWxzZSIpOwotICAgIH0KLQotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5nZXRLZXkoJ0Jv
YicpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2hlY2tHZXRLZXk7Ci19Ci0KLWZ1bmN0aW9uIGNoZWNr
R2V0S2V5KCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICInMjM3LTIz
LTc3MzInIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0
b3JlLmluZGV4KCduYW1lJykuZ2V0KCdCb2InKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNoZWNrR2V0
OwotfQotCi1mdW5jdGlvbiBjaGVja0dldCgpCi17Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdl
dC5yZXN1bHQubmFtZSIsICInQm9iJyIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVz
dWx0LmhlaWdodCIsICI2MCIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0Lndl
aWdodCIsICIxMjAiKTsKLQotICAgIGtleUluZGV4ID0gMDsKLQotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuS2V5Q3Vyc29y
KCk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAgY3Vyc29y
ID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgICAg
aWYgKGN1cnNvcikgewotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0
U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJ
bmRleF0ua2V5Iik7Ci0gICAgICAgICAgICBzaG91bGRCZUZhbHNlKCIndmFsdWUnIGluIGN1cnNv
ciIpOwotCi0gICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKLQot
ICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNv
cnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
cHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7Ci0g
ICAgICAgICAgICBzaG91bGRCZUZhbHNlKCIndmFsdWUnIGluIGN1cnNvciIpOwotCi0gICAgICAg
ICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2Ug
ewotICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJvYmplY3RTdG9yZURhdGEubGVuZ3Ro
Iik7Ci0gICAgICAgICAgdGVzdEdyb3VwMygpOwotICAgICAgICB9Ci0gICAgfTsKLX0KLQotZnVu
Y3Rpb24gdGVzdEdyb3VwMygpCi17Ci0gICAga2V5SW5kZXggPSAwOwotCi0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnd2VpZ2h0Jykub3Blbktl
eUN1cnNvcihudWxsLCBJREJDdXJzb3IuTkVYVCk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlv
biAoZXZlbnQpIHsKLSAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICAgICAgc2hv
dWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhV2VpZ2h0U29ydFtrZXlJbmRleF0u
dmFsdWUud2VpZ2h0Iik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXki
LCAib2JqZWN0U3RvcmVEYXRhV2VpZ2h0U29ydFtrZXlJbmRleF0ua2V5Iik7Ci0KLSAgICAgICAg
ICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOwotCi0gICAgICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFXZWlnaHRTb3J0W2tleUluZGV4XS52
YWx1ZS53ZWlnaHQiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIs
ICJvYmplY3RTdG9yZURhdGFXZWlnaHRTb3J0W2tleUluZGV4XS5rZXkiKTsKLQotICAgICAgICAg
ICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJvYmplY3RTdG9yZURhdGEubGVuZ3Ro
Iik7Ci0gICAgICAgICAgICB0ZXN0R3JvdXA0KCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1
bmN0aW9uIHRlc3RHcm91cDQoKQotewotLyogdGhpcyB3YXMgc3BsaXQgb3V0IGludG8gYSBzZXBh
cmF0ZSB0ZXN0Ci0gICAgZGVidWcoIkNoZWNrIHRoYXQgdGhlIG5hbWUgaW5kZXggZW5mb3JjZXMg
aXRzIHVuaXF1ZSBjb25zdHJhaW50LiIpOwotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygi
b2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUsIElEQlRyYW5zYWN0
aW9uLlJFQURfV1JJVEUpLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7Iik7Ci0gICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigib2JqZWN0U3RvcmUuYWRkKHsgbmFtZTogJ0JvYicsIGhlaWdo
dDogNjIsIHdlaWdodDogMTcwIH0sICcyMzctMjMtNzczOCcpOyIsICJJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5DT05TVFJBSU5UX0VSUiIpOwotKi8KLQotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExv
Zygib2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUpLm9iamVjdFN0
b3JlKG9iamVjdFN0b3JlTmFtZSk7Iik7Ci0gICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJ
bmRleCA9IG9iamVjdFN0b3JlRGF0YU5hbWVTb3J0Lmxlbmd0aCAtIDE7Iik7Ci0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9wZW5L
ZXlDdXJzb3IobnVsbCwgSURCQ3Vyc29yLlBSRVYpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24gKGV2ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50
LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52
YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAi
b2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotCi0gICAgICAgICAgICBl
dmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKLQotICAgICAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5h
bWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RT
dG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7Ci0KLSAgICAgICAgICAgIGV2YWxBbmRM
b2coImtleUluZGV4LS07Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICBzaG91bGRCZSgia2V5SW5kZXgiLCAiLTEiKTsKLSAgICAgICAgICAgIHRlc3RHcm91cDUoKTsK
LSAgICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdEdyb3VwNSgpCi17Ci0gICAga2V5
SW5kZXggPSAxOwotICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlS
YW5nZS5ib3VuZCgnQm9iJywgJ1JvbicpOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuS2V5Q3Vyc29yKGtleVJhbmdl
KTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewotICAgICAgICBjdXJzb3Ig
PSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgICAgICBp
ZiAoY3Vyc29yKSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RT
dG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOwotICAgICAgICAgICAgc2hv
dWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUlu
ZGV4XS5rZXkiKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIp
OwotICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKLSAgICAgICAgfQotICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICI1Iik7Ci0gICAg
ICAgICAgICB0ZXN0R3JvdXA2KCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRl
c3RHcm91cDYoKQotewotICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAyOyIp
OwotICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5ib3Vu
ZCgnQm9iJywgJ1JvbicsIHRydWUpOyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9wZW5LZXlDdXJzb3Ioa2V5UmFuZ2Up
OyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9
IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICAgIGlm
IChjdXJzb3IpIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0
b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5k
ZXhdLmtleSIpOwotCi0gICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsi
KTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7Ci0gICAgICAgIH0KLSAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNSIpOwotICAg
ICAgICAgICAgdGVzdEdyb3VwNygpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0
ZXN0R3JvdXA3KCkKLXsKLSAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gMTsi
KTsKLSAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtleVJhbmdlID0gSURCS2V5UmFuZ2UuYm91
bmQoJ0JvYicsICdSb24nLCBmYWxzZSwgdHJ1ZSk7Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCduYW1lJykub3BlbktleUN1cnNvcihr
ZXlSYW5nZSk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAg
Y3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAg
ICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAi
b2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29y
dFtrZXlJbmRleF0ua2V5Iik7Ci0KLSAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250
aW51ZSgpOyIpOwotICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKLSAgICAg
ICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICI0
Iik7Ci0gICAgICAgICAgICB0ZXN0R3JvdXA4KCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1
bmN0aW9uIHRlc3RHcm91cDgoKQotewotICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5k
ZXggPSAyOyIpOwotICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlS
YW5nZS5ib3VuZCgnQm9iJywgJ1JvbicsIHRydWUsIHRydWUpOyIpOwotCi0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9wZW5LZXlD
dXJzb3Ioa2V5UmFuZ2UpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0g
ICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7
Iik7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
a2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0g
ICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRh
TmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotCi0gICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJz
b3IuY29udGludWUoKTsiKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7
Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgia2V5SW5k
ZXgiLCAiNCIpOwotICAgICAgICAgICAgdGVzdEdyb3VwOSgpOwotICAgICAgICB9Ci0gICAgfQot
fQotCi1mdW5jdGlvbiB0ZXN0R3JvdXA5KCkKLXsKLSAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2co
ImtleUluZGV4ID0gMTsiKTsKLSAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtleVJhbmdlID0g
SURCS2V5UmFuZ2UubG93ZXJCb3VuZCgnQm9iJyk7Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCduYW1lJykub3BlbktleUN1cnNvcihr
ZXlSYW5nZSk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAg
Y3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAg
ICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAi
b2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29y
dFtrZXlJbmRleF0ua2V5Iik7Ci0KLSAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250
aW51ZSgpOyIpOwotICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKLSAgICAg
ICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJv
YmplY3RTdG9yZURhdGFOYW1lU29ydC5sZW5ndGgiKTsKLSAgICAgICAgICAgIHRlc3RHcm91cDEw
KCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDEwKCkKLXsKLSAg
ICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gMjsiKTsKLSAgICBrZXlSYW5nZSA9
IGV2YWxBbmRMb2coImtleVJhbmdlID0gSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgnQm9iJywgdHJ1
ZSk7Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3Jl
LmluZGV4KCduYW1lJykub3BlbktleUN1cnNvcihrZXlSYW5nZSk7Iik7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29y
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgICAgaWYgKGN1cnNvcikgewotICAgICAg
ICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5
SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFy
eUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7Ci0KLSAgICAg
ICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOwotICAgICAgICAgICAgZXZh
bEFuZExvZygia2V5SW5kZXgrKzsiKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydC5sZW5n
dGgiKTsKLSAgICAgICAgICAgIHRlc3RHcm91cDExKCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0K
LWZ1bmN0aW9uIHRlc3RHcm91cDExKCkKLXsKLSAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtl
eUluZGV4ID0gMDsiKTsKLSAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtleVJhbmdlID0gSURC
S2V5UmFuZ2UudXBwZXJCb3VuZCgnSm9lJyk7Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCduYW1lJykub3BlbktleUN1cnNvcihrZXlS
YW5nZSk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAgY3Vy
c29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAg
ICAgaWYgKGN1cnNvcikgewotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2Jq
ZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAg
IHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtr
ZXlJbmRleF0ua2V5Iik7Ci0KLSAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51
ZSgpOyIpOwotICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKLSAgICAgICAg
fQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiMyIpOwot
ICAgICAgICAgIHRlc3RHcm91cDEyKCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9u
IHRlc3RHcm91cDEyKCkKLXsKLSAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0g
MDsiKTsKLSAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtleVJhbmdlID0gSURCS2V5UmFuZ2Uu
dXBwZXJCb3VuZCgnSm9lJywgdHJ1ZSk7Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCduYW1lJykub3BlbktleUN1cnNvcihrZXlSYW5n
ZSk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAgY3Vyc29y
ID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgICAg
aWYgKGN1cnNvcikgewotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0
U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJ
bmRleF0ua2V5Iik7Ci0KLSAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgp
OyIpOwotICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKLSAgICAgICAgfQot
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICIyIik7Ci0g
ICAgICAgICAgICB0ZXN0R3JvdXAxMygpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1mdW5jdGlv
biB0ZXN0R3JvdXAxMygpCi17Ci0gICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9
IDM7Iik7Ci0gICAga2V5UmFuZ2UgPSBldmFsQW5kTG9nKCJrZXlSYW5nZSA9IElEQktleVJhbmdl
Lm9ubHkoJ1BhdCcpOyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBv
YmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9wZW5LZXlDdXJzb3Ioa2V5UmFuZ2UpOyIpOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2YWxBbmRM
b2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICAgIGlmIChjdXJzb3Ip
IHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5h
bWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vy
c29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIp
OwotCi0gICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKLSAgICAg
ICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNCIpOwotICAgICAgICAgICAg
dGVzdEdyb3VwMTQoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdEdyb3Vw
MTQoKQotewotICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAwOyIpOwotCi0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFt
ZScpLm9wZW5DdXJzb3IoKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewot
ICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0
OyIpOwotICAgICAgICBpZiAoY3Vyc29yKSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29y
LmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOwot
ICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0
YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
dmFsdWUubmFtZSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFt
ZSIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQiLCAib2JqZWN0
U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOwotICAgICAgICAgICAg
aWYgKCd3ZWlnaHQnIGluIGN1cnNvci52YWx1ZSkgewotICAgICAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4
XS52YWx1ZS53ZWlnaHQiKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZXZhbEFuZExv
ZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7Ci0KLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
a2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0g
ICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRh
TmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52
YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1l
Iik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RT
dG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7Ci0gICAgICAgICAgICBp
ZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci52YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhd
LnZhbHVlLndlaWdodCIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBldmFsQW5kTG9n
KCJrZXlJbmRleCsrOyIpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAg
c2hvdWxkQmUoImtleUluZGV4IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0Lmxlbmd0aCIpOwot
ICAgICAgICAgICAgdGVzdEdyb3VwMTUoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rp
b24gdGVzdEdyb3VwMTUoKQotewotICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXgg
PSBvYmplY3RTdG9yZURhdGFOYW1lU29ydC5sZW5ndGggLSAxOyIpOwotCi0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9wZW5DdXJz
b3IobnVsbCwgSURCQ3Vyc29yLlBSRVYpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2
ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQ7Iik7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5u
YW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0
U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotICAgICAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52
YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIs
ICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7Ci0gICAg
ICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7Ci0gICAgICAgICAgICAgICAg
c2hvdWxkQmUoImN1cnNvci52YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRb
a2V5SW5kZXhdLnZhbHVlLndlaWdodCIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBl
dmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKLQotICAgICAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5h
bWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RT
dG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7Ci0gICAgICAgICAgICBzaG91bGRCZSgi
Y3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZh
bHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0Iiwg
Im9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKLSAgICAg
ICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKLSAgICAgICAgICAgICAgICBz
aG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtr
ZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGtl
eUluZGV4LS07Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBzaG91bGRC
ZSgia2V5SW5kZXgiLCAiLTEiKTsKLSAgICAgICAgICAgIHRlc3RHcm91cDE2KCk7Ci0gICAgICAg
IH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDE2KCkKLXsKLSAgICBrZXlJbmRleCA9
IGV2YWxBbmRMb2coImtleUluZGV4ID0gMTsiKTsKLSAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2co
ImtleVJhbmdlID0gSURCS2V5UmFuZ2UuYm91bmQoJ0JvYicsICdSb24nKTsiKTsKLQotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5v
cGVuQ3Vyc29yKGtleVJhbmdlKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkg
ewotICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVz
dWx0OyIpOwotICAgICAgICBpZiAoY3Vyc29yKSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vy
c29yLmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIp
OwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3Jl
RGF0YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJz
b3IudmFsdWUubmFtZSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUu
bmFtZSIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQiLCAib2Jq
ZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOwotICAgICAgICAg
ICAgaWYgKCd3ZWlnaHQnIGluIGN1cnNvci52YWx1ZSkgewotICAgICAgICAgICAgICAgICAgc2hv
dWxkQmUoImN1cnNvci52YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5
SW5kZXhdLnZhbHVlLndlaWdodCIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBldmFs
QW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKLQotICAgICAgICAgICAgc2hvdWxkQmUoImN1
cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUi
KTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9y
ZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vy
c29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVl
Lm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0IiwgIm9i
amVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKLSAgICAgICAg
ICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKLSAgICAgICAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tl
eUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZXZh
bEFuZExvZygia2V5SW5kZXgrKzsiKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICI1Iik7Ci0gICAgICAgICAgICB0ZXN0R3JvdXAx
NygpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXAxNygpCi17Ci0g
ICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDI7Iik7Ci0gICAga2V5UmFuZ2Ug
PSBldmFsQW5kTG9nKCJrZXlSYW5nZSA9IElEQktleVJhbmdlLmJvdW5kKCdCb2InLCAnUm9uJywg
dHJ1ZSk7Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0
b3JlLmluZGV4KCduYW1lJykub3BlbkN1cnNvcihrZXlSYW5nZSk7Iik7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29y
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgICAgaWYgKGN1cnNvcikgewotICAgICAg
ICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5
SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFy
eUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7Ci0gICAgICAg
ICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNv
cnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
dmFsdWUuaGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5o
ZWlnaHQiKTsKLSAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKLSAg
ICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0
b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7Ci0KLSAgICAg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tl
eUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1h
cnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotICAgICAg
ICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0YU5hbWVT
b3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29y
LnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUu
aGVpZ2h0Iik7Ci0gICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7Ci0g
ICAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIsICJvYmplY3RT
dG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7Ci0gICAgICAgIH0KLSAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNSIpOwotICAg
ICAgICAgICAgdGVzdEdyb3VwMTgoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24g
dGVzdEdyb3VwMTgoKQotewotICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAx
OyIpOwotICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5i
b3VuZCgnQm9iJywgJ1JvbicsIGZhbHNlLCB0cnVlKTsiKTsKLQotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuQ3Vyc29yKGtl
eVJhbmdlKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewotICAgICAgICBj
dXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAg
ICAgICBpZiAoY3Vyc29yKSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJv
YmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOwotICAgICAgICAg
ICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0
W2tleUluZGV4XS5rZXkiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUubmFt
ZSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOwotICAg
ICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRh
TmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOwotICAgICAgICAgICAgaWYgKCd3ZWln
aHQnIGluIGN1cnNvci52YWx1ZSkgewotICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNv
ci52YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVl
LndlaWdodCIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJz
b3IuY29udGludWUoKTsiKTsKLQotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAi
b2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29y
dFtrZXlJbmRleF0ua2V5Iik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLm5h
bWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAg
ICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0
YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKLSAgICAgICAgICAgIGlmICgnd2Vp
Z2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKLSAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJz
b3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1
ZS53ZWlnaHQiKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZXZhbEFuZExvZygia2V5
SW5kZXgrKzsiKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHNob3Vs
ZEJlKCJrZXlJbmRleCIsICI0Iik7Ci0gICAgICAgICAgICB0ZXN0R3JvdXAxOSgpOwotICAgICAg
ICB9Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXAxOSgpCi17Ci0gICAga2V5SW5kZXgg
PSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDI7Iik7Ci0gICAga2V5UmFuZ2UgPSBldmFsQW5kTG9n
KCJrZXlSYW5nZSA9IElEQktleVJhbmdlLmJvdW5kKCdCb2InLCAnUm9uJywgdHJ1ZSwgdHJ1ZSk7
Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmlu
ZGV4KCduYW1lJykub3BlbkN1cnNvcihrZXlSYW5nZSk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbiAoZXZlbnQpIHsKLSAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZl
bnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICAgICAg
c2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhd
LnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIs
ICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7Ci0gICAgICAgICAgICBz
aG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5
SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUu
aGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQi
KTsKLSAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKLSAgICAgICAg
ICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0
YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7Ci0KLSAgICAgICAgICAg
IHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4
XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXki
LCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotICAgICAgICAgICAg
c2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tl
eUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVl
LmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0
Iik7Ci0gICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7Ci0gICAgICAg
ICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIsICJvYmplY3RTdG9yZURh
dGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7Ci0gICAgICAgIH0KLSAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNCIpOwotICAgICAgICAg
ICAgdGVzdEdyb3VwMjAoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdEdy
b3VwMjAoKQotewotICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSA0OyIpOwot
ICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5ib3VuZCgn
Qm9iJywgJ1JvbicpOyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBv
YmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9wZW5DdXJzb3Ioa2V5UmFuZ2UsIElEQkN1cnNvci5Q
UkVWKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewotICAgICAgICBjdXJz
b3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgICAg
ICBpZiAoY3Vyc29yKSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmpl
Y3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOwotICAgICAgICAgICAg
c2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tl
eUluZGV4XS5rZXkiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUubmFtZSIs
ICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOwotICAgICAg
ICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFt
ZVNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOwotICAgICAgICAgICAgaWYgKCd3ZWlnaHQn
IGluIGN1cnNvci52YWx1ZSkgewotICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52
YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLndl
aWdodCIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3Iu
Y29udGludWUoKTsiKTsKLQotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2Jq
ZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAg
IHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtr
ZXlJbmRleF0ua2V5Iik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUi
LCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5h
bWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKLSAgICAgICAgICAgIGlmICgnd2VpZ2h0
JyBpbiBjdXJzb3IudmFsdWUpIHsKLSAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
dmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS53
ZWlnaHQiKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5k
ZXgtLTsiKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHNob3VsZEJl
KCJrZXlJbmRleCIsICIwIik7Ci0gICAgICAgICAgICB0ZXN0R3JvdXAyMSgpOwotICAgICAgICB9
Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXAyMSgpCi17Ci0gICAga2V5SW5kZXggPSBl
dmFsQW5kTG9nKCJrZXlJbmRleCA9IDM7Iik7Ci0gICAga2V5UmFuZ2UgPSBldmFsQW5kTG9nKCJr
ZXlSYW5nZSA9IElEQktleVJhbmdlLm9ubHkoNjUpOyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnaGVpZ2h0Jykub3BlbktleUN1cnNv
cihrZXlSYW5nZSwgSURCQ3Vyc29yLk5FWFQpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24g
KGV2ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRh
cmdldC5yZXN1bHQ7Iik7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgICAgIHNob3Vs
ZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZh
bHVlLmhlaWdodCIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5Iiwg
Im9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLmtleSIpOwotCi0gICAgICAgICAg
ICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKLSAgICAgICAgICAgIGV2YWxBbmRM
b2coImtleUluZGV4Kys7Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNSIpOwotICAgICAgICAgICAgdGVzdEdyb3VwMjIoKTsK
LSAgICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdEdyb3VwMjIoKQotewotICAgIGtl
eUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAzOyIpOwotICAgIGtleVJhbmdlID0gZXZh
bEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5vbmx5KDY1KTsiKTsKLQotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ2hlaWdodCcpLm9w
ZW5LZXlDdXJzb3Ioa2V5UmFuZ2UsIElEQkN1cnNvci5ORVhUX05PX0RVUExJQ0FURSk7Iik7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAgY3Vyc29yID0gZXZhbEFu
ZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgICAgaWYgKGN1cnNv
cikgewotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRh
SGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7Ci0gICAgICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRl
eF0ua2V5Iik7Ci0KLSAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIp
OwotICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKLSAgICAgICAgfQotICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICI0Iik7Ci0gICAg
ICAgICAgICB0ZXN0R3JvdXAyNCgpOwotICAgICAgICB9Ci0gICAgfQotfQotCi0vKiB0aGlzIHdh
cyBzcGxpdCBvdXQgaW50byBhIHNlcGFyYXRlIHRlc3QKLWZ1bmN0aW9uIHRlc3RHcm91cDIzKCkK
LXsKLSAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gNTsiKTsKLQotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ2hlaWdodCcp
Lm9wZW5LZXlDdXJzb3IobnVsbCwgSURCQ3Vyc29yLlBSRVZfTk9fRFVQTElDQVRFKTsiKTsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewotICAgICAgICBjdXJzb3IgPSBldmFsQW5k
TG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgICAgICBpZiAoY3Vyc29y
KSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFI
ZWlnaHRTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKLSAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tleUluZGV4
XS5rZXkiKTsKLQotICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7
Ci0gICAgICAgICAgICBpZiAoa2V5SW5kZXggPT0gNSkgewotICAgICAgICAgICAgICAgIGV2YWxB
bmRMb2coImtleUluZGV4LS07Iik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBldmFsQW5k
TG9nKCJrZXlJbmRleC0tOyIpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgc2hvdWxkQmUoImtleUluZGV4IiwgIi0xIik7Ci0gICAgICAgICAgICB0ZXN0R3JvdXAyNCgp
OwotICAgICAgICB9Ci0gICAgfQotfQotKi8KLQotZnVuY3Rpb24gdGVzdEdyb3VwMjQoKQotewot
ICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAzOyIpOwotICAgIGtleVJhbmdl
ID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5vbmx5KDY1KTsiKTsKLQotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ2hlaWdo
dCcpLm9wZW5DdXJzb3Ioa2V5UmFuZ2UsIElEQkN1cnNvci5ORVhUKTsiKTsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uIChldmVudCkgewotICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJz
b3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgICAgICBpZiAoY3Vyc29yKSB7Ci0gICAg
ICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0
W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
cHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tleUluZGV4XS5rZXkiKTsK
LSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUubmFtZSIsICJvYmplY3RTdG9yZURh
dGFIZWlnaHRTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tleUlu
ZGV4XS52YWx1ZS5oZWlnaHQiKTsKLSAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3Iu
dmFsdWUpIHsKLSAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIs
ICJvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7
Iik7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOwotICAgICAgICB9Ci0g
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIjUiKTsKLSAg
ICAgICAgICAgIHRlc3RHcm91cDI1KCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9u
IHRlc3RHcm91cDI1KCkKLXsKLSAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0g
MzsiKTsKLSAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtleVJhbmdlID0gSURCS2V5UmFuZ2Uu
b25seSg2NSk7Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVj
dFN0b3JlLmluZGV4KCdoZWlnaHQnKS5vcGVuQ3Vyc29yKGtleVJhbmdlLCBJREJDdXJzb3IuTkVY
VF9OT19EVVBMSUNBVEUpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0g
ICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7
Iik7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
a2V5IiwgIm9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIp
OwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3Jl
RGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLmtleSIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1
cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZh
bHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0Iiwg
Im9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOwotICAg
ICAgICAgICAgaWYgKCd3ZWlnaHQnIGluIGN1cnNvci52YWx1ZSkgewotICAgICAgICAgICAgICAg
IHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YUhlaWdodFNv
cnRba2V5SW5kZXhdLnZhbHVlLndlaWdodCIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKLSAgICAgICAgICAgIGV2YWxBbmRM
b2coImtleUluZGV4Kys7Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNCIpOwotICAgICAgICAgICAgdGVzdEdyb3VwMjcoKTsK
LSAgICAgICAgfQotICAgIH0KLX0KLQotLyogdGhpcyB3YXMgc3BsaXQgb3V0IGludG8gYSBzZXBh
cmF0ZSB0ZXN0Ci1mdW5jdGlvbiB0ZXN0R3JvdXAyNigpCi17Ci0gICAga2V5SW5kZXggPSBldmFs
QW5kTG9nKCJrZXlJbmRleCA9IDU7Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVx
dWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCdoZWlnaHQnKS5vcGVuQ3Vyc29yKG51bGwsIElEQkN1
cnNvci5QUkVWX05PX0RVUExJQ0FURSk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZl
bnQpIHsKLSAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0
LnJlc3VsdDsiKTsKLSAgICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUu
aGVpZ2h0Iik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2Jq
ZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0ua2V5Iik7Ci0gICAgICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJ
bmRleF0udmFsdWUubmFtZSIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5o
ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0
Iik7Ci0gICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7Ci0gICAgICAg
ICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRh
SGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOwotICAgICAgICAgICAg
aWYgKGtleUluZGV4ID09IDUpIHsKLSAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRl
eC0tOyIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgt
LTsiKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJr
ZXlJbmRleCIsICItMSIpOwotICAgICAgICAgICAgdGVzdEdyb3VwMjcoKTsKLSAgICAgICAgfQot
ICAgIH0KLX0KLSovCi0KLWZ1bmN0aW9uIHRlc3RHcm91cDI3KCkKLXsKLSAgICBrZXlJbmRleCA9
IGV2YWxBbmRMb2coImtleUluZGV4ID0gMDsiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuS2V5Q3Vyc29yKCk7Iik7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAgY3Vyc29yID0gZXZh
bEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgICAgaWYgKGN1
cnNvcikgewotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVE
YXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0u
a2V5Iik7Ci0KLSAgICAgICAgICAgIG5leHRLZXkgPSBldmFsQW5kTG9nKCJuZXh0S2V5ID0gIWtl
eUluZGV4ID8gJ1BhdCcgOiB1bmRlZmluZWQ7Iik7Ci0gICAgICAgICAgICBpZiAobmV4dEtleSkg
ewotICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZShuZXh0S2V5KTsi
KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vy
c29yLmNvbnRpbnVlKCk7Iik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5u
YW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0
U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotCi0gICAgICAgICAgICBpZiAoIWtl
eUluZGV4KSB7Ci0gICAgICAgICAgICAgICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRl
eCA9IDM7Iik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
ICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIm9iamVj
dFN0b3JlRGF0YS5sZW5ndGgiKTsKLSAgICAgICAgICAgIHRlc3RHcm91cDI4KCk7Ci0gICAgICAg
IH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDI4KCkKLXsKLSAgICBrZXlJbmRleCA9
IGV2YWxBbmRMb2coImtleUluZGV4ID0gMDsiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuS2V5Q3Vyc29yKCk7Iik7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAgY3Vyc29yID0gZXZh
bEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgICAgaWYgKGN1
cnNvcikgewotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVE
YXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0u
a2V5Iik7Ci0KLSAgICAgICAgICAgIG5leHRLZXkgPSBldmFsQW5kTG9nKCJuZXh0S2V5ID0gIWtl
eUluZGV4ID8gJ0ZsbycgOiB1bmRlZmluZWQ7Iik7Ci0gICAgICAgICAgICBpZiAobmV4dEtleSkg
ewotICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZShuZXh0S2V5KTsi
KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vy
c29yLmNvbnRpbnVlKCk7Iik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5u
YW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0
U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotCi0gICAgICAgICAgICBrZXlJbmRl
eCArPSBrZXlJbmRleCA/IDEgOiAyOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIm9iamVjdFN0b3JlRGF0YS5sZW5ndGgiKTsKLSAg
ICAgICAgICAgIHRlc3RHcm91cDI5KCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9u
IHRlc3RHcm91cDI5KCkKLXsKLSAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0g
MDsiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
aW5kZXgoJ25hbWUnKS5vcGVuQ3Vyc29yKCk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAo
ZXZlbnQpIHsKLSAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFy
Z2V0LnJlc3VsdDsiKTsKLSAgICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICAgICAgc2hvdWxk
QmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVl
Lm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmpl
Y3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7Ci0gICAgICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhd
LnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0
IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKLSAg
ICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKLSAgICAgICAgICAgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVT
b3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgbmV4dEtleSA9IGV2YWxBbmRMb2coIm5leHRLZXkgPSAha2V5SW5kZXggPyAnUGF0JyA6IHVu
ZGVmaW5lZDsiKTsKLSAgICAgICAgICAgIGlmIChuZXh0S2V5KSB7Ci0gICAgICAgICAgICAgICAg
ZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKG5leHRLZXkpOyIpOwotICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2Jq
ZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAg
IHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtr
ZXlJbmRleF0ua2V5Iik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUi
LCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5h
bWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKLSAgICAgICAgICAgIGlmICgnd2VpZ2h0
JyBpbiBjdXJzb3IudmFsdWUpIHsKLSAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
dmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS53
ZWlnaHQiKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCFrZXlJbmRleCkgewot
ICAgICAgICAgICAgICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAzOyIpOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgZXZhbEFu
ZExvZygia2V5SW5kZXgrKzsiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJvYmplY3RTdG9yZURhdGFO
YW1lU29ydC5sZW5ndGgiKTsKLSAgICAgICAgICAgIHRlc3RHcm91cDMwKCk7Ci0gICAgICAgIH0K
LSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDMwKCkKLXsKLSAgICBrZXlJbmRleCA9IGV2
YWxBbmRMb2coImtleUluZGV4ID0gMDsiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuQ3Vyc29yKCk7Iik7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAgY3Vyc29yID0gZXZhbEFuZExv
ZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgICAgaWYgKGN1cnNvcikg
ewotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFt
ZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJz
b3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7
Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVE
YXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3IudmFsdWUuaGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4
XS52YWx1ZS5oZWlnaHQiKTsKLSAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFs
dWUpIHsKLSAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0Iiwg
Im9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgbmV4dEtleSA9IGV2YWxBbmRMb2coIm5leHRLZXkgPSAh
a2V5SW5kZXggPyAnRmxvJyA6IHVuZGVmaW5lZDsiKTsKLSAgICAgICAgICAgIGlmIChuZXh0S2V5
KSB7Ci0gICAgICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKG5leHRLZXkp
OyIpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJj
dXJzb3IuY29udGludWUoKTsiKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgc2hvdWxk
QmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVl
Lm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmpl
Y3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7Ci0gICAgICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhd
LnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0
IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKLSAg
ICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKLSAgICAgICAgICAgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVT
b3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAga2V5SW5kZXggKz0ga2V5SW5kZXggPyAxIDogMjsKLSAgICAgICAgfQotICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJvYmplY3RTdG9yZURhdGFOYW1l
U29ydC5sZW5ndGgiKTsKLSAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgICAgICB9Ci0g
ICAgfQotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2luZGV4ZXMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEva2V5LXJlcXVp
cmVtZW50cy1kZWxldGUtbnVsbC1rZXkuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEva2V5LXJlcXVpcmVtZW50cy1kZWxldGUtbnVsbC1rZXkuaHRtbAppbmRleCBl
OTAwODg3Mjg5MDVhNDhjMmE2ZGQ3Y2E1ZTI5YmQxMDA0MDc0MjlhLi5jZjY2NzVmYTc0ZjcxNjk5
MjY5MDcwOWU3ZjczOTg4ZGVmMzRiNzJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMtZGVsZXRlLW51bGwta2V5Lmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWlyZW1l
bnRzLWRlbGV0ZS1udWxsLWtleS5odG1sCkBAIC0xLDUzICsxLDEwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTwhLS0KLSAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxh
Mi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9rZXlfcmVxdWlyZW1lbnRzLmh0bWwK
LSAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgotICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCi0gICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKLS0tPgogPGh0bWw+CiA8aGVhZD4KIDxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hl
YWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGJl
aGF2aW9yIGRlbGV0aW5nIGVudHJ5IHdpdGggbm8ga2V5Iik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQot
ewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlv
bi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3Mo
KQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0K
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNp
b24gMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlQW5kQ3JlYXRl
T2JqZWN0U3RvcmU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFuRGF0YWJhc2VBbmRDcmVhdGVPYmplY3RTdG9yZSgpCi17
Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLSAgICBvYmplY3RTdG9yZSA9IGV2YWxB
bmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2JhcicpOyIpOwotICAg
IGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIm9iamVjdFN0b3JlLmRlbGV0ZShudWxsKTsiLCAiSURC
RGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQot
Ci10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9rZXktcmVxdWly
ZW1lbnRzLWRlbGV0ZS1udWxsLWtleS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4K
IDwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9rZXktcmVxdWlyZW1lbnRzLWlubGluZS1hbmQtcGFzc2VkLmh0bWwgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMtaW5saW5lLWFuZC1w
YXNzZWQuaHRtbAppbmRleCBkYzM1ZTU4MTIwMjk3NGY3MGJhNGNmZjVjMDg0NjcyZmE0YmFjNjUy
Li5iOWRiM2I3MDkxZmIwZmZiMGNlMjJkYWUwNTQwN2I3MzZmYjQ1OGUyIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMtaW5s
aW5lLWFuZC1wYXNzZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL2tleS1yZXF1aXJlbWVudHMtaW5saW5lLWFuZC1wYXNzZWQuaHRtbApAQCAtMSw1NCAr
MSwxMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9t
eHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3Rf
a2V5X3JlcXVpcmVtZW50cy5odG1sCi0gIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKLSAgICAi
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgotICAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCi0tLT4K
IDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFy
ZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlv
bigiVGVzdCBJbmRleGVkREIncyBiZWhhdmlvciBhZGRpbmcgaW5saW5lIGFuZCBwYXNzZWQga2V5
IHNpbXVsdGFuZW91c2x5Iik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRv
clByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBk
ZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJv
cGVuU3VjY2VzcygpOiIpOwotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZl
cnNpb24oJ3ZlcnNpb24gMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFi
YXNlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQot
Ci1mdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKLXsKLSAgICBkZWJ1ZygiY2xlYW5EYXRhYmFzZSgp
OiIpOwotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0gICAgb2JqZWN0U3RvcmUgPSBl
dmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdiYXonLCB7IGtl
eVBhdGg6ICdpZCcgfSk7Iik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigib2JqZWN0U3Rv
cmUuYWRkKHtpZDogNX0sIDUpOyIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwot
ICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2tleS1yZXF1aXJlbWVudHMtaW5saW5lLWFuZC1wYXNzZWQuanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMtcHV0LW5vLWtl
eS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWly
ZW1lbnRzLXB1dC1uby1rZXkuaHRtbAppbmRleCA1NWRmMDhhM2E4Njk4Nzk2ZDA5ZGI5NzhmNWUz
YTA3ZjM2MTY4ZmRlLi42ZDRlMDU2MGIzOGIyZjY3ZGM2M2RkYTU0YTQ1Zjc1NTU0NTkyY2UwIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1
aXJlbWVudHMtcHV0LW5vLWtleS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEva2V5LXJlcXVpcmVtZW50cy1wdXQtbm8ta2V5Lmh0bWwKQEAgLTEsNTMgKzEs
MTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLQotICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhy
Lm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2tl
eV9yZXF1aXJlbWVudHMuaHRtbAotICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Ci0gICAgIiBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KLSAgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgotLS0+CiA8
aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVk
LmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24o
IlRlc3QgSW5kZXhlZERCJ3MgYmVoYXZpb3IgcHV0aW5nIHdpdGhvdXQga2V5Iik7Ci0KLWZ1bmN0
aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0g
c2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFi
YXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVz
Y3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24g
b3BlblN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZl
cnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rp
b24gY2xlYW5EYXRhYmFzZSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLSAg
ICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ2JhcicpOyIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIm9iamVjdFN0b3Jl
LnB1dCh7fSk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0gICAgZmluaXNo
SlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMva2V5LXJlcXVpcmVtZW50cy1wdXQtbm8ta2V5LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgogPC9ib2R5PgogPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMtcHV0LW51bGwta2V5Lmh0bWwgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMtcHV0LW51
bGwta2V5Lmh0bWwKaW5kZXggYjRlMjlkYTM3OTRiNDZmZjkxZWI2NWQ4ZTJiNzYzOTdmYmRmNzFk
NC4uNzBjOTI0MTk2MDdkM2Q3ZjFmYjIwMDQ4Y2I5ZjAwM2QyNTUzNjE5NCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWlyZW1lbnRzLXB1
dC1udWxsLWtleS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEva2V5LXJlcXVpcmVtZW50cy1wdXQtbnVsbC1rZXkuaHRtbApAQCAtMSw1MyArMSwxMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxs
YS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3Rfa2V5X3JlcXVp
cmVtZW50cy5odG1sCi0gIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgotICAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgog
PGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwv
c2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJ
bmRleGVkREIncyBiZWhhdmlvciBwdXQoKWluZyB3aXRoIG51bGwga2V5Iik7Ci0KLWZ1bmN0aW9u
IHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2Vs
Zi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNl
IjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3Jp
cHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3Bl
blN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVz
dWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNp
b24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24g
Y2xlYW5EYXRhYmFzZSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLSAgICBv
YmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ2JhcicpOyIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIm9iamVjdFN0b3JlLnB1
dCh7fSwgbnVsbCk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0gICAgZmlu
aXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMva2V5LXJlcXVpcmVtZW50cy1wdXQtbnVsbC1rZXkuanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vemlsbGEva2V5LXJlcXVpcmVtZW50cy5odG1sIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWlyZW1lbnRzLmh0bWwKaW5kZXggODMx
ZjIzNTI4MzBjN2ZiNTQ1YzRhNTE5OTA5ZWEzYzc1ZjgwZDhlNC4uYzMyNGZmNTE0ZDBlNWVmOTIy
Njk2ODU4ZmRlYjE2NGQ4MzViOWExYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWlyZW1lbnRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWlyZW1lbnRzLmh0bWwKQEAgLTEsODYg
KzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLQotICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8v
bXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0
X2tleV9yZXF1aXJlbWVudHMuaHRtbAotICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Ci0gICAg
IiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KLSAgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgotLS0+
CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hh
cmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRp
b24oIlRlc3QgSW5kZXhlZERCJ3MgZXZlbnQudGFyZ2V0LnJlc3VsdCBhZnRlciBhZGQoKSBhbmQg
cHV0KCkiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMo
KTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9u
ID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVk
REIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9w
ZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJk
YiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBj
bGVhbkRhdGFiYXNlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotfQotCi1mdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKLXsKLSAgICBkZWxldGVBbGxPYmpl
Y3RTdG9yZXMoZGIpOwotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUg
PSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJywgeyBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOyIp
OwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKHt9
KTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RBZGQ7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHBvc3RBZGQoKQot
ewotICAgIGtleTEgPSBldmFsQW5kTG9nKCJrZXkxID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsK
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCh7fSwg
a2V5MSk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0UHV0MTsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gcG9zdFB1
dDEoKQotewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgImtleTEiKTsKLSAg
ICBrZXkyID0gZXZhbEFuZExvZygia2V5MiA9IDEwOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KHt9LCBrZXkyKTsiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IHBvc3RQdXQyOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBwb3N0UHV0MigpCi17Ci0gICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldC5yZXN1bHQiLCAia2V5MiIpOwotICAgIGtleTIgPSBldmFsQW5kTG9nKCJr
ZXkyID0gMTAwOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0
U3RvcmUucHV0KHt9LCBrZXkyKTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RQdXQz
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1m
dW5jdGlvbiBwb3N0UHV0MygpCi17Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQi
LCAia2V5MiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2tleS1yZXF1aXJlbWVudHMuanMiPjwvc2NyaXB0
PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0LWN1cnNvcnMuaHRtbCBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0LWN1cnNvcnMuaHRtbAppbmRleCAx
MDJhYTBhNDE0MDAzOTFiYTlmMjZkNmIxZjI4NDc1Yzk0NTFhMzY1Li5hMTQ3MWU4NjllYjUzYjZj
MjBmZmI3ZTRjOGUxMDk5NWNlMTJkNzA4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL29iamVjdC1jdXJzb3JzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9vYmplY3QtY3Vyc29ycy5odG1sCkBAIC0xLDk3ICsx
LDEwIEBACi08IURPQ1RZUEUgaHRtbD4KLTwhLS0KLSAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214
ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9v
YmplY3RDdXJzb3JzLmh0bWwKLSAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgotICAgICIgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCi0gICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKLS0tPgogPGh0
bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5q
cyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJU
ZXN0IEluZGV4ZWREQidzIGluZGV4IGN1cnNvcnMiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0g
ICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBh
dGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17
Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOwotICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjbGVhbkRhdGFiYXNl
KCkKLXsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotICAgIGF1dG9JbmNyZW1lbnQg
PSBldmFsQW5kTG9nKCJhdXRvSW5jcmVtZW50ID0gZmFsc2U7Iik7Ci0gICAgb2JqZWN0U3RvcmUg
PSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdhJywgeyBr
ZXlQYXRoOiAnaWQnLCBhdXRvSW5jcmVtZW50OiBhdXRvSW5jcmVtZW50IH0pOyIpOwotICAgIGlu
ZGV4ZXMgPSBbCi0gICAgICAgIHsgbmFtZTogImEiLCBvcHRpb25zOiB7IH0gfSwKLSAgICAgICAg
eyBuYW1lOiAiYiIsIG9wdGlvbnM6IHsgdW5pcXVlOiB0cnVlIH0gfQotICAgIF07Ci0gICAgZm9y
IChqIGluIGluZGV4ZXMpIHsKLSAgICAgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuY3JlYXRl
SW5kZXgoaW5kZXhlc1tqXS5uYW1lLCAnbmFtZScsIGluZGV4ZXNbal0ub3B0aW9ucyk7Iik7Ci0g
ICAgfQotICAgIGRhdGEgPSBldmFsQW5kTG9nKCJkYXRhID0geyBuYW1lOiAnQmVuJywgaWQ6IDEg
fTsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFk
ZChkYXRhKTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RBZGQ7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHBvc3RB
ZGQoKQotewotICAgIG51bUluZGV4ZXMgPSBpbmRleGVzLmxlbmd0aDsKLSAgICBpbmRleGVzRmlu
aXNoZWQgPSAwOwotICAgIGZvciAoaiBpbiBpbmRleGVzKSB7Ci0gICAgICAgIGluZGV4ID0gZXZh
bEFuZExvZygiaW5kZXggPSBvYmplY3RTdG9yZS5pbmRleChpbmRleGVzW2pdLm5hbWUpOyIpOwot
ICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4Lm9wZW5DdXJzb3Io
KTsiKTsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAg
ICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLm5hbWUiLCAiJ0JlbiciKTsK
LSAgICAgICAgICAgIGlmICgrK2luZGV4ZXNGaW5pc2hlZCA9PSBudW1JbmRleGVzKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKGF1dG9JbmNyZW1lbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgc2V0dXBBdXRvSW5jcmVtZW50KCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fQotICAgICAgICB9OwotICAgIH0KLX0KLQotZnVuY3Rpb24gc2V0dXBBdXRvSW5jcmVtZW50KCkK
LXsKLSAgICBhdXRvSW5jcmVtZW50ID0gZXZhbEFuZExvZygiYXV0b0luY3JlbWVudCA9IHRydWU7
Iik7Ci0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdiJywgeyBrZXlQYXRoOiAnaWQnLCBhdXRvSW5jcmVtZW50OiBhdXRvSW5j
cmVtZW50IH0pOyIpOwotICAgIGZvciAoaiBpbiBpbmRleGVzKSB7Ci0gICAgICAgIGV2YWxBbmRM
b2coIm9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KGluZGV4ZXNbal0ubmFtZSwgJ25hbWUnLCBpbmRl
eGVzW2pdLm9wdGlvbnMpOyIpOwotICAgIH0KLSAgICBkYXRhID0gZXZhbEFuZExvZygiZGF0YSA9
IHsgbmFtZTogJ0JlbicgfTsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IG9iamVjdFN0b3JlLmFkZChkYXRhKTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RB
ZGQ7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0K
LQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb2JqZWN0LWN1
cnNvcnMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0LWlkZW50
aXR5Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29iamVjdC1p
ZGVudGl0eS5odG1sCmluZGV4IGU0MTI0OTYxMTg1MDRkODhhNjIwMjEzMGVmYjE3M2NjYjcxOGUy
NDcuLmQxMGJlOWQ3NjQ1NjdlMjVlZGRiZjljMzdjMjhiODNmOTliNTcyOWMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0LWlkZW50aXR5Lmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9vYmplY3QtaWRl
bnRpdHkuaHRtbApAQCAtMSw3NiArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9y
aWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9t
L2luZGV4ZWREQi90ZXN0L3Rlc3Rfb2JqZWN0X2lkZW50aXR5Lmh0bWw/Zm9yY2U9MQotICBsaWNl
bnNlIG9mIG9yaWdpbmFsIHRlc3Q6Ci0gICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KLSAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgotLS0+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxi
b2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCOiBvYmplY3QgaWRl
bnRpdHkiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMo
KTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9u
ID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVk
REIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9w
ZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJk
YiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVx
dWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Jl
YXRlT2JqZWN0U3RvcmVBbmRJbmRleDsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY3JlYXRlT2JqZWN0U3RvcmVBbmRJbmRleCgp
Ci17Ci0gICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGV2ZW50LnRh
cmdldC50cmFuc2FjdGlvbjsiKTsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotICAg
IG9iamVjdFN0b3JlMSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlMSA9IGRiLmNyZWF0ZU9iamVj
dFN0b3JlKCdmb28nKTsiKTsKLSAgICBvYmplY3RTdG9yZTIgPSBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZTIgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnZm9vJyk7Iik7Ci0gICAgc2hvdWxkQmVU
cnVlKCJvYmplY3RTdG9yZTEgPT09IG9iamVjdFN0b3JlMiIpOwotICAgIGluZGV4MSA9IGV2YWxB
bmRMb2coImluZGV4MSA9IG9iamVjdFN0b3JlMS5jcmVhdGVJbmRleCgnYmFyJywgJ2tleScpOyIp
OwotICAgIGluZGV4MiA9IGV2YWxBbmRMb2coImluZGV4MiA9IG9iamVjdFN0b3JlMi5pbmRleCgn
YmFyJyk7Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJpbmRleDEgPT09IGluZGV4MiIpOwotICAgIGV2
YWxBbmRMb2coInRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB0ZXN0SWRlbnRpdHlTb21lTW9yZTsi
KTsKLX0KLQotZnVuY3Rpb24gdGVzdElkZW50aXR5U29tZU1vcmUoKQotewotICAgIHRyYW5zYWN0
aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignZm9vJyk7Iik7
Ci0gICAgb2JqZWN0U3RvcmUzID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUzID0gdHJhbnNhY3Rp
b24ub2JqZWN0U3RvcmUoJ2ZvbycpOyIpOwotICAgIG9iamVjdFN0b3JlNCA9IGV2YWxBbmRMb2co
Im9iamVjdFN0b3JlNCA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdmb28nKTsiKTsKLSAgICBz
aG91bGRCZVRydWUoIm9iamVjdFN0b3JlMyA9PT0gb2JqZWN0U3RvcmU0Iik7Ci0KLSAgICBzaG91
bGRCZUZhbHNlKCJvYmplY3RTdG9yZTMgPT09IG9iamVjdFN0b3JlMSIpOwotICAgIHNob3VsZEJl
RmFsc2UoIm9iamVjdFN0b3JlNCA9PT0gb2JqZWN0U3RvcmUyIik7Ci0KLSAgICBpbmRleDMgPSBl
dmFsQW5kTG9nKCJpbmRleDMgPSBvYmplY3RTdG9yZTMuaW5kZXgoJ2JhcicpOyIpOwotICAgIGlu
ZGV4NCA9IGV2YWxBbmRMb2coImluZGV4NCA9IG9iamVjdFN0b3JlNC5pbmRleCgnYmFyJyk7Iik7
Ci0gICAgc2hvdWxkQmVUcnVlKCJpbmRleDMgPT09IGluZGV4NCIpOwotCi0gICAgc2hvdWxkQmVG
YWxzZSgiaW5kZXgzID09PSBpbmRleDEiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJpbmRleDQgPT09
IGluZGV4MiIpOwotCi0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXRlc3QoKTsKLQotPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL29iamVjdC1pZGVudGl0eS5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9vYmplY3Qtc3RvcmUtaW5saW5lLWF1dG9pbmNyZW1l
bnQta2V5LWFkZGVkLW9uLXB1dC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW96aWxsYS9vYmplY3Qtc3RvcmUtaW5saW5lLWF1dG9pbmNyZW1lbnQta2V5LWFkZGVkLW9uLXB1
dC5odG1sCmluZGV4IDM1ZDlmMzM1N2QxNzc4YzlhYmU4ODVhOGE5OGE4MDNjYTIwYjM5NDkuLjky
MDExYjYzMWQwZjcyYzA5MjViMDQ1ZTBlNjdkOGEwMjU5NWFhMzMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0LXN0b3JlLWlubGluZS1hdXRv
aW5jcmVtZW50LWtleS1hZGRlZC1vbi1wdXQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL29iamVjdC1zdG9yZS1pbmxpbmUtYXV0b2luY3JlbWVudC1rZXkt
YWRkZWQtb24tcHV0Lmh0bWwKQEAgLTEsNzUgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEt
LQotICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291
cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X29iamVjdFN0b3JlX2lubGluZV9hdXRvaW5jcmVt
ZW50X2tleV9hZGRlZF9vbl9wdXQuaHRtbD9mb3JjZT0xCi0gIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwg
dGVzdDoKLSAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgotICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0Pgot
Ci1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgYWRkaW5nIGFuIGF1dG9pbmNyZW1lbnRlZCBr
ZXkgYW5kIHJldHJpZXZpbmcgaXQgc3VjY2Vzc2Z1bGx5Iik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQot
ewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlv
bi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3Mo
KQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0K
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIp
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0dXBPYmplY3RTdG9yZTsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc2V0dXBP
YmplY3RTdG9yZSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLSAgICB0ZXN0
ID0gZXZhbEFuZExvZygidGVzdCA9IHtcbiIgKwotIiAgICAgICAgbmFtZTogJ2lubGluZSBrZXk7
IGtleSBnZW5lcmF0b3InLFxuIiArCi0iICAgICAgICBhdXRvSW5jcmVtZW50OiB0cnVlLFxuIiAr
Ci0iICAgICAgICBzdG9yZWRPYmplY3Q6IHsgbmFtZTogJ0xpbmNvbG4nIH0sXG4iICsKLSIgICAg
ICAgIGtleU5hbWU6ICdpZCcsXG4iICsKLSIgICAgfTsiKTsKLSAgICBvYmplY3RTdG9yZSA9IGV2
YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUodGVzdC5uYW1lLCB7
IGtleVBhdGg6IHRlc3Qua2V5TmFtZSwgYXV0b0luY3JlbWVudDogdGVzdC5hdXRvSW5jcmVtZW50
IH0pOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
YWRkKHRlc3Quc3RvcmVkT2JqZWN0KTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZFN1
Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19
Ci0KLWZ1bmN0aW9uIGFkZFN1Y2Nlc3MoKQotewotICAgIGlkID0gZXZhbEFuZExvZygiaWQgPSBl
dmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gb2JqZWN0U3RvcmUuZ2V0KGlkKTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldFN1
Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19
Ci0KLWZ1bmN0aW9uIGdldFN1Y2Nlc3MoKQotewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQu
cmVzdWx0Lm5hbWUiLCAidGVzdC5zdG9yZWRPYmplY3QubmFtZSIpOwotICAgIHNob3VsZEJlKCJl
dmVudC50YXJnZXQucmVzdWx0LmlkIiwgImlkIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0K
LQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb2JqZWN0LXN0
b3JlLWlubGluZS1hdXRvaW5jcmVtZW50LWtleS1hZGRlZC1vbi1wdXQuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0LXN0b3JlLXJlbW92ZS12YWx1ZXMuaHRtbCBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0LXN0b3JlLXJlbW92
ZS12YWx1ZXMuaHRtbAppbmRleCBjMDkxNGJiZGMxYWU2NGQ0ZmU1NTdmYTMxMzcwZWIzNDAwZDJm
YzYyLi5kOGM0ZTk1N2U2YjQ2NGU3YzZhY2RlNjBlZjIwODZlNDQ1MzNiZTY2IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29iamVjdC1zdG9yZS1yZW1v
dmUtdmFsdWVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9vYmplY3Qtc3RvcmUtcmVtb3ZlLXZhbHVlcy5odG1sCkBAIC0xLDEzMiArMSwxMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5v
cmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3Rfb2JqZWN0U3RvcmVf
cmVtb3ZlX3ZhbHVlcy5odG1sP2ZvcmNlPTEKLSAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0Ogot
ICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCi0g
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIK
LS0tPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2Ny
aXB0aW9uKCJUZXN0IEluZGV4ZWREQjogYWRkcywgZ2V0cywgZGVsZXRlcywgYW5kIHJlLWdldHMg
YSByZWNvcmQgaW4gYSB2YXJpZXR5IG9mIGRpZmZlcmVudCBvYmplY3Qgc3RvcmUgY29uZmlndXJh
dGlvbnMiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMo
KTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9u
ID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVk
REIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9w
ZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJk
YiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIGRhdGEgPSBldmFsQW5kTG9nKCJkYXRh
ID0gW1xuIiArCi0iICAgICAgICB7IG5hbWU6ICdpbmxpbmUga2V5OyBrZXkgZ2VuZXJhdG9yJyxc
biIgKwotIiAgICAgICAgICBhdXRvSW5jcmVtZW50OiB0cnVlLFxuIiArCi0iICAgICAgICAgIHN0
b3JlZE9iamVjdDoge25hbWU6ICdMaW5jb2xuJ30sXG4iICsKLSIgICAgICAgICAga2V5TmFtZTog
J2lkJyxcbiIgKwotIiAgICAgICAgICBrZXlWYWx1ZTogdW5kZWZpbmVkLFxuIiArCi0iICAgICAg
ICB9LFxuIiArCi0iICAgICAgICB7IG5hbWU6ICdpbmxpbmUga2V5OyBubyBrZXkgZ2VuZXJhdG9y
JyxcbiIgKwotIiAgICAgICAgICBhdXRvSW5jcmVtZW50OiBmYWxzZSxcbiIgKwotIiAgICAgICAg
ICBzdG9yZWRPYmplY3Q6IHtpZDogMSwgbmFtZTogJ0xpbmNvbG4nfSxcbiIgKwotIiAgICAgICAg
ICBrZXlOYW1lOiAnaWQnLFxuIiArCi0iICAgICAgICAgIGtleVZhbHVlOiB1bmRlZmluZWQsXG4i
ICsKLSIgICAgICAgIH0sXG4iICsKLSIgICAgICAgIHsgbmFtZTogJ291dCBvZiBsaW5lIGtleTsg
a2V5IGdlbmVyYXRvcicsXG4iICsKLSIgICAgICAgICAgYXV0b0luY3JlbWVudDogdHJ1ZSxcbiIg
KwotIiAgICAgICAgICBzdG9yZWRPYmplY3Q6IHtuYW1lOiAnTGluY29sbid9LFxuIiArCi0iICAg
ICAgICAgIGtleU5hbWU6IHVuZGVmaW5lZCxcbiIgKwotIiAgICAgICAgICBrZXlWYWx1ZTogdW5k
ZWZpbmVkLFxuIiArCi0iICAgICAgICB9LFxuIiArCi0iICAgICAgICB7IG5hbWU6ICdvdXQgb2Yg
bGluZSBrZXk7IG5vIGtleSBnZW5lcmF0b3InLFxuIiArCi0iICAgICAgICAgIGF1dG9JbmNyZW1l
bnQ6IGZhbHNlLFxuIiArCi0iICAgICAgICAgIHN0b3JlZE9iamVjdDoge25hbWU6ICdMaW5jb2xu
J30sXG4iICsKLSIgICAgICAgICAga2V5TmFtZTogdW5kZWZpbmVkLFxuIiArCi0iICAgICAgICAg
IGtleVZhbHVlOiAxLFxuIiArCi0iICAgICAgICB9XG4iICsKLSIgICAgXTsiKTsKLQotICAgIGkg
PSBldmFsQW5kTG9nKCJpID0gMDsiKTsKLSAgICBzZXRWZXJzaW9uKCk7Ci19Ci0KLWZ1bmN0aW9u
IHNldFZlcnNpb24oKQotewotICAgIGlmIChpIDwgZGF0YS5sZW5ndGgpIHsKLSAgICAgICAgdGVz
dCA9IGRhdGFbaV07Ci0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIu
c2V0VmVyc2lvbignMScpIik7Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlT2Jq
ZWN0U3RvcmU7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0KLX0KLQot
ZnVuY3Rpb24gY3JlYXRlT2JqZWN0U3RvcmUoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jl
cyhkYik7Ci0KLSAgICBpZiAodGVzdC5rZXlOYW1lKSB7Ci0gICAgICAgIG9iamVjdFN0b3JlID0g
ZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSh0ZXN0Lm5hbWUs
IHsga2V5UGF0aDogdGVzdC5rZXlOYW1lLCBhdXRvSW5jcmVtZW50OiB0ZXN0LmF1dG9JbmNyZW1l
bnQgfSk7Iik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKHRlc3QubmFtZSwgeyBhdXRvSW5j
cmVtZW50OiB0ZXN0LmF1dG9JbmNyZW1lbnQgfSk7Iik7Ci0gICAgfQotICAgIGlmICh0ZXN0Lmtl
eVZhbHVlKSB7Ci0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0
U3RvcmUuYWRkKHRlc3Quc3RvcmVkT2JqZWN0LCB0ZXN0LmtleVZhbHVlKTsiKTsKLSAgICB9IGVs
c2UgewotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3Jl
LmFkZCh0ZXN0LnN0b3JlZE9iamVjdCk7Iik7Ci0gICAgfQotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZ2V0UmVjb3JkOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotfQotCi1mdW5jdGlvbiBnZXRSZWNvcmQoKQotewotICAgIGlkID0gZXZhbEFuZExvZygi
aWQgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KGlkKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZVJl
Y29yZDsKLX0KLQotZnVuY3Rpb24gZGVsZXRlUmVjb3JkKCkKLXsKLSAgICBzaG91bGRCZSgidGVz
dC5zdG9yZWRPYmplY3QubmFtZSIsICJldmVudC50YXJnZXQucmVzdWx0Lm5hbWUiKTsKLQotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZGVsZXRlKGlkKTsi
KTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldFJlY29yZEFnYWluOwotfQotCi1mdW5jdGlvbiBnZXRSZWNv
cmRBZ2FpbigpCi17Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RT
dG9yZS5nZXQoaWQpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZmluYWxDaGVjazsKLX0KLQotZnVuY3Rp
b24gZmluYWxDaGVjaygpCi17Ci0gICAgc2hvdWxkQmVUcnVlKCJldmVudC50YXJnZXQucmVzdWx0
ID09PSB1bmRlZmluZWQiKTsKLSAgICBpKys7Ci0gICAgc2V0VmVyc2lvbigpOwotfQotCi0KLXRl
c3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL29iamVjdC1zdG9yZS1y
ZW1vdmUtdmFsdWVzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgot
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29iamVj
dHN0b3JlbmFtZXMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEv
b2JqZWN0c3RvcmVuYW1lcy5odG1sCmluZGV4IGVlNThjMjUyZWQ2N2NhZWY2YTI0NTI4MGNkMzk5
MTM2NTc2MGQ4YzcuLjM5NDk0OTQ0Yjg5MWEwM2Y0OWVjMjUxMDk2YWVmN2UxZGZiZDM3NjYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0c3Rv
cmVuYW1lcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEv
b2JqZWN0c3RvcmVuYW1lcy5odG1sCkBAIC0xLDU4ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTwhLS0KLSAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4w
L3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9nbG9iYWxfZGF0YS5odG1sCi0gIGxpY2Vu
c2Ugb2Ygb3JpZ2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgotICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJv
ZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBvYmplY3RTdG9y
ZU5hbWVzIGFycmF5Iik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclBy
ZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNj
cmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
aW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFu
ZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gY2xlYW5EYXRhYmFzZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCi17Ci0gICAgZGVsZXRl
QWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9iamVjdFN0b3JlTmFtZSA9ICJhIjsKLSAgICBv
YmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUob2JqZWN0U3RvcmVOYW1lLCB7IGtleVBhdGg6ICdpZCcsIGF1dG9JbmNyZW1lbnQ6IHRydWUg
fSk7Iik7Ci0KLSAgICBzaG91bGRCZVRydWUoIidvYmplY3RTdG9yZU5hbWVzJyBpbiBkYiIpOwot
ICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIxIik7Ci0gICAgc2hv
dWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMuaXRlbSgwKSIsICJvYmplY3RTdG9yZU5hbWUiKTsK
LSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9vYmplY3RzdG9yZW5hbWVzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgogPC9ib2R5PgogPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL29kZC1yZXN1bHQtb3JkZXIuaHRtbCBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vemlsbGEvb2RkLXJlc3VsdC1vcmRlci5odG1sCmluZGV4IGNlNzE1NjNl
MDA5MWYwYmY5Y2FkNTcwNWM3Y2VjMTM2MTk2MTVmYzguLjc3Nzk3ZGZjNWYyM2UxNGViNDM1ODYz
YjhkZWYzMDI4MTlmZDYzYmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvb2RkLXJlc3VsdC1vcmRlci5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vemlsbGEvb2RkLXJlc3VsdC1vcmRlci5odG1sCkBAIC0xLDEyNyArMSwx
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIu
bW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3Rfb2Rk
X3Jlc3VsdF9vcmRlci5odG1sP3Jhdz0xCi0gIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKLSAg
ICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgotICAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCi0t
LT4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9z
aGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlw
dGlvbigiVGVzdCBJbmRleGVkREI6IHJlcXVlc3QgcmVzdWx0IHBlcnNpc3RzIGluIHNldFRpbWVv
dXQgY2FsbGJhY2siKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJl
Zml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2Ny
aXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGVidWcoIm9wZW5T
dWNjZXNzKCk6Iik7Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IG51bGw7Iik7Ci0gICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IHJlcXVl
c3QucmVzdWx0OyIpOwotICAgICAgICBjaGVja0RhdGFiYXNlVHlwZSgpOwotICAgIH0sIDApOwot
fQotCi1mdW5jdGlvbiBjaGVja0RhdGFiYXNlVHlwZSgpCi17Ci0gICAgZGVidWcoImNoZWNrRGF0
YWJhc2VUeXBlKCk6Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJkYiBpbnN0YW5jZW9mIElEQkRhdGFi
YXNlIik7Ci0gICAgZGIub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXR1cE9iamVjdFN0b3JlOwotICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXR1cE9iamVjdFN0
b3JlKCkKLXsKLSAgICBkZWJ1Zygic2V0dXBPYmplY3RTdG9yZSgpOiIpOwotICAgIGRlbGV0ZUFs
bE9iamVjdFN0b3JlcyhkYik7Ci0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7IGtleVBhdGg6ICdrZXknLCBhdXRv
SW5jcmVtZW50OiB0cnVlIH0pOyIpOwotICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBv
YmplY3RTdG9yZS5jcmVhdGVJbmRleCgnZm9vJywgJ2luZGV4Jyk7Iik7Ci0gICAgZXZhbEFuZExv
ZygiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBhZGRSZWNvcmQ7Iik7Ci19
Ci0KLWZ1bmN0aW9uIGFkZFJlY29yZCgpCi17Ci0gICAgZGVidWcoImFkZFJlY29yZCgpOiIpOwot
ICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlv
bignZm9vJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3RvcmUoJ2ZvbycpOyIp
OwotICAgIGRhdGEgPSBldmFsQW5kTG9nKCJkYXRhID0geyBrZXk6IDUsIGluZGV4OiAxMCB9OyIp
OwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKGRh
dGEpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkU3VjY2VzczsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYWRkU3Vj
Y2VzcygpCi17Ci0gICAgZGVidWcoImFkZFN1Y2Nlc3MoKToiKTsKLSAgICBrZXkgPSBldmFsQW5k
TG9nKCJrZXkgPSBudWxsOyIpOwotICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICBr
ZXkgPSBldmFsQW5kTG9nKCJrZXkgPSByZXF1ZXN0LnJlc3VsdDsiKTsKLSAgICAgIGNoZWNrQWRk
ZWRLZXkoKTsKLSAgICB9LCAwKTsKLX0KLQotZnVuY3Rpb24gY2hlY2tBZGRlZEtleSgpCi17Ci0g
ICAgZGVidWcoImNoZWNrQWRkZWRLZXkoKToiKTsKLSAgICBzaG91bGRCZSgia2V5IiwgImRhdGEu
a2V5Iik7Ci0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLnRy
YW5zYWN0aW9uKCdmb28nKS5vYmplY3RTdG9yZSgnZm9vJyk7Iik7Ci0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5nZXQoZGF0YS5rZXkpOyIpOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZ2V0U3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZ2V0U3VjY2VzcygpCi17Ci0gICAg
ZGVidWcoImdldFN1Y2Nlc3MoKToiKTsKLSAgICByZWNvcmQgPSBldmFsQW5kTG9nKCJyZWNvcmQg
PSBudWxsOyIpOwotICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICByZWNvcmQgPSBl
dmFsQW5kTG9nKCJyZWNvcmQgPSByZXF1ZXN0LnJlc3VsdDsiKTsKLSAgICAgIGNoZWNrUmV0cmll
dmVkS2V5KCk7Ci0gICAgfSwgMCk7Ci19Ci0KLWZ1bmN0aW9uIGNoZWNrUmV0cmlldmVkS2V5KCkK
LXsKLSAgICBkZWJ1ZygiY2hlY2tSZXRyaWV2ZWRLZXkoKToiKTsKLSAgICBzaG91bGRCZSgicmVj
b3JkLmtleSIsICJkYXRhLmtleSIpOwotICAgIHNob3VsZEJlKCJyZWNvcmQuaW5kZXgiLCAiZGF0
YS5pbmRleCIpOwotICAgIGRlbGV0ZVJlY29yZCgpOwotfQotCi1mdW5jdGlvbiBkZWxldGVSZWNv
cmQoKQotewotICAgIGRlYnVnKCJkZWxldGVSZWNvcmQoKToiKTsKLSAgICBvYmplY3RTdG9yZSA9
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIudHJhbnNhY3Rpb24oJ2ZvbycsIElEQlRyYW5z
YWN0aW9uLlJFQURfV1JJVEUpLm9iamVjdFN0b3JlKCdmb28nKTsiKTsKLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmRlbGV0ZShkYXRhLmtleSk7Iik7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVTdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBkZWxldGVTdWNjZXNz
KCkKLXsKLSAgICBkZWJ1ZygiZGVsZXRlU3VjY2VzcygpOiIpOwotICAgIGZpbmlzaEpTVGVzdCgp
OwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL29k
ZC1yZXN1bHQtb3JkZXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29wZW4t
ZGF0YWJhc2UtbnVsbC1uYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL29wZW4tZGF0YWJhc2UtbnVsbC1uYW1lLmh0bWwKaW5kZXggOTA5ODQwZGJjM2M0YTI1
OGNhMjU5NzBiNWZjZTJjMDZlY2Y2OTg0Yy4uOGQyN2U4M2JhNjNmMjJjYmYyMGYyYzBhZDY4YTEy
NjI4MTk2ZTM5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9vcGVuLWRhdGFiYXNlLW51bGwtbmFtZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vemlsbGEvb3Blbi1kYXRhYmFzZS1udWxsLW5hbWUuaHRtbApAQCAtMSw0
MiArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6
Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rl
c3Rfb3Blbl9lbXB0eV9kYi5odG1sP2ZvcmNlPTEKLSAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0
OgotICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
Ci0gICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
ICIKLS0tPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRl
c2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQjogc2hvdWxkIE5PVCB0aHJvdyB3aGVuIG9wZW5pbmcg
YSBkYXRhYmFzZSB3aXRoIGEgbnVsbCBuYW1lIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAg
IHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERh
dGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obnVsbCk7
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nl
c3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
Ci0gICAgc2hvdWxkQmUoImRiLm5hbWUiLCAiJ251bGwnIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7
Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3Bl
bi1kYXRhYmFzZS1udWxsLW5hbWUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8
L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEvcHV0LWdldC12YWx1ZXMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
emlsbGEvcHV0LWdldC12YWx1ZXMuaHRtbAppbmRleCAwY2FmYmEzMmM0YzRlODY2ZWQwZmEyYjhj
ZTE5NzIxYWNiNjlhMTQyLi41ODcwMGY2YmY5YjZkMzBhNmVkMzVjNDgyMWIzOTBmZDQ5NjE3MTM5
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3B1dC1n
ZXQtdmFsdWVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9wdXQtZ2V0LXZhbHVlcy5odG1sCkBAIC0xLDExOSArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIu
MC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfcHV0X2dldF92YWx1ZXMuaHRtbAotICBs
aWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Ci0gICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KLSAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgotLS0+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4K
IDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgcHV0dGlu
ZyBhbmQgZ2V0dGluZyB2YWx1ZXMgaW4gYW4gb2JqZWN0IHN0b3JlIik7Ci0KLWZ1bmN0aW9uIHRl
c3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5s
b2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsK
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRp
b24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1
Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcx
JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFu
RGF0YWJhc2UoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICB0ZXN0
U3RyaW5nID0gZXZhbEFuZExvZygidGVzdFN0cmluZyA9IHsga2V5OiAwLCB2YWx1ZTogJ3Rlc3RT
dHJpbmcnIH07Iik7Ci0gICAgdGVzdEludCA9IGV2YWxBbmRMb2coInRlc3RJbnQgPSB7IGtleTog
MSwgdmFsdWU6IDEwMDIgfTsiKTsKLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVj
dFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ09iamVjdHMnLCB7IGF1dG9JbmNyZW1lbnQ6
IGZhbHNlIH0pOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0
U3RvcmUuYWRkKHRlc3RTdHJpbmcudmFsdWUsIHRlc3RTdHJpbmcua2V5KTsiKTsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IHBvc3RBZGQ7Ci19Ci0KLWZ1bmN0aW9uIHBvc3RBZGQoKQotewotICAgIHNob3VsZEJl
KCJldmVudC50YXJnZXQucmVzdWx0IiwgInRlc3RTdHJpbmcua2V5Iik7Ci0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5nZXQodGVzdFN0cmluZy5rZXkpOyIp
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gcG9zdEdldDsKLX0KLQotZnVuY3Rpb24gcG9zdEdldCgpCi17Ci0g
ICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAidGVzdFN0cmluZy52YWx1ZSIpOwot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKHRlc3RJ
bnQudmFsdWUsIHRlc3RJbnQua2V5KTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RBZGRJbnQ7Ci19
Ci0KLWZ1bmN0aW9uIHBvc3RBZGRJbnQoKQotewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQu
cmVzdWx0IiwgInRlc3RJbnQua2V5Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVl
c3QgPSBvYmplY3RTdG9yZS5nZXQodGVzdEludC5rZXkpOyIpOwotICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9z
dEdldEludDsKLX0KLQotZnVuY3Rpb24gcG9zdEdldEludCgpCi17Ci0gICAgc2hvdWxkQmUoImV2
ZW50LnRhcmdldC5yZXN1bHQiLCAidGVzdEludC52YWx1ZSIpOwotICAgIG9iamVjdFN0b3JlQXV0
b0luY3JlbWVudCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlQXV0b0luY3JlbWVudCA9IGRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCdBdXRvSW5jcmVtZW50ZWQgT2JqZWN0cycsIHsgYXV0b0luY3JlbWVu
dDogdHJ1ZSB9KTsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVj
dFN0b3JlQXV0b0luY3JlbWVudC5hZGQodGVzdFN0cmluZy52YWx1ZSk7Iik7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBwb3N0QWRkQXV0b0luY3JlbWVudDsKLX0KLQotZnVuY3Rpb24gcG9zdEFkZEF1dG9JbmNy
ZW1lbnQoKQotewotICAgIHRlc3RTdHJpbmcua2V5ID0gZXZhbEFuZExvZygidGVzdFN0cmluZy5r
ZXkgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gb2JqZWN0U3RvcmVBdXRvSW5jcmVtZW50LmdldCh0ZXN0U3RyaW5nLmtleSk7Iik7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBwb3N0R2V0QXV0b0luY3JlbWVudDsKLX0KLQotZnVuY3Rpb24gcG9z
dEdldEF1dG9JbmNyZW1lbnQoKQotewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0
IiwgInRlc3RTdHJpbmcudmFsdWUiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IG9iamVjdFN0b3JlQXV0b0luY3JlbWVudC5hZGQodGVzdEludC52YWx1ZSk7Iik7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBwb3N0QWRkSW50QXV0b0luY3JlbWVudDsKLX0KLQotZnVuY3Rpb24gcG9zdEFk
ZEludEF1dG9JbmNyZW1lbnQoKQotewotICAgIHRlc3RJbnQua2V5ID0gZXZhbEFuZExvZygidGVz
dEludC5rZXkgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmVBdXRvSW5jcmVtZW50LmdldCh0ZXN0SW50LmtleSk7
Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0R2V0SW50QXV0b0luY3JlbWVudDsKLX0KLQotZnVuY3Rp
b24gcG9zdEdldEludEF1dG9JbmNyZW1lbnQoKQotewotICAgIHNob3VsZEJlKCJldmVudC50YXJn
ZXQucmVzdWx0IiwgInRlc3RJbnQudmFsdWUiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQot
Ci10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9wdXQtZ2V0LXZh
bHVlcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KLQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZWFkb25seS10cmFu
c2FjdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVh
ZG9ubHktdHJhbnNhY3Rpb25zLmh0bWwKaW5kZXggNDY0MTliYjNkYjNiMzdlOTNmZGZlZDQyNDdh
MGM4YzA0MzE5Y2Y2My4uMjNjOGZjMDY1NWYxZDMxMmFiOWZlNDM5ZjRjNWZjYTNiZWI5NzMyNCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZWFkb25s
eS10cmFuc2FjdGlvbnMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL3JlYWRvbmx5LXRyYW5zYWN0aW9ucy5odG1sCkBAIC0xLDY5ICsxLDEwIEBACi08IURP
Q1RZUEUgaHRtbD4KLTwhLS0KLSAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxhLm9y
Zy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9yZWFkb25seV90cmFu
c2FjdGlvbnMuaHRtbAotICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Ci0gICAgIiBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KLSAgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgotLS0+CiA8aHRtbD4K
IDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48
L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3Qg
SW5kZXhlZERCJ3MgcmVhZG9ubHkgdHJhbnNhY3Rpb25zIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQot
ewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlv
bi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3Mo
KQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0K
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIp
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY2xlYW5EYXRh
YmFzZSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9zTmFtZSA9
ICJ0ZXN0IHN0b3JlIjsKLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3Jl
ID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUob3NOYW1lLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7
Iik7Ci0gICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5vbmNvbXBsZXRlID0gc2V0VmVyc2lvbkNvbXBs
ZXRlOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uQ29tcGxldGUoKQotewotICAgIGV2YWxBbmRF
eHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKFtvc05hbWVdKS5vYmplY3RTdG9yZShvc05h
bWUpLmFkZCh7fSk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlJFQURfT05MWV9FUlIiKTsKLSAg
ICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbihvc05hbWUpLm9iamVjdFN0
b3JlKG9zTmFtZSkuYWRkKHt9KTsiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VS
UiIpOwotICAgIGtleTEgPSBldmFsQW5kTG9nKCJrZXkxID0gMTsiKTsKLSAgICBrZXkyID0gZXZh
bEFuZExvZygia2V5MiA9IDI7Iik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJh
bnNhY3Rpb24oW29zTmFtZV0pLm9iamVjdFN0b3JlKG9zTmFtZSkucHV0KHt9LCBrZXkxKTsiLCAi
SURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RF
eGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKG9zTmFtZSkub2JqZWN0U3RvcmUob3NOYW1lKS5wdXQo
e30sIGtleTIpOyIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5SRUFEX09OTFlfRVJSIik7Ci0gICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oW29zTmFtZV0pLm9iamVjdFN0
b3JlKG9zTmFtZSkucHV0KHt9LCBrZXkxKTsiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9P
TkxZX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKG9z
TmFtZSkub2JqZWN0U3RvcmUob3NOYW1lKS5wdXQoe30sIGtleTEpOyIsICJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5SRUFEX09OTFlfRVJSIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIu
dHJhbnNhY3Rpb24oW29zTmFtZV0pLm9iamVjdFN0b3JlKG9zTmFtZSkuZGVsZXRlKGtleTEpOyIs
ICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5SRUFEX09OTFlfRVJSIik7Ci0gICAgZXZhbEFuZEV4cGVj
dEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24ob3NOYW1lKS5vYmplY3RTdG9yZShvc05hbWUpLmRl
bGV0ZShrZXkyKTsiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUiIpOwotICAg
IGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3JlYWRvbmx5LXRyYW5zYWN0aW9ucy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KIDwvYm9keT4KIDwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW96aWxsYS9yZWFkd3JpdGUtdHJhbnNhY3Rpb25zLmh0bWwgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3JlYWR3cml0ZS10cmFuc2FjdGlvbnMuaHRtbApp
bmRleCBiMGMwNDJjMjFhYzNkODNkNWE4N2NmNTM1NGFjY2EyYTQ5NGQxY2ZkLi43ZmZmNTA4ZTgz
Y2Y5NjEwMmFmYzZmYWFhYTUxNmUxZGE1NDc4ZTU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3JlYWR3cml0ZS10cmFuc2FjdGlvbnMuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3JlYWR3cml0ZS10cmFuc2Fj
dGlvbnMuaHRtbApAQCAtMSwxMjUgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLQotICBv
cmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2Rv
bS9pbmRleGVkREIvdGVzdC90ZXN0X3JlYWRvbmx5X3RyYW5zYWN0aW9ucy5odG1sCi0gIGxpY2Vu
c2Ugb2Ygb3JpZ2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgotICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJv
ZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyByZWFkL3dyaXRl
IHRyYW5zYWN0aW9ucyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQ
cmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVz
Y3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxB
bmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGNsZWFuRGF0YWJhc2U7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQotewotICAgIGRlbGV0
ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBvc05hbWUgPSAidGVzdCBzdG9yZSI7Ci0gICAg
b2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0
b3JlKG9zTmFtZSwgeyBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOyIpOwotICAgIGV2ZW50LnRhcmdl
dC5yZXN1bHQub25jb21wbGV0ZSA9IHNldFZlcnNpb25Db21wbGV0ZTsKLX0KLQotZnVuY3Rpb24g
c2V0VmVyc2lvbkNvbXBsZXRlKCkKLXsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IGRiLnRyYW5zYWN0aW9uKFtvc05hbWVdLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKS5v
YmplY3RTdG9yZShvc05hbWUpLmFkZCh7fSk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBw
b3N0QWRkOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
fQotCi1mdW5jdGlvbiBwb3N0QWRkKCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRy
YW5zYWN0aW9uLm1vZGUiLCAiSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSIpOwotICAgIGtleTEg
PSBldmFsQW5kTG9nKCJrZXkxID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnRyYW5zYWN0aW9uKG9zTmFtZSwgSURCVHJhbnNh
Y3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3RvcmUob3NOYW1lKS5hZGQoe30pOyIpOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gcG9zdEFkZDI7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHBvc3RBZGQyKCkKLXsKLSAgICBzaG91
bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm1vZGUiLCAiSURCVHJhbnNhY3Rpb24uUkVB
RF9XUklURSIpOwotICAgIGtleTIgPSBldmFsQW5kTG9nKCJrZXkyID0gZXZlbnQudGFyZ2V0LnJl
c3VsdDsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnRyYW5zYWN0
aW9uKFtvc05hbWVdLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKS5vYmplY3RTdG9yZShvc05h
bWUpLnB1dCh7fSwga2V5MSk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0UHV0Owot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5j
dGlvbiBwb3N0UHV0KCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9u
Lm1vZGUiLCAiSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSIpOwotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gZGIudHJhbnNhY3Rpb24ob3NOYW1lLCBJREJUcmFuc2FjdGlvbi5S
RUFEX1dSSVRFKS5vYmplY3RTdG9yZShvc05hbWUpLnB1dCh7fSwga2V5Mik7Iik7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBwb3N0UHV0MjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gcG9zdFB1dDIoKQotewotICAgIHNob3Vs
ZEJlKCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24ubW9kZSIsICJJREJUcmFuc2FjdGlvbi5SRUFE
X1dSSVRFIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi50cmFuc2Fj
dGlvbihbb3NOYW1lXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3RvcmUob3NO
YW1lKS5wdXQoe30sIGtleTEpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdFB1dDM7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1
bmN0aW9uIHBvc3RQdXQzKCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0
aW9uLm1vZGUiLCAiSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSIpOwotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIudHJhbnNhY3Rpb24ob3NOYW1lLCBJREJUcmFuc2FjdGlv
bi5SRUFEX1dSSVRFKS5vYmplY3RTdG9yZShvc05hbWUpLnB1dCh7fSwga2V5MSk7Iik7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0UHV0NDsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gcG9zdFB1dDQoKQotewotICAgIHNo
b3VsZEJlKCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24ubW9kZSIsICJJREJUcmFuc2FjdGlvbi5S
RUFEX1dSSVRFIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi50cmFu
c2FjdGlvbihbb3NOYW1lXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3RvcmUo
b3NOYW1lKS5kZWxldGUoa2V5MSk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0RGVs
ZXRlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQot
Ci1mdW5jdGlvbiBwb3N0RGVsZXRlKCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRy
YW5zYWN0aW9uLm1vZGUiLCAiSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSIpOwotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIudHJhbnNhY3Rpb24ob3NOYW1lLCBJREJUcmFu
c2FjdGlvbi5SRUFEX1dSSVRFKS5vYmplY3RTdG9yZShvc05hbWUpLmRlbGV0ZShrZXkyKTsiKTsK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3REZWxldGUyOwotICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBwb3N0RGVsZXRlMigp
Ci17Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2RlIiwgIklEQlRy
YW5zYWN0aW9uLlJFQURfV1JJVEUiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0
KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWFkd3JpdGUtdHJhbnNh
Y3Rpb25zLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgotCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3JlYWR5U3RhdGUu
aHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVhZHlTdGF0ZS5o
dG1sCmluZGV4IDhkMTBhNGJhZGVkOTQ5OWRjMzNmMzI3M2VhYjBkNzZjNTdiYzRlZTYuLjVjMjJh
M2ZlMzRjYTJjYmM5ZDBiMmRhM2Q0NGExNzlhOWIxYTYxMDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVhZHlTdGF0ZS5odG1sCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVhZHlTdGF0ZS5odG1sCkBAIC0xLDgx
ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KLTwhLS0KLSAgb3JpZ2luYWwgdGVzdDogaHR0cDov
L214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVz
dF9yZXF1ZXN0X3JlYWR5U3RhdGUuaHRtbD9mb3JjZT0xCi0gIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwg
dGVzdDoKLSAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgotICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0Pgot
Ci1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgcmVhZHlTdGF0ZSBwcm9wZXJ0eSBkdXJpbmcg
ZGlmZmVyZW50IG9wZXJhdGlvbnMiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3Zl
VmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwot
ICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICBzaG91bGRC
ZSgicmVxdWVzdC5yZWFkeVN0YXRlIiwgIklEQlJlcXVlc3QuTE9BRElORyIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBk
ZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKLSAgICBzaG91bGRCZSgicmVxdWVzdC5yZWFkeVN0YXRl
IiwgIklEQlJlcXVlc3QuRE9ORSIpOwotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50
YXJnZXQucmVzdWx0Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5z
ZXRWZXJzaW9uKCcxJykiKTsKLSAgICBzaG91bGRCZSgicmVxdWVzdC5yZWFkeVN0YXRlIiwgIklE
QlJlcXVlc3QuTE9BRElORyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0dXBPYmplY3RT
dG9yZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0K
LQotZnVuY3Rpb24gc2V0dXBPYmplY3RTdG9yZSgpCi17Ci0gICAgZGVidWcoInNldHVwT2JqZWN0
U3RvcmUoKToiKTsKLSAgICBzaG91bGRCZSgicmVxdWVzdC5yZWFkeVN0YXRlIiwgIklEQlJlcXVl
c3QuRE9ORSIpOwotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBvYmplY3RT
dG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2Zv
bycpOyIpOwotICAgIGtleSA9IGV2YWxBbmRMb2coImtleSA9IDEwOyIpOwotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKHt9LCBrZXkpOyIpOwotICAg
IHNob3VsZEJlKCJyZXF1ZXN0LnJlYWR5U3RhdGUiLCAiSURCUmVxdWVzdC5MT0FESU5HIik7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRSZWNvcmQ7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGdldFJlY29yZCgpCi17Ci0g
ICAgZGVidWcoImdldFJlY29yZCgpOiIpOwotICAgIHNob3VsZEJlKCJyZXF1ZXN0LnJlYWR5U3Rh
dGUiLCAiSURCUmVxdWVzdC5ET05FIik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1
bHQiLCAia2V5Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RT
dG9yZS5nZXQoa2V5KTsiKTsKLSAgICBzaG91bGRCZSgicmVxdWVzdC5yZWFkeVN0YXRlIiwgIklE
QlJlcXVlc3QuTE9BRElORyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZmluYWxDaGVjazsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVu
Y3Rpb24gZmluYWxDaGVjaygpCi17Ci0gICAgZGVidWcoImZpbmFsQ2hlY2soKToiKTsKLSAgICBz
aG91bGRCZSgicmVxdWVzdC5yZWFkeVN0YXRlIiwgIklEQlJlcXVlc3QuRE9ORSIpOwotICAgIHNo
b3VsZEJlRmFsc2UoImV2ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCIpOwotICAgIGZpbmlzaEpT
VGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3JlYWR5U3RhdGUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+
Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVt
b3ZlLWluZGV4Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jl
bW92ZS1pbmRleC5odG1sCmluZGV4IGRhNTUzOTYwZjczOGM5MGE1OGQzMTQ4OGViYWZiZjg4ZGQ4
NGYzMDQuLjBlMjBhNzFkYjAzZjk5NTI0MTU2MTBmNmRiOTY4OWZhZGVjMjFmYzggMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVtb3ZlLWluZGV4Lmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZW1vdmUtaW5k
ZXguaHRtbApAQCAtMSw2NiArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9yaWdp
bmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2lu
ZGV4ZWREQi90ZXN0L3Rlc3RfcmVtb3ZlX2luZGV4Lmh0bWwKLSAgbGljZW5zZSBvZiBvcmlnaW5h
bCB0ZXN0OgotICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCi0gICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvICIKLS0tPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+
Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGNyZWF0aW5nIGFuZCBkZWxldGluZyBp
bmRleGVzIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVz
KCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlv
biA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhl
ZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBv
cGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygi
ZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
Y3JlYXRlQW5kRGVsZXRlSW5kZXg7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUFuZERlbGV0ZUluZGV4KCkKLXsKLSAg
ICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmVOYW1lID0gInRl
c3Qgc3RvcmUiOwotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBk
Yi5jcmVhdGVPYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUsIHsga2V5UGF0aDogJ2ZvbycgfSk7
Iik7Ci0gICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjEiKTsKLSAg
ICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5pdGVtKDApIiwgIm9iamVjdFN0b3JlTmFt
ZSIpOwotICAgIHNob3VsZEJlKCJvYmplY3RTdG9yZS5pbmRleE5hbWVzLmxlbmd0aCIsICIwIik7
Ci0KLSAgICBpbmRleE5hbWUgPSAiTXkgVGVzdCBJbmRleCI7Ci0gICAgaW5kZXggPSBldmFsQW5k
TG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KGluZGV4TmFtZSwgJ2ZvbycpOyIp
OwotICAgIHNob3VsZEJlKCJvYmplY3RTdG9yZS5pbmRleE5hbWVzLmxlbmd0aCIsICIxIik7Ci0g
ICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLmluZGV4TmFtZXMuaXRlbSgwKSIsICJpbmRleE5hbWUi
KTsKLQotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmRlbGV0ZUluZGV4KGluZGV4TmFtZSk7
Iik7Ci0gICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLmluZGV4TmFtZXMubGVuZ3RoIiwgIjAiKTsK
LQotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3JlbW92ZS1pbmRleC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
IDwvYm9keT4KIDwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9yZW1vdmUtb2JqZWN0c3RvcmUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vemlsbGEvcmVtb3ZlLW9iamVjdHN0b3JlLmh0bWwKaW5kZXggZjA2NjFj
NTQ3NWFiMTYxNGYwNTg4OWExMzY0MzYxYjY4Yjg5MmZkZC4uOTJiNzY1MTRiYzIyOGYwYmY3YWU3
ZmJjNWUxYTgzMTYxZjA0NDk4MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9yZW1vdmUtb2JqZWN0c3RvcmUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3JlbW92ZS1vYmplY3RzdG9yZS5odG1sCkBAIC0xLDEy
MCArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6
Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rl
c3RfcmVtb3ZlX29iamVjdFN0b3JlLmh0bWw/Zm9yY2U9MQotICBsaWNlbnNlIG9mIG9yaWdpbmFs
IHRlc3Q6Ci0gICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KLSAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8gIgotLS0+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4K
LQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGRlbGV0aW5nIGFuIG9iamVjdCBzdG9yZSIp
OwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0g
ICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkg
VGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVu
KG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nl
c3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0K
LWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxl
bmd0aCIsICIwIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNl
dFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5kUG9wdWxh
dGVPYmplY3RTdG9yZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLX0KLQotZnVuY3Rpb24gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSgpCi17Ci0g
ICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9iamVjdFN0b3JlTmFtZSA9IGV2
YWxBbmRMb2coIm9iamVjdFN0b3JlTmFtZSA9ICdPYmplY3RzJzsiKTsKLSAgICBvYmplY3RTdG9y
ZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0
U3RvcmVOYW1lLCB7IGtleVBhdGg6ICdmb28nIH0pOyIpOwotCi0gICAgYWRkZWRDb3VudCA9IGV2
YWxBbmRMb2coImFkZGVkQ291bnQgPSAwOyIpOwotICAgIGZvciAoaSA9IDA7IGkgPCAxMDA7IGkr
KykgewotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3Jl
LmFkZCh7Zm9vOiBpfSk7Iik7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50
KSB7Ci0gICAgICAgICAgICBpZiAoKythZGRlZENvdW50ID09IDEwMCkgewotICAgICAgICAgICAg
ICAgIGNoZWNrT2JqZWN0U3RvcmUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0K
LX0KLQotZnVuY3Rpb24gY2hlY2tPYmplY3RTdG9yZSgpCi17Ci0gICAgc2hvdWxkQmUoImRiLm9i
amVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjEiKTsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3Rv
cmVOYW1lcy5pdGVtKDApIiwgIm9iamVjdFN0b3JlTmFtZSIpOwotCi0gICAgcmVxdWVzdCA9IGRi
LnNldFZlcnNpb24oJzInKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RTZXRWZXJzaW9uMjsKLX0KLQot
ZnVuY3Rpb24gcG9zdFNldFZlcnNpb24yKCkKLXsKLSAgICBldmFsQW5kTG9nKCJkYi5kZWxldGVP
YmplY3RTdG9yZShvYmplY3RTdG9yZS5uYW1lKTsiKTsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0
U3RvcmVOYW1lcy5sZW5ndGgiLCAiMCIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSwgeyBr
ZXlQYXRoOiAnZm9vJyB9KTsiKTsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5s
ZW5ndGgiLCAiMSIpOwotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLml0ZW0oMCki
LCAib2JqZWN0U3RvcmVOYW1lIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KGV2ZW50KSB7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIm51bGwi
KTsKLSAgICAgICAgZGVsZXRlU2Vjb25kT2JqZWN0U3RvcmUoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0
aW9uIGRlbGV0ZVNlY29uZE9iamVjdFN0b3JlKCkKLXsKLSAgICBldmFsQW5kTG9nKCJkYi5kZWxl
dGVPYmplY3RTdG9yZShvYmplY3RTdG9yZS5uYW1lKTsiKTsKLSAgICBzaG91bGRCZSgiZGIub2Jq
ZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMCIpOwotICAgIHNldFZlcnNpb24zKCk7Ci19Ci0KLWZ1
bmN0aW9uIHNldFZlcnNpb24zKCkKLXsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IGRiLnNldFZlcnNpb24oJzMnKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RTZXRWZXJzaW9u
MzsKLX0KLQotZnVuY3Rpb24gcG9zdFNldFZlcnNpb24zKCkKLXsKLSAgICBvYmplY3RTdG9yZSA9
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3Rv
cmVOYW1lLCB7IGtleVBhdGg6ICdmb28nIH0pOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKHtmb286J2Jhcid9KTsiKTsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGRlbGV0ZVRoaXJkT2JqZWN0U3RvcmU7Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZVRoaXJkT2Jq
ZWN0U3RvcmUoKQotewotICAgIGV2YWxBbmRMb2coImRiLmRlbGV0ZU9iamVjdFN0b3JlKG9iamVj
dFN0b3JlTmFtZSk7Iik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVtb3ZlLW9iamVjdHN0b3JlLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9hZGQtdHdpY2UtZmFp
bHVyZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2Vz
L2FkZC10d2ljZS1mYWlsdXJlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhZWYzOTI5ZjE4ZjU1Y2Y4ODY2Mjgx
ZTkxZWJiNDU2ZmU2NTBjYTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9hZGQtdHdpY2UtZmFpbHVyZS5qcwpAQCAtMCww
ICsxLDU5IEBACisvLyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9t
b3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9hZGRfdHdpY2VfZmFpbHVy
ZS5odG1sCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisvLyAiIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorLy8gICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKworaWYgKHRoaXMuaW1wb3J0U2Ny
aXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vcmVzb3VyY2VzL3No
YXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgYmVoYXZpb3IgYWRk
aW5nIHRoZSBzYW1lIHByb3BlcnR5IHR3aWNlIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAg
IHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRo
bmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQorewor
ICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgp
Cit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0g
ZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJyk7Iik7
CisgICAga2V5ID0gZXZhbEFuZExvZygia2V5ID0gMTAiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZCh7fSwga2V5KTsiKTsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGFkZEZpcnN0U3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gYWRkRmlyc3RTdWNjZXNzKCkKK3sK
KyAgICBzaG91bGRCZSgicmVxdWVzdC5yZXN1bHQiLCAia2V5Iik7CisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoe30sIGtleSk7Iik7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IGFkZFNlY29uZEV4cGVjdGVkRXJyb3I7Cit9CisKK2Z1bmN0aW9uIGFkZFNlY29u
ZEV4cGVjdGVkRXJyb3IoKQoreworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuZXJyb3JDb2Rl
IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkNPTlNUUkFJTlRfRVJSIik7CisgICAgZmluaXNoSlNU
ZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9hdXRv
aW5jcmVtZW50LWluZGV4ZXMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL3Jlc291cmNlcy9hdXRvaW5jcmVtZW50LWluZGV4ZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDIxMmYw
OWJhM2YzMzJlM2YxMDFlMmU2Zjk4NzUwYTA3MjhlNDFjMAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2F1dG9pbmNyZW1l
bnQtaW5kZXhlcy5qcwpAQCAtMCwwICsxLDg5IEBACisvLyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0
cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3Qv
dGVzdF9hdXRvSW5jcmVtZW50X2luZGV4ZXMuaHRtbD9mb3JjZT0xCisvLyBsaWNlbnNlIG9mIG9y
aWdpbmFsIHRlc3Q6CisvLyAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorLy8gICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvICIKKworaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlw
dHMoJy4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAg
aW1wb3J0U2NyaXB0cygnLi4vLi4vcmVzb3VyY2VzL3NoYXJlZC5qcycpOworfQorCitkZXNjcmlw
dGlvbigiVGVzdCBJbmRleGVkREIgaW5kZXhlcyBhZ2FpbnN0IGF1dG9pbmNyZW1lbnRpbmcga2V5
cyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwor
CisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAi
TXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5v
cGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1
Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVl
c3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldHVw
T2JqZWN0U3RvcmU7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Cit9CisKK2Z1bmN0aW9uIHNldHVwT2JqZWN0U3RvcmUoKQoreworICAgIHRyYW5zID0gZXZl
bnQudGFyZ2V0LnJlc3VsdDsKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAg
b2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0
b3JlKCdmb28nLCB7IGtleVBhdGg6ICdpZCcsIGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7Cisg
ICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ2ZpcnN0JywgJ2ZpcnN0Jyk7
Iik7CisgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ3NlY29uZCcsICdz
ZWNvbmQnKTsiKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgndGhp
cmQnLCAndGhpcmQnKTsiKTsKKyAgICBkYXRhID0gZXZhbEFuZExvZygiZGF0YSA9IHsgZmlyc3Q6
ICdmb28nLCBzZWNvbmQ6ICdmb28nLCB0aGlyZDogJ2ZvbycgfTsiKTsKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChkYXRhKTsiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IHNldHVwSW5kZXhlczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0dXBJbmRleGVzKCkKK3sKKyAg
ICBrZXkgPSBldmFsQW5kTG9nKCJrZXkgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgIHNo
b3VsZEJlRmFsc2UoImtleSA9PSBudWxsIik7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHNldFZl
cnNpb25Db21wbGV0ZTsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbkNvbXBsZXRlKCkKK3sKKyAg
ICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIudHJhbnNhY3Rpb24o
J2ZvbycpLm9iamVjdFN0b3JlKCdmb28nKTsiKTsKKyAgICBmaXJzdCA9IGV2YWxBbmRMb2coImZp
cnN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ2ZpcnN0Jyk7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBmaXJzdC5nZXQoJ2ZvbycpOyIpOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gY2hlY2tGaXJzdEluZGV4QW5kUHJlcGFyZVNlY29uZDsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2hlY2tGaXJzdElu
ZGV4QW5kUHJlcGFyZVNlY29uZCgpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1
bHQuaWQiLCAia2V5Iik7CisgICAgc2Vjb25kID0gZXZhbEFuZExvZygic2Vjb25kID0gb2JqZWN0
U3RvcmUuaW5kZXgoJ3NlY29uZCcpOyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gc2Vjb25kLmdldCgnZm9vJyk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjaGVj
a1NlY29uZEluZGV4QW5kUHJlcGFyZVRoaXJkOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjaGVja1NlY29uZEluZGV4QW5kUHJl
cGFyZVRoaXJkKCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5pZCIsICJr
ZXkiKTsKKyAgICB0aGlyZCA9IGV2YWxBbmRMb2coInRoaXJkID0gb2JqZWN0U3RvcmUuaW5kZXgo
J3RoaXJkJyk7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSB0aGlyZC5n
ZXQoJ2ZvbycpOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2hlY2tUaGlyZEluZGV4Owor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiBjaGVja1RoaXJkSW5kZXgoKQoreworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVz
dWx0LmlkIiwgImtleSIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvYmFkLWtleXBhdGguanMgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9iYWQta2V5cGF0aC5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kYTA2NTBmOTBmNmRlZmEyZjQ1YTg4NzRiNjI1OWIyYWY2YmI1ODMxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMv
YmFkLWtleXBhdGguanMKQEAgLTAsMCArMSw1MCBAQAorLy8gb3JpZ2luYWwgdGVzdDoKKy8vIGh0
dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0
L3Rlc3RfYmFkX2tleXBhdGguaHRtbAorLy8gbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorLy8g
IiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKy8vICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCisKK2lm
ICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJy4u
Ly4uL3Jlc291cmNlcy9zaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhl
ZERCIGFkZGluZyBwcm9wZXJ0eSB3aXRoIGludmFsaWQga2V5cGF0aCIpOworCitmdW5jdGlvbiB0
ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYu
bG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0
aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5T
dWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9u
KCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNs
ZWFuRGF0YWJhc2UoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBv
YmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ2ZvbycsIHsga2V5UGF0aDogJ2tleVBhdGgnIH0pOyIpOworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKHsga2V5UGF0aDogJ2ZvbycgfSk7Iik7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRGaXJzdFN1Y2Nlc3M7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGFkZEZpcnN0
U3VjY2VzcygpCit7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigicmVxdWVzdCA9IG9iamVj
dFN0b3JlLmFkZCh7fSk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisgICAg
ZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291
cmNlcy9jbGVhci5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVz
b3VyY2VzL2NsZWFyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0MjMwYjRjYzQ1MzMyMjAwZjU2YzQ1MjkyNTNh
NGFjMGViYjY3MTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jbGVhci5qcwpAQCAtMCwwICsxLDYwIEBACisvLyBvcmln
aW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9k
b20vaW5kZXhlZERCL3Rlc3QvdGVzdF9jbGVhci5odG1sCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFs
IHRlc3Q6CisvLyAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorLy8gICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvICIKKworaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4u
Ly4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0
U2NyaXB0cygnLi4vLi4vcmVzb3VyY2VzL3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigi
VGVzdCBJbmRleGVkREIncyBjbGVhcmluZyBhbiBvYmplY3Qgc3RvcmUiKTsKKworZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxm
LmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2Ui
OworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlw
dGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVu
U3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lv
bignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBj
bGVhbkRhdGFiYXNlKCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAg
b2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0
b3JlKCdmb28nLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7CisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoe30pOyIpOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIGV2ZW50LnRhcmdldC5yZXN1
bHQub25jb21wbGV0ZSA9IGNsZWFyOworfQorCitmdW5jdGlvbiBjbGVhcigpCit7CisgICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oJ2ZvbycpLm9iamVjdFN0b3JlKCdm
b28nKS5jbGVhcigpOyIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5SRUFEX09OTFlfRVJSIik7Cisg
ICAgZXZhbEFuZExvZygiZGIudHJhbnNhY3Rpb24oJ2ZvbycsIElEQlRyYW5zYWN0aW9uLlJFQURf
V1JJVEUpLm9iamVjdFN0b3JlKCdmb28nKS5jbGVhcigpOyIpOworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gZGIudHJhbnNhY3Rpb24oJ2ZvbycpLm9iamVjdFN0b3JlKCdmb28n
KS5vcGVuQ3Vyc29yKCk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhcmVXZUNsZWFyWWV0
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiBhcmVXZUNsZWFyWWV0KCkKK3sKKyAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJz
b3IgPSByZXF1ZXN0LnJlc3VsdDsiKTsKKyAgICBzaG91bGRCZSgiY3Vyc29yIiwgIm51bGwiKTsK
KyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEv
cmVzb3VyY2VzL2NyZWF0ZS1pbmRleC11bmlxdWUuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jcmVhdGUtaW5kZXgtdW5pcXVlLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE4YzZjZjc2YzBjMzNkYjc3NzgxM2JiY2UyMzRjNTdlYTZjMzc5N2EKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9j
cmVhdGUtaW5kZXgtdW5pcXVlLmpzCkBAIC0wLDAgKzEsNjEgQEAKKy8vIG9yaWdpbmFsIHRlc3Q6
CisvLyBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVk
REIvdGVzdC90ZXN0X2NyZWF0ZV9pbmRleC5odG1sCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRl
c3Q6CisvLyAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorLy8gICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
ICIKKworaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4u
Ly4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2Ny
aXB0cygnLi4vLi4vcmVzb3VyY2VzL3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVz
dCBJbmRleGVkREIncyBjcmVhdGluZyB1bmlxdWUgaW5kZXggYW5kIHVwZGF0aW5nIGluZGV4TmFt
ZXMiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsK
KworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0g
Ik15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
b3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5T
dWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9
IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVh
dGVBbmRWZXJpZnlJbmRleDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gY3JlYXRlQW5kVmVyaWZ5SW5kZXgoKQoreworICAgIGRl
bGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2co
Im9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2EnLCB7IGtleVBhdGg6ICdpZCcs
IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7CisKKyAgICBpbmRleE5hbWUgPSAiMSI7CisgICAg
aW5kZXhLZXlQYXRoID0gInVuaXF1ZV92YWx1ZSI7CisgICAgaW5kZXggPSBldmFsQW5kTG9nKCJp
bmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KGluZGV4TmFtZSwgaW5kZXhLZXlQYXRoLCB7
IHVuaXF1ZTogdHJ1ZSB9KTsiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uQ09OU1RSQUlOVF9FUlIi
KTsKKyAgICBzaG91bGRCZSgiaW5kZXgubmFtZSIsICJpbmRleE5hbWUiKTsKKyAgICBzaG91bGRC
ZSgiaW5kZXgua2V5UGF0aCIsICJpbmRleEtleVBhdGgiKTsKKyAgICBzaG91bGRCZSgiaW5kZXgu
dW5pcXVlIiwgInRydWUiKTsKKyAgICBzaG91bGRCZSgib2JqZWN0U3RvcmUuaW5kZXhOYW1lcy5s
ZW5ndGgiLCAiMSIpOworCisgICAgZm91bmROZXdseUNyZWF0ZWRJbmRleCA9IGZhbHNlOworICAg
IGZvciAodmFyIGsgPSAwOyBrIDwgb2JqZWN0U3RvcmUuaW5kZXhOYW1lcy5sZW5ndGg7IGsrKykg
eworICAgICAgICBpZiAob2JqZWN0U3RvcmUuaW5kZXhOYW1lcy5pdGVtKGspID09IGluZGV4TmFt
ZSkgeworICAgICAgICAgICAgZm91bmROZXdseUNyZWF0ZWRJbmRleCA9IHRydWU7CisgICAgICAg
IH0KKyAgICB9CisgICAgc2hvdWxkQmVUcnVlKCJmb3VuZE5ld2x5Q3JlYXRlZEluZGV4Iik7Cisg
ICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5kYiIsICJkYiIpOworICAgIHNo
b3VsZEJlKCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24ucmVhZHlTdGF0ZSIsICJJREJUcmFuc2Fj
dGlvbi5MT0FESU5HIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5t
b2RlIiwgIklEQlRyYW5zYWN0aW9uLlZFUlNJT05fQ0hBTkdFIik7CisgICAgZmluaXNoSlNUZXN0
KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jcmVhdGUt
aW5kZXgtd2l0aC1pbnRlZ2VyLWtleXMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL3Jlc291cmNlcy9jcmVhdGUtaW5kZXgtd2l0aC1pbnRlZ2VyLWtleXMuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMzQzZTRjNWM4ZmE4ODEwYjI4OTM1NmUxZmVhZjAzNGZkNGRiODc4OQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3Vy
Y2VzL2NyZWF0ZS1pbmRleC13aXRoLWludGVnZXIta2V5cy5qcwpAQCAtMCwwICsxLDU2IEBACisv
LyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3Nv
dXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9jcmVhdGVfaW5kZXhfd2l0aF9pbnRlZ2VyX2tl
eXMuaHRtbD9mb3JjZT0xCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisvLyAiIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorLy8gICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKworaWYgKHRoaXMu
aW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vcmVz
b3VyY2VzL3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBj
cmVhdGluZyBpbmRleCB3aXRoIGludGVnZXIga2V5cyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sK
KyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24u
cGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkK
K3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldHVwT2JqZWN0U3RvcmVBbmRDcmVhdGVJbmRleDsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gc2V0dXBPYmplY3RTdG9yZUFuZENyZWF0ZUluZGV4KCkKK3sKKyAgICBkZWxldGVBbGxP
YmplY3RTdG9yZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7IGtleVBhdGg6ICdpZCcgfSk7Iik7
CisgICAgZGF0YSA9IGV2YWxBbmRMb2coImRhdGEgPSB7IGlkOiAxNiwgbnVtOiA0MiB9OyIpOwor
ICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZChkYXRhKTsiKTsKKyAgICBpbmRleCA9IGV2
YWxBbmRMb2coImluZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ2ZvbycsICdudW0nKTsi
KTsKKyAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJyZXN1bHQgPSBpbmRleC5vcGVuS2V5Q3Vyc29y
KCk7Iik7CisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9IHZlcmlmeUtleUN1cnNvcjsKKyAgICByZXN1
bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiB2ZXJp
ZnlLZXlDdXJzb3IoKQoreworICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50
LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiY3Vyc29yID09IG51bGwiKTsK
KyAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJkYXRhLm51bSIpOworICAgIHNob3VsZEJlKCJj
dXJzb3IucHJpbWFyeUtleSIsICJkYXRhLmlkIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisK
K3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jcmVhdGUtb2JqZWN0c3Rv
cmUtYmFzaWNzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNv
dXJjZXMvY3JlYXRlLW9iamVjdHN0b3JlLWJhc2ljcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNzMxNmIyZTRl
ODQ1MGUzNWQwZWE2OTU1Y2ZiNDdhNDc2YjhkYWQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY3JlYXRlLW9iamVjdHN0
b3JlLWJhc2ljcy5qcwpAQCAtMCwwICsxLDY2IEBACisvLyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0
cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3Qv
dGVzdF9jcmVhdGVfb2JqZWN0U3RvcmUuaHRtbAorLy8gbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0
OgorLy8gIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
Ky8vICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAi
CisKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8u
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlw
dHMoJy4uLy4uL3Jlc291cmNlcy9zaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3Qg
SW5kZXhlZERCJ3MgY3JlYXRpbmcgb2JqZWN0IHN0b3JlIGFuZCB1cGRhdGluZyBwcm9wZXJ0aWVz
Iik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisK
KyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJN
eSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9w
ZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3Vj
Y2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30K
KworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBl
dmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5E
YXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
K30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3Rv
cmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlSW5mbyA9IFsKKyAgICAgICAgeyBuYW1lOiAiMSIs
IG9wdGlvbnM6IHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9IH0sCisgICAgICAgIHsgbmFtZTogIjIi
LCBvcHRpb25zOiB7IGF1dG9JbmNyZW1lbnQ6IGZhbHNlIH0gfSwKKyAgICAgICAgeyBuYW1lOiAi
MyIsIG9wdGlvbnM6IHsga2V5UGF0aDogIiIgfSB9LAorICAgICAgICB7IG5hbWU6ICI0Iiwgb3B0
aW9uczogeyBrZXlQYXRoOiAiIiwgYXV0b0luY3JlbWVudDogdHJ1ZSB9IH0sCisgICAgICAgIHsg
bmFtZTogIjUiLCBvcHRpb25zOiB7IGtleVBhdGg6ICIiLCBhdXRvSW5jcmVtZW50OiBmYWxzZSB9
IH0sCisgICAgICAgIHsgbmFtZTogIjYiLCBvcHRpb25zOiB7IGtleVBhdGg6ICJmb28iIH0gfSwK
KyAgICAgICAgeyBuYW1lOiAiNyIsIG9wdGlvbnM6IHsga2V5UGF0aDogImZvbyIsIGF1dG9JbmNy
ZW1lbnQ6IGZhbHNlIH0gfSwKKyAgICAgICAgeyBuYW1lOiAiOCIsIG9wdGlvbnM6IHsga2V5UGF0
aDogImZvbyIsIGF1dG9JbmNyZW1lbnQ6IHRydWUgfSB9CisgICAgXTsKKworICAgIGZvciAodmFy
IGluZGV4IGluIG9iamVjdFN0b3JlSW5mbykgeworICAgICAgICBpbmRleCA9IHBhcnNlSW50KGlu
ZGV4KTsKKyAgICAgICAgaW5mbyA9IG9iamVjdFN0b3JlSW5mb1tpbmRleF07CisgICAgICAgIG9i
amVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9y
ZShpbmZvLm5hbWUsIGluZm8ub3B0aW9ucyk7Iik7CisgICAgICAgIHNob3VsZEJlKCJvYmplY3RT
dG9yZS5uYW1lIiwgImluZm8ubmFtZSIpOworICAgICAgICBpZiAoaW5mby5vcHRpb25zICYmIGlu
Zm8ub3B0aW9ucy5rZXlQYXRoKSB7CisgICAgICAgICAgICBzaG91bGRCZSgib2JqZWN0U3RvcmUu
a2V5UGF0aCIsICJpbmZvLm9wdGlvbnMua2V5UGF0aCIpOworICAgICAgICB9CisgICAgICAgIHNo
b3VsZEJlKCJvYmplY3RTdG9yZS5pbmRleE5hbWVzLmxlbmd0aCIsICIwIik7CisgICAgICAgIHNo
b3VsZEJlKCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24uZGIiLCAiZGIiKTsKKyAgICAgICAgc2hv
dWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5yZWFkeVN0YXRlIiwgIklEQlRyYW5zYWN0
aW9uLkxPQURJTkciKTsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlv
bi5tb2RlIiwgIklEQlRyYW5zYWN0aW9uLlZFUlNJT05fQ0hBTkdFIik7CisgICAgfQorCisgICAg
ZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291
cmNlcy9jcmVhdGUtb2JqZWN0c3RvcmUtbnVsbC1uYW1lLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY3JlYXRlLW9iamVjdHN0b3JlLW51bGwtbmFt
ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zYzI2NjkwZWY1YzQzNzMzMzc4ODkyZWQ5NGViNDRjYTIwNDgwMTc2
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9yZXNvdXJjZXMvY3JlYXRlLW9iamVjdHN0b3JlLW51bGwtbmFtZS5qcwpAQCAtMCwwICsxLDQ0
IEBACisvLyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxh
Mi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9jcmVhdGVfb2JqZWN0U3RvcmUuaHRt
bAorLy8gbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorLy8gIiBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKy8vICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCisKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMp
IHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uL3Jlc291cmNlcy9zaGFyZWQu
anMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgY3JlYXRpbmcgb2JqZWN0
IHN0b3JlIHdpdGggbnVsbCBuYW1lIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92
ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsK
KyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRi
ID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7Cisg
ICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFu
ZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShudWxsKTsiKTsKKyAgICBz
aG91bGRCZSgib2JqZWN0U3RvcmUubmFtZSIsICInbnVsbCciKTsKKworICAgIGZpbmlzaEpTVGVz
dCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY3Vyc29y
LW11dGF0aW9uLW9iamVjdHN0b3JlLW9ubHkuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jdXJzb3ItbXV0YXRpb24tb2JqZWN0c3RvcmUtb25seS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iNzdlZWNjODU2YmUwYTBiOTJjNmU4YWZlNGM4NDFhNGY0MTgzNjM3Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9y
ZXNvdXJjZXMvY3Vyc29yLW11dGF0aW9uLW9iamVjdHN0b3JlLW9ubHkuanMKQEAgLTAsMCArMSwx
NDEgQEAKKy8vIG9yaWdpbmFsIHRlc3Q6CisvLyBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemls
bGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2N1cnNvcl9tdXRhdGlvbi5odG1s
P2ZvcmNlPTEKKy8vIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBvcnRT
Y3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi9yZXNvdXJjZXMv
c2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGN1cnNvciBt
dXRhdGlvbiBkdXJpbmcgb2JqZWN0IHN0b3JlIGN1cnNvciBpdGVyYXRpb24iKTsKKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBz
ZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJh
c2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNj
cmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBv
cGVuU3VjY2VzcygpCit7CisgICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7CisgICAgZGIgPSBl
dmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBzZXR1cE9iamVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXR1cE9iamVjdFN0b3JlKCkKK3sK
KyAgICBkZWJ1Zygic2V0dXBPYmplY3RTdG9yZSgpOiIpOworICAgIGRlbGV0ZUFsbE9iamVjdFN0
b3JlcyhkYik7CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycsIHsga2V5UGF0aDogJ3NzJyB9KTsiKTsKKyAgICBv
YmplY3RTdG9yZURhdGEgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZURhdGEgPSBbXG4iICsgCisi
ICAgICAgICB7IHNzOiAnMjM3LTIzLTc3MzInLCBuYW1lOiAnQm9iJyB9LFxuIiArIAorCisiICAg
ICAgICB7IHNzOiAnMjM3LTIzLTc3MzMnLCBuYW1lOiAnQW5uJyB9LFxuIiArCisiICAgICAgICB7
IHNzOiAnMjM3LTIzLTc3MzQnLCBuYW1lOiAnUm9uJyB9LFxuIiArCisiICAgICAgICB7IHNzOiAn
MjM3LTIzLTc3MzUnLCBuYW1lOiAnU3VlJyB9LFxuIiArCisiICAgICAgICB7IHNzOiAnMjM3LTIz
LTc3MzYnLCBuYW1lOiAnSm9lJyB9LFxuIiArCisKKyIgICAgICAgIHsgc3M6ICcyMzctMjMtNzcz
NycsIG5hbWU6ICdQYXQnIH1cbiIgKworIiAgICBdOyIpOworCisgICAgZm9yIChpID0gMDsgaSA8
IG9iamVjdFN0b3JlRGF0YS5sZW5ndGggLSAxOyBpKyspIHsKKyAgICAgICAgZXZhbEFuZExvZygi
b2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXSk7Iik7CisgICAgfQorCisgICAgY291
bnQgPSBldmFsQW5kTG9nKCJjb3VudCA9IDA7Iik7CisgICAgc2F3QWRkZWQgPSBldmFsQW5kTG9n
KCJzYXdBZGRlZCA9IGZhbHNlOyIpOworICAgIHNhd1JlbW92ZWQgPSBldmFsQW5kTG9nKCJzYXdS
ZW1vdmVkID0gZmFsc2U7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGl0
ZXJhdGVDdXJzb3I7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Cit9CisKK2Z1bmN0aW9uIGl0ZXJhdGVDdXJzb3IoKQoreworICAgIGRlYnVnKCJpdGVyYXRl
Q3Vyc29yKCk6Iik7CisgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm9u
Y29tcGxldGUgPSBjaGVja0N1cnNvclJlc3VsdHNBbmRTZXR1cE11dGF0aW5nQ3Vyc29yOyIpOwor
ICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7
CisgICAgaWYgKGN1cnNvcikgeworICAgICAgICBpZiAoY3Vyc29yLnZhbHVlLm5hbWUgPT0gb2Jq
ZWN0U3RvcmVEYXRhWzBdLm5hbWUpIHsKKyAgICAgICAgICAgIHNhd1JlbW92ZWQgPSBldmFsQW5k
TG9nKCJzYXdSZW1vdmVkID0gdHJ1ZTsiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY3Vyc29y
LnZhbHVlLm5hbWUgPT0gb2JqZWN0U3RvcmVEYXRhW29iamVjdFN0b3JlRGF0YS5sZW5ndGggLSAx
XS5uYW1lKSB7CisgICAgICAgICAgICBzYXdBZGRlZCA9IGV2YWxBbmRMb2coInNhd0FkZGVkID0g
dHJ1ZTsiKTsKKyAgICAgICAgfQorICAgICAgICBldmFsQW5kTG9nKCJjb3VudCsrOyIpOworICAg
ICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKKyAgICB9Cit9CisKK2Z1bmN0
aW9uIGNoZWNrQ3Vyc29yUmVzdWx0c0FuZFNldHVwTXV0YXRpbmdDdXJzb3IoKQoreworICAgIGRl
YnVnKCJjaGVja0N1cnNvclJlc3VsdHNBbmRTZXR1cE11dGF0aW5nQ3Vyc29yKCk6Iik7CisgICAg
c2hvdWxkQmUoImNvdW50IiwgIm9iamVjdFN0b3JlRGF0YS5sZW5ndGggLSAxIik7CisgICAgc2hv
dWxkQmUoInNhd0FkZGVkIiwgImZhbHNlIik7CisgICAgc2hvdWxkQmUoInNhd1JlbW92ZWQiLCAi
dHJ1ZSIpOworCisgICAgY291bnQgPSBldmFsQW5kTG9nKCJjb3VudCA9IDA7Iik7CisgICAgc2F3
QWRkZWQgPSBldmFsQW5kTG9nKCJzYXdBZGRlZCA9IGZhbHNlOyIpOworICAgIHNhd1JlbW92ZWQg
PSBldmFsQW5kTG9nKCJzYXdSZW1vdmVkID0gZmFsc2U7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygicmVxdWVzdCA9IGRiLnRyYW5zYWN0aW9uKCdmb28nLCBJREJUcmFuc2FjdGlvbi5S
RUFEX1dSSVRFKS5vYmplY3RTdG9yZSgnZm9vJykub3BlbkN1cnNvcigpOyIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gaXRlcmF0ZU11dGF0aW5nQ3Vyc29yOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBpdGVyYXRlTXV0YXRp
bmdDdXJzb3IoKQoreworICAgIGRlYnVnKCJpdGVyYXRlTXV0YXRpbmdDdXJzb3IoKToiKTsKKyAg
ICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGNoZWNr
TXV0YXRpbmdDdXJzb3JSZXN1bHRzOyIpOworICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNv
ciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgaWYgKGN1cnNvcikgeworICAgICAgICBp
ZiAoY3Vyc29yLnZhbHVlLm5hbWUgPT0gb2JqZWN0U3RvcmVEYXRhWzBdLm5hbWUpIHsKKyAgICAg
ICAgICAgIHNhd1JlbW92ZWQgPSBldmFsQW5kTG9nKCJzYXdSZW1vdmVkID0gdHJ1ZTsiKTsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoY3Vyc29yLnZhbHVlLm5hbWUgPT0gb2JqZWN0U3RvcmVEYXRh
W29iamVjdFN0b3JlRGF0YS5sZW5ndGggLSAxXS5uYW1lKSB7CisgICAgICAgICAgICBzYXdBZGRl
ZCA9IGV2YWxBbmRMb2coInNhd0FkZGVkID0gdHJ1ZTsiKTsKKyAgICAgICAgfQorICAgICAgICBz
aG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAiJyIgKyBvYmplY3RTdG9yZURhdGFbY291bnRd
Lm5hbWUgKyAiJyIpOworICAgICAgICBldmFsQW5kTG9nKCJjb3VudCsrIik7CisKKyAgICAgICAg
aWYgKGNvdW50ID09IDEpIHsKKyAgICAgICAgICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygi
b2JqZWN0U3RvcmUgPSBldmVudC50YXJnZXQudHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ2Zvbycp
OyIpOworICAgICAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RT
dG9yZS5kZWxldGUob2JqZWN0U3RvcmVEYXRhWzBdLnNzKTsiKTsKKyAgICAgICAgICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gYWRkRmluYWxEYXRhOworICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBjdXJzb3IuY29udGludWUoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gYWRk
RmluYWxEYXRhKCkKK3sKKyAgICBkZWJ1ZygiYWRkRmluYWxEYXRhKCk6Iik7CisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRh
W29iamVjdFN0b3JlRGF0YS5sZW5ndGggLSAxXSk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbiAoKSB7IGN1cnNvci5jb250aW51ZSgpOyB9CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNoZWNrTXV0YXRpbmdD
dXJzb3JSZXN1bHRzKCkKK3sKKyAgICBkZWJ1ZygiY2hlY2tNdXRhdGluZ0N1cnNvclJlc3VsdHMo
KToiKTsKKyAgICBzaG91bGRCZSgiY291bnQiLCAib2JqZWN0U3RvcmVEYXRhLmxlbmd0aCIpOwor
ICAgIHNob3VsZEJlKCJzYXdBZGRlZCIsICJ0cnVlIik7CisgICAgc2hvdWxkQmUoInNhd1JlbW92
ZWQiLCAidHJ1ZSIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY3Vyc29yLW11dGF0aW9uLmpzIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY3Vyc29yLW11dGF0aW9uLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjIxNTY2ZmJmZGI4Nzk1ZGUzMzdkN2I5OTYxNDE2ODk2NmMwMzAyMDgKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291
cmNlcy9jdXJzb3ItbXV0YXRpb24uanMKQEAgLTAsMCArMSwxODEgQEAKKy8vIG9yaWdpbmFsIHRl
c3Q6CisvLyBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRl
eGVkREIvdGVzdC90ZXN0X2N1cnNvcl9tdXRhdGlvbi5odG1sP2ZvcmNlPTEKKy8vIGxpY2Vuc2Ug
b2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0
U2NyaXB0cygnLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsK
KyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi9yZXNvdXJjZXMvc2hhcmVkLmpzJyk7Cit9CisKK2Rl
c2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGN1cnNvciBtdXRhdGlvbiIpOworCitmdW5jdGlv
biB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgZGVidWcoIiIp
OworICAgIG5hbWUgPSAnY3Vyc29yLW11dGF0aW9uJzsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKG5hbWUpIik7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbiAoKSB7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbihu
YW1lKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICAgICAgICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICAgICAgICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICAgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBzZXR1cE9iamVjdFN0b3JlQW5kQ3JlYXRlSW5kZXg7ICAgICAgICAg
IAorICAgICAgICB9OworICAgIH07Cit9CisKK2Z1bmN0aW9uIHNldHVwT2JqZWN0U3RvcmVBbmRD
cmVhdGVJbmRleCgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJzZXR1cE9iamVjdFN0
b3JlQW5kQ3JlYXRlSW5kZXgoKToiKTsKKworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMg
PSByZXF1ZXN0LnJlc3VsdCIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7IGtleVBhdGg6ICdzcycgfSki
KTsKKyAgICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5k
ZXgoJ25hbWUnLCAnbmFtZScsIHsgdW5pcXVlOiB0cnVlIH0pIik7CisgICAgb2JqZWN0U3RvcmVE
YXRhID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmVEYXRhID0gW1xuIiArIAorICAgICAgICAgLy8g
VG8gYmUgcmVtb3ZlZC4KKyIgICAgICAgIHsgc3M6ICcyMzctMjMtNzczMicsIG5hbWU6ICdCb2In
IH0sXG4iICsgCisKKyAgICAgICAgIC8vIEFsd2F5cyBwcmVzZW50LgorIiAgICAgICAgeyBzczog
JzIzNy0yMy03NzMzJywgbmFtZTogJ0FubicgfSxcbiIgKworIiAgICAgICAgeyBzczogJzIzNy0y
My03NzM0JywgbmFtZTogJ1JvbicgfSxcbiIgKworIiAgICAgICAgeyBzczogJzIzNy0yMy03NzM1
JywgbmFtZTogJ1N1ZScgfSxcbiIgKworIiAgICAgICAgeyBzczogJzIzNy0yMy03NzM2JywgbmFt
ZTogJ0pvZScgfSxcbiIgKworCisgICAgICAgICAvLyBUbyBiZSBhZGRlZC4KKyIgICAgICAgIHsg
c3M6ICcyMzctMjMtNzczNycsIG5hbWU6ICdQYXQnIH1cbiIgKworIiAgICBdIik7CisKKyAgICBm
b3IgKGkgPSAwOyBpIDwgb2JqZWN0U3RvcmVEYXRhLmxlbmd0aCAtIDE7IGkrKykgeworICAgICAg
ICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhWyIgKyBpICsgIl0p
Iik7CisgICAgfQorCisgICAgZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IGNoZWNrQ3Vy
c29yUmVzdWx0cyIpOworICAgIHNldHVwQ3Vyc29yKCk7Cit9CisKK2Z1bmN0aW9uIHNldHVwQ3Vy
c29yKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInNldHVwQ3Vyc29yKCk6Iik7CisK
KyAgICBjb3VudCA9IGV2YWxBbmRMb2coImNvdW50ID0gMCIpOworICAgIHNhd0FkZGVkID0gZXZh
bEFuZExvZygic2F3QWRkZWQgPSBmYWxzZSIpOworICAgIHNhd1JlbW92ZWQgPSBldmFsQW5kTG9n
KCJzYXdSZW1vdmVkID0gZmFsc2UiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBpdGVyYXRl
Q3Vyc29yOworfQorCitmdW5jdGlvbiBpdGVyYXRlQ3Vyc29yKCkKK3sKKyAgICBkZWJ1ZygiIik7
CisgICAgZGVidWcoIml0ZXJhdGVDdXJzb3IoKToiKTsKKyAgICBjdXJzb3IgPSBldmFsQW5kTG9n
KCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgaWYgKGN1cnNvcikgeworICAg
ICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImN1cnNvci52YWx1ZS5uYW1lIiwgb2JqZWN0U3Rv
cmVEYXRhW2NvdW50XS5uYW1lKTsKKyAgICAgICAgaWYgKGN1cnNvci52YWx1ZS5uYW1lID09IG9i
amVjdFN0b3JlRGF0YVswXS5uYW1lKSB7CisgICAgICAgICAgICBzYXdSZW1vdmVkID0gZXZhbEFu
ZExvZygic2F3UmVtb3ZlZCA9IHRydWUiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY3Vyc29y
LnZhbHVlLm5hbWUgPT0gb2JqZWN0U3RvcmVEYXRhW29iamVjdFN0b3JlRGF0YS5sZW5ndGggLSAx
XS5uYW1lKSB7CisgICAgICAgICAgICBzYXdBZGRlZCA9IGV2YWxBbmRMb2coInNhd0FkZGVkID0g
dHJ1ZSIpOworICAgICAgICB9CisgICAgICAgIGV2YWxBbmRMb2coImNvdW50KysiKTsKKyAgICAg
ICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCkiKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9u
IGNoZWNrQ3Vyc29yUmVzdWx0cygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJjaGVj
a0N1cnNvclJlc3VsdHMoKToiKTsKKyAgICBzaG91bGRCZSgiY291bnQiLCAib2JqZWN0U3RvcmVE
YXRhLmxlbmd0aCAtIDEiKTsKKyAgICBzaG91bGRCZSgic2F3QWRkZWQiLCAiZmFsc2UiKTsKKyAg
ICBzaG91bGRCZSgic2F3UmVtb3ZlZCIsICJ0cnVlIik7CisKKyAgICBzZXR1cE11dGF0aW5nQ3Vy
c29yKCk7Cit9CisKK2Z1bmN0aW9uIHNldHVwTXV0YXRpbmdDdXJzb3IoKQoreworICAgIGRlYnVn
KCIiKTsKKyAgICBkZWJ1Zygic2V0dXBNdXRhdGluZ0N1cnNvcigpOiIpOworICAgCisgICAgY291
bnQgPSBldmFsQW5kTG9nKCJjb3VudCA9IDAiKTsKKyAgICBzYXdBZGRlZCA9IGV2YWxBbmRMb2co
InNhd0FkZGVkID0gZmFsc2UiKTsKKyAgICBzYXdSZW1vdmVkID0gZXZhbEFuZExvZygic2F3UmVt
b3ZlZCA9IGZhbHNlIik7CisgICAgZGVidWcoIltvYmplY3RTdG9yZURhdGFOYW1lU29ydCBpcyBh
biBhcnJheSBvZiBpbmRleGVzIGludG8gb2JqZWN0U3RvcmVEYXRhIGluIGFscGhhYmV0aWNhbCBv
cmRlciBieSBuYW1lXSIpOworICAgIG9iamVjdFN0b3JlRGF0YU5hbWVTb3J0ID0gZXZhbEFuZExv
Zygib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnQgPSBbIDEsIDQsIDUsIDIsIDMgXSIpOworCisgICAg
ZGVidWcoIiIpOworCisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0
aW9uKCdmb28nLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIG9iamVjdFN0b3Jl
ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnZm9vJykiKTsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCdu
YW1lJykub3BlbkN1cnNvcigpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBpdGVyYXRlTXV0YXRpbmdDdXJz
b3I7CisgICAgZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IGNoZWNrTXV0YXRpbmdDdXJz
b3JSZXN1bHRzIik7Cit9CisKK2Z1bmN0aW9uIGl0ZXJhdGVNdXRhdGluZ0N1cnNvcigpCit7Cisg
ICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJpdGVyYXRlTXV0YXRpbmdDdXJzb3IoKToiKTsKKyAg
ICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Cisg
ICAgaWYgKGN1cnNvcikgeworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImN1cnNvci52
YWx1ZS5uYW1lIiwgb2JqZWN0U3RvcmVEYXRhW29iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2NvdW50
XV0ubmFtZSk7CisgICAgICAgIGlmIChjdXJzb3IudmFsdWUubmFtZSA9PSBvYmplY3RTdG9yZURh
dGFbMF0ubmFtZSkgeworICAgICAgICAgICAgc2F3UmVtb3ZlZCA9IGV2YWxBbmRMb2coInNhd1Jl
bW92ZWQgPSB0cnVlIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGN1cnNvci52YWx1ZS5uYW1l
ID09IG9iamVjdFN0b3JlRGF0YVtvYmplY3RTdG9yZURhdGEubGVuZ3RoIC0gMV0ubmFtZSkgewor
ICAgICAgICAgICAgc2F3QWRkZWQgPSBldmFsQW5kTG9nKCJzYXdBZGRlZCA9IHRydWUiKTsKKyAg
ICAgICAgfQorICAgICAgICBldmFsQW5kTG9nKCJjb3VudCsrIik7CisKKyAgICAgICAgaWYgKGNv
dW50ID09IDEpIHsKKyAgICAgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgICAgIGRlYnVnKCJN
dXRhdGluZyB0aGUgb2JqZWN0IHN0b3JlOiIpOworCisgICAgICAgICAgICBkZWJ1ZygiUmVtb3Zp
bmcgIiArIG9iamVjdFN0b3JlRGF0YVswXS5uYW1lKTsKKyAgICAgICAgICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZGVsZXRlKG9iamVjdFN0b3JlRGF0YVsw
XS5zcykiKTsKKyAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRGaW5hbERhdGE7CisK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGN1cnNvci5jb250aW51ZSgpOworICAgICAg
ICB9CisgICAgfQorfQorCitmdW5jdGlvbiBhZGRGaW5hbERhdGEoKQoreworICAgIGRlYnVnKCIi
KTsKKyAgICBkZWJ1ZygiYWRkRmluYWxEYXRhKCk6Iik7CisgICAgZGVidWcoIkFkZGluZyAiICsg
b2JqZWN0U3RvcmVEYXRhW29iamVjdFN0b3JlRGF0YS5sZW5ndGggLSAxXS5uYW1lKTsKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9y
ZURhdGFbb2JqZWN0U3RvcmVEYXRhLmxlbmd0aCAtIDFdKSIpOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVu
Y3Rpb24gKCkgeworICAgICAgICBjdXJzb3IuY29udGludWUoKTsKKyAgICB9Cit9CisKK2Z1bmN0
aW9uIGNoZWNrTXV0YXRpbmdDdXJzb3JSZXN1bHRzKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAg
ZGVidWcoImNoZWNrTXV0YXRpbmdDdXJzb3JSZXN1bHRzKCk6Iik7CisgICAgc2hvdWxkQmUoImNv
dW50IiwgIm9iamVjdFN0b3JlRGF0YS5sZW5ndGggLSAxIik7CisgICAgc2hvdWxkQmUoInNhd0Fk
ZGVkIiwgInRydWUiKTsKKyAgICBzaG91bGRCZSgic2F3UmVtb3ZlZCIsICJmYWxzZSIpOworICAg
IGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNv
dXJjZXMvY3Vyc29yLXVwZGF0ZS11cGRhdGVzLWluZGV4ZXMuanMgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jdXJzb3ItdXBkYXRlLXVwZGF0ZXMtaW5k
ZXhlcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lYzdkOWJiOWJiNjZlZTRlMzUzNzhlOWNhYjhhZGZiOTEzYzFi
YzkwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9yZXNvdXJjZXMvY3Vyc29yLXVwZGF0ZS11cGRhdGVzLWluZGV4ZXMuanMKQEAgLTAsMCAr
MSwxMTQgQEAKKy8vIG9yaWdpbmFsIHRlc3Q6CisvLyBodHRwOi8vbXhyLm1vemlsbGEub3JnL21v
emlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2N1cnNvcl91cGRhdGVfdXBk
YXRlc19pbmRleGVzLmh0bWw/Zm9yY2U9MQorLy8gbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0Ogor
Ly8gIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKy8v
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCisK
K2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMo
Jy4uLy4uL3Jlc291cmNlcy9zaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5k
ZXhlZERCOiBtdXRhdGluZyByZWNvcmRzIHdpdGggYSByL3cgY3Vyc29yIHVwZGF0ZXMgaW5kZXhl
cyBvbiB0aG9zZSByZWNvcmRzIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZl
bmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKKyAg
ICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRlYnVn
KCJvcGVuU3VjY2VzcygpOiIpOworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJn
ZXQucmVzdWx0Iik7CisgICAgZmlyc3RWYWx1ZSA9IGV2YWxBbmRMb2coImZpcnN0VmFsdWUgPSAn
aGknOyIpOworICAgIHNlY29uZFZhbHVlID0gZXZhbEFuZExvZygic2Vjb25kVmFsdWUgPSAnYnll
JzsiKTsKKyAgICBvYmplY3RTdG9yZUluZm8gPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZUluZm8g
PSBbXG4iICsKKyIgICAgICAgIHsgbmFtZTogJzEnLCBvcHRpb25zOiB7fSwga2V5OiAxLFxuIiAr
CisiICAgICAgICAgIGVudHJ5OiB7IGRhdGE6IGZpcnN0VmFsdWUgfSB9LFxuIiArCisiICAgICAg
ICB7IG5hbWU6ICcyJywgb3B0aW9uczogeyBrZXlQYXRoOiAnZm9vJyB9LFxuIiArCisiICAgICAg
ICAgIGVudHJ5OiB7IGZvbzogMSwgZGF0YTogZmlyc3RWYWx1ZSB9IH0sXG4iICsKKyIgICAgICAg
IHsgbmFtZTogJzMnLCBvcHRpb25zOiB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSxcbiIgKworIiAg
ICAgICAgICBlbnRyeTogeyBkYXRhOiBmaXJzdFZhbHVlIH0gfSxcbiIgKworIiAgICAgICAgeyBu
YW1lOiAnNCcsIG9wdGlvbnM6IHsga2V5UGF0aDogJ2ZvbycsIGF1dG9JbmNyZW1lbnQ6IHRydWUg
fSxcbiIgKworIiAgICAgICAgICBlbnRyeTogeyBkYXRhOiBmaXJzdFZhbHVlIH0gfSxcbiIgKwor
IiAgICBdOyIpOworICAgIGkgPSBldmFsQW5kTG9nKCJpID0gMDsiKTsKKyAgICBzZXRWZXJzaW9u
KCk7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb24oKQoreworICAgIGlmIChpIDwgb2JqZWN0U3Rv
cmVJbmZvLmxlbmd0aCkgeworICAgICAgICBpbmZvID0gZXZhbEFuZExvZygiaW5mbyA9IG9iamVj
dFN0b3JlSW5mb1tpXTsiKTsKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXR1
cE9iamVjdFN0b3JlQW5kQ3JlYXRlSW5kZXhBbmRBZGQ7CisgICAgICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIH0gZWxzZSB7CisgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgIH0KK30KKworZnVuY3Rpb24gc2V0dXBPYmplY3RTdG9yZUFuZENyZWF0
ZUluZGV4QW5kQWRkKCkKK3sKKyAgICBkZWJ1Zygic2V0dXBPYmplY3RTdG9yZUFuZENyZWF0ZUlu
ZGV4KCk6Iik7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0
b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShpbmZv
Lm5hbWUsIGluZm8ub3B0aW9ucyk7Iik7CisKKyAgICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4
ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ2RhdGFfaW5kZXgnLCAnZGF0YScsIHsgdW5pcXVl
OiBmYWxzZSB9KTsiKTsKKyAgICB1bmlxdWVJbmRleCA9IGV2YWxBbmRMb2coInVuaXF1ZUluZGV4
ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ3VuaXF1ZV9kYXRhX2luZGV4JywgJ2RhdGEnLCB7
IHVuaXF1ZTogdHJ1ZSB9KTsiKTsKKyAgICBpZiAoaW5mby5rZXkpIHsKKyAgICAgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoaW5mby5lbnRyeSwgaW5m
by5rZXkpOyIpOworICAgIH0gZWxzZSB7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKGluZm8uZW50cnkpOyIpOworICAgIH0KKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IG9wZW5DdXJzb3I7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5DdXJzb3IoKQoreworICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdXBkYXRlQ3Vyc29yOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiB1cGRhdGVDdXJz
b3IoKQoreworICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IHJlcXVlc3QucmVzdWx0
OyIpOworICAgIHZhbHVlID0gZXZhbEFuZExvZygidmFsdWUgPSBjdXJzb3IudmFsdWU7Iik7Cisg
ICAgdmFsdWUuZGF0YSA9IGV2YWxBbmRMb2coInZhbHVlLmRhdGEgPSBzZWNvbmRWYWx1ZTsiKTsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGN1cnNvci51cGRhdGUodmFsdWUp
OyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0SW5kZXgxOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBnZXRJbmRleDEo
KQoreworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXguZ2V0KHNlY29u
ZFZhbHVlKTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNoZWNrSW5kZXgxQW5kR2V0SW5k
ZXgyOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBjaGVja0luZGV4MUFuZEdldEluZGV4MigpCit7CisgICAgc2hvdWxkQmUoInZh
bHVlLmRhdGEiLCAiZXZlbnQudGFyZ2V0LnJlc3VsdC5kYXRhIik7CisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSB1bmlxdWVJbmRleC5nZXQoc2Vjb25kVmFsdWUpOyIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gY2hlY2tJbmRleDI7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNoZWNrSW5kZXgyKCkKK3sK
KyAgICBzaG91bGRCZSgidmFsdWUuZGF0YSIsICJldmVudC50YXJnZXQucmVzdWx0LmRhdGEiKTsK
KyAgICBldmFsQW5kTG9nKCJpKys7Iik7CisgICAgc2V0VmVyc2lvbigpOworfQorCit0ZXN0KCk7
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY3Vyc29ycy5qcyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2N1cnNvcnMuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTFkZTM3NDBhMGNlYTAzZTkyOGI2YWIyMzUzNmYxYjI2YzZiYWM0OQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2N1
cnNvcnMuanMKQEAgLTAsMCArMSwzODggQEAKKy8vIG9yaWdpbmFsIHRlc3Q6CisvLyBodHRwOi8v
bXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0
X2N1cnNvcnMuaHRtbD9mb3JjZT0xCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisvLyAi
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorLy8gICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKworaWYg
KHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnLi4v
Li4vcmVzb3VyY2VzL3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVk
REIgY3Vyc29yIGJlaGF2aW9yIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZl
bmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKKyAg
ICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0g
ZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gdGVzdEdyb3VwMTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gdGVzdEdyb3VwMSgpCit7CisgICAgZGVsZXRl
QWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygiZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ2F1dG9JbmNyZW1lbnQnLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUg
fSk7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3Jl
Lm9wZW5DdXJzb3IoKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgeworICAg
ICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAibnVsbCIpOworICAgICAgdGVzdEdy
b3VwMigpOworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdEdyb3VwMigpCit7CisgICAgb2JqZWN0
U3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnYXV0b0luY3JlbWVudEtl
eVBhdGgnLCB7IGtleVBhdGg6ICdmb28nLCBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOyIpOworCisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29y
KCk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgIHNob3VsZEJl
KCJldmVudC50YXJnZXQucmVzdWx0IiwgIm51bGwiKTsKKyAgICAgIHRlc3RHcm91cDMoKTsKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDMoKQoreworICAgIG9iamVjdFN0b3JlID0gZXZh
bEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2tleVBhdGgnLCB7IGtleVBhdGg6ICdmb28n
IH0pOyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9y
ZS5vcGVuQ3Vyc29yKCk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAg
ICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIm51bGwiKTsKKyAgICAgIHRlc3RH
cm91cDQoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDQoKQoreworICAgIG9iamVj
dFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycpOyIpOworCisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29y
KCk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgIHNob3VsZEJl
KCJldmVudC50YXJnZXQucmVzdWx0IiwgIm51bGwiKTsKKyAgICAgIHRlc3RHcm91cDUoKTsKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDUoKQoreworICAgIGtleXMgPSBldmFsQW5kTG9n
KCJrZXlzID0gWzEsIC0xLCAwLCAxMCwgMjAwMCwgJ3EnLCAneicsICd0d28nLCAnYicsICdhJ107
Iik7CisgICAgc29ydGVkS2V5cyA9IGV2YWxBbmRMb2coInNvcnRlZEtleXMgPSBbLTEsIDAsIDEs
IDEwLCAyMDAwLCAnYScsICdiJywgJ3EnLCAndHdvJywgJ3onXTsiKTsKKworICAgIGtleUluZGV4
ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAwOyIpOworCisgICAgZm9yIChpIGluIGtleXMpIHsK
KyAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKCdm
b28nLCBrZXlzW2ldKTsiKTsKKyAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgewor
ICAgICAgICBpZiAoKytrZXlJbmRleCA9PSBrZXlzLmxlbmd0aCkgeworICAgICAgICAgIHRlc3RH
cm91cDYoKTsKKyAgICAgICAgfQorICAgICAgfTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RH
cm91cDYoKQoreworICAgIGtleUluZGV4ID0gMDsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBl
dmVudC50YXJnZXQucmVzdWx0OyIpOworICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLmtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOworICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKKyAgICAg
ICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZSIsICInZm9vJyIpOworCisgICAgICAgIGV2YWxBbmRM
b2coImN1cnNvci5jb250aW51ZSgpOyIpOworICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJjdXJzb3IuY29udGludWUoKTsiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0FMTE9XRURf
RVJSIik7CisKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAic29ydGVkS2V5c1trZXlJ
bmRleF0iKTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgInNvcnRlZEtl
eXNba2V5SW5kZXhdIik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAiJ2Zvbyci
KTsKKworICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOworICAgICAgfQorICAgICAg
ZWxzZSB7CisgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJrZXlzLmxlbmd0aCIpOworICAg
ICAgICB0ZXN0R3JvdXA3KCk7CisgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0R3Jv
dXA3KCkKK3sKKyAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gNDsiKTsKKwor
ICAgIHJhbmdlID0gZXZhbEFuZExvZygicmFuZ2UgPSBJREJLZXlSYW5nZS5ib3VuZCgyMDAwLCAn
cScpOyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
b3BlbkN1cnNvcihyYW5nZSk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsK
KyAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7
Iik7CisgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5Iiwg
InNvcnRlZEtleXNba2V5SW5kZXhdIik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFy
eUtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOworICAgICAgICBzaG91bGRCZSgiY3Vyc29y
LnZhbHVlIiwgIidmb28nIik7CisKKyAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVl
KCk7Iik7CisKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAic29ydGVkS2V5c1trZXlJ
bmRleF0iKTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgInNvcnRlZEtl
eXNba2V5SW5kZXhdIik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAiJ2Zvbyci
KTsKKworICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOworICAgICAgfQorICAgICAg
ZWxzZSB7CisgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICI4Iik7CisgICAgICAgIHRlc3RH
cm91cDgoKTsKKyAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDgoKQorewor
ICAgIGtleUluZGV4ID0gMDsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
b2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2
ZW50KSB7CisgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQu
cmVzdWx0OyIpOworICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICBzaG91bGRCZSgiY3Vyc29y
LmtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOworICAgICAgICBzaG91bGRCZSgiY3Vyc29y
LnByaW1hcnlLZXkiLCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKKyAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci52YWx1ZSIsICInZm9vJyIpOworCisgICAgICAgIGlmIChrZXlJbmRleCkgeworICAg
ICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOworICAgICAgICB9CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgnYicpOyIp
OworICAgICAgICB9CisKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAic29ydGVkS2V5
c1trZXlJbmRleF0iKTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgInNv
cnRlZEtleXNba2V5SW5kZXhdIik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAi
J2ZvbyciKTsKKworICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCArPSBrZXlJbmRleCA/IDE6
IDY7Iik7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgc2hvdWxkQmUoImtleUluZGV4
IiwgImtleXMubGVuZ3RoIik7CisgICAgICAgIHRlc3RHcm91cDkoKTsKKyAgICAgIH0KKyAgICB9
Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDkoKQoreworICAgIGtleUluZGV4ID0gZXZhbEFuZExv
Zygia2V5SW5kZXggPSAwOyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAo
ZXZlbnQpIHsKKyAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQ7Iik7CisgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgIHNob3VsZEJlKCJjdXJz
b3Iua2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7CisgICAgICAgIHNob3VsZEJlKCJjdXJz
b3IucHJpbWFyeUtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOworICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLnZhbHVlIiwgIidmb28nIik7CisKKyAgICAgICAgaWYgKGtleUluZGV4KSB7Cisg
ICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisgICAgICAgIH0KKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKDEwKTsi
KTsKKyAgICAgICAgfQorCisgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgInNvcnRlZEtl
eXNba2V5SW5kZXhdIik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJz
b3J0ZWRLZXlzW2tleUluZGV4XSIpOworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwg
Iidmb28nIik7CisKKyAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXggKz0ga2V5SW5kZXggPyAx
OiAzOyIpOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHNob3VsZEJlKCJrZXlJbmRl
eCIsICJrZXlzLmxlbmd0aCIpOworICAgICAgICB0ZXN0R3JvdXAxMCgpOworICAgICAgfQorICAg
IH0KK30KKworZnVuY3Rpb24gdGVzdEdyb3VwMTAoKQoreworICAgIGtleUluZGV4ID0gZXZhbEFu
ZExvZygia2V5SW5kZXggPSAwOyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVl
c3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlv
biAoZXZlbnQpIHsKKyAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRh
cmdldC5yZXN1bHQ7Iik7CisgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgIHNob3VsZEJlKCJj
dXJzb3Iua2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7CisgICAgICAgIHNob3VsZEJlKCJj
dXJzb3IucHJpbWFyeUtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOworICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLnZhbHVlIiwgIidmb28nIik7CisKKyAgICAgICAgaWYgKGtleUluZGV4KSB7
CisgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisgICAgICAgIH0K
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCdj
Jyk7Iik7CisgICAgICAgIH0KKworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJzb3J0
ZWRLZXlzW2tleUluZGV4XSIpOworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXki
LCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1
ZSIsICInZm9vJyIpOworCisgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4ICs9IGtleUluZGV4
ID8gMSA6IDc7Iik7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgc2hvdWxkQmUoImtl
eUluZGV4IiwgImtleXMubGVuZ3RoIik7CisgICAgICAgIHRlc3RHcm91cDExKCk7CisgICAgICB9
CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0R3JvdXAxMSgpCit7CisgICAga2V5SW5kZXggPSBl
dmFsQW5kTG9nKCJrZXlJbmRleCA9IDA7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1
bmN0aW9uIChldmVudCkgeworICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZl
bnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgc2hvdWxk
QmUoImN1cnNvci5rZXkiLCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKKyAgICAgICAgc2hvdWxk
QmUoImN1cnNvci5wcmltYXJ5S2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7CisgICAgICAg
IHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAiJ2ZvbyciKTsKKworICAgICAgICBpZiAoa2V5SW5k
ZXggPT0gNCkgeworICAgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gY3Vy
c29yLnVwZGF0ZSgnYmFyJyk7Iik7CisgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlv
bihldmVudCkgeworICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKKyAgICAg
ICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOworICAgICAgICAgIH07Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgr
KzsiKTsKKyAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKKyAgICAg
ICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIs
ICJrZXlzLmxlbmd0aCIpOworICAgICAgICB0ZXN0R3JvdXAxMigpOworICAgICAgfQorICAgIH0K
K30KKworZnVuY3Rpb24gdGVzdEdyb3VwMTIoKQoreworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KHNvcnRlZEtleXNbNF0pOyIpOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gdGVzdEdyb3VwMTJiOworfQorCitmdW5jdGlvbiB0ZXN0R3JvdXAxMmIoKQoreworICAg
IHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIidiYXInIik7CisKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgnZm9vJywgc29ydGVkS2V5
c1s0XSk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0ZXN0R3JvdXAxMzsKK30KKworZnVuY3Rpb24gdGVz
dEdyb3VwMTMoKQoreworICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAwOyIp
OworCisgICAgZ290UmVtb3ZlRXZlbnQgPSBmYWxzZTsKKyAgICByZXR2YWwgPSBmYWxzZTsKKwor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNv
cihudWxsLCBJREJDdXJzb3IuTkVYVCk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZl
bnQpIHsKKyAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQ7Iik7CisgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
a2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
cHJpbWFyeUtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOworICAgICAgICBzaG91bGRCZSgi
Y3Vyc29yLnZhbHVlIiwgIidmb28nIik7CisKKyAgICAgICAgaWYgKGtleUluZGV4ID09IDQpIHsK
KyAgICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGN1cnNvci5kZWxldGUo
KTsiKTsKKyAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAg
ICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNSIpOworICAgICAgICAgICAgZ290UmVtb3Zl
RXZlbnQgPSBldmFsQW5kTG9nKCJnb3RSZW1vdmVFdmVudCA9IHRydWU7Iik7CisgICAgICAgICAg
fTsKKyAgICAgICAgfQorCisgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7CisgICAg
ICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOworICAgICAgfQorICAgICAgZWxz
ZSB7CisgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJrZXlzLmxlbmd0aCIpOworICAgICAg
ICBzaG91bGRCZSgiZ290UmVtb3ZlRXZlbnQiLCAidHJ1ZSIpOworICAgICAgICB0ZXN0R3JvdXAx
NCgpOworICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gdGVzdEdyb3VwMTQoKQoreworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KHNvcnRlZEtl
eXNbNF0pOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdGVzdEdyb3VwMTRiOworfQorCitmdW5jdGlvbiB0
ZXN0R3JvdXAxNGIoKQoreworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgInVu
ZGVmaW5lZCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RT
dG9yZS5hZGQoJ2ZvbycsIHNvcnRlZEtleXNbNF0pOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdGVzdEdy
b3VwMTU7Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDE1KCkKK3sKKyAgICBrZXlJbmRleCA9IHNv
cnRlZEtleXMubGVuZ3RoIC0gMTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcihudWxsLCBJREJDdXJzb3IuUFJFVik7Iik7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2co
ImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICBpZiAoY3Vyc29yKSB7Cisg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7Cisg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4
XSIpOworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgIidmb28nIik7CisKKyAgICAg
ICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisKKyAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci5rZXkiLCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKKyAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci5wcmltYXJ5S2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7CisgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3IudmFsdWUiLCAiJ2ZvbyciKTsKKworICAgICAgICBldmFsQW5kTG9nKCJr
ZXlJbmRleC0tOyIpOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHNob3VsZEJlKCJr
ZXlJbmRleCIsICItMSIpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgIH0KKyAgICB9
Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9kZWxldGUtcmVz
dWx0LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMv
ZGVsZXRlLXJlc3VsdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZjZmZDIwMjEzMDJhZjU3N2JiNGM4ODNmOWE1
MzAwZWJjZTEzMDE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvZGVsZXRlLXJlc3VsdC5qcwpAQCAtMCwwICsxLDY0IEBA
CisvLyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4w
L3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9vZGRfcmVzdWx0X29yZGVyLmh0bWw/cmF3
PTEKKy8vIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBvcnRTY3JpcHRz
KSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi9yZXNvdXJjZXMvc2hhcmVk
LmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQjogcmVzdWx0IHByb3BlcnR5
IGFmdGVyIGRlbGV0aW5nIGV4aXN0aW5nIGFuZCBub24tZXhpc3RpbmcgcmVjb3JkIik7CisKK2Z1
bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1l
ID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERh
dGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwg
ZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rp
b24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJn
ZXQucmVzdWx0Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRW
ZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZU9iamVjdFN0b3Jl
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiBjcmVhdGVPYmplY3RTdG9yZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVz
KGRiKTsKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ2ZvbycsIHsga2V5UGF0aDogJ2lkJywgYXV0b0luY3JlbWVudDogdHJ1
ZSB9KTsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3Jl
LmFkZCh7fSk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVSZWNvcmQxOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biBkZWxldGVSZWNvcmQxKCkKK3sKKyAgICBpZCA9IGV2YWxBbmRMb2coImlkID0gZXZlbnQudGFy
Z2V0LnJlc3VsdDsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVj
dFN0b3JlLmRlbGV0ZShpZCk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVSZWNv
cmQyOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBkZWxldGVSZWNvcmQyKCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0
LnJlc3VsdCIsICJ1bmRlZmluZWQiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IG9iamVjdFN0b3JlLmRlbGV0ZShpZCk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
aW5hbENoZWNrOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJh
Y2s7Cit9CisKK2Z1bmN0aW9uIGZpbmFsQ2hlY2soKQoreworICAgIHNob3VsZEJlKCJldmVudC50
YXJnZXQucmVzdWx0IiwgInVuZGVmaW5lZCIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0
ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvZXZlbnQtc291cmNlLmpzIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvZXZlbnQtc291
cmNlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRhNzk2YzUxMTVmNDdmMDA4YjlhZmYwODc4YWViZGRjN2VmY2I3
ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL3Jlc291cmNlcy9ldmVudC1zb3VyY2UuanMKQEAgLTAsMCArMSw1NyBAQAorLy8gb3JpZ2lu
YWwgdGVzdDoKKy8vIGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9t
L2luZGV4ZWREQi90ZXN0L3Rlc3RfZXZlbnRfc291cmNlLmh0bWwKKy8vIGxpY2Vuc2Ugb2Ygb3Jp
Z2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0
cygnLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBp
bXBvcnRTY3JpcHRzKCcuLi8uLi9yZXNvdXJjZXMvc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0
aW9uKCJUZXN0IEluZGV4ZWREQidzIGV2ZW50LnRhcmdldC5zb3VyY2UgaW4gc3VjY2VzcyBjYWxs
YmFja3MiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMo
KTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9u
ID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVk
REIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9w
ZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgc291cmNlID0gZXZhbEFuZExv
Zygic291cmNlID0gZXZlbnQudGFyZ2V0LnNvdXJjZTsiKTsKKyAgICBzaG91bGRCZSgic291cmNl
IiwgImluZGV4ZWREQiIpOworCisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZl
cnNpb24oJzEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rp
b24gY2xlYW5EYXRhYmFzZSgpCit7CisgICAgc291cmNlID0gZXZhbEFuZExvZygic291cmNlID0g
ZXZlbnQudGFyZ2V0LnNvdXJjZTsiKTsKKyAgICBzaG91bGRCZSgic291cmNlIiwgImRiIik7CisK
KyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmVOYW1lID0g
Ik9iamVjdHMiOworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBk
Yi5jcmVhdGVPYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUsIHsgYXV0b0luY3JlbWVudDogdHJ1
ZSB9KTsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3Jl
LmFkZCh7fSk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhcmVXZURvbmVZZXQ7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IGFyZVdlRG9uZVlldCgpCit7CisgICAgc291cmNlID0gZXZhbEFuZExvZygic291cmNlID0gZXZl
bnQudGFyZ2V0LnNvdXJjZTsiKTsKKyAgICBzaG91bGRCZSgic291cmNlIiwgIm9iamVjdFN0b3Jl
Iik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL3Jlc291cmNlcy9nbG9iYWwtZGF0YS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvcmVzb3VyY2VzL2dsb2JhbC1kYXRhLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwZTliYWUx
M2FlNjVlZjQ0YzhlOTk0NjUzNTVjZjEzYjg0YWQ2ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9nbG9iYWwtZGF0YS5q
cwpAQCAtMCwwICsxLDY5IEBACisvLyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3pp
bGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9nbG9iYWxf
ZGF0YS5odG1sCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisvLyAiIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorLy8gICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKworaWYgKHRoaXMuaW1wb3J0
U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vcmVzb3VyY2Vz
L3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBvcGVuaW5n
IERCIG1vcmUgdGhhbiBvbmNlIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZl
bmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKKyAg
ICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiMSA9
IGV2YWxBbmRMb2coImRiMSA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIxLnNldFZlcnNpb24oJzEnKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7Cisg
ICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiMSk7CisKKyAgICBvYmplY3RTdG9yZU5hbWUgPSAi
T2JqZWN0cyI7CisgICAgb2JqZWN0U3RvcmVPcHRpb25zID0geyBrZXlQYXRoOiAnaWQnLCBhdXRv
SW5jcmVtZW50OiB0cnVlIH07CisgICAgZXZhbEFuZExvZygiZGIxLmNyZWF0ZU9iamVjdFN0b3Jl
KG9iamVjdFN0b3JlTmFtZSwgb2JqZWN0U3RvcmVPcHRpb25zKTsiKTsKKworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbik7Iik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuMlN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW4yU3VjY2VzcygpCit7
CisgICAgZGIyID0gZXZhbEFuZExvZygiZGIyID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisg
ICAgc2hvdWxkQmVUcnVlKCJkYjEgIT09IGRiMiIpOworICAgIHNob3VsZEJlKCJkYjEub2JqZWN0
U3RvcmVOYW1lcy5sZW5ndGgiLCAiMSIpOworICAgIHNob3VsZEJlKCJkYjEub2JqZWN0U3RvcmVO
YW1lcy5pdGVtKDApIiwgIm9iamVjdFN0b3JlTmFtZSIpOworICAgIHNob3VsZEJlKCJkYjIub2Jq
ZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMSIpOworICAgIHNob3VsZEJlKCJkYjIub2JqZWN0U3Rv
cmVOYW1lcy5pdGVtKDApIiwgIm9iamVjdFN0b3JlTmFtZSIpOworCisgICAgb2JqZWN0U3RvcmUx
ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUxID0gZGIxLnRyYW5zYWN0aW9uKG9iamVjdFN0b3Jl
TmFtZSkub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKTsiKTsKKyAgICBzaG91bGRCZSgib2Jq
ZWN0U3RvcmUxLm5hbWUiLCAib2JqZWN0U3RvcmVOYW1lIik7CisgICAgc2hvdWxkQmUoIm9iamVj
dFN0b3JlMS5rZXlQYXRoIiwgIm9iamVjdFN0b3JlT3B0aW9ucy5rZXlQYXRoIik7CisKKyAgICBv
YmplY3RTdG9yZTIgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZTIgPSBkYjIudHJhbnNhY3Rpb24o
b2JqZWN0U3RvcmVOYW1lKS5vYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpOyIpOworICAgIHNo
b3VsZEJlVHJ1ZSgib2JqZWN0U3RvcmUxICE9PSBvYmplY3RTdG9yZTIiKTsKKyAgICBzaG91bGRC
ZSgib2JqZWN0U3RvcmUyLm5hbWUiLCAib2JqZWN0U3RvcmVOYW1lIik7CisgICAgc2hvdWxkQmUo
Im9iamVjdFN0b3JlMi5rZXlQYXRoIiwgIm9iamVjdFN0b3JlT3B0aW9ucy5rZXlQYXRoIik7CisK
KyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEv
cmVzb3VyY2VzL2luZGV4ZXMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL3Jlc291cmNlcy9pbmRleGVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmNWU1YWUwNzljYjY2Y2Y0OTEx
MDYxMDg5ZTJiNGI2NzVjMDI2ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9pbmRleGVzLmpzCkBAIC0wLDAgKzEsMTAx
MSBAQAorLy8gb3JpZ2luYWwgdGVzdDoKKy8vIGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxs
YTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfaW5kZXhlcy5odG1sP2ZvcmNlPTEK
Ky8vIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7
CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi9yZXNvdXJjZXMvc2hhcmVkLmpz
Jyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQjogaXRlcmF0aW5nIHRocm91Z2gg
aW5kZXggY3Vyc29ycyB3aXRoIGtleXMgYW5kIGtleSByYW5nZXMiKTsKKworZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxv
Y2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlv
bikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3Vj
Y2VzcygpCit7CisgICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7CisgICAgZGIgPSBldmFsQW5k
TG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIG9iamVjdFN0b3JlTmFtZSA9
ICJQZW9wbGUiOworCisgICAgb2JqZWN0U3RvcmVEYXRhID0gWworICAgICAgICB7IGtleTogIjIz
Ny0yMy03NzMyIiwgdmFsdWU6IHsgbmFtZTogIkJvYiIsIGhlaWdodDogNjAsIHdlaWdodDogMTIw
IH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczMyIsIHZhbHVlOiB7IG5hbWU6ICJBbm4i
LCBoZWlnaHQ6IDUyLCB3ZWlnaHQ6IDExMCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3
MzQiLCB2YWx1ZTogeyBuYW1lOiAiUm9uIiwgaGVpZ2h0OiA3Mywgd2VpZ2h0OiAxODAgfSB9LAor
ICAgICAgICB7IGtleTogIjIzNy0yMy03NzM1IiwgdmFsdWU6IHsgbmFtZTogIlN1ZSIsIGhlaWdo
dDogNTgsIHdlaWdodDogMTMwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNiIsIHZh
bHVlOiB7IG5hbWU6ICJKb2UiLCBoZWlnaHQ6IDY1LCB3ZWlnaHQ6IDE1MCB9IH0sCisgICAgICAg
IHsga2V5OiAiMjM3LTIzLTc3MzciLCB2YWx1ZTogeyBuYW1lOiAiUGF0IiwgaGVpZ2h0OiA2NSwg
d2VpZ2h0OiAxMDAgfSB9CisgICAgXTsKKworICAgIGluZGV4RGF0YSA9IFsKKyAgICAgICAgeyBu
YW1lOiAibmFtZSIsIGtleVBhdGg6ICJuYW1lIiwgb3B0aW9uczogeyB1bmlxdWU6IHRydWUgfSB9
LAorICAgICAgICB7IG5hbWU6ICJoZWlnaHQiLCBrZXlQYXRoOiAiaGVpZ2h0Iiwgb3B0aW9uczog
eyB9IH0sCisgICAgICAgIHsgbmFtZTogIndlaWdodCIsIGtleVBhdGg6ICJ3ZWlnaHQiLCBvcHRp
b25zOiB7IHVuaXF1ZTogZmFsc2UgfSB9CisgICAgXTsKKworICAgIG9iamVjdFN0b3JlRGF0YU5h
bWVTb3J0ID0gWworICAgICAgICB7IGtleTogIjIzNy0yMy03NzMzIiwgdmFsdWU6IHsgbmFtZTog
IkFubiIsIGhlaWdodDogNTIsIHdlaWdodDogMTEwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzct
MjMtNzczMiIsIHZhbHVlOiB7IG5hbWU6ICJCb2IiLCBoZWlnaHQ6IDYwLCB3ZWlnaHQ6IDEyMCB9
IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzYiLCB2YWx1ZTogeyBuYW1lOiAiSm9lIiwg
aGVpZ2h0OiA2NSwgd2VpZ2h0OiAxNTAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzM3
IiwgdmFsdWU6IHsgbmFtZTogIlBhdCIsIGhlaWdodDogNjUsIHdlaWdodDogMTAwIH0gfSwKKyAg
ICAgICAgeyBrZXk6ICIyMzctMjMtNzczNCIsIHZhbHVlOiB7IG5hbWU6ICJSb24iLCBoZWlnaHQ6
IDczLCB3ZWlnaHQ6IDE4MCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzUiLCB2YWx1
ZTogeyBuYW1lOiAiU3VlIiwgaGVpZ2h0OiA1OCwgd2VpZ2h0OiAxMzAgfSB9CisgICAgXTsKKwor
ICAgIG9iamVjdFN0b3JlRGF0YVdlaWdodFNvcnQgPSBbCisgICAgICAgIHsga2V5OiAiMjM3LTIz
LTc3MzciLCB2YWx1ZTogeyBuYW1lOiAiUGF0IiwgaGVpZ2h0OiA2NSwgd2VpZ2h0OiAxMDAgfSB9
LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzMzIiwgdmFsdWU6IHsgbmFtZTogIkFubiIsIGhl
aWdodDogNTIsIHdlaWdodDogMTEwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczMiIs
IHZhbHVlOiB7IG5hbWU6ICJCb2IiLCBoZWlnaHQ6IDYwLCB3ZWlnaHQ6IDEyMCB9IH0sCisgICAg
ICAgIHsga2V5OiAiMjM3LTIzLTc3MzUiLCB2YWx1ZTogeyBuYW1lOiAiU3VlIiwgaGVpZ2h0OiA1
OCwgd2VpZ2h0OiAxMzAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzM2IiwgdmFsdWU6
IHsgbmFtZTogIkpvZSIsIGhlaWdodDogNjUsIHdlaWdodDogMTUwIH0gfSwKKyAgICAgICAgeyBr
ZXk6ICIyMzctMjMtNzczNCIsIHZhbHVlOiB7IG5hbWU6ICJSb24iLCBoZWlnaHQ6IDczLCB3ZWln
aHQ6IDE4MCB9IH0KKyAgICBdOworCisgICAgb2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydCA9IFsK
KyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczMyIsIHZhbHVlOiB7IG5hbWU6ICJBbm4iLCBoZWln
aHQ6IDUyLCB3ZWlnaHQ6IDExMCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzUiLCB2
YWx1ZTogeyBuYW1lOiAiU3VlIiwgaGVpZ2h0OiA1OCwgd2VpZ2h0OiAxMzAgfSB9LAorICAgICAg
ICB7IGtleTogIjIzNy0yMy03NzMyIiwgdmFsdWU6IHsgbmFtZTogIkJvYiIsIGhlaWdodDogNjAs
IHdlaWdodDogMTIwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNiIsIHZhbHVlOiB7
IG5hbWU6ICJKb2UiLCBoZWlnaHQ6IDY1LCB3ZWlnaHQ6IDE1MCB9IH0sCisgICAgICAgIHsga2V5
OiAiMjM3LTIzLTc3MzciLCB2YWx1ZTogeyBuYW1lOiAiUGF0IiwgaGVpZ2h0OiA2NSwgd2VpZ2h0
OiAxMDAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzM0IiwgdmFsdWU6IHsgbmFtZTog
IlJvbiIsIGhlaWdodDogNzMsIHdlaWdodDogMTgwIH0gfQorICAgIF07CisKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZTsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY3JlYXRl
QW5kUG9wdWxhdGVPYmplY3RTdG9yZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRi
KTsKKyAgICB0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisKKyAgICBvYmplY3RTdG9yZSA9
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3Rv
cmVOYW1lKTsiKTsKKworICAgIGRlYnVnKCJGaXJzdCwgYWRkIGFsbCBvdXIgZGF0YSB0byB0aGUg
b2JqZWN0IHN0b3JlLiIpOworICAgIGFkZGVkRGF0YSA9IDA7CisgICAgZm9yIChpIGluIG9iamVj
dFN0b3JlRGF0YSkgeworICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmpl
Y3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW2ldLnZhbHVlLCBvYmplY3RTdG9yZURhdGFbaV0u
a2V5KTsiKTsKKyAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBp
ZiAoKythZGRlZERhdGEgPT0gb2JqZWN0U3RvcmVEYXRhLmxlbmd0aCkgeworICAgICAgICAgIGNy
ZWF0ZUluZGV4ZXMoKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24g
Y3JlYXRlSW5kZXhlcygpCit7CisgICAgZGVidWcoIk5vdyBjcmVhdGUgdGhlIGluZGV4ZXMuIik7
CisgICAgZm9yIChpIGluIGluZGV4RGF0YSkgeworICAgICAgZXZhbEFuZExvZygib2JqZWN0U3Rv
cmUuY3JlYXRlSW5kZXgoaW5kZXhEYXRhW2ldLm5hbWUsIGluZGV4RGF0YVtpXS5rZXlQYXRoLCBp
bmRleERhdGFbaV0ub3B0aW9ucyk7Iik7CisgICAgfQorICAgIHNob3VsZEJlKCJvYmplY3RTdG9y
ZS5pbmRleE5hbWVzLmxlbmd0aCIsICJpbmRleERhdGEubGVuZ3RoIik7CisgICAgdHJhbnMub25j
b21wbGV0ZSA9IHNldFZlcnNpb25Db21wbGV0ZTsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbkNv
bXBsZXRlKCkKK3sKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0g
ZGIudHJhbnNhY3Rpb24ob2JqZWN0U3RvcmVOYW1lKS5vYmplY3RTdG9yZShvYmplY3RTdG9yZU5h
bWUpOyIpOworCisgICAgLy8gQ2hlY2sgZ2xvYmFsIHByb3BlcnRpZXMgdG8gbWFrZSBzdXJlIHRo
ZXkgYXJlIGNvcnJlY3QuCisgICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLmluZGV4TmFtZXMubGVu
Z3RoIiwgImluZGV4RGF0YS5sZW5ndGgiKTsKKyAgICBmb3IgKGkgaW4gaW5kZXhEYXRhKSB7Cisg
ICAgICAgIGZvdW5kID0gZmFsc2U7CisgICAgICAgIGZvciAoaiA9IDA7IGogPCBvYmplY3RTdG9y
ZS5pbmRleE5hbWVzLmxlbmd0aDsgaisrKSB7CisgICAgICAgICAgICBpZiAob2JqZWN0U3RvcmUu
aW5kZXhOYW1lcy5pdGVtKGopID09IGluZGV4RGF0YVtpXS5uYW1lKSB7CisgICAgICAgICAgICAg
ICAgZm91bmQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiZm91bmQiKTsKKyAgICAgICAgaW5kZXgg
PSBldmFsQW5kTG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmluZGV4KGluZGV4RGF0YVtpXS5uYW1l
KTsiKTsKKyAgICAgICAgc2hvdWxkQmUoImluZGV4Lm5hbWUiLCAiaW5kZXhEYXRhW2ldLm5hbWUi
KTsKKyAgICAgICAgc2hvdWxkQmUoImluZGV4LmtleVBhdGgiLCAiaW5kZXhEYXRhW2ldLmtleVBh
dGgiKTsKKyAgICAgICAgc2hvdWxkQmUoImluZGV4LnVuaXF1ZSIsIGluZGV4RGF0YVtpXS5vcHRp
b25zLnVuaXF1ZSA/ICJ0cnVlIiA6ICJmYWxzZSIpOworICAgIH0KKworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5nZXRLZXkoJ0Jv
YicpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2hlY2tHZXRLZXk7Cit9CisKK2Z1bmN0aW9uIGNoZWNr
R2V0S2V5KCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICInMjM3LTIz
LTc3MzInIik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0
b3JlLmluZGV4KCduYW1lJykuZ2V0KCdCb2InKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNoZWNrR2V0
OworfQorCitmdW5jdGlvbiBjaGVja0dldCgpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdl
dC5yZXN1bHQubmFtZSIsICInQm9iJyIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVz
dWx0LmhlaWdodCIsICI2MCIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0Lndl
aWdodCIsICIxMjAiKTsKKworICAgIGtleUluZGV4ID0gMDsKKworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuS2V5Q3Vyc29y
KCk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgY3Vyc29y
ID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAgICAg
aWYgKGN1cnNvcikgeworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0
U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJ
bmRleF0ua2V5Iik7CisgICAgICAgICAgICBzaG91bGRCZUZhbHNlKCIndmFsdWUnIGluIGN1cnNv
ciIpOworCisgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKKwor
ICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNv
cnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
cHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7Cisg
ICAgICAgICAgICBzaG91bGRCZUZhbHNlKCIndmFsdWUnIGluIGN1cnNvciIpOworCisgICAgICAg
ICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOworICAgICAgICB9CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJvYmplY3RTdG9yZURhdGEubGVuZ3Ro
Iik7CisgICAgICAgICAgdGVzdEdyb3VwMygpOworICAgICAgICB9CisgICAgfTsKK30KKworZnVu
Y3Rpb24gdGVzdEdyb3VwMygpCit7CisgICAga2V5SW5kZXggPSAwOworCisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnd2VpZ2h0Jykub3Blbktl
eUN1cnNvcihudWxsLCBJREJDdXJzb3IuTkVYVCk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlv
biAoZXZlbnQpIHsKKyAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICAgICAgc2hv
dWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhV2VpZ2h0U29ydFtrZXlJbmRleF0u
dmFsdWUud2VpZ2h0Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXki
LCAib2JqZWN0U3RvcmVEYXRhV2VpZ2h0U29ydFtrZXlJbmRleF0ua2V5Iik7CisKKyAgICAgICAg
ICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOworCisgICAgICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFXZWlnaHRTb3J0W2tleUluZGV4XS52
YWx1ZS53ZWlnaHQiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIs
ICJvYmplY3RTdG9yZURhdGFXZWlnaHRTb3J0W2tleUluZGV4XS5rZXkiKTsKKworICAgICAgICAg
ICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJvYmplY3RTdG9yZURhdGEubGVuZ3Ro
Iik7CisgICAgICAgICAgICB0ZXN0R3JvdXA0KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1
bmN0aW9uIHRlc3RHcm91cDQoKQoreworLyogdGhpcyB3YXMgc3BsaXQgb3V0IGludG8gYSBzZXBh
cmF0ZSB0ZXN0CisgICAgZGVidWcoIkNoZWNrIHRoYXQgdGhlIG5hbWUgaW5kZXggZW5mb3JjZXMg
aXRzIHVuaXF1ZSBjb25zdHJhaW50LiIpOworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygi
b2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUsIElEQlRyYW5zYWN0
aW9uLlJFQURfV1JJVEUpLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7Iik7CisgICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigib2JqZWN0U3RvcmUuYWRkKHsgbmFtZTogJ0JvYicsIGhlaWdo
dDogNjIsIHdlaWdodDogMTcwIH0sICcyMzctMjMtNzczOCcpOyIsICJJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5DT05TVFJBSU5UX0VSUiIpOworKi8KKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExv
Zygib2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUpLm9iamVjdFN0
b3JlKG9iamVjdFN0b3JlTmFtZSk7Iik7CisgICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJ
bmRleCA9IG9iamVjdFN0b3JlRGF0YU5hbWVTb3J0Lmxlbmd0aCAtIDE7Iik7CisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9wZW5L
ZXlDdXJzb3IobnVsbCwgSURCQ3Vyc29yLlBSRVYpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24gKGV2ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50
LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52
YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAi
b2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOworCisgICAgICAgICAgICBl
dmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKKworICAgICAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5h
bWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RT
dG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7CisKKyAgICAgICAgICAgIGV2YWxBbmRM
b2coImtleUluZGV4LS07Iik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBzaG91bGRCZSgia2V5SW5kZXgiLCAiLTEiKTsKKyAgICAgICAgICAgIHRlc3RHcm91cDUoKTsK
KyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gdGVzdEdyb3VwNSgpCit7CisgICAga2V5
SW5kZXggPSAxOworICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlS
YW5nZS5ib3VuZCgnQm9iJywgJ1JvbicpOyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuS2V5Q3Vyc29yKGtleVJhbmdl
KTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgeworICAgICAgICBjdXJzb3Ig
PSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgICAgICBp
ZiAoY3Vyc29yKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RT
dG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAgICAgICAgc2hv
dWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUlu
ZGV4XS5rZXkiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIp
OworICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKKyAgICAgICAgfQorICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICI1Iik7CisgICAg
ICAgICAgICB0ZXN0R3JvdXA2KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRl
c3RHcm91cDYoKQoreworICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAyOyIp
OworICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5ib3Vu
ZCgnQm9iJywgJ1JvbicsIHRydWUpOyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9wZW5LZXlDdXJzb3Ioa2V5UmFuZ2Up
OyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgIGN1cnNvciA9
IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICAgIGlm
IChjdXJzb3IpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0
b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5k
ZXhdLmtleSIpOworCisgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsi
KTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7CisgICAgICAgIH0KKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNSIpOworICAg
ICAgICAgICAgdGVzdEdyb3VwNygpOworICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiB0
ZXN0R3JvdXA3KCkKK3sKKyAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gMTsi
KTsKKyAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtleVJhbmdlID0gSURCS2V5UmFuZ2UuYm91
bmQoJ0JvYicsICdSb24nLCBmYWxzZSwgdHJ1ZSk7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCduYW1lJykub3BlbktleUN1cnNvcihr
ZXlSYW5nZSk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAg
Y3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAg
ICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAi
b2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29y
dFtrZXlJbmRleF0ua2V5Iik7CisKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250
aW51ZSgpOyIpOworICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKKyAgICAg
ICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICI0
Iik7CisgICAgICAgICAgICB0ZXN0R3JvdXA4KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1
bmN0aW9uIHRlc3RHcm91cDgoKQoreworICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5k
ZXggPSAyOyIpOworICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlS
YW5nZS5ib3VuZCgnQm9iJywgJ1JvbicsIHRydWUsIHRydWUpOyIpOworCisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9wZW5LZXlD
dXJzb3Ioa2V5UmFuZ2UpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Cisg
ICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7
Iik7CisgICAgICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
a2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Cisg
ICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRh
TmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOworCisgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJz
b3IuY29udGludWUoKTsiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7
CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzaG91bGRCZSgia2V5SW5k
ZXgiLCAiNCIpOworICAgICAgICAgICAgdGVzdEdyb3VwOSgpOworICAgICAgICB9CisgICAgfQor
fQorCitmdW5jdGlvbiB0ZXN0R3JvdXA5KCkKK3sKKyAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2co
ImtleUluZGV4ID0gMTsiKTsKKyAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtleVJhbmdlID0g
SURCS2V5UmFuZ2UubG93ZXJCb3VuZCgnQm9iJyk7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCduYW1lJykub3BlbktleUN1cnNvcihr
ZXlSYW5nZSk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAg
Y3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAg
ICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAi
b2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29y
dFtrZXlJbmRleF0ua2V5Iik7CisKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250
aW51ZSgpOyIpOworICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKKyAgICAg
ICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJv
YmplY3RTdG9yZURhdGFOYW1lU29ydC5sZW5ndGgiKTsKKyAgICAgICAgICAgIHRlc3RHcm91cDEw
KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDEwKCkKK3sKKyAg
ICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gMjsiKTsKKyAgICBrZXlSYW5nZSA9
IGV2YWxBbmRMb2coImtleVJhbmdlID0gSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgnQm9iJywgdHJ1
ZSk7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3Jl
LmluZGV4KCduYW1lJykub3BlbktleUN1cnNvcihrZXlSYW5nZSk7Iik7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29y
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAgICAgaWYgKGN1cnNvcikgeworICAgICAg
ICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5
SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFy
eUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7CisKKyAgICAg
ICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOworICAgICAgICAgICAgZXZh
bEFuZExvZygia2V5SW5kZXgrKzsiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydC5sZW5n
dGgiKTsKKyAgICAgICAgICAgIHRlc3RHcm91cDExKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisK
K2Z1bmN0aW9uIHRlc3RHcm91cDExKCkKK3sKKyAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtl
eUluZGV4ID0gMDsiKTsKKyAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtleVJhbmdlID0gSURC
S2V5UmFuZ2UudXBwZXJCb3VuZCgnSm9lJyk7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCduYW1lJykub3BlbktleUN1cnNvcihrZXlS
YW5nZSk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgY3Vy
c29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAg
ICAgaWYgKGN1cnNvcikgeworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2Jq
ZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAg
IHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtr
ZXlJbmRleF0ua2V5Iik7CisKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51
ZSgpOyIpOworICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKKyAgICAgICAg
fQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiMyIpOwor
ICAgICAgICAgIHRlc3RHcm91cDEyKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9u
IHRlc3RHcm91cDEyKCkKK3sKKyAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0g
MDsiKTsKKyAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtleVJhbmdlID0gSURCS2V5UmFuZ2Uu
dXBwZXJCb3VuZCgnSm9lJywgdHJ1ZSk7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCduYW1lJykub3BlbktleUN1cnNvcihrZXlSYW5n
ZSk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgY3Vyc29y
ID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAgICAg
aWYgKGN1cnNvcikgeworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0
U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJ
bmRleF0ua2V5Iik7CisKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgp
OyIpOworICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKKyAgICAgICAgfQor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICIyIik7Cisg
ICAgICAgICAgICB0ZXN0R3JvdXAxMygpOworICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlv
biB0ZXN0R3JvdXAxMygpCit7CisgICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9
IDM7Iik7CisgICAga2V5UmFuZ2UgPSBldmFsQW5kTG9nKCJrZXlSYW5nZSA9IElEQktleVJhbmdl
Lm9ubHkoJ1BhdCcpOyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBv
YmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9wZW5LZXlDdXJzb3Ioa2V5UmFuZ2UpOyIpOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRM
b2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICAgIGlmIChjdXJzb3Ip
IHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5h
bWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vy
c29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIp
OworCisgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKKyAgICAg
ICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7CisgICAgICAgIH0KKyAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNCIpOworICAgICAgICAgICAg
dGVzdEdyb3VwMTQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gdGVzdEdyb3Vw
MTQoKQoreworICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAwOyIpOworCisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFt
ZScpLm9wZW5DdXJzb3IoKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewor
ICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0
OyIpOworICAgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29y
LmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOwor
ICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0
YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
dmFsdWUubmFtZSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFt
ZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQiLCAib2JqZWN0
U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOworICAgICAgICAgICAg
aWYgKCd3ZWlnaHQnIGluIGN1cnNvci52YWx1ZSkgeworICAgICAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4
XS52YWx1ZS53ZWlnaHQiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZXZhbEFuZExv
ZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
a2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Cisg
ICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRh
TmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52
YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1l
Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RT
dG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7CisgICAgICAgICAgICBp
ZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci52YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhd
LnZhbHVlLndlaWdodCIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBldmFsQW5kTG9n
KCJrZXlJbmRleCsrOyIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
c2hvdWxkQmUoImtleUluZGV4IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0Lmxlbmd0aCIpOwor
ICAgICAgICAgICAgdGVzdEdyb3VwMTUoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rp
b24gdGVzdEdyb3VwMTUoKQoreworICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXgg
PSBvYmplY3RTdG9yZURhdGFOYW1lU29ydC5sZW5ndGggLSAxOyIpOworCisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9wZW5DdXJz
b3IobnVsbCwgSURCQ3Vyc29yLlBSRVYpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2
ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQ7Iik7CisgICAgICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5u
YW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0
U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOworICAgICAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52
YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIs
ICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7CisgICAg
ICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7CisgICAgICAgICAgICAgICAg
c2hvdWxkQmUoImN1cnNvci52YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRb
a2V5SW5kZXhdLnZhbHVlLndlaWdodCIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBl
dmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKKworICAgICAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5h
bWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RT
dG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7CisgICAgICAgICAgICBzaG91bGRCZSgi
Y3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZh
bHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0Iiwg
Im9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKKyAgICAg
ICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKKyAgICAgICAgICAgICAgICBz
aG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtr
ZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGtl
eUluZGV4LS07CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzaG91bGRC
ZSgia2V5SW5kZXgiLCAiLTEiKTsKKyAgICAgICAgICAgIHRlc3RHcm91cDE2KCk7CisgICAgICAg
IH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDE2KCkKK3sKKyAgICBrZXlJbmRleCA9
IGV2YWxBbmRMb2coImtleUluZGV4ID0gMTsiKTsKKyAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2co
ImtleVJhbmdlID0gSURCS2V5UmFuZ2UuYm91bmQoJ0JvYicsICdSb24nKTsiKTsKKworICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5v
cGVuQ3Vyc29yKGtleVJhbmdlKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkg
eworICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVz
dWx0OyIpOworICAgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vy
c29yLmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIp
OworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3Jl
RGF0YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJz
b3IudmFsdWUubmFtZSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUu
bmFtZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQiLCAib2Jq
ZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOworICAgICAgICAg
ICAgaWYgKCd3ZWlnaHQnIGluIGN1cnNvci52YWx1ZSkgeworICAgICAgICAgICAgICAgICAgc2hv
dWxkQmUoImN1cnNvci52YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5
SW5kZXhdLnZhbHVlLndlaWdodCIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBldmFs
QW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKKworICAgICAgICAgICAgc2hvdWxkQmUoImN1
cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUi
KTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9y
ZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vy
c29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVl
Lm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0IiwgIm9i
amVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKKyAgICAgICAg
ICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tl
eUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZXZh
bEFuZExvZygia2V5SW5kZXgrKzsiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICI1Iik7CisgICAgICAgICAgICB0ZXN0R3JvdXAx
NygpOworICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0R3JvdXAxNygpCit7Cisg
ICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDI7Iik7CisgICAga2V5UmFuZ2Ug
PSBldmFsQW5kTG9nKCJrZXlSYW5nZSA9IElEQktleVJhbmdlLmJvdW5kKCdCb2InLCAnUm9uJywg
dHJ1ZSk7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0
b3JlLmluZGV4KCduYW1lJykub3BlbkN1cnNvcihrZXlSYW5nZSk7Iik7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29y
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAgICAgaWYgKGN1cnNvcikgeworICAgICAg
ICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5
SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFy
eUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7CisgICAgICAg
ICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNv
cnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
dmFsdWUuaGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5o
ZWlnaHQiKTsKKyAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKKyAg
ICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0
b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisKKyAgICAg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tl
eUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1h
cnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOworICAgICAg
ICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0YU5hbWVT
b3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29y
LnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUu
aGVpZ2h0Iik7CisgICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7Cisg
ICAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIsICJvYmplY3RT
dG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7CisgICAgICAgIH0KKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNSIpOworICAg
ICAgICAgICAgdGVzdEdyb3VwMTgoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24g
dGVzdEdyb3VwMTgoKQoreworICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAx
OyIpOworICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5i
b3VuZCgnQm9iJywgJ1JvbicsIGZhbHNlLCB0cnVlKTsiKTsKKworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuQ3Vyc29yKGtl
eVJhbmdlKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgeworICAgICAgICBj
dXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAg
ICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJv
YmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAgICAg
ICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0
W2tleUluZGV4XS5rZXkiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUubmFt
ZSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAg
ICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRh
TmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOworICAgICAgICAgICAgaWYgKCd3ZWln
aHQnIGluIGN1cnNvci52YWx1ZSkgeworICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNv
ci52YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVl
LndlaWdodCIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJz
b3IuY29udGludWUoKTsiKTsKKworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAi
b2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29y
dFtrZXlJbmRleF0ua2V5Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLm5h
bWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAg
ICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0
YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKKyAgICAgICAgICAgIGlmICgnd2Vp
Z2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJz
b3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1
ZS53ZWlnaHQiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZXZhbEFuZExvZygia2V5
SW5kZXgrKzsiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNob3Vs
ZEJlKCJrZXlJbmRleCIsICI0Iik7CisgICAgICAgICAgICB0ZXN0R3JvdXAxOSgpOworICAgICAg
ICB9CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0R3JvdXAxOSgpCit7CisgICAga2V5SW5kZXgg
PSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDI7Iik7CisgICAga2V5UmFuZ2UgPSBldmFsQW5kTG9n
KCJrZXlSYW5nZSA9IElEQktleVJhbmdlLmJvdW5kKCdCb2InLCAnUm9uJywgdHJ1ZSwgdHJ1ZSk7
Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmlu
ZGV4KCduYW1lJykub3BlbkN1cnNvcihrZXlSYW5nZSk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbiAoZXZlbnQpIHsKKyAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZl
bnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICAgICAg
c2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhd
LnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIs
ICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7CisgICAgICAgICAgICBz
aG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5
SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUu
aGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQi
KTsKKyAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKKyAgICAgICAg
ICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0
YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisKKyAgICAgICAgICAg
IHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4
XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXki
LCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOworICAgICAgICAgICAg
c2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tl
eUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVl
LmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0
Iik7CisgICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7CisgICAgICAg
ICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIsICJvYmplY3RTdG9yZURh
dGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7CisgICAgICAgIH0KKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNCIpOworICAgICAgICAg
ICAgdGVzdEdyb3VwMjAoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gdGVzdEdy
b3VwMjAoKQoreworICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSA0OyIpOwor
ICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5ib3VuZCgn
Qm9iJywgJ1JvbicpOyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBv
YmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9wZW5DdXJzb3Ioa2V5UmFuZ2UsIElEQkN1cnNvci5Q
UkVWKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgeworICAgICAgICBjdXJz
b3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgICAg
ICBpZiAoY3Vyc29yKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmpl
Y3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAgICAgICAg
c2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tl
eUluZGV4XS5rZXkiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUubmFtZSIs
ICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAg
ICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFt
ZVNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOworICAgICAgICAgICAgaWYgKCd3ZWlnaHQn
IGluIGN1cnNvci52YWx1ZSkgeworICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52
YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLndl
aWdodCIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3Iu
Y29udGludWUoKTsiKTsKKworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2Jq
ZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAg
IHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtr
ZXlJbmRleF0ua2V5Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUi
LCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5h
bWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKKyAgICAgICAgICAgIGlmICgnd2VpZ2h0
JyBpbiBjdXJzb3IudmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
dmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS53
ZWlnaHQiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5k
ZXgtLTsiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNob3VsZEJl
KCJrZXlJbmRleCIsICIwIik7CisgICAgICAgICAgICB0ZXN0R3JvdXAyMSgpOworICAgICAgICB9
CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0R3JvdXAyMSgpCit7CisgICAga2V5SW5kZXggPSBl
dmFsQW5kTG9nKCJrZXlJbmRleCA9IDM7Iik7CisgICAga2V5UmFuZ2UgPSBldmFsQW5kTG9nKCJr
ZXlSYW5nZSA9IElEQktleVJhbmdlLm9ubHkoNjUpOyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnaGVpZ2h0Jykub3BlbktleUN1cnNv
cihrZXlSYW5nZSwgSURCQ3Vyc29yLk5FWFQpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24g
KGV2ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRh
cmdldC5yZXN1bHQ7Iik7CisgICAgICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgICAgIHNob3Vs
ZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZh
bHVlLmhlaWdodCIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5Iiwg
Im9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLmtleSIpOworCisgICAgICAgICAg
ICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKKyAgICAgICAgICAgIGV2YWxBbmRM
b2coImtleUluZGV4Kys7Iik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNSIpOworICAgICAgICAgICAgdGVzdEdyb3VwMjIoKTsK
KyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gdGVzdEdyb3VwMjIoKQoreworICAgIGtl
eUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAzOyIpOworICAgIGtleVJhbmdlID0gZXZh
bEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5vbmx5KDY1KTsiKTsKKworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ2hlaWdodCcpLm9w
ZW5LZXlDdXJzb3Ioa2V5UmFuZ2UsIElEQkN1cnNvci5ORVhUX05PX0RVUExJQ0FURSk7Iik7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgY3Vyc29yID0gZXZhbEFu
ZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAgICAgaWYgKGN1cnNv
cikgeworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRh
SGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7CisgICAgICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRl
eF0ua2V5Iik7CisKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIp
OworICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKKyAgICAgICAgfQorICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICI0Iik7CisgICAg
ICAgICAgICB0ZXN0R3JvdXAyNCgpOworICAgICAgICB9CisgICAgfQorfQorCisvKiB0aGlzIHdh
cyBzcGxpdCBvdXQgaW50byBhIHNlcGFyYXRlIHRlc3QKK2Z1bmN0aW9uIHRlc3RHcm91cDIzKCkK
K3sKKyAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gNTsiKTsKKworICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ2hlaWdodCcp
Lm9wZW5LZXlDdXJzb3IobnVsbCwgSURCQ3Vyc29yLlBSRVZfTk9fRFVQTElDQVRFKTsiKTsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgeworICAgICAgICBjdXJzb3IgPSBldmFsQW5k
TG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgICAgICBpZiAoY3Vyc29y
KSB7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFI
ZWlnaHRTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKKyAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tleUluZGV4
XS5rZXkiKTsKKworICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7
CisgICAgICAgICAgICBpZiAoa2V5SW5kZXggPT0gNSkgeworICAgICAgICAgICAgICAgIGV2YWxB
bmRMb2coImtleUluZGV4LS07Iik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBldmFsQW5k
TG9nKCJrZXlJbmRleC0tOyIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgc2hvdWxkQmUoImtleUluZGV4IiwgIi0xIik7CisgICAgICAgICAgICB0ZXN0R3JvdXAyNCgp
OworICAgICAgICB9CisgICAgfQorfQorKi8KKworZnVuY3Rpb24gdGVzdEdyb3VwMjQoKQorewor
ICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAzOyIpOworICAgIGtleVJhbmdl
ID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5vbmx5KDY1KTsiKTsKKworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ2hlaWdo
dCcpLm9wZW5DdXJzb3Ioa2V5UmFuZ2UsIElEQkN1cnNvci5ORVhUKTsiKTsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uIChldmVudCkgeworICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJz
b3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgICAgICBpZiAoY3Vyc29yKSB7CisgICAg
ICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0
W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
cHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tleUluZGV4XS5rZXkiKTsK
KyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUubmFtZSIsICJvYmplY3RTdG9yZURh
dGFIZWlnaHRTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tleUlu
ZGV4XS52YWx1ZS5oZWlnaHQiKTsKKyAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3Iu
dmFsdWUpIHsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIs
ICJvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7
Iik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOworICAgICAgICB9Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIjUiKTsKKyAg
ICAgICAgICAgIHRlc3RHcm91cDI1KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9u
IHRlc3RHcm91cDI1KCkKK3sKKyAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0g
MzsiKTsKKyAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtleVJhbmdlID0gSURCS2V5UmFuZ2Uu
b25seSg2NSk7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVj
dFN0b3JlLmluZGV4KCdoZWlnaHQnKS5vcGVuQ3Vyc29yKGtleVJhbmdlLCBJREJDdXJzb3IuTkVY
VF9OT19EVVBMSUNBVEUpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Cisg
ICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7
Iik7CisgICAgICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
a2V5IiwgIm9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIp
OworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3Jl
RGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLmtleSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1
cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZh
bHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0Iiwg
Im9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOworICAg
ICAgICAgICAgaWYgKCd3ZWlnaHQnIGluIGN1cnNvci52YWx1ZSkgeworICAgICAgICAgICAgICAg
IHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YUhlaWdodFNv
cnRba2V5SW5kZXhdLnZhbHVlLndlaWdodCIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKKyAgICAgICAgICAgIGV2YWxBbmRM
b2coImtleUluZGV4Kys7Iik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNCIpOworICAgICAgICAgICAgdGVzdEdyb3VwMjcoKTsK
KyAgICAgICAgfQorICAgIH0KK30KKworLyogdGhpcyB3YXMgc3BsaXQgb3V0IGludG8gYSBzZXBh
cmF0ZSB0ZXN0CitmdW5jdGlvbiB0ZXN0R3JvdXAyNigpCit7CisgICAga2V5SW5kZXggPSBldmFs
QW5kTG9nKCJrZXlJbmRleCA9IDU7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVx
dWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCdoZWlnaHQnKS5vcGVuQ3Vyc29yKG51bGwsIElEQkN1
cnNvci5QUkVWX05PX0RVUExJQ0FURSk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZl
bnQpIHsKKyAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0
LnJlc3VsdDsiKTsKKyAgICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUu
aGVpZ2h0Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2Jq
ZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0ua2V5Iik7CisgICAgICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJ
bmRleF0udmFsdWUubmFtZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5o
ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0
Iik7CisgICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7CisgICAgICAg
ICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRh
SGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOworICAgICAgICAgICAg
aWYgKGtleUluZGV4ID09IDUpIHsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRl
eC0tOyIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgt
LTsiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJr
ZXlJbmRleCIsICItMSIpOworICAgICAgICAgICAgdGVzdEdyb3VwMjcoKTsKKyAgICAgICAgfQor
ICAgIH0KK30KKyovCisKK2Z1bmN0aW9uIHRlc3RHcm91cDI3KCkKK3sKKyAgICBrZXlJbmRleCA9
IGV2YWxBbmRMb2coImtleUluZGV4ID0gMDsiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuS2V5Q3Vyc29yKCk7Iik7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgY3Vyc29yID0gZXZh
bEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAgICAgaWYgKGN1
cnNvcikgeworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVE
YXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0u
a2V5Iik7CisKKyAgICAgICAgICAgIG5leHRLZXkgPSBldmFsQW5kTG9nKCJuZXh0S2V5ID0gIWtl
eUluZGV4ID8gJ1BhdCcgOiB1bmRlZmluZWQ7Iik7CisgICAgICAgICAgICBpZiAobmV4dEtleSkg
eworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZShuZXh0S2V5KTsi
KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vy
c29yLmNvbnRpbnVlKCk7Iik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5u
YW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0
U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOworCisgICAgICAgICAgICBpZiAoIWtl
eUluZGV4KSB7CisgICAgICAgICAgICAgICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRl
eCA9IDM7Iik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIm9iamVj
dFN0b3JlRGF0YS5sZW5ndGgiKTsKKyAgICAgICAgICAgIHRlc3RHcm91cDI4KCk7CisgICAgICAg
IH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDI4KCkKK3sKKyAgICBrZXlJbmRleCA9
IGV2YWxBbmRMb2coImtleUluZGV4ID0gMDsiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuS2V5Q3Vyc29yKCk7Iik7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgY3Vyc29yID0gZXZh
bEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAgICAgaWYgKGN1
cnNvcikgeworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVE
YXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0u
a2V5Iik7CisKKyAgICAgICAgICAgIG5leHRLZXkgPSBldmFsQW5kTG9nKCJuZXh0S2V5ID0gIWtl
eUluZGV4ID8gJ0ZsbycgOiB1bmRlZmluZWQ7Iik7CisgICAgICAgICAgICBpZiAobmV4dEtleSkg
eworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZShuZXh0S2V5KTsi
KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vy
c29yLmNvbnRpbnVlKCk7Iik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5u
YW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0
U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOworCisgICAgICAgICAgICBrZXlJbmRl
eCArPSBrZXlJbmRleCA/IDEgOiAyOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIm9iamVjdFN0b3JlRGF0YS5sZW5ndGgiKTsKKyAg
ICAgICAgICAgIHRlc3RHcm91cDI5KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9u
IHRlc3RHcm91cDI5KCkKK3sKKyAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0g
MDsiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
aW5kZXgoJ25hbWUnKS5vcGVuQ3Vyc29yKCk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAo
ZXZlbnQpIHsKKyAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFy
Z2V0LnJlc3VsdDsiKTsKKyAgICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICAgICAgc2hvdWxk
QmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVl
Lm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmpl
Y3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7CisgICAgICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhd
LnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0
IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKKyAg
ICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKKyAgICAgICAgICAgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVT
b3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgbmV4dEtleSA9IGV2YWxBbmRMb2coIm5leHRLZXkgPSAha2V5SW5kZXggPyAnUGF0JyA6IHVu
ZGVmaW5lZDsiKTsKKyAgICAgICAgICAgIGlmIChuZXh0S2V5KSB7CisgICAgICAgICAgICAgICAg
ZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKG5leHRLZXkpOyIpOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2Jq
ZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAg
IHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtr
ZXlJbmRleF0ua2V5Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUi
LCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5h
bWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKKyAgICAgICAgICAgIGlmICgnd2VpZ2h0
JyBpbiBjdXJzb3IudmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
dmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS53
ZWlnaHQiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFrZXlJbmRleCkgewor
ICAgICAgICAgICAgICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAzOyIpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgZXZhbEFu
ZExvZygia2V5SW5kZXgrKzsiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJvYmplY3RTdG9yZURhdGFO
YW1lU29ydC5sZW5ndGgiKTsKKyAgICAgICAgICAgIHRlc3RHcm91cDMwKCk7CisgICAgICAgIH0K
KyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDMwKCkKK3sKKyAgICBrZXlJbmRleCA9IGV2
YWxBbmRMb2coImtleUluZGV4ID0gMDsiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuQ3Vyc29yKCk7Iik7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgY3Vyc29yID0gZXZhbEFuZExv
ZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAgICAgaWYgKGN1cnNvcikg
eworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFt
ZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJz
b3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7
CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVE
YXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3IudmFsdWUuaGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4
XS52YWx1ZS5oZWlnaHQiKTsKKyAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFs
dWUpIHsKKyAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0Iiwg
Im9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgbmV4dEtleSA9IGV2YWxBbmRMb2coIm5leHRLZXkgPSAh
a2V5SW5kZXggPyAnRmxvJyA6IHVuZGVmaW5lZDsiKTsKKyAgICAgICAgICAgIGlmIChuZXh0S2V5
KSB7CisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKG5leHRLZXkp
OyIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJj
dXJzb3IuY29udGludWUoKTsiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2hvdWxk
QmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVl
Lm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmpl
Y3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7CisgICAgICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhd
LnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0
IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKKyAg
ICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKKyAgICAgICAgICAgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVT
b3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAga2V5SW5kZXggKz0ga2V5SW5kZXggPyAxIDogMjsKKyAgICAgICAgfQorICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJvYmplY3RTdG9yZURhdGFOYW1l
U29ydC5sZW5ndGgiKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9Cisg
ICAgfQorfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMva2V5LXJl
cXVpcmVtZW50cy1kZWxldGUtbnVsbC1rZXkuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9rZXktcmVxdWlyZW1lbnRzLWRlbGV0ZS1udWxsLWtleS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mOWRkYTkyYzIzMTFiYzczOGU0MDlmMzFiNTAwOGM5MTUwYmY1ZDhiCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9y
ZXNvdXJjZXMva2V5LXJlcXVpcmVtZW50cy1kZWxldGUtbnVsbC1rZXkuanMKQEAgLTAsMCArMSw0
MiBAQAorLy8gb3JpZ2luYWwgdGVzdDoKKy8vIGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxs
YTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3Rfa2V5X3JlcXVpcmVtZW50cy5odG1s
CisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisvLyAiIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorLy8gICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKworaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykg
eworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vcmVzb3VyY2VzL3NoYXJlZC5q
cycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBiZWhhdmlvciBkZWxldGlu
ZyBlbnRyeSB3aXRoIG5vIGtleSIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVW
ZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Cisg
ICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9
IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZUFuZENyZWF0ZU9iamVjdFN0b3JlOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiBjbGVhbkRhdGFiYXNlQW5kQ3JlYXRlT2JqZWN0U3RvcmUoKQoreworICAgIGRlbGV0ZUFs
bE9iamVjdFN0b3JlcyhkYik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdiYXInKTsiKTsKKyAgICBldmFsQW5kRXhwZWN0
RXhjZXB0aW9uKCJvYmplY3RTdG9yZS5kZWxldGUobnVsbCk7IiwgIklEQkRhdGFiYXNlRXhjZXB0
aW9uLkRBVEFfRVJSIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9rZXktcmVxdWlyZW1lbnRzLWlubGluZS1hbmQtcGFz
c2VkLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMv
a2V5LXJlcXVpcmVtZW50cy1pbmxpbmUtYW5kLXBhc3NlZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYjI0ZWQy
MWY1ZTAyMDUyZWUzMDk2N2U0MjkwY2U3NjJmYzZlNjZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMva2V5LXJlcXVpcmVt
ZW50cy1pbmxpbmUtYW5kLXBhc3NlZC5qcwpAQCAtMCwwICsxLDQ0IEBACisvLyBvcmlnaW5hbCB0
ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5k
ZXhlZERCL3Rlc3QvdGVzdF9rZXlfcmVxdWlyZW1lbnRzLmh0bWwKKy8vIGxpY2Vuc2Ugb2Ygb3Jp
Z2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0
cygnLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBp
bXBvcnRTY3JpcHRzKCcuLi8uLi9yZXNvdXJjZXMvc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0
aW9uKCJUZXN0IEluZGV4ZWREQidzIGJlaGF2aW9yIGFkZGluZyBpbmxpbmUgYW5kIHBhc3NlZCBr
ZXkgc2ltdWx0YW5lb3VzbHkiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVu
ZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAg
IGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGVidWco
Im9wZW5TdWNjZXNzKCk6Iik7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0
VmVyc2lvbigndmVyc2lvbiAxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0
YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRlYnVnKCJjbGVhbkRhdGFiYXNl
KCk6Iik7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKyAgICBvYmplY3RTdG9yZSA9
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2JheicsIHsg
a2V5UGF0aDogJ2lkJyB9KTsiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJvYmplY3RT
dG9yZS5hZGQoe2lkOiA1fSwgNSk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7
CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L3Jlc291cmNlcy9rZXktcmVxdWlyZW1lbnRzLXB1dC1uby1rZXkuanMgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9rZXktcmVxdWlyZW1lbnRzLXB1dC1u
by1rZXkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uM2FmMTQ3ZDFkNTVmMGUxNzk1ZWEyODRiNGI3MmYxNGFjM2Nm
NmU1YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
emlsbGEvcmVzb3VyY2VzL2tleS1yZXF1aXJlbWVudHMtcHV0LW5vLWtleS5qcwpAQCAtMCwwICsx
LDQyIEBACisvLyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3pp
bGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9rZXlfcmVxdWlyZW1lbnRzLmh0
bWwKKy8vIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBvcnRTY3JpcHRz
KSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi9yZXNvdXJjZXMvc2hhcmVk
LmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGJlaGF2aW9yIHB1dGlu
ZyB3aXRob3V0IGtleSIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQ
cmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVz
Y3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxB
bmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGNsZWFuRGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRlbGV0
ZUFsbE9iamVjdFN0b3JlcyhkYik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdiYXInKTsiKTsKKyAgICBldmFsQW5kRXhw
ZWN0RXhjZXB0aW9uKCJvYmplY3RTdG9yZS5wdXQoe30pOyIsICJJREJEYXRhYmFzZUV4Y2VwdGlv
bi5EQVRBX0VSUiIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9yZXNvdXJjZXMva2V5LXJlcXVpcmVtZW50cy1wdXQtbnVsbC1rZXkuanMg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9rZXktcmVx
dWlyZW1lbnRzLXB1dC1udWxsLWtleS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYWI1ODhjM2RhOWEzOGQ5ZjYz
ZjZiZjI1ZTVkOTRjYzViMDRmNDA3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMva2V5LXJlcXVpcmVtZW50cy1wdXQtbnVs
bC1rZXkuanMKQEAgLTAsMCArMSw0MiBAQAorLy8gb3JpZ2luYWwgdGVzdDoKKy8vIGh0dHA6Ly9t
eHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3Rf
a2V5X3JlcXVpcmVtZW50cy5odG1sCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisvLyAi
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorLy8gICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKworaWYg
KHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnLi4v
Li4vcmVzb3VyY2VzL3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVk
REIncyBiZWhhdmlvciBwdXQoKWluZyB3aXRoIG51bGwga2V5Iik7CisKK2Z1bmN0aW9uIHRlc3Qo
KQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2Nh
dGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24p
Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nl
c3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEn
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5E
YXRhYmFzZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKyAgICBvYmplY3RT
dG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2Jh
cicpOyIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIm9iamVjdFN0b3JlLnB1dCh7fSwg
bnVsbCk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisgICAgZmluaXNoSlNU
ZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9rZXkt
cmVxdWlyZW1lbnRzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9y
ZXNvdXJjZXMva2V5LXJlcXVpcmVtZW50cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOTIwODZhNzBhZTBhOWQ3
Njk3Yzc5YzQ0NmI1ZGEzZjE4MTg4NjE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMva2V5LXJlcXVpcmVtZW50cy5qcwpA
QCAtMCwwICsxLDc1IEBACisvLyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxh
Lm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9rZXlfcmVxdWly
ZW1lbnRzLmh0bWwKKy8vIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBv
cnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi9yZXNvdXJj
ZXMvc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGV2ZW50
LnRhcmdldC5yZXN1bHQgYWZ0ZXIgYWRkKCkgYW5kIHB1dCgpIik7CisKK2Z1bmN0aW9uIHRlc3Qo
KQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2Nh
dGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24p
Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nl
c3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEn
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5E
YXRhYmFzZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKyAgICBvYmplY3RT
dG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2Zv
bycsIHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9KTsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZCh7fSk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBwb3N0QWRkOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworfQorCitmdW5jdGlvbiBwb3N0QWRkKCkKK3sKKyAgICBrZXkxID0gZXZhbEFuZExvZygi
a2V5MSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoe30sIGtleTEpOyIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gcG9zdFB1dDE7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHBvc3RQdXQxKCkKK3sKKyAgICBzaG91bGRCZSgiZXZl
bnQudGFyZ2V0LnJlc3VsdCIsICJrZXkxIik7CisgICAga2V5MiA9IGV2YWxBbmRMb2coImtleTIg
PSAxMDsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3Jl
LnB1dCh7fSwga2V5Mik7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0UHV0MjsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rp
b24gcG9zdFB1dDIoKQoreworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgImtl
eTIiKTsKKyAgICBrZXkyID0gZXZhbEFuZExvZygia2V5MiA9IDEwMDsiKTsKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCh7fSwga2V5Mik7Iik7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0UHV0MzsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gcG9zdFB1dDMoKQoreworICAg
IHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgImtleTIiKTsKKyAgICBmaW5pc2hKU1Rl
c3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL29iamVj
dC1jdXJzb3JzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNv
dXJjZXMvb2JqZWN0LWN1cnNvcnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGRmYzRmNWJlZjA5YTI3ZjEzZjlh
ZGUxYWEwMzg5NTMyNjJkOGNmOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL29iamVjdC1jdXJzb3JzLmpzCkBAIC0wLDAg
KzEsODYgQEAKKy8vIG9yaWdpbmFsIHRlc3Q6CisvLyBodHRwOi8vbXhyLm1vemlsbGEub3JnL21v
emlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X29iamVjdEN1cnNvcnMuaHRt
bAorLy8gbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorLy8gIiBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKy8vICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCisKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMp
IHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uL3Jlc291cmNlcy9zaGFyZWQu
anMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgaW5kZXggY3Vyc29ycyIp
OworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisg
ICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkg
VGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVu
KG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nl
c3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0
YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jl
cyhkYik7CisgICAgYXV0b0luY3JlbWVudCA9IGV2YWxBbmRMb2coImF1dG9JbmNyZW1lbnQgPSBm
YWxzZTsiKTsKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ2EnLCB7IGtleVBhdGg6ICdpZCcsIGF1dG9JbmNyZW1lbnQ6IGF1
dG9JbmNyZW1lbnQgfSk7Iik7CisgICAgaW5kZXhlcyA9IFsKKyAgICAgICAgeyBuYW1lOiAiYSIs
IG9wdGlvbnM6IHsgfSB9LAorICAgICAgICB7IG5hbWU6ICJiIiwgb3B0aW9uczogeyB1bmlxdWU6
IHRydWUgfSB9CisgICAgXTsKKyAgICBmb3IgKGogaW4gaW5kZXhlcykgeworICAgICAgICBldmFs
QW5kTG9nKCJvYmplY3RTdG9yZS5jcmVhdGVJbmRleChpbmRleGVzW2pdLm5hbWUsICduYW1lJywg
aW5kZXhlc1tqXS5vcHRpb25zKTsiKTsKKyAgICB9CisgICAgZGF0YSA9IGV2YWxBbmRMb2coImRh
dGEgPSB7IG5hbWU6ICdCZW4nLCBpZDogMSB9OyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKGRhdGEpOyIpOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gcG9zdEFkZDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKK30KKworZnVuY3Rpb24gcG9zdEFkZCgpCit7CisgICAgbnVtSW5kZXhlcyA9IGluZGV4
ZXMubGVuZ3RoOworICAgIGluZGV4ZXNGaW5pc2hlZCA9IDA7CisgICAgZm9yIChqIGluIGluZGV4
ZXMpIHsKKyAgICAgICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmlu
ZGV4KGluZGV4ZXNbal0ubmFtZSk7Iik7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gaW5kZXgub3BlbkN1cnNvcigpOyIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1
bHQudmFsdWUubmFtZSIsICInQmVuJyIpOworICAgICAgICAgICAgaWYgKCsraW5kZXhlc0Zpbmlz
aGVkID09IG51bUluZGV4ZXMpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0b0luY3JlbWVudCkg
eworICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBzZXR1cEF1dG9JbmNyZW1lbnQoKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorfQorCitmdW5j
dGlvbiBzZXR1cEF1dG9JbmNyZW1lbnQoKQoreworICAgIGF1dG9JbmNyZW1lbnQgPSBldmFsQW5k
TG9nKCJhdXRvSW5jcmVtZW50ID0gdHJ1ZTsiKTsKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRM
b2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2InLCB7IGtleVBhdGg6ICdp
ZCcsIGF1dG9JbmNyZW1lbnQ6IGF1dG9JbmNyZW1lbnQgfSk7Iik7CisgICAgZm9yIChqIGluIGlu
ZGV4ZXMpIHsKKyAgICAgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoaW5k
ZXhlc1tqXS5uYW1lLCAnbmFtZScsIGluZGV4ZXNbal0ub3B0aW9ucyk7Iik7CisgICAgfQorICAg
IGRhdGEgPSBldmFsQW5kTG9nKCJkYXRhID0geyBuYW1lOiAnQmVuJyB9OyIpOworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKGRhdGEpOyIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdEFkZDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKwordGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvb2JqZWN0LWlkZW50aXR5Lmpz
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvb2JqZWN0
LWlkZW50aXR5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1YjMzMzVlMjM4NDJkNTY4MjI5ZDgxODllYmYzODJl
YjQ5YzUyZGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL3Jlc291cmNlcy9vYmplY3QtaWRlbnRpdHkuanMKQEAgLTAsMCArMSw2NiBAQAor
Ly8gb3JpZ2luYWwgdGVzdDoKKy8vIGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9z
b3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3Rfb2JqZWN0X2lkZW50aXR5Lmh0bWw/Zm9yY2U9
MQorLy8gbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorLy8gIiBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKy8vICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCisKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMp
IHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uL3Jlc291cmNlcy9zaGFyZWQu
anMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCOiBvYmplY3QgaWRlbnRpdHki
KTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKwor
ICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15
IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Bl
bihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNj
ZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlT2Jq
ZWN0U3RvcmVBbmRJbmRleDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gY3JlYXRlT2JqZWN0U3RvcmVBbmRJbmRleCgpCit7Cisg
ICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGV2ZW50LnRhcmdldC50
cmFuc2FjdGlvbjsiKTsKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworICAgIG9iamVj
dFN0b3JlMSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlMSA9IGRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdmb28nKTsiKTsKKyAgICBvYmplY3RTdG9yZTIgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZTIg
PSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnZm9vJyk7Iik7CisgICAgc2hvdWxkQmVUcnVlKCJv
YmplY3RTdG9yZTEgPT09IG9iamVjdFN0b3JlMiIpOworICAgIGluZGV4MSA9IGV2YWxBbmRMb2co
ImluZGV4MSA9IG9iamVjdFN0b3JlMS5jcmVhdGVJbmRleCgnYmFyJywgJ2tleScpOyIpOworICAg
IGluZGV4MiA9IGV2YWxBbmRMb2coImluZGV4MiA9IG9iamVjdFN0b3JlMi5pbmRleCgnYmFyJyk7
Iik7CisgICAgc2hvdWxkQmVUcnVlKCJpbmRleDEgPT09IGluZGV4MiIpOworICAgIGV2YWxBbmRM
b2coInRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB0ZXN0SWRlbnRpdHlTb21lTW9yZTsiKTsKK30K
KworZnVuY3Rpb24gdGVzdElkZW50aXR5U29tZU1vcmUoKQoreworICAgIHRyYW5zYWN0aW9uID0g
ZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignZm9vJyk7Iik7CisgICAg
b2JqZWN0U3RvcmUzID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUzID0gdHJhbnNhY3Rpb24ub2Jq
ZWN0U3RvcmUoJ2ZvbycpOyIpOworICAgIG9iamVjdFN0b3JlNCA9IGV2YWxBbmRMb2coIm9iamVj
dFN0b3JlNCA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdmb28nKTsiKTsKKyAgICBzaG91bGRC
ZVRydWUoIm9iamVjdFN0b3JlMyA9PT0gb2JqZWN0U3RvcmU0Iik7CisKKyAgICBzaG91bGRCZUZh
bHNlKCJvYmplY3RTdG9yZTMgPT09IG9iamVjdFN0b3JlMSIpOworICAgIHNob3VsZEJlRmFsc2Uo
Im9iamVjdFN0b3JlNCA9PT0gb2JqZWN0U3RvcmUyIik7CisKKyAgICBpbmRleDMgPSBldmFsQW5k
TG9nKCJpbmRleDMgPSBvYmplY3RTdG9yZTMuaW5kZXgoJ2JhcicpOyIpOworICAgIGluZGV4NCA9
IGV2YWxBbmRMb2coImluZGV4NCA9IG9iamVjdFN0b3JlNC5pbmRleCgnYmFyJyk7Iik7CisgICAg
c2hvdWxkQmVUcnVlKCJpbmRleDMgPT09IGluZGV4NCIpOworCisgICAgc2hvdWxkQmVGYWxzZSgi
aW5kZXgzID09PSBpbmRleDEiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJpbmRleDQgPT09IGluZGV4
MiIpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL3Jlc291cmNlcy9vYmplY3Qtc3RvcmUtaW5saW5lLWF1dG9pbmNyZW1lbnQta2V5LWFk
ZGVkLW9uLXB1dC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVz
b3VyY2VzL29iamVjdC1zdG9yZS1pbmxpbmUtYXV0b2luY3JlbWVudC1rZXktYWRkZWQtb24tcHV0
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmU3ZmRhMDY4NDZkNDg4OWUzYWRkYjBjOWI2NmEzNzVkZDc0ODY3N2MK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L3Jlc291cmNlcy9vYmplY3Qtc3RvcmUtaW5saW5lLWF1dG9pbmNyZW1lbnQta2V5LWFkZGVkLW9u
LXB1dC5qcwpAQCAtMCwwICsxLDY0IEBACisvLyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDovL214
ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9v
YmplY3RTdG9yZV9pbmxpbmVfYXV0b2luY3JlbWVudF9rZXlfYWRkZWRfb25fcHV0Lmh0bWw/Zm9y
Y2U9MQorLy8gbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorLy8gIiBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKy8vICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCisKK2lmICh0aGlzLmltcG9ydFNjcmlw
dHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uL3Jlc291cmNlcy9zaGFy
ZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGFkZGluZyBhbiBhdXRv
aW5jcmVtZW50ZWQga2V5IGFuZCByZXRyaWV2aW5nIGl0IHN1Y2Nlc3NmdWxseSIpOworCitmdW5j
dGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9
IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRh
YmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRl
c2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRW
ZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldHVwT2JqZWN0U3RvcmU7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIHNldHVwT2JqZWN0U3RvcmUoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jlcyhk
Yik7CisgICAgdGVzdCA9IGV2YWxBbmRMb2coInRlc3QgPSB7XG4iICsKKyIgICAgICAgIG5hbWU6
ICdpbmxpbmUga2V5OyBrZXkgZ2VuZXJhdG9yJyxcbiIgKworIiAgICAgICAgYXV0b0luY3JlbWVu
dDogdHJ1ZSxcbiIgKworIiAgICAgICAgc3RvcmVkT2JqZWN0OiB7IG5hbWU6ICdMaW5jb2xuJyB9
LFxuIiArCisiICAgICAgICBrZXlOYW1lOiAnaWQnLFxuIiArCisiICAgIH07Iik7CisgICAgb2Jq
ZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3Jl
KHRlc3QubmFtZSwgeyBrZXlQYXRoOiB0ZXN0LmtleU5hbWUsIGF1dG9JbmNyZW1lbnQ6IHRlc3Qu
YXV0b0luY3JlbWVudCB9KTsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IG9iamVjdFN0b3JlLmFkZCh0ZXN0LnN0b3JlZE9iamVjdCk7Iik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBhZGRTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBhZGRTdWNjZXNzKCkKK3sKKyAgICBpZCA9IGV2YWxB
bmRMb2coImlkID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmdldChpZCk7Iik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBnZXRTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBnZXRTdWNjZXNzKCkKK3sKKyAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0LnJlc3VsdC5uYW1lIiwgInRlc3Quc3RvcmVkT2JqZWN0Lm5hbWUiKTsKKyAg
ICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5pZCIsICJpZCIpOworICAgIGZpbmlzaEpT
VGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvb2Jq
ZWN0LXN0b3JlLXJlbW92ZS12YWx1ZXMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL3Jlc291cmNlcy9vYmplY3Qtc3RvcmUtcmVtb3ZlLXZhbHVlcy5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yYTBkZWE3OWZlZmI4YjAxNTdiZWZlYWFmYTk3MDkxOGU0ZjI5NDdlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMv
b2JqZWN0LXN0b3JlLXJlbW92ZS12YWx1ZXMuanMKQEAgLTAsMCArMSwxMjEgQEAKKy8vIG9yaWdp
bmFsIHRlc3Q6CisvLyBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2Rv
bS9pbmRleGVkREIvdGVzdC90ZXN0X29iamVjdFN0b3JlX3JlbW92ZV92YWx1ZXMuaHRtbD9mb3Jj
ZT0xCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisvLyAiIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorLy8gICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKworaWYgKHRoaXMuaW1wb3J0U2NyaXB0
cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vcmVzb3VyY2VzL3NoYXJl
ZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREI6IGFkZHMsIGdldHMsIGRl
bGV0ZXMsIGFuZCByZS1nZXRzIGEgcmVjb3JkIGluIGEgdmFyaWV0eSBvZiBkaWZmZXJlbnQgb2Jq
ZWN0IHN0b3JlIGNvbmZpZ3VyYXRpb25zIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJl
bW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFt
ZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAg
IGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICBkYXRh
ID0gZXZhbEFuZExvZygiZGF0YSA9IFtcbiIgKworIiAgICAgICAgeyBuYW1lOiAnaW5saW5lIGtl
eTsga2V5IGdlbmVyYXRvcicsXG4iICsKKyIgICAgICAgICAgYXV0b0luY3JlbWVudDogdHJ1ZSxc
biIgKworIiAgICAgICAgICBzdG9yZWRPYmplY3Q6IHtuYW1lOiAnTGluY29sbid9LFxuIiArCisi
ICAgICAgICAgIGtleU5hbWU6ICdpZCcsXG4iICsKKyIgICAgICAgICAga2V5VmFsdWU6IHVuZGVm
aW5lZCxcbiIgKworIiAgICAgICAgfSxcbiIgKworIiAgICAgICAgeyBuYW1lOiAnaW5saW5lIGtl
eTsgbm8ga2V5IGdlbmVyYXRvcicsXG4iICsKKyIgICAgICAgICAgYXV0b0luY3JlbWVudDogZmFs
c2UsXG4iICsKKyIgICAgICAgICAgc3RvcmVkT2JqZWN0OiB7aWQ6IDEsIG5hbWU6ICdMaW5jb2xu
J30sXG4iICsKKyIgICAgICAgICAga2V5TmFtZTogJ2lkJyxcbiIgKworIiAgICAgICAgICBrZXlW
YWx1ZTogdW5kZWZpbmVkLFxuIiArCisiICAgICAgICB9LFxuIiArCisiICAgICAgICB7IG5hbWU6
ICdvdXQgb2YgbGluZSBrZXk7IGtleSBnZW5lcmF0b3InLFxuIiArCisiICAgICAgICAgIGF1dG9J
bmNyZW1lbnQ6IHRydWUsXG4iICsKKyIgICAgICAgICAgc3RvcmVkT2JqZWN0OiB7bmFtZTogJ0xp
bmNvbG4nfSxcbiIgKworIiAgICAgICAgICBrZXlOYW1lOiB1bmRlZmluZWQsXG4iICsKKyIgICAg
ICAgICAga2V5VmFsdWU6IHVuZGVmaW5lZCxcbiIgKworIiAgICAgICAgfSxcbiIgKworIiAgICAg
ICAgeyBuYW1lOiAnb3V0IG9mIGxpbmUga2V5OyBubyBrZXkgZ2VuZXJhdG9yJyxcbiIgKworIiAg
ICAgICAgICBhdXRvSW5jcmVtZW50OiBmYWxzZSxcbiIgKworIiAgICAgICAgICBzdG9yZWRPYmpl
Y3Q6IHtuYW1lOiAnTGluY29sbid9LFxuIiArCisiICAgICAgICAgIGtleU5hbWU6IHVuZGVmaW5l
ZCxcbiIgKworIiAgICAgICAgICBrZXlWYWx1ZTogMSxcbiIgKworIiAgICAgICAgfVxuIiArCisi
ICAgIF07Iik7CisKKyAgICBpID0gZXZhbEFuZExvZygiaSA9IDA7Iik7CisgICAgc2V0VmVyc2lv
bigpOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uKCkKK3sKKyAgICBpZiAoaSA8IGRhdGEubGVu
Z3RoKSB7CisgICAgICAgIHRlc3QgPSBkYXRhW2ldOworICAgICAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAgICAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGNyZWF0ZU9iamVjdFN0b3JlOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB9IGVsc2UgeworICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZU9iamVjdFN0b3JlKCkKK3sKKyAgICBk
ZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgaWYgKHRlc3Qua2V5TmFtZSkgeworICAg
ICAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUodGVzdC5uYW1lLCB7IGtleVBhdGg6IHRlc3Qua2V5TmFtZSwgYXV0b0luY3JlbWVu
dDogdGVzdC5hdXRvSW5jcmVtZW50IH0pOyIpOworICAgIH0gZWxzZSB7CisgICAgICAgIG9iamVj
dFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSh0
ZXN0Lm5hbWUsIHsgYXV0b0luY3JlbWVudDogdGVzdC5hdXRvSW5jcmVtZW50IH0pOyIpOworICAg
IH0KKyAgICBpZiAodGVzdC5rZXlWYWx1ZSkgeworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZCh0ZXN0LnN0b3JlZE9iamVjdCwgdGVzdC5rZXlW
YWx1ZSk7Iik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBvYmplY3RTdG9yZS5hZGQodGVzdC5zdG9yZWRPYmplY3QpOyIpOworICAgIH0KKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldFJlY29yZDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZ2V0UmVjb3JkKCkKK3sKKyAg
ICBpZCA9IGV2YWxBbmRMb2coImlkID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmdldChpZCk7Iik7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBkZWxldGVSZWNvcmQ7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZVJlY29yZCgpCit7
CisgICAgc2hvdWxkQmUoInRlc3Quc3RvcmVkT2JqZWN0Lm5hbWUiLCAiZXZlbnQudGFyZ2V0LnJl
c3VsdC5uYW1lIik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVj
dFN0b3JlLmRlbGV0ZShpZCk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRSZWNvcmRBZ2FpbjsKK30K
KworZnVuY3Rpb24gZ2V0UmVjb3JkQWdhaW4oKQoreworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KGlkKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZpbmFs
Q2hlY2s7Cit9CisKK2Z1bmN0aW9uIGZpbmFsQ2hlY2soKQoreworICAgIHNob3VsZEJlVHJ1ZSgi
ZXZlbnQudGFyZ2V0LnJlc3VsdCA9PT0gdW5kZWZpbmVkIik7CisgICAgaSsrOworICAgIHNldFZl
cnNpb24oKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL29i
amVjdHN0b3JlbmFtZXMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L3Jlc291cmNlcy9vYmplY3RzdG9yZW5hbWVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1NDUyZWVkMzhmNWQ0
MmE1ZDQ2ZDU5MjE2YWQ1NDU0NmIwOGI3OWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9vYmplY3RzdG9yZW5hbWVzLmpz
CkBAIC0wLDAgKzEsNDcgQEAKKy8vIG9yaWdpbmFsIHRlc3Q6CisvLyBodHRwOi8vbXhyLm1vemls
bGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2dsb2JhbF9k
YXRhLmh0bWwKKy8vIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBvcnRT
Y3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi9yZXNvdXJjZXMv
c2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIG9iamVjdFN0
b3JlTmFtZXMgYXJyYXkiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9y
UHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRl
c2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFs
QW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKK3sKKyAgICBkZWxl
dGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmVOYW1lID0gImEiOworICAg
IG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RT
dG9yZShvYmplY3RTdG9yZU5hbWUsIHsga2V5UGF0aDogJ2lkJywgYXV0b0luY3JlbWVudDogdHJ1
ZSB9KTsiKTsKKworICAgIHNob3VsZEJlVHJ1ZSgiJ29iamVjdFN0b3JlTmFtZXMnIGluIGRiIik7
CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjEiKTsKKyAgICBz
aG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5pdGVtKDApIiwgIm9iamVjdFN0b3JlTmFtZSIp
OworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9yZXNvdXJjZXMvb2RkLXJlc3VsdC1vcmRlci5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL29kZC1yZXN1bHQtb3JkZXIuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZmMyNDBkZjc4OGJhNTBiNWNkMDcyNjNjMWFjN2RhOTZmZTEwYmZmYgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL29kZC1y
ZXN1bHQtb3JkZXIuanMKQEAgLTAsMCArMSwxMTcgQEAKKy8vIG9yaWdpbmFsIHRlc3Q6CisvLyBo
dHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVz
dC90ZXN0X29kZF9yZXN1bHRfb3JkZXIuaHRtbD9yYXc9MQorLy8gbGljZW5zZSBvZiBvcmlnaW5h
bCB0ZXN0OgorLy8gIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKy8vICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLyAiCisKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcu
Li8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9y
dFNjcmlwdHMoJy4uLy4uL3Jlc291cmNlcy9zaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24o
IlRlc3QgSW5kZXhlZERCOiByZXF1ZXN0IHJlc3VsdCBwZXJzaXN0cyBpbiBzZXRUaW1lb3V0IGNh
bGxiYWNrIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVz
KCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlv
biA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhl
ZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBv
cGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJvcGVuU3VjY2Vz
cygpOiIpOworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBudWxsOyIpOworICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7CisgICAgICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSByZXF1ZXN0LnJl
c3VsdDsiKTsKKyAgICAgICAgY2hlY2tEYXRhYmFzZVR5cGUoKTsKKyAgICB9LCAwKTsKK30KKwor
ZnVuY3Rpb24gY2hlY2tEYXRhYmFzZVR5cGUoKQoreworICAgIGRlYnVnKCJjaGVja0RhdGFiYXNl
VHlwZSgpOiIpOworICAgIHNob3VsZEJlVHJ1ZSgiZGIgaW5zdGFuY2VvZiBJREJEYXRhYmFzZSIp
OworICAgIGRiLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gc2V0dXBPYmplY3RTdG9yZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0dXBPYmplY3RTdG9yZSgp
Cit7CisgICAgZGVidWcoInNldHVwT2JqZWN0U3RvcmUoKToiKTsKKyAgICBkZWxldGVBbGxPYmpl
Y3RTdG9yZXMoZGIpOworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUg
PSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJywgeyBrZXlQYXRoOiAna2V5JywgYXV0b0luY3Jl
bWVudDogdHJ1ZSB9KTsiKTsKKyAgICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gb2JqZWN0
U3RvcmUuY3JlYXRlSW5kZXgoJ2ZvbycsICdpbmRleCcpOyIpOworICAgIGV2YWxBbmRMb2coImV2
ZW50LnRhcmdldC50cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gYWRkUmVjb3JkOyIpOworfQorCitm
dW5jdGlvbiBhZGRSZWNvcmQoKQoreworICAgIGRlYnVnKCJhZGRSZWNvcmQoKToiKTsKKyAgICBv
YmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIudHJhbnNhY3Rpb24oJ2Zv
bycsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpLm9iamVjdFN0b3JlKCdmb28nKTsiKTsKKyAg
ICBkYXRhID0gZXZhbEFuZExvZygiZGF0YSA9IHsga2V5OiA1LCBpbmRleDogMTAgfTsiKTsKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChkYXRhKTsi
KTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZFN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGFkZFN1Y2Nlc3Mo
KQoreworICAgIGRlYnVnKCJhZGRTdWNjZXNzKCk6Iik7CisgICAga2V5ID0gZXZhbEFuZExvZygi
a2V5ID0gbnVsbDsiKTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAga2V5ID0g
ZXZhbEFuZExvZygia2V5ID0gcmVxdWVzdC5yZXN1bHQ7Iik7CisgICAgICBjaGVja0FkZGVkS2V5
KCk7CisgICAgfSwgMCk7Cit9CisKK2Z1bmN0aW9uIGNoZWNrQWRkZWRLZXkoKQoreworICAgIGRl
YnVnKCJjaGVja0FkZGVkS2V5KCk6Iik7CisgICAgc2hvdWxkQmUoImtleSIsICJkYXRhLmtleSIp
OworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi50cmFuc2Fj
dGlvbignZm9vJykub2JqZWN0U3RvcmUoJ2ZvbycpOyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KGRhdGEua2V5KTsiKTsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGdldFN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGdldFN1Y2Nlc3MoKQoreworICAgIGRlYnVn
KCJnZXRTdWNjZXNzKCk6Iik7CisgICAgcmVjb3JkID0gZXZhbEFuZExvZygicmVjb3JkID0gbnVs
bDsiKTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgcmVjb3JkID0gZXZhbEFu
ZExvZygicmVjb3JkID0gcmVxdWVzdC5yZXN1bHQ7Iik7CisgICAgICBjaGVja1JldHJpZXZlZEtl
eSgpOworICAgIH0sIDApOworfQorCitmdW5jdGlvbiBjaGVja1JldHJpZXZlZEtleSgpCit7Cisg
ICAgZGVidWcoImNoZWNrUmV0cmlldmVkS2V5KCk6Iik7CisgICAgc2hvdWxkQmUoInJlY29yZC5r
ZXkiLCAiZGF0YS5rZXkiKTsKKyAgICBzaG91bGRCZSgicmVjb3JkLmluZGV4IiwgImRhdGEuaW5k
ZXgiKTsKKyAgICBkZWxldGVSZWNvcmQoKTsKK30KKworZnVuY3Rpb24gZGVsZXRlUmVjb3JkKCkK
K3sKKyAgICBkZWJ1ZygiZGVsZXRlUmVjb3JkKCk6Iik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFs
QW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLnRyYW5zYWN0aW9uKCdmb28nLCBJREJUcmFuc2FjdGlv
bi5SRUFEX1dSSVRFKS5vYmplY3RTdG9yZSgnZm9vJyk7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5kZWxldGUoZGF0YS5rZXkpOyIpOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZGVsZXRlU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVsZXRlU3VjY2VzcygpCit7
CisgICAgZGVidWcoImRlbGV0ZVN1Y2Nlc3MoKToiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30K
KwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL29wZW4tZGF0YWJhc2Ut
bnVsbC1uYW1lLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNv
dXJjZXMvb3Blbi1kYXRhYmFzZS1udWxsLW5hbWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDhkMGMzMzJjN2Y4
NzFiOTZlNTI2MDM1ODBlMmRhMzgzNGExZTBlMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL29wZW4tZGF0YWJhc2UtbnVs
bC1uYW1lLmpzCkBAIC0wLDAgKzEsMzEgQEAKKy8vIG9yaWdpbmFsIHRlc3Q6CisvLyBodHRwOi8v
bXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0
X29wZW5fZW1wdHlfZGIuaHRtbD9mb3JjZT0xCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6
CisvLyAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
Ly8gICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIK
KworaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0
cygnLi4vLi4vcmVzb3VyY2VzL3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJ
bmRleGVkREI6IHNob3VsZCBOT1QgdGhyb3cgd2hlbiBvcGVuaW5nIGEgZGF0YWJhc2Ugd2l0aCBh
IG51bGwgbmFtZSIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVm
aXhlcygpOworCisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG51bGwpOyIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9
IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlKCJk
Yi5uYW1lIiwgIidudWxsJyIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvcHV0LWdldC12YWx1ZXMuanMgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9wdXQtZ2V0LXZhbHVlcy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kODRjOGU2MDEyNzY3MDMyNzc1MzUyZTBhM2U2ODYzY2QzNWNkYTIwCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9y
ZXNvdXJjZXMvcHV0LWdldC12YWx1ZXMuanMKQEAgLTAsMCArMSwxMDggQEAKKy8vIG9yaWdpbmFs
IHRlc3Q6CisvLyBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9p
bmRleGVkREIvdGVzdC90ZXN0X3B1dF9nZXRfdmFsdWVzLmh0bWwKKy8vIGxpY2Vuc2Ugb2Ygb3Jp
Z2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0
cygnLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBp
bXBvcnRTY3JpcHRzKCcuLi8uLi9yZXNvdXJjZXMvc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0
aW9uKCJUZXN0IEluZGV4ZWREQidzIHB1dHRpbmcgYW5kIGdldHRpbmcgdmFsdWVzIGluIGFuIG9i
amVjdCBzdG9yZSIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVm
aXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3Jp
cHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImlu
ZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRM
b2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBjbGVhbkRhdGFiYXNlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKK3sKKyAgICBkZWxldGVBbGxP
YmplY3RTdG9yZXMoZGIpOworCisgICAgdGVzdFN0cmluZyA9IGV2YWxBbmRMb2coInRlc3RTdHJp
bmcgPSB7IGtleTogMCwgdmFsdWU6ICd0ZXN0U3RyaW5nJyB9OyIpOworICAgIHRlc3RJbnQgPSBl
dmFsQW5kTG9nKCJ0ZXN0SW50ID0geyBrZXk6IDEsIHZhbHVlOiAxMDAyIH07Iik7CisgICAgb2Jq
ZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdPYmplY3RzJywgeyBhdXRvSW5jcmVtZW50OiBmYWxzZSB9KTsiKTsKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZCh0ZXN0U3RyaW5nLnZhbHVlLCB0
ZXN0U3RyaW5nLmtleSk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0QWRkOworfQorCitmdW5jdGlv
biBwb3N0QWRkKCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ0ZXN0
U3RyaW5nLmtleSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0
U3RvcmUuZ2V0KHRlc3RTdHJpbmcua2V5KTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RHZXQ7Cit9
CisKK2Z1bmN0aW9uIHBvc3RHZXQoKQoreworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVz
dWx0IiwgInRlc3RTdHJpbmcudmFsdWUiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVx
dWVzdCA9IG9iamVjdFN0b3JlLmFkZCh0ZXN0SW50LnZhbHVlLCB0ZXN0SW50LmtleSk7Iik7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBwb3N0QWRkSW50OworfQorCitmdW5jdGlvbiBwb3N0QWRkSW50KCkKK3sK
KyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ0ZXN0SW50LmtleSIpOworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KHRlc3RJbnQu
a2V5KTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RHZXRJbnQ7Cit9CisKK2Z1bmN0aW9uIHBvc3RH
ZXRJbnQoKQoreworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgInRlc3RJbnQu
dmFsdWUiKTsKKyAgICBvYmplY3RTdG9yZUF1dG9JbmNyZW1lbnQgPSBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZUF1dG9JbmNyZW1lbnQgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnQXV0b0luY3JlbWVu
dGVkIE9iamVjdHMnLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7CisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZUF1dG9JbmNyZW1lbnQuYWRkKHRlc3RT
dHJpbmcudmFsdWUpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdEFkZEF1dG9JbmNyZW1lbnQ7Cit9
CisKK2Z1bmN0aW9uIHBvc3RBZGRBdXRvSW5jcmVtZW50KCkKK3sKKyAgICB0ZXN0U3RyaW5nLmtl
eSA9IGV2YWxBbmRMb2coInRlc3RTdHJpbmcua2V5ID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlQXV0b0luY3Jl
bWVudC5nZXQodGVzdFN0cmluZy5rZXkpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdEdldEF1dG9J
bmNyZW1lbnQ7Cit9CisKK2Z1bmN0aW9uIHBvc3RHZXRBdXRvSW5jcmVtZW50KCkKK3sKKyAgICBz
aG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ0ZXN0U3RyaW5nLnZhbHVlIik7CisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZUF1dG9JbmNyZW1lbnQu
YWRkKHRlc3RJbnQudmFsdWUpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdEFkZEludEF1dG9JbmNy
ZW1lbnQ7Cit9CisKK2Z1bmN0aW9uIHBvc3RBZGRJbnRBdXRvSW5jcmVtZW50KCkKK3sKKyAgICB0
ZXN0SW50LmtleSA9IGV2YWxBbmRMb2coInRlc3RJbnQua2V5ID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dDsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlQXV0
b0luY3JlbWVudC5nZXQodGVzdEludC5rZXkpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdEdldElu
dEF1dG9JbmNyZW1lbnQ7Cit9CisKK2Z1bmN0aW9uIHBvc3RHZXRJbnRBdXRvSW5jcmVtZW50KCkK
K3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ0ZXN0SW50LnZhbHVlIik7
CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L3Jlc291cmNlcy9yZWFkb25seS10cmFuc2FjdGlvbnMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9yZWFkb25seS10cmFuc2FjdGlvbnMuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZTkyZWRlNzRiYzQ2MTJjMTkyOTA0ODRhYmI0ODA2NTA1MmQ0YjNmZAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3Vy
Y2VzL3JlYWRvbmx5LXRyYW5zYWN0aW9ucy5qcwpAQCAtMCwwICsxLDU4IEBACisvLyBvcmlnaW5h
bCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20v
aW5kZXhlZERCL3Rlc3QvdGVzdF9yZWFkb25seV90cmFuc2FjdGlvbnMuaHRtbAorLy8gbGljZW5z
ZSBvZiBvcmlnaW5hbCB0ZXN0OgorLy8gIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKy8vICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLyAiCisKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBv
cnRTY3JpcHRzKCcuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycp
OworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uL3Jlc291cmNlcy9zaGFyZWQuanMnKTsKK30KKwor
ZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgcmVhZG9ubHkgdHJhbnNhY3Rpb25zIik7CisK
K2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBu
YW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0
IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFt
ZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50
YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRi
LnNldFZlcnNpb24oJzEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFz
ZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKwor
ZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRi
KTsKKworICAgIG9zTmFtZSA9ICJ0ZXN0IHN0b3JlIjsKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxB
bmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUob3NOYW1lLCB7IGF1dG9J
bmNyZW1lbnQ6IHRydWUgfSk7Iik7CisgICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5vbmNvbXBsZXRl
ID0gc2V0VmVyc2lvbkNvbXBsZXRlOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uQ29tcGxldGUo
KQoreworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKFtvc05hbWVd
KS5vYmplY3RTdG9yZShvc05hbWUpLmFkZCh7fSk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlJF
QURfT05MWV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlv
bihvc05hbWUpLm9iamVjdFN0b3JlKG9zTmFtZSkuYWRkKHt9KTsiLCAiSURCRGF0YWJhc2VFeGNl
cHRpb24uUkVBRF9PTkxZX0VSUiIpOworICAgIGtleTEgPSBldmFsQW5kTG9nKCJrZXkxID0gMTsi
KTsKKyAgICBrZXkyID0gZXZhbEFuZExvZygia2V5MiA9IDI7Iik7CisgICAgZXZhbEFuZEV4cGVj
dEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oW29zTmFtZV0pLm9iamVjdFN0b3JlKG9zTmFtZSku
cHV0KHt9LCBrZXkxKTsiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUiIpOwor
ICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKG9zTmFtZSkub2JqZWN0
U3RvcmUob3NOYW1lKS5wdXQoe30sIGtleTIpOyIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5SRUFE
X09OTFlfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24o
W29zTmFtZV0pLm9iamVjdFN0b3JlKG9zTmFtZSkucHV0KHt9LCBrZXkxKTsiLCAiSURCRGF0YWJh
c2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24o
ImRiLnRyYW5zYWN0aW9uKG9zTmFtZSkub2JqZWN0U3RvcmUob3NOYW1lKS5wdXQoe30sIGtleTEp
OyIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5SRUFEX09OTFlfRVJSIik7CisgICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oW29zTmFtZV0pLm9iamVjdFN0b3JlKG9zTmFt
ZSkuZGVsZXRlKGtleTEpOyIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5SRUFEX09OTFlfRVJSIik7
CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24ob3NOYW1lKS5vYmpl
Y3RTdG9yZShvc05hbWUpLmRlbGV0ZShrZXkyKTsiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uUkVB
RF9PTkxZX0VSUiIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvcmVhZHdyaXRlLXRyYW5zYWN0aW9ucy5qcyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL3JlYWR3cml0ZS10cmFu
c2FjdGlvbnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDIwOTc0NmEzOWNmYjQwZjY2ZjYxNzJhMDVmYTFjOGRi
NTZiNDQ5MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vemlsbGEvcmVzb3VyY2VzL3JlYWR3cml0ZS10cmFuc2FjdGlvbnMuanMKQEAgLTAsMCArMSwx
MTQgQEAKKy8vIG9yaWdpbmFsIHRlc3Q6CisvLyBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemls
bGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X3JlYWRvbmx5X3RyYW5zYWN0aW9u
cy5odG1sCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisvLyAiIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorLy8gICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKworaWYgKHRoaXMuaW1wb3J0U2Ny
aXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vcmVzb3VyY2VzL3No
YXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyByZWFkL3dyaXRl
IHRyYW5zYWN0aW9ucyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQ
cmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVz
Y3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxB
bmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGNsZWFuRGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRlbGV0
ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBvc05hbWUgPSAidGVzdCBzdG9yZSI7CisgICAg
b2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0
b3JlKG9zTmFtZSwgeyBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOyIpOworICAgIGV2ZW50LnRhcmdl
dC5yZXN1bHQub25jb21wbGV0ZSA9IHNldFZlcnNpb25Db21wbGV0ZTsKK30KKworZnVuY3Rpb24g
c2V0VmVyc2lvbkNvbXBsZXRlKCkKK3sKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IGRiLnRyYW5zYWN0aW9uKFtvc05hbWVdLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKS5v
YmplY3RTdG9yZShvc05hbWUpLmFkZCh7fSk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBw
b3N0QWRkOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBwb3N0QWRkKCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRy
YW5zYWN0aW9uLm1vZGUiLCAiSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSIpOworICAgIGtleTEg
PSBldmFsQW5kTG9nKCJrZXkxID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnRyYW5zYWN0aW9uKG9zTmFtZSwgSURCVHJhbnNh
Y3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3RvcmUob3NOYW1lKS5hZGQoe30pOyIpOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gcG9zdEFkZDI7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHBvc3RBZGQyKCkKK3sKKyAgICBzaG91
bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm1vZGUiLCAiSURCVHJhbnNhY3Rpb24uUkVB
RF9XUklURSIpOworICAgIGtleTIgPSBldmFsQW5kTG9nKCJrZXkyID0gZXZlbnQudGFyZ2V0LnJl
c3VsdDsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnRyYW5zYWN0
aW9uKFtvc05hbWVdLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKS5vYmplY3RTdG9yZShvc05h
bWUpLnB1dCh7fSwga2V5MSk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0UHV0Owor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiBwb3N0UHV0KCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9u
Lm1vZGUiLCAiSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSIpOworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gZGIudHJhbnNhY3Rpb24ob3NOYW1lLCBJREJUcmFuc2FjdGlvbi5S
RUFEX1dSSVRFKS5vYmplY3RTdG9yZShvc05hbWUpLnB1dCh7fSwga2V5Mik7Iik7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBwb3N0UHV0MjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gcG9zdFB1dDIoKQoreworICAgIHNob3Vs
ZEJlKCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24ubW9kZSIsICJJREJUcmFuc2FjdGlvbi5SRUFE
X1dSSVRFIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi50cmFuc2Fj
dGlvbihbb3NOYW1lXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3RvcmUob3NO
YW1lKS5wdXQoe30sIGtleTEpOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdFB1dDM7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIHBvc3RQdXQzKCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0
aW9uLm1vZGUiLCAiSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSIpOworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIudHJhbnNhY3Rpb24ob3NOYW1lLCBJREJUcmFuc2FjdGlv
bi5SRUFEX1dSSVRFKS5vYmplY3RTdG9yZShvc05hbWUpLnB1dCh7fSwga2V5MSk7Iik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0UHV0NDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gcG9zdFB1dDQoKQoreworICAgIHNo
b3VsZEJlKCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24ubW9kZSIsICJJREJUcmFuc2FjdGlvbi5S
RUFEX1dSSVRFIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi50cmFu
c2FjdGlvbihbb3NOYW1lXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3RvcmUo
b3NOYW1lKS5kZWxldGUoa2V5MSk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0RGVs
ZXRlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBwb3N0RGVsZXRlKCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRy
YW5zYWN0aW9uLm1vZGUiLCAiSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSIpOworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIudHJhbnNhY3Rpb24ob3NOYW1lLCBJREJUcmFu
c2FjdGlvbi5SRUFEX1dSSVRFKS5vYmplY3RTdG9yZShvc05hbWUpLmRlbGV0ZShrZXkyKTsiKTsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3REZWxldGUyOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBwb3N0RGVsZXRlMigp
Cit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2RlIiwgIklEQlRy
YW5zYWN0aW9uLlJFQURfV1JJVEUiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgp
OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL3JlYWR5U3RhdGUuanMgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9yZWFkeVN0YXRlLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjI1ZGZjZTNlMmZhMjZlY2RkYmU0YmFiYTBmYWYwNWRiNmUxMGNkYjcKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291
cmNlcy9yZWFkeVN0YXRlLmpzCkBAIC0wLDAgKzEsNzAgQEAKKy8vIG9yaWdpbmFsIHRlc3Q6Cisv
LyBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIv
dGVzdC90ZXN0X3JlcXVlc3RfcmVhZHlTdGF0ZS5odG1sP2ZvcmNlPTEKKy8vIGxpY2Vuc2Ugb2Yg
b3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2Ny
aXB0cygnLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAg
ICBpbXBvcnRTY3JpcHRzKCcuLi8uLi9yZXNvdXJjZXMvc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2Ny
aXB0aW9uKCJUZXN0IEluZGV4ZWREQiByZWFkeVN0YXRlIHByb3BlcnR5IGR1cmluZyBkaWZmZXJl
bnQgb3BlcmF0aW9ucyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQ
cmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVz
Y3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHNob3VsZEJlKCJyZXF1
ZXN0LnJlYWR5U3RhdGUiLCAiSURCUmVxdWVzdC5MT0FESU5HIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJv
cGVuU3VjY2VzcygpOiIpOworICAgIHNob3VsZEJlKCJyZXF1ZXN0LnJlYWR5U3RhdGUiLCAiSURC
UmVxdWVzdC5ET05FIik7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNp
b24oJzEnKSIpOworICAgIHNob3VsZEJlKCJyZXF1ZXN0LnJlYWR5U3RhdGUiLCAiSURCUmVxdWVz
dC5MT0FESU5HIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXR1cE9iamVjdFN0b3JlOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiBzZXR1cE9iamVjdFN0b3JlKCkKK3sKKyAgICBkZWJ1Zygic2V0dXBPYmplY3RTdG9yZSgp
OiIpOworICAgIHNob3VsZEJlKCJyZXF1ZXN0LnJlYWR5U3RhdGUiLCAiSURCUmVxdWVzdC5ET05F
Iik7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0g
ZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJyk7Iik7
CisgICAga2V5ID0gZXZhbEFuZExvZygia2V5ID0gMTA7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoe30sIGtleSk7Iik7CisgICAgc2hvdWxk
QmUoInJlcXVlc3QucmVhZHlTdGF0ZSIsICJJREJSZXF1ZXN0LkxPQURJTkciKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGdldFJlY29yZDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZ2V0UmVjb3JkKCkKK3sKKyAgICBkZWJ1
ZygiZ2V0UmVjb3JkKCk6Iik7CisgICAgc2hvdWxkQmUoInJlcXVlc3QucmVhZHlTdGF0ZSIsICJJ
REJSZXF1ZXN0LkRPTkUiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJr
ZXkiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmdl
dChrZXkpOyIpOworICAgIHNob3VsZEJlKCJyZXF1ZXN0LnJlYWR5U3RhdGUiLCAiSURCUmVxdWVz
dC5MT0FESU5HIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmaW5hbENoZWNrOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBm
aW5hbENoZWNrKCkKK3sKKyAgICBkZWJ1ZygiZmluYWxDaGVjaygpOiIpOworICAgIHNob3VsZEJl
KCJyZXF1ZXN0LnJlYWR5U3RhdGUiLCAiSURCUmVxdWVzdC5ET05FIik7CisgICAgc2hvdWxkQmVG
YWxzZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBudWxsIik7CisgICAgZmluaXNoSlNUZXN0KCk7
Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9yZW1vdmUtaW5k
ZXguanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9y
ZW1vdmUtaW5kZXguanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWRjYzg0ODRhYjI5NmExYmI5NGY1YTliOWY2ZTRm
NzA1NzUxMjZlZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvcmVzb3VyY2VzL3JlbW92ZS1pbmRleC5qcwpAQCAtMCwwICsxLDU1IEBACisv
LyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3Nv
dXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9yZW1vdmVfaW5kZXguaHRtbAorLy8gbGljZW5z
ZSBvZiBvcmlnaW5hbCB0ZXN0OgorLy8gIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKy8vICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLyAiCisKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBv
cnRTY3JpcHRzKCcuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycp
OworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uL3Jlc291cmNlcy9zaGFyZWQuanMnKTsKK30KKwor
ZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgY3JlYXRpbmcgYW5kIGRlbGV0aW5nIGluZGV4
ZXMiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsK
KworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0g
Ik15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
b3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5T
dWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9
IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVh
dGVBbmREZWxldGVJbmRleDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gY3JlYXRlQW5kRGVsZXRlSW5kZXgoKQoreworICAgIGRl
bGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBvYmplY3RTdG9yZU5hbWUgPSAidGVzdCBz
dG9yZSI7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNy
ZWF0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSwgeyBrZXlQYXRoOiAnZm9vJyB9KTsiKTsK
KyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMSIpOworICAgIHNo
b3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLml0ZW0oMCkiLCAib2JqZWN0U3RvcmVOYW1lIik7
CisgICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLmluZGV4TmFtZXMubGVuZ3RoIiwgIjAiKTsKKwor
ICAgIGluZGV4TmFtZSA9ICJNeSBUZXN0IEluZGV4IjsKKyAgICBpbmRleCA9IGV2YWxBbmRMb2co
ImluZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoaW5kZXhOYW1lLCAnZm9vJyk7Iik7Cisg
ICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLmluZGV4TmFtZXMubGVuZ3RoIiwgIjEiKTsKKyAgICBz
aG91bGRCZSgib2JqZWN0U3RvcmUuaW5kZXhOYW1lcy5pdGVtKDApIiwgImluZGV4TmFtZSIpOwor
CisgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuZGVsZXRlSW5kZXgoaW5kZXhOYW1lKTsiKTsK
KyAgICBzaG91bGRCZSgib2JqZWN0U3RvcmUuaW5kZXhOYW1lcy5sZW5ndGgiLCAiMCIpOworCisg
ICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jl
c291cmNlcy9yZW1vdmUtb2JqZWN0c3RvcmUuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9yZW1vdmUtb2JqZWN0c3RvcmUuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Nzc3MGUwOGRkZThkZGNmZDgyZjBlMjQyZTJjMWZlYzUwMWQ1YzNhZAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL3JlbW92
ZS1vYmplY3RzdG9yZS5qcwpAQCAtMCwwICsxLDEwOSBAQAorLy8gb3JpZ2luYWwgdGVzdDoKKy8v
IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90
ZXN0L3Rlc3RfcmVtb3ZlX29iamVjdFN0b3JlLmh0bWw/Zm9yY2U9MQorLy8gbGljZW5zZSBvZiBv
cmlnaW5hbCB0ZXN0OgorLy8gIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKy8vICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLyAiCisKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3Jp
cHRzKCcuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAg
IGltcG9ydFNjcmlwdHMoJy4uLy4uL3Jlc291cmNlcy9zaGFyZWQuanMnKTsKK30KKworZGVzY3Jp
cHRpb24oIlRlc3QgSW5kZXhlZERCIGRlbGV0aW5nIGFuIG9iamVjdCBzdG9yZSIpOworCitmdW5j
dGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9
IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRh
YmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRl
c2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOworICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIw
Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24o
JzEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RT
dG9yZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30K
KworZnVuY3Rpb24gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSgpCit7CisgICAgZGVsZXRl
QWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlTmFtZSA9IGV2YWxBbmRMb2co
Im9iamVjdFN0b3JlTmFtZSA9ICdPYmplY3RzJzsiKTsKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxB
bmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1l
LCB7IGtleVBhdGg6ICdmb28nIH0pOyIpOworCisgICAgYWRkZWRDb3VudCA9IGV2YWxBbmRMb2co
ImFkZGVkQ291bnQgPSAwOyIpOworICAgIGZvciAoaSA9IDA7IGkgPCAxMDA7IGkrKykgeworICAg
ICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZCh7Zm9v
OiBpfSk7Iik7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAg
ICAgICAgICBpZiAoKythZGRlZENvdW50ID09IDEwMCkgeworICAgICAgICAgICAgICAgIGNoZWNr
T2JqZWN0U3RvcmUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworZnVu
Y3Rpb24gY2hlY2tPYmplY3RTdG9yZSgpCit7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3Jl
TmFtZXMubGVuZ3RoIiwgIjEiKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5p
dGVtKDApIiwgIm9iamVjdFN0b3JlTmFtZSIpOworCisgICAgcmVxdWVzdCA9IGRiLnNldFZlcnNp
b24oJzInKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RTZXRWZXJzaW9uMjsKK30KKworZnVuY3Rpb24g
cG9zdFNldFZlcnNpb24yKCkKK3sKKyAgICBldmFsQW5kTG9nKCJkYi5kZWxldGVPYmplY3RTdG9y
ZShvYmplY3RTdG9yZS5uYW1lKTsiKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1l
cy5sZW5ndGgiLCAiMCIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSwgeyBrZXlQYXRoOiAn
Zm9vJyB9KTsiKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAi
MSIpOworICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLml0ZW0oMCkiLCAib2JqZWN0
U3RvcmVOYW1lIik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVj
dFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7
CisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIm51bGwiKTsKKyAgICAg
ICAgZGVsZXRlU2Vjb25kT2JqZWN0U3RvcmUoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGRlbGV0
ZVNlY29uZE9iamVjdFN0b3JlKCkKK3sKKyAgICBldmFsQW5kTG9nKCJkYi5kZWxldGVPYmplY3RT
dG9yZShvYmplY3RTdG9yZS5uYW1lKTsiKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVO
YW1lcy5sZW5ndGgiLCAiMCIpOworICAgIHNldFZlcnNpb24zKCk7Cit9CisKK2Z1bmN0aW9uIHNl
dFZlcnNpb24zKCkKK3sKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNl
dFZlcnNpb24oJzMnKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RTZXRWZXJzaW9uMzsKK30KKwor
ZnVuY3Rpb24gcG9zdFNldFZlcnNpb24zKCkKK3sKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRM
b2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lLCB7
IGtleVBhdGg6ICdmb28nIH0pOyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gb2JqZWN0U3RvcmUuYWRkKHtmb286J2Jhcid9KTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0
ZVRoaXJkT2JqZWN0U3RvcmU7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZVRoaXJkT2JqZWN0U3RvcmUo
KQoreworICAgIGV2YWxBbmRMb2coImRiLmRlbGV0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFt
ZSk7Iik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL3Jlc291cmNlcy92ZXJzaW9uY2hhbmdlLWFib3J0LmpzIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvdmVyc2lvbmNoYW5nZS1hYm9ydC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40M2VhMmNjMDcxOGZmNWNkZTBmOWQwZTgyMWZjMTlmYmFlMjY0ZmM4Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNv
dXJjZXMvdmVyc2lvbmNoYW5nZS1hYm9ydC5qcwpAQCAtMCwwICsxLDU3IEBACisvLyBvcmlnaW5h
bCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20v
aW5kZXhlZERCL3Rlc3QvdGVzdF9zZXRWZXJzaW9uX2Fib3J0Lmh0bWwKKy8vIGxpY2Vuc2Ugb2Yg
b3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2Ny
aXB0cygnLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAg
ICBpbXBvcnRTY3JpcHRzKCcuLi8uLi9yZXNvdXJjZXMvc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2Ny
aXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGFib3J0aW5nIHNldFZlcnNpb24iKTsKKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBz
ZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJh
c2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNj
cmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBv
cGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKKyAgICBpbml0aWFsVmVyc2lvbiA9IGV2YWxBbmRMb2coImluaXRpYWxWZXJzaW9u
ID0gZGIudmVyc2lvbjsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRi
LnNldFZlcnNpb24oJzInKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFz
ZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKwor
ZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRi
KTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVh
dGVPYmplY3RTdG9yZSgnZm9vJyk7Iik7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFt
ZXMubGVuZ3RoIiwgIjEiKTsKKworICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBvYmpl
Y3RTdG9yZS5jcmVhdGVJbmRleCgnYmFyJywgJ2JheicpOyIpOworICAgIHNob3VsZEJlKCJvYmpl
Y3RTdG9yZS5pbmRleE5hbWVzLmxlbmd0aCIsICIxIik7CisKKyAgICBldmVudC50YXJnZXQudHJh
bnNhY3Rpb24ub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7CisgICAgZXZl
bnQudGFyZ2V0LnRyYW5zYWN0aW9uLm9uYWJvcnQgPSBwb3N0QWJvcnQ7CisgICAgZXZhbEFuZExv
ZygiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLmFib3J0KCk7Iik7Cit9CisKK2Z1bmN0aW9uIHBv
c3RBYm9ydCgpCit7CisgICAgc2hvdWxkQmUoImRiLnZlcnNpb24iLCAiaW5pdGlhbFZlcnNpb24i
KTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMCIpOworCisg
ICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jl
c291cmNlcy92ZXJzaW9uY2hhbmdlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW96aWxsYS9yZXNvdXJjZXMvdmVyc2lvbmNoYW5nZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jM2I1YzI2MTE2
ZDJiZGY2NzUxNTE0Mzc5MGM1ZGE3N2YyYTYwODFhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvdmVyc2lvbmNoYW5nZS5q
cwpAQCAtMCwwICsxLDEwMSBAQAorLy8gb3JpZ2luYWwgdGVzdDoKKy8vIGh0dHA6Ly9teHIubW96
aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3Rfc2V0VmVy
c2lvbl9ldmVudHMuaHRtbAorLy8gbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorLy8gIiBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKy8vICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCisKK2lmICh0aGlz
LmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uL3Jl
c291cmNlcy9zaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mg
dHJpZ2dlcmluZyB2ZXJzaW9uY2hhbmdlIGV2ZW50Iik7CisKK2Z1bmN0aW9uIHRlc3QoKQorewor
ICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5w
YXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQor
eworICAgIGRiMSA9IGV2YWxBbmRMb2coImRiMSA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAg
ICB2ZXJzaW9uQ2hhbmdlRXZlbnRDb3VudCA9IGV2YWxBbmRMb2coInZlcnNpb25DaGFuZ2VFdmVu
dENvdW50ID0gMDsiKTsKKyAgICBkZWJ1ZygiZGIxIHdpbGwgYmUgb3BlbiB3aGVuIHdlIGNhbGwg
ZGIyLnNldFZlcnNpb24sIHdoaWNoIHdpbGwgdHJpZ2dlciB2ZXJzaW9uY2hhbmdlIG9uIGRiMSIp
OworICAgIGRiMS5vbnZlcnNpb25jaGFuZ2UgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBz
aG91bGRCZSgiZXZlbnQudGFyZ2V0IiwgImRiMSIpOworICAgICAgICBzaG91bGRCZSgiZXZlbnQu
dmVyc2lvbiIsICInMSciKTsKKyAgICAgICAgdmVyc2lvbkNoYW5nZUV2ZW50Q291bnQrKzsKKyAg
ICAgICAgc2hvdWxkQmUoInZlcnNpb25DaGFuZ2VFdmVudENvdW50IiwgIjEiKTsKKyAgICAgICAg
ZGVidWcoImNsb3NlIGRiMSBub3cgc28gdmVyc2lvbmNoYW5nZSBkb2Vzbid0IHRyaWdnZXIgb24g
ZGIxIGFnYWluIHdoZW4gd2UgY2FsbCBkYjMuc2V0VmVyc2lvbiIpOworICAgICAgICBldmFsQW5k
TG9nKCJkYjEuY2xvc2UoKTsiKTsKKyAgICB9OworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5T
dWNjZXNzMjsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MyKCkKK3sKKyAgICBkYjIgPSBldmFs
QW5kTG9nKCJkYjIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgZGVidWcoImRiMiB3aWxs
IGJlIG9wZW4gd2hlbiB3ZSBjYWxsIGRiMy5zZXRWZXJzaW9uLCB3aGljaCB3aWxsIHRyaWdnZXIg
dmVyc2lvbmNoYW5nZSBvbiBkYjIiKTsKKyAgICBkYjIub252ZXJzaW9uY2hhbmdlID0gZnVuY3Rp
b24oZXZlbnQpIHsKKyAgICAgICAgdCA9IGV2ZW50LnRhcmdldDsKKyAgICAgICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldCIsICJkYjIiKTsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC52
ZXJzaW9uIiwgIicxJyIpOworICAgICAgICBzaG91bGRCZSgiZXZlbnQudmVyc2lvbiIsICInMici
KTsKKyAgICAgICAgdmVyc2lvbkNoYW5nZUV2ZW50Q291bnQrKzsKKyAgICAgICAgc2hvdWxkQmUo
InZlcnNpb25DaGFuZ2VFdmVudENvdW50IiwgIjIiKTsKKyAgICAgICAgZGVidWcoImRvbid0IGNs
b3NlIGRiMiwgc28gaXQgd2lsbCBibG9jayBkYjMuc2V0VmVyc2lvbiIpOworICAgIH0KKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiMi5zZXRWZXJzaW9uKCcxJykiKTsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IHBvc3RTZXRWZXJzaW9uOworICAgIHJlcXVlc3Qub25ibG9ja2VkID0gZnVu
Y3Rpb24oZXZlbnQpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiZGIyIHJlY2VpdmVkIGJsb2NrZWQg
ZXZlbnQiKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHBvc3RTZXRWZXJzaW9uKCkKK3sKKyAgICBz
aG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJldmVudC50YXJnZXQudHJhbnNhY3Rpb24i
KTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm1vZGUiLCAiSURCVHJh
bnNhY3Rpb24uVkVSU0lPTl9DSEFOR0UiKTsKKyAgICBzaG91bGRCZSgiZGIyLnZlcnNpb24iLCAi
JzEnIik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5v
cGVuKG5hbWUsIGRlc2NyaXB0aW9uKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzMzsK
K30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MzKCkKK3sKKyAgICBkYjMgPSBldmFsQW5kTG9nKCJk
YjMgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gZGIzLnNldFZlcnNpb24oJzInKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBkZWJ1ZygidGhpcyByZXF1ZXN0IHdpbGwgYmxv
Y2sgYmVjYXVzZSBkYjIgaXMgc3RpbGwgb3BlbiIpOworICAgIHJlcXVlc3Qub25ibG9ja2VkID0g
ZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5zb3VyY2Ui
LCAiZGIzIik7CisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuc291cmNlLnZlcnNpb24i
LCAiJzEnIik7CisgICAgICAgIHNob3VsZEJlKCJldmVudC52ZXJzaW9uIiwgIicyJyIpOworICAg
ICAgICB2ZXJzaW9uQ2hhbmdlRXZlbnRDb3VudCsrOworICAgICAgICBkZWJ1ZygiY2xvc2UgZGIy
IG5vdyBzbyBvbnN1Y2Nlc3Mgd2lsbCBiZSBjYWxsZWQiKTsKKyAgICAgICAgZXZhbEFuZExvZygi
ZGIyLmNsb3NlKCk7Iik7CisgICAgfQorICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdFNldFZl
cnNpb24yOworfQorCitmdW5jdGlvbiBwb3N0U2V0VmVyc2lvbjIoKQoreworICAgIHNob3VsZEJl
KCJldmVudC50YXJnZXQucmVzdWx0IiwgImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbiIpOworICAg
IHNob3VsZEJlKCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24ubW9kZSIsICJJREJUcmFuc2FjdGlv
bi5WRVJTSU9OX0NIQU5HRSIpOworICAgIHNob3VsZEJlKCJkYjMudmVyc2lvbiIsICInMiciKTsK
KyAgICBzaG91bGRCZSgidmVyc2lvbkNoYW5nZUV2ZW50Q291bnQiLCAiMyIpOworICAgIGZpbmlz
aEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS92ZXJzaW9uY2hh
bmdlLWFib3J0Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Zl
cnNpb25jaGFuZ2UtYWJvcnQuaHRtbAppbmRleCA3MmRlZGM4ZTRkN2Y0YjAxYmUzOTBjOGY0MGE2
Y2ZiNWFhNTNlYjMyLi44MWZjYTczZWNlZWQ3MGNjYjY3YjQ2Y2ZjYTQzZmM1MjRlYzBmMWVlIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3ZlcnNpb25j
aGFuZ2UtYWJvcnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL3ZlcnNpb25jaGFuZ2UtYWJvcnQuaHRtbApAQCAtMSw2NyArMSwxMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96
aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3Rfc2V0VmVyc2lvbl9hYm9ydC5o
dG1sCi0gIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgotICAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+CiA8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0Pgog
PC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIn
cyBhYm9ydGluZyBzZXRWZXJzaW9uIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92
ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsK
LSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRi
ID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgaW5pdGlhbFZl
cnNpb24gPSBldmFsQW5kTG9nKCJpbml0aWFsVmVyc2lvbiA9IGRiLnZlcnNpb247Iik7Ci0gICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcyJykiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFuRGF0YWJhc2Uo
KQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBvYmplY3RTdG9yZSA9
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycpOyIp
OwotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIxIik7Ci0KLSAg
ICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ2Jh
cicsICdiYXonKTsiKTsKLSAgICBzaG91bGRCZSgib2JqZWN0U3RvcmUuaW5kZXhOYW1lcy5sZW5n
dGgiLCAiMSIpOwotCi0gICAgZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB1
bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOwotICAgIGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5v
bmFib3J0ID0gcG9zdEFib3J0OwotICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC50cmFuc2Fj
dGlvbi5hYm9ydCgpOyIpOwotfQotCi1mdW5jdGlvbiBwb3N0QWJvcnQoKQotewotICAgIHNob3Vs
ZEJlKCJkYi52ZXJzaW9uIiwgImluaXRpYWxWZXJzaW9uIik7Ci0gICAgc2hvdWxkQmUoImRiLm9i
amVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjAiKTsKLQotICAgIGZpbmlzaEpTVGVzdCgpOwotfQot
Ci10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy92ZXJzaW9uY2hh
bmdlLWFib3J0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgotCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3ZlcnNpb25j
aGFuZ2UuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvdmVyc2lv
bmNoYW5nZS5odG1sCmluZGV4IGYwNThmZDVkYjEzMGJlOTE1ZWQ4Yzg4MTYzZjU4NzcxMjcxODlh
YTguLjJmZmY2YjFhMmYyNzMyZWYzNTM0NDA4NjNlZGU2ODkwNmQ2M2U2MWUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvdmVyc2lvbmNoYW5nZS5odG1s
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvdmVyc2lvbmNoYW5n
ZS5odG1sCkBAIC0xLDExMiArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9yaWdp
bmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2lu
ZGV4ZWREQi90ZXN0L3Rlc3Rfc2V0VmVyc2lvbl9ldmVudHMuaHRtbAotICBsaWNlbnNlIG9mIG9y
aWdpbmFsIHRlc3Q6Ci0gICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KLSAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8gIgotLS0+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNj
cmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgdHJpZ2dlcmluZyB2ZXJzaW9u
Y2hhbmdlIGV2ZW50Iik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclBy
ZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNj
cmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
aW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRiMSA9IGV2YWxB
bmRMb2coImRiMSA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICB2ZXJzaW9uQ2hhbmdlRXZl
bnRDb3VudCA9IGV2YWxBbmRMb2coInZlcnNpb25DaGFuZ2VFdmVudENvdW50ID0gMDsiKTsKLSAg
ICBkZWJ1ZygiZGIxIHdpbGwgYmUgb3BlbiB3aGVuIHdlIGNhbGwgZGIyLnNldFZlcnNpb24sIHdo
aWNoIHdpbGwgdHJpZ2dlciB2ZXJzaW9uY2hhbmdlIG9uIGRiMSIpOwotICAgIGRiMS5vbnZlcnNp
b25jaGFuZ2UgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFy
Z2V0IiwgImRiMSIpOwotICAgICAgICBzaG91bGRCZSgiZXZlbnQudmVyc2lvbiIsICInMSciKTsK
LSAgICAgICAgdmVyc2lvbkNoYW5nZUV2ZW50Q291bnQrKzsKLSAgICAgICAgc2hvdWxkQmUoInZl
cnNpb25DaGFuZ2VFdmVudENvdW50IiwgIjEiKTsKLSAgICAgICAgZGVidWcoImNsb3NlIGRiMSBu
b3cgc28gdmVyc2lvbmNoYW5nZSBkb2Vzbid0IHRyaWdnZXIgb24gZGIxIGFnYWluIHdoZW4gd2Ug
Y2FsbCBkYjMuc2V0VmVyc2lvbiIpOwotICAgICAgICBldmFsQW5kTG9nKCJkYjEuY2xvc2UoKTsi
KTsKLSAgICB9OwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1l
LCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzMjsKLX0KLQotZnVu
Y3Rpb24gb3BlblN1Y2Nlc3MyKCkKLXsKLSAgICBkYjIgPSBldmFsQW5kTG9nKCJkYjIgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7Ci0gICAgZGVidWcoImRiMiB3aWxsIGJlIG9wZW4gd2hlbiB3ZSBj
YWxsIGRiMy5zZXRWZXJzaW9uLCB3aGljaCB3aWxsIHRyaWdnZXIgdmVyc2lvbmNoYW5nZSBvbiBk
YjIiKTsKLSAgICBkYjIub252ZXJzaW9uY2hhbmdlID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAg
ICAgdCA9IGV2ZW50LnRhcmdldDsKLSAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldCIsICJk
YjIiKTsKLSAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC52ZXJzaW9uIiwgIicxJyIpOwot
ICAgICAgICBzaG91bGRCZSgiZXZlbnQudmVyc2lvbiIsICInMiciKTsKLSAgICAgICAgdmVyc2lv
bkNoYW5nZUV2ZW50Q291bnQrKzsKLSAgICAgICAgc2hvdWxkQmUoInZlcnNpb25DaGFuZ2VFdmVu
dENvdW50IiwgIjIiKTsKLSAgICAgICAgZGVidWcoImRvbid0IGNsb3NlIGRiMiwgc28gaXQgd2ls
bCBibG9jayBkYjMuc2V0VmVyc2lvbiIpOwotICAgIH0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygicmVxdWVzdCA9IGRiMi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RT
ZXRWZXJzaW9uOwotICAgIHJlcXVlc3Qub25ibG9ja2VkID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAg
ICAgICAgdGVzdFBhc3NlZCgiZGIyIHJlY2VpdmVkIGJsb2NrZWQgZXZlbnQiKTsKLSAgICB9Ci19
Ci0KLWZ1bmN0aW9uIHBvc3RTZXRWZXJzaW9uKCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFy
Z2V0LnJlc3VsdCIsICJldmVudC50YXJnZXQudHJhbnNhY3Rpb24iKTsKLSAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm1vZGUiLCAiSURCVHJhbnNhY3Rpb24uVkVSU0lPTl9D
SEFOR0UiKTsKLSAgICBzaG91bGRCZSgiZGIyLnZlcnNpb24iLCAiJzEnIik7Ci0KLSAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0
aW9uKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzMzsKLX0KLQotZnVuY3Rpb24gb3Bl
blN1Y2Nlc3MzKCkKLXsKLSAgICBkYjMgPSBldmFsQW5kTG9nKCJkYjMgPSBldmVudC50YXJnZXQu
cmVzdWx0OyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIzLnNldFZl
cnNpb24oJzInKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLSAgICBkZWJ1ZygidGhpcyByZXF1ZXN0IHdpbGwgYmxvY2sgYmVjYXVzZSBkYjIgaXMg
c3RpbGwgb3BlbiIpOwotICAgIHJlcXVlc3Qub25ibG9ja2VkID0gZnVuY3Rpb24oZXZlbnQpIHsK
LSAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5zb3VyY2UiLCAiZGIzIik7Ci0gICAgICAg
IHNob3VsZEJlKCJldmVudC50YXJnZXQuc291cmNlLnZlcnNpb24iLCAiJzEnIik7Ci0gICAgICAg
IHNob3VsZEJlKCJldmVudC52ZXJzaW9uIiwgIicyJyIpOwotICAgICAgICB2ZXJzaW9uQ2hhbmdl
RXZlbnRDb3VudCsrOwotICAgICAgICBkZWJ1ZygiY2xvc2UgZGIyIG5vdyBzbyBvbnN1Y2Nlc3Mg
d2lsbCBiZSBjYWxsZWQiKTsKLSAgICAgICAgZXZhbEFuZExvZygiZGIyLmNsb3NlKCk7Iik7Ci0g
ICAgfQotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdFNldFZlcnNpb24yOwotfQotCi1mdW5j
dGlvbiBwb3N0U2V0VmVyc2lvbjIoKQotewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVz
dWx0IiwgImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbiIpOwotICAgIHNob3VsZEJlKCJldmVudC50
YXJnZXQudHJhbnNhY3Rpb24ubW9kZSIsICJJREJUcmFuc2FjdGlvbi5WRVJTSU9OX0NIQU5HRSIp
OwotICAgIHNob3VsZEJlKCJkYjMudmVyc2lvbiIsICInMiciKTsKLSAgICBzaG91bGRCZSgidmVy
c2lvbkNoYW5nZUV2ZW50Q291bnQiLCAiMyIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0K
LXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3ZlcnNpb25jaGFu
Z2UuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL211dGF0aW5nLWN1cnNvci5odG1sIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbXV0YXRpbmctY3Vyc29yLmh0bWwKaW5kZXgg
MzRiMTliOWJiYTJiOGJkMzU3Y2NjZmI1ODg4N2U4MTkwMzU4MmY0Ny4uNDJlZjAzMGNlM2E1NDFj
NTJkMzVhNGY0ZGU0MDEyZTY2YjQwYWU3MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbXV0YXRpbmctY3Vyc29yLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbXV0YXRpbmctY3Vyc29yLmh0bWwKQEAgLTQsMTM4ICs0LDcgQEAKIDxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5Pgot
PHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgbXV0YXRpbmcgYW4gSW5kZXhlZERCJ3Mgb2Jq
ZWN0c3RvcmUgZnJvbSBhIGN1cnNvci4iKTsKLQotdGVzdCgpOwotCi1mdW5jdGlvbiB0ZXN0KCkK
LXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJpbmRleGVkREIub3BlbignbXV0YXRpbmctY3Vyc29yJykiKTsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgdmFyIGRiID0g
ZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBzZXRWZXJzaW9uU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQotewotICAgIGRl
YnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOwotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9n
KCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5z
ICE9PSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNr
OwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBvcGVuRm9yd2FyZEN1cnNvcjsKLQotICAgIGRlbGV0
ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICB2YXIgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7Ci0gICAgZXZh
bEFuZExvZygib2JqZWN0U3RvcmUuYWRkKDEsIDEpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgyLCAyKS5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKLSAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9y
ZS5hZGQoMywgMykub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7Ci0gICAgZXZh
bEFuZExvZygib2JqZWN0U3RvcmUuYWRkKDQsIDQpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjayIpOwotfQotCi1mdW5jdGlvbiBvcGVuRm9yd2FyZEN1cnNvcigpCi17Ci0gICAgZGVi
dWcoIm9wZW5Gb3J3YXJkQ3Vyc29yKCkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRy
YW5zYWN0aW9uKFsnc3RvcmUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICB0
cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21w
bGV0ZSA9IGZvcndhcmRDdXJzb3JDb21wbGV0ZTsKLQotICAgIHNlbGYub2JqZWN0U3RvcmUgPSBl
dmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOwotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCkiKTsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGZvcndhcmRDdXJzb3I7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci0gICAgc2VsZi5jdXJzb3JTdGVwcyA9IDA7Ci19Ci0KLWZ1bmN0aW9uIGZv
cndhcmRDdXJzb3IoKQotewotICAgIGRlYnVnKCJmb3J3YXJkQ3Vyc29yKCkiKTsKLSAgICBzZWxm
LmN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Ci0KLSAgICBpZiAoZXZlbnQudGFyZ2V0LnJl
c3VsdCA9PSBudWxsKSB7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJzb3JTdGVwcyIsICI1Iik7Ci0K
LSAgICAgICAgLy8gTGV0IHRoZSB0cmFuc2FjdGlvbiBmaW5pc2guCi0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBkZWJ1ZygrK2N1cnNvclN0ZXBzKTsKLSAgICBzaG91bGRCZSgiY3Vyc29y
LmtleSIsICJjdXJzb3JTdGVwcyIpOwotICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAiY3Vy
c29yU3RlcHMiKTsKLQotICAgIGlmIChjdXJzb3JTdGVwcyA9PSAxKSB7Ci0gICAgICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJldmVudC50YXJnZXQuc291cmNlLmFkZCg1LCA1KSIpOwotICAgICAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeyBldmFsQW5kTG9nKCJjdXJzb3IuY29u
dGludWUoKSIpOyB9Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51
ZSgpIik7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBmb3J3YXJkQ3Vyc29yQ29tcGxldGUoKQotewot
ICAgIGRlYnVnKCJmb3J3YXJkQ3Vyc29yQ29tcGxldGUoKSIpOwotICAgIG9wZW5SZXZlcnNlQ3Vy
c29yKCkKLX0KLQotZnVuY3Rpb24gb3BlblJldmVyc2VDdXJzb3IoKQotewotICAgIGRlYnVnKCJv
cGVuUmV2ZXJzZUN1cnNvcigpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2Fj
dGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgdHJhbnMu
b25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUg
PSByZXZlcnNlQ3Vyc29yQ29tcGxldGU7Ci0KLSAgICBzZWxmLm9iamVjdFN0b3JlID0gZXZhbEFu
ZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygib2JqZWN0U3RvcmUub3BlbkN1cnNvcihudWxsLCBJREJDdXJzb3IuUFJFVikiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHJldmVyc2VDdXJzb3I7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgc2VsZi5jdXJzb3JTdGVwcyA9IDY7Ci19
Ci0KLWZ1bmN0aW9uIHJldmVyc2VDdXJzb3IoKQotewotICAgIGRlYnVnKCJyZXZlcnNlQ3Vyc29y
KCkiKTsKLSAgICBzZWxmLmN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Ci0KLSAgICBpZiAo
ZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBudWxsKSB7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJzb3JT
dGVwcyIsICIwIik7Ci0KLSAgICAgICAgLy8gTGV0IHRoZSB0cmFuc2FjdGlvbiBmaW5pc2guCi0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBkZWJ1ZygtLWN1cnNvclN0ZXBzKTsKLSAgICBz
aG91bGRCZSgiY3Vyc29yLmtleSIsICJjdXJzb3JTdGVwcyIpOwotICAgIHNob3VsZEJlKCJjdXJz
b3IudmFsdWUiLCAiY3Vyc29yU3RlcHMiKTsKLQotICAgIGlmIChjdXJzb3JTdGVwcyA9PSAyKSB7
Ci0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJldmVudC50YXJnZXQuc291cmNlLmFkZCgw
LCAwKSIpOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeyBldmFsQW5k
TG9nKCJjdXJzb3IuY29udGludWUoKSIpOyB9Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGV2YWxBbmRMb2co
ImN1cnNvci5jb250aW51ZSgpIik7Ci0gICAgfQotfQotCi1mdW5jdGlvbiByZXZlcnNlQ3Vyc29y
Q29tcGxldGUoKQotewotICAgIGRlYnVnKCJyZXZlcnNlQ3Vyc29yQ29tcGxldGUoKSIpOwotICAg
IGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9tdXRhdGluZy1jdXJzb3IuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RTdG9yZS1y
ZXF1aXJlZC1hcmd1bWVudHMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29i
amVjdFN0b3JlLXJlcXVpcmVkLWFyZ3VtZW50cy5odG1sCmluZGV4IDZhMmY5ODFhYTJlMTFjNWY2
MmJjODFiMjdiYjg4NmE0ZWY1MGM3MDYuLjgxMWM0ZTAzOTNkYTFhNjE5ZDVkZGZiNTM0NTM1YWNk
ZDY2OGY4ZTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVj
dFN0b3JlLXJlcXVpcmVkLWFyZ3VtZW50cy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL29iamVjdFN0b3JlLXJlcXVpcmVkLWFyZ3VtZW50cy5odG1sCkBAIC0xLDU0ICsx
LDEwIEBACi08IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBz
cmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2Ny
aXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgb2JqZWN0IHN0b3JlIHJlcXVpcmVk
IGFyZ3VtZW50cyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVm
aXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3Jp
cHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImlu
ZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRM
b2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUFuZFBvcHVsYXRl
T2JqZWN0U3RvcmUoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBv
YmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ2ZvbycpOyIpOwotICAgIHNob3VsZFRocm93KCJvYmplY3RTdG9yZS5wdXQoKTsiKTsKLSAg
ICBzaG91bGRUaHJvdygib2JqZWN0U3RvcmUuYWRkKCk7Iik7Ci0gICAgc2hvdWxkVGhyb3coIm9i
amVjdFN0b3JlLmRlbGV0ZSgpOyIpOwotICAgIHNob3VsZFRocm93KCJvYmplY3RTdG9yZS5nZXQo
KTsiKTsKLSAgICBzaG91bGRUaHJvdygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoKTsiKTsKLSAg
ICBzaG91bGRUaHJvdygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ2ZvbycpOyIpOwotICAgIHNo
b3VsZFRocm93KCJvYmplY3RTdG9yZS5pbmRleCgpOyIpOwotICAgIHNob3VsZFRocm93KCJvYmpl
Y3RTdG9yZS5kZWxldGVJbmRleCgpOyIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRl
c3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL29iamVjdFN0b3JlLXJl
cXVpcmVkLWFyZ3VtZW50cy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWF1
dG9pbmNyZW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0
b3JlLWF1dG9pbmNyZW1lbnQuaHRtbAppbmRleCA0MDUxZmE0YTA5NzU1MjdjMzZlNzQ0ZjZhYTI2
ZWJiMDAzMzk4NDZlLi5kYmY2ODU5ZTU4MzYzNTZkZDFkYWFjM2JiN2EyYjJiMzA2MWMzNzgwIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1hdXRv
aW5jcmVtZW50Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0
c3RvcmUtYXV0b2luY3JlbWVudC5odG1sCkBAIC00LDIwMCArNCw3IEBACiA8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+
Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIElEQk9iamVjdFN0b3JlIGF1dG8taW5j
cmVtZW50IGZlYXR1cmUuIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRv
clByZWZpeGVzKCk7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdv
YmplY3RzdG9yZS1hdXRvaW5jcmVtZW50JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9w
ZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGVidWcoIm9wZW5TdWNjZXNz
KCk6Iik7Ci0gICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJz
aW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb25TdWNjZXNzOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlv
biBzZXRWZXJzaW9uU3VjY2VzcygpCi17Ci0gICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6
Iik7Ci0gICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKLSAgICB0cmFucy5v
bmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9
IHNldFZlcnNpb25Db21wbGV0ZWQ7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwot
Ci0gICAgZGVidWcoImNyZWF0ZU9iamVjdFN0b3JlKCk6Iik7Ci0gICAgc2VsZi5zdG9yZSA9IGV2
YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ1N0b3JlV2l0aEtleVBhdGgn
LCB7a2V5UGF0aDogJ2lkJywgYXV0b0luY3JlbWVudDogdHJ1ZX0pIik7Ci0gICAgZXZhbEFuZExv
ZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ1N0b3JlV2l0aEF1dG9JbmNyZW1lbnQnLCB7YXV0b0lu
Y3JlbWVudDogdHJ1ZX0pIik7Ci0gICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUo
J1BsYWluT2xkU3RvcmUnLCB7YXV0b0luY3JlbWVudDogZmFsc2V9KSIpOwotICAgIGV2YWxBbmRM
b2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdTdG9yZVdpdGhMb25nS2V5UGF0aCcsIHtrZXlQYXRo
OiAnYS5iLmMuaWQnLCBhdXRvSW5jcmVtZW50OiB0cnVlfSkiKTsKLSAgICB2YXIgc3RvcmVOYW1l
cyA9IGV2YWxBbmRMb2coInN0b3JlTmFtZXMgPSBkYi5vYmplY3RTdG9yZU5hbWVzIik7Ci0KLSAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInN0b3JlLm5hbWUiLCAiU3RvcmVXaXRoS2V5UGF0aCIp
OwotICAgIHNob3VsZEJlKCJzdG9yZS5rZXlQYXRoIiwgIidpZCciKTsKLSAgICBzaG91bGRCZSgi
c3RvcmVOYW1lcy5jb250YWlucygnU3RvcmVXaXRoS2V5UGF0aCcpIiwgInRydWUiKTsKLSAgICBz
aG91bGRCZSgic3RvcmVOYW1lcy5jb250YWlucygnU3RvcmVXaXRoQXV0b0luY3JlbWVudCcpIiwg
InRydWUiKTsKLSAgICBzaG91bGRCZSgic3RvcmVOYW1lcy5jb250YWlucygnUGxhaW5PbGRTdG9y
ZScpIiwgInRydWUiKTsKLSAgICBzaG91bGRCZSgic3RvcmVOYW1lcy5sZW5ndGgiLCAiNCIpOwot
Ci0gICAgLy8gTGV0IHRoZSBzZXRWZXJzaW9uIHRyYW5zYWN0aW9uIGNvbXBsZXRlLgotfQotCi1m
dW5jdGlvbiBzZXRWZXJzaW9uQ29tcGxldGVkKCkKLXsKLSAgICBkZWJ1Zygic2V0VmVyc2lvbkNv
bXBsZXRlZCgpOiIpOwotCi0gICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIu
dHJhbnNhY3Rpb24oWydTdG9yZVdpdGhLZXlQYXRoJywgJ1N0b3JlV2l0aEF1dG9JbmNyZW1lbnQn
LCAnUGxhaW5PbGRTdG9yZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIHRy
YW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBs
ZXRlID0gdGVzdExvbmdLZXlQYXRoOwotCi0gICAgc2VsZi5zdG9yZSA9IGV2YWxBbmRMb2coInN0
b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ1N0b3JlV2l0aEtleVBhdGgnKSIpOwotCi0gICAgZGVi
dWcoIkluc2VydCBpbnRvIG9iamVjdCBzdG9yZSB3aXRoIGF1dG8gaW5jcmVtZW50IGFuZCBrZXkg
cGF0aCwgd2l0aCBrZXkgaW4gdGhlIG9iamVjdC4iKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
Zygic3RvcmUuYWRkKHtuYW1lOiAnSmVmZmVyc3NvbicsIG51bWJlcjogJzcwMTAnLCBpZDogM30p
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRKZWZmZXJzc29uU3VjY2VzczsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24g
YWRkSmVmZmVyc3NvblN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJhZGRKZWZmZXJzc29uU3VjY2Vz
cygpOiIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIjMiKTsKLQotICAg
IGRlYnVnKCJJbnNlcnQgaW50byBvYmplY3Qgc3RvcmUgd2l0aCBhdXRvIGluY3JlbWVudCBhbmQg
a2V5IHBhdGgsIHdpdGhvdXQga2V5IGluIHRoZSBvYmplY3QuIik7Ci0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInN0b3JlLmFkZCh7bmFtZTogJ0xpbmNvbG4nLCBudW1iZXI6ICc3MDEyJ30pIik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRMaW5jb2xuV2l0aEluamVjdEtleVN1Y2Nlc3M7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1
bmN0aW9uIGFkZExpbmNvbG5XaXRoSW5qZWN0S2V5U3VjY2VzcygpCi17Ci0gICAgZGVidWcoImFk
ZExpbmNvbG5XaXRoSW5qZWN0S2V5U3VjY2VzcygpOiIpOwotICAgIHNob3VsZEJlKCJldmVudC50
YXJnZXQucmVzdWx0IiwgIjQiKTsKLQotICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coInN0b3JlLmdl
dCg0KSIpOwotICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBnZXRMaW5jb2xuQWZ0ZXJJbmplY3RlZEtl
eVN1Y2Nlc3M7Ci0gICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LX0KLQotZnVuY3Rpb24gZ2V0TGluY29sbkFmdGVySW5qZWN0ZWRLZXlTdWNjZXNzKCkKLXsKLSAg
ICBkZWJ1ZygiZ2V0TGluY29sbkFmdGVySW5qZWN0ZWRLZXlTdWNjZXNzKCk6Iik7Ci0gICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0Lm5hbWUiLCAiTGluY29sbiIp
OwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5udW1iZXIi
LCAiNzAxMiIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LmlkIiwgIjQiKTsK
LQotICAgIHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3Jl
KCdTdG9yZVdpdGhBdXRvSW5jcmVtZW50JykiKTsKLSAgICBkZWJ1ZygiSW5zZXJ0IGludG8gb2Jq
ZWN0IHN0b3JlIHdpdGgga2V5IGdlbiB1c2luZyBleHBsaWNpdCBrZXkiKTsKLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHtuYW1lOiAnTGluY29sbicsIG51bWJlcjogJzcwMTIn
fSwgNSkiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZExpbmNvbG5XaXRoRXhwbGljaXRL
ZXlTdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotfQotCi1mdW5jdGlvbiBhZGRMaW5jb2xuV2l0aEV4cGxpY2l0S2V5U3VjY2VzcygpCi17Ci0g
ICAgZGVidWcoImFkZExpbmNvbG5XaXRoRXhwbGljaXRLZXlTdWNjZXNzKCk6Iik7Ci0gICAgc2hv
dWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAiNSIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInN0b3JlLmdldCg1KSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0TGluY29s
blN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci19Ci0KLWZ1bmN0aW9uIGdldExpbmNvbG5TdWNjZXNzKCkKLXsKLSAgICBkZWJ1ZygiZ2V0TGlu
Y29sblN1Y2Nlc3MoKToiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdl
dC5yZXN1bHQubmFtZSIsICJMaW5jb2xuIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJl
dmVudC50YXJnZXQucmVzdWx0Lm51bWJlciIsICI3MDEyIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygic3RvcmUucHV0KHtuYW1lOiAnQWJyYWhhbScsIG51bWJlcjogJzIxMDcnfSkiKTsK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHB1dEFicmFoYW1TdWNjZXNzOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBwdXRBYnJh
aGFtU3VjY2VzcygpCi17Ci0gICAgZGVidWcoInB1dEFicmFoYW1TdWNjZXNzKCk6Iik7Ci0gICAg
c2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAiNiIpOwotCi0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInN0b3JlLmdldCg2KSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0QWJy
YWhhbVN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIGdldEFicmFoYW1TdWNjZXNzKCkKLXsKLSAgICBkZWJ1ZygiZ2V0
QWJyYWhhbVN1Y2Nlc3MoKToiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRh
cmdldC5yZXN1bHQubmFtZSIsICJBYnJhaGFtIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJldmVudC50YXJnZXQucmVzdWx0Lm51bWJlciIsICIyMTA3Iik7Ci0KLSAgICBzZWxmLnN0b3Jl
ID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnUGxhaW5PbGRTdG9yZScp
Iik7Ci0gICAgZGVidWcoIlRyeSBhZGRpbmcgd2l0aCBubyBrZXkgdG8gb2JqZWN0IHN0b3JlIHdp
dGhvdXQgYXV0byBpbmNyZW1lbnQuIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3Rv
cmUuYWRkKHtuYW1lOiAnQWRhbSd9KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIp
OwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe25hbWU6ICdBZGFtJ30sIDEp
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRBZGFtU3VjY2VzczsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYWRkQWRh
bVN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJhZGRBZGFtU3VjY2VzcygpOiIpOwotICAgIHNob3Vs
ZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIjEiKTsKLX0KLQotZnVuY3Rpb24gdGVzdExvbmdL
ZXlQYXRoKCkKLXsKLSAgICBkZWJ1ZygidGVzdExvbmdLZXlQYXRoKCk6Iik7Ci0gICAgdHJhbnMg
PSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdTdG9yZVdpdGhMb25nS2V5UGF0
aCcsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVu
ZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBmaW5pc2hKU1Rl
c3Q7Ci0KLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUo
J1N0b3JlV2l0aExvbmdLZXlQYXRoJykiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3Rv
cmUuYWRkKHtmb286ICdiYXInfSkiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHtmb286
ICdiYXInLCBhOiB7fX0pIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7Zm9vOiAnYmFy
JywgYToge2I6IHt9fX0pIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7Zm9vOiAnYmFy
JywgYToge2I6IHtjOiB7fX19fSkiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLSAgICBjdXJzb3JSZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUub3Bl
bkN1cnNvcigpIik7Ci0gICAgY3Vyc29yUmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci0gICAgZXZhbEFuZExvZygiZXhwZWN0ZWQgPSBudWxsIik7Ci0gICAgZXZhbEFu
ZExvZygiY291bnQgPSAwIik7Ci0gICAgY3Vyc29yUmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlv
biAoKSB7Ci0gICAgICAgIGN1cnNvciA9IGN1cnNvclJlcXVlc3QucmVzdWx0OwotICAgICAgICBp
ZiAoIWN1cnNvcikgewotICAgICAgICAgICAgc2hvdWxkQmUoImNvdW50IiwgIjQiKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBpZiAoZXhwZWN0ZWQgPT09IG51bGwp
IHsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImV4cGVjdGVkID0gY3Vyc29yLnZhbHVlLmEuYi5j
LmlkICsgMSIpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNv
ci52YWx1ZS5mb28iLCAiJ2JhciciKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFs
dWUuYS5iLmMuaWQiLCAiZXhwZWN0ZWQiKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImV4cGVj
dGVkID0gY3Vyc29yLnZhbHVlLmEuYi5jLmlkICsgMSIpOwotICAgICAgICB9Ci0gICAgICAgIGNv
dW50Kys7Ci0gICAgICAgIGN1cnNvci5jb250aW51ZSgpOwotICAgIH07Ci19Ci0KLQotdGVzdCgp
OwotCi0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vYmplY3RzdG9yZS1hdXRv
aW5jcmVtZW50LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY2xlYXIuaHRt
bCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWNsZWFyLmh0bWwK
aW5kZXggNjZlZTVkY2QyYWUxOGFmYjFkMjZiZjI5ZmMxZWViMDI2NzQxZTVlNS4uNjg4YTM1OGMz
ZDlhNTMxYWJmY2EwYzZhYzg0NjA5NGY2MmQ0MTQ1ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY2xlYXIuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jbGVhci5odG1sCkBAIC00LDEwNyArNCw3
IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+
CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIHdlYmtp
dElEQk9iamVjdFN0b3JlLmNsZWFyKCkuIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJl
bW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWRE
Qi5vcGVuKCdvYmplY3RzdG9yZS1jbGVhcicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBz
dGFydFNldFZlcnNpb247Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHN0YXJ0U2V0VmVyc2lvbigpCi17Ci0gICAgZGIgPSBldmFs
QW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZGVsZXRlRXhpc3RpbmcoKQotewotICAgIHNl
bGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAg
ICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RT
dG9yZXMoZGIpOwotCi0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9i
amVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOwotCi0gICAgc2VsZi5pbmRleCA9IGV2YWxB
bmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleE5hbWUnLCAnJykiKTsKLSAgICBzaG91bGRC
ZVRydWUoInN0b3JlLmluZGV4TmFtZXMuY29udGFpbnMoJ2luZGV4TmFtZScpIik7Ci0KLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKCd2YWx1ZScsICdrZXknKSIpOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gY3JlYXRlU2Vjb25kT2JqZWN0U3RvcmVBbmRBZGRWYWx1ZTsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rp
b24gY3JlYXRlU2Vjb25kT2JqZWN0U3RvcmVBbmRBZGRWYWx1ZSgpCi17Ci0gICAgb3RoZXJTdG9y
ZSA9IGV2YWxBbmRMb2coIm90aGVyU3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnb3RoZXJT
dG9yZU5hbWUnLCBudWxsKSIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIm90aGVyU3Rv
cmUuYWRkKCd2YWx1ZScsICdrZXknKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYXJP
YmplY3RTdG9yZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLX0KLQotZnVuY3Rpb24gY2xlYXJPYmplY3RTdG9yZSgpCi17Ci0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInN0b3JlLmNsZWFyKCkiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFy
U3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LX0KLQotZnVuY3Rpb24gY2xlYXJTdWNjZXNzKCkKLXsKLSAgICBzaG91bGRCZVVuZGVmaW5lZCgi
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3Jl
Lm9wZW5DdXJzb3IoKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbkN1cnNvclN1Y2Nl
c3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0K
LWZ1bmN0aW9uIG9wZW5DdXJzb3JTdWNjZXNzKCkKLXsKLSAgICBzaG91bGRCZU51bGwoImV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBzdG9y
ZS5pbmRleCgnaW5kZXhOYW1lJykiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXgu
b3BlbktleUN1cnNvcigpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuS2V5Q3Vyc29y
U3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LX0KLQotZnVuY3Rpb24gb3BlbktleUN1cnNvclN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJvcGVu
S2V5Q3Vyc29yU3VjY2VzcygpOiIpOwotICAgIHNob3VsZEJlTnVsbCgiZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBzZXRWZXJzaW9uQ29tcGxldGU7Ci19Ci0K
LWZ1bmN0aW9uIHNldFZlcnNpb25Db21wbGV0ZSgpCi17Ci0gICAgdHJhbnNhY3Rpb24gPSBldmFs
QW5kTG9nKCJkYi50cmFuc2FjdGlvbihbJ290aGVyU3RvcmVOYW1lJ10pIik7Ci0gICAgdHJhbnNh
Y3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHZhciBvdGhlclN0
b3JlID0gZXZhbEFuZExvZygib3RoZXJTdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdv
dGhlclN0b3JlTmFtZScpIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib3RoZXJTdG9y
ZS5nZXQoJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRTdWNjZXNzOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlv
biBnZXRTdWNjZXNzKCkKLXsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdl
dC5yZXN1bHQiLCAidmFsdWUiKTsKLQotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi10ZXN0KCk7
Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vYmplY3RzdG9yZS1jbGVhci5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWNvdW50Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jb3VudC5odG1sCmluZGV4IDUxZTE0
NWRlYTdmYTNjZjRlNDU0ZmQzYTcwNzEwNzRhZGMxMWMzODIuLmRhNDIzZmU0YjY3ZDg1YTMxOWQx
OWUzZDQ3ODc5OTVhMDg3NjViOTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL29iamVjdHN0b3JlLWNvdW50Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvb2JqZWN0c3RvcmUtY291bnQuaHRtbApAQCAtNCwxNDkgKzQsNyBAQAogPHNjcmlw
dCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08
c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBJREJPYmplY3RTdG9yZS5j
b3VudCgpLiIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhl
cygpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbignb2JqZWN0c3Rv
cmUtY291bnQnKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGRiID0g
ZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IHByZXBhcmVEYXRhYmFzZTsKLSAgICB9OwotfQotCi1mdW5jdGlvbiBwcmVw
YXJlRGF0YWJhc2UoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygicHJlcGFyaW5nIGRh
dGFiYXNlIik7Ci0gICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFy
Z2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKLQotICAg
IGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0
b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7Ci0KLSAgICBk
ZWJ1ZygiYWRkaW5nIDAgLi4uIDk5Iik7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsr
aSkgewotICAgICAgICByZXF1ZXN0ID0gc3RvcmUuYWRkKGksIGkpOwotICAgICAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB9Ci0gICAgdHJhbnMub25j
b21wbGV0ZSA9IHZlcmlmeUNvdW50OwotfQotCi1mdW5jdGlvbiB2ZXJpZnlDb3VudCgpCi17Ci0g
ICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJ2ZXJpZnlpbmcgY291bnQgd2l0aG91dCByYW5nZSIp
OwotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmVO
YW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKSIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJh
bnMgIT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFj
azsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gdmVyaWZ5Q291bnRXaXRoUmFuZ2U7Ci0KLSAgICBz
dG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScp
Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJzdG9yZSAhPSBudWxsIik7Ci0KLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IHN0b3JlLmNvdW50KCkiKTsKLSAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1
bmN0aW9uKCkgewotICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2YgcmVxdWVzdC5yZXN1bHQg
PT0gJ251bWJlciciKTsKLSAgICAgICAgIHNob3VsZEJlKCJyZXF1ZXN0LnJlc3VsdCIsICIxMDAi
KTsKLSAgICAgICAgIC8vIGxldCB0aGUgdHJhbnNhY3Rpb24gY29tcGxldGUKLSAgICB9OwotfQot
Ci1mdW5jdGlvbiB2ZXJpZnlDb3VudFdpdGhSYW5nZSgpCi17Ci0gICAgZGVidWcoIiIpOwotICAg
IGRlYnVnKCJ2ZXJpZnlpbmcgY291bnQgd2l0aCByYW5nZSIpOwotICAgIHRyYW5zID0gZXZhbEFu
ZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24u
UkVBRF9PTkxZKSIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT0gbnVsbCIpOwotICAgIHRy
YW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBs
ZXRlID0gdmVyaWZ5Q291bnRXaXRoS2V5OwotCi0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9y
ZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotICAgIHNob3VsZEJlVHJ1ZSgi
c3RvcmUgIT0gbnVsbCIpOwotCi0gICAgdmFyIHRlc3RzID0gWwotICAgICAgICB7IGxvd2VyOiAw
LCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogOTksIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVk
OiAxMDAgfSwKLSAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiB0cnVlLCB1cHBlcjogOTks
IHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiA5OSB9LAotICAgICAgICB7IGxvd2VyOiAwLCBs
b3dlck9wZW46IGZhbHNlLCB1cHBlcjogOTksIHVwcGVyT3BlbjogdHJ1ZSwgZXhwZWN0ZWQ6IDk5
IH0sCi0gICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogdHJ1ZSwgdXBwZXI6IDk5LCB1cHBl
ck9wZW46IHRydWUsIGV4cGVjdGVkOiA5OCB9LAotICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9w
ZW46IGZhbHNlLCB1cHBlcjogMTAwLCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogMTAwIH0s
Ci0gICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiAxMDAsIHVwcGVy
T3BlbjogZmFsc2UsIGV4cGVjdGVkOiAxMDAgfSwKLSAgICAgICAgeyBsb3dlcjogMTAsIGxvd2Vy
T3BlbjogZmFsc2UsIHVwcGVyOiAxMDAsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiA5MCB9
LAotICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogMCwgdXBwZXJP
cGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDEgfSwKLSAgICAgICAgeyBsb3dlcjogNTAwLCBsb3dlck9w
ZW46IGZhbHNlLCB1cHBlcjogNTAwLCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogMCB9Ci0g
ICAgXTsKLQotICAgIGZ1bmN0aW9uIG5leHRUZXN0KCkgewotICAgICAgICBkZWJ1ZygiIik7Ci0g
ICAgICAgIGV2YWxBbmRMb2coInRlc3QgPSAiICsgSlNPTi5zdHJpbmdpZnkodGVzdHMuc2hpZnQo
KSkpOwotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHN0b3JlLmNvdW50
KElEQktleVJhbmdlLmJvdW5kKHRlc3QubG93ZXIsIHRlc3QudXBwZXIsIHRlc3QubG93ZXJPcGVu
LCB0ZXN0LnVwcGVyT3BlbikpIik7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgidHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdu
dW1iZXInIik7Ci0gICAgICAgICAgICAgc2hvdWxkQmUoInJlcXVlc3QucmVzdWx0IiwgU3RyaW5n
KHRlc3QuZXhwZWN0ZWQpKTsKLQotICAgICAgICAgICAgIGlmICh0ZXN0cy5sZW5ndGgpIHsKLSAg
ICAgICAgICAgICAgICAgbmV4dFRlc3QoKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
Ly8gb3RoZXJ3aXNlIGxldCB0aGUgdHJhbnNhY3Rpb24gY29tcGxldGUKLSAgICAgICAgfTsKLSAg
ICB9Ci0KLSAgICBuZXh0VGVzdCgpOwotfQotCi1mdW5jdGlvbiB2ZXJpZnlDb3VudFdpdGhLZXko
KQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygidmVyaWZ5aW5nIGNvdW50IHdpdGgga2V5
Iik7Ci0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9y
ZU5hbWUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0
cmFucyAhPSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxi
YWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBmaW5pc2hKU1Rlc3Q7Ci0KLSAgICBzdG9yZSA9
IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0g
ICAgc2hvdWxkQmVUcnVlKCJzdG9yZSAhPSBudWxsIik7Ci0KLSAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJzdG9yZS5jb3VudChOYU4pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJS
Iik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuY291bnQoe30pIiwgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigi
c3RvcmUuY291bnQoL3JlZ2V4LykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsK
LQotICAgIHZhciB0ZXN0cyA9IFsKLSAgICAgICAgeyBrZXk6IDAsIGV4cGVjdGVkOiAxIH0sCi0g
ICAgICAgIHsga2V5OiAxMDAsIGV4cGVjdGVkOiAwIH0sCi0gICAgICAgIHsga2V5OiBudWxsLCBl
eHBlY3RlZDogMTAwIH0KLSAgICBdOwotCi0gICAgZnVuY3Rpb24gbmV4dFRlc3QoKSB7Ci0gICAg
ICAgIGRlYnVnKCIiKTsKLSAgICAgICAgZXZhbEFuZExvZygidGVzdCA9ICIgKyBKU09OLnN0cmlu
Z2lmeSh0ZXN0cy5zaGlmdCgpKSk7Ci0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gc3RvcmUuY291bnQodGVzdC5rZXkpIik7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1
bmN0aW9uKCkgewotICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2YgcmVxdWVzdC5yZXN1
bHQgPT0gJ251bWJlciciKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJyZXF1ZXN0LnJlc3VsdCIs
IFN0cmluZyh0ZXN0LmV4cGVjdGVkKSk7Ci0gICAgICAgICAgICAgaWYgKHRlc3RzLmxlbmd0aCkg
ewotICAgICAgICAgICAgICAgICBuZXh0VGVzdCgpOwotICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAvLyBvdGhlcndpc2UgbGV0IHRoZSB0cmFuc2FjdGlvbiBjb21wbGV0ZQotICAgICAgICB9
OwotICAgIH0KLQotICAgIG5leHRUZXN0KCk7Ci19Ci0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL29iamVjdHN0b3JlLWNvdW50LmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvb2JqZWN0c3RvcmUtY3Vyc29yLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9vYmplY3RzdG9yZS1jdXJzb3IuaHRtbAppbmRleCBjZDRmMjJkY2QwMjNlZTlmYWIz
OWRhMGNiMzFiYWQ5OTFiNzgxMTUwLi41OTQwN2M0YTFhNWE4MDMxZmIxYzU5YjcyNjM3ZDZlOTI1
YzZmNDQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3Rz
dG9yZS1jdXJzb3IuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmpl
Y3RzdG9yZS1jdXJzb3IuaHRtbApAQCAtNCwyMzEgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291
cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PiAKLQot
ZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mgb2JqZWN0U3RvcmUub3BlbkN1cnNvciArIHRo
ZSBjdXJzb3IgaXQgcHJvZHVjZXMgaW4gZGVwdGguIik7Ci0gCi0vLyBJbiBvcmRlciBvZiBob3cg
aXQgc2hvdWxkIGJlIHNvcnRlZCBieSBJbmRleGVkREIuCi1zZWxmLnRlc3REYXRhID0gWwotICAg
IDIuNzE4MjgxODI4NDU5LAotICAgIDMsCi0gICAgMy4xNDE1OTI2NSwKLSAgICAxMCwKLSAgICAv
LyBGSVhNRTogRGF0ZXMuCi0gICAgIkEgYmlnZ2VyIHN0cmluZyIsCi0gICAgIlRoZSBiaWdnZXN0
IiwKLSAgICAiYSBsb3cgc3RyaW5nIgotXTsKLSAKLWZ1bmN0aW9uIG9wZW5EYXRhYmFzZSgpCi17
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdvYmplY3RzdG9yZS1j
dXJzb3InKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvbjsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLSAKLWZ1bmN0aW9uIHNl
dFZlcnNpb24oKQotewotICAgIHNlbGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCdu
ZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVu
Y3Rpb24gZGVsZXRlRXhpc3RpbmcoKQotewotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0
cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9
PSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwot
Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIHNlbGYub2JqZWN0U3RvcmUg
PSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc29tZU9iamVjdFN0b3JlJykiKTsK
LSAgICBzZWxmLm5leHRUb0FkZCA9IDA7Ci0gICAgYWRkRGF0YSgpOwotfQotCi1mdW5jdGlvbiBh
ZGREYXRhKCkKLXsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCcn
LCB0ZXN0RGF0YVtuZXh0VG9BZGRdKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gKytzZWxm
Lm5leHRUb0FkZCA8IHRlc3REYXRhLmxlbmd0aCA/IGFkZERhdGEgOiBzY2hlZHVsZVRlc3RzOwot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5j
dGlvbiBzY2hlZHVsZVRlc3RzKCkKLXsKLSAgICBkZWJ1ZygiU2NoZWR1bGluZyB0ZXN0cy4uLiIp
OwotICAgIHNlbGYuc2NoZWR1bGVkVGVzdHMgPSBbXTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHRlc3REYXRhLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIC8qIGxlZnQgYm91bmQsIGlzIG9wZW4s
IHJpZ2h0IGJvdW5kLCBpcyBvcGVuLCBhc2NlbmRpbmcgKi8KLSAgICAgICAgc2NoZWR1bGVkVGVz
dHMudW5zaGlmdChbaSwgdHJ1ZSwgbnVsbCwgbnVsbCwgdHJ1ZV0pOwotICAgICAgICBzY2hlZHVs
ZWRUZXN0cy51bnNoaWZ0KFtpLCBmYWxzZSwgbnVsbCwgbnVsbCwgdHJ1ZV0pOwotICAgICAgICBz
Y2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtudWxsLCBudWxsLCBpLCB0cnVlLCB0cnVlXSk7Ci0gICAg
ICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW251bGwsIG51bGwsIGksIGZhbHNlLCB0cnVlXSk7
Ci0gICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIHRydWUsIG51bGwsIG51bGwsIGZh
bHNlXSk7Ci0gICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBudWxsLCBu
dWxsLCBmYWxzZV0pOwotICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtudWxsLCBudWxs
LCBpLCB0cnVlLCBmYWxzZV0pOwotICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtudWxs
LCBudWxsLCBpLCBmYWxzZSwgZmFsc2VdKTsKLSAgICAgICAgZm9yICh2YXIgaiA9IDY7IGogPCB0
ZXN0RGF0YS5sZW5ndGg7ICsraikgewotICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlm
dChbaSwgdHJ1ZSwgaiwgdHJ1ZSwgdHJ1ZV0pOwotICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMu
dW5zaGlmdChbaSwgdHJ1ZSwgaiwgZmFsc2UsIHRydWVdKTsKLSAgICAgICAgICAgIHNjaGVkdWxl
ZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBqLCB0cnVlLCB0cnVlXSk7Ci0gICAgICAgICAgICBz
Y2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCBmYWxzZSwgaiwgZmFsc2UsIHRydWVdKTsKLSAgICAg
ICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIHRydWUsIGosIHRydWUsIGZhbHNlXSk7
Ci0gICAgICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCB0cnVlLCBqLCBmYWxzZSwg
ZmFsc2VdKTsKLSAgICAgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBq
LCB0cnVlLCBmYWxzZV0pOwotICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwg
ZmFsc2UsIGosIGZhbHNlLCBmYWxzZV0pOwotICAgICAgICB9Ci0gICAgfQotIAotICAgIGRlYnVn
KCJSdW5uaW5nIHRlc3RzLi4uIik7Ci0gICAgcnVuTmV4dFRlc3QoKTsKLX0KLSAKLWZ1bmN0aW9u
IHJ1bk5leHRUZXN0KCkKLXsKLSAgICBpZiAoIXNjaGVkdWxlZFRlc3RzLmxlbmd0aCkgewotICAg
ICAgICB0ZXN0TnVsbEtleVJhbmdlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gCi0gICAg
dmFyIHRlc3QgPSBzY2hlZHVsZWRUZXN0cy5wb3AoKTsKLSAgICBzZWxmLmxvd2VyID0gdGVzdFsw
XTsKLSAgICBzZWxmLmxvd2VySXNPcGVuID0gdGVzdFsxXTsKLSAgICBzZWxmLnVwcGVyID0gdGVz
dFsyXTsKLSAgICBzZWxmLnVwcGVySXNPcGVuID0gdGVzdFszXTsKLSAgICBzZWxmLmFzY2VuZGlu
ZyA9IHRlc3RbNF07Ci0KLSAgICBzdHIgPSAiTmV4dCB0ZXN0OiAiOwotICAgIGlmIChsb3dlciAh
PT0gbnVsbCkgewotICAgICAgICBzdHIgKz0gImxvd2VyICI7Ci0gICAgICAgIGlmIChsb3dlcklz
T3BlbikKLSAgICAgICAgICAgIHN0ciArPSAib3BlbiAiOwotICAgICAgICBzdHIgKz0gImJvdW5k
IGlzICIgKyBsb3dlciArICI7ICI7Ci0gICAgfQotICAgIGlmICh1cHBlciAhPT0gbnVsbCkgewot
ICAgICAgICBzdHIgKz0gInVwcGVyICI7Ci0gICAgICAgIGlmICh1cHBlcklzT3BlbikKLSAgICAg
ICAgICAgIHN0ciArPSAib3BlbiAiOwotICAgICAgICBzdHIgKz0gImJvdW5kIGlzICIgKyB1cHBl
ciArICI7ICI7Ci0gICAgfQotICAgIGlmIChhc2NlbmRpbmcpCi0gICAgICAgIHN0ciArPSAic29y
dGVkIGFzY2VuZGluZy4iOwotICAgIGVsc2UKLSAgICAgICAgc3RyICs9ICJzb3J0ZWQgZGVzY2Vu
ZGluZy4iOwotCi0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKHN0cik7Ci0gCi0gICAgaWYgKGFz
Y2VuZGluZykgewotICAgICAgICBpZiAobG93ZXIgIT09IG51bGwpIHsKLSAgICAgICAgICAgIGlm
ICghbG93ZXJJc09wZW4pCi0gICAgICAgICAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gbG93
ZXI7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4
ID0gbG93ZXIrMTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBzZWxmLmV4cGVjdGVkSW5k
ZXggPSAwOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICh1cHBlciAhPT0gbnVsbCkgewotICAg
ICAgICAgICAgaWYgKCF1cHBlcklzT3BlbikKLSAgICAgICAgICAgICAgICBzZWxmLmV4cGVjdGVk
SW5kZXggPSB1cHBlcjsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBzZWxmLmV4
cGVjdGVkSW5kZXggPSB1cHBlci0xOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHNlbGYu
ZXhwZWN0ZWRJbmRleCA9IHRlc3REYXRhLmxlbmd0aC0xOwotICAgIH0KLSAgICB0ZXN0V2l0aGlu
Qm91bmRzKCk7Ci0gCi0gICAgaWYgKHRlc3REYXRhW2xvd2VyXSA9PT0gdGVzdERhdGFbdXBwZXJd
ICYmIChsb3dlcklzT3BlbiB8fCB1cHBlcklzT3BlbikpIHsKLSAgICAgICAgZGVidWcoIlNraXBw
aW5nIGlsbGVnYWwga2V5IHJhbmdlLiIpOwotICAgICAgICBydW5OZXh0VGVzdCgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgdmFyIGtleVJhbmdlOwotICAgIGlmIChsb3dlciAhPT0g
bnVsbCAmJiB1cHBlciAhPT0gbnVsbCkKLSAgICAgICAga2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5i
b3VuZCh0ZXN0RGF0YVtsb3dlcl0sIHRlc3REYXRhW3VwcGVyXSwgbG93ZXJJc09wZW4sIHVwcGVy
SXNPcGVuKTsKLSAgICBlbHNlIGlmIChsb3dlciAhPT0gbnVsbCkKLSAgICAgICAga2V5UmFuZ2Ug
PSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKHRlc3REYXRhW2xvd2VyXSwgbG93ZXJJc09wZW4pOwot
ICAgIGVsc2UKLSAgICAgICAga2V5UmFuZ2UgPSBJREJLZXlSYW5nZS51cHBlckJvdW5kKHRlc3RE
YXRhW3VwcGVyXSwgdXBwZXJJc09wZW4pOwotIAotICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3Rv
cmUub3BlbkN1cnNvcihrZXlSYW5nZSwgYXNjZW5kaW5nID8gSURCQ3Vyc29yLk5FWFQgOiBJREJD
dXJzb3IuUFJFVik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3JJdGVyYXRpb247Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0
aW9uIHRlc3RXaXRoaW5Cb3VuZHMoKQotewotICAgIGlmIChleHBlY3RlZEluZGV4IDwgMCB8fCB0
ZXN0RGF0YS5sZW5ndGggPD0gZXhwZWN0ZWRJbmRleCkKLSAgICAgICAgc2VsZi5leHBlY3RlZElu
ZGV4ID0gbnVsbDsKLSAgICBpZiAobG93ZXIgIT09IG51bGwgJiYgZXhwZWN0ZWRJbmRleCA8IGxv
d2VyKQotICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSBudWxsOwotICAgIGlmICh1cHBlciAh
PT0gbnVsbCAmJiB1cHBlciA8IGV4cGVjdGVkSW5kZXgpCi0gICAgICAgIHNlbGYuZXhwZWN0ZWRJ
bmRleCA9IG51bGw7Ci0gICAgaWYgKGxvd2VyICE9PSBudWxsICYmIGxvd2VySXNPcGVuICYmIGV4
cGVjdGVkSW5kZXggPD0gbG93ZXIpCi0gICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IG51bGw7
Ci0gICAgaWYgKHVwcGVyICE9PSBudWxsICYmIHVwcGVySXNPcGVuICYmIHVwcGVyIDw9IGV4cGVj
dGVkSW5kZXgpCi0gICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IG51bGw7Ci19Ci0gCi1mdW5j
dGlvbiBjdXJzb3JJdGVyYXRpb24oKQotewotICAgIGlmIChleHBlY3RlZEluZGV4ID09PSBudWxs
KSB7Ci0gICAgICAgIHNob3VsZEJlTnVsbCgiZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgICAg
ICBydW5OZXh0VGVzdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChldmVudC50
YXJnZXQucmVzdWx0ID09PSBudWxsKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoImV2ZW50LnRhcmdl
dC5yZXN1bHQgc2hvdWxkIG5vdCBiZSBudWxsLiIpOwotICAgICAgICBydW5OZXh0VGVzdCgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotIAotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVz
dWx0LmtleSIsICJ0ZXN0RGF0YVsiICsgZXhwZWN0ZWRJbmRleCArICJdIik7Ci0gICAgc2VsZi5l
eHBlY3RlZEluZGV4ID0gYXNjZW5kaW5nID8gZXhwZWN0ZWRJbmRleCsxIDogZXhwZWN0ZWRJbmRl
eC0xOwotICAgIHRlc3RXaXRoaW5Cb3VuZHMoKTsKLQotICAgIGV2ZW50LnRhcmdldC5yZXN1bHQu
Y29udGludWUoKTsKLX0KLSAKLXNlbGYubnVsbEtleVJhbmdlU3RlcCA9IDA7Ci1mdW5jdGlvbiB0
ZXN0TnVsbEtleVJhbmdlKCkKLXsKLSAgICBzZWxmLmxvd2VyID0gMDsKLSAgICBzZWxmLmxvd2Vy
SXNPcGVuID0gZmFsc2U7Ci0gICAgc2VsZi51cHBlciA9IHRlc3REYXRhLmxlbmd0aC0xOwotICAg
IHNlbGYudXBwZXJJc09wZW4gPSBmYWxzZTsKLQotICAgIHN0ciA9ICJOZXh0IHRlc3Q6IG51bGwg
a2V5IHBhdGggIjsKLSAgICBpZiAoc2VsZi5udWxsS2V5UmFuZ2VTdGVwID09IDApIHsKLSAgICAg
ICAgc3RyICs9ICJzb3J0ZWQgYXNjZW5kaW5nLiI7Ci0gICAgICAgIHNlbGYuYXNjZW5kaW5nID0g
dHJ1ZTsKLSAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gbG93ZXI7Ci0gICAgICAgIHNlbGYu
bnVsbEtleVJhbmdlU3RlcCA9IDE7Ci0gICAgfSBlbHNlIGlmIChzZWxmLm51bGxLZXlSYW5nZVN0
ZXAgPT0gMSkgewotICAgICAgICBzdHIgKz0gInNvcnRlZCBkZXNjZW5kaW5nLiI7Ci0gICAgICAg
IHNlbGYuYXNjZW5kaW5nID0gZmFsc2U7Ci0gICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IHVw
cGVyOwotICAgICAgICBzZWxmLm51bGxLZXlSYW5nZVN0ZXAgPSAyOwotICAgIH0gZWxzZSB7Ci0g
ICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZGVi
dWcoIiIpOwotICAgIGRlYnVnKHN0cik7Ci0gCi0gICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9y
ZS5vcGVuQ3Vyc29yKG51bGwsIGFzY2VuZGluZyA/IElEQkN1cnNvci5ORVhUIDogSURCQ3Vyc29y
LlBSRVYpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29ySXRlcmF0aW9uOwotICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotIAotcmVtb3ZlVmVu
ZG9yUHJlZml4ZXMoKTsKLW9wZW5EYXRhYmFzZSgpOyAvLyBUaGUgZmlyc3Qgc3RlcC4KLSAKLTwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vYmplY3RzdG9yZS1jdXJzb3IuanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1yZW1vdmVvYmplY3RzdG9yZS5odG1sIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtcmVtb3Zlb2JqZWN0c3Rv
cmUuaHRtbAppbmRleCA1MTE0NjUxMjYyZDRkZjllZGMyMjg1ZTcyNTgxOTBmN2YzMTlkN2MwLi40
NzMxMTE0MDBiMDhmMGJlMzlhNWRkMzJmMmIyODMzYTI5MzRmZjAxIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1yZW1vdmVvYmplY3RzdG9yZS5o
dG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLXJlbW92
ZW9iamVjdHN0b3JlLmh0bWwKQEAgLTQsMTAyICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVz
Y3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mgd2Via2l0SURCT2JqZWN0U3RvcmUuZGVsZXRlT2Jq
ZWN0U3RvcmUoKS4iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJl
Zml4ZXMoKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ29iamVj
dHN0b3JlLXJlbW92ZW9iamVjdHN0b3JlJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHN0
YXJ0U2V0VmVyc2lvbjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLX0KLQotZnVuY3Rpb24gc3RhcnRTZXRWZXJzaW9uKCkKLXsKLSAgICBkYiA9IGV2YWxB
bmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGRlbGV0ZUV4aXN0aW5nOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBkZWxldGVFeGlzdGluZygpCi17Ci0gICAgc2Vs
Zi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAg
IHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKLQotICAgIGRlbGV0ZUFsbE9iamVjdFN0
b3JlcyhkYik7Ci0KLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7Ci0KLSAgICBzZWxmLmluZGV4ID0gZXZhbEFu
ZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZScsICcnKSIpOwotICAgIHNob3VsZEJl
VHJ1ZSgic3RvcmUuaW5kZXhOYW1lcy5jb250YWlucygnaW5kZXhOYW1lJykiKTsKLQotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoJ3ZhbHVlJywgJ2tleScpIik7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21w
bGV0ZSA9IGdldFZhbHVlOwotfQotCi1mdW5jdGlvbiBnZXRWYWx1ZSgpCi17Ci0gICAgdHJhbnNh
Y3Rpb24gPSBldmFsQW5kTG9nKCJkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddKSIpOwotICAg
IHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB2YXIg
c3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9y
ZU5hbWUnKSIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmdldCgna2V5Jyki
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEluZGV4OwotICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBhZGRJbmRleCgpCi17
Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0IiwgInZhbHVl
Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNp
b24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlT2JqZWN0U3RvcmU7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9u
IGRlbGV0ZU9iamVjdFN0b3JlKCkKLXsKLSAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJh
bnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0g
bnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLQot
ICAgIGV2YWxBbmRMb2coImRiLmRlbGV0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotICAg
IGNyZWF0ZU9iamVjdFN0b3JlQWdhaW4oKTsKLX0KLQotZnVuY3Rpb24gY3JlYXRlT2JqZWN0U3Rv
cmVBZ2FpbigpCi17Ci0gICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3Jl
TmFtZScsIG51bGwpIik7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IGdldFZhbHVlQWdhaW47Ci19
Ci0KLWZ1bmN0aW9uIGdldFZhbHVlQWdhaW4oKQotewotICAgIHRyYW5zYWN0aW9uID0gZXZhbEFu
ZExvZygiZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSkiKTsKLSAgICB0cmFuc2FjdGlvbi5v
bmFib3J0ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgdmFyIHN0b3JlID0gZXZhbEFu
ZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLQot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5nZXQoJ2tleScpIik7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSB2ZXJpZnlOb3RGb3VuZDsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gdmVyaWZ5Tm90Rm91bmQoKQotewot
ICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgInVuZGVmaW5lZCIpOwotICAgIHNo
b3VsZEJlRmFsc2UoImV2ZW50LnRhcmdldC5zb3VyY2UuaW5kZXhOYW1lcy5jb250YWlucygnaW5k
ZXhOYW1lJykiKTsKLQotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi10ZXN0KCk7Ci0KLTwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vYmplY3RzdG9yZS1yZW1vdmVvYmplY3RzdG9y
ZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29kZC1zdHJpbmdzLmh0bWwgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9vZGQtc3RyaW5ncy5odG1sCmluZGV4IGE4YTA3MmEzNDczMTA1
MTA5OWUwN2RmYWEwZGVkMDg4ZjAzYjBkNjQuLjY1YTM2M2JkMGQ5ZjA5OTQ0OTQyYjA1OWI3Yjc2
MTVlNDBkYTdmYTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29k
ZC1zdHJpbmdzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2RkLXN0
cmluZ3MuaHRtbApAQCAtMSwxMTEgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8
aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+
CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWRE
QiBvZGQgdmFsdWUgZGF0YXR5cGVzIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92
ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICB0ZXN0RGF0YSA9IFt7IGRlc2NyaXB0aW9uOiAnbnVs
bCcsICAgICAgICAgICAgICAgbmFtZTogJ1x1MDAwMCcgfSwKLSAgICAgICAgICAgICAgICB7IGRl
c2NyaXB0aW9uOiAnZmFpaHUnLCAgICAgICAgICAgICAgbmFtZTogJ1x1ZDgwMFx1ZGY0NicgfSwK
LSAgICAgICAgICAgICAgICB7IGRlc2NyaXB0aW9uOiAndW5wYWlyZWQgc3Vycm9nYXRlJywgbmFt
ZTogJ1x1ZDgwMCcgfSwKLSAgICAgICAgICAgICAgICB7IGRlc2NyaXB0aW9uOiAnZmZmZScsICAg
ICAgICAgICAgICAgbmFtZTogJ1x1ZmZmZScgfSwKLSAgICAgICAgICAgICAgICB7IGRlc2NyaXB0
aW9uOiAnZmZmZicsICAgICAgICAgICAgICAgbmFtZTogJ1x1ZmZmZicgfSwKLSAgICAgICAgICAg
ICAgICB7IGRlc2NyaXB0aW9uOiAnbGluZSBzZXBhcmF0b3InLCAgICAgbmFtZTogJ1x1MjAyOCcg
fQotICAgIF07Ci0gICAgbmV4dFRvT3BlbiA9IDA7Ci0gICAgb3Blbk5leHREYXRhYmFzZSgpOwot
fQotCi1mdW5jdGlvbiBvcGVuTmV4dERhdGFiYXNlKCkKLXsKLSAgICBkZWJ1Zygib3BlbmluZyBh
IGRhdGFiYXNlIG5hbWVkICIgKyB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5kZXNjcmlwdGlvbik7Ci0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKHRlc3REYXRhW25leHRUb09w
ZW5dLm5hbWUsIHRlc3REYXRhW25leHRUb09wZW5dLmRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gb3BlblN1Y2Nlc3M7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBk
YiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBhZGRBS2V5OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBhZGRBS2V5KCkKLXsKLSAgICBkZWxldGVBbGxP
YmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKHRlc3REYXRhW25leHRUb09wZW5dLm5hbWUpOyIp
OwotICAgIGtleSA9IGV2YWxBbmRMb2coImtleSA9IHRlc3REYXRhW25leHRUb09wZW5dLm5hbWUi
KTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChr
ZXksIGtleSk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbG9zZURhdGFiYXNlOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlv
biBjbG9zZURhdGFiYXNlKCkKLXsKLSAgICBldmFsQW5kTG9nKCJkYi5jbG9zZSgpIik7Ci0gICAg
ZGVidWcoIiIpOwotICAgIGlmICgrK25leHRUb09wZW4gPCB0ZXN0RGF0YS5sZW5ndGgpIHsKLSAg
ICAgICAgb3Blbk5leHREYXRhYmFzZSgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIG5leHRUb09w
ZW4gPSAwOwotICAgICAgICB2ZXJpZnlOZXh0RGF0YWJhc2UoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0
aW9uIHZlcmlmeU5leHREYXRhYmFzZSgpCi17Ci0gICAgZGVidWcoInJlb3BlbmluZyBhIGRhdGFi
YXNlIG5hbWVkICIgKyB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5kZXNjcmlwdGlvbik7Ci0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKHRlc3REYXRhW25leHRUb09wZW5dLm5h
bWUsIHRlc3REYXRhW25leHRUb09wZW5dLmRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
b3BlblN1Y2Nlc3MyOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzczIoKQotewotICAgIGRiID0g
ZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGdldEFLZXk7Ci19Ci0KLWZ1bmN0aW9uIGdldEFLZXkoKQotewotICAgIHRyYW5zID0gZXZhbEFu
ZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgb2JqZWN0U3RvcmUgPSBl
dmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKHRlc3REYXRhW25leHRU
b09wZW5dLm5hbWUpOyIpOwotICAgIGtleSA9IGV2YWxBbmRMb2coImtleSA9IHRlc3REYXRhW25l
eHRUb09wZW5dLm5hbWUiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9i
amVjdFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5DdXJzb3JTdWNj
ZXNzOwotfQotCi1mdW5jdGlvbiBvcGVuQ3Vyc29yU3VjY2VzcygpCi17Ci0gICAgY3Vyc29yID0g
ZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICBzaG91bGRC
ZSgiY3Vyc29yLmtleSIsICJ0ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1lIik7Ci0gICAgc2hvdWxk
QmUoImN1cnNvci52YWx1ZSIsICJ0ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1lIik7Ci0gICAgaWYg
KCsrbmV4dFRvT3BlbiA8IHRlc3REYXRhLmxlbmd0aCkgewotICAgICAgICBkZWJ1ZygiIik7Ci0g
ICAgICAgIHZlcmlmeU5leHREYXRhYmFzZSgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGZpbmlz
aEpTVGVzdCgpOwotICAgIH0KLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9vZGQtc3RyaW5ncy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4K
IDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4t
Y2xvc2UtdmVyc2lvbi5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi1j
bG9zZS12ZXJzaW9uLmh0bWwKaW5kZXggNmMxNGZlMTNiZmQ3MjA1NjNlMzhjNjljMDEyOTk0NjVl
MDIwOTYwOS4uMjlkM2FmM2NlNzNhZjk1N2IzMzY1NjY5ODUxNDQ4OWRmMWIyOWUzYSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi1jbG9zZS12ZXJzaW9uLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi1jbG9zZS12ZXJzaW9u
Lmh0bWwKQEAgLTQsMjg5ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpz
Ij48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRl
c3QgaW50ZXJsZWF2ZWQgb3Blbi9jbG9zZS9zZXRWZXJzaW9uIGNhbGxzIGluIHZhcmlvdXMgcGVy
bXV0YXRpb25zIik7Ci0KLWZ1bmN0aW9uIENvbm5lY3Rpb24oaWQpIHsKLSAgICBpZCA9IFN0cmlu
ZyhpZCk7Ci0gICAgdmFyIHRoYXQgPSB0aGlzOwotICAgIHRoaXMub3BlbiA9IGZ1bmN0aW9uKG9w
dHMpIHsKLSAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLm9w
ZW4nIikpOwotICAgICAgICB2YXIgcmVxID0gaW5kZXhlZERCLm9wZW4oc2VsZi5kYm5hbWUpOwot
ICAgICAgICByZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICBy
ZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAgICAgIHRoYXQuaGFuZGxlID0g
ZS50YXJnZXQucmVzdWx0OwotICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2co
IiciICsgaWQgKyAiLm9wZW4ub25zdWNjZXNzJyIpKTsKLSAgICAgICAgICAgIHRoYXQuaGFuZGxl
Lm9udmVyc2lvbmNoYW5nZSA9IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICBzZWxmLnN0
ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIub252ZXJzaW9uY2hhbmdlJyIpKTsKLSAg
ICAgICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9udmVyc2lvbikgeyBvcHRzLm9udmVyc2lv
bi5jYWxsKHRoYXQpOyB9Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgaWYgKG9wdHMgJiYg
b3B0cy5vbnN1Y2Nlc3MpIHsgb3B0cy5vbnN1Y2Nlc3MuY2FsbCh0aGF0KTsgfQotICAgICAgICB9
OwotICAgIH07Ci0KLSAgICB0aGlzLmNsb3NlID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIHNlbGYu
c3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5jbG9zZSciKSk7Ci0gICAgICAgIHRo
aXMuaGFuZGxlLmNsb3NlKCk7Ci0gICAgfTsKLQotICAgIHRoaXMuc2V0VmVyc2lvbiA9IGZ1bmN0
aW9uKG9wdHMpIHsKLSAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQg
KyAiLnNldFZlcnNpb24nIikpOwotICAgICAgICB2YXIgcmVxID0gdGhpcy5oYW5kbGUuc2V0VmVy
c2lvbihTdHJpbmcoc2VsZi52ZXIrKykpOwotICAgICAgICByZXEub25hYm9ydCA9IGZ1bmN0aW9u
IChlKSB7Ci0gICAgICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCAr
ICIuc2V0VmVyc2lvbi5vbmFib3J0JyIpKTsKLSAgICAgICAgICAgIGlmIChvcHRzICYmIG9wdHMu
b25hYm9ydCkgeyBvcHRzLm9uYWJvcnQuY2FsbCh0aGF0KTsgfQotICAgICAgICB9OwotICAgICAg
ICByZXEub25ibG9ja2VkID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAgICAgIHNlbGYuc3RlcHMu
cHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5zZXRWZXJzaW9uLm9uYmxvY2tlZCciKSk7Ci0g
ICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9uYmxvY2tlZCkgeyBvcHRzLm9uYmxvY2tlZC5j
YWxsKHRoYXQpOyB9Ci0gICAgICAgIH07Ci0gICAgICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlv
biAoZSkgewotICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQg
KyAiLnNldFZlcnNpb24ub25zdWNjZXNzJyIpKTsKLSAgICAgICAgICAgIGlmICh0aGF0LmhhbmRs
ZS5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCJ0ZXN0LXN0b3JlIiArIHNlbGYudmVyKSkgewot
ICAgICAgICAgICAgICAgIHRoYXQuaGFuZGxlLmRlbGV0ZU9iamVjdFN0b3JlKCJ0ZXN0LXN0b3Jl
IiArIHNlbGYudmVyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZhciBzdG9yZSA9IHRo
YXQuaGFuZGxlLmNyZWF0ZU9iamVjdFN0b3JlKCJ0ZXN0LXN0b3JlIiArIHNlbGYudmVyKTsKLSAg
ICAgICAgICAgIHZhciBjb3VudCA9IDA7Ci0gICAgICAgICAgICBkb19hc3luY19wdXRzKCk7IC8v
IEtlZXAgdGhpcyB0cmFuc2FjdGlvbiBydW5uaW5nIGZvciBhIHdoaWxlCi0gICAgICAgICAgICBm
dW5jdGlvbiBkb19hc3luY19wdXRzKCkgewotICAgICAgICAgICAgICAgIHZhciByZXEgPSBzdG9y
ZS5wdXQoY291bnQsIGNvdW50KTsKLSAgICAgICAgICAgICAgICByZXEub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICAgICAgICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbiAoZSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoKytjb3VudCA8IDEwKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBkb19hc3luY19wdXRzKCk7Ci0gICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFu
ZExvZygiJyIgKyBpZCArICIuc2V0VmVyc2lvbi50cmFuc2FjdGlvbi1jb21wbGV0ZSciKSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9uc3VjY2VzcykgeyBvcHRz
Lm9uc3VjY2Vzcy5jYWxsKHRoYXQpOyB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICB9OwotICAgICAgICAgICAgfQotICAgICAgICB9OwotICAgICAgICByZXEub25lcnJv
ciA9IGZ1bmN0aW9uIChlKSB7Ci0gICAgICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExv
ZygiJyIgKyBpZCArICIuc2V0VmVyc2lvbi5vbmVycm9yJyIpKTsKLSAgICAgICAgICAgIGlmIChv
cHRzICYmIG9wdHMub25lcnJvcikgeyBvcHRzLm9uZXJyb3IuY2FsbCh0aGF0KTsgfQotICAgICAg
ICB9OwotICAgIH07Ci19Ci0KLS8vIHJ1biBhIHNlcmllcyBvZiBzdGVwcyB0aGF0IHRha2UgYSBj
b250aW51YXRpb24gZnVuY3Rpb24KLWZ1bmN0aW9uIHJ1blN0ZXBzKGNvbW1hbmRzKSB7Ci0gICAg
aWYgKGNvbW1hbmRzLmxlbmd0aCkgewotICAgICAgICB2YXIgY29tbWFuZCA9IGNvbW1hbmRzLnNo
aWZ0KCk7Ci0gICAgICAgIGNvbW1hbmQoZnVuY3Rpb24oKSB7IHJ1blN0ZXBzKGNvbW1hbmRzKTsg
fSk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0KCkgewotICAgIHJlbW92ZVZlbmRvclByZWZp
eGVzKCk7Ci0gICAgdGVzdDEoKTsKLX0KLQotZnVuY3Rpb24gdGVzdDEoKSB7Ci0gICAgZGVidWco
IiIpOwotICAgIGRlYnVnKCJURVNUOiBzZXRWZXJzaW9uIGJsb2NrZWQgb24gb3BlbiBoYW5kbGVz
Iik7Ci0gICAgZXZhbEFuZExvZygic2VsZi5kYm5hbWUgPSAndGVzdDEnOyBzZWxmLnZlciA9IDE7
IHNlbGYuc3RlcHMgPSBbXSIpOwotICAgIHZhciBoMSA9IG5ldyBDb25uZWN0aW9uKCJoMSIpOwot
ICAgIHZhciBoMiA9IG5ldyBDb25uZWN0aW9uKCJoMiIpOwotICAgIHJ1blN0ZXBzKFtmdW5jdGlv
bihkb05leHQpIHsgaDEub3Blbih7b25zdWNjZXNzOiBkb05leHR9KTsgfSwKLSAgICAgICAgIGZ1
bmN0aW9uKGRvTmV4dCkgeyBoMi5vcGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb252ZXJzaW9uOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKCIgICAgaDIgY2xvc2luZywgYnV0IG5vdCBp
bW1lZGlhdGVseSIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsgaDIuY2xvc2UoKTsgfSwgMCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH19KTsgfSwKLSAgICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBoMS5zZXRW
ZXJzaW9uKHtvbnN1Y2Nlc3M6IGZpbmlzaFRlc3R9KTsgfSwKLSAgICAgICAgIF0pOwotICAgIGZ1
bmN0aW9uIGZpbmlzaFRlc3QoKSB7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic2Vs
Zi5zdGVwcy50b1N0cmluZygpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiaDEu
b3BlbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLm9wZW4ub25zdWNjZXNz
IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIub3BlbiIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImgyLm9wZW4ub25zdWNjZXNzIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbiIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImgyLm9udmVyc2lvbmNoYW5nZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImgxLnNldFZlcnNpb24ub25ibG9ja2VkIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiaDIuY2xvc2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5z
ZXRWZXJzaW9uLm9uc3VjY2VzcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgx
LnNldFZlcnNpb24udHJhbnNhY3Rpb24tY29tcGxldGUiCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXS50b1N0cmluZygpKTsKLSAgICAgICAgdGVzdDIoKTsKLSAgICB9Ci19Ci0KLWZ1
bmN0aW9uIHRlc3QyKCkgewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiVEVTVDogc2V0VmVy
c2lvbiBub3QgYmxvY2tlZCBpZiBoYW5kbGUgY2xvc2VkIGltbWVkaWF0ZWx5Iik7Ci0gICAgZXZh
bEFuZExvZygic2VsZi5kYm5hbWUgPSAndGVzdDInOyBzZWxmLnZlciA9IDE7IHNlbGYuc3RlcHMg
PSBbXSIpOwotICAgIHZhciBoMSA9IG5ldyBDb25uZWN0aW9uKCJoMSIpOwotICAgIHZhciBoMiA9
IG5ldyBDb25uZWN0aW9uKCJoMiIpOwotICAgIHJ1blN0ZXBzKFtmdW5jdGlvbihkb05leHQpIHsg
aDEub3Blbih7b25zdWNjZXNzOiBkb05leHR9KTsgfSwKLSAgICAgICAgICAgICAgZnVuY3Rpb24o
ZG9OZXh0KSB7IGgyLm9wZW4oe29uc3VjY2VzczogZG9OZXh0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb252ZXJzaW9uOiBmdW5jdGlvbigpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiICAgIGgyIGNsb3Np
bmcgaW1tZWRpYXRlbHkiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBoMi5jbG9zZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfX0pOyB9LAotICAgICAgICAgICAgICBmdW5jdGlvbihkb05leHQpIHsgaDEuc2V0VmVy
c2lvbih7b25zdWNjZXNzOiBkb05leHR9KTsgfSwKLSAgICAgICAgICAgICAgZmluaXNoVGVzdAot
ICAgICAgICAgICAgICBdKTsKLQotICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7Ci0gICAgICAg
IGRlYnVnKCJOT1RFOiBXaWxsIEZBSUwgd2l0aCBleHRyYSBib2d1cyBoMS5zZXRWZXJzaW9uLm9u
YmxvY2tlZCBzdGVwOyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEx
MzAiKTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzZWxmLnN0ZXBzLnRvU3RyaW5n
KCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJoMS5vcGVuIiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiaDEub3Blbi5vbnN1Y2Nlc3MiLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJoMi5vcGVuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiaDIub3Blbi5vbnN1Y2Nlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJoMS5zZXRWZXJzaW9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIub252
ZXJzaW9uY2hhbmdlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIuY2xvc2Ui
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLm9uc3VjY2Vz
cyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24udHJhbnNh
Y3Rpb24tY29tcGxldGUiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS50b1N0cmlu
ZygpKTsKLSAgICAgICAgdGVzdDMoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3QzKCkgewot
ICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiVEVTVDogb3BlbiBhbmQgc2V0VmVyc2lvbiBibG9j
a2VkIGlmIGEgVkVSU0lPTl9DSEFOR0UgdHJhbnNhY3Rpb24gaXMgcnVubmluZyAtIGNsb3NlIHdo
ZW4gYmxvY2tlZCIpOwotICAgIGV2YWxBbmRMb2coInNlbGYuZGJuYW1lID0gJ3Rlc3QzJzsgc2Vs
Zi52ZXIgPSAxOyBzZWxmLnN0ZXBzID0gW10iKTsKLSAgICB2YXIgaDEgPSBuZXcgQ29ubmVjdGlv
bigiaDEiKTsKLSAgICB2YXIgaDIgPSBuZXcgQ29ubmVjdGlvbigiaDIiKTsKLSAgICB2YXIgaDMg
PSBuZXcgQ29ubmVjdGlvbigiaDMiKTsKLSAgICBydW5TdGVwcyhbZnVuY3Rpb24oZG9OZXh0KSB7
IGgxLm9wZW4oe29uc3VjY2VzczogZG9OZXh0fSk7IH0sCi0gICAgICAgICAgICAgIGZ1bmN0aW9u
KGRvTmV4dCkgeyBoMi5vcGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dH0pOyB9LAotICAgICAgICAgICAg
ICBmdW5jdGlvbihkb05leHQpIHsgaDEuc2V0VmVyc2lvbigpOyBkb05leHQoKTsgfSwKLSAgICAg
ICAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGgyLnNldFZlcnNpb24oewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25ibG9ja2VkOiBmdW5jdGlv
bigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkZWJ1ZygiICAgIGgyIGJsb2NrZWQgc28gY2xvc2luZyIpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGgyLmNsb3NlKCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9OZXh0
KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
fSk7IH0sCi0gICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBoMy5vcGVuKHtvbnN1Y2Nlc3M6IGZp
bmlzaFRlc3R9KTt9Ci0gICAgICAgICAgICAgIF0pOwotCi0gICAgZnVuY3Rpb24gZmluaXNoVGVz
dCgpIHsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzZWxmLnN0ZXBzLnRvU3RyaW5n
KCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJoMS5vcGVuIiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiaDEub3Blbi5vbnN1Y2Nlc3MiLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJoMi5vcGVuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiaDIub3Blbi5vbnN1Y2Nlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJoMS5zZXRWZXJzaW9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIuc2V0
VmVyc2lvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLm9udmVyc2lvbmNo
YW5nZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24ub25i
bG9ja2VkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEub252ZXJzaW9uY2hh
bmdlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIuc2V0VmVyc2lvbi5vbmJs
b2NrZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5jbG9zZSIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImgzLm9wZW4iLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJoMi5zZXRWZXJzaW9uLm9uZXJyb3IiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLm9uc3VjY2VzcyIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24udHJhbnNhY3Rpb24tY29tcGxldGUiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMy5vcGVuLm9uc3VjY2VzcyIKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBdLnRvU3RyaW5nKCkpOwotICAgICAgICB0ZXN0NCgpOwot
ICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdDQoKSB7Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVn
KCJURVNUOiBvcGVuIGFuZCBzZXRWZXJzaW9uIGJsb2NrZWQgaWYgYSBWRVJTSU9OX0NIQU5HRSB0
cmFuc2FjdGlvbiBpcyBydW5uaW5nIC0ganVzdCBjbG9zZSIpOwotICAgIGV2YWxBbmRMb2coInNl
bGYuZGJuYW1lID0gJ3Rlc3Q0Jzsgc2VsZi52ZXIgPSAxOyBzZWxmLnN0ZXBzID0gW10iKTsKLSAg
ICB2YXIgaDEgPSBuZXcgQ29ubmVjdGlvbigiaDEiKTsKLSAgICB2YXIgaDIgPSBuZXcgQ29ubmVj
dGlvbigiaDIiKTsKLSAgICB2YXIgaDMgPSBuZXcgQ29ubmVjdGlvbigiaDMiKTsKLSAgICBydW5T
dGVwcyhbZnVuY3Rpb24oZG9OZXh0KSB7IGgxLm9wZW4oe29uc3VjY2VzczogZG9OZXh0fSk7IH0s
Ci0gICAgICAgICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBoMi5vcGVuKHtvbnN1Y2Nlc3M6IGRv
TmV4dH0pOyB9LAotICAgICAgICAgICAgICBmdW5jdGlvbihkb05leHQpIHsgaDEuc2V0VmVyc2lv
bigpOyBkb05leHQoKTsgfSwKLSAgICAgICAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGgzLm9w
ZW4oe29uc3VjY2VzczogZmluaXNoVGVzdH0pOyBkb05leHQoKTsgfSwKLSAgICAgICAgICAgICAg
ZnVuY3Rpb24oZG9OZXh0KSB7IGgyLmNsb3NlKCk7IH0sCi0gICAgICAgICAgICAgIF0pOwotCi0g
ICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKLSAgICAgICAgZGVidWcoIk5PVEU6IFdpbGwgRkFJ
TCB3aXRoIGV4dHJhIGJvZ3VzIGgxLnNldFZlcnNpb24ub25ibG9ja2VkIHN0ZXA7IGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTEzMCIpOwotICAgICAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoInNlbGYuc3RlcHMudG9TdHJpbmcoKSIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbImgxLm9wZW4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJoMS5vcGVuLm9uc3VjY2VzcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgy
Lm9wZW4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5vcGVuLm9uc3VjY2Vz
cyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24iLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMy5vcGVuIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiaDIuY2xvc2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJoMS5zZXRWZXJzaW9uLm9uc3VjY2VzcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImgxLnNldFZlcnNpb24udHJhbnNhY3Rpb24tY29tcGxldGUiLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJoMy5vcGVuLm9uc3VjY2VzcyIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBdLnRvU3RyaW5nKCkpOwotICAgICAgICB0ZXN0NSgpOwotICAgIH0KLX0KLQot
ZnVuY3Rpb24gdGVzdDUoKSB7Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJURVNUOiBvcGVu
IGJsb2NrZWQgaWYgYSBWRVJTSU9OX0NIQU5HRSB0cmFuc2FjdGlvbiBpcyBydW5uaW5nIik7Ci0g
ICAgZXZhbEFuZExvZygic2VsZi5kYm5hbWUgPSAndGVzdDUnOyBzZWxmLnZlciA9IDE7IHNlbGYu
c3RlcHMgPSBbXSIpOwotICAgIHZhciBoMSA9IG5ldyBDb25uZWN0aW9uKCJoMSIpOwotICAgIHZh
ciBoMiA9IG5ldyBDb25uZWN0aW9uKCJoMiIpOwotCi0gICAgcnVuU3RlcHMoW2Z1bmN0aW9uKGRv
TmV4dCkgeyBoMS5vcGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dH0pOyB9LAotICAgICAgICAgICAgICBm
dW5jdGlvbihkb05leHQpIHsgaDEuc2V0VmVyc2lvbigpOyBkb05leHQoKTsgfSwKLSAgICAgICAg
ICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGgyLm9wZW4oe29uc3VjY2VzczogZmluaXNoVGVzdH0p
OyB9Ci0gICAgICAgICAgICAgIF0pOwotCi0gICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKLSAg
ICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzZWxmLnN0ZXBzLnRvU3RyaW5nKCkiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJoMS5vcGVuIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiaDEub3Blbi5vbnN1Y2Nlc3MiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJoMS5zZXRWZXJzaW9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiaDIub3BlbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNp
b24ub25zdWNjZXNzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVy
c2lvbi50cmFuc2FjdGlvbi1jb21wbGV0ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImgyLm9wZW4ub25zdWNjZXNzIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0u
dG9TdHJpbmcoKSk7Ci0gICAgICAgIHRlc3Q2KCk7Ci0gICAgfQotfQotCi0KLWZ1bmN0aW9uIHRl
c3Q2KCkgewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiVEVTVDogdHdvIHNldFZlcnNpb25z
IGZyb20gdGhlIHNhbWUgY29ubmVjdGlvbiIpOwotICAgIGV2YWxBbmRMb2coInNlbGYuZGJuYW1l
ID0gJ3Rlc3Q2Jzsgc2VsZi52ZXIgPSAxOyBzZWxmLnN0ZXBzID0gW10iKTsKLSAgICB2YXIgaDEg
PSBuZXcgQ29ubmVjdGlvbigiaDEiKTsKLQotICAgIHJ1blN0ZXBzKFtmdW5jdGlvbihkb05leHQp
IHsgaDEub3Blbih7b25zdWNjZXNzOiBkb05leHR9KTsgfSwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBoMS5zZXRWZXJz
aW9uKHtvbnN1Y2Nlc3M6IGhhbGZEb25lfSk7IAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaDEuc2V0VmVyc2lvbih7b25zdWNjZXNzOiBoYWxmRG9uZX0pOyB9Ci0gICAgICAgICAg
ICAgIF0pOwotCi0gICAgdmFyIGNvdW50ZXIgPSAwOwotICAgIGZ1bmN0aW9uIGhhbGZEb25lKCkg
ewotICAgICAgICBjb3VudGVyKys7Ci0gICAgICAgIGlmIChjb3VudGVyIDwgMikgewotICAgICAg
ICAgICAgZGVidWcoJ2hhbGYgZG9uZScpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ZmluaXNoVGVzdCgpOwotICAgICAgICB9Ci0gICAgfSAgCi0KLSAgICBmdW5jdGlvbiBmaW5pc2hU
ZXN0KCkgewotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNlbGYuc3RlcHMudG9TdHJp
bmcoKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImgxLm9wZW4iLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5vcGVuLm9uc3VjY2VzcyIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24iLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiaDEuc2V0VmVyc2lvbi5vbnN1Y2Nlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJoMS5zZXRWZXJzaW9uLnRyYW5zYWN0aW9uLWNvbXBsZXRlIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbi5vbnN1Y2Nlc3MiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLnRyYW5zYWN0aW9uLWNvbXBsZXRl
IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udG9TdHJpbmcoKSk7Ci0gICAgICAg
IGZpbmlzaEpTVGVzdCgpOwotICAgIH0KLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvb3Blbi1jbG9zZS12ZXJzaW9uLmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvb3Blbi1jdXJzb3IuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29w
ZW4tY3Vyc29yLmh0bWwKaW5kZXggNzE4ZmUxYmJiYTQ0NDEzOTc0ZjViYTU5ZGMyMjVmZDYzOTk5
M2E5Zi4uZTRlYjE4MmI4MDVkOTBiZWU5NTBmZmIzMmE5YTM2NjRhZGM5ZGI2NCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi1jdXJzb3IuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVuLWN1cnNvci5odG1sCkBAIC00LDkwICs0
LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVh
ZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mgb3Bl
bkN1cnNvci4iKTsKLQotZnVuY3Rpb24gZW1wdHlDdXJzb3JTdWNjZXNzKCkKLXsKLSAgICBkZWJ1
ZygiRW1wdHkgY3Vyc29yIG9wZW5lZCBzdWNjZXNzZnVsbHkuIikKLSAgICAvLyBGSVhNRTogY2hl
Y2sgdGhhdCB3ZSBjYW4gaXRlcmF0ZSB0aGUgY3Vyc29yLgotICAgIGZpbmlzaEpTVGVzdCgpOwot
fQotCi1mdW5jdGlvbiBvcGVuRW1wdHlDdXJzb3IoKQotewotICAgIGRlYnVnKCJPcGVuaW5nIGFu
IGVtcHR5IGN1cnNvci4iKTsKLSAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQo
IkluZXhpc3RlbnRLZXkiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUu
b3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGVtcHR5Q3Vy
c29yU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLX0KLQotZnVuY3Rpb24gY3Vyc29yU3VjY2VzcygpCi17Ci0gICAgZGVidWcoIkN1cnNvciBv
cGVuZWQgc3VjY2Vzc2Z1bGx5LiIpCi0gICAgLy8gRklYTUU6IGNoZWNrIHRoYXQgd2UgY2FuIGl0
ZXJhdGUgdGhlIGN1cnNvci4KLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5kaXJl
Y3Rpb24iLCAiMCIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICIn
bXlLZXknIik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUiLCAiJ215
VmFsdWUnIik7Ci0gICAgZGVidWcoIiIpOwotICAgIHRyeSB7Ci0gICAgICAgIGRlYnVnKCJQYXNz
aW5nIGFuIGludmFsaWQga2V5IGludG8gLmNvbnRpbnVlKHt9KS4iKTsKLSAgICAgICAgZXZlbnQu
dGFyZ2V0LnJlc3VsdC5jb250aW51ZSh7fSk7Ci0gICAgICAgIHRlc3RGYWlsZWQoIk5vIGV4Y2Vw
dGlvbiB0aHJvd24iKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIHRlc3RQYXNzZWQoIkNh
dWdodCBleGNlcHRpb246ICIgKyBlLnRvU3RyaW5nKCkpOwotICAgIH0KLSAgICBkZWJ1ZygiIik7
Ci0gICAgb3BlbkVtcHR5Q3Vyc29yKCk7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5DdXJzb3IoKQotewot
ICAgIGRlYnVnKCJPcGVuaW5nIGN1cnNvciIpOwotICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2Uu
bG93ZXJCb3VuZCgibXlLZXkiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZXZlbnQudGFy
Z2V0LnNvdXJjZS5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gY3Vyc29yU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQotewotICAgIGRlYnVn
KCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOwotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0
cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9
PSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwot
Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIHZhciBvYmplY3RTdG9yZSA9
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Rlc3QnKSIp
OwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ215VmFsdWUnLCAn
bXlLZXknKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbkN1cnNvcjsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLSAKLWZ1bmN0aW9uIG9w
ZW5TdWNjZXNzKCkKLXsKLSAgICB2YXIgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKLSAKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbign
bmV3IHZlcnNpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nl
c3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0g
Ci1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbignb3Blbi1jdXJzb3InKSIpOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLXRlc3QoKTsKLQotCi08L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvb3Blbi1jdXJzb3IuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBz
cmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8
L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9vcGVuLWR1cmluZy10cmFuc2FjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvb3Blbi1kdXJpbmctdHJhbnNhY3Rpb24uaHRtbAppbmRleCBjYmRkMzVjZGM1YTY3NDYy
NDA5ZDVlYmUyZjgxMTRmOGQ2MDFlYWMwLi5jZDVmOGY2ZGMzNDg2OTM3YTliNGFmODE3ZjQ0NTEy
NGEwOGU1OWY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVu
LWR1cmluZy10cmFuc2FjdGlvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL29wZW4tZHVyaW5nLXRyYW5zYWN0aW9uLmh0bWwKQEAgLTEsODcgKzEsMTAgQEAKLTwhRE9D
VFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2Ny
aXB0aW9uKCJUZXN0IEluZGV4ZWREQiBvcGVuaW5nIGRhdGFiYXNlIGNvbm5lY3Rpb25zIGR1cmlu
ZyB0cmFuc2FjdGlvbnMiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9y
UHJlZml4ZXMoKTsKLSAgICBwcmVwYXJlRGF0YWJhc2UoKTsKLX0KLQotZnVuY3Rpb24gcHJlcGFy
ZURhdGFiYXNlKCkKLXsKLSAgICBkZWJ1ZygicHJlcGFyZSBkYXRhYmFzZSIpOwotICAgIGV2YWxB
bmRMb2coIm9wZW5yZXExID0gaW5kZXhlZERCLm9wZW4oJ2RiMScpIik7Ci0gICAgb3BlbnJlcTEu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIG9wZW5yZXExLm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uIChlKSB7Ci0gICAgICAgIGV2YWxBbmRMb2coImRiYzEgPSBvcGVucmVxMS5y
ZXN1bHQiKTsKLSAgICAgICAgZXZhbEFuZExvZygic2V0dmVycmVxID0gZGJjMS5zZXRWZXJzaW9u
KCcxLjAnKSIpOwotICAgICAgICBzZXR2ZXJyZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotICAgICAgICBzZXR2ZXJyZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKLSAg
ICAgICAgICAgIGV2YWxBbmRMb2coImRiYzEuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScp
Iik7Ci0gICAgICAgICAgICBzZXR2ZXJyZXEucmVzdWx0Lm9uY29tcGxldGUgPSBmdW5jdGlvbiAo
ZSkgewotICAgICAgICAgICAgICAgIGRlYnVnKCJkYXRhYmFzZSBwcmVwYXJhdGlvbiBjb21wbGV0
ZSIpOwotICAgICAgICAgICAgICAgIGRlYnVnKCIiKTsKLSAgICAgICAgICAgICAgICBzdGFydFRy
YW5zYWN0aW9uKCk7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgIH07Ci19Ci0KLWZ1
bmN0aW9uIHN0YXJ0VHJhbnNhY3Rpb24oKQotewotICAgIGRlYnVnKCJzdGFydGluZyB0cmFuc2Fj
dGlvbiIpOwotICAgIGV2YWxBbmRMb2coInN0YXRlID0gJ3N0YXJ0aW5nJyIpOwotICAgIGV2YWxB
bmRMb2coInRyYW5zID0gZGJjMS50cmFuc2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rp
b24uUkVBRF9XUklURSkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnc3Rv
cmVOYW1lJykucHV0KCd2YWx1ZScsICdrZXknKSIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4
cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IGZ1bmN0aW9uIChlKSB7Ci0gICAgICAg
IGRlYnVnKCJ0cmFuc2FjdGlvbiBjb21wbGV0ZSIpOwotICAgICAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoInN0YXRlIiwgIm9wZW4zY29tcGxldGUiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7
Ci0gICAgfTsKLQotICAgIGRlYnVnKCIiKTsKLSAgICB0cnlPcGVucygpOwotfQotCi0KLWZ1bmN0
aW9uIHRyeU9wZW5zKCkKLXsKLSAgICBkZWJ1ZygidHJ5aW5nIHRvIG9wZW4gdGhlIHNhbWUgZGF0
YWJhc2UiKTsKLSAgICBldmFsQW5kTG9nKCJvcGVucmVxMiA9IGluZGV4ZWREQi5vcGVuKCdkYjEn
KSIpOwotICAgIG9wZW5yZXEyLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAg
ICBvcGVucmVxMi5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZSkgewotICAgICAgICBkZWJ1Zygib3Bl
bnJlcTIub25zdWNjZXNzIik7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3RhdGUi
LCAic3RhcnRpbmciKTsKLSAgICAgICAgZXZhbEFuZExvZygic3RhdGUgPSAnb3BlbjJjb21wbGV0
ZSciKTsKLSAgICAgICAgZGVidWcoIiIpOwotICAgIH0KLSAgICBkZWJ1ZygiIik7Ci0KLSAgICBk
ZWJ1ZygidHJ5aW5nIHRvIG9wZW4gYSBkaWZmZXJlbnQgZGF0YWJhc2UiKTsKLSAgICBldmFsQW5k
TG9nKCJvcGVucmVxMyA9IGluZGV4ZWREQi5vcGVuKCdkYjInKSIpOwotICAgIG9wZW5yZXEzLm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICBvcGVucmVxMy5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbiAoZSkgewotICAgICAgICBkZWJ1Zygib3BlbnJlcTMub25zdWNjZXNzIik7Ci0g
ICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3RhdGUiLCAib3BlbjJjb21wbGV0ZSIpOwot
ICAgICAgICBldmFsQW5kTG9nKCJzdGF0ZSA9ICdvcGVuM2NvbXBsZXRlJyIpOwotICAgICAgICBk
ZWJ1ZygiIik7Ci0gICAgfQotICAgIGRlYnVnKCIiKTsKLX0KLQotdGVzdCgpOwotCi08L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3Blbi1kdXJpbmctdHJhbnNhY3Rpb24uanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9wcmVmZXRjaC1idWdmaXgtMTA4MDcxLmh0bWwgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9wcmVmZXRjaC1idWdmaXgtMTA4MDcxLmh0bWwKaW5kZXgg
ZWRhMjk5NzdjNWU0NDZmY2RlNmRmNDVhOWY2ZTVhMzVkMDYwYWUwOC4uODRjN2E2NTU3ZWNhMmVl
YTdjNGVmZDcyMjI0ZTA5MmI3NzA5NzljOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcHJlZmV0Y2gtYnVnZml4LTEwODA3MS5odG1sCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3ByZWZldGNoLWJ1Z2ZpeC0xMDgwNzEuaHRtbApAQCAtNCwxMjMg
KzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9o
ZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBmb3IgY3JidWcuY29t
LzEwODA3MSIpOwotCi0vLyBIYXZlIHRvIGJlIGF0IGxlYXN0IDUgaGVyZTogMSBpbml0aWFsLCAz
IGNvbnRpbnVlcyB0byB0cmlnZ2VyIHByZWZldGNoIGFuZCAxCi0vLyBwb3N0LWFib3J0IG91dHN0
YW5kaW5nIGNvbnRpbnVlLgotdmFyIG5hbWVzID0gWydBbHBoYScsICdCcmF2bycsICdDaGFybGll
JywgJ0RlbHRhJywgJ0VjaG8nXTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVu
ZG9yUHJlZml4ZXMoKTsKLSAgICBEQk5BTUUgPSAncHJlZmV0Y2gtYnVnZml4LTEwODA3MSc7Ci0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShEQk5BTUUp
Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAg
cmVxdWVzdC5vbmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNrOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImluZGV4ZWREQi5vcGVuKERCTkFNRSkiKTsKLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBvcGVuU3VjY2VzczsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIHZh
ciBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb25TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uU3Vj
Y2VzcygpCi17Ci0gICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7Ci0gICAgc2VsZi50
cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNo
b3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBl
Y3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IGl0ZXJhdGVBbmREZWxl
dGVGaXJzdEVsZW1lbnQ7Ci0KLSAgICB2YXIgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScsIHtrZXlQYXRoOiAnaWQnfSki
KTsKLSAgICByZXNldE9iamVjdFN0b3JlKCk7Ci19Ci0KLWZ1bmN0aW9uIHJlc2V0T2JqZWN0U3Rv
cmUoKQotewotICAgIGRlYnVnKCJcbnJlc2V0T2JqZWN0U3RvcmUoKToiKTsKLQotICAgIG9iamVj
dFN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7Ci0gICAgZXZhbEFuZExvZygib2Jq
ZWN0U3RvcmUuY2xlYXIoKSIpOwotICAgIGZvciAoaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkr
KykgewotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKHtpZDog
IiArIGkgKyAiLCBuYW1lOiBcIiIgKyBuYW1lc1tpXSArICJcIn0pIik7Ci0gICAgICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIH0KLQotICAgIGRlYnVn
KCIiKTsKLX0KLQotZnVuY3Rpb24gaXRlcmF0ZUFuZERlbGV0ZUZpcnN0RWxlbWVudCgpCi17Ci0g
ICAgZGVidWcoIml0ZXJhdGVBbmREZWxldGVGaXJzdEVsZW1lbnQoKToiKTsKLQotICAgIGV2YWxB
bmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZSddLCBJREJUcmFuc2FjdGlvbi5S
RUFEX1dSSVRFKSIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB0cmFuc2FjdGlvbkFib3J0ZWQ7Ci0g
ICAgdHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOwotCi0gICAg
Ly8gQ3JlYXRlIHRoZSBjdXJzb3IgYW5kIGl0ZXJhdGUgb3ZlciB0aGUgd2hvbGUgdGhpbmcuCi0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpLm9wZW5D
dXJzb3IoKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewotICAgICAgICB2YXIgY3Vy
c29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKLSAgICAgICAgaWYgKGN1cnNvciA9PSBudWxsKSB7
Ci0gICAgICAgICAgICByZXNldE9iamVjdFN0b3JlKCk7Ci0gICAgICAgICAgICBwcmVmZXRjaEFu
ZEFib3J0KCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBkZWJ1
ZyhjdXJzb3IudmFsdWUuaWQgKyAiOiAiICsgY3Vyc29yLnZhbHVlLm5hbWUpOwotCi0gICAgICAg
IGlmIChjdXJzb3IudmFsdWUuaWQgPT0gMCkgewotICAgICAgICAgICAgLy8gRGVsZXRlIHRoZSBm
aXJzdCBlbGVtZW50IHdoZW4gd2Ugc2VlIGl0LgotICAgICAgICAgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpLmRlbGV0ZSgwKSIpOwotICAgICAgICAg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgICAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeyBjdXJzb3IuY29udGludWUoKTsgfTsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGN1cnNvci5jb250aW51ZSgpOwotICAgICAg
ICB9Ci0gICAgfQotfQotCi1mdW5jdGlvbiBwcmVmZXRjaEFuZEFib3J0KCkKLXsKLSAgICBkZWJ1
ZygicHJlZmV0Y2hBbmRBYm9ydCgpOiIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRy
YW5zLm9iamVjdFN0b3JlKCdzdG9yZScpLm9wZW5DdXJzb3IoKSIpOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24gKCkgewotICAgICAgICB2YXIgY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsK
LSAgICAgICAgZGVidWcoY3Vyc29yLnZhbHVlLmlkICsgIjogIiArIGN1cnNvci52YWx1ZS5uYW1l
KTsKLSAgICAgICAgLy8gSGF2ZSB0byBpdGVyYXRlIHRvIDMgaW4gb3JkZXIgdG8gcHJlZmV0Y2gs
IGJ1dCBjYW4ndCBpdGVyYXRlIHBhc3QgMwotICAgICAgICAvLyBzbyB0aGF0IHRoZXJlIHdpbGwg
YmUgYSBjb250aW51ZSByZW1haW5pbmcuCi0gICAgICAgIGlmIChjdXJzb3IudmFsdWUuaWQgPT0g
MykgewotICAgICAgICAgICAgZXZhbEFuZExvZygidHJhbnMuYWJvcnQoKSIpOwotICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7Ci0gICAgICAgIH0KLSAgICB9
Ci19Ci0KLWZ1bmN0aW9uIHRyYW5zYWN0aW9uQWJvcnRlZCgpCi17Ci0gICAgdGVzdFBhc3NlZCgi
VHJhbnNhY3Rpb24gYWJvcnRlZCBhcyBleHBlY3RlZCIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwot
fQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9wcmVmZXRj
aC1idWdmaXgtMTA4MDcxLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcXVldWVkLWNvbW1hbmRz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9xdWV1ZWQtY29tbWFuZHMuaHRt
bAppbmRleCAyYzRiOTlmZWI1ODg1ZTFjMTQ5MTVkZTQ0NjNkZDMxYzhkOGU0OGU0Li41NzhkY2Rl
YTA4YWU1NjkyYTI3NDNlYjBiNDljNDQyNmNiZGY3YmExIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9xdWV1ZWQtY29tbWFuZHMuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9xdWV1ZWQtY29tbWFuZHMuaHRtbApAQCAtNCw2OCArNCw3IEBA
CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8
Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJWZXJpZnkgdGhhdCBxdWV1aW5nIHVwIHNl
dmVyYWwgY29tbWFuZHMgd29ya3MgKGFuZCB0aGV5IGFsbCBmaXJlKS4iKTsKLQotZnVuY3Rpb24g
dGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3F1ZXVlZC1jb21tYW5kcycpIik7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uKCkKLXsKLSAgICBkYiA9
IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4aXN0aW5nOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBkZWxldGVFeGlzdGluZygpCi17Ci0g
ICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7Ci0gICAgc2VsZi50cmFucyA9IGV2YWxB
bmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgi
dHJhbnMgIT09IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2Fs
bGJhY2s7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgc2VsZi5zdG9y
ZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotICAg
IHNlbGYuaW5kZXhPYmplY3QgPSBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhO
YW1lJywgJ3gnKSIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDog
J3ZhbHVlJywgeTogJ3p6eid9LCAna2V5JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1
bmN0aW9uKCkgeyB2ZXJpZnlBZGQoMCk7IH07Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRk
KHt4OiAndmFsdWUyJywgeTogJ3p6ejInfSwgJ2tleTInKSIpOwotICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZnVuY3Rpb24oKSB7IHZlcmlmeUFkZCgxKTsgfTsKLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJz
dG9yZS5wdXQoe3g6ICd2YWx1MicsIHk6ICd6ejInfSwgJ2t5MicpIik7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgdmVyaWZ5QWRkKDIpOyB9OwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotCi0gICAgc2VsZi5hZGRDb3VudCA9IDA7
Ci19Ci0KLWZ1bmN0aW9uIHZlcmlmeUFkZChleHBlY3RlZCkKLXsKLSAgICBzaG91bGRCZSgiIiAr
IGFkZENvdW50KyssICIiICsgZXhwZWN0ZWQpOwotCi0gICAgaWYgKGFkZENvdW50ID09IDMpCi0g
ICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIGlmIChhZGRDb3VudCA+IDMpCi0gICAgICAgIHRl
c3RGYWlsZWQoIlVuZXhwZWN0ZWQgY2FsbCB0byB2ZXJpZnlBZGQhIik7Ci19Ci0KLXRlc3QoKTsK
LQotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcXVldWVkLWNvbW1hbmRzLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVhZG9ubHktcHJvcGVydGllcy5odG1sIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVhZG9ubHktcHJvcGVydGllcy5odG1sCmluZGV4IGUy
ZDdkYjU3Njg5YTQ0N2FjYWUxNjA0ZWU2MWI3MzAwNjI0YWViNWIuLmQ0OGJiMDA4ZjJkZjE5NThm
MTI3NjdjNjlkYzVhY2Q2ZTY3MzZlNzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3JlYWRvbmx5LXByb3BlcnRpZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZWFkb25seS1wcm9wZXJ0aWVzLmh0bWwKQEAgLTEsNTggKzEsMTAgQEAK
LTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci1k
ZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgcmVhZG9ubHkgcHJvcGVydGllcyIpOwotCi1mdW5j
dGlvbiBzZXRSZWFkb25seVByb3BlcnR5KHByb3BlcnR5LCB2YWx1ZSkKLXsKLSAgICBvbGRWYWx1
ZSA9IGV2YWwocHJvcGVydHkpOwotICAgIGRlYnVnKCJ0cnlpbmcgdG8gc2V0IHJlYWRvbmx5IHBy
b3BlcnR5ICIgKyBwcm9wZXJ0eSk7Ci0gICAgZXZhbEFuZExvZyhwcm9wZXJ0eSArICIgPSAiICsg
dmFsdWUpOwotICAgIG5ld1ZhbHVlID0gZXZhbChwcm9wZXJ0eSk7Ci0gICAgaWYgKG9sZFZhbHVl
ID09IG5ld1ZhbHVlKSB7Ci0gICAgICAgIHRlc3RQYXNzZWQocHJvcGVydHkgKyAiIGlzIHN0aWxs
ICIgKyBvbGRWYWx1ZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdGVzdEZhaWxlZChwcm9wZXJ0
eSArICIgdmFsdWUgd2FzIGNoYW5nZWQgdG8gIiArIG5ld1ZhbHVlKTsKLSAgICB9Ci19Ci0KLWZ1
bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1l
ID0gImZvbyI7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkK
LXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlv
biBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKLXsKLSAgICB0cmFuc2FjdGlvbiA9IGV2
YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICBkZWxl
dGVBbGxPYmplY3RTdG9yZXMoZGIpOwotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2Jq
ZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJyk7Iik7Ci0gICAgc2V0UmVhZG9u
bHlQcm9wZXJ0eSgib2JqZWN0U3RvcmUudHJhbnNhY3Rpb24iLCAidGhpcyIpOwotICAgIGZpbmlz
aEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3JlYWRvbmx5LXByb3BlcnRpZXMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+
CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZWFk
b25seS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVhZG9ubHkuaHRtbApp
bmRleCAxNDhlNWUwYzc5MzZiOTA1ZTM3MThhZGE1MDcwYzk0MzljNjY1Yzk5Li4xZTExNjIwM2I1
NmU4OTlkMGI1MWQzYjczYzBmOTViNGVlYWVjOGFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZWFkb25seS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3JlYWRvbmx5Lmh0bWwKQEAgLTEsMTE1ICsxLDEwIEBACi08IURPQ1RZUEUgaHRt
bD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQu
anMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotZGVzY3JpcHRpb24oIlRl
c3QgSW5kZXhlZERCIHJlYWRvbmx5IHByb3BlcnRpZXMiKTsKLQotZnVuY3Rpb24gc2V0UmVhZG9u
bHlQcm9wZXJ0eShwcm9wZXJ0eSwgdmFsdWUpCi17Ci0gICAgb2xkVmFsdWUgPSBldmFsKHByb3Bl
cnR5KTsKLSAgICBkZWJ1ZygidHJ5aW5nIHRvIHNldCByZWFkb25seSBwcm9wZXJ0eSAiICsgcHJv
cGVydHkpOwotICAgIGV2YWxBbmRMb2cocHJvcGVydHkgKyAiID0gIiArIHZhbHVlKTsKLSAgICBu
ZXdWYWx1ZSA9IGV2YWwocHJvcGVydHkpOwotICAgIGlmIChvbGRWYWx1ZSA9PSBuZXdWYWx1ZSkg
ewotICAgICAgICB0ZXN0UGFzc2VkKHByb3BlcnR5ICsgIiBpcyBzdGlsbCAiICsgb2xkVmFsdWUp
OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHRlc3RGYWlsZWQocHJvcGVydHkgKyAiIHZhbHVlIHdh
cyBjaGFuZ2VkIik7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVW
ZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9ICJmb28iOwotICAgIGRlc2NyaXB0aW9uID0g
Ik15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
b3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5T
dWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
fQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgi
cmVxdWVzdC5yZXN1bHQiLCAiSW5maW5pdHkiKTsKLSAgICBzZXRSZWFkb25seVByb3BlcnR5KCJy
ZXF1ZXN0LmVycm9yQ29kZSIsICI2NjYiKTsKLSAgICBzZXRSZWFkb25seVByb3BlcnR5KCJyZXF1
ZXN0LnNvdXJjZSIsICJ0aGlzIik7Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgicmVxdWVzdC50
cmFuc2FjdGlvbiIsICJ0aGlzIik7Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgicmVxdWVzdC5y
ZWFkeVN0YXRlIiwgIjY2NiIpOwotCi0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKLSAgICBzZXRSZWFkb25seVByb3BlcnR5KCJkYi5uYW1lIiwgIidiYXIn
Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24o
JzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RT
dG9yZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0K
LQotZnVuY3Rpb24gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSgpCi17Ci0gICAgdHJhbnNh
Y3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7
Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgidHJhbnNhY3Rpb24ubW9kZSIsICI2NjYiKTsKLSAg
ICBzZXRSZWFkb25seVByb3BlcnR5KCJ0cmFuc2FjdGlvbi5kYiIsICJ0aGlzIik7Ci0KLSAgICBk
ZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nKTsiKTsKLQotICAgIHNl
dFJlYWRvbmx5UHJvcGVydHkoIm9iamVjdFN0b3JlLm5hbWUiLCAiJ2JhciciKTsKLSAgICBzZXRS
ZWFkb25seVByb3BlcnR5KCJvYmplY3RTdG9yZS5rZXlQYXRoIiwgIidiYXInIik7Ci0vKiBmYWls
cywgc3BsaXQgaW50byBzZXBhcmF0ZSB0ZXN0Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgib2Jq
ZWN0U3RvcmUuaW5kZXhOYW1lcyIsICJbJ2JhciddIik7Ci0qLwotLyogZmFpbHMsIHNwbGl0IGlu
dG8gc2VwYXJhdGUgdGVzdAotICAgIHNldFJlYWRvbmx5UHJvcGVydHkoIm9iamVjdFN0b3JlLnRy
YW5zYWN0aW9uIiwgInRoaXMiKTsKLSovCi0KLSAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJyZXN1
bHQgPSBvYmplY3RTdG9yZS5hZGQoe30sICdmaXJzdCcpOyIpOwotICAgIHJlc3VsdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGFkZFN1
Y2Nlc3M7Ci19Ci0KLWZ1bmN0aW9uIGFkZFN1Y2Nlc3MoKQotewotICAgIHJlc3VsdCA9IGV2YWxB
bmRMb2coInJlc3VsdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsKLSAgICByZXN1bHQu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlc3VsdC5vbnN1Y2Nlc3Mg
PSBjaGVja0N1cnNvcjsKLX0KLQotZnVuY3Rpb24gY2hlY2tDdXJzb3IoKQotewotICAgIGN1cnNv
ciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgaWYg
KGN1cnNvcikgewotICAgICAgICBzZXRSZWFkb25seVByb3BlcnR5KCJjdXJzb3Iuc291cmNlIiwg
InRoaXMiKTsKLSAgICAgICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgiY3Vyc29yLmRpcmVjdGlvbiIs
ICI2NjYiKTsKLSAgICAgICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgiY3Vyc29yLmtleSIsICJJbmZp
bml0eSIpOwotICAgICAgICBzZXRSZWFkb25seVByb3BlcnR5KCJjdXJzb3IucHJpbWFyeUtleSIs
ICJJbmZpbml0eSIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoImN1cnNvciBp
cyBudWxsIik7Ci0gICAgfQotCi0gICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IG9iamVj
dFN0b3JlLmNyZWF0ZUluZGV4KCdmaXJzdCcsICdmaXJzdCcpOyIpOwotICAgIHNldFJlYWRvbmx5
UHJvcGVydHkoImluZGV4Lm5hbWUiLCAiJ2JhciciKTsKLSAgICBzZXRSZWFkb25seVByb3BlcnR5
KCJpbmRleC5vYmplY3RTdG9yZSIsICJ0aGlzIik7Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgi
aW5kZXgua2V5UGF0aCIsICInYmFyJyIpOwotICAgIHNldFJlYWRvbmx5UHJvcGVydHkoImluZGV4
LnVuaXF1ZSIsICJ0cnVlIik7Ci0KLSAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLm9ubHkoImZp
cnN0Iik7Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgia2V5UmFuZ2UubG93ZXIiLCAiSW5maW5p
dHkiKTsKLSAgICBzZXRSZWFkb25seVByb3BlcnR5KCJrZXlSYW5nZS51cHBlciIsICJJbmZpbml0
eSIpOwotICAgIHNldFJlYWRvbmx5UHJvcGVydHkoImtleVJhbmdlLmxvd2VyT3BlbiIsICJ0cnVl
Iik7Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgia2V5UmFuZ2UudXBwZXJPcGVuIiwgInRydWUi
KTsKLQotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JlYWRvbmx5LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3Jj
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9i
b2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVxdWVzdC1ldmVudC1wcm9wYWdhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVxdWVzdC1ldmVudC1wcm9wYWdhdGlvbi5odG1sCmluZGV4IGY5MWQ4ZWQ0MWNjZDU0
M2ZjNDM0ZTBlNWY5OGNmYmFhZGQzMTRlZTcuLmIxMTExYmQyYzM2YzQ2Y2U0M2IxYTg5YjhkOTk4
MDZiMTA1ODY3MDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
cXVlc3QtZXZlbnQtcHJvcGFnYXRpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXF1ZXN0LWV2ZW50LXByb3BhZ2F0aW9uLmh0bWwKQEAgLTQsMjczICs0LDcgQEAK
IDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxi
b2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgZXZlbnQgcHJvcG9nYXRpb24gb24g
SURCUmVxdWVzdC4iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJl
Zml4ZXMoKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3JlcXVl
c3QtZXZlbnQtcHJvcGFnYXRpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVy
c2lvbjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0K
LQotZnVuY3Rpb24gc2V0VmVyc2lvbigpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRW
ZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVF
eGlzdGluZzsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LX0KLQotZnVuY3Rpb24gZGVsZXRlRXhpc3RpbmcoKQotewotICAgIGRlYnVnKCJzZXRWZXJzaW9u
U3VjY2VzcygpOiIpOwotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0g
ICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIGV2YWxBbmRM
b2coInRyYW5zLm9uY29tcGxldGUgPSBzdGFydFRlc3QiKTsKLQotICAgIGRlbGV0ZUFsbE9iamVj
dFN0b3JlcyhkYik7Ci0KLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAna2V5JykiKTsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc3Rh
cnRUZXN0KCkKLXsKLSAgICBkZWJ1ZygiVmVyaWZ5IHRoYXQgaGFuZGxlciBmaXJlcyBhbmQgdGhh
dCBub3QgcHJldmVudGluZyBkZWZhdWx0IHdpbGwgcmVzdWx0IGluIGFuIGFib3J0Iik7Ci0gICAg
dHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10s
IElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMub25h
Ym9ydCA9IHRyYW5zYWN0aW9uQWJvcnRlZCIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29t
cGxldGUgPSB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2coInRy
YW5zLm9uZXJyb3IgPSBhbGxvd0RlZmF1bHQiKTsKLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0
b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAna2V5JykiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7Ci0gICAgaGFu
ZGxlckZpcmVkID0gZmFsc2U7Ci19Ci0KLWZ1bmN0aW9uIGFsbG93RGVmYXVsdCgpCi17Ci0gICAg
dGVzdFBhc3NlZCgiRXZlbnQgaGFuZGxlciBmaXJlZCIpOwotICAgIGRlYnVnKCJEb2luZyBub3Ro
aW5nIHRvIHByZXZlbnQgdGhlIGRlZmF1bHQgYWN0aW9uLi4uIik7Ci0gICAgaGFuZGxlckZpcmVk
ID0gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gdHJhbnNhY3Rpb25BYm9ydGVkKCkKLXsKLSAgICBzaG91
bGRCZVRydWUoImhhbmRsZXJGaXJlZCIpOwotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiVmVy
aWZpbmcgZXJyb3IiKTsKLSAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNh
Y3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICBl
dmFsQW5kTG9nKCJ0cmFucy5vbmFib3J0ID0gdHJhbnNhY3Rpb25BYm9ydGVkMiIpOwotICAgIGV2
YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjayIpOwot
ICAgIGV2YWxBbmRMb2coInRyYW5zLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZXJyb3JDYXB0
dXJlQ2FsbGJhY2ssIHRydWUpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMuYWRkRXZlbnRMaXN0
ZW5lcignZXJyb3InLCBlcnJvckJ1YmJsZUNhbGxiYWNrLCBmYWxzZSkiKTsKLSAgICBldmFsQW5k
TG9nKCJ0cmFucy5hZGRFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgdW5leHBlY3RlZFN1Y2Nlc3ND
YWxsYmFjaywgdHJ1ZSkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5hZGRFdmVudExpc3RlbmVy
KCdzdWNjZXNzJywgdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjaywgZmFsc2UpIik7Ci0gICAgZXZh
bEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBkYkVycm9yQ2FwdHVyZUNhbGxi
YWNrLCB0cnVlKSIpOwotICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9y
JywgZGJFcnJvckJ1YmJsZUNhbGxiYWNrLCBmYWxzZSkiKTsKLSAgICBldmFsQW5kTG9nKCJkYi5h
ZGRFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjaywgdHJ1
ZSkiKTsKLSAgICBldmFsQW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgdW5l
eHBlY3RlZFN1Y2Nlc3NDYWxsYmFjaywgZmFsc2UpIik7Ci0gICAgc3RvcmUgPSBldmFsQW5kTG9n
KCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IGVycm9yRmlyZWRDYWxsYmFjazsKLSAgICBkYkNhcHR1cmVGaXJl
ZCA9IGZhbHNlOwotICAgIGNhcHR1cmVGaXJlZCA9IGZhbHNlOwotICAgIHJlcXVlc3RGaXJlZCA9
IGZhbHNlOwotICAgIGJ1YmJsZUZpcmVkID0gZmFsc2U7Ci0gICAgZGJCdWJibGVGaXJlZCA9IGZh
bHNlOwotfQotCi1mdW5jdGlvbiBkYkVycm9yQ2FwdHVyZUNhbGxiYWNrKCkKLXsKLSAgICBkZWJ1
ZygiIik7Ci0gICAgZGVidWcoIkluIElEQkRhdGFiYXNlIGVycm9yIGNhcHR1cmUiKTsKLSAgICBz
aG91bGRCZUZhbHNlKCJkYkNhcHR1cmVGaXJlZCIpOwotICAgIHNob3VsZEJlRmFsc2UoImNhcHR1
cmVGaXJlZCIpOwotICAgIHNob3VsZEJlRmFsc2UoInJlcXVlc3RGaXJlZCIpOwotICAgIHNob3Vs
ZEJlRmFsc2UoImJ1YmJsZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVGaXJl
ZCIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAicmVxdWVzdCIpOwotICAgIHNob3Vs
ZEJlKCJldmVudC5jdXJyZW50VGFyZ2V0IiwgImRiIik7Ci0gICAgZGJDYXB0dXJlRmlyZWQgPSB0
cnVlOwotfQotCi1mdW5jdGlvbiBlcnJvckNhcHR1cmVDYWxsYmFjaygpCi17Ci0gICAgZGVidWco
IiIpOwotICAgIGRlYnVnKCJJbiBJREJUcmFuc2FjdGlvbiBlcnJvciBjYXB0dXJlIik7Ci0gICAg
c2hvdWxkQmVUcnVlKCJkYkNhcHR1cmVGaXJlZCIpOwotICAgIHNob3VsZEJlRmFsc2UoImNhcHR1
cmVGaXJlZCIpOwotICAgIHNob3VsZEJlRmFsc2UoInJlcXVlc3RGaXJlZCIpOwotICAgIHNob3Vs
ZEJlRmFsc2UoImJ1YmJsZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVGaXJl
ZCIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAicmVxdWVzdCIpOwotICAgIHNob3Vs
ZEJlKCJldmVudC5jdXJyZW50VGFyZ2V0IiwgInRyYW5zIik7Ci0gICAgY2FwdHVyZUZpcmVkID0g
dHJ1ZTsKLX0KLQotZnVuY3Rpb24gZXJyb3JGaXJlZENhbGxiYWNrKCkKLXsKLSAgICBkZWJ1Zygi
Iik7Ci0gICAgZGVidWcoIkluIElEQlJlcXVlc3QgaGFuZGxlciIpOwotICAgIHNob3VsZEJlVHJ1
ZSgiZGJDYXB0dXJlRmlyZWQiKTsKLSAgICBzaG91bGRCZVRydWUoImNhcHR1cmVGaXJlZCIpOwot
ICAgIHNob3VsZEJlRmFsc2UoInJlcXVlc3RGaXJlZCIpOwotICAgIHNob3VsZEJlRmFsc2UoImJ1
YmJsZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVGaXJlZCIpOwotICAgIHNo
b3VsZEJlKCJldmVudC50YXJnZXQiLCAicmVxdWVzdCIpOwotICAgIHNob3VsZEJlKCJldmVudC5j
dXJyZW50VGFyZ2V0IiwgInJlcXVlc3QiKTsKLSAgICByZXF1ZXN0RmlyZWQgPSB0cnVlOwotfQot
Ci1mdW5jdGlvbiBlcnJvckJ1YmJsZUNhbGxiYWNrKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAg
ZGVidWcoIkluIElEQlRyYW5zYWN0aW9uIGVycm9yIGJ1YmJsZSIpOwotICAgIHNob3VsZEJlVHJ1
ZSgiZGJDYXB0dXJlRmlyZWQiKTsKLSAgICBzaG91bGRCZVRydWUoImNhcHR1cmVGaXJlZCIpOwot
ICAgIHNob3VsZEJlVHJ1ZSgicmVxdWVzdEZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiYnVi
YmxlRmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVkIik7Ci0gICAgc2hv
dWxkQmUoImV2ZW50LnRhcmdldCIsICJyZXF1ZXN0Iik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LmN1
cnJlbnRUYXJnZXQiLCAidHJhbnMiKTsKLSAgICBidWJibGVGaXJlZCA9IHRydWU7Ci19Ci0KLWZ1
bmN0aW9uIGRiRXJyb3JCdWJibGVDYWxsYmFjaygpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRl
YnVnKCJJbiBJREJEYXRhYmFzZSBlcnJvciBidWJibGUiKTsKLSAgICBzaG91bGRCZVRydWUoImRi
Q2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJjYXB0dXJlRmlyZWQiKTsKLSAgICBz
aG91bGRCZVRydWUoInJlcXVlc3RGaXJlZCIpOwotICAgIHNob3VsZEJlVHJ1ZSgiYnViYmxlRmly
ZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVkIik7Ci0gICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldCIsICJyZXF1ZXN0Iik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LmN1cnJlbnRU
YXJnZXQiLCAiZGIiKTsKLSAgICBkYkJ1YmJsZUZpcmVkID0gdHJ1ZTsKLX0KLQotZnVuY3Rpb24g
dHJhbnNhY3Rpb25BYm9ydGVkMigpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJUcmFu
c2FjdGlvbiBhYm9ydGVkIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJkYkNhcHR1cmVGaXJlZCIpOwot
ICAgIHNob3VsZEJlVHJ1ZSgiY2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJyZXF1
ZXN0RmlyZWQiKTsKLSAgICBzaG91bGRCZVRydWUoImJ1YmJsZUZpcmVkIik7Ci0gICAgc2hvdWxk
QmVUcnVlKCJkYkJ1YmJsZUZpcmVkIik7Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJWZXJp
ZmluZyBzdWNjZXNzLiIpOwotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFu
c2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAg
IGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSB0cmFuc2FjdGlvbkNvbXBsZXRlIik7Ci0g
ICAgZXZhbEFuZExvZygidHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrIik7
Ci0gICAgZXZhbEFuZExvZygidHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignc3VjY2VzcycsIHN1Y2Nl
c3NDYXB0dXJlQ2FsbGJhY2ssIHRydWUpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMuYWRkRXZl
bnRMaXN0ZW5lcignc3VjY2VzcycsIHN1Y2Nlc3NCdWJibGVDYWxsYmFjaywgZmFsc2UpIik7Ci0g
ICAgZXZhbEFuZExvZygidHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjaywgdHJ1ZSkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5hZGRFdmVudExp
c3RlbmVyKCdlcnJvcicsIHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrLCBmYWxzZSkiKTsKLSAgICBl
dmFsQW5kTG9nKCJkYi5yZW1vdmVFdmVudExpc3RlbmVyKCdlcnJvcicsIGRiRXJyb3JDYXB0dXJl
Q2FsbGJhY2ssIHRydWUpIik7Ci0gICAgZXZhbEFuZExvZygiZGIucmVtb3ZlRXZlbnRMaXN0ZW5l
cignZXJyb3InLCBkYkVycm9yQnViYmxlQ2FsbGJhY2ssIGZhbHNlKSIpOwotICAgIGV2YWxBbmRM
b2coImRiLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3N1Y2Nlc3MnLCB1bmV4cGVjdGVkU3VjY2Vzc0Nh
bGxiYWNrLCB0cnVlKSIpOwotICAgIGV2YWxBbmRMb2coImRiLnJlbW92ZUV2ZW50TGlzdGVuZXIo
J3N1Y2Nlc3MnLCB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrLCBmYWxzZSkiKTsKLSAgICBldmFs
QW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgZGJTdWNjZXNzQ2FwdHVyZUNh
bGxiYWNrLCB0cnVlKSIpOwotICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50TGlzdGVuZXIoJ3N1
Y2Nlc3MnLCBkYlN1Y2Nlc3NCdWJibGVDYWxsYmFjaywgZmFsc2UpIik7Ci0gICAgZXZhbEFuZExv
ZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjaywg
dHJ1ZSkiKTsKLSAgICBldmFsQW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrLCBmYWxzZSkiKTsKLSAgICBzdG9yZSA9IGV2YWxBbmRMb2co
InN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAna2V5MicpIik7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBzdWNjZXNzRmlyZWRDYWxsYmFjazsKLSAgICBkYkNhcHR1cmVGaXJl
ZCA9IGZhbHNlOwotICAgIGNhcHR1cmVGaXJlZCA9IGZhbHNlOwotICAgIHJlcXVlc3RGaXJlZCA9
IGZhbHNlOwotICAgIGJ1YmJsZUZpcmVkID0gZmFsc2U7Ci0gICAgZGJCdWJibGVGaXJlZCA9IGZh
bHNlOwotfQotCi1mdW5jdGlvbiBkYlN1Y2Nlc3NDYXB0dXJlQ2FsbGJhY2soKQotewotICAgIGRl
YnVnKCIiKTsKLSAgICBkZWJ1ZygiSW4gSURCRGF0YWJhc2Ugc3VjY2VzcyBjYXB0dXJlIik7Ci0g
ICAgc2hvdWxkQmVGYWxzZSgiZGJDYXB0dXJlRmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJj
YXB0dXJlRmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJyZXF1ZXN0RmlyZWQiKTsKLSAgICBz
aG91bGRCZUZhbHNlKCJidWJibGVGaXJlZCIpOwotICAgIHNob3VsZEJlRmFsc2UoImRiQnViYmxl
RmlyZWQiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0IiwgInJlcXVlc3QiKTsKLSAgICBz
aG91bGRCZSgiZXZlbnQuY3VycmVudFRhcmdldCIsICJkYiIpOwotICAgIGRiQ2FwdHVyZUZpcmVk
ID0gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gc3VjY2Vzc0NhcHR1cmVDYWxsYmFjaygpCi17Ci0gICAg
ZGVidWcoIiIpOwotICAgIGRlYnVnKCJJbiBJREJUcmFuc2FjdGlvbiBzdWNjZXNzIGNhcHR1cmUi
KTsKLSAgICBzaG91bGRCZVRydWUoImRiQ2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxz
ZSgiY2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgicmVxdWVzdEZpcmVkIik7Ci0g
ICAgc2hvdWxkQmVGYWxzZSgiYnViYmxlRmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJkYkJ1
YmJsZUZpcmVkIik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldCIsICJyZXF1ZXN0Iik7Ci0g
ICAgc2hvdWxkQmUoImV2ZW50LmN1cnJlbnRUYXJnZXQiLCAidHJhbnMiKTsKLSAgICBjYXB0dXJl
RmlyZWQgPSB0cnVlOwotfQotCi1mdW5jdGlvbiBzdWNjZXNzRmlyZWRDYWxsYmFjaygpCi17Ci0g
ICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJJbiBJREJSZXF1ZXN0IGhhbmRsZXIiKTsKLSAgICBz
aG91bGRCZVRydWUoImRiQ2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJjYXB0dXJl
RmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJyZXF1ZXN0RmlyZWQiKTsKLSAgICBzaG91bGRC
ZUZhbHNlKCJidWJibGVGaXJlZCIpOwotICAgIHNob3VsZEJlRmFsc2UoImRiQnViYmxlRmlyZWQi
KTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0IiwgInJlcXVlc3QiKTsKLSAgICBzaG91bGRC
ZSgiZXZlbnQuY3VycmVudFRhcmdldCIsICJyZXF1ZXN0Iik7Ci0gICAgcmVxdWVzdEZpcmVkID0g
dHJ1ZTsKLX0KLQotZnVuY3Rpb24gc3VjY2Vzc0J1YmJsZUNhbGxiYWNrKCkKLXsKLSAgICBkZWJ1
ZygiIik7Ci0gICAgZGVidWcoIkluIElEQlRyYW5zYWN0aW9uIHN1Y2Nlc3MgYnViYmxlIik7Ci0g
ICAgdGVzdEZhaWxlZCgiU3VjY2VzcyBidWJibGUgY2FsbGJhY2sgc2hvdWxkIE5PVCBmaXJlIik7
Ci0gICAgYnViYmxlRmlyZWQgPSB0cnVlOwotfQotCi1mdW5jdGlvbiBkYlN1Y2Nlc3NCdWJibGVD
YWxsYmFjaygpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJJbiBJREJEYXRhYmFzZSBz
dWNjZXNzIGJ1YmJsZSIpOwotICAgIHRlc3RGYWlsZWQoIlN1Y2Nlc3MgYnViYmxlIGNhbGxiYWNr
IHNob3VsZCBOT1QgZmlyZSIpOwotICAgIGRiQnViYmxlRmlyZWQgPSB0cnVlOwotfQotCi1mdW5j
dGlvbiB0cmFuc2FjdGlvbkNvbXBsZXRlKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWco
IlRyYW5zYWN0aW9uIGNvbXBsZXRlZCIpOwotICAgIHNob3VsZEJlVHJ1ZSgiZGJDYXB0dXJlRmly
ZWQiKTsKLSAgICBzaG91bGRCZVRydWUoImNhcHR1cmVGaXJlZCIpOwotICAgIHNob3VsZEJlVHJ1
ZSgicmVxdWVzdEZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiYnViYmxlRmlyZWQiKTsKLSAg
ICBzaG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVkIik7Ci0gICAgZGVidWcoIiIpOwotCi0gICAg
ZmluaXNoSlNUZXN0KCk7Ci0gICAgcmV0dXJuOwotfQotCi10ZXN0KCk7Ci0KLQotPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JlcXVlc3QtZXZlbnQtcHJvcGFnYXRpb24uanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY29uc3RhbnRzLmpzIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2NvbnN0YW50cy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTUy
OWMwYmYxMjNiNmE2Y2RiYWJiY2JiNWJhODExN2FkNDc3YWFjCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2NvbnN0YW50cy5qcwpAQCAt
MCwwICsxLDM5IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0
cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBv
cnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERC
J3MgY29uc3RhbnRzLiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQ
cmVmaXhlcygpOworICAgIHNob3VsZEJlKCJJREJEYXRhYmFzZUV4Y2VwdGlvbi5VTktOT1dOX0VS
UiIsICIxIik7CisgICAgc2hvdWxkQmUoIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PTl9UUkFOU0lF
TlRfRVJSIiwgIjIiKTsKKyAgICBzaG91bGRCZSgiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZP
VU5EX0VSUiIsICIzIik7CisgICAgc2hvdWxkQmUoIklEQkRhdGFiYXNlRXhjZXB0aW9uLkNPTlNU
UkFJTlRfRVJSIiwgIjQiKTsKKyAgICBzaG91bGRCZSgiSURCRGF0YWJhc2VFeGNlcHRpb24uREFU
QV9FUlIiLCAiNSIpOworICAgIHNob3VsZEJlKCJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxM
T1dFRF9FUlIiLCAiNiIpOworICAgIHNob3VsZEJlKCJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFO
U0FDVElPTl9JTkFDVElWRV9FUlIiLCAiNyIpOworICAgIHNob3VsZEJlKCJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5BQk9SVF9FUlIiLCAiOCIpOworICAgIHNob3VsZEJlKCJJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5SRUFEX09OTFlfRVJSIiwgIjkiKTsKKyAgICBzaG91bGRCZSgiSURCRGF0YWJhc2VFeGNl
cHRpb24uVElNRU9VVF9FUlIiLCAiMTAiKTsKKyAgICBzaG91bGRCZSgiSURCRGF0YWJhc2VFeGNl
cHRpb24uUVVPVEFfRVJSIiwgIjExIik7CisgICAgc2hvdWxkQmUoIklEQkRhdGFiYXNlRXhjZXB0
aW9uLlZFUl9FUlIiLCAiMTIiKTsKKworICAgIHNob3VsZEJlKCJJREJSZXF1ZXN0LkxPQURJTkci
LCAiMSIpOworICAgIHNob3VsZEJlKCJJREJSZXF1ZXN0LkRPTkUiLCAiMiIpOworCisgICAgc2hv
dWxkQmUoIklEQkN1cnNvci5ORVhUIiwgIjAiKTsKKyAgICBzaG91bGRCZSgiSURCQ3Vyc29yLk5F
WFRfTk9fRFVQTElDQVRFIiwgIjEiKTsKKyAgICBzaG91bGRCZSgiSURCQ3Vyc29yLlBSRVYiLCAi
MiIpOworICAgIHNob3VsZEJlKCJJREJDdXJzb3IuUFJFVl9OT19EVVBMSUNBVEUiLCAiMyIpOwor
CisgICAgc2hvdWxkQmUoIklEQlRyYW5zYWN0aW9uLlJFQURfT05MWSIsICIwIik7CisgICAgc2hv
dWxkQmUoIklEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUiLCAiMSIpOworICAgIHNob3VsZEJlKCJJ
REJUcmFuc2FjdGlvbi5WRVJTSU9OX0NIQU5HRSIsICIyIik7Cit9CisKK3Rlc3QoKTsKKworZmlu
aXNoSlNUZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2NyZWF0ZS1hbmQtcmVtb3ZlLW9i
amVjdC1zdG9yZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9j
cmVhdGUtYW5kLXJlbW92ZS1vYmplY3Qtc3RvcmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjUwOTI5NDhjMGRi
MTkzNjU3ODljOGRjZjkzMmMwYzJkODI5M2VkOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jcmVhdGUtYW5kLXJlbW92ZS1vYmplY3Qt
c3RvcmUuanMKQEAgLTAsMCArMSw2NiBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAg
IGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Jyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJU
ZXN0IEluZGV4ZWREQidzIGNyZWF0ZSBhbmQgcmVtb3ZlT2JqZWN0U3RvcmUiKTsKKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2NyZWF0ZS1hbmQtcmVtb3ZlLW9iamVjdC1zdG9y
ZScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1
Y2Nlc3MoKQoreworICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOworICAgIHNlbGYuZGIgPSBl
dmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICB0ZXN0Q3JlYXRlQW5k
UmVtb3ZlKCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlc3VsdCA9IGRiLnNldFZlcnNp
b24oJ3ZlcnNpb24gMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNl
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRl
c3RDcmVhdGVBbmRSZW1vdmUoKTsKK30KKworZnVuY3Rpb24gdGVzdENyZWF0ZUFuZFJlbW92ZSgp
Cit7CisgICAgZGVidWcoIlRyeWluZyBjcmVhdGUiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCdkYi5jcmVhdGVPYmplY3RTdG9yZSgic29tZSBvcyIpJywgIklEQkRhdGFiYXNlRXhjZXB0
aW9uLk5PVF9BTExPV0VEX0VSUiIpOworICAgIGRlYnVnKCJUcnlpbmcgcmVtb3ZlIik7CisgICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbignZGIuZGVsZXRlT2JqZWN0U3RvcmUoInNvbWUgb3MiKScs
ICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9FUlIiKTsKK30KKworZnVuY3Rpb24g
Y2xlYW5EYXRhYmFzZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAg
IG9zID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3RtcCcpIik7CisgICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3RtcCcpIiwgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLkNPTlNUUkFJTlRfRVJSIik7CisgICAgZXZlbnQudGFyZ2V0LnJlc3Vs
dC5vbmNvbXBsZXRlID0gc2V0VmVyc2lvbkNvbXBsZXRlOworfQorCitmdW5jdGlvbiBzZXRWZXJz
aW9uQ29tcGxldGUoKQoreworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFu
c2FjdGlvbihbJ3RtcCddKSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmpl
Y3RTdG9yZSgndG1wJykuZ2V0KDApIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0cnlPbmNl
TW9yZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30K
KworZnVuY3Rpb24gdHJ5T25jZU1vcmUoKQoreworICAgIHNob3VsZEJlVW5kZWZpbmVkKCJldmVu
dC50YXJnZXQucmVzdWx0Iik7CisKKyAgICB0ZXN0Q3JlYXRlQW5kUmVtb3ZlKCk7CisKKyAgICBk
ZWJ1ZygiVHJ5aW5nIGNyZWF0ZSB3aXRoIHN0b3JlIHRoYXQgYWxyZWFkeSBleGlzdHMiKTsKKyAg
ICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgndG1wJykiLCAi
SURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0FMTE9XRURfRVJSIik7CisgICAgZGVidWcoIlRyeWlu
ZyByZW1vdmUgd2l0aCBzdG9yZSB0aGF0IGFscmVhZHkgZXhpc3RzIik7CisgICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigiZGIuZGVsZXRlT2JqZWN0U3RvcmUoJ3RtcCcpIiwgIklEQkRhdGFiYXNl
RXhjZXB0aW9uLk5PVF9BTExPV0VEX0VSUiIpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisK
K3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3JlYXRlLW9iamVjdC1zdG9yZS1vcHRp
b25zLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2NyZWF0ZS1v
YmplY3Qtc3RvcmUtb3B0aW9ucy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOGM2YTRjMGUzZWYyMGM0NjdjODc1
YWNiOTdiZjE1N2FmMTJkMTc0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL2NyZWF0ZS1vYmplY3Qtc3RvcmUtb3B0aW9ucy5qcwpAQCAt
MCwwICsxLDgxIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0
cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBv
cnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERC
J3MgY3JlYXRlT2JqZWN0U3RvcmUncyB2YXJpb3VzIG9wdGlvbnMiKTsKKworZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJpbmRleGVkREIub3BlbignY3JlYXRlLW9iamVjdC1zdG9yZS1vcHRpb25zJywgJ2Rl
c2NyaXB0aW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0
VmVyc2lvbigndmVyc2lvbiAxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0
YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jl
cyhkYik7CisKKyAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnYScsIHtrZXlQ
YXRoOiAnYSd9KSIpOworICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdiJyki
KTsKKworICAgIGRlYnVnKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnYycsIHthdXRvSW5jcmVtZW50
OiB0cnVlfSk7Iik7CisgICAgZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2MnLCB7YXV0b0luY3JlbWVu
dDogdHJ1ZX0pOworICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25jb21wbGV0ZSA9IHNldFZlcnNp
b25Db21wbGV0ZTsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbkNvbXBsZXRlKCkKK3sKKyAgICB0
cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydhJywgJ2InXSwgSURC
VHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICBzaG91bGRCZSgidHJhbnMubW9kZSIsICJJ
REJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFIik7CisKKyAgICByZXEgPSBldmFsQW5kTG9nKCJ0cmFu
cy5vYmplY3RTdG9yZSgnYScpLnB1dCh7J2EnOiAwfSkiKTsKKyAgICByZXEub25zdWNjZXNzID0g
cHV0QjsKKyAgICByZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworCisgICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbkNsYXNzKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnZCcsICdi
YXInKTsiLCAiVHlwZUVycm9yIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbkNsYXNzKCJk
Yi5jcmVhdGVPYmplY3RTdG9yZSgnZScsIGZhbHNlKTsiLCAiVHlwZUVycm9yIik7Cit9CisKK2Z1
bmN0aW9uIHB1dEIoKQoreworICAgIHJlcSA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3Jl
KCdiJykucHV0KHsnYSc6IDB9LCAwKSIpOyAgLy8gT09QUworICAgIHJlcS5vbnN1Y2Nlc3MgPSBn
ZXRBOworICAgIHJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIGdldEEoKQoreworICAgIHJlcSA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3Jl
KCdhJykuZ2V0KDApIik7CisgICAgcmVxLm9uc3VjY2VzcyA9IGdldEI7CisgICAgcmVxLm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZ2V0QigpCit7Cisg
ICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQuYSIsICJ7YTogMH0iKTsKKworICAgIHJl
cSA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdiJykuZ2V0KDApIik7CisgICAgcmVx
Lm9uc3VjY2VzcyA9IGNoZWNrQjsKKyAgICByZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBjaGVja0IoKQoreworICAgIHNob3VsZEJlKCJldmVudC50
YXJnZXQucmVzdWx0LmEiLCAie2E6IDB9Iik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwor
dGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jcmVhdGVPYmplY3RTdG9yZS1uYW1lLWFy
Z3VtZW50LXJlcXVpcmVkLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL2NyZWF0ZU9iamVjdFN0b3JlLW5hbWUtYXJndW1lbnQtcmVxdWlyZWQuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDk1OWZhNzIwZTJjNDNjMGJkYThhNmU1ODkyNjY2NTgyNzg4NDMwNgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jcmVhdGVPYmpl
Y3RTdG9yZS1uYW1lLWFyZ3VtZW50LXJlcXVpcmVkLmpzCkBAIC0wLDAgKzEsMzYgQEAKK2lmICh0
aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5q
cycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgY3JlYXRlT2JqZWN0U3RvcmUg
bmFtZSBhcmd1bWVudCBpcyByZXF1aXJlZCIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBy
ZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5h
bWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAg
ICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNy
ZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jl
cyhkYik7CisKKyAgICBzaG91bGRUaHJvdygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoKTsiKTsKKyAg
ICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9j
cmVhdGVPYmplY3RTdG9yZS1udWxsLW5hbWUuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvY3JlYXRlT2JqZWN0U3RvcmUtbnVsbC1uYW1lLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmUxNTVhNTAzOGQ2ZTAwYTk2ZjJmODViZGZjZDhiNjM3YWMyNWI5ZTkKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3JlYXRlT2JqZWN0
U3RvcmUtbnVsbC1uYW1lLmpzCkBAIC0wLDAgKzEsMzcgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlw
dHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNj
cmlwdGlvbigiVGVzdCBJbmRleGVkREIgY3JlYXRlT2JqZWN0U3RvcmUgbnVsbCBoYW5kbGluZyIp
OworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisg
ICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkg
VGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVu
KG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nl
c3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFu
ZFBvcHVsYXRlT2JqZWN0U3RvcmU7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUo
KQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBvYmplY3RTdG9yZSA9
IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKG51bGwpOyIpOworICAgIHNob3VsZEJl
KCJvYmplY3RTdG9yZS5uYW1lIiwgIidudWxsJyIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQor
Cit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1jb250aW51ZS5qcyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItY29udGludWUuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODRiMGVmOGE3OGZmNDdlYzYzZjA0NThjM2RlNjAwMmRjZTU1Mzk0ZAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9j
dXJzb3ItY29udGludWUuanMKQEAgLTAsMCArMSwyNzAgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlw
dHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNj
cmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBJREJDdXJzb3IuY29udGludWUoKSB3aXRoIGEga2V5
IHBhcmFtZXRlci4iKTsKKwordmFyIGRhdGUgPSBuZXcgRGF0ZSgpOworCisvLyBJbiBvcmRlciBv
ZiBob3cgaXQgc2hvdWxkIGJlIHNvcnRlZCBieSBJbmRleGVkREIuCitzZWxmLnRlc3REYXRhID0g
WworICAgIDAsCisgICAgMSwKKyAgICAxLAorICAgIDMuMTQxNTksCisgICAgMy4xNDE1OSwKKyAg
ICAxMCwKKyAgICAxMSwKKyAgICAxMiwKKyAgICAxMywKKyAgICBkYXRlLAorICAgIGRhdGUsCisg
ICAgbmV3IERhdGUoZGF0ZS52YWx1ZU9mKCkgKyAxMDAwKSwKKyAgICAiQSBiaWcgc3RyaW5nIiwK
KyAgICAiQSBiaWcgc3RyaW5nIiwKKyAgICAiQSBiaXQxIiwKKyAgICAiQSBiaXQyIiwKKyAgICAi
QSBiaXQzIiwKKyAgICAidGhlIEJJR0dFU1Qgc3RyaW5nIgorXTsKKworZnVuY3Rpb24gdGVzdCgp
Cit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBvcGVuRGF0YWJhc2UoKTsKK30K
KworZnVuY3Rpb24gb3BlbkRhdGFiYXNlKCkKK3sKKyAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIub3BlbignY3Vyc29yLWNvbnRpbnVlJykiKTsKKyAgICByZXN1bHQub25zdWNjZXNz
ID0gc2V0VmVyc2lvbjsKKyAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uKCkKK3sKKyAgICBzZWxmLmRiID0gZXZhbEFu
ZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXN1bHQgPSBldmFsQW5k
TG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgcmVzdWx0Lm9uc3VjY2Vz
cyA9IGRlbGV0ZUV4aXN0aW5nOworICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKK3sKKyAgICBzZWxmLnRy
YW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hv
dWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVj
dGVkQWJvcnRDYWxsYmFjazsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAg
ICBzZWxmLm9iamVjdFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Nv
bWVPYmplY3RTdG9yZScpIik7CisgICAgc2VsZi5pbmRleE9iamVjdCA9IGV2YWxBbmRMb2coIm9i
amVjdFN0b3JlLmNyZWF0ZUluZGV4KCdzb21lSW5kZXgnLCAneCcpIik7CisgICAgc2VsZi5uZXh0
VG9BZGQgPSAwOworICAgIGFkZERhdGEoKTsKK30KKworZnVuY3Rpb24gYWRkRGF0YSgpCit7Cisg
ICAgcmVzdWx0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKHsneCc6IHRlc3REYXRhW25l
eHRUb0FkZF19LCBuZXh0VG9BZGQpIik7CisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9ICsrc2VsZi5u
ZXh0VG9BZGQgPCB0ZXN0RGF0YS5sZW5ndGggPyBhZGREYXRhIDogYXNjZW5kaW5nVGVzdDsKKyAg
ICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biBhc2NlbmRpbmdUZXN0KCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgdmFyIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJpbmRleE9iamVjdC5vcGVuS2V5Q3Vyc29yKG51bGwsIElEQkN1cnNvci5ORVhU
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYXNjZW5kaW5nQ2FsbGJhY2s7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgc2VsZi5zdGFnZSA9
IDA7Cit9CisKK2Z1bmN0aW9uIGFzY2VuZGluZ0NhbGxiYWNrKCkKKworeworICAgIGlmIChzZWxm
LnN0YWdlID09IDApIHsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJp
bWFyeUtleSIsICIwIik7CisgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQu
Y29udGludWUoMy4xNDE1OSkiKTsKKyAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gMSkgewor
ICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjMiKTsK
KyAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7Cisg
ICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDIpIHsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50
LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICI0Iik7CisgICAgICAgIGV2YWxBbmRMb2coImV2
ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOworICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFn
ZSA9PSAzKSB7CisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlL
ZXkiLCAiNSIpOworICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRp
bnVlKDEyKSIpOworICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSA0KSB7CisgICAgICAgIHNo
b3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiNyIpOworICAgICAgICBl
dmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKGRhdGUpIik7CisgICAgfSBl
bHNlIGlmIChzZWxmLnN0YWdlID09IDUpIHsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdl
dC5yZXN1bHQucHJpbWFyeUtleSIsICI5Iik7CisgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRh
cmdldC5yZXN1bHQuY29udGludWUoKSIpOworICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSA2
KSB7CisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAi
MTAiKTsKKyAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgp
Iik7CisgICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDcpIHsKKyAgICAgICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIxMSIpOworICAgICAgICBldmFsQW5k
TG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCdBIGJpdDEnKSIpOworICAgIH0gZWxz
ZSBpZiAoc2VsZi5zdGFnZSA9PSA4KSB7CisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQu
cmVzdWx0LnByaW1hcnlLZXkiLCAiMTQiKTsKKyAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFy
Z2V0LnJlc3VsdC5jb250aW51ZSgnQSBiaXQzJykiKTsKKyAgICB9IGVsc2UgaWYgKHNlbGYuc3Rh
Z2UgPT0gOSkgeworICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5
S2V5IiwgIjE2Iik7CisgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29u
dGludWUoJ3RoZSBCSUdHRVNUIHN0cmluZycpIik7CisgICAgfSBlbHNlIGlmIChzZWxmLnN0YWdl
ID09IDEwKSB7CisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlL
ZXkiLCAiMTciKTsKKyAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250
aW51ZSgpIik7CisgICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDExKSB7CisgICAgICAgIHNo
b3VsZEJlTnVsbCgiZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgICAgICBkZXNjZW5kaW5nVGVz
dCgpOworICAgICAgICByZXR1cm47CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZCgi
SWxsZWdhbCBzdGFnZS4iKTsKKyAgICB9CisgICAgc2VsZi5zdGFnZSsrOworfQorCitmdW5jdGlv
biBkZXNjZW5kaW5nVGVzdCgpCit7CisgICAgZGVidWcoIiIpOworICAgIHZhciByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhPYmplY3Qub3BlbktleUN1cnNvcihudWxsLCBJREJDdXJzb3IuUFJF
VikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlc2NlbmRpbmdDYWxsYmFjazsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBzZWxmLnN0YWdl
ID0gMDsKK30KKworZnVuY3Rpb24gZGVzY2VuZGluZ0NhbGxiYWNrKCkKK3sKKyAgICBpZiAoc2Vs
Zi5zdGFnZSA9PSAwKSB7CisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnBy
aW1hcnlLZXkiLCAiMTciKTsKKyAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3Vs
dC5jb250aW51ZSgnQSBiaXQyJykiKTsKKyAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gMSkg
eworICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjE1
Iik7CisgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIp
OworICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSAyKSB7CisgICAgICAgIHNob3VsZEJlKCJl
dmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMTQiKTsKKyAgICAgICAgZXZhbEFuZExv
ZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZShkYXRlKSIpOworICAgIH0gZWxzZSBpZiAo
c2VsZi5zdGFnZSA9PSAzKSB7CisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0
LnByaW1hcnlLZXkiLCAiMTAiKTsKKyAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJl
c3VsdC5jb250aW51ZSgpIik7CisgICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDQpIHsKKyAg
ICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICI5Iik7Cisg
ICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoMSkiKTsKKyAg
ICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gNSkgeworICAgICAgICBzaG91bGRCZSgiZXZlbnQu
dGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjIiKTsKKyAgICAgICAgZXZhbEFuZExvZygiZXZl
bnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7CisgICAgfSBlbHNlIGlmIChzZWxmLnN0YWdl
ID09IDYpIHsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtl
eSIsICIxIik7CisgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGlu
dWUoKSIpOworICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSA3KSB7CisgICAgICAgIHNob3Vs
ZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMCIpOworICAgICAgICBldmFs
QW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKKyAgICB9IGVsc2UgaWYg
KHNlbGYuc3RhZ2UgPT0gOCkgeworICAgICAgICBzaG91bGRCZU51bGwoImV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKKyAgICAgICAgYXNjZW5kaW5nRXJyb3JUZXN0TGVzc1RoYW4oKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQoIklsbGVnYWwgc3RhZ2Uu
Iik7CisgICAgfQorICAgIHNlbGYuc3RhZ2UrKzsKK30KKworZnVuY3Rpb24gYXNjZW5kaW5nRXJy
b3JUZXN0TGVzc1RoYW4oKQoreworICAgIGRlYnVnKCIiKTsKKyAgICB2YXIgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImluZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3IobnVsbCwgSURCQ3Vyc29yLk5FWFQp
Iik7CisgICAgc2VsZi5zdGFnZSA9IDA7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAg
ICAgICAgaWYgKHNlbGYuc3RhZ2UgPT09IDApIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJldmVu
dC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMCIpOworICAgICAgICAgICAgZXZhbEFuZExv
ZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgzLjE0MTU5KSIpOworICAgICAgICB9IGVs
c2UgaWYgKHNlbGYuc3RhZ2UgPT0gMSkgeworICAgICAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRh
cmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIzIik7CisgICAgICAgICAgICBldmFsQW5kRXhwZWN0
RXhjZXB0aW9uKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKDEpIiwgIklEQkRhdGFiYXNl
RXhjZXB0aW9uLkRBVEFfRVJSIik7CisgICAgICAgICAgICBhc2NlbmRpbmdFcnJvclRlc3RFcXVh
bCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICB0
ZXN0RmFpbGVkKCJJbGxlZ2FsIHN0YWdlLiIpOworICAgICAgICB9CisgICAgICAgIHNlbGYuc3Rh
Z2UrKzsKKyAgICB9OworfQorCitmdW5jdGlvbiBhc2NlbmRpbmdFcnJvclRlc3RFcXVhbCgpCit7
CisgICAgZGVidWcoIiIpOworICAgIHZhciByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhPYmpl
Y3Qub3BlbktleUN1cnNvcihudWxsLCBJREJDdXJzb3IuTkVYVCkiKTsKKyAgICBzZWxmLnN0YWdl
ID0gMDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAoc2VsZi5zdGFn
ZSA9PT0gMCkgeworICAgICAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJp
bWFyeUtleSIsICIwIik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVz
dWx0LmNvbnRpbnVlKDMuMTQxNTkpIik7CisgICAgICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9
PSAxKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5
S2V5IiwgIjMiKTsKKyAgICAgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImV2ZW50LnRh
cmdldC5yZXN1bHQuY29udGludWUoMy4xNDE1OSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFU
QV9FUlIiKTsKKyAgICAgICAgICAgIGRlc2NlbmRpbmdFcnJvclRlc3RHcmVhdGVyVGhhbigpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICB0ZXN0RmFp
bGVkKCJJbGxlZ2FsIHN0YWdlLiIpOworICAgICAgICB9CisgICAgICAgIHNlbGYuc3RhZ2UrKzsK
KyAgICB9OworfQorCitmdW5jdGlvbiBkZXNjZW5kaW5nRXJyb3JUZXN0R3JlYXRlclRoYW4oKQor
eworICAgIGRlYnVnKCIiKTsKKyAgICB2YXIgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2Jq
ZWN0Lm9wZW5LZXlDdXJzb3IobnVsbCwgSURCQ3Vyc29yLlBSRVYpIik7CisgICAgc2VsZi5zdGFn
ZSA9IDA7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKHNlbGYuc3Rh
Z2UgPT0gMCkgeworICAgICAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJp
bWFyeUtleSIsICIxNyIpOworICAgICAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJl
c3VsdC5jb250aW51ZSgnQSBiaXQyJykiKTsKKyAgICAgICAgfSBlbHNlIGlmIChzZWxmLnN0YWdl
ID09IDEpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1h
cnlLZXkiLCAiMTUiKTsKKyAgICAgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImV2ZW50
LnRhcmdldC5yZXN1bHQuY29udGludWUoJ0EgYml0MycpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9u
LkRBVEFfRVJSIik7CisgICAgICAgICAgICBkZXNjZW5kaW5nRXJyb3JUZXN0RXF1YWwoKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgdGVzdEZhaWxl
ZCgiSWxsZWdhbCBzdGFnZS4iKTsKKyAgICAgICAgfQorICAgICAgICBzZWxmLnN0YWdlKys7Cisg
ICAgfTsKK30KKworZnVuY3Rpb24gZGVzY2VuZGluZ0Vycm9yVGVzdEVxdWFsKCkKK3sKKyAgICBk
ZWJ1ZygiIik7CisgICAgdmFyIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5vcGVu
S2V5Q3Vyc29yKG51bGwsIElEQkN1cnNvci5QUkVWKSIpOworICAgIHNlbGYuc3RhZ2UgPSAwOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGlmIChzZWxmLnN0YWdlID09IDAp
IHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXki
LCAiMTciKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29u
dGludWUoJ0EgYml0MicpIik7CisgICAgICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSAxKSB7
CisgICAgICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5Iiwg
IjE1Iik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVz
dWx0Iik7CisgICAgICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJldmVudC50YXJnZXQu
cmVzdWx0LmNvbnRpbnVlKCdBIGJpdDInKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VS
UiIpOworICAgICAgICAgICAgc2VsZi50cmFucy5vbmNvbXBsZXRlID0gb25UcmFuc2FjdGlvbkNv
bXBsZXRlOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJJbGxlZ2FsIHN0YWdlLiIpOworICAgICAgICB9CisgICAgICAgIHNlbGYu
c3RhZ2UrKzsKKyAgICB9OworfQorCitmdW5jdGlvbiBvblRyYW5zYWN0aW9uQ29tcGxldGUoKQor
eworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImN1cnNvci5jb250aW51ZSgpIiwgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOworICAgIGZpbmlzaEpT
VGVzdCgpOworfQorCit0ZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWRlbGV0ZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItZGVsZXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRiNmUyYjkz
NTQ4YTNhNDlkYjU0YjBkNzIwMDE1ODg0YzEyZWIzMzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWRlbGV0ZS5qcwpAQCAt
MCwwICsxLDEwNSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlw
dHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1w
b3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWRE
QidzIG9wZW5DdXJzb3IuIik7CisKK3Rlc3QoKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAg
cmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhl
ZERCLm9wZW4oJ2N1cnNvci1kZWxldGUnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3Bl
blN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICB2YXIgZGIgPSBldmFsQW5kTG9n
KCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBzZXRWZXJzaW9uU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQoreworICAgIGRl
YnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOworICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9n
KCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5z
ICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNr
OworICAgIHRyYW5zLm9uY29tcGxldGUgPSBvcGVuQ3Vyc29yOworCisgICAgZGVsZXRlQWxsT2Jq
ZWN0U3RvcmVzKGRiKTsKKworICAgIHZhciBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVj
dFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Rlc3QnKSIpOworICAgIGV2YWxBbmRMb2co
Im9iamVjdFN0b3JlLmFkZCgnbXlWYWx1ZTEnLCAnbXlLZXkxJykiKTsKKyAgICBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZS5hZGQoJ215VmFsdWUyJywgJ215S2V5MicpIik7CisgICAgZXZhbEFuZExv
Zygib2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlMycsICdteUtleTMnKSIpOworICAgIGV2YWxBbmRM
b2coIm9iamVjdFN0b3JlLmFkZCgnbXlWYWx1ZTQnLCAnbXlLZXk0JykiKTsKK30KKworZnVuY3Rp
b24gb3BlbkN1cnNvcigpCit7CisgICAgZGVidWcoIm9wZW5DdXJzb3IxIik7CisgICAgZXZhbEFu
ZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3Rlc3QnXSwgSURCVHJhbnNhY3Rpb24uUkVB
RF9XUklURSkiKTsKKyAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQoIm15S2V5
MSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgndGVzdCcp
Lm9wZW5DdXJzb3Ioe3JhbmdlOiBrZXlSYW5nZX0pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBjdXJzb3JTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworICAgIGNvdW50ZXIgPSAxOworfQorCitmdW5jdGlvbiBjdXJzb3JTdWNjZXNzKCkK
K3sKKyAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBudWxsKSB7CisgICAgICAgIHNob3Vs
ZEJlKCJjb3VudGVyIiwgIjUiKTsKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5z
Lm9iamVjdFN0b3JlKCd0ZXN0Jykub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKKyAgICAgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3JFbXB0eTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZXZh
bEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5kZWxldGUoKSIpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZSIsICJteVZhbHVlIiArIGNvdW50
ZXIrKyk7CisgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7
Cit9CisKK2Z1bmN0aW9uIGN1cnNvckVtcHR5KCkKK3sKKyAgICBzaG91bGRCZU51bGwoImV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gYWRkT2JqZWN0OworfQor
CitmdW5jdGlvbiBhZGRPYmplY3QoKQoreworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJh
bnNhY3Rpb24oWyd0ZXN0J10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgb2Jq
ZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCd0
ZXN0JykiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCdteVZh
bHVlMScsICdteUtleTEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbkN1cnNvcjI7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIG9wZW5DdXJzb3IyKCkKK3sKKyAgICBkZWJ1Zygib3BlbkN1cnNvcjIiKTsKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZU9iamVjdDsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVsZXRlT2JqZWN0
KCkKK3sKKyAgICBzaG91bGRCZU5vbk51bGwoZXZlbnQudGFyZ2V0LnJlc3VsdCk7CisgICAgZXZh
bEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5kZWxldGUoKSIpOworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJvYmplY3RTdG9yZS5nZXQoJ215S2V5MScpIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSB2ZXJpZnlPYmplY3REZWxldGVkOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiB2ZXJpZnlPYmplY3REZWxldGVkKCkK
K3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ1bmRlZmluZWQiKTsKKyAg
ICBmaW5pc2hKU1Rlc3QoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWluY29u
c2lzdGVuY3kuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vy
c29yLWluY29uc2lzdGVuY3kuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTA2Nzc5ZDdiNWUzZjk5ZGY2YzU4NmVk
YzI3ZTc0M2I5ODBlYTViNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItaW5jb25zaXN0ZW5jeS5qcwpAQCAtMCwwICsxLDg1
IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRz
KCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgY29uc2lzdGVuY3kgb2YgSW5k
ZXhlZERCJ3MgY3Vyc29yIG9iamVjdHMuIik7CisKK3Rlc3QoKTsKKworZnVuY3Rpb24gdGVzdCgp
Cit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiaW5kZXhlZERCLm9wZW4oJ2N1cnNvci1pbmNvbnNpc3RlbmN5JykiKTsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgdmFy
IGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb25TdWNj
ZXNzKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKKyAgICBzZWxmLnRy
YW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hv
dWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVj
dGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gb3BlbkJhc2ljQ3Vyc29y
OworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIHZhciBvYmplY3RTdG9y
ZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2Jhc2lj
U3RvcmUnKSIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnc29tZVZhbHVlMScs
ICdzb21lS2V5MScpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOworICAgIGV2
YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnc29tZVZhbHVlMicsICdzb21lS2V5MicpLm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0
b3JlLmFkZCgnc29tZVZhbHVlMycsICdzb21lS2V5MycpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnc29tZVZhbHVl
NCcsICdzb21lS2V5NCcpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOworCit9
CisKK2Z1bmN0aW9uIG9wZW5CYXNpY0N1cnNvcigpCit7CisgICAgZGVidWcoIm9wZW5CYXNpY0N1
cnNvcigpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ2Jhc2lj
U3RvcmUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICB0cmFucy5vbmFib3J0
ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHRyYW5z
YWN0aW9uQ29tcGxldGU7CisKKyAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQo
InNvbWVLZXkxIik7CisgICAgc2VsZi5vYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coInRyYW5zLm9i
amVjdFN0b3JlKCdiYXNpY1N0b3JlJykiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib2Jq
ZWN0U3RvcmUub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGNoZWNrQ3Vyc29yOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworICAgIGNvdW50ZXIgPSAxOworfQorCitzdG9yZWRDdXJzb3IgPSBudWxsOworZnVuY3Rp
b24gY2hlY2tDdXJzb3IoKQoreworICAgIGRlYnVnKCIiKQorICAgIGRlYnVnKCJjaGVja0N1cnNv
cigpIik7CisgICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkgeworICAgICAgICBz
aG91bGRCZSgiY291bnRlciIsICI1Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYg
KHN0b3JlZEN1cnNvciA9PSBudWxsKQorICAgICAgc3RvcmVkQ3Vyc29yID0gZXZhbEFuZExvZygi
c3RvcmVkQ3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgc2hvdWxkQmVUcnVl
KCJzdG9yZWRDdXJzb3IgPT09IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoInN0b3JlZEN1cnNvci5rZXkiLCAic29tZUtleSIgKyBjb3VudGVyKTsKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgInNvbWVL
ZXkiICsgY291bnRlcik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzdG9yZWRDdXJzb3Iu
dmFsdWUiLCAic29tZVZhbHVlIiArIGNvdW50ZXIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZSIsICJzb21lVmFsdWUiICsgY291bnRlcik7Cisg
ICAgY291bnRlcisrOworICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGlu
dWUoKSIpOworfQorCitmdW5jdGlvbiB0cmFuc2FjdGlvbkNvbXBsZXRlKCkKK3sKKyAgICBkZWJ1
ZygidHJhbnNhY3Rpb25Db21wbGV0ZSgpIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1pbmRleC1kZWxldGUuanMgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWluZGV4LWRlbGV0ZS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42YmVlZWEyM2ExMGZmODMxNmE0MDU1Mzk5MWQyOWJlNWJjODYyNzBlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1p
bmRleC1kZWxldGUuanMKQEAgLTAsMCArMSwxMDkgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMp
IHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlw
dGlvbigiVGVzdCBJbmRleGVkREIncyBvcGVuQ3Vyc29yLiIpOworCit0ZXN0KCk7CisKK2Z1bmN0
aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdjdXJzb3ItaW5kZXgtZGVsZXRlJykiKTsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7
CisgICAgdmFyIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZl
cnNpb25TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKKyAg
ICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQg
PSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gb3BlbkN1
cnNvcjsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBvYmplY3RTdG9y
ZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Rlc3Qn
KSIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCd0ZXN0SW5kZXgn
LCAneCcpIik7CisKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoe3g6IDF9LCAnbXlL
ZXkxJykiKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoe3g6IDJ9LCAnbXlLZXky
JykiKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoe3g6IDN9LCAnbXlLZXkzJyki
KTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoe3g6IDR9LCAnbXlLZXk0JykiKTsK
K30KKworZnVuY3Rpb24gb3BlbkN1cnNvcigpCit7CisgICAgZGVidWcoIm9wZW5DdXJzb3IxIik7
CisgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3Rlc3QnXSwgSURCVHJh
bnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2Vy
Qm91bmQoMSk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCd0
ZXN0JykuaW5kZXgoJ3Rlc3RJbmRleCcpLm9wZW5DdXJzb3Ioa2V5UmFuZ2UpIik7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3JTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIGNvdW50ZXIgPSAxOworfQorCitmdW5jdGlvbiBj
dXJzb3JTdWNjZXNzKCkKK3sKKyAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBudWxsKSB7
CisgICAgICAgIHNob3VsZEJlKCJjb3VudGVyIiwgIjUiKTsKKyAgICAgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCd0ZXN0JykuaW5kZXgoJ3Rlc3RJbmRleCcpLm9w
ZW5DdXJzb3Ioa2V5UmFuZ2UpIik7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29y
RW1wdHk7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHZhciBkZWxldGVSZXF1ZXN0ID0gZXZhbEFu
ZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5kZWxldGUoKSIpOworICAgIGRlbGV0ZVJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHNob3VsZEJlKCJldmVudC50
YXJnZXQucmVzdWx0LmtleSIsICJjb3VudGVyKysiKTsKKyAgICBldmFsQW5kTG9nKCJldmVudC50
YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKK30KKworZnVuY3Rpb24gY3Vyc29yRW1wdHkoKQor
eworICAgIHNob3VsZEJlTnVsbCgiZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHRyYW5zLm9u
Y29tcGxldGUgPSBhZGRPYmplY3Q7Cit9CisKK2Z1bmN0aW9uIGFkZE9iamVjdCgpCit7CisgICAg
ZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3Rlc3QnXSwgSURCVHJhbnNhY3Rp
b24uUkVBRF9XUklURSkiKTsKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0
b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3Rlc3QnKSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJvYmplY3RTdG9yZS5hZGQoe3g6IDF9LCAnbXlLZXkxJykiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IG9wZW5DdXJzb3IyOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuQ3Vyc29yMigpCit7CisgICAgZGVidWco
Im9wZW5DdXJzb3IyIik7CisgICAgZXZhbEFuZExvZygiaW5kZXggPSBldmVudC50YXJnZXQuc291
cmNlLmluZGV4KCd0ZXN0SW5kZXgnKSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRl
eC5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRl
T2JqZWN0OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBkZWxldGVPYmplY3QoKQoreworICAgIHNob3VsZEJlTm9uTnVsbChldmVu
dC50YXJnZXQucmVzdWx0KTsKKyAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmRl
bGV0ZSgpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4LmdldCgxKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gdmVyaWZ5T2JqZWN0RGVsZXRlZDsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gdmVyaWZ5T2Jq
ZWN0RGVsZXRlZCgpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAidW5k
ZWZpbmVkIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L2N1cnNvci1rZXktb3JkZXIuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvY3Vyc29yLWtleS1vcmRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NWMyMTk5M2ZkNzIwYWFmNzU1
MDc2OTQxMWVlYWJiNTZmNGM0MDY3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1rZXktb3JkZXIuanMKQEAgLTAsMCArMSwy
MjUgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8u
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlw
dHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIga2V5cyBv
cmRlcmluZyBhbmQgcmVhZGJhY2sgZnJvbSBjdXJzb3JzLiIpOworCitmdW5jdGlvbiB0ZXN0KCkK
K3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgcHJlcGFyZURhdGFiYXNlKCk7
Cit9CisKK2Z1bmN0aW9uIHByZXBhcmVEYXRhYmFzZSgpCit7CisgICAgZGVidWcoIiIpOworICAg
IGV2YWxBbmRMb2coIm9wZW5yZXEgPSBpbmRleGVkREIub3BlbignY3Vyc29yLWtleS1vcmRlcicp
Iik7CisgICAgb3BlbnJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAg
b3BlbnJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZXZhbEFuZExvZygiZGIg
PSBvcGVucmVxLnJlc3VsdCIpOworICAgICAgICBldmFsQW5kTG9nKCJ2ZXJyZXEgPSBkYi5zZXRW
ZXJzaW9uKCcxJykiKTsKKyAgICAgICAgdmVycmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKKyAgICAgICAgdmVycmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICAg
ICAgICAgIHZlcnJlcS5yZXN1bHQub25jb21wbGV0ZSA9IHBvcHVsYXRlU3RvcmU7CisgICAgICAg
IH07CisgICAgfTsKK30KKworc2VsZi5rZXlzID0gWworICAgICItSW5maW5pdHkiLAorICAgICIt
TnVtYmVyLk1BWF9WQUxVRSIsCisgICAgIi0xIiwKKyAgICAiLU51bWJlci5NSU5fVkFMVUUiLAor
ICAgICIwIiwKKyAgICAiTnVtYmVyLk1JTl9WQUxVRSIsCisgICAgIjEiLAorICAgICJOdW1iZXIu
TUFYX1ZBTFVFIiwKKyAgICAiSW5maW5pdHkiLAorCisgICAgIm5ldyBEYXRlKDApIiwKKyAgICAi
bmV3IERhdGUoMTAwMCkiLAorICAgICJuZXcgRGF0ZSgxMzE3Mzk5OTMxMDIzKSIsCisKKyAgICAi
JyciLAorICAgICInXHgwMCciLAorICAgICInYSciLAorICAgICInYWEnIiwKKyAgICAiJ2InIiwK
KyAgICAiJ2JhJyIsCisKKyAgICAiJ1x4QTInIiwgLy8gVSswMEEyIENFTlQgU0lHTgorICAgICIn
XHU2QzM0JyIsIC8vIFUrNkMzNCBDSksgVU5JRklFRCBJREVPR1JBUEggKHdhdGVyKQorICAgICIn
XHVEODM0XHVERDFFJyIsIC8vIFUrMUQxMUUgTVVTSUNBTCBTWU1CT0wgRy1DTEVGIChVVEYtMTYg
c3Vycm9nYXRlIHBhaXIpCisgICAgIidcdUZGRkQnIiwgLy8gVStGRkZEIFJFUExBQ0VNRU5UIENI
QVJBQ1RFUgorCisgICAgIltdIiwKKworICAgICJbLUluZmluaXR5XSIsCisgICAgIlstTnVtYmVy
Lk1BWF9WQUxVRV0iLAorICAgICJbLTFdIiwKKyAgICAiWy1OdW1iZXIuTUlOX1ZBTFVFXSIsCisg
ICAgIlswXSIsCisgICAgIltOdW1iZXIuTUlOX1ZBTFVFXSIsCisgICAgIlsxXSIsCisgICAgIltO
dW1iZXIuTUFYX1ZBTFVFXSIsCisgICAgIltJbmZpbml0eV0iLAorCisgICAgIltuZXcgRGF0ZSgw
KV0iLAorICAgICJbbmV3IERhdGUoMTAwMCldIiwKKyAgICAiW25ldyBEYXRlKDEzMTczOTk5MzEw
MjMpXSIsCisKKyAgICAiWycnXSIsCisgICAgIlsnXHgwMCddIiwKKyAgICAiWydhJ10iLAorICAg
ICJbJ2FhJ10iLAorICAgICJbJ2InXSIsCisgICAgIlsnYmEnXSIsCisKKyAgICAiWydceEEyJ10i
LCAvLyBVKzAwQTIgQ0VOVCBTSUdOCisgICAgIlsnXHU2QzM0J10iLCAvLyBVKzZDMzQgQ0pLIFVO
SUZJRUQgSURFT0dSQVBIICh3YXRlcikKKyAgICAiWydcdUQ4MzRcdUREMUUnXSIsIC8vIFUrMUQx
MUUgTVVTSUNBTCBTWU1CT0wgRy1DTEVGIChVVEYtMTYgc3Vycm9nYXRlIHBhaXIpCisgICAgIlsn
XHVGRkZEJ10iLCAvLyBVK0ZGRkQgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSCisKKyAgICAiW1tdXSIs
CisKKyAgICAiW1tdLCBbXV0iLAorICAgICJbW10sIFtdLCBbXV0iLAorCisgICAgIltbW11dXSIs
CisgICAgIltbW1tdXV1dIgorXTsKKworZnVuY3Rpb24gY29tcGFyZShhLCBiKQoreworICAgIGlm
ICh0eXBlb2YgYSAhPT0gdHlwZW9mIGIpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIHN3aXRjaCAodHlwZW9mIGEpIHsKKyAgICAgICAgY2FzZSAndW5kZWZpbmVkJzogLy8g
Tm90IHZhbGlkIGtleXMsIGJ1dCBjb21wYXJlIGFueXdheS4KKyAgICAgICAgY2FzZSAnYm9vbGVh
bic6IC8vIE5vdCB2YWxpZCBrZXlzLCBidXQgY29tcGFyZSBhbnl3YXkuCisgICAgICAgIGNhc2Ug
J3N0cmluZyc6CisgICAgICAgICAgICByZXR1cm4gYSA9PT0gYjsKKyAgICAgICAgY2FzZSAnbnVt
YmVyJzoKKyAgICAgICAgICAgIGlmIChhID09PSBiKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IChhICE9PSAwKSB8fCAoMSAvIGEgPT09IDEgLyBiKTsgLy8gMCBpc24ndCAtMAorICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gYSAhPT0gYSAmJiBiICE9PSBiOyAv
LyBOYU4gaXMgTmFOCisgICAgICAgICAgICB9CisgICAgICAgIGNhc2UgJ29iamVjdCc6CisgICAg
ICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIERhdGUgJiYgYiBpbnN0YW5jZW9mIERhdGUpIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gK2EgPT09ICtiOworICAgICAgICAgICAgfSBlbHNlIGlmIChh
IGluc3RhbmNlb2YgQXJyYXkgJiYgYiBpbnN0YW5jZW9mIEFycmF5KSB7CisgICAgICAgICAgICAg
ICAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aCkgeworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgYS5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbXBh
cmUoYVtpXSwgYltpXSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIEZvciB0aGUgcHVy
cG9zZXMgb2YgdGhpcyB0ZXN0LCBvdGhlciBvYmplY3RzIGRvbid0IGNvdW50CisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorfQorCitmdW5jdGlvbiBwb3B1bGF0ZVN0b3JlKCkKK3sKKyAgICBkZWJ1Zygi
Iik7CisgICAgZGVidWcoInBvcHVsYXRpbmcgc3RvcmUuLi4iKTsKKyAgICBldmFsQW5kTG9nKCJ0
cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUp
Iik7CisgICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsi
KTsKKyAgICB0cmFucy5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgdHJh
bnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHZhciBjb3VudCA9IDA7
CisgICAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uKGtleSkgeworICAgICAgICBldmFsQW5kTG9nKCJz
dG9yZS5wdXQoIiArIChjb3VudCsrKSArICIsICIgKyBrZXkgKyAiKSIpOworICAgIH0pOworICAg
IHRyYW5zLm9uY29tcGxldGUgPSBjaGVja1N0b3JlOworfQorCitmdW5jdGlvbiBjaGVja1N0b3Jl
KCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIml0ZXJhdGluZyBjdXJzb3IuLi4iKTsK
KyAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRyYW5z
YWN0aW9uLlJFQURfT05MWSkiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVj
dFN0b3JlKCdzdG9yZScpOyIpOworICAgIHRyYW5zLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Cisg
ICAgZXZhbEFuZExvZygiY291bnQgPSAwIik7CisgICAgY3VycmVxID0gZXZhbEFuZExvZygiY3Vy
cmVxID0gc3RvcmUub3BlbkN1cnNvcigpIik7CisgICAgY3VycmVxLm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICBjdXJyZXEub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgIGlmIChjdXJyZXEucmVzdWx0KSB7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJz
b3IgPSBjdXJyZXEucmVzdWx0Iik7CisgICAgICAgICAgICBzaG91bGRCZVRydWUoImNvbXBhcmUo
Y3Vyc29yLmtleSwgIiArIGtleXNbY291bnRdICsgIikiKTsKKyAgICAgICAgICAgIGV2YWxBbmRM
b2coImdldHJlcSA9IHN0b3JlLmdldChjdXJzb3Iua2V5KSIpOworICAgICAgICAgICAgZ2V0cmVx
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgICAgIGdldHJlcS5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBzaG91bGRCZVRydWUoImdl
dHJlcS5yZXN1bHQgPT09IGNvdW50KysiKTsKKyAgICAgICAgICAgICAgICBjdXJzb3IuY29udGlu
dWUoKTsKKyAgICAgICAgICAgIH07CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzaG91
bGRCZVRydWUoImNvdW50ID09PSBrZXlzLmxlbmd0aCIpOworICAgICAgICAgICAgZmluaXNoVXAo
KTsKKyAgICAgICAgfQorICAgIH07Cit9CisKK2Z1bmN0aW9uIGZpbmlzaFVwKCkKK3sKKyAgICB0
ZXN0S2V5Q29tcGFyZSgpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitmdW5jdGlvbiB0ZXN0
S2V5Q29tcGFyZSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ2YWxpZGF0ZSBjb21w
YXJlIGZ1bmN0aW9uIik7CisgICAgdmFyIGNhc2VzID0gWworICAgICAgICAidW5kZWZpbmVkIiwK
KyAgICAgICAgInRydWUiLAorICAgICAgICAiZmFsc2UiLAorICAgICAgICAiMCIsCisgICAgICAg
ICItMCIsCisgICAgICAgICIxMjMiLAorICAgICAgICAiSW5maW5pdHkiLAorICAgICAgICAiLUlu
ZmluaXR5IiwKKyAgICAgICAgIk5hTiIsCisgICAgICAgICInJyIsCisgICAgICAgICInYWJjJyIs
CisgICAgICAgICIneHl6JyIsCisgICAgICAgICJuZXcgRGF0ZSgwKSIsCisgICAgICAgICJuZXcg
RGF0ZSgxZTMpIiwKKyAgICAgICAgIm5ldyBEYXRlKDFlOSkiLAorICAgICAgICAiW10iLAorICAg
ICAgICAiWzEyM10iLAorICAgICAgICAiWydhYmMnXSIsCisgICAgICAgICJbMTIzLCAnYWJjJ10i
LAorICAgICAgICAiWydhYmMnLCAxMjNdIiwKKyAgICAgICAgIltbXV0iLAorICAgICAgICAiW1sx
MjNdXSIsCisgICAgICAgICJbWydhYmMnXV0iLAorICAgICAgICAiW1sxMjNdLCAnYWJjJ10iLAor
ICAgICAgICAiW1sxMjNdLCAxMjNdIgorICAgIF07CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGNhc2VzLmxlbmd0aDsgKytpKSB7CisgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgY2FzZXMu
bGVuZ3RoOyArK2opIHsKKyAgICAgICAgICAgIGlmIChpID09PSBqKSB7CisgICAgICAgICAgICAg
ICAgc2hvdWxkQmVUcnVlKCJjb21wYXJlKCIgKyBjYXNlc1tpXSArICIsICIgKyBjYXNlc1tqXSAr
ICIpIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHNob3VsZEJlRmFs
c2UoImNvbXBhcmUoIiArIGNhc2VzW2ldICsgIiwgIiArIGNhc2VzW2pdICsgIikiKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9jdXJzb3ItcHJpbWFyeS1rZXktb3JkZXIuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXByaW1hcnkta2V5LW9yZGVyLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjg5MjkxMGMzNmJkMzRiYmRmODg5ZjM3MmM2NjU2ZTI1ZmM0NmNmNGEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXBy
aW1hcnkta2V5LW9yZGVyLmpzCkBAIC0wLDAgKzEsOTggQEAKK2lmICh0aGlzLmltcG9ydFNjcmlw
dHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNj
cmlwdGlvbigiVGVzdCBJbmRleGVkREIgcHJpbWFyeSBrZXkgb3JkZXJpbmcgYW5kIHJlYWRiYWNr
IGZyb20gY3Vyc29ycy4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9y
UHJlZml4ZXMoKTsKKworICAgIHByZXBhcmVEYXRhYmFzZSgpOworfQorCitmdW5jdGlvbiBwcmVw
YXJlRGF0YWJhc2UoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBldmFsQW5kTG9nKCJvcGVuUmVx
dWVzdCA9IGluZGV4ZWREQi5vcGVuKCdjdXJzb3ItcHJpbWFyeS1rZXktb3JkZXInKSIpOworICAg
IG9wZW5SZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBvcGVu
UmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZXZhbEFuZExvZygiZGIg
PSBvcGVuUmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgZXZhbEFuZExvZygidmVyc2lvbkNoYW5n
ZVJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICAgICAgdmVyc2lvbkNoYW5nZVJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICB2ZXJzaW9u
Q2hhbmdlUmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGV2YWxB
bmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICAgICAg
ICAgIGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4JywgJ2luZGV4
S2V5JykiKTsKKworICAgICAgICAgICAgdmVyc2lvbkNoYW5nZVJlcXVlc3QucmVzdWx0Lm9uY29t
cGxldGUgPSBwb3B1bGF0ZVN0b3JlOworICAgICAgICB9OworICAgIH07Cit9CisKK3NlbGYua2V5
cyA9IFsKKyAgICAiLUluZmluaXR5IiwKKyAgICAiLTIiLAorICAgICItMSIsCisgICAgIjAiLAor
ICAgICIxIiwKKyAgICAiMiIsCisgICAgIkluZmluaXR5IiwKKworICAgICInMCciLAorICAgICIn
MSciLAorICAgICInMiciLAorICAgICInQSciLAorICAgICInQiciLAorICAgICInQyciLAorICAg
ICInYSciLAorICAgICInYiciLAorICAgICInYyciCitdOworCitmdW5jdGlvbiBwb3B1bGF0ZVN0
b3JlKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInBvcHVsYXRpbmcgc3RvcmUuLi4i
KTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRy
YW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5v
YmplY3RTdG9yZSgnc3RvcmUnKTsiKTsKKyAgICB0cmFucy5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNr
OworICAgIHZhciBjb3VudCA9IDA7CisgICAgdmFyIGluZGV4S2V5ID0gMDsKKyAgICB2YXIga2V5
cyA9IHNlbGYua2V5cy5zbGljZSgpOworICAgIGtleXMucmV2ZXJzZSgpOworICAgIGtleXMuZm9y
RWFjaChmdW5jdGlvbihrZXkpIHsKKyAgICAgICAgdmFyIHZhbHVlID0geyBpbmRleEtleTogaW5k
ZXhLZXksIGNvdW50OiBjb3VudCsrIH07CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgi
ICsgSlNPTi5zdHJpbmdpZnkodmFsdWUpICsgIiwgIiArIGtleSArICIpIik7CisgICAgfSk7Cisg
ICAgdHJhbnMub25jb21wbGV0ZSA9IGNoZWNrU3RvcmU7Cit9CisKK2Z1bmN0aW9uIGNoZWNrU3Rv
cmUoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiaXRlcmF0aW5nIGN1cnNvci4uLiIp
OworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJh
bnNhY3Rpb24uUkVBRF9PTkxZKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2Jq
ZWN0U3RvcmUoJ3N0b3JlJyk7Iik7CisgICAgZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5pbmRl
eCgnaW5kZXgnKTsiKTsKKyAgICB0cmFucy5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIGN1
cnNvclJlcXVlc3QgPSBldmFsQW5kTG9nKCJjdXJzb3JSZXF1ZXN0ID0gaW5kZXgub3BlbkN1cnNv
cigpIik7CisgICAgZXZhbEFuZExvZygiY291bnQgPSAwIik7CisgICAgdmFyIGluZGV4S2V5ID0g
MDsKKyAgICBjdXJzb3JSZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICBjdXJzb3JSZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAo
Y3Vyc29yUmVxdWVzdC5yZXN1bHQpIHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvciA9
IGN1cnNvclJlcXVlc3QucmVzdWx0Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtl
eSIsIFN0cmluZyhpbmRleEtleSkpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmlt
YXJ5S2V5Iiwgc2VsZi5rZXlzW2NvdW50KytdKTsKKyAgICAgICAgICAgIGN1cnNvci5jb250aW51
ZSgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJjb3VudCA9
PT0ga2V5cy5sZW5ndGgiKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9
CisgICAgfTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItcmV2
ZXJzZS1idWcuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vy
c29yLXJldmVyc2UtYnVnLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwOGVhZGVhOGM4M2RlNDgyZjEwZjA4ZDhm
MDIzYmJmMGY5YzI5NDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXJldmVyc2UtYnVnLmpzCkBAIC0wLDAgKzEsMTAxIEBA
CitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdz
aGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGtleXMgb3JkZXJp
bmcgYW5kIHJlYWRiYWNrIGZyb20gY3Vyc29ycy4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7Cisg
ICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIHByZXBhcmVEYXRhYmFzZSgpOworfQor
CitmdW5jdGlvbiBwcmVwYXJlRGF0YWJhc2UoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBldmFs
QW5kTG9nKCJvcGVucmVxID0gaW5kZXhlZERCLm9wZW4oJ2N1cnNvci1yZXZlcnNlLWJ1ZycpIik7
CisgICAgb3BlbnJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgb3Bl
bnJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZXZhbEFuZExvZygiZGIgPSBv
cGVucmVxLnJlc3VsdCIpOworICAgICAgICBldmFsQW5kTG9nKCJ2ZXJyZXEgPSBkYi5zZXRWZXJz
aW9uKCcxJykiKTsKKyAgICAgICAgdmVycmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKKyAgICAgICAgdmVycmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKyAgICAgICAgICAgIHN0b3JlID0gZXZhbEFu
ZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgICAgICAg
ICAgZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4JywgJycpIik7CisgICAgICAg
ICAgICB2ZXJyZXEucmVzdWx0Lm9uY29tcGxldGUgPSBwb3B1bGF0ZVN0b3JlOworICAgICAgICB9
OworICAgIH07Cit9CisKK2Z1bmN0aW9uIHBvcHVsYXRlU3RvcmUoKQoreworICAgIGRlYnVnKCIi
KTsKKyAgICBkZWJ1ZygicG9wdWxhdGluZyBzdG9yZS4uLiIpOworICAgIGV2YWxBbmRMb2coInRy
YW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSki
KTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpOyIp
OworICAgIHRyYW5zLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB0cmFu
cy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisKKyAgICBldmFsQW5kTG9nKCJz
dG9yZS5wdXQoMSwgMSkiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoMiwgMikiKTsKKyAg
ICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoMywgMykiKTsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0g
dGVzdEN1cnNvcjsKK30KKwordmFyIHRlc3RzID0gWworICAgICAgICAgICAgICAgIHt1cHBlckJv
dW5kOiA3LCBvcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDN9LAorICAgICAgICAgICAgICAgIHt1cHBl
ckJvdW5kOiA3LCBvcGVuOiB0cnVlLCAgZXhwZWN0ZWQ6IDN9LAorICAgICAgICAgICAgICAgIHt1
cHBlckJvdW5kOiAzLCBvcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDN9LAorICAgICAgICAgICAgICAg
IHt1cHBlckJvdW5kOiAzLCBvcGVuOiB0cnVlLCAgZXhwZWN0ZWQ6IDJ9CisgICAgICAgICAgICBd
OworCitmdW5jdGlvbiB0ZXN0Q3Vyc29yKCkKK3sKKyAgICBkZWJ1ZygidGVzdEN1cnNvcigpIik7
CisKKyAgICBpZiAodGVzdHMubGVuZ3RoID09PSAwKSB7CisgICAgICAgIGRlYnVnKCJObyBtb3Jl
IHRlc3RzLiIpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIHRlc3QgPSB0ZXN0cy5zaGlmdCgpOworCisgICAgZXZhbEFuZExvZygidHJhbnMg
PSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7Cisg
ICAgdHJhbnMub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRyYW5zLm9u
YWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0g
dGVzdEN1cnNvcjsKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdz
dG9yZScpOyIpOworICAgIGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4Jyk7
Iik7CisKKyAgICB2YXIgdGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGV2YWxB
bmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICAgICAgaWYgKGN1cnNv
ciA9PT0gbnVsbCkgeworICAgICAgICAgICAgZGVidWcoImN1cnNvciBzaG91bGQgbm90IGJlIG51
bGwiKTsKKyAgICAgICAgICAgIGZhaWwoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgInRlc3QuZXhwZWN0ZWQiKTsKKyAg
ICAgICAgaWYgKCJ2YWx1ZSIgaW4gY3Vyc29yKQorICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNv
ci52YWx1ZSIsICJ0ZXN0LmV4cGVjdGVkIik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJp
bWFyeUtleSIsICJ0ZXN0LmV4cGVjdGVkIik7CisKKyAgICAgICAgLy8gTGV0IHRoZSB0cmFuc2Fj
dGlvbiBmaW5pc2guCisgICAgfQorCisgICAgZGVidWcoInVwcGVyQm91bmQ6ICIgKyB0ZXN0LnVw
cGVyQm91bmQgKyAiIG9wZW46ICIgKyB0ZXN0Lm9wZW4gKyAiIGV4cGVjdGVkOiAiICsgdGVzdC5l
eHBlY3RlZCk7CisgICAgc3RvcmVSZXEgPSBldmFsQW5kTG9nKCJzdG9yZVJlcSA9IHN0b3JlLm9w
ZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCh0ZXN0LnVwcGVyQm91bmQsIHRlc3Qub3Bl
biksIElEQkN1cnNvci5QUkVWKSIpOworICAgIHN0b3JlUmVxLm9uc3VjY2VzcyA9IHRlc3RGdW5j
dGlvbjsKKworICAgIGluZGV4UmVxID0gZXZhbEFuZExvZygiaW5kZXhSZXEgPSBpbmRleC5vcGVu
Q3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQodGVzdC51cHBlckJvdW5kLCB0ZXN0Lm9wZW4p
LCBJREJDdXJzb3IuUFJFVikiKTsKKyAgICBpbmRleFJlcS5vbnN1Y2Nlc3MgPSB0ZXN0RnVuY3Rp
b247CisKKyAgICBpbmRleEtleVJlcSA9IGV2YWxBbmRMb2coImluZGV4S2V5UmVxID0gaW5kZXgu
b3BlbktleUN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKHRlc3QudXBwZXJCb3VuZCwgdGVz
dC5vcGVuKSwgSURCQ3Vyc29yLlBSRVYpIik7CisgICAgaW5kZXhLZXlSZXEub25zdWNjZXNzID0g
dGVzdEZ1bmN0aW9uOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNv
ci1za2lwLWRlbGV0ZWQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvY3Vyc29yLXNraXAtZGVsZXRlZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MGU0ZDQxYmM1MjQ0YTVkNTM0
OGMxYzAzMTQ5NDgwMTNhNTJiN2Q3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1za2lwLWRlbGV0ZWQuanMKQEAgLTAsMCAr
MSwxOTMgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcu
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNj
cmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBj
dXJzb3Igc2tpcHMgZGVsZXRlZCBlbnRyaWVzLiIpOworCit2YXIgbmFtZXMgPSBbJ0FscGhhJywg
J0JyYXZvJywgJ0NoYXJsaWUnLCAnRGVsdGEnLCAnRWNobycsICdGb3h0cm90JywgJ0dvbGYnLAor
ICAgICAgICAgICAgICdIb3RlbCcsICdJbmRpYScsICdKdWxpZXQnLCAnS2lsbycsICdMaW1hJywg
J01pa2UnLCAnTm92ZW1iZXInLAorICAgICAgICAgICAgICdPc2NhcicsICdQYXBhJywgJ1F1ZWJl
YycsICdSb21lbycsICdTaWVycmEnLCAnVGFuZ28nLCAnVW5pZm9ybScsCisgICAgICAgICAgICAg
J1ZpY3RvcicsICdXaGlza2V5JywgJ1gtcmF5JywgJ1lhbmtlZScsICdadWx1J107CisKK3Rlc3Qo
KTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2N1cnNvci1za2lwLWRlbGV0
ZWQnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5T
dWNjZXNzKCkKK3sKKyAgICB2YXIgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcg
dmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2Vz
cygpOiIpOworICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJh
bnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxl
dGUgPSBiYXNpY0N1cnNvclRlc3Q7CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwor
CisgICAgdmFyIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVh
dGVPYmplY3RTdG9yZSgnc3RvcmUnLCB7a2V5UGF0aDogJ2lkJ30pIik7CisgICAgZXZhbEFuZExv
Zygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ25hbWVJbmRleCcsICduYW1lJykiKTsKKyAgICBy
ZXNldE9iamVjdFN0b3JlKGZ1bmN0aW9uKCkge30pOworfQorCit2YXIgc2lsZW50RXJyb3JIYW5k
bGVyID0gZnVuY3Rpb24oKSB7IGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IH0KKworZnVuY3Rpb24g
cmVzZXRPYmplY3RTdG9yZShjYWxsYmFjaykKK3sKKyAgICBkZWJ1ZygiXG5yZXNldE9iamVjdFN0
b3JlKCk6Iik7CisgICAgaWYgKGNhbGxiYWNrID09PSB1bmRlZmluZWQpCisgICAgICAgIGNhbGxi
YWNrID0gZnVuY3Rpb24gKCkge307CisKKyAgICB2YXIgb2JqZWN0U3RvcmUgPSB0cmFucy5vYmpl
Y3RTdG9yZSgnc3RvcmUnKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsg
aSsrKQorICAgICAgICBvYmplY3RTdG9yZS5kZWxldGUoaSkub25lcnJvciA9IHNpbGVudEVycm9y
SGFuZGxlcjsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKQorICAg
ICAgICBvYmplY3RTdG9yZS5hZGQoe2lkOiBpLCBuYW1lOiBuYW1lc1tpXX0pLm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKworICAgIGRlYnVnKCIiKTsKKyAgICBjYWxsYmFjaygp
OworfQorCitmdW5jdGlvbiBjb250YWlucyhhcnIsIG9iaikKK3sKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGFyci5sZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoYXJyW2ldID09IG9iaikKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3Zh
ciBjdXJzb3I7Cit2YXIgZGVsZXRlZDsKK3ZhciBzZWVuOworCitmdW5jdGlvbiB0ZXN0Q3Vyc29y
KGRlbGV0ZUxpc3QsIGNyZWF0ZUN1cnNvckNvbW1hbmQsIGNhbGxiYWNrKQoreworICAgIGRlYnVn
KCJcbnRlc3RDdXJzb3IoKToiKTsKKyAgICBkZWxldGVkID0gW107CisgICAgc2VlbiA9IFtdOwor
CisgICAgLy8gQ3JlYXRlIHRoZSBjdXJzb3IuCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coY3Jl
YXRlQ3Vyc29yQ29tbWFuZCk7CisKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkgeworICAgICAgICAgICAgLy8gTWFr
ZSBzdXJlIHdlIGhhdmUgc2VlbiBldmVyeSBub24tZGVsZXRlZCBpdGVtLgorICAgICAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAg
IGlmIChjb250YWlucyhkZWxldGVkLCBpKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgICAgICAgICBpZiAoIWNvbnRhaW5zKHNlZW4sIGkpKQorICAgICAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJDdXJzb3IgZGlkIG5vdCBzZWUgaXRlbSB3aXRoIGlkOiAiICsg
aSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSB1c2VkIGV2
ZXJ5IHJ1bGUgaW4gfGRlbGV0ZUxpc3R8LgorICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBkZWxldGVMaXN0Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKCFjb250YWlu
cyhzZWVuLCBkZWxldGVMaXN0W2ldLmlkKSkKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGVsZXRlTGlzdCBydWxlIHdpdGggaWQ6ICIgKyBkZWxldGVMaXN0W2ldLmlkICsgIiB3YXMg
bmV2ZXIgdXNlZC4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZGVidWcoIiIpOwor
ICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgICAgIGRlYnVnKGV2
ZW50LnRhcmdldC5yZXN1bHQudmFsdWUuaWQgKyAiOiAiICsgZXZlbnQudGFyZ2V0LnJlc3VsdC52
YWx1ZS5uYW1lKTsKKyAgICAgICAgc2Vlbi5wdXNoKGV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUu
aWQpOworCisgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBkb24ndCBzZWUgYW55IGRlbGV0ZWQgaXRl
bXMuCisgICAgICAgIGlmIChjb250YWlucyhkZWxldGVkLCBldmVudC50YXJnZXQucmVzdWx0LnZh
bHVlLmlkKSkKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIkN1cnNvciBoaXQgcHJldmlvdXNseSBk
ZWxldGVkIGVsZW1lbnQuIik7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZWxldGVM
aXN0Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdC52
YWx1ZS5pZCA9PSBkZWxldGVMaXN0W2ldLmlkKSB7CisgICAgICAgICAgICAgICAgLy8gRGVsZXRl
IG9iamVjdHMgdGFyZ2V0ZWQgYnkgdGhpcyBpZC4KKyAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0
cyA9IGRlbGV0ZUxpc3RbaV0udGFyZ2V0czsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0g
MDsgaiA8IHRhcmdldHMubGVuZ3RoOyBqKyspIHsKKyAgICAgICAgICAgICAgICAgICAgZGVsZXRl
ZC5wdXNoKHRhcmdldHNbal0pOworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpLmRlbGV0ZSgiICsgdGFy
Z2V0c1tqXSArICIpIik7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICAgICAgICAgICAgICBpZiAoaiA9PSB0YXJn
ZXRzLmxlbmd0aCAtIDEpCisgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uKCkgeyBjdXJzb3IuY29udGludWUoKTsgfQorICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICBjdXJzb3IuY29udGludWUoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGJhc2ljQ3Vyc29y
VGVzdCgpCit7CisgICAgZGVidWcoImJhc2ljQ3Vyc29yVGVzdCgpIik7CisKKyAgICBldmFsQW5k
TG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUnXSwgSURCVHJhbnNhY3Rpb24uUkVB
RF9XUklURSkiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7
CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHRyYW5zYWN0aW9uQ29tcGxldGU7CisKKyAgICB2YXIg
ZGVsZXRlcyA9IFt7aWQ6IDEsIHRhcmdldHM6IFswXX0sCisgICAgICAgICAgICAgICAgICAge2lk
OiAyLCB0YXJnZXRzOiBbbmFtZXMubGVuZ3RoIC0gMV19LAorICAgICAgICAgICAgICAgICAgIHtp
ZDogMywgdGFyZ2V0czogWzUsNiw3XX0sCisgICAgICAgICAgICAgICAgICAge2lkOiAxMCwgdGFy
Z2V0czogWzEwXX0sCisgICAgICAgICAgICAgICAgICAge2lkOiAxMiwgdGFyZ2V0czogWzEzXX0s
CisgICAgICAgICAgICAgICAgICAge2lkOiAxNSwgdGFyZ2V0czogWzE0XX0sCisgICAgICAgICAg
ICAgICAgICAge2lkOiAyMCwgdGFyZ2V0czogWzE3LDE4XX0KKyAgICAgICAgICAgICAgICAgICBd
OworCisgICAgdGVzdEN1cnNvcihkZWxldGVzLCAidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyku
b3BlbkN1cnNvcihJREJLZXlSYW5nZS5sb3dlckJvdW5kKDApKSIsIGZ1bmN0aW9uKCkgeyByZXNl
dE9iamVjdFN0b3JlKHJldmVyc2VDdXJzb3JUZXN0KTsgfSk7Cit9CisKK2Z1bmN0aW9uIHJldmVy
c2VDdXJzb3JUZXN0KCkKK3sKKyAgICBkZWJ1ZygicmV2ZXJzZUN1cnNvclRlc3QoKToiKTsKKwor
ICAgIHZhciBkZWxldGVzID0gW3tpZDogMjQsIHRhcmdldHM6IFtuYW1lcy5sZW5ndGggLSAxXX0s
CisgICAgICAgICAgICAgICAgICAge2lkOiAyMywgdGFyZ2V0czogWzBdfSwKKyAgICAgICAgICAg
ICAgICAgICB7aWQ6IDIyLCB0YXJnZXRzOiBbMjAsIDE5LCAxOF19LAorICAgICAgICAgICAgICAg
ICAgIHtpZDogMTUsIHRhcmdldHM6IFsxNV19LAorICAgICAgICAgICAgICAgICAgIHtpZDogMTMs
IHRhcmdldHM6IFsxMl19LAorICAgICAgICAgICAgICAgICAgIHtpZDogMTAsIHRhcmdldHM6IFsx
MV19LAorICAgICAgICAgICAgICAgICAgIHtpZDogNSwgdGFyZ2V0czogWzcsOF19CisgICAgICAg
ICAgICAgICAgICAgXTsKKworICAgIHRlc3RDdXJzb3IoZGVsZXRlcywgInRyYW5zLm9iamVjdFN0
b3JlKCdzdG9yZScpLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgwKSwgSURCQ3Vy
c29yLlBSRVYpIiwgZnVuY3Rpb24oKSB7IHJlc2V0T2JqZWN0U3RvcmUoaW5kZXhDdXJzb3JUZXN0
KTsgfSk7Cit9CisKK2Z1bmN0aW9uIGluZGV4Q3Vyc29yVGVzdCgpCit7CisgICAgZGVidWcoImlu
ZGV4Q3Vyc29yVGVzdCgpOiIpOworCisgICAgdmFyIGRlbGV0ZXMgPSBbe2lkOiAxLCB0YXJnZXRz
OiBbMF19LAorICAgICAgICAgICAgICAgICAgIHtpZDogMiwgdGFyZ2V0czogW25hbWVzLmxlbmd0
aCAtIDFdfSwKKyAgICAgICAgICAgICAgICAgICB7aWQ6IDMsIHRhcmdldHM6IFs1LDYsN119LAor
ICAgICAgICAgICAgICAgICAgIHtpZDogMTAsIHRhcmdldHM6IFsxMF19LAorICAgICAgICAgICAg
ICAgICAgIHtpZDogMTIsIHRhcmdldHM6IFsxM119LAorICAgICAgICAgICAgICAgICAgIHtpZDog
MTUsIHRhcmdldHM6IFsxNF19LAorICAgICAgICAgICAgICAgICAgIHtpZDogMjAsIHRhcmdldHM6
IFsxNywxOF19CisgICAgICAgICAgICAgICAgICAgXTsKKworICAgIHRlc3RDdXJzb3IoZGVsZXRl
cywgInRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpLmluZGV4KCduYW1lSW5kZXgnKS5vcGVuQ3Vy
c29yKElEQktleVJhbmdlLmxvd2VyQm91bmQoJ0FscGhhJykpIiwgZnVuY3Rpb24oKSB7IH0pOwor
fQorCitmdW5jdGlvbiB0cmFuc2FjdGlvbkNvbXBsZXRlKCkKK3sKKyAgICBkZWJ1ZygidHJhbnNh
Y3Rpb25Db21wbGV0ZSgpOiIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9jdXJzb3ItdXBkYXRlLXZhbHVlLWFyZ3VtZW50LXJlcXVpcmVkLmpzIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci11cGRhdGUtdmFsdWUt
YXJndW1lbnQtcmVxdWlyZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTFjMjczZDJiZThiZWNhNmUwY2EwZTQ5
Y2Q1NDc2Y2E1MDBkNzgzYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItdXBkYXRlLXZhbHVlLWFyZ3VtZW50LXJlcXVpcmVk
LmpzCkBAIC0wLDAgKzEsNzMgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBv
cnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwor
ICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJ
bmRleGVkREIgY3Vyc29yLnVwZGF0ZSByZXF1aXJlZCBhcmd1bWVudHMiKTsKKworZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxm
LmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2Ui
OworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlw
dGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVu
U3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lv
bignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0ZXN0R3JvdXAxOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiB0ZXN0
R3JvdXAxKCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgb2JqZWN0
U3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnYXV0b0luY3JlbWVudCcs
IHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9KTsiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICB0ZXN0R3JvdXAyKCk7CisgICAgfQorfQorCitmdW5j
dGlvbiB0ZXN0R3JvdXAyKCkKK3sKKyAgICBrZXlzID0gZXZhbEFuZExvZygia2V5cyA9IFsxLCAt
MSwgMCwgMTAsIDIwMDAsICdxJywgJ3onLCAndHdvJywgJ2InLCAnYSddOyIpOworCisgICAga2V5
SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDA7Iik7CisKKyAgICBmb3IgKGkgaW4ga2V5
cykgeworICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5h
ZGQoJ2ZvbycsIGtleXNbaV0pOyIpOworICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7CisgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50
KSB7CisgICAgICAgIGlmICgrK2tleUluZGV4ID09IGtleXMubGVuZ3RoKSB7CisgICAgICAgICAg
dGVzdEdyb3VwMygpOworICAgICAgICB9CisgICAgICB9OworICAgIH0KK30KKworZnVuY3Rpb24g
dGVzdEdyb3VwMygpCit7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmpl
Y3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQp
IHsKKyAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJl
c3VsdDsiKTsKKyAgICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICAgICAgc2hvdWxkVGhyb3co
ImN1cnNvci51cGRhdGUoKTsiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRlc3RG
YWlsZWQoImN1cnNvciB3YXMgbnVsbCIpOworICAgICAgICB9CisgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworICAgIH0KK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3It
dXBkYXRlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNv
ci11cGRhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGMwZDUxYjEyMWRhYmVjM2VhZWRkYjIzMTlhMjAzMGMy
ZjBkZmFkYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9jdXJzb3ItdXBkYXRlLmpzCkBAIC0wLDAgKzEsMjE2IEBACitpZiAodGhpcy5p
bXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsK
K30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgY3Vyc29yIHVwZGF0ZS4iKTsKKwor
dGVzdCgpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygp
OworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignY3Vyc29yLXVwZGF0
ZScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1
Y2Nlc3MoKQoreworICAgIHZhciBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2
ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb25TdWNjZXNzOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCit7CisgICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNz
KCk6Iik7CisgICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKyAgICB0cmFu
cy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0
ZSA9IG9wZW5CYXNpY0N1cnNvcjsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisK
KyAgICB2YXIgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdiYXNpY1N0b3JlJykiKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9y
ZS5hZGQoJ215VmFsdWUxJywgJ215S2V5MScpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjayIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnbXlWYWx1ZTInLCAnbXlL
ZXkyJykub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7CisgICAgZXZhbEFuZExv
Zygib2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlMycsICdteUtleTMnKS5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2siKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ215
VmFsdWU0JywgJ215S2V5NCcpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOwor
CisgICAgdmFyIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVh
dGVPYmplY3RTdG9yZSgnYXV0b0luY3JlbWVudFN0b3JlJywge2F1dG9JbmNyZW1lbnQ6IHRydWV9
KSIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnZm9vMScpLm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFk
ZCgnZm9vMicpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOworICAgIGV2YWxB
bmRMb2coIm9iamVjdFN0b3JlLmFkZCgnZm9vMycpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnZm9vNCcpLm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOworCisgICAgdmFyIG9iamVjdFN0b3JlID0g
ZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgna2V5UGF0aFN0
b3JlJywge2tleVBhdGg6ICdpZCd9KSIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmNy
ZWF0ZUluZGV4KCdudW1iZXJJbmRleCcsICdudW1iZXInKSIpOworICAgIGV2YWxBbmRMb2coIm9i
amVjdFN0b3JlLmFkZCh7bnVtYmVyOiAxLCBpZDogMX0pLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCh7bnVtYmVyOiAy
LCBpZDogMn0pLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOworICAgIGV2YWxB
bmRMb2coIm9iamVjdFN0b3JlLmFkZCh7bnVtYmVyOiAzLCBpZDogM30pLm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCh7
bnVtYmVyOiA0LCBpZDogNH0pLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOwor
fQorCitmdW5jdGlvbiBvcGVuQmFzaWNDdXJzb3IoKQoreworICAgIGRlYnVnKCJvcGVuQmFzaWND
dXJzb3IoKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydiYXNp
Y1N0b3JlJywgJ2F1dG9JbmNyZW1lbnRTdG9yZScsICdrZXlQYXRoU3RvcmUnXSwgSURCVHJhbnNh
Y3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0
Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHRyYW5zYWN0aW9uQ29tcGxldGU7CisK
KyAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQoIm15S2V5MSIpOworICAgIHNl
bGYub2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYmFzaWNTdG9y
ZScpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLm9wZW5DdXJzb3Io
a2V5UmFuZ2UpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBiYXNpY1VwZGF0ZUN1cnNvcjsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBjb3Vu
dGVyID0gMTsKK30KKworZnVuY3Rpb24gYmFzaWNVcGRhdGVDdXJzb3IoKQoreworICAgIGRlYnVn
KCJiYXNpY1VwZGF0ZUN1cnNvcigpIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5zb3Vy
Y2UiLCAib2JqZWN0U3RvcmUiKTsKKyAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBudWxs
KSB7CisgICAgICAgIHNob3VsZEJlKCJjb3VudGVyIiwgIjUiKTsKKyAgICAgICAgY291bnRlciA9
IDE7CisKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdi
YXNpY1N0b3JlJykub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKKyAgICAgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBiYXNpY0NoZWNrQ3Vyc29yOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LnVwZGF0ZSgnbXlVcGRhdGVkVmFs
dWUnICsgY291bnRlcisrKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7
IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5zb3VyY2UuY29udGludWUoKSIpOyB9CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGJh
c2ljQ2hlY2tDdXJzb3IoKQoreworICAgIGRlYnVnKCJiYXNpY0NoZWNrQ3Vyc29yKCkiKTsKKyAg
ICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBudWxsKSB7CisgICAgICAgIHNob3VsZEJlKCJj
b3VudGVyIiwgIjUiKTsKKyAgICAgICAgY291bnRlciA9IDE7CisKKyAgICAgICAga2V5UmFuZ2Ug
PSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKDEpOworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygidHJhbnMub2JqZWN0U3RvcmUoJ2F1dG9JbmNyZW1lbnRTdG9yZScpLm9wZW5DdXJzb3Ioa2V5
UmFuZ2UpIik7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYXV0b0luY3JlbWVudFVwZGF0
ZUN1cnNvcjsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
ImV2ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgIm15S2V5IiArIGNvdW50ZXIpOworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZSIsICJteVVwZGF0ZWRW
YWx1ZSIgKyBjb3VudGVyKyspOworICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQu
Y29udGludWUoKSIpOworfQorCitmdW5jdGlvbiBhdXRvSW5jcmVtZW50VXBkYXRlQ3Vyc29yKCkK
K3sKKyAgICBkZWJ1ZygiYXV0b0luY3JlbWVudFVwZGF0ZUN1cnNvcigpIik7CisgICAgaWYgKGV2
ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkgeworICAgICAgICBzaG91bGRCZSgiY291bnRlciIs
ICI1Iik7CisgICAgICAgIGNvdW50ZXIgPSAxOworCisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYXV0b0luY3JlbWVudFN0b3JlJykub3BlbkN1cnNvcihr
ZXlSYW5nZSkiKTsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhdXRvSW5jcmVtZW50Q2hl
Y2tDdXJzb3I7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImV2ZW50LnRhcmdldC5yZXN1bHQudXBkYXRlKCdteVVwZGF0ZWRGb28nICsgY291bnRlcisrKSIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7IGV2YWxBbmRMb2coImV2ZW50
LnRhcmdldC5zb3VyY2UuY29udGludWUoKSIpOyB9CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGF1dG9JbmNyZW1lbnRDaGVja0N1
cnNvcigpCit7CisgICAgZGVidWcoImF1dG9JbmNyZW1lbnRDaGVja0N1cnNvcigpIik7CisgICAg
aWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkgeworICAgICAgICBzaG91bGRCZSgiY291
bnRlciIsICI1Iik7CisgICAgICAgIGNvdW50ZXIgPSAxOworCisgICAgICAgIGtleVJhbmdlID0g
SURCS2V5UmFuZ2UubG93ZXJCb3VuZCgxKTsKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InRyYW5zLm9iamVjdFN0b3JlKCdrZXlQYXRoU3RvcmUnKS5vcGVuQ3Vyc29yKGtleVJhbmdlKSIp
OworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGtleVBhdGhVcGRhdGVDdXJzb3I7CisgICAg
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5Iiwg
ImNvdW50ZXIiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1
bHQudmFsdWUiLCAibXlVcGRhdGVkRm9vIiArIGNvdW50ZXIrKyk7CisgICAgZXZhbEFuZExvZygi
ZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7Cit9CisKK2Z1bmN0aW9uIGtleVBhdGhV
cGRhdGVDdXJzb3IoKQoreworICAgIGRlYnVnKCJrZXlQYXRoVXBkYXRlQ3Vyc29yKCkiKTsKKyAg
ICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBudWxsKSB7CisgICAgICAgIHNob3VsZEJlKCJj
b3VudGVyIiwgIjUiKTsKKyAgICAgICAgY291bnRlciA9IDE7CisKKyAgICAgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdrZXlQYXRoU3RvcmUnKS5vcGVuQ3Vyc29y
KGtleVJhbmdlKSIpOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGtleVBhdGhDaGVja0N1
cnNvcjsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJl
dmVudC50YXJnZXQucmVzdWx0LnVwZGF0ZSh7aWQ6IDEwMCArIGNvdW50ZXIsIG51bWJlcjogMTAw
ICsgY291bnRlcn0pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC51cGRhdGUoe2lkOiBjb3Vu
dGVyLCBudW1iZXI6IDEwMCArIGNvdW50ZXIrK30pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbigpIHsgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnNvdXJjZS5jb250aW51ZSgp
IikgfTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30K
KworZnVuY3Rpb24ga2V5UGF0aENoZWNrQ3Vyc29yKCkKK3sKKyAgICBkZWJ1Zygia2V5UGF0aENo
ZWNrQ3Vyc29yKCkiKTsKKyAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBudWxsKSB7Cisg
ICAgICAgIHNob3VsZEJlKCJjb3VudGVyIiwgIjUiKTsKKyAgICAgICAgY291bnRlciA9IDE7CisK
KyAgICAgICAga2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKDEwMSk7CisgICAgICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgna2V5UGF0aFN0b3JlJyku
aW5kZXgoJ251bWJlckluZGV4Jykub3BlbktleUN1cnNvcihrZXlSYW5nZSkiKTsKKyAgICAgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBrZXlDdXJzb3I7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
c2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgImNvdW50ZXIiKTsKKyAgICBzaG91
bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS5pZCIsICJjb3VudGVyIik7CisgICAgc2hv
dWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUubnVtYmVyIiwgKGNvdW50ZXIgKyAxMDAp
LnRvU3RyaW5nKCkpOworICAgIGNvdW50ZXIrKzsKKyAgICBldmFsQW5kTG9nKCJldmVudC50YXJn
ZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKK30KKworZnVuY3Rpb24ga2V5Q3Vyc29yKCkKK3sKKyAg
ICBkZWJ1Zygia2V5Q3Vyc29yKCkiKTsKKyAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBu
dWxsKSB7CisgICAgICAgIHNob3VsZEJlKCJjb3VudGVyIiwgIjUiKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICJjb3Vu
dGVyICsgMTAwIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtl
eSIsICJjb3VudGVyIik7CisKKyAgICB0cnkgeworICAgICAgICBkZWJ1ZygiZXZlbnQudGFyZ2V0
LnJlc3VsdC51cGRhdGUoe2lkOiBjb3VudGVyLCBudW1iZXI6IGNvdW50ZXIgKyAyMDB9KSIpOwor
ICAgICAgICBldmVudC50YXJnZXQucmVzdWx0LnVwZGF0ZSh7aWQ6IGNvdW50ZXIsIG51bWJlcjog
Y291bnRlciArIDIwMH0pOworICAgICAgICB0ZXN0RmFpbGVkKCJFeHBlY3RlZCBleGNlcHRpb24u
Iik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBjb2RlID0gZS5jb2RlOworICAgICAgICBz
aG91bGRCZSgiY29kZSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9FUlIiKTsK
KyAgICB9CisKKyAgICBjb3VudGVyKys7CisgICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51
ZSgpOworfQorCitmdW5jdGlvbiB0cmFuc2FjdGlvbkNvbXBsZXRlKCkKK3sKKyAgICBkZWJ1Zygi
dHJhbnNhY3Rpb25Db21wbGV0ZSgpIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL2RhdGEtY29ycnVwdGlvbi5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9kYXRhLWNvcnJ1cHRpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDE1NWI4
MzhkMmEwN2E5YzVjZTY0ZDAzYzU2ZGNmODdlMjljNTg2YgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kYXRhLWNvcnJ1cHRpb24uanMK
QEAgLTAsMCArMSw2NSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNj
cmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAg
aW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoYXQg
ZGF0YSBpbnNlcnRlZCBpbnRvIEluZGV4ZWREQiBkb2VzIG5vdCBnZXQgY29ycnVwdGVkIG9uIGRp
c2suIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdkYXRhLWNvcnJ1cHRp
b24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5T
dWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBzZWxmLmRiID0g
ZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb25TdWNjZXNzKCkK
K3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKKyAgICBzZWxmLnRyYW5zID0g
ZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVU
cnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJv
cnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gYWRkRGF0YTsKKworICAgIGRlbGV0
ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RT
dG9yZSgnc3RvcmVOYW1lJykiKTsKK30KKwordmFyIHRlc3REYXRlID0gbmV3IERhdGUoJ0ZlYnJ1
YXJ5IDI0LCAxOTU1IDEyOjAwOjA4Jyk7CisKK2Z1bmN0aW9uIGFkZERhdGEoKQoreworICAgIGRl
YnVnKCJhZGREYXRhKCk6Iik7CisgICAgdmFyIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJh
bnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5S
RUFEX1dSSVRFKSIpOworICAgIHZhciByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHRy
YW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKS5hZGQoe3g6IHRlc3REYXRlfSwgJ2tl
eScpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cisg
ICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGdldERhdGE7Cit9CisKK2Z1bmN0aW9uIGdldERh
dGEoKQoreworICAgIGRlYnVnKCJhZGREYXRhKCk6Iik7CisgICAgdmFyIHRyYW5zYWN0aW9uID0g
ZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJ
REJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7CisgICAgdmFyIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpLmdldCgna2V5
JykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRvQ2hlY2s7Cit9CisKK2Z1bmN0aW9uIGRvQ2hlY2soKQor
eworICAgIHNob3VsZEJlVHJ1ZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC54LnRvU3RyaW5nKCkgPT0g
dGVzdERhdGUudG9TdHJpbmcoKSIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGFiYXNlLWJhc2ljcy5qcyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kYXRhYmFzZS1iYXNpY3MuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMmE1YTdhNzNlMTRhZTU2NTdjMWE1YWM0ZjU0NTY5NzBlZDJhYjQ4ZAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kYXRhYmFzZS1i
YXNpY3MuanMKQEAgLTAsMCArMSwxMTUgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAg
ICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigi
VGVzdCB0aGUgYmFzaWNzIG9mIEluZGV4ZWREQidzIElEQkRhdGFiYXNlLiIpOworCitmdW5jdGlv
biB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdkYXRhYmFzZS1iYXNpY3MnKSIpOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAg
ICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNp
b25TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKKyAgICBz
ZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Cisg
ICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1
bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7
CisKKyAgICBkZWJ1ZygiVGVzdGluZyBzZXRWZXJzaW9uLiIpOworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCdkYi5zZXRWZXJzaW9uKCJ2ZXJzaW9uIGEiKScpOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gc2V0VmVyc2lvbkFnYWluOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uQWdhaW4oKQoreworICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCdkYi5zZXRWZXJzaW9uKCJ2ZXJzaW9uIGIiKScpOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gY3JlYXRlT2JqZWN0U3RvcmU7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZU9iamVjdFN0
b3JlKCkKK3sKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLnZlcnNpb24iLCAidmVyc2lv
biBiIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkYi5uYW1lIiwgImRhdGFiYXNlLWJh
c2ljcyIpOworICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzIiwgIltdIik7CisgICAg
c2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjAiKTsKKyAgICBzaG91bGRC
ZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucygnJykiLCAiZmFsc2UiKTsKKyAgICBzaG91
bGRCZU51bGwoImRiLm9iamVjdFN0b3JlTmFtZXNbMF0iKTsKKyAgICBzaG91bGRCZU51bGwoImRi
Lm9iamVjdFN0b3JlTmFtZXMuaXRlbSgwKSIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5k
TG9nKCdkYi5jcmVhdGVPYmplY3RTdG9yZSgidGVzdDEyMyIpJyk7CisgICAgY2hlY2tPYmplY3RT
dG9yZSgpOworICAgIGNvbW1pdEFuZENvbnRpbnVlKCk7Cit9CisKK2Z1bmN0aW9uIGNoZWNrT2Jq
ZWN0U3RvcmUoKQoreworICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzIiwgIlsndGVz
dDEyMyddIik7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjEi
KTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucygnJykiLCAiZmFs
c2UiKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucygndGVzdDQ1
NicpIiwgImZhbHNlIik7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFp
bnMoJ3Rlc3QxMjMnKSIsICJ0cnVlIik7Cit9CisKK2Z1bmN0aW9uIGNvbW1pdEFuZENvbnRpbnVl
KCkKK3sKKyAgICBzZWxmLnNldFRpbWVvdXQodGVzdFNldFZlcnNpb25BYm9ydCwgMCk7Cit9CisK
K2Z1bmN0aW9uIHRlc3RTZXRWZXJzaW9uQWJvcnQoKQoreworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCdkYi5zZXRWZXJzaW9uKCJ2ZXJzaW9uIGMiKScpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gY3JlYXRlQW5vdGhlck9iamVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjcmVhdGVBbm90aGVyT2JqZWN0U3Rv
cmUoKQoreworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGIudmVyc2lvbiIsICJ2ZXJzaW9u
IGMiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLm5hbWUiLCAiZGF0YWJhc2UtYmFz
aWNzIik7CisgICAgY2hlY2tPYmplY3RTdG9yZSgpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFs
QW5kTG9nKCdkYi5jcmVhdGVPYmplY3RTdG9yZSgidGVzdDQ1NiIpJyk7CisgICAgdmFyIHNldFZl
cnNpb25UcmFucyA9IGV2YWxBbmRMb2coInNldFZlcnNpb25UcmFucyA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInNldFZlcnNpb25UcmFucyAhPT0gbnVsbCIpOwor
ICAgIHNldFZlcnNpb25UcmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJh
Y2s7CisgICAgc2V0VmVyc2lvblRyYW5zLm9uYWJvcnQgPSBjaGVja01ldGFkYXRhOworICAgIHNl
dFZlcnNpb25UcmFucy5hYm9ydCgpOworfQorCitmdW5jdGlvbiBjaGVja01ldGFkYXRhKCkKK3sK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLnZlcnNpb24iLCAidmVyc2lvbiBiIik7Cisg
ICAgY2hlY2tPYmplY3RTdG9yZSgpOworICAgIHRlc3RDbG9zZSgpOworfQorCitmdW5jdGlvbiB0
ZXN0Q2xvc2UoKQoreworICAgIGV2YWxBbmRMb2coImRiLmNsb3NlKCkiKTsKKyAgICBkZWJ1Zygi
Tm93IHRoYXQgdGhlIGNvbm5lY3Rpb24gaXMgY2xvc2VkLCB0cmFuc2FjdGlvbiBjcmVhdGlvbiBz
aG91bGQgZmFpbCIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9u
KCd0ZXN0MTIzJykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0FMTE9XRURfRVJSIik7Cisg
ICAgZGVidWcoIkNhbGwgdHdpY2UsIG1ha2Ugc3VyZSBpdCdzIGhhcm1sZXNzIik7CisgICAgZXZh
bEFuZExvZygiZGIuY2xvc2UoKSIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGFiYXNlLW5hbWUtdW5kZWZpbmVkLmpzIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGFiYXNlLW5hbWUtdW5kZWZp
bmVkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjBiNjQ5Y2M1Y2E1NzM1ZjNiNDVjZTUyYTgwYzc5NmRlOGQyYmJh
ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvZGF0YWJhc2UtbmFtZS11bmRlZmluZWQuanMKQEAgLTAsMCArMSwxNSBAQAoraWYgKHRo
aXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpz
Jyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiB1bmRlZmluZWQgYXMgcmVjb3Jk
IHZhbHVlIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVz
KCk7CisgICAgc2hvdWxkVGhyb3coImluZGV4ZWREQi5vcGVuKCk7Iik7CisgICAgZmluaXNoSlNU
ZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGF0YWJhc2Utb2Rk
LW5hbWVzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGFi
YXNlLW9kZC1uYW1lcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOTRmMWU3NmVlMjUwYzI4MGNmMTUxMjA5Yzky
ZjBhNjQyMzJhNzYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL2RhdGFiYXNlLW9kZC1uYW1lcy5qcwpAQCAtMCwwICsxLDMxIEBACitp
ZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFy
ZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIG9kZCB2YWx1ZSBkYXRh
dHlwZXMiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMo
KTsKKworICAgIHRlc3REYXRhID0gW3sgZGVzY3JpcHRpb246ICdudWxsJywgICAgICAgICAgICAg
ICBuYW1lOiAnXHUwMDAwJyB9LAorICAgICAgICAgICAgICAgIHsgZGVzY3JpcHRpb246ICdmYWlo
dScsICAgICAgICAgICAgICBuYW1lOiAnXHVkODAwXHVkZjQ2JyB9LAorICAgICAgICAgICAgICAg
IHsgZGVzY3JpcHRpb246ICd1bnBhaXJlZCBzdXJyb2dhdGUnLCBuYW1lOiAnXHVkODAwJyB9LAor
ICAgICAgICAgICAgICAgIHsgZGVzY3JpcHRpb246ICdmZmZlJywgICAgICAgICAgICAgICBuYW1l
OiAnXHVmZmZlJyB9LAorICAgICAgICAgICAgICAgIHsgZGVzY3JpcHRpb246ICdmZmZmJywgICAg
ICAgICAgICAgICBuYW1lOiAnXHVmZmZmJyB9LAorICAgICAgICAgICAgICAgIHsgZGVzY3JpcHRp
b246ICdsaW5lIHNlcGFyYXRvcicsICAgICBuYW1lOiAnXHUyMDI4JyB9CisgICAgXTsKKyAgICBu
ZXh0VG9PcGVuID0gMDsKKyAgICBvcGVuTmV4dERhdGFiYXNlKCk7Cit9CisKK2Z1bmN0aW9uIG9w
ZW5OZXh0RGF0YWJhc2UoKQoreworICAgIGRlYnVnKCJvcGVuaW5nIGEgZGF0YWJhc2UgbmFtZWQg
IiArIHRlc3REYXRhW25leHRUb09wZW5dLmRlc2NyaXB0aW9uKTsKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiaW5kZXhlZERCLm9wZW4odGVzdERhdGFbbmV4dFRvT3Blbl0ubmFtZSwgdGVzdERh
dGFbbmV4dFRvT3Blbl0uZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSArK25leHRUb09w
ZW4gPCB0ZXN0RGF0YS5sZW5ndGggPyBvcGVuTmV4dERhdGFiYXNlIDogZmluaXNoSlNUZXN0Owor
fQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGFiYXNlLXF1b3RhLmpzIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGFiYXNlLXF1b3RhLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmFlMDkxNWZkMDIyOGU5OTI5ZmZjYzU2YTMwOGQ2MDg0ODk4NjBhZTgKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
ZGF0YWJhc2UtcXVvdGEuanMKQEAgLTAsMCArMSw5NyBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0
cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2Ny
aXB0aW9uKCJUZXN0cyBJbmRleGVkREIncyBxdW90YSBlbmZvcmNpbmcgbWVjaGFuaXNtLiIpOwor
CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignZGF0YWJhc2UtcXVvdGEnKSIpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkK
K3sKKyAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24n
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNl
dFZlcnNpb25TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsK
KyAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJv
cnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gY2hl
Y2tRdW90YUVuZm9yY2luZzsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLnZlcnNpb24iLCAibmV3IHZlcnNpb24iKTsKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLm5hbWUiLCAiZGF0YWJhc2UtcXVvdGEiKTsKKyAg
ICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcyIsICJbXSIpOworICAgIHNob3VsZEJlKCJk
Yi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIwIik7CisgICAgc2hvdWxkQmUoImRiLm9iamVj
dFN0b3JlTmFtZXMuY29udGFpbnMoJycpIiwgImZhbHNlIik7CisKKyAgICBvYmplY3RTdG9yZSA9
IGV2YWxBbmRMb2coJ2RiLmNyZWF0ZU9iamVjdFN0b3JlKCJ0ZXN0MTIzIiknKTsKKyAgICBjaGVj
a09iamVjdFN0b3JlKCk7Cit9CisKK2Z1bmN0aW9uIGNoZWNrT2JqZWN0U3RvcmUoKQoreworICAg
IHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzIiwgIlsndGVzdDEyMyddIik7CisgICAgc2hv
dWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjEiKTsKKyAgICBzaG91bGRCZSgi
ZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucygnJykiLCAiZmFsc2UiKTsKKyAgICBzaG91bGRC
ZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucygndGVzdDQ1NicpIiwgImZhbHNlIik7Cisg
ICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJ3Rlc3QxMjMnKSIsICJ0
cnVlIik7Cit9CisKK2Z1bmN0aW9uIGNoZWNrUXVvdGFFbmZvcmNpbmcoKQoreworICAgIHZhciB0
cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWyd0ZXN0MTIzJ10sIElE
QlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgdHJhbnMub25hYm9ydCA9IHRlc3RDb21w
bGV0ZTsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7
CisgICAgZGVidWcoIkNyZWF0aW5nICdkYXRhJyB3aGljaCBjb250YWlucyA2NEsgb2YgZGF0YSIp
OworICAgIHNlbGYuZGF0YSA9ICJYIjsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyBpKysp
CisgICAgICAgIGRhdGEgKz0gZGF0YTsKKyAgICBzaG91bGRCZSgiZGF0YS5sZW5ndGgiLCAiNjU1
MzYiKTsKKyAgICBzZWxmLmRhdGFBZGRlZCA9IDA7CisgICAgc2VsZi5zdG9yZSA9IGV2YWxBbmRM
b2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3Rlc3QxMjMnKSIpOworICAgIGFkZERhdGEo
KTsKK30KKworZnVuY3Rpb24gYWRkRGF0YSgpCit7CisgICAgaWYgKGRhdGFBZGRlZCA8IDUgKiAx
MDI0ICogMTAyNCkgeworICAgICAgICBpZiAoZGF0YUFkZGVkID4gMCkKKyAgICAgICAgICAgIHN0
b3JlID0gZXZlbnQudGFyZ2V0LnNvdXJjZTsKKyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0RmFp
bGVkKCJhZGRlZCBtb3JlIHRoYW4gcXVvdGEiKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZGF0YUFkZGVkICs9IDY1NTM2OworICAgIHJlcXVl
c3QgPSBzdG9yZS5hZGQoe3g6IGRhdGF9LCBkYXRhQWRkZWQpOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gYWRkRGF0YTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBsb2dFcnJvcjsKK30KKworZnVu
Y3Rpb24gbG9nRXJyb3IoKQoreworICAgIGRlYnVnKCJFcnJvciBmdW5jdGlvbiBjYWxsZWQ6ICgi
ICsgZXZlbnQudGFyZ2V0LmVycm9yQ29kZSArICIpICIgKyBldmVudC50YXJnZXQud2Via2l0RXJy
b3JNZXNzYWdlKTsKKyAgICBldmFsQW5kTG9nKCJldmVudC5wcmV2ZW50RGVmYXVsdCgpIik7Cit9
CisKK2Z1bmN0aW9uIHRlc3RDb21wbGV0ZSgpCit7CisgICAgdGVzdFBhc3NlZCgiQWRkaW5nIGRh
dGEgZmFpbGVkIGR1ZSB0byBxdW90YSBlcnJvci4gRGF0YSBhZGRlZCB3YXMgYWJvdXQgIiArIE1h
dGgucm91bmQoZGF0YUFkZGVkIC8gMTAyNCAvIDEwMjQpICsgIiBNQiIpOworICAgIGZpbmlzaEpT
VGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RlbGV0ZS1jbG9z
ZWQtZGF0YWJhc2Utb2JqZWN0LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL2RlbGV0ZS1jbG9zZWQtZGF0YWJhc2Utb2JqZWN0LmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkMzI5
YTJiN2EzYjcwYzA3ZTFmZmY4YjZkNmViYTE4ZDI4NDAzYjgKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGVsZXRlLWNsb3NlZC1kYXRh
YmFzZS1vYmplY3QuanMKQEAgLTAsMCArMSw0OSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykg
eworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0
aW9uKCJFbnN1cmUgdGhhdCBJREJEYXRhYmFzZSBvYmplY3RzIGFyZSBkZWxldGVkIHdoZW4gdGhl
cmUgYXJlIG5vIHJldGFpbmluZyBwYXRocyBsZWZ0Iik7CisKK2Z1bmN0aW9uIHRlc3QoKSB7Cisg
ICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBvcGVuREJDb25uZWN0aW9uKCk7Cit9CisK
K2Z1bmN0aW9uIG9wZW5EQkNvbm5lY3Rpb24oKQoreworICAgIGV2YWxBbmRMb2coInNlbGYuc3Rh
dGUgPSAnc3RhcnRpbmcnIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5v
cGVuKCdkZWxldGUtY2xvc2VkLWRhdGFiYXNlLW9iamVjdCcpIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIHNlbGYuZGIg
PSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIC8vIE9wZW4g
YSBzZWNvbmQgY29ubmVjdGlvbiB0byB0aGUgc2FtZSBkYXRhYmFzZS4KKyAgICB2YXIgcmVxdWVz
dDIgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignZGVsZXRlLWNsb3NlZC1kYXRhYmFzZS1v
YmplY3QnKSIpOworICAgIHJlcXVlc3QyLm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzMjsKKyAgICBy
ZXF1ZXN0Mi5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IG9wZW5TdWNjZXNzMigpCit7CisgICAgZGVidWcoIlNlY29uZCBjb25uZWN0aW9uIHN1Y2Nlc3Nm
dWxseSBlc3RhYmxpc2hlZC4iKTsKKyAgICAvLyBBZnRlciBsZWF2aW5nIHRoaXMgZnVuY3Rpb24s
IHRoZXJlIGFyZSBubyByZW1haW5pbmcgcmVmZXJlbmNlcyB0byB0aGUKKyAgICAvLyBzZWNvbmQg
Y29ubmVjdGlvbiwgc28gaXQgc2hvdWxkIGdldCBkZWxldGVkLgorICAgIHNldFRpbWVvdXQoc2V0
VmVyc2lvbiwgMik7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb24oKQoreworICAgIGdjKCk7Cisg
ICAgZGVidWcoImNhbGxpbmcgc2V0VmVyc2lvbigpIC0gY2FsbGJhY2sgc2hvdWxkIHJ1biBpbW1l
ZGlhdGVseSIpOworICAgIHZhciB2ZXJzaW9uQ2hhbmdlUmVxdWVzdCA9IGV2YWxBbmRMb2coImRi
LnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7CisgICAgdmVyc2lvbkNoYW5nZVJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0
Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7CisgICAgdmVyc2lvbkNoYW5n
ZVJlcXVlc3Qub25zdWNjZXNzID0gZmluaXNoSlNUZXN0OworfQorCit0ZXN0KCk7ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL2RlbGV0ZS1yYW5nZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9kZWxldGUtcmFuZ2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTVkZjc3ZjIzNDcz
Njg5ODc4NDlkYzZlMWM1N2Q3ODYyYzMxZjZlOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kZWxldGUtcmFuZ2UuanMKQEAgLTAsMCAr
MSw5MCBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4u
Ly4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2Ny
aXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIElE
Qk9iamVjdFN0b3JlLmRlbGV0ZShJREJLZXlSYW5nZSkgbWV0aG9kLiIpOworCitmdW5jdGlvbiB0
ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgZXZhbEFuZExvZygi
cmVxdWVzdCA9IGluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgnZGVsZXRlLXJhbmdlJykiKTsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgZXZhbEFuZExvZygicmVxdWVzdCA9
IGluZGV4ZWREQi5vcGVuKCdkZWxldGUtcmFuZ2UnKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJkYiA9IHJlcXVlc3QucmVz
dWx0Iik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbign
MScpIik7CisgICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKKyAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgICAgIGV2YWxBbmRMb2coInRyYW5zID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAg
ICAgICAgICAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisKKyAg
ICAgICAgICAgICAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIp
OworCisgICAgICAgICAgICAgICAgdHJhbnMub25jb21wbGV0ZSA9IHJ1blRlc3RzOworICAgICAg
ICAgICAgfTsKKyAgICAgICAgfTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNoZWNrS2V5cyhleHBl
Y3RlZCwgY2FsbGJhY2spCit7CisgICAgZGVidWcoImdldHRpbmcga2V5cyBmcm9tIHN0b3JlLi4u
Iik7CisgICAgZGVidWcoImV4cGVjdDogIiArIEpTT04uc3RyaW5naWZ5KGV4cGVjdGVkKSk7Cisg
ICAgdmFyIGtleXMgPSBbXTsKKyAgICByZXF1ZXN0ID0gc3RvcmUub3BlbkN1cnNvcigpOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICBjdXJzb3IgPSByZXF1ZXN0LnJlc3Vs
dDsKKyAgICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICAgICAga2V5cy5wdXNoKGN1cnNvci5r
ZXkpOworICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBkZWJ1ZygiYWN0dWFsOiAiICsgSlNPTi5zdHJpbmdpZnkoa2V5cykpOworICAg
ICAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KGV4cGVjdGVkKSA9PT0gSlNPTi5zdHJpbmdpZnko
a2V5cykpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJNYXRjaCEiKTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiRG9uJ3QgbWF0Y2ghIik7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworfQorCit2YXIgdGVzdHMgPSBbCisg
ICAgeyBsb3dlcjogMywgdXBwZXI6IDgsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyT3BlbjogZmFs
c2UsIGV4cGVjdGVkOiBbMSwgMiwgOSwgMTBdfSwKKyAgICB7IGxvd2VyOiAzLCB1cHBlcjogOCwg
bG93ZXJPcGVuOiB0cnVlLCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogWzEsIDIsIDMsIDks
IDEwXX0sCisgICAgeyBsb3dlcjogMywgdXBwZXI6IDgsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVy
T3BlbjogdHJ1ZSwgZXhwZWN0ZWQ6IFsxLCAyLCA4LCA5LCAxMF19LAorICAgIHsgbG93ZXI6IDMs
IHVwcGVyOiA4LCBsb3dlck9wZW46IHRydWUsIHVwcGVyT3BlbjogdHJ1ZSwgZXhwZWN0ZWQ6IFsx
LCAyLCAzLCA4LCA5LCAxMF19CitdOworCitmdW5jdGlvbiBydW5UZXN0cygpCit7CisgICAgZnVu
Y3Rpb24gbmV4dFRlc3QoKSB7CisgICAgICAgIHZhciB0ZXN0ID0gdGVzdHMuc2hpZnQoKTsKKyAg
ICAgICAgaWYgKHRlc3QpIHsKKyAgICAgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgICAgIGV2
YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24u
UkVBRF9XUklURSkiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2Jq
ZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICAgICAgICAgIGZvciAoaSA9IDE7IGkgPD0gMTA7ICsr
aSkgeworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgiICsgaSArICIsIiAr
IGkgKyAiKSIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZXZhbEFuZExvZygic3RvcmUu
ZGVsZXRlKElEQktleVJhbmdlLmJvdW5kKCIgKworICAgICAgICAgICAgICAgIHRlc3QubG93ZXIg
KyAiLCAiICsKKyAgICAgICAgICAgICAgICB0ZXN0LnVwcGVyICsgIiwgIiArCisgICAgICAgICAg
ICAgICAgdGVzdC5sb3dlck9wZW4gKyAiLCAiICsKKyAgICAgICAgICAgICAgICB0ZXN0LnVwcGVy
T3BlbiArICIpKSIpOworICAgICAgICAgICAgY2hlY2tLZXlzKHRlc3QuZXhwZWN0ZWQsIG5leHRU
ZXN0KTsKKyAgICAgICAgICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFj
azsKKyAgICAgICAgICAgIHRyYW5zLm9uY29tcGxldGUgPSBuZXh0VGVzdDsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgfQorICAgIG5leHRUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvZGVsZXRlSW5kZXguanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvZGVsZXRlSW5kZXguanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGNiNWJlZGM2MDA4MjNj
ZTliZjljM2JhYTRlODZmN2FmZDExNzJlOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kZWxldGVJbmRleC5qcwpAQCAtMCwwICsxLDUw
IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRz
KCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGRlbGV0ZUlu
ZGV4IG1ldGhvZCIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVm
aXhlcygpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignZGVsZXRl
SW5kZXgnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9w
ZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJz
aW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHR3aWRkbGVJbmRleGVzOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biB0d2lkZGxlSW5kZXhlcygpCit7CisgICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFu
c2FjdGlvbiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgdHJhbnNhY3Rpb24ub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1
bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gcG9z
dFR3aWRkbGluZzsKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgb2JqZWN0
U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdm
b28nKTsiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJvYmplY3RTdG9yZS5kZWxldGVJ
bmRleCgnZmlyc3QnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7Cisg
ICAgc2hvdWxkVGhyb3coIm9iamVjdFN0b3JlLmRlbGV0ZUluZGV4KCkiKTsgLy8gVHlwZUVycm9y
OiBub3QgZW5vdWdoIGFyZ3VtZW50cy4KKyAgICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0g
b2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ2ZpcnN0JywgJ2ZpcnN0Jyk7Iik7CisgICAgZXZhbEFu
ZEV4cGVjdEV4Y2VwdGlvbigib2JqZWN0U3RvcmUuZGVsZXRlSW5kZXgoJ0ZJUlNUJykiLCAiSURC
RGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOworICAgIGluZGV4ID0gZXZhbEFuZExv
ZygiaW5kZXggPSBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgnc2Vjb25kJywgJ3NlY29uZCcpOyIp
OworICAgIHJldHVyblZhbHVlID0gZXZhbEFuZExvZygicmV0dXJuVmFsdWUgPSBvYmplY3RTdG9y
ZS5kZWxldGVJbmRleCgnZmlyc3QnKTsiKTsKKyAgICBzaG91bGRCZSgicmV0dXJuVmFsdWUiLCAi
dW5kZWZpbmVkIik7Cit9CisKK2Z1bmN0aW9uIHBvc3RUd2lkZGxpbmcoKQoreworICAgIGV2YWxB
bmRFeHBlY3RFeGNlcHRpb24oImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdiYXInKTsiLCAiSURCRGF0
YWJhc2VFeGNlcHRpb24uTk9UX0FMTE9XRURfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2Vw
dGlvbigib2JqZWN0U3RvcmUuZGVsZXRlSW5kZXgoJ3NlY29uZCcpIiwgIklEQkRhdGFiYXNlRXhj
ZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOworICAgIGZpbmlzaEpTVGVzdCgpOwor
fQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RlbGV0ZU9iamVjdFN0b3JlLW5h
bWUtYXJndW1lbnQtcmVxdWlyZWQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvZGVsZXRlT2JqZWN0U3RvcmUtbmFtZS1hcmd1bWVudC1yZXF1aXJlZC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mNjA5MmExMzU4OTI3NjZjNmYyMjFlMjVlNWRlYTkyZWRjMjIzYzI1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RlbGV0
ZU9iamVjdFN0b3JlLW5hbWUtYXJndW1lbnQtcmVxdWlyZWQuanMKQEAgLTAsMCArMSwzNiBAQAor
aWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hh
cmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBkZWxldGVPYmplY3RT
dG9yZSByZXF1aXJlZCBhcmd1bWVudCIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1v
dmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7
CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBk
YiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNyZWF0
ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jlcyhk
Yik7CisKKyAgICBzaG91bGRUaHJvdygiZGIuZGVsZXRlT2JqZWN0U3RvcmUoKTsiKTsKKyAgICBm
aW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kZWxl
dGVPYmplY3RTdG9yZS1udWxsLW5hbWUuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvZGVsZXRlT2JqZWN0U3RvcmUtbnVsbC1uYW1lLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0
YTgzMzVhYjcxZDQ1ZmQxZTM0NmE5Yzc2YTllMmMwMjVlYzFkNGMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGVsZXRlT2JqZWN0U3Rv
cmUtbnVsbC1uYW1lLmpzCkBAIC0wLDAgKzEsMzcgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMp
IHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlw
dGlvbigiVGVzdCBJbmRleGVkREIgZGVsZXRlT2JqZWN0U3RvcmUgcmVxdWlyZWQgYXJndW1lbnQi
KTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKwor
ICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15
IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Bl
bihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNj
ZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVB
bmRQb3B1bGF0ZU9iamVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3Jl
KCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgZXZhbEFuZExvZygi
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ251bGwnKTsiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5kZWxl
dGVPYmplY3RTdG9yZShudWxsKTsiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgp
OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kdXBsaWNhdGVzLmpzIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2R1cGxpY2F0ZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTEzM2Fl
OGQxYzRkOTVlNzVjMzdjOTc1NzE0YWRmYzlhZTJmNzYzZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kdXBsaWNhdGVzLmpzCkBAIC0w
LDAgKzEsMTY2IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0
cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBv
cnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlZlcmlmeSB0aGF0IHlv
dSBjYW4gcHV0IHRoZSBzYW1lIGRhdGEgaW4gMiBkaWZmZXJlbnQgZGF0YWJhc2VzIHdpdGhvdXQg
dW5pcXVlbmVzcyBjb25zdHJhaW50cyBmaXJpbmcuIik7CisKK3Rlc3RDb3VudCA9IDA7CitmdW5j
dGlvbiB0ZXN0KCkKK3sKKyAgICBpZiAodGVzdENvdW50KysgPT0gMCkKKyAgICAgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdkdXBsaWNhdGVzLTEnKSIpOworICAgIGVs
c2UKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdkdXBsaWNh
dGVzLTInKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvbjsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0
VmVyc2lvbigpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVy
c2lvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
ZGVsZXRlRXhpc3RpbmcoKQoreworICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOwor
ICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9y
dCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVz
KGRiKTsKKworICAgIHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9y
ZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKKyAgICBzZWxmLmluZGV4T2JqZWN0ID0gZXZhbEFuZExv
Zygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZScsICd4JykiKTsKKyAgICBhZGREYXRhKCk7
Cit9CisKK2Z1bmN0aW9uIGFkZERhdGEoKQoreworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJz
dG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBhZGRNb3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBhZGRNb3JlKCkKK3sKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiZXZlbnQudGFyZ2V0LnNvdXJjZS5hZGQoe3g6ICd2YWx1ZTInLCB5OiAnenp6Mid9
LCAna2V5MicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXREYXRhOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBnZXRE
YXRhKCkKK3sKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhPYmplY3QuZ2V0S2V5KCd2
YWx1ZScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRPYmplY3REYXRhOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBn
ZXRPYmplY3REYXRhKCkKK3sKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdl
dC5yZXN1bHQiLCAia2V5Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhPYmpl
Y3QuZ2V0KCd2YWx1ZScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXREYXRhRmFpbDsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gZ2V0RGF0YUZhaWwoKQoreworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQu
dGFyZ2V0LnJlc3VsdC54IiwgInZhbHVlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJl
dmVudC50YXJnZXQucmVzdWx0LnkiLCAienp6Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiaW5kZXhPYmplY3QuZ2V0S2V5KCdkb2VzIG5vdCBleGlzdCcpIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBnZXRPYmplY3REYXRhRmFpbDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZ2V0T2JqZWN0RGF0YUZhaWwoKQor
eworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgInVuZGVmaW5lZCIpOworCisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0LmdldCgnZG9lcyBub3QgZXhpc3Qn
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbktleUN1cnNvcjsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3Blbktl
eUN1cnNvcigpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAidW5kZWZp
bmVkIik7CisKKyAgICBzZWxmLnJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5vcGVu
S2V5Q3Vyc29yKCkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvcjFDb250aW51ZTsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gY3Vyc29yMUNvbnRpbnVlKCkKK3sKKyAgICBzaG91bGRCZUZhbHNlKCJldmVudC50YXJn
ZXQucmVzdWx0ID09PSBudWxsIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50
YXJnZXQucmVzdWx0LmtleSIsICJ2YWx1ZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
ZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgImtleSIpOworCisgICAgLy8gV2UgcmUt
dXNlIHRoZSBsYXN0IHJlcXVlc3Qgb2JqZWN0LgorICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdl
dC5yZXN1bHQuY29udGludWUoKSIpOworICAgIHNlbGYucmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJz
b3IxQ29udGludWUyOworfQorCitmdW5jdGlvbiBjdXJzb3IxQ29udGludWUyKCkKK3sKKyAgICBz
aG91bGRCZUZhbHNlKCJldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsIik7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICJ2YWx1ZTIiKTsKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIs
ICJrZXkyIik7CisKKyAgICAvLyBXZSByZS11c2UgdGhlIGxhc3QgcmVxdWVzdCBvYmplY3QuCisg
ICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7CisgICAgc2Vs
Zi5yZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5PYmplY3RDdXJzb3I7Cit9CisKK2Z1bmN0aW9uIG9w
ZW5PYmplY3RDdXJzb3IoKQoreworICAgIHNob3VsZEJlVHJ1ZSgiZXZlbnQudGFyZ2V0LnJlc3Vs
dCA9PT0gbnVsbCIpOworCisgICAgc2VsZi5yZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhPYmpl
Y3Qub3BlbkN1cnNvcigpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3IyQ29udGlu
dWU7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIGN1cnNvcjJDb250aW51ZSgpCit7CisgICAgc2hvdWxkQmVGYWxzZSgiZXZlbnQu
dGFyZ2V0LnJlc3VsdCA9PT0gbnVsbCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZl
bnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAidmFsdWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUueCIsICJ2YWx1ZSIpOworICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS55IiwgInp6eiIpOworCisg
ICAgLy8gV2UgcmUtdXNlIHRoZSBsYXN0IHJlcXVlc3Qgb2JqZWN0LgorICAgIGV2YWxBbmRMb2co
ImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOworICAgIHNlbGYucmVxdWVzdC5vbnN1
Y2Nlc3MgPSBjdXJzb3IyQ29udGludWUyOworfQorCitmdW5jdGlvbiBjdXJzb3IyQ29udGludWUy
KCkKK3sKKyAgICBzaG91bGRCZUZhbHNlKCJldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsIik7
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICJ2
YWx1ZTIiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQu
dmFsdWUueCIsICJ2YWx1ZTIiKTsgICAgCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVu
dC50YXJnZXQucmVzdWx0LnZhbHVlLnkiLCAienp6MiIpOworCisgICAgLy8gV2UgcmUtdXNlIHRo
ZSBsYXN0IHJlcXVlc3Qgb2JqZWN0LgorICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1
bHQuY29udGludWUoKSIpOworICAgIHNlbGYucmVxdWVzdC5vbnN1Y2Nlc3MgPSBsYXN0OworfQor
CitmdW5jdGlvbiBsYXN0KCkKK3sKKyAgICBzaG91bGRCZVRydWUoImV2ZW50LnRhcmdldC5yZXN1
bHQgPT09IG51bGwiKTsKKworICAgIGlmICh0ZXN0Q291bnQgPT0gMSkKKyAgICAgICAgdGVzdCgp
OworICAgIGVsc2UKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3JlbW92ZVZlbmRvclBy
ZWZpeGVzKCk7Cit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2Vycm9yLWNhdXNlcy1h
Ym9ydC1ieS1kZWZhdWx0LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL2Vycm9yLWNhdXNlcy1hYm9ydC1ieS1kZWZhdWx0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZkM2E3Y2Rm
NDE3NTU5YjNjZjM4MjdhMGE3ODdmNDNmMjY1ZGUzYjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZXJyb3ItY2F1c2VzLWFib3J0LWJ5
LWRlZmF1bHQuanMKQEAgLTAsMCArMSwxMDEgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsK
KyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlv
bigiVmVyaWZ5IHRoYXQgYSB0cmFuc2FjdGlvbiB3aXRoIGFuIGVycm9yIGFib3J0cyB1bmxlc3Mg
cHJldmVudERlZmF1bHQoKSBpcyBjYWxsZWQuIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAg
IHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4
ZWREQi5vcGVuKCdlcnJvci1jYXVzZXMtYWJvcnQtYnktZGVmYXVsdCcpIik7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uKCkKK3sKKyAgICBkYiA9
IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4aXN0aW5nOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxldGVFeGlzdGluZygpCit7Cisg
ICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7CisgICAgc2VsZi50cmFucyA9IGV2YWxB
bmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgi
dHJhbnMgIT09IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2Fs
bGJhY2s7CisgICAgZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IGFkZERhdGEiKTsKKwor
ICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBldmFsQW5kTG9nKCJkYi5jcmVh
dGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKK30KKworZnVuY3Rpb24gYWRkRGF0
YSgpCit7CisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsn
c3RvcmVOYW1lJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgZXZhbEFuZExv
ZygidHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrIik7CisgICAgZXZhbEFu
ZExvZygidHJhbnMub25jb21wbGV0ZSA9IHRyYW5zYWN0aW9uQ29tcGxldGVkIik7CisgICAgc3Rv
cmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIp
OworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6
enonfSwgJ2tleScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRNb3JlOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBh
ZGRNb3JlKCkKK3sKKyAgICAKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0
LnNvdXJjZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOworICAgIHJlcXVlc3QuYWRk
RXZlbnRMaXN0ZW5lcigiZXJyb3IiLCBwcmV2ZW50VGhlRGVmYXVsdCk7Cit9CisKK2Z1bmN0aW9u
IHByZXZlbnRUaGVEZWZhdWx0KCkKK3sKKyAgICBldmFsQW5kTG9nKCJldmVudC5wcmV2ZW50RGVm
YXVsdCgpIik7Cit9CisKK2Z1bmN0aW9uIHRyYW5zYWN0aW9uQ29tcGxldGVkKCkKK3sKKyAgICB0
ZXN0UGFzc2VkKCJUcmFuc2FjdGlvbiBjb21wbGV0ZWQiKTsKKyAgICBkZWJ1ZygiIik7CisgICAg
ZGVidWcoIiIpOworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlv
bihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIGV2YWxB
bmRMb2coInRyYW5zLm9uYWJvcnQgPSB0cmFuc2FjdGlvbkFib3J0ZWQxIik7CisgICAgZXZhbEFu
ZExvZygidHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrIik7Cisg
ICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5h
bWUnKSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScs
IHk6ICd6enonfSwgJ2tleScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVk
U3VjY2Vzc0NhbGxiYWNrOworICAgIHJlcXVlc3Qub25lcnJvciA9IGFsbG93RGVmYXVsdDsKK30K
KworZnVuY3Rpb24gYWxsb3dEZWZhdWx0KCkKK3sKKyAgICBkZWJ1ZygiRG9pbmcgbm90aGluZyB0
byBwcmV2ZW50IHRoZSBkZWZhdWx0IGFjdGlvbi4uLiIpOworfQorCitmdW5jdGlvbiB0cmFuc2Fj
dGlvbkFib3J0ZWQxKCkKK3sKKyAgICB0ZXN0UGFzc2VkKCJUcmFuc2FjdGlvbiBhYm9ydGVkIik7
CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCIiKTsKKyAgICB0cmFucyA9IGV2YWxBbmRMb2co
InRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rpb24uUkVB
RF9XUklURSkiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmFib3J0ID0gdHJhbnNhY3Rpb25B
Ym9ydGVkMiIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSB1bmV4cGVjdGVk
Q29tcGxldGVDYWxsYmFjayIpOworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFu
cy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
c3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKKyAgICBkZWJ1ZygiT21pdHRp
bmcgYW4gb25lcnJvciBoYW5kbGVyIik7Cit9CisKK2Z1bmN0aW9uIHRyYW5zYWN0aW9uQWJvcnRl
ZDIoKQoreworICAgIHRlc3RQYXNzZWQoIlRyYW5zYWN0aW9uIGFib3J0ZWQiKTsKKyAgICBmaW5p
c2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9leGNlcHRp
b24taW4tZXZlbnQtYWJvcnRzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL2V4Y2VwdGlvbi1pbi1ldmVudC1hYm9ydHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWIwNTg2ZmJh
MGEyODNlOWVlNWUzNDZiNTkwNzUwZjRkMDAxNzdkOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9leGNlcHRpb24taW4tZXZlbnQtYWJv
cnRzLmpzCkBAIC0wLDAgKzEsMTIxIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAg
aW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMn
KTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRl
c3QgZXhjZXB0aW9ucyBpbiBJREJSZXF1ZXN0IGhhbmRsZXJzIGNhdXNlIGFib3J0cy4iKTsKKwor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2V4Y2VwdGlvbi1pbi1ldmVudC1hYm9y
dHMnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvbjsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0VmVy
c2lvbigpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lv
bicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVs
ZXRlRXhpc3RpbmcoKQoreworICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOworICAg
IHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsK
KyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9
IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxl
dGUgPSBzdGFydFRlc3QiKTsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAg
ICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3Jl
TmFtZScsIG51bGwpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDog
J3ZhbHVlJywgeTogJ3p6eid9LCAna2V5JykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc3RhcnRUZXN0KCkKK3sKKyAgICBk
ZWJ1ZygiIik7CisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9u
KFsnc3RvcmVOYW1lJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgZXZhbEFu
ZExvZygidHJhbnMub25hYm9ydCA9IHRyYW5zYWN0aW9uQWJvcnRlZDEiKTsKKyAgICBldmFsQW5k
TG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2siKTsKKyAg
ICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFt
ZScpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlMics
IHk6ICd6enoyJ30sICdrZXkyJykiKTsKKyAgICB0cmFucy5hZGRFdmVudExpc3RlbmVyKCdzdWNj
ZXNzJywgY2F1c2VFeGNlcHRpb24sIHRydWUpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjYXVzZUV4Y2VwdGlvbigpCit7Cisg
ICAgZGVidWcoIiIpOworICAgIGV2YWxBbmRMb2coImV2ZW50LnByZXZlbnREZWZhdWx0KCkiKTsK
KyAgICBkZWJ1ZygiVGhyb3dpbmciKTsKKyAgICB0aHJvdyAidGhpcyBleGNlcHRpb24gaXMgZXhw
ZWN0ZWQiOworfQorCitmdW5jdGlvbiB0cmFuc2FjdGlvbkFib3J0ZWQxKCkKK3sKKyAgICBkZWJ1
ZygiIik7CisgICAgc2hvdWxkSGF2ZUhhZEVycm9yKCJ0aGlzIGV4Y2VwdGlvbiBpcyBleHBlY3Rl
ZCIpOworICAgIHRlc3RQYXNzZWQoIlRoZSB0cmFuc2FjdGlvbiB3YXMgYWJvcnRlZC4iKTsKKyAg
ICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUn
XSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5v
bmFib3J0ID0gdHJhbnNhY3Rpb25BYm9ydGVkMiIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9u
Y29tcGxldGUgPSB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjayIpOworICAgIHN0b3JlID0gZXZh
bEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdr
ZXknKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFj
azsKKyAgICBkYi5vbmVycm9yID0gY2F1c2VFeGNlcHRpb247Cit9CisKK2Z1bmN0aW9uIHRyYW5z
YWN0aW9uQWJvcnRlZDIoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBzaG91bGRIYXZlSGFkRXJy
b3IoInRoaXMgZXhjZXB0aW9uIGlzIGV4cGVjdGVkIik7CisgICAgdGVzdFBhc3NlZCgiVGhlIHRy
YW5zYWN0aW9uIHdhcyBhYm9ydGVkLiIpOworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMg
PSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRF
KSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxs
YmFjayIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSB0cmFuc2FjdGlvbkNv
bXBsZXRlZDEiKTsKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0
U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFk
ZCh7eDogJ3ZhbHVlMycsIHk6ICd6enozJ30sICdrZXkzJykiKTsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IHRocm93QW5kQ2F0Y2g7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisgICAgZGIub25lcnJvciA9IG51bGw7Cit9CisKK2Z1bmN0aW9uIHRocm93
QW5kQ2F0Y2goKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBldmFsQW5kTG9nKCJldmVudC5wcmV2
ZW50RGVmYXVsdCgpIik7CisgICAgZGVidWcoIlRocm93aW5nIHdpdGhpbiBhIHRyeSBibG9jayIp
OworICAgIHRyeSB7CisgICAgICAgIHRocm93ICJBSEhIIjsKKyAgICB9IGNhdGNoIChlKSB7Cisg
ICAgfQorfQorCitmdW5jdGlvbiB0cmFuc2FjdGlvbkNvbXBsZXRlZDEoKQoreworICAgIGRlYnVn
KCIiKTsKKyAgICB0ZXN0UGFzc2VkKCJUaGUgdHJhbnNhY3Rpb24gY29tcGxldGVkLiIpOworICAg
IHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSdd
LCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9u
YWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coInRyYW5z
Lm9uY29tcGxldGUgPSB0cmFuc2FjdGlvbkNvbXBsZXRlZDIiKTsKKyAgICBzdG9yZSA9IGV2YWxB
bmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlNCcsIHk6ICd6eno0J30sICdr
ZXk0JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeyB0ZXN0UGFzc2Vk
KCJrZXk0IGFkZGVkIik7IH0KKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gdHJhbnNhY3Rpb25Db21wbGV0ZWQyKCkKK3sKKyAgICBk
ZWJ1ZygiIik7CisgICAgdGVzdFBhc3NlZCgiVGhlIHRyYW5zYWN0aW9uIGNvbXBsZXRlZC4iKTsK
KyAgICBkZWJ1ZygiIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvZmFjdG9yeS1iYXNpY3MuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvZmFjdG9yeS1iYXNpY3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzAwN2Nm
YTcyM2U4OWJkNWM5ZWI0N2NjODg1ZGJkOWFkZmZiZjcwMAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9mYWN0b3J5LWJhc2ljcy5qcwpA
QCAtMCwwICsxLDgyIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2Ny
aXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBp
bXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgdGhlIGJh
c2ljcyBvZiBJbmRleGVkREIncyBJREJGYWN0b3J5LiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sK
KyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2Yg
aW5kZXhlZERCLm9wZW4gPT09ICdmdW5jdGlvbiciKTsKKyAgICBzaG91bGRCZVRydWUoInR5cGVv
ZiBpbmRleGVkREIuY21wID09PSAnZnVuY3Rpb24nIik7CisgICAgc2hvdWxkQmVUcnVlKCJ0eXBl
b2YgaW5kZXhlZERCLmdldERhdGFiYXNlTmFtZXMgPT09ICdmdW5jdGlvbiciKTsKKworICAgIHNo
b3VsZEJlVHJ1ZSgidHlwZW9mIGluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSA9PT0gJ2Z1bmN0aW9u
JyIpOworCisgICAgbmFtZSA9ICdzdG9yYWdlL2luZGV4ZWRkYi9mYWN0b3J5LWJhc2ljcyc7Cisg
ICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiaW5kZXhlZERCLmdldERhdGFiYXNlTmFtZXMoKSIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZ2V0RGF0YWJhc2VOYW1lc1N1Y2Nlc3MxOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBnZXREYXRhYmFzZU5hbWVz
U3VjY2VzczEoKQoreworICAgIHZhciBkYXRhYmFzZU5hbWVzOworICAgIGV2YWxBbmRMb2coImRh
dGFiYXNlTmFtZXMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVGYWxzZSgi
ZGF0YWJhc2VOYW1lcy5jb250YWlucygnIiArIG5hbWUgKyAiJykiKTsKKyAgICBzaG91bGRCZUZh
bHNlKCJkYXRhYmFzZU5hbWVzLmNvbnRhaW5zKCdEQVRBQkFTRSBUSEFUIERPRVMgTk9UIEVYSVNU
JykiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBk
ZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biBvcGVuU3VjY2VzcygpCit7CisgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5j
bG9zZSgpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5nZXREYXRhYmFz
ZU5hbWVzKCkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldERhdGFiYXNlTmFtZXNTdWNj
ZXNzMjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30K
KworZnVuY3Rpb24gZ2V0RGF0YWJhc2VOYW1lc1N1Y2Nlc3MyKCkKK3sKKyAgICB2YXIgZGF0YWJh
c2VOYW1lczsKKyAgICBldmFsQW5kTG9nKCJkYXRhYmFzZU5hbWVzID0gZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgiZGF0YWJhc2VOYW1lcy5jb250YWlucygnIiArIG5h
bWUgKyAiJykiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJkYXRhYmFzZU5hbWVzLmNvbnRhaW5zKCdE
QVRBQkFTRSBUSEFUIERPRVMgTk9UIEVYSVNUJykiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoJyIgKyBuYW1lICsgIicpIik7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVEYXRhYmFzZVN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZURhdGFi
YXNlU3VjY2VzcygpCit7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5nZXRE
YXRhYmFzZU5hbWVzKCkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldERhdGFiYXNlTmFt
ZXNTdWNjZXNzMzsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gZ2V0RGF0YWJhc2VOYW1lc1N1Y2Nlc3MzKCkKK3sKKyAgICB2YXIg
ZGF0YWJhc2VOYW1lczsKKyAgICBldmFsQW5kTG9nKCJkYXRhYmFzZU5hbWVzID0gZXZlbnQudGFy
Z2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlRmFsc2UoImRhdGFiYXNlTmFtZXMuY29udGFpbnMo
JyIgKyBuYW1lICsgIicpIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGF0YWJhc2VOYW1lcy5jb250
YWlucygnREFUQUJBU0UgVEhBVCBET0VTIE5PVCBFWElTVCcpIik7CisKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCdEQVRBQkFTRSBUSEFUIERPRVMg
Tk9UIEVYSVNUJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZURhdGFiYXNlU3Vj
Y2VzczI7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIGRlbGV0ZURhdGFiYXNlU3VjY2VzczIoKQoreworICAgIGZpbmlzaEpTVGVz
dCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ZhY3RvcnktY21wLmpz
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ZhY3RvcnktY21wLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmY0MjY3NmFjMjRiMjljMDg4YzA2ZGJjMjEyZTMyN2MwMmExNzNlNzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
ZmFjdG9yeS1jbXAuanMKQEAgLTAsMCArMSwxNDEgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMp
IHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlw
dGlvbigiVGVzdCBJbmRleGVkREIga2V5IGNvbXBhcmlzb24gdXNpbmcgSURCRmFjdG9yeS5jbXAo
KS4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsK
KworICAgIHNob3VsZEJlVHJ1ZSgidHlwZW9mIGluZGV4ZWREQi5jbXAgPT09ICdmdW5jdGlvbici
KTsKKworICAgIHRlc3RWYWxpZEtleXMoKTsKKyAgICB0ZXN0SW52YWxpZEtleXMoKTsKKyAgICB0
ZXN0SWRlbnRpY2FsS2V5cygpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitmdW5jdGlvbiB0
ZXN0VmFsaWRLZXlzKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImNvbXBhcmUgdmFs
aWQga2V5cyIpOworCisgICAgdmFyIGtleXMgPSBbCisgICAgICAgICItSW5maW5pdHkiLAorICAg
ICAgICAiLU51bWJlci5NQVhfVkFMVUUiLAorICAgICAgICAiLTEiLAorICAgICAgICAiLU51bWJl
ci5NSU5fVkFMVUUiLAorICAgICAgICAiMCIsCisgICAgICAgICJOdW1iZXIuTUlOX1ZBTFVFIiwK
KyAgICAgICAgIjEiLAorICAgICAgICAiTnVtYmVyLk1BWF9WQUxVRSIsCisgICAgICAgICJJbmZp
bml0eSIsCisKKyAgICAgICAgIm5ldyBEYXRlKDApIiwKKyAgICAgICAgIm5ldyBEYXRlKDEwMDAp
IiwKKyAgICAgICAgIm5ldyBEYXRlKDEzMTczOTk5MzEwMjMpIiwKKyAgICAgICAgCisgICAgICAg
ICInJyIsCisgICAgICAgICInXHgwMCciLAorICAgICAgICAiJ2EnIiwKKyAgICAgICAgIidhYSci
LAorICAgICAgICAiJ2InIiwKKyAgICAgICAgIidiYSciLAorCisgICAgICAgICInXHhBMiciLCAv
LyBVKzAwQTIgQ0VOVCBTSUdOCisgICAgICAgICInXHU2QzM0JyIsIC8vIFUrNkMzNCBDSksgVU5J
RklFRCBJREVPR1JBUEggKHdhdGVyKQorICAgICAgICAiJ1x1RDgzNFx1REQxRSciLCAvLyBVKzFE
MTFFIE1VU0lDQUwgU1lNQk9MIEctQ0xFRiAoVVRGLTE2IHN1cnJvZ2F0ZSBwYWlyKQorICAgICAg
ICAiJ1x1RkZGRCciLCAvLyBVK0ZGRkQgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSCisKKyAgICAgICAg
IltdIiwKKworICAgICAgICAiWy1JbmZpbml0eV0iLAorICAgICAgICAiWy1OdW1iZXIuTUFYX1ZB
TFVFXSIsCisgICAgICAgICJbLTFdIiwKKyAgICAgICAgIlstTnVtYmVyLk1JTl9WQUxVRV0iLAor
ICAgICAgICAiWzBdIiwKKyAgICAgICAgIltOdW1iZXIuTUlOX1ZBTFVFXSIsCisgICAgICAgICJb
MV0iLAorICAgICAgICAiW051bWJlci5NQVhfVkFMVUVdIiwKKyAgICAgICAgIltJbmZpbml0eV0i
LAorCisgICAgICAgICJbbmV3IERhdGUoMCldIiwKKyAgICAgICAgIltuZXcgRGF0ZSgxMDAwKV0i
LAorICAgICAgICAiW25ldyBEYXRlKDEzMTczOTk5MzEwMjMpXSIsCisgICAgICAgIAorICAgICAg
ICAiWycnXSIsCisgICAgICAgICJbJ1x4MDAnXSIsCisgICAgICAgICJbJ2EnXSIsCisgICAgICAg
ICJbJ2FhJ10iLAorICAgICAgICAiWydiJ10iLAorICAgICAgICAiWydiYSddIiwKKworICAgICAg
ICAiWydceEEyJ10iLCAvLyBVKzAwQTIgQ0VOVCBTSUdOCisgICAgICAgICJbJ1x1NkMzNCddIiwg
Ly8gVSs2QzM0IENKSyBVTklGSUVEIElERU9HUkFQSCAod2F0ZXIpCisgICAgICAgICJbJ1x1RDgz
NFx1REQxRSddIiwgLy8gVSsxRDExRSBNVVNJQ0FMIFNZTUJPTCBHLUNMRUYgKFVURi0xNiBzdXJy
b2dhdGUgcGFpcikKKyAgICAgICAgIlsnXHVGRkZEJ10iLCAvLyBVK0ZGRkQgUkVQTEFDRU1FTlQg
Q0hBUkFDVEVSCisKKyAgICAgICAgIltbXV0iLAorICAgICAgICAKKyAgICAgICAgIltbXSwgW11d
IiwKKyAgICAgICAgIltbXSwgW10sIFtdXSIsCisKKyAgICAgICAgIltbW11dXSIsCisgICAgICAg
ICJbW1tbXV1dXSIKKyAgICBdOworCisgICAgdmFyIGksIGtleTEsIGtleTI7CisgICAgZm9yIChp
ID0gMDsgaSA8IGtleXMubGVuZ3RoIC0gMTsgaSArPSAxKSB7CisgICAgICAgIGtleTEgPSBrZXlz
W2ldOworICAgICAgICBrZXkyID0ga2V5c1tpICsgMV07CisgICAgICAgIHNob3VsZEJlVHJ1ZSgi
aW5kZXhlZERCLmNtcCgiICsga2V5MSArICIsIiArIGtleTIgKyAiKSA9PT0gLTEiKTsKKyAgICAg
ICAgc2hvdWxkQmVUcnVlKCJpbmRleGVkREIuY21wKCIgKyBrZXkyICsgIiwiICsga2V5MSArICIp
ID09PSAxIik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXhlZERCLmNtcCgiICsga2V5MSAr
ICIsIiArIGtleTEgKyAiKSA9PT0gMCIpOworICAgICAgICBzaG91bGRCZVRydWUoImluZGV4ZWRE
Qi5jbXAoIiArIGtleTIgKyAiLCIgKyBrZXkyICsgIikgPT09IDAiKTsKKyAgICB9Cit9CisKK2Z1
bmN0aW9uIHRlc3RJbnZhbGlkS2V5cygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJj
b21wYXJlIGludmFsaWQga2V5cyIpOworCisgICAgdmFyIGludmFsaWRLZXlzID0gWworICAgICAg
ICAidm9pZCAwIiwgLy8gdW5kZWZpbmVkCisgICAgICAgICJ0cnVlIiwKKyAgICAgICAgImZhbHNl
IiwKKyAgICAgICAgIk5hTiIsCisgICAgICAgICJuZXcgRGF0ZShOYU4pIiwKKyAgICAgICAgIm51
bGwiLAorICAgICAgICAie30iLAorICAgICAgICAiZnVuY3Rpb24gKCkge30iLAorICAgICAgICAi
L3JlZ2V4LyIsCisgICAgICAgICJzZWxmIiwKKyAgICAgICAgInNlbGYuZG9jdW1lbnQiLAorICAg
ICAgICAic2VsZi5kb2N1bWVudC5ib2R5IgorICAgIF07CisKKyAgICB2YXIgaSwga2V5MSwga2V5
MjsKKyAgICBmb3IgKGkgPSAwOyBpIDwgaW52YWxpZEtleXMubGVuZ3RoIC0gMTsgaSArPSAxKSB7
CisgICAgICAgIGtleTEgPSBpbnZhbGlkS2V5c1tpXTsKKyAgICAgICAga2V5MiA9IGludmFsaWRL
ZXlzW2kgKyAxXTsKKyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXhlZERCLmNt
cCgiICsga2V5MSArICIsICIgKyBrZXkyICsgIikiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFU
QV9FUlIiKTsKKyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXhlZERCLmNtcCgi
ICsga2V5MiArICIsICIgKyBrZXkxICsgIikiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9F
UlIiKTsKKyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXhlZERCLmNtcCgiICsg
a2V5MSArICIsICd2YWxpZCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Cisg
ICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4ZWREQi5jbXAoJ3ZhbGlkJywgIiAr
IGtleTEgKyAiKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworICAgICAgICBl
dmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJpbmRleGVkREIuY21wKCIgKyBrZXkyICsgIiwgJ3ZhbGlk
JykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKyAgICAgICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigiaW5kZXhlZERCLmNtcCgndmFsaWQnLCAiICsga2V5MiArICIpIiwgIklE
QkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0
SWRlbnRpY2FsS2V5cygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJjb21wYXJlIGlk
ZW50aWNhbCBrZXlzIik7CisKKyAgICBzaG91bGRCZVRydWUoImluZGV4ZWREQi5jbXAoMCwgLTAp
ID09PSAwIik7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZmFjdG9yeS1k
ZWxldGVkYXRhYmFzZS1pbnRlcmFjdGlvbnMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvZmFjdG9yeS1kZWxldGVkYXRhYmFzZS1pbnRlcmFjdGlvbnMuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZTlkOWI3OTQzZGVhNWYzZTY2OWI1NGU4MmYzNTdkOTZiMjg0ZmIwYwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9mYWN0
b3J5LWRlbGV0ZWRhdGFiYXNlLWludGVyYWN0aW9ucy5qcwpAQCAtMCwwICsxLDE4NiBAQAoraWYg
KHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVk
LmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoZSBkZWxldGVEYXRhYmFzZSBjYWxsIGFu
ZCBpdHMgaW50ZXJhY3Rpb24gd2l0aCBvcGVuL3NldFZlcnNpb24iKTsKKworZnVuY3Rpb24gQ29u
bmVjdGlvbihpZCkgeworICAgIGlkID0gU3RyaW5nKGlkKTsKKyAgICB2YXIgdGhhdCA9IHRoaXM7
CisgICAgdGhpcy5vcGVuID0gZnVuY3Rpb24ob3B0cykgeworICAgICAgICBzZWxmLnN0ZXBzLnB1
c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIub3BlbiciKSk7CisgICAgICAgIHZhciByZXEgPSBp
bmRleGVkREIub3BlbihzZWxmLmRibmFtZSk7CisgICAgICAgIHJlcS5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZSkg
eworICAgICAgICAgICAgdGhhdC5oYW5kbGUgPSBlLnRhcmdldC5yZXN1bHQ7CisgICAgICAgICAg
ICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIub3Blbi5vbnN1Y2Nlc3Mn
IikpOworICAgICAgICAgICAgdGhhdC5oYW5kbGUub252ZXJzaW9uY2hhbmdlID0gZnVuY3Rpb24o
ZSkgeworICAgICAgICAgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlk
ICsgIi5vbnZlcnNpb25jaGFuZ2UnIikpOworICAgICAgICAgICAgICAgIGlmIChvcHRzICYmIG9w
dHMub252ZXJzaW9uKSB7IG9wdHMub252ZXJzaW9uLmNhbGwodGhhdCk7IH0KKyAgICAgICAgICAg
IH07CisgICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9uc3VjY2VzcykgeyBvcHRzLm9uc3Vj
Y2Vzcy5jYWxsKHRoYXQpOyB9CisgICAgICAgIH07CisgICAgfTsKKworICAgIHRoaXMuY2xvc2Ug
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsg
aWQgKyAiLmNsb3NlJyIpKTsKKyAgICAgICAgdGhpcy5oYW5kbGUuY2xvc2UoKTsKKyAgICB9Owor
CisgICAgdGhpcy5zZXRWZXJzaW9uID0gZnVuY3Rpb24ob3B0cykgeworICAgICAgICBzZWxmLnN0
ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIuc2V0VmVyc2lvbiciKSk7CisgICAgICAg
IHZhciByZXEgPSB0aGlzLmhhbmRsZS5zZXRWZXJzaW9uKFN0cmluZyhzZWxmLnZlcisrKSk7Cisg
ICAgICAgIHJlcS5vbmFib3J0ID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgICAgIHNlbGYuc3Rl
cHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5zZXRWZXJzaW9uLm9uYWJvcnQnIikpOwor
ICAgICAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5vbmFib3J0KSB7IG9wdHMub25hYm9ydC5jYWxs
KHRoYXQpOyB9CisgICAgICAgIH07CisgICAgICAgIHJlcS5vbmJsb2NrZWQgPSBmdW5jdGlvbiAo
ZSkgeworICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAi
LnNldFZlcnNpb24ub25ibG9ja2VkJyIpKTsKKyAgICAgICAgICAgIGlmIChvcHRzICYmIG9wdHMu
b25ibG9ja2VkKSB7IG9wdHMub25ibG9ja2VkLmNhbGwodGhhdCk7IH0KKyAgICAgICAgfTsKKyAg
ICAgICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgICAgICBzZWxmLnN0
ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIuc2V0VmVyc2lvbi5vbnN1Y2Nlc3MnIikp
OworICAgICAgICAgICAgaWYgKHRoYXQuaGFuZGxlLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMo
InRlc3Qtc3RvcmUiICsgc2VsZi52ZXIpKSB7CisgICAgICAgICAgICAgICAgdGhhdC5oYW5kbGUu
ZGVsZXRlT2JqZWN0U3RvcmUoInRlc3Qtc3RvcmUiICsgc2VsZi52ZXIpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgdmFyIHN0b3JlID0gdGhhdC5oYW5kbGUuY3JlYXRlT2JqZWN0U3RvcmUo
InRlc3Qtc3RvcmUiICsgc2VsZi52ZXIpOworICAgICAgICAgICAgdmFyIGNvdW50ID0gMDsKKyAg
ICAgICAgICAgIGRvX2FzeW5jX3B1dHMoKTsgLy8gS2VlcCB0aGlzIHRyYW5zYWN0aW9uIHJ1bm5p
bmcgZm9yIGEgd2hpbGUKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRvX2FzeW5jX3B1dHMoKSB7Cisg
ICAgICAgICAgICAgICAgdmFyIHJlcSA9IHN0b3JlLnB1dChjb3VudCwgY291bnQpOworICAgICAg
ICAgICAgICAgIHJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAg
ICAgICAgICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgICAgICAgICAg
ICAgIGlmICgrK2NvdW50IDwgMTApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvX2FzeW5j
X3B1dHMoKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5zZXRWZXJzaW9u
LnRyYW5zYWN0aW9uLWNvbXBsZXRlJyIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChv
cHRzICYmIG9wdHMub25zdWNjZXNzKSB7IG9wdHMub25zdWNjZXNzLmNhbGwodGhhdCk7IH0KKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICB9Cisg
ICAgICAgIH07CisgICAgICAgIHJlcS5vbmVycm9yID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAg
ICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5zZXRWZXJzaW9uLm9u
ZXJyb3InIikpOworICAgICAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5vbmVycm9yKSB7IG9wdHMu
b25lcnJvci5jYWxsKHRoYXQpOyB9CisgICAgICAgIH07CisgICAgfTsKK30KKworZnVuY3Rpb24g
ZGVsZXRlRGF0YWJhc2UoaWQsIG5hbWUsIG9wdHMpIHsKKyAgICBzZWxmLnN0ZXBzLnB1c2goZXZh
bEFuZExvZygiJ2RlbGV0ZURhdGFiYXNlKCIgKyBpZCArICIpJyIpKTsKKyAgICB2YXIgcmVxID0g
aW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKG5hbWUpOworICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbiAoZSkgeworICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJ2RlbGV0ZURh
dGFiYXNlKCIgKyBpZCArICIpLm9uc3VjY2VzcyciKSk7CisgICAgICAgIGlmIChvcHRzICYmIG9w
dHMub25zdWNjZXNzKSB7IG9wdHMub25zdWNjZXNzLmNhbGwobnVsbCk7IH0KKyAgICB9OworICAg
IHJlcS5vbmVycm9yID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2
YWxBbmRMb2coIidkZWxldGVEYXRhYmFzZSgiICsgaWQgKyAiKS5vbmVycm9yJyIpKTsKKyAgICAg
ICAgaWYgKG9wdHMgJiYgb3B0cy5vbmVycm9yKSB7IG9wdHMub25lcnJvci5jYWxsKG51bGwpOyB9
CisgICAgfTsKKyAgICByZXEub25ibG9ja2VkID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgc2Vs
Zi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIidkZWxldGVEYXRhYmFzZSgiICsgaWQgKyAiKS5vbmJs
b2NrZWQnIikpOworICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9uYmxvY2tlZCkgeyBvcHRzLm9u
YmxvY2tlZC5jYWxsKG51bGwpOyB9CisgICAgfTsKK30KKworLy8gcnVuIGEgc2VyaWVzIG9mIHN0
ZXBzIHRoYXQgdGFrZSBhIGNvbnRpbnVhdGlvbiBmdW5jdGlvbgorZnVuY3Rpb24gcnVuU3RlcHMo
Y29tbWFuZHMpIHsKKyAgICBpZiAoY29tbWFuZHMubGVuZ3RoKSB7CisgICAgICAgIHZhciBjb21t
YW5kID0gY29tbWFuZHMuc2hpZnQoKTsKKyAgICAgICAgY29tbWFuZChmdW5jdGlvbigpIHsgcnVu
U3RlcHMoY29tbWFuZHMpOyB9KTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAg
cmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICB0ZXN0MSgpOworfQorCitmdW5jdGlvbiB0ZXN0
MSgpIHsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRFU1Q6IGRlbGV0ZURhdGFiYXNlIGJs
b2NrZWQgb24gb3BlbiBoYW5kbGVzIik7CisgICAgZXZhbEFuZExvZygic2VsZi5kYm5hbWUgPSAn
dGVzdDEnOyBzZWxmLnZlciA9IDE7IHNlbGYuc3RlcHMgPSBbXSIpOworICAgIHZhciBoID0gbmV3
IENvbm5lY3Rpb24oImgiKTsKKyAgICBydW5TdGVwcyhbZnVuY3Rpb24oZG9OZXh0KSB7IGgub3Bl
bih7b25zdWNjZXNzOiBkb05leHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9u
dmVyc2lvbjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkZWJ1ZygiICAgIGggY2xvc2luZywgYnV0IG5vdCBpbW1lZGlhdGVseSIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgaC5jbG9z
ZSgpOyB9LCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0pOyB9LAorICAg
ICAgICBmdW5jdGlvbihkb05leHQpIHsgZGVsZXRlRGF0YWJhc2UoIiIsIHNlbGYuZGJuYW1lLCB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBvbnN1Y2Nlc3M6IGZpbmlzaFRlc3R9KTsgfSwK
KyAgICAgICAgXSk7CisgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJzZWxmLnN0ZXBzLnRvU3RyaW5nKCkiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgWyJoLm9wZW4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJoLm9wZW4ub25zdWNjZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVs
ZXRlRGF0YWJhc2UoKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgub252ZXJz
aW9uY2hhbmdlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVsZXRlRGF0YWJh
c2UoKS5vbmJsb2NrZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoLmNsb3Nl
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVsZXRlRGF0YWJhc2UoKS5vbnN1
Y2Nlc3MiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS50b1N0cmluZygpKTsKKyAg
ICAgICAgdGVzdDIoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3QyKCkgeworICAgIGRlYnVn
KCIiKTsKKyAgICBkZWJ1ZygiVEVTVDogZGVsZXRlRGF0YWJhc2Ugbm90IGJsb2NrZWQgd2hlbiBo
YW5kbGVzIGNsb3NlIGltbWVkaWF0ZWx5Iik7CisgICAgZXZhbEFuZExvZygic2VsZi5kYm5hbWUg
PSAndGVzdDInOyBzZWxmLnZlciA9IDE7IHNlbGYuc3RlcHMgPSBbXSIpOworICAgIHZhciBoID0g
bmV3IENvbm5lY3Rpb24oImgiKTsKKyAgICBydW5TdGVwcyhbZnVuY3Rpb24oZG9OZXh0KSB7IGgu
b3Blbih7b25zdWNjZXNzOiBkb05leHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvbnZlcnNpb246IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKCIgICAgaCBjbG9zaW5nIGltbWVkaWF0ZWx5
Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaC5jbG9z
ZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0pOyB9LAor
ICAgICAgICBmdW5jdGlvbihkb05leHQpIHsgZGVsZXRlRGF0YWJhc2UoIiIsIHNlbGYuZGJuYW1l
LCB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBvbnN1Y2Nlc3M6IGZpbmlzaFRlc3R9KTsg
fSwKKyAgICAgICAgXSk7CisgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgZGVi
dWcoIk5PVEU6IFdpbGwgRkFJTCB3aXRoIGV4dHJhIGJvZ3VzIGRlbGV0ZURhdGFiYXNlKCkub25i
bG9ja2VkIHN0ZXA7IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTEz
MCIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNlbGYuc3RlcHMudG9TdHJpbmco
KSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImgub3BlbiIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImgub3Blbi5vbnN1Y2Nlc3MiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJkZWxldGVEYXRhYmFzZSgpIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiaC5vbnZlcnNpb25jaGFuZ2UiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJoLmNsb3NlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVsZXRl
RGF0YWJhc2UoKS5vbnN1Y2Nlc3MiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS50
b1N0cmluZygpKTsKKyAgICAgICAgdGVzdDMoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3Qz
KCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVEVTVDogZGVsZXRlRGF0YWJhc2UgaXMg
ZGVsYXllZCBpZiBhIFZFUlNJT05fQ0hBTkdFIHRyYW5zYWN0aW9uIGlzIHJ1bm5pbmciKTsKKyAg
ICBldmFsQW5kTG9nKCJzZWxmLmRibmFtZSA9ICd0ZXN0Myc7IHNlbGYudmVyID0gMTsgc2VsZi5z
dGVwcyA9IFtdIik7CisgICAgdmFyIGggPSBuZXcgQ29ubmVjdGlvbigiaCIpOworICAgIHJ1blN0
ZXBzKFtmdW5jdGlvbihkb05leHQpIHsgaC5vcGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb252ZXJzaW9uOiBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKCIgICAgaCBjbG9zaW5nLCBidXQg
bm90IGltbWVkaWF0ZWx5Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBoLmNsb3NlKCk7IH0sIDApOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9fSk7IH0sCisgICAgICAgICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkg
eyBoLnNldFZlcnNpb24oKTsgZG9OZXh0KCk7IH0sCisgICAgICAgICAgICAgIGZ1bmN0aW9uKGRv
TmV4dCkgeyBkZWxldGVEYXRhYmFzZSgiIiwgc2VsZi5kYm5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHtvbnN1Y2Nlc3M6IGZpbmlzaFRlc3R9KTsgfSwKKyAgICAgICAgICAg
ICAgXSk7CisKKyAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgeworICAgICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoInNlbGYuc3RlcHMudG9TdHJpbmcoKSIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBbImgub3BlbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgu
b3Blbi5vbnN1Y2Nlc3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoLnNldFZl
cnNpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWxldGVEYXRhYmFzZSgp
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaC5zZXRWZXJzaW9uLm9uc3VjY2Vz
cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImguc2V0VmVyc2lvbi50cmFuc2Fj
dGlvbi1jb21wbGV0ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgub252ZXJz
aW9uY2hhbmdlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVsZXRlRGF0YWJh
c2UoKS5vbmJsb2NrZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoLmNsb3Nl
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVsZXRlRGF0YWJhc2UoKS5vbnN1
Y2Nlc3MiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS50b1N0cmluZygpKTsKKyAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQorfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL2ZhY3RvcnktZGVsZXRlZGF0YWJhc2UuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvZmFjdG9yeS1kZWxldGVkYXRhYmFzZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wNmZhNTYyMjlhNzQyNjY2ZWE5ZmIwNTE2YThhY2I3MjQxMTUwZjk4Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ZhY3RvcnktZGVs
ZXRlZGF0YWJhc2UuanMKQEAgLTAsMCArMSw5MSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykg
eworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0
aW9uKCJUZXN0IEluZGV4ZWREQidzIHdlYmtpdEluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgpLiIp
OworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignZGF0YWJhc2UtdG8tZGVsZXRl
JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHN0YXJ0U2V0VmVyc2lvbjsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc3Rh
cnRTZXRWZXJzaW9uKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25l
dyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4aXN0aW5nOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiBkZWxldGVFeGlzdGluZygpCit7CisgICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRy
YW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09
IG51bGwiKTsKKworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKKworICAgIHNlbGYuaW5kZXggPSBldmFsQW5k
TG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhOYW1lJywgJycpIik7CisgICAgc2hvdWxkQmVU
cnVlKCJzdG9yZS5pbmRleE5hbWVzLmNvbnRhaW5zKCdpbmRleE5hbWUnKSIpOworCisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCgndmFsdWUnLCAna2V5JykiKTsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBs
ZXRlID0gZ2V0VmFsdWU7Cit9CisKK2Z1bmN0aW9uIGdldFZhbHVlKCkKK3sKKyAgICB0cmFuc2Fj
dGlvbiA9IGV2YWxBbmRMb2coImRiLnRyYW5zYWN0aW9uKCdzdG9yZU5hbWUnLCBJREJUcmFuc2Fj
dGlvbi5SRUFEX1dSSVRFKSIpOworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKKyAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5z
YWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworCisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInN0b3JlLmdldCgna2V5JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZElu
ZGV4OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBhZGRJbmRleCgpCit7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVu
dC50YXJnZXQucmVzdWx0IiwgInZhbHVlIik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
ZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZGVsZXRlRGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZURhdGFiYXNlKCkKK3sKKyAgICBkYi5vbnZlcnNp
b25jaGFuZ2UgPSBmdW5jdGlvbigpIHsgZGIuY2xvc2UoKTsgfQorICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCdkYXRhYmFzZS10by1k
ZWxldGUnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcmVvcGVuRGF0YWJhc2U7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IHJlb3BlbkRhdGFiYXNlKCkKK3sKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERC
Lm9wZW4oJ2RhdGFiYXNlLXRvLWRlbGV0ZScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBz
dGFydFNldFZlcnNpb25BZ2FpbjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc3RhcnRTZXRWZXJzaW9uQWdhaW4oKQoreworICAg
IHJkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IHZlcmlmeU5vdEZvdW5kOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiB2ZXJpZnlOb3RGb3VuZCgp
Cit7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjAiKTsKKwor
ICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L2luZGV4LWNvdW50LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L2luZGV4LWNvdW50LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiMGU0ZWYwOTg0NTAxOWY3ZTFmZGZhZDdkNDZj
NmFiYWJiNDZhN2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvaW5kZXgtY291bnQuanMKQEAgLTAsMCArMSwxNTQgQEAKK2lmICh0aGlz
LmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycp
OworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBJREJJbmRleC5jb3VudCgpLiIp
OworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignaW5kZXgtY291bnQnKSIpOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGRiID0gZXZhbEFuZExvZygiZGIg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJk
Yi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBy
ZXBhcmVEYXRhYmFzZTsKKyAgICB9OworfQorCitmdW5jdGlvbiBwcmVwYXJlRGF0YWJhc2UoKQor
eworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygicHJlcGFyaW5nIGRhdGFiYXNlIik7CisgICAg
c2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwor
ICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKworICAgIGRlbGV0ZUFsbE9iamVj
dFN0b3JlcyhkYik7CisKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7CisKKyAgICBzZWxmLmluZGV4ID0gZXZh
bEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZScsICcnKSIpOworICAgIHNob3Vs
ZEJlVHJ1ZSgic3RvcmUuaW5kZXhOYW1lcy5jb250YWlucygnaW5kZXhOYW1lJykiKTsKKworICAg
IGRlYnVnKCJhZGRpbmcgMCAuLi4gOTkiKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsg
KytpKSB7CisgICAgICAgIHJlcXVlc3QgPSBzdG9yZS5hZGQoaSwgaSk7CisgICAgICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIH0KKyAgICB0cmFucy5v
bmNvbXBsZXRlID0gdmVyaWZ5Q291bnQ7Cit9CisKK2Z1bmN0aW9uIHZlcmlmeUNvdW50KCkKK3sK
KyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInZlcmlmeWluZyBjb3VudCB3aXRob3V0IHJhbmdl
Iik7CisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9y
ZU5hbWUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7CisgICAgc2hvdWxkQmVUcnVlKCJ0
cmFucyAhPSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxi
YWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSB2ZXJpZnlDb3VudFdpdGhSYW5nZTsKKworICAg
IHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1l
JykiKTsKKyAgICBzaG91bGRCZVRydWUoInN0b3JlICE9IG51bGwiKTsKKyAgICBpbmRleCA9IGV2
YWxBbmRMb2coImluZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4TmFtZScpIik7CisgICAgc2hvdWxk
QmVUcnVlKCJpbmRleCAhPSBudWxsIik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVx
dWVzdCA9IGluZGV4LmNvdW50KCkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251bWJlciciKTsK
KyAgICAgICAgIHNob3VsZEJlKCJyZXF1ZXN0LnJlc3VsdCIsICIxMDAiKTsKKyAgICAgICAgIC8v
IGxldCB0aGUgdHJhbnNhY3Rpb24gY29tcGxldGUKKyAgICB9OworfQorCitmdW5jdGlvbiB2ZXJp
ZnlDb3VudFdpdGhSYW5nZSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ2ZXJpZnlp
bmcgY291bnQgd2l0aCByYW5nZSIpOworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBk
Yi50cmFuc2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKSIpOwor
ICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1
bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gdmVyaWZ5Q291
bnRXaXRoS2V5OworCisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVj
dFN0b3JlKCdzdG9yZU5hbWUnKSIpOworICAgIHNob3VsZEJlVHJ1ZSgic3RvcmUgIT0gbnVsbCIp
OworICAgIHN0b3JlID0gZXZhbEFuZExvZygiaW5kZXggPSB0cmFucy5vYmplY3RTdG9yZSgnc3Rv
cmVOYW1lJykuaW5kZXgoJ2luZGV4TmFtZScpIik7CisgICAgc2hvdWxkQmVUcnVlKCJpbmRleCAh
PSBudWxsIik7CisKKyAgICB2YXIgdGVzdHMgPSBbCisgICAgICAgIHsgbG93ZXI6IDAsIGxvd2Vy
T3BlbjogZmFsc2UsIHVwcGVyOiA5OSwgdXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDEwMCB9
LAorICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IHRydWUsIHVwcGVyOiA5OSwgdXBwZXJP
cGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDk5IH0sCisgICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3Bl
bjogZmFsc2UsIHVwcGVyOiA5OSwgdXBwZXJPcGVuOiB0cnVlLCBleHBlY3RlZDogOTkgfSwKKyAg
ICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiB0cnVlLCB1cHBlcjogOTksIHVwcGVyT3Blbjog
dHJ1ZSwgZXhwZWN0ZWQ6IDk4IH0sCisgICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogZmFs
c2UsIHVwcGVyOiAxMDAsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiAxMDAgfSwKKyAgICAg
ICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDEwMCwgdXBwZXJPcGVuOiBm
YWxzZSwgZXhwZWN0ZWQ6IDEwMCB9LAorICAgICAgICB7IGxvd2VyOiAxMCwgbG93ZXJPcGVuOiBm
YWxzZSwgdXBwZXI6IDEwMCwgdXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDkwIH0sCisgICAg
ICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiAwLCB1cHBlck9wZW46IGZh
bHNlLCBleHBlY3RlZDogMSB9LAorICAgICAgICB7IGxvd2VyOiA1MDAsIGxvd2VyT3BlbjogZmFs
c2UsIHVwcGVyOiA1MDAsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiAwIH0KKyAgICBdOwor
CisgICAgZnVuY3Rpb24gbmV4dFRlc3QoKSB7CisgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAg
ZXZhbEFuZExvZygidGVzdCA9ICIgKyBKU09OLnN0cmluZ2lmeSh0ZXN0cy5zaGlmdCgpKSk7Cisg
ICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXguY291bnQoSURCS2V5
UmFuZ2UuYm91bmQodGVzdC5sb3dlciwgdGVzdC51cHBlciwgdGVzdC5sb3dlck9wZW4sIHRlc3Qu
dXBwZXJPcGVuKSkiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251bWJlcici
KTsKKyAgICAgICAgICAgICBzaG91bGRCZSgicmVxdWVzdC5yZXN1bHQiLCBTdHJpbmcodGVzdC5l
eHBlY3RlZCkpOworCisgICAgICAgICAgICAgaWYgKHRlc3RzLmxlbmd0aCkgeworICAgICAgICAg
ICAgICAgICBuZXh0VGVzdCgpOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAvLyBvdGhl
cndpc2UgbGV0IHRoZSB0cmFuc2FjdGlvbiBjb21wbGV0ZQorICAgICAgICB9OworICAgIH0KKwor
ICAgIG5leHRUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHZlcmlmeUNvdW50V2l0aEtleSgpCit7Cisg
ICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ2ZXJpZnlpbmcgY291bnQgd2l0aCBrZXkiKTsKKyAg
ICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlTmFtZScs
IElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9
IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Cisg
ICAgdHJhbnMub25jb21wbGV0ZSA9IGZpbmlzaEpTVGVzdDsKKworICAgIHN0b3JlID0gZXZhbEFu
ZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICBzaG91
bGRCZVRydWUoInN0b3JlICE9IG51bGwiKTsKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coImluZGV4
ID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpLmluZGV4KCdpbmRleE5hbWUnKSIpOwor
ICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXggIT0gbnVsbCIpOworCisgICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigiaW5kZXguY291bnQoTmFOKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VS
UiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4LmNvdW50KHt9KSIsICJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24o
ImluZGV4LmNvdW50KC9yZWdleC8pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7
CisKKyAgICB2YXIgdGVzdHMgPSBbCisgICAgICAgIHsga2V5OiAwLCBleHBlY3RlZDogMSB9LAor
ICAgICAgICB7IGtleTogMTAwLCBleHBlY3RlZDogMCB9LAorICAgICAgICB7IGtleTogbnVsbCwg
ZXhwZWN0ZWQ6IDEwMCB9CisgICAgXTsKKworICAgIGZ1bmN0aW9uIG5leHRUZXN0KCkgeworICAg
ICAgICBkZWJ1ZygiIik7CisgICAgICAgIGV2YWxBbmRMb2coInRlc3QgPSAiICsgSlNPTi5zdHJp
bmdpZnkodGVzdHMuc2hpZnQoKSkpOworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVx
dWVzdCA9IGluZGV4LmNvdW50KHRlc3Qua2V5KSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgICBzaG91bGRCZVRydWUoInR5cGVvZiByZXF1ZXN0LnJl
c3VsdCA9PSAnbnVtYmVyJyIpOworICAgICAgICAgICAgIHNob3VsZEJlKCJyZXF1ZXN0LnJlc3Vs
dCIsIFN0cmluZyh0ZXN0LmV4cGVjdGVkKSk7CisKKyAgICAgICAgICAgICBpZiAodGVzdHMubGVu
Z3RoKSB7CisgICAgICAgICAgICAgICAgIG5leHRUZXN0KCk7CisgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgIC8vIG90aGVyd2lzZSBsZXQgdGhlIHRyYW5zYWN0aW9uIGNvbXBsZXRlCisgICAg
ICAgIH07CisgICAgfQorCisgICAgbmV4dFRlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9pbmRleC1jdXJzb3IuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvaW5kZXgtY3Vyc29yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5ODhlYmMxOGM0NmU4
ODgxYzRmMTUwMzM4ZjcyN2JmNDg3NTI0ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW5kZXgtY3Vyc29yLmpzCkBAIC0wLDAgKzEs
MjQ5IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3Jp
cHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mgd2Vi
a2l0SURCSW5kZXgub3BlbkN1cnNvciArIHRoZSBjdXJzb3IgaXQgcHJvZHVjZXMgaW4gZGVwdGgu
Iik7CisKKy8vIEluIG9yZGVyIG9mIGhvdyBpdCBzaG91bGQgYmUgc29ydGVkIGJ5IEluZGV4ZWRE
Qi4KK3NlbGYudGVzdERhdGEgPSBbCisgICAgMSwKKyAgICAxLAorICAgIDMuMTQxNTksCisgICAg
My4xNDE1OSwKKyAgICAxMCwKKyAgICAvLyBGSVhNRTogRGF0ZXMuCisgICAgIkEgYmlnIHN0cmlu
ZyIsCisgICAgInRoZSBCSUdFU1Qgc3RyaW5nIiwKKyAgICAidGhlIEJJR0VTVCBzdHJpbmciCitd
OworCitmdW5jdGlvbiBvcGVuRGF0YWJhc2UoKQoreworICAgIHJlc3VsdCA9IGV2YWxBbmRMb2co
ImluZGV4ZWREQi5vcGVuKCdpbmRleC1jdXJzb3InKSIpOworICAgIHJlc3VsdC5vbnN1Y2Nlc3Mg
PSBzZXRWZXJzaW9uOworICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb24oKQoreworICAgIHNlbGYuZGIgPSBldmFsQW5k
TG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlc3VsdCA9IGV2YWxBbmRM
b2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXN1bHQub25zdWNjZXNz
ID0gZGVsZXRlRXhpc3Rpbmc7CisgICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVsZXRlRXhpc3RpbmcoKQoreworICAgIHNlbGYudHJh
bnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91
bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0
ZWRBYm9ydENhbGxiYWNrOworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAg
IHNlbGYub2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc29t
ZU9iamVjdFN0b3JlJykiKTsKKyAgICBzZWxmLmluZGV4T2JqZWN0ID0gZXZhbEFuZExvZygib2Jq
ZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ3NvbWVJbmRleCcsICd4JykiKTsKKyAgICBzZWxmLm5leHRU
b0FkZCA9IDA7CisgICAgYWRkRGF0YSgpOworfQorCitmdW5jdGlvbiBhZGREYXRhKCkKK3sKKyAg
ICByZXN1bHQgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoeyd4JzogdGVzdERhdGFbbmV4
dFRvQWRkXX0sIG5leHRUb0FkZCkiKTsKKyAgICByZXN1bHQub25zdWNjZXNzID0gKytzZWxmLm5l
eHRUb0FkZCA8IHRlc3REYXRhLmxlbmd0aCA/IGFkZERhdGEgOiBzY2hlZHVsZVRlc3RzOworICAg
IHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IHNjaGVkdWxlVGVzdHMoKQoreworICAgIGRlYnVnKCJTY2hlZHVsaW5nIHRlc3RzLi4uIik7Cisg
ICAgc2VsZi5zY2hlZHVsZWRUZXN0cyA9IFtdOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVz
dERhdGEubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgLyogbGVmdCBib3VuZCwgaXMgb3Blbiwgcmln
aHQgYm91bmQsIGlzIG9wZW4sIGFzY2VuZGluZyAqLworICAgICAgICBzY2hlZHVsZWRUZXN0cy51
bnNoaWZ0KFtpLCB0cnVlLCBudWxsLCBudWxsLCB0cnVlXSk7CisgICAgICAgIHNjaGVkdWxlZFRl
c3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBudWxsLCBudWxsLCB0cnVlXSk7CisgICAgICAgIHNjaGVk
dWxlZFRlc3RzLnVuc2hpZnQoW251bGwsIG51bGwsIGksIHRydWUsIHRydWVdKTsKKyAgICAgICAg
c2NoZWR1bGVkVGVzdHMudW5zaGlmdChbbnVsbCwgbnVsbCwgaSwgZmFsc2UsIHRydWVdKTsKKyAg
ICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwgbnVsbCwgbnVsbCwgZmFsc2Vd
KTsKKyAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgZmFsc2UsIG51bGwsIG51bGws
IGZhbHNlXSk7CisgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW251bGwsIG51bGwsIGks
IHRydWUsIGZhbHNlXSk7CisgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW251bGwsIG51
bGwsIGksIGZhbHNlLCBmYWxzZV0pOworICAgICAgICBmb3IgKHZhciBqID0gNjsgaiA8IHRlc3RE
YXRhLmxlbmd0aDsgKytqKSB7CisgICAgICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtp
LCB0cnVlLCBqLCB0cnVlLCB0cnVlXSk7CisgICAgICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNo
aWZ0KFtpLCB0cnVlLCBqLCBmYWxzZSwgdHJ1ZV0pOworICAgICAgICAgICAgc2NoZWR1bGVkVGVz
dHMudW5zaGlmdChbaSwgZmFsc2UsIGosIHRydWUsIHRydWVdKTsKKyAgICAgICAgICAgIHNjaGVk
dWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBqLCBmYWxzZSwgdHJ1ZV0pOworICAgICAgICAg
ICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwgaiwgdHJ1ZSwgZmFsc2VdKTsKKyAg
ICAgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIHRydWUsIGosIGZhbHNlLCBmYWxz
ZV0pOworICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgZmFsc2UsIGosIHRy
dWUsIGZhbHNlXSk7CisgICAgICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCBmYWxz
ZSwgaiwgZmFsc2UsIGZhbHNlXSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBkZWJ1ZygiUnVu
bmluZyB0ZXN0cy4uLiIpOworICAgIHJ1bk5leHRUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHJ1bk5l
eHRUZXN0KCkKK3sKKyAgICBpZiAoIXNjaGVkdWxlZFRlc3RzLmxlbmd0aCkgeworICAgICAgICB0
ZXN0TnVsbEtleVJhbmdlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2YXIgdGVz
dCA9IHNjaGVkdWxlZFRlc3RzLnBvcCgpOworICAgIHNlbGYubG93ZXIgPSB0ZXN0WzBdOworICAg
IHNlbGYubG93ZXJJc09wZW4gPSB0ZXN0WzFdOworICAgIHNlbGYudXBwZXIgPSB0ZXN0WzJdOwor
ICAgIHNlbGYudXBwZXJJc09wZW4gPSB0ZXN0WzNdOworICAgIHNlbGYuYXNjZW5kaW5nID0gdGVz
dFs0XTsKKworICAgIHN0ciA9ICJOZXh0IHRlc3Q6ICI7CisgICAgaWYgKGxvd2VyICE9PSBudWxs
KSB7CisgICAgICAgIHN0ciArPSAibG93ZXIgIjsKKyAgICAgICAgaWYgKGxvd2VySXNPcGVuKQor
ICAgICAgICAgICAgc3RyICs9ICJvcGVuICI7CisgICAgICAgIHN0ciArPSAiYm91bmQgaXMgIiAr
IGxvd2VyICsgIjsgIjsKKyAgICB9CisgICAgaWYgKHVwcGVyICE9PSBudWxsKSB7CisgICAgICAg
IHN0ciArPSAidXBwZXIgIjsKKyAgICAgICAgaWYgKHVwcGVySXNPcGVuKQorICAgICAgICAgICAg
c3RyICs9ICJvcGVuICI7CisgICAgICAgIHN0ciArPSAiYm91bmQgaXMgIiArIHVwcGVyICsgIjsg
IjsKKyAgICB9CisgICAgaWYgKGFzY2VuZGluZykKKyAgICAgICAgc3RyICs9ICJzb3J0ZWQgYXNj
ZW5kaW5nLiI7CisgICAgZWxzZQorICAgICAgICBzdHIgKz0gInNvcnRlZCBkZXNjZW5kaW5nLiI7
CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoc3RyKTsKKworICAgIC8vIFdvcmsgYXJvdW5k
IGZvciBkdXBsaWNhdGUgdmFsdWVzLgorICAgIGlmICh1cHBlciAhPT0gbnVsbCkgeworICAgICAg
ICBpZiAodXBwZXJJc09wZW4pIHsKKyAgICAgICAgICAgIHdoaWxlICh1cHBlciA+IDAgJiYgdGVz
dERhdGFbdXBwZXJdID09PSB0ZXN0RGF0YVt1cHBlciAtIDFdKQorICAgICAgICAgICAgICAgIC0t
c2VsZi51cHBlcjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHdoaWxlICh1cHBlciA8
IHRlc3REYXRhLmxlbmd0aCAtIDEgJiYgdGVzdERhdGFbdXBwZXJdID09PSB0ZXN0RGF0YVt1cHBl
ciArIDFdKQorICAgICAgICAgICAgICAgICsrc2VsZi51cHBlcjsKKyAgICAgICAgfQorICAgIH0K
KyAgICBpZiAobG93ZXIgIT09IG51bGwpIHsKKyAgICAgICAgaWYgKGxvd2VySXNPcGVuKSB7Cisg
ICAgICAgICAgICB3aGlsZSAobG93ZXIgPCB0ZXN0RGF0YS5sZW5ndGggLSAxICYmIHRlc3REYXRh
W2xvd2VyXSA9PT0gdGVzdERhdGFbbG93ZXIgKyAxXSkKKyAgICAgICAgICAgICAgICArK3NlbGYu
bG93ZXI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB3aGlsZSAobG93ZXIgPiAwICYm
IHRlc3REYXRhW2xvd2VyXSA9PT0gdGVzdERhdGFbbG93ZXIgLSAxXSkKKyAgICAgICAgICAgICAg
ICAtLXNlbGYubG93ZXI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoYXNjZW5kaW5nKSB7
CisgICAgICAgIGlmIChsb3dlciAhPT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKCFsb3dlcklz
T3BlbikKKyAgICAgICAgICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSBsb3dlcjsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSBsb3dlciAr
IDE7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gMDsK
KyAgICB9IGVsc2UgeworICAgICAgICBpZiAodXBwZXIgIT09IG51bGwpIHsKKyAgICAgICAgICAg
IGlmICghdXBwZXJJc09wZW4pCisgICAgICAgICAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0g
dXBwZXI7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc2VsZi5leHBlY3RlZElu
ZGV4ID0gdXBwZXIgLSAxOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHNlbGYuZXhwZWN0
ZWRJbmRleCA9IHRlc3REYXRhLmxlbmd0aCAtIDE7CisgICAgfQorICAgIHRlc3RXaXRoaW5Cb3Vu
ZHMoKTsKKworICAgIGlmICh0ZXN0RGF0YVtsb3dlcl0gPT09IHRlc3REYXRhW3VwcGVyXSAmJiAo
bG93ZXJJc09wZW4gfHwgdXBwZXJJc09wZW4pKSB7CisgICAgICAgIGRlYnVnKCJTa2lwcGluZyBp
bGxlZ2FsIGtleSByYW5nZS4iKTsKKyAgICAgICAgcnVuTmV4dFRlc3QoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIHZhciBrZXlSYW5nZTsKKyAgICBpZiAobG93ZXIgIT09IG51bGwg
JiYgdXBwZXIgIT09IG51bGwpCisgICAgICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2UuYm91bmQo
dGVzdERhdGFbbG93ZXJdLCB0ZXN0RGF0YVt1cHBlcl0sIGxvd2VySXNPcGVuLCB1cHBlcklzT3Bl
bik7CisgICAgZWxzZSBpZiAobG93ZXIgIT09IG51bGwpCisgICAgICAgIGtleVJhbmdlID0gSURC
S2V5UmFuZ2UubG93ZXJCb3VuZCh0ZXN0RGF0YVtsb3dlcl0sIGxvd2VySXNPcGVuKTsKKyAgICBl
bHNlCisgICAgICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2UudXBwZXJCb3VuZCh0ZXN0RGF0YVt1
cHBlcl0sIHVwcGVySXNPcGVuKTsKKworICAgIHZhciByZXF1ZXN0ID0gaW5kZXhPYmplY3Qub3Bl
bktleUN1cnNvcihrZXlSYW5nZSwgYXNjZW5kaW5nID8gSURCQ3Vyc29yLk5FWFQgOiBJREJDdXJz
b3IuUFJFVik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3JJdGVyYXRpb247CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IHRlc3RXaXRoaW5Cb3VuZHMoKQoreworICAgIGlmIChleHBlY3RlZEluZGV4IDwgMCB8fCB0ZXN0
RGF0YS5sZW5ndGggPD0gZXhwZWN0ZWRJbmRleCkKKyAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4
ID0gbnVsbDsKKyAgICBpZiAobG93ZXIgIT09IG51bGwgJiYgZXhwZWN0ZWRJbmRleCA8IGxvd2Vy
KQorICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSBudWxsOworICAgIGlmICh1cHBlciAhPT0g
bnVsbCAmJiB1cHBlciA8IGV4cGVjdGVkSW5kZXgpCisgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRl
eCA9IG51bGw7CisgICAgaWYgKGxvd2VyICE9PSBudWxsICYmIGxvd2VySXNPcGVuICYmIGV4cGVj
dGVkSW5kZXggPD0gbG93ZXIpCisgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IG51bGw7Cisg
ICAgaWYgKHVwcGVyICE9PSBudWxsICYmIHVwcGVySXNPcGVuICYmIHVwcGVyIDw9IGV4cGVjdGVk
SW5kZXgpCisgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IG51bGw7Cit9CisKK2Z1bmN0aW9u
IGN1cnNvckl0ZXJhdGlvbigpCit7CisgICAgaWYgKGV4cGVjdGVkSW5kZXggPT09IG51bGwpIHsK
KyAgICAgICAgc2hvdWxkQmVOdWxsKCJldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgICAgIHJ1
bk5leHRUZXN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGV2ZW50LnRhcmdl
dC5yZXN1bHQgPT09IG51bGwpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiZXZlbnQudGFyZ2V0LnJl
c3VsdCBzaG91bGQgbm90IGJlIG51bGwuIik7CisgICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5w
cmltYXJ5S2V5IiwgImV4cGVjdGVkSW5kZXgiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0
LnJlc3VsdC5rZXkiLCAidGVzdERhdGFbIiArIGV4cGVjdGVkSW5kZXggKyAiXSIpOworICAgIHNl
bGYuZXhwZWN0ZWRJbmRleCA9IGFzY2VuZGluZyA/IGV4cGVjdGVkSW5kZXggKyAxIDogZXhwZWN0
ZWRJbmRleCAtIDE7CisgICAgdGVzdFdpdGhpbkJvdW5kcygpOworCisgICAgZXZlbnQudGFyZ2V0
LnJlc3VsdC5jb250aW51ZSgpOworfQorCitzZWxmLm51bGxLZXlSYW5nZVN0ZXAgPSAwOworZnVu
Y3Rpb24gdGVzdE51bGxLZXlSYW5nZSgpCit7CisgICAgc2VsZi5sb3dlciA9IDA7CisgICAgc2Vs
Zi5sb3dlcklzT3BlbiA9IGZhbHNlOworICAgIHNlbGYudXBwZXIgPSB0ZXN0RGF0YS5sZW5ndGgt
MTsKKyAgICBzZWxmLnVwcGVySXNPcGVuID0gZmFsc2U7CisKKyAgICBzdHIgPSAiTmV4dCB0ZXN0
OiBudWxsIGtleSBwYXRoICI7CisgICAgaWYgKHNlbGYubnVsbEtleVJhbmdlU3RlcCA9PSAwKSB7
CisgICAgICAgIHN0ciArPSAic29ydGVkIGFzY2VuZGluZy4iOworICAgICAgICBzZWxmLmFzY2Vu
ZGluZyA9IHRydWU7CisgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IGxvd2VyOworICAgICAg
ICBzZWxmLm51bGxLZXlSYW5nZVN0ZXAgPSAxOworICAgIH0gZWxzZSBpZiAoc2VsZi5udWxsS2V5
UmFuZ2VTdGVwID09IDEpIHsKKyAgICAgICAgc3RyICs9ICJzb3J0ZWQgZGVzY2VuZGluZy4iOwor
ICAgICAgICBzZWxmLmFzY2VuZGluZyA9IGZhbHNlOworICAgICAgICBzZWxmLmV4cGVjdGVkSW5k
ZXggPSB1cHBlcjsKKyAgICAgICAgc2VsZi5udWxsS2V5UmFuZ2VTdGVwID0gMjsKKyAgICB9IGVs
c2UgeworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZyhzdHIpOworCisgICAgdmFyIHJlcXVlc3QgPSBpbmRl
eE9iamVjdC5vcGVuS2V5Q3Vyc29yKG51bGwsIGFzY2VuZGluZyA/IElEQkN1cnNvci5ORVhUIDog
SURCQ3Vyc29yLlBSRVYpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29ySXRlcmF0aW9u
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCity
ZW1vdmVWZW5kb3JQcmVmaXhlcygpOworb3BlbkRhdGFiYXNlKCk7IC8vIFRoZSBmaXJzdCBzdGVw
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2lu
ZGV4LWdldC1rZXktYXJndW1lbnQtcmVxdWlyZWQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvaW5kZXgtZ2V0LWtleS1hcmd1bWVudC1yZXF1aXJlZC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xM2QzODcwZWVlOWY0ZWJhOTAxNTY4ZWYwOTdiMzBkZmRlYzliOTdhCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4
LWdldC1rZXktYXJndW1lbnQtcmVxdWlyZWQuanMKQEAgLTAsMCArMSwzOSBAQAoraWYgKHRoaXMu
aW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7
Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBpbmRleCAuZ2V0KCkgcmVxdWlyZWQg
YXJndW1lbnQiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4
ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0
aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRl
eGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9n
KCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9i
amVjdFN0b3JlKCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgb2Jq
ZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdmb28nLCB7IGtleVBhdGg6ICdpZCcsIGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7CisgICAg
aW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdmaXJz
dCcsICdmaXJzdCcpOyIpOworICAgIHNob3VsZFRocm93KCJpbmRleC5nZXQoKTsiKTsKKyAgICBz
aG91bGRUaHJvdygiaW5kZXguZ2V0S2V5KCk7Iik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisK
K3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW5kZXgtbXVsdGllbnRyeS5qcyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbmRleC1tdWx0aWVudHJ5Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjAzY2RkOGE5MTU5ZWYxOWUxOWE3NjcyMGFjZjk2ZTYwN2IxNzkzZDEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
aW5kZXgtbXVsdGllbnRyeS5qcwpAQCAtMCwwICsxLDE0MCBAQAoraWYgKHRoaXMuaW1wb3J0U2Ny
aXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rl
c2NyaXB0aW9uKCJUZXN0IGZlYXR1cmVzIG9mIEluZGV4ZWREQidzIG11bHRpRW50cnkgaW5kaWNl
cy4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsK
KworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignaW5kZXgtbXVsdGlF
bnRyeScpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZGIgPSBldmFs
QW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgICAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IHByZXBhcmVEYXRhYmFzZTsKKyAgICB9OworfQorCitmdW5jdGlvbiBwcmVwYXJlRGF0YWJhc2Uo
KQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiQ3JlYXRpbmcgZW1wdHkgc3RvcmVzIGFu
ZCBpbmRleGVzIik7CisgICAgdmFyIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50
YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAg
IHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNv
bXBsZXRlID0gYWRkRGF0YTsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAg
ICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3Jl
JykiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXgnLCAneCcsIHtt
dWx0aUVudHJ5OiB0cnVlfSkiKTsKKworICAgIHN0b3JlMiA9IGV2YWxBbmRMb2coInN0b3JlMiA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZS11bmlxdWUnKSIpOworICAgIGV2YWxBbmRMb2co
InN0b3JlMi5jcmVhdGVJbmRleCgnaW5kZXgtdW5pcXVlJywgJ3gnLCB7bXVsdGlFbnRyeTogdHJ1
ZSwgdW5pcXVlOiB0cnVlfSkiKTsKK30KKworZnVuY3Rpb24gYWRkRGF0YSgpCit7CisgICAgZGVi
dWcoIiIpOworICAgIGRlYnVnKCJQb3B1bGF0aW5nIHN0b3JlcyAoYW5kIGluZGV4ZXMpIik7Cisg
ICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9u
KFsnc3RvcmUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICB0cmFuc2FjdGlv
bi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnNhY3Rpb24ub25j
b21wbGV0ZSA9IGZ1bmN0aW9uKCkgeyB2ZXJpZnlJbmRleGVzKCdpbmRleCcsIHZlcmlmeVVuaXF1
ZUNvbnN0cmFpbnQpOyB9OworCisgICAgZGVidWcoIkZpcnN0IHRyeSBzb21lIGtleXMgdGhhdCBh
cmVuJ3Qgd2hhdCB3ZSdyZSBleHBlY3RpbmciKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
dHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KHt4OiBbNywgOCwgOV0sIHk6ICdh
J30sICdmb28nKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworICAgIGRlYnVnKCJOb3cgb3ZlcndyaXRlIHRoZW0gd2l0aCB3aGF0IHdlJ3JlIGV4cGVj
dGluZyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9y
ZSgnc3RvcmUnKS5wdXQoe3g6IFsxLCAyLCAzXSwgeTogJ2EnfSwgJ2ZvbycpIik7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLnB1dCh7eDogWzQsIDUs
IDZdLCB5OiAnYid9LCAnYmFyJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gdmVyaWZ5SW5kZXhlcyhpbmRleE5hbWUsIGNh
bGxiYWNrKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVmVyaWZ5aW5nIGluZGV4OiAi
ICsgaW5kZXhOYW1lKTsKKyAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9u
ID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7
CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAg
IHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBjYWxsYmFjazsKKworICAgIGV4cGVjdGVkID0gWwor
ICAgICAgICB7IGtleTogMSwgcHJpbWFyeUtleTogJ2ZvbycsIHk6ICdhJyB9LAorICAgICAgICB7
IGtleTogMiwgcHJpbWFyeUtleTogJ2ZvbycsIHk6ICdhJyB9LAorICAgICAgICB7IGtleTogMywg
cHJpbWFyeUtleTogJ2ZvbycsIHk6ICdhJyB9LAorICAgICAgICB7IGtleTogNCwgcHJpbWFyeUtl
eTogJ2JhcicsIHk6ICdiJyB9LAorICAgICAgICB7IGtleTogNSwgcHJpbWFyeUtleTogJ2Jhcics
IHk6ICdiJyB9LAorICAgICAgICB7IGtleTogNiwgcHJpbWFyeUtleTogJ2JhcicsIHk6ICdiJyB9
LAorICAgIF07CisKKyAgICB2YXIgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9i
amVjdFN0b3JlKCdzdG9yZScpLmluZGV4KCciICsgaW5kZXhOYW1lICsgIicpLm9wZW5DdXJzb3Io
KSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgY3Vyc29yID0g
ZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgICAgICBpZiAo
Y3Vyc29yKSB7CisgICAgICAgICAgICBleCA9IGV4cGVjdGVkLnNoaWZ0KCk7CisgICAgICAgICAg
ICBzaG91bGRCZVRydWUoImV4ICE9IG51bGwiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJz
b3Iua2V5IiwgU3RyaW5nKGV4LmtleSkpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJjdXJzb3IucHJpbWFyeUtleSIsIGV4LnByaW1hcnlLZXkpOworICAgICAgICAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJjdXJzb3IudmFsdWUueSIsIGV4LnkpOworICAgICAgICAgICAg
Y3Vyc29yLmNvbnRpbnVlKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzaG91bGRC
ZVRydWUoImV4cGVjdGVkLmxlbmd0aCA9PT0gMCIpOworICAgICAgICB9CisgICAgfTsKK30KKwor
ZnVuY3Rpb24gdmVyaWZ5VW5pcXVlQ29uc3RyYWludCgpCit7CisgICAgZGVidWcoIiIpOworICAg
IGRlYnVnKCJWZXJpZnlpbmcgdW5pcXVlIGNvbnN0cmFpbnQgb24gbXVsdGlFbnRyeSBpbmRleCIp
OworICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2Fj
dGlvbihbJ3N0b3JlLXVuaXF1ZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAg
IHRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgIGRlYnVnKCJUcmFu
c2FjdGlvbiBhYm9ydGVkIGFzIGV4cGVjdGVkIik7CisgICAgICAgIGNyZWF0ZUluZGV4T25TdG9y
ZVdpdGhEYXRhKCk7CisgICAgfTsKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gdW5leHBl
Y3RlZENvbXBsZXRlQ2FsbGJhY2s7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnNh
Y3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlLXVuaXF1ZScpLnB1dCh7eDogWzEsIDIsIDNdLCB5OiAn
YSd9LCAnZm9vJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBkZWJ1
Zygic3VjY2VzcyEiKTsKKyAgICAgICAgZGVidWcoIlJlcGxhY2UgYW4gZXhpc3RpbmcgcmVjb3Jk
IC0gdGhpcyBzaG91bGQgd29yayIpOworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJh
bnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlLXVuaXF1ZScpLnB1dCh7eDogWzEsIDIsIDddLCB5
OiAnYSd9LCAnZm9vJykiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICBkZWJ1Zygic3VjY2VzcyEiKTsKKyAgICAgICAgICAgIGRlYnVnKCJUaGlzIHNo
b3VsZCBmYWlsIHRoZSB1bmlxdWVuZXNzIGNvbnN0cmFpbnQgb24gdGhlIGluZGV4LCBhbmQgZmFp
bDoiKTsKKyAgICAgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmpl
Y3RTdG9yZSgnc3RvcmUtdW5pcXVlJykucHV0KHt4OiBbNSwgMl0sIHk6ICdjJ30sICdzaG91bGQg
ZmFpbCcpIik7CisgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNj
ZXNzQ2FsbGJhY2s7CisgICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbigpIHsg
ZGVidWcoIlJlcXVlc3QgZmFpbGVkLCBhcyBleHBlY3RlZCIpOyB9OworICAgICAgICB9OworICAg
IH07Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUluZGV4T25TdG9yZVdpdGhEYXRhKCkKK3sKKyAgICBk
ZWJ1ZygiIik7CisgICAgZGVidWcoIkNyZWF0ZSBhbiBpbmRleCBvbiBhIHBvcHVsYXRlZCBzdG9y
ZSIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJzInKSIpOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisKKyAgICAgICAgdmFyIHRyYW5zID0gZXZhbEFu
ZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgICAgIHNob3VsZEJlVHJ1
ZSgidHJhbnMgIT09IG51bGwiKTsKKyAgICAgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRB
Ym9ydENhbGxiYWNrOworICAgICAgICB0cmFucy5vbmNvbXBsZXRlID0gZnVuY3Rpb24oKSB7IHZl
cmlmeUluZGV4ZXMoJ2luZGV4LW5ldycsIGZpbmlzaEpTVGVzdCk7IH07CisKKyAgICAgICAgc3Rv
cmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpIik7Cisg
ICAgICAgIGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleC1uZXcnLCAneCcsIHtt
dWx0aUVudHJ5OiB0cnVlfSkiKTsKKyAgICB9OworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL2luZGV4LXBvcHVsYXRpb24uanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvaW5kZXgtcG9wdWxhdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOTk3Mjg2NjZm
ZDZkNDJkZjA5ZGI4MTYzNzRkZTc5M2UwYTFhNWNkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4LXBvcHVsYXRpb24uanMKQEAg
LTAsMCArMSw5MSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlw
dHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1w
b3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWRE
QiBpbmRleCBwb3B1bGF0aW9uLiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVW
ZW5kb3JQcmVmaXhlcygpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5k
ZWxldGVEYXRhYmFzZSgnaW5kZXgtcG9wdWxhdGlvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBkZWxldGVTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxldGVTdWNjZXNzKCkKK3sKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2luZGV4LXBvcHVsYXRpb24nKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZG9TZXRWZXJzaW9uMTsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZG9TZXRWZXJzaW9uMSgp
Cit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJkb1NldFZlcnNpb24xKCk6Iik7CisgICAg
c2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJyki
KTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb24xOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9u
MSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJzZXRWZXJzaW9uMSgpOiIpOworICAg
IHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSByZXF1ZXN0LnJlc3VsdCIp
OworICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgc3Rv
cmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTEnKSIp
OworICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCh7ZGF0YTogJ2EnLCBpbmRleEtleTogMTB9LCAx
KSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCh7ZGF0YTogJ2InLCBpbmRleEtleTogMjB9
LCAyKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCh7ZGF0YTogJ2MnLCBpbmRleEtleTog
MTB9LCAzKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCh7ZGF0YTogJ2QnLCBpbmRleEtl
eTogMjB9LCA0KSIpOworICAgIGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgo
J2luZGV4MScsICdpbmRleEtleScpIik7CisgICAgc2hvdWxkQmVUcnVlKCJpbmRleCBpbnN0YW5j
ZW9mIElEQkluZGV4Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiaW5kZXgudW5pcXVlIik7CisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleC5jb3VudChJREJLZXlSYW5nZS5i
b3VuZCgtSW5maW5pdHksIEluZmluaXR5KSkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgc2hvdWxkQmUoInJlcXVlc3QucmVzdWx0IiwgIjQiKTsKKyAgICB9OworICAg
IHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBkb1NldFZlcnNpb24yOworfQorCitmdW5jdGlvbiBk
b1NldFZlcnNpb24yKCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiZG9TZXRWZXJzaW9u
MigpOiIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lv
bigndmVyc2lvbiAyJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb24yOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiBzZXRWZXJzaW9uMigpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJzZXRWZXJz
aW9uMigpOiIpOworICAgIHRyYW5zYWN0aW9uMiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0g
cmVxdWVzdC5yZXN1bHQiKTsKKyAgICB0cmFuc2FjdGlvbjIub25hYm9ydCA9IHNldFZlcnNpb24y
QWJvcnQ7CisgICAgdHJhbnNhY3Rpb24yLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQ29tcGxldGVD
YWxsYmFjazsKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ3N0b3JlMicpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUucHV0KHtkYXRhOiAnYScs
IGluZGV4S2V5OiAxMH0sIDEpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUucHV0KHtkYXRhOiAn
YicsIGluZGV4S2V5OiAyMH0sIDIpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUucHV0KHtkYXRh
OiAnYycsIGluZGV4S2V5OiAxMH0sIDMpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUucHV0KHtk
YXRhOiAnZCcsIGluZGV4S2V5OiAyMH0sIDQpIik7CisgICAgZXZhbEFuZExvZygiaW5kZXgyID0g
c3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4MicsICdpbmRleEtleScsIHsgdW5pcXVlOiB0cnVlIH0p
Iik7CisgICAgc2hvdWxkQmVUcnVlKCJpbmRleDIgaW5zdGFuY2VvZiBJREJJbmRleCIpOworICAg
IHNob3VsZEJlVHJ1ZSgiaW5kZXgyLnVuaXF1ZSIpOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9u
MkFib3J0KCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInNldFZlcnNpb24yQWJvcnQo
KToiKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMSIpOwor
ICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzWzBdIiwgIidzdG9yZTEnIik7CisgICAg
ZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW5k
ZXgtdW5pcXVlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2lu
ZGV4LXVuaXF1ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZGI4NWI2OWU0ODA4NTQxYzBiNGE5YzI2NmY3Njcw
ZWI2OGZhZTRiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL2luZGV4LXVuaXF1ZS5qcwpAQCAtMCwwICsxLDEzNiBAQAoraWYgKHRoaXMu
aW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7
Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IGZlYXR1cmVzIG9mIEluZGV4ZWREQidzIHVuaXF1ZSBp
bmRpY2VzLiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhl
cygpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignaW5kZXgtdW5p
cXVlJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb247CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZl
cnNpb24oKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNp
b24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRl
bGV0ZUV4aXN0aW5nKCkKK3sKKyAgICBkZWJ1ZygiZGVsZXRlRXhpc3RpbmcoKToiKTsKKyAgICB2
YXIgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAg
ICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVu
ZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSBzZXRWZXJzaW9u
Q29tcGxldGVkOworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIHNlbGYu
c3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAg
IHNlbGYuaW5kZXhPYmplY3QgPSBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXgn
LCAneCcsIHt1bmlxdWU6IHRydWV9KSIpOworCisgICAgLy8gTGV0IHNldFZlcnNpb24gdHJhbnNh
Y3Rpb24gY29tcGxldGUuCit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb25Db21wbGV0ZWQoKQorewor
ICAgIGRlYnVnKCJzZXRWZXJzaW9uQ29tcGxldGVkKCk6Iik7CisgICAgc2VsZi50cmFuc2FjdGlv
biA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZSddLCBJ
REJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLnB1dCh7eDogMX0sICdmb28nKSIpOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gYWRkTW9yZURhdGE7Cit9CisKK2Z1bmN0aW9uIGFkZE1vcmVEYXRhKCkK
K3sKKyAgICBkZWJ1ZygiYWRkTW9yZURhdGEoKToiKTsKKworICAgIC8vIFRoZSB4IHZhbHVlIHZp
b2xhdGVzIHRoZSB1bmlxdWVuZXNzIGNvbnN0cmFpbnQgb2YgdGhlIGluZGV4LgorICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKS5wdXQoe3g6
IDF9LCAnYmFyJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBhZGRNb3JlRGF0YUZhaWxlZDsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIGFkZE1vcmVEYXRhRmFpbGVkKCkKK3sKKyAgICBkZWJ1ZygiYWRkTW9yZURhdGFG
YWlsZWQoKToiKTsKKworICAgIC8vIERvbid0IGFib3J0IHRoZSB0cmFuc2FjdGlvbi4KKyAgICBl
dmFsQW5kTG9nKCJldmVudC5wcmV2ZW50RGVmYXVsdCgpIik7CisKKyAgICBzaG91bGRCZSgiZXZl
bnQudGFyZ2V0LmVycm9yQ29kZSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5DT05TVFJBSU5UX0VS
UiIpOworCisgICAgLy8gVXBkYXRlIHRoZSAnZm9vJyBlbnRyeSBpbiBvYmplY3Qgc3RvcmUsIGNo
YW5naW5nIHRoZSB2YWx1ZSBvZiB4LgorICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2Fj
dGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKS5wdXQoe3g6IDB9LCAnZm9vJykiKTsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGNoYW5nZURhdGFTdWNjZXNzOworfQorCitmdW5jdGlvbiBjaGFuZ2VEYXRhU3VjY2Vz
cygpCit7CisgICAgZGVidWcoImNoYW5nZURhdGFTdWNjZXNzKCk6Iik7CisKKyAgICAvLyBBbiBp
bmRleCBjdXJzb3Igc3RhcnRpbmcgYXQgMSBzaG91bGQgbm90IGZpbmQgYW55dGhpbmcuCisgICAg
dmFyIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUn
KS5pbmRleCgnaW5kZXgnKS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLmxvd2VyQm91bmQoMSkpIik7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3JTdWNjZXNzOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjdXJzb3JTdWNj
ZXNzKCkKK3sKKyAgICBkZWJ1ZygiY3Vyc29yU3VjY2VzcygpOiIpOworICAgIHNob3VsZEJlKCJl
dmVudC50YXJnZXQucmVzdWx0IiwgIm51bGwiKTsKKworICAgIC8vIEEga2V5IGN1cnNvciBzdGFy
dGluZyBhdCAxIHNob3VsZCBub3QgZmluZCBhbnl0aGluZy4KKyAgICB2YXIgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLmluZGV4KCdpbmRleCcp
Lm9wZW5LZXlDdXJzb3IoSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgxKSkiKTsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGtleUN1cnNvclN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGtleUN1cnNvclN1Y2Nlc3MoKQor
eworICAgIGRlYnVnKCJrZXlDdXJzb3JTdWNjZXNzKCk6Iik7CisgICAgc2hvdWxkQmUoImV2ZW50
LnRhcmdldC5yZXN1bHQiLCAibnVsbCIpOworCisgICAgLy8gTm93IHdlIHNob3VsZCBiZSBhYmxl
IHRvIGFkZCBhIHZhbHVlIHdpdGggeDogMS4KKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJh
bnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KHt4OiAxfSwgJ2JhcicpIik7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBhZGRNb3JlRGF0YVN1Y2NlczsKK30KKworZnVuY3Rpb24gYWRkTW9yZURhdGFT
dWNjZXMoKQoreworICAgIGRlYnVnKCJhZGRNb3JlRGF0YVN1Y2NlcygpOiIpOworCisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLmRlbGV0
ZSgnYmFyJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZVN1Y2Nlc3M7Cit9CisKK2Z1bmN0aW9u
IGRlbGV0ZVN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJkZWxldGVTdWNjZXNzKCk6Iik7CisKKyAg
ICAvLyBOb3cgd2Ugc2hvdWxkIGJlIGFibGUgdG8gYWRkIGEgdmFsdWUgd2l0aCB4OiAxIGFnYWlu
LgorICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3Rv
cmUnKS5wdXQoe3g6IDF9LCAnYmF6JykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZpbmFsQWRkU3VjY2Vz
czsKK30KKworZnVuY3Rpb24gZmluYWxBZGRTdWNjZXNzKCkgeworICAgIGRlYnVnKCJmaW5hbEFk
ZFN1Y2Nlc3MoKToiKTsKKworICAgIC8vIEFuIG92ZXJ3cml0ZSBzaG91bGQgYmUgb2suCisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLnB1
dCh7eDogMX0sICdiYXonKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZmluaXNoSlNUZXN0OworfQorCit0
ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ludmFsaWQta2V5cy5qcyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbnZhbGlkLWtleXMuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYjZjMTc1NzY3NDBiM2Q1N2Y5OTYzMGVlMmE3MDM4NjA1NjU0YTZmNAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbnZhbGlkLWtl
eXMuanMKQEAgLTAsMCArMSw2NCBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGlt
cG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7
CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0
IEluZGV4ZWREQiBpbnZhbGlkIGtleXMiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVt
b3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1l
OworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAg
ZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSB0ZXN0R3JvdXAxOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiB0ZXN0R3JvdXAxKCkKK3sKKyAgICBk
ZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9n
KCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJyk7Iik7CisgICAgdGVzdEludmFsaWRLZXlzKCk7
Cit9CisKK2Z1bmN0aW9uIHRlc3RJbnZhbGlkS2V5cygpCit7CisgICAgdmFyIGludmFsaWRLZXlz
ID0gWworICAgICAgICAidm9pZCAwIiwgLy8gVW5kZWZpbmVkCisgICAgICAgICJudWxsIiwgLy8g
TnVsbAorICAgICAgICAiKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpIiwgLy8g
QXJndW1lbnRzCisgICAgICAgICJ0cnVlIiwgLy8gQm9vbGVhbgorICAgICAgICAiZmFsc2UiLCAv
LyBCb29sZWFuCisgICAgICAgICJuZXcgRXJyb3IiLCAvLyBFcnJvcgorICAgICAgICAiZnVuY3Rp
b24gKCkge30iLCAvLyBGdW5jdGlvbgorICAgICAgICAiSlNPTiIsIC8vIEpTT04KKyAgICAgICAg
Ik1hdGgiLCAvLyBNYXRoCisgICAgICAgICJOYU4iLCAvLyBOdW1iZXIgKHNwZWNpYWwgY2FzZSkK
KyAgICAgICAgIm5ldyBEYXRlKE5hTikiLCAvLyBEYXRlIChzcGVjaWFsIGNhc2UpCisgICAgICAg
ICJ7fSIsIC8vIE9iamVjdAorICAgICAgICAiL3JlZ2V4LyIsIC8vIFJlZ0V4cAorICAgICAgICAi
c2VsZiIsIC8vIGdsb2JhbAorICAgICAgICAic2VsZi5kb2N1bWVudCIsIC8vIEhUTUxEb2N1bWVu
dAorICAgICAgICAic2VsZi5kb2N1bWVudC5ib2R5IiAvLyBIVE1MQm9keUVsZW1lbnQKKyAgICBd
OworCisgICAgaW52YWxpZEtleXMuZm9yRWFjaChmdW5jdGlvbihrZXkpIHsKKyAgICAgICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigicmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgndmFsdWUnLCAi
ICsga2V5ICsgIikiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKyAgICB9KTsK
KyAgICAKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9rZXktZ2VuZXJhdG9yLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL2tleS1nZW5lcmF0b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjFiMTc1MThjZTExYjA2MWUx
YzVmZjhmOTBjMGJjY2JmMTE2YmI5ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXktZ2VuZXJhdG9yLmpzCkBAIC0wLDAgKzEsMjA2
IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRz
KCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mga2V5IGdl
bmVyYXRvciBiZWhhdmlvci4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVu
ZG9yUHJlZml4ZXMoKTsKKworICAgIHJ1blRlc3RzKCk7Cit9CisKK3ZhciB0ZXN0cyA9IFtdOwor
ZnVuY3Rpb24gZGVmaW5lVGVzdChkZXNjcmlwdGlvbiwgdmVyY2hhbmdlLCBvcHRpb25hbCkgewor
ICB0ZXN0cy5wdXNoKAorICAgIHsKKyAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiwKKyAg
ICAgIHZlcmNoYW5nZTogdmVyY2hhbmdlLAorICAgICAgb3B0aW9uYWw6IG9wdGlvbmFsCisgICAg
fQorICApOworfQorCitmdW5jdGlvbiBydW5UZXN0cygpIHsKKworICAgIGZ1bmN0aW9uIG5leHRU
ZXN0KCkgeworICAgICAgICBpZiAoIXRlc3RzLmxlbmd0aCkgeworICAgICAgICAgICAgZmluaXNo
SlNUZXN0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB2YXIg
dGVzdCA9IHRlc3RzLnNoaWZ0KCk7CisgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgZGVidWco
dGVzdC5kZXNjcmlwdGlvbik7CisKKyAgICAgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4
ZWREQi5kZWxldGVEYXRhYmFzZSgna2V5LWdlbmVyYXRvcicpIik7CisgICAgICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBp
bmRleGVkREIub3Blbigna2V5LWdlbmVyYXRvcicpIik7CisgICAgICAgICAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImRiID0g
cmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
ZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coInRyYW5z
ID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgICAgICAgICAgICAgdHJhbnMub25hYm9ydCA9
IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgICAgICAgICAgICAgICAgICB0ZXN0LnZlcmNo
YW5nZShkYiwgdHJhbnMpOworICAgICAgICAgICAgICAgICAgICB0cmFucy5vbmNvbXBsZXRlID0g
ZnVuY3Rpb24gKCkgeworCisgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBmaW5pc2hU
ZXN0KCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImRiLmNsb3Nl
KCkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0VGVzdCgpOworICAgICAgICAg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGVzdC5vcHRp
b25hbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Qub3B0aW9uYWwoZGIsIGZp
bmlzaFRlc3QpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAg
IH07CisgICAgICAgIH07CisgICAgfQorCisgICAgbmV4dFRlc3QoKTsKK30KKworZnVuY3Rpb24g
Y2hlY2soc3RvcmUsIGtleSwgZXhwZWN0ZWQpIHsKKyAgICBzZWxmLnN0b3JlID0gc3RvcmU7Cisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdG9yZS5nZXQoIiArIEpTT04uc3Ry
aW5naWZ5KGtleSkgKyAiKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKKyAgICAg
ICAgc2VsZi5leHBlY3RlZCA9IGV4cGVjdGVkOworICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnko
ZXZlbnQudGFyZ2V0LnJlc3VsdCkgPT09IEpTT04uc3RyaW5naWZ5KGV4cGVjdGVkKSkgeworICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiR290ICIgKyBKU09OLnN0cmluZ2lmeShldmVudC50YXJnZXQu
cmVzdWx0KSArICIgZm9yIGtleTogIiArIEpTT04uc3RyaW5naWZ5KGtleSkpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiR290ICIgKyBKU09OLnN0cmluZ2lmeShl
dmVudC50YXJnZXQucmVzdWx0KSArICIgZm9yIGtleTogIiArIEpTT04uc3RyaW5naWZ5KGtleSkg
KworICAgICAgICAgICAgICAgICIgZXhwZWN0ZWQ6ICIgKyBKU09OLnN0cmluZ2lmeShleHBlY3Rl
ZCkpOworICAgICAgICB9CisgICAgfTsKK30KKworZGVmaW5lVGVzdCgKKyAgICAnVmVyaWZ5IHRo
YXQgZWFjaCBvYmplY3Qgc3RvcmUgaGFzIGFuIGluZGVwZW5kZW50IGtleSBnZW5lcmF0b3IuJywK
KyAgICBmdW5jdGlvbiAoZGIsIHRyYW5zKSB7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlMSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTEnLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSki
KTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUxLnB1dCgnYScpIik7CisgICAgICAgIGNoZWNr
KHN0b3JlMSwgMSwgJ2EnKTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUyID0gZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ3N0b3JlMicsIHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9KSIpOworICAgICAg
ICBldmFsQW5kTG9nKCJzdG9yZTIucHV0KCdhJykiKTsKKyAgICAgICAgY2hlY2soc3RvcmUyLCAx
LCAnYScpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZTEucHV0KCdiJykiKTsKKyAgICAgICAg
Y2hlY2soc3RvcmUxLCAyLCAnYicpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZTIucHV0KCdi
JykiKTsKKyAgICAgICAgY2hlY2soc3RvcmUyLCAyLCAnYicpOworICAgIH0KKyk7CisKK2RlZmlu
ZVRlc3QoCisgICAgJ1ZlcmlmeSB0aGF0IHRoZSBrZXkgZ2VuZXJhdG9yIGlzIG5vdCB1cGRhdGVk
IGlmIGluc2VydGlvbiBmYWlscycsCisgICAgZnVuY3Rpb24gKGRiLCB0cmFucykgeworICAgICAg
ICB0cmFucy5vbmVycm9yID0gZnVuY3Rpb24oZSkgeyBlLnByZXZlbnREZWZhdWx0KCkgfTsKKyAg
ICAgICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUxJywg
eyBhdXRvSW5jcmVtZW50OiB0cnVlIH0pIik7CisgICAgICAgIGV2YWxBbmRMb2coImluZGV4ID0g
c3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4MScsICdpeCcsIHsgdW5pcXVlOiB0cnVlIH0pIik7Cisg
ICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCh7IGl4OiAnYSd9KSIpOworICAgICAgICBjaGVj
ayhzdG9yZSwgMSwge2l4OiAnYSd9KTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KHsg
aXg6ICdhJ30pIik7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCh7IGl4OiAnYid9KSIp
OworICAgICAgICBjaGVjayhzdG9yZSwgMiwge2l4OiAnYid9KTsKKyAgICB9CispOworCitkZWZp
bmVUZXN0KAorICAgICdWZXJpZnkgdGhhdCB0aGUga2V5IGdlbmVyYXRvciBpcyBub3QgYWZmZWN0
ZWQgYnkgaXRlbSByZW1vdmFsIChkZWxldGUgb3IgY2xlYXIpLicsCisgICAgZnVuY3Rpb24gKGRi
LCB0cmFucykgeworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0
b3JlKCdzdG9yZTEnLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSkiKTsKKyAgICAgICAgZXZhbEFu
ZExvZygic3RvcmUucHV0KCdhJykiKTsKKyAgICAgICAgY2hlY2soc3RvcmUsIDEsICdhJyk7Cisg
ICAgICAgIGV2YWxBbmRMb2coInN0b3JlLmRlbGV0ZSgxKSIpOworICAgICAgICBldmFsQW5kTG9n
KCJzdG9yZS5wdXQoJ2InKSIpOworICAgICAgICBjaGVjayhzdG9yZSwgMiwgJ2InKTsKKyAgICAg
ICAgZXZhbEFuZExvZygic3RvcmUuY2xlYXIoKSIpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9y
ZS5wdXQoJ2MnKSIpOworICAgICAgICBjaGVjayhzdG9yZSwgMywgJ2MnKTsKKyAgICAgICAgLy8g
RklYTUU6IElEQk9iamVjdFN0b3JlLmRlbGV0ZShJREJLZXlSYW5nZSkgaXMgbm90IHlldCBpbXBs
ZW1lbnRlZCBpbiBDaHJvbWl1bS4KKyAgICAgICAgLy8gaHR0cDovL2NyYnVnLmNvbS8xMDEzODQK
KyAgICAgICAgLy9ldmFsQW5kTG9nKCJzdG9yZS5kZWxldGUoSURCS2V5UmFuZ2UubG93ZXJCb3Vu
ZCgwKSkiKTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdkJykiKTsKKyAgICAgICAg
Y2hlY2soc3RvcmUsIDQsICdkJyk7CisgICAgfQorKTsKKworZGVmaW5lVGVzdCgKKyAgICAnVmVy
aWZ5IHRoYXQgdGhlIGtleSBnZW5lcmF0b3IgaXMgb25seSBzZXQgaWYgYW5kIG9ubHkgaWYgYSBu
dW1lcmljIGtleSBncmVhdGVyIHRoYW4gdGhlIGxhc3QgZ2VuZXJhdGVkIGtleSBpcyB1c2VkLics
CisgICAgZnVuY3Rpb24gKGRiLCB0cmFucykgeworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTEnLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSki
KTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdhJykiKTsKKyAgICAgICAgY2hlY2so
c3RvcmUsIDEsICdhJyk7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgnYicsIDMpIik7
CisgICAgICAgIGNoZWNrKHN0b3JlLCAzLCAnYicpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9y
ZS5wdXQoJ2MnKSIpOworICAgICAgICBjaGVjayhzdG9yZSwgNCwgJ2MnKTsKKyAgICAgICAgZXZh
bEFuZExvZygic3RvcmUucHV0KCdkJywgLTEwKSIpOworICAgICAgICBjaGVjayhzdG9yZSwgLTEw
LCAnZCcpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2UnKSIpOworICAgICAgICBj
aGVjayhzdG9yZSwgNSwgJ2UnKTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdmJywg
Ni4wMDAwMSkiKTsKKyAgICAgICAgY2hlY2soc3RvcmUsIDYuMDAwMDEsICdmJyk7CisgICAgICAg
IGV2YWxBbmRMb2coInN0b3JlLnB1dCgnZycpIik7CisgICAgICAgIGNoZWNrKHN0b3JlLCA3LCAn
ZycpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2YnLCA4Ljk5OTkpIik7CisgICAg
ICAgIGNoZWNrKHN0b3JlLCA4Ljk5OTksICdmJyk7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3Jl
LnB1dCgnZycpIik7CisgICAgICAgIGNoZWNrKHN0b3JlLCA5LCAnZycpOworICAgICAgICBldmFs
QW5kTG9nKCJzdG9yZS5wdXQoJ2gnLCAnZm9vJykiKTsKKyAgICAgICAgY2hlY2soc3RvcmUsICdm
b28nLCAnaCcpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2knKSIpOworICAgICAg
ICBjaGVjayhzdG9yZSwgMTAsICdpJyk7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgn
aicsIFsxMDAwXSkiKTsKKyAgICAgICAgY2hlY2soc3RvcmUsIFsxMDAwXSwgJ2onKTsKKyAgICAg
ICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdrJykiKTsKKyAgICAgICAgY2hlY2soc3RvcmUsIDEx
LCAnaycpOworCisgICAgICAgIC8vIEZJWE1FOiBSZXBlYXQgdGhpcyB0ZXN0LCBidXQgd2l0aCBh
IGtleVBhdGggYW5kIGlubGluZSBrZXkuCisgICAgfQorKTsKKworZGVmaW5lVGVzdCgKKyAgICAn
VmVyaWZ5IHRoYXQgYWJvcnRpbmcgYSB0cmFuc2FjdGlvbiByZXNldHMgdGhlIGtleSBnZW5lcmF0
b3Igc3RhdGUuJywKKyAgICBmdW5jdGlvbiAoZGIsIHRyYW5zKSB7CisgICAgICAgIGRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdzdG9yZScsIHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9KTsKKyAgICB9LAor
CisgICAgZnVuY3Rpb24gKGRiLCBjYWxsYmFjaykgeworICAgICAgICBldmFsQW5kTG9nKCJ0cmFu
czEgPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUp
Iik7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlX3QxID0gdHJhbnMxLm9iamVjdFN0b3JlKCdz
dG9yZScpIik7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlX3QxLnB1dCgnYScpIik7CisgICAg
ICAgIGNoZWNrKHN0b3JlX3QxLCAxLCAnYScpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZV90
MS5wdXQoJ2InKSIpOworICAgICAgICBjaGVjayhzdG9yZV90MSwgMiwgJ2InKTsKKworICAgICAg
ICAvLyBTY2hlZHVsZSB0aGUgYWJvcnQgYXMgYSB0YXNrIChub3QgcnVuIGl0IHN5bmNocm9ub3Vz
bHkpCisgICAgICAgIHN0b3JlX3QxLmdldCgwKS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICBkZWJ1ZygnYWJvcnRpbmcuLi4nKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2co
InRyYW5zMS5hYm9ydCgpIik7CisgICAgICAgICAgICB0cmFuczEub25hYm9ydCA9IGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICBkZWJ1ZygnYWJvcnRlZCEnKTsKKworICAgICAgICAgICAg
ICAgIGV2YWxBbmRMb2coInRyYW5zMiA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUnXSwgSURCVHJh
bnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJzdG9y
ZV90MiA9IHRyYW5zMi5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgICAgICAgICAgICAgIGV2
YWxBbmRMb2coInN0b3JlX3QyLnB1dCgnYycpIik7CisgICAgICAgICAgICAgICAgY2hlY2soc3Rv
cmVfdDIsIDEsICdjJyk7CisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygic3RvcmVfdDIucHV0
KCdkJykiKTsKKyAgICAgICAgICAgICAgICBjaGVjayhzdG9yZV90MiwgMiwgJ2QnKTsKKworICAg
ICAgICAgICAgICAgIHRyYW5zMi5vbmNvbXBsZXRlID0gY2FsbGJhY2s7CisgICAgICAgICAgICB9
OworICAgICAgICB9OworICAgIH0KKyk7CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMva2V5LXNvcnQtb3JkZXItYWNyb3NzLXR5cGVzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL2tleS1zb3J0LW9yZGVyLWFjcm9zcy10eXBlcy5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43YzdmZjhlNDcwZmUxZjAyZGU4MTJmZjlmNTFmZjdiMDY1MjZkOTE1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleS1zb3J0
LW9yZGVyLWFjcm9zcy10eXBlcy5qcwpAQCAtMCwwICsxLDg1IEBACitpZiAodGhpcy5pbXBvcnRT
Y3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKwor
ZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGtleSBjb21wYXJpc29uIik7CisKK2Z1bmN0aW9u
IHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2Vs
Zi5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNl
IjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3Jp
cHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3Bl
blN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVz
dWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNp
b24oJzEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkS2V5MTsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gYWRkS2V5
MSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3Jl
ID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycpOyIpOworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKFtdLCBJbmZpbml0eSk7
Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRLZXkyOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBhZGRLZXkyKCkKK3sK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChbXSwg
LUluZmluaXR5KTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEtleTM7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGFk
ZEtleTMoKQoreworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3Rv
cmUuYWRkKFtdLCAxLjApOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkS2V5NDsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rp
b24gYWRkS2V5NCgpCit7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmpl
Y3RTdG9yZS5hZGQoW10sICcnKTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEtleTU7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIGFkZEtleTUoKQoreworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
b2JqZWN0U3RvcmUuYWRkKFtdLCAnMS4wJyk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBv
cGVuQUN1cnNvcjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gb3BlbkFDdXJzb3IoKQoreworICAgIGtleUluZGV4ID0gMDsKKyAg
ICBzb3J0ZWRLZXlzID0gZXZhbEFuZExvZygic29ydGVkS2V5ID0gWy1JbmZpbml0eSwgMS4wLCBJ
bmZpbml0eSwgJycsICcxLjAnXTsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
IChldmVudCkgeworICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50
YXJnZXQucmVzdWx0OyIpOworICAgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLmtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOworICAgICAgICAgICAg
ZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisgICAgICAgICAgICBldmFsQW5kTG9n
KCJrZXlJbmRleCsrOyIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3Rlc3QoKTsKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMva2V5LXNvcnQtb3JkZXItZGF0ZS5qcyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXktc29ydC1vcmRlci1kYXRlLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmExZmZmMzcyOWQxOGQ1NzFlNWZmYmY3Zjc3Mjg0ZjI3Yjk2ZTY4NDUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5LXNvcnQtb3Jk
ZXItZGF0ZS5qcwpAQCAtMCwwICsxLDgyIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Cisg
ICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24o
IlRlc3QgSW5kZXhlZERCIGtleSBjb21wYXJpc29uIik7CisKK2Z1bmN0aW9uIHRlc3QoKQorewor
ICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5w
YXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQor
eworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkS2V5MTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gYWRkS2V5MSgpCit7CisgICAg
ZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExv
ZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycpOyIpOworICAgIGRhdGUxID0gZXZhbEFuZExv
ZygiZGF0ZTEgPSBuZXcgRGF0ZSgxMDAwKTsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChbXSwgZGF0ZTEpOyIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gYWRkS2V5MjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gYWRkS2V5MigpCit7CisgICAgZGF0ZTAgPSBldmFsQW5k
TG9nKCJkYXRlMCA9IG5ldyBEYXRlKDApOyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKFtdLCBkYXRlMCk7Iik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBhZGRLZXkzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBhZGRLZXkzKCkKK3sKKyAgICBkYXRlMyA9IGV2YWxBbmRM
b2coImRhdGUzID0gbmV3IERhdGUoMzAwMCk7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoW10sIGRhdGUzKTsiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGFkZEtleTQ7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGFkZEtleTQoKQoreworICAgIGRhdGUyID0gZXZhbEFu
ZExvZygiZGF0ZTIgPSBuZXcgRGF0ZSgyMDAwKTsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChbXSwgZGF0ZTIpOyIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gb3BlbkFDdXJzb3I7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5BQ3Vyc29yKCkKK3sKKyAgICBrZXlJ
bmRleCA9IDA7CisgICAgc29ydGVkS2V5cyA9IGV2YWxBbmRMb2coInNvcnRlZEtleXMgPSBbZGF0
ZTAudG9TdHJpbmcoKSwgZGF0ZTEudG9TdHJpbmcoKSwgZGF0ZTIudG9TdHJpbmcoKSwgZGF0ZTMu
dG9TdHJpbmcoKV07Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmpl
Y3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQp
IHsKKyAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJl
c3VsdDsiKTsKKyAgICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICAgICAgc2hvdWxkQmUoImN1
cnNvci5rZXkudG9TdHJpbmcoKSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOworICAgICAgICAg
ICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisgICAgICAgICAgICBldmFsQW5k
TG9nKCJrZXlJbmRleCsrOyIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3Rlc3QoKTsKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMva2V5LXR5cGUtYXJyYXkuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5LXR5cGUtYXJyYXkuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWI2MDM4
MTJkZDM2MzJkYzJjZDA0MjQ4MjZjZTUyMGRjZmI4YjlkYwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXktdHlwZS1hcnJheS5qcwpA
QCAtMCwwICsxLDE5NyBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNj
cmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAg
aW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4
ZWREQiBrZXkgdHlwZXMiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9y
UHJlZml4ZXMoKTsKKworICAgIGV2YWxBbmRMb2coIklEQlRyYW5zYWN0aW9uID0gc2VsZi5JREJU
cmFuc2FjdGlvbiB8fCBzZWxmLklEQlRyYW5zYWN0aW9uOyIpOworICAgIHNob3VsZEJlRmFsc2Uo
IklEQlRyYW5zYWN0aW9uID09IG51bGwiKTsKKworICAgIGV2YWxBbmRMb2coIklEQkRhdGFiYXNl
RXhjZXB0aW9uID0gc2VsZi5JREJEYXRhYmFzZUV4Y2VwdGlvbiB8fCBzZWxmLklEQkRhdGFiYXNl
RXhjZXB0aW9uOyIpOworICAgIHNob3VsZEJlRmFsc2UoIklEQkRhdGFiYXNlRXhjZXB0aW9uID09
IG51bGwiKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2Ny
aXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIG9wZW5yZXEgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICBvcGVucmVxLm9uc3VjY2Vz
cyA9IG9wZW5TdWNjZXNzOworICAgIG9wZW5yZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZXZhbEFuZExvZygi
ZGIgPSBvcGVucmVxLnJlc3VsdCIpOworICAgIHNldHZlcnJlcSA9IGV2YWxBbmRMb2coInJlcXVl
c3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICBzZXR2ZXJyZXEub25zdWNjZXNzID0gc2V0
VmVyc2lvblN1Y2Nlc3M7CisgICAgc2V0dmVycmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQoreworICAgIGRlYnVn
KCJwcmVwYXJpbmcgZGF0YWJhc2UiKTsKKyAgICB0cmFucyA9IHNldHZlcnJlcS5yZXN1bHQ7Cisg
ICAgdHJhbnMub25jb21wbGV0ZSA9IHRlc3RWYWxpZEFycmF5S2V5czsKKyAgICBkZWxldGVBbGxP
YmplY3RTdG9yZXMoZGIpOworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ3N0b3JlJyk7Iik7CisgICAgZGVidWcoIiIpOworfQorCitmdW5jdGlvbiB0
ZXN0VmFsaWRBcnJheUtleXMoKQoreworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNh
Y3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICBldmFsQW5k
TG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgZGVidWcoIiIp
OworCisgICAgZXZhbEFuZExvZygibG9uZ19hcnJheSA9IFtdOyBmb3IgKGkgPSAwOyBpIDwgMTAw
MDsgKytpKSB7IGxvbmdfYXJyYXkucHVzaCgnYWJjJywgMTIzLCBuZXcgRGF0ZSgwKSwgW10pOyB9
Iik7CisgICAgZGVidWcoIiIpOworCisgICAgZGVidWcoImFycmF5IHRoYXQgY29udGFpbnMgbm9u
LW51bWVyaWMgc2VsZi1yZWZlcmVuY2UiKTsKKyAgICBldmFsQW5kTG9nKCJzZWxmX3JlZmVycmVu
dGlhbF9hcnJheSA9IFtdOyBzZWxmX3JlZmVycmVudGlhbF9hcnJheS5zZWxmID0gc2VsZl9yZWZl
cnJlbnRpYWxfYXJyYXk7Iik7CisgICAgZGVidWcoIiIpOworCisgICAgdmFyIG4gPSAwLCBjYXNl
cyA9IFsKKyAgICAgICAgIltdIiwKKworICAgICAgICAiWy1JbmZpbml0eV0iLAorICAgICAgICAi
Wy1OdW1iZXIuTUFYX1ZBTFVFXSIsCisgICAgICAgICJbLTFdIiwKKyAgICAgICAgIlstTnVtYmVy
Lk1JTl9WQUxVRV0iLAorICAgICAgICAiWzBdIiwKKyAgICAgICAgIltOdW1iZXIuTUlOX1ZBTFVF
XSIsCisgICAgICAgICJbMV0iLAorICAgICAgICAiW051bWJlci5NQVhfVkFMVUVdIiwKKyAgICAg
ICAgIltJbmZpbml0eV0iLAorCisgICAgICAgICJbMSwyLDNdIiwKKworICAgICAgICAiW25ldyBE
YXRlKDApXSIsCisgICAgICAgICJbbmV3IERhdGUoJzI1MjUtMDEtMDFUMDA6MDA6MDBaJyldIiwK
KworICAgICAgICAiW25ldyBEYXRlKDApLCBuZXcgRGF0ZSgnMjUyNS0wMS0wMVQwMDowMDowMFon
KV0iLAorCisgICAgICAgICJbJyddIiwKKyAgICAgICAgIlsnXHgwMCddIiwKKyAgICAgICAgIlsn
YWJjMTIzJ10iLAorCisgICAgICAgICJbJ2FiYycsIDEyM10iLAorCisgICAgICAgICJbW11dIiwK
KworICAgICAgICAiW1tdLCBbXV0iLAorICAgICAgICAiW1tdLCBbXSwgW11dIiwKKworICAgICAg
ICAiW1tbXV1dIiwKKyAgICAgICAgIltbW1tdXV1dIiwKKworICAgICAgICAiWzEyMywgJ2FiYycs
IG5ldyBEYXRlKDApLCBbXV0iLAorICAgICAgICAiW1sxMjMsICdhYmMnLCBuZXcgRGF0ZSgwKSwg
W11dLCBbNDU2LCAnZGVmJywgbmV3IERhdGUoOTk5KSwgW1tdXV1dIiwKKworICAgICAgICAibG9u
Z19hcnJheSIsCisgICAgICAgICJzZWxmX3JlZmVycmVudGlhbF9hcnJheSIKKyAgICBdOworCisg
ICAgZnVuY3Rpb24gdGVzdEFycmF5UHV0R2V0KHZhbHVlLCBrZXksIGNhbGxiYWNrKQorICAgIHsK
KyAgICAgICAgZGVidWcoInRlc3RpbmcgYXJyYXkga2V5OiAiICsga2V5KTsKKyAgICAgICAgcHV0
cmVxID0gZXZhbEFuZExvZygic3RvcmUucHV0KCciICsgdmFsdWUgKyAiJywgIiArIGtleSArICIp
OyIpOworICAgICAgICBwdXRyZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
ICAgICAgICBwdXRyZXEub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBnZXRy
ZXEgPSBldmFsQW5kTG9nKCJzdG9yZS5nZXQoIiArIGtleSArICIpOyIpOworICAgICAgICAgICAg
Z2V0cmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgICAgIGdl
dHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImdldHJlcS5yZXN1bHQiLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgZGVi
dWcoIiIpOworICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgICAgICB9OworICAg
ICAgICB9OworICAgIH0KKworICAgIGZ1bmN0aW9uIG5leHRUZXN0KCkKKyAgICB7CisgICAgICAg
IHZhciB0ZXN0Y2FzZSA9IGNhc2VzLnNoaWZ0KCk7CisgICAgICAgIGlmICh0ZXN0Y2FzZSkgewor
ICAgICAgICAgICAgdGVzdEFycmF5UHV0R2V0KCJ2YWx1ZSIgKyAoKytuKSwgdGVzdGNhc2UsIG5l
eHRUZXN0KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG5leHRUZXN0KCk7CisKKyAgICB0cmFu
cy5vbmNvbXBsZXRlID0gdGVzdEludmFsaWRBcnJheUtleXM7Cit9CisKK2Z1bmN0aW9uIHRlc3RJ
bnZhbGlkQXJyYXlLZXlzKCkKK3sKKyAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0
aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgZXZhbEFuZExv
Zygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgIGRlYnVnKCIiKTsK
KworICAgIGRlYnVnKCJhcnJheSB0aGF0IGNvbnRhaW5zIGl0c2VsZjogYXJyYXkgPSBbIGFycmF5
IF0iKTsKKyAgICBldmFsQW5kTG9nKCJjeWNsaWNfYXJyYXkgPSBbXTsgY3ljbGljX2FycmF5LnB1
c2goY3ljbGljX2FycmF5KSIpOworICAgIHNob3VsZFRocm93KCJKU09OLnN0cmluZ2lmeShjeWNs
aWNfYXJyYXkpIik7CisKKyAgICBkZWJ1ZygiYXJyYXkgdGhhdCBjb250YWlucyBpdHNlbGYsIG9u
ZSBsZXZlbCBkb3duOiBhcnJheSA9IFsgWyBhcnJheSBdIF0iKTsKKyAgICBldmFsQW5kTG9nKCJj
eWNsaWNfYXJyYXkyID0gW107IGN5Y2xpY19hcnJheTIucHVzaChbY3ljbGljX2FycmF5Ml0pIik7
CisgICAgc2hvdWxkVGhyb3coIkpTT04uc3RyaW5naWZ5KGN5Y2xpY19hcnJheTIpIik7CisKKyAg
ICBkZWJ1ZygiYXJyYXkgdGhhdCBjb250YWlucyBpdHNlbGYsIG5vdCBhcyBmaXJzdCBlbGVtZW50
OiBhcnJheSA9IFsxLCAnYicsIFtdLCBhcnJheV0iKTsKKyAgICBldmFsQW5kTG9nKCJjeWNsaWNf
YXJyYXkzID0gWzEsICdiJywgW11dOyBjeWNsaWNfYXJyYXkzLnB1c2goY3ljbGljX2FycmF5Myki
KTsKKyAgICBzaG91bGRUaHJvdygiSlNPTi5zdHJpbmdpZnkoY3ljbGljX2FycmF5MykiKTsKKyAg
ICBkZWJ1ZygiIik7CisKKyAgICBkZWJ1ZygiYXJyYXkgdGhhdCBjb250YWlucyBhcnJheSB0aGF0
IGNvbnRhaW5zIGl0c2VsZiIpOworICAgIGV2YWxBbmRMb2coImN5Y2xpY19hcnJheTQgPSBbY3lj
bGljX2FycmF5XTsiKTsKKyAgICBzaG91bGRUaHJvdygiSlNPTi5zdHJpbmdpZnkoY3ljbGljX2Fy
cmF5NCkiKTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICB2YXIgaW52YWxpZEtleXMgPSBbCisgICAg
ICAgICJbIHZvaWQgMCBdIiwgLy8gdW5kZWZpbmVkCisgICAgICAgICJbIHRydWUgXSIsCisgICAg
ICAgICJbIGZhbHNlIF0iLAorICAgICAgICAiWyBOYU4gXSIsCisgICAgICAgICJbIG51bGwgXSIs
CisgICAgICAgICJbIHt9IF0iLAorICAgICAgICAiWyBmdW5jdGlvbiAoKSB7fSBdIiwKKyAgICAg
ICAgIlsgL3JlZ2V4LyBdIiwKKyAgICAgICAgIlsgc2VsZiBdIiwKKyAgICAgICAgIlsgc2VsZi5k
b2N1bWVudCBdIiwKKyAgICAgICAgIlsgc2VsZi5kb2N1bWVudC5ib2R5IF0iLAorICAgICAgICAi
Y3ljbGljX2FycmF5IiwKKyAgICAgICAgImN5Y2xpY19hcnJheTIiLAorICAgICAgICAiY3ljbGlj
X2FycmF5MyIsCisgICAgICAgICJjeWNsaWNfYXJyYXk0IiwKKyAgICAgICAgIkFycmF5KDEwMDAp
IiAvLyBzcGFyc2UKKyAgICBdOworCisgICAgaW52YWxpZEtleXMuZm9yRWFjaChmdW5jdGlvbiAo
a2V5KSB7CisgICAgICAgIGRlYnVnKCJ0ZXN0aW5nIGludmFsaWQgYXJyYXkga2V5OiAiICsga2V5
KTsKKyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KCd2YWx1ZScsICIg
KyBrZXkgKyAiKTsiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKyAgICAgICAg
ZGVidWcoIiIpOworICAgIH0pOworCisgICAgdGVzdERlcHRoTGltaXRzKCk7Cit9CisKK2Z1bmN0
aW9uIG1ha2VBcnJheU9mRGVwdGgobikKK3sKKyAgICB2YXIgYXJyYXkgPSBbXTsKKyAgICB3aGls
ZSAoLS1uKSB7CisgICAgICAgIGFycmF5ID0gW2FycmF5XTsKKyAgICB9CisgICAgcmV0dXJuIGFy
cmF5OworfQorCitmdW5jdGlvbiB0ZXN0RGVwdGhMaW1pdHMoKQoreworICAgIHNob3VsZEJlKCJp
bmRleGVkREIuY21wKG1ha2VBcnJheU9mRGVwdGgoMjUpLCAwKSIsICIxIik7CisgICAgc2hvdWxk
QmUoImluZGV4ZWREQi5jbXAobWFrZUFycmF5T2ZEZXB0aCgyNTApLCAwKSIsICIxIik7CisgICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXhlZERCLmNtcChtYWtlQXJyYXlPZkRlcHRoKDI1
MDApLCAwKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworICAgIGRlYnVnKCIi
KTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL2tleS10eXBlLWluZmluaXR5LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL2tleS10eXBlLWluZmluaXR5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzMzc2ZTEwNjc3
MzIwNjQ2ZDg4ZGM5ZGE1ZDU4NGJlY2UyZjcwMzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5LXR5cGUtaW5maW5pdHkuanMKQEAg
LTAsMCArMSw1MiBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlw
dHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1w
b3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWRE
QiBrZXkgdHlwZXMiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJl
Zml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2Ny
aXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5k
TG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSB0ZXN0R3JvdXAxOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiB0ZXN0R3JvdXAxKCkKK3sKKyAgICBkZWxldGVBbGxPYmpl
Y3RTdG9yZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVP
YmplY3RTdG9yZSgnZm9vJyk7Iik7CisgICAgZGVidWcoInRlc3Qga2V5IGFzIGluZmluaXR5Iik7
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoW10s
IEluZmluaXR5KTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHRlc3RHcm91cDI7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IHRlc3RHcm91cDIoKQoreworICAgIGRlYnVnKCJ0ZXN0IGtleSBhcyBuZWdhdGl2ZSBpbmZpbml0
eSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRk
KFtdLCAtSW5maW5pdHkpOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdGVzdEdyb3VwMzsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gdGVzdEdyb3VwMygpCit7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5cGF0aC1iYXNpY3MuanMgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5cGF0aC1iYXNpY3MuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Y2M3ODE3YmI2ZDA2YzAwNDc2OTA5MGZjZWE2ODhjNzk1YTg1NDhjYwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXlwYXRoLWJhc2lj
cy5qcwpAQCAtMCwwICsxLDkxIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1w
b3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsK
KyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3Qg
Zm9yIHZhbGlkIGFuZCBpbnZhbGlkIGtleXBhdGhzIik7CisKK2Z1bmN0aW9uIHRlc3QoKQorewor
ICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0
aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sK
KyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHRlc3RWYWxpZEtleVBhdGhzOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiB0ZXN0VmFsaWRL
ZXlQYXRocygpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIHRlc3RL
ZXlQYXRocyA9IFtudWxsLCB1bmRlZmluZWQsICcnXTsKKyAgICB0ZXN0S2V5UGF0aHMuZm9yRWFj
aChmdW5jdGlvbiAoa2V5UGF0aCkgeworICAgICAgICBnbG9iYWxLZXlQYXRoID0ga2V5UGF0aDsK
KyAgICAgICAgZGVidWcoImdsb2JhbEtleVBhdGggPSAnIiArIGdsb2JhbEtleVBhdGggKyAiJyIp
OworICAgICAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScsIHtrZXlQ
YXRoOiBnbG9iYWxLZXlQYXRofSkiKTsKKyAgICAgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRi
KTsKKyAgICB9KTsKKworICAgIHRlc3RLZXlQYXRocyA9IFsnZm9vJywgJ2Zvby5iYXIuYmF6J107
CisgICAgdGVzdEtleVBhdGhzLmZvckVhY2goZnVuY3Rpb24gKGtleVBhdGgpIHsKKyAgICAgICAg
Z2xvYmFsS2V5UGF0aCA9IGtleVBhdGg7CisgICAgICAgIGRlYnVnKCJnbG9iYWxLZXlQYXRoID0g
JyIgKyBnbG9iYWxLZXlQYXRoICsgIiciKTsKKyAgICAgICAgZXZhbEFuZExvZygiZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDogZ2xvYmFsS2V5UGF0aH0pIik7CisgICAgICAg
IGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisgICAgfSk7CisKKyAgICB0ZXN0S2V5UGF0aHMg
PSBbbnVsbCwgdW5kZWZpbmVkLCAnJywgJ2ZvbycsICdmb28uYmFyLmJheiddOworICAgIHRlc3RL
ZXlQYXRocy5mb3JFYWNoKGZ1bmN0aW9uIChrZXlQYXRoKSB7CisgICAgICAgIGdsb2JhbEtleVBh
dGggPSBrZXlQYXRoOworICAgICAgICBkZWJ1ZygiZ2xvYmFsS2V5UGF0aCA9ICciICsgZ2xvYmFs
S2V5UGF0aCArICInIik7CisgICAgICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5j
cmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICAgICAgZXZhbEFuZExvZygic3Rv
cmUuY3JlYXRlSW5kZXgoJ25hbWUnLCBnbG9iYWxLZXlQYXRoKSIpOworICAgICAgICBkZWxldGVB
bGxPYmplY3RTdG9yZXMoZGIpOworICAgIH0pOworCisgICAgdGVzdEludmFsaWRLZXlQYXRocygp
OworfQorCitmdW5jdGlvbiB0ZXN0SW52YWxpZEtleVBhdGhzKCkKK3sKKyAgICBkZWxldGVBbGxP
YmplY3RTdG9yZXMoZGIpOworCisgICAgdGVzdEtleVBhdGhzID0gWydbXScsICdbImZvbyJdJywg
J1siZm9vIiwgImJhciJdJywgJ1siIiwgIiJdJywgJ1sxLjAsIDIuMF0nLCAnW1siZm9vIl1dJywg
J1siZm9vIiwgWyJiYXIiXV0nXTsKKyAgICB0ZXN0S2V5UGF0aHMuZm9yRWFjaChmdW5jdGlvbiAo
a2V5UGF0aCkgeworICAgICAgICBnbG9iYWxLZXlQYXRoID0ga2V5UGF0aDsKKyAgICAgICAgZGVi
dWcoImdsb2JhbEtleVBhdGggPSAnIiArIGdsb2JhbEtleVBhdGggKyAiJyIpOworICAgICAgICBl
dmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScsIHtrZXlQ
YXRoOiBnbG9iYWxLZXlQYXRofSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9OX1RSQU5TSUVO
VF9FUlIiKTsKKyAgICAgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKyAgICB9KTsKKwor
ICAgIHRlc3RLZXlQYXRocyA9IFsnICcsICdmb28gJywgJ2ZvbyBiYXInLCAnZm9vLiBiYXInLCAn
Zm9vIC5iYXInLCAnZm9vLi5iYXInLCAnK2ZvbycsICdmb28lJ107CisgICAgdGVzdEtleVBhdGhz
LmZvckVhY2goZnVuY3Rpb24gKGtleVBhdGgpIHsKKyAgICAgICAgZ2xvYmFsS2V5UGF0aCA9IGtl
eVBhdGg7CisgICAgICAgIGRlYnVnKCJnbG9iYWxLZXlQYXRoID0gJyIgKyBnbG9iYWxLZXlQYXRo
ICsgIiciKTsKKyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDogZ2xvYmFsS2V5UGF0aH0pIiwgIklEQkRhdGFiYXNlRXhj
ZXB0aW9uLk5PTl9UUkFOU0lFTlRfRVJSIik7CisgICAgICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jl
cyhkYik7CisgICAgfSk7CisKKyAgICB0ZXN0S2V5UGF0aHMgPSBbJyAnLCAnZm9vICcsICdmb28g
YmFyJywgJ2Zvby4gYmFyJywgJ2ZvbyAuYmFyJywgJ2Zvby4uYmFyJywgJytmb28nLCAnZm9vJSdd
OworICAgIHRlc3RLZXlQYXRocy5mb3JFYWNoKGZ1bmN0aW9uIChrZXlQYXRoKSB7CisgICAgICAg
IGdsb2JhbEtleVBhdGggPSBrZXlQYXRoOworICAgICAgICBkZWJ1ZygiZ2xvYmFsS2V5UGF0aCA9
ICciICsgZ2xvYmFsS2V5UGF0aCArICInIik7CisgICAgICAgIHN0b3JlID0gZXZhbEFuZExvZygi
c3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICAgICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuY3JlYXRlSW5kZXgoJ25hbWUnLCBnbG9iYWxLZXlQ
YXRoKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT05fVFJBTlNJRU5UX0VSUiIpOworICAgICAg
ICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworICAgIH0pOworCisgICAgZmluaXNoSlNUZXN0
KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5cGF0aC1lZGdlcy5q
cyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXlwYXRoLWVkZ2Vz
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmViZjExYmI2ZGNlMjc2NDcxMTA1YjgzZTFjZDQ5NDEyMmZjOGI1MDEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMva2V5cGF0aC1lZGdlcy5qcwpAQCAtMCwwICsxLDExMCBAQAoraWYgKHRoaXMuaW1wb3J0U2Ny
aXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rl
c2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBrZXlQYXRoIGVkZ2UgY2FzZXMiKTsKKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoJ2tleXBhdGgtZWRnZXMnKSIp
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCLm9wZW4oJ2tleXBhdGgtZWRnZXMnKSIpOworICAgICAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICB9OworfQorCitmdW5jdGlvbiBvcGVuU3VjY2Vzcygp
Cit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOworICAgIGRi
ID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdHJhbnNhY3Rpb24gPSByZXF1ZXN0LnJlc3VsdDsK
KyAgICAgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwor
ICAgICAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUtd2l0aC1wYXRo
Jywge2tleVBhdGg6ICdmb28nfSkiKTsKKyAgICAgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ3N0b3JlLXdpdGgtcGF0aC1hbmQtZ2VuZXJhdG9yJywge2tleVBhdGg6ICdmb28n
LCBhdXRvSW5jcmVtZW50OiB0cnVlfSkiKTsKKyAgICAgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0
ZSA9IHRlc3RLZXlQYXRoczsKKyAgICB9OworfQorCitmdW5jdGlvbiB0ZXN0S2V5UGF0aHMoKQor
eworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidGVzdEtleVBhdGhzKCk6Iik7CisKKyAgICB0
cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydz
dG9yZS13aXRoLXBhdGgnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICBzdG9y
ZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlLXdp
dGgtcGF0aCcpIik7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIktleSBwYXRoIGRvZXNu
J3QgcmVzb2x2ZSB0byBhIHZhbHVlOyBzaG91bGQgeWllbGQgbnVsbCwgc2hvdWxkIHRocm93IERB
VEFfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KG51bGwpIiwg
IklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICBkZWJ1ZygiIik7CisgICAg
ZGVidWcoIktleSBwYXRoIGRvZXNuJ3QgcmVzb2x2ZSB0byBhIHZhbHVlOyBzaG91bGQgeWllbGQg
bnVsbCwgc2hvdWxkIHRocm93IERBVEFfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlv
bigic3RvcmUucHV0KHt9KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworCisg
ICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJLZXkgcGF0aCByZXNvbHZlcyB0byBhIHZhbHVlIHRo
YXQgaXMgaW52YWxpZCBrZXk7IHNob3VsZCB5aWVsZCAnaW52YWxpZCcga2V5LCBzaG91bGQgdGhy
b3cgREFUQV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5wdXQoe2Zv
bzogbnVsbH0pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoIktleSBwYXRoIHJlc29sdmVzIHRvIGEgdmFsdWUgdGhhdCBpcyB2
YWxpZCBrZXk7IHNob3VsZCB5aWVsZCAnc3RyaW5nJyBrZXksIHNob3VsZCBzdWNjZWVkIik7Cisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLnB1dCh7Zm9vOiAnem9vJ30pIik7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgIHRlc3RQYXNzZWQoInN0b3JlLnB1dCBz
dWNjZWVkZWQiKTsKKyAgICB9OworCisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0
ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB0ZXN0S2V5UGF0
aHNBbmRHZW5lcmF0b3I7Cit9CisKK2Z1bmN0aW9uIHRlc3RLZXlQYXRoc0FuZEdlbmVyYXRvcigp
Cit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0S2V5UGF0aHNBbmRHZW5lcmF0b3Io
KToiKTsKKworICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50
cmFuc2FjdGlvbihbJ3N0b3JlLXdpdGgtcGF0aC1hbmQtZ2VuZXJhdG9yJ10sIElEQlRyYW5zYWN0
aW9uLlJFQURfV1JJVEUpIik7CisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5z
YWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZS13aXRoLXBhdGgtYW5kLWdlbmVyYXRvcicpIik7CisK
KyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIktleSBwYXRoIGRvZXNuJ3QgcmVzb2x2ZSB0byBh
IHZhbHVlOyBzaG91bGQgeWllbGQgbnVsbCBidXQgaW5zZXJ0aW9uIHdvdWxkIGZhaWwsIHNvIHB1
dCByZXF1ZXN0IHNob3VsZCByYWlzZSBleGNlcHRpb24iKTsKKyAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJzdG9yZS5wdXQobnVsbCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIi
KTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiS2V5IHBhdGggZG9lc24ndCByZXNvbHZl
IHRvIGEgdmFsdWU7IHNob3VsZCB5aWVsZCBudWxsIGJ1dCBpbnNlcnRpb24gd291bGQgZmFpbCwg
c28gcHV0IHJlcXVlc3Qgc2hvdWxkIHJhaXNlIGV4Y2VwdGlvbiIpOworICAgIGV2YWxBbmRFeHBl
Y3RFeGNlcHRpb24oInN0b3JlLnB1dCgnc3RyaW5nJykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24u
REFUQV9FUlIiKTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiS2V5IHBhdGggZG9lc24n
dCByZXNvbHZlIHRvIGEgdmFsdWU7IHNob3VsZCB5aWVsZCBudWxsLCBrZXkgc2hvdWxkIGJlIGdl
bmVyYXRlZCwgcHV0IHJlcXVlc3Qgc2hvdWxkIHN1Y2NlZWQiKTsKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygic3RvcmUucHV0KHt9KSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewor
ICAgICAgICB0ZXN0UGFzc2VkKCJzdG9yZS5wdXQgc3VjY2VlZGVkIik7CisKKyAgICAgICAgZGVi
dWcoIiIpOworICAgICAgICBkZWJ1ZygiS2V5IHBhdGggcmVzb2x2ZXMgdG8gYSB2YWx1ZSB0aGF0
IGlzIGludmFsaWQga2V5OyBzaG91bGQgeWllbGQgJ2ludmFsaWQnIGtleSwgc2hvdWxkIHRocm93
IERBVEFfRVJSIik7CisgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLnB1dCh7
Zm9vOiBudWxsfSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKworICAgICAg
ICBkZWJ1ZygiIik7CisgICAgICAgIGRlYnVnKCJLZXkgcGF0aCByZXNvbHZlcyB0byBhIHZhbHVl
IHRoYXQgaXMgdmFsaWQga2V5OyBzaG91bGQgeWllbGQgJ3N0cmluZycga2V5LCBzaG91bGQgc3Vj
Y2VlZCIpOworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUucHV0KHtmb286ICd6
b28nfSkiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgdGVzdFBhc3NlZCgic3RvcmUucHV0IHN1Y2NlZWRlZCIpOworCisgICAgICAgIH07CisgICAg
fTsKKworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsK
KyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZmluaXNoSlNUZXN0OworfQorCit0ZXN0KCk7
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleXBhdGgtZmV0Y2gta2V5LmpzIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleXBhdGgtZmV0Y2gta2V5LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQwMjMzNTNjMzM2NDQxNDBiYWZjNzZiYzQ3OTdhYWVjNDFlNWEzZDcKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5cGF0
aC1mZXRjaC1rZXkuanMKQEAgLTAsMCArMSw4MiBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykg
eworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0
aW9uKCJUZXN0IEluZGV4ZWREQiBrZXlQYXRocyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0
aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sK
KyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKwor
ICAgIHRlc3REYXRhID0gW3sgbmFtZTogInNpbXBsZSBpZGVudGlmaWVyIiwKKyAgICAgICAgICAg
ICAgICAgIHZhbHVlOiB7aWQ6MTB9LAorICAgICAgICAgICAgICAgICAga2V5UGF0aDogImlkIiwK
KyAgICAgICAgICAgICAgICAgIGtleTogMTAgfSwKKyAgICAgICAgICAgICAgICB7IG5hbWU6ICJz
aW1wbGUgaWRlbnRpZmllcnMiLAorICAgICAgICAgICAgICAgICAgdmFsdWU6IHtpZDE6MTAsIGlk
MjoyMH0sCisgICAgICAgICAgICAgICAgICBrZXlQYXRoOiAiaWQxIiwKKyAgICAgICAgICAgICAg
ICAgIGtleTogMTAgfSwKKyAgICAgICAgICAgICAgICB7IG5hbWU6ICJuZXN0ZWQgaWRlbnRpZmll
cnMiLAorICAgICAgICAgICAgICAgICAgdmFsdWU6IHtvdXRlcjp7aW5uZXI6MTB9fSwKKyAgICAg
ICAgICAgICAgICAgIGtleVBhdGg6ICJvdXRlci5pbm5lciIsCisgICAgICAgICAgICAgICAgICBr
ZXk6IDEwIH0sCisgICAgICAgICAgICAgICAgeyBuYW1lOiAibmVzdGVkIGlkZW50aWZpZXJzIHdp
dGggZGlzdHJhY3Rpb25zIiwKKyAgICAgICAgICAgICAgICAgIHZhbHVlOiB7b3V0ZXI6e2lubmVy
OjEwfSwgaW5uZXI6e291dGVyOjIwfX0sCisgICAgICAgICAgICAgICAgICBrZXlQYXRoOiAib3V0
ZXIuaW5uZXIiLAorICAgICAgICAgICAgICAgICAga2V5OiAxMCB9LAorICAgIF07CisgICAgbmV4
dFRvT3BlbiA9IDA7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9i
amVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworfQorCitmdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKK3sKKyAgICBk
ZWJ1ZygiIik7CisgICAgZGVidWcoInRlc3RpbmcgIiArIHRlc3REYXRhW25leHRUb09wZW5dLm5h
bWUpOworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3Jl
ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSh0ZXN0RGF0
YVtuZXh0VG9PcGVuXS5uYW1lLCB7a2V5UGF0aDogdGVzdERhdGFbbmV4dFRvT3Blbl0ua2V5UGF0
aH0pOyIpOworICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coInJlc3VsdCA9IG9iamVjdFN0b3JlLmFk
ZCh0ZXN0RGF0YVtuZXh0VG9PcGVuXS52YWx1ZSk7Iik7CisgICAgcmVzdWx0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXN1bHQub25zdWNjZXNzID0gb3BlbkN1cnNv
cjsKK30KKworZnVuY3Rpb24gb3BlbkN1cnNvcigpCit7CisgICAgcmVzdWx0ID0gZXZhbEFuZExv
ZygicmVzdWx0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOworICAgIHJlc3VsdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGNo
ZWNrQ3Vyc29yOworfQorCitmdW5jdGlvbiBjaGVja0N1cnNvcigpCit7CisgICAgY3Vyc29yID0g
ZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICBpZiAoY3Vy
c29yKSB7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgInRlc3REYXRhW25leHRUb09w
ZW5dLmtleSIpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQoImN1cnNvciBpcyBu
dWxsIik7CisgICAgfQorICAgIGlmICgrK25leHRUb09wZW4gPCB0ZXN0RGF0YS5sZW5ndGgpIHsK
KyAgICAgICAgY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSgpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0KK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9rZXlyYW5nZS1yZXF1aXJlZC1hcmd1bWVudHMuanMgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5cmFuZ2UtcmVxdWlyZWQtYXJndW1lbnRzLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjgxMzIwOTkwMjViZjU3ZjU3ZWY5ZWJkY2RkNDhkMzcwYzBiZWZmN2IKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
a2V5cmFuZ2UtcmVxdWlyZWQtYXJndW1lbnRzLmpzCkBAIC0wLDAgKzEsMjEgQEAKK2lmICh0aGlz
LmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycp
OworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIga2V5cmFuZ2UgcmVxdWlyZWQgYXJn
dW1lbnRzIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVz
KCk7CisKKyAgICBzaG91bGRUaHJvdygiSURCS2V5UmFuZ2Uub25seSgpOyIpOworICAgIHNob3Vs
ZFRocm93KCJJREJLZXlSYW5nZS5sb3dlckJvdW5kKCk7Iik7CisgICAgc2hvdWxkVGhyb3coIklE
QktleVJhbmdlLnVwcGVyQm91bmQoKTsiKTsKKyAgICBzaG91bGRUaHJvdygiSURCS2V5UmFuZ2Uu
Ym91bmQoMSk7Iik7CisgICAgc2hvdWxkVGhyb3coIklEQktleVJhbmdlLmJvdW5kKCk7Iik7CisK
KyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9rZXlyYW5nZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9r
ZXlyYW5nZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMmY1ZjY1NjZkNjE4MWM5MDhhMzQ3MDIxNmI4ZjMwOTQ1
NWNlN2Y0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL2tleXJhbmdlLmpzCkBAIC0wLDAgKzEsMTg3IEBACitpZiAodGhpcy5pbXBvcnRT
Y3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKwor
ZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgS2V5UmFuZ2UuIik7CisKK2Z1bmN0aW9uIGNo
ZWNrU2luZ2xlS2V5UmFuZ2UodmFsdWUpCit7CisgICAga2V5UmFuZ2UgPSBldmFsQW5kTG9nKCJJ
REJLZXlSYW5nZS5vbmx5KCIgKyB2YWx1ZSArICIpIik7CisgICAgc2hvdWxkQmUoImtleVJhbmdl
Lmxvd2VyIiwgIiIgKyB2YWx1ZSk7CisgICAgc2hvdWxkQmUoImtleVJhbmdlLnVwcGVyIiwgIiIg
KyB2YWx1ZSk7CisgICAgc2hvdWxkQmVGYWxzZSgia2V5UmFuZ2UubG93ZXJPcGVuIik7CisgICAg
c2hvdWxkQmVGYWxzZSgia2V5UmFuZ2UudXBwZXJPcGVuIik7Cit9CisKK2Z1bmN0aW9uIGNoZWNr
TG93ZXJCb3VuZEtleVJhbmdlKHZhbHVlLCBvcGVuKQoreworICAgIGtleVJhbmdlID0gZXZhbEFu
ZExvZygiSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgiICsgdmFsdWUgKyAiLCIgKyBvcGVuICsgIiki
KTsKKyAgICBzaG91bGRCZSgia2V5UmFuZ2UubG93ZXIiLCAiIiArIHZhbHVlKTsKKyAgICBpZiAo
b3BlbiA9PT0gdW5kZWZpbmVkKQorICAgICAgICBvcGVuID0gZmFsc2U7CisgICAgc2hvdWxkQmUo
ImtleVJhbmdlLmxvd2VyT3BlbiIsICIiICsgb3Blbik7CisgICAgc2hvdWxkQmVOdWxsKCJrZXlS
YW5nZS51cHBlciIpOworICAgIHNob3VsZEJlRmFsc2UoImtleVJhbmdlLnVwcGVyT3BlbiIpOwor
fQorCitmdW5jdGlvbiBjaGVja1VwcGVyQm91bmRLZXlSYW5nZSh2YWx1ZSwgb3BlbikKK3sKKyAg
ICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coIklEQktleVJhbmdlLnVwcGVyQm91bmQoIiArIHZhbHVl
ICsgIiwiICsgb3BlbiArICIpIik7CisgICAgc2hvdWxkQmUoImtleVJhbmdlLnVwcGVyIiwgIiIg
KyB2YWx1ZSk7CisgICAgaWYgKG9wZW4gPT09IHVuZGVmaW5lZCkKKyAgICAgICAgb3BlbiA9IGZh
bHNlOworICAgIHNob3VsZEJlKCJrZXlSYW5nZS51cHBlck9wZW4iLCAiIiArIG9wZW4pOworICAg
IHNob3VsZEJlTnVsbCgia2V5UmFuZ2UubG93ZXIiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJrZXlS
YW5nZS5sb3dlck9wZW4iKTsKK30KKworZnVuY3Rpb24gY2hlY2tCb3VuZEtleVJhbmdlKGxvd2Vy
LCB1cHBlciwgbG93ZXJPcGVuLCB1cHBlck9wZW4pCit7CisgICAga2V5UmFuZ2UgPSBldmFsQW5k
TG9nKCJJREJLZXlSYW5nZS5ib3VuZCgiICsgbG93ZXIgKyAiLCIgKyB1cHBlciArICIsICIgKyBs
b3dlck9wZW4gKyAiLCAiICsgdXBwZXJPcGVuICsgIikiKTsKKyAgICBzaG91bGRCZSgia2V5UmFu
Z2UubG93ZXIiLCAiIiArIGxvd2VyKTsKKyAgICBzaG91bGRCZSgia2V5UmFuZ2UudXBwZXIiLCAi
IiArIHVwcGVyKTsKKyAgICBpZiAobG93ZXJPcGVuID09PSB1bmRlZmluZWQpCisgICAgICAgIGxv
d2VyT3BlbiA9IGZhbHNlOworICAgIGlmICh1cHBlck9wZW4gPT09IHVuZGVmaW5lZCkKKyAgICAg
ICAgdXBwZXJPcGVuID0gZmFsc2U7CisgICAgc2hvdWxkQmUoImtleVJhbmdlLmxvd2VyT3BlbiIs
ICIiICsgbG93ZXJPcGVuKTsKKyAgICBzaG91bGRCZSgia2V5UmFuZ2UudXBwZXJPcGVuIiwgIiIg
KyB1cHBlck9wZW4pOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQ
cmVmaXhlcygpOworICAgIHNob3VsZEJlRmFsc2UoIidsb3dlcicgaW4gSURCS2V5UmFuZ2UiKTsK
KyAgICBzaG91bGRCZUZhbHNlKCIndXBwZXInIGluIElEQktleVJhbmdlIik7CisgICAgc2hvdWxk
QmVGYWxzZSgiJ2xvd2VyT3BlbicgaW4gSURCS2V5UmFuZ2UiKTsKKyAgICBzaG91bGRCZUZhbHNl
KCIndXBwZXJPcGVuJyBpbiBJREJLZXlSYW5nZSIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ29ubHkn
IGluIElEQktleVJhbmdlIik7CisgICAgc2hvdWxkQmVUcnVlKCInbG93ZXJCb3VuZCcgaW4gSURC
S2V5UmFuZ2UiKTsKKyAgICBzaG91bGRCZVRydWUoIid1cHBlckJvdW5kJyBpbiBJREJLZXlSYW5n
ZSIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ2JvdW5kJyBpbiBJREJLZXlSYW5nZSIpOworCisgICAg
ZGVidWcoIiIpOworCisgICAgdmFyIGluc3RhbmNlID0gZXZhbEFuZExvZygiaW5zdGFuY2UgPSBJ
REJLZXlSYW5nZS5vbmx5KDEpIik7CisgICAgc2hvdWxkQmVUcnVlKCInbG93ZXInIGluIGluc3Rh
bmNlIik7CisgICAgc2hvdWxkQmVUcnVlKCIndXBwZXInIGluIGluc3RhbmNlIik7CisgICAgc2hv
dWxkQmVUcnVlKCInbG93ZXJPcGVuJyBpbiBpbnN0YW5jZSIpOworICAgIHNob3VsZEJlVHJ1ZSgi
J3VwcGVyT3BlbicgaW4gaW5zdGFuY2UiKTsKKyAgICBzaG91bGRCZUZhbHNlKCInb25seScgaW4g
aW5zdGFuY2UiKTsKKyAgICBzaG91bGRCZUZhbHNlKCInbG93ZXJCb3VuZCcgaW4gaW5zdGFuY2Ui
KTsKKyAgICBzaG91bGRCZUZhbHNlKCIndXBwZXJCb3VuZCcgaW4gaW5zdGFuY2UiKTsKKyAgICBz
aG91bGRCZUZhbHNlKCInYm91bmQnIGluIGluc3RhbmNlIik7CisKKyAgICBkZWJ1ZygiIik7CisK
KyAgICBjaGVja1NpbmdsZUtleVJhbmdlKDEpOworICAgIGNoZWNrU2luZ2xlS2V5UmFuZ2UoMy4x
NCk7CisgICAgY2hlY2tTaW5nbGVLZXlSYW5nZSgiJ2EnIik7CisKKyAgICBjaGVja0xvd2VyQm91
bmRLZXlSYW5nZSgxMCwgdHJ1ZSk7CisgICAgY2hlY2tMb3dlckJvdW5kS2V5UmFuZ2UoMTEsIGZh
bHNlKTsKKyAgICBjaGVja0xvd2VyQm91bmRLZXlSYW5nZSgxMik7CisgICAgY2hlY2tMb3dlckJv
dW5kS2V5UmFuZ2UoMTAuMSwgdHJ1ZSk7CisgICAgY2hlY2tMb3dlckJvdW5kS2V5UmFuZ2UoMTEu
MiwgZmFsc2UpOworICAgIGNoZWNrTG93ZXJCb3VuZEtleVJhbmdlKDEyLjMpOworICAgIGNoZWNr
TG93ZXJCb3VuZEtleVJhbmdlKCInYWEnIiwgdHJ1ZSk7CisgICAgY2hlY2tMb3dlckJvdW5kS2V5
UmFuZ2UoIidhYiciLCBmYWxzZSk7CisgICAgY2hlY2tMb3dlckJvdW5kS2V5UmFuZ2UoIidhYyci
KTsKKworICAgIGNoZWNrVXBwZXJCb3VuZEtleVJhbmdlKDIwLCB0cnVlKTsKKyAgICBjaGVja1Vw
cGVyQm91bmRLZXlSYW5nZSgyMSwgZmFsc2UpOworICAgIGNoZWNrVXBwZXJCb3VuZEtleVJhbmdl
KDIyKTsKKyAgICBjaGVja1VwcGVyQm91bmRLZXlSYW5nZSgyMC4yLCB0cnVlKTsKKyAgICBjaGVj
a1VwcGVyQm91bmRLZXlSYW5nZSgyMS4zLCBmYWxzZSk7CisgICAgY2hlY2tVcHBlckJvdW5kS2V5
UmFuZ2UoMjIuNCk7CisgICAgY2hlY2tVcHBlckJvdW5kS2V5UmFuZ2UoIidiYSciLCB0cnVlKTsK
KyAgICBjaGVja1VwcGVyQm91bmRLZXlSYW5nZSgiJ2JiJyIsIGZhbHNlKTsKKyAgICBjaGVja1Vw
cGVyQm91bmRLZXlSYW5nZSgiJ2JjJyIpOworCisgICAgY2hlY2tCb3VuZEtleVJhbmdlKDMwLCA0
MCk7CisgICAgY2hlY2tCb3VuZEtleVJhbmdlKDMxLCA0MSwgZmFsc2UsIGZhbHNlKTsKKyAgICBj
aGVja0JvdW5kS2V5UmFuZ2UoMzIsIDQyLCBmYWxzZSwgdHJ1ZSk7CisgICAgY2hlY2tCb3VuZEtl
eVJhbmdlKDMzLCA0MywgdHJ1ZSwgZmFsc2UpOworICAgIGNoZWNrQm91bmRLZXlSYW5nZSgzNCwg
NDQsIHRydWUsIHRydWUpOworCisgICAgY2hlY2tCb3VuZEtleVJhbmdlKDMwLjEsIDQwLjIpOwor
ICAgIGNoZWNrQm91bmRLZXlSYW5nZSgzMS4zLCA0MS40LCBmYWxzZSwgZmFsc2UpOworICAgIGNo
ZWNrQm91bmRLZXlSYW5nZSgzMi41LCA0Mi42LCBmYWxzZSwgdHJ1ZSk7CisgICAgY2hlY2tCb3Vu
ZEtleVJhbmdlKDMzLjcsIDQzLjgsIHRydWUsIGZhbHNlKTsKKyAgICBjaGVja0JvdW5kS2V5UmFu
Z2UoMzQuOSwgNDQuMCwgdHJ1ZSwgdHJ1ZSk7CisKKyAgICBjaGVja0JvdW5kS2V5UmFuZ2UoIidh
YWEnIiwgIidhYmEnIiwgZmFsc2UsIGZhbHNlKTsKKyAgICBjaGVja0JvdW5kS2V5UmFuZ2UoIidh
YWInIiwgIidhYmInIik7CisgICAgY2hlY2tCb3VuZEtleVJhbmdlKCInYWFjJyIsICInYWJjJyIs
IGZhbHNlLCBmYWxzZSk7CisgICAgY2hlY2tCb3VuZEtleVJhbmdlKCInYWFkJyIsICInYWJkJyIs
IGZhbHNlLCB0cnVlKTsKKyAgICBjaGVja0JvdW5kS2V5UmFuZ2UoIidhYWUnIiwgIidhYmUnIiwg
dHJ1ZSwgZmFsc2UpOworICAgIGNoZWNrQm91bmRLZXlSYW5nZSgiJ2FhZiciLCAiJ2FiZiciLCB0
cnVlLCB0cnVlKTsKKworICAgIHRyeSB7CisgICAgICAgIGRlYnVnKCJQYXNzaW5nIGFuIGludmFs
aWQga2V5IGludG8gb25seSh7fSkiKTsKKyAgICAgICAgSURCS2V5UmFuZ2Uub25seSh7fSk7Cisg
ICAgICAgIHRlc3RGYWlsZWQoIk5vIGV4Y2VwdGlvbiB0aHJvd24iKTsKKyAgICB9IGNhdGNoIChl
KSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkNhdWdodCBleGNlcHRpb246ICIgKyBlLnRvU3RyaW5n
KCkpOworICAgIH0KKworICAgIHRyeSB7CisgICAgICAgIGRlYnVnKCJQYXNzaW5nIGFuIGludmFs
aWQga2V5IGludG8gdXBwZXJCb3VuZCh7fSkiKTsKKyAgICAgICAgSURCS2V5UmFuZ2UudXBwZXJC
b3VuZCh7fSk7CisgICAgICAgIHRlc3RGYWlsZWQoIk5vIGV4Y2VwdGlvbiB0aHJvd24iKTsKKyAg
ICB9IGNhdGNoIChlKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkNhdWdodCBleGNlcHRpb246ICIg
KyBlLnRvU3RyaW5nKCkpOworICAgIH0KKworICAgIHRyeSB7CisgICAgICAgIGRlYnVnKCJQYXNz
aW5nIGFuIGludmFsaWQga2V5IGludG8gbG93ZXJCb3VuZCh7fSkiKTsKKyAgICAgICAgSURCS2V5
UmFuZ2UubG93ZXJCb3VuZCh7fSk7CisgICAgICAgIHRlc3RGYWlsZWQoIk5vIGV4Y2VwdGlvbiB0
aHJvd24iKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkNhdWdodCBl
eGNlcHRpb246ICIgKyBlLnRvU3RyaW5nKCkpOworICAgIH0KKworICAgIHRyeSB7CisgICAgICAg
IGRlYnVnKCJQYXNzaW5nIGFuIGludmFsaWQga2V5IGludG8gYm91bmQobnVsbCwge30pIik7Cisg
ICAgICAgIElEQktleVJhbmdlLmJvdW5kKG51bGwsIHt9KTsKKyAgICAgICAgdGVzdEZhaWxlZCgi
Tm8gZXhjZXB0aW9uIHRocm93biIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgdGVzdFBh
c3NlZCgiQ2F1Z2h0IGV4Y2VwdGlvbjogIiArIGUudG9TdHJpbmcoKSk7CisgICAgfQorCisgICAg
dHJ5IHsKKyAgICAgICAgZGVidWcoIlBhc3NpbmcgYW4gaW52YWxpZCBrZXkgaW50byBib3VuZCh7
fSxudWxsKSIpOworICAgICAgICBJREJLZXlSYW5nZS5ib3VuZCh7fSwgbnVsbCk7CisgICAgICAg
IHRlc3RGYWlsZWQoIk5vIGV4Y2VwdGlvbiB0aHJvd24iKTsKKyAgICB9IGNhdGNoIChlKSB7Cisg
ICAgICAgIHRlc3RQYXNzZWQoIkNhdWdodCBleGNlcHRpb246ICIgKyBlLnRvU3RyaW5nKCkpOwor
ICAgIH0KKworICAgIHRyeSB7CisgICAgICAgIGRlYnVnKCJQYXNzaW5nIGFuIGludmFsaWQga2V5
IGludG8gYm91bmQoe30sIHt9KSIpOworICAgICAgICBJREJLZXlSYW5nZS5ib3VuZCh7fSwge30p
OworICAgICAgICB0ZXN0RmFpbGVkKCJObyBleGNlcHRpb24gdGhyb3duIik7CisgICAgfSBjYXRj
aCAoZSkgeworICAgICAgICB0ZXN0UGFzc2VkKCJDYXVnaHQgZXhjZXB0aW9uOiAiICsgZS50b1N0
cmluZygpKTsKKyAgICB9CisKKyAgICBkZWJ1ZygiTG93ZXIga2V5IGdyZWF0ZXIgdGhhbiBoaWdo
ZXIga2V5LCBib3VuZCg0LCAzKSIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIklEQktl
eVJhbmdlLmJvdW5kKDQsIDMpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisK
KyAgICBkZWJ1ZygiRXF1YWwga2V5cywgZWl0aGVyIG9mIHRoZSBib3VuZHMgaXMgb3BlbiwgYm91
bmQoNCwgNCwgdHJ1ZSwgZmFsc2UpIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiSURC
S2V5UmFuZ2UuYm91bmQoNCwgNCwgdHJ1ZSwgZmFsc2UpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9u
LkRBVEFfRVJSIik7CisKKyAgICBkZWJ1ZygiRXF1YWwga2V5cywgZWl0aGVyIG9mIHRoZSBib3Vu
ZHMgaXMgb3BlbiwgYm91bmQoNCwgNCwgZmFsc2UsIHRydWUpIik7CisgICAgZXZhbEFuZEV4cGVj
dEV4Y2VwdGlvbigiSURCS2V5UmFuZ2UuYm91bmQoNCwgNCwgZmFsc2UsIHRydWUpIiwgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICBkZWJ1ZygiRXF1YWwga2V5cywgZWl0
aGVyIG9mIHRoZSBib3VuZHMgaXMgb3BlbiwgYm91bmQoNCwgNCwgdHJ1ZSwgdHJ1ZSkiKTsKKyAg
ICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJJREJLZXlSYW5nZS5ib3VuZCg0LCA0LCB0cnVlLCB0
cnVlKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworCisgICAgZGVidWcoIkVx
dWFsIGtleXMsIG5vbmUgb2YgdGhlIGJvdW5kcyBpcyBvcGVuLCBib3VuZCg0LCA0LCBmYWxzZSwg
ZmFsc2UpIik7CisgICAgSURCS2V5UmFuZ2UuYm91bmQoNCwgNCwgZmFsc2UsIGZhbHNlKTsKK30K
KwordGVzdCgpOworCitmaW5pc2hKU1Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvbGlz
dC1vcmRlcmluZy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9s
aXN0LW9yZGVyaW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczNTk4ZmQ3MjM1ODYwZWRhNzhiMmYxNzFlZTE0
ZGIwYzBjMWFjY2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvbGlzdC1vcmRlcmluZy5qcwpAQCAtMCwwICsxLDg0IEBACitpZiAodGhp
cy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMn
KTsKK30KKworZGVzY3JpcHRpb24oIlRlc3Qgc3RyaW5nIGxpc3Qgb3JkZXJpbmcgaW4gSW5kZXhl
ZERCLiIpOworCit2YXIgZXhwZWN0ZWRfb3JkZXIgPSBbCisgICIiLAorICAiXHgwMCIsIC8vICdO
VUxMJyAoVSswMDAwKQorICAiMCIsCisgICIxIiwKKyAgIkEiLAorICAiQiIsCisgICJhIiwKKyAg
ImIiLAorICAiXHg3RiIsIC8vICdERUxFVEUnIChVKzAwN0YpCisgICJceEMwIiwgLy8gJ0xBVElO
IENBUElUQUwgTEVUVEVSIEEgV0lUSCBHUkFWRScgKFUrMDBDMCkKKyAgIlx4QzEiLCAvLyAnTEFU
SU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEFDVVRFJyAoVSswMEMxKQorICAiXHhFMCIsIC8vICdM
QVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEdSQVZFJyAoVSswMEUwKQorICAiXHhFMSIsIC8vICdM
QVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEFDVVRFJyAoVSswMEUxKQorICAiXHhGRiIsIC8vICdM
QVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIERJQUVSRVNJUycgKFUrMDBGRikKKyAgIlx1MDEwMCIs
IC8vICdMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggTUFDUk9OJyAoVSswMTAwKQorICAiXHUx
MDAwIiwgLy8gJ01ZQU5NQVIgTEVUVEVSIEtBJyAoVSsxMDAwKQorICAiXHVEODM0XHVERDFFIiwg
Ly8gJ01VU0lDQUwgU1lNQk9MIEctQ0xFRicgKFUrMUQxMUUpLCBVVEYtMTYgc3Vycm9nYXRlIHBh
aXJzCisgICJcdUZGRkQiIC8vICdSRVBMQUNFTUVOVCBDSEFSQUNURVInIChVK0ZGRkQpCitdOwor
dmFyIGksIHRtcCwgcGVybXV0ZWRfb3JkZXIgPSBleHBlY3RlZF9vcmRlci5zbGljZSgpOyBwZXJt
dXRlZF9vcmRlci5yZXZlcnNlKCk7Citmb3IgKGkgPSAwOyBpIDwgcGVybXV0ZWRfb3JkZXIubGVu
Z3RoIC0gMjsgaSArPSAyKSB7CisgICAgdG1wID0gcGVybXV0ZWRfb3JkZXJbaV07CisgICAgcGVy
bXV0ZWRfb3JkZXJbaV0gPSBwZXJtdXRlZF9vcmRlcltpICsgMV07CisgICAgcGVybXV0ZWRfb3Jk
ZXJbaSArIDFdID0gdG1wOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5k
b3JQcmVmaXhlcygpOworICAgIGRlYnVnKCJjaGVjayB0aGF0IHRoZSBleHBlY3RlZCBvcmRlciBp
cyB0aGUgY2Fub25pY2FsIEpTIHNvcnQgb3JkZXI6Iik7CisgICAgZXZhbEFuZExvZygic29ydGVk
X29yZGVyID0gZXhwZWN0ZWRfb3JkZXIuc2xpY2UoKTsgc29ydGVkX29yZGVyLnNvcnQoKSIpOwor
ICAgIHNob3VsZEJlVHJ1ZSgiYXJlQXJyYXlzRXF1YWwoc29ydGVkX29yZGVyLCBleHBlY3RlZF9v
cmRlcikiKTsKKyAgICB0ZXN0U3RvcmVzQW5kSW5kZXhlcygpOworfQorCitmdW5jdGlvbiB0ZXN0
U3RvcmVzQW5kSW5kZXhlcygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0U3Rv
cmVzQW5kSW5kZXhlcygpOiIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
ZGVsZXRlRGF0YWJhc2UoJ2xpc3Qtb3JkZXJpbmcnKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24oZSkgeworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2xp
c3Qtb3JkZXJpbmcnKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihlKSB7Cisg
ICAgICAgICAgICBldmFsQW5kTG9nKCJkYiA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAgICAgICAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLnZlcnNpb24iLCAiIik7CisgICAgICAgICAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgICAgICAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgICAgIHRyYW5zID0g
cmVxdWVzdC5yZXN1bHQ7CisKKyAgICAgICAgICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgICAg
ICAgICAgZGVidWcoIk9iamVjdCBzdG9yZXM6Iik7CisgICAgICAgICAgICAgICAgcGVybXV0ZWRf
b3JkZXIuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkgeworICAgICAgICAgICAgICAgICAgICBldmFs
QW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgiICsgSlNPTi5zdHJpbmdpZnkobmFtZSkgKyIp
Iik7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBzaG91bGRCZVRydWUo
ImFyZUFycmF5c0VxdWFsKGRiLm9iamVjdFN0b3JlTmFtZXMsIGV4cGVjdGVkX29yZGVyKSIpOwor
CisgICAgICAgICAgICAgICAgZGVidWcoIiIpOworICAgICAgICAgICAgICAgIGRlYnVnKCJJbmRl
eGVzOiIpOworICAgICAgICAgICAgICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5j
cmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgICAgICAgICAgICAgIHBlcm11dGVkX29y
ZGVyLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgZXZhbEFu
ZExvZygic3RvcmUuY3JlYXRlSW5kZXgoIiArIEpTT04uc3RyaW5naWZ5KG5hbWUpICsiLCAna2V5
UGF0aCcpIik7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBzaG91bGRC
ZVRydWUoImFyZUFycmF5c0VxdWFsKHN0b3JlLmluZGV4TmFtZXMsIGV4cGVjdGVkX29yZGVyKSIp
OworCisgICAgICAgICAgICAgICAgdHJhbnMub25jb21wbGV0ZSA9IGZpbmlzaEpTVGVzdDsKKyAg
ICAgICAgICAgIH07CisgICAgICAgIH07CisgICAgfTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9tdXRhdGluZy1jdXJzb3IuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvbXV0YXRpbmctY3Vyc29yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3ZDYxZjZj
YzQwYjA2NjA4MGFmMTFkZTY1MWYxODMxMTY3ZmEwY2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvbXV0YXRpbmctY3Vyc29yLmpzCkBA
IC0wLDAgKzEsMTMyIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2Ny
aXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBp
bXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgbXV0YXRp
bmcgYW4gSW5kZXhlZERCJ3Mgb2JqZWN0c3RvcmUgZnJvbSBhIGN1cnNvci4iKTsKKwordGVzdCgp
OworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignbXV0YXRpbmctY3Vyc29yJyki
KTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2Vz
cygpCit7CisgICAgdmFyIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignMScpIik7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lv
blN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOworICAgIHNl
bGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAg
ICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVu
ZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSBvcGVuRm9yd2Fy
ZEN1cnNvcjsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICB2YXIgb2Jq
ZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdzdG9yZScpIik7CisgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKDEsIDEpLm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0
b3JlLmFkZCgyLCAyKS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKKyAgICBl
dmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoMywgMykub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrIik7CisgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKDQsIDQpLm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOworfQorCitmdW5jdGlvbiBvcGVuRm9yd2Fy
ZEN1cnNvcigpCit7CisgICAgZGVidWcoIm9wZW5Gb3J3YXJkQ3Vyc29yKCkiKTsKKyAgICBldmFs
QW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUnXSwgSURCVHJhbnNhY3Rpb24u
UkVBRF9XUklURSkiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJh
Y2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IGZvcndhcmRDdXJzb3JDb21wbGV0ZTsKKworICAg
IHNlbGYub2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUn
KSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCki
KTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZvcndhcmRDdXJzb3I7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgc2VsZi5jdXJzb3JTdGVwcyA9
IDA7Cit9CisKK2Z1bmN0aW9uIGZvcndhcmRDdXJzb3IoKQoreworICAgIGRlYnVnKCJmb3J3YXJk
Q3Vyc29yKCkiKTsKKyAgICBzZWxmLmN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisKKyAg
ICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBudWxsKSB7CisgICAgICAgIHNob3VsZEJlKCJj
dXJzb3JTdGVwcyIsICI1Iik7CisKKyAgICAgICAgLy8gTGV0IHRoZSB0cmFuc2FjdGlvbiBmaW5p
c2guCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBkZWJ1ZygrK2N1cnNvclN0ZXBzKTsK
KyAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJjdXJzb3JTdGVwcyIpOworICAgIHNob3VsZEJl
KCJjdXJzb3IudmFsdWUiLCAiY3Vyc29yU3RlcHMiKTsKKworICAgIGlmIChjdXJzb3JTdGVwcyA9
PSAxKSB7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJldmVudC50YXJnZXQuc291cmNl
LmFkZCg1LCA1KSIpOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeyBl
dmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKSIpOyB9CisgICAgICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIH0gZWxzZSB7CisgICAgICAgIGV2YWxB
bmRMb2coImN1cnNvci5jb250aW51ZSgpIik7CisgICAgfQorfQorCitmdW5jdGlvbiBmb3J3YXJk
Q3Vyc29yQ29tcGxldGUoKQoreworICAgIGRlYnVnKCJmb3J3YXJkQ3Vyc29yQ29tcGxldGUoKSIp
OworICAgIG9wZW5SZXZlcnNlQ3Vyc29yKCkKK30KKworZnVuY3Rpb24gb3BlblJldmVyc2VDdXJz
b3IoKQoreworICAgIGRlYnVnKCJvcGVuUmV2ZXJzZUN1cnNvcigpIik7CisgICAgZXZhbEFuZExv
ZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURf
V1JJVEUpIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwor
ICAgIHRyYW5zLm9uY29tcGxldGUgPSByZXZlcnNlQ3Vyc29yQ29tcGxldGU7CisKKyAgICBzZWxm
Lm9iamVjdFN0b3JlID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUub3BlbkN1cnNvcihudWxsLCBJ
REJDdXJzb3IuUFJFVikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHJldmVyc2VDdXJzb3I7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgc2Vs
Zi5jdXJzb3JTdGVwcyA9IDY7Cit9CisKK2Z1bmN0aW9uIHJldmVyc2VDdXJzb3IoKQoreworICAg
IGRlYnVnKCJyZXZlcnNlQ3Vyc29yKCkiKTsKKyAgICBzZWxmLmN1cnNvciA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQ7CisKKyAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBudWxsKSB7CisgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3JTdGVwcyIsICIwIik7CisKKyAgICAgICAgLy8gTGV0IHRoZSB0
cmFuc2FjdGlvbiBmaW5pc2guCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBkZWJ1Zygt
LWN1cnNvclN0ZXBzKTsKKyAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJjdXJzb3JTdGVwcyIp
OworICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAiY3Vyc29yU3RlcHMiKTsKKworICAgIGlm
IChjdXJzb3JTdGVwcyA9PSAyKSB7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJldmVu
dC50YXJnZXQuc291cmNlLmFkZCgwLCAwKSIpOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGZ1bmN0aW9uKCkgeyBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKSIpOyB9CisgICAgICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIH0gZWxzZSB7
CisgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpIik7CisgICAgfQorfQorCitm
dW5jdGlvbiByZXZlcnNlQ3Vyc29yQ29tcGxldGUoKQoreworICAgIGRlYnVnKCJyZXZlcnNlQ3Vy
c29yQ29tcGxldGUoKSIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9vYmplY3RTdG9yZS1yZXF1aXJlZC1hcmd1bWVudHMuanMgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0U3RvcmUtcmVxdWlyZWQtYXJndW1lbnRz
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjdkZjhiNzA1YzgyOWFlZGM2NjlhYjFhYjUyNTYxMmE4NmI2MDk5NjMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvb2JqZWN0U3RvcmUtcmVxdWlyZWQtYXJndW1lbnRzLmpzCkBAIC0wLDAgKzEsNDQgQEAKK2lm
ICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJl
ZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgb2JqZWN0IHN0b3JlIHJl
cXVpcmVkIGFyZ3VtZW50cyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5k
b3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAg
ZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2
YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUFuZFBv
cHVsYXRlT2JqZWN0U3RvcmUoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisK
KyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ2ZvbycpOyIpOworICAgIHNob3VsZFRocm93KCJvYmplY3RTdG9yZS5wdXQoKTsi
KTsKKyAgICBzaG91bGRUaHJvdygib2JqZWN0U3RvcmUuYWRkKCk7Iik7CisgICAgc2hvdWxkVGhy
b3coIm9iamVjdFN0b3JlLmRlbGV0ZSgpOyIpOworICAgIHNob3VsZFRocm93KCJvYmplY3RTdG9y
ZS5nZXQoKTsiKTsKKyAgICBzaG91bGRUaHJvdygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoKTsi
KTsKKyAgICBzaG91bGRUaHJvdygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ2ZvbycpOyIpOwor
ICAgIHNob3VsZFRocm93KCJvYmplY3RTdG9yZS5pbmRleCgpOyIpOworICAgIHNob3VsZFRocm93
KCJvYmplY3RTdG9yZS5kZWxldGVJbmRleCgpOyIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQor
Cit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3JlLWF1dG9pbmNyZW1l
bnQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3Rv
cmUtYXV0b2luY3JlbWVudC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YjFiNDlhMzEzZGNkMTBlMzdmZjZjZDc3
YmVmZWI4YjA0NmM1ZGI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3JlLWF1dG9pbmNyZW1lbnQuanMKQEAgLTAsMCAr
MSwxOTMgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcu
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNj
cmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBJ
REJPYmplY3RTdG9yZSBhdXRvLWluY3JlbWVudCBmZWF0dXJlLiIpOworCitmdW5jdGlvbiB0ZXN0
KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJpbmRleGVkREIub3Blbignb2JqZWN0c3RvcmUtYXV0b2luY3JlbWVudCcpIik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQorewor
ICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOworICAgIHNlbGYuZGIgPSBldmFsQW5kTG9nKCJk
YiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJk
Yi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBz
ZXRWZXJzaW9uU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQoreworICAgIGRlYnVn
KCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOworICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0
cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9
PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwor
ICAgIHRyYW5zLm9uY29tcGxldGUgPSBzZXRWZXJzaW9uQ29tcGxldGVkOworCisgICAgZGVsZXRl
QWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIGRlYnVnKCJjcmVhdGVPYmplY3RTdG9yZSgpOiIp
OworICAgIHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0
b3JlKCdTdG9yZVdpdGhLZXlQYXRoJywge2tleVBhdGg6ICdpZCcsIGF1dG9JbmNyZW1lbnQ6IHRy
dWV9KSIpOworICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdTdG9yZVdpdGhB
dXRvSW5jcmVtZW50Jywge2F1dG9JbmNyZW1lbnQ6IHRydWV9KSIpOworICAgIGV2YWxBbmRMb2co
ImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdQbGFpbk9sZFN0b3JlJywge2F1dG9JbmNyZW1lbnQ6IGZh
bHNlfSkiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnU3RvcmVXaXRo
TG9uZ0tleVBhdGgnLCB7a2V5UGF0aDogJ2EuYi5jLmlkJywgYXV0b0luY3JlbWVudDogdHJ1ZX0p
Iik7CisgICAgdmFyIHN0b3JlTmFtZXMgPSBldmFsQW5kTG9nKCJzdG9yZU5hbWVzID0gZGIub2Jq
ZWN0U3RvcmVOYW1lcyIpOworCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzdG9yZS5uYW1l
IiwgIlN0b3JlV2l0aEtleVBhdGgiKTsKKyAgICBzaG91bGRCZSgic3RvcmUua2V5UGF0aCIsICIn
aWQnIik7CisgICAgc2hvdWxkQmUoInN0b3JlTmFtZXMuY29udGFpbnMoJ1N0b3JlV2l0aEtleVBh
dGgnKSIsICJ0cnVlIik7CisgICAgc2hvdWxkQmUoInN0b3JlTmFtZXMuY29udGFpbnMoJ1N0b3Jl
V2l0aEF1dG9JbmNyZW1lbnQnKSIsICJ0cnVlIik7CisgICAgc2hvdWxkQmUoInN0b3JlTmFtZXMu
Y29udGFpbnMoJ1BsYWluT2xkU3RvcmUnKSIsICJ0cnVlIik7CisgICAgc2hvdWxkQmUoInN0b3Jl
TmFtZXMubGVuZ3RoIiwgIjQiKTsKKworICAgIC8vIExldCB0aGUgc2V0VmVyc2lvbiB0cmFuc2Fj
dGlvbiBjb21wbGV0ZS4KK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbkNvbXBsZXRlZCgpCit7Cisg
ICAgZGVidWcoInNldFZlcnNpb25Db21wbGV0ZWQoKToiKTsKKworICAgIHNlbGYudHJhbnMgPSBl
dmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnU3RvcmVXaXRoS2V5UGF0aCcsICdT
dG9yZVdpdGhBdXRvSW5jcmVtZW50JywgJ1BsYWluT2xkU3RvcmUnXSwgSURCVHJhbnNhY3Rpb24u
UkVBRF9XUklURSkiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJh
Y2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHRlc3RMb25nS2V5UGF0aDsKKworICAgIHNlbGYu
c3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdTdG9yZVdpdGhL
ZXlQYXRoJykiKTsKKworICAgIGRlYnVnKCJJbnNlcnQgaW50byBvYmplY3Qgc3RvcmUgd2l0aCBh
dXRvIGluY3JlbWVudCBhbmQga2V5IHBhdGgsIHdpdGgga2V5IGluIHRoZSBvYmplY3QuIik7Cisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7bmFtZTogJ0plZmZlcnNzb24nLCBu
dW1iZXI6ICc3MDEwJywgaWQ6IDN9KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkSmVm
ZmVyc3NvblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIGFkZEplZmZlcnNzb25TdWNjZXNzKCkKK3sKKyAgICBkZWJ1
ZygiYWRkSmVmZmVyc3NvblN1Y2Nlc3MoKToiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0
LnJlc3VsdCIsICIzIik7CisKKyAgICBkZWJ1ZygiSW5zZXJ0IGludG8gb2JqZWN0IHN0b3JlIHdp
dGggYXV0byBpbmNyZW1lbnQgYW5kIGtleSBwYXRoLCB3aXRob3V0IGtleSBpbiB0aGUgb2JqZWN0
LiIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe25hbWU6ICdMaW5jb2xu
JywgbnVtYmVyOiAnNzAxMid9KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkTGluY29s
bldpdGhJbmplY3RLZXlTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBhZGRMaW5jb2xuV2l0aEluamVjdEtleVN1Y2Nl
c3MoKQoreworICAgIGRlYnVnKCJhZGRMaW5jb2xuV2l0aEluamVjdEtleVN1Y2Nlc3MoKToiKTsK
KyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICI0Iik7CisKKyAgICByZXN1bHQg
PSBldmFsQW5kTG9nKCJzdG9yZS5nZXQoNCkiKTsKKyAgICByZXN1bHQub25zdWNjZXNzID0gZ2V0
TGluY29sbkFmdGVySW5qZWN0ZWRLZXlTdWNjZXNzOworICAgIHJlc3VsdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGdldExpbmNvbG5BZnRlckluamVj
dGVkS2V5U3VjY2VzcygpCit7CisgICAgZGVidWcoImdldExpbmNvbG5BZnRlckluamVjdGVkS2V5
U3VjY2VzcygpOiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJl
c3VsdC5uYW1lIiwgIkxpbmNvbG4iKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50
LnRhcmdldC5yZXN1bHQubnVtYmVyIiwgIjcwMTIiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFy
Z2V0LnJlc3VsdC5pZCIsICI0Iik7CisKKyAgICBzZWxmLnN0b3JlID0gZXZhbEFuZExvZygic3Rv
cmUgPSB0cmFucy5vYmplY3RTdG9yZSgnU3RvcmVXaXRoQXV0b0luY3JlbWVudCcpIik7CisgICAg
ZGVidWcoIkluc2VydCBpbnRvIG9iamVjdCBzdG9yZSB3aXRoIGtleSBnZW4gdXNpbmcgZXhwbGlj
aXQga2V5Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7bmFtZTogJ0xp
bmNvbG4nLCBudW1iZXI6ICc3MDEyJ30sIDUpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBh
ZGRMaW5jb2xuV2l0aEV4cGxpY2l0S2V5U3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gYWRkTGluY29sbldpdGhFeHBs
aWNpdEtleVN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJhZGRMaW5jb2xuV2l0aEV4cGxpY2l0S2V5
U3VjY2VzcygpOiIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIjUiKTsK
KworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5nZXQoNSkiKTsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGdldExpbmNvbG5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBnZXRMaW5jb2xuU3VjY2Vzcygp
Cit7CisgICAgZGVidWcoImdldExpbmNvbG5TdWNjZXNzKCk6Iik7CisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0Lm5hbWUiLCAiTGluY29sbiIpOworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5udW1iZXIiLCAiNzAxMiIp
OworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLnB1dCh7bmFtZTogJ0FicmFoYW0n
LCBudW1iZXI6ICcyMTA3J30pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwdXRBYnJhaGFt
U3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
K30KKworZnVuY3Rpb24gcHV0QWJyYWhhbVN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJwdXRBYnJh
aGFtU3VjY2VzcygpOiIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIjYi
KTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5nZXQoNikiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGdldEFicmFoYW1TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBnZXRBYnJhaGFtU3VjY2Vz
cygpCit7CisgICAgZGVidWcoImdldEFicmFoYW1TdWNjZXNzKCk6Iik7CisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0Lm5hbWUiLCAiQWJyYWhhbSIpOworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5udW1iZXIiLCAiMjEw
NyIpOworCisgICAgc2VsZi5zdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0
U3RvcmUoJ1BsYWluT2xkU3RvcmUnKSIpOworICAgIGRlYnVnKCJUcnkgYWRkaW5nIHdpdGggbm8g
a2V5IHRvIG9iamVjdCBzdG9yZSB3aXRob3V0IGF1dG8gaW5jcmVtZW50LiIpOworICAgIGV2YWxB
bmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmFkZCh7bmFtZTogJ0FkYW0nfSkiLCAiSURCRGF0YWJh
c2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUu
YWRkKHtuYW1lOiAnQWRhbSd9LCAxKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkQWRh
bVN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Cit9CisKK2Z1bmN0aW9uIGFkZEFkYW1TdWNjZXNzKCkKK3sKKyAgICBkZWJ1ZygiYWRkQWRhbVN1
Y2Nlc3MoKToiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICIxIik7Cit9
CisKK2Z1bmN0aW9uIHRlc3RMb25nS2V5UGF0aCgpCit7CisgICAgZGVidWcoInRlc3RMb25nS2V5
UGF0aCgpOiIpOworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlv
bignU3RvcmVXaXRoTG9uZ0tleVBhdGgnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwor
ICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5v
bmNvbXBsZXRlID0gZmluaXNoSlNUZXN0OworCisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9y
ZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdTdG9yZVdpdGhMb25nS2V5UGF0aCcpIik7CisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7Zm9vOiAnYmFyJ30pIik7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInN0b3JlLmFkZCh7Zm9vOiAnYmFyJywgYToge319KSIpOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJzdG9yZS5hZGQoe2ZvbzogJ2JhcicsIGE6IHtiOiB7fX19KSIpOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJzdG9yZS5hZGQoe2ZvbzogJ2JhcicsIGE6IHtiOiB7Yzoge319fX0pIik7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgY3Vyc29yUmVxdWVzdCA9
IGV2YWxBbmRMb2coInN0b3JlLm9wZW5DdXJzb3IoKSIpOworICAgIGN1cnNvclJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIGV2YWxBbmRMb2coImV4cGVjdGVk
ID0gbnVsbCIpOworICAgIGV2YWxBbmRMb2coImNvdW50ID0gMCIpOworICAgIGN1cnNvclJlcXVl
c3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICBjdXJzb3IgPSBjdXJzb3JSZXF1
ZXN0LnJlc3VsdDsKKyAgICAgICAgaWYgKCFjdXJzb3IpIHsKKyAgICAgICAgICAgIHNob3VsZEJl
KCJjb3VudCIsICI0Iik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
aWYgKGV4cGVjdGVkID09PSBudWxsKSB7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJleHBlY3Rl
ZCA9IGN1cnNvci52YWx1ZS5hLmIuYy5pZCArIDEiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuZm9vIiwgIidiYXInIik7CisgICAgICAgICAg
ICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmEuYi5jLmlkIiwgImV4cGVjdGVkIik7CisgICAgICAg
ICAgICBldmFsQW5kTG9nKCJleHBlY3RlZCA9IGN1cnNvci52YWx1ZS5hLmIuYy5pZCArIDEiKTsK
KyAgICAgICAgfQorICAgICAgICBjb3VudCsrOworICAgICAgICBjdXJzb3IuY29udGludWUoKTsK
KyAgICB9OworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3Jl
LWNsZWFyLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVj
dHN0b3JlLWNsZWFyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5NDdjNmM3MjQxZTdhMjQ1OTZkZWZmYmU1YmVi
ZTI0ODZiM2FiNGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3RvcmUtY2xlYXIuanMKQEAgLTAsMCArMSwxMDIgQEAKK2lm
ICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJl
ZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyB3ZWJraXRJREJPYmpl
Y3RTdG9yZS5jbGVhcigpLiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5k
b3JQcmVmaXhlcygpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbign
b2JqZWN0c3RvcmUtY2xlYXInKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc3RhcnRTZXRW
ZXJzaW9uOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBzdGFydFNldFZlcnNpb24oKQoreworICAgIGRiID0gZXZhbEFuZExvZygi
ZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
ZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZGVsZXRlRXhpc3Rpbmc7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKK3sKKyAgICBzZWxmLnRyYW5z
ID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxk
QmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRi
KTsKKworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9y
ZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKKworICAgIHNlbGYuaW5kZXggPSBldmFsQW5kTG9nKCJz
dG9yZS5jcmVhdGVJbmRleCgnaW5kZXhOYW1lJywgJycpIik7CisgICAgc2hvdWxkQmVUcnVlKCJz
dG9yZS5pbmRleE5hbWVzLmNvbnRhaW5zKCdpbmRleE5hbWUnKSIpOworCisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInN0b3JlLmFkZCgndmFsdWUnLCAna2V5JykiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGNyZWF0ZVNlY29uZE9iamVjdFN0b3JlQW5kQWRkVmFsdWU7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNyZWF0
ZVNlY29uZE9iamVjdFN0b3JlQW5kQWRkVmFsdWUoKQoreworICAgIG90aGVyU3RvcmUgPSBldmFs
QW5kTG9nKCJvdGhlclN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ290aGVyU3RvcmVOYW1l
JywgbnVsbCkiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJvdGhlclN0b3JlLmFkZCgn
dmFsdWUnLCAna2V5JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFyT2JqZWN0U3Rv
cmU7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIGNsZWFyT2JqZWN0U3RvcmUoKQoreworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJzdG9yZS5jbGVhcigpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhclN1Y2Nlc3M7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIGNsZWFyU3VjY2VzcygpCit7CisgICAgc2hvdWxkQmVVbmRlZmluZWQoImV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5vcGVuQ3Vy
c29yKCkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5DdXJzb3JTdWNjZXNzOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biBvcGVuQ3Vyc29yU3VjY2VzcygpCit7CisgICAgc2hvdWxkQmVOdWxsKCJldmVudC50YXJnZXQu
cmVzdWx0Iik7CisKKyAgICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuaW5kZXgo
J2luZGV4TmFtZScpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4Lm9wZW5LZXlD
dXJzb3IoKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbktleUN1cnNvclN1Y2Nlc3M7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIG9wZW5LZXlDdXJzb3JTdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygib3BlbktleUN1cnNv
clN1Y2Nlc3MoKToiKTsKKyAgICBzaG91bGRCZU51bGwoImV2ZW50LnRhcmdldC5yZXN1bHQiKTsK
KyAgICB0cmFucy5vbmNvbXBsZXRlID0gc2V0VmVyc2lvbkNvbXBsZXRlOworfQorCitmdW5jdGlv
biBzZXRWZXJzaW9uQ29tcGxldGUoKQoreworICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygi
ZGIudHJhbnNhY3Rpb24oWydvdGhlclN0b3JlTmFtZSddKSIpOworICAgIHRyYW5zYWN0aW9uLm9u
YWJvcnQgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB2YXIgb3RoZXJTdG9yZSA9IGV2
YWxBbmRMb2coIm90aGVyU3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnb3RoZXJTdG9y
ZU5hbWUnKSIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIm90aGVyU3RvcmUuZ2V0KCdr
ZXknKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0U3VjY2VzczsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZ2V0U3Vj
Y2VzcygpCit7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0
IiwgInZhbHVlIik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9vYmplY3RzdG9yZS1jb3VudC5qcyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vYmplY3RzdG9yZS1jb3VudC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
OWRhZTE3NjU2NDE2ODNhNTBkOTZiY2IxNTEwYzI4NWYyMzk1MmY5Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3JlLWNv
dW50LmpzCkBAIC0wLDAgKzEsMTQ0IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAg
aW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMn
KTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRl
c3QgSW5kZXhlZERCJ3MgSURCT2JqZWN0U3RvcmUuY291bnQoKS4iKTsKKworZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCLm9wZW4oJ29iamVjdHN0b3JlLWNvdW50JykiKTsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFy
Z2V0LnJlc3VsdCIpOworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lv
bignbmV3IHZlcnNpb24nKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwcmVwYXJlRGF0YWJh
c2U7CisgICAgfTsKK30KKworZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKCkKK3sKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoInByZXBhcmluZyBkYXRhYmFzZSIpOworICAgIHNlbGYudHJhbnMg
PSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRC
ZVRydWUoInRyYW5zICE9PSBudWxsIik7CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIp
OworCisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdzdG9yZU5hbWUnLCBudWxsKSIpOworCisgICAgZGVidWcoImFkZGluZyAwIC4uLiA5OSIpOwor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAgcmVxdWVzdCA9IHN0
b3JlLmFkZChpLCBpKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7CisgICAgfQorICAgIHRyYW5zLm9uY29tcGxldGUgPSB2ZXJpZnlDb3VudDsKK30K
KworZnVuY3Rpb24gdmVyaWZ5Q291bnQoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygi
dmVyaWZ5aW5nIGNvdW50IHdpdGhvdXQgcmFuZ2UiKTsKKyAgICB0cmFucyA9IGV2YWxBbmRMb2co
InRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURf
T05MWSkiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9IG51bGwiKTsKKyAgICB0cmFucy5v
bmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9
IHZlcmlmeUNvdW50V2l0aFJhbmdlOworCisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9
IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworICAgIHNob3VsZEJlVHJ1ZSgic3Rv
cmUgIT0gbnVsbCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdG9y
ZS5jb3VudCgpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgIHNob3Vs
ZEJlVHJ1ZSgidHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXInIik7CisgICAgICAgICBz
aG91bGRCZSgicmVxdWVzdC5yZXN1bHQiLCAiMTAwIik7CisgICAgICAgICAvLyBsZXQgdGhlIHRy
YW5zYWN0aW9uIGNvbXBsZXRlCisgICAgfTsKK30KKworZnVuY3Rpb24gdmVyaWZ5Q291bnRXaXRo
UmFuZ2UoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidmVyaWZ5aW5nIGNvdW50IHdp
dGggcmFuZ2UiKTsKKyAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rp
b24oJ3N0b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkiKTsKKyAgICBzaG91bGRC
ZVRydWUoInRyYW5zICE9IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFi
b3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHZlcmlmeUNvdW50V2l0aEtleTsK
KworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3Rv
cmVOYW1lJykiKTsKKyAgICBzaG91bGRCZVRydWUoInN0b3JlICE9IG51bGwiKTsKKworICAgIHZh
ciB0ZXN0cyA9IFsKKyAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6
IDk5LCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogMTAwIH0sCisgICAgICAgIHsgbG93ZXI6
IDAsIGxvd2VyT3BlbjogdHJ1ZSwgdXBwZXI6IDk5LCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3Rl
ZDogOTkgfSwKKyAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDk5
LCB1cHBlck9wZW46IHRydWUsIGV4cGVjdGVkOiA5OSB9LAorICAgICAgICB7IGxvd2VyOiAwLCBs
b3dlck9wZW46IHRydWUsIHVwcGVyOiA5OSwgdXBwZXJPcGVuOiB0cnVlLCBleHBlY3RlZDogOTgg
fSwKKyAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDEwMCwgdXBw
ZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDEwMCB9LAorICAgICAgICB7IGxvd2VyOiAwLCBsb3dl
ck9wZW46IGZhbHNlLCB1cHBlcjogMTAwLCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogMTAw
IH0sCisgICAgICAgIHsgbG93ZXI6IDEwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogMTAwLCB1
cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogOTAgfSwKKyAgICAgICAgeyBsb3dlcjogMCwgbG93
ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDAsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiAxIH0s
CisgICAgICAgIHsgbG93ZXI6IDUwMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDUwMCwgdXBw
ZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDAgfQorICAgIF07CisKKyAgICBmdW5jdGlvbiBuZXh0
VGVzdCgpIHsKKyAgICAgICAgZGVidWcoIiIpOworICAgICAgICBldmFsQW5kTG9nKCJ0ZXN0ID0g
IiArIEpTT04uc3RyaW5naWZ5KHRlc3RzLnNoaWZ0KCkpKTsKKyAgICAgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSBzdG9yZS5jb3VudChJREJLZXlSYW5nZS5ib3VuZCh0ZXN0Lmxv
d2VyLCB0ZXN0LnVwcGVyLCB0ZXN0Lmxvd2VyT3BlbiwgdGVzdC51cHBlck9wZW4pKSIpOworICAg
ICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICBzaG91bGRCZVRy
dWUoInR5cGVvZiByZXF1ZXN0LnJlc3VsdCA9PSAnbnVtYmVyJyIpOworICAgICAgICAgICAgIHNo
b3VsZEJlKCJyZXF1ZXN0LnJlc3VsdCIsIFN0cmluZyh0ZXN0LmV4cGVjdGVkKSk7CisKKyAgICAg
ICAgICAgICBpZiAodGVzdHMubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgIG5leHRUZXN0KCk7
CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIC8vIG90aGVyd2lzZSBsZXQgdGhlIHRyYW5z
YWN0aW9uIGNvbXBsZXRlCisgICAgICAgIH07CisgICAgfQorCisgICAgbmV4dFRlc3QoKTsKK30K
KworZnVuY3Rpb24gdmVyaWZ5Q291bnRXaXRoS2V5KCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAg
ZGVidWcoInZlcmlmeWluZyBjb3VudCB3aXRoIGtleSIpOworICAgIHRyYW5zID0gZXZhbEFuZExv
ZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVB
RF9PTkxZKSIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT0gbnVsbCIpOworICAgIHRyYW5z
Lm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRl
ID0gZmluaXNoSlNUZXN0OworCisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5z
Lm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworICAgIHNob3VsZEJlVHJ1ZSgic3RvcmUgIT0g
bnVsbCIpOworCisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuY291bnQoTmFOKSIs
ICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oInN0b3JlLmNvdW50KHt9KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIp
OworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmNvdW50KC9yZWdleC8pIiwgIklE
QkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICB2YXIgdGVzdHMgPSBbCisgICAg
ICAgIHsga2V5OiAwLCBleHBlY3RlZDogMSB9LAorICAgICAgICB7IGtleTogMTAwLCBleHBlY3Rl
ZDogMCB9LAorICAgICAgICB7IGtleTogbnVsbCwgZXhwZWN0ZWQ6IDEwMCB9CisgICAgXTsKKwor
ICAgIGZ1bmN0aW9uIG5leHRUZXN0KCkgeworICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgIGV2
YWxBbmRMb2coInRlc3QgPSAiICsgSlNPTi5zdHJpbmdpZnkodGVzdHMuc2hpZnQoKSkpOworICAg
ICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHN0b3JlLmNvdW50KHRlc3Qua2V5
KSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHNo
b3VsZEJlVHJ1ZSgidHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXInIik7CisgICAgICAg
ICAgICBzaG91bGRCZSgicmVxdWVzdC5yZXN1bHQiLCBTdHJpbmcodGVzdC5leHBlY3RlZCkpOwor
ICAgICAgICAgICAgIGlmICh0ZXN0cy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgbmV4dFRl
c3QoKTsKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIGxldCB0aGUg
dHJhbnNhY3Rpb24gY29tcGxldGUKKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBuZXh0VGVzdCgp
OworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3JlLWN1cnNv
ci5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vYmplY3RzdG9y
ZS1jdXJzb3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTJjMDJhYzYxYTYzNGZhM2NjZmU0YWQyNGUwNDFhOTg3
NDZhYjI4YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9vYmplY3RzdG9yZS1jdXJzb3IuanMKQEAgLTAsMCArMSwyMjYgQEAKK2lmICh0
aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5q
cycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBvYmplY3RTdG9yZS5vcGVu
Q3Vyc29yICsgdGhlIGN1cnNvciBpdCBwcm9kdWNlcyBpbiBkZXB0aC4iKTsKKworLy8gSW4gb3Jk
ZXIgb2YgaG93IGl0IHNob3VsZCBiZSBzb3J0ZWQgYnkgSW5kZXhlZERCLgorc2VsZi50ZXN0RGF0
YSA9IFsKKyAgICAyLjcxODI4MTgyODQ1OSwKKyAgICAzLAorICAgIDMuMTQxNTkyNjUsCisgICAg
MTAsCisgICAgLy8gRklYTUU6IERhdGVzLgorICAgICJBIGJpZ2dlciBzdHJpbmciLAorICAgICJU
aGUgYmlnZ2VzdCIsCisgICAgImEgbG93IHN0cmluZyIKK107CisKK2Z1bmN0aW9uIG9wZW5EYXRh
YmFzZSgpCit7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdvYmpl
Y3RzdG9yZS1jdXJzb3InKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvbjsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gc2V0VmVyc2lvbigpCit7CisgICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZl
cnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4
aXN0aW5nOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBkZWxldGVFeGlzdGluZygpCit7CisgICAgc2VsZi50cmFucyA9IGV2YWxB
bmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgi
dHJhbnMgIT09IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2Fs
bGJhY2s7CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgc2VsZi5vYmpl
Y3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzb21lT2JqZWN0U3Rv
cmUnKSIpOworICAgIHNlbGYubmV4dFRvQWRkID0gMDsKKyAgICBhZGREYXRhKCk7Cit9CisKK2Z1
bmN0aW9uIGFkZERhdGEoKQoreworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9y
ZS5hZGQoJycsIHRlc3REYXRhW25leHRUb0FkZF0pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSArK3NlbGYubmV4dFRvQWRkIDwgdGVzdERhdGEubGVuZ3RoID8gYWRkRGF0YSA6IHNjaGVkdWxl
VGVzdHM7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIHNjaGVkdWxlVGVzdHMoKQoreworICAgIGRlYnVnKCJTY2hlZHVsaW5nIHRl
c3RzLi4uIik7CisgICAgc2VsZi5zY2hlZHVsZWRUZXN0cyA9IFtdOworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgdGVzdERhdGEubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgLyogbGVmdCBib3VuZCwg
aXMgb3BlbiwgcmlnaHQgYm91bmQsIGlzIG9wZW4sIGFzY2VuZGluZyAqLworICAgICAgICBzY2hl
ZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCB0cnVlLCBudWxsLCBudWxsLCB0cnVlXSk7CisgICAgICAg
IHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBudWxsLCBudWxsLCB0cnVlXSk7Cisg
ICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW251bGwsIG51bGwsIGksIHRydWUsIHRydWVd
KTsKKyAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbbnVsbCwgbnVsbCwgaSwgZmFsc2Us
IHRydWVdKTsKKyAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwgbnVsbCwg
bnVsbCwgZmFsc2VdKTsKKyAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgZmFsc2Us
IG51bGwsIG51bGwsIGZhbHNlXSk7CisgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW251
bGwsIG51bGwsIGksIHRydWUsIGZhbHNlXSk7CisgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hp
ZnQoW251bGwsIG51bGwsIGksIGZhbHNlLCBmYWxzZV0pOworICAgICAgICBmb3IgKHZhciBqID0g
NjsgaiA8IHRlc3REYXRhLmxlbmd0aDsgKytqKSB7CisgICAgICAgICAgICBzY2hlZHVsZWRUZXN0
cy51bnNoaWZ0KFtpLCB0cnVlLCBqLCB0cnVlLCB0cnVlXSk7CisgICAgICAgICAgICBzY2hlZHVs
ZWRUZXN0cy51bnNoaWZ0KFtpLCB0cnVlLCBqLCBmYWxzZSwgdHJ1ZV0pOworICAgICAgICAgICAg
c2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgZmFsc2UsIGosIHRydWUsIHRydWVdKTsKKyAgICAg
ICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBqLCBmYWxzZSwgdHJ1ZV0p
OworICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwgaiwgdHJ1ZSwg
ZmFsc2VdKTsKKyAgICAgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIHRydWUsIGos
IGZhbHNlLCBmYWxzZV0pOworICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwg
ZmFsc2UsIGosIHRydWUsIGZhbHNlXSk7CisgICAgICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNo
aWZ0KFtpLCBmYWxzZSwgaiwgZmFsc2UsIGZhbHNlXSk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBkZWJ1ZygiUnVubmluZyB0ZXN0cy4uLiIpOworICAgIHJ1bk5leHRUZXN0KCk7Cit9CisKK2Z1
bmN0aW9uIHJ1bk5leHRUZXN0KCkKK3sKKyAgICBpZiAoIXNjaGVkdWxlZFRlc3RzLmxlbmd0aCkg
eworICAgICAgICB0ZXN0TnVsbEtleVJhbmdlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICB2YXIgdGVzdCA9IHNjaGVkdWxlZFRlc3RzLnBvcCgpOworICAgIHNlbGYubG93ZXIgPSB0
ZXN0WzBdOworICAgIHNlbGYubG93ZXJJc09wZW4gPSB0ZXN0WzFdOworICAgIHNlbGYudXBwZXIg
PSB0ZXN0WzJdOworICAgIHNlbGYudXBwZXJJc09wZW4gPSB0ZXN0WzNdOworICAgIHNlbGYuYXNj
ZW5kaW5nID0gdGVzdFs0XTsKKworICAgIHN0ciA9ICJOZXh0IHRlc3Q6ICI7CisgICAgaWYgKGxv
d2VyICE9PSBudWxsKSB7CisgICAgICAgIHN0ciArPSAibG93ZXIgIjsKKyAgICAgICAgaWYgKGxv
d2VySXNPcGVuKQorICAgICAgICAgICAgc3RyICs9ICJvcGVuICI7CisgICAgICAgIHN0ciArPSAi
Ym91bmQgaXMgIiArIGxvd2VyICsgIjsgIjsKKyAgICB9CisgICAgaWYgKHVwcGVyICE9PSBudWxs
KSB7CisgICAgICAgIHN0ciArPSAidXBwZXIgIjsKKyAgICAgICAgaWYgKHVwcGVySXNPcGVuKQor
ICAgICAgICAgICAgc3RyICs9ICJvcGVuICI7CisgICAgICAgIHN0ciArPSAiYm91bmQgaXMgIiAr
IHVwcGVyICsgIjsgIjsKKyAgICB9CisgICAgaWYgKGFzY2VuZGluZykKKyAgICAgICAgc3RyICs9
ICJzb3J0ZWQgYXNjZW5kaW5nLiI7CisgICAgZWxzZQorICAgICAgICBzdHIgKz0gInNvcnRlZCBk
ZXNjZW5kaW5nLiI7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoc3RyKTsKKworICAgIGlm
IChhc2NlbmRpbmcpIHsKKyAgICAgICAgaWYgKGxvd2VyICE9PSBudWxsKSB7CisgICAgICAgICAg
ICBpZiAoIWxvd2VySXNPcGVuKQorICAgICAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9
IGxvd2VyOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWRJ
bmRleCA9IGxvd2VyKzE7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgc2VsZi5leHBlY3Rl
ZEluZGV4ID0gMDsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAodXBwZXIgIT09IG51bGwpIHsK
KyAgICAgICAgICAgIGlmICghdXBwZXJJc09wZW4pCisgICAgICAgICAgICAgICAgc2VsZi5leHBl
Y3RlZEluZGV4ID0gdXBwZXI7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc2Vs
Zi5leHBlY3RlZEluZGV4ID0gdXBwZXItMTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBz
ZWxmLmV4cGVjdGVkSW5kZXggPSB0ZXN0RGF0YS5sZW5ndGgtMTsKKyAgICB9CisgICAgdGVzdFdp
dGhpbkJvdW5kcygpOworCisgICAgaWYgKHRlc3REYXRhW2xvd2VyXSA9PT0gdGVzdERhdGFbdXBw
ZXJdICYmIChsb3dlcklzT3BlbiB8fCB1cHBlcklzT3BlbikpIHsKKyAgICAgICAgZGVidWcoIlNr
aXBwaW5nIGlsbGVnYWwga2V5IHJhbmdlLiIpOworICAgICAgICBydW5OZXh0VGVzdCgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgdmFyIGtleVJhbmdlOworICAgIGlmIChsb3dlciAh
PT0gbnVsbCAmJiB1cHBlciAhPT0gbnVsbCkKKyAgICAgICAga2V5UmFuZ2UgPSBJREJLZXlSYW5n
ZS5ib3VuZCh0ZXN0RGF0YVtsb3dlcl0sIHRlc3REYXRhW3VwcGVyXSwgbG93ZXJJc09wZW4sIHVw
cGVySXNPcGVuKTsKKyAgICBlbHNlIGlmIChsb3dlciAhPT0gbnVsbCkKKyAgICAgICAga2V5UmFu
Z2UgPSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKHRlc3REYXRhW2xvd2VyXSwgbG93ZXJJc09wZW4p
OworICAgIGVsc2UKKyAgICAgICAga2V5UmFuZ2UgPSBJREJLZXlSYW5nZS51cHBlckJvdW5kKHRl
c3REYXRhW3VwcGVyXSwgdXBwZXJJc09wZW4pOworCisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RT
dG9yZS5vcGVuQ3Vyc29yKGtleVJhbmdlLCBhc2NlbmRpbmcgPyBJREJDdXJzb3IuTkVYVCA6IElE
QkN1cnNvci5QUkVWKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvckl0ZXJhdGlvbjsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gdGVzdFdpdGhpbkJvdW5kcygpCit7CisgICAgaWYgKGV4cGVjdGVkSW5kZXggPCAwIHx8
IHRlc3REYXRhLmxlbmd0aCA8PSBleHBlY3RlZEluZGV4KQorICAgICAgICBzZWxmLmV4cGVjdGVk
SW5kZXggPSBudWxsOworICAgIGlmIChsb3dlciAhPT0gbnVsbCAmJiBleHBlY3RlZEluZGV4IDwg
bG93ZXIpCisgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IG51bGw7CisgICAgaWYgKHVwcGVy
ICE9PSBudWxsICYmIHVwcGVyIDwgZXhwZWN0ZWRJbmRleCkKKyAgICAgICAgc2VsZi5leHBlY3Rl
ZEluZGV4ID0gbnVsbDsKKyAgICBpZiAobG93ZXIgIT09IG51bGwgJiYgbG93ZXJJc09wZW4gJiYg
ZXhwZWN0ZWRJbmRleCA8PSBsb3dlcikKKyAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gbnVs
bDsKKyAgICBpZiAodXBwZXIgIT09IG51bGwgJiYgdXBwZXJJc09wZW4gJiYgdXBwZXIgPD0gZXhw
ZWN0ZWRJbmRleCkKKyAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gbnVsbDsKK30KKworZnVu
Y3Rpb24gY3Vyc29ySXRlcmF0aW9uKCkKK3sKKyAgICBpZiAoZXhwZWN0ZWRJbmRleCA9PT0gbnVs
bCkgeworICAgICAgICBzaG91bGRCZU51bGwoImV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICAg
ICAgcnVuTmV4dFRlc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoZXZlbnQu
dGFyZ2V0LnJlc3VsdCA9PT0gbnVsbCkgeworICAgICAgICB0ZXN0RmFpbGVkKCJldmVudC50YXJn
ZXQucmVzdWx0IHNob3VsZCBub3QgYmUgbnVsbC4iKTsKKyAgICAgICAgcnVuTmV4dFRlc3QoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVz
dWx0LmtleSIsICJ0ZXN0RGF0YVsiICsgZXhwZWN0ZWRJbmRleCArICJdIik7CisgICAgc2VsZi5l
eHBlY3RlZEluZGV4ID0gYXNjZW5kaW5nID8gZXhwZWN0ZWRJbmRleCsxIDogZXhwZWN0ZWRJbmRl
eC0xOworICAgIHRlc3RXaXRoaW5Cb3VuZHMoKTsKKworICAgIGV2ZW50LnRhcmdldC5yZXN1bHQu
Y29udGludWUoKTsKK30KKworc2VsZi5udWxsS2V5UmFuZ2VTdGVwID0gMDsKK2Z1bmN0aW9uIHRl
c3ROdWxsS2V5UmFuZ2UoKQoreworICAgIHNlbGYubG93ZXIgPSAwOworICAgIHNlbGYubG93ZXJJ
c09wZW4gPSBmYWxzZTsKKyAgICBzZWxmLnVwcGVyID0gdGVzdERhdGEubGVuZ3RoLTE7CisgICAg
c2VsZi51cHBlcklzT3BlbiA9IGZhbHNlOworCisgICAgc3RyID0gIk5leHQgdGVzdDogbnVsbCBr
ZXkgcGF0aCAiOworICAgIGlmIChzZWxmLm51bGxLZXlSYW5nZVN0ZXAgPT0gMCkgeworICAgICAg
ICBzdHIgKz0gInNvcnRlZCBhc2NlbmRpbmcuIjsKKyAgICAgICAgc2VsZi5hc2NlbmRpbmcgPSB0
cnVlOworICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSBsb3dlcjsKKyAgICAgICAgc2VsZi5u
dWxsS2V5UmFuZ2VTdGVwID0gMTsKKyAgICB9IGVsc2UgaWYgKHNlbGYubnVsbEtleVJhbmdlU3Rl
cCA9PSAxKSB7CisgICAgICAgIHN0ciArPSAic29ydGVkIGRlc2NlbmRpbmcuIjsKKyAgICAgICAg
c2VsZi5hc2NlbmRpbmcgPSBmYWxzZTsKKyAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gdXBw
ZXI7CisgICAgICAgIHNlbGYubnVsbEtleVJhbmdlU3RlcCA9IDI7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoc3RyKTsKKworICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
b3BlbkN1cnNvcihudWxsLCBhc2NlbmRpbmcgPyBJREJDdXJzb3IuTkVYVCA6IElEQkN1cnNvci5Q
UkVWKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvckl0ZXJhdGlvbjsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworcmVtb3ZlVmVuZG9y
UHJlZml4ZXMoKTsKK29wZW5EYXRhYmFzZSgpOyAvLyBUaGUgZmlyc3Qgc3RlcC4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vYmplY3RzdG9yZS1y
ZW1vdmVvYmplY3RzdG9yZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9vYmplY3RzdG9yZS1yZW1vdmVvYmplY3RzdG9yZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Mzk4NDc1
MDE2YmQxMTVhOWYzZWYyMzBhMGNiYjgzY2MyZDIwYzFkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3JlLXJlbW92ZW9i
amVjdHN0b3JlLmpzCkBAIC0wLDAgKzEsOTcgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsK
KyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlv
bigiVGVzdCBJbmRleGVkREIncyB3ZWJraXRJREJPYmplY3RTdG9yZS5kZWxldGVPYmplY3RTdG9y
ZSgpLiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygp
OworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbignb2JqZWN0c3RvcmUt
cmVtb3Zlb2JqZWN0c3RvcmUnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc3RhcnRTZXRW
ZXJzaW9uOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBzdGFydFNldFZlcnNpb24oKQoreworICAgIGRiID0gZXZhbEFuZExvZygi
ZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
ZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZGVsZXRlRXhpc3Rpbmc7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKK3sKKyAgICBzZWxmLnRyYW5z
ID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxk
QmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRi
KTsKKworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9y
ZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKKworICAgIHNlbGYuaW5kZXggPSBldmFsQW5kTG9nKCJz
dG9yZS5jcmVhdGVJbmRleCgnaW5kZXhOYW1lJywgJycpIik7CisgICAgc2hvdWxkQmVUcnVlKCJz
dG9yZS5pbmRleE5hbWVzLmNvbnRhaW5zKCdpbmRleE5hbWUnKSIpOworCisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInN0b3JlLmFkZCgndmFsdWUnLCAna2V5JykiKTsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0g
Z2V0VmFsdWU7Cit9CisKK2Z1bmN0aW9uIGdldFZhbHVlKCkKK3sKKyAgICB0cmFuc2FjdGlvbiA9
IGV2YWxBbmRMb2coImRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10pIik7CisgICAgdHJhbnNh
Y3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHZhciBzdG9yZSA9
IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScp
Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuZ2V0KCdrZXknKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gYWRkSW5kZXg7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGFkZEluZGV4KCkKK3sKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAidmFsdWUiKTsKKwor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVPYmplY3RTdG9yZTsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVsZXRl
T2JqZWN0U3RvcmUoKQoreworICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7
CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworCisgICAgZXZh
bEFuZExvZygiZGIuZGVsZXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgY3JlYXRl
T2JqZWN0U3RvcmVBZ2FpbigpOworfQorCitmdW5jdGlvbiBjcmVhdGVPYmplY3RTdG9yZUFnYWlu
KCkKK3sKKyAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywg
bnVsbCkiKTsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gZ2V0VmFsdWVBZ2FpbjsKK30KKworZnVu
Y3Rpb24gZ2V0VmFsdWVBZ2FpbigpCit7CisgICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJk
Yi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddKSIpOworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQg
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJz
dG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworCisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmdldCgna2V5JykiKTsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IHZlcmlmeU5vdEZvdW5kOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiB2ZXJpZnlOb3RGb3VuZCgpCit7CisgICAgc2hv
dWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAidW5kZWZpbmVkIik7CisgICAgc2hvdWxkQmVG
YWxzZSgiZXZlbnQudGFyZ2V0LnNvdXJjZS5pbmRleE5hbWVzLmNvbnRhaW5zKCdpbmRleE5hbWUn
KSIpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvb2RkLXN0cmluZ3MuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvb2RkLXN0cmluZ3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDMxYzUwZWZmYmJmYWUyYjY0N2M2
ZTQxN2UyMzk1YWRkMjQ5ZTI0OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vZGQtc3RyaW5ncy5qcwpAQCAtMCwwICsxLDEwMSBAQAor
aWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hh
cmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBvZGQgdmFsdWUgZGF0
YXR5cGVzIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVz
KCk7CisKKyAgICB0ZXN0RGF0YSA9IFt7IGRlc2NyaXB0aW9uOiAnbnVsbCcsICAgICAgICAgICAg
ICAgbmFtZTogJ1x1MDAwMCcgfSwKKyAgICAgICAgICAgICAgICB7IGRlc2NyaXB0aW9uOiAnZmFp
aHUnLCAgICAgICAgICAgICAgbmFtZTogJ1x1ZDgwMFx1ZGY0NicgfSwKKyAgICAgICAgICAgICAg
ICB7IGRlc2NyaXB0aW9uOiAndW5wYWlyZWQgc3Vycm9nYXRlJywgbmFtZTogJ1x1ZDgwMCcgfSwK
KyAgICAgICAgICAgICAgICB7IGRlc2NyaXB0aW9uOiAnZmZmZScsICAgICAgICAgICAgICAgbmFt
ZTogJ1x1ZmZmZScgfSwKKyAgICAgICAgICAgICAgICB7IGRlc2NyaXB0aW9uOiAnZmZmZicsICAg
ICAgICAgICAgICAgbmFtZTogJ1x1ZmZmZicgfSwKKyAgICAgICAgICAgICAgICB7IGRlc2NyaXB0
aW9uOiAnbGluZSBzZXBhcmF0b3InLCAgICAgbmFtZTogJ1x1MjAyOCcgfQorICAgIF07CisgICAg
bmV4dFRvT3BlbiA9IDA7CisgICAgb3Blbk5leHREYXRhYmFzZSgpOworfQorCitmdW5jdGlvbiBv
cGVuTmV4dERhdGFiYXNlKCkKK3sKKyAgICBkZWJ1Zygib3BlbmluZyBhIGRhdGFiYXNlIG5hbWVk
ICIgKyB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5kZXNjcmlwdGlvbik7CisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKHRlc3REYXRhW25leHRUb09wZW5dLm5hbWUsIHRlc3RE
YXRhW25leHRUb09wZW5dLmRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nl
c3M7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2co
ImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBh
ZGRBS2V5OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBhZGRBS2V5KCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIp
OworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKHRlc3REYXRhW25leHRUb09wZW5dLm5hbWUpOyIpOworICAgIGtleSA9IGV2
YWxBbmRMb2coImtleSA9IHRlc3REYXRhW25leHRUb09wZW5dLm5hbWUiKTsKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChrZXksIGtleSk7Iik7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbG9zZURhdGFiYXNlOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbG9zZURhdGFiYXNl
KCkKK3sKKyAgICBldmFsQW5kTG9nKCJkYi5jbG9zZSgpIik7CisgICAgZGVidWcoIiIpOworICAg
IGlmICgrK25leHRUb09wZW4gPCB0ZXN0RGF0YS5sZW5ndGgpIHsKKyAgICAgICAgb3Blbk5leHRE
YXRhYmFzZSgpOworICAgIH0gZWxzZSB7CisgICAgICAgIG5leHRUb09wZW4gPSAwOworICAgICAg
ICB2ZXJpZnlOZXh0RGF0YWJhc2UoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHZlcmlmeU5leHRE
YXRhYmFzZSgpCit7CisgICAgZGVidWcoInJlb3BlbmluZyBhIGRhdGFiYXNlIG5hbWVkICIgKyB0
ZXN0RGF0YVtuZXh0VG9PcGVuXS5kZXNjcmlwdGlvbik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImluZGV4ZWREQi5vcGVuKHRlc3REYXRhW25leHRUb09wZW5dLm5hbWUsIHRlc3REYXRhW25l
eHRUb09wZW5dLmRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3MyOwor
fQorCitmdW5jdGlvbiBvcGVuU3VjY2VzczIoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVl
c3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldEFLZXk7Cit9CisK
K2Z1bmN0aW9uIGdldEFLZXkoKQoreworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBl
dmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKHRlc3REYXRhW25leHRUb09wZW5dLm5hbWUpOyIp
OworICAgIGtleSA9IGV2YWxBbmRMb2coImtleSA9IHRlc3REYXRhW25leHRUb09wZW5dLm5hbWUi
KTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5D
dXJzb3IoKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5DdXJzb3JTdWNjZXNzOworfQorCitmdW5j
dGlvbiBvcGVuQ3Vyc29yU3VjY2VzcygpCit7CisgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vy
c29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIs
ICJ0ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1lIik7CisgICAgc2hvdWxkQmUoImN1cnNvci52YWx1
ZSIsICJ0ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1lIik7CisgICAgaWYgKCsrbmV4dFRvT3BlbiA8
IHRlc3REYXRhLmxlbmd0aCkgeworICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgIHZlcmlmeU5l
eHREYXRhYmFzZSgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
IH0KK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuLWNsb3NlLXZlcnNp
b24uanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Blbi1jbG9z
ZS12ZXJzaW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyM2UxZDhiOTI5NTJmODJmODVkNTlkYTJhMzI1ZTAx
YTExMTMzM2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvb3Blbi1jbG9zZS12ZXJzaW9uLmpzCkBAIC0wLDAgKzEsMjgzIEBACitpZiAo
dGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQu
anMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgaW50ZXJsZWF2ZWQgb3Blbi9jbG9zZS9zZXRW
ZXJzaW9uIGNhbGxzIGluIHZhcmlvdXMgcGVybXV0YXRpb25zIik7CisKK2Z1bmN0aW9uIENvbm5l
Y3Rpb24oaWQpIHsKKyAgICBpZCA9IFN0cmluZyhpZCk7CisgICAgdmFyIHRoYXQgPSB0aGlzOwor
ICAgIHRoaXMub3BlbiA9IGZ1bmN0aW9uKG9wdHMpIHsKKyAgICAgICAgc2VsZi5zdGVwcy5wdXNo
KGV2YWxBbmRMb2coIiciICsgaWQgKyAiLm9wZW4nIikpOworICAgICAgICB2YXIgcmVxID0gaW5k
ZXhlZERCLm9wZW4oc2VsZi5kYm5hbWUpOworICAgICAgICByZXEub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsK
KyAgICAgICAgICAgIHRoYXQuaGFuZGxlID0gZS50YXJnZXQucmVzdWx0OworICAgICAgICAgICAg
c2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLm9wZW4ub25zdWNjZXNzJyIp
KTsKKyAgICAgICAgICAgIHRoYXQuaGFuZGxlLm9udmVyc2lvbmNoYW5nZSA9IGZ1bmN0aW9uKGUp
IHsKKyAgICAgICAgICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCAr
ICIub252ZXJzaW9uY2hhbmdlJyIpKTsKKyAgICAgICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRz
Lm9udmVyc2lvbikgeyBvcHRzLm9udmVyc2lvbi5jYWxsKHRoYXQpOyB9CisgICAgICAgICAgICB9
OworICAgICAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5vbnN1Y2Nlc3MpIHsgb3B0cy5vbnN1Y2Nl
c3MuY2FsbCh0aGF0KTsgfQorICAgICAgICB9OworICAgIH07CisKKyAgICB0aGlzLmNsb3NlID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlk
ICsgIi5jbG9zZSciKSk7CisgICAgICAgIHRoaXMuaGFuZGxlLmNsb3NlKCk7CisgICAgfTsKKwor
ICAgIHRoaXMuc2V0VmVyc2lvbiA9IGZ1bmN0aW9uKG9wdHMpIHsKKyAgICAgICAgc2VsZi5zdGVw
cy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLnNldFZlcnNpb24nIikpOworICAgICAgICB2
YXIgcmVxID0gdGhpcy5oYW5kbGUuc2V0VmVyc2lvbihTdHJpbmcoc2VsZi52ZXIrKykpOworICAg
ICAgICByZXEub25hYm9ydCA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgICAgICBzZWxmLnN0ZXBz
LnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIuc2V0VmVyc2lvbi5vbmFib3J0JyIpKTsKKyAg
ICAgICAgICAgIGlmIChvcHRzICYmIG9wdHMub25hYm9ydCkgeyBvcHRzLm9uYWJvcnQuY2FsbCh0
aGF0KTsgfQorICAgICAgICB9OworICAgICAgICByZXEub25ibG9ja2VkID0gZnVuY3Rpb24gKGUp
IHsKKyAgICAgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5z
ZXRWZXJzaW9uLm9uYmxvY2tlZCciKSk7CisgICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9u
YmxvY2tlZCkgeyBvcHRzLm9uYmxvY2tlZC5jYWxsKHRoYXQpOyB9CisgICAgICAgIH07CisgICAg
ICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZSkgeworICAgICAgICAgICAgc2VsZi5zdGVw
cy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLnNldFZlcnNpb24ub25zdWNjZXNzJyIpKTsK
KyAgICAgICAgICAgIGlmICh0aGF0LmhhbmRsZS5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCJ0
ZXN0LXN0b3JlIiArIHNlbGYudmVyKSkgeworICAgICAgICAgICAgICAgIHRoYXQuaGFuZGxlLmRl
bGV0ZU9iamVjdFN0b3JlKCJ0ZXN0LXN0b3JlIiArIHNlbGYudmVyKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHZhciBzdG9yZSA9IHRoYXQuaGFuZGxlLmNyZWF0ZU9iamVjdFN0b3JlKCJ0
ZXN0LXN0b3JlIiArIHNlbGYudmVyKTsKKyAgICAgICAgICAgIHZhciBjb3VudCA9IDA7CisgICAg
ICAgICAgICBkb19hc3luY19wdXRzKCk7IC8vIEtlZXAgdGhpcyB0cmFuc2FjdGlvbiBydW5uaW5n
IGZvciBhIHdoaWxlCisgICAgICAgICAgICBmdW5jdGlvbiBkb19hc3luY19wdXRzKCkgeworICAg
ICAgICAgICAgICAgIHZhciByZXEgPSBzdG9yZS5wdXQoY291bnQsIGNvdW50KTsKKyAgICAgICAg
ICAgICAgICByZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICAg
ICAgICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZSkgeworICAgICAgICAgICAgICAgICAg
ICBpZiAoKytjb3VudCA8IDEwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBkb19hc3luY19w
dXRzKCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIuc2V0VmVyc2lvbi50
cmFuc2FjdGlvbi1jb21wbGV0ZSciKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0
cyAmJiBvcHRzLm9uc3VjY2VzcykgeyBvcHRzLm9uc3VjY2Vzcy5jYWxsKHRoYXQpOyB9CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgfQorICAg
ICAgICB9OworICAgICAgICByZXEub25lcnJvciA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgICAg
ICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIuc2V0VmVyc2lvbi5vbmVy
cm9yJyIpKTsKKyAgICAgICAgICAgIGlmIChvcHRzICYmIG9wdHMub25lcnJvcikgeyBvcHRzLm9u
ZXJyb3IuY2FsbCh0aGF0KTsgfQorICAgICAgICB9OworICAgIH07Cit9CisKKy8vIHJ1biBhIHNl
cmllcyBvZiBzdGVwcyB0aGF0IHRha2UgYSBjb250aW51YXRpb24gZnVuY3Rpb24KK2Z1bmN0aW9u
IHJ1blN0ZXBzKGNvbW1hbmRzKSB7CisgICAgaWYgKGNvbW1hbmRzLmxlbmd0aCkgeworICAgICAg
ICB2YXIgY29tbWFuZCA9IGNvbW1hbmRzLnNoaWZ0KCk7CisgICAgICAgIGNvbW1hbmQoZnVuY3Rp
b24oKSB7IHJ1blN0ZXBzKGNvbW1hbmRzKTsgfSk7CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0
KCkgeworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgdGVzdDEoKTsKK30KKworZnVu
Y3Rpb24gdGVzdDEoKSB7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJURVNUOiBzZXRWZXJz
aW9uIGJsb2NrZWQgb24gb3BlbiBoYW5kbGVzIik7CisgICAgZXZhbEFuZExvZygic2VsZi5kYm5h
bWUgPSAndGVzdDEnOyBzZWxmLnZlciA9IDE7IHNlbGYuc3RlcHMgPSBbXSIpOworICAgIHZhciBo
MSA9IG5ldyBDb25uZWN0aW9uKCJoMSIpOworICAgIHZhciBoMiA9IG5ldyBDb25uZWN0aW9uKCJo
MiIpOworICAgIHJ1blN0ZXBzKFtmdW5jdGlvbihkb05leHQpIHsgaDEub3Blbih7b25zdWNjZXNz
OiBkb05leHR9KTsgfSwKKyAgICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBoMi5vcGVuKHtvbnN1
Y2Nlc3M6IGRvTmV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb252ZXJzaW9u
OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVn
KCIgICAgaDIgY2xvc2luZywgYnV0IG5vdCBpbW1lZGlhdGVseSIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgaDIuY2xvc2UoKTsg
fSwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19KTsgfSwKKyAgICAgICAg
IGZ1bmN0aW9uKGRvTmV4dCkgeyBoMS5zZXRWZXJzaW9uKHtvbnN1Y2Nlc3M6IGZpbmlzaFRlc3R9
KTsgfSwKKyAgICAgICAgIF0pOworICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygic2VsZi5zdGVwcy50b1N0cmluZygpIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFsiaDEub3BlbiIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImgxLm9wZW4ub25zdWNjZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiaDIub3BlbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLm9wZW4u
b25zdWNjZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lv
biIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLm9udmVyc2lvbmNoYW5nZSIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24ub25ibG9ja2Vk
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIuY2xvc2UiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLm9uc3VjY2VzcyIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24udHJhbnNhY3Rpb24tY29tcGxl
dGUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS50b1N0cmluZygpKTsKKyAgICAg
ICAgdGVzdDIoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3QyKCkgeworICAgIGRlYnVnKCIi
KTsKKyAgICBkZWJ1ZygiVEVTVDogc2V0VmVyc2lvbiBub3QgYmxvY2tlZCBpZiBoYW5kbGUgY2xv
c2VkIGltbWVkaWF0ZWx5Iik7CisgICAgZXZhbEFuZExvZygic2VsZi5kYm5hbWUgPSAndGVzdDIn
OyBzZWxmLnZlciA9IDE7IHNlbGYuc3RlcHMgPSBbXSIpOworICAgIHZhciBoMSA9IG5ldyBDb25u
ZWN0aW9uKCJoMSIpOworICAgIHZhciBoMiA9IG5ldyBDb25uZWN0aW9uKCJoMiIpOworICAgIHJ1
blN0ZXBzKFtmdW5jdGlvbihkb05leHQpIHsgaDEub3Blbih7b25zdWNjZXNzOiBkb05leHR9KTsg
fSwKKyAgICAgICAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGgyLm9wZW4oe29uc3VjY2Vzczog
ZG9OZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb252ZXJz
aW9uOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZWJ1ZygiICAgIGgyIGNsb3NpbmcgaW1tZWRpYXRlbHkiKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoMi5jbG9zZSgpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0pOyB9LAorICAgICAgICAgICAgICBm
dW5jdGlvbihkb05leHQpIHsgaDEuc2V0VmVyc2lvbih7b25zdWNjZXNzOiBkb05leHR9KTsgfSwK
KyAgICAgICAgICAgICAgZmluaXNoVGVzdAorICAgICAgICAgICAgICBdKTsKKworICAgIGZ1bmN0
aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgICAgIGRlYnVnKCJOT1RFOiBXaWxsIEZBSUwgd2l0aCBl
eHRyYSBib2d1cyBoMS5zZXRWZXJzaW9uLm9uYmxvY2tlZCBzdGVwOyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzExMzAiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJzZWxmLnN0ZXBzLnRvU3RyaW5nKCkiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgWyJoMS5vcGVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEub3Bl
bi5vbnN1Y2Nlc3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5vcGVuIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIub3Blbi5vbnN1Y2Nlc3MiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiaDIub252ZXJzaW9uY2hhbmdlIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiaDIuY2xvc2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJoMS5zZXRWZXJzaW9uLm9uc3VjY2VzcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImgxLnNldFZlcnNpb24udHJhbnNhY3Rpb24tY29tcGxldGUiCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXS50b1N0cmluZygpKTsKKyAgICAgICAgdGVzdDMoKTsKKyAgICB9
Cit9CisKK2Z1bmN0aW9uIHRlc3QzKCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVEVT
VDogb3BlbiBhbmQgc2V0VmVyc2lvbiBibG9ja2VkIGlmIGEgVkVSU0lPTl9DSEFOR0UgdHJhbnNh
Y3Rpb24gaXMgcnVubmluZyAtIGNsb3NlIHdoZW4gYmxvY2tlZCIpOworICAgIGV2YWxBbmRMb2co
InNlbGYuZGJuYW1lID0gJ3Rlc3QzJzsgc2VsZi52ZXIgPSAxOyBzZWxmLnN0ZXBzID0gW10iKTsK
KyAgICB2YXIgaDEgPSBuZXcgQ29ubmVjdGlvbigiaDEiKTsKKyAgICB2YXIgaDIgPSBuZXcgQ29u
bmVjdGlvbigiaDIiKTsKKyAgICB2YXIgaDMgPSBuZXcgQ29ubmVjdGlvbigiaDMiKTsKKyAgICBy
dW5TdGVwcyhbZnVuY3Rpb24oZG9OZXh0KSB7IGgxLm9wZW4oe29uc3VjY2VzczogZG9OZXh0fSk7
IH0sCisgICAgICAgICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBoMi5vcGVuKHtvbnN1Y2Nlc3M6
IGRvTmV4dH0pOyB9LAorICAgICAgICAgICAgICBmdW5jdGlvbihkb05leHQpIHsgaDEuc2V0VmVy
c2lvbigpOyBkb05leHQoKTsgfSwKKyAgICAgICAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGgy
LnNldFZlcnNpb24oeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb25ibG9ja2VkOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiICAgIGgyIGJsb2NrZWQgc28g
Y2xvc2luZyIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGgyLmNsb3NlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZG9OZXh0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9fSk7IH0sCisgICAgICAgICAgICAgIGZ1bmN0aW9u
KCkgeyBoMy5vcGVuKHtvbnN1Y2Nlc3M6IGZpbmlzaFRlc3R9KTt9CisgICAgICAgICAgICAgIF0p
OworCisgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJzZWxmLnN0ZXBzLnRvU3RyaW5nKCkiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgWyJoMS5vcGVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEub3Bl
bi5vbnN1Y2Nlc3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5vcGVuIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIub3Blbi5vbnN1Y2Nlc3MiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiaDIuc2V0VmVyc2lvbiIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImgyLm9udmVyc2lvbmNoYW5nZSIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImgxLnNldFZlcnNpb24ub25ibG9ja2VkIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiaDEub252ZXJzaW9uY2hhbmdlIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiaDIuc2V0VmVyc2lvbi5vbmJsb2NrZWQiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJoMi5jbG9zZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgz
Lm9wZW4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5zZXRWZXJzaW9uLm9u
ZXJyb3IiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLm9u
c3VjY2VzcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24u
dHJhbnNhY3Rpb24tY29tcGxldGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJo
My5vcGVuLm9uc3VjY2VzcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnRvU3Ry
aW5nKCkpOworICAgICAgICB0ZXN0NCgpOworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdDQoKSB7
CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJURVNUOiBvcGVuIGFuZCBzZXRWZXJzaW9uIGJs
b2NrZWQgaWYgYSBWRVJTSU9OX0NIQU5HRSB0cmFuc2FjdGlvbiBpcyBydW5uaW5nIC0ganVzdCBj
bG9zZSIpOworICAgIGV2YWxBbmRMb2coInNlbGYuZGJuYW1lID0gJ3Rlc3Q0Jzsgc2VsZi52ZXIg
PSAxOyBzZWxmLnN0ZXBzID0gW10iKTsKKyAgICB2YXIgaDEgPSBuZXcgQ29ubmVjdGlvbigiaDEi
KTsKKyAgICB2YXIgaDIgPSBuZXcgQ29ubmVjdGlvbigiaDIiKTsKKyAgICB2YXIgaDMgPSBuZXcg
Q29ubmVjdGlvbigiaDMiKTsKKyAgICBydW5TdGVwcyhbZnVuY3Rpb24oZG9OZXh0KSB7IGgxLm9w
ZW4oe29uc3VjY2VzczogZG9OZXh0fSk7IH0sCisgICAgICAgICAgICAgIGZ1bmN0aW9uKGRvTmV4
dCkgeyBoMi5vcGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dH0pOyB9LAorICAgICAgICAgICAgICBmdW5j
dGlvbihkb05leHQpIHsgaDEuc2V0VmVyc2lvbigpOyBkb05leHQoKTsgfSwKKyAgICAgICAgICAg
ICAgZnVuY3Rpb24oZG9OZXh0KSB7IGgzLm9wZW4oe29uc3VjY2VzczogZmluaXNoVGVzdH0pOyBk
b05leHQoKTsgfSwKKyAgICAgICAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGgyLmNsb3NlKCk7
IH0sCisgICAgICAgICAgICAgIF0pOworCisgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAg
ICAgICAgZGVidWcoIk5PVEU6IFdpbGwgRkFJTCB3aXRoIGV4dHJhIGJvZ3VzIGgxLnNldFZlcnNp
b24ub25ibG9ja2VkIHN0ZXA7IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MTEzMCIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNlbGYuc3RlcHMudG9T
dHJpbmcoKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImgxLm9wZW4iLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5vcGVuLm9uc3VjY2VzcyIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImgyLm9wZW4iLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJoMi5vcGVuLm9uc3VjY2VzcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImgxLnNldFZlcnNpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJo
My5vcGVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIuY2xvc2UiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLm9uc3VjY2VzcyIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24udHJhbnNhY3Rpb24t
Y29tcGxldGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMy5vcGVuLm9uc3Vj
Y2VzcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnRvU3RyaW5nKCkpOworICAg
ICAgICB0ZXN0NSgpOworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdDUoKSB7CisgICAgZGVidWco
IiIpOworICAgIGRlYnVnKCJURVNUOiBvcGVuIGJsb2NrZWQgaWYgYSBWRVJTSU9OX0NIQU5HRSB0
cmFuc2FjdGlvbiBpcyBydW5uaW5nIik7CisgICAgZXZhbEFuZExvZygic2VsZi5kYm5hbWUgPSAn
dGVzdDUnOyBzZWxmLnZlciA9IDE7IHNlbGYuc3RlcHMgPSBbXSIpOworICAgIHZhciBoMSA9IG5l
dyBDb25uZWN0aW9uKCJoMSIpOworICAgIHZhciBoMiA9IG5ldyBDb25uZWN0aW9uKCJoMiIpOwor
CisgICAgcnVuU3RlcHMoW2Z1bmN0aW9uKGRvTmV4dCkgeyBoMS5vcGVuKHtvbnN1Y2Nlc3M6IGRv
TmV4dH0pOyB9LAorICAgICAgICAgICAgICBmdW5jdGlvbihkb05leHQpIHsgaDEuc2V0VmVyc2lv
bigpOyBkb05leHQoKTsgfSwKKyAgICAgICAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGgyLm9w
ZW4oe29uc3VjY2VzczogZmluaXNoVGVzdH0pOyB9CisgICAgICAgICAgICAgIF0pOworCisgICAg
ZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJz
ZWxmLnN0ZXBzLnRvU3RyaW5nKCkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJo
MS5vcGVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEub3Blbi5vbnN1Y2Nl
c3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIub3BlbiIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24ub25zdWNjZXNzIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbi50cmFuc2FjdGlvbi1jb21wbGV0ZSIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLm9wZW4ub25zdWNjZXNzIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF0udG9TdHJpbmcoKSk7CisgICAgICAgIHRlc3Q2KCk7
CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0NigpIHsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVi
dWcoIlRFU1Q6IHR3byBzZXRWZXJzaW9ucyBmcm9tIHRoZSBzYW1lIGNvbm5lY3Rpb24iKTsKKyAg
ICBldmFsQW5kTG9nKCJzZWxmLmRibmFtZSA9ICd0ZXN0Nic7IHNlbGYudmVyID0gMTsgc2VsZi5z
dGVwcyA9IFtdIik7CisgICAgdmFyIGgxID0gbmV3IENvbm5lY3Rpb24oImgxIik7CisKKyAgICBy
dW5TdGVwcyhbZnVuY3Rpb24oZG9OZXh0KSB7IGgxLm9wZW4oe29uc3VjY2VzczogZG9OZXh0fSk7
IH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBmdW5j
dGlvbihkb05leHQpIHsgaDEuc2V0VmVyc2lvbih7b25zdWNjZXNzOiBoYWxmRG9uZX0pOyAKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGgxLnNldFZlcnNpb24oe29uc3VjY2Vzczog
aGFsZkRvbmV9KTsgfQorICAgICAgICAgICAgICBdKTsKKworICAgIHZhciBjb3VudGVyID0gMDsK
KyAgICBmdW5jdGlvbiBoYWxmRG9uZSgpIHsKKyAgICAgICAgY291bnRlcisrOworICAgICAgICBp
ZiAoY291bnRlciA8IDIpIHsKKyAgICAgICAgICAgIGRlYnVnKCdoYWxmIGRvbmUnKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgfQorICAgIH0g
IAorCisgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJzZWxmLnN0ZXBzLnRvU3RyaW5nKCkiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgWyJoMS5vcGVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEub3Bl
bi5vbnN1Y2Nlc3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJz
aW9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbiIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24ub25zdWNjZXNzIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbi50cmFuc2FjdGlv
bi1jb21wbGV0ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNp
b24ub25zdWNjZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVy
c2lvbi50cmFuc2FjdGlvbi1jb21wbGV0ZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBdLnRvU3RyaW5nKCkpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9Cit9CisKK3Rl
c3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Blbi1jdXJzb3IuanMgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Blbi1jdXJzb3IuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OWY5ZGMzYjZiNzk1YmYwZWQ5ZTkzNjRmN2FiZjg4Y2QwZTZjYjg3YwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuLWN1cnNvci5q
cwpAQCAtMCwwICsxLDg0IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0
U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAg
ICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5k
ZXhlZERCJ3Mgb3BlbkN1cnNvci4iKTsKKworZnVuY3Rpb24gZW1wdHlDdXJzb3JTdWNjZXNzKCkK
K3sKKyAgICBkZWJ1ZygiRW1wdHkgY3Vyc29yIG9wZW5lZCBzdWNjZXNzZnVsbHkuIikKKyAgICAv
LyBGSVhNRTogY2hlY2sgdGhhdCB3ZSBjYW4gaXRlcmF0ZSB0aGUgY3Vyc29yLgorICAgIGZpbmlz
aEpTVGVzdCgpOworfQorCitmdW5jdGlvbiBvcGVuRW1wdHlDdXJzb3IoKQoreworICAgIGRlYnVn
KCJPcGVuaW5nIGFuIGVtcHR5IGN1cnNvci4iKTsKKyAgICBrZXlSYW5nZSA9IElEQktleVJhbmdl
Lmxvd2VyQm91bmQoIkluZXhpc3RlbnRLZXkiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
b2JqZWN0U3RvcmUub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGVtcHR5Q3Vyc29yU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY3Vyc29yU3VjY2VzcygpCit7CisgICAgZGVi
dWcoIkN1cnNvciBvcGVuZWQgc3VjY2Vzc2Z1bGx5LiIpCisgICAgLy8gRklYTUU6IGNoZWNrIHRo
YXQgd2UgY2FuIGl0ZXJhdGUgdGhlIGN1cnNvci4KKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0
LnJlc3VsdC5kaXJlY3Rpb24iLCAiMCIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVz
dWx0LmtleSIsICInbXlLZXknIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQu
dmFsdWUiLCAiJ215VmFsdWUnIik7CisgICAgZGVidWcoIiIpOworICAgIHRyeSB7CisgICAgICAg
IGRlYnVnKCJQYXNzaW5nIGFuIGludmFsaWQga2V5IGludG8gLmNvbnRpbnVlKHt9KS4iKTsKKyAg
ICAgICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSh7fSk7CisgICAgICAgIHRlc3RGYWls
ZWQoIk5vIGV4Y2VwdGlvbiB0aHJvd24iKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIHRl
c3RQYXNzZWQoIkNhdWdodCBleGNlcHRpb246ICIgKyBlLnRvU3RyaW5nKCkpOworICAgIH0KKyAg
ICBkZWJ1ZygiIik7CisgICAgb3BlbkVtcHR5Q3Vyc29yKCk7Cit9CisKK2Z1bmN0aW9uIG9wZW5D
dXJzb3IoKQoreworICAgIGRlYnVnKCJPcGVuaW5nIGN1cnNvciIpOworICAgIGtleVJhbmdlID0g
SURCS2V5UmFuZ2UubG93ZXJCb3VuZCgibXlLZXkiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiZXZlbnQudGFyZ2V0LnNvdXJjZS5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gY3Vyc29yU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQor
eworICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOworICAgIHNlbGYudHJhbnMgPSBl
dmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRy
dWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9y
dENhbGxiYWNrOworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIHZhciBv
YmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ3Rlc3QnKSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQo
J215VmFsdWUnLCAnbXlLZXknKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbkN1cnNv
cjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKwor
ZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIHZhciBkYiA9IGV2YWxBbmRMb2coImRiID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNl
dFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZl
cnNpb25TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygp
OworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbignb3Blbi1jdXJzb3In
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvb3Blbi1kdXJpbmctdHJhbnNhY3Rpb24uanMgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Blbi1kdXJpbmctdHJhbnNhY3Rpb24uanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNTNjMTlkN2Q5ZjA0YWIxMzY0NTBiNzMxMjZlYjcwMGUyMzNiNTAyNwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVu
LWR1cmluZy10cmFuc2FjdGlvbi5qcwpAQCAtMCwwICsxLDc3IEBACitpZiAodGhpcy5pbXBvcnRT
Y3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKwor
ZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIG9wZW5pbmcgZGF0YWJhc2UgY29ubmVjdGlvbnMg
ZHVyaW5nIHRyYW5zYWN0aW9ucyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVW
ZW5kb3JQcmVmaXhlcygpOworICAgIHByZXBhcmVEYXRhYmFzZSgpOworfQorCitmdW5jdGlvbiBw
cmVwYXJlRGF0YWJhc2UoKQoreworICAgIGRlYnVnKCJwcmVwYXJlIGRhdGFiYXNlIik7CisgICAg
ZXZhbEFuZExvZygib3BlbnJlcTEgPSBpbmRleGVkREIub3BlbignZGIxJykiKTsKKyAgICBvcGVu
cmVxMS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgb3BlbnJlcTEub25z
dWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgZXZhbEFuZExvZygiZGJjMSA9IG9wZW5y
ZXExLnJlc3VsdCIpOworICAgICAgICBldmFsQW5kTG9nKCJzZXR2ZXJyZXEgPSBkYmMxLnNldFZl
cnNpb24oJzEuMCcpIik7CisgICAgICAgIHNldHZlcnJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisgICAgICAgIHNldHZlcnJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZSkg
eworICAgICAgICAgICAgZXZhbEFuZExvZygiZGJjMS5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVO
YW1lJykiKTsKKyAgICAgICAgICAgIHNldHZlcnJlcS5yZXN1bHQub25jb21wbGV0ZSA9IGZ1bmN0
aW9uIChlKSB7CisgICAgICAgICAgICAgICAgZGVidWcoImRhdGFiYXNlIHByZXBhcmF0aW9uIGNv
bXBsZXRlIik7CisgICAgICAgICAgICAgICAgZGVidWcoIiIpOworICAgICAgICAgICAgICAgIHN0
YXJ0VHJhbnNhY3Rpb24oKTsKKyAgICAgICAgICAgIH07CisgICAgICAgIH07CisgICAgfTsKK30K
KworZnVuY3Rpb24gc3RhcnRUcmFuc2FjdGlvbigpCit7CisgICAgZGVidWcoInN0YXJ0aW5nIHRy
YW5zYWN0aW9uIik7CisgICAgZXZhbEFuZExvZygic3RhdGUgPSAnc3RhcnRpbmcnIik7CisgICAg
ZXZhbEFuZExvZygidHJhbnMgPSBkYmMxLnRyYW5zYWN0aW9uKCdzdG9yZU5hbWUnLCBJREJUcmFu
c2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3Jl
KCdzdG9yZU5hbWUnKS5wdXQoJ3ZhbHVlJywgJ2tleScpIik7CisgICAgdHJhbnMub25hYm9ydCA9
IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zLm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gZnVuY3Rpb24gKGUpIHsKKyAg
ICAgICAgZGVidWcoInRyYW5zYWN0aW9uIGNvbXBsZXRlIik7CisgICAgICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygic3RhdGUiLCAib3BlbjNjb21wbGV0ZSIpOworICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICB9OworCisgICAgZGVidWcoIiIpOworICAgIHRyeU9wZW5zKCk7Cit9CisKK2Z1
bmN0aW9uIHRyeU9wZW5zKCkKK3sKKyAgICBkZWJ1ZygidHJ5aW5nIHRvIG9wZW4gdGhlIHNhbWUg
ZGF0YWJhc2UiKTsKKyAgICBldmFsQW5kTG9nKCJvcGVucmVxMiA9IGluZGV4ZWREQi5vcGVuKCdk
YjEnKSIpOworICAgIG9wZW5yZXEyLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICBvcGVucmVxMi5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZSkgeworICAgICAgICBkZWJ1Zygi
b3BlbnJlcTIub25zdWNjZXNzIik7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3Rh
dGUiLCAic3RhcnRpbmciKTsKKyAgICAgICAgZXZhbEFuZExvZygic3RhdGUgPSAnb3BlbjJjb21w
bGV0ZSciKTsKKyAgICAgICAgZGVidWcoIiIpOworICAgIH0KKyAgICBkZWJ1ZygiIik7CisKKyAg
ICBkZWJ1ZygidHJ5aW5nIHRvIG9wZW4gYSBkaWZmZXJlbnQgZGF0YWJhc2UiKTsKKyAgICBldmFs
QW5kTG9nKCJvcGVucmVxMyA9IGluZGV4ZWREQi5vcGVuKCdkYjInKSIpOworICAgIG9wZW5yZXEz
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBvcGVucmVxMy5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbiAoZSkgeworICAgICAgICBkZWJ1Zygib3BlbnJlcTMub25zdWNjZXNzIik7
CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3RhdGUiLCAib3BlbjJjb21wbGV0ZSIp
OworICAgICAgICBldmFsQW5kTG9nKCJzdGF0ZSA9ICdvcGVuM2NvbXBsZXRlJyIpOworICAgICAg
ICBkZWJ1ZygiIik7CisgICAgfQorICAgIGRlYnVnKCIiKTsKK30KKwordGVzdCgpOwpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9wcmVmZXRjaC1idWdmaXgtMTA4MDcxLmpzIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3ByZWZldGNoLWJ1Z2ZpeC0xMDgwNzEuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZmYxNDE2N2ExZGU0YTU0YjU0YmNkM2IzZWQyZmI0Njk5YzlmMWMwOAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9wcmVm
ZXRjaC1idWdmaXgtMTA4MDcxLmpzCkBAIC0wLDAgKzEsMTE4IEBACitpZiAodGhpcy5pbXBvcnRT
Y3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKwor
ZGVzY3JpcHRpb24oIlRlc3QgZm9yIGNyYnVnLmNvbS8xMDgwNzEiKTsKKworLy8gSGF2ZSB0byBi
ZSBhdCBsZWFzdCA1IGhlcmU6IDEgaW5pdGlhbCwgMyBjb250aW51ZXMgdG8gdHJpZ2dlciBwcmVm
ZXRjaCBhbmQgMQorLy8gcG9zdC1hYm9ydCBvdXRzdGFuZGluZyBjb250aW51ZS4KK3ZhciBuYW1l
cyA9IFsnQWxwaGEnLCAnQnJhdm8nLCAnQ2hhcmxpZScsICdEZWx0YScsICdFY2hvJ107CisKK2Z1
bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgREJOQU1F
ID0gJ3ByZWZldGNoLWJ1Z2ZpeC0xMDgwNzEnOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIuZGVsZXRlRGF0YWJhc2UoREJOQU1FKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25ibG9ja2VkID0gdW5leHBl
Y3RlZEJsb2NrZWRDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChl
KSB7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihEQk5BTUUp
Iik7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIH07Cit9CisKK2Z1
bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICB2YXIgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRW
ZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJz
aW9uU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJzZXRW
ZXJzaW9uU3VjY2VzcygpOiIpOworICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9
IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxs
Iik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRy
YW5zLm9uY29tcGxldGUgPSBpdGVyYXRlQW5kRGVsZXRlRmlyc3RFbGVtZW50OworCisgICAgdmFy
IG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RT
dG9yZSgnc3RvcmUnLCB7a2V5UGF0aDogJ2lkJ30pIik7CisgICAgcmVzZXRPYmplY3RTdG9yZSgp
OworfQorCitmdW5jdGlvbiByZXNldE9iamVjdFN0b3JlKCkKK3sKKyAgICBkZWJ1ZygiXG5yZXNl
dE9iamVjdFN0b3JlKCk6Iik7CisKKyAgICBvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3Jl
KCdzdG9yZScpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmNsZWFyKCkiKTsKKyAgICBm
b3IgKGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCh7aWQ6ICIgKyBpICsgIiwgbmFtZTogXCIiICsgbmFt
ZXNbaV0gKyAiXCJ9KSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICB9CisKKyAgICBkZWJ1ZygiIik7Cit9CisKK2Z1bmN0aW9uIGl0ZXJh
dGVBbmREZWxldGVGaXJzdEVsZW1lbnQoKQoreworICAgIGRlYnVnKCJpdGVyYXRlQW5kRGVsZXRl
Rmlyc3RFbGVtZW50KCk6Iik7CisKKyAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0
aW9uKFsnc3RvcmUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICB0cmFucy5v
bmFib3J0ID0gdHJhbnNhY3Rpb25BYm9ydGVkOworICAgIHRyYW5zLm9uY29tcGxldGUgPSB1bmV4
cGVjdGVkQ29tcGxldGVDYWxsYmFjazsKKworICAgIC8vIENyZWF0ZSB0aGUgY3Vyc29yIGFuZCBp
dGVyYXRlIG92ZXIgdGhlIHdob2xlIHRoaW5nLgorICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0
cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKS5vcGVuQ3Vyc29yKCkiKTsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdmFyIGN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7
CisgICAgICAgIGlmIChjdXJzb3IgPT0gbnVsbCkgeworICAgICAgICAgICAgcmVzZXRPYmplY3RT
dG9yZSgpOworICAgICAgICAgICAgcHJlZmV0Y2hBbmRBYm9ydCgpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgZGVidWcoY3Vyc29yLnZhbHVlLmlkICsgIjogIiAr
IGN1cnNvci52YWx1ZS5uYW1lKTsKKworICAgICAgICBpZiAoY3Vyc29yLnZhbHVlLmlkID09IDAp
IHsKKyAgICAgICAgICAgIC8vIERlbGV0ZSB0aGUgZmlyc3QgZWxlbWVudCB3aGVuIHdlIHNlZSBp
dC4KKyAgICAgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgn
c3RvcmUnKS5kZWxldGUoMCkiKTsKKyAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbigpIHsgY3Vyc29yLmNvbnRpbnVlKCk7IH07CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBjdXJzb3IuY29udGludWUoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24g
cHJlZmV0Y2hBbmRBYm9ydCgpCit7CisgICAgZGVidWcoInByZWZldGNoQW5kQWJvcnQoKToiKTsK
KworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKS5v
cGVuQ3Vyc29yKCkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdmFy
IGN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgICAgIGRlYnVnKGN1cnNvci52YWx1
ZS5pZCArICI6ICIgKyBjdXJzb3IudmFsdWUubmFtZSk7CisgICAgICAgIC8vIEhhdmUgdG8gaXRl
cmF0ZSB0byAzIGluIG9yZGVyIHRvIHByZWZldGNoLCBidXQgY2FuJ3QgaXRlcmF0ZSBwYXN0IDMK
KyAgICAgICAgLy8gc28gdGhhdCB0aGVyZSB3aWxsIGJlIGEgY29udGludWUgcmVtYWluaW5nLgor
ICAgICAgICBpZiAoY3Vyc29yLnZhbHVlLmlkID09IDMpIHsKKyAgICAgICAgICAgIGV2YWxBbmRM
b2coInRyYW5zLmFib3J0KCkiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGN1cnNv
ci5jb250aW51ZSgpOworICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiB0cmFuc2FjdGlv
bkFib3J0ZWQoKQoreworICAgIHRlc3RQYXNzZWQoIlRyYW5zYWN0aW9uIGFib3J0ZWQgYXMgZXhw
ZWN0ZWQiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9xdWV1ZWQtY29tbWFuZHMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvcXVldWVkLWNvbW1hbmRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwMGJmZDVhMTZj
ZWNlMTA0NzUyMTI2N2Y2YTJhOTkzMTliNDgyYjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvcXVldWVkLWNvbW1hbmRzLmpzCkBAIC0w
LDAgKzEsNjIgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRz
KCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9y
dFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVmVyaWZ5IHRoYXQgcXVl
dWluZyB1cCBzZXZlcmFsIGNvbW1hbmRzIHdvcmtzIChhbmQgdGhleSBhbGwgZmlyZSkuIik7CisK
K2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdxdWV1ZWQtY29tbWFuZHMnKSIpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvbjsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbigpCit7
CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVsZXRlRXhpc3Rp
bmcoKQoreworICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOworICAgIHNlbGYudHJh
bnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91
bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0
ZWRBYm9ydENhbGxiYWNrOworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAg
IHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1l
JykiKTsKKyAgICBzZWxmLmluZGV4T2JqZWN0ID0gZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5k
ZXgoJ2luZGV4TmFtZScsICd4JykiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9y
ZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbigpIHsgdmVyaWZ5QWRkKDApOyB9OworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InN0b3JlLmFkZCh7eDogJ3ZhbHVlMicsIHk6ICd6enoyJ30sICdrZXkyJykiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeyB2ZXJpZnlBZGQoMSk7IH07CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygic3RvcmUucHV0KHt4OiAndmFsdTInLCB5OiAnenoyJ30sICdreTInKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7IHZlcmlmeUFkZCgyKTsgfTsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKworICAgIHNlbGYuYWRk
Q291bnQgPSAwOworfQorCitmdW5jdGlvbiB2ZXJpZnlBZGQoZXhwZWN0ZWQpCit7CisgICAgc2hv
dWxkQmUoIiIgKyBhZGRDb3VudCsrLCAiIiArIGV4cGVjdGVkKTsKKworICAgIGlmIChhZGRDb3Vu
dCA9PSAzKQorICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICBpZiAoYWRkQ291bnQgPiAzKQor
ICAgICAgICB0ZXN0RmFpbGVkKCJVbmV4cGVjdGVkIGNhbGwgdG8gdmVyaWZ5QWRkISIpOworfQor
Cit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3JlYWRvbmx5LXByb3BlcnRpZXMuanMg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvcmVhZG9ubHktcHJvcGVy
dGllcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43MjVjMDQxYjAxODE5YzE0NmUyYjYzYTE2NjlhZDM5OGQ3N2Fi
MmM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL3JlYWRvbmx5LXByb3BlcnRpZXMuanMKQEAgLTAsMCArMSw0OSBAQAoraWYgKHRoaXMu
aW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7
Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiByZWFkb25seSBwcm9wZXJ0aWVzIik7
CisKK2Z1bmN0aW9uIHNldFJlYWRvbmx5UHJvcGVydHkocHJvcGVydHksIHZhbHVlKQoreworICAg
IG9sZFZhbHVlID0gZXZhbChwcm9wZXJ0eSk7CisgICAgZGVidWcoInRyeWluZyB0byBzZXQgcmVh
ZG9ubHkgcHJvcGVydHkgIiArIHByb3BlcnR5KTsKKyAgICBldmFsQW5kTG9nKHByb3BlcnR5ICsg
IiA9ICIgKyB2YWx1ZSk7CisgICAgbmV3VmFsdWUgPSBldmFsKHByb3BlcnR5KTsKKyAgICBpZiAo
b2xkVmFsdWUgPT0gbmV3VmFsdWUpIHsKKyAgICAgICAgdGVzdFBhc3NlZChwcm9wZXJ0eSArICIg
aXMgc3RpbGwgIiArIG9sZFZhbHVlKTsKKyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0RmFpbGVk
KHByb3BlcnR5ICsgIiB2YWx1ZSB3YXMgY2hhbmdlZCB0byAiICsgbmV3VmFsdWUpOworICAgIH0K
K30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKwor
ICAgIG5hbWUgPSAiZm9vIjsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRp
b24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1
Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcx
JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3Rv
cmU7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQoreworICAgIHRyYW5zYWN0
aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwor
ICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5k
TG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nKTsiKTsKKyAgICBz
ZXRSZWFkb25seVByb3BlcnR5KCJvYmplY3RTdG9yZS50cmFuc2FjdGlvbiIsICJ0aGlzIik7Cisg
ICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
cmVhZG9ubHkuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvcmVh
ZG9ubHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDZkMzFjZjg4OTJkYjE0Y2EzNjk4MGFhZjhjZDMxZmZhNWY5
Y2YyYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9yZWFkb25seS5qcwpAQCAtMCwwICsxLDEwNiBAQAoraWYgKHRoaXMuaW1wb3J0U2Ny
aXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rl
c2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiByZWFkb25seSBwcm9wZXJ0aWVzIik7CisKK2Z1bmN0
aW9uIHNldFJlYWRvbmx5UHJvcGVydHkocHJvcGVydHksIHZhbHVlKQoreworICAgIG9sZFZhbHVl
ID0gZXZhbChwcm9wZXJ0eSk7CisgICAgZGVidWcoInRyeWluZyB0byBzZXQgcmVhZG9ubHkgcHJv
cGVydHkgIiArIHByb3BlcnR5KTsKKyAgICBldmFsQW5kTG9nKHByb3BlcnR5ICsgIiA9ICIgKyB2
YWx1ZSk7CisgICAgbmV3VmFsdWUgPSBldmFsKHByb3BlcnR5KTsKKyAgICBpZiAob2xkVmFsdWUg
PT0gbmV3VmFsdWUpIHsKKyAgICAgICAgdGVzdFBhc3NlZChwcm9wZXJ0eSArICIgaXMgc3RpbGwg
IiArIG9sZFZhbHVlKTsKKyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0RmFpbGVkKHByb3BlcnR5
ICsgIiB2YWx1ZSB3YXMgY2hhbmdlZCIpOworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdCgpCit7
CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSAiZm9vIjsKKyAgICBk
ZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIHNldFJlYWRv
bmx5UHJvcGVydHkoInJlcXVlc3QucmVzdWx0IiwgIkluZmluaXR5Iik7CisgICAgc2V0UmVhZG9u
bHlQcm9wZXJ0eSgicmVxdWVzdC5lcnJvckNvZGUiLCAiNjY2Iik7CisgICAgc2V0UmVhZG9ubHlQ
cm9wZXJ0eSgicmVxdWVzdC5zb3VyY2UiLCAidGhpcyIpOworICAgIHNldFJlYWRvbmx5UHJvcGVy
dHkoInJlcXVlc3QudHJhbnNhY3Rpb24iLCAidGhpcyIpOworICAgIHNldFJlYWRvbmx5UHJvcGVy
dHkoInJlcXVlc3QucmVhZHlTdGF0ZSIsICI2NjYiKTsKKworICAgIGRiID0gZXZhbEFuZExvZygi
ZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgiZGIu
bmFtZSIsICInYmFyJyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBk
Yi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBv
cHVsYXRlT2JqZWN0U3RvcmU7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQor
eworICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBldmVudC50YXJn
ZXQucmVzdWx0OyIpOworICAgIHNldFJlYWRvbmx5UHJvcGVydHkoInRyYW5zYWN0aW9uLm1vZGUi
LCAiNjY2Iik7CisgICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgidHJhbnNhY3Rpb24uZGIiLCAidGhp
cyIpOworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3Jl
ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJyk7
Iik7CisKKyAgICBzZXRSZWFkb25seVByb3BlcnR5KCJvYmplY3RTdG9yZS5uYW1lIiwgIidiYXIn
Iik7CisgICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgib2JqZWN0U3RvcmUua2V5UGF0aCIsICInYmFy
JyIpOworLyogZmFpbHMsIHNwbGl0IGludG8gc2VwYXJhdGUgdGVzdAorICAgIHNldFJlYWRvbmx5
UHJvcGVydHkoIm9iamVjdFN0b3JlLmluZGV4TmFtZXMiLCAiWydiYXInXSIpOworKi8KKy8qIGZh
aWxzLCBzcGxpdCBpbnRvIHNlcGFyYXRlIHRlc3QKKyAgICBzZXRSZWFkb25seVByb3BlcnR5KCJv
YmplY3RTdG9yZS50cmFuc2FjdGlvbiIsICJ0aGlzIik7CisqLworCisgICAgcmVzdWx0ID0gZXZh
bEFuZExvZygicmVzdWx0ID0gb2JqZWN0U3RvcmUuYWRkKHt9LCAnZmlyc3QnKTsiKTsKKyAgICBy
ZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlc3VsdC5vbnN1
Y2Nlc3MgPSBhZGRTdWNjZXNzOworfQorCitmdW5jdGlvbiBhZGRTdWNjZXNzKCkKK3sKKyAgICBy
ZXN1bHQgPSBldmFsQW5kTG9nKCJyZXN1bHQgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7
CisgICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXN1
bHQub25zdWNjZXNzID0gY2hlY2tDdXJzb3I7Cit9CisKK2Z1bmN0aW9uIGNoZWNrQ3Vyc29yKCkK
K3sKKyAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0
OyIpOworICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgiY3Vy
c29yLnNvdXJjZSIsICJ0aGlzIik7CisgICAgICAgIHNldFJlYWRvbmx5UHJvcGVydHkoImN1cnNv
ci5kaXJlY3Rpb24iLCAiNjY2Iik7CisgICAgICAgIHNldFJlYWRvbmx5UHJvcGVydHkoImN1cnNv
ci5rZXkiLCAiSW5maW5pdHkiKTsKKyAgICAgICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgiY3Vyc29y
LnByaW1hcnlLZXkiLCAiSW5maW5pdHkiKTsKKyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0RmFp
bGVkKCJjdXJzb3IgaXMgbnVsbCIpOworICAgIH0KKworICAgIGluZGV4ID0gZXZhbEFuZExvZygi
aW5kZXggPSBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgnZmlyc3QnLCAnZmlyc3QnKTsiKTsKKyAg
ICBzZXRSZWFkb25seVByb3BlcnR5KCJpbmRleC5uYW1lIiwgIidiYXInIik7CisgICAgc2V0UmVh
ZG9ubHlQcm9wZXJ0eSgiaW5kZXgub2JqZWN0U3RvcmUiLCAidGhpcyIpOworICAgIHNldFJlYWRv
bmx5UHJvcGVydHkoImluZGV4LmtleVBhdGgiLCAiJ2JhciciKTsKKyAgICBzZXRSZWFkb25seVBy
b3BlcnR5KCJpbmRleC51bmlxdWUiLCAidHJ1ZSIpOworCisgICAga2V5UmFuZ2UgPSBJREJLZXlS
YW5nZS5vbmx5KCJmaXJzdCIpOworICAgIHNldFJlYWRvbmx5UHJvcGVydHkoImtleVJhbmdlLmxv
d2VyIiwgIkluZmluaXR5Iik7CisgICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgia2V5UmFuZ2UudXBw
ZXIiLCAiSW5maW5pdHkiKTsKKyAgICBzZXRSZWFkb25seVByb3BlcnR5KCJrZXlSYW5nZS5sb3dl
ck9wZW4iLCAidHJ1ZSIpOworICAgIHNldFJlYWRvbmx5UHJvcGVydHkoImtleVJhbmdlLnVwcGVy
T3BlbiIsICJ0cnVlIik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9yZXF1ZXN0LWV2ZW50LXByb3BhZ2F0aW9uLmpzIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3JlcXVlc3QtZXZlbnQtcHJvcGFnYXRp
b24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzk2NzIzNWUyMGJmZGY4ZjYwZjAwNDJiYWE3ODE2N2JiMWNjNTI3
MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9yZXF1ZXN0LWV2ZW50LXByb3BhZ2F0aW9uLmpzCkBAIC0wLDAgKzEsMjY3IEBACitpZiAo
dGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQu
anMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgZXZlbnQgcHJvcG9nYXRpb24gb24gSURCUmVx
dWVzdC4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMo
KTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3JlcXVlc3QtZXZl
bnQtcHJvcGFnYXRpb24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvbjsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gc2V0VmVyc2lvbigpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9u
KCduZXcgdmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGlu
ZzsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKwor
ZnVuY3Rpb24gZGVsZXRlRXhpc3RpbmcoKQoreworICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2Vz
cygpOiIpOworICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJh
bnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIGV2YWxBbmRMb2coInRy
YW5zLm9uY29tcGxldGUgPSBzdGFydFRlc3QiKTsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jl
cyhkYik7CisKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0
b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAna2V5JykiKTsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc3RhcnRUZXN0
KCkKK3sKKyAgICBkZWJ1ZygiVmVyaWZ5IHRoYXQgaGFuZGxlciBmaXJlcyBhbmQgdGhhdCBub3Qg
cHJldmVudGluZyBkZWZhdWx0IHdpbGwgcmVzdWx0IGluIGFuIGFib3J0Iik7CisgICAgdHJhbnMg
PSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIElEQlRy
YW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMub25hYm9ydCA9
IHRyYW5zYWN0aW9uQWJvcnRlZCIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUg
PSB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9u
ZXJyb3IgPSBhbGxvd0RlZmF1bHQiKTsKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0g
dHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAna2V5JykiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7CisgICAgaGFuZGxlckZp
cmVkID0gZmFsc2U7Cit9CisKK2Z1bmN0aW9uIGFsbG93RGVmYXVsdCgpCit7CisgICAgdGVzdFBh
c3NlZCgiRXZlbnQgaGFuZGxlciBmaXJlZCIpOworICAgIGRlYnVnKCJEb2luZyBub3RoaW5nIHRv
IHByZXZlbnQgdGhlIGRlZmF1bHQgYWN0aW9uLi4uIik7CisgICAgaGFuZGxlckZpcmVkID0gdHJ1
ZTsKK30KKworZnVuY3Rpb24gdHJhbnNhY3Rpb25BYm9ydGVkKCkKK3sKKyAgICBzaG91bGRCZVRy
dWUoImhhbmRsZXJGaXJlZCIpOworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVmVyaWZpbmcg
ZXJyb3IiKTsKKyAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24o
WydzdG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICBldmFsQW5k
TG9nKCJ0cmFucy5vbmFib3J0ID0gdHJhbnNhY3Rpb25BYm9ydGVkMiIpOworICAgIGV2YWxBbmRM
b2coInRyYW5zLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjayIpOworICAgIGV2
YWxBbmRMb2coInRyYW5zLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZXJyb3JDYXB0dXJlQ2Fs
bGJhY2ssIHRydWUpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMuYWRkRXZlbnRMaXN0ZW5lcign
ZXJyb3InLCBlcnJvckJ1YmJsZUNhbGxiYWNrLCBmYWxzZSkiKTsKKyAgICBldmFsQW5kTG9nKCJ0
cmFucy5hZGRFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFj
aywgdHJ1ZSkiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5hZGRFdmVudExpc3RlbmVyKCdzdWNj
ZXNzJywgdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjaywgZmFsc2UpIik7CisgICAgZXZhbEFuZExv
ZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBkYkVycm9yQ2FwdHVyZUNhbGxiYWNrLCB0
cnVlKSIpOworICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZGJF
cnJvckJ1YmJsZUNhbGxiYWNrLCBmYWxzZSkiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5hZGRFdmVu
dExpc3RlbmVyKCdzdWNjZXNzJywgdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjaywgdHJ1ZSkiKTsK
KyAgICBldmFsQW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgdW5leHBlY3Rl
ZFN1Y2Nlc3NDYWxsYmFjaywgZmFsc2UpIik7CisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9y
ZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOworICAgIHJlcXVl
c3Qub25lcnJvciA9IGVycm9yRmlyZWRDYWxsYmFjazsKKyAgICBkYkNhcHR1cmVGaXJlZCA9IGZh
bHNlOworICAgIGNhcHR1cmVGaXJlZCA9IGZhbHNlOworICAgIHJlcXVlc3RGaXJlZCA9IGZhbHNl
OworICAgIGJ1YmJsZUZpcmVkID0gZmFsc2U7CisgICAgZGJCdWJibGVGaXJlZCA9IGZhbHNlOwor
fQorCitmdW5jdGlvbiBkYkVycm9yQ2FwdHVyZUNhbGxiYWNrKCkKK3sKKyAgICBkZWJ1ZygiIik7
CisgICAgZGVidWcoIkluIElEQkRhdGFiYXNlIGVycm9yIGNhcHR1cmUiKTsKKyAgICBzaG91bGRC
ZUZhbHNlKCJkYkNhcHR1cmVGaXJlZCIpOworICAgIHNob3VsZEJlRmFsc2UoImNhcHR1cmVGaXJl
ZCIpOworICAgIHNob3VsZEJlRmFsc2UoInJlcXVlc3RGaXJlZCIpOworICAgIHNob3VsZEJlRmFs
c2UoImJ1YmJsZUZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVGaXJlZCIpOwor
ICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAicmVxdWVzdCIpOworICAgIHNob3VsZEJlKCJl
dmVudC5jdXJyZW50VGFyZ2V0IiwgImRiIik7CisgICAgZGJDYXB0dXJlRmlyZWQgPSB0cnVlOwor
fQorCitmdW5jdGlvbiBlcnJvckNhcHR1cmVDYWxsYmFjaygpCit7CisgICAgZGVidWcoIiIpOwor
ICAgIGRlYnVnKCJJbiBJREJUcmFuc2FjdGlvbiBlcnJvciBjYXB0dXJlIik7CisgICAgc2hvdWxk
QmVUcnVlKCJkYkNhcHR1cmVGaXJlZCIpOworICAgIHNob3VsZEJlRmFsc2UoImNhcHR1cmVGaXJl
ZCIpOworICAgIHNob3VsZEJlRmFsc2UoInJlcXVlc3RGaXJlZCIpOworICAgIHNob3VsZEJlRmFs
c2UoImJ1YmJsZUZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVGaXJlZCIpOwor
ICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAicmVxdWVzdCIpOworICAgIHNob3VsZEJlKCJl
dmVudC5jdXJyZW50VGFyZ2V0IiwgInRyYW5zIik7CisgICAgY2FwdHVyZUZpcmVkID0gdHJ1ZTsK
K30KKworZnVuY3Rpb24gZXJyb3JGaXJlZENhbGxiYWNrKCkKK3sKKyAgICBkZWJ1ZygiIik7Cisg
ICAgZGVidWcoIkluIElEQlJlcXVlc3QgaGFuZGxlciIpOworICAgIHNob3VsZEJlVHJ1ZSgiZGJD
YXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRCZVRydWUoImNhcHR1cmVGaXJlZCIpOworICAgIHNo
b3VsZEJlRmFsc2UoInJlcXVlc3RGaXJlZCIpOworICAgIHNob3VsZEJlRmFsc2UoImJ1YmJsZUZp
cmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVGaXJlZCIpOworICAgIHNob3VsZEJl
KCJldmVudC50YXJnZXQiLCAicmVxdWVzdCIpOworICAgIHNob3VsZEJlKCJldmVudC5jdXJyZW50
VGFyZ2V0IiwgInJlcXVlc3QiKTsKKyAgICByZXF1ZXN0RmlyZWQgPSB0cnVlOworfQorCitmdW5j
dGlvbiBlcnJvckJ1YmJsZUNhbGxiYWNrKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWco
IkluIElEQlRyYW5zYWN0aW9uIGVycm9yIGJ1YmJsZSIpOworICAgIHNob3VsZEJlVHJ1ZSgiZGJD
YXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRCZVRydWUoImNhcHR1cmVGaXJlZCIpOworICAgIHNo
b3VsZEJlVHJ1ZSgicmVxdWVzdEZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiYnViYmxlRmly
ZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVkIik7CisgICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldCIsICJyZXF1ZXN0Iik7CisgICAgc2hvdWxkQmUoImV2ZW50LmN1cnJlbnRU
YXJnZXQiLCAidHJhbnMiKTsKKyAgICBidWJibGVGaXJlZCA9IHRydWU7Cit9CisKK2Z1bmN0aW9u
IGRiRXJyb3JCdWJibGVDYWxsYmFjaygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJJ
biBJREJEYXRhYmFzZSBlcnJvciBidWJibGUiKTsKKyAgICBzaG91bGRCZVRydWUoImRiQ2FwdHVy
ZUZpcmVkIik7CisgICAgc2hvdWxkQmVUcnVlKCJjYXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRC
ZVRydWUoInJlcXVlc3RGaXJlZCIpOworICAgIHNob3VsZEJlVHJ1ZSgiYnViYmxlRmlyZWQiKTsK
KyAgICBzaG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVkIik7CisgICAgc2hvdWxkQmUoImV2ZW50
LnRhcmdldCIsICJyZXF1ZXN0Iik7CisgICAgc2hvdWxkQmUoImV2ZW50LmN1cnJlbnRUYXJnZXQi
LCAiZGIiKTsKKyAgICBkYkJ1YmJsZUZpcmVkID0gdHJ1ZTsKK30KKworZnVuY3Rpb24gdHJhbnNh
Y3Rpb25BYm9ydGVkMigpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUcmFuc2FjdGlv
biBhYm9ydGVkIik7CisgICAgc2hvdWxkQmVUcnVlKCJkYkNhcHR1cmVGaXJlZCIpOworICAgIHNo
b3VsZEJlVHJ1ZSgiY2FwdHVyZUZpcmVkIik7CisgICAgc2hvdWxkQmVUcnVlKCJyZXF1ZXN0Rmly
ZWQiKTsKKyAgICBzaG91bGRCZVRydWUoImJ1YmJsZUZpcmVkIik7CisgICAgc2hvdWxkQmVUcnVl
KCJkYkJ1YmJsZUZpcmVkIik7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJWZXJpZmluZyBz
dWNjZXNzLiIpOworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlv
bihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIGV2YWxB
bmRMb2coInRyYW5zLm9uY29tcGxldGUgPSB0cmFuc2FjdGlvbkNvbXBsZXRlIik7CisgICAgZXZh
bEFuZExvZygidHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrIik7CisgICAg
ZXZhbEFuZExvZygidHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignc3VjY2VzcycsIHN1Y2Nlc3NDYXB0
dXJlQ2FsbGJhY2ssIHRydWUpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMuYWRkRXZlbnRMaXN0
ZW5lcignc3VjY2VzcycsIHN1Y2Nlc3NCdWJibGVDYWxsYmFjaywgZmFsc2UpIik7CisgICAgZXZh
bEFuZExvZygidHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjaywgdHJ1ZSkiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5hZGRFdmVudExpc3RlbmVy
KCdlcnJvcicsIHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrLCBmYWxzZSkiKTsKKyAgICBldmFsQW5k
TG9nKCJkYi5yZW1vdmVFdmVudExpc3RlbmVyKCdlcnJvcicsIGRiRXJyb3JDYXB0dXJlQ2FsbGJh
Y2ssIHRydWUpIik7CisgICAgZXZhbEFuZExvZygiZGIucmVtb3ZlRXZlbnRMaXN0ZW5lcignZXJy
b3InLCBkYkVycm9yQnViYmxlQ2FsbGJhY2ssIGZhbHNlKSIpOworICAgIGV2YWxBbmRMb2coImRi
LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3N1Y2Nlc3MnLCB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNr
LCB0cnVlKSIpOworICAgIGV2YWxBbmRMb2coImRiLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3N1Y2Nl
c3MnLCB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrLCBmYWxzZSkiKTsKKyAgICBldmFsQW5kTG9n
KCJkYi5hZGRFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgZGJTdWNjZXNzQ2FwdHVyZUNhbGxiYWNr
LCB0cnVlKSIpOworICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50TGlzdGVuZXIoJ3N1Y2Nlc3Mn
LCBkYlN1Y2Nlc3NCdWJibGVDYWxsYmFjaywgZmFsc2UpIik7CisgICAgZXZhbEFuZExvZygiZGIu
YWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjaywgdHJ1ZSki
KTsKKyAgICBldmFsQW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrLCBmYWxzZSkiKTsKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3Jl
ID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAna2V5MicpIik7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBzdWNjZXNzRmlyZWRDYWxsYmFjazsKKyAgICBkYkNhcHR1cmVGaXJlZCA9IGZh
bHNlOworICAgIGNhcHR1cmVGaXJlZCA9IGZhbHNlOworICAgIHJlcXVlc3RGaXJlZCA9IGZhbHNl
OworICAgIGJ1YmJsZUZpcmVkID0gZmFsc2U7CisgICAgZGJCdWJibGVGaXJlZCA9IGZhbHNlOwor
fQorCitmdW5jdGlvbiBkYlN1Y2Nlc3NDYXB0dXJlQ2FsbGJhY2soKQoreworICAgIGRlYnVnKCIi
KTsKKyAgICBkZWJ1ZygiSW4gSURCRGF0YWJhc2Ugc3VjY2VzcyBjYXB0dXJlIik7CisgICAgc2hv
dWxkQmVGYWxzZSgiZGJDYXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJjYXB0dXJl
RmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJyZXF1ZXN0RmlyZWQiKTsKKyAgICBzaG91bGRC
ZUZhbHNlKCJidWJibGVGaXJlZCIpOworICAgIHNob3VsZEJlRmFsc2UoImRiQnViYmxlRmlyZWQi
KTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0IiwgInJlcXVlc3QiKTsKKyAgICBzaG91bGRC
ZSgiZXZlbnQuY3VycmVudFRhcmdldCIsICJkYiIpOworICAgIGRiQ2FwdHVyZUZpcmVkID0gdHJ1
ZTsKK30KKworZnVuY3Rpb24gc3VjY2Vzc0NhcHR1cmVDYWxsYmFjaygpCit7CisgICAgZGVidWco
IiIpOworICAgIGRlYnVnKCJJbiBJREJUcmFuc2FjdGlvbiBzdWNjZXNzIGNhcHR1cmUiKTsKKyAg
ICBzaG91bGRCZVRydWUoImRiQ2FwdHVyZUZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiY2Fw
dHVyZUZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgicmVxdWVzdEZpcmVkIik7CisgICAgc2hv
dWxkQmVGYWxzZSgiYnViYmxlRmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZp
cmVkIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldCIsICJyZXF1ZXN0Iik7CisgICAgc2hv
dWxkQmUoImV2ZW50LmN1cnJlbnRUYXJnZXQiLCAidHJhbnMiKTsKKyAgICBjYXB0dXJlRmlyZWQg
PSB0cnVlOworfQorCitmdW5jdGlvbiBzdWNjZXNzRmlyZWRDYWxsYmFjaygpCit7CisgICAgZGVi
dWcoIiIpOworICAgIGRlYnVnKCJJbiBJREJSZXF1ZXN0IGhhbmRsZXIiKTsKKyAgICBzaG91bGRC
ZVRydWUoImRiQ2FwdHVyZUZpcmVkIik7CisgICAgc2hvdWxkQmVUcnVlKCJjYXB0dXJlRmlyZWQi
KTsKKyAgICBzaG91bGRCZUZhbHNlKCJyZXF1ZXN0RmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNl
KCJidWJibGVGaXJlZCIpOworICAgIHNob3VsZEJlRmFsc2UoImRiQnViYmxlRmlyZWQiKTsKKyAg
ICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0IiwgInJlcXVlc3QiKTsKKyAgICBzaG91bGRCZSgiZXZl
bnQuY3VycmVudFRhcmdldCIsICJyZXF1ZXN0Iik7CisgICAgcmVxdWVzdEZpcmVkID0gdHJ1ZTsK
K30KKworZnVuY3Rpb24gc3VjY2Vzc0J1YmJsZUNhbGxiYWNrKCkKK3sKKyAgICBkZWJ1ZygiIik7
CisgICAgZGVidWcoIkluIElEQlRyYW5zYWN0aW9uIHN1Y2Nlc3MgYnViYmxlIik7CisgICAgdGVz
dEZhaWxlZCgiU3VjY2VzcyBidWJibGUgY2FsbGJhY2sgc2hvdWxkIE5PVCBmaXJlIik7CisgICAg
YnViYmxlRmlyZWQgPSB0cnVlOworfQorCitmdW5jdGlvbiBkYlN1Y2Nlc3NCdWJibGVDYWxsYmFj
aygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJJbiBJREJEYXRhYmFzZSBzdWNjZXNz
IGJ1YmJsZSIpOworICAgIHRlc3RGYWlsZWQoIlN1Y2Nlc3MgYnViYmxlIGNhbGxiYWNrIHNob3Vs
ZCBOT1QgZmlyZSIpOworICAgIGRiQnViYmxlRmlyZWQgPSB0cnVlOworfQorCitmdW5jdGlvbiB0
cmFuc2FjdGlvbkNvbXBsZXRlKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRyYW5z
YWN0aW9uIGNvbXBsZXRlZCIpOworICAgIHNob3VsZEJlVHJ1ZSgiZGJDYXB0dXJlRmlyZWQiKTsK
KyAgICBzaG91bGRCZVRydWUoImNhcHR1cmVGaXJlZCIpOworICAgIHNob3VsZEJlVHJ1ZSgicmVx
dWVzdEZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiYnViYmxlRmlyZWQiKTsKKyAgICBzaG91
bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVkIik7CisgICAgZGVidWcoIiIpOworCisgICAgZmluaXNo
SlNUZXN0KCk7CisgICAgcmV0dXJuOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL3NldFZlcnNpb24tbnVsbC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9zZXRWZXJzaW9uLW51bGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTg4YTNjNzVmNjJjNDZlNGEy
YzM3ODhlODAyMWMzZTM5ZjNjZDNlZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zZXRWZXJzaW9uLW51bGwuanMKQEAgLTAsMCArMSwz
NSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0
cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiB3aXRoIG51
bGwgdmVyc2lvbiBzdHJpbmciKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVu
ZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAg
IGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBl
dmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKG51bGwpOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gcG9zdFNldFZlcnNpb247CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHBvc3RTZXRWZXJzaW9uKCkKK3sKKyAgICBzaG91bGRC
ZSgiZGIudmVyc2lvbiIsICInbnVsbCciKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworCit0
ZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvc2V0VmVyc2lvbi11bmRlZmluZWQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvc2V0VmVyc2lvbi11bmRlZmluZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDc4MzM2ZTM4
ODQzNDBmODMxYTc1N2M2YzYwOTBiYzM1ZDMyYTQxNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zZXRWZXJzaW9uLXVuZGVmaW5lZC5q
cwpAQCAtMCwwICsxLDI4IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0
U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAg
ICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5k
ZXhlZERCIHZlcnNpb24gc3RyaW5nIGlzIHJlcXVpcmVkIik7CisKK2Z1bmN0aW9uIHRlc3QoKQor
eworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlv
bi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3Mo
KQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisK
KyAgICBzaG91bGRUaHJvdygiZGIuc2V0VmVyc2lvbigpOyIpOworICAgIGZpbmlzaEpTVGVzdCgp
OworfQorCisKK3Rlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9zZXRfdmVyc2lvbl9ibG9ja2VkLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NldF92ZXJzaW9uX2Jsb2NrZWQuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NjMzZWI3Yzk5ODgyNDYyYjQ2NmIxMDhlZmU4NGY0ZTc3MmU0ZjA2MAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zZXRfdmVyc2lvbl9i
bG9ja2VkLmpzCkBAIC0wLDAgKzEsNTUgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAg
ICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigi
QW4gb3BlbiBjb25uZWN0aW9uIGJsb2NrcyBhIHNlcGFyYXRlIGNvbm5lY3Rpb24ncyBzZXRWZXJz
aW9uIGNhbGwiKTsKKworY29ubmVjdGlvbnMgPSBbXQorZnVuY3Rpb24gdGVzdCgpCit7CisgICAg
cmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBvcGVuREJDb25uZWN0aW9uKCk7Cit9CisKK2Z1
bmN0aW9uIG9wZW5EQkNvbm5lY3Rpb24oKQoreworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIub3Blbignc2V0LXZlcnNpb24tYmxvY2tlZCcpIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGNvbm5lY3Rp
b24gPSBldmVudC50YXJnZXQucmVzdWx0OworICAgIGNvbm5lY3Rpb25zLnB1c2goY29ubmVjdGlv
bik7CisgICAgb3JpZ2luYWxfdmVyc2lvbiA9IGNvbm5lY3Rpb24udmVyc2lvbjsKKyAgICBpZiAo
Y29ubmVjdGlvbnMubGVuZ3RoIDwgMikKKyAgICAgICAgb3BlbkRCQ29ubmVjdGlvbigpOworICAg
IGVsc2UgeworICAgICAgICB2YXIgdmVyc2lvbkNoYW5nZVJlcXVlc3QgPSBldmFsQW5kTG9nKCJj
b25uZWN0aW9uc1swXS5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgICAgICB2ZXJzaW9u
Q2hhbmdlUmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAg
IHZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uc3VjY2VzcyA9IGluU2V0VmVyc2lvbjsKKyAgICAgICAg
dmVyc2lvbkNoYW5nZVJlcXVlc3Qub25ibG9ja2VkID0gYmxvY2tlZDsKKyAgICB9Cit9CisKK3Nl
ZW5fYmxvY2tlZF9ldmVudCA9IGZhbHNlOworZnVuY3Rpb24gYmxvY2tlZCgpCit7CisgICAgZXZh
bEFuZExvZygic2Vlbl9ibG9ja2VkX2V2ZW50ID0gdHJ1ZSIpOworICAgIGJsb2NrZWRfZXZlbnQg
PSBldmVudDsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImJsb2NrZWRfZXZlbnQudmVyc2lv
biIsICJ2ZXJzaW9uIDEiKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJibG9ja2VkX2V2ZW50LnRh
cmdldC5yZWFkeVN0YXRlIiwgMSk7CisgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbnNbMV0uY2xv
c2UoKSIpOworfQorCitmdW5jdGlvbiBpblNldFZlcnNpb24oKQoreworICAgIGRlYnVnKCJpbiBz
ZXRWZXJzaW9uLm9uc3VjY2VzcyIpOworICAgIHNob3VsZEJlVHJ1ZSgic2Vlbl9ibG9ja2VkX2V2
ZW50Iik7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGNvbm5lY3Rpb25zWzBdKTsKKyAgICBm
aW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NldF92ZXJzaW9uX3F1ZXVlLmpzIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NldF92ZXJzaW9uX3F1ZXVlLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmFhYTM0NWQ0MzdjNjg1OGJhZGEzNzYyZDk5NjYxZmVkMTFiNjVjNjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2V0X3Zl
cnNpb25fcXVldWUuanMKQEAgLTAsMCArMSwxMjIgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMp
IHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlw
dGlvbigiNCBvcGVuIGNvbm5lY3Rpb25zIHRyeSB0byBzZXRWZXJzaW9uIGF0IHRoZSBzYW1lIHRp
bWUuICAzIGNvbm5lY3Rpb25zIGV2ZW50dWFsbHkgY2xvc2UsIGFsbG93aW5nIDEgc2V0VmVyc2lv
biBjYWxsIHRvIHByb2NlZWQuIik7CisKK2Nvbm5lY3Rpb25zID0gW10KK2Z1bmN0aW9uIHRlc3Qo
KQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBvcGVuREJDb25uZWN0aW9u
KCk7Cit9CisKK2Z1bmN0aW9uIG9wZW5EQkNvbm5lY3Rpb24oKQoreworICAgIHJlc3VsdCA9IGV2
YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdzZXQtdmVyc2lvbi1xdWV1ZScpIik7CisgICAgcmVz
dWx0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBj
b25uZWN0aW9uID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICBjb25uZWN0aW9uLm9udmVyc2lv
bmNoYW5nZSA9IGdlbmVyYXRlVmVyc2lvbkNoYW5nZUhhbmRsZXIoKTsKKyAgICBjb25uZWN0aW9u
cy5wdXNoKGNvbm5lY3Rpb24pOworICAgIGlmIChjb25uZWN0aW9ucy5sZW5ndGggPCA0KQorICAg
ICAgICBvcGVuREJDb25uZWN0aW9uKCk7CisgICAgZWxzZSB7CisgICAgICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJjb25uZWN0aW9uc1swXS5zZXRWZXJzaW9uKCd2ZXJzaW9uIDAnKSIpOworICAg
ICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCl7IGNvbm5lY3Rpb25FcnJvcihl
dmVudCwgMCkgfTsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vz
c0NhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uYmxvY2tlZCA9IGJsb2NrZWQwOworICAgICAg
ICByZXF1ZXN0MSA9IGV2YWxBbmRMb2coImNvbm5lY3Rpb25zWzFdLnNldFZlcnNpb24oJ3ZlcnNp
b24gMScpIik7CisgICAgICAgIHJlcXVlc3QxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKKyAgICAgICAgcmVxdWVzdDEub25zdWNjZXNzID0gaW5TZXRWZXJzaW9uMTsKKyAgICAg
ICAgcmVxdWVzdDEub25ibG9ja2VkID0gYmxvY2tlZDE7CisgICAgICAgIHJlcXVlc3QyID0gZXZh
bEFuZExvZygiY29ubmVjdGlvbnNbMl0uc2V0VmVyc2lvbigndmVyc2lvbiAyJykiKTsKKyAgICAg
ICAgcmVxdWVzdDIub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KXsgY29ubmVjdGlvbkVycm9yKGV2
ZW50LCAyKSB9OworICAgICAgICByZXF1ZXN0Mi5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vz
c0NhbGxiYWNrOworICAgICAgICByZXF1ZXN0Mi5vbmJsb2NrZWQgPSBibG9ja2VkMjsKKyAgICAg
ICAgcmVxdWVzdDMgPSBldmFsQW5kTG9nKCJjb25uZWN0aW9uc1szXS5zZXRWZXJzaW9uKCd2ZXJz
aW9uIDMnKSIpOworICAgICAgICByZXF1ZXN0My5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpeyBj
b25uZWN0aW9uRXJyb3IoZXZlbnQsIDMpIH07CisgICAgICAgIHJlcXVlc3QzLm9uc3VjY2VzcyA9
IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3QzLm9uYmxvY2tlZCA9
IGJsb2NrZWQzOworICAgICAgICBkZWJ1ZygiIik7CisgICAgfQorfQorCitmdW5jdGlvbiBnZW5l
cmF0ZVZlcnNpb25DaGFuZ2VIYW5kbGVyKCkKK3sKKyAgICB2YXIgY29ubmVjdGlvbk51bSA9IGNv
bm5lY3Rpb25zLmxlbmd0aDsKKyAgICByZXR1cm4gZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAg
ICAgICBzaG91bGRCZVRydWUoImV2ZW50LnZlcnNpb24ubGVuZ3RoID4gMCIpOworICAgICAgICBk
ZWJ1ZygiY29ubmVjdGlvblsiICsgY29ubmVjdGlvbk51bSArICJdIHJlY2VpdmVkIHZlcnNpb25D
aGFuZ2VFdmVudDogIiArIGV2ZW50LnZlcnNpb24pOworICAgIH0KK30KKworYmxvY2tlZDBmaXJl
ZCA9IGZhbHNlOworYmxvY2tlZDJmaXJlZCA9IGZhbHNlOworZnVuY3Rpb24gYmxvY2tlZDAoZXZl
bnQpCit7CisgICAgZGVidWcoIiIpOworICAgIHRlc3RQYXNzZWQoImNvbm5lY3Rpb25bMF0gZ290
IGJsb2NrZWQgZXZlbnQiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnZlcnNp
b24iLCAidmVyc2lvbiAwIik7CisgICAgZGVidWcoIkNsb3NlIHRoZSBjb25uZWN0aW9uIHRoYXQg
cmVjZWl2ZWQgdGhlIGJsb2NrIGV2ZW50OiIpOworICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb25z
WzBdLmNsb3NlKCkiKTsKKyAgICBkZWJ1ZygiQ2xvc2UgYW5vdGhlciBjb25uZWN0aW9uIGFzIHdl
bGwsIHRvIHRlc3QgNC43LjQtbm90ZToiKTsKKyAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uc1sz
XS5jbG9zZSgpIik7CisgICAgZXZhbEFuZExvZygiYmxvY2tlZDBmaXJlZCA9IHRydWUiKTsKKyAg
ICBkZWJ1ZygiIik7Cit9CisKK2Z1bmN0aW9uIGJsb2NrZWQxKGV2ZW50KQoreworICAgIGRlYnVn
KCIiKQorICAgIHRlc3RQYXNzZWQoImNvbm5lY3Rpb25bMV0gZ290IGJsb2NrZWQgZXZlbnQiKTsK
KyAgICBkZWJ1ZygiRW5zdXJlIHRoYXQgdGhpcyBibG9ja2VkIGV2ZW50IGlzIGluIG9yZGVyOiIp
OworICAgIHNob3VsZEJlVHJ1ZSgiYmxvY2tlZDBmaXJlZCIpOworICAgIHNob3VsZEJlRmFsc2Uo
ImJsb2NrZWQyZmlyZWQiKTsKKyAgICBkZWJ1ZygiIikKK30KKworZnVuY3Rpb24gYmxvY2tlZDIo
ZXZlbnQpCit7CisgICAgZGVidWcoIiIpCisgICAgdGVzdFBhc3NlZCgiY29ubmVjdGlvblsyXSBn
b3QgYmxvY2tlZCBldmVudCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudmVy
c2lvbiIsICJ2ZXJzaW9uIDIiKTsKKyAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uc1syXS5jbG9z
ZSgpIik7CisgICAgZXZhbEFuZExvZygiYmxvY2tlZDJmaXJlZCA9IHRydWUiKTsKKyAgICBkZWJ1
ZygiIikKK30KKworZnVuY3Rpb24gYmxvY2tlZDMoZXZlbnQpCit7CisgICAgZGVidWcoIiIpCisg
ICAgdGVzdFBhc3NlZCgiY29ubmVjdGlvblszXSBnb3QgYmxvY2tlZCBldmVudCIpOworICAgIGRl
YnVnKCJOb3RlOiBUaGlzIG1lYW5zIHRoYXQgYSBjb25uZWN0aW9uIGNhbiByZWNlaXZlIGEgYmxv
Y2tlZCBldmVudCBhZnRlciBpdHMgY2xvc2UoKSBtZXRob2QgaGFzIGJlZW4gY2FsbGVkLiAgU3Bl
YyBpcyBzaWxlbnQgb24gdGhlIGlzc3VlIGFuZCB0aGlzIGlzIGVhc2llc3QgdG8gaW1wbGVtZW50
LiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudmVyc2lvbiIsICJ2ZXJzaW9u
IDMiKTsKK30KKworZnVuY3Rpb24gY29ubmVjdGlvbkVycm9yKGV2ZW50LCBjb25uZWN0aW9uSWQp
Cit7CisgICAgZGVidWcoIiIpCisgICAgdGVzdFBhc3NlZCgiY29ubmVjdGlvblsiICsgY29ubmVj
dGlvbklkICsgIl0gZ290IGVycm9yIGV2ZW50Iik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdl
dC5lcnJvckNvZGUiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uQUJPUlRfRVJSIikKKyAgICBpZiAo
J3dlYmtpdEVycm9yTWVzc2FnZScgaW4gZXZlbnQudGFyZ2V0KSB7CisgICAgICAgIHNob3VsZEJl
KCJldmVudC50YXJnZXQud2Via2l0RXJyb3JNZXNzYWdlLmxlbmd0aCA+IDAiLCAidHJ1ZSIpOwor
ICAgICAgICBkZWJ1ZyhldmVudC50YXJnZXQud2Via2l0RXJyb3JNZXNzYWdlKTsKKyAgICB9Cit9
CisKK2Z1bmN0aW9uIGluU2V0VmVyc2lvbjEoZXZlbnQpCit7CisgICAgZGVidWcoIiIpCisgICAg
dGVzdFBhc3NlZCgiY29ubmVjdGlvblsxXSBnb3QgaW50byBTZXRWZXJzaW9uIik7CisgICAgZmlu
aXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zdHJ1Y3R1cmVkLWNsb25lLmpzIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3N0cnVjdHVyZWQtY2xvbmUuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTY3NTkzMjc0YjAxMjJhNTczODZiNWI0ZDNhNDc2NDRjMmQ1MDFkMAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zdHJ1Y3R1cmVk
LWNsb25lLmpzCkBAIC0wLDAgKzEsNTMxIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Cisg
ICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24o
IlRlc3Qgc3RydWN0dXJlZCBjbG9uZSBwZXJtdXRhdGlvbnMgaW4gSW5kZXhlZERCLiBGaWxlL0Zp
bGVMaXN0IHRlc3RzIHJlcXVpcmUgRHVtcFJlbmRlclRyZWUuIik7CisKK2lmIChzZWxmLmV2ZW50
U2VuZGVyKSB7CisgICAgdmFyIGZpbGVJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJm
aWxlSW5wdXQiKTsKKyAgICB2YXIgZmlsZVJlY3QgPSBmaWxlSW5wdXQuZ2V0Q2xpZW50UmVjdHMo
KVswXTsKKyAgICB2YXIgdGFyZ2V0WCA9IGZpbGVSZWN0LmxlZnQgKyBmaWxlUmVjdC53aWR0aCAv
IDI7CisgICAgdmFyIHRhcmdldFkgPSBmaWxlUmVjdC50b3AgKyBmaWxlUmVjdC5oZWlnaHQgLyAy
OworICAgIGV2ZW50U2VuZGVyLmJlZ2luRHJhZ1dpdGhGaWxlcyhbJ3Jlc291cmNlcy90ZXN0LWRh
dGEuaHRtbCcsICdyZXNvdXJjZXMvdGVzdC1kYXRhLnR4dCddKTsKKyAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyh0YXJnZXRYLCB0YXJnZXRZKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7
Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Cisg
ICAgcHJlcGFyZURhdGFiYXNlKCk7Cit9CisKK2Z1bmN0aW9uIHByZXBhcmVEYXRhYmFzZSgpCit7
CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJQcmVwYXJlIERhdGFiYXNlIik7CisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgnc3RydWN0dXJlZC1j
bG9uZScpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihlKSB7CisgICAgICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbignc3RydWN0dXJlZC1jbG9uZScpIik7CisgICAg
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2co
ImRiID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygiZGIudmVyc2lvbiIsICIiKTsKKyAgICAgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJk
Yi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbihlKSB7CisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ3N0b3JlTmFtZScpIik7CisgICAgICAgICAgICAgICAgdmFyIHRyYW5zID0gcmVxdWVzdC5y
ZXN1bHQ7CisgICAgICAgICAgICAgICAgdHJhbnMub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworICAgICAgICAgICAgICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRD
YWxsYmFjazsKKyAgICAgICAgICAgICAgICB0cmFucy5vbmNvbXBsZXRlID0gc3RhcnRUZXN0czsK
KyAgICAgICAgICAgIH07CisgICAgICAgIH07CisgICAgfTsKK30KKworZnVuY3Rpb24gc3RhcnRU
ZXN0cygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJSdW5uaW5nIHRlc3RzLi4uIik7
CisgICAgdmFyIHRlc3RzX3RvX3J1biA9IFsKKyAgICAgICAgdGVzdFVuZGVmaW5lZCwKKyAgICAg
ICAgdGVzdE51bGwsCisgICAgICAgIHRlc3RCb29sZWFuLAorICAgICAgICB0ZXN0TnVtYmVyLAor
ICAgICAgICB0ZXN0U3RyaW5nLAorICAgICAgICB0ZXN0Qm9vbGVhbk9iamVjdCwKKyAgICAgICAg
dGVzdE51bWJlck9iamVjdCwKKyAgICAgICAgdGVzdFN0cmluZ09iamVjdCwKKyAgICAgICAgdGVz
dERhdGVPYmplY3QsCisgICAgICAgIHRlc3RSZWdFeHBPYmplY3QsCisgICAgICAgIHRlc3RJbWFn
ZURhdGEsCisgICAgICAgIHRlc3RCbG9iLAorICAgICAgICB0ZXN0RmlsZSwKKyAgICAgICAgdGVz
dEZpbGVMaXN0LAorICAgICAgICB0ZXN0QXJyYXksCisgICAgICAgIHRlc3RPYmplY3QKKyAgICBd
OworCisgICAgZnVuY3Rpb24gbmV4dFRlc3QoKSB7CisgICAgICAgIGRlYnVnKCIiKTsKKyAgICAg
ICAgaWYgKHRlc3RzX3RvX3J1bi5sZW5ndGgpIHsKKyAgICAgICAgICAgIHZhciB0ZXN0ID0gdGVz
dHNfdG9fcnVuLnNoaWZ0KCk7CisgICAgICAgICAgICB0ZXN0KG5leHRUZXN0KTsgLy8gV2hlbiBk
b25lLCBjYWxsIHRoaXMgYWdhaW4uCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0ZXN0
QmFkVHlwZXMoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBuZXh0VGVzdCgpOworfQorCitmdW5j
dGlvbiBmb3JFYWNoV2l0aENhbGxiYWNrKHRlc3RGdW5jdGlvbiwgdmFsdWVzLCBjYWxsYmFjaykK
K3sKKyAgICBmdW5jdGlvbiBuZXh0VmFsdWUoKSB7CisgICAgICAgIGlmICh2YWx1ZXMubGVuZ3Ro
KSB7CisgICAgICAgICAgICB0ZXN0RnVuY3Rpb24odmFsdWVzLnNoaWZ0KCksIG5leHRWYWx1ZSk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjYWxsYmFjaygpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgbmV4dFZhbHVlKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RWYWx1ZSh2YWx1ZSwg
Y2FsbGJhY2spCit7CisgICAgLy8gT25lIHRyYW5zYWN0aW9uIHBlciB0ZXN0LCBzaW5jZSBzb21l
IHRlc3RzIHJlcXVpcmUgYXN5bmNocm9ub3VzCisgICAgLy8gb3BlcmF0aW9ucyB0byB2ZXJpZnkg
dGhlIHJlc3VsdCAoZS5nLiB2aWEgRmlsZVJlYWRlcikKKyAgICBldmFsQW5kTG9nKCJ0cmFuc2Fj
dGlvbiA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZU5hbWUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dS
SVRFKSIpOworICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Cisg
ICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1l
JykiKTsKKworICAgIHNlbGYudmFsdWUgPSB2YWx1ZTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
Zygic3RvcmUucHV0KHZhbHVlLCAna2V5JykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUp
IHsKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmdldCgna2V5JykiKTsKKyAg
ICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgY2FsbGJhY2so
cmVxdWVzdC5yZXN1bHQpOworICAgICAgICB9OworICAgIH07Cit9CisKKy8vIElkZW50aXR5IHRl
c3RpbmcsIHNlbnNpdGl2ZSB0byBOYU4gYW5kIC0wCitmdW5jdGlvbiBpcyh4LCB5KSB7CisgICAg
aWYgKHggPT09IHkpIHsKKyAgICAgICAgcmV0dXJuIHggIT09IDAgfHwgMSAvIHggPT09IDEgLyB5
OworICAgIH0KKyAgICByZXR1cm4geCAhPT0geCAmJiB5ICE9PSB5OworfQorCitmdW5jdGlvbiBh
cnJheUNvbXBhcmUoYSwgYikgeworICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGEubGVu
Z3RoOyArK2kpIHsKKyAgICAgICAgaWYgKCFpcyhhW2ldLCBiW2ldKSkgeworICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitm
dW5jdGlvbiB0ZXN0UHJpbWl0aXZlVmFsdWUoc3RyaW5nLCBjYWxsYmFjaykKK3sKKyAgICBkZWJ1
ZygiVGVzdGluZzogIiArIHN0cmluZyk7CisgICAgdmFyIHZhbHVlID0gZXZhbCgidmFsdWUgPSAo
IiArIHN0cmluZyArICIpIik7CisgICAgdGVzdF9kYXRhID0gdmFsdWU7CisgICAgdGVzdFZhbHVl
KHRlc3RfZGF0YSwgZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgIHNlbGYucmVzdWx0ID0gcmVz
dWx0OworICAgICAgICBzaG91bGRCZVRydWUoImlzKHRlc3RfZGF0YSwgcmVzdWx0KSIpOworICAg
ICAgICBkZWJ1ZygiIik7CisgICAgICAgIGNhbGxiYWNrKCk7CisgICAgfSk7Cit9CisKK2Z1bmN0
aW9uIHRlc3RPYmplY3RXaXRoVmFsdWUoc3RyaW5nLCBjYWxsYmFjaykKK3sKKyAgICBkZWJ1Zygi
VGVzdGluZzogIiArIHN0cmluZyk7CisgICAgdmFyIHZhbHVlID0gZXZhbCgidmFsdWUgPSAoIiAr
IHN0cmluZyArICIpIik7CisgICAgdGVzdF9kYXRhID0gdmFsdWU7CisgICAgdGVzdFZhbHVlKHRl
c3RfZGF0YSwgZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgIHNlbGYucmVzdWx0ID0gcmVzdWx0
OworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInR5cGVvZiByZXN1bHQiLCAib2JqZWN0
Iik7CisgICAgICAgIHNob3VsZEJlKCJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocmVz
dWx0KSIsICJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodGVzdF9kYXRhKSIpOworICAg
ICAgICBzaG91bGRCZVRydWUoInRlc3RfZGF0YSAhPT0gcmVzdWx0Iik7CisgICAgICAgIHNob3Vs
ZEJlKCJyZXN1bHQudG9TdHJpbmcoKSIsICJ0ZXN0X2RhdGEudG9TdHJpbmcoKSIpOworICAgICAg
ICBzaG91bGRCZVRydWUoImlzKHRlc3RfZGF0YS52YWx1ZU9mKCksIHJlc3VsdC52YWx1ZU9mKCkp
Iik7CisgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgY2FsbGJhY2soKTsKKyAgICB9KTsKK30K
KworZnVuY3Rpb24gdGVzdFVuZGVmaW5lZChjYWxsYmFjaykKK3sKKyAgICB0ZXN0UHJpbWl0aXZl
VmFsdWUoInVuZGVmaW5lZCIsIGNhbGxiYWNrKTsKK30KKworZnVuY3Rpb24gdGVzdE51bGwoY2Fs
bGJhY2spCit7CisgICAgdGVzdFByaW1pdGl2ZVZhbHVlKCJudWxsIiwgY2FsbGJhY2spOworfQor
CitmdW5jdGlvbiB0ZXN0Qm9vbGVhbihjYWxsYmFjaykKK3sKKyAgICBkZWJ1ZygiVGVzdGluZyBi
b29sZWFuIHByaW1pdGl2ZXMiKTsKKyAgICBkZWJ1ZygiIik7CisgICAgZm9yRWFjaFdpdGhDYWxs
YmFjayh0ZXN0UHJpbWl0aXZlVmFsdWUsIFsidHJ1ZSIsICJmYWxzZSJdLCBjYWxsYmFjayk7Cit9
CisKK2Z1bmN0aW9uIHRlc3RCb29sZWFuT2JqZWN0KGNhbGxiYWNrKQoreworICAgIGRlYnVnKCJU
ZXN0aW5nIEJvb2xlYW4gb2JqZWN0cyIpOworICAgIGRlYnVnKCIiKTsKKyAgICBmb3JFYWNoV2l0
aENhbGxiYWNrKHRlc3RPYmplY3RXaXRoVmFsdWUsIFsKKyAgICAgICAgIm5ldyBCb29sZWFuKHRy
dWUpIiwKKyAgICAgICAgIm5ldyBCb29sZWFuKGZhbHNlKSIKKyAgICBdLCBjYWxsYmFjayk7Cit9
CisKK2Z1bmN0aW9uIHRlc3RTdHJpbmcoY2FsbGJhY2spCit7CisgICAgZGVidWcoIlRlc3Rpbmcg
c3RyaW5nIHByaW1pdGl2ZXMiKTsKKyAgICBkZWJ1ZygiIik7CisgICAgZm9yRWFjaFdpdGhDYWxs
YmFjayh0ZXN0UHJpbWl0aXZlVmFsdWUsIFsKKyAgICAgICAgIicnIiwKKyAgICAgICAgIid0aGlz
IGlzIGEgc2FtcGxlIHN0cmluZyciLAorICAgICAgICAiJ251bGwoXFwwKSciCisgICAgXSwgY2Fs
bGJhY2spOworfQorCitmdW5jdGlvbiB0ZXN0U3RyaW5nT2JqZWN0KGNhbGxiYWNrKQoreworICAg
IGRlYnVnKCJUZXN0aW5nIFN0cmluZyBvYmplY3RzIik7CisgICAgZGVidWcoIiIpOworICAgIGZv
ckVhY2hXaXRoQ2FsbGJhY2sodGVzdE9iamVjdFdpdGhWYWx1ZSwgWworICAgICAgICAibmV3IFN0
cmluZygpIiwKKyAgICAgICAgIm5ldyBTdHJpbmcoJ3RoaXMgaXMgYSBzYW1wbGUgc3RyaW5nJyki
LAorICAgICAgICAibmV3IFN0cmluZygnbnVsbChcXDApJykiCisgICAgXSwgY2FsbGJhY2spOwor
fQorCitmdW5jdGlvbiB0ZXN0TnVtYmVyKGNhbGxiYWNrKQoreworICAgIGRlYnVnKCJUZXN0aW5n
IG51bWJlciBwcmltaXRpdmVzIik7CisgICAgZGVidWcoIiIpOworICAgIGZvckVhY2hXaXRoQ2Fs
bGJhY2sodGVzdFByaW1pdGl2ZVZhbHVlLCBbCisgICAgICAgICJOYU4iLAorICAgICAgICAiLUlu
ZmluaXR5IiwKKyAgICAgICAgIi1OdW1iZXIuTUFYX1ZBTFVFIiwKKyAgICAgICAgIi1OdW1iZXIu
TUlOX1ZBTFVFIiwKKyAgICAgICAgIi0wIiwKKyAgICAgICAgIjAiLAorICAgICAgICAiTnVtYmVy
Lk1JTl9WQUxVRSIsCisgICAgICAgICJOdW1iZXIuTUFYX1ZBTFVFIiwKKyAgICAgICAgIkluZmlu
aXR5IgorICAgIF0sIGNhbGxiYWNrKTsKK30KKworZnVuY3Rpb24gdGVzdE51bWJlck9iamVjdChj
YWxsYmFjaykKK3sKKyAgICBkZWJ1ZygiVGVzdGluZyBOdW1iZXIgb2JqZWN0cyIpOworICAgIGRl
YnVnKCIiKTsKKyAgICBmb3JFYWNoV2l0aENhbGxiYWNrKHRlc3RPYmplY3RXaXRoVmFsdWUsIFsK
KyAgICAgICAgIm5ldyBOdW1iZXIoTmFOKSIsCisgICAgICAgICJuZXcgTnVtYmVyKC1JbmZpbml0
eSkiLAorICAgICAgICAibmV3IE51bWJlcigtTnVtYmVyLk1BWF9WQUxVRSkiLAorICAgICAgICAi
bmV3IE51bWJlcigtTnVtYmVyLk1JTl9WQUxVRSkiLAorICAgICAgICAibmV3IE51bWJlcigtMCki
LAorICAgICAgICAibmV3IE51bWJlcigwKSIsCisgICAgICAgICJuZXcgTnVtYmVyKE51bWJlci5N
SU5fVkFMVUUpIiwKKyAgICAgICAgIm5ldyBOdW1iZXIoTnVtYmVyLk1BWF9WQUxVRSkiLAorICAg
ICAgICAibmV3IE51bWJlcihJbmZpbml0eSkiCisgICAgXSwgY2FsbGJhY2spOworfQorCitmdW5j
dGlvbiB0ZXN0RGF0ZU9iamVjdChjYWxsYmFjaykKK3sKKyAgICBkZWJ1ZygiVGVzdGluZyBEYXRl
IG9iamVjdHMiKTsKKyAgICBkZWJ1ZygiIik7CisgICAgZm9yRWFjaFdpdGhDYWxsYmFjayh0ZXN0
T2JqZWN0V2l0aFZhbHVlLCBbCisgICAgICAgICJuZXcgRGF0ZSgtMWUxMykiLAorICAgICAgICAi
bmV3IERhdGUoLTFlMTIpIiwKKyAgICAgICAgIm5ldyBEYXRlKC0xZTkpIiwKKyAgICAgICAgIm5l
dyBEYXRlKC0xZTYpIiwKKyAgICAgICAgIm5ldyBEYXRlKC0xZTMpIiwKKyAgICAgICAgIm5ldyBE
YXRlKDApIiwKKyAgICAgICAgIm5ldyBEYXRlKDFlMykiLAorICAgICAgICAibmV3IERhdGUoMWU2
KSIsCisgICAgICAgICJuZXcgRGF0ZSgxZTkpIiwKKyAgICAgICAgIm5ldyBEYXRlKDFlMTIpIiwK
KyAgICAgICAgIm5ldyBEYXRlKDFlMTMpIgorICAgIF0sIGNhbGxiYWNrKTsKK30KKworZnVuY3Rp
b24gdGVzdFJlZ0V4cE9iamVjdChjYWxsYmFjaykKK3sKKyAgICBkZWJ1ZygiVGVzdGluZyBSZWdF
eHAgb2JqZWN0cyIpOworICAgIGRlYnVnKCIiKTsKKyAgICBmdW5jdGlvbiB0ZXN0UmVnRXhwKHN0
cmluZywgY2FsbGJhY2spIHsKKyAgICAgICAgZGVidWcoIlRlc3RpbmcgUmVnRXhwOiAiICsgc3Ry
aW5nKTsKKyAgICAgICAgdmFyIHZhbHVlID0gZXZhbCgidmFsdWUgPSAoIiArIHN0cmluZyArICIp
Iik7CisgICAgICAgIHRlc3RfZGF0YSA9IHZhbHVlOworICAgICAgICB0ZXN0VmFsdWUodGVzdF9k
YXRhLCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgICAgICAgIHNlbGYucmVzdWx0ID0gcmVzdWx0
OworICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXN0X2RhdGEgIT09IHJlc3VsdCIpOworICAg
ICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5n
LmNhbGwocmVzdWx0KSIsICJbb2JqZWN0IFJlZ0V4cF0iKTsKKyAgICAgICAgICAgIHNob3VsZEJl
KCJyZXN1bHQudG9TdHJpbmcoKSIsICJ0ZXN0X2RhdGEudG9TdHJpbmcoKSIpOworICAgICAgICAg
ICAgZGVidWcoIiIpOworICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgfSk7CisgICAg
fQorCisgICAgZm9yRWFjaFdpdGhDYWxsYmFjayh0ZXN0UmVnRXhwLCBbCisgICAgICAgICJuZXcg
UmVnRXhwKCkiLAorICAgICAgICAiL2FiYy8iLAorICAgICAgICAiL2FiYy9nIiwKKyAgICAgICAg
Ii9hYmMvaSIsCisgICAgICAgICIvYWJjL2dpIiwKKyAgICAgICAgIi9hYmMvbSIsCisgICAgICAg
ICIvYWJjL21nIiwKKyAgICAgICAgIi9hYmMvbWkiLAorICAgICAgICAiL2FiYy9tZ2kiCisgICAg
XSwgY2FsbGJhY2spOworfQorCitmdW5jdGlvbiB0ZXN0SW1hZ2VEYXRhKGNhbGxiYWNrKQorewor
ICAgIGRlYnVnKCJUZXN0aW5nIEltYWdlRGF0YSIpOworICAgIGV2YWxBbmRMb2coImNhbnZhcyA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpIik7CisgICAgZXZhbEFuZExvZygiY2Fu
dmFzLndpZHRoID0gOCIpOworICAgIGV2YWxBbmRMb2coImNhbnZhcy5oZWlnaHQgPSA4Iik7Cisg
ICAgZXZhbEFuZExvZygidGVzdF9kYXRhID0gY2FudmFzLmdldENvbnRleHQoJzJkJykuZ2V0SW1h
Z2VEYXRhKDAsIDAsIDgsIDgpIik7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI1NjsgKytp
KSB7CisgICAgICAgIHRlc3RfZGF0YS5kYXRhW2ldID0gaTsKKyAgICB9CisKKyAgICB0ZXN0VmFs
dWUodGVzdF9kYXRhLCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgICAgc2VsZi5yZXN1bHQgPSBy
ZXN1bHQ7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgidGVzdF9kYXRhICE9PSByZXN1bHQiKTsKKyAg
ICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNh
bGwocmVzdWx0KSIsICJbb2JqZWN0IEltYWdlRGF0YV0iKTsKKyAgICAgICAgc2hvdWxkQmUoInJl
c3VsdC53aWR0aCIsICJ0ZXN0X2RhdGEud2lkdGgiKTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3Vs
dC5oZWlnaHQiLCAidGVzdF9kYXRhLmhlaWdodCIpOworICAgICAgICBzaG91bGRCZSgicmVzdWx0
LmRhdGEubGVuZ3RoIiwgInRlc3RfZGF0YS5kYXRhLmxlbmd0aCIpOworICAgICAgICBpZiAoYXJy
YXlDb21wYXJlKHRlc3RfZGF0YS5kYXRhLCByZXN1bHQuZGF0YSkpIHsKKyAgICAgICAgICAgIHRl
c3RQYXNzZWQoInJlc3VsdCBkYXRhIG1hdGNoZXMiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIHRlc3RGYWlsZWQoInJlc3VsdCBkYXRhIGRvZXNuJ3QgbWF0Y2giKTsKKyAgICAgICAg
fQorICAgICAgICBjYWxsYmFjaygpOworICAgIH0pOworfQorCitmdW5jdGlvbiByZWFkQmxvYkFz
VGV4dChibG9iLCBjYWxsYmFjaykKK3sKKyAgICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIo
KTsKKyAgICByZWFkZXIub25sb2FkID0gZnVuY3Rpb24oZSkgeworICAgICAgICBpZiAoZS50YXJn
ZXQucmVhZHlTdGF0ZSA9PT0gRmlsZVJlYWRlci5ET05FKSB7CisgICAgICAgICAgICBjYWxsYmFj
ayhlLnRhcmdldC5yZXN1bHQpOworICAgICAgICB9CisgICAgfTsKKyAgICByZWFkZXIub25lcnJv
ciA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiRXJyb3IgcmVhZGluZyBibG9i
IGFzIHRleHQ6ICIgKyBlKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfTsKKyAgICBy
ZWFkZXIucmVhZEFzVGV4dChibG9iKTsKK30KKworZnVuY3Rpb24gY2hlY2tCbG9iQ29udGVudHMo
YmxvYiwgZXhwZWN0ZWQsIGNhbGxiYWNrKQoreworICAgIHJlYWRCbG9iQXNUZXh0KGJsb2IsIGZ1
bmN0aW9uKHRleHQpIHsKKyAgICAgICAgc2VsZi50ZXh0ID0gdGV4dDsKKyAgICAgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJ0ZXh0IiwgZXhwZWN0ZWQpOworICAgICAgICBjYWxsYmFjaygpOwor
ICAgIH0pOworfQorCitmdW5jdGlvbiBjb21wYXJlQmxvYnMoYmxvYjEsIGJsb2IyLCBjYWxsYmFj
aykKK3sKKyAgICByZWFkQmxvYkFzVGV4dChibG9iMSwgZnVuY3Rpb24odGV4dDEpIHsKKyAgICAg
ICAgcmVhZEJsb2JBc1RleHQoYmxvYjIsIGZ1bmN0aW9uKHRleHQyKSB7CisgICAgICAgICAgICBz
ZWxmLnRleHQxID0gdGV4dDE7CisgICAgICAgICAgICBzZWxmLnRleHQyID0gdGV4dDI7CisgICAg
ICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInRleHQyIiwgdGV4dDEpOworICAgICAgICAg
ICAgY2FsbGJhY2soKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIHRlc3RC
bG9iKGNhbGxiYWNrKQoreworICAgIGRlYnVnKCJUZXN0aW5nIEJsb2IiKTsKKworICAgIC8vIEZJ
WE1FOiBCbG9iLCBGaWxlLCBhbmQgRmlsZUxpc3Qgc3VwcG9ydCBpcyBpbmNvbXBsZXRlLgorICAg
IC8vIGh0dHA6Ly9jcmJ1Zy5jb20vMTA4MDEyCisgICAgZGVidWcoIlNraXBwaW5nIHRlc3QiKTsK
KyAgICBjYWxsYmFjaygpOworICAgIHJldHVybjsKKworICAgIGV2YWxBbmRMb2coIkJsb2JCdWls
ZGVyID0gc2VsZi5CbG9iQnVpbGRlciB8fCBzZWxmLldlYktpdEJsb2JCdWlsZGVyIik7CisgICAg
c2hvdWxkQmVUcnVlKCJCbG9iQnVpbGRlciAhPSBudWxsIik7CisgICAgc2hvdWxkQmVUcnVlKCJG
aWxlUmVhZGVyICE9IG51bGwiKTsKKyAgICBldmFsQW5kTG9nKCJidWlsZGVyID0gbmV3IEJsb2JC
dWlsZGVyKCkiKTsKKyAgICBldmFsQW5kTG9nKCJ0ZXN0X2NvbnRlbnQgPSAnVGhpcyBpcyBhIHRl
c3QuIFRoaXMgaXMgb25seSBhIHRlc3QuJyIpOworICAgIGV2YWxBbmRMb2coImJ1aWxkZXIuYXBw
ZW5kKHRlc3RfY29udGVudCkiKTsKKyAgICBldmFsQW5kTG9nKCJ0ZXN0X2RhdGEgPSBidWlsZGVy
LmdldEJsb2IoKSIpOworICAgIHRlc3RWYWx1ZSh0ZXN0X2RhdGEsIGZ1bmN0aW9uKHJlc3VsdCkg
eworICAgICAgICBzZWxmLnJlc3VsdCA9IHJlc3VsdDsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJ0
ZXN0X2RhdGEgIT09IHJlc3VsdCIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIk9i
amVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChyZXN1bHQpIiwgIltvYmplY3QgQmxvYl0iKTsK
KyAgICAgICAgc2hvdWxkQmUoInJlc3VsdC5zaXplIiwgInRlc3RfZGF0YS5zaXplIik7CisgICAg
ICAgIHNob3VsZEJlKCJyZXN1bHQudHlwZSIsICJ0ZXN0X2RhdGEudHlwZSIpOworICAgICAgICBj
aGVja0Jsb2JDb250ZW50cyhyZXN1bHQsIHRlc3RfY29udGVudCwgY2FsbGJhY2spOworICAgIH0p
OworfQorCitmdW5jdGlvbiBjb21wYXJlRmlsZXMoZmlsZTEsIGZpbGUyLCBjYWxsYmFjaykKK3sK
KyAgICBzZWxmLmZpbGUxID0gZmlsZTE7CisgICAgc2VsZi5maWxlMiA9IGZpbGUyOworICAgIHNo
b3VsZEJlVHJ1ZSgiZmlsZTEgIT09IGZpbGUyIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZmlsZTEpIiwgIltvYmplY3QgRmlsZV0i
KTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcu
Y2FsbChmaWxlMikiLCAiW29iamVjdCBGaWxlXSIpOworICAgIGRlYnVnKCJmaWxlMS5zaXplOiAi
ICsgZmlsZTEuc2l6ZSk7CisgICAgc2hvdWxkQmUoImZpbGUxLnNpemUiLCAiZmlsZTIuc2l6ZSIp
OworICAgIGRlYnVnKCJmaWxlMS50eXBlOiAiICsgZmlsZTEudHlwZSk7CisgICAgc2hvdWxkQmUo
ImZpbGUxLnR5cGUiLCAiZmlsZTIudHlwZSIpOworICAgIGRlYnVnKCJmaWxlMS5uYW1lOiAiICsg
ZmlsZTEubmFtZSk7CisgICAgc2hvdWxkQmUoImZpbGUxLm5hbWUiLCAiZmlsZTIubmFtZSIpOwor
ICAgIHNob3VsZEJlKCJTdHJpbmcoZmlsZTEubGFzdE1vZGlmaWVkRGF0ZSkiLCAiU3RyaW5nKGZp
bGUyLmxhc3RNb2RpZmllZERhdGUpIik7CisgICAgaWYgKGNhbGxiYWNrKSB7CisgICAgICAgIGNv
bXBhcmVCbG9icyhmaWxlMSwgZmlsZTIsIGNhbGxiYWNrKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9u
IHRlc3RGaWxlKGNhbGxiYWNrKQoreworICAgIGRlYnVnKCJUZXN0aW5nIEZpbGUiKTsKKworICAg
IC8vIEZJWE1FOiBCbG9iLCBGaWxlLCBhbmQgRmlsZUxpc3Qgc3VwcG9ydCBpcyBpbmNvbXBsZXRl
LgorICAgIC8vIGh0dHA6Ly9jcmJ1Zy5jb20vMTA4MDEyCisgICAgZGVidWcoIlNraXBwaW5nIHRl
c3QiKTsKKyAgICBjYWxsYmFjaygpOworICAgIHJldHVybjsKKworICAgIGV2YWxBbmRMb2coInRl
c3RfY29udGVudCA9IGZpbGVJbnB1dC5maWxlc1swXSIpOworCisgICAgc2VsZi50ZXN0X2RhdGEg
PSB0ZXN0X2NvbnRlbnQ7CisgICAgdGVzdFZhbHVlKHRlc3RfZGF0YSwgZnVuY3Rpb24ocmVzdWx0
KSB7CisgICAgICAgIHNlbGYucmVzdWx0ID0gcmVzdWx0OworICAgICAgICBjb21wYXJlRmlsZXMo
cmVzdWx0LCB0ZXN0X2RhdGEsIGNhbGxiYWNrKTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gdGVz
dEZpbGVMaXN0KGNhbGxiYWNrKQoreworICAgIGRlYnVnKCJUZXN0aW5nIEZpbGVMaXN0Iik7CisK
KyAgICAvLyBGSVhNRTogQmxvYiwgRmlsZSwgYW5kIEZpbGVMaXN0IHN1cHBvcnQgaXMgaW5jb21w
bGV0ZS4KKyAgICAvLyBodHRwOi8vY3JidWcuY29tLzEwODAxMgorICAgIGRlYnVnKCJTa2lwcGlu
ZyB0ZXN0Iik7CisgICAgY2FsbGJhY2soKTsKKyAgICByZXR1cm47CisKKyAgICBldmFsQW5kTG9n
KCJ0ZXN0X2NvbnRlbnQgPSBmaWxlSW5wdXQuZmlsZXMiKTsKKworICAgIHNlbGYudGVzdF9kYXRh
ID0gdGVzdF9jb250ZW50OworICAgIHRlc3RWYWx1ZSh0ZXN0X2RhdGEsIGZ1bmN0aW9uKHJlc3Vs
dCkgeworICAgICAgICBzZWxmLnJlc3VsdCA9IHJlc3VsdDsKKyAgICAgICAgc2hvdWxkQmVUcnVl
KCJ0ZXN0X2RhdGEgIT09IHJlc3VsdCIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
Ik9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChyZXN1bHQpIiwgIltvYmplY3QgRmlsZUxp
c3RdIik7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHQubGVuZ3RoIiwgInRlc3RfZGF0YS5sZW5n
dGgiKTsKKyAgICAgICAgaSA9IDA7CisgICAgICAgIGZ1bmN0aW9uIGRvTmV4dCgpIHsKKyAgICAg
ICAgICAgIGlmIChpID49IHRlc3RfZGF0YS5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBjYWxs
YmFjaygpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiY29t
cGFyaW5nIGZpbGVbIiArIGkgKyAiXSIpOworICAgICAgICAgICAgICAgIGNvbXBhcmVGaWxlcyhy
ZXN1bHRbaV0sIHRlc3RfZGF0YVtpKytdLCBkb05leHQpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIGRvTmV4dCgpOworICAgIH0pOworfQorCitmdW5jdGlvbiB0ZXN0QXJyYXko
Y2FsbGJhY2spIHsKKyAgICBkZWJ1ZygiVGVzdGluZyBBcnJheSIpOworICAgIGV2YWxBbmRMb2co
InRlc3RfZGF0YSA9IFtdIik7CisgICAgZXZhbEFuZExvZygidGVzdF9kYXRhWzBdID0gJ2Zvbyci
KTsKKyAgICBldmFsQW5kTG9nKCJ0ZXN0X2RhdGFbMV0gPSAnYmFyJyIpOworICAgIGV2YWxBbmRM
b2coInRlc3RfZGF0YVsxMF0gPSB0cnVlIik7CisgICAgZXZhbEFuZExvZygidGVzdF9kYXRhWzEx
XSA9IGZhbHNlIik7CisgICAgZXZhbEFuZExvZygidGVzdF9kYXRhWzIwXSA9IDEyMyIpOworICAg
IGV2YWxBbmRMb2coInRlc3RfZGF0YVsyMV0gPSA0NTYiKTsKKyAgICBldmFsQW5kTG9nKCJ0ZXN0
X2RhdGFbMzBdID0gbnVsbCIpOworCisgICAgdGVzdFZhbHVlKHRlc3RfZGF0YSwgZnVuY3Rpb24o
cmVzdWx0KSB7CisgICAgICAgIHNlbGYucmVzdWx0ID0gcmVzdWx0OworICAgICAgICBzaG91bGRC
ZVRydWUoInRlc3RfZGF0YSAhPT0gcmVzdWx0Iik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgidGVz
dF9kYXRhLmxlbmd0aCA9PT0gcmVzdWx0Lmxlbmd0aCIpOworICAgICAgICBPYmplY3Qua2V5cyh0
ZXN0X2RhdGEpLmZvckVhY2goCisgICAgICAgICAgICBmdW5jdGlvbihrZXkpIHsKKyAgICAgICAg
ICAgICAgICBzaG91bGRCZSgidGVzdF9kYXRhWyIgKyBrZXkgKyAiXSIsICJyZXN1bHRbIiArIGtl
eSArICJdIik7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgY2FsbGJhY2soKTsKKyAgICB9KTsK
K30KKworZnVuY3Rpb24gdGVzdE9iamVjdChjYWxsYmFjaykgeworICAgIGRlYnVnKCJUZXN0aW5n
IE9iamVjdCIpOworICAgIGV2YWxBbmRMb2coInRlc3RfZGF0YSA9IFtdIik7CisgICAgZXZhbEFu
ZExvZygidGVzdF9kYXRhWzBdID0gJ2ZvbyciKTsKKyAgICBldmFsQW5kTG9nKCJ0ZXN0X2RhdGFb
MV0gPSAnYmFyJyIpOworICAgIGV2YWxBbmRMb2coInRlc3RfZGF0YVsnYSddID0gdHJ1ZSIpOwor
ICAgIGV2YWxBbmRMb2coInRlc3RfZGF0YVsnYiddID0gZmFsc2UiKTsKKyAgICBldmFsQW5kTG9n
KCJ0ZXN0X2RhdGFbJ2ZvbyddID0gMTIzIik7CisgICAgZXZhbEFuZExvZygidGVzdF9kYXRhWydi
YXInXSA9IDQ1NiIpOworICAgIGV2YWxBbmRMb2coInRlc3RfZGF0YVsnJ10gPSBudWxsIik7CisK
KyAgICB0ZXN0VmFsdWUodGVzdF9kYXRhLCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgICAgc2Vs
Zi5yZXN1bHQgPSByZXN1bHQ7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgidGVzdF9kYXRhICE9PSBy
ZXN1bHQiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJhcnJheUNvbXBhcmUoT2JqZWN0LmtleXMo
cmVzdWx0KS5zb3J0KCksIE9iamVjdC5rZXlzKHRlc3RfZGF0YSkuc29ydCgpKSIpOworICAgICAg
ICBPYmplY3Qua2V5cyh0ZXN0X2RhdGEpLmZvckVhY2goCisgICAgICAgICAgICBmdW5jdGlvbihr
ZXkpIHsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgidGVzdF9kYXRhWyIgKyBKU09OLnN0cmlu
Z2lmeShrZXkpICsgIl0iLCAicmVzdWx0WyIgKyBKU09OLnN0cmluZ2lmeShrZXkpICsgIl0iKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICBjYWxsYmFjaygpOworICAgIH0pOworfQorCitmdW5j
dGlvbiB0ZXN0QmFkVHlwZXMoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVzdCB0
eXBlcyB0aGF0IGNhbid0IGJlIGNsb25lZDoiKTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICBldmFs
QW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZU5hbWUnLCBJREJUcmFu
c2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rp
b24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgdHJhbnNhY3Rpb24ub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB1
bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjazsKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gZmlu
aXNoSlNUZXN0OworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJPdGhlciBKYXZhU2NyaXB0
IG9iamVjdCB0eXBlczoiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5wdXQo
bmV3IEVycm9yLCAna2V5JykiLCAiRE9NRXhjZXB0aW9uLkRBVEFfQ0xPTkVfRVJSIik7CisgICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KG5ldyBGdW5jdGlvbiwgJ2tleScpIiwg
IkRPTUV4Y2VwdGlvbi5EQVRBX0NMT05FX0VSUiIpOworCisgICAgZGVidWcoIiIpOworICAgIGRl
YnVnKCJPdGhlciBob3N0IG9iamVjdCB0eXBlczoiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJzdG9yZS5wdXQoc2VsZiwgJ2tleScpIiwgIkRPTUV4Y2VwdGlvbi5EQVRBX0NMT05FX0VS
UiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLnB1dChkb2N1bWVudCwgJ2tl
eScpIiwgIkRPTUV4Y2VwdGlvbi5EQVRBX0NMT05FX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RF
eGNlcHRpb24oInN0b3JlLnB1dChkb2N1bWVudC5ib2R5LCAna2V5JykiLCAiRE9NRXhjZXB0aW9u
LkRBVEFfQ0xPTkVfRVJSIik7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
dHJhbnNhY3Rpb24tYWJvcnQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvdHJhbnNhY3Rpb24tYWJvcnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTg2OGU4NzllM2M0NDk0NmM5
ZDkxMWJjZThiZTY5NjAyMDczMzc2MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1hYm9ydC5qcwpAQCAtMCwwICsx
LDkwIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3Jp
cHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgdHJhbnNhY3Rpb24gYWJv
cnRzIHNlbmQgdGhlIHByb3BlciBvbmFib3J0IG1lc3NhZ2VzLi4iKTsKKworZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJpbmRleGVkREIub3BlbignbmFtZScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBzZXRWZXJzaW9uOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2co
ImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGRlbGV0ZUV4aXN0aW5nOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxldGVFeGlzdGluZygpCit7CisgICAgZGVidWcoInNl
dFZlcnNpb25TdWNjZXNzKCk6Iik7CisgICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5z
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51
bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAg
ZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IHN0YXJ0VGVzdCIpOworCisgICAgZGVsZXRl
QWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBk
Yi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiBzdGFydFRlc3QoKQoreworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50
cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwor
ICAgIGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSB0cmFuc2FjdGlvbkFib3J0ZWQiKTsKKyAg
ICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJh
Y2siKTsKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUo
J3N0b3JlTmFtZScpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDog
J3ZhbHVlMicsIHk6ICd6enoyJ30sICdrZXkyJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBm
aXJzdEFkZDsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJh
Y2s7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlMycsIHk6
ICd6enozJ30sICdrZXkzJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBzZWNvbmRBZGQ7Cisg
ICAgdHJhbnMuYWJvcnQoKTsKKworICAgIGZpcnN0RXJyb3IgPSBmYWxzZTsKKyAgICBzZWNvbmRF
cnJvciA9IGZhbHNlOworICAgIGFib3J0RmlyZWQgPSBmYWxzZTsKK30KKworZnVuY3Rpb24gZmly
c3RBZGQoKQoreworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuZXJyb3JDb2RlIiwgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLkFCT1JUX0VSUiIpOworICAgIHNob3VsZEJlRmFsc2UoImZpcnN0RXJy
b3IiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJzZWNvbmRFcnJvciIpOworICAgIHNob3VsZEJlRmFs
c2UoImFib3J0RmlyZWQiKTsKKyAgICBmaXJzdEVycm9yID0gdHJ1ZTsKKworICAgIGV2YWxBbmRF
eHBlY3RFeGNlcHRpb24oInN0b3JlLmFkZCh7eDogJ3ZhbHVlNCcsIHk6ICd6eno0J30sICdrZXk0
JykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7Cit9
CisKK2Z1bmN0aW9uIHNlY29uZEFkZCgpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5l
cnJvckNvZGUiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uQUJPUlRfRVJSIik7CisgICAgc2hvdWxk
QmVUcnVlKCJmaXJzdEVycm9yIik7CisgICAgc2hvdWxkQmVGYWxzZSgic2Vjb25kRXJyb3IiKTsK
KyAgICBzaG91bGRCZUZhbHNlKCJhYm9ydEZpcmVkIik7CisgICAgc2Vjb25kRXJyb3IgPSB0cnVl
OworfQorCitmdW5jdGlvbiB0cmFuc2FjdGlvbkFib3J0ZWQoKQoreworICAgIHNob3VsZEJlVHJ1
ZSgiZmlyc3RFcnJvciIpOworICAgIHNob3VsZEJlVHJ1ZSgic2Vjb25kRXJyb3IiKTsKKyAgICBz
aG91bGRCZUZhbHNlKCJhYm9ydEZpcmVkIik7CisgICAgYWJvcnRGaXJlZCA9IHRydWU7CisKKyAg
ICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZTUnLCB5OiAnenp6
NSd9LCAna2V5NScpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZF
X0VSUiIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL3RyYW5zYWN0aW9uLWFmdGVyLWNsb3NlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWFmdGVyLWNsb3NlLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQ2MGY2ZGJkNWI5YzlhZWFiYjRhNTBmMjQ1YjQxYWQ3OTM1YWZlNzcKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rp
b24tYWZ0ZXItY2xvc2UuanMKQEAgLTAsMCArMSw4MSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0
cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2Ny
aXB0aW9uKCJUZXN0IGNsb3NpbmcgYSBkYXRhYmFzZSBjb25uZWN0aW9uIGluIEluZGV4ZWREQi4i
KTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKwor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndHJhbnNhY3Rpb24tYWZ0
ZXItY2xvc2UnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBzZWxm
LmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gaW5TZXRWZXJzaW9uOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBpblNldFZlcnNpb24o
KQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBldmVudC50YXJnZXQu
cmVzdWx0Lm9uY29tcGxldGUgPSBydW5GaXJzdFJlZ3VsYXJUcmFuc2FjdGlvbjsKKyAgICBldmVu
dC50YXJnZXQucmVzdWx0Lm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICBz
dG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJyki
KTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHN0b3JlLnB1dCgneCcsICd5
JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9uUHV0U3VjY2VzczsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb25QdXRT
dWNjZXNzKCkKK3sKKyAgICB0ZXN0UGFzc2VkKCJQdXQgc3VjY2VzcyIpCit9CisKK2Z1bmN0aW9u
IHJ1bkZpcnN0UmVndWxhclRyYW5zYWN0aW9uKCkKK3sKKyAgICBkZWJ1ZygicnVubmluZyBmaXJz
dCB0cmFuc2FjdGlvbiIpCisgICAgY3VycmVudFRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygiY3Vy
cmVudFRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZSddLCBJREJUcmFuc2FjdGlv
bi5SRUFEX1dSSVRFKSIpOworICAgIGN1cnJlbnRUcmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBl
Y3RlZEFib3J0Q2FsbGJhY2s7CisgICAgY3VycmVudFRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBm
aXJzdFRyYW5zYWN0aW9uQ29tcGxldGU7CisgICAgb2JqZWN0U3RvcmUgPSBjdXJyZW50VHJhbnNh
Y3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJyk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIm9i
amVjdFN0b3JlLnB1dCgnYScsICdiJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZmlyc3RUcmFuc2FjdGlvbkNvbXBsZXRl
KCkKK3sKKyAgICBldmFsQW5kTG9nKCJkYi5jbG9zZSgpIik7CisgICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oWydzdG9yZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dS
SVRFKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9FUlIiKTsKKworICAgIGRl
YnVnKCIiKQorICAgIGRlYnVnKCJ2ZXJpZnkgdGhhdCB3ZSBjYW4gcmVvcGVuIHRoZSBkYiBhZnRl
ciBjYWxsaW5nIGNsb3NlIikKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9w
ZW4oJ3RyYW5zYWN0aW9uLWFmdGVyLWNsb3NlJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IG9uU2Vjb25kT3BlbgorICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworfQorCitmdW5jdGlvbiBvblNlY29uZE9wZW4oKSB7CisgICAgc2Vjb25kX2RiID0gZXZh
bEFuZExvZygic2Vjb25kX2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIGN1cnJlbnRU
cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coImN1cnJlbnRUcmFuc2FjdGlvbiA9IHNlY29uZF9kYi50
cmFuc2FjdGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAg
c3RvcmUgPSBjdXJyZW50VHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJyk7CisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdG9yZS5wdXQoJzEnLCAnMicpIik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBvbkZpbmFsUHV0U3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBjdXJyZW50VHJhbnNhY3Rpb24ub25j
b21wbGV0ZSA9IGZpbmlzaEpTVGVzdDsKKyAgICBjdXJyZW50VHJhbnNhY3Rpb24ub25hYm9ydCA9
IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworfQorCitmdW5jdGlvbiBvbkZpbmFsUHV0U3VjY2Vz
cygpIHsKKyAgICB0ZXN0UGFzc2VkKCJmaW5hbCBwdXQgc3VjY2VzcyIpOworfQorCit0ZXN0KCk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJh
bnNhY3Rpb24tYW5kLW9iamVjdHN0b3JlLWNhbGxzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWFuZC1vYmplY3RzdG9yZS1jYWxscy5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40YWM2MWQ4MzJiOTdmMzNjYTZmMDI2MjlkYjQ4YWMxM2UyMzc2MjI2Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3Ry
YW5zYWN0aW9uLWFuZC1vYmplY3RzdG9yZS1jYWxscy5qcwpAQCAtMCwwICsxLDEyNCBAQAoraWYg
KHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVk
LmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIHRyYW5zYWN0aW9uIGFu
ZCBvYmplY3RTdG9yZSBjYWxscyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVW
ZW5kb3JQcmVmaXhlcygpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5v
cGVuKCd0cmFuc2FjdGlvbi1hbmQtb2JqZWN0c3RvcmUtY2FsbHMnLCAnZGVzY3JpcHRpb24nKSIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNz
KCkKK3sKKyAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlc3VsdCA9IGRiLnNldFZlcnNpb24oJ3Zl
cnNpb24gMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biBjbGVhbkRhdGFiYXNlKCkKK3sKKyAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAg
ICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnYScpIik7CisgICAgZXZhbEFuZExv
ZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2InKSIpOworICAgIGV2YWxBbmRMb2coImRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdzdG9yZScpLmNyZWF0ZUluZGV4KCdpbmRleCcsICdzb21lX3BhdGgnKSIp
OworICAgIGV2YWxBbmRMb2coInRyYW5zLmFkZEV2ZW50TGlzdGVuZXIoJ2NvbXBsZXRlJywgY3Jl
YXRlZCwgdHJ1ZSkiKTsKKyAgICBkZWJ1ZygiIik7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZWQoKQor
eworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ2EnXSki
KTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYScpIik7CisgICAgZXZhbEFu
ZEV4cGVjdEV4Y2VwdGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ2InKSIsICJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigidHJh
bnMub2JqZWN0U3RvcmUoJ3gnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJS
Iik7CisgICAgZGVidWcoIiIpOworCisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRi
LnRyYW5zYWN0aW9uKFsnYSddKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3Jl
KCdhJykiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0cmFucy5vYmplY3RTdG9yZSgn
YicpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKKyAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKCJ0cmFucy5vYmplY3RTdG9yZSgneCcpIiwgIklEQkRhdGFiYXNlRXhj
ZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICB0cmFucyA9IGV2
YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydiJ10pIik7CisgICAgZXZhbEFuZExv
ZygidHJhbnMub2JqZWN0U3RvcmUoJ2InKSIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24o
InRyYW5zLm9iamVjdFN0b3JlKCdhJykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5E
X0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInRyYW5zLm9iamVjdFN0b3JlKCd4
JykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOworICAgIGRlYnVnKCIi
KTsKKworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ2En
LCAnYiddKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdhJykiKTsKKyAg
ICBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYicpIik7CisgICAgZXZhbEFuZEV4cGVj
dEV4Y2VwdGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ3gnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlv
bi5OT1RfRk9VTkRfRVJSIik7CisgICAgZGVidWcoIiIpOworCisgICAgdHJhbnMgPSBldmFsQW5k
TG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnYicsICdhJ10pIik7CisgICAgZXZhbEFuZExv
ZygidHJhbnMub2JqZWN0U3RvcmUoJ2EnKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9iamVj
dFN0b3JlKCdiJykiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0cmFucy5vYmplY3RT
dG9yZSgneCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKKyAgICBk
ZWJ1ZygiIik7CisKKyAgICBkZWJ1ZygiUGFzc2luZyBhIHN0cmluZyBhcyB0aGUgZmlyc3QgYXJn
dW1lbnQgaXMgYSBzaG9ydGN1dCBmb3IganVzdCBvbmUgb2JqZWN0IHN0b3JlOiIpOworICAgIHRy
YW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignYScpIik7CisgICAgZXZh
bEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2EnKSIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oInRyYW5zLm9iamVjdFN0b3JlKCdiJykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9U
X0ZPVU5EX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInRyYW5zLm9iamVjdFN0
b3JlKCd4JykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOworICAgIGRl
YnVnKCIiKTsKKworICAgIHNob3VsZFRocm93KCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCkiKTsK
KyAgICBkZWJ1ZygiIik7CisKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2Fj
dGlvbihbJ3gnXSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOworICAg
IGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKFsneCddKSIsICJJREJEYXRh
YmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlv
bigiZGIudHJhbnNhY3Rpb24oWydhJywgJ3gnXSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9U
X0ZPVU5EX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9u
KFsneCcsICd4J10pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKKyAg
ICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbihbJ2EnLCAneCcsICdiJ10p
IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKKyAgICBkZWJ1ZygiIik7
CisKKyAgICBkZWJ1ZygiRXhjZXB0aW9uIHRocm93biB3aGVuIG5vIHN0b3JlcyBzcGVjaWZpZWQ6
Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oW10pIiwgIkRP
TUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19FUlIiKTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICBk
ZWJ1Zygie30gY29lcmNlcyB0byBhIHN0cmluZyAtIHNvIG5vIG1hdGNoLCBidXQgbm90IGEgdHlw
ZSBlcnJvcjoiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbih7
fSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOworICAgIGV2YWxBbmRF
eHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKHttb2RlOjB9KSIsICJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7CisgICAgZGVidWcoIiIpOworCisgICAgZGVidWcoIk92
ZXJyaWRpbmcgdGhlIGRlZmF1bHQgc3RyaW5nIGNvZXJjaW9uIG1ha2VzIHRoZXNlIHdvcms6Iik7
CisgICAgZXZhbEFuZExvZygiZGIudHJhbnNhY3Rpb24oe3RvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0
dXJuICdhJzt9fSkiKTsKKyAgICBldmFsQW5kTG9nKCJkYi50cmFuc2FjdGlvbihbe3RvU3RyaW5n
OmZ1bmN0aW9uKCl7cmV0dXJuICdhJzt9fV0pIik7CisgICAgZGVidWcoIi4uLiBidXQgeW91IHN0
aWxsIG5lZWQgdG8gc3BlY2lmeSBhIHJlYWwgc3RvcmU6Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oW3t0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiAneCc7
fX1dKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7CisgICAgZXZhbEFu
ZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oW3t0b1N0cmluZzpmdW5jdGlvbigpe3Jl
dHVybiAneCc7fX1dKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7Cisg
ICAgZGVidWcoIiIpOworCisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5z
YWN0aW9uKFsnc3RvcmUnXSkiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9IG51bGwiKTsK
KyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnMu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxldGUg
PSBhZnRlckNvbXBsZXRlOworICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3Rv
cmUoJ3N0b3JlJykiKTsKKyAgICBzaG91bGRCZVRydWUoInN0b3JlICE9IG51bGwiKTsKKyAgICBl
dmFsQW5kTG9nKCJzdG9yZS5nZXQoJ3NvbWVfa2V5JykiKTsKK30KKworZnVuY3Rpb24gYWZ0ZXJD
b21wbGV0ZSgpCit7CisgICAgZGVidWcoInRyYW5zYWN0aW9uIGNvbXBsZXRlLCBlbnN1cmluZyBt
ZXRob2RzIGZhaWwiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9IG51bGwiKTsKKyAgICBz
aG91bGRCZVRydWUoInN0b3JlICE9IG51bGwiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJ0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1Rf
QUxMT1dFRF9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5pbmRleCgn
aW5kZXgnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9FUlIiKTsKKworICAg
IGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3Ry
YW5zYWN0aW9uLWJhc2ljcy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy90cmFuc2FjdGlvbi1iYXNpY3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWI1ZGRjNmRiZGQ4MTkwODcx
OTM3MjU0MmZiMzg5ZWU1MjZjMmVjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1iYXNpY3MuanMKQEAgLTAsMCAr
MSwyODYgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcu
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNj
cmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgdHJh
bnNhY3Rpb24gYmFzaWNzLiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5k
b3JQcmVmaXhlcygpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVu
KCd0cmFuc2FjdGlvbi1iYXNpY3MnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1
Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToi
KTsKKyAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJz
aW9uIDEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
Y2xlYW5EYXRhYmFzZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiLCBjaGVja01l
dGFkYXRhRW1wdHkpOworICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25jb21wbGV0ZSA9IHRlc3RT
ZXRWZXJzaW9uQWJvcnQxOworfQorCitmdW5jdGlvbiB0ZXN0U2V0VmVyc2lvbkFib3J0MSgpCit7
CisgICAgY2hlY2tNZXRhZGF0YUVtcHR5KCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBzdGFydFNldFZlcnNpb24oJ3ZlcnNpb24gZmFpbCcpIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBhZGRSZW1vdmVJREJPYmplY3RzOworfQorCitmdW5jdGlvbiBhZGRSZW1vdmVJ
REJPYmplY3RzKCkKK3sKKyAgICBkZWJ1ZygiYWRkUmVtb3ZlSURCT2JqZWN0cygpOiIpOworICAg
IHZhciB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwor
ICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKyAgICB0cmFucy5hZGRFdmVudExp
c3RlbmVyKCdhYm9ydCcsIHRlc3RTZXRWZXJzaW9uQWJvcnQyLCB0cnVlKTsKKyAgICB0cmFucy5v
bmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7CisKKyAgICB2YXIgc3RvcmUg
PSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZUZhaWwnLCBu
dWxsKSIpOworICAgIHZhciBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuY3JlYXRl
SW5kZXgoJ2luZGV4RmFpbCcsICd4JykiKTsKKworICAgIGV2YWxBbmRMb2coImRiLmRlbGV0ZU9i
amVjdFN0b3JlKCdzdG9yZUZhaWwnKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlLmRlbGV0ZUlu
ZGV4KCdpbmRleEZhaWwnKSIpOworCisgICAgdHJhbnMuYWJvcnQoKTsKK30KKworZnVuY3Rpb24g
dGVzdFNldFZlcnNpb25BYm9ydDIoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidGVz
dFNldFZlcnNpb25BYm9ydDIoKToiKTsKKyAgICBjaGVja01ldGFkYXRhRW1wdHkoKTsKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHN0YXJ0U2V0VmVyc2lvbigndmVyc2lvbiBm
YWlsJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZFJlbW92ZUFkZElEQk9iamVjdHM7
Cit9CisKK2Z1bmN0aW9uIGFkZFJlbW92ZUFkZElEQk9iamVjdHMoKQoreworICAgIGRlYnVnKCJh
ZGRSZW1vdmVBZGRJREJPYmplY3RzKCk6Iik7CisgICAgdmFyIHRyYW5zID0gZXZhbEFuZExvZygi
dHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAh
PT0gbnVsbCIpOworICAgIHRyYW5zLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgdGVzdFNldFZl
cnNpb25BYm9ydDMsIGZhbHNlKTsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENv
bXBsZXRlQ2FsbGJhY2s7CisKKyAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZUZhaWwnLCBudWxsKSIpOworICAgIHZhciBpbmRleCA9
IGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4RmFpbCcsICd4Jyki
KTsKKworICAgIGV2YWxBbmRMb2coImRiLmRlbGV0ZU9iamVjdFN0b3JlKCdzdG9yZUZhaWwnKSIp
OworICAgIGV2YWxBbmRMb2coInN0b3JlLmRlbGV0ZUluZGV4KCdpbmRleEZhaWwnKSIpOworCisg
ICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgn
c3RvcmVGYWlsJywgbnVsbCkiKTsKKyAgICB2YXIgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9
IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleEZhaWwnLCAneCcpIik7CisKKyAgICB0cmFucy5hYm9y
dCgpOworfQorCitmdW5jdGlvbiB0ZXN0U2V0VmVyc2lvbkFib3J0MygpCit7CisgICAgZGVidWco
IiIpOworICAgIGRlYnVnKCJ0ZXN0U2V0VmVyc2lvbkFib3J0MygpOiIpOworICAgIHNob3VsZEJl
RmFsc2UoImV2ZW50LmNhbmNlbGFibGUiKTsKKyAgICBjaGVja01ldGFkYXRhRW1wdHkoKTsKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHN0YXJ0U2V0VmVyc2lvbigndmVyc2lv
biBmYWlsJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZElEQk9iamVjdHM7Cit9CisK
K2Z1bmN0aW9uIGFkZElEQk9iamVjdHMoKQoreworICAgIGRlYnVnKCJhZGRJREJPYmplY3RzKCk6
Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiZXZlbnQuY2FuY2VsYWJsZSIpOworICAgIHZhciB0cmFu
cyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3Vs
ZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdGVzdEluYWN0
aXZlQWJvcnRlZFRyYW5zYWN0aW9uOworICAgIHRyYW5zLm9uY29tcGxldGUgPSB1bmV4cGVjdGVk
Q29tcGxldGVDYWxsYmFjazsKKworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5j
cmVhdGVPYmplY3RTdG9yZSgnc3RvcmVGYWlsJywgbnVsbCkiKTsKKyAgICBpbmRleCA9IGV2YWxB
bmRMb2coImluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4RmFpbCcsICd4JykiKTsKKwor
ICAgIHRyYW5zLmFib3J0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RJbmFjdGl2ZUFib3J0ZWRUcmFu
c2FjdGlvbigpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0SW5hY3RpdmVBYm9y
dGVkVHJhbnNhY3Rpb24oKToiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJpbmRleC5v
cGVuQ3Vyc29yKCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVf
RVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXgub3BlbktleUN1cnNvcigp
IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOworICAg
IGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4LmdldCgwKSIsICJJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJpbmRleC5nZXRLZXkoMCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05f
SU5BQ1RJVkVfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXguY291bnQo
KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsKKwor
ICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLnB1dCgwLCAwKSIsICJJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0
RXhjZXB0aW9uKCJzdG9yZS5hZGQoMCwgMCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNB
Q1RJT05fSU5BQ1RJVkVfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUu
ZGVsZXRlKDApIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VS
UiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmNsZWFyKCkiLCAiSURCRGF0
YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7CisgICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigic3RvcmUuZ2V0KDApIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5T
QUNUSU9OX0lOQUNUSVZFX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3Jl
Lm9wZW5DdXJzb3IoKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElW
RV9FUlIiKTsKKworICAgIHRlc3RTZXRWZXJzaW9uQWJvcnQ0KCk7Cit9CisKK2Z1bmN0aW9uIHRl
c3RTZXRWZXJzaW9uQWJvcnQ0KCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInRlc3RT
ZXRWZXJzaW9uQWJvcnQ0KCk6Iik7CisgICAgY2hlY2tNZXRhZGF0YUVtcHR5KCk7CisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdGFydFNldFZlcnNpb24oJ3ZlcnNpb24gZmFp
bCcpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRJREJPYmplY3RzQW5kQ29tbWl0Owor
fQorCitmdW5jdGlvbiBhZGRJREJPYmplY3RzQW5kQ29tbWl0KCkKK3sKKyAgICBkZWJ1ZygiYWRk
SURCT2JqZWN0c0FuZENvbW1pdCgpOiIpOworICAgIHZhciB0cmFucyA9IGV2YWxBbmRMb2coInRy
YW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09
IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisK
KyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0
b3JlRmFpbCcsIG51bGwpIik7CisgICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3Jl
LmNyZWF0ZUluZGV4KCdpbmRleEZhaWwnLCAneCcpIik7CisKKyAgICB0cmFucy5vbmNvbXBsZXRl
ID0gdGVzdEluYWN0aXZlQ29tcGxldGVkVHJhbnNhY3Rpb247Cit9CisKK2Z1bmN0aW9uIHRlc3RJ
bmFjdGl2ZUNvbXBsZXRlZFRyYW5zYWN0aW9uKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVi
dWcoInRlc3RJbmFjdGl2ZUNvbXBsZXRlZFRyYW5zYWN0aW9uKCk6Iik7CisgICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigiaW5kZXgub3BlbkN1cnNvcigpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9u
LlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24o
ImluZGV4Lm9wZW5LZXlDdXJzb3IoKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElP
Tl9JTkFDVElWRV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJpbmRleC5nZXQo
MCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7Cisg
ICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXguZ2V0S2V5KDApIiwgIklEQkRhdGFiYXNl
RXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RF
eGNlcHRpb24oImluZGV4LmNvdW50KCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJ
T05fSU5BQ1RJVkVfRVJSIik7CisKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5w
dXQoMCwgMCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJS
Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuYWRkKDAsIDApIiwgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOworICAgIGV2YWxBbmRF
eHBlY3RFeGNlcHRpb24oInN0b3JlLmRlbGV0ZSgwKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5U
UkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJz
dG9yZS5jbGVhcigpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZF
X0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmdldCgwKSIsICJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsKKyAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5vcGVuQ3Vyc29yKCkiLCAiSURCRGF0YWJhc2VFeGNlcHRp
b24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7CisKKyAgICB0ZXN0U2V0VmVyc2lvbkFib3J0
NSgpOworfQorCitmdW5jdGlvbiB0ZXN0U2V0VmVyc2lvbkFib3J0NSgpCit7CisgICAgZGVidWco
IiIpOworICAgIGRlYnVnKCJ0ZXN0U2V0VmVyc2lvbkFib3J0NSgpOiIpOworICAgIGNoZWNrTWV0
YWRhdGFFeGlzdGluZ09iamVjdFN0b3JlKCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBzdGFydFNldFZlcnNpb24oJ3ZlcnNpb24gZmFpbCcpIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSByZW1vdmVJREJPYmplY3RzOworfQorCitmdW5jdGlvbiByZW1vdmVJREJPYmpl
Y3RzKCkKK3sKKyAgICBkZWJ1ZygicmVtb3ZlSURCT2JqZWN0cygpOiIpOworICAgIHZhciB0cmFu
cyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3Vs
ZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdGVzdFNldFZl
cnNpb25BYm9ydDY7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNh
bGxiYWNrOworCisgICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmpl
Y3RTdG9yZSgnc3RvcmVGYWlsJykiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZS5kZWxldGVJbmRl
eCgnaW5kZXhGYWlsJykiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5kZWxldGVPYmplY3RTdG9yZSgn
c3RvcmVGYWlsJykiKTsKKworICAgIHRyYW5zLmFib3J0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RT
ZXRWZXJzaW9uQWJvcnQ2KCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInRlc3RTZXRW
ZXJzaW9uQWJvcnQ2KCk6Iik7CisgICAgY2hlY2tNZXRhZGF0YUV4aXN0aW5nT2JqZWN0U3RvcmUo
KTsKKyAgICBzZXROZXdWZXJzaW9uKCk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0U2V0VmVyc2lvbih2
ZXJzaW9uTmFtZSkKK3sKKyAgICByZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbih2ZXJzaW9uTmFtZSk7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmV0
dXJuIHJlcXVlc3Q7Cit9CisKK2Z1bmN0aW9uIGNoZWNrTWV0YWRhdGFFbXB0eSgpCit7CisgICAg
c2hvdWxkQmUoInNlbGYuZGIub2JqZWN0U3RvcmVOYW1lcyIsICJbXSIpOworICAgIHNob3VsZEJl
KCJzZWxmLmRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjAiKTsKKyAgICBzaG91bGRCZSgi
c2VsZi5kYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCdzdG9yZUZhaWwnKSIsICJmYWxzZSIp
OworfQorCitmdW5jdGlvbiBjaGVja01ldGFkYXRhRXhpc3RpbmdPYmplY3RTdG9yZSgpCit7Cisg
ICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMiLCAiWydzdG9yZUZhaWwnXSIpOworICAg
IHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIxIik7CisgICAgc2hvdWxk
QmUoImRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJ3N0b3JlRmFpbCcpIiwgInRydWUiKTsK
K30KKworZnVuY3Rpb24gc2V0TmV3VmVyc2lvbigpCit7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IHNldFZlcnNpb25TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCit7CisgICAg
ZGVidWcoIiIpOworICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOworICAgIHNlbGYu
dHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBz
aG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhw
ZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zLmFkZEV2ZW50TGlzdGVuZXIoJ2NvbXBsZXRl
JywgY29tcGxldGVDYWxsYmFjaywgZmFsc2UpOworICAgIHNlbGYuY29tcGxldGVFdmVudEZpcmVk
ID0gZmFsc2U7CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgZXZhbEFu
ZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7Cit9CisKK2Z1
bmN0aW9uIGNvbXBsZXRlQ2FsbGJhY2soKQoreworICAgIHNob3VsZEJlRmFsc2UoImV2ZW50LmNh
bmNlbGFibGUiKTsKKyAgICB0ZXN0UGFzc2VkKCJjb21wbGV0ZSBldmVudCBmaXJlZCIpOworICAg
IHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygiZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSki
KTsKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gYWJvcnRDYWxsYmFjazsKKyAgICB2YXIgc3Rv
cmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5h
bWUnKSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3RvcmUubmFtZSIsICJzdG9yZU5h
bWUiKTsKK30KKworZnVuY3Rpb24gYWJvcnRDYWxsYmFjaygpCit7CisgICAgdGVzdFBhc3NlZCgi
YWJvcnQgZXZlbnQgZmlyZWQiKTsKKyAgICB0ZXN0RE9NU3RyaW5nTGlzdCgpOworfQorCitmdW5j
dGlvbiB0ZXN0RE9NU3RyaW5nTGlzdCgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJW
ZXJpZnlpbmcgRE9NU3RyaW5nTGlzdCB3b3JrcyBhcyBhcmd1bWVudCBmb3IgSURCRGF0YWJhc2Uu
dHJhbnNhY3Rpb24oKSIpOworICAgIGRlYnVnKCJkYi5vYmplY3RTdG9yZU5hbWVzIGlzICIgKyBk
Yi5vYmplY3RTdG9yZU5hbWVzKTsKKyAgICBkZWJ1ZygiLi4uIHdoaWNoIGNvbnRhaW5zOiAiICsg
SlNPTi5zdHJpbmdpZnkoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZGIub2JqZWN0U3RvcmVO
YW1lcykpKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKGRi
Lm9iamVjdFN0b3JlTmFtZXMpIik7CisgICAgdGVzdFBhc3NlZCgibm8gZXhjZXB0aW9uIHRocm93
biIpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGg7
ICsraSkgeworICAgICAgc2hvdWxkQmVUcnVlKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgiICsg
SlNPTi5zdHJpbmdpZnkoZGIub2JqZWN0U3RvcmVOYW1lc1tpXSkgKyAiKSAhPSBudWxsIik7Cisg
ICAgfQorICAgIHRlc3RQYXNzZWQoImFsbCBzdG9yZXMgcHJlc2VudCBpbiB0cmFuc2FjdGlvbiIp
OworICAgIHRlc3RJbnZhbGlkTW9kZSgpOworfQorCitmdW5jdGlvbiB0ZXN0SW52YWxpZE1vZGUo
KQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVmVyaWZ5IHRoYXQgc3BlY2lmeWluZyBh
biBpbnZhbGlkIG1vZGUgcmFpc2VzIGFuIGV4Y2VwdGlvbiIpOworICAgIGV2YWxBbmRFeHBlY3RF
eGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIDMpIiwgIklEQkRhdGFiYXNl
RXhjZXB0aW9uLk5PTl9UUkFOU0lFTlRfRVJSIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisK
K3Rlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy90cmFuc2FjdGlvbi1jcmFzaC1vbi1hYm9ydC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1jcmFzaC1vbi1hYm9ydC5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iMzNlYjA0YmVkMTRjNDJkNDgwNjc0OTc0OWE5NjZlNWY4NGVjMzVlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0
aW9uLWNyYXNoLW9uLWFib3J0LmpzCkBAIC0wLDAgKzEsMzkgQEAKK2lmICh0aGlzLmltcG9ydFNj
cmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitk
ZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgdHJhbnNhY3Rpb24gZG9lcyBub3QgY3Jhc2ggb24g
YWJvcnQuIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVz
KCk7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0
aW9uLWNyYXNoLW9uLWFib3J0JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNj
ZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7
CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignMS4wJykiKTsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IHNldFZlcnNpb25TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2Vzcygp
Cit7CisgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycpIik7CisgICAg
ZXZlbnQudGFyZ2V0LnJlc3VsdC5vbmNvbXBsZXRlID0gc2V0VmVyc2lvbkNvbXBsZXRlOworfQor
CitmdW5jdGlvbiBzZXRWZXJzaW9uQ29tcGxldGUoKQoreworICAgIGV2YWxBbmRMb2coImRiLnRy
YW5zYWN0aW9uKCdmb28nKSIpOworICAgIGV2YWxBbmRMb2coInNlbGYuZ2MoKSIpOworICAgIGZp
bmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5z
YWN0aW9uLWV2ZW50LXByb3BhZ2F0aW9uLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWV2ZW50LXByb3BhZ2F0aW9uLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmZkNWM2MWFiZTVjZDFjZDdmYWQ2OGY5MzNmOTA2YjU5OWVlZmI1ZmYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24t
ZXZlbnQtcHJvcGFnYXRpb24uanMKQEAgLTAsMCArMSwxNDQgQEAKK2lmICh0aGlzLmltcG9ydFNj
cmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitk
ZXNjcmlwdGlvbigiVGVzdCBldmVudCBwcm9wb2dhdGlvbiBvbiBJREJUcmFuc2FjdGlvbi4iKTsK
KworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0aW9uLWV2ZW50LXBy
b3BhZ2F0aW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb247CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IHNldFZlcnNpb24oKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3
IHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0
aW9uIGRlbGV0ZUV4aXN0aW5nKCkKK3sKKyAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJh
bnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0g
bnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAg
ICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gc3RhcnRUZXN0Iik7CisKKyAgICBkZWxl
dGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIHN0YXJ0VGVzdCgpCit7CisgICAgZGVidWcoIlZlcmlmaW5nIGFib3J0Iik7CisgICAg
dHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10s
IElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMub25h
Ym9ydCA9IGFib3J0RmlyZWRDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29t
cGxldGUgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coImRiLmFk
ZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgZGJBYm9ydENhcHR1cmVDYWxsYmFjaywgdHJ1ZSkiKTsK
KyAgICBldmFsQW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIGRiQWJvcnRCdWJi
bGVDYWxsYmFjaywgZmFsc2UpIik7CisgICAgZXZhbEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5l
cignY29tcGxldGUnLCB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjaywgdHJ1ZSkiKTsKKyAgICBl
dmFsQW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdjb21wbGV0ZScsIHVuZXhwZWN0ZWRDb21w
bGV0ZUNhbGxiYWNrLCBmYWxzZSkiKTsKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0g
dHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUu
YWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOworICAgIGRiQ2FwdHVyZUZpcmVk
ID0gZmFsc2U7CisgICAgYWJvcnRGaXJlZCA9IGZhbHNlOworICAgIGRiQnViYmxlRmlyZWQxID0g
ZmFsc2U7Cit9CisKK2Z1bmN0aW9uIGRiQWJvcnRDYXB0dXJlQ2FsbGJhY2soKQoreworICAgIGRl
YnVnKCIiKTsKKyAgICBkZWJ1ZygiSW4gSURCRGF0YWJhc2UgYWJvcnQgY2FwdHVyZSIpOworICAg
IHNob3VsZEJlRmFsc2UoImRiQ2FwdHVyZUZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiYWJv
cnRGaXJlZCIpOworICAgIHNob3VsZEJlRmFsc2UoImRiQnViYmxlRmlyZWQxIik7CisgICAgc2hv
dWxkQmUoImV2ZW50LnRhcmdldCIsICJ0cmFucyIpOworICAgIHNob3VsZEJlKCJldmVudC5jdXJy
ZW50VGFyZ2V0IiwgImRiIik7CisgICAgZGJDYXB0dXJlRmlyZWQgPSB0cnVlOworfQorCitmdW5j
dGlvbiBhYm9ydEZpcmVkQ2FsbGJhY2soKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygi
SW4gYWJvcnQgaGFuZGxlciIpOworICAgIHNob3VsZEJlVHJ1ZSgiZGJDYXB0dXJlRmlyZWQiKTsK
KyAgICBzaG91bGRCZUZhbHNlKCJhYm9ydEZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGJC
dWJibGVGaXJlZDEiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0IiwgInRyYW5zIik7Cisg
ICAgc2hvdWxkQmUoImV2ZW50LmN1cnJlbnRUYXJnZXQiLCAidHJhbnMiKTsKKyAgICBhYm9ydEZp
cmVkID0gdHJ1ZTsKK30KKworZnVuY3Rpb24gZGJBYm9ydEJ1YmJsZUNhbGxiYWNrKCkKK3sKKyAg
ICBkZWJ1ZygiIik7CisgICAgZGVidWcoIkluIElEQkRhdGFiYXNlIGVycm9yIGJ1YmJsZSIpOwor
ICAgIHNob3VsZEJlVHJ1ZSgiZGJDYXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRCZVRydWUoImFi
b3J0RmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVkMSIpOworICAgIHNo
b3VsZEJlKCJldmVudC50YXJnZXQiLCAidHJhbnMiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQuY3Vy
cmVudFRhcmdldCIsICJkYiIpOworICAgIGRiQnViYmxlRmlyZWQxID0gdHJ1ZTsKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoIlZlcmlmaW5nIHN1Y2Nlc3MuIik7CisgICAgdHJhbnMgPSBldmFs
QW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIElEQlRyYW5zYWN0
aW9uLlJFQURfV1JJVEUpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IGNv
bXBsZXRlRmlyZWRDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSB1
bmV4cGVjdGVkQWJvcnRDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coImRiLnJlbW92ZUV2ZW50
TGlzdGVuZXIoJ2Fib3J0JywgZGJBYm9ydENhcHR1cmVDYWxsYmFjaywgdHJ1ZSkiKTsKKyAgICBl
dmFsQW5kTG9nKCJkYi5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIGRiQWJvcnRCdWJibGVD
YWxsYmFjaywgZmFsc2UpIik7CisgICAgZXZhbEFuZExvZygiZGIucmVtb3ZlRXZlbnRMaXN0ZW5l
cignY29tcGxldGUnLCB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjaywgdHJ1ZSkiKTsKKyAgICBl
dmFsQW5kTG9nKCJkYi5yZW1vdmVFdmVudExpc3RlbmVyKCdjb21wbGV0ZScsIHVuZXhwZWN0ZWRD
b21wbGV0ZUNhbGxiYWNrLCBmYWxzZSkiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5hZGRFdmVudExp
c3RlbmVyKCdjb21wbGV0ZScsIGRiQ29tcGxldGVDYXB0dXJlQ2FsbGJhY2ssIHRydWUpIik7Cisg
ICAgZXZhbEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignY29tcGxldGUnLCBkYkNvbXBsZXRl
QnViYmxlQ2FsbGJhY2ssIGZhbHNlKSIpOworICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50TGlz
dGVuZXIoJ2Fib3J0JywgdW5leHBlY3RlZEFib3J0Q2FsbGJhY2ssIHRydWUpIik7CisgICAgZXZh
bEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCB1bmV4cGVjdGVkQWJvcnRDYWxs
YmFjaywgZmFsc2UpIik7CisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9i
amVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDog
J3ZhbHVlJywgeTogJ3p6eid9LCAna2V5MicpIik7CisgICAgZGJDYXB0dXJlRmlyZWQgPSBmYWxz
ZTsKKyAgICBjb21wbGV0ZUZpcmVkID0gZmFsc2U7CisgICAgZGJCdWJibGVGaXJlZDIgPSBmYWxz
ZTsKK30KKworZnVuY3Rpb24gZGJDb21wbGV0ZUNhcHR1cmVDYWxsYmFjaygpCit7CisgICAgZGVi
dWcoIiIpOworICAgIGRlYnVnKCJJbiBJREJEYXRhYmFzZSBjb21wbGV0ZSBjYXB0dXJlIik7Cisg
ICAgc2hvdWxkQmVGYWxzZSgiZGJDYXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJj
b21wbGV0ZUZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVGaXJlZDIiKTsKKyAg
ICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0IiwgInRyYW5zIik7CisgICAgc2hvdWxkQmUoImV2ZW50
LmN1cnJlbnRUYXJnZXQiLCAiZGIiKTsKKyAgICBkYkNhcHR1cmVGaXJlZCA9IHRydWU7Cit9CisK
K2Z1bmN0aW9uIGNvbXBsZXRlRmlyZWRDYWxsYmFjaygpCit7CisgICAgZGVidWcoIiIpOworICAg
IGRlYnVnKCJJbiBJREJSZXF1ZXN0IGhhbmRsZXIiKTsKKyAgICBzaG91bGRCZVRydWUoImRiQ2Fw
dHVyZUZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiY29tcGxldGVGaXJlZCIpOworICAgIHNo
b3VsZEJlRmFsc2UoImRiQnViYmxlRmlyZWQyIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdl
dCIsICJ0cmFucyIpOworICAgIHNob3VsZEJlKCJldmVudC5jdXJyZW50VGFyZ2V0IiwgInRyYW5z
Iik7CisgICAgY29tcGxldGVGaXJlZCA9IHRydWU7CisgICAgZGVidWcoIiIpOworICAgIGZpbmlz
aEpTVGVzdCgpOworfQorCitmdW5jdGlvbiBkYkNvbXBsZXRlQnViYmxlQ2FsbGJhY2soKQorewor
ICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiSW4gSURCRGF0YWJhc2UgY29tcGxldGUgYnViYmxl
Iik7CisgICAgdGVzdEZhaWxlZCgiQ29tcGxldGUgYnViYmxlIGNhbGxiYWNrIHNob3VsZCBOT1Qg
ZmlyZSIpOworICAgIGRiQnViYmxlRmlyZWQyID0gdHJ1ZTsKK30KKwordGVzdCgpOwpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1yZWFkLW9ubHkuanMgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tcmVhZC1vbmx5LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQ5NDNhMzFjZmQ3YjVhYTBjNzE3ZGExM2Q3YWZkMDlmMTBhMzliYWQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNh
Y3Rpb24tcmVhZC1vbmx5LmpzCkBAIC0wLDAgKzEsNTggQEAKK2lmICh0aGlzLmltcG9ydFNjcmlw
dHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNj
cmlwdGlvbigiVGVzdCByZWFkLW9ubHkgdHJhbnNhY3Rpb25zIGluIEluZGV4ZWREQi4iKTsKKwor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndHJhbnNhY3Rpb24tcmVhZC1vbmx5
JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3Vj
Y2VzcygpCit7CisgICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7CisgICAgc2VsZi5kYiA9IGV2
YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXN1bHQgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7Cisg
ICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIGV2ZW50LnRhcmdldC5yZXN1bHQu
b25jb21wbGV0ZSA9IHNldFZlcnNpb25Eb25lOworICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25h
Ym9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHN0b3JlID0gZXZhbEFuZExvZygi
c3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgIGV2YWxBbmRMb2co
InN0b3JlLnB1dCgneCcsICd5JykiKTsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbkRvbmUoKQor
eworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUn
KSIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInRyYW5zLm9iamVjdFN0b3JlKCdzdG9y
ZScpLnB1dCgnYScsICdiJykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUiIp
OworCisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9y
ZScpIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ3N0
b3JlJykuZGVsZXRlKCd4JykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUiIp
OworCisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9y
ZScpIik7CisgICAgY3VyID0gZXZhbEFuZExvZygiY3VyID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0
b3JlJykub3BlbkN1cnNvcigpIik7CisgICAgY3VyLm9uc3VjY2VzcyA9IGdvdEN1cnNvcjsKKyAg
ICBjdXIub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBn
b3RDdXJzb3IoKQoreworICAgIHNob3VsZEJlRmFsc2UoIiFldmVudC50YXJnZXQucmVzdWx0Iik7
CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZXZlbnQudGFyZ2V0LnJlc3VsdC5kZWxldGUo
KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5SRUFEX09OTFlfRVJSIik7CisKKyAgICBmaW5pc2hK
U1Rlc3QoKTsKK30KKwordGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLXJvbGxiYWNrLmpzIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLXJvbGxiYWNrLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjBkODQ4MzNhYjYwOWYzMjQ1NTlhNWFlNDU3NjRiYzhhNjZhNDUxMDMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNh
Y3Rpb24tcm9sbGJhY2suanMKQEAgLTAsMCArMSw5MSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0
cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2Ny
aXB0aW9uKCJUZXN0IEluZGV4ZWREQiB0cmFuc2FjdGlvbiByb2xsYmFjay4iKTsKKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndHJhbnNhY3Rpb24tcm9sbGJhY2snKSIpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkK
K3sKKyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBzZWxmLmRiID0gZXZhbEFuZExv
ZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7CisgICAgZGVi
dWcoImNsZWFuRGF0YWJhc2UoKToiKTsKKyAgICBzZWxmLnRyYW5zYWN0aW9uID0gZXZhbEFuZExv
ZygidHJhbnNhY3Rpb24gPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgdHJhbnNhY3Rpb24u
b25hYm9ydCA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRyYW5zYWN0aW9uLm9uY29t
cGxldGUgPSBzZXRWZXJzaW9uQ29tcGxldGU7CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMo
ZGIpOworICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdteU9iamVjdFN0b3Jl
JykiKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMSIpOwor
fQorCitmdW5jdGlvbiBzZXRWZXJzaW9uQ29tcGxldGUoKQoreworICAgIGRlYnVnKCJzZXRWZXJz
aW9uQ29tcGxldGUoKToiKTsKKworICAgIHNlbGYudHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0
cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnbXlPYmplY3RTdG9yZSddLCBJREJUcmFuc2Fj
dGlvbi5SRUFEX1dSSVRFKSIpOworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSBhYm9ydENhbGxi
YWNrOworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQ29tcGxldGVDYWxs
YmFjazsKKworICAgIHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9u
Lm9iamVjdFN0b3JlKCdteU9iamVjdFN0b3JlJykiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
Zygic3RvcmUuYWRkKCdyb2xsYmFja1ZhbHVlJywgJ3JvbGxiYWNrS2V5MTIzJykiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZFN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGFkZFN1Y2Nlc3MoKQoreworICAg
IGRlYnVnKCJhZGRTdWNjZXNzKCk6Iik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1
bHQiLCAiJ3JvbGxiYWNrS2V5MTIzJyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0
b3JlLm9wZW5DdXJzb3IoKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbkN1cnNvclN1
Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIG9wZW5DdXJzb3JTdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygib3BlbkN1cnNv
clN1Y2Nlc3MoKToiKTsKKyAgICBzZWxmLmN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHRyYW5zYWN0aW9uLmFib3J0KCk7Cit9CisKK2Z1
bmN0aW9uIGFib3J0Q2FsbGJhY2soKQoreworICAgIGRlYnVnKCJhYm9ydENhbGxiYWNrKCk6Iik7
CisgICAgZGVidWcoJ1RyYW5zYWN0aW9uIHdhcyBhYm9ydGVkLicpOworCisgICAgc2VsZi50cmFu
c2FjdGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydteU9i
amVjdFN0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQUQpIik7CisgICAgc2VsZi5zdG9yZSA9IGV2
YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ215T2JqZWN0U3RvcmUn
KSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5nZXQoJ3JvbGxiYWNrS2V5MTIz
JykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldFN1Y2Nlc3M7Cit9CisKK2Z1bmN0aW9uIGdldFN1Y2Nl
c3MoKQoreworICAgIGRlYnVnKCJnZXRTdWNjZXNzKCk6Iik7CisgICAgc2hvdWxkQmUoImV2ZW50
LnRhcmdldC5yZXN1bHQiLCAidW5kZWZpbmVkIik7CisKKyAgICBzaG91bGRCZSgiY3Vyc29yLnZh
bHVlIiwgIidyb2xsYmFja1ZhbHVlJyIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0
KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLXN0b3JlTmFtZXMtcmVxdWly
ZWQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rp
b24tc3RvcmVOYW1lcy1yZXF1aXJlZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNWEzZWQxMmFhYzhhODA0OWI5
ODg3NzQwOTVkNWJlMmU1YTY0MmVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLXN0b3JlTmFtZXMtcmVxdWlyZWQu
anMKQEAgLTAsMCArMSwzNiBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9y
dFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Cisg
ICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IElu
ZGV4ZWREQjogdHJhbnNhY3Rpb24gc3RvcmVOYW1lcyByZXF1aXJlZCBhcmd1bWVudHMiKTsKKwor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5h
bWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3Qg
RGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1l
LCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIu
c2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1
bGF0ZU9iamVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKK3sK
KyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgc2hvdWxkVGhyb3coImRiLnRy
YW5zYWN0aW9uKCk7Iik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvdHdvLXZlcnNpb24tY2hhbmdlcy5qcyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90d28tdmVyc2lvbi1jaGFuZ2VzLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmE2NmU1MTRlNjUyNWQxZTg2MjBjYzdiOWNkOGNmNzIzMjEzNDA3M2YKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHdvLXZlcnNp
b24tY2hhbmdlcy5qcwpAQCAtMCwwICsxLDEwNiBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykg
eworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0
aW9uKCJUZXN0IGJlaGF2aW9yIHdoZW4gdGhlIHNhbWUgY29ubmVjdGlvbiBjYWxscyBzZXRWZXJz
aW9uIHR3aWNlIik7CisKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4
ZXMoKTsKKworICAgIHNob3VsZEJlRmFsc2UoImluZGV4ZWREQiA9PSBudWxsIik7CisgICAgc2hv
dWxkQmVGYWxzZSgiSURCVHJhbnNhY3Rpb24gPT0gbnVsbCIpOworICAgIG9wZW5EQkNvbm5lY3Rp
b24oKTsKK30KKworZnVuY3Rpb24gb3BlbkRCQ29ubmVjdGlvbigpCit7CisgICAgZXZhbEFuZExv
Zygic2VsZi5zdGF0ZSA9ICdzdGFydGluZyciKTsKKyAgICB2YXIgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImluZGV4ZWREQi5vcGVuKCd0d28tdmVyc2lvbnMtb25lLWNvbm5lY3Rpb24nKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sK
KyAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Cisg
ICAgZXZhbEFuZExvZygic2VsZi5zdGF0ZSA9IDAiKTsKKworICAgIHZhciB2ZXJzaW9uQ2hhbmdl
UmVxdWVzdDEgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAg
IHZlcnNpb25DaGFuZ2VSZXF1ZXN0MS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CisgICAgdmVyc2lvbkNoYW5nZVJlcXVlc3QxLm9uc3VjY2VzcyA9IGluU2V0VmVyc2lvbjE7CisK
KyAgICAvLyBhbmQgY29uY3VycmVudGx5Li4uCisKKyAgICB2YXIgdmVyc2lvbkNoYW5nZVJlcXVl
c3QyID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbigndmVyc2lvbiAyJykiKTsKKyAgICB2ZXJz
aW9uQ2hhbmdlUmVxdWVzdDIub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAg
IHZlcnNpb25DaGFuZ2VSZXF1ZXN0Mi5vbnN1Y2Nlc3MgPSBpblNldFZlcnNpb24yOworfQorCitm
dW5jdGlvbiBpblNldFZlcnNpb24xKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvbigpICMxIGNh
bGxiYWNrIik7CisgICAgdHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgIGV2YWxBbmRM
b2coInNlbGYuc3RvcmUxID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Rlc3Qtc3RvcmUxJykiKTsK
KyAgICBzaG91bGRCZSgiKytzZWxmLnN0YXRlIiwgIjEiKTsKKyAgICB2YXIgcmVxID0gZXZhbEFu
ZExvZygic2VsZi5zdG9yZTEucHV0KCdhYWEnLCAxMTEpIik7CisgICAgcmVxLm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUp
IHsKKyAgICAgICAgc2hvdWxkQmUoIisrc2VsZi5zdGF0ZSIsICIyIik7CisgICAgICAgIGhhbGZ3
YXlEb25lKCk7CisgICAgfTsKK30KKworZnVuY3Rpb24gaW5TZXRWZXJzaW9uMigpCit7CisgICAg
ZGVidWcoInNldFZlcnNpb24oKSAjMiBjYWxsYmFjayIpOworICAgIHRyYW5zID0gZXZlbnQudGFy
Z2V0LnJlc3VsdDsKKyAgICBzaG91bGRCZSgiKytzZWxmLnN0YXRlIiwgIjQiKTsKKyAgICBldmFs
QW5kTG9nKCJzZWxmLnN0b3JlMiA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCd0ZXN0LXN0b3JlMicp
Iik7CisKKyAgICB2YXIgcmVxID0gZXZhbEFuZExvZygic2VsZi5zdG9yZTIucHV0KCdiYmInLCAy
MjIpIik7CisgICAgcmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBy
ZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgc2hvdWxkQmUoIisrc2VsZi5z
dGF0ZSIsICI1Iik7CisgICAgICAgIGhhbGZ3YXlEb25lKCk7CisgICAgfTsKK30KKwordmFyIGNv
dW50ZXIgPSAwOworZnVuY3Rpb24gaGFsZndheURvbmUoKSAKK3sKKyAgICBjb3VudGVyICs9IDE7
CisgICAgaWYgKGNvdW50ZXIgPCAyKSB7CisgICAgICAgIHNob3VsZEJlKCIrK3NlbGYuc3RhdGUi
LCAiMyIpOworICAgICAgICBkZWJ1ZygiaGFsZndheSB0aGVyZS4uLiIgKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBzaG91bGRCZSgiKytzZWxmLnN0YXRlIiwgIjYiKTsKKyAgICAgICAgY2hlY2tS
ZXN1bHRzKCk7CisgICAgfQorfQorCitmdW5jdGlvbiBjaGVja1Jlc3VsdHMoKSB7CisgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJzZWxmLmRiLnZlcnNpb24iLCAidmVyc2lvbiAyIik7CisgICAg
dHJhbnMub25jb21wbGV0ZSA9IHNldFZlcnNpb25Db21wbGV0ZTsKK30KKworZnVuY3Rpb24gc2V0
VmVyc2lvbkNvbXBsZXRlKCkKK3sKKyAgICB0cmFucyA9IGV2YWxBbmRMb2coInNlbGYudHJhbnMg
PSBkYi50cmFuc2FjdGlvbihbJ3Rlc3Qtc3RvcmUxJywgJ3Rlc3Qtc3RvcmUyJ10pIik7CisgICAg
c3RvcmUgPSBldmFsQW5kTG9nKCJzZWxmLnN0b3JlID0gc2VsZi50cmFucy5vYmplY3RTdG9yZSgn
dGVzdC1zdG9yZTEnKSIpOworICAgIHJlcSA9IGV2YWxBbmRMb2coInNlbGYucmVxID0gc2VsZi5z
dG9yZS5nZXQoMTExKSIpOworICAgIHJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJhYWEiKTsKKworICAgICAgICBz
dG9yZSA9IGV2YWxBbmRMb2coInNlbGYuc3RvcmUgPSBzZWxmLnRyYW5zLm9iamVjdFN0b3JlKCd0
ZXN0LXN0b3JlMicpIik7CisgICAgICAgIHJlcSA9IGV2YWxBbmRMb2coInNlbGYucmVxID0gc2Vs
Zi5zdG9yZS5nZXQoMjIyKSIpOworICAgICAgICByZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworICAgICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKKyAgICAg
ICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJiYmIi
KTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9OworICAgIH07Cit9CisK
K3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdmFsdWUtdW5kZWZpbmVkLmpzIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3ZhbHVlLXVuZGVmaW5lZC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iOTcwMzNjNzg3Y2ZkYWI2NTVkMzdjMTY2MTM1Y2Y4ZDcxZDcwYjRlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3Zh
bHVlLXVuZGVmaW5lZC5qcwpAQCAtMCwwICsxLDY2IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRz
KSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3Jp
cHRpb24oIlRlc3QgSW5kZXhlZERCIHVuZGVmaW5lZCBhcyByZWNvcmQgdmFsdWUiKTsKKworZnVu
Y3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUg
PSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0
YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBk
ZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0
VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0
ZU9iamVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworfQorCitmdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKK3sKKyAg
ICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5k
TG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nKTsiKTsKKyAgICBy
ZXN1bHQgPSBldmFsQW5kTG9nKCJyZXN1bHQgPSBvYmplY3RTdG9yZS5hZGQodW5kZWZpbmVkLCBJ
bmZpbml0eSk7Iik7CisgICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICByZXN1bHQub25zdWNjZXNzID0gZ2V0VmFsdWU7Cit9CisKK2Z1bmN0aW9uIGdldFZh
bHVlKCkKK3sKKyAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJyZXN1bHQgPSBvYmplY3RTdG9yZS5n
ZXQoSW5maW5pdHkpOyIpOworICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7CisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGNoZWNrVmFsdWU7Cit9CisKK2Z1bmN0aW9u
IGNoZWNrVmFsdWUoKQoreworICAgIHZhbHVlID0gZXZhbEFuZExvZygidmFsdWUgPSBldmVudC50
YXJnZXQucmVzdWx0OyIpOworICAgIHNob3VsZEJlKCJ2YWx1ZSIsICJ1bmRlZmluZWQiKTsKKyAg
ICByZXN1bHQgPSBldmFsQW5kTG9nKCJyZXN1bHQgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7
Iik7CisgICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBy
ZXN1bHQub25zdWNjZXNzID0gY2hlY2tDdXJzb3I7Cit9CisKK2Z1bmN0aW9uIGNoZWNrQ3Vyc29y
KCkKK3sKKyAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVz
dWx0OyIpOworICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXki
LCAiSW5maW5pdHkiKTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZSIsICJ1bmRlZmlu
ZWQiKTsKKyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0RmFpbGVkKCJjdXJzb3IgaXMgbnVsbCIp
OworICAgIH0KKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy92YWx1ZXMtb2RkLXR5cGVzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL3ZhbHVlcy1vZGQtdHlwZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2FlMTE1YmNk
ZWIwYmY2ZmYyNjVkOTFhYTk5NDRlNTY4YjU2ZjRkNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy92YWx1ZXMtb2RkLXR5cGVzLmpzCkBA
IC0wLDAgKzEsNzggQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3Jp
cHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGlt
cG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVk
REIgb2RkIHZhbHVlIGRhdGF0eXBlcyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1v
dmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7
CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBk
YiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGFkZEtleTE7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGFkZEtleTEoKQoreworICAgIGRlbGV0ZUFs
bE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7YXV0b0luY3JlbWVudDogdHJ1ZX0pOyIpOworCisgICAg
Y2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7CisgICAgY29udGV4dCA9
IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOworICAgIGltYWdlZGF0YSA9IGNvbnRleHQuY3JlYXRl
SW1hZ2VEYXRhKDEsIDEpOworICAgIHZhbGlkVHlwZXMgPSBbeyBkZXNjcmlwdGlvbjogJ3JlZ2V4
cCcsICAgIHZhbHVlOiBuZXcgUmVnRXhwKCdcXFxcJykgfSwKKyAgICAgICAgICAgICAgICAgIHsg
ZGVzY3JpcHRpb246ICdkYXRlJywgICAgICB2YWx1ZTogbmV3IERhdGUoMCkgfSwKKyAgICAgICAg
ICAgICAgICAgIHsgZGVzY3JpcHRpb246ICdvYmplY3QnLCAgICB2YWx1ZTogbmV3IE9iamVjdCgp
IH0sCisgICAgICAgICAgICAgICAgICB7IGRlc2NyaXB0aW9uOiAnaW1hZ2VkYXRhJywgdmFsdWU6
IGltYWdlZGF0YSB9LAorICAgIF07CisgICAgbmV4dFRvQWRkID0gMDsKKyAgICBhZGREYXRhKCk7
Cit9CisKK2Z1bmN0aW9uIGFkZERhdGEoKQoreworICAgIGRlYnVnKCJhZGRpbmcgIiArIHZhbGlk
VHlwZXNbbmV4dFRvQWRkXS5kZXNjcmlwdGlvbiArICIgdmFsdWUiKTsKKyAgICByZXN1bHQgPSBl
dmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQodmFsaWRUeXBlc1tuZXh0VG9BZGRdLnZhbHVlKSIp
OworICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSArK25leHRUb0FkZCA8IHZhbGlkVHlwZXMubGVuZ3Ro
ID8gYWRkRGF0YSA6IG9wZW5BQ3Vyc29yOworICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5BQ3Vyc29yKCkKK3sKKyAgICB2YWx1
ZUluZGV4ID0gMDsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0
b3JlLm9wZW5DdXJzb3IoKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewor
ICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0
OyIpOworICAgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29y
LnZhbHVlLnRvU3RyaW5nKCkiLCAidmFsaWRUeXBlc1t2YWx1ZUluZGV4XS52YWx1ZS50b1N0cmlu
ZygpIik7CisgICAgICAgICAgICBpZiAodmFsdWVJbmRleCA9PSAxKSB7CisgICAgICAgICAgICAg
ICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS50b1VUQ1N0cmluZygpIiwgIidUaHUsIDAxIEphbiAx
OTcwIDAwOjAwOjAwIEdNVCciKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh2YWx1
ZUluZGV4ID09IDMpIHsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndp
ZHRoIiwgIjEiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNv
ci5jb250aW51ZSgpOyIpOworICAgICAgICAgICAgZXZhbEFuZExvZygidmFsdWVJbmRleCsrOyIp
OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgIH0KKyAgICB9Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
dmVyc2lvbi1jaGFuZ2UtYWJvcnQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvdmVyc2lvbi1jaGFuZ2UtYWJvcnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGI0NDcxNzJmYmU4
MGYxY2UxZGUyODNhMzVmZGNkYzE4MDQ1MGQ5MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy92ZXJzaW9uLWNoYW5nZS1hYm9ydC5qcwpA
QCAtMCwwICsxLDg5IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2Ny
aXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBp
bXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIkVuc3VyZSB0aGF0
IGFib3J0ZWQgVkVSU0lPTl9DSEFOR0UgdHJhbnNhY3Rpb25zIGFyZSBjb21wbGV0ZWx5IHJvbGxl
ZCBiYWNrIik7CisKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMo
KTsKKyAgICBvcGVuREJDb25uZWN0aW9uKCk7Cit9CisKK2Z1bmN0aW9uIG9wZW5EQkNvbm5lY3Rp
b24oKQoreworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndmVyc2lv
bi1jaGFuZ2UtYWJvcnQnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBl
dmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgZGVidWcoIiIpOworCisgICAgZXZhbEFuZExvZygi
dmNyZXEgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHZjcmVxLm9uc3VjY2Vz
cyA9IGluU2V0VmVyc2lvbjE7CisgICAgdmNyZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBpblNldFZlcnNpb24xKCkKK3sKKyAgICBkZWJ1Zygic2V0
VmVyc2lvbjEoKSBjYWxsYmFjayIpOworICAgIHNob3VsZEJlVHJ1ZSgidmNyZXEucmVzdWx0IGlu
c3RhbmNlb2YgSURCVHJhbnNhY3Rpb24iKTsKKyAgICB0cmFucyA9IHZjcmVxLnJlc3VsdDsKKyAg
ICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSBz
ZXRWZXJzaW9uMUNvbXBsZXRlOworCisgICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVP
YmplY3RTdG9yZSgnc3RvcmUxJykiKTsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbjFDb21wbGV0
ZSgpCit7CisgICAgZGVidWcoInNldFZlcnNpb24xIGNvbXBsZXRlIik7CisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJkYi52ZXJzaW9uIiwgInZlcnNpb24gMSIpOworICAgIGRlYnVnKCIiKTsK
KworICAgIGV2YWxBbmRMb2coInZjcmVxID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAyJykiKTsK
KyAgICB2Y3JlcS5vbnN1Y2Nlc3MgPSBpblNldFZlcnNpb24yOworICAgIHZjcmVxLm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gaW5TZXRWZXJzaW9uMigp
Cit7CisgICAgZGVidWcoInNldFZlcnNpb24yKCkgY2FsbGJhY2siKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImRiLnZlcnNpb24iLCAidmVyc2lvbiAyIik7CisgICAgc2hvdWxkQmVUcnVl
KCJ2Y3JlcS5yZXN1bHQgaW5zdGFuY2VvZiBJREJUcmFuc2FjdGlvbiIpOworICAgIHRyYW5zID0g
dmNyZXEucmVzdWx0OworICAgIHRyYW5zLm9uYWJvcnQgPSBzZXRWZXJzaW9uMkFib3J0OworICAg
IHRyYW5zLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB0cmFucy5vbmNv
bXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7CisKKyAgICBldmFsQW5kTG9nKCJz
dG9yZSA9IGRiLmRlbGV0ZU9iamVjdFN0b3JlKCdzdG9yZTEnKSIpOworICAgIGV2YWxBbmRMb2co
InN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlMicpIik7CisKKyAgICAvLyBFbnN1
cmUgdGhlIHRlc3QgaGFybmVzcyBlcnJvciBoYW5kbGVyIGlzIG5vdCBpbnZva2VkLgorICAgIHNl
bGYub3JpZ2luYWxXaW5kb3dPbkVycm9yID0gc2VsZi5vbmVycm9yOworICAgIHNlbGYub25lcnJv
ciA9IG51bGw7CisKKyAgICBkZWJ1ZygicmFpc2luZyBleGNlcHRpb24iKTsKKyAgICB0aHJvdyBu
ZXcgRXJyb3IoIlRoaXMgc2hvdWxkICpOT1QqIGJlIGNhdWdodCEiKTsKK30KKworZnVuY3Rpb24g
c2V0VmVyc2lvbjJBYm9ydCgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJzZXRWZXJz
aW9uMkFib3J0KCkgY2FsbGJhY2siKTsKKworICAgIC8vIFJlc3RvcmUgdGVzdCBoYXJuZXNzIGVy
cm9yIGhhbmRsZXIuCisgICAgc2VsZi5vbmVycm9yID0gc2VsZi5vcmlnaW5hbFdpbmRvd09uRXJy
b3I7CisKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLnZlcnNpb24iLCAidmVyc2lvbiAx
Iik7CisgICAgc2hvdWxkQmVUcnVlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCdzdG9y
ZTEnKSIpOworICAgIHNob3VsZEJlRmFsc2UoImRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMo
J3N0b3JlMicpIik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy92ZXJzaW9uLWNoYW5nZS1leGNsdXNpdmUuanMgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdmVyc2lvbi1jaGFuZ2UtZXhjbHVzaXZlLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjgxYWE1OGE4ODMyOTVlNDcxMjdkNmE5MzE2NGJiY2VkODM5YjA5MWEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
dmVyc2lvbi1jaGFuZ2UtZXhjbHVzaXZlLmpzCkBAIC0wLDAgKzEsNzAgQEAKK2lmICh0aGlzLmlt
cG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOwor
fQorCitkZXNjcmlwdGlvbigiRW5zdXJlIFZFUlNJT05fQ0hBTkdFIHRyYW5zYWN0aW9uIGRvZXNu
J3QgcnVuIGNvbmN1cnJlbnRseSB3aXRoIG90aGVyIHRyYW5zYWN0aW9ucyIpOworCitmdW5jdGlv
biB0ZXN0KCkgeworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgb3BlbkRCQ29ubmVj
dGlvbigpOworfQorCitmdW5jdGlvbiBvcGVuREJDb25uZWN0aW9uKCkKK3sKKyAgICBldmFsQW5k
TG9nKCJzZWxmLnN0YXRlID0gJ3N0YXJ0aW5nJyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJpbmRleGVkREIub3BlbigndmVyc2lvbi1jaGFuZ2UtZXhjbHVzaXZlJykiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAg
c2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAg
ZGVidWcoImNhbGxpbmcgc2V0VmVyc2lvbigpIC0gY2FsbGJhY2sgc2hvdWxkIHJ1biBpbW1lZGlh
dGVseSIpOworICAgIHZhciB2ZXJzaW9uQ2hhbmdlUmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNl
dFZlcnNpb24oJ3ZlcnNpb24gMScpIik7CisgICAgdmVyc2lvbkNoYW5nZVJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9u
c3VjY2VzcyA9IGluU2V0VmVyc2lvbjsKKworICAgIC8vIGFuZCBjb25jdXJyZW50bHkuLi4KKwor
ICAgIGRlYnVnKCJjYWxsaW5nIG9wZW4oKSAtIGNhbGxiYWNrIHNob3VsZCB3YWl0IHVudGlsIFZF
UlNJT05fQ0hBTkdFIHRyYW5zYWN0aW9uIGlzIGNvbXBsZXRlIik7CisgICAgdmFyIG9wZW5SZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3ZlcnNpb24tY2hhbmdlLWV4Y2x1c2l2
ZScpIik7CisgICAgb3BlblJlcXVlc3Qub25zdWNjZXNzID0gb3BlbkFnYWluU3VjY2VzczsKKyAg
ICBvcGVuUmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIGluU2V0VmVyc2lvbigpCit7CisgICAgZGVidWcoInNldFZlcnNpb24oKSBjYWxsYmFj
ayIpOworICAgIGRlYnVnKCJzdGFydGluZyB3b3JrIGluIFZFUlNJT05fQ0hBTkdFIHRyYW5zYWN0
aW9uIik7CisgICAgZXZhbEFuZExvZygic2VsZi5zdGF0ZSA9ICdWRVJTSU9OX0NIQU5HRSBzdGFy
dGVkJyIpOworCisgICAgc2VsZi5zdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ3Rlc3Qtc3RvcmUnKSIpOworICAgIHNlbGYuY291bnQgPSAwOworICAgIGRv
X2FzeW5jX3B1dHMoKTsKKworICAgIGZ1bmN0aW9uIGRvX2FzeW5jX3B1dHMoKSB7CisgICAgICAg
IHZhciByZXEgPSBldmFsQW5kTG9nKCJzdG9yZS5wdXQoIiArIGNvdW50ICsgIiwgIiArIGNvdW50
ICsgIikiKTsKKyAgICAgICAgcmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICAgICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgICAgICBkZWJ1
ZygiaW4gcHV0J3Mgb25zdWNjZXNzIik7CisgICAgICAgICAgICBpZiAoKytzZWxmLmNvdW50IDwg
MTApIHsKKyAgICAgICAgICAgICAgICBkb19hc3luY19wdXRzKCk7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIGRlYnVnKCJlbmRpbmcgd29yayBpbiBWRVJTSU9OX0NIQU5H
RSB0cmFuc2FjdGlvbiIpOworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coInNlbGYuc3RhdGUg
PSAnVkVSU0lPTl9DSEFOR0UgZmluaXNoZWQnIik7CisgICAgICAgICAgICB9CisgICAgICAgIH07
CisgICAgfQorfQorCitmdW5jdGlvbiBvcGVuQWdhaW5TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygi
b3BlbigpIGNhbGxiYWNrIC0gdGhpcyBzaG91bGQgYXBwZWFyIGFmdGVyIFZFUlNJT05fQ0hBTkdF
IHRyYW5zYWN0aW9uIGVuZHMiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNlbGYuc3Rh
dGUiLCAiVkVSU0lPTl9DSEFOR0UgZmluaXNoZWQiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30K
KwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy92ZXJzaW9uY2hhbmdlcmVxdWVzdC1h
Y3RpdmVkb21vYmplY3QuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvdmVyc2lvbmNoYW5nZXJlcXVlc3QtYWN0aXZlZG9tb2JqZWN0LmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1
YWFiNDE0YTUwMmE4MTQzYzMzYzZjYmFkMTE0NTgyNTg2OWNjZTYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdmVyc2lvbmNoYW5nZXJl
cXVlc3QtYWN0aXZlZG9tb2JqZWN0LmpzCkBAIC0wLDAgKzEsNjcgQEAKK2lmICh0aGlzLmltcG9y
dFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQor
CitkZXNjcmlwdGlvbigiRW5zdXJlIHRoYXQgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Qgb2JqZWN0
cyBhcmUgbm90IEdDJ2QgaWYgdGhleSBoYXZlIHBlbmRpbmcgZXZlbnRzIik7CisKK2Z1bmN0aW9u
IHRlc3QoKSB7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIGRlYnVnKCIiKTsK
KyAgICBldmFsQW5kTG9nKCJzZWxmLmRibmFtZSA9ICd2ZXJzaW9uY2hhbmdlcmVxdWVzdC1hY3Rp
dmVkb21vYmplY3QnIik7CisKKyAgICB0ZXN0RGVsZXRlRGF0YWJhc2UoKTsKK30KKworZnVuY3Rp
b24gdGVzdERlbGV0ZURhdGFiYXNlKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInRl
c3REZWxldGVEYXRhYmFzZSgpOiIpOworICAgIC8vIE5PVEU6IGRlbGV0ZVJlcXVlc3QgaXMgbG9j
YWwgdmFyaWFibGUgc28gaXQgaXMgbm90IGNhcHR1cmVkIGluIGdsb2JhbCBzY29wZS4KKyAgICB2
YXIgZGVsZXRlUmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShz
ZWxmLmRibmFtZSkiKTsKKyAgICBkZWxldGVSZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICBkZWxldGVSZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9j
a2VkQ2FsbGJhY2s7CisgICAgZGVsZXRlUmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsg
ZGVsZXRlU3VjY2VzcygpOyB9OworICAgIGRlbGV0ZVJlcXVlc3QgPSBudWxsOworICAgIGlmIChz
ZWxmLmdjKSB7CisgICAgICAgIGV2YWxBbmRMb2coInNlbGYuZ2MoKSIpOworICAgIH0KK30KKwor
ZnVuY3Rpb24gZGVsZXRlU3VjY2VzcygpCit7CisgICAgdGVzdFBhc3NlZCgiZGVsZXRlRGF0YWJh
c2UncyBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5vbnN1Y2Nlc3MgZXZlbnQgZmlyZWQiKTsKKyAg
ICB0ZXN0U2V0VmVyc2lvbigpOworfQorCitmdW5jdGlvbiB0ZXN0U2V0VmVyc2lvbigpCit7Cisg
ICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0U2V0VmVyc2lvbigpOiIpOworCisgICAgLy8g
Tk9URTogVGhpcyBpcyBqdXN0IGFuIElEQlJlcXVlc3QsIGl0IGNhbiBiZSBnbG9iYWwuCisgICAg
ZXZhbEFuZExvZygib3BlblJlcXVlc3QgPSBpbmRleGVkREIub3BlbihzZWxmLmRibmFtZSkiKTsK
KyAgICBvcGVuUmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAg
b3BlblJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICBldmFsQW5kTG9n
KCJkYiA9IG9wZW5SZXF1ZXN0LnJlc3VsdCIpOworCisgICAgICAgIC8vIE5PVEU6IHZlcnNpb25S
ZXF1ZXN0IGlzIGxvY2FsIHZhcmlhYmxlIHNvIGl0IGlzIG5vdCBjYXB0dXJlZCBpbiBnbG9iYWwg
c2NvcGUuCisgICAgICAgIHZhciB2ZXJzaW9uUmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZl
cnNpb24oJzEnKSIpOworICAgICAgICB2ZXJzaW9uUmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHZlcnNpb25SZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhw
ZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7CisgICAgICAgIHZlcnNpb25SZXF1ZXN0Lm9uc3VjY2VzcyA9
IGZ1bmN0aW9uKCkgeyB2ZXJzaW9uU3VjY2VzcygpOyB9OworICAgICAgICB2ZXJzaW9uUmVxdWVz
dCA9IG51bGw7CisgICAgICAgIGlmIChzZWxmLmdjKSB7CisgICAgICAgICAgICBldmFsQW5kTG9n
KCJzZWxmLmdjKCkiKTsKKyAgICAgICAgfQorICAgIH07Cit9CisKK2Z1bmN0aW9uIHZlcnNpb25T
dWNjZXNzKCkKK3sKKyAgICB0ZXN0UGFzc2VkKCJzZXRWZXJzaW9uJ3MgSURCVmVyc2lvbkNoYW5n
ZVJlcXVlc3Qub25zdWNjZXNzIGV2ZW50IGZpcmVkIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9
CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRWZXJzaW9uLW51bGwuaHRtbCBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldFZlcnNpb24tbnVsbC5odG1sCmluZGV4IGNiMmJjNmVl
MWFlZDQ2OGM3ZDk3MjRhYmE5N2E4ZDkyYmZjMDI0MmMuLmRmM2YzZDA4NzAyZGM1OTU1YjA5YjJl
MTJhYjY5ZGFjYzRiMGM2MTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3NldFZlcnNpb24tbnVsbC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3NldFZlcnNpb24tbnVsbC5odG1sCkBAIC0xLDQ0ICsxLDEwIEBACi08IURPQ1RZUEUgaHRt
bD4gCi08aHRtbD4gCis8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4gCi08c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+IAotPC9oZWFkPiAKLTxib2R5PiAKLTxzY3JpcHQ+IAot
IAotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIHdpdGggbnVsbCB2ZXJzaW9uIHN0cmluZyIp
OwotIAotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAK
LSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJN
eSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9w
ZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3Vj
Y2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0K
LSAKLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotIAotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5z
ZXRWZXJzaW9uKG51bGwpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdFNldFZlcnNp
b247Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0K
LWZ1bmN0aW9uIHBvc3RTZXRWZXJzaW9uKCkKLXsKLSAgICBzaG91bGRCZSgiZGIudmVyc2lvbiIs
ICInbnVsbCciKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLSAKLSAKLXRlc3QoKTsKLSAKLTwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zZXRWZXJzaW9uLW51
bGwuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+IAorPC9ib2R5PgogPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0VmVyc2lvbi11bmRlZmlu
ZWQuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldFZlcnNpb24tdW5kZWZp
bmVkLmh0bWwKaW5kZXggYmVkYzFlMDViNTQxMDFkYmEzZjgxODc2Yzc0Zjg0Nzc3Yjg5ODc3YS4u
YWU2MGYxYzVlOTM4NDdhMDRhMjM3Y2QzZmIzMjkyOWNmZGY1NWM4ZSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0VmVyc2lvbi11bmRlZmluZWQuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRWZXJzaW9uLXVuZGVmaW5lZC5odG1s
CkBAIC0xLDM3ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4gCi08aHRtbD4gCis8aHRtbD4KIDxo
ZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4gCi08c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+
IAotPC9oZWFkPiAKLTxib2R5PiAKLTxzY3JpcHQ+IAotIAotZGVzY3JpcHRpb24oIlRlc3QgSW5k
ZXhlZERCIHZlcnNpb24gc3RyaW5nIGlzIHJlcXVpcmVkIik7Ci0gCi1mdW5jdGlvbiB0ZXN0KCkK
LXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotIAotICAgIG5hbWUgPSBzZWxmLmxvY2F0
aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbiki
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotIAotZnVuY3Rpb24gb3BlblN1Y2Nl
c3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
Ci0gCi0gICAgc2hvdWxkVGhyb3coImRiLnNldFZlcnNpb24oKTsiKTsKLSAgICBmaW5pc2hKU1Rl
c3QoKTsKLX0KLSAKLSAKLXRlc3QoKTsKLSAKLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9zZXRWZXJzaW9uLXVuZGVmaW5lZC5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KLTwvYm9keT4gCis8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9ibG9ja2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9ibG9ja2VkLmh0bWwKaW5kZXggYzI0NGQ0MzJj
ZmJkNDkxNDZkYWMxMWEwYzMzMWViMDU5YTczNGU1Mi4uNDA4ZTZmYTI5N2JiN2NkMjg3ODViYjA2
NTJiYjk2MmFkOWVjMDkwNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvc2V0X3ZlcnNpb25fYmxvY2tlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3NldF92ZXJzaW9uX2Jsb2NrZWQuaHRtbApAQCAtMSw2NCArMSwxMCBAQAotPGh0bWw+
DQotPGhlYWQ+DQotPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4NCi08c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9z
Y3JpcHQ+DQotPC9oZWFkPg0KLTxib2R5Pg0KLTxzY3JpcHQ+DQotDQotZGVzY3JpcHRpb24oIkFu
IG9wZW4gY29ubmVjdGlvbiBibG9ja3MgYSBzZXBhcmF0ZSBjb25uZWN0aW9uJ3Mgc2V0VmVyc2lv
biBjYWxsIik7DQotDQotY29ubmVjdGlvbnMgPSBbXQ0KLWZ1bmN0aW9uIHRlc3QoKQ0KLXsNCi0g
ICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsNCi0gICAgb3BlbkRCQ29ubmVjdGlvbigpOw0KLX0N
Ci0NCi1mdW5jdGlvbiBvcGVuREJDb25uZWN0aW9uKCkNCi17DQotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJpbmRleGVkREIub3Blbignc2V0LXZlcnNpb24tYmxvY2tlZCcpIik7DQotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7DQotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOw0KLX0NCi0NCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpDQot
ew0KLSAgICBjb25uZWN0aW9uID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsNCi0gICAgY29ubmVjdGlv
bnMucHVzaChjb25uZWN0aW9uKTsNCi0gICAgb3JpZ2luYWxfdmVyc2lvbiA9IGNvbm5lY3Rpb24u
dmVyc2lvbjsNCi0gICAgaWYgKGNvbm5lY3Rpb25zLmxlbmd0aCA8IDIpDQotICAgICAgICBvcGVu
REJDb25uZWN0aW9uKCk7DQotICAgIGVsc2Ugew0KLSAgICAgICAgdmFyIHZlcnNpb25DaGFuZ2VS
ZXF1ZXN0ID0gZXZhbEFuZExvZygiY29ubmVjdGlvbnNbMF0uc2V0VmVyc2lvbigndmVyc2lvbiAx
JykiKTsNCi0gICAgICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsNCi0gICAgICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uc3VjY2VzcyA9
IGluU2V0VmVyc2lvbjsNCi0gICAgICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uYmxvY2tlZCA9
IGJsb2NrZWQ7DQotICAgIH0NCi19DQotDQotc2Vlbl9ibG9ja2VkX2V2ZW50ID0gZmFsc2U7DQot
ZnVuY3Rpb24gYmxvY2tlZCgpDQotew0KLSAgICBldmFsQW5kTG9nKCJzZWVuX2Jsb2NrZWRfZXZl
bnQgPSB0cnVlIik7DQotICAgIGJsb2NrZWRfZXZlbnQgPSBldmVudDsNCi0gICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJibG9ja2VkX2V2ZW50LnZlcnNpb24iLCAidmVyc2lvbiAxIik7DQotICAg
IHNob3VsZEV2YWx1YXRlVG8oImJsb2NrZWRfZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUiLCAxKTsN
Ci0gICAgZXZhbEFuZExvZygiY29ubmVjdGlvbnNbMV0uY2xvc2UoKSIpOw0KLX0NCi0NCi1mdW5j
dGlvbiBpblNldFZlcnNpb24oKQ0KLXsNCi0gICAgZGVidWcoImluIHNldFZlcnNpb24ub25zdWNj
ZXNzIik7DQotICAgIHNob3VsZEJlVHJ1ZSgic2Vlbl9ibG9ja2VkX2V2ZW50Iik7DQotICAgIGRl
bGV0ZUFsbE9iamVjdFN0b3Jlcyhjb25uZWN0aW9uc1swXSk7DQotICAgIGZpbmlzaEpTVGVzdCgp
Ow0KLX0NCi0NCi0NCi10ZXN0KCk7DQotDQotPC9zY3JpcHQ+DQotPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+DQotPC9ib2R5Pg0K
LTwvaHRtbD4NCis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
c2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy9zZXRfdmVyc2lvbl9ibG9ja2VkLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0X3Zl
cnNpb25fcXVldWUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJz
aW9uX3F1ZXVlLmh0bWwKaW5kZXggNGVhYmVjNmE5NWU4MGQ2OWQyODBhN2NkOTVkYmMyMTIyZjg4
MTc0Ni4uYzE2Y2RkNzFjMDdiYzUyMDYwNzhhMzEzNGU5MDgxMWJkNzJkY2VmMSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNpb25fcXVldWUuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9xdWV1ZS5odG1s
CkBAIC0xLDEzMSArMSwxMCBAQAotPGh0bWw+DQotPGhlYWQ+DQotPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4NCi08c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+DQotPC9oZWFkPg0KLTxib2R5Pg0KLTxz
Y3JpcHQ+DQotDQotZGVzY3JpcHRpb24oIjQgb3BlbiBjb25uZWN0aW9ucyB0cnkgdG8gc2V0VmVy
c2lvbiBhdCB0aGUgc2FtZSB0aW1lLiAgMyBjb25uZWN0aW9ucyBldmVudHVhbGx5IGNsb3NlLCBh
bGxvd2luZyAxIHNldFZlcnNpb24gY2FsbCB0byBwcm9jZWVkLiIpOw0KLQ0KLWNvbm5lY3Rpb25z
ID0gW10NCi1mdW5jdGlvbiB0ZXN0KCkNCi17DQotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7
DQotDQotICAgIG9wZW5EQkNvbm5lY3Rpb24oKTsNCi19DQotDQotZnVuY3Rpb24gb3BlbkRCQ29u
bmVjdGlvbigpDQotew0KLSAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbign
c2V0LXZlcnNpb24tcXVldWUnKSIpOw0KLSAgICByZXN1bHQub25zdWNjZXNzID0gb3BlblN1Y2Nl
c3M7DQotICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQotfQ0K
LQ0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkNCi17DQotICAgIGNvbm5lY3Rpb24gPSBldmVudC50
YXJnZXQucmVzdWx0Ow0KLSAgICBjb25uZWN0aW9uLm9udmVyc2lvbmNoYW5nZSA9IGdlbmVyYXRl
VmVyc2lvbkNoYW5nZUhhbmRsZXIoKTsNCi0gICAgY29ubmVjdGlvbnMucHVzaChjb25uZWN0aW9u
KTsNCi0gICAgaWYgKGNvbm5lY3Rpb25zLmxlbmd0aCA8IDQpDQotICAgICAgICBvcGVuREJDb25u
ZWN0aW9uKCk7DQotICAgIGVsc2Ugew0KLSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImNv
bm5lY3Rpb25zWzBdLnNldFZlcnNpb24oJ3ZlcnNpb24gMCcpIik7DQotICAgICAgICByZXF1ZXN0
Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCl7IGNvbm5lY3Rpb25FcnJvcihldmVudCwgMCkgfTsN
Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsN
Ci0gICAgICAgIHJlcXVlc3Qub25ibG9ja2VkID0gYmxvY2tlZDA7DQotICAgICAgICByZXF1ZXN0
MSA9IGV2YWxBbmRMb2coImNvbm5lY3Rpb25zWzFdLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7
DQotICAgICAgICByZXF1ZXN0MS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQot
ICAgICAgICByZXF1ZXN0MS5vbnN1Y2Nlc3MgPSBpblNldFZlcnNpb24xOw0KLSAgICAgICAgcmVx
dWVzdDEub25ibG9ja2VkID0gYmxvY2tlZDE7DQotICAgICAgICByZXF1ZXN0MiA9IGV2YWxBbmRM
b2coImNvbm5lY3Rpb25zWzJdLnNldFZlcnNpb24oJ3ZlcnNpb24gMicpIik7DQotICAgICAgICBy
ZXF1ZXN0Mi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpeyBjb25uZWN0aW9uRXJyb3IoZXZlbnQs
IDIpIH07DQotICAgICAgICByZXF1ZXN0Mi5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0Nh
bGxiYWNrOw0KLSAgICAgICAgcmVxdWVzdDIub25ibG9ja2VkID0gYmxvY2tlZDI7DQotICAgICAg
ICByZXF1ZXN0MyA9IGV2YWxBbmRMb2coImNvbm5lY3Rpb25zWzNdLnNldFZlcnNpb24oJ3ZlcnNp
b24gMycpIik7DQotICAgICAgICByZXF1ZXN0My5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpeyBj
b25uZWN0aW9uRXJyb3IoZXZlbnQsIDMpIH07DQotICAgICAgICByZXF1ZXN0My5vbnN1Y2Nlc3Mg
PSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOw0KLSAgICAgICAgcmVxdWVzdDMub25ibG9ja2Vk
ID0gYmxvY2tlZDM7DQotICAgICAgICBkZWJ1ZygiIik7DQotICAgIH0NCi19DQotDQotZnVuY3Rp
b24gZ2VuZXJhdGVWZXJzaW9uQ2hhbmdlSGFuZGxlcigpDQotew0KLSAgICB2YXIgY29ubmVjdGlv
bk51bSA9IGNvbm5lY3Rpb25zLmxlbmd0aDsNCi0gICAgcmV0dXJuIGZ1bmN0aW9uKGV2ZW50KQ0K
LSAgICB7DQotICAgICAgICBzaG91bGRCZVRydWUoImV2ZW50LnZlcnNpb24ubGVuZ3RoID4gMCIp
Ow0KLSAgICAgICAgZGVidWcoImNvbm5lY3Rpb25bIiArIGNvbm5lY3Rpb25OdW0gKyAiXSByZWNl
aXZlZCB2ZXJzaW9uQ2hhbmdlRXZlbnQ6ICIgKyBldmVudC52ZXJzaW9uKTsNCi0gICAgfQ0KLX0N
Ci0NCi1ibG9ja2VkMGZpcmVkID0gZmFsc2U7DQotYmxvY2tlZDJmaXJlZCA9IGZhbHNlOw0KLWZ1
bmN0aW9uIGJsb2NrZWQwKGV2ZW50KQ0KLXsNCi0gICAgZGVidWcoIiIpOw0KLSAgICB0ZXN0UGFz
c2VkKCJjb25uZWN0aW9uWzBdIGdvdCBibG9ja2VkIGV2ZW50Iik7DQotICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiZXZlbnQudmVyc2lvbiIsICJ2ZXJzaW9uIDAiKTsNCi0gICAgZGVidWcoIkNs
b3NlIHRoZSBjb25uZWN0aW9uIHRoYXQgcmVjZWl2ZWQgdGhlIGJsb2NrIGV2ZW50OiIpOw0KLSAg
ICBldmFsQW5kTG9nKCJjb25uZWN0aW9uc1swXS5jbG9zZSgpIik7DQotICAgIGRlYnVnKCJDbG9z
ZSBhbm90aGVyIGNvbm5lY3Rpb24gYXMgd2VsbCwgdG8gdGVzdCA0LjcuNC1ub3RlOiIpOw0KLSAg
ICBldmFsQW5kTG9nKCJjb25uZWN0aW9uc1szXS5jbG9zZSgpIik7DQotICAgIGV2YWxBbmRMb2co
ImJsb2NrZWQwZmlyZWQgPSB0cnVlIik7DQotICAgIGRlYnVnKCIiKTsNCi19DQotDQotZnVuY3Rp
b24gYmxvY2tlZDEoZXZlbnQpDQotew0KLSAgICBkZWJ1ZygiIikNCi0gICAgdGVzdFBhc3NlZCgi
Y29ubmVjdGlvblsxXSBnb3QgYmxvY2tlZCBldmVudCIpOw0KLSAgICBkZWJ1ZygiRW5zdXJlIHRo
YXQgdGhpcyBibG9ja2VkIGV2ZW50IGlzIGluIG9yZGVyOiIpOw0KLSAgICBzaG91bGRCZVRydWUo
ImJsb2NrZWQwZmlyZWQiKTsNCi0gICAgc2hvdWxkQmVGYWxzZSgiYmxvY2tlZDJmaXJlZCIpOw0K
LSAgICBkZWJ1ZygiIikNCi19DQotDQotZnVuY3Rpb24gYmxvY2tlZDIoZXZlbnQpDQotew0KLSAg
ICBkZWJ1ZygiIikNCi0gICAgdGVzdFBhc3NlZCgiY29ubmVjdGlvblsyXSBnb3QgYmxvY2tlZCBl
dmVudCIpOw0KLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnZlcnNpb24iLCAidmVy
c2lvbiAyIik7DQotICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb25zWzJdLmNsb3NlKCkiKTsNCi0g
ICAgZXZhbEFuZExvZygiYmxvY2tlZDJmaXJlZCA9IHRydWUiKTsNCi0gICAgZGVidWcoIiIpDQot
fQ0KLQ0KLWZ1bmN0aW9uIGJsb2NrZWQzKGV2ZW50KQ0KLXsNCi0gICAgZGVidWcoIiIpDQotICAg
IHRlc3RQYXNzZWQoImNvbm5lY3Rpb25bM10gZ290IGJsb2NrZWQgZXZlbnQiKTsNCi0gICAgZGVi
dWcoIk5vdGU6IFRoaXMgbWVhbnMgdGhhdCBhIGNvbm5lY3Rpb24gY2FuIHJlY2VpdmUgYSBibG9j
a2VkIGV2ZW50IGFmdGVyIGl0cyBjbG9zZSgpIG1ldGhvZCBoYXMgYmVlbiBjYWxsZWQuICBTcGVj
IGlzIHNpbGVudCBvbiB0aGUgaXNzdWUgYW5kIHRoaXMgaXMgZWFzaWVzdCB0byBpbXBsZW1lbnQu
Iik7DQotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudmVyc2lvbiIsICJ2ZXJzaW9u
IDMiKTsNCi19DQotDQotZnVuY3Rpb24gY29ubmVjdGlvbkVycm9yKGV2ZW50LCBjb25uZWN0aW9u
SWQpDQotew0KLSAgICBkZWJ1ZygiIikNCi0gICAgdGVzdFBhc3NlZCgiY29ubmVjdGlvblsiICsg
Y29ubmVjdGlvbklkICsgIl0gZ290IGVycm9yIGV2ZW50Iik7DQotICAgIHNob3VsZEJlKCJldmVu
dC50YXJnZXQuZXJyb3JDb2RlIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkFCT1JUX0VSUiIpDQot
ICAgIGlmICgnd2Via2l0RXJyb3JNZXNzYWdlJyBpbiBldmVudC50YXJnZXQpIHsNCi0gICAgICAg
IHNob3VsZEJlKCJldmVudC50YXJnZXQud2Via2l0RXJyb3JNZXNzYWdlLmxlbmd0aCA+IDAiLCAi
dHJ1ZSIpOw0KLSAgICAgICAgZGVidWcoZXZlbnQudGFyZ2V0LndlYmtpdEVycm9yTWVzc2FnZSk7
DQotICAgIH0NCi19DQotDQotZnVuY3Rpb24gaW5TZXRWZXJzaW9uMShldmVudCkNCi17DQotICAg
IGRlYnVnKCIiKQ0KLSAgICB0ZXN0UGFzc2VkKCJjb25uZWN0aW9uWzFdIGdvdCBpbnRvIFNldFZl
cnNpb24iKTsNCi0gICAgZmluaXNoSlNUZXN0KCk7DQotfQ0KLQ0KLQ0KLXRlc3QoKTsNCi0NCi08
L3NjcmlwdD4NCi08c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4NCi08L2JvZHk+DQotPC9odG1sPg0KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NldF92ZXJzaW9uX3F1ZXVlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvc3RydWN0dXJlZC1jbG9uZS5odG1sIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvc3RydWN0dXJlZC1jbG9uZS5odG1sCmluZGV4IGZkYThkMmJjOGU4
YmJhNzk4YWUwZjA4MjYyZTNiNzMzMDI5YzYxYjEuLmIyMTc5YWIwYmY3ZWM0NmQ3ZmUxMzQ3NTA3
ODQzMThhMTMxMDJlNmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3N0cnVjdHVyZWQtY2xvbmUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9zdHJ1Y3R1cmVkLWNsb25lLmh0bWwKQEAgLTUsNTM3ICs1LDcgQEAKIDwvaGVhZD4KIDxib2R5
PgogPGlucHV0IHR5cGU9ImZpbGUiIGlkPSJmaWxlSW5wdXQiIG11bHRpcGxlPjwvaW5wdXQ+Ci08
c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBzdHJ1Y3R1cmVkIGNsb25lIHBlcm11dGF0aW9u
cyBpbiBJbmRleGVkREIuIEZpbGUvRmlsZUxpc3QgdGVzdHMgcmVxdWlyZSBEdW1wUmVuZGVyVHJl
ZS4iKTsKLQotaWYgKHNlbGYuZXZlbnRTZW5kZXIpIHsKLSAgICB2YXIgZmlsZUlucHV0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZpbGVJbnB1dCIpOwotICAgIHZhciBmaWxlUmVjdCA9IGZp
bGVJbnB1dC5nZXRDbGllbnRSZWN0cygpWzBdOwotICAgIHZhciB0YXJnZXRYID0gZmlsZVJlY3Qu
bGVmdCArIGZpbGVSZWN0LndpZHRoIC8gMjsKLSAgICB2YXIgdGFyZ2V0WSA9IGZpbGVSZWN0LnRv
cCArIGZpbGVSZWN0LmhlaWdodCAvIDI7Ci0gICAgZXZlbnRTZW5kZXIuYmVnaW5EcmFnV2l0aEZp
bGVzKFsncmVzb3VyY2VzL3Rlc3QtZGF0YS5odG1sJywgJ3Jlc291cmNlcy90ZXN0LWRhdGEudHh0
J10pOwotICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHRhcmdldFgsIHRhcmdldFkpOwotICAg
IGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKLX0KLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVt
b3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICBwcmVwYXJlRGF0YWJhc2UoKTsKLX0KLQotZnVuY3Rp
b24gcHJlcGFyZURhdGFiYXNlKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIlByZXBh
cmUgRGF0YWJhc2UiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0
ZURhdGFiYXNlKCdzdHJ1Y3R1cmVkLWNsb25lJykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KGUpIHsKLSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdzdHJ1
Y3R1cmVkLWNsb25lJykiKTsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZSkgewot
ICAgICAgICAgICAgZXZhbEFuZExvZygiZGIgPSByZXF1ZXN0LnJlc3VsdCIpOwotICAgICAgICAg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkYi52ZXJzaW9uIiwgIiIpOwotICAgICAgICAgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgICAgICAgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgICAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICBldmFsQW5k
TG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLSAgICAgICAgICAgICAg
ICB2YXIgdHJhbnMgPSByZXF1ZXN0LnJlc3VsdDsKLSAgICAgICAgICAgICAgICB0cmFucy5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgICAgICAgICAgdHJhbnMub25h
Ym9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgICAgICAgICAgICAgIHRyYW5zLm9u
Y29tcGxldGUgPSBzdGFydFRlc3RzOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICB9
OwotfQotCi1mdW5jdGlvbiBzdGFydFRlc3RzKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVi
dWcoIlJ1bm5pbmcgdGVzdHMuLi4iKTsKLSAgICB2YXIgdGVzdHNfdG9fcnVuID0gWwotICAgICAg
ICB0ZXN0VW5kZWZpbmVkLAotICAgICAgICB0ZXN0TnVsbCwKLSAgICAgICAgdGVzdEJvb2xlYW4s
Ci0gICAgICAgIHRlc3ROdW1iZXIsCi0gICAgICAgIHRlc3RTdHJpbmcsCi0gICAgICAgIHRlc3RC
b29sZWFuT2JqZWN0LAotICAgICAgICB0ZXN0TnVtYmVyT2JqZWN0LAotICAgICAgICB0ZXN0U3Ry
aW5nT2JqZWN0LAotICAgICAgICB0ZXN0RGF0ZU9iamVjdCwKLSAgICAgICAgdGVzdFJlZ0V4cE9i
amVjdCwKLSAgICAgICAgdGVzdEltYWdlRGF0YSwKLSAgICAgICAgdGVzdEJsb2IsCi0gICAgICAg
IHRlc3RGaWxlLAotICAgICAgICB0ZXN0RmlsZUxpc3QsCi0gICAgICAgIHRlc3RBcnJheSwKLSAg
ICAgICAgdGVzdE9iamVjdAotICAgIF07Ci0KLSAgICBmdW5jdGlvbiBuZXh0VGVzdCgpIHsKLSAg
ICAgICAgZGVidWcoIiIpOwotICAgICAgICBpZiAodGVzdHNfdG9fcnVuLmxlbmd0aCkgewotICAg
ICAgICAgICAgdmFyIHRlc3QgPSB0ZXN0c190b19ydW4uc2hpZnQoKTsKLSAgICAgICAgICAgIHRl
c3QobmV4dFRlc3QpOyAvLyBXaGVuIGRvbmUsIGNhbGwgdGhpcyBhZ2Fpbi4KLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIHRlc3RCYWRUeXBlcygpOwotICAgICAgICB9Ci0gICAgfQotICAg
IG5leHRUZXN0KCk7Ci19Ci0KLWZ1bmN0aW9uIGZvckVhY2hXaXRoQ2FsbGJhY2sodGVzdEZ1bmN0
aW9uLCB2YWx1ZXMsIGNhbGxiYWNrKQotewotICAgIGZ1bmN0aW9uIG5leHRWYWx1ZSgpIHsKLSAg
ICAgICAgaWYgKHZhbHVlcy5sZW5ndGgpIHsKLSAgICAgICAgICAgIHRlc3RGdW5jdGlvbih2YWx1
ZXMuc2hpZnQoKSwgbmV4dFZhbHVlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGNh
bGxiYWNrKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBuZXh0VmFsdWUoKTsKLX0KLQotZnVu
Y3Rpb24gdGVzdFZhbHVlKHZhbHVlLCBjYWxsYmFjaykKLXsKLSAgICAvLyBPbmUgdHJhbnNhY3Rp
b24gcGVyIHRlc3QsIHNpbmNlIHNvbWUgdGVzdHMgcmVxdWlyZSBhc3luY2hyb25vdXMKLSAgICAv
LyBvcGVyYXRpb25zIHRvIHZlcmlmeSB0aGUgcmVzdWx0IChlLmcuIHZpYSBGaWxlUmVhZGVyKQot
ICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlTmFtZScs
IElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgdHJhbnNhY3Rpb24ub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4
cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9u
Lm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotCi0gICAgc2VsZi52YWx1ZSA9IHZhbHVlOwot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5wdXQodmFsdWUsICdrZXknKSIpOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24oZSkgewotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
c3RvcmUuZ2V0KCdrZXknKSIpOwotICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihlKSB7
Ci0gICAgICAgICAgICBjYWxsYmFjayhyZXF1ZXN0LnJlc3VsdCk7Ci0gICAgICAgIH07Ci0gICAg
fTsKLX0KLQotLy8gSWRlbnRpdHkgdGVzdGluZywgc2Vuc2l0aXZlIHRvIE5hTiBhbmQgLTAKLWZ1
bmN0aW9uIGlzKHgsIHkpIHsKLSAgICBpZiAoeCA9PT0geSkgewotICAgICAgICByZXR1cm4geCAh
PT0gMCB8fCAxIC8geCA9PT0gMSAvIHk7Ci0gICAgfQotICAgIHJldHVybiB4ICE9PSB4ICYmIHkg
IT09IHk7Ci19Ci0KLWZ1bmN0aW9uIGFycmF5Q29tcGFyZShhLCBiKSB7Ci0gICAgaWYgKGEubGVu
Z3RoICE9PSBiLmxlbmd0aCkgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgYS5sZW5ndGg7ICsraSkgewotICAgICAgICBpZiAoIWlzKGFbaV0s
IGJbaV0pKSB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RQcmltaXRpdmVWYWx1ZShzdHJpbmcs
IGNhbGxiYWNrKQotewotICAgIGRlYnVnKCJUZXN0aW5nOiAiICsgc3RyaW5nKTsKLSAgICB2YXIg
dmFsdWUgPSBldmFsKCJ2YWx1ZSA9ICgiICsgc3RyaW5nICsgIikiKTsKLSAgICB0ZXN0X2RhdGEg
PSB2YWx1ZTsKLSAgICB0ZXN0VmFsdWUodGVzdF9kYXRhLCBmdW5jdGlvbihyZXN1bHQpIHsKLSAg
ICAgICAgc2VsZi5yZXN1bHQgPSByZXN1bHQ7Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgiaXModGVz
dF9kYXRhLCByZXN1bHQpIik7Ci0gICAgICAgIGRlYnVnKCIiKTsKLSAgICAgICAgY2FsbGJhY2so
KTsKLSAgICB9KTsKLX0KLQotZnVuY3Rpb24gdGVzdE9iamVjdFdpdGhWYWx1ZShzdHJpbmcsIGNh
bGxiYWNrKQotewotICAgIGRlYnVnKCJUZXN0aW5nOiAiICsgc3RyaW5nKTsKLSAgICB2YXIgdmFs
dWUgPSBldmFsKCJ2YWx1ZSA9ICgiICsgc3RyaW5nICsgIikiKTsKLSAgICB0ZXN0X2RhdGEgPSB2
YWx1ZTsKLSAgICB0ZXN0VmFsdWUodGVzdF9kYXRhLCBmdW5jdGlvbihyZXN1bHQpIHsKLSAgICAg
ICAgc2VsZi5yZXN1bHQgPSByZXN1bHQ7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
dHlwZW9mIHJlc3VsdCIsICJvYmplY3QiKTsKLSAgICAgICAgc2hvdWxkQmUoIk9iamVjdC5wcm90
b3R5cGUudG9TdHJpbmcuY2FsbChyZXN1bHQpIiwgIk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcu
Y2FsbCh0ZXN0X2RhdGEpIik7Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgidGVzdF9kYXRhICE9PSBy
ZXN1bHQiKTsKLSAgICAgICAgc2hvdWxkQmUoInJlc3VsdC50b1N0cmluZygpIiwgInRlc3RfZGF0
YS50b1N0cmluZygpIik7Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgiaXModGVzdF9kYXRhLnZhbHVl
T2YoKSwgcmVzdWx0LnZhbHVlT2YoKSkiKTsKLSAgICAgICAgZGVidWcoIiIpOwotICAgICAgICBj
YWxsYmFjaygpOwotICAgIH0pOwotfQotCi1mdW5jdGlvbiB0ZXN0VW5kZWZpbmVkKGNhbGxiYWNr
KQotewotICAgIHRlc3RQcmltaXRpdmVWYWx1ZSgidW5kZWZpbmVkIiwgY2FsbGJhY2spOwotfQot
Ci1mdW5jdGlvbiB0ZXN0TnVsbChjYWxsYmFjaykKLXsKLSAgICB0ZXN0UHJpbWl0aXZlVmFsdWUo
Im51bGwiLCBjYWxsYmFjayk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RCb29sZWFuKGNhbGxiYWNrKQot
ewotICAgIGRlYnVnKCJUZXN0aW5nIGJvb2xlYW4gcHJpbWl0aXZlcyIpOwotICAgIGRlYnVnKCIi
KTsKLSAgICBmb3JFYWNoV2l0aENhbGxiYWNrKHRlc3RQcmltaXRpdmVWYWx1ZSwgWyJ0cnVlIiwg
ImZhbHNlIl0sIGNhbGxiYWNrKTsKLX0KLQotZnVuY3Rpb24gdGVzdEJvb2xlYW5PYmplY3QoY2Fs
bGJhY2spCi17Ci0gICAgZGVidWcoIlRlc3RpbmcgQm9vbGVhbiBvYmplY3RzIik7Ci0gICAgZGVi
dWcoIiIpOwotICAgIGZvckVhY2hXaXRoQ2FsbGJhY2sodGVzdE9iamVjdFdpdGhWYWx1ZSwgWwot
ICAgICAgICAibmV3IEJvb2xlYW4odHJ1ZSkiLAotICAgICAgICAibmV3IEJvb2xlYW4oZmFsc2Up
IgotICAgIF0sIGNhbGxiYWNrKTsKLX0KLQotZnVuY3Rpb24gdGVzdFN0cmluZyhjYWxsYmFjaykK
LXsKLSAgICBkZWJ1ZygiVGVzdGluZyBzdHJpbmcgcHJpbWl0aXZlcyIpOwotICAgIGRlYnVnKCIi
KTsKLSAgICBmb3JFYWNoV2l0aENhbGxiYWNrKHRlc3RQcmltaXRpdmVWYWx1ZSwgWwotICAgICAg
ICAiJyciLAotICAgICAgICAiJ3RoaXMgaXMgYSBzYW1wbGUgc3RyaW5nJyIsCi0gICAgICAgICIn
bnVsbChcXDApJyIKLSAgICBdLCBjYWxsYmFjayk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RTdHJpbmdP
YmplY3QoY2FsbGJhY2spCi17Ci0gICAgZGVidWcoIlRlc3RpbmcgU3RyaW5nIG9iamVjdHMiKTsK
LSAgICBkZWJ1ZygiIik7Ci0gICAgZm9yRWFjaFdpdGhDYWxsYmFjayh0ZXN0T2JqZWN0V2l0aFZh
bHVlLCBbCi0gICAgICAgICJuZXcgU3RyaW5nKCkiLAotICAgICAgICAibmV3IFN0cmluZygndGhp
cyBpcyBhIHNhbXBsZSBzdHJpbmcnKSIsCi0gICAgICAgICJuZXcgU3RyaW5nKCdudWxsKFxcMCkn
KSIKLSAgICBdLCBjYWxsYmFjayk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3ROdW1iZXIoY2FsbGJhY2sp
Ci17Ci0gICAgZGVidWcoIlRlc3RpbmcgbnVtYmVyIHByaW1pdGl2ZXMiKTsKLSAgICBkZWJ1Zygi
Iik7Ci0gICAgZm9yRWFjaFdpdGhDYWxsYmFjayh0ZXN0UHJpbWl0aXZlVmFsdWUsIFsKLSAgICAg
ICAgIk5hTiIsCi0gICAgICAgICItSW5maW5pdHkiLAotICAgICAgICAiLU51bWJlci5NQVhfVkFM
VUUiLAotICAgICAgICAiLU51bWJlci5NSU5fVkFMVUUiLAotICAgICAgICAiLTAiLAotICAgICAg
ICAiMCIsCi0gICAgICAgICJOdW1iZXIuTUlOX1ZBTFVFIiwKLSAgICAgICAgIk51bWJlci5NQVhf
VkFMVUUiLAotICAgICAgICAiSW5maW5pdHkiCi0gICAgXSwgY2FsbGJhY2spOwotfQotCi1mdW5j
dGlvbiB0ZXN0TnVtYmVyT2JqZWN0KGNhbGxiYWNrKQotewotICAgIGRlYnVnKCJUZXN0aW5nIE51
bWJlciBvYmplY3RzIik7Ci0gICAgZGVidWcoIiIpOwotICAgIGZvckVhY2hXaXRoQ2FsbGJhY2so
dGVzdE9iamVjdFdpdGhWYWx1ZSwgWwotICAgICAgICAibmV3IE51bWJlcihOYU4pIiwKLSAgICAg
ICAgIm5ldyBOdW1iZXIoLUluZmluaXR5KSIsCi0gICAgICAgICJuZXcgTnVtYmVyKC1OdW1iZXIu
TUFYX1ZBTFVFKSIsCi0gICAgICAgICJuZXcgTnVtYmVyKC1OdW1iZXIuTUlOX1ZBTFVFKSIsCi0g
ICAgICAgICJuZXcgTnVtYmVyKC0wKSIsCi0gICAgICAgICJuZXcgTnVtYmVyKDApIiwKLSAgICAg
ICAgIm5ldyBOdW1iZXIoTnVtYmVyLk1JTl9WQUxVRSkiLAotICAgICAgICAibmV3IE51bWJlcihO
dW1iZXIuTUFYX1ZBTFVFKSIsCi0gICAgICAgICJuZXcgTnVtYmVyKEluZmluaXR5KSIKLSAgICBd
LCBjYWxsYmFjayk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3REYXRlT2JqZWN0KGNhbGxiYWNrKQotewot
ICAgIGRlYnVnKCJUZXN0aW5nIERhdGUgb2JqZWN0cyIpOwotICAgIGRlYnVnKCIiKTsKLSAgICBm
b3JFYWNoV2l0aENhbGxiYWNrKHRlc3RPYmplY3RXaXRoVmFsdWUsIFsKLSAgICAgICAgIm5ldyBE
YXRlKC0xZTEzKSIsCi0gICAgICAgICJuZXcgRGF0ZSgtMWUxMikiLAotICAgICAgICAibmV3IERh
dGUoLTFlOSkiLAotICAgICAgICAibmV3IERhdGUoLTFlNikiLAotICAgICAgICAibmV3IERhdGUo
LTFlMykiLAotICAgICAgICAibmV3IERhdGUoMCkiLAotICAgICAgICAibmV3IERhdGUoMWUzKSIs
Ci0gICAgICAgICJuZXcgRGF0ZSgxZTYpIiwKLSAgICAgICAgIm5ldyBEYXRlKDFlOSkiLAotICAg
ICAgICAibmV3IERhdGUoMWUxMikiLAotICAgICAgICAibmV3IERhdGUoMWUxMykiCi0gICAgXSwg
Y2FsbGJhY2spOwotfQotCi1mdW5jdGlvbiB0ZXN0UmVnRXhwT2JqZWN0KGNhbGxiYWNrKQotewot
ICAgIGRlYnVnKCJUZXN0aW5nIFJlZ0V4cCBvYmplY3RzIik7Ci0gICAgZGVidWcoIiIpOwotICAg
IGZ1bmN0aW9uIHRlc3RSZWdFeHAoc3RyaW5nLCBjYWxsYmFjaykgewotICAgICAgICBkZWJ1Zygi
VGVzdGluZyBSZWdFeHA6ICIgKyBzdHJpbmcpOwotICAgICAgICB2YXIgdmFsdWUgPSBldmFsKCJ2
YWx1ZSA9ICgiICsgc3RyaW5nICsgIikiKTsKLSAgICAgICAgdGVzdF9kYXRhID0gdmFsdWU7Ci0g
ICAgICAgIHRlc3RWYWx1ZSh0ZXN0X2RhdGEsIGZ1bmN0aW9uKHJlc3VsdCkgewotICAgICAgICAg
ICAgc2VsZi5yZXN1bHQgPSByZXN1bHQ7Ci0gICAgICAgICAgICBzaG91bGRCZVRydWUoInRlc3Rf
ZGF0YSAhPT0gcmVzdWx0Iik7Ci0gICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIk9i
amVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChyZXN1bHQpIiwgIltvYmplY3QgUmVnRXhwXSIp
OwotICAgICAgICAgICAgc2hvdWxkQmUoInJlc3VsdC50b1N0cmluZygpIiwgInRlc3RfZGF0YS50
b1N0cmluZygpIik7Ci0gICAgICAgICAgICBkZWJ1ZygiIik7Ci0gICAgICAgICAgICBjYWxsYmFj
aygpOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBmb3JFYWNoV2l0aENhbGxiYWNrKHRlc3RS
ZWdFeHAsIFsKLSAgICAgICAgIm5ldyBSZWdFeHAoKSIsCi0gICAgICAgICIvYWJjLyIsCi0gICAg
ICAgICIvYWJjL2ciLAotICAgICAgICAiL2FiYy9pIiwKLSAgICAgICAgIi9hYmMvZ2kiLAotICAg
ICAgICAiL2FiYy9tIiwKLSAgICAgICAgIi9hYmMvbWciLAotICAgICAgICAiL2FiYy9taSIsCi0g
ICAgICAgICIvYWJjL21naSIKLSAgICBdLCBjYWxsYmFjayk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RJ
bWFnZURhdGEoY2FsbGJhY2spCi17Ci0gICAgZGVidWcoIlRlc3RpbmcgSW1hZ2VEYXRhIik7Ci0g
ICAgZXZhbEFuZExvZygiY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyki
KTsKLSAgICBldmFsQW5kTG9nKCJjYW52YXMud2lkdGggPSA4Iik7Ci0gICAgZXZhbEFuZExvZygi
Y2FudmFzLmhlaWdodCA9IDgiKTsKLSAgICBldmFsQW5kTG9nKCJ0ZXN0X2RhdGEgPSBjYW52YXMu
Z2V0Q29udGV4dCgnMmQnKS5nZXRJbWFnZURhdGEoMCwgMCwgOCwgOCkiKTsKLQotICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgMjU2OyArK2kpIHsKLSAgICAgICAgdGVzdF9kYXRhLmRhdGFbaV0gPSBp
OwotICAgIH0KLQotICAgIHRlc3RWYWx1ZSh0ZXN0X2RhdGEsIGZ1bmN0aW9uKHJlc3VsdCkgewot
ICAgICAgICBzZWxmLnJlc3VsdCA9IHJlc3VsdDsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXN0
X2RhdGEgIT09IHJlc3VsdCIpOwotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIk9iamVj
dC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChyZXN1bHQpIiwgIltvYmplY3QgSW1hZ2VEYXRhXSIp
OwotICAgICAgICBzaG91bGRCZSgicmVzdWx0LndpZHRoIiwgInRlc3RfZGF0YS53aWR0aCIpOwot
ICAgICAgICBzaG91bGRCZSgicmVzdWx0LmhlaWdodCIsICJ0ZXN0X2RhdGEuaGVpZ2h0Iik7Ci0g
ICAgICAgIHNob3VsZEJlKCJyZXN1bHQuZGF0YS5sZW5ndGgiLCAidGVzdF9kYXRhLmRhdGEubGVu
Z3RoIik7Ci0gICAgICAgIGlmIChhcnJheUNvbXBhcmUodGVzdF9kYXRhLmRhdGEsIHJlc3VsdC5k
YXRhKSkgewotICAgICAgICAgICAgdGVzdFBhc3NlZCgicmVzdWx0IGRhdGEgbWF0Y2hlcyIpOwot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdGVzdEZhaWxlZCgicmVzdWx0IGRhdGEgZG9l
c24ndCBtYXRjaCIpOwotICAgICAgICB9Ci0gICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgfSk7Ci19
Ci0KLWZ1bmN0aW9uIHJlYWRCbG9iQXNUZXh0KGJsb2IsIGNhbGxiYWNrKQotewotICAgIHZhciBy
ZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpOwotICAgIHJlYWRlci5vbmxvYWQgPSBmdW5jdGlvbihl
KSB7Ci0gICAgICAgIGlmIChlLnRhcmdldC5yZWFkeVN0YXRlID09PSBGaWxlUmVhZGVyLkRPTkUp
IHsKLSAgICAgICAgICAgIGNhbGxiYWNrKGUudGFyZ2V0LnJlc3VsdCk7Ci0gICAgICAgIH0KLSAg
ICB9OwotICAgIHJlYWRlci5vbmVycm9yID0gZnVuY3Rpb24oZSkgewotICAgICAgICB0ZXN0RmFp
bGVkKCJFcnJvciByZWFkaW5nIGJsb2IgYXMgdGV4dDogIiArIGUpOwotICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKLSAgICB9OwotICAgIHJlYWRlci5yZWFkQXNUZXh0KGJsb2IpOwotfQotCi1mdW5j
dGlvbiBjaGVja0Jsb2JDb250ZW50cyhibG9iLCBleHBlY3RlZCwgY2FsbGJhY2spCi17Ci0gICAg
cmVhZEJsb2JBc1RleHQoYmxvYiwgZnVuY3Rpb24odGV4dCkgewotICAgICAgICBzZWxmLnRleHQg
PSB0ZXh0OwotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInRleHQiLCBleHBlY3RlZCk7
Ci0gICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIGNvbXBhcmVCbG9i
cyhibG9iMSwgYmxvYjIsIGNhbGxiYWNrKQotewotICAgIHJlYWRCbG9iQXNUZXh0KGJsb2IxLCBm
dW5jdGlvbih0ZXh0MSkgewotICAgICAgICByZWFkQmxvYkFzVGV4dChibG9iMiwgZnVuY3Rpb24o
dGV4dDIpIHsKLSAgICAgICAgICAgIHNlbGYudGV4dDEgPSB0ZXh0MTsKLSAgICAgICAgICAgIHNl
bGYudGV4dDIgPSB0ZXh0MjsKLSAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidGV4
dDIiLCB0ZXh0MSk7Ci0gICAgICAgICAgICBjYWxsYmFjaygpOwotICAgICAgICB9KTsKLSAgICB9
KTsKLX0KLQotZnVuY3Rpb24gdGVzdEJsb2IoY2FsbGJhY2spCi17Ci0gICAgZGVidWcoIlRlc3Rp
bmcgQmxvYiIpOwotCi0gICAgLy8gRklYTUU6IEJsb2IsIEZpbGUsIGFuZCBGaWxlTGlzdCBzdXBw
b3J0IGlzIGluY29tcGxldGUuCi0gICAgLy8gaHR0cDovL2NyYnVnLmNvbS8xMDgwMTIKLSAgICBk
ZWJ1ZygiU2tpcHBpbmcgdGVzdCIpOwotICAgIGNhbGxiYWNrKCk7Ci0gICAgcmV0dXJuOwotCi0g
ICAgZXZhbEFuZExvZygiQmxvYkJ1aWxkZXIgPSBzZWxmLkJsb2JCdWlsZGVyIHx8IHNlbGYuV2Vi
S2l0QmxvYkJ1aWxkZXIiKTsKLSAgICBzaG91bGRCZVRydWUoIkJsb2JCdWlsZGVyICE9IG51bGwi
KTsKLSAgICBzaG91bGRCZVRydWUoIkZpbGVSZWFkZXIgIT0gbnVsbCIpOwotICAgIGV2YWxBbmRM
b2coImJ1aWxkZXIgPSBuZXcgQmxvYkJ1aWxkZXIoKSIpOwotICAgIGV2YWxBbmRMb2coInRlc3Rf
Y29udGVudCA9ICdUaGlzIGlzIGEgdGVzdC4gVGhpcyBpcyBvbmx5IGEgdGVzdC4nIik7Ci0gICAg
ZXZhbEFuZExvZygiYnVpbGRlci5hcHBlbmQodGVzdF9jb250ZW50KSIpOwotICAgIGV2YWxBbmRM
b2coInRlc3RfZGF0YSA9IGJ1aWxkZXIuZ2V0QmxvYigpIik7Ci0gICAgdGVzdFZhbHVlKHRlc3Rf
ZGF0YSwgZnVuY3Rpb24ocmVzdWx0KSB7Ci0gICAgICAgIHNlbGYucmVzdWx0ID0gcmVzdWx0Owot
ICAgICAgICBzaG91bGRCZVRydWUoInRlc3RfZGF0YSAhPT0gcmVzdWx0Iik7Ci0gICAgICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHJlc3Vs
dCkiLCAiW29iamVjdCBCbG9iXSIpOwotICAgICAgICBzaG91bGRCZSgicmVzdWx0LnNpemUiLCAi
dGVzdF9kYXRhLnNpemUiKTsKLSAgICAgICAgc2hvdWxkQmUoInJlc3VsdC50eXBlIiwgInRlc3Rf
ZGF0YS50eXBlIik7Ci0gICAgICAgIGNoZWNrQmxvYkNvbnRlbnRzKHJlc3VsdCwgdGVzdF9jb250
ZW50LCBjYWxsYmFjayk7Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIGNvbXBhcmVGaWxlcyhmaWxl
MSwgZmlsZTIsIGNhbGxiYWNrKQotewotICAgIHNlbGYuZmlsZTEgPSBmaWxlMTsKLSAgICBzZWxm
LmZpbGUyID0gZmlsZTI7Ci0gICAgc2hvdWxkQmVUcnVlKCJmaWxlMSAhPT0gZmlsZTIiKTsKLSAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChm
aWxlMSkiLCAiW29iamVjdCBGaWxlXSIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiT2Jq
ZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGZpbGUyKSIsICJbb2JqZWN0IEZpbGVdIik7Ci0g
ICAgZGVidWcoImZpbGUxLnNpemU6ICIgKyBmaWxlMS5zaXplKTsKLSAgICBzaG91bGRCZSgiZmls
ZTEuc2l6ZSIsICJmaWxlMi5zaXplIik7Ci0gICAgZGVidWcoImZpbGUxLnR5cGU6ICIgKyBmaWxl
MS50eXBlKTsKLSAgICBzaG91bGRCZSgiZmlsZTEudHlwZSIsICJmaWxlMi50eXBlIik7Ci0gICAg
ZGVidWcoImZpbGUxLm5hbWU6ICIgKyBmaWxlMS5uYW1lKTsKLSAgICBzaG91bGRCZSgiZmlsZTEu
bmFtZSIsICJmaWxlMi5uYW1lIik7Ci0gICAgc2hvdWxkQmUoIlN0cmluZyhmaWxlMS5sYXN0TW9k
aWZpZWREYXRlKSIsICJTdHJpbmcoZmlsZTIubGFzdE1vZGlmaWVkRGF0ZSkiKTsKLSAgICBpZiAo
Y2FsbGJhY2spIHsKLSAgICAgICAgY29tcGFyZUJsb2JzKGZpbGUxLCBmaWxlMiwgY2FsbGJhY2sp
OwotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdEZpbGUoY2FsbGJhY2spCi17Ci0gICAgZGVidWco
IlRlc3RpbmcgRmlsZSIpOwotCi0gICAgLy8gRklYTUU6IEJsb2IsIEZpbGUsIGFuZCBGaWxlTGlz
dCBzdXBwb3J0IGlzIGluY29tcGxldGUuCi0gICAgLy8gaHR0cDovL2NyYnVnLmNvbS8xMDgwMTIK
LSAgICBkZWJ1ZygiU2tpcHBpbmcgdGVzdCIpOwotICAgIGNhbGxiYWNrKCk7Ci0gICAgcmV0dXJu
OwotCi0gICAgZXZhbEFuZExvZygidGVzdF9jb250ZW50ID0gZmlsZUlucHV0LmZpbGVzWzBdIik7
Ci0KLSAgICBzZWxmLnRlc3RfZGF0YSA9IHRlc3RfY29udGVudDsKLSAgICB0ZXN0VmFsdWUodGVz
dF9kYXRhLCBmdW5jdGlvbihyZXN1bHQpIHsKLSAgICAgICAgc2VsZi5yZXN1bHQgPSByZXN1bHQ7
Ci0gICAgICAgIGNvbXBhcmVGaWxlcyhyZXN1bHQsIHRlc3RfZGF0YSwgY2FsbGJhY2spOwotICAg
IH0pOwotfQotCi0KLWZ1bmN0aW9uIHRlc3RGaWxlTGlzdChjYWxsYmFjaykKLXsKLSAgICBkZWJ1
ZygiVGVzdGluZyBGaWxlTGlzdCIpOwotCi0gICAgLy8gRklYTUU6IEJsb2IsIEZpbGUsIGFuZCBG
aWxlTGlzdCBzdXBwb3J0IGlzIGluY29tcGxldGUuCi0gICAgLy8gaHR0cDovL2NyYnVnLmNvbS8x
MDgwMTIKLSAgICBkZWJ1ZygiU2tpcHBpbmcgdGVzdCIpOwotICAgIGNhbGxiYWNrKCk7Ci0gICAg
cmV0dXJuOwotCi0gICAgZXZhbEFuZExvZygidGVzdF9jb250ZW50ID0gZmlsZUlucHV0LmZpbGVz
Iik7Ci0KLSAgICBzZWxmLnRlc3RfZGF0YSA9IHRlc3RfY29udGVudDsKLSAgICB0ZXN0VmFsdWUo
dGVzdF9kYXRhLCBmdW5jdGlvbihyZXN1bHQpIHsKLSAgICAgICAgc2VsZi5yZXN1bHQgPSByZXN1
bHQ7Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgidGVzdF9kYXRhICE9PSByZXN1bHQiKTsKLSAgICAg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwo
cmVzdWx0KSIsICJbb2JqZWN0IEZpbGVMaXN0XSIpOwotICAgICAgICBzaG91bGRCZSgicmVzdWx0
Lmxlbmd0aCIsICJ0ZXN0X2RhdGEubGVuZ3RoIik7Ci0gICAgICAgIGkgPSAwOwotICAgICAgICBm
dW5jdGlvbiBkb05leHQoKSB7Ci0gICAgICAgICAgICBpZiAoaSA+PSB0ZXN0X2RhdGEubGVuZ3Ro
KSB7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgZGVidWcoImNvbXBhcmluZyBmaWxlWyIgKyBpICsgIl0iKTsKLSAgICAg
ICAgICAgICAgICBjb21wYXJlRmlsZXMocmVzdWx0W2ldLCB0ZXN0X2RhdGFbaSsrXSwgZG9OZXh0
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBkb05leHQoKTsKLSAgICB9KTsK
LX0KLQotZnVuY3Rpb24gdGVzdEFycmF5KGNhbGxiYWNrKSB7Ci0gICAgZGVidWcoIlRlc3Rpbmcg
QXJyYXkiKTsKLSAgICBldmFsQW5kTG9nKCJ0ZXN0X2RhdGEgPSBbXSIpOwotICAgIGV2YWxBbmRM
b2coInRlc3RfZGF0YVswXSA9ICdmb28nIik7Ci0gICAgZXZhbEFuZExvZygidGVzdF9kYXRhWzFd
ID0gJ2JhciciKTsKLSAgICBldmFsQW5kTG9nKCJ0ZXN0X2RhdGFbMTBdID0gdHJ1ZSIpOwotICAg
IGV2YWxBbmRMb2coInRlc3RfZGF0YVsxMV0gPSBmYWxzZSIpOwotICAgIGV2YWxBbmRMb2coInRl
c3RfZGF0YVsyMF0gPSAxMjMiKTsKLSAgICBldmFsQW5kTG9nKCJ0ZXN0X2RhdGFbMjFdID0gNDU2
Iik7Ci0gICAgZXZhbEFuZExvZygidGVzdF9kYXRhWzMwXSA9IG51bGwiKTsKLQotICAgIHRlc3RW
YWx1ZSh0ZXN0X2RhdGEsIGZ1bmN0aW9uKHJlc3VsdCkgewotICAgICAgICBzZWxmLnJlc3VsdCA9
IHJlc3VsdDsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXN0X2RhdGEgIT09IHJlc3VsdCIpOwot
ICAgICAgICBzaG91bGRCZVRydWUoInRlc3RfZGF0YS5sZW5ndGggPT09IHJlc3VsdC5sZW5ndGgi
KTsKLSAgICAgICAgT2JqZWN0LmtleXModGVzdF9kYXRhKS5mb3JFYWNoKAotICAgICAgICAgICAg
ZnVuY3Rpb24oa2V5KSB7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmUoInRlc3RfZGF0YVsiICsg
a2V5ICsgIl0iLCAicmVzdWx0WyIgKyBrZXkgKyAiXSIpOwotICAgICAgICAgICAgfSk7Ci0gICAg
ICAgIGNhbGxiYWNrKCk7Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RPYmplY3QoY2FsbGJh
Y2spIHsKLSAgICBkZWJ1ZygiVGVzdGluZyBPYmplY3QiKTsKLSAgICBldmFsQW5kTG9nKCJ0ZXN0
X2RhdGEgPSBbXSIpOwotICAgIGV2YWxBbmRMb2coInRlc3RfZGF0YVswXSA9ICdmb28nIik7Ci0g
ICAgZXZhbEFuZExvZygidGVzdF9kYXRhWzFdID0gJ2JhciciKTsKLSAgICBldmFsQW5kTG9nKCJ0
ZXN0X2RhdGFbJ2EnXSA9IHRydWUiKTsKLSAgICBldmFsQW5kTG9nKCJ0ZXN0X2RhdGFbJ2InXSA9
IGZhbHNlIik7Ci0gICAgZXZhbEFuZExvZygidGVzdF9kYXRhWydmb28nXSA9IDEyMyIpOwotICAg
IGV2YWxBbmRMb2coInRlc3RfZGF0YVsnYmFyJ10gPSA0NTYiKTsKLSAgICBldmFsQW5kTG9nKCJ0
ZXN0X2RhdGFbJyddID0gbnVsbCIpOwotCi0gICAgdGVzdFZhbHVlKHRlc3RfZGF0YSwgZnVuY3Rp
b24ocmVzdWx0KSB7Ci0gICAgICAgIHNlbGYucmVzdWx0ID0gcmVzdWx0OwotICAgICAgICBzaG91
bGRCZVRydWUoInRlc3RfZGF0YSAhPT0gcmVzdWx0Iik7Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgi
YXJyYXlDb21wYXJlKE9iamVjdC5rZXlzKHJlc3VsdCkuc29ydCgpLCBPYmplY3Qua2V5cyh0ZXN0
X2RhdGEpLnNvcnQoKSkiKTsKLSAgICAgICAgT2JqZWN0LmtleXModGVzdF9kYXRhKS5mb3JFYWNo
KAotICAgICAgICAgICAgZnVuY3Rpb24oa2V5KSB7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmUo
InRlc3RfZGF0YVsiICsgSlNPTi5zdHJpbmdpZnkoa2V5KSArICJdIiwgInJlc3VsdFsiICsgSlNP
Ti5zdHJpbmdpZnkoa2V5KSArICJdIik7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgY2FsbGJh
Y2soKTsKLSAgICB9KTsKLX0KLQotZnVuY3Rpb24gdGVzdEJhZFR5cGVzKCkKLXsKLSAgICBkZWJ1
ZygiIik7Ci0gICAgZGVidWcoIlRlc3QgdHlwZXMgdGhhdCBjYW4ndCBiZSBjbG9uZWQ6Iik7Ci0g
ICAgZGVidWcoIiIpOwotCi0gICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2Fj
dGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICBldmFs
QW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwot
ICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB0
cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7Ci0gICAg
dHJhbnNhY3Rpb24ub25hYm9ydCA9IGZpbmlzaEpTVGVzdDsKLQotICAgIGRlYnVnKCIiKTsKLSAg
ICBkZWJ1ZygiT3RoZXIgSmF2YVNjcmlwdCBvYmplY3QgdHlwZXM6Iik7Ci0gICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KG5ldyBFcnJvciwgJ2tleScpIiwgIkRPTUV4Y2VwdGlv
bi5EQVRBX0NMT05FX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLnB1
dChuZXcgRnVuY3Rpb24sICdrZXknKSIsICJET01FeGNlcHRpb24uREFUQV9DTE9ORV9FUlIiKTsK
LQotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiT3RoZXIgaG9zdCBvYmplY3QgdHlwZXM6Iik7
Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KHNlbGYsICdrZXknKSIsICJE
T01FeGNlcHRpb24uREFUQV9DTE9ORV9FUlIiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJzdG9yZS5wdXQoZG9jdW1lbnQsICdrZXknKSIsICJET01FeGNlcHRpb24uREFUQV9DTE9ORV9F
UlIiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5wdXQoZG9jdW1lbnQuYm9k
eSwgJ2tleScpIiwgIkRPTUV4Y2VwdGlvbi5EQVRBX0NMT05FX0VSUiIpOwotfQotCi10ZXN0KCk7
Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zdHJ1Y3R1cmVkLWNsb25lLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQuaHRtbCBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFib3J0Lmh0bWwKaW5kZXggMzQxMGY0
NjNhMjAzMTg5NjUzM2I0YTQ2OTljNjdhZDM1ODE1N2VkZC4uMWJhY2I1ZmI3OGNhNTIzMjM0ZGZl
ZGZkY2IzY2IyYTM3MGU5YmMzZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi90cmFuc2FjdGlvbi1hYm9ydC5odG1sCkBAIC00LDk2ICs0LDcgQEAKIDxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNj
cmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgdHJhbnNhY3Rpb24gYWJvcnRzIHNlbmQgdGhlIHBy
b3BlciBvbmFib3J0IG1lc3NhZ2VzLi4iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVt
b3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVk
REIub3BlbignbmFtZScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uOwot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5j
dGlvbiBzZXRWZXJzaW9uKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFy
Z2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24o
J25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4aXN0aW5n
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1m
dW5jdGlvbiBkZWxldGVFeGlzdGluZygpCi17Ci0gICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNz
KCk6Iik7Ci0gICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKLSAgICB0cmFu
cy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgZXZhbEFuZExvZygidHJh
bnMub25jb21wbGV0ZSA9IHN0YXJ0VGVzdCIpOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVz
KGRiKTsKLQotICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RT
dG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3Rv
cmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzdGFydFRlc3Qo
KQotewotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0
b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIGV2YWxBbmRMb2co
InRyYW5zLm9uYWJvcnQgPSB0cmFuc2FjdGlvbkFib3J0ZWQiKTsKLSAgICBldmFsQW5kTG9nKCJ0
cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2siKTsKLSAgICBzdG9y
ZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlMicsIHk6ICd6
enoyJ30sICdrZXkyJykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmaXJzdEFkZDsKLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7Ci0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlMycsIHk6ICd6enozJ30sICdrZXkz
JykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSBzZWNvbmRBZGQ7Ci0gICAgdHJhbnMuYWJvcnQo
KTsKLQotICAgIGZpcnN0RXJyb3IgPSBmYWxzZTsKLSAgICBzZWNvbmRFcnJvciA9IGZhbHNlOwot
ICAgIGFib3J0RmlyZWQgPSBmYWxzZTsKLX0KLQotZnVuY3Rpb24gZmlyc3RBZGQoKQotewotICAg
IHNob3VsZEJlKCJldmVudC50YXJnZXQuZXJyb3JDb2RlIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9u
LkFCT1JUX0VSUiIpOwotICAgIHNob3VsZEJlRmFsc2UoImZpcnN0RXJyb3IiKTsKLSAgICBzaG91
bGRCZUZhbHNlKCJzZWNvbmRFcnJvciIpOwotICAgIHNob3VsZEJlRmFsc2UoImFib3J0RmlyZWQi
KTsKLSAgICBmaXJzdEVycm9yID0gdHJ1ZTsKLQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24o
InN0b3JlLmFkZCh7eDogJ3ZhbHVlNCcsIHk6ICd6eno0J30sICdrZXk0JykiLCAiSURCRGF0YWJh
c2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7Ci19Ci0KLWZ1bmN0aW9uIHNl
Y29uZEFkZCgpCi17Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5lcnJvckNvZGUiLCAiSURC
RGF0YWJhc2VFeGNlcHRpb24uQUJPUlRfRVJSIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJmaXJzdEVy
cm9yIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgic2Vjb25kRXJyb3IiKTsKLSAgICBzaG91bGRCZUZh
bHNlKCJhYm9ydEZpcmVkIik7Ci0gICAgc2Vjb25kRXJyb3IgPSB0cnVlOwotfQotCi1mdW5jdGlv
biB0cmFuc2FjdGlvbkFib3J0ZWQoKQotewotICAgIHNob3VsZEJlVHJ1ZSgiZmlyc3RFcnJvciIp
OwotICAgIHNob3VsZEJlVHJ1ZSgic2Vjb25kRXJyb3IiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJh
Ym9ydEZpcmVkIik7Ci0gICAgYWJvcnRGaXJlZCA9IHRydWU7Ci0KLSAgICBldmFsQW5kRXhwZWN0
RXhjZXB0aW9uKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZTUnLCB5OiAnenp6NSd9LCAna2V5NScpIiwg
IklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOwotICAgIGZp
bmlzaEpTVGVzdCgpOwotfQotCi10ZXN0KCk7Ci0KLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3RyYW5zYWN0aW9uLWFib3J0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIu
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5
PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJh
bnNhY3Rpb24tYWZ0ZXItY2xvc2UuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3RyYW5zYWN0aW9uLWFmdGVyLWNsb3NlLmh0bWwKaW5kZXggZjgyN2VhNzI2NWZjYTcyNzE3YzFh
ZWUzMzFhMTk0NTUxYmUxZTBkZS4uM2E0MTYxNGNjMGZjN2VhMTA2OWQ0OTg1YjdhMzEyOTNmZTky
NTI1MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rp
b24tYWZ0ZXItY2xvc2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90
cmFuc2FjdGlvbi1hZnRlci1jbG9zZS5odG1sCkBAIC0xLDkwICsxLDEwIEBACi08aHRtbD4NCi08
aGVhZD4NCi08c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0Pg0KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Njcmlw
dD4NCi08L2hlYWQ+DQotPGJvZHk+DQotPHNjcmlwdD4NCi0NCi1kZXNjcmlwdGlvbigiVGVzdCBj
bG9zaW5nIGEgZGF0YWJhc2UgY29ubmVjdGlvbiBpbiBJbmRleGVkREIuIik7DQotDQotZnVuY3Rp
b24gdGVzdCgpDQotew0KLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOw0KLQ0KLSAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0aW9uLWFmdGVyLWNsb3Nl
JykiKTsNCi0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsNCi0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQotfQ0KLQ0KLWZ1bmN0aW9uIG9w
ZW5TdWNjZXNzKCkNCi17DQotICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOw0KLSAgICBzZWxm
LmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7DQotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsN
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBpblNldFZlcnNpb247DQotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOw0KLX0NCi0NCi1mdW5jdGlvbiBpblNldFZl
cnNpb24oKQ0KLXsNCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsNCi0NCi0gICAgZXZl
bnQudGFyZ2V0LnJlc3VsdC5vbmNvbXBsZXRlID0gcnVuRmlyc3RSZWd1bGFyVHJhbnNhY3Rpb247
DQotICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxi
YWNrOw0KLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ3N0b3JlJykiKTsNCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdG9y
ZS5wdXQoJ3gnLCAneScpIik7DQotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb25QdXRTdWNjZXNz
Ow0KLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsNCi19DQot
DQotZnVuY3Rpb24gb25QdXRTdWNjZXNzKCkNCi17DQotICAgIHRlc3RQYXNzZWQoIlB1dCBzdWNj
ZXNzIikNCi19DQotDQotZnVuY3Rpb24gcnVuRmlyc3RSZWd1bGFyVHJhbnNhY3Rpb24oKQ0KLXsN
Ci0gICAgZGVidWcoInJ1bm5pbmcgZmlyc3QgdHJhbnNhY3Rpb24iKQ0KLSAgICBjdXJyZW50VHJh
bnNhY3Rpb24gPSBldmFsQW5kTG9nKCJjdXJyZW50VHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlv
bihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7DQotICAgIGN1cnJlbnRU
cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7DQotICAgIGN1cnJl
bnRUcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZmlyc3RUcmFuc2FjdGlvbkNvbXBsZXRlOw0KLSAg
ICBvYmplY3RTdG9yZSA9IGN1cnJlbnRUcmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKTsN
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLnB1dCgnYScsICdiJykiKTsN
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQotfQ0KLQ0K
LWZ1bmN0aW9uIGZpcnN0VHJhbnNhY3Rpb25Db21wbGV0ZSgpDQotew0KLSAgICBldmFsQW5kTG9n
KCJkYi5jbG9zZSgpIik7DQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0
aW9uKFsnc3RvcmUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiLCAiSURCRGF0YWJhc2VF
eGNlcHRpb24uTk9UX0FMTE9XRURfRVJSIik7DQotDQotICAgIGRlYnVnKCIiKQ0KLSAgICBkZWJ1
ZygidmVyaWZ5IHRoYXQgd2UgY2FuIHJlb3BlbiB0aGUgZGIgYWZ0ZXIgY2FsbGluZyBjbG9zZSIp
DQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndHJhbnNhY3Rpb24t
YWZ0ZXItY2xvc2UnKSIpOw0KLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9uU2Vjb25kT3Blbg0K
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsNCi19DQotDQot
ZnVuY3Rpb24gb25TZWNvbmRPcGVuKCkgew0KLSAgICBzZWNvbmRfZGIgPSBldmFsQW5kTG9nKCJz
ZWNvbmRfZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7DQotICAgIGN1cnJlbnRUcmFuc2FjdGlv
biA9IGV2YWxBbmRMb2coImN1cnJlbnRUcmFuc2FjdGlvbiA9IHNlY29uZF9kYi50cmFuc2FjdGlv
bihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7DQotICAgIHN0b3JlID0g
Y3VycmVudFRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpOw0KLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IHN0b3JlLnB1dCgnMScsICcyJykiKTsNCi0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBvbkZpbmFsUHV0U3VjY2VzczsNCi0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQotICAgIGN1cnJlbnRUcmFuc2FjdGlvbi5vbmNvbXBs
ZXRlID0gZmluaXNoSlNUZXN0Ow0KLSAgICBjdXJyZW50VHJhbnNhY3Rpb24ub25hYm9ydCA9IHVu
ZXhwZWN0ZWRBYm9ydENhbGxiYWNrOw0KLX0NCi0NCi1mdW5jdGlvbiBvbkZpbmFsUHV0U3VjY2Vz
cygpIHsNCi0gICAgdGVzdFBhc3NlZCgiZmluYWwgcHV0IHN1Y2Nlc3MiKTsNCi19DQotDQotDQot
dGVzdCgpOw0KLQ0KLTwvc2NyaXB0Pg0KLTxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pg0KLTwvYm9keT4NCi08L2h0bWw+DQorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdHJhbnNhY3Rp
b24tYWZ0ZXItY2xvc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hbmQt
b2JqZWN0c3RvcmUtY2FsbHMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Ry
YW5zYWN0aW9uLWFuZC1vYmplY3RzdG9yZS1jYWxscy5odG1sCmluZGV4IDZhZmJjMzU5ZjYyNWQ5
ZmM4ZTQ1OTEyYmZkNjBhNWViNDRkYzIwNjUuLjFhMGI1ZWY5OGJkZTI2ZjQwZGJiODgwMTQ1NzM4
YjEyNDZmNWJjZWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Ry
YW5zYWN0aW9uLWFuZC1vYmplY3RzdG9yZS1jYWxscy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFuZC1vYmplY3RzdG9yZS1jYWxscy5odG1sCkBA
IC00LDEyOSArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3Jp
cHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4
ZWREQidzIHRyYW5zYWN0aW9uIGFuZCBvYmplY3RTdG9yZSBjYWxscyIpOwotCi1mdW5jdGlvbiB0
ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCd0cmFuc2FjdGlvbi1hbmQtb2JqZWN0c3RvcmUtY2Fs
bHMnLCAnZGVzY3JpcHRpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nl
c3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0K
LWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlc3Vs
dCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBjbGVhbkRhdGFiYXNlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotfQotCi1mdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKLXsKLSAgICB0cmFucyA9IGV2
YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIGRlbGV0ZUFsbE9i
amVjdFN0b3JlcyhkYik7Ci0KLSAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgn
YScpIik7Ci0gICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2InKSIpOwotICAg
IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpLmNyZWF0ZUluZGV4KCdp
bmRleCcsICdzb21lX3BhdGgnKSIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLmFkZEV2ZW50TGlz
dGVuZXIoJ2NvbXBsZXRlJywgY3JlYXRlZCwgdHJ1ZSkiKTsKLSAgICBkZWJ1ZygiIik7Ci19Ci0K
LWZ1bmN0aW9uIGNyZWF0ZWQoKQotewotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBk
Yi50cmFuc2FjdGlvbihbJ2EnXSkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9y
ZSgnYScpIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigidHJhbnMub2JqZWN0U3RvcmUo
J2InKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7Ci0gICAgZXZhbEFu
ZEV4cGVjdEV4Y2VwdGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ3gnKSIsICJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7Ci0gICAgZGVidWcoIiIpOwotCi0gICAgdHJhbnMgPSBl
dmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnYSddKSIpOwotICAgIGV2YWxBbmRM
b2coInRyYW5zLm9iamVjdFN0b3JlKCdhJykiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJ0cmFucy5vYmplY3RTdG9yZSgnYicpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VO
RF9FUlIiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0cmFucy5vYmplY3RTdG9yZSgn
eCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKLSAgICBkZWJ1Zygi
Iik7Ci0KLSAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydi
J10pIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2InKSIpOwotICAgIGV2
YWxBbmRFeHBlY3RFeGNlcHRpb24oInRyYW5zLm9iamVjdFN0b3JlKCdhJykiLCAiSURCRGF0YWJh
c2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24o
InRyYW5zLm9iamVjdFN0b3JlKCd4JykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5E
X0VSUiIpOwotICAgIGRlYnVnKCIiKTsKLQotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMg
PSBkYi50cmFuc2FjdGlvbihbJ2EnLCAnYiddKSIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9i
amVjdFN0b3JlKCdhJykiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYicp
Iik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ3gnKSIs
ICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7Ci0gICAgZGVidWcoIiIpOwot
Ci0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnYicsICdh
J10pIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2EnKSIpOwotICAgIGV2
YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdiJykiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJ0cmFucy5vYmplY3RTdG9yZSgneCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5P
VF9GT1VORF9FUlIiKTsKLSAgICBkZWJ1ZygiIik7Ci0KLSAgICBkZWJ1ZygiUGFzc2luZyBhIHN0
cmluZyBhcyB0aGUgZmlyc3QgYXJndW1lbnQgaXMgYSBzaG9ydGN1dCBmb3IganVzdCBvbmUgb2Jq
ZWN0IHN0b3JlOiIpOwotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2Fj
dGlvbignYScpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2EnKSIpOwot
ICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInRyYW5zLm9iamVjdFN0b3JlKCdiJykiLCAiSURC
RGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oInRyYW5zLm9iamVjdFN0b3JlKCd4JykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9U
X0ZPVU5EX0VSUiIpOwotICAgIGRlYnVnKCIiKTsKLQotICAgIHNob3VsZFRocm93KCJ0cmFucyA9
IGRiLnRyYW5zYWN0aW9uKCkiKTsKLSAgICBkZWJ1ZygiIik7Ci0KLSAgICBldmFsQW5kRXhwZWN0
RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbihbJ3gnXSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24u
Tk9UX0ZPVU5EX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0
aW9uKFsneCddKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7Ci0gICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oWydhJywgJ3gnXSkiLCAiSURC
RGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oImRiLnRyYW5zYWN0aW9uKFsneCcsICd4J10pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9u
Lk5PVF9GT1VORF9FUlIiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2Fj
dGlvbihbJ2EnLCAneCcsICdiJ10pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9F
UlIiKTsKLSAgICBkZWJ1ZygiIik7Ci0KLSAgICBkZWJ1ZygiRXhjZXB0aW9uIHRocm93biB3aGVu
IG5vIHN0b3JlcyBzcGVjaWZpZWQ6Iik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIu
dHJhbnNhY3Rpb24oW10pIiwgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19FUlIiKTsKLSAg
ICBkZWJ1ZygiIik7Ci0KLSAgICBkZWJ1Zygie30gY29lcmNlcyB0byBhIHN0cmluZyAtIHNvIG5v
IG1hdGNoLCBidXQgbm90IGEgdHlwZSBlcnJvcjoiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJkYi50cmFuc2FjdGlvbih7fSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5E
X0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKHttb2Rl
OjB9KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7Ci0gICAgZGVidWco
IiIpOwotCi0gICAgZGVidWcoIk92ZXJyaWRpbmcgdGhlIGRlZmF1bHQgc3RyaW5nIGNvZXJjaW9u
IG1ha2VzIHRoZXNlIHdvcms6Iik7Ci0gICAgZXZhbEFuZExvZygiZGIudHJhbnNhY3Rpb24oe3Rv
U3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuICdhJzt9fSkiKTsKLSAgICBldmFsQW5kTG9nKCJkYi50
cmFuc2FjdGlvbihbe3RvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuICdhJzt9fV0pIik7Ci0gICAg
ZGVidWcoIi4uLiBidXQgeW91IHN0aWxsIG5lZWQgdG8gc3BlY2lmeSBhIHJlYWwgc3RvcmU6Iik7
Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oW3t0b1N0cmluZzpm
dW5jdGlvbigpe3JldHVybiAneCc7fX1dKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9V
TkRfRVJSIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oW3t0
b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiAneCc7fX1dKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlv
bi5OT1RfRk9VTkRfRVJSIik7Ci0gICAgZGVidWcoIiIpOwotCi0gICAgdHJhbnMgPSBldmFsQW5k
TG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUnXSkiKTsKLSAgICBzaG91bGRCZVRy
dWUoInRyYW5zICE9IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0
Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
ICAgIHRyYW5zLm9uY29tcGxldGUgPSBhZnRlckNvbXBsZXRlOwotICAgIGV2YWxBbmRMb2coInN0
b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKLSAgICBzaG91bGRCZVRydWUoInN0
b3JlICE9IG51bGwiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZS5nZXQoJ3NvbWVfa2V5JykiKTsK
LX0KLQotZnVuY3Rpb24gYWZ0ZXJDb21wbGV0ZSgpCi17Ci0gICAgZGVidWcoInRyYW5zYWN0aW9u
IGNvbXBsZXRlLCBlbnN1cmluZyBtZXRob2RzIGZhaWwiKTsKLSAgICBzaG91bGRCZVRydWUoInRy
YW5zICE9IG51bGwiKTsKLSAgICBzaG91bGRCZVRydWUoInN0b3JlICE9IG51bGwiKTsKLSAgICBl
dmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKSIsICJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9FUlIiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJzdG9yZS5pbmRleCgnaW5kZXgnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1Rf
QUxMT1dFRF9FUlIiKTsKLQotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi10ZXN0KCk7Ci0KLTwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90cmFuc2FjdGlvbi1hbmQtb2JqZWN0c3Rv
cmUtY2FsbHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1iYXNpY3MuaHRt
bCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy5odG1s
CmluZGV4IGYxYjNiMTZhOWE3YTRjNmM2MTNiNDU0ZmZlMzgzMDI1ZTI0MjBmOWIuLmQ1YTdkMjNi
Y2UxMTUzZDM3N2VkMDIzZTkxN2ZkMTFhMGI2YWJlYjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy5odG1sCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy5odG1sCkBAIC0xLDI5NCAr
MSwxMCBAQAotPGh0bWw+DQotPGhlYWQ+DQotPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4NCi08c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3NoYXJlZC5qcyI+PC9zY3JpcHQ+DQotPC9oZWFkPg0KLTxib2R5Pg0KLTxzY3JpcHQ+DQotDQot
ZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIHRyYW5zYWN0aW9uIGJhc2ljcy4iKTsNCi0NCi1m
dW5jdGlvbiB0ZXN0KCkNCi17DQotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7DQotDQotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndHJhbnNhY3Rpb24tYmFzaWNz
JykiKTsNCi0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsNCi0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQotfQ0KLQ0KLWZ1bmN0aW9uIG9w
ZW5TdWNjZXNzKCkNCi17DQotICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOw0KLSAgICBzZWxm
LmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7DQotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsN
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOw0KLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsNCi19DQotDQotZnVuY3Rpb24gY2xlYW5E
YXRhYmFzZSgpDQotew0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIsIGNoZWNrTWV0YWRh
dGFFbXB0eSk7DQotICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25jb21wbGV0ZSA9IHRlc3RTZXRW
ZXJzaW9uQWJvcnQxOw0KLX0NCi0NCi1mdW5jdGlvbiB0ZXN0U2V0VmVyc2lvbkFib3J0MSgpDQot
ew0KLSAgICBjaGVja01ldGFkYXRhRW1wdHkoKTsNCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBzdGFydFNldFZlcnNpb24oJ3ZlcnNpb24gZmFpbCcpIik7DQotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gYWRkUmVtb3ZlSURCT2JqZWN0czsNCi19DQotDQotZnVuY3Rpb24gYWRk
UmVtb3ZlSURCT2JqZWN0cygpDQotew0KLSAgICBkZWJ1ZygiYWRkUmVtb3ZlSURCT2JqZWN0cygp
OiIpOw0KLSAgICB2YXIgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsNCi0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOw0KLSAgICB0cmFu
cy5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIHRlc3RTZXRWZXJzaW9uQWJvcnQyLCB0cnVlKTsN
Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOw0KLQ0K
LSAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdzdG9yZUZhaWwnLCBudWxsKSIpOw0KLSAgICB2YXIgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRl
eCA9IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleEZhaWwnLCAneCcpIik7DQotDQotICAgIGV2YWxB
bmRMb2coImRiLmRlbGV0ZU9iamVjdFN0b3JlKCdzdG9yZUZhaWwnKSIpOw0KLSAgICBldmFsQW5k
TG9nKCJzdG9yZS5kZWxldGVJbmRleCgnaW5kZXhGYWlsJykiKTsNCi0NCi0gICAgdHJhbnMuYWJv
cnQoKTsNCi19DQotDQotZnVuY3Rpb24gdGVzdFNldFZlcnNpb25BYm9ydDIoKQ0KLXsNCi0gICAg
ZGVidWcoIiIpOw0KLSAgICBkZWJ1ZygidGVzdFNldFZlcnNpb25BYm9ydDIoKToiKTsNCi0gICAg
Y2hlY2tNZXRhZGF0YUVtcHR5KCk7DQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gc3RhcnRTZXRWZXJzaW9uKCd2ZXJzaW9uIGZhaWwnKSIpOw0KLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGFkZFJlbW92ZUFkZElEQk9iamVjdHM7DQotfQ0KLQ0KLWZ1bmN0aW9uIGFkZFJlbW92
ZUFkZElEQk9iamVjdHMoKQ0KLXsNCi0gICAgZGVidWcoImFkZFJlbW92ZUFkZElEQk9iamVjdHMo
KToiKTsNCi0gICAgdmFyIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7DQotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsNCi0gICAgdHJh
bnMuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCB0ZXN0U2V0VmVyc2lvbkFib3J0MywgZmFsc2Up
Ow0KLSAgICB0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7DQot
DQotICAgIHZhciBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ3N0b3JlRmFpbCcsIG51bGwpIik7DQotICAgIHZhciBpbmRleCA9IGV2YWxBbmRMb2coImlu
ZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4RmFpbCcsICd4JykiKTsNCi0NCi0gICAgZXZh
bEFuZExvZygiZGIuZGVsZXRlT2JqZWN0U3RvcmUoJ3N0b3JlRmFpbCcpIik7DQotICAgIGV2YWxB
bmRMb2coInN0b3JlLmRlbGV0ZUluZGV4KCdpbmRleEZhaWwnKSIpOw0KLQ0KLSAgICB2YXIgc3Rv
cmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZUZhaWwn
LCBudWxsKSIpOw0KLSAgICB2YXIgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmNy
ZWF0ZUluZGV4KCdpbmRleEZhaWwnLCAneCcpIik7DQotDQotICAgIHRyYW5zLmFib3J0KCk7DQot
fQ0KLQ0KLWZ1bmN0aW9uIHRlc3RTZXRWZXJzaW9uQWJvcnQzKCkNCi17DQotICAgIGRlYnVnKCIi
KTsNCi0gICAgZGVidWcoInRlc3RTZXRWZXJzaW9uQWJvcnQzKCk6Iik7DQotICAgIHNob3VsZEJl
RmFsc2UoImV2ZW50LmNhbmNlbGFibGUiKTsNCi0gICAgY2hlY2tNZXRhZGF0YUVtcHR5KCk7DQot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gc3RhcnRTZXRWZXJzaW9uKCd2ZXJz
aW9uIGZhaWwnKSIpOw0KLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZElEQk9iamVjdHM7DQot
fQ0KLQ0KLWZ1bmN0aW9uIGFkZElEQk9iamVjdHMoKQ0KLXsNCi0gICAgZGVidWcoImFkZElEQk9i
amVjdHMoKToiKTsNCi0gICAgc2hvdWxkQmVGYWxzZSgiZXZlbnQuY2FuY2VsYWJsZSIpOw0KLSAg
ICB2YXIgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsN
Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOw0KLSAgICB0cmFucy5vbmFib3J0
ID0gdGVzdEluYWN0aXZlQWJvcnRlZFRyYW5zYWN0aW9uOw0KLSAgICB0cmFucy5vbmNvbXBsZXRl
ID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7DQotDQotICAgIHN0b3JlID0gZXZhbEFuZExv
Zygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVGYWlsJywgbnVsbCkiKTsNCi0g
ICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleEZh
aWwnLCAneCcpIik7DQotDQotICAgIHRyYW5zLmFib3J0KCk7DQotfQ0KLQ0KLWZ1bmN0aW9uIHRl
c3RJbmFjdGl2ZUFib3J0ZWRUcmFuc2FjdGlvbigpDQotew0KLSAgICBkZWJ1ZygiIik7DQotICAg
IGRlYnVnKCJ0ZXN0SW5hY3RpdmVBYm9ydGVkVHJhbnNhY3Rpb24oKToiKTsNCi0gICAgZXZhbEFu
ZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXgub3BlbkN1cnNvcigpIiwgIklEQkRhdGFiYXNlRXhjZXB0
aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOw0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJpbmRleC5vcGVuS2V5Q3Vyc29yKCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNB
Q1RJT05fSU5BQ1RJVkVfRVJSIik7DQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4
LmdldCgwKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIi
KTsNCi0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXguZ2V0S2V5KDApIiwgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOw0KLSAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKCJpbmRleC5jb3VudCgpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRS
QU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOw0KLQ0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJzdG9yZS5wdXQoMCwgMCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5B
Q1RJVkVfRVJSIik7DQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmFkZCgwLCAw
KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsNCi0g
ICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuZGVsZXRlKDApIiwgIklEQkRhdGFiYXNl
RXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOw0KLSAgICBldmFsQW5kRXhwZWN0
RXhjZXB0aW9uKCJzdG9yZS5jbGVhcigpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNU
SU9OX0lOQUNUSVZFX0VSUiIpOw0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5n
ZXQoMCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7
DQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLm9wZW5DdXJzb3IoKSIsICJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsNCi0NCi0gICAgdGVz
dFNldFZlcnNpb25BYm9ydDQoKTsNCi19DQotDQotZnVuY3Rpb24gdGVzdFNldFZlcnNpb25BYm9y
dDQoKQ0KLXsNCi0gICAgZGVidWcoIiIpOw0KLSAgICBkZWJ1ZygidGVzdFNldFZlcnNpb25BYm9y
dDQoKToiKTsNCi0gICAgY2hlY2tNZXRhZGF0YUVtcHR5KCk7DQotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gc3RhcnRTZXRWZXJzaW9uKCd2ZXJzaW9uIGZhaWwnKSIpOw0KLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZElEQk9iamVjdHNBbmRDb21taXQ7DQotfQ0KLQ0KLWZ1
bmN0aW9uIGFkZElEQk9iamVjdHNBbmRDb21taXQoKQ0KLXsNCi0gICAgZGVidWcoImFkZElEQk9i
amVjdHNBbmRDb21taXQoKToiKTsNCi0gICAgdmFyIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7DQotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51
bGwiKTsNCi0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOw0KLQ0K
LSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0
b3JlRmFpbCcsIG51bGwpIik7DQotICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBzdG9y
ZS5jcmVhdGVJbmRleCgnaW5kZXhGYWlsJywgJ3gnKSIpOw0KLQ0KLSAgICB0cmFucy5vbmNvbXBs
ZXRlID0gdGVzdEluYWN0aXZlQ29tcGxldGVkVHJhbnNhY3Rpb247DQotfQ0KLQ0KLWZ1bmN0aW9u
IHRlc3RJbmFjdGl2ZUNvbXBsZXRlZFRyYW5zYWN0aW9uKCkNCi17DQotICAgIGRlYnVnKCIiKTsN
Ci0gICAgZGVidWcoInRlc3RJbmFjdGl2ZUNvbXBsZXRlZFRyYW5zYWN0aW9uKCk6Iik7DQotICAg
IGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4Lm9wZW5DdXJzb3IoKSIsICJJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsNCi0gICAgZXZhbEFuZEV4cGVj
dEV4Y2VwdGlvbigiaW5kZXgub3BlbktleUN1cnNvcigpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9u
LlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOw0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJpbmRleC5nZXQoMCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJ
VkVfRVJSIik7DQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4LmdldEtleSgwKSIs
ICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsNCi0gICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXguY291bnQoKSIsICJJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsNCi0NCi0gICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigic3RvcmUucHV0KDAsIDApIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNU
SU9OX0lOQUNUSVZFX0VSUiIpOw0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5h
ZGQoMCwgMCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJS
Iik7DQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmRlbGV0ZSgwKSIsICJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsNCi0gICAgZXZhbEFu
ZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuY2xlYXIoKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5U
UkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsNCi0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigi
c3RvcmUuZ2V0KDApIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZF
X0VSUiIpOw0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5vcGVuQ3Vyc29yKCki
LCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7DQotDQot
ICAgIHRlc3RTZXRWZXJzaW9uQWJvcnQ1KCk7DQotfQ0KLQ0KLWZ1bmN0aW9uIHRlc3RTZXRWZXJz
aW9uQWJvcnQ1KCkNCi17DQotICAgIGRlYnVnKCIiKTsNCi0gICAgZGVidWcoInRlc3RTZXRWZXJz
aW9uQWJvcnQ1KCk6Iik7DQotICAgIGNoZWNrTWV0YWRhdGFFeGlzdGluZ09iamVjdFN0b3JlKCk7
DQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gc3RhcnRTZXRWZXJzaW9uKCd2
ZXJzaW9uIGZhaWwnKSIpOw0KLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHJlbW92ZUlEQk9iamVj
dHM7DQotfQ0KLQ0KLWZ1bmN0aW9uIHJlbW92ZUlEQk9iamVjdHMoKQ0KLXsNCi0gICAgZGVidWco
InJlbW92ZUlEQk9iamVjdHMoKToiKTsNCi0gICAgdmFyIHRyYW5zID0gZXZhbEFuZExvZygidHJh
bnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7DQotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09
IG51bGwiKTsNCi0gICAgdHJhbnMub25hYm9ydCA9IHRlc3RTZXRWZXJzaW9uQWJvcnQ2Ow0KLSAg
ICB0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7DQotDQotICAg
IHZhciBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3Jl
RmFpbCcpIik7DQotICAgIGV2YWxBbmRMb2coInN0b3JlLmRlbGV0ZUluZGV4KCdpbmRleEZhaWwn
KSIpOw0KLSAgICBldmFsQW5kTG9nKCJkYi5kZWxldGVPYmplY3RTdG9yZSgnc3RvcmVGYWlsJyki
KTsNCi0NCi0gICAgdHJhbnMuYWJvcnQoKTsNCi19DQotDQotZnVuY3Rpb24gdGVzdFNldFZlcnNp
b25BYm9ydDYoKQ0KLXsNCi0gICAgZGVidWcoIiIpOw0KLSAgICBkZWJ1ZygidGVzdFNldFZlcnNp
b25BYm9ydDYoKToiKTsNCi0gICAgY2hlY2tNZXRhZGF0YUV4aXN0aW5nT2JqZWN0U3RvcmUoKTsN
Ci0gICAgc2V0TmV3VmVyc2lvbigpOw0KLX0NCi0NCi1mdW5jdGlvbiBzdGFydFNldFZlcnNpb24o
dmVyc2lvbk5hbWUpDQotew0KLSAgICByZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbih2ZXJzaW9uTmFt
ZSk7DQotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOw0KLSAg
ICByZXR1cm4gcmVxdWVzdDsNCi19DQotDQotZnVuY3Rpb24gY2hlY2tNZXRhZGF0YUVtcHR5KCkN
Ci17DQotICAgIHNob3VsZEJlKCJzZWxmLmRiLm9iamVjdFN0b3JlTmFtZXMiLCAiW10iKTsNCi0g
ICAgc2hvdWxkQmUoInNlbGYuZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMCIpOw0KLSAg
ICBzaG91bGRCZSgic2VsZi5kYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCdzdG9yZUZhaWwn
KSIsICJmYWxzZSIpOw0KLX0NCi0NCi1mdW5jdGlvbiBjaGVja01ldGFkYXRhRXhpc3RpbmdPYmpl
Y3RTdG9yZSgpDQotew0KLSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcyIsICJbJ3N0
b3JlRmFpbCddIik7DQotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIs
ICIxIik7DQotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCdzdG9y
ZUZhaWwnKSIsICJ0cnVlIik7DQotfQ0KLQ0KLWZ1bmN0aW9uIHNldE5ld1ZlcnNpb24oKQ0KLXsN
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJyki
KTsNCi0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsNCi0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQotfQ0KLQ0KLWZ1bmN0aW9u
IHNldFZlcnNpb25TdWNjZXNzKCkNCi17DQotICAgIGRlYnVnKCIiKTsNCi0gICAgZGVidWcoInNl
dFZlcnNpb25TdWNjZXNzKCk6Iik7DQotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFu
cyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsNCi0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0g
bnVsbCIpOw0KLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7DQot
ICAgIHRyYW5zLmFkZEV2ZW50TGlzdGVuZXIoJ2NvbXBsZXRlJywgY29tcGxldGVDYWxsYmFjaywg
ZmFsc2UpOw0KLSAgICBzZWxmLmNvbXBsZXRlRXZlbnRGaXJlZCA9IGZhbHNlOw0KLQ0KLSAgICBk
ZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOw0KLQ0KLSAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVP
YmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsNCi19DQotDQotZnVuY3Rpb24gY29tcGxl
dGVDYWxsYmFjaygpDQotew0KLSAgICBzaG91bGRCZUZhbHNlKCJldmVudC5jYW5jZWxhYmxlIik7
DQotICAgIHRlc3RQYXNzZWQoImNvbXBsZXRlIGV2ZW50IGZpcmVkIik7DQotICAgIHRyYW5zYWN0
aW9uID0gZXZhbEFuZExvZygiZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSkiKTsNCi0gICAg
dHJhbnNhY3Rpb24ub25hYm9ydCA9IGFib3J0Q2FsbGJhY2s7DQotICAgIHZhciBzdG9yZSA9IGV2
YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7
DQotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3RvcmUubmFtZSIsICJzdG9yZU5hbWUiKTsN
Ci19DQotDQotZnVuY3Rpb24gYWJvcnRDYWxsYmFjaygpDQotew0KLSAgICB0ZXN0UGFzc2VkKCJh
Ym9ydCBldmVudCBmaXJlZCIpOw0KLSAgICB0ZXN0RE9NU3RyaW5nTGlzdCgpOw0KLX0NCi0NCi1m
dW5jdGlvbiB0ZXN0RE9NU3RyaW5nTGlzdCgpDQotew0KLSAgICBkZWJ1ZygiIik7DQotICAgIGRl
YnVnKCJWZXJpZnlpbmcgRE9NU3RyaW5nTGlzdCB3b3JrcyBhcyBhcmd1bWVudCBmb3IgSURCRGF0
YWJhc2UudHJhbnNhY3Rpb24oKSIpOw0KLSAgICBkZWJ1ZygiZGIub2JqZWN0U3RvcmVOYW1lcyBp
cyAiICsgZGIub2JqZWN0U3RvcmVOYW1lcyk7DQotICAgIGRlYnVnKCIuLi4gd2hpY2ggY29udGFp
bnM6ICIgKyBKU09OLnN0cmluZ2lmeShBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChkYi5vYmpl
Y3RTdG9yZU5hbWVzKSkpOw0KLSAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5z
YWN0aW9uKGRiLm9iamVjdFN0b3JlTmFtZXMpIik7DQotICAgIHRlc3RQYXNzZWQoIm5vIGV4Y2Vw
dGlvbiB0aHJvd24iKTsNCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYi5vYmplY3RTdG9yZU5h
bWVzLmxlbmd0aDsgKytpKSB7DQotICAgICAgc2hvdWxkQmVUcnVlKCJ0cmFuc2FjdGlvbi5vYmpl
Y3RTdG9yZSgiICsgSlNPTi5zdHJpbmdpZnkoZGIub2JqZWN0U3RvcmVOYW1lc1tpXSkgKyAiKSAh
PSBudWxsIik7DQotICAgIH0NCi0gICAgdGVzdFBhc3NlZCgiYWxsIHN0b3JlcyBwcmVzZW50IGlu
IHRyYW5zYWN0aW9uIik7DQotICAgIHRlc3RJbnZhbGlkTW9kZSgpOw0KLX0NCi0NCi1mdW5jdGlv
biB0ZXN0SW52YWxpZE1vZGUoKQ0KLXsNCi0gICAgZGVidWcoIiIpOw0KLSAgICBkZWJ1ZygiVmVy
aWZ5IHRoYXQgc3BlY2lmeWluZyBhbiBpbnZhbGlkIG1vZGUgcmFpc2VzIGFuIGV4Y2VwdGlvbiIp
Ow0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFt
ZSddLCAzKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT05fVFJBTlNJRU5UX0VSUiIpOw0KLSAg
ICBmaW5pc2hKU1Rlc3QoKTsNCi19DQotDQotdGVzdCgpOw0KLQ0KLTwvc2NyaXB0Pg0KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
Pg0KLTwvYm9keT4NCi08L2h0bWw+DQorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvdHJhbnNhY3Rpb24tYmFzaWNzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvdHJhbnNhY3Rpb24tY3Jhc2gtb24tYWJvcnQuaHRtbCBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNyYXNoLW9uLWFib3J0Lmh0bWwKaW5kZXggZDc5Mzcy
MWQ3MzYyYmZkNzlhMjU1MzZhMzEyYTYzNWJjZWIxZTI5Mi4uMTE1OWQyOTQyMDdjZWI0ZTk2ZTM1
MGMwMjdkYmQxY2E5YWQ1NTI2YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvdHJhbnNhY3Rpb24tY3Jhc2gtb24tYWJvcnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jcmFzaC1vbi1hYm9ydC5odG1sCkBAIC00LDQ1
ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwv
aGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIHRy
YW5zYWN0aW9uIGRvZXMgbm90IGNyYXNoIG9uIGFib3J0LiIpOwotCi1mdW5jdGlvbiB0ZXN0KCkK
LXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImluZGV4ZWREQi5vcGVuKCd0cmFuc2FjdGlvbi1jcmFzaC1vbi1hYm9ydCcpIik7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewot
ICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOwotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBl
dmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZl
cnNpb24oJzEuMCcpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2Vz
czsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQot
ZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQotewotICAgIGV2YWxBbmRMb2coImRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdmb28nKSIpOwotICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25jb21wbGV0
ZSA9IHNldFZlcnNpb25Db21wbGV0ZTsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvbkNvbXBsZXRl
KCkKLXsKLSAgICBldmFsQW5kTG9nKCJkYi50cmFuc2FjdGlvbignZm9vJykiKTsKLSAgICBldmFs
QW5kTG9nKCJzZWxmLmdjKCkiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7
Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90cmFuc2FjdGlvbi1jcmFzaC1v
bi1hYm9ydC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWV2ZW50LXByb3Bh
Z2F0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1l
dmVudC1wcm9wYWdhdGlvbi5odG1sCmluZGV4IDg5NTI4YThjMTY5ZTQ0MzkyZTk0MWEyYjk4NDVh
N2Q3YjViZTQ1OTcuLmYwM2VhMzE3MmFkMmY3Yjc4MjMwM2JjMzZmNThhZDUxZmZiZWNjMzQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWV2ZW50
LXByb3BhZ2F0aW9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJh
bnNhY3Rpb24tZXZlbnQtcHJvcGFnYXRpb24uaHRtbApAQCAtNCwxNTAgKzQsNyBAQAogPHNjcmlw
dCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08
c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBldmVudCBwcm9wb2dhdGlvbiBvbiBJREJUcmFu
c2FjdGlvbi4iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4
ZXMoKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0
aW9uLWV2ZW50LXByb3BhZ2F0aW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZl
cnNpb247Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19
Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb24oKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBl
dmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0
VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRl
RXhpc3Rpbmc7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKLXsKLSAgICBzZWxmLnRyYW5zID0gZXZh
bEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVl
KCJ0cmFucyAhPT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRD
YWxsYmFjazsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gc3RhcnRUZXN0Iik7
Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgc3RvcmUgPSBldmFsQW5k
TG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOwot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enon
fSwgJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIHN0YXJ0VGVzdCgpCi17Ci0gICAgZGVidWcoIlZlcmlmaW5nIGFi
b3J0Iik7Ci0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsn
c3RvcmVOYW1lJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFuZExv
ZygidHJhbnMub25hYm9ydCA9IGFib3J0RmlyZWRDYWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2co
InRyYW5zLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjayIpOwotICAgIGV2YWxB
bmRMb2coImRiLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgZGJBYm9ydENhcHR1cmVDYWxsYmFj
aywgdHJ1ZSkiKTsKLSAgICBldmFsQW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcs
IGRiQWJvcnRCdWJibGVDYWxsYmFjaywgZmFsc2UpIik7Ci0gICAgZXZhbEFuZExvZygiZGIuYWRk
RXZlbnRMaXN0ZW5lcignY29tcGxldGUnLCB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjaywgdHJ1
ZSkiKTsKLSAgICBldmFsQW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdjb21wbGV0ZScsIHVu
ZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrLCBmYWxzZSkiKTsKLSAgICBzdG9yZSA9IGV2YWxBbmRM
b2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0gICAgZXZhbEFu
ZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOwotICAgIGRi
Q2FwdHVyZUZpcmVkID0gZmFsc2U7Ci0gICAgYWJvcnRGaXJlZCA9IGZhbHNlOwotICAgIGRiQnVi
YmxlRmlyZWQxID0gZmFsc2U7Ci19Ci0KLWZ1bmN0aW9uIGRiQWJvcnRDYXB0dXJlQ2FsbGJhY2so
KQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiSW4gSURCRGF0YWJhc2UgYWJvcnQgY2Fw
dHVyZSIpOwotICAgIHNob3VsZEJlRmFsc2UoImRiQ2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxk
QmVGYWxzZSgiYWJvcnRGaXJlZCIpOwotICAgIHNob3VsZEJlRmFsc2UoImRiQnViYmxlRmlyZWQx
Iik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldCIsICJ0cmFucyIpOwotICAgIHNob3VsZEJl
KCJldmVudC5jdXJyZW50VGFyZ2V0IiwgImRiIik7Ci0gICAgZGJDYXB0dXJlRmlyZWQgPSB0cnVl
OwotfQotCi1mdW5jdGlvbiBhYm9ydEZpcmVkQ2FsbGJhY2soKQotewotICAgIGRlYnVnKCIiKTsK
LSAgICBkZWJ1ZygiSW4gYWJvcnQgaGFuZGxlciIpOwotICAgIHNob3VsZEJlVHJ1ZSgiZGJDYXB0
dXJlRmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJhYm9ydEZpcmVkIik7Ci0gICAgc2hvdWxk
QmVGYWxzZSgiZGJCdWJibGVGaXJlZDEiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0Iiwg
InRyYW5zIik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LmN1cnJlbnRUYXJnZXQiLCAidHJhbnMiKTsK
LSAgICBhYm9ydEZpcmVkID0gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gZGJBYm9ydEJ1YmJsZUNhbGxi
YWNrKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIkluIElEQkRhdGFiYXNlIGVycm9y
IGJ1YmJsZSIpOwotICAgIHNob3VsZEJlVHJ1ZSgiZGJDYXB0dXJlRmlyZWQiKTsKLSAgICBzaG91
bGRCZVRydWUoImFib3J0RmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVk
MSIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAidHJhbnMiKTsKLSAgICBzaG91bGRC
ZSgiZXZlbnQuY3VycmVudFRhcmdldCIsICJkYiIpOwotICAgIGRiQnViYmxlRmlyZWQxID0gdHJ1
ZTsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIlZlcmlmaW5nIHN1Y2Nlc3MuIik7Ci0gICAg
dHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10s
IElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMub25j
b21wbGV0ZSA9IGNvbXBsZXRlRmlyZWRDYWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2coInRyYW5z
Lm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2coImRi
LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgZGJBYm9ydENhcHR1cmVDYWxsYmFjaywgdHJ1
ZSkiKTsKLSAgICBldmFsQW5kTG9nKCJkYi5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIGRi
QWJvcnRCdWJibGVDYWxsYmFjaywgZmFsc2UpIik7Ci0gICAgZXZhbEFuZExvZygiZGIucmVtb3Zl
RXZlbnRMaXN0ZW5lcignY29tcGxldGUnLCB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjaywgdHJ1
ZSkiKTsKLSAgICBldmFsQW5kTG9nKCJkYi5yZW1vdmVFdmVudExpc3RlbmVyKCdjb21wbGV0ZScs
IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrLCBmYWxzZSkiKTsKLSAgICBldmFsQW5kTG9nKCJk
Yi5hZGRFdmVudExpc3RlbmVyKCdjb21wbGV0ZScsIGRiQ29tcGxldGVDYXB0dXJlQ2FsbGJhY2ss
IHRydWUpIik7Ci0gICAgZXZhbEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignY29tcGxldGUn
LCBkYkNvbXBsZXRlQnViYmxlQ2FsbGJhY2ssIGZhbHNlKSIpOwotICAgIGV2YWxBbmRMb2coImRi
LmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgdW5leHBlY3RlZEFib3J0Q2FsbGJhY2ssIHRydWUp
Iik7Ci0gICAgZXZhbEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCB1bmV4cGVj
dGVkQWJvcnRDYWxsYmFjaywgZmFsc2UpIik7Ci0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9y
ZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotICAgIGV2YWxBbmRMb2coInN0
b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAna2V5MicpIik7Ci0gICAgZGJDYXB0dXJl
RmlyZWQgPSBmYWxzZTsKLSAgICBjb21wbGV0ZUZpcmVkID0gZmFsc2U7Ci0gICAgZGJCdWJibGVG
aXJlZDIgPSBmYWxzZTsKLX0KLQotZnVuY3Rpb24gZGJDb21wbGV0ZUNhcHR1cmVDYWxsYmFjaygp
Ci17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJJbiBJREJEYXRhYmFzZSBjb21wbGV0ZSBj
YXB0dXJlIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGJDYXB0dXJlRmlyZWQiKTsKLSAgICBzaG91
bGRCZUZhbHNlKCJjb21wbGV0ZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVG
aXJlZDIiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0IiwgInRyYW5zIik7Ci0gICAgc2hv
dWxkQmUoImV2ZW50LmN1cnJlbnRUYXJnZXQiLCAiZGIiKTsKLSAgICBkYkNhcHR1cmVGaXJlZCA9
IHRydWU7Ci19Ci0KLWZ1bmN0aW9uIGNvbXBsZXRlRmlyZWRDYWxsYmFjaygpCi17Ci0gICAgZGVi
dWcoIiIpOwotICAgIGRlYnVnKCJJbiBJREJSZXF1ZXN0IGhhbmRsZXIiKTsKLSAgICBzaG91bGRC
ZVRydWUoImRiQ2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiY29tcGxldGVGaXJl
ZCIpOwotICAgIHNob3VsZEJlRmFsc2UoImRiQnViYmxlRmlyZWQyIik7Ci0gICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldCIsICJ0cmFucyIpOwotICAgIHNob3VsZEJlKCJldmVudC5jdXJyZW50VGFy
Z2V0IiwgInRyYW5zIik7Ci0gICAgY29tcGxldGVGaXJlZCA9IHRydWU7Ci0gICAgZGVidWcoIiIp
OwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBkYkNvbXBsZXRlQnViYmxlQ2Fs
bGJhY2soKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiSW4gSURCRGF0YWJhc2UgY29t
cGxldGUgYnViYmxlIik7Ci0gICAgdGVzdEZhaWxlZCgiQ29tcGxldGUgYnViYmxlIGNhbGxiYWNr
IHNob3VsZCBOT1QgZmlyZSIpOwotICAgIGRiQnViYmxlRmlyZWQyID0gdHJ1ZTsKLX0KLQotdGVz
dCgpOwotCi0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90cmFuc2FjdGlvbi1l
dmVudC1wcm9wYWdhdGlvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXJl
YWQtb25seS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24t
cmVhZC1vbmx5Lmh0bWwKaW5kZXggNDk1Y2JjMWMyYjRiNzRjOWMzNTI1OWFkM2FhMzczYmU4MzIx
MDNlOS4uYTkwY2M3YTE2NmNjYWE3NDQ4ZmQ1M2QwZGI0ZjYxNDRlMmY4ZDYwMyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tcmVhZC1vbmx5Lmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tcmVhZC1v
bmx5Lmh0bWwKQEAgLTEsNjcgKzEsMTAgQEAKLTxodG1sPg0KLTxoZWFkPg0KLTxzY3JpcHQgc3Jj
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+DQotPHNj
cmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0Pg0KLTwvaGVhZD4NCi08Ym9k
eT4NCi08c2NyaXB0Pg0KLQ0KLWRlc2NyaXB0aW9uKCJUZXN0IHJlYWQtb25seSB0cmFuc2FjdGlv
bnMgaW4gSW5kZXhlZERCLiIpOw0KLQ0KLWZ1bmN0aW9uIHRlc3QoKQ0KLXsNCi0gICAgcmVtb3Zl
VmVuZG9yUHJlZml4ZXMoKTsNCi0NCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWRE
Qi5vcGVuKCd0cmFuc2FjdGlvbi1yZWFkLW9ubHknKSIpOw0KLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IG9wZW5TdWNjZXNzOw0KLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsNCi19DQotDQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQ0KLXsNCi0gICAgZGVidWco
Im9wZW5TdWNjZXNzKCk6Iik7DQotICAgIHNlbGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsNCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlc3VsdCA9IGRi
LnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7DQotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xl
YW5EYXRhYmFzZTsNCi0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7DQotfQ0KLQ0KLWZ1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQ0KLXsNCi0gICAgZGVsZXRlQWxs
T2JqZWN0U3RvcmVzKGRiKTsNCi0NCi0gICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5vbmNvbXBsZXRl
ID0gc2V0VmVyc2lvbkRvbmU7DQotICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25hYm9ydCA9IHVu
ZXhwZWN0ZWRBYm9ydENhbGxiYWNrOw0KLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsNCi0gICAgZXZhbEFuZExvZygic3RvcmUu
cHV0KCd4JywgJ3knKSIpOw0KLX0NCi0NCi1mdW5jdGlvbiBzZXRWZXJzaW9uRG9uZSgpDQotew0K
LSAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJyki
KTsNCi0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3Jl
JykucHV0KCdhJywgJ2InKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5SRUFEX09OTFlfRVJSIik7
DQotDQotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3Rv
cmUnKSIpOw0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0cmFucy5vYmplY3RTdG9yZSgn
c3RvcmUnKS5kZWxldGUoJ3gnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5SRUFEX09OTFlfRVJS
Iik7DQotDQotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbign
c3RvcmUnKSIpOw0KLSAgICBjdXIgPSBldmFsQW5kTG9nKCJjdXIgPSB0cmFucy5vYmplY3RTdG9y
ZSgnc3RvcmUnKS5vcGVuQ3Vyc29yKCkiKTsNCi0gICAgY3VyLm9uc3VjY2VzcyA9IGdvdEN1cnNv
cjsNCi0gICAgY3VyLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsNCi19DQotDQot
ZnVuY3Rpb24gZ290Q3Vyc29yKCkNCi17DQotICAgIHNob3VsZEJlRmFsc2UoIiFldmVudC50YXJn
ZXQucmVzdWx0Iik7DQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImV2ZW50LnRhcmdldC5y
ZXN1bHQuZGVsZXRlKCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUiIpOw0K
LQ0KLSAgICBmaW5pc2hKU1Rlc3QoKTsNCi19DQotDQotDQotdGVzdCgpOw0KLQ0KLTwvc2NyaXB0
Pg0KLTxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0Pg0KLTwvYm9keT4NCi08L2h0bWw+DQorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdHJhbnNhY3Rpb24tcmVhZC1vbmx5LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tcm9sbGJhY2suaHRtbCBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXJvbGxiYWNrLmh0bWwKaW5kZXggOGEyNzM4
OTA0NzM5Y2E1ZTEyNjQ2ZDY1MGIxNWMxZTk2YTNkMGM3NS4uN2RiZDgwNGFjNjU5NGUyNmRlNDNm
MzU3MmIzOTFiMmYzOTBiMWI3NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvdHJhbnNhY3Rpb24tcm9sbGJhY2suaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi90cmFuc2FjdGlvbi1yb2xsYmFjay5odG1sCkBAIC00LDk3ICs0LDcgQEAKIDxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5
PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIHRyYW5zYWN0aW9uIHJv
bGxiYWNrLiIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhl
cygpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCd0cmFuc2Fj
dGlvbi1yb2xsYmFjaycpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVu
Y3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOwotICAg
IHNlbGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScp
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjbGVhbkRh
dGFiYXNlKCkKLXsKLSAgICBkZWJ1ZygiY2xlYW5EYXRhYmFzZSgpOiIpOwotICAgIHNlbGYudHJh
bnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKLSAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0g
ICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHNldFZlcnNpb25Db21wbGV0ZTsKLQotICAgIGRl
bGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0gICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ215T2JqZWN0U3RvcmUnKSIpOwotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5h
bWVzLmxlbmd0aCIsICIxIik7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb25Db21wbGV0ZSgpCi17
Ci0gICAgZGVidWcoInNldFZlcnNpb25Db21wbGV0ZSgpOiIpOwotCi0gICAgc2VsZi50cmFuc2Fj
dGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydteU9iamVj
dFN0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgdHJhbnNhY3Rpb24u
b25hYm9ydCA9IGFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHVu
ZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOwotCi0gICAgc2VsZi5zdG9yZSA9IGV2YWxBbmRMb2co
InN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ215T2JqZWN0U3RvcmUnKSIpOwotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoJ3JvbGxiYWNrVmFsdWUnLCAncm9sbGJh
Y2tLZXkxMjMnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkU3VjY2VzczsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24g
YWRkU3VjY2VzcygpCi17Ci0gICAgZGVidWcoImFkZFN1Y2Nlc3MoKToiKTsKLSAgICBzaG91bGRC
ZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICIncm9sbGJhY2tLZXkxMjMnIik7Ci0KLSAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygic3RvcmUub3BlbkN1cnNvcigpIik7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBvcGVuQ3Vyc29yU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlbkN1cnNvclN1Y2Nlc3MoKQotewot
ICAgIGRlYnVnKCJvcGVuQ3Vyc29yU3VjY2VzcygpOiIpOwotICAgIHNlbGYuY3Vyc29yID0gZXZh
bEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgdHJhbnNhY3Rp
b24uYWJvcnQoKTsKLX0KLQotZnVuY3Rpb24gYWJvcnRDYWxsYmFjaygpCi17Ci0gICAgZGVidWco
ImFib3J0Q2FsbGJhY2soKToiKTsKLSAgICBkZWJ1ZygnVHJhbnNhY3Rpb24gd2FzIGFib3J0ZWQu
Jyk7Ci0KLSAgICBzZWxmLnRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBk
Yi50cmFuc2FjdGlvbihbJ215T2JqZWN0U3RvcmUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRCkiKTsK
LSAgICBzZWxmLnN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RT
dG9yZSgnbXlPYmplY3RTdG9yZScpIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3Jl
LmdldCgncm9sbGJhY2tLZXkxMjMnKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0U3VjY2VzczsKLX0K
LQotZnVuY3Rpb24gZ2V0U3VjY2VzcygpCi17Ci0gICAgZGVidWcoImdldFN1Y2Nlc3MoKToiKTsK
LSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ1bmRlZmluZWQiKTsKLQotICAg
IHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAiJ3JvbGxiYWNrVmFsdWUnIik7Ci0gICAgZmluaXNo
SlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvdHJhbnNhY3Rpb24tcm9sbGJhY2suanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+
CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFu
c2FjdGlvbi1zdG9yZU5hbWVzLXJlcXVpcmVkLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi90cmFuc2FjdGlvbi1zdG9yZU5hbWVzLXJlcXVpcmVkLmh0bWwKaW5kZXggZTczZTg2
OTI4ZWYxOGMyYzQ5NjA2ZGViNmY5OTU4NTBiZGRiZDhmNC4uYjJhY2NjMzc2NmZhZGZjM2QzYjIx
ODcyMDIyZjQ5ODE4ZWU4NzhiZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvdHJhbnNhY3Rpb24tc3RvcmVOYW1lcy1yZXF1aXJlZC5odG1sCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXN0b3JlTmFtZXMtcmVxdWlyZWQuaHRt
bApAQCAtMSw0NiArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgogPHNj
cmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4K
IDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCOiB0cmFuc2Fj
dGlvbiBzdG9yZU5hbWVzIHJlcXVpcmVkIGFyZ3VtZW50cyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkK
LXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRp
b24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIp
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNz
KCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwot
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJyki
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1
bmN0aW9uIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQotewotICAgIGRlbGV0ZUFsbE9i
amVjdFN0b3JlcyhkYik7Ci0KLSAgICBzaG91bGRUaHJvdygiZGIudHJhbnNhY3Rpb24oKTsiKTsK
LSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy90cmFuc2FjdGlvbi1zdG9yZU5hbWVzLXJlcXVpcmVkLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvdHdvLXZlcnNpb24tY2hhbmdlcy5odG1sIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvdHdvLXZlcnNpb24tY2hhbmdlcy5odG1sCmluZGV4IDlhMWZmYWYx
YWVhODQ0MjRlZTFhNGE5OGUzMDMzNzM2MzA5YmE2MzAuLmM1NjkwOWE0ZjRiMzkxOWJhYjc0ZDE2
NDA1ZTg4ZWM3Y2QyNmM3MzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3R3by12ZXJzaW9uLWNoYW5nZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi90d28tdmVyc2lvbi1jaGFuZ2VzLmh0bWwKQEAgLTQsMTE0ICs0LDcgQEAKIDxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5Pgot
PHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgYmVoYXZpb3Igd2hlbiB0aGUgc2FtZSBjb25u
ZWN0aW9uIGNhbGxzIHNldFZlcnNpb24gdHdpY2UiKTsKLQotCi1mdW5jdGlvbiB0ZXN0KCkgewot
ICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBzaG91bGRCZUZhbHNlKCJpbmRleGVk
REIgPT0gbnVsbCIpOwotICAgIHNob3VsZEJlRmFsc2UoIklEQlRyYW5zYWN0aW9uID09IG51bGwi
KTsKLSAgICBvcGVuREJDb25uZWN0aW9uKCk7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5EQkNvbm5lY3Rp
b24oKQotewotICAgIGV2YWxBbmRMb2coInNlbGYuc3RhdGUgPSAnc3RhcnRpbmcnIik7Ci0gICAg
dmFyIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndHdvLXZlcnNpb25zLW9u
ZS1jb25uZWN0aW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5j
dGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIGV2YWxBbmRMb2coInNlbGYuc3RhdGUgPSAwIik7Ci0K
LSAgICB2YXIgdmVyc2lvbkNoYW5nZVJlcXVlc3QxID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lv
bigndmVyc2lvbiAxJykiKTsKLSAgICB2ZXJzaW9uQ2hhbmdlUmVxdWVzdDEub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0MS5vbnN1Y2Nl
c3MgPSBpblNldFZlcnNpb24xOwotCi0gICAgLy8gYW5kIGNvbmN1cnJlbnRseS4uLgotCi0gICAg
dmFyIHZlcnNpb25DaGFuZ2VSZXF1ZXN0MiA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ3Zl
cnNpb24gMicpIik7Ci0gICAgdmVyc2lvbkNoYW5nZVJlcXVlc3QyLm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLSAgICB2ZXJzaW9uQ2hhbmdlUmVxdWVzdDIub25zdWNjZXNzID0g
aW5TZXRWZXJzaW9uMjsKLX0KLQotZnVuY3Rpb24gaW5TZXRWZXJzaW9uMSgpCi17Ci0gICAgZGVi
dWcoInNldFZlcnNpb24oKSAjMSBjYWxsYmFjayIpOwotICAgIHRyYW5zID0gZXZlbnQudGFyZ2V0
LnJlc3VsdDsKLSAgICBldmFsQW5kTG9nKCJzZWxmLnN0b3JlMSA9IGRiLmNyZWF0ZU9iamVjdFN0
b3JlKCd0ZXN0LXN0b3JlMScpIik7Ci0gICAgc2hvdWxkQmUoIisrc2VsZi5zdGF0ZSIsICIxIik7
Ci0gICAgdmFyIHJlcSA9IGV2YWxBbmRMb2coInNlbGYuc3RvcmUxLnB1dCgnYWFhJywgMTExKSIp
OwotICAgIHJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxLm9u
c3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7Ci0gICAgICAgIHNob3VsZEJlKCIrK3NlbGYuc3RhdGUi
LCAiMiIpOwotICAgICAgICBoYWxmd2F5RG9uZSgpOwotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIGlu
U2V0VmVyc2lvbjIoKQotewotICAgIGRlYnVnKCJzZXRWZXJzaW9uKCkgIzIgY2FsbGJhY2siKTsK
LSAgICB0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Ci0gICAgc2hvdWxkQmUoIisrc2VsZi5z
dGF0ZSIsICI0Iik7Ci0gICAgZXZhbEFuZExvZygic2VsZi5zdG9yZTIgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgndGVzdC1zdG9yZTInKSIpOwotCi0KLSAgICB2YXIgcmVxID0gZXZhbEFuZExvZygi
c2VsZi5zdG9yZTIucHV0KCdiYmInLCAyMjIpIik7Ci0gICAgcmVxLm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKLSAg
ICAgICAgc2hvdWxkQmUoIisrc2VsZi5zdGF0ZSIsICI1Iik7Ci0gICAgICAgIGhhbGZ3YXlEb25l
KCk7Ci0gICAgfTsKLX0KLQotdmFyIGNvdW50ZXIgPSAwOwotZnVuY3Rpb24gaGFsZndheURvbmUo
KSAKLXsKLSAgICBjb3VudGVyICs9IDE7Ci0gICAgaWYgKGNvdW50ZXIgPCAyKSB7Ci0gICAgICAg
IHNob3VsZEJlKCIrK3NlbGYuc3RhdGUiLCAiMyIpOwotICAgICAgICBkZWJ1ZygiaGFsZndheSB0
aGVyZS4uLiIgKTsKLSAgICB9IGVsc2UgewotICAgICAgICBzaG91bGRCZSgiKytzZWxmLnN0YXRl
IiwgIjYiKTsKLSAgICAgICAgY2hlY2tSZXN1bHRzKCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBj
aGVja1Jlc3VsdHMoKSB7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzZWxmLmRiLnZlcnNp
b24iLCAidmVyc2lvbiAyIik7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IHNldFZlcnNpb25Db21w
bGV0ZTsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvbkNvbXBsZXRlKCkKLXsKLSAgICB0cmFucyA9
IGV2YWxBbmRMb2coInNlbGYudHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3Rlc3Qtc3RvcmUxJywg
J3Rlc3Qtc3RvcmUyJ10pIik7Ci0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzZWxmLnN0b3JlID0g
c2VsZi50cmFucy5vYmplY3RTdG9yZSgndGVzdC1zdG9yZTEnKSIpOwotICAgIHJlcSA9IGV2YWxB
bmRMb2coInNlbGYucmVxID0gc2VsZi5zdG9yZS5nZXQoMTExKSIpOwotICAgIHJlcS5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9u
IChlKSB7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3Vs
dCIsICJhYWEiKTsKLQotICAgICAgICBzdG9yZSA9IGV2YWxBbmRMb2coInNlbGYuc3RvcmUgPSBz
ZWxmLnRyYW5zLm9iamVjdFN0b3JlKCd0ZXN0LXN0b3JlMicpIik7Ci0gICAgICAgIHJlcSA9IGV2
YWxBbmRMb2coInNlbGYucmVxID0gc2VsZi5zdG9yZS5nZXQoMjIyKSIpOwotICAgICAgICByZXEu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICByZXEub25zdWNjZXNz
ID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZl
bnQudGFyZ2V0LnJlc3VsdCIsICJiYmIiKTsKLSAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwot
ICAgICAgICB9OwotICAgIH07Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvdHdvLXZlcnNpb24tY2hhbmdlcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
IDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3ZhbHVlLXVuZGVmaW5lZC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
dmFsdWUtdW5kZWZpbmVkLmh0bWwKaW5kZXggNjcwMWYwNmE5NTFiYTkwOTFhOTdhMmQ3ZDUyNTc4
ZTI2NjJhMGQ4MS4uMzkzYWI0NDU4MGY4NWE0MWJkMDcxYzliZWYzZDYwY2YwMGQ3YjNkZiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmFsdWUtdW5kZWZpbmVkLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmFsdWUtdW5kZWZpbmVkLmh0
bWwKQEAgLTEsNzYgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+
CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiB1bmRlZmlu
ZWQgYXMgcmVjb3JkIHZhbHVlIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZl
bmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAg
ICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRiID0g
ZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZTsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY3JlYXRlQW5k
UG9wdWxhdGVPYmplY3RTdG9yZSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsK
LQotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVP
YmplY3RTdG9yZSgnZm9vJyk7Iik7Ci0gICAgcmVzdWx0ID0gZXZhbEFuZExvZygicmVzdWx0ID0g
b2JqZWN0U3RvcmUuYWRkKHVuZGVmaW5lZCwgSW5maW5pdHkpOyIpOwotICAgIHJlc3VsdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGdl
dFZhbHVlOwotfQotCi1mdW5jdGlvbiBnZXRWYWx1ZSgpCi17Ci0gICAgcmVzdWx0ID0gZXZhbEFu
ZExvZygicmVzdWx0ID0gb2JqZWN0U3RvcmUuZ2V0KEluZmluaXR5KTsiKTsKLSAgICByZXN1bHQu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlc3VsdC5vbnN1Y2Nlc3Mg
PSBjaGVja1ZhbHVlOwotfQotCi1mdW5jdGlvbiBjaGVja1ZhbHVlKCkKLXsKLSAgICB2YWx1ZSA9
IGV2YWxBbmRMb2coInZhbHVlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICBzaG91bGRC
ZSgidmFsdWUiLCAidW5kZWZpbmVkIik7Ci0gICAgcmVzdWx0ID0gZXZhbEFuZExvZygicmVzdWx0
ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOwotICAgIHJlc3VsdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGNoZWNrQ3Vyc29y
OwotfQotCi1mdW5jdGlvbiBjaGVja0N1cnNvcigpCi17Ci0gICAgY3Vyc29yID0gZXZhbEFuZExv
ZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICBpZiAoY3Vyc29yKSB7Ci0g
ICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIkluZmluaXR5Iik7Ci0gICAgICAgIHNob3Vs
ZEJlKCJjdXJzb3IudmFsdWUiLCAidW5kZWZpbmVkIik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAg
dGVzdEZhaWxlZCgiY3Vyc29yIGlzIG51bGwiKTsKLSAgICB9Ci0gICAgZmluaXNoSlNUZXN0KCk7
Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdmFs
dWUtdW5kZWZpbmVkLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmFsdWVzLW9kZC10eXBlcy5o
dG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmFsdWVzLW9kZC10eXBlcy5odG1s
CmluZGV4IDJjODYzZjM4YWZjMjEzOTM0ZTk5ODQ5NzE3MGEwYzA3NTNmMDJjYzIuLjg0OGFjN2M5
ZTg5ZDRmYTJlY2ZmYzJiOGMyNmNhMWExNDYyNzdiZGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3ZhbHVlcy1vZGQtdHlwZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi92YWx1ZXMtb2RkLXR5cGVzLmh0bWwKQEAgLTEsODggKzEsMTAg
QEAKLTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+
Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBvZGQgdmFsdWUgZGF0YXR5cGVzIik7Ci0K
LWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBu
YW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0
IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFt
ZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVu
Y3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50
YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRi
LnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkS2V5MTsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rp
b24gYWRkS2V5MSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9i
amVjdFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycsIHthdXRv
SW5jcmVtZW50OiB0cnVlfSk7Iik7Ci0KLSAgICBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdjYW52YXMnKTsKLSAgICBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7Ci0g
ICAgaW1hZ2VkYXRhID0gY29udGV4dC5jcmVhdGVJbWFnZURhdGEoMSwgMSk7Ci0gICAgdmFsaWRU
eXBlcyA9IFt7IGRlc2NyaXB0aW9uOiAncmVnZXhwJywgICAgdmFsdWU6IG5ldyBSZWdFeHAoJ1xc
XFwnKSB9LAotICAgICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ2RhdGUnLCAgICAgIHZh
bHVlOiBuZXcgRGF0ZSgwKSB9LAotICAgICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ29i
amVjdCcsICAgIHZhbHVlOiBuZXcgT2JqZWN0KCkgfSwKLSAgICAgICAgICAgICAgICAgIHsgZGVz
Y3JpcHRpb246ICdpbWFnZWRhdGEnLCB2YWx1ZTogaW1hZ2VkYXRhIH0sCi0gICAgXTsKLSAgICBu
ZXh0VG9BZGQgPSAwOwotICAgIGFkZERhdGEoKTsKLX0KLQotZnVuY3Rpb24gYWRkRGF0YSgpCi17
Ci0gICAgZGVidWcoImFkZGluZyAiICsgdmFsaWRUeXBlc1tuZXh0VG9BZGRdLmRlc2NyaXB0aW9u
ICsgIiB2YWx1ZSIpOwotICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCh2
YWxpZFR5cGVzW25leHRUb0FkZF0udmFsdWUpIik7Ci0gICAgcmVzdWx0Lm9uc3VjY2VzcyA9ICsr
bmV4dFRvQWRkIDwgdmFsaWRUeXBlcy5sZW5ndGggPyBhZGREYXRhIDogb3BlbkFDdXJzb3I7Ci0g
ICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rp
b24gb3BlbkFDdXJzb3IoKQotewotICAgIHZhbHVlSW5kZXggPSAwOwotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOwotICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2co
ImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsK
LSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUudG9TdHJpbmcoKSIsICJ2YWxpZFR5
cGVzW3ZhbHVlSW5kZXhdLnZhbHVlLnRvU3RyaW5nKCkiKTsKLSAgICAgICAgICAgIGlmICh2YWx1
ZUluZGV4ID09IDEpIHsKLSAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLnRv
VVRDU3RyaW5nKCkiLCAiJ1RodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDAgR01UJyIpOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgaWYgKHZhbHVlSW5kZXggPT0gMykgewotICAgICAgICAgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2lkdGgiLCAiMSIpOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7Ci0gICAgICAgICAg
ICBldmFsQW5kTG9nKCJ2YWx1ZUluZGV4Kys7Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotCi10
ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy92YWx1ZXMtb2RkLXR5
cGVzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1jaGFuZ2UtYWJvcnQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1jaGFuZ2UtYWJv
cnQtZXhwZWN0ZWQudHh0CmluZGV4IDMxNWQ0ZDU3Y2U4NWIxYzlmZTU4OWJiOGU3YzExMGQ5NTU3
MmMwMDUuLjMxZWJkNjEzYWJlNjdmNDRhZjA3YjM4NTJlMmY5NDIxMjA3NmIwMmIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWFib3J0LWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9uLWNo
YW5nZS1hYm9ydC1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBACi1DT05TT0xFIE1FU1NBR0U6
IGxpbmUgNzY6IFVuY2F1Z2h0IEVycm9yOiBUaGlzIHNob3VsZCAqTk9UKiBiZSBjYXVnaHQhCitD
T05TT0xFIE1FU1NBR0U6IGxpbmUgNzE6IFVuY2F1Z2h0IEVycm9yOiBUaGlzIHNob3VsZCAqTk9U
KiBiZSBjYXVnaHQhCiBFbnN1cmUgdGhhdCBhYm9ydGVkIFZFUlNJT05fQ0hBTkdFIHRyYW5zYWN0
aW9ucyBhcmUgY29tcGxldGVseSByb2xsZWQgYmFjawogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9uLWNo
YW5nZS1hYm9ydC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1j
aGFuZ2UtYWJvcnQuaHRtbAppbmRleCBjZGM5YWNhMGUzMTgxNzExMTM4MDg0MWIyMzU1NDQwZmE1
YjJlMjE0Li41N2RlMDA5MGE1NmQ1OTU1NmFiNDliOTlkNTJmODQ1MWY5YzNjMmVhIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9uLWNoYW5nZS1hYm9ydC5o
dG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWFi
b3J0Lmh0bWwKQEAgLTEsOTkgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVh
ZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8
L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJFbnN1cmUgdGhhdCBhYm9y
dGVkIFZFUlNJT05fQ0hBTkdFIHRyYW5zYWN0aW9ucyBhcmUgY29tcGxldGVseSByb2xsZWQgYmFj
ayIpOwotCi0KLWZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsK
LSAgICBvcGVuREJDb25uZWN0aW9uKCk7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5EQkNvbm5lY3Rpb24o
KQotewotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndmVyc2lvbi1j
aGFuZ2UtYWJvcnQnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0
aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7Ci0gICAgZGVidWcoIiIpOwotCi0gICAgZXZhbEFuZExvZygidmNy
ZXEgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOwotICAgIHZjcmVxLm9uc3VjY2VzcyA9
IGluU2V0VmVyc2lvbjE7Ci0gICAgdmNyZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotfQotCi1mdW5jdGlvbiBpblNldFZlcnNpb24xKCkKLXsKLSAgICBkZWJ1Zygic2V0VmVy
c2lvbjEoKSBjYWxsYmFjayIpOwotICAgIHNob3VsZEJlVHJ1ZSgidmNyZXEucmVzdWx0IGluc3Rh
bmNlb2YgSURCVHJhbnNhY3Rpb24iKTsKLSAgICB0cmFucyA9IHZjcmVxLnJlc3VsdDsKLSAgICB0
cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBzZXRW
ZXJzaW9uMUNvbXBsZXRlOwotCi0gICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnc3RvcmUxJykiKTsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvbjFDb21wbGV0ZSgp
Ci17Ci0gICAgZGVidWcoInNldFZlcnNpb24xIGNvbXBsZXRlIik7Ci0gICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJkYi52ZXJzaW9uIiwgInZlcnNpb24gMSIpOwotICAgIGRlYnVnKCIiKTsKLQot
ICAgIGV2YWxBbmRMb2coInZjcmVxID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAyJykiKTsKLSAg
ICB2Y3JlcS5vbnN1Y2Nlc3MgPSBpblNldFZlcnNpb24yOwotICAgIHZjcmVxLm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gaW5TZXRWZXJzaW9uMigpCi17
Ci0gICAgZGVidWcoInNldFZlcnNpb24yKCkgY2FsbGJhY2siKTsKLSAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImRiLnZlcnNpb24iLCAidmVyc2lvbiAyIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ2
Y3JlcS5yZXN1bHQgaW5zdGFuY2VvZiBJREJUcmFuc2FjdGlvbiIpOwotICAgIHRyYW5zID0gdmNy
ZXEucmVzdWx0OwotICAgIHRyYW5zLm9uYWJvcnQgPSBzZXRWZXJzaW9uMkFib3J0OwotICAgIHRy
YW5zLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBs
ZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7Ci0KLSAgICBldmFsQW5kTG9nKCJzdG9y
ZSA9IGRiLmRlbGV0ZU9iamVjdFN0b3JlKCdzdG9yZTEnKSIpOwotICAgIGV2YWxBbmRMb2coInN0
b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlMicpIik7Ci0KLSAgICAvLyBFbnN1cmUg
dGhlIHRlc3QgaGFybmVzcyBlcnJvciBoYW5kbGVyIGlzIG5vdCBpbnZva2VkLgotICAgIHNlbGYu
b3JpZ2luYWxXaW5kb3dPbkVycm9yID0gc2VsZi5vbmVycm9yOwotICAgIHNlbGYub25lcnJvciA9
IG51bGw7Ci0KLSAgICBkZWJ1ZygicmFpc2luZyBleGNlcHRpb24iKTsKLSAgICB0aHJvdyBuZXcg
RXJyb3IoIlRoaXMgc2hvdWxkICpOT1QqIGJlIGNhdWdodCEiKTsKLX0KLQotZnVuY3Rpb24gc2V0
VmVyc2lvbjJBYm9ydCgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJzZXRWZXJzaW9u
MkFib3J0KCkgY2FsbGJhY2siKTsKLQotICAgIC8vIFJlc3RvcmUgdGVzdCBoYXJuZXNzIGVycm9y
IGhhbmRsZXIuCi0gICAgc2VsZi5vbmVycm9yID0gc2VsZi5vcmlnaW5hbFdpbmRvd09uRXJyb3I7
Ci0KLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLnZlcnNpb24iLCAidmVyc2lvbiAxIik7
Ci0gICAgc2hvdWxkQmVUcnVlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCdzdG9yZTEn
KSIpOwotICAgIHNob3VsZEJlRmFsc2UoImRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJ3N0
b3JlMicpIik7Ci0KLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotdGVzdCgpOwotCi08L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdmVyc2lvbi1jaGFuZ2UtYWJvcnQuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9uLWNoYW5nZS1leGNsdXNpdmUuaHRtbCBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWV4Y2x1c2l2ZS5odG1sCmluZGV4
IDQ5NDk2ZGViMjRhYjk4N2QxM2E2ODE0MTRiNmVlNThjM2Y5ZWU1MzIuLjRhMGU0NjJhNjdhYjlh
MTI4MzEwMWM3NmY4NjQ2Nzg5ODU1NGQ5ZmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWV4Y2x1c2l2ZS5odG1sCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWV4Y2x1c2l2ZS5odG1sCkBAIC00
LDc3ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4K
IDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIkVuc3VyZSBWRVJTSU9O
X0NIQU5HRSB0cmFuc2FjdGlvbiBkb2Vzbid0IHJ1biBjb25jdXJyZW50bHkgd2l0aCBvdGhlciB0
cmFuc2FjdGlvbnMiKTsKLQotCi1mdW5jdGlvbiB0ZXN0KCkgewotICAgIHJlbW92ZVZlbmRvclBy
ZWZpeGVzKCk7Ci0gICAgb3BlbkRCQ29ubmVjdGlvbigpOwotfQotCi1mdW5jdGlvbiBvcGVuREJD
b25uZWN0aW9uKCkKLXsKLSAgICBldmFsQW5kTG9nKCJzZWxmLnN0YXRlID0gJ3N0YXJ0aW5nJyIp
OwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndmVyc2lvbi1jaGFu
Z2UtZXhjbHVzaXZlJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5j
dGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgZGVidWcoImNhbGxpbmcgc2V0VmVyc2lvbigpIC0g
Y2FsbGJhY2sgc2hvdWxkIHJ1biBpbW1lZGlhdGVseSIpOwotICAgIHZhciB2ZXJzaW9uQ2hhbmdl
UmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7Ci0gICAg
dmVyc2lvbkNoYW5nZVJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
ICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uc3VjY2VzcyA9IGluU2V0VmVyc2lvbjsKLQotICAg
IC8vIGFuZCBjb25jdXJyZW50bHkuLi4KLQotICAgIGRlYnVnKCJjYWxsaW5nIG9wZW4oKSAtIGNh
bGxiYWNrIHNob3VsZCB3YWl0IHVudGlsIFZFUlNJT05fQ0hBTkdFIHRyYW5zYWN0aW9uIGlzIGNv
bXBsZXRlIik7Ci0gICAgdmFyIG9wZW5SZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9w
ZW4oJ3ZlcnNpb24tY2hhbmdlLWV4Y2x1c2l2ZScpIik7Ci0gICAgb3BlblJlcXVlc3Qub25zdWNj
ZXNzID0gb3BlbkFnYWluU3VjY2VzczsKLSAgICBvcGVuUmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGluU2V0VmVyc2lvbigpCi17Ci0gICAg
ZGVidWcoInNldFZlcnNpb24oKSBjYWxsYmFjayIpOwotICAgIGRlYnVnKCJzdGFydGluZyB3b3Jr
IGluIFZFUlNJT05fQ0hBTkdFIHRyYW5zYWN0aW9uIik7Ci0gICAgZXZhbEFuZExvZygic2VsZi5z
dGF0ZSA9ICdWRVJTSU9OX0NIQU5HRSBzdGFydGVkJyIpOwotCi0gICAgc2VsZi5zdG9yZSA9IGV2
YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Rlc3Qtc3RvcmUnKSIpOwot
ICAgIHNlbGYuY291bnQgPSAwOwotICAgIGRvX2FzeW5jX3B1dHMoKTsKLQotICAgIGZ1bmN0aW9u
IGRvX2FzeW5jX3B1dHMoKSB7Ci0gICAgICAgIHZhciByZXEgPSBldmFsQW5kTG9nKCJzdG9yZS5w
dXQoIiArIGNvdW50ICsgIiwgIiArIGNvdW50ICsgIikiKTsKLSAgICAgICAgcmVxLm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0
aW9uIChlKSB7Ci0gICAgICAgICAgICBkZWJ1ZygiaW4gcHV0J3Mgb25zdWNjZXNzIik7Ci0gICAg
ICAgICAgICBpZiAoKytzZWxmLmNvdW50IDwgMTApIHsKLSAgICAgICAgICAgICAgICBkb19hc3lu
Y19wdXRzKCk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGRlYnVnKCJl
bmRpbmcgd29yayBpbiBWRVJTSU9OX0NIQU5HRSB0cmFuc2FjdGlvbiIpOwotICAgICAgICAgICAg
ICAgIGV2YWxBbmRMb2coInNlbGYuc3RhdGUgPSAnVkVSU0lPTl9DSEFOR0UgZmluaXNoZWQnIik7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0gICAgfQotfQotCi1mdW5jdGlvbiBvcGVuQWdh
aW5TdWNjZXNzKCkKLXsKLSAgICBkZWJ1Zygib3BlbigpIGNhbGxiYWNrIC0gdGhpcyBzaG91bGQg
YXBwZWFyIGFmdGVyIFZFUlNJT05fQ0hBTkdFIHRyYW5zYWN0aW9uIGVuZHMiKTsKLSAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoInNlbGYuc3RhdGUiLCAiVkVSU0lPTl9DSEFOR0UgZmluaXNoZWQi
KTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy92ZXJzaW9uLWNoYW5nZS1leGNsdXNpdmUuanMiPjwvc2NyaXB0
PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi92ZXJzaW9uY2hhbmdlcmVxdWVzdC1hY3RpdmVkb21vYmplY3QuaHRtbCBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb25jaGFuZ2VyZXF1ZXN0LWFjdGl2
ZWRvbW9iamVjdC5odG1sCmluZGV4IDlhN2MzNTBkYjUyYmNkYjBlM2NhNDA4ZDM4YmM4NmNmOGZh
NzUxNGQuLjU0NzQ1ZDcwMTZiMDU2OTc0ODdmZmEwODgwMjNmNTVmZGE2YjM1NjcgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb25jaGFuZ2VyZXF1ZXN0LWFj
dGl2ZWRvbW9iamVjdC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Zl
cnNpb25jaGFuZ2VyZXF1ZXN0LWFjdGl2ZWRvbW9iamVjdC5odG1sCkBAIC0xLDc2ICsxLDEwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJl
c291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0Pgot
Ci1kZXNjcmlwdGlvbigiRW5zdXJlIHRoYXQgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Qgb2JqZWN0
cyBhcmUgbm90IEdDJ2QgaWYgdGhleSBoYXZlIHBlbmRpbmcgZXZlbnRzIik7Ci0KLWZ1bmN0aW9u
IHRlc3QoKSB7Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIGRlYnVnKCIiKTsK
LSAgICBldmFsQW5kTG9nKCJzZWxmLmRibmFtZSA9ICd2ZXJzaW9uY2hhbmdlcmVxdWVzdC1hY3Rp
dmVkb21vYmplY3QnIik7Ci0KLSAgICB0ZXN0RGVsZXRlRGF0YWJhc2UoKTsKLX0KLQotZnVuY3Rp
b24gdGVzdERlbGV0ZURhdGFiYXNlKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInRl
c3REZWxldGVEYXRhYmFzZSgpOiIpOwotICAgIC8vIE5PVEU6IGRlbGV0ZVJlcXVlc3QgaXMgbG9j
YWwgdmFyaWFibGUgc28gaXQgaXMgbm90IGNhcHR1cmVkIGluIGdsb2JhbCBzY29wZS4KLSAgICB2
YXIgZGVsZXRlUmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShz
ZWxmLmRibmFtZSkiKTsKLSAgICBkZWxldGVSZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLSAgICBkZWxldGVSZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9j
a2VkQ2FsbGJhY2s7Ci0gICAgZGVsZXRlUmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsg
ZGVsZXRlU3VjY2VzcygpOyB9OwotICAgIGRlbGV0ZVJlcXVlc3QgPSBudWxsOwotICAgIGlmIChz
ZWxmLmdjKSB7Ci0gICAgICAgIGV2YWxBbmRMb2coInNlbGYuZ2MoKSIpOwotICAgIH0KLX0KLQot
ZnVuY3Rpb24gZGVsZXRlU3VjY2VzcygpCi17Ci0gICAgdGVzdFBhc3NlZCgiZGVsZXRlRGF0YWJh
c2UncyBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5vbnN1Y2Nlc3MgZXZlbnQgZmlyZWQiKTsKLSAg
ICB0ZXN0U2V0VmVyc2lvbigpOwotfQotCi1mdW5jdGlvbiB0ZXN0U2V0VmVyc2lvbigpCi17Ci0g
ICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJ0ZXN0U2V0VmVyc2lvbigpOiIpOwotCi0gICAgLy8g
Tk9URTogVGhpcyBpcyBqdXN0IGFuIElEQlJlcXVlc3QsIGl0IGNhbiBiZSBnbG9iYWwuCi0gICAg
ZXZhbEFuZExvZygib3BlblJlcXVlc3QgPSBpbmRleGVkREIub3BlbihzZWxmLmRibmFtZSkiKTsK
LSAgICBvcGVuUmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAg
b3BlblJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewotICAgICAgICBldmFsQW5kTG9n
KCJkYiA9IG9wZW5SZXF1ZXN0LnJlc3VsdCIpOwotCi0gICAgICAgIC8vIE5PVEU6IHZlcnNpb25S
ZXF1ZXN0IGlzIGxvY2FsIHZhcmlhYmxlIHNvIGl0IGlzIG5vdCBjYXB0dXJlZCBpbiBnbG9iYWwg
c2NvcGUuCi0gICAgICAgIHZhciB2ZXJzaW9uUmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZl
cnNpb24oJzEnKSIpOwotICAgICAgICB2ZXJzaW9uUmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgIHZlcnNpb25SZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhw
ZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7Ci0gICAgICAgIHZlcnNpb25SZXF1ZXN0Lm9uc3VjY2VzcyA9
IGZ1bmN0aW9uKCkgeyB2ZXJzaW9uU3VjY2VzcygpOyB9OwotICAgICAgICB2ZXJzaW9uUmVxdWVz
dCA9IG51bGw7Ci0gICAgICAgIGlmIChzZWxmLmdjKSB7Ci0gICAgICAgICAgICBldmFsQW5kTG9n
KCJzZWxmLmdjKCkiKTsKLSAgICAgICAgfQotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIHZlcnNpb25T
dWNjZXNzKCkKLXsKLSAgICB0ZXN0UGFzc2VkKCJzZXRWZXJzaW9uJ3MgSURCVmVyc2lvbkNoYW5n
ZVJlcXVlc3Qub25zdWNjZXNzIGV2ZW50IGZpcmVkIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19
Ci0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3ZlcnNpb25j
aGFuZ2VyZXF1ZXN0LWFjdGl2ZWRvbW9iamVjdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0i
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9k
eT4KIDwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133576</attachid>
            <date>2012-03-23 15:48:12 -0700</date>
            <delta_ts>2012-03-26 15:37:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81440-20120323154811.patch</filename>
            <type>text/plain</type>
            <size>1014809</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExODU1CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTdkYTMzZDViZjdiNDhmNDE0Y2Qy
YjA0M2VlNjkwNTQ5MTI3OWZiNi4uZDhiNmQ0YzYxZDJmMTI1ZDk0ZWNiYjFhZGU4YzU5ZmFmYzYw
YzIxMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNTIgQEAKKzIwMTItMDMtMjMgIERhdmlkIEdyb2dhbiAg
PGRncm9nYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEV4dHJhY3QgbG9naWMgb2YgaW5kZXhl
ZGRiIGh0bWwgbGF5b3V0IHRlc3RzIGludG8ganMgZmlsZXMgdGhhdCBjYW4KKyAgICAgICAgYmUg
cnVuIGZyb20gZWl0aGVyIGEgd29ya2VyIG9yIGEgd2luZG93LgorCisgICAgICAgIFRoZSB0d28g
Y2hhbmdlZCAtZXhwZWN0ZWQudHh0IGZpbGVzIGFyZSBqdXN0IGZvciBsaW5lIG51bWJlcnMgaW4g
SlMKKyAgICAgICAgZXJyb3IgbWVzc2FnZXMuCisKKyAgICAgICAgU2tpcHBlZCB3ZXJlOgorICAg
ICAgICAtIHRyYW5zYWN0aW9uLWFib3J0LXdpdGgtanMtcmVjdXJzaW9uLmh0bWwKKyAgICAgICAg
LSB0cmFuc2FjdGlvbi1hYm9ydC13aXRoLWpzLXJlY3Vyc2lvbi1jcm9zcy1mcmFtZS5odG1sCisg
ICAgICAgIC0gbm9ibG9icy5odG1sCisgICAgICAgIC0gc3RydWN0dXJlZC1jbG9uZS5odG1sCisg
ICAgICAgIC0gdHV0b3JpYWwuaHRtbAorICAgICAgICBUaGUgZmlyc3QgZm91ciBzaW11bGF0ZSBt
b3VzZSBldmVudHMgYW5kIHRoZSBsYXN0IGlzbid0IHJlYWxseSBhIHRlc3QuCisgICAgICAgIHN0
cnVjdHVyZWQtY2xvbmUuaHRtbCB3aWxsIGJlIHJlZmFjdG9yZWQgZm9yIHdvcmtlciBjb21wYXRp
YmlsaXR5IGluIGEKKyAgICAgICAgZnV0dXJlIHBhdGNoLgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTQ0MAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY29uc3RhbnRz
Lmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlLWFuZC1yZW1vdmUtb2Jq
ZWN0LXN0b3JlLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlLW9iamVj
dC1zdG9yZS1vcHRpb25zLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRl
T2JqZWN0U3RvcmUtbmFtZS1hcmd1bWVudC1yZXF1aXJlZC5odG1sOgorICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL2NyZWF0ZU9iamVjdFN0b3JlLW51bGwtbmFtZS5odG1sOgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1jb250aW51ZS5odG1sOgorICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL2N1cnNvci1kZWxldGUuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4
ZWRkYi9jdXJzb3ItaW5jb25zaXN0ZW5jeS5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL2N1cnNvci1pbmRleC1kZWxldGUuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9jdXJzb3Ita2V5LW9yZGVyLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3Vy
c29yLXByaW1hcnkta2V5LW9yZGVyLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIv
Y3Vyc29yLXJldmVyc2UtYnVnLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3Vy
c29yLXNraXAtZGVsZXRlZC5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2N1cnNv
ci11cGRhdGUtdmFsdWUtYXJndW1lbnQtcmVxdWlyZWQuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9jdXJzb3ItdXBkYXRlLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVk
ZGIvZGF0YS1jb3JydXB0aW9uLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvZGF0
YWJhc2UtYmFzaWNzLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2Ut
bmFtZS11bmRlZmluZWQuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFz
ZS1vZGQtbmFtZXMuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1x
dW90YS5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZS1jbG9zZWQtZGF0
YWJhc2Utb2JqZWN0Lmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlLXJh
bmdlLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlSW5kZXguaHRtbDoK
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVPYmplY3RTdG9yZS1uYW1lLWFyZ3Vt
ZW50LXJlcXVpcmVkLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlT2Jq
ZWN0U3RvcmUtbnVsbC1uYW1lLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvZHVw
bGljYXRlcy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2Vycm9yLWNhdXNlcy1h
Ym9ydC1ieS1kZWZhdWx0Lmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvZXhjZXB0
aW9uLWluLWV2ZW50LWFib3J0cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRl
eGVkZGIvZXhjZXB0aW9uLWluLWV2ZW50LWFib3J0cy5odG1sOgorICAgICAgICAqIHN0b3JhZ2Uv
aW5kZXhlZGRiL2ZhY3RvcnktYmFzaWNzLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVk
ZGIvZmFjdG9yeS1jbXAuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9mYWN0b3J5
LWRlbGV0ZWRhdGFiYXNlLWludGVyYWN0aW9ucy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5k
ZXhlZGRiL2ZhY3RvcnktZGVsZXRlZGF0YWJhc2UuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2lu
ZGV4ZWRkYi9pbmRleC1jb3VudC5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2lu
ZGV4LWN1cnNvci5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWdldC1r
ZXktYXJndW1lbnQtcmVxdWlyZWQuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9p
bmRleC1tdWx0aWVudHJ5Lmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgt
cG9wdWxhdGlvbi5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LXVuaXF1
ZS5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2ludmFsaWQta2V5cy5odG1sOgor
ICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2tleS1nZW5lcmF0b3IuaHRtbDoKKyAgICAgICAg
KiBzdG9yYWdlL2luZGV4ZWRkYi9rZXktc29ydC1vcmRlci1hY3Jvc3MtdHlwZXMuaHRtbDoKKyAg
ICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9rZXktc29ydC1vcmRlci1kYXRlLmh0bWw6CisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIva2V5LXR5cGUtYXJyYXkuaHRtbDoKKyAgICAgICAgKiBz
dG9yYWdlL2luZGV4ZWRkYi9rZXktdHlwZS1pbmZpbml0eS5odG1sOgorICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL2tleXBhdGgtYmFzaWNzLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRl
eGVkZGIva2V5cGF0aC1lZGdlcy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2tl
eXBhdGgtZmV0Y2gta2V5Lmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIva2V5cmFu
Z2UtcmVxdWlyZWQtYXJndW1lbnRzLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIv
a2V5cmFuZ2UuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9saXN0LW9yZGVyaW5n
Lmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9hZGQtdHdpY2UtZmFp
bHVyZS5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvYXV0b2luY3Jl
bWVudC1pbmRleGVzLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9i
YWQta2V5cGF0aC5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY2xl
YXIuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1pbmRl
eC11bmlxdWUuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0
ZS1pbmRleC13aXRoLWludGVnZXIta2V5cy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvY3JlYXRlLW9iamVjdHN0b3JlLWJhc2ljcy5odG1sOgorICAgICAgICAqIHN0
b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3JlYXRlLW9iamVjdHN0b3JlLW51bGwtbmFtZS5odG1s
OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3Vyc29yLW11dGF0aW9uLW9i
amVjdHN0b3JlLW9ubHkuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L2N1cnNvci1tdXRhdGlvbi5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEvY3Vyc29yLXVwZGF0ZS11cGRhdGVzLWluZGV4ZXMuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL2N1cnNvcnMuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL2RlbGV0ZS1yZXN1bHQuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL2V2ZW50LXNvdXJjZS5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvZ2xvYmFsLWRhdGEuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL2luZGV4ZXMuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL2tleS1yZXF1aXJlbWVudHMtZGVsZXRlLW51bGwta2V5Lmh0bWw6CisgICAgICAgICogc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWlyZW1lbnRzLWlubGluZS1hbmQtcGFzc2Vk
Lmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWlyZW1l
bnRzLXB1dC1uby1rZXkuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L2tleS1yZXF1aXJlbWVudHMtcHV0LW51bGwta2V5Lmh0bWw6CisgICAgICAgICogc3RvcmFnZS9p
bmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWlyZW1lbnRzLmh0bWw6CisgICAgICAgICogc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9vYmplY3QtY3Vyc29ycy5odG1sOgorICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0LWlkZW50aXR5Lmh0bWw6CisgICAgICAgICogc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9vYmplY3Qtc3RvcmUtaW5saW5lLWF1dG9pbmNyZW1lbnQt
a2V5LWFkZGVkLW9uLXB1dC5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEvb2JqZWN0LXN0b3JlLXJlbW92ZS12YWx1ZXMuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL29iamVjdHN0b3JlbmFtZXMuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL29kZC1yZXN1bHQtb3JkZXIuaHRtbDoKKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL29wZW4tZGF0YWJhc2UtbnVsbC1uYW1lLmh0bWw6CisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9wdXQtZ2V0LXZhbHVlcy5odG1sOgorICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVhZG9ubHktdHJhbnNhY3Rpb25zLmh0
bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZWFkd3JpdGUtdHJhbnNh
Y3Rpb25zLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZWFkeVN0
YXRlLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZW1vdmUtaW5k
ZXguaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3JlbW92ZS1vYmpl
Y3RzdG9yZS5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3Vy
Y2VzL2FkZC10d2ljZS1mYWlsdXJlLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL2FkZC10d2ljZS1mYWlsdXJlLmh0bWwuCisgICAgICAgICh0ZXN0
KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGNsZWFuRGF0YWJhc2UpOgorICAg
ICAgICAoYWRkRmlyc3RTdWNjZXNzKToKKyAgICAgICAgKGFkZFNlY29uZEV4cGVjdGVkRXJyb3Ip
OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2F1dG9pbmNy
ZW1lbnQtaW5kZXhlcy5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW96aWxsYS9hdXRvaW5jcmVtZW50LWluZGV4ZXMuaHRtbC4KKyAgICAgICAgKHRlc3QpOgor
ICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAoc2V0dXBPYmplY3RTdG9yZSk6CisgICAg
ICAgIChzZXR1cEluZGV4ZXMpOgorICAgICAgICAoc2V0VmVyc2lvbkNvbXBsZXRlKToKKyAgICAg
ICAgKGNoZWNrRmlyc3RJbmRleEFuZFByZXBhcmVTZWNvbmQpOgorICAgICAgICAoY2hlY2tTZWNv
bmRJbmRleEFuZFByZXBhcmVUaGlyZCk6CisgICAgICAgIChjaGVja1RoaXJkSW5kZXgpOgorICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2JhZC1rZXlwYXRoLmpz
OiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2JhZC1r
ZXlwYXRoLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAg
ICAgICAgKGNsZWFuRGF0YWJhc2UpOgorICAgICAgICAoYWRkRmlyc3RTdWNjZXNzKToKKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jbGVhci5qczogQ29waWVk
IGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jbGVhci5odG1sLgor
ICAgICAgICAodGVzdCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChjbGVhbkRh
dGFiYXNlKToKKyAgICAgICAgKGNsZWFyKToKKyAgICAgICAgKGFyZVdlQ2xlYXJZZXQpOgorICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2NyZWF0ZS1pbmRleC11
bmlxdWUuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEvY3JlYXRlLWluZGV4LXVuaXF1ZS5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChv
cGVuU3VjY2Vzcyk6CisgICAgICAgIChjcmVhdGVBbmRWZXJpZnlJbmRleCk6CisgICAgICAgICog
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY3JlYXRlLWluZGV4LXdpdGgtaW50
ZWdlci1rZXlzLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL2NyZWF0ZS1pbmRleC13aXRoLWludGVnZXIta2V5cy5odG1sLgorICAgICAgICAodGVz
dCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChzZXR1cE9iamVjdFN0b3JlQW5k
Q3JlYXRlSW5kZXgpOgorICAgICAgICAodmVyaWZ5S2V5Q3Vyc29yKToKKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jcmVhdGUtb2JqZWN0c3RvcmUtYmFzaWNz
LmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2Ny
ZWF0ZS1vYmplY3RzdG9yZS1iYXNpY3MuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAo
b3BlblN1Y2Nlc3MpOgorICAgICAgICAoY2xlYW5EYXRhYmFzZSk6CisgICAgICAgICogc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY3JlYXRlLW9iamVjdHN0b3JlLW51bGwtbmFt
ZS5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9j
cmVhdGUtb2JqZWN0c3RvcmUtbnVsbC1uYW1lLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAg
ICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGNsZWFuRGF0YWJhc2UpOgorICAgICAgICAqIHN0
b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2N1cnNvci1tdXRhdGlvbi1vYmplY3Rz
dG9yZS1vbmx5LmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL2N1cnNvci1tdXRhdGlvbi1vYmplY3RzdG9yZS1vbmx5Lmh0bWwuCisgICAgICAgICh0
ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKHNldHVwT2JqZWN0U3RvcmUp
OgorICAgICAgICAoaXRlcmF0ZUN1cnNvcik6CisgICAgICAgIChjaGVja0N1cnNvclJlc3VsdHNB
bmRTZXR1cE11dGF0aW5nQ3Vyc29yKToKKyAgICAgICAgKGl0ZXJhdGVNdXRhdGluZ0N1cnNvcik6
CisgICAgICAgIChhZGRGaW5hbERhdGEucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAoYWRk
RmluYWxEYXRhKToKKyAgICAgICAgKGNoZWNrTXV0YXRpbmdDdXJzb3JSZXN1bHRzKToKKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jdXJzb3ItbXV0YXRpb24u
anM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3Vy
c29yLW11dGF0aW9uLmh0bWwuCisgICAgICAgICh0ZXN0LnJlcXVlc3Qub25zdWNjZXNzLnJlcXVl
c3Qub25zdWNjZXNzKToKKyAgICAgICAgKHRlc3QucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAg
ICAodGVzdCk6CisgICAgICAgIChzZXR1cE9iamVjdFN0b3JlQW5kQ3JlYXRlSW5kZXgpOgorICAg
ICAgICAoc2V0dXBDdXJzb3IpOgorICAgICAgICAoaXRlcmF0ZUN1cnNvcik6CisgICAgICAgIChj
aGVja0N1cnNvclJlc3VsdHMpOgorICAgICAgICAoc2V0dXBNdXRhdGluZ0N1cnNvcik6CisgICAg
ICAgIChpdGVyYXRlTXV0YXRpbmdDdXJzb3IpOgorICAgICAgICAoYWRkRmluYWxEYXRhLnJlcXVl
c3Qub25zdWNjZXNzKToKKyAgICAgICAgKGFkZEZpbmFsRGF0YSk6CisgICAgICAgIChjaGVja011
dGF0aW5nQ3Vyc29yUmVzdWx0cyk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9yZXNvdXJjZXMvY3Vyc29yLXVwZGF0ZS11cGRhdGVzLWluZGV4ZXMuanM6IENvcGllZCBmcm9t
IExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3Vyc29yLXVwZGF0ZS11cGRh
dGVzLWluZGV4ZXMuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3BlblN1Y2Nlc3Mp
OgorICAgICAgICAoc2V0VmVyc2lvbik6CisgICAgICAgIChzZXR1cE9iamVjdFN0b3JlQW5kQ3Jl
YXRlSW5kZXhBbmRBZGQpOgorICAgICAgICAob3BlbkN1cnNvcik6CisgICAgICAgICh1cGRhdGVD
dXJzb3IpOgorICAgICAgICAoZ2V0SW5kZXgxKToKKyAgICAgICAgKGNoZWNrSW5kZXgxQW5kR2V0
SW5kZXgyKToKKyAgICAgICAgKGNoZWNrSW5kZXgyKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jdXJzb3JzLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2N1cnNvcnMuaHRtbC4KKyAgICAgICAgKHRlc3Qp
OgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwMS5yZXF1ZXN0Lm9u
c3VjY2Vzcyk6CisgICAgICAgICh0ZXN0R3JvdXAxKToKKyAgICAgICAgKHRlc3RHcm91cDIucmVx
dWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwMik6CisgICAgICAgICh0ZXN0R3Jv
dXAzLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHRlc3RHcm91cDMpOgorICAgICAgICAo
dGVzdEdyb3VwNC5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgICh0ZXN0R3JvdXA0KToKKyAg
ICAgICAgKHRlc3RHcm91cDUucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3Vw
NSk6CisgICAgICAgICh0ZXN0R3JvdXA2LnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHRl
c3RHcm91cDYpOgorICAgICAgICAodGVzdEdyb3VwNy5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAg
ICAgICh0ZXN0R3JvdXA3KToKKyAgICAgICAgKHRlc3RHcm91cDgucmVxdWVzdC5vbnN1Y2Nlc3Mp
OgorICAgICAgICAodGVzdEdyb3VwOCk6CisgICAgICAgICh0ZXN0R3JvdXA5LnJlcXVlc3Qub25z
dWNjZXNzKToKKyAgICAgICAgKHRlc3RHcm91cDkpOgorICAgICAgICAodGVzdEdyb3VwMTAucmVx
dWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwMTApOgorICAgICAgICAodGVzdEdy
b3VwMTEucmVxdWVzdC5vbnN1Y2Nlc3MucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVz
dEdyb3VwMTEucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwMTEpOgorICAg
ICAgICAodGVzdEdyb3VwMTIpOgorICAgICAgICAodGVzdEdyb3VwMTJiKToKKyAgICAgICAgKHRl
c3RHcm91cDEzLnJlcXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAg
KHRlc3RHcm91cDEzLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHRlc3RHcm91cDEzKToK
KyAgICAgICAgKHRlc3RHcm91cDE0KToKKyAgICAgICAgKHRlc3RHcm91cDE0Yik6CisgICAgICAg
ICh0ZXN0R3JvdXAxNS5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgICh0ZXN0R3JvdXAxNSk6
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvZGVsZXRlLXJl
c3VsdC5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9kZWxldGUtcmVzdWx0Lmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNj
ZXNzKToKKyAgICAgICAgKGNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKGRlbGV0ZVJlY29y
ZDEpOgorICAgICAgICAoZGVsZXRlUmVjb3JkMik6CisgICAgICAgIChmaW5hbENoZWNrKToKKyAg
ICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9ldmVudC1zb3VyY2Uu
anM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvZXZl
bnQtc291cmNlLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToK
KyAgICAgICAgKGNsZWFuRGF0YWJhc2UpOgorICAgICAgICAoYXJlV2VEb25lWWV0KToKKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9nbG9iYWwtZGF0YS5qczog
Q29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9nbG9iYWwt
ZGF0YS5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAg
ICAgIChjbGVhbkRhdGFiYXNlKToKKyAgICAgICAgKG9wZW4yU3VjY2Vzcyk6CisgICAgICAgICog
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvaW5kZXhlcy5qczogQ29waWVkIGZy
b20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9pbmRleGVzLmh0bWwuCisg
ICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGNyZWF0ZUFu
ZFBvcHVsYXRlT2JqZWN0U3RvcmUucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAoY3JlYXRl
QW5kUG9wdWxhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChjcmVhdGVJbmRleGVzKToKKyAgICAg
ICAgKHNldFZlcnNpb25Db21wbGV0ZSk6CisgICAgICAgIChjaGVja0dldEtleSk6CisgICAgICAg
IChjaGVja0dldC5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgIChjaGVja0dldCk6CisgICAg
ICAgICh0ZXN0R3JvdXAzLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHRlc3RHcm91cDMp
OgorICAgICAgICAodGVzdEdyb3VwNC5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgICh0ZXN0
R3JvdXA0KToKKyAgICAgICAgKHRlc3RHcm91cDUucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAg
ICAodGVzdEdyb3VwNSk6CisgICAgICAgICh0ZXN0R3JvdXA2LnJlcXVlc3Qub25zdWNjZXNzKToK
KyAgICAgICAgKHRlc3RHcm91cDYpOgorICAgICAgICAodGVzdEdyb3VwNy5yZXF1ZXN0Lm9uc3Vj
Y2Vzcyk6CisgICAgICAgICh0ZXN0R3JvdXA3KToKKyAgICAgICAgKHRlc3RHcm91cDgucmVxdWVz
dC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwOCk6CisgICAgICAgICh0ZXN0R3JvdXA5
LnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHRlc3RHcm91cDkpOgorICAgICAgICAodGVz
dEdyb3VwMTAucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwMTApOgorICAg
ICAgICAodGVzdEdyb3VwMTEucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3Vw
MTEpOgorICAgICAgICAodGVzdEdyb3VwMTIucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAo
dGVzdEdyb3VwMTIpOgorICAgICAgICAodGVzdEdyb3VwMTMucmVxdWVzdC5vbnN1Y2Nlc3MpOgor
ICAgICAgICAodGVzdEdyb3VwMTMpOgorICAgICAgICAodGVzdEdyb3VwMTQucmVxdWVzdC5vbnN1
Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwMTQpOgorICAgICAgICAodGVzdEdyb3VwMTUucmVx
dWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwMTUpOgorICAgICAgICAodGVzdEdy
b3VwMTYucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwMTYpOgorICAgICAg
ICAodGVzdEdyb3VwMTcucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwMTcp
OgorICAgICAgICAodGVzdEdyb3VwMTgucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVz
dEdyb3VwMTgpOgorICAgICAgICAodGVzdEdyb3VwMTkucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAg
ICAgICAodGVzdEdyb3VwMTkpOgorICAgICAgICAodGVzdEdyb3VwMjAucmVxdWVzdC5vbnN1Y2Nl
c3MpOgorICAgICAgICAodGVzdEdyb3VwMjApOgorICAgICAgICAodGVzdEdyb3VwMjEucmVxdWVz
dC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwMjEpOgorICAgICAgICAodGVzdEdyb3Vw
MjIucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwMjIpOgorICAgICAgICAo
dGVzdEdyb3VwMjQucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwMjQpOgor
ICAgICAgICAodGVzdEdyb3VwMjUucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdy
b3VwMjUpOgorICAgICAgICAodGVzdEdyb3VwMjcucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAg
ICAodGVzdEdyb3VwMjcpOgorICAgICAgICAodGVzdEdyb3VwMjgucmVxdWVzdC5vbnN1Y2Nlc3Mp
OgorICAgICAgICAodGVzdEdyb3VwMjgpOgorICAgICAgICAodGVzdEdyb3VwMjkucmVxdWVzdC5v
bnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwMjkpOgorICAgICAgICAodGVzdEdyb3VwMzAu
cmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwMzApOgorICAgICAgICAqIHN0
b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2tleS1yZXF1aXJlbWVudHMtZGVsZXRl
LW51bGwta2V5LmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL2tleS1yZXF1aXJlbWVudHMtZGVsZXRlLW51bGwta2V5Lmh0bWwuCisgICAgICAgICh0
ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGNsZWFuRGF0YWJhc2VBbmRD
cmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9y
ZXNvdXJjZXMva2V5LXJlcXVpcmVtZW50cy1pbmxpbmUtYW5kLXBhc3NlZC5qczogQ29waWVkIGZy
b20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWlyZW1lbnRz
LWlubGluZS1hbmQtcGFzc2VkLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5T
dWNjZXNzKToKKyAgICAgICAgKGNsZWFuRGF0YWJhc2UpOgorICAgICAgICAqIHN0b3JhZ2UvaW5k
ZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2tleS1yZXF1aXJlbWVudHMtcHV0LW5vLWtleS5qczog
Q29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVx
dWlyZW1lbnRzLXB1dC1uby1rZXkuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3Bl
blN1Y2Nlc3MpOgorICAgICAgICAoY2xlYW5EYXRhYmFzZSk6CisgICAgICAgICogc3RvcmFnZS9p
bmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMva2V5LXJlcXVpcmVtZW50cy1wdXQtbnVsbC1rZXku
anM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEva2V5
LXJlcXVpcmVtZW50cy1wdXQtbnVsbC1rZXkuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAg
ICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAoY2xlYW5EYXRhYmFzZSk6CisgICAgICAgICogc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMva2V5LXJlcXVpcmVtZW50cy5qczogQ29w
aWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWly
ZW1lbnRzLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAg
ICAgICAgKGNsZWFuRGF0YWJhc2UpOgorICAgICAgICAocG9zdEFkZCk6CisgICAgICAgIChwb3N0
UHV0MSk6CisgICAgICAgIChwb3N0UHV0Mik6CisgICAgICAgIChwb3N0UHV0Myk6CisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvb2JqZWN0LWN1cnNvcnMuanM6
IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0
LWN1cnNvcnMuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgor
ICAgICAgICAoY2xlYW5EYXRhYmFzZSk6CisgICAgICAgIChwb3N0QWRkLnJlcXVlc3Qub25zdWNj
ZXNzKToKKyAgICAgICAgKHBvc3RBZGQpOgorICAgICAgICAoc2V0dXBBdXRvSW5jcmVtZW50KToK
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9vYmplY3QtaWRl
bnRpdHkuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEvb2JqZWN0LWlkZW50aXR5Lmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5T
dWNjZXNzKToKKyAgICAgICAgKGNyZWF0ZU9iamVjdFN0b3JlQW5kSW5kZXgpOgorICAgICAgICAo
dGVzdElkZW50aXR5U29tZU1vcmUpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEvcmVzb3VyY2VzL29iamVjdC1zdG9yZS1pbmxpbmUtYXV0b2luY3JlbWVudC1rZXktYWRkZWQt
b24tcHV0LmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL29iamVjdC1zdG9yZS1pbmxpbmUtYXV0b2luY3JlbWVudC1rZXktYWRkZWQtb24tcHV0Lmh0
bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKHNl
dHVwT2JqZWN0U3RvcmUpOgorICAgICAgICAoYWRkU3VjY2Vzcyk6CisgICAgICAgIChnZXRTdWNj
ZXNzKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9vYmpl
Y3Qtc3RvcmUtcmVtb3ZlLXZhbHVlcy5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9vYmplY3Qtc3RvcmUtcmVtb3ZlLXZhbHVlcy5odG1sLgorICAg
ICAgICAodGVzdCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChzZXRWZXJzaW9u
KToKKyAgICAgICAgKGNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKGdldFJlY29yZCk6Cisg
ICAgICAgIChkZWxldGVSZWNvcmQpOgorICAgICAgICAoZ2V0UmVjb3JkQWdhaW4pOgorICAgICAg
ICAoZmluYWxDaGVjayk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNv
dXJjZXMvb2JqZWN0c3RvcmVuYW1lcy5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9vYmplY3RzdG9yZW5hbWVzLmh0bWwuCisgICAgICAgICh0ZXN0
KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGNsZWFuRGF0YWJhc2UpOgorICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL29kZC1yZXN1bHQtb3Jk
ZXIuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEv
b2RkLXJlc3VsdC1vcmRlci5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChvcGVuU3Vj
Y2Vzcyk6CisgICAgICAgIChzZXR1cE9iamVjdFN0b3JlKToKKyAgICAgICAgKGFkZFJlY29yZCk6
CisgICAgICAgIChhZGRTdWNjZXNzKToKKyAgICAgICAgKGdldFN1Y2Nlc3MpOgorICAgICAgICAo
ZGVsZXRlUmVjb3JkKToKKyAgICAgICAgKGRlbGV0ZVN1Y2Nlc3MpOgorICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL29wZW4tZGF0YWJhc2UtbnVsbC1uYW1lLmpz
OiBBZGRlZC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAg
ICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL3B1dC1nZXQtdmFsdWVzLmpz
OiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3B1dC1n
ZXQtdmFsdWVzLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToK
KyAgICAgICAgKGNsZWFuRGF0YWJhc2UpOgorICAgICAgICAocG9zdEFkZCk6CisgICAgICAgIChw
b3N0R2V0KToKKyAgICAgICAgKHBvc3RBZGRJbnQpOgorICAgICAgICAocG9zdEdldEludCk6Cisg
ICAgICAgIChwb3N0QWRkQXV0b0luY3JlbWVudCk6CisgICAgICAgIChwb3N0R2V0QXV0b0luY3Jl
bWVudCk6CisgICAgICAgIChwb3N0QWRkSW50QXV0b0luY3JlbWVudCk6CisgICAgICAgIChwb3N0
R2V0SW50QXV0b0luY3JlbWVudCk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9yZXNvdXJjZXMvcmVhZG9ubHktdHJhbnNhY3Rpb25zLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3JlYWRvbmx5LXRyYW5zYWN0aW9ucy5odG1s
LgorICAgICAgICAodGVzdCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChjbGVh
bkRhdGFiYXNlKToKKyAgICAgICAgKHNldFZlcnNpb25Db21wbGV0ZSk6CisgICAgICAgICogc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvcmVhZHdyaXRlLXRyYW5zYWN0aW9ucy5q
czogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZWFk
d3JpdGUtdHJhbnNhY3Rpb25zLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5T
dWNjZXNzKToKKyAgICAgICAgKGNsZWFuRGF0YWJhc2UpOgorICAgICAgICAoc2V0VmVyc2lvbkNv
bXBsZXRlKToKKyAgICAgICAgKHBvc3RBZGQpOgorICAgICAgICAocG9zdEFkZDIpOgorICAgICAg
ICAocG9zdFB1dCk6CisgICAgICAgIChwb3N0UHV0Mik6CisgICAgICAgIChwb3N0UHV0Myk6Cisg
ICAgICAgIChwb3N0UHV0NCk6CisgICAgICAgIChwb3N0RGVsZXRlKToKKyAgICAgICAgKHBvc3RE
ZWxldGUyKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9y
ZWFkeVN0YXRlLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL3JlYWR5U3RhdGUuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3BlblN1
Y2Nlc3MpOgorICAgICAgICAoc2V0dXBPYmplY3RTdG9yZSk6CisgICAgICAgIChnZXRSZWNvcmQp
OgorICAgICAgICAoZmluYWxDaGVjayk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9yZXNvdXJjZXMvcmVtb3ZlLWluZGV4LmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3JlbW92ZS1pbmRleC5odG1sLgorICAgICAgICAodGVz
dCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChjcmVhdGVBbmREZWxldGVJbmRl
eCk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvcmVtb3Zl
LW9iamVjdHN0b3JlLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL3JlbW92ZS1vYmplY3RzdG9yZS5odG1sLgorICAgICAgICAodGVzdCk6CisgICAg
ICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3Jl
LnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3Rv
cmUpOgorICAgICAgICAoY2hlY2tPYmplY3RTdG9yZSk6CisgICAgICAgIChwb3N0U2V0VmVyc2lv
bjIucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAocG9zdFNldFZlcnNpb24yKToKKyAgICAg
ICAgKGRlbGV0ZVNlY29uZE9iamVjdFN0b3JlKToKKyAgICAgICAgKHNldFZlcnNpb24zKToKKyAg
ICAgICAgKHBvc3RTZXRWZXJzaW9uMyk6CisgICAgICAgIChkZWxldGVUaGlyZE9iamVjdFN0b3Jl
KToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy92ZXJzaW9u
Y2hhbmdlLWFib3J0LmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL3ZlcnNpb25jaGFuZ2UtYWJvcnQuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAg
ICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAoY2xlYW5EYXRhYmFzZSk6CisgICAgICAgIChw
b3N0QWJvcnQpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2Vz
L3ZlcnNpb25jaGFuZ2UuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvdmVyc2lvbmNoYW5nZS5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAg
IChvcGVuU3VjY2Vzcy5kYjEub252ZXJzaW9uY2hhbmdlKToKKyAgICAgICAgKG9wZW5TdWNjZXNz
KToKKyAgICAgICAgKG9wZW5TdWNjZXNzMi5kYjIub252ZXJzaW9uY2hhbmdlKToKKyAgICAgICAg
KG9wZW5TdWNjZXNzMi5yZXF1ZXN0Lm9uYmxvY2tlZCk6CisgICAgICAgIChvcGVuU3VjY2VzczIp
OgorICAgICAgICAocG9zdFNldFZlcnNpb24pOgorICAgICAgICAob3BlblN1Y2Nlc3MzLnJlcXVl
c3Qub25ibG9ja2VkKToKKyAgICAgICAgKG9wZW5TdWNjZXNzMyk6CisgICAgICAgIChwb3N0U2V0
VmVyc2lvbjIpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvdmVyc2lvbmNo
YW5nZS1hYm9ydC5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvdmVy
c2lvbmNoYW5nZS5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL211dGF0aW5nLWN1
cnNvci5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdFN0b3JlLXJlcXVp
cmVkLWFyZ3VtZW50cy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0
b3JlLWF1dG9pbmNyZW1lbnQuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9vYmpl
Y3RzdG9yZS1jbGVhci5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0
b3JlLWNvdW50Lmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUt
Y3Vyc29yLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtcmVt
b3Zlb2JqZWN0c3RvcmUuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9vZGQtc3Ry
aW5ncy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL29wZW4tY2xvc2UtdmVyc2lv
bi5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL29wZW4tY3Vyc29yLmh0bWw6Cisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvb3Blbi1kdXJpbmctdHJhbnNhY3Rpb24uaHRtbDoK
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9wcmVmZXRjaC1idWdmaXgtMTA4MDcxLmh0bWw6
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcXVldWVkLWNvbW1hbmRzLmh0bWw6CisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVhZG9ubHktcHJvcGVydGllcy5odG1sOgorICAgICAg
ICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3JlYWRvbmx5Lmh0bWw6CisgICAgICAgICogc3RvcmFnZS9p
bmRleGVkZGIvcmVxdWVzdC1ldmVudC1wcm9wYWdhdGlvbi5odG1sOgorICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jb25zdGFudHMuanM6IENvcGllZCBmcm9tIExheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2NvbnN0YW50cy5odG1sLgorICAgICAgICAodGVzdCk6Cisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2NyZWF0ZS1hbmQtcmVtb3ZlLW9i
amVjdC1zdG9yZS5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
Y3JlYXRlLWFuZC1yZW1vdmUtb2JqZWN0LXN0b3JlLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAg
ICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKHRlc3RDcmVhdGVBbmRSZW1vdmUpOgorICAg
ICAgICAoY2xlYW5EYXRhYmFzZSk6CisgICAgICAgIChzZXRWZXJzaW9uQ29tcGxldGUpOgorICAg
ICAgICAodHJ5T25jZU1vcmUpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9jcmVhdGUtb2JqZWN0LXN0b3JlLW9wdGlvbnMuanM6IENvcGllZCBmcm9tIExheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZS1vYmplY3Qtc3RvcmUtb3B0aW9ucy5odG1sLgorICAg
ICAgICAodGVzdCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChjbGVhbkRhdGFi
YXNlKToKKyAgICAgICAgKHNldFZlcnNpb25Db21wbGV0ZSk6CisgICAgICAgIChwdXRCKToKKyAg
ICAgICAgKGdldEEpOgorICAgICAgICAoZ2V0Qik6CisgICAgICAgIChjaGVja0IpOgorICAgICAg
ICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jcmVhdGVPYmplY3RTdG9yZS1uYW1lLWFy
Z3VtZW50LXJlcXVpcmVkLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9jcmVhdGVPYmplY3RTdG9yZS1uYW1lLWFyZ3VtZW50LXJlcXVpcmVkLmh0bWwuCisgICAg
ICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGNyZWF0ZUFuZFBv
cHVsYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9jcmVhdGVPYmplY3RTdG9yZS1udWxsLW5hbWUuanM6IENvcGllZCBmcm9tIExheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZU9iamVjdFN0b3JlLW51bGwtbmFtZS5odG1sLgorICAg
ICAgICAodGVzdCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChjcmVhdGVBbmRQ
b3B1bGF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvY3Vyc29yLWNvbnRpbnVlLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9jdXJzb3ItY29udGludWUuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAo
b3BlbkRhdGFiYXNlKToKKyAgICAgICAgKHNldFZlcnNpb24pOgorICAgICAgICAoZGVsZXRlRXhp
c3RpbmcpOgorICAgICAgICAoYWRkRGF0YSk6CisgICAgICAgIChhc2NlbmRpbmdUZXN0KToKKyAg
ICAgICAgKGFzY2VuZGluZ0NhbGxiYWNrKToKKyAgICAgICAgKGRlc2NlbmRpbmdUZXN0KToKKyAg
ICAgICAgKGRlc2NlbmRpbmdDYWxsYmFjayk6CisgICAgICAgIChhc2NlbmRpbmdFcnJvclRlc3RM
ZXNzVGhhbi5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgIChhc2NlbmRpbmdFcnJvclRlc3RM
ZXNzVGhhbik6CisgICAgICAgIChhc2NlbmRpbmdFcnJvclRlc3RFcXVhbC5yZXF1ZXN0Lm9uc3Vj
Y2Vzcyk6CisgICAgICAgIChhc2NlbmRpbmdFcnJvclRlc3RFcXVhbCk6CisgICAgICAgIChkZXNj
ZW5kaW5nRXJyb3JUZXN0R3JlYXRlclRoYW4ucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAo
ZGVzY2VuZGluZ0Vycm9yVGVzdEdyZWF0ZXJUaGFuKToKKyAgICAgICAgKGRlc2NlbmRpbmdFcnJv
clRlc3RFcXVhbC5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgIChkZXNjZW5kaW5nRXJyb3JU
ZXN0RXF1YWwpOgorICAgICAgICAob25UcmFuc2FjdGlvbkNvbXBsZXRlKToKKyAgICAgICAgKiBz
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWRlbGV0ZS5qczogQ29waWVkIGZyb20g
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWRlbGV0ZS5odG1sLgorICAgICAg
ICAodGVzdCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChzZXRWZXJzaW9uU3Vj
Y2Vzcyk6CisgICAgICAgIChvcGVuQ3Vyc29yKToKKyAgICAgICAgKGN1cnNvclN1Y2Nlc3MpOgor
ICAgICAgICAoY3Vyc29yRW1wdHkpOgorICAgICAgICAoYWRkT2JqZWN0KToKKyAgICAgICAgKG9w
ZW5DdXJzb3IyKToKKyAgICAgICAgKGRlbGV0ZU9iamVjdCk6CisgICAgICAgICh2ZXJpZnlPYmpl
Y3REZWxldGVkKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29y
LWluY29uc2lzdGVuY3kuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2N1cnNvci1pbmNvbnNpc3RlbmN5Lmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAg
KG9wZW5TdWNjZXNzKToKKyAgICAgICAgKHNldFZlcnNpb25TdWNjZXNzKToKKyAgICAgICAgKG9w
ZW5CYXNpY0N1cnNvcik6CisgICAgICAgIChjaGVja0N1cnNvcik6CisgICAgICAgICh0cmFuc2Fj
dGlvbkNvbXBsZXRlKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vy
c29yLWluZGV4LWRlbGV0ZS5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvY3Vyc29yLWluZGV4LWRlbGV0ZS5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAg
IChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChzZXRWZXJzaW9uU3VjY2Vzcyk6CisgICAgICAgIChv
cGVuQ3Vyc29yKToKKyAgICAgICAgKGN1cnNvclN1Y2Nlc3MpOgorICAgICAgICAoY3Vyc29yRW1w
dHkpOgorICAgICAgICAoYWRkT2JqZWN0KToKKyAgICAgICAgKG9wZW5DdXJzb3IyKToKKyAgICAg
ICAgKGRlbGV0ZU9iamVjdCk6CisgICAgICAgICh2ZXJpZnlPYmplY3REZWxldGVkKToKKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWtleS1vcmRlci5qczogQ29w
aWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWtleS1vcmRlci5o
dG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChwcmVwYXJlRGF0YWJhc2Uub3BlbnJlcS5v
bnN1Y2Nlc3MudmVycmVxLm9uc3VjY2Vzcyk6CisgICAgICAgIChwcmVwYXJlRGF0YWJhc2Uub3Bl
bnJlcS5vbnN1Y2Nlc3MpOgorICAgICAgICAocHJlcGFyZURhdGFiYXNlKToKKyAgICAgICAgKGNv
bXBhcmUpOgorICAgICAgICAoY2hlY2tTdG9yZS5jdXJyZXEub25zdWNjZXNzLmdldHJlcS5vbnN1
Y2Nlc3MpOgorICAgICAgICAoY2hlY2tTdG9yZS5jdXJyZXEub25zdWNjZXNzKToKKyAgICAgICAg
KGNoZWNrU3RvcmUpOgorICAgICAgICAoZmluaXNoVXApOgorICAgICAgICAodGVzdEtleUNvbXBh
cmUpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItcHJpbWFy
eS1rZXktb3JkZXIuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2N1cnNvci1wcmltYXJ5LWtleS1vcmRlci5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAg
IChwcmVwYXJlRGF0YWJhc2Uub3BlblJlcXVlc3Qub25zdWNjZXNzLnZlcnNpb25DaGFuZ2VSZXF1
ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgIChwcmVwYXJlRGF0YWJhc2Uub3BlblJlcXVlc3Qub25z
dWNjZXNzKToKKyAgICAgICAgKHByZXBhcmVEYXRhYmFzZSk6CisgICAgICAgIChwb3B1bGF0ZVN0
b3JlKToKKyAgICAgICAgKGNoZWNrU3RvcmUuY3Vyc29yUmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAg
ICAgICAoY2hlY2tTdG9yZSk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L2N1cnNvci1yZXZlcnNlLWJ1Zy5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvY3Vyc29yLXJldmVyc2UtYnVnLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAg
ICAgKHByZXBhcmVEYXRhYmFzZS5vcGVucmVxLm9uc3VjY2Vzcy52ZXJyZXEub25zdWNjZXNzKToK
KyAgICAgICAgKHByZXBhcmVEYXRhYmFzZS5vcGVucmVxLm9uc3VjY2Vzcyk6CisgICAgICAgIChw
cmVwYXJlRGF0YWJhc2UpOgorICAgICAgICAocG9wdWxhdGVTdG9yZSk6CisgICAgICAgICh0ZXN0
Q3Vyc29yLnRlc3RGdW5jdGlvbik6CisgICAgICAgICh0ZXN0Q3Vyc29yKToKKyAgICAgICAgKiBz
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXNraXAtZGVsZXRlZC5qczogQ29waWVk
IGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXNraXAtZGVsZXRlZC5o
dG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChz
ZXRWZXJzaW9uU3VjY2Vzcyk6CisgICAgICAgICh2YXIuc2lsZW50RXJyb3JIYW5kbGVyKToKKyAg
ICAgICAgKHJlc2V0T2JqZWN0U3RvcmUuY2FsbGJhY2spOgorICAgICAgICAocmVzZXRPYmplY3RT
dG9yZSk6CisgICAgICAgIChjb250YWlucyk6CisgICAgICAgICh0ZXN0Q3Vyc29yLnJlcXVlc3Qu
b25zdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHRlc3RDdXJzb3IucmVxdWVz
dC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEN1cnNvcik6CisgICAgICAgIChiYXNpY0N1cnNv
clRlc3QpOgorICAgICAgICAocmV2ZXJzZUN1cnNvclRlc3QpOgorICAgICAgICAoaW5kZXhDdXJz
b3JUZXN0KToKKyAgICAgICAgKHRyYW5zYWN0aW9uQ29tcGxldGUpOgorICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItdXBkYXRlLXZhbHVlLWFyZ3VtZW50LXJlcXVp
cmVkLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3It
dXBkYXRlLXZhbHVlLWFyZ3VtZW50LXJlcXVpcmVkLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAg
ICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKHRlc3RHcm91cDEucmVxdWVzdC5vbnN1Y2Nl
c3MpOgorICAgICAgICAodGVzdEdyb3VwMSk6CisgICAgICAgICh0ZXN0R3JvdXAyLnJlcXVlc3Qu
b25zdWNjZXNzKToKKyAgICAgICAgKHRlc3RHcm91cDIpOgorICAgICAgICAodGVzdEdyb3VwMy5y
ZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgICh0ZXN0R3JvdXAzKToKKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXVwZGF0ZS5qczogQ29waWVkIGZyb20gTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXVwZGF0ZS5odG1sLgorICAgICAgICAo
dGVzdCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChzZXRWZXJzaW9uU3VjY2Vz
cyk6CisgICAgICAgIChvcGVuQmFzaWNDdXJzb3IpOgorICAgICAgICAoYmFzaWNVcGRhdGVDdXJz
b3IucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAoYmFzaWNVcGRhdGVDdXJzb3IpOgorICAg
ICAgICAoYmFzaWNDaGVja0N1cnNvcik6CisgICAgICAgIChhdXRvSW5jcmVtZW50VXBkYXRlQ3Vy
c29yLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKGF1dG9JbmNyZW1lbnRVcGRhdGVDdXJz
b3IpOgorICAgICAgICAoYXV0b0luY3JlbWVudENoZWNrQ3Vyc29yKToKKyAgICAgICAgKGtleVBh
dGhVcGRhdGVDdXJzb3IucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAoa2V5UGF0aFVwZGF0
ZUN1cnNvcik6CisgICAgICAgIChrZXlQYXRoQ2hlY2tDdXJzb3IpOgorICAgICAgICAoa2V5Q3Vy
c29yKToKKyAgICAgICAgKHRyYW5zYWN0aW9uQ29tcGxldGUpOgorICAgICAgICAqIHN0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9kYXRhLWNvcnJ1cHRpb24uanM6IENvcGllZCBmcm9tIExheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGEtY29ycnVwdGlvbi5odG1sLgorICAgICAgICAo
dGVzdCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChzZXRWZXJzaW9uU3VjY2Vz
cyk6CisgICAgICAgIChhZGREYXRhKToKKyAgICAgICAgKGdldERhdGEpOgorICAgICAgICAoZG9D
aGVjayk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGFiYXNlLWJh
c2ljcy5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJh
c2UtYmFzaWNzLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToK
KyAgICAgICAgKHNldFZlcnNpb25TdWNjZXNzKToKKyAgICAgICAgKHNldFZlcnNpb25BZ2Fpbik6
CisgICAgICAgIChjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChjaGVja09iamVjdFN0b3Jl
KToKKyAgICAgICAgKGNvbW1pdEFuZENvbnRpbnVlKToKKyAgICAgICAgKHRlc3RTZXRWZXJzaW9u
QWJvcnQpOgorICAgICAgICAoY3JlYXRlQW5vdGhlck9iamVjdFN0b3JlKToKKyAgICAgICAgKGNo
ZWNrTWV0YWRhdGEpOgorICAgICAgICAodGVzdENsb3NlKToKKyAgICAgICAgKiBzdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvZGF0YWJhc2UtbmFtZS11bmRlZmluZWQuanM6IEFkZGVkLgorICAg
ICAgICAodGVzdCk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGFi
YXNlLW9kZC1uYW1lcy5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvZGF0YWJhc2Utb2RkLW5hbWVzLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9w
ZW5OZXh0RGF0YWJhc2UpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9k
YXRhYmFzZS1xdW90YS5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvZGF0YWJhc2UtcXVvdGEuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3BlblN1
Y2Nlc3MpOgorICAgICAgICAoc2V0VmVyc2lvblN1Y2Nlc3MpOgorICAgICAgICAoY2hlY2tPYmpl
Y3RTdG9yZSk6CisgICAgICAgIChjaGVja1F1b3RhRW5mb3JjaW5nKToKKyAgICAgICAgKGFkZERh
dGEpOgorICAgICAgICAobG9nRXJyb3IpOgorICAgICAgICAodGVzdENvbXBsZXRlKToKKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGVsZXRlLWNsb3NlZC1kYXRhYmFzZS1v
YmplY3QuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0
ZS1jbG9zZWQtZGF0YWJhc2Utb2JqZWN0Lmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAg
KG9wZW5EQkNvbm5lY3Rpb24pOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAob3Bl
blN1Y2Nlc3MyKToKKyAgICAgICAgKHNldFZlcnNpb24pOgorICAgICAgICAqIHN0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9kZWxldGUtcmFuZ2UuanM6IENvcGllZCBmcm9tIExheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZS1yYW5nZS5odG1sLgorICAgICAgICAodGVzdC5yZXF1
ZXN0Lm9uc3VjY2Vzcy5yZXF1ZXN0Lm9uc3VjY2Vzcy5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAg
ICAgICh0ZXN0LnJlcXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAg
KHRlc3QucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdCk6CisgICAgICAgIChjaGVj
a0tleXMucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAoY2hlY2tLZXlzKToKKyAgICAgICAg
KHJ1blRlc3RzLm5leHRUZXN0KToKKyAgICAgICAgKHJ1blRlc3RzKToKKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGVsZXRlSW5kZXguanM6IENvcGllZCBmcm9tIExheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZUluZGV4Lmh0bWwuCisgICAgICAgICh0ZXN0
KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKHR3aWRkbGVJbmRleGVzKToKKyAg
ICAgICAgKHBvc3RUd2lkZGxpbmcpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9kZWxldGVPYmplY3RTdG9yZS1uYW1lLWFyZ3VtZW50LXJlcXVpcmVkLmpzOiBDb3BpZWQg
ZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVPYmplY3RTdG9yZS1uYW1l
LWFyZ3VtZW50LXJlcXVpcmVkLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5T
dWNjZXNzKToKKyAgICAgICAgKGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUpOgorICAgICAg
ICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kZWxldGVPYmplY3RTdG9yZS1udWxsLW5h
bWUuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZU9i
amVjdFN0b3JlLW51bGwtbmFtZS5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChvcGVu
U3VjY2Vzcyk6CisgICAgICAgIChjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKToKKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZHVwbGljYXRlcy5qczogQ29waWVkIGZy
b20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZHVwbGljYXRlcy5odG1sLgorICAgICAg
ICAodGVzdCk6CisgICAgICAgIChzZXRWZXJzaW9uKToKKyAgICAgICAgKGRlbGV0ZUV4aXN0aW5n
KToKKyAgICAgICAgKGFkZERhdGEpOgorICAgICAgICAoYWRkTW9yZSk6CisgICAgICAgIChnZXRE
YXRhKToKKyAgICAgICAgKGdldE9iamVjdERhdGEpOgorICAgICAgICAoZ2V0RGF0YUZhaWwpOgor
ICAgICAgICAoZ2V0T2JqZWN0RGF0YUZhaWwpOgorICAgICAgICAob3BlbktleUN1cnNvcik6Cisg
ICAgICAgIChjdXJzb3IxQ29udGludWUpOgorICAgICAgICAoY3Vyc29yMUNvbnRpbnVlMik6Cisg
ICAgICAgIChvcGVuT2JqZWN0Q3Vyc29yKToKKyAgICAgICAgKGN1cnNvcjJDb250aW51ZSk6Cisg
ICAgICAgIChjdXJzb3IyQ29udGludWUyKToKKyAgICAgICAgKGxhc3QpOgorICAgICAgICAqIHN0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9lcnJvci1jYXVzZXMtYWJvcnQtYnktZGVmYXVsdC5q
czogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZXJyb3ItY2F1c2Vz
LWFib3J0LWJ5LWRlZmF1bHQuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAoc2V0VmVy
c2lvbik6CisgICAgICAgIChkZWxldGVFeGlzdGluZyk6CisgICAgICAgIChhZGREYXRhKToKKyAg
ICAgICAgKGFkZE1vcmUpOgorICAgICAgICAocHJldmVudFRoZURlZmF1bHQpOgorICAgICAgICAo
dHJhbnNhY3Rpb25Db21wbGV0ZWQpOgorICAgICAgICAoYWxsb3dEZWZhdWx0KToKKyAgICAgICAg
KHRyYW5zYWN0aW9uQWJvcnRlZDEpOgorICAgICAgICAodHJhbnNhY3Rpb25BYm9ydGVkMik6Cisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2V4Y2VwdGlvbi1pbi1ldmVudC1h
Ym9ydHMuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2V4Y2Vw
dGlvbi1pbi1ldmVudC1hYm9ydHMuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAoc2V0
VmVyc2lvbik6CisgICAgICAgIChkZWxldGVFeGlzdGluZyk6CisgICAgICAgIChzdGFydFRlc3Qp
OgorICAgICAgICAoY2F1c2VFeGNlcHRpb24pOgorICAgICAgICAodHJhbnNhY3Rpb25BYm9ydGVk
MSk6CisgICAgICAgICh0cmFuc2FjdGlvbkFib3J0ZWQyKToKKyAgICAgICAgKHRocm93QW5kQ2F0
Y2gpOgorICAgICAgICAodHJhbnNhY3Rpb25Db21wbGV0ZWQxLnJlcXVlc3Qub25zdWNjZXNzKToK
KyAgICAgICAgKHRyYW5zYWN0aW9uQ29tcGxldGVkMSk6CisgICAgICAgICh0cmFuc2FjdGlvbkNv
bXBsZXRlZDIpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9mYWN0b3J5
LWJhc2ljcy5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZmFj
dG9yeS1iYXNpY3MuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAoZ2V0RGF0YWJhc2VO
YW1lc1N1Y2Nlc3MxKToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGdldERhdGFi
YXNlTmFtZXNTdWNjZXNzMik6CisgICAgICAgIChkZWxldGVEYXRhYmFzZVN1Y2Nlc3MpOgorICAg
ICAgICAoZ2V0RGF0YWJhc2VOYW1lc1N1Y2Nlc3MzKToKKyAgICAgICAgKGRlbGV0ZURhdGFiYXNl
U3VjY2VzczIpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9mYWN0b3J5
LWNtcC5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZmFjdG9y
eS1jbXAuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAodGVzdFZhbGlkS2V5cyk6Cisg
ICAgICAgICh0ZXN0SW52YWxpZEtleXMpOgorICAgICAgICAodGVzdElkZW50aWNhbEtleXMpOgor
ICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9mYWN0b3J5LWRlbGV0ZWRhdGFi
YXNlLWludGVyYWN0aW9ucy5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvZmFjdG9yeS1kZWxldGVkYXRhYmFzZS1pbnRlcmFjdGlvbnMuaHRtbC4KKyAgICAgICAg
KENvbm5lY3Rpb24udGhpcy5vcGVuLnJlcS5vbnN1Y2Nlc3MudGhhdC5oYW5kbGUub252ZXJzaW9u
Y2hhbmdlKToKKyAgICAgICAgKENvbm5lY3Rpb24udGhpcy5vcGVuLnJlcS5vbnN1Y2Nlc3MpOgor
ICAgICAgICAoQ29ubmVjdGlvbi50aGlzLm9wZW4pOgorICAgICAgICAoQ29ubmVjdGlvbi50aGlz
LmNsb3NlKToKKyAgICAgICAgKENvbm5lY3Rpb24udGhpcy5zZXRWZXJzaW9uLnJlcS5vbmFib3J0
KToKKyAgICAgICAgKENvbm5lY3Rpb24udGhpcy5zZXRWZXJzaW9uLnJlcS5vbmJsb2NrZWQpOgor
ICAgICAgICAoQ29ubmVjdGlvbi50aGlzLnNldFZlcnNpb24ucmVxLm9uc3VjY2Vzcy5kb19hc3lu
Y19wdXRzLnJlcS5vbnN1Y2Nlc3MpOgorICAgICAgICAoQ29ubmVjdGlvbi50aGlzLnNldFZlcnNp
b24ucmVxLm9uc3VjY2Vzcy5kb19hc3luY19wdXRzKToKKyAgICAgICAgKENvbm5lY3Rpb24udGhp
cy5zZXRWZXJzaW9uLnJlcS5vbnN1Y2Nlc3MpOgorICAgICAgICAoQ29ubmVjdGlvbi50aGlzLnNl
dFZlcnNpb24ucmVxLm9uZXJyb3IpOgorICAgICAgICAoQ29ubmVjdGlvbi50aGlzLnNldFZlcnNp
b24pOgorICAgICAgICAoQ29ubmVjdGlvbik6CisgICAgICAgIChkZWxldGVEYXRhYmFzZS5yZXEu
b25zdWNjZXNzKToKKyAgICAgICAgKGRlbGV0ZURhdGFiYXNlLnJlcS5vbmVycm9yKToKKyAgICAg
ICAgKGRlbGV0ZURhdGFiYXNlLnJlcS5vbmJsb2NrZWQpOgorICAgICAgICAoZGVsZXRlRGF0YWJh
c2UpOgorICAgICAgICAocnVuU3RlcHMpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICh0ZXN0
MS5ydW5TdGVwcy4pOgorICAgICAgICAodGVzdDEpOgorICAgICAgICAodGVzdDIucnVuU3RlcHMu
KToKKyAgICAgICAgKHRlc3QyKToKKyAgICAgICAgKHRlc3QzLnJ1blN0ZXBzLik6CisgICAgICAg
ICh0ZXN0Myk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ZhY3Rvcnkt
ZGVsZXRlZGF0YWJhc2UuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2ZhY3RvcnktZGVsZXRlZGF0YWJhc2UuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAg
ICAoc3RhcnRTZXRWZXJzaW9uKToKKyAgICAgICAgKGRlbGV0ZUV4aXN0aW5nKToKKyAgICAgICAg
KGdldFZhbHVlKToKKyAgICAgICAgKGFkZEluZGV4KToKKyAgICAgICAgKGRlbGV0ZURhdGFiYXNl
LmRiLm9udmVyc2lvbmNoYW5nZSk6CisgICAgICAgIChkZWxldGVEYXRhYmFzZSk6CisgICAgICAg
IChyZW9wZW5EYXRhYmFzZSk6CisgICAgICAgIChzdGFydFNldFZlcnNpb25BZ2Fpbik6CisgICAg
ICAgICh2ZXJpZnlOb3RGb3VuZCk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL2luZGV4LWNvdW50LmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9pbmRleC1jb3VudC5odG1sLgorICAgICAgICAodGVzdC5yZXF1ZXN0Lm9uc3VjY2Vzcyk6
CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKHByZXBhcmVEYXRhYmFzZSk6CisgICAgICAgICh2
ZXJpZnlDb3VudC5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgICh2ZXJpZnlDb3VudCk6Cisg
ICAgICAgICh2ZXJpZnlDb3VudFdpdGhSYW5nZS5uZXh0VGVzdC5yZXF1ZXN0Lm9uc3VjY2Vzcyk6
CisgICAgICAgICh2ZXJpZnlDb3VudFdpdGhSYW5nZS5uZXh0VGVzdCk6CisgICAgICAgICh2ZXJp
ZnlDb3VudFdpdGhSYW5nZSk6CisgICAgICAgICh2ZXJpZnlDb3VudFdpdGhLZXkubmV4dFRlc3Qu
cmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodmVyaWZ5Q291bnRXaXRoS2V5Lm5leHRUZXN0
KToKKyAgICAgICAgKHZlcmlmeUNvdW50V2l0aEtleSk6CisgICAgICAgICogc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL2luZGV4LWN1cnNvci5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtY3Vyc29yLmh0bWwuCisgICAgICAgIChvcGVuRGF0YWJh
c2UpOgorICAgICAgICAoc2V0VmVyc2lvbik6CisgICAgICAgIChkZWxldGVFeGlzdGluZyk6Cisg
ICAgICAgIChhZGREYXRhKToKKyAgICAgICAgKHNjaGVkdWxlVGVzdHMpOgorICAgICAgICAocnVu
TmV4dFRlc3QpOgorICAgICAgICAodGVzdFdpdGhpbkJvdW5kcyk6CisgICAgICAgIChjdXJzb3JJ
dGVyYXRpb24pOgorICAgICAgICAodGVzdE51bGxLZXlSYW5nZSk6CisgICAgICAgICogc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4LWdldC1rZXktYXJndW1lbnQtcmVxdWlyZWQuanM6
IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWdldC1rZXkt
YXJndW1lbnQtcmVxdWlyZWQuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3BlblN1
Y2Nlc3MpOgorICAgICAgICAoY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSk6CisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4LW11bHRpZW50cnkuanM6IENvcGll
ZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LW11bHRpZW50cnkuaHRt
bC4KKyAgICAgICAgKHRlc3QucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdCk6Cisg
ICAgICAgIChwcmVwYXJlRGF0YWJhc2UpOgorICAgICAgICAoYWRkRGF0YS50cmFuc2FjdGlvbi5v
bmNvbXBsZXRlKToKKyAgICAgICAgKGFkZERhdGEpOgorICAgICAgICAodmVyaWZ5SW5kZXhlcy5y
ZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgICh2ZXJpZnlJbmRleGVzKToKKyAgICAgICAgKHZl
cmlmeVVuaXF1ZUNvbnN0cmFpbnQudHJhbnNhY3Rpb24ub25hYm9ydCk6CisgICAgICAgICh2ZXJp
ZnlVbmlxdWVDb25zdHJhaW50LnJlcXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzLnJl
cXVlc3Qub25lcnJvcik6CisgICAgICAgICh2ZXJpZnlVbmlxdWVDb25zdHJhaW50LnJlcXVlc3Qu
b25zdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHZlcmlmeVVuaXF1ZUNvbnN0
cmFpbnQucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodmVyaWZ5VW5pcXVlQ29uc3RyYWlu
dCk6CisgICAgICAgIChjcmVhdGVJbmRleE9uU3RvcmVXaXRoRGF0YS5yZXF1ZXN0Lm9uc3VjY2Vz
cy50cmFucy5vbmNvbXBsZXRlKToKKyAgICAgICAgKGNyZWF0ZUluZGV4T25TdG9yZVdpdGhEYXRh
LnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKGNyZWF0ZUluZGV4T25TdG9yZVdpdGhEYXRh
KToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW5kZXgtcG9wdWxhdGlv
bi5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtcG9w
dWxhdGlvbi5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChkZWxldGVTdWNjZXNzKToK
KyAgICAgICAgKGRvU2V0VmVyc2lvbjEpOgorICAgICAgICAoc2V0VmVyc2lvbjEucmVxdWVzdC5v
bnN1Y2Nlc3MpOgorICAgICAgICAoc2V0VmVyc2lvbjEpOgorICAgICAgICAoZG9TZXRWZXJzaW9u
Mik6CisgICAgICAgIChzZXRWZXJzaW9uMik6CisgICAgICAgIChzZXRWZXJzaW9uMkFib3J0KToK
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW5kZXgtdW5pcXVlLmpzOiBD
b3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC11bmlxdWUuaHRt
bC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAoc2V0VmVyc2lvbik6CisgICAgICAgIChkZWxl
dGVFeGlzdGluZyk6CisgICAgICAgIChzZXRWZXJzaW9uQ29tcGxldGVkKToKKyAgICAgICAgKGFk
ZE1vcmVEYXRhKToKKyAgICAgICAgKGFkZE1vcmVEYXRhRmFpbGVkKToKKyAgICAgICAgKGNoYW5n
ZURhdGFTdWNjZXNzKToKKyAgICAgICAgKGN1cnNvclN1Y2Nlc3MpOgorICAgICAgICAoa2V5Q3Vy
c29yU3VjY2Vzcyk6CisgICAgICAgIChhZGRNb3JlRGF0YVN1Y2Nlcyk6CisgICAgICAgIChkZWxl
dGVTdWNjZXNzKToKKyAgICAgICAgKGZpbmFsQWRkU3VjY2Vzcyk6CisgICAgICAgICogc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ludmFsaWQta2V5cy5qczogQ29waWVkIGZyb20gTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW52YWxpZC1rZXlzLmh0bWwuCisgICAgICAgICh0ZXN0
KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKHRlc3RHcm91cDEpOgorICAgICAg
ICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXktZ2VuZXJhdG9yLmpzOiBDb3BpZWQg
ZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXktZ2VuZXJhdG9yLmh0bWwuCisg
ICAgICAgICh0ZXN0KToKKyAgICAgICAgKHJ1blRlc3RzLm5leHRUZXN0LnJlcXVlc3Qub25zdWNj
ZXNzLnJlcXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzLnRyYW5zLm9uY29tcGxldGUp
OgorICAgICAgICAocnVuVGVzdHMubmV4dFRlc3QucmVxdWVzdC5vbnN1Y2Nlc3MucmVxdWVzdC5v
bnN1Y2Nlc3MucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAocnVuVGVzdHMubmV4dFRlc3Qu
cmVxdWVzdC5vbnN1Y2Nlc3MucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAocnVuVGVzdHMu
bmV4dFRlc3QucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAocnVuVGVzdHMubmV4dFRlc3Qp
OgorICAgICAgICAoY2hlY2sucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAoY2hlY2spOgor
ICAgICAgICAoZGVmaW5lVGVzdCk6CisgICAgICAgICguKToKKyAgICAgICAgKiBzdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMva2V5LXNvcnQtb3JkZXItYWNyb3NzLXR5cGVzLmpzOiBDb3BpZWQg
ZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXktc29ydC1vcmRlci1hY3Jvc3Mt
dHlwZXMuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAg
ICAgICAoYWRkS2V5MSk6CisgICAgICAgIChhZGRLZXkyKToKKyAgICAgICAgKGFkZEtleTMpOgor
ICAgICAgICAoYWRkS2V5NCk6CisgICAgICAgIChhZGRLZXk1KToKKyAgICAgICAgKG9wZW5BQ3Vy
c29yLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKG9wZW5BQ3Vyc29yKToKKyAgICAgICAg
KiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5LXNvcnQtb3JkZXItZGF0ZS5qczogQ29w
aWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5LXNvcnQtb3JkZXItZGF0
ZS5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAg
IChhZGRLZXkxKToKKyAgICAgICAgKGFkZEtleTIpOgorICAgICAgICAoYWRkS2V5Myk6CisgICAg
ICAgIChhZGRLZXk0KToKKyAgICAgICAgKG9wZW5BQ3Vyc29yLnJlcXVlc3Qub25zdWNjZXNzKToK
KyAgICAgICAgKG9wZW5BQ3Vyc29yKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMva2V5LXR5cGUtYXJyYXkuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2tleS10eXBlLWFycmF5Lmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAg
KG9wZW5TdWNjZXNzKToKKyAgICAgICAgKHNldFZlcnNpb25TdWNjZXNzKToKKyAgICAgICAgKHRl
c3RWYWxpZEFycmF5S2V5cy50ZXN0QXJyYXlQdXRHZXQucHV0cmVxLm9uc3VjY2Vzcy5nZXRyZXEu
b25zdWNjZXNzKToKKyAgICAgICAgKHRlc3RWYWxpZEFycmF5S2V5cy50ZXN0QXJyYXlQdXRHZXQu
cHV0cmVxLm9uc3VjY2Vzcyk6CisgICAgICAgICh0ZXN0VmFsaWRBcnJheUtleXMudGVzdEFycmF5
UHV0R2V0KToKKyAgICAgICAgKHRlc3RWYWxpZEFycmF5S2V5cy5uZXh0VGVzdCk6CisgICAgICAg
ICh0ZXN0VmFsaWRBcnJheUtleXMpOgorICAgICAgICAobWFrZUFycmF5T2ZEZXB0aCk6CisgICAg
ICAgICh0ZXN0RGVwdGhMaW1pdHMpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9rZXktdHlwZS1pbmZpbml0eS5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIva2V5LXR5cGUtaW5maW5pdHkuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAg
ICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAodGVzdEdyb3VwMSk6CisgICAgICAgICh0ZXN0
R3JvdXAyKToKKyAgICAgICAgKHRlc3RHcm91cDMpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9rZXlwYXRoLWJhc2ljcy5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1iYXNpY3MuaHRtbC4KKyAgICAgICAgKHRlc3QpOgor
ICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAodGVzdFZhbGlkS2V5UGF0aHMpOgorICAg
ICAgICAodGVzdEludmFsaWRLZXlQYXRocyk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL2tleXBhdGgtZWRnZXMuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL2tleXBhdGgtZWRnZXMuaHRtbC4KKyAgICAgICAgKHRlc3QucmVxdWVzdC5v
bnN1Y2Nlc3MpOgorICAgICAgICAodGVzdCk6CisgICAgICAgIChvcGVuU3VjY2Vzcy5yZXF1ZXN0
Lm9uc3VjY2Vzcyk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgICh0ZXN0S2V5UGF0
aHMucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGVzdEtleVBhdGhzKToKKyAgICAgICAg
KHRlc3RLZXlQYXRoc0FuZEdlbmVyYXRvci5yZXF1ZXN0Lm9uc3VjY2Vzcy5yZXF1ZXN0Lm9uc3Vj
Y2Vzcyk6CisgICAgICAgICh0ZXN0S2V5UGF0aHNBbmRHZW5lcmF0b3IucmVxdWVzdC5vbnN1Y2Nl
c3MpOgorICAgICAgICAodGVzdEtleVBhdGhzQW5kR2VuZXJhdG9yKToKKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5cGF0aC1mZXRjaC1rZXkuanM6IENvcGllZCBmcm9t
IExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtZmV0Y2gta2V5Lmh0bWwuCisg
ICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGNyZWF0ZUFu
ZFBvcHVsYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAob3BlbkN1cnNvcik6CisgICAgICAgIChj
aGVja0N1cnNvcik6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleXJh
bmdlLXJlcXVpcmVkLWFyZ3VtZW50cy5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIva2V5cmFuZ2UtcmVxdWlyZWQtYXJndW1lbnRzLmh0bWwuCisgICAgICAgICh0
ZXN0KToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5cmFuZ2UuanM6
IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleXJhbmdlLmh0bWwu
CisgICAgICAgIChjaGVja1NpbmdsZUtleVJhbmdlKToKKyAgICAgICAgKGNoZWNrTG93ZXJCb3Vu
ZEtleVJhbmdlKToKKyAgICAgICAgKGNoZWNrVXBwZXJCb3VuZEtleVJhbmdlKToKKyAgICAgICAg
KGNoZWNrQm91bmRLZXlSYW5nZSk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvbGlzdC1vcmRlcmluZy5qczogQ29waWVkIGZyb20gTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbGlzdC1vcmRlcmluZy5odG1sLgorICAgICAgICAodGVz
dCk6CisgICAgICAgICh0ZXN0U3RvcmVzQW5kSW5kZXhlcy5yZXF1ZXN0Lm9uc3VjY2Vzcy5yZXF1
ZXN0Lm9uc3VjY2Vzcy5yZXF1ZXN0Lm9uc3VjY2Vzcy5zaG91bGRCZVRydWUpOgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9tdXRhdGluZy1jdXJzb3IuanM6IENvcGllZCBm
cm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL211dGF0aW5nLWN1cnNvci5odG1sLgor
ICAgICAgICAodGVzdCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChzZXRWZXJz
aW9uU3VjY2Vzcyk6CisgICAgICAgIChvcGVuRm9yd2FyZEN1cnNvcik6CisgICAgICAgIChmb3J3
YXJkQ3Vyc29yLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKGZvcndhcmRDdXJzb3IpOgor
ICAgICAgICAoZm9yd2FyZEN1cnNvckNvbXBsZXRlKToKKyAgICAgICAgKG9wZW5SZXZlcnNlQ3Vy
c29yKToKKyAgICAgICAgKHJldmVyc2VDdXJzb3IucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAg
ICAocmV2ZXJzZUN1cnNvcik6CisgICAgICAgIChyZXZlcnNlQ3Vyc29yQ29tcGxldGUpOgorICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vYmplY3RTdG9yZS1yZXF1aXJlZC1h
cmd1bWVudHMuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29i
amVjdFN0b3JlLXJlcXVpcmVkLWFyZ3VtZW50cy5odG1sLgorICAgICAgICAodGVzdCk6CisgICAg
ICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3Jl
KToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3RvcmUtYXV0
b2luY3JlbWVudC5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
b2JqZWN0c3RvcmUtYXV0b2luY3JlbWVudC5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAg
IChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChzZXRWZXJzaW9uU3VjY2Vzcyk6CisgICAgICAgIChz
ZXRWZXJzaW9uQ29tcGxldGVkKToKKyAgICAgICAgKGFkZEplZmZlcnNzb25TdWNjZXNzKToKKyAg
ICAgICAgKGFkZExpbmNvbG5XaXRoSW5qZWN0S2V5U3VjY2Vzcyk6CisgICAgICAgIChnZXRMaW5j
b2xuQWZ0ZXJJbmplY3RlZEtleVN1Y2Nlc3MpOgorICAgICAgICAoYWRkTGluY29sbldpdGhFeHBs
aWNpdEtleVN1Y2Nlc3MpOgorICAgICAgICAoZ2V0TGluY29sblN1Y2Nlc3MpOgorICAgICAgICAo
cHV0QWJyYWhhbVN1Y2Nlc3MpOgorICAgICAgICAoZ2V0QWJyYWhhbVN1Y2Nlc3MpOgorICAgICAg
ICAoYWRkQWRhbVN1Y2Nlc3MpOgorICAgICAgICAodGVzdExvbmdLZXlQYXRoLmN1cnNvclJlcXVl
c3Qub25zdWNjZXNzKToKKyAgICAgICAgKHRlc3RMb25nS2V5UGF0aCk6CisgICAgICAgICogc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3JlLWNsZWFyLmpzOiBDb3BpZWQgZnJv
bSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jbGVhci5odG1sLgor
ICAgICAgICAodGVzdCk6CisgICAgICAgIChzdGFydFNldFZlcnNpb24pOgorICAgICAgICAoZGVs
ZXRlRXhpc3RpbmcpOgorICAgICAgICAoY3JlYXRlU2Vjb25kT2JqZWN0U3RvcmVBbmRBZGRWYWx1
ZSk6CisgICAgICAgIChjbGVhck9iamVjdFN0b3JlKToKKyAgICAgICAgKGNsZWFyU3VjY2Vzcyk6
CisgICAgICAgIChvcGVuQ3Vyc29yU3VjY2Vzcyk6CisgICAgICAgIChvcGVuS2V5Q3Vyc29yU3Vj
Y2Vzcyk6CisgICAgICAgIChzZXRWZXJzaW9uQ29tcGxldGUpOgorICAgICAgICAoZ2V0U3VjY2Vz
cyk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3JlLWNv
dW50LmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3Rz
dG9yZS1jb3VudC5odG1sLgorICAgICAgICAodGVzdC5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAg
ICAgICh0ZXN0KToKKyAgICAgICAgKHByZXBhcmVEYXRhYmFzZSk6CisgICAgICAgICh2ZXJpZnlD
b3VudC5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgICh2ZXJpZnlDb3VudCk6CisgICAgICAg
ICh2ZXJpZnlDb3VudFdpdGhSYW5nZS5uZXh0VGVzdC5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAg
ICAgICh2ZXJpZnlDb3VudFdpdGhSYW5nZS5uZXh0VGVzdCk6CisgICAgICAgICh2ZXJpZnlDb3Vu
dFdpdGhSYW5nZSk6CisgICAgICAgICh2ZXJpZnlDb3VudFdpdGhLZXkubmV4dFRlc3QucmVxdWVz
dC5vbnN1Y2Nlc3MpOgorICAgICAgICAodmVyaWZ5Q291bnRXaXRoS2V5Lm5leHRUZXN0KToKKyAg
ICAgICAgKHZlcmlmeUNvdW50V2l0aEtleSk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL29iamVjdHN0b3JlLWN1cnNvci5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY3Vyc29yLmh0bWwuCisgICAgICAgIChvcGVu
RGF0YWJhc2UpOgorICAgICAgICAoc2V0VmVyc2lvbik6CisgICAgICAgIChkZWxldGVFeGlzdGlu
Zyk6CisgICAgICAgIChhZGREYXRhKToKKyAgICAgICAgKHNjaGVkdWxlVGVzdHMpOgorICAgICAg
ICAocnVuTmV4dFRlc3QpOgorICAgICAgICAodGVzdFdpdGhpbkJvdW5kcyk6CisgICAgICAgIChj
dXJzb3JJdGVyYXRpb24pOgorICAgICAgICAodGVzdE51bGxLZXlSYW5nZSk6CisgICAgICAgICog
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3JlLXJlbW92ZW9iamVjdHN0b3Jl
LmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9y
ZS1yZW1vdmVvYmplY3RzdG9yZS5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChzdGFy
dFNldFZlcnNpb24pOgorICAgICAgICAoZGVsZXRlRXhpc3RpbmcpOgorICAgICAgICAoZ2V0VmFs
dWUpOgorICAgICAgICAoYWRkSW5kZXgpOgorICAgICAgICAoZGVsZXRlT2JqZWN0U3RvcmUpOgor
ICAgICAgICAoY3JlYXRlT2JqZWN0U3RvcmVBZ2Fpbik6CisgICAgICAgIChnZXRWYWx1ZUFnYWlu
KToKKyAgICAgICAgKHZlcmlmeU5vdEZvdW5kKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvb2RkLXN0cmluZ3MuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL29kZC1zdHJpbmdzLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAg
KG9wZW5OZXh0RGF0YWJhc2UpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAoYWRk
QUtleSk6CisgICAgICAgIChjbG9zZURhdGFiYXNlKToKKyAgICAgICAgKHZlcmlmeU5leHREYXRh
YmFzZSk6CisgICAgICAgIChvcGVuU3VjY2VzczIpOgorICAgICAgICAoZ2V0QUtleSk6CisgICAg
ICAgIChvcGVuQ3Vyc29yU3VjY2Vzcyk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL29wZW4tY2xvc2UtdmVyc2lvbi5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvb3Blbi1jbG9zZS12ZXJzaW9uLmh0bWwuCisgICAgICAgIChDb25uZWN0
aW9uLnRoaXMub3Blbi5yZXEub25zdWNjZXNzLnRoYXQuaGFuZGxlLm9udmVyc2lvbmNoYW5nZSk6
CisgICAgICAgIChDb25uZWN0aW9uLnRoaXMub3Blbi5yZXEub25zdWNjZXNzKToKKyAgICAgICAg
KENvbm5lY3Rpb24udGhpcy5vcGVuKToKKyAgICAgICAgKENvbm5lY3Rpb24udGhpcy5jbG9zZSk6
CisgICAgICAgIChDb25uZWN0aW9uLnRoaXMuc2V0VmVyc2lvbi5yZXEub25hYm9ydCk6CisgICAg
ICAgIChDb25uZWN0aW9uLnRoaXMuc2V0VmVyc2lvbi5yZXEub25ibG9ja2VkKToKKyAgICAgICAg
KENvbm5lY3Rpb24udGhpcy5zZXRWZXJzaW9uLnJlcS5vbnN1Y2Nlc3MuZG9fYXN5bmNfcHV0cy5y
ZXEub25zdWNjZXNzKToKKyAgICAgICAgKENvbm5lY3Rpb24udGhpcy5zZXRWZXJzaW9uLnJlcS5v
bnN1Y2Nlc3MuZG9fYXN5bmNfcHV0cyk6CisgICAgICAgIChDb25uZWN0aW9uLnRoaXMuc2V0VmVy
c2lvbi5yZXEub25zdWNjZXNzKToKKyAgICAgICAgKENvbm5lY3Rpb24udGhpcy5zZXRWZXJzaW9u
LnJlcS5vbmVycm9yKToKKyAgICAgICAgKENvbm5lY3Rpb24udGhpcy5zZXRWZXJzaW9uKToKKyAg
ICAgICAgKENvbm5lY3Rpb24pOgorICAgICAgICAocnVuU3RlcHMpOgorICAgICAgICAodGVzdCk6
CisgICAgICAgICh0ZXN0MS4pOgorICAgICAgICAodGVzdDEpOgorICAgICAgICAodGVzdDIuKToK
KyAgICAgICAgKHRlc3QyKToKKyAgICAgICAgKHRlc3QzKToKKyAgICAgICAgKHRlc3QzLik6Cisg
ICAgICAgICh0ZXN0NCk6CisgICAgICAgICh0ZXN0NSk6CisgICAgICAgICh0ZXN0Nik6CisgICAg
ICAgICh0ZXN0Ni5oYWxmRG9uZSk6CisgICAgICAgICh0ZXN0Ni5maW5pc2hUZXN0KToKKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Blbi1jdXJzb3IuanM6IENvcGllZCBm
cm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4tY3Vyc29yLmh0bWwuCisgICAg
ICAgIChlbXB0eUN1cnNvclN1Y2Nlc3MpOgorICAgICAgICAob3BlbkVtcHR5Q3Vyc29yKToKKyAg
ICAgICAgKGN1cnNvclN1Y2Nlc3MpOgorICAgICAgICAob3BlbkN1cnNvcik6CisgICAgICAgIChz
ZXRWZXJzaW9uU3VjY2Vzcyk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgICh0ZXN0
KToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Blbi1kdXJpbmctdHJh
bnNhY3Rpb24uanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29w
ZW4tZHVyaW5nLXRyYW5zYWN0aW9uLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKHBy
ZXBhcmVEYXRhYmFzZS5vcGVucmVxMS5vbnN1Y2Nlc3Muc2V0dmVycmVxLm9uc3VjY2Vzcy5zZXR2
ZXJyZXEucmVzdWx0Lm9uY29tcGxldGUpOgorICAgICAgICAocHJlcGFyZURhdGFiYXNlLm9wZW5y
ZXExLm9uc3VjY2Vzcy5zZXR2ZXJyZXEub25zdWNjZXNzKToKKyAgICAgICAgKHByZXBhcmVEYXRh
YmFzZS5vcGVucmVxMS5vbnN1Y2Nlc3MpOgorICAgICAgICAocHJlcGFyZURhdGFiYXNlKToKKyAg
ICAgICAgKHN0YXJ0VHJhbnNhY3Rpb24udHJhbnMub25jb21wbGV0ZSk6CisgICAgICAgIChzdGFy
dFRyYW5zYWN0aW9uKToKKyAgICAgICAgKHRyeU9wZW5zLm9wZW5yZXEyLm9uc3VjY2Vzcyk6Cisg
ICAgICAgICh0cnlPcGVucy5vcGVucmVxMy5vbnN1Y2Nlc3MpOgorICAgICAgICAodHJ5T3BlbnMp
OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9wcmVmZXRjaC1idWdmaXgt
MTA4MDcxLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9wcmVm
ZXRjaC1idWdmaXgtMTA4MDcxLmh0bWwuCisgICAgICAgICh0ZXN0LnJlcXVlc3Qub25zdWNjZXNz
KToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAoc2V0
VmVyc2lvblN1Y2Nlc3MpOgorICAgICAgICAocmVzZXRPYmplY3RTdG9yZSk6CisgICAgICAgIChp
dGVyYXRlQW5kRGVsZXRlRmlyc3RFbGVtZW50LnJlcXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25z
dWNjZXNzKToKKyAgICAgICAgKGl0ZXJhdGVBbmREZWxldGVGaXJzdEVsZW1lbnQucmVxdWVzdC5v
bnN1Y2Nlc3MpOgorICAgICAgICAoaXRlcmF0ZUFuZERlbGV0ZUZpcnN0RWxlbWVudCk6CisgICAg
ICAgIChwcmVmZXRjaEFuZEFib3J0LnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHByZWZl
dGNoQW5kQWJvcnQpOgorICAgICAgICAodHJhbnNhY3Rpb25BYm9ydGVkKToKKyAgICAgICAgKiBz
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvcXVldWVkLWNvbW1hbmRzLmpzOiBDb3BpZWQgZnJv
bSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9xdWV1ZWQtY29tbWFuZHMuaHRtbC4KKyAg
ICAgICAgKHRlc3QpOgorICAgICAgICAoc2V0VmVyc2lvbik6CisgICAgICAgIChkZWxldGVFeGlz
dGluZy5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgIChkZWxldGVFeGlzdGluZyk6CisgICAg
ICAgICh2ZXJpZnlBZGQpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9y
ZWFkb25seS1wcm9wZXJ0aWVzLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZWFkb25seS1wcm9wZXJ0aWVzLmh0bWwuCisgICAgICAgIChzZXRSZWFkb25seVBy
b3BlcnR5KToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAg
ICAoY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSk6CisgICAgICAgICogc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL3JlYWRvbmx5LmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZWFkb25seS5odG1sLgorICAgICAgICAoc2V0UmVhZG9ubHlQcm9wZXJ0
eSk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGNy
ZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoYWRkU3VjY2Vzcyk6CisgICAg
ICAgIChjaGVja0N1cnNvcik6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L3JlcXVlc3QtZXZlbnQtcHJvcGFnYXRpb24uanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3JlcXVlc3QtZXZlbnQtcHJvcGFnYXRpb24uaHRtbC4KKyAgICAgICAg
KHRlc3QpOgorICAgICAgICAoc2V0VmVyc2lvbik6CisgICAgICAgIChkZWxldGVFeGlzdGluZyk6
CisgICAgICAgIChzdGFydFRlc3QpOgorICAgICAgICAoYWxsb3dEZWZhdWx0KToKKyAgICAgICAg
KHRyYW5zYWN0aW9uQWJvcnRlZCk6CisgICAgICAgIChkYkVycm9yQ2FwdHVyZUNhbGxiYWNrKToK
KyAgICAgICAgKGVycm9yQ2FwdHVyZUNhbGxiYWNrKToKKyAgICAgICAgKGVycm9yRmlyZWRDYWxs
YmFjayk6CisgICAgICAgIChlcnJvckJ1YmJsZUNhbGxiYWNrKToKKyAgICAgICAgKGRiRXJyb3JC
dWJibGVDYWxsYmFjayk6CisgICAgICAgICh0cmFuc2FjdGlvbkFib3J0ZWQyKToKKyAgICAgICAg
KGRiU3VjY2Vzc0NhcHR1cmVDYWxsYmFjayk6CisgICAgICAgIChzdWNjZXNzQ2FwdHVyZUNhbGxi
YWNrKToKKyAgICAgICAgKHN1Y2Nlc3NGaXJlZENhbGxiYWNrKToKKyAgICAgICAgKHN1Y2Nlc3NC
dWJibGVDYWxsYmFjayk6CisgICAgICAgIChkYlN1Y2Nlc3NCdWJibGVDYWxsYmFjayk6CisgICAg
ICAgICh0cmFuc2FjdGlvbkNvbXBsZXRlKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvc2V0VmVyc2lvbi1udWxsLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9zZXRWZXJzaW9uLW51bGwuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAg
ICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAocG9zdFNldFZlcnNpb24pOgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zZXRWZXJzaW9uLXVuZGVmaW5lZC5qczogQ29w
aWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0VmVyc2lvbi11bmRlZmlu
ZWQuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAg
ICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zZXRfdmVyc2lvbl9ibG9ja2VkLmpzOiBD
b3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9ibG9j
a2VkLmh0bWwuCisgICAgICAgIChjb25uZWN0aW9ucyk6CisgICAgICAgIChvcGVuREJDb25uZWN0
aW9uKToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGJsb2NrZWQpOgorICAgICAg
ICAoaW5TZXRWZXJzaW9uKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
c2V0X3ZlcnNpb25fcXVldWUuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3NldF92ZXJzaW9uX3F1ZXVlLmh0bWwuCisgICAgICAgIChjb25uZWN0aW9ucyk6Cisg
ICAgICAgIChvcGVuREJDb25uZWN0aW9uKToKKyAgICAgICAgKG9wZW5TdWNjZXNzLmVsc2UucmVx
dWVzdC5vbmVycm9yKToKKyAgICAgICAgKG9wZW5TdWNjZXNzLmVsc2UucmVxdWVzdDIub25lcnJv
cik6CisgICAgICAgIChvcGVuU3VjY2Vzcy5lbHNlLnJlcXVlc3QzLm9uZXJyb3IpOgorICAgICAg
ICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAoYmxvY2tlZDApOgorICAgICAgICAoYmxvY2tlZDEp
OgorICAgICAgICAoYmxvY2tlZDIpOgorICAgICAgICAoYmxvY2tlZDMpOgorICAgICAgICAoY29u
bmVjdGlvbkVycm9yKToKKyAgICAgICAgKGluU2V0VmVyc2lvbjEpOgorICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1hYm9ydC5qczogQ29waWVkIGZyb20g
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQuaHRtbC4KKyAg
ICAgICAgKHRlc3QpOgorICAgICAgICAoc2V0VmVyc2lvbik6CisgICAgICAgIChkZWxldGVFeGlz
dGluZyk6CisgICAgICAgIChzdGFydFRlc3QpOgorICAgICAgICAoZmlyc3RBZGQpOgorICAgICAg
ICAoc2Vjb25kQWRkKToKKyAgICAgICAgKHRyYW5zYWN0aW9uQWJvcnRlZCk6CisgICAgICAgICog
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWFmdGVyLWNsb3NlLmpzOiBD
b3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hZnRl
ci1jbG9zZS5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6Cisg
ICAgICAgIChpblNldFZlcnNpb24pOgorICAgICAgICAob25QdXRTdWNjZXNzKToKKyAgICAgICAg
KHJ1bkZpcnN0UmVndWxhclRyYW5zYWN0aW9uKToKKyAgICAgICAgKGZpcnN0VHJhbnNhY3Rpb25D
b21wbGV0ZSk6CisgICAgICAgIChvblNlY29uZE9wZW4pOgorICAgICAgICAob25GaW5hbFB1dFN1
Y2Nlc3MpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlv
bi1hbmQtb2JqZWN0c3RvcmUtY2FsbHMuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFuZC1vYmplY3RzdG9yZS1jYWxscy5odG1sLgorICAg
ICAgICAodGVzdCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChjbGVhbkRhdGFi
YXNlKToKKyAgICAgICAgKGNyZWF0ZWQpOgorICAgICAgICAoYWZ0ZXJDb21wbGV0ZSk6CisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWJhc2ljcy5qczog
Q29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYmFz
aWNzLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAg
ICAgKGNsZWFuRGF0YWJhc2UpOgorICAgICAgICAodGVzdFNldFZlcnNpb25BYm9ydDEpOgorICAg
ICAgICAoYWRkUmVtb3ZlSURCT2JqZWN0cyk6CisgICAgICAgICh0ZXN0U2V0VmVyc2lvbkFib3J0
Mik6CisgICAgICAgIChhZGRSZW1vdmVBZGRJREJPYmplY3RzKToKKyAgICAgICAgKHRlc3RTZXRW
ZXJzaW9uQWJvcnQzKToKKyAgICAgICAgKGFkZElEQk9iamVjdHMpOgorICAgICAgICAodGVzdElu
YWN0aXZlQWJvcnRlZFRyYW5zYWN0aW9uKToKKyAgICAgICAgKHRlc3RTZXRWZXJzaW9uQWJvcnQ0
KToKKyAgICAgICAgKGFkZElEQk9iamVjdHNBbmRDb21taXQpOgorICAgICAgICAodGVzdEluYWN0
aXZlQ29tcGxldGVkVHJhbnNhY3Rpb24pOgorICAgICAgICAodGVzdFNldFZlcnNpb25BYm9ydDUp
OgorICAgICAgICAocmVtb3ZlSURCT2JqZWN0cyk6CisgICAgICAgICh0ZXN0U2V0VmVyc2lvbkFi
b3J0Nik6CisgICAgICAgIChzdGFydFNldFZlcnNpb24pOgorICAgICAgICAoY2hlY2tNZXRhZGF0
YUVtcHR5KToKKyAgICAgICAgKGNoZWNrTWV0YWRhdGFFeGlzdGluZ09iamVjdFN0b3JlKToKKyAg
ICAgICAgKHNldE5ld1ZlcnNpb24pOgorICAgICAgICAoc2V0VmVyc2lvblN1Y2Nlc3MpOgorICAg
ICAgICAoY29tcGxldGVDYWxsYmFjayk6CisgICAgICAgIChhYm9ydENhbGxiYWNrKToKKyAgICAg
ICAgKHRlc3RET01TdHJpbmdMaXN0KToKKyAgICAgICAgKHRlc3RJbnZhbGlkTW9kZSk6CisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWNyYXNoLW9uLWFi
b3J0LmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2Fj
dGlvbi1jcmFzaC1vbi1hYm9ydC5odG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChvcGVu
U3VjY2Vzcyk6CisgICAgICAgIChzZXRWZXJzaW9uU3VjY2Vzcyk6CisgICAgICAgIChzZXRWZXJz
aW9uQ29tcGxldGUpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFu
c2FjdGlvbi1ldmVudC1wcm9wYWdhdGlvbi5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tZXZlbnQtcHJvcGFnYXRpb24uaHRtbC4KKyAgICAg
ICAgKHRlc3QpOgorICAgICAgICAoc2V0VmVyc2lvbik6CisgICAgICAgIChkZWxldGVFeGlzdGlu
Zyk6CisgICAgICAgIChzdGFydFRlc3QpOgorICAgICAgICAoZGJBYm9ydENhcHR1cmVDYWxsYmFj
ayk6CisgICAgICAgIChhYm9ydEZpcmVkQ2FsbGJhY2spOgorICAgICAgICAoZGJBYm9ydEJ1YmJs
ZUNhbGxiYWNrKToKKyAgICAgICAgKGRiQ29tcGxldGVDYXB0dXJlQ2FsbGJhY2spOgorICAgICAg
ICAoY29tcGxldGVGaXJlZENhbGxiYWNrKToKKyAgICAgICAgKGRiQ29tcGxldGVCdWJibGVDYWxs
YmFjayk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9u
LXJlYWQtb25seS5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
dHJhbnNhY3Rpb24tcmVhZC1vbmx5Lmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9w
ZW5TdWNjZXNzKToKKyAgICAgICAgKGNsZWFuRGF0YWJhc2UpOgorICAgICAgICAoc2V0VmVyc2lv
bkRvbmUpOgorICAgICAgICAoZ290Q3Vyc29yKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tcm9sbGJhY2suanM6IENvcGllZCBmcm9tIExheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXJvbGxiYWNrLmh0bWwuCisgICAgICAg
ICh0ZXN0KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGNsZWFuRGF0YWJhc2Up
OgorICAgICAgICAoc2V0VmVyc2lvbkNvbXBsZXRlKToKKyAgICAgICAgKGFkZFN1Y2Nlc3MpOgor
ICAgICAgICAob3BlbkN1cnNvclN1Y2Nlc3MpOgorICAgICAgICAoYWJvcnRDYWxsYmFjayk6Cisg
ICAgICAgIChnZXRTdWNjZXNzKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvdHJhbnNhY3Rpb24tc3RvcmVOYW1lcy1yZXF1aXJlZC5qczogQ29waWVkIGZyb20gTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tc3RvcmVOYW1lcy1yZXF1aXJlZC5o
dG1sLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChvcGVuU3VjY2Vzcyk6CisgICAgICAgIChj
cmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvdHdvLXZlcnNpb24tY2hhbmdlcy5qczogQ29waWVkIGZyb20gTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvdHdvLXZlcnNpb24tY2hhbmdlcy5odG1sLgorICAgICAgICAo
dGVzdCk6CisgICAgICAgIChvcGVuREJDb25uZWN0aW9uKToKKyAgICAgICAgKG9wZW5TdWNjZXNz
KToKKyAgICAgICAgKGluU2V0VmVyc2lvbjEucmVxLm9uc3VjY2Vzcyk6CisgICAgICAgIChpblNl
dFZlcnNpb24xKToKKyAgICAgICAgKGluU2V0VmVyc2lvbjIucmVxLm9uc3VjY2Vzcyk6CisgICAg
ICAgIChpblNldFZlcnNpb24yKToKKyAgICAgICAgKGhhbGZ3YXlEb25lKToKKyAgICAgICAgKGNo
ZWNrUmVzdWx0cyk6CisgICAgICAgIChzZXRWZXJzaW9uQ29tcGxldGUucmVxLm9uc3VjY2Vzcy5y
ZXEub25zdWNjZXNzKToKKyAgICAgICAgKHNldFZlcnNpb25Db21wbGV0ZS5yZXEub25zdWNjZXNz
KToKKyAgICAgICAgKHNldFZlcnNpb25Db21wbGV0ZSk6CisgICAgICAgICogc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL3ZhbHVlLXVuZGVmaW5lZC5qczogQ29waWVkIGZyb20gTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvdmFsdWUtdW5kZWZpbmVkLmh0bWwuCisgICAgICAgICh0ZXN0
KToKKyAgICAgICAgKG9wZW5TdWNjZXNzKToKKyAgICAgICAgKGNyZWF0ZUFuZFBvcHVsYXRlT2Jq
ZWN0U3RvcmUpOgorICAgICAgICAoZ2V0VmFsdWUpOgorICAgICAgICAoY2hlY2tWYWx1ZSk6Cisg
ICAgICAgIChjaGVja0N1cnNvcik6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL3ZhbHVlcy1vZGQtdHlwZXMuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3ZhbHVlcy1vZGQtdHlwZXMuaHRtbC4KKyAgICAgICAgKHRlc3QpOgorICAgICAg
ICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAoYWRkS2V5MSk6CisgICAgICAgIChhZGREYXRhKToK
KyAgICAgICAgKG9wZW5BQ3Vyc29yLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKG9wZW5B
Q3Vyc29yKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdmVyc2lvbi1j
aGFuZ2UtYWJvcnQuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3ZlcnNpb24tY2hhbmdlLWFib3J0Lmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9w
ZW5EQkNvbm5lY3Rpb24pOgorICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAoaW5TZXRW
ZXJzaW9uMSk6CisgICAgICAgIChzZXRWZXJzaW9uMUNvbXBsZXRlKToKKyAgICAgICAgKGluU2V0
VmVyc2lvbjIpOgorICAgICAgICAoc2V0VmVyc2lvbjJBYm9ydCk6CisgICAgICAgICogc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL3ZlcnNpb24tY2hhbmdlLWV4Y2x1c2l2ZS5qczogQ29waWVk
IGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1jaGFuZ2UtZXhjbHVz
aXZlLmh0bWwuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKG9wZW5EQkNvbm5lY3Rpb24pOgor
ICAgICAgICAob3BlblN1Y2Nlc3MpOgorICAgICAgICAoaW5TZXRWZXJzaW9uLmRvX2FzeW5jX3B1
dHMucmVxLm9uc3VjY2Vzcyk6CisgICAgICAgIChpblNldFZlcnNpb24uZG9fYXN5bmNfcHV0cyk6
CisgICAgICAgIChpblNldFZlcnNpb24pOgorICAgICAgICAob3BlbkFnYWluU3VjY2Vzcyk6Cisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3ZlcnNpb25jaGFuZ2VyZXF1ZXN0
LWFjdGl2ZWRvbW9iamVjdC5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvdmVyc2lvbmNoYW5nZXJlcXVlc3QtYWN0aXZlZG9tb2JqZWN0Lmh0bWwuCisgICAgICAg
ICh0ZXN0KToKKyAgICAgICAgKHRlc3REZWxldGVEYXRhYmFzZS5kZWxldGVSZXF1ZXN0Lm9uc3Vj
Y2Vzcyk6CisgICAgICAgICh0ZXN0RGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAoZGVsZXRlU3Vj
Y2Vzcyk6CisgICAgICAgICh0ZXN0U2V0VmVyc2lvbi5vcGVuUmVxdWVzdC5vbnN1Y2Nlc3MudmVy
c2lvblJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHRlc3RTZXRWZXJzaW9uLm9wZW5SZXF1
ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgICh0ZXN0U2V0VmVyc2lvbik6CisgICAgICAgICh2ZXJz
aW9uU3VjY2Vzcyk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvc2V0VmVyc2lvbi1udWxs
Lmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvc2V0VmVyc2lvbi11bmRlZmluZWQu
aHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9ibG9ja2VkLmh0
bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNpb25fcXVldWUuaHRtbDoK
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hYm9ydC5odG1sOgorICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFmdGVyLWNsb3NlLmh0bWw6Cisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYW5kLW9iamVjdHN0b3JlLWNh
bGxzLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYmFzaWNz
Lmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY3Jhc2gtb24t
YWJvcnQuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1ldmVu
dC1wcm9wYWdhdGlvbi5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0
aW9uLXJlYWQtb25seS5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0
aW9uLXJvbGxiYWNrLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rp
b24tc3RvcmVOYW1lcy1yZXF1aXJlZC5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L3R3by12ZXJzaW9uLWNoYW5nZXMuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi92
YWx1ZS11bmRlZmluZWQuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi92YWx1ZXMt
b2RkLXR5cGVzLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1jaGFu
Z2UtYWJvcnQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNp
b24tY2hhbmdlLWFib3J0Lmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lv
bi1jaGFuZ2UtZXhjbHVzaXZlLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvdmVy
c2lvbmNoYW5nZXJlcXVlc3QtYWN0aXZlZG9tb2JqZWN0Lmh0bWw6CisKIDIwMTItMDMtMjMgIEFs
bGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CiAKICAgICAgICAg
VG91Y2ggYWRqdXN0bWVudCBmb3JnZXRzIHNvbWUgc3VidGFyZ2V0IHF1YWRzLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY29uc3RhbnRzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jb25zdGFudHMuaHRtbAppbmRleCBmZThhY2FiMzgxOTVj
ZGNiZDc5MjA4ODdhMGJmMGM0ZGE3MmI0YzQxLi5kN2YwZjE0NGRmZTdiYTc4YTY0MjRiMWUwYTc1
MzM5MmYwZGJjZmIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9j
b25zdGFudHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jb25zdGFu
dHMuaHRtbApAQCAtNCw0NCArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5q
cyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJU
ZXN0IEluZGV4ZWREQidzIGNvbnN0YW50cy4iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAg
cmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICBzaG91bGRCZSgiSURCRGF0YWJhc2VFeGNlcHRp
b24uVU5LTk9XTl9FUlIiLCAiMSIpOwotICAgIHNob3VsZEJlKCJJREJEYXRhYmFzZUV4Y2VwdGlv
bi5OT05fVFJBTlNJRU5UX0VSUiIsICIyIik7Ci0gICAgc2hvdWxkQmUoIklEQkRhdGFiYXNlRXhj
ZXB0aW9uLk5PVF9GT1VORF9FUlIiLCAiMyIpOwotICAgIHNob3VsZEJlKCJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5DT05TVFJBSU5UX0VSUiIsICI0Iik7Ci0gICAgc2hvdWxkQmUoIklEQkRhdGFiYXNl
RXhjZXB0aW9uLkRBVEFfRVJSIiwgIjUiKTsKLSAgICBzaG91bGRCZSgiSURCRGF0YWJhc2VFeGNl
cHRpb24uTk9UX0FMTE9XRURfRVJSIiwgIjYiKTsKLSAgICBzaG91bGRCZSgiSURCRGF0YWJhc2VF
eGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIiwgIjciKTsKLSAgICBzaG91bGRCZSgi
SURCRGF0YWJhc2VFeGNlcHRpb24uQUJPUlRfRVJSIiwgIjgiKTsKLSAgICBzaG91bGRCZSgiSURC
RGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUiIsICI5Iik7Ci0gICAgc2hvdWxkQmUoIklE
QkRhdGFiYXNlRXhjZXB0aW9uLlRJTUVPVVRfRVJSIiwgIjEwIik7Ci0gICAgc2hvdWxkQmUoIklE
QkRhdGFiYXNlRXhjZXB0aW9uLlFVT1RBX0VSUiIsICIxMSIpOwotICAgIHNob3VsZEJlKCJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5WRVJfRVJSIiwgIjEyIik7Ci0KLSAgICBzaG91bGRCZSgiSURCUmVx
dWVzdC5MT0FESU5HIiwgIjEiKTsKLSAgICBzaG91bGRCZSgiSURCUmVxdWVzdC5ET05FIiwgIjIi
KTsKLQotICAgIHNob3VsZEJlKCJJREJDdXJzb3IuTkVYVCIsICIwIik7Ci0gICAgc2hvdWxkQmUo
IklEQkN1cnNvci5ORVhUX05PX0RVUExJQ0FURSIsICIxIik7Ci0gICAgc2hvdWxkQmUoIklEQkN1
cnNvci5QUkVWIiwgIjIiKTsKLSAgICBzaG91bGRCZSgiSURCQ3Vyc29yLlBSRVZfTk9fRFVQTElD
QVRFIiwgIjMiKTsKLQotICAgIHNob3VsZEJlKCJJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkiLCAi
MCIpOwotICAgIHNob3VsZEJlKCJJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFIiwgIjEiKTsKLSAg
ICBzaG91bGRCZSgiSURCVHJhbnNhY3Rpb24uVkVSU0lPTl9DSEFOR0UiLCAiMiIpOwotfQotCi10
ZXN0KCk7Ci0KLWZpbmlzaEpTVGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvY29uc3RhbnRzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlLWFuZC1yZW1v
dmUtb2JqZWN0LXN0b3JlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jcmVh
dGUtYW5kLXJlbW92ZS1vYmplY3Qtc3RvcmUuaHRtbAppbmRleCA3MTY5NWMwZDU3OGRkZWNmYmNh
NjViYjVhMjZlMGJkYjZmNzQ4NzNlLi43Yzg5ZjVlOTljNmI2ODQ0MzQ3ZDQ2YmFlNTczYjg0MDlj
NzQ1YWJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jcmVhdGUt
YW5kLXJlbW92ZS1vYmplY3Qtc3RvcmUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9jcmVhdGUtYW5kLXJlbW92ZS1vYmplY3Qtc3RvcmUuaHRtbApAQCAtNCw3MiArNCw3
IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+
CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGNyZWF0
ZSBhbmQgcmVtb3ZlT2JqZWN0U3RvcmUiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVt
b3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERC
Lm9wZW4oJ2NyZWF0ZS1hbmQtcmVtb3ZlLW9iamVjdC1zdG9yZScpIik7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRlYnVn
KCJvcGVuU3VjY2VzcygpOiIpOwotICAgIHNlbGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKLSAgICB0ZXN0Q3JlYXRlQW5kUmVtb3ZlKCk7Ci0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlc3VsdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOwotICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHRlc3RDcmVhdGVBbmRSZW1vdmUoKTsK
LX0KLQotZnVuY3Rpb24gdGVzdENyZWF0ZUFuZFJlbW92ZSgpCi17Ci0gICAgZGVidWcoIlRyeWlu
ZyBjcmVhdGUiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCdkYi5jcmVhdGVPYmplY3RT
dG9yZSgic29tZSBvcyIpJywgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9BTExPV0VEX0VSUiIp
OwotICAgIGRlYnVnKCJUcnlpbmcgcmVtb3ZlIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlv
bignZGIuZGVsZXRlT2JqZWN0U3RvcmUoInNvbWUgb3MiKScsICJJREJEYXRhYmFzZUV4Y2VwdGlv
bi5OT1RfQUxMT1dFRF9FUlIiKTsKLX0KLQotZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCi17Ci0g
ICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9zID0gZXZhbEFuZExvZygiZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ3RtcCcpIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigi
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3RtcCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkNPTlNU
UkFJTlRfRVJSIik7Ci0gICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5vbmNvbXBsZXRlID0gc2V0VmVy
c2lvbkNvbXBsZXRlOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uQ29tcGxldGUoKQotewotICAg
IHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3RtcCddKSIpOwot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgndG1wJykuZ2V0KDAp
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0cnlPbmNlTW9yZTsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gdHJ5T25jZU1v
cmUoKQotewotICAgIHNob3VsZEJlVW5kZWZpbmVkKCJldmVudC50YXJnZXQucmVzdWx0Iik7Ci0K
LSAgICB0ZXN0Q3JlYXRlQW5kUmVtb3ZlKCk7Ci0KLSAgICBkZWJ1ZygiVHJ5aW5nIGNyZWF0ZSB3
aXRoIHN0b3JlIHRoYXQgYWxyZWFkeSBleGlzdHMiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgndG1wJykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24u
Tk9UX0FMTE9XRURfRVJSIik7Ci0gICAgZGVidWcoIlRyeWluZyByZW1vdmUgd2l0aCBzdG9yZSB0
aGF0IGFscmVhZHkgZXhpc3RzIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIuZGVs
ZXRlT2JqZWN0U3RvcmUoJ3RtcCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9BTExPV0VE
X0VSUiIpOwotCi0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY3JlYXRlLWFuZC1yZW1vdmUtb2JqZWN0LXN0b3Jl
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlLW9iamVjdC1zdG9yZS1vcHRpb25zLmh0
bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jcmVhdGUtb2JqZWN0LXN0b3JlLW9w
dGlvbnMuaHRtbAppbmRleCBkZGFiMGYyYzhhZDg5ZDJiNjlhNjJmMzYwOTVjMTZhMDlhNmI3YzM1
Li43N2MzMzNhYmU5ZGFjNjk3MDFlNmQxMDJiODVmNWRjMWZlNzFhYWU4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jcmVhdGUtb2JqZWN0LXN0b3JlLW9wdGlvbnMu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jcmVhdGUtb2JqZWN0LXN0
b3JlLW9wdGlvbnMuaHRtbApAQCAtNCw4NyArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2Ny
aXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGNyZWF0ZU9iamVjdFN0b3JlJ3MgdmFyaW91cyBvcHRp
b25zIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7
Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2NyZWF0ZS1vYmpl
Y3Qtc3RvcmUtb3B0aW9ucycsICdkZXNjcmlwdGlvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFu
ZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKLXsKLSAg
ICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgZXZhbEFuZExvZygiZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ2EnLCB7a2V5UGF0aDogJ2EnfSkiKTsKLSAgICBldmFsQW5kTG9nKCJkYi5j
cmVhdGVPYmplY3RTdG9yZSgnYicpIik7Ci0KLSAgICBkZWJ1ZygiZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ2MnLCB7YXV0b0luY3JlbWVudDogdHJ1ZX0pOyIpOwotICAgIGRiLmNyZWF0ZU9iamVjdFN0
b3JlKCdjJywge2F1dG9JbmNyZW1lbnQ6IHRydWV9KTsKLSAgICBldmVudC50YXJnZXQucmVzdWx0
Lm9uY29tcGxldGUgPSBzZXRWZXJzaW9uQ29tcGxldGU7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNp
b25Db21wbGV0ZSgpCi17Ci0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5z
YWN0aW9uKFsnYScsICdiJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgc2hv
dWxkQmUoInRyYW5zLm1vZGUiLCAiSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSIpOwotCi0gICAg
cmVxID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2EnKS5wdXQoeydhJzogMH0pIik7
Ci0gICAgcmVxLm9uc3VjY2VzcyA9IHB1dEI7Ci0gICAgcmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb25DbGFzcygiZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ2QnLCAnYmFyJyk7IiwgIlR5cGVFcnJvciIpOwotICAgIGV2YWxBbmRF
eHBlY3RFeGNlcHRpb25DbGFzcygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2UnLCBmYWxzZSk7Iiwg
IlR5cGVFcnJvciIpOwotfQotCi1mdW5jdGlvbiBwdXRCKCkKLXsKLSAgICByZXEgPSBldmFsQW5k
TG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYicpLnB1dCh7J2EnOiAwfSwgMCkiKTsgIC8vIE9PUFMK
LSAgICByZXEub25zdWNjZXNzID0gZ2V0QTsKLSAgICByZXEub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBnZXRBKCkKLXsKLSAgICByZXEgPSBldmFsQW5k
TG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYScpLmdldCgwKSIpOwotICAgIHJlcS5vbnN1Y2Nlc3Mg
PSBnZXRCOwotICAgIHJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0K
LWZ1bmN0aW9uIGdldEIoKQotewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LmEi
LCAie2E6IDB9Iik7Ci0KLSAgICByZXEgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgn
YicpLmdldCgwKSIpOwotICAgIHJlcS5vbnN1Y2Nlc3MgPSBjaGVja0I7Ci0gICAgcmVxLm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY2hlY2tCKCkKLXsK
LSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5hIiwgInthOiAwfSIpOwotCi0gICAg
ZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvY3JlYXRlLW9iamVjdC1zdG9yZS1vcHRpb25zLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvY3JlYXRlT2JqZWN0U3RvcmUtbmFtZS1hcmd1bWVudC1yZXF1aXJlZC5odG1sIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlT2JqZWN0U3RvcmUtbmFtZS1hcmd1
bWVudC1yZXF1aXJlZC5odG1sCmluZGV4IDI3MmZjNDMwOWFjY2Q1NjRmMmJmYzdmZDExZGI5NmM3
MTZlMjZlOGMuLmVlOGZhOGU3N2QyNGRlZjg4MGU3MTZlNmQ5NjFlODc5NDQzMDFiNTcgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZU9iamVjdFN0b3JlLW5h
bWUtYXJndW1lbnQtcmVxdWlyZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9jcmVhdGVPYmplY3RTdG9yZS1uYW1lLWFyZ3VtZW50LXJlcXVpcmVkLmh0bWwKQEAgLTEs
NDYgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3Jj
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4K
LTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBjcmVhdGVPYmplY3RTdG9y
ZSBuYW1lIGFyZ3VtZW50IGlzIHJlcXVpcmVkIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAg
IHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRo
bmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewot
ICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZTsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24g
Y3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3Rv
cmVzKGRiKTsKLQotICAgIHNob3VsZFRocm93KCJkYi5jcmVhdGVPYmplY3RTdG9yZSgpOyIpOwot
ICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2NyZWF0ZU9iamVjdFN0b3JlLW5hbWUtYXJndW1lbnQtcmVxdWlyZWQu
anMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jcmVhdGVPYmplY3RTdG9yZS1udWxsLW5hbWUuaHRt
bCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZU9iamVjdFN0b3JlLW51bGwt
bmFtZS5odG1sCmluZGV4IDRiMjVlMTQ0YTg4MDUwODAyYmUyNWY4YTFhYzdhY2FjMGMwMTA5ZTku
LmIyYWE4YTMwODFhMTAwY2Q1MTFjMTVlNWRmY2UxMjE1NzkxNzdjZmMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZU9iamVjdFN0b3JlLW51bGwtbmFtZS5o
dG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZU9iamVjdFN0b3Jl
LW51bGwtbmFtZS5odG1sCkBAIC0xLDQ3ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KIDxodG1s
PgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2Ny
aXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRl
eGVkREIgY3JlYXRlT2JqZWN0U3RvcmUgbnVsbCBoYW5kbGluZyIpOwotCi1mdW5jdGlvbiB0ZXN0
KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9j
YXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9u
KSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNj
ZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIp
OwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcx
JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3Rv
cmU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0K
LWZ1bmN0aW9uIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQotewotICAgIGRlbGV0ZUFs
bE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNy
ZWF0ZU9iamVjdFN0b3JlKG51bGwpOyIpOwotICAgIHNob3VsZEJlKCJvYmplY3RTdG9yZS5uYW1l
IiwgIidudWxsJyIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NyZWF0ZU9iamVjdFN0b3JlLW51bGwtbmFt
ZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1jb250aW51ZS5odG1sIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWNvbnRpbnVlLmh0bWwKaW5kZXggNzEyY2Qy
YjM5ZDYyZGEyNzkzYWZlNjYyMzAxNTZjY2UxMzEwNzUxYy4uMDZiZjcxNThhNzM5MzFjNDBhOTI3
YmYxMDdiZWQ3YmRlMmYxMDBmMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvY3Vyc29yLWNvbnRpbnVlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvY3Vyc29yLWNvbnRpbnVlLmh0bWwKQEAgLTQsMjc1ICs0LDcgQEAKIDxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlw
dD4gCi0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIElEQkN1cnNvci5jb250aW51ZSgp
IHdpdGggYSBrZXkgcGFyYW1ldGVyLiIpOwotCi12YXIgZGF0ZSA9IG5ldyBEYXRlKCk7Ci0KLS8v
IEluIG9yZGVyIG9mIGhvdyBpdCBzaG91bGQgYmUgc29ydGVkIGJ5IEluZGV4ZWREQi4KLXNlbGYu
dGVzdERhdGEgPSBbCi0gICAgMCwKLSAgICAxLAotICAgIDEsCi0gICAgMy4xNDE1OSwKLSAgICAz
LjE0MTU5LAotICAgIDEwLAotICAgIDExLAotICAgIDEyLAotICAgIDEzLAotICAgIGRhdGUsCi0g
ICAgZGF0ZSwKLSAgICBuZXcgRGF0ZShkYXRlLnZhbHVlT2YoKSArIDEwMDApLAotICAgICJBIGJp
ZyBzdHJpbmciLAotICAgICJBIGJpZyBzdHJpbmciLAotICAgICJBIGJpdDEiLAotICAgICJBIGJp
dDIiLAotICAgICJBIGJpdDMiLAotICAgICJ0aGUgQklHR0VTVCBzdHJpbmciCi1dOwotCi1mdW5j
dGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIG9wZW5EYXRh
YmFzZSgpOwotfQotCi1mdW5jdGlvbiBvcGVuRGF0YWJhc2UoKQotewotICAgIHJlc3VsdCA9IGV2
YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdjdXJzb3ItY29udGludWUnKSIpOwotICAgIHJlc3Vs
dC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uOwotICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci19Ci0gCi1mdW5jdGlvbiBzZXRWZXJzaW9uKCkKLXsKLSAgICBzZWxm
LmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXN1
bHQgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVz
dWx0Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4aXN0aW5nOwotICAgIHJlc3VsdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKLXsK
LSAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJv
cnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLQotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jl
cyhkYik7Ci0KLSAgICBzZWxmLm9iamVjdFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ3NvbWVPYmplY3RTdG9yZScpIik7Ci0gICAgc2VsZi5pbmRleE9iamVjdCA9IGV2
YWxBbmRMb2coIm9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdzb21lSW5kZXgnLCAneCcpIik7Ci0g
ICAgc2VsZi5uZXh0VG9BZGQgPSAwOwotICAgIGFkZERhdGEoKTsKLX0KLQotZnVuY3Rpb24gYWRk
RGF0YSgpCi17Ci0gICAgcmVzdWx0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKHsneCc6
IHRlc3REYXRhW25leHRUb0FkZF19LCBuZXh0VG9BZGQpIik7Ci0gICAgcmVzdWx0Lm9uc3VjY2Vz
cyA9ICsrc2VsZi5uZXh0VG9BZGQgPCB0ZXN0RGF0YS5sZW5ndGggPyBhZGREYXRhIDogYXNjZW5k
aW5nVGVzdDsKLSAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
fQotCi1mdW5jdGlvbiBhc2NlbmRpbmdUZXN0KCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgdmFy
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5vcGVuS2V5Q3Vyc29yKG51bGwsIElE
QkN1cnNvci5ORVhUKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYXNjZW5kaW5nQ2FsbGJh
Y2s7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAg
c2VsZi5zdGFnZSA9IDA7Ci19Ci0KLWZ1bmN0aW9uIGFzY2VuZGluZ0NhbGxiYWNrKCkKLQotewot
ICAgIGlmIChzZWxmLnN0YWdlID09IDApIHsKLSAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdl
dC5yZXN1bHQucHJpbWFyeUtleSIsICIwIik7Ci0gICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRh
cmdldC5yZXN1bHQuY29udGludWUoMy4xNDE1OSkiKTsKLSAgICB9IGVsc2UgaWYgKHNlbGYuc3Rh
Z2UgPT0gMSkgewotICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5
S2V5IiwgIjMiKTsKLSAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250
aW51ZSgpIik7Ci0gICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDIpIHsKLSAgICAgICAgc2hv
dWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICI0Iik7Ci0gICAgICAgIGV2
YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOwotICAgIH0gZWxzZSBp
ZiAoc2VsZi5zdGFnZSA9PSAzKSB7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVz
dWx0LnByaW1hcnlLZXkiLCAiNSIpOwotICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQu
cmVzdWx0LmNvbnRpbnVlKDEyKSIpOwotICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSA0KSB7
Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiNyIp
OwotICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKGRhdGUp
Iik7Ci0gICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDUpIHsKLSAgICAgICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICI5Iik7Ci0gICAgICAgIGV2YWxBbmRM
b2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOwotICAgIH0gZWxzZSBpZiAoc2Vs
Zi5zdGFnZSA9PSA2KSB7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnBy
aW1hcnlLZXkiLCAiMTAiKTsKLSAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3Vs
dC5jb250aW51ZSgpIik7Ci0gICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDcpIHsKLSAgICAg
ICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIxMSIpOwotICAg
ICAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCdBIGJpdDEnKSIp
OwotICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSA4KSB7Ci0gICAgICAgIHNob3VsZEJlKCJl
dmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMTQiKTsKLSAgICAgICAgZXZhbEFuZExv
ZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgnQSBiaXQzJykiKTsKLSAgICB9IGVsc2Ug
aWYgKHNlbGYuc3RhZ2UgPT0gOSkgewotICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJl
c3VsdC5wcmltYXJ5S2V5IiwgIjE2Iik7Ci0gICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdl
dC5yZXN1bHQuY29udGludWUoJ3RoZSBCSUdHRVNUIHN0cmluZycpIik7Ci0gICAgfSBlbHNlIGlm
IChzZWxmLnN0YWdlID09IDEwKSB7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVz
dWx0LnByaW1hcnlLZXkiLCAiMTciKTsKLSAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0
LnJlc3VsdC5jb250aW51ZSgpIik7Ci0gICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDExKSB7
Ci0gICAgICAgIHNob3VsZEJlTnVsbCgiZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgICAgICBk
ZXNjZW5kaW5nVGVzdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfSBlbHNlIHsKLSAgICAgICAg
dGVzdEZhaWxlZCgiSWxsZWdhbCBzdGFnZS4iKTsKLSAgICB9Ci0gICAgc2VsZi5zdGFnZSsrOwot
fQotCi1mdW5jdGlvbiBkZXNjZW5kaW5nVGVzdCgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIHZh
ciByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhPYmplY3Qub3BlbktleUN1cnNvcihudWxsLCBJ
REJDdXJzb3IuUFJFVikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlc2NlbmRpbmdDYWxs
YmFjazsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAg
ICBzZWxmLnN0YWdlID0gMDsKLX0KLQotZnVuY3Rpb24gZGVzY2VuZGluZ0NhbGxiYWNrKCkKLXsK
LSAgICBpZiAoc2VsZi5zdGFnZSA9PSAwKSB7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50YXJn
ZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMTciKTsKLSAgICAgICAgZXZhbEFuZExvZygiZXZlbnQu
dGFyZ2V0LnJlc3VsdC5jb250aW51ZSgnQSBiaXQyJykiKTsKLSAgICB9IGVsc2UgaWYgKHNlbGYu
c3RhZ2UgPT0gMSkgewotICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmlt
YXJ5S2V5IiwgIjE1Iik7Ci0gICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQu
Y29udGludWUoKSIpOwotICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSAyKSB7Ci0gICAgICAg
IHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMTQiKTsKLSAgICAg
ICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZShkYXRlKSIpOwotICAg
IH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSAzKSB7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50
YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMTAiKTsKLSAgICAgICAgZXZhbEFuZExvZygiZXZl
bnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7Ci0gICAgfSBlbHNlIGlmIChzZWxmLnN0YWdl
ID09IDQpIHsKLSAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtl
eSIsICI5Iik7Ci0gICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGlu
dWUoMSkiKTsKLSAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gNSkgewotICAgICAgICBzaG91
bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjIiKTsKLSAgICAgICAgZXZh
bEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7Ci0gICAgfSBlbHNlIGlm
IChzZWxmLnN0YWdlID09IDYpIHsKLSAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1
bHQucHJpbWFyeUtleSIsICIxIik7Ci0gICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5y
ZXN1bHQuY29udGludWUoKSIpOwotICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSA3KSB7Ci0g
ICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMCIpOwot
ICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKLSAg
ICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gOCkgewotICAgICAgICBzaG91bGRCZU51bGwoImV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICAgICAgYXNjZW5kaW5nRXJyb3JUZXN0TGVzc1RoYW4o
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIkls
bGVnYWwgc3RhZ2UuIik7Ci0gICAgfQotICAgIHNlbGYuc3RhZ2UrKzsKLX0KLQotZnVuY3Rpb24g
YXNjZW5kaW5nRXJyb3JUZXN0TGVzc1RoYW4oKQotewotICAgIGRlYnVnKCIiKTsKLSAgICB2YXIg
cmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3IobnVsbCwgSURC
Q3Vyc29yLk5FWFQpIik7Ci0gICAgc2VsZi5zdGFnZSA9IDA7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbigpIHsKLSAgICAgICAgaWYgKHNlbGYuc3RhZ2UgPT09IDApIHsKLSAgICAgICAgICAgIHNo
b3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMCIpOwotICAgICAgICAg
ICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgzLjE0MTU5KSIpOwot
ICAgICAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gMSkgewotICAgICAgICAgICAgc2hvdWxk
QmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIzIik7Ci0gICAgICAgICAgICBl
dmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKDEpIiwg
IklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0gICAgICAgICAgICBhc2NlbmRpbmdF
cnJvclRlc3RFcXVhbCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJJbGxlZ2FsIHN0YWdlLiIpOwotICAgICAgICB9Ci0gICAg
ICAgIHNlbGYuc3RhZ2UrKzsKLSAgICB9OwotfQotCi1mdW5jdGlvbiBhc2NlbmRpbmdFcnJvclRl
c3RFcXVhbCgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIHZhciByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiaW5kZXhPYmplY3Qub3BlbktleUN1cnNvcihudWxsLCBJREJDdXJzb3IuTkVYVCkiKTsKLSAg
ICBzZWxmLnN0YWdlID0gMDsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAgICBp
ZiAoc2VsZi5zdGFnZSA9PT0gMCkgewotICAgICAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdl
dC5yZXN1bHQucHJpbWFyeUtleSIsICIwIik7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJldmVu
dC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKDMuMTQxNTkpIik7Ci0gICAgICAgIH0gZWxzZSBpZiAo
c2VsZi5zdGFnZSA9PSAxKSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJl
c3VsdC5wcmltYXJ5S2V5IiwgIjMiKTsKLSAgICAgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRp
b24oImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoMy4xNDE1OSkiLCAiSURCRGF0YWJhc2VF
eGNlcHRpb24uREFUQV9FUlIiKTsKLSAgICAgICAgICAgIGRlc2NlbmRpbmdFcnJvclRlc3RHcmVh
dGVyVGhhbigpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJJbGxlZ2FsIHN0YWdlLiIpOwotICAgICAgICB9Ci0gICAgICAgIHNl
bGYuc3RhZ2UrKzsKLSAgICB9OwotfQotCi1mdW5jdGlvbiBkZXNjZW5kaW5nRXJyb3JUZXN0R3Jl
YXRlclRoYW4oKQotewotICAgIGRlYnVnKCIiKTsKLSAgICB2YXIgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImluZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3IobnVsbCwgSURCQ3Vyc29yLlBSRVYpIik7Ci0g
ICAgc2VsZi5zdGFnZSA9IDA7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAg
aWYgKHNlbGYuc3RhZ2UgPT0gMCkgewotICAgICAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdl
dC5yZXN1bHQucHJpbWFyeUtleSIsICIxNyIpOwotICAgICAgICAgICAgZXZhbEFuZExvZygiZXZl
bnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgnQSBiaXQyJykiKTsKLSAgICAgICAgfSBlbHNlIGlm
IChzZWxmLnN0YWdlID09IDEpIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQu
cmVzdWx0LnByaW1hcnlLZXkiLCAiMTUiKTsKLSAgICAgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoJ0EgYml0MycpIiwgIklEQkRhdGFi
YXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0gICAgICAgICAgICBkZXNjZW5kaW5nRXJyb3JUZXN0
RXF1YWwoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgdGVzdEZhaWxlZCgiSWxsZWdhbCBzdGFnZS4iKTsKLSAgICAgICAgfQotICAgICAgICBzZWxm
LnN0YWdlKys7Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24gZGVzY2VuZGluZ0Vycm9yVGVzdEVxdWFs
KCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgdmFyIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRl
eE9iamVjdC5vcGVuS2V5Q3Vyc29yKG51bGwsIElEQkN1cnNvci5QUkVWKSIpOwotICAgIHNlbGYu
c3RhZ2UgPSAwOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmIChzZWxm
LnN0YWdlID09IDApIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0
LnByaW1hcnlLZXkiLCAiMTciKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdl
dC5yZXN1bHQuY29udGludWUoJ0EgYml0MicpIik7Ci0gICAgICAgIH0gZWxzZSBpZiAoc2VsZi5z
dGFnZSA9PSAxKSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5w
cmltYXJ5S2V5IiwgIjE1Iik7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7Ci0gICAgICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJl
dmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCdBIGJpdDInKSIsICJJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5EQVRBX0VSUiIpOwotICAgICAgICAgICAgc2VsZi50cmFucy5vbmNvbXBsZXRlID0gb25U
cmFuc2FjdGlvbkNvbXBsZXRlOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICB0ZXN0RmFpbGVkKCJJbGxlZ2FsIHN0YWdlLiIpOwotICAgICAgICB9Ci0g
ICAgICAgIHNlbGYuc3RhZ2UrKzsKLSAgICB9OwotfQotCi1mdW5jdGlvbiBvblRyYW5zYWN0aW9u
Q29tcGxldGUoKQotewotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImN1cnNvci5jb250aW51
ZSgpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOwot
ICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi10ZXN0KCk7Ci0gCi08L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvY3Vyc29yLWNvbnRpbnVlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3Jj
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9i
b2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
Y3Vyc29yLWRlbGV0ZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29y
LWRlbGV0ZS5odG1sCmluZGV4IGQ3NDA3M2FiN2Y5YWMxOWNiNzAyN2FlZjdhMmJjMWFiM2FlMDZi
M2MuLmViZDZiN2Y3YzM1M2E4NGIwODVhN2Y0MTZiNmI2YTg4MWNmMDNkNDAgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1kZWxldGUuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItZGVsZXRlLmh0bWwKQEAgLTQsMTEx
ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwv
aGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mg
b3BlbkN1cnNvci4iKTsKLQotdGVzdCgpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1v
dmVWZW5kb3JQcmVmaXhlcygpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
b3BlbignY3Vyc29yLWRlbGV0ZScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3Vj
Y2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0K
LQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIHZhciBkYiA9IGV2YWxBbmRMb2coImRi
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRi
LnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNl
dFZlcnNpb25TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCi17Ci0gICAgZGVidWco
InNldFZlcnNpb25TdWNjZXNzKCk6Iik7Ci0gICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRy
YW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09
IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0g
ICAgdHJhbnMub25jb21wbGV0ZSA9IG9wZW5DdXJzb3I7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RT
dG9yZXMoZGIpOwotCi0gICAgdmFyIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3Rv
cmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgndGVzdCcpIik7Ci0gICAgZXZhbEFuZExvZygib2Jq
ZWN0U3RvcmUuYWRkKCdteVZhbHVlMScsICdteUtleTEnKSIpOwotICAgIGV2YWxBbmRMb2coIm9i
amVjdFN0b3JlLmFkZCgnbXlWYWx1ZTInLCAnbXlLZXkyJykiKTsKLSAgICBldmFsQW5kTG9nKCJv
YmplY3RTdG9yZS5hZGQoJ215VmFsdWUzJywgJ215S2V5MycpIik7Ci0gICAgZXZhbEFuZExvZygi
b2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlNCcsICdteUtleTQnKSIpOwotfQotCi1mdW5jdGlvbiBv
cGVuQ3Vyc29yKCkKLXsKLSAgICBkZWJ1Zygib3BlbkN1cnNvcjEiKTsKLSAgICBldmFsQW5kTG9n
KCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsndGVzdCddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dS
SVRFKSIpOwotICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgibXlLZXkxIik7
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCd0ZXN0Jykub3Bl
bkN1cnNvcih7cmFuZ2U6IGtleVJhbmdlfSkiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1
cnNvclN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci0gICAgY291bnRlciA9IDE7Ci19Ci0KLWZ1bmN0aW9uIGN1cnNvclN1Y2Nlc3MoKQotewot
ICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0ID09IG51bGwpIHsKLSAgICAgICAgc2hvdWxkQmUo
ImNvdW50ZXIiLCAiNSIpOwotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnMub2Jq
ZWN0U3RvcmUoJ3Rlc3QnKS5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOwotICAgICAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGN1cnNvckVtcHR5OwotICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBldmFsQW5k
TG9nKCJldmVudC50YXJnZXQucmVzdWx0LmRlbGV0ZSgpIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LnZhbHVlIiwgIm15VmFsdWUiICsgY291bnRlcisr
KTsKLSAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKLX0K
LQotZnVuY3Rpb24gY3Vyc29yRW1wdHkoKQotewotICAgIHNob3VsZEJlTnVsbCgiZXZlbnQudGFy
Z2V0LnJlc3VsdCIpOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBhZGRPYmplY3Q7Ci19Ci0KLWZ1
bmN0aW9uIGFkZE9iamVjdCgpCi17Ci0gICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2Fj
dGlvbihbJ3Rlc3QnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICBvYmplY3RT
dG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3Rlc3Qn
KSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ215VmFsdWUx
JywgJ215S2V5MScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuQ3Vyc29yMjsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rp
b24gb3BlbkN1cnNvcjIoKQotewotICAgIGRlYnVnKCJvcGVuQ3Vyc29yMiIpOwotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlT2JqZWN0OwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBkZWxldGVPYmplY3QoKQot
ewotICAgIHNob3VsZEJlTm9uTnVsbChldmVudC50YXJnZXQucmVzdWx0KTsKLSAgICBldmFsQW5k
TG9nKCJldmVudC50YXJnZXQucmVzdWx0LmRlbGV0ZSgpIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coIm9iamVjdFN0b3JlLmdldCgnbXlLZXkxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IHZlcmlmeU9iamVjdERlbGV0ZWQ7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHZlcmlmeU9iamVjdERlbGV0ZWQoKQotewot
ICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgInVuZGVmaW5lZCIpOwotICAgIGZp
bmlzaEpTVGVzdCgpOwotfQotCi0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9j
dXJzb3ItZGVsZXRlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWluY29uc2lzdGVu
Y3kuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1pbmNvbnNpc3Rl
bmN5Lmh0bWwKaW5kZXggYTQ4NTc2YzgwYzk2NGVkODk3ZjJhZGRmNjRiM2U2ZGI0Y2U4NTNlNi4u
ZjJjZWEwYjFhZDczZjE0ZDI2YzVlMWJhNDU3YzdmZTBhYzU5MGJmYSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWluY29uc2lzdGVuY3kuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItaW5jb25zaXN0ZW5jeS5odG1s
CkBAIC00LDkxICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Nj
cmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgY29u
c2lzdGVuY3kgb2YgSW5kZXhlZERCJ3MgY3Vyc29yIG9iamVjdHMuIik7Ci0KLXRlc3QoKTsKLQot
ZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2N1cnNvci1pbmNvbnNpc3RlbmN5Jyki
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2Vz
cygpCi17Ci0gICAgdmFyIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNp
b24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9u
IHNldFZlcnNpb25TdWNjZXNzKCkKLXsKLSAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToi
KTsKLSAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVz
dWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwotICAgIHRyYW5zLm9u
YWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0g
b3BlbkJhc2ljQ3Vyc29yOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAg
IHZhciBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ2Jhc2ljU3RvcmUnKSIpOwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFk
ZCgnc29tZVZhbHVlMScsICdzb21lS2V5MScpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjayIpOwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnc29tZVZhbHVlMicsICdz
b21lS2V5MicpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOwotICAgIGV2YWxB
bmRMb2coIm9iamVjdFN0b3JlLmFkZCgnc29tZVZhbHVlMycsICdzb21lS2V5MycpLm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3Jl
LmFkZCgnc29tZVZhbHVlNCcsICdzb21lS2V5NCcpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjayIpOwotCi19Ci0KLWZ1bmN0aW9uIG9wZW5CYXNpY0N1cnNvcigpCi17Ci0gICAgZGVi
dWcoIm9wZW5CYXNpY0N1cnNvcigpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFu
c2FjdGlvbihbJ2Jhc2ljU3RvcmUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAg
ICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25j
b21wbGV0ZSA9IHRyYW5zYWN0aW9uQ29tcGxldGU7Ci0KLSAgICBrZXlSYW5nZSA9IElEQktleVJh
bmdlLmxvd2VyQm91bmQoInNvbWVLZXkxIik7Ci0gICAgc2VsZi5vYmplY3RTdG9yZSA9IGV2YWxB
bmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdiYXNpY1N0b3JlJykiKTsKLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygib2JqZWN0U3RvcmUub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGNoZWNrQ3Vyc29yOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIGNvdW50ZXIgPSAxOwotfQotCi1zdG9yZWRDdXJzb3Ig
PSBudWxsOwotZnVuY3Rpb24gY2hlY2tDdXJzb3IoKQotewotICAgIGRlYnVnKCIiKQotICAgIGRl
YnVnKCJjaGVja0N1cnNvcigpIik7Ci0gICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVs
bCkgewotICAgICAgICBzaG91bGRCZSgiY291bnRlciIsICI1Iik7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgaWYgKHN0b3JlZEN1cnNvciA9PSBudWxsKQotICAgICAgc3RvcmVkQ3Vyc29y
ID0gZXZhbEFuZExvZygic3RvcmVkQ3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0g
ICAgc2hvdWxkQmVUcnVlKCJzdG9yZWRDdXJzb3IgPT09IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsK
LSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInN0b3JlZEN1cnNvci5rZXkiLCAic29tZUtleSIg
KyBjb3VudGVyKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1
bHQua2V5IiwgInNvbWVLZXkiICsgY291bnRlcik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJzdG9yZWRDdXJzb3IudmFsdWUiLCAic29tZVZhbHVlIiArIGNvdW50ZXIpOwotICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZSIsICJzb21lVmFsdWUi
ICsgY291bnRlcik7Ci0gICAgY291bnRlcisrOwotICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdl
dC5yZXN1bHQuY29udGludWUoKSIpOwotfQotCi1mdW5jdGlvbiB0cmFuc2FjdGlvbkNvbXBsZXRl
KCkKLXsKLSAgICBkZWJ1ZygidHJhbnNhY3Rpb25Db21wbGV0ZSgpIik7Ci0gICAgZmluaXNoSlNU
ZXN0KCk7Ci19Ci0KLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2N1cnNvci1p
bmNvbnNpc3RlbmN5LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWluZGV4LWRlbGV0
ZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWluZGV4LWRlbGV0
ZS5odG1sCmluZGV4IDFjNjMwMDczZjU3MzE5YmE1N2QxNzNhYTc0MmI3OTI4YzEyZjU5YWMuLmFk
Y2E3OGVjOTRhMjRlNWY4MGJmODg1ZGQxMTJlYTc3NDE3ZjQ5NDggMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1pbmRleC1kZWxldGUuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItaW5kZXgtZGVsZXRlLmh0bWwKQEAg
LTQsMTE1ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Njcmlw
dD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhl
ZERCJ3Mgb3BlbkN1cnNvci4iKTsKLQotdGVzdCgpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAg
ICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRl
eGVkREIub3BlbignY3Vyc29yLWluZGV4LWRlbGV0ZScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIHZhciBkYiA9IGV2
YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IHNldFZlcnNpb25TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCi17
Ci0gICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7Ci0gICAgc2VsZi50cmFucyA9IGV2
YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlVHJ1
ZSgidHJhbnMgIT09IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0
Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IG9wZW5DdXJzb3I7Ci0KLSAgICBkZWxl
dGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJv
YmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCd0ZXN0JykiKTsKLSAgICBldmFsQW5k
TG9nKCJvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgndGVzdEluZGV4JywgJ3gnKSIpOwotCi0gICAg
ZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKHt4OiAxfSwgJ215S2V5MScpIik7Ci0gICAgZXZh
bEFuZExvZygib2JqZWN0U3RvcmUuYWRkKHt4OiAyfSwgJ215S2V5MicpIik7Ci0gICAgZXZhbEFu
ZExvZygib2JqZWN0U3RvcmUuYWRkKHt4OiAzfSwgJ215S2V5MycpIik7Ci0gICAgZXZhbEFuZExv
Zygib2JqZWN0U3RvcmUuYWRkKHt4OiA0fSwgJ215S2V5NCcpIik7Ci19Ci0KLWZ1bmN0aW9uIG9w
ZW5DdXJzb3IoKQotewotICAgIGRlYnVnKCJvcGVuQ3Vyc29yMSIpOwotICAgIGV2YWxBbmRMb2co
InRyYW5zID0gZGIudHJhbnNhY3Rpb24oWyd0ZXN0J10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJ
VEUpIik7Ci0gICAga2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKDEpOwotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgndGVzdCcpLmluZGV4KCd0ZXN0
SW5kZXgnKS5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
Y3Vyc29yU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLSAgICBjb3VudGVyID0gMTsKLX0KLQotZnVuY3Rpb24gY3Vyc29yU3VjY2VzcygpCi17
Ci0gICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkgewotICAgICAgICBzaG91bGRC
ZSgiY291bnRlciIsICI1Iik7Ci0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5v
YmplY3RTdG9yZSgndGVzdCcpLmluZGV4KCd0ZXN0SW5kZXgnKS5vcGVuQ3Vyc29yKGtleVJhbmdl
KSIpOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvckVtcHR5OwotICAgICAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICB2YXIgZGVsZXRlUmVxdWVzdCA9IGV2YWxBbmRMb2coImV2ZW50LnRhcmdl
dC5yZXN1bHQuZGVsZXRlKCkiKTsKLSAgICBkZWxldGVSZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXki
LCAiY291bnRlcisrIik7Ci0gICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250
aW51ZSgpIik7Ci19Ci0KLWZ1bmN0aW9uIGN1cnNvckVtcHR5KCkKLXsKLSAgICBzaG91bGRCZU51
bGwoImV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gYWRkT2Jq
ZWN0OwotfQotCi1mdW5jdGlvbiBhZGRPYmplY3QoKQotewotICAgIGV2YWxBbmRMb2coInRyYW5z
ID0gZGIudHJhbnNhY3Rpb24oWyd0ZXN0J10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7
Ci0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVj
dFN0b3JlKCd0ZXN0JykiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUu
YWRkKHt4OiAxfSwgJ215S2V5MScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuQ3Vy
c29yMjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0K
LQotZnVuY3Rpb24gb3BlbkN1cnNvcjIoKQotewotICAgIGRlYnVnKCJvcGVuQ3Vyc29yMiIpOwot
ICAgIGV2YWxBbmRMb2coImluZGV4ID0gZXZlbnQudGFyZ2V0LnNvdXJjZS5pbmRleCgndGVzdElu
ZGV4JykiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXgub3BlbkN1cnNvcihrZXlS
YW5nZSkiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZU9iamVjdDsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZGVs
ZXRlT2JqZWN0KCkKLXsKLSAgICBzaG91bGRCZU5vbk51bGwoZXZlbnQudGFyZ2V0LnJlc3VsdCk7
Ci0gICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5kZWxldGUoKSIpOwotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleC5nZXQoMSkiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IHZlcmlmeU9iamVjdERlbGV0ZWQ7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHZlcmlmeU9iamVjdERlbGV0ZWQoKQotewot
ICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgInVuZGVmaW5lZCIpOwotICAgIGZp
bmlzaEpTVGVzdCgpOwotfQotCi0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9j
dXJzb3ItaW5kZXgtZGVsZXRlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWtleS1v
cmRlci5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWtleS1vcmRl
ci5odG1sCmluZGV4IDNhMTFlNjkyOWI5YzRiYzljZGIzYzNhYjIxMmE3MGM2MjlkYTcwMDguLjQw
MzA5ZGU0NjgzZTY2Njc4ZGMyNzBmNjY3Mjk2NGU3MzA1M2RiNTYgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1rZXktb3JkZXIuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3Ita2V5LW9yZGVyLmh0bWwKQEAgLTQsMjMw
ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwv
aGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGtl
eXMgb3JkZXJpbmcgYW5kIHJlYWRiYWNrIGZyb20gY3Vyc29ycy4iKTsKLQotZnVuY3Rpb24gdGVz
dCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIHByZXBhcmVEYXRhYmFz
ZSgpOwotfQotCi1mdW5jdGlvbiBwcmVwYXJlRGF0YWJhc2UoKQotewotICAgIGRlYnVnKCIiKTsK
LSAgICBldmFsQW5kTG9nKCJvcGVucmVxID0gaW5kZXhlZERCLm9wZW4oJ2N1cnNvci1rZXktb3Jk
ZXInKSIpOwotICAgIG9wZW5yZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
ICAgIG9wZW5yZXEub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGV2YWxBbmRMb2co
ImRiID0gb3BlbnJlcS5yZXN1bHQiKTsKLSAgICAgICAgZXZhbEFuZExvZygidmVycmVxID0gZGIu
c2V0VmVyc2lvbignMScpIik7Ci0gICAgICAgIHZlcnJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci0gICAgICAgIHZlcnJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAg
ICAgICAgICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7Ci0g
ICAgICAgICAgICB2ZXJyZXEucmVzdWx0Lm9uY29tcGxldGUgPSBwb3B1bGF0ZVN0b3JlOwotICAg
ICAgICB9OwotICAgIH07Ci19Ci0KLXNlbGYua2V5cyA9IFsKLSAgICAiLUluZmluaXR5IiwKLSAg
ICAiLU51bWJlci5NQVhfVkFMVUUiLAotICAgICItMSIsCi0gICAgIi1OdW1iZXIuTUlOX1ZBTFVF
IiwKLSAgICAiMCIsCi0gICAgIk51bWJlci5NSU5fVkFMVUUiLAotICAgICIxIiwKLSAgICAiTnVt
YmVyLk1BWF9WQUxVRSIsCi0gICAgIkluZmluaXR5IiwKLQotICAgICJuZXcgRGF0ZSgwKSIsCi0g
ICAgIm5ldyBEYXRlKDEwMDApIiwKLSAgICAibmV3IERhdGUoMTMxNzM5OTkzMTAyMykiLAotCi0g
ICAgIicnIiwKLSAgICAiJ1x4MDAnIiwKLSAgICAiJ2EnIiwKLSAgICAiJ2FhJyIsCi0gICAgIidi
JyIsCi0gICAgIidiYSciLAotCi0gICAgIidceEEyJyIsIC8vIFUrMDBBMiBDRU5UIFNJR04KLSAg
ICAiJ1x1NkMzNCciLCAvLyBVKzZDMzQgQ0pLIFVOSUZJRUQgSURFT0dSQVBIICh3YXRlcikKLSAg
ICAiJ1x1RDgzNFx1REQxRSciLCAvLyBVKzFEMTFFIE1VU0lDQUwgU1lNQk9MIEctQ0xFRiAoVVRG
LTE2IHN1cnJvZ2F0ZSBwYWlyKQotICAgICInXHVGRkZEJyIsIC8vIFUrRkZGRCBSRVBMQUNFTUVO
VCBDSEFSQUNURVIKLQotICAgICJbXSIsCi0KLSAgICAiWy1JbmZpbml0eV0iLAotICAgICJbLU51
bWJlci5NQVhfVkFMVUVdIiwKLSAgICAiWy0xXSIsCi0gICAgIlstTnVtYmVyLk1JTl9WQUxVRV0i
LAotICAgICJbMF0iLAotICAgICJbTnVtYmVyLk1JTl9WQUxVRV0iLAotICAgICJbMV0iLAotICAg
ICJbTnVtYmVyLk1BWF9WQUxVRV0iLAotICAgICJbSW5maW5pdHldIiwKLQotICAgICJbbmV3IERh
dGUoMCldIiwKLSAgICAiW25ldyBEYXRlKDEwMDApXSIsCi0gICAgIltuZXcgRGF0ZSgxMzE3Mzk5
OTMxMDIzKV0iLAotCi0gICAgIlsnJ10iLAotICAgICJbJ1x4MDAnXSIsCi0gICAgIlsnYSddIiwK
LSAgICAiWydhYSddIiwKLSAgICAiWydiJ10iLAotICAgICJbJ2JhJ10iLAotCi0gICAgIlsnXHhB
MiddIiwgLy8gVSswMEEyIENFTlQgU0lHTgotICAgICJbJ1x1NkMzNCddIiwgLy8gVSs2QzM0IENK
SyBVTklGSUVEIElERU9HUkFQSCAod2F0ZXIpCi0gICAgIlsnXHVEODM0XHVERDFFJ10iLCAvLyBV
KzFEMTFFIE1VU0lDQUwgU1lNQk9MIEctQ0xFRiAoVVRGLTE2IHN1cnJvZ2F0ZSBwYWlyKQotICAg
ICJbJ1x1RkZGRCddIiwgLy8gVStGRkZEIFJFUExBQ0VNRU5UIENIQVJBQ1RFUgotCi0gICAgIltb
XV0iLAotCi0gICAgIltbXSwgW11dIiwKLSAgICAiW1tdLCBbXSwgW11dIiwKLQotICAgICJbW1td
XV0iLAotICAgICJbW1tbXV1dXSIKLV07Ci0KLWZ1bmN0aW9uIGNvbXBhcmUoYSwgYikKLXsKLSAg
ICBpZiAodHlwZW9mIGEgIT09IHR5cGVvZiBiKSB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0KLSAgICBzd2l0Y2ggKHR5cGVvZiBhKSB7Ci0gICAgICAgIGNhc2UgJ3VuZGVmaW5lZCc6
IC8vIE5vdCB2YWxpZCBrZXlzLCBidXQgY29tcGFyZSBhbnl3YXkuCi0gICAgICAgIGNhc2UgJ2Jv
b2xlYW4nOiAvLyBOb3QgdmFsaWQga2V5cywgYnV0IGNvbXBhcmUgYW55d2F5LgotICAgICAgICBj
YXNlICdzdHJpbmcnOgotICAgICAgICAgICAgcmV0dXJuIGEgPT09IGI7Ci0gICAgICAgIGNhc2Ug
J251bWJlcic6Ci0gICAgICAgICAgICBpZiAoYSA9PT0gYikgewotICAgICAgICAgICAgICAgIHJl
dHVybiAoYSAhPT0gMCkgfHwgKDEgLyBhID09PSAxIC8gYik7IC8vIDAgaXNuJ3QgLTAKLSAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGEgIT09IGEgJiYgYiAhPT0g
YjsgLy8gTmFOIGlzIE5hTgotICAgICAgICAgICAgfQotICAgICAgICBjYXNlICdvYmplY3QnOgot
ICAgICAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBEYXRlICYmIGIgaW5zdGFuY2VvZiBEYXRlKSB7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuICthID09PSArYjsKLSAgICAgICAgICAgIH0gZWxzZSBp
ZiAoYSBpbnN0YW5jZW9mIEFycmF5ICYmIGIgaW5zdGFuY2VvZiBBcnJheSkgewotICAgICAgICAg
ICAgICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFj
b21wYXJlKGFbaV0sIGJbaV0pKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBGb3IgdGhl
IHB1cnBvc2VzIG9mIHRoaXMgdGVzdCwgb3RoZXIgb2JqZWN0cyBkb24ndCBjb3VudAotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLX0KLQotZnVuY3Rpb24gcG9wdWxhdGVTdG9yZSgpCi17Ci0gICAgZGVi
dWcoIiIpOwotICAgIGRlYnVnKCJwb3B1bGF0aW5nIHN0b3JlLi4uIik7Ci0gICAgZXZhbEFuZExv
ZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dS
SVRFKSIpOwotICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3Jl
Jyk7Iik7Ci0gICAgdHJhbnMub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAg
IHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB2YXIgY291bnQg
PSAwOwotICAgIGtleXMuZm9yRWFjaChmdW5jdGlvbihrZXkpIHsKLSAgICAgICAgZXZhbEFuZExv
Zygic3RvcmUucHV0KCIgKyAoY291bnQrKykgKyAiLCAiICsga2V5ICsgIikiKTsKLSAgICB9KTsK
LSAgICB0cmFucy5vbmNvbXBsZXRlID0gY2hlY2tTdG9yZTsKLX0KLQotZnVuY3Rpb24gY2hlY2tT
dG9yZSgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJpdGVyYXRpbmcgY3Vyc29yLi4u
Iik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJU
cmFuc2FjdGlvbi5SRUFEX09OTFkpIik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5v
YmplY3RTdG9yZSgnc3RvcmUnKTsiKTsKLSAgICB0cmFucy5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNr
OwotICAgIGV2YWxBbmRMb2coImNvdW50ID0gMCIpOwotICAgIGN1cnJlcSA9IGV2YWxBbmRMb2co
ImN1cnJlcSA9IHN0b3JlLm9wZW5DdXJzb3IoKSIpOwotICAgIGN1cnJlcS5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgY3VycmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkg
ewotICAgICAgICBpZiAoY3VycmVxLnJlc3VsdCkgewotICAgICAgICAgICAgZXZhbEFuZExvZygi
Y3Vyc29yID0gY3VycmVxLnJlc3VsdCIpOwotICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJjb21w
YXJlKGN1cnNvci5rZXksICIgKyBrZXlzW2NvdW50XSArICIpIik7Ci0gICAgICAgICAgICBldmFs
QW5kTG9nKCJnZXRyZXEgPSBzdG9yZS5nZXQoY3Vyc29yLmtleSkiKTsKLSAgICAgICAgICAgIGdl
dHJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgICAgICBnZXRy
ZXEub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVl
KCJnZXRyZXEucmVzdWx0ID09PSBjb3VudCsrIik7Ci0gICAgICAgICAgICAgICAgY3Vyc29yLmNv
bnRpbnVlKCk7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
c2hvdWxkQmVUcnVlKCJjb3VudCA9PT0ga2V5cy5sZW5ndGgiKTsKLSAgICAgICAgICAgIGZpbmlz
aFVwKCk7Ci0gICAgICAgIH0KLSAgICB9OwotfQotCi1mdW5jdGlvbiBmaW5pc2hVcCgpCi17Ci0g
ICAgdGVzdEtleUNvbXBhcmUoKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24g
dGVzdEtleUNvbXBhcmUoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygidmFsaWRhdGUg
Y29tcGFyZSBmdW5jdGlvbiIpOwotICAgIHZhciBjYXNlcyA9IFsKLSAgICAgICAgInVuZGVmaW5l
ZCIsCi0gICAgICAgICJ0cnVlIiwKLSAgICAgICAgImZhbHNlIiwKLSAgICAgICAgIjAiLAotICAg
ICAgICAiLTAiLAotICAgICAgICAiMTIzIiwKLSAgICAgICAgIkluZmluaXR5IiwKLSAgICAgICAg
Ii1JbmZpbml0eSIsCi0gICAgICAgICJOYU4iLAotICAgICAgICAiJyciLAotICAgICAgICAiJ2Fi
YyciLAotICAgICAgICAiJ3h5eiciLAotICAgICAgICAibmV3IERhdGUoMCkiLAotICAgICAgICAi
bmV3IERhdGUoMWUzKSIsCi0gICAgICAgICJuZXcgRGF0ZSgxZTkpIiwKLSAgICAgICAgIltdIiwK
LSAgICAgICAgIlsxMjNdIiwKLSAgICAgICAgIlsnYWJjJ10iLAotICAgICAgICAiWzEyMywgJ2Fi
YyddIiwKLSAgICAgICAgIlsnYWJjJywgMTIzXSIsCi0gICAgICAgICJbW11dIiwKLSAgICAgICAg
IltbMTIzXV0iLAotICAgICAgICAiW1snYWJjJ11dIiwKLSAgICAgICAgIltbMTIzXSwgJ2FiYydd
IiwKLSAgICAgICAgIltbMTIzXSwgMTIzXSIKLSAgICBdOwotCi0gICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBjYXNlcy5sZW5ndGg7ICsraSkgewotICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGNh
c2VzLmxlbmd0aDsgKytqKSB7Ci0gICAgICAgICAgICBpZiAoaSA9PT0gaikgewotICAgICAgICAg
ICAgICAgIHNob3VsZEJlVHJ1ZSgiY29tcGFyZSgiICsgY2FzZXNbaV0gKyAiLCAiICsgY2FzZXNb
al0gKyAiKSIpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBzaG91bGRC
ZUZhbHNlKCJjb21wYXJlKCIgKyBjYXNlc1tpXSArICIsICIgKyBjYXNlc1tqXSArICIpIik7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2N1cnNvci1rZXktb3JkZXIuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9jdXJzb3ItcHJpbWFyeS1rZXktb3JkZXIuaHRtbCBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1wcmltYXJ5LWtleS1vcmRlci5odG1sCmluZGV4IGE3YzM1
ZTc5YjkyOWE0NTNkNGEzYTgyNjEzZGU4OGUyNDFjM2FmYWUuLjNmMTkzYWJiNGNlYjJmZTExZmUx
NTMwYjFiYTcxOWI4YzhhYWUwZWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2N1cnNvci1wcmltYXJ5LWtleS1vcmRlci5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1wcmltYXJ5LWtleS1vcmRlci5odG1sCkBAIC0xLDEwOCAr
MSwxMCBAQAogPGh0bWw+CiA8aGVhZD4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgogPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNj
cmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIHByaW1hcnkga2V5IG9yZGVyaW5n
IGFuZCByZWFkYmFjayBmcm9tIGN1cnNvcnMuIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAg
IHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBwcmVwYXJlRGF0YWJhc2UoKTsKLX0KLQot
ZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZXZhbEFu
ZExvZygib3BlblJlcXVlc3QgPSBpbmRleGVkREIub3BlbignY3Vyc29yLXByaW1hcnkta2V5LW9y
ZGVyJykiKTsKLSAgICBvcGVuUmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci0gICAgb3BlblJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGV2
YWxBbmRMb2coImRiID0gb3BlblJlcXVlc3QucmVzdWx0Iik7Ci0gICAgICAgIGV2YWxBbmRMb2co
InZlcnNpb25DaGFuZ2VSZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgICAgIHZl
cnNpb25DaGFuZ2VSZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAg
ICAgICAgdmVyc2lvbkNoYW5nZVJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScp
Iik7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCdp
bmRleCcsICdpbmRleEtleScpIik7Ci0KLSAgICAgICAgICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0
LnJlc3VsdC5vbmNvbXBsZXRlID0gcG9wdWxhdGVTdG9yZTsKLSAgICAgICAgfTsKLSAgICB9Owot
fQotCi1zZWxmLmtleXMgPSBbCi0gICAgIi1JbmZpbml0eSIsCi0gICAgIi0yIiwKLSAgICAiLTEi
LAotICAgICIwIiwKLSAgICAiMSIsCi0gICAgIjIiLAotICAgICJJbmZpbml0eSIsCi0KLSAgICAi
JzAnIiwKLSAgICAiJzEnIiwKLSAgICAiJzInIiwKLSAgICAiJ0EnIiwKLSAgICAiJ0InIiwKLSAg
ICAiJ0MnIiwKLSAgICAiJ2EnIiwKLSAgICAiJ2InIiwKLSAgICAiJ2MnIgotXTsKLQotCi1mdW5j
dGlvbiBwb3B1bGF0ZVN0b3JlKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInBvcHVs
YXRpbmcgc3RvcmUuLi4iKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9u
KCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFuZExvZygi
c3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsiKTsKLSAgICB0cmFucy5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0
ZWRBYm9ydENhbGxiYWNrOwotICAgIHZhciBjb3VudCA9IDA7Ci0gICAgdmFyIGluZGV4S2V5ID0g
MDsKLSAgICB2YXIga2V5cyA9IHNlbGYua2V5cy5zbGljZSgpOwotICAgIGtleXMucmV2ZXJzZSgp
OwotICAgIGtleXMuZm9yRWFjaChmdW5jdGlvbihrZXkpIHsKLSAgICAgICAgdmFyIHZhbHVlID0g
eyBpbmRleEtleTogaW5kZXhLZXksIGNvdW50OiBjb3VudCsrIH07Ci0gICAgICAgIGV2YWxBbmRM
b2coInN0b3JlLnB1dCgiICsgSlNPTi5zdHJpbmdpZnkodmFsdWUpICsgIiwgIiArIGtleSArICIp
Iik7Ci0gICAgfSk7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IGNoZWNrU3RvcmU7Ci19Ci0KLWZ1
bmN0aW9uIGNoZWNrU3RvcmUoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiaXRlcmF0
aW5nIGN1cnNvci4uLiIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24o
J3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKSIpOwotICAgIGV2YWxBbmRMb2coInN0
b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7Iik7Ci0gICAgZXZhbEFuZExvZygiaW5k
ZXggPSBzdG9yZS5pbmRleCgnaW5kZXgnKTsiKTsKLSAgICB0cmFucy5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENh
bGxiYWNrOwotICAgIGN1cnNvclJlcXVlc3QgPSBldmFsQW5kTG9nKCJjdXJzb3JSZXF1ZXN0ID0g
aW5kZXgub3BlbkN1cnNvcigpIik7Ci0gICAgZXZhbEFuZExvZygiY291bnQgPSAwIik7Ci0gICAg
dmFyIGluZGV4S2V5ID0gMDsKLSAgICBjdXJzb3JSZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLSAgICBjdXJzb3JSZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkg
ewotICAgICAgICBpZiAoY3Vyc29yUmVxdWVzdC5yZXN1bHQpIHsKLSAgICAgICAgICAgIGV2YWxB
bmRMb2coImN1cnNvciA9IGN1cnNvclJlcXVlc3QucmVzdWx0Iik7Ci0gICAgICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLmtleSIsIFN0cmluZyhpbmRleEtleSkpOwotICAgICAgICAgICAgc2hvdWxk
QmUoImN1cnNvci5wcmltYXJ5S2V5Iiwgc2VsZi5rZXlzW2NvdW50KytdKTsKLSAgICAgICAgICAg
IGN1cnNvci5jb250aW51ZSgpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc2hvdWxk
QmVUcnVlKCJjb3VudCA9PT0ga2V5cy5sZW5ndGgiKTsKLSAgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOwotICAgICAgICB9Ci0gICAgfTsKLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvY3Vyc29yLXByaW1hcnkta2V5LW9yZGVyLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvY3Vyc29yLXJldmVyc2UtYnVnLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9jdXJzb3ItcmV2ZXJzZS1idWcuaHRtbAppbmRleCAxYTY2MWM0NmUwMDgyM2Q5
NjFmNTc1ZTc5NTEwNTk1MjdjNTVmNzAzLi5lYmVmNTkzODgwOTQ3NmE0MDYwYTNhZmQ1MTRhMDRk
MDdjMmVjM2MzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJz
b3ItcmV2ZXJzZS1idWcuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9j
dXJzb3ItcmV2ZXJzZS1idWcuaHRtbApAQCAtNCwxMDcgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJl
c291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0Pgot
Ci1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIga2V5cyBvcmRlcmluZyBhbmQgcmVhZGJhY2sg
ZnJvbSBjdXJzb3JzLiIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQ
cmVmaXhlcygpOwotCi0gICAgcHJlcGFyZURhdGFiYXNlKCk7Ci19Ci0KLWZ1bmN0aW9uIHByZXBh
cmVEYXRhYmFzZSgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGV2YWxBbmRMb2coIm9wZW5yZXEg
PSBpbmRleGVkREIub3BlbignY3Vyc29yLXJldmVyc2UtYnVnJykiKTsKLSAgICBvcGVucmVxLm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICBvcGVucmVxLm9uc3VjY2VzcyA9
IGZ1bmN0aW9uKCkgewotICAgICAgICBldmFsQW5kTG9nKCJkYiA9IG9wZW5yZXEucmVzdWx0Iik7
Ci0gICAgICAgIGV2YWxBbmRMb2coInZlcnJlcSA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAg
ICAgICB2ZXJyZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICB2
ZXJyZXEub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBkZWxldGVBbGxPYmpl
Y3RTdG9yZXMoZGIpOwotICAgICAgICAgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJz
dG9yZS5jcmVhdGVJbmRleCgnaW5kZXgnLCAnJykiKTsKLSAgICAgICAgICAgIHZlcnJlcS5yZXN1
bHQub25jb21wbGV0ZSA9IHBvcHVsYXRlU3RvcmU7Ci0gICAgICAgIH07Ci0gICAgfTsKLX0KLQot
ZnVuY3Rpb24gcG9wdWxhdGVTdG9yZSgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJw
b3B1bGF0aW5nIHN0b3JlLi4uIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2Fj
dGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIGV2YWxBbmRM
b2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7Iik7Ci0gICAgdHJhbnMub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4
cGVjdGVkQWJvcnRDYWxsYmFjazsKLQotICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgxLCAxKSIp
OwotICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgyLCAyKSIpOwotICAgIGV2YWxBbmRMb2coInN0
b3JlLnB1dCgzLCAzKSIpOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSB0ZXN0Q3Vyc29yOwotfQot
Ci12YXIgdGVzdHMgPSBbCi0gICAgICAgICAgICAgICAge3VwcGVyQm91bmQ6IDcsIG9wZW46IGZh
bHNlLCBleHBlY3RlZDogM30sCi0gICAgICAgICAgICAgICAge3VwcGVyQm91bmQ6IDcsIG9wZW46
IHRydWUsICBleHBlY3RlZDogM30sCi0gICAgICAgICAgICAgICAge3VwcGVyQm91bmQ6IDMsIG9w
ZW46IGZhbHNlLCBleHBlY3RlZDogM30sCi0gICAgICAgICAgICAgICAge3VwcGVyQm91bmQ6IDMs
IG9wZW46IHRydWUsICBleHBlY3RlZDogMn0KLSAgICAgICAgICAgIF07Ci0KLWZ1bmN0aW9uIHRl
c3RDdXJzb3IoKQotewotICAgIGRlYnVnKCJ0ZXN0Q3Vyc29yKCkiKTsKLQotICAgIGlmICh0ZXN0
cy5sZW5ndGggPT09IDApIHsKLSAgICAgICAgZGVidWcoIk5vIG1vcmUgdGVzdHMuIik7Ci0gICAg
ICAgIGZpbmlzaEpTVGVzdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdGVzdCA9
IHRlc3RzLnNoaWZ0KCk7Ci0KLSAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9u
KCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkiKTsKLSAgICB0cmFucy5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0
ZWRBYm9ydENhbGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSB0ZXN0Q3Vyc29yOwotICAg
IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7Iik7Ci0gICAg
ZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5pbmRleCgnaW5kZXgnKTsiKTsKLQotICAgIHZhciB0
ZXN0RnVuY3Rpb24gPSBmdW5jdGlvbigpIHsKLSAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgICAgICBpZiAoY3Vyc29yID09PSBudWxsKSB7Ci0g
ICAgICAgICAgICBkZWJ1ZygiY3Vyc29yIHNob3VsZCBub3QgYmUgbnVsbCIpOwotICAgICAgICAg
ICAgZmFpbCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgc2hv
dWxkQmUoImN1cnNvci5rZXkiLCAidGVzdC5leHBlY3RlZCIpOwotICAgICAgICBpZiAoInZhbHVl
IiBpbiBjdXJzb3IpCi0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgInRlc3Qu
ZXhwZWN0ZWQiKTsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgInRlc3Qu
ZXhwZWN0ZWQiKTsKLQotICAgICAgICAvLyBMZXQgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaC4KLSAg
ICB9Ci0KLSAgICBkZWJ1ZygidXBwZXJCb3VuZDogIiArIHRlc3QudXBwZXJCb3VuZCArICIgb3Bl
bjogIiArIHRlc3Qub3BlbiArICIgZXhwZWN0ZWQ6ICIgKyB0ZXN0LmV4cGVjdGVkKTsKLSAgICBz
dG9yZVJlcSA9IGV2YWxBbmRMb2coInN0b3JlUmVxID0gc3RvcmUub3BlbkN1cnNvcihJREJLZXlS
YW5nZS51cHBlckJvdW5kKHRlc3QudXBwZXJCb3VuZCwgdGVzdC5vcGVuKSwgSURCQ3Vyc29yLlBS
RVYpIik7Ci0gICAgc3RvcmVSZXEub25zdWNjZXNzID0gdGVzdEZ1bmN0aW9uOwotCi0gICAgaW5k
ZXhSZXEgPSBldmFsQW5kTG9nKCJpbmRleFJlcSA9IGluZGV4Lm9wZW5DdXJzb3IoSURCS2V5UmFu
Z2UudXBwZXJCb3VuZCh0ZXN0LnVwcGVyQm91bmQsIHRlc3Qub3BlbiksIElEQkN1cnNvci5QUkVW
KSIpOwotICAgIGluZGV4UmVxLm9uc3VjY2VzcyA9IHRlc3RGdW5jdGlvbjsKLQotICAgIGluZGV4
S2V5UmVxID0gZXZhbEFuZExvZygiaW5kZXhLZXlSZXEgPSBpbmRleC5vcGVuS2V5Q3Vyc29yKElE
QktleVJhbmdlLnVwcGVyQm91bmQodGVzdC51cHBlckJvdW5kLCB0ZXN0Lm9wZW4pLCBJREJDdXJz
b3IuUFJFVikiKTsKLSAgICBpbmRleEtleVJlcS5vbnN1Y2Nlc3MgPSB0ZXN0RnVuY3Rpb247Ci19
Ci0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2N1cnNvci1y
ZXZlcnNlLWJ1Zy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KLQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXNraXAtZGVsZXRl
ZC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXNraXAtZGVsZXRl
ZC5odG1sCmluZGV4IDUxYWNkMzRkNjQ1ZWJkZTEzNmI3MjJiNDAyY2VmOTNlOGFmZTYyODIuLmEw
Y2RiYmNhYjFlODNiM2U5OTdlYjUxYTEzMzFkY2Q5ZTI5NjkxNDIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1za2lwLWRlbGV0ZWQuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3Itc2tpcC1kZWxldGVkLmh0bWwKQEAg
LTQsMjAwICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Njcmlw
dD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhl
ZERCJ3MgY3Vyc29yIHNraXBzIGRlbGV0ZWQgZW50cmllcy4iKTsKLQotdmFyIG5hbWVzID0gWydB
bHBoYScsICdCcmF2bycsICdDaGFybGllJywgJ0RlbHRhJywgJ0VjaG8nLCAnRm94dHJvdCcsICdH
b2xmJywKLSAgICAgICAgICAgICAnSG90ZWwnLCAnSW5kaWEnLCAnSnVsaWV0JywgJ0tpbG8nLCAn
TGltYScsICdNaWtlJywgJ05vdmVtYmVyJywKLSAgICAgICAgICAgICAnT3NjYXInLCAnUGFwYScs
ICdRdWViZWMnLCAnUm9tZW8nLCAnU2llcnJhJywgJ1RhbmdvJywgJ1VuaWZvcm0nLAotICAgICAg
ICAgICAgICdWaWN0b3InLCAnV2hpc2tleScsICdYLXJheScsICdZYW5rZWUnLCAnWnVsdSddOwot
Ci10ZXN0KCk7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVz
KCk7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdjdXJzb3Itc2tp
cC1kZWxldGVkJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlv
biBvcGVuU3VjY2VzcygpCi17Ci0gICAgdmFyIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50
YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lv
bignbmV3IHZlcnNpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1
Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19
Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb25TdWNjZXNzKCkKLXsKLSAgICBkZWJ1Zygic2V0VmVyc2lv
blN1Y2Nlc3MoKToiKTsKLSAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwot
ICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5v
bmNvbXBsZXRlID0gYmFzaWNDdXJzb3JUZXN0OwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVz
KGRiKTsKLQotICAgIHZhciBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJywge2tleVBhdGg6ICdpZCd9KSIpOwotICAgIGV2
YWxBbmRMb2coIm9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCduYW1lSW5kZXgnLCAnbmFtZScpIik7
Ci0gICAgcmVzZXRPYmplY3RTdG9yZShmdW5jdGlvbigpIHt9KTsKLX0KLQotdmFyIHNpbGVudEVy
cm9ySGFuZGxlciA9IGZ1bmN0aW9uKCkgeyBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyB9Ci0KLWZ1
bmN0aW9uIHJlc2V0T2JqZWN0U3RvcmUoY2FsbGJhY2spCi17Ci0gICAgZGVidWcoIlxucmVzZXRP
YmplY3RTdG9yZSgpOiIpOwotICAgIGlmIChjYWxsYmFjayA9PT0gdW5kZWZpbmVkKQotICAgICAg
ICBjYWxsYmFjayA9IGZ1bmN0aW9uICgpIHt9OwotCi0gICAgdmFyIG9iamVjdFN0b3JlID0gdHJh
bnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lcy5s
ZW5ndGg7IGkrKykKLSAgICAgICAgb2JqZWN0U3RvcmUuZGVsZXRlKGkpLm9uZXJyb3IgPSBzaWxl
bnRFcnJvckhhbmRsZXI7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkr
KykKLSAgICAgICAgb2JqZWN0U3RvcmUuYWRkKHtpZDogaSwgbmFtZTogbmFtZXNbaV19KS5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0KLSAgICBkZWJ1ZygiIik7Ci0gICAgY2Fs
bGJhY2soKTsKLX0KLQotZnVuY3Rpb24gY29udGFpbnMoYXJyLCBvYmopCi17Ci0gICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgaWYgKGFycltpXSA9PSBv
YmopCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi12YXIgY3Vyc29yOwotdmFyIGRlbGV0ZWQ7Ci12YXIgc2VlbjsKLQotZnVuY3Rpb24gdGVz
dEN1cnNvcihkZWxldGVMaXN0LCBjcmVhdGVDdXJzb3JDb21tYW5kLCBjYWxsYmFjaykKLXsKLSAg
ICBkZWJ1ZygiXG50ZXN0Q3Vyc29yKCk6Iik7Ci0gICAgZGVsZXRlZCA9IFtdOwotICAgIHNlZW4g
PSBbXTsKLQotICAgIC8vIENyZWF0ZSB0aGUgY3Vyc29yLgotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKGNyZWF0ZUN1cnNvckNvbW1hbmQpOwotCi0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7
Ci0gICAgICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0ID09IG51bGwpIHsKLSAgICAgICAgICAg
IC8vIE1ha2Ugc3VyZSB3ZSBoYXZlIHNlZW4gZXZlcnkgbm9uLWRlbGV0ZWQgaXRlbS4KLSAgICAg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAg
ICAgICAgICBpZiAoY29udGFpbnMoZGVsZXRlZCwgaSkpCi0gICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotCi0gICAgICAgICAgICAgICAgaWYgKCFjb250YWlucyhzZWVuLCBpKSkKLSAgICAg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiQ3Vyc29yIGRpZCBub3Qgc2VlIGl0ZW0gd2l0aCBp
ZDogIiArIGkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBNYWtlIHN1cmUgd2Ug
dXNlZCBldmVyeSBydWxlIGluIHxkZWxldGVMaXN0fC4KLSAgICAgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgZGVsZXRlTGlzdC5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgICAgIGlmICgh
Y29udGFpbnMoc2VlbiwgZGVsZXRlTGlzdFtpXS5pZCkpCi0gICAgICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoImRlbGV0ZUxpc3QgcnVsZSB3aXRoIGlkOiAiICsgZGVsZXRlTGlzdFtpXS5pZCAr
ICIgd2FzIG5ldmVyIHVzZWQuIik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGRlYnVn
KCIiKTsKLSAgICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLQotICAgICAgICBjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OwotICAgICAgICBk
ZWJ1ZyhldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLmlkICsgIjogIiArIGV2ZW50LnRhcmdldC5y
ZXN1bHQudmFsdWUubmFtZSk7Ci0gICAgICAgIHNlZW4ucHVzaChldmVudC50YXJnZXQucmVzdWx0
LnZhbHVlLmlkKTsKLQotICAgICAgICAvLyBNYWtlIHN1cmUgd2UgZG9uJ3Qgc2VlIGFueSBkZWxl
dGVkIGl0ZW1zLgotICAgICAgICBpZiAoY29udGFpbnMoZGVsZXRlZCwgZXZlbnQudGFyZ2V0LnJl
c3VsdC52YWx1ZS5pZCkpCi0gICAgICAgICAgICB0ZXN0RmFpbGVkKCJDdXJzb3IgaGl0IHByZXZp
b3VzbHkgZGVsZXRlZCBlbGVtZW50LiIpOwotCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
ZGVsZXRlTGlzdC5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5y
ZXN1bHQudmFsdWUuaWQgPT0gZGVsZXRlTGlzdFtpXS5pZCkgewotICAgICAgICAgICAgICAgIC8v
IERlbGV0ZSBvYmplY3RzIHRhcmdldGVkIGJ5IHRoaXMgaWQuCi0gICAgICAgICAgICAgICAgdmFy
IHRhcmdldHMgPSBkZWxldGVMaXN0W2ldLnRhcmdldHM7Ci0gICAgICAgICAgICAgICAgZm9yICh2
YXIgaiA9IDA7IGogPCB0YXJnZXRzLmxlbmd0aDsgaisrKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGRlbGV0ZWQucHVzaCh0YXJnZXRzW2pdKTsKLSAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKS5kZWxldGUo
IiArIHRhcmdldHNbal0gKyAiKSIpOwotICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGog
PT0gdGFyZ2V0cy5sZW5ndGggLSAxKQotICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgY3Vyc29yLmNvbnRpbnVlKCk7IH0KLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0KLSAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBiYXNp
Y0N1cnNvclRlc3QoKQotewotICAgIGRlYnVnKCJiYXNpY0N1cnNvclRlc3QoKSIpOwotCi0gICAg
ZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0
aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENh
bGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSB0cmFuc2FjdGlvbkNvbXBsZXRlOwotCi0g
ICAgdmFyIGRlbGV0ZXMgPSBbe2lkOiAxLCB0YXJnZXRzOiBbMF19LAotICAgICAgICAgICAgICAg
ICAgIHtpZDogMiwgdGFyZ2V0czogW25hbWVzLmxlbmd0aCAtIDFdfSwKLSAgICAgICAgICAgICAg
ICAgICB7aWQ6IDMsIHRhcmdldHM6IFs1LDYsN119LAotICAgICAgICAgICAgICAgICAgIHtpZDog
MTAsIHRhcmdldHM6IFsxMF19LAotICAgICAgICAgICAgICAgICAgIHtpZDogMTIsIHRhcmdldHM6
IFsxM119LAotICAgICAgICAgICAgICAgICAgIHtpZDogMTUsIHRhcmdldHM6IFsxNF19LAotICAg
ICAgICAgICAgICAgICAgIHtpZDogMjAsIHRhcmdldHM6IFsxNywxOF19Ci0gICAgICAgICAgICAg
ICAgICAgXTsKLQotICAgIHRlc3RDdXJzb3IoZGVsZXRlcywgInRyYW5zLm9iamVjdFN0b3JlKCdz
dG9yZScpLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgwKSkiLCBmdW5jdGlvbigp
IHsgcmVzZXRPYmplY3RTdG9yZShyZXZlcnNlQ3Vyc29yVGVzdCk7IH0pOwotfQotCi1mdW5jdGlv
biByZXZlcnNlQ3Vyc29yVGVzdCgpCi17Ci0gICAgZGVidWcoInJldmVyc2VDdXJzb3JUZXN0KCk6
Iik7Ci0KLSAgICB2YXIgZGVsZXRlcyA9IFt7aWQ6IDI0LCB0YXJnZXRzOiBbbmFtZXMubGVuZ3Ro
IC0gMV19LAotICAgICAgICAgICAgICAgICAgIHtpZDogMjMsIHRhcmdldHM6IFswXX0sCi0gICAg
ICAgICAgICAgICAgICAge2lkOiAyMiwgdGFyZ2V0czogWzIwLCAxOSwgMThdfSwKLSAgICAgICAg
ICAgICAgICAgICB7aWQ6IDE1LCB0YXJnZXRzOiBbMTVdfSwKLSAgICAgICAgICAgICAgICAgICB7
aWQ6IDEzLCB0YXJnZXRzOiBbMTJdfSwKLSAgICAgICAgICAgICAgICAgICB7aWQ6IDEwLCB0YXJn
ZXRzOiBbMTFdfSwKLSAgICAgICAgICAgICAgICAgICB7aWQ6IDUsIHRhcmdldHM6IFs3LDhdfQot
ICAgICAgICAgICAgICAgICAgIF07Ci0KLQotICAgIHRlc3RDdXJzb3IoZGVsZXRlcywgInRyYW5z
Lm9iamVjdFN0b3JlKCdzdG9yZScpLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgw
KSwgSURCQ3Vyc29yLlBSRVYpIiwgZnVuY3Rpb24oKSB7IHJlc2V0T2JqZWN0U3RvcmUoaW5kZXhD
dXJzb3JUZXN0KTsgfSk7Ci19Ci0KLWZ1bmN0aW9uIGluZGV4Q3Vyc29yVGVzdCgpCi17Ci0gICAg
ZGVidWcoImluZGV4Q3Vyc29yVGVzdCgpOiIpOwotCi0gICAgdmFyIGRlbGV0ZXMgPSBbe2lkOiAx
LCB0YXJnZXRzOiBbMF19LAotICAgICAgICAgICAgICAgICAgIHtpZDogMiwgdGFyZ2V0czogW25h
bWVzLmxlbmd0aCAtIDFdfSwKLSAgICAgICAgICAgICAgICAgICB7aWQ6IDMsIHRhcmdldHM6IFs1
LDYsN119LAotICAgICAgICAgICAgICAgICAgIHtpZDogMTAsIHRhcmdldHM6IFsxMF19LAotICAg
ICAgICAgICAgICAgICAgIHtpZDogMTIsIHRhcmdldHM6IFsxM119LAotICAgICAgICAgICAgICAg
ICAgIHtpZDogMTUsIHRhcmdldHM6IFsxNF19LAotICAgICAgICAgICAgICAgICAgIHtpZDogMjAs
IHRhcmdldHM6IFsxNywxOF19Ci0gICAgICAgICAgICAgICAgICAgXTsKLQotICAgIHRlc3RDdXJz
b3IoZGVsZXRlcywgInRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpLmluZGV4KCduYW1lSW5kZXgn
KS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLmxvd2VyQm91bmQoJ0FscGhhJykpIiwgZnVuY3Rpb24o
KSB7IH0pOwotfQotCi1mdW5jdGlvbiB0cmFuc2FjdGlvbkNvbXBsZXRlKCkKLXsKLSAgICBkZWJ1
ZygidHJhbnNhY3Rpb25Db21wbGV0ZSgpOiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0K
LTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jdXJzb3Itc2tpcC1kZWxldGVkLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXVwZGF0ZS12YWx1ZS1hcmd1bWVudC1yZXF1
aXJlZC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXVwZGF0ZS12
YWx1ZS1hcmd1bWVudC1yZXF1aXJlZC5odG1sCmluZGV4IGMzZmRjN2VjOGFhYmNhMWYwYmNiNDZj
NzRmZDI5ZjdlOWY3ZDcyM2UuLjY4NTljN2NkZjY0Y2ZkMmUxMWY5MDlhYmJjNjliMWExNWFlZDc0
NjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci11cGRh
dGUtdmFsdWUtYXJndW1lbnQtcmVxdWlyZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9jdXJzb3ItdXBkYXRlLXZhbHVlLWFyZ3VtZW50LXJlcXVpcmVkLmh0bWwKQEAg
LTEsODQgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQg
c3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9k
eT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBjdXJzb3IudXBkYXRl
IHJlcXVpcmVkIGFyZ3VtZW50cyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVW
ZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0g
ICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9
IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IHRlc3RHcm91cDE7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDEoKQotewotICAgIGRlbGV0
ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdhdXRvSW5jcmVtZW50JywgeyBhdXRvSW5jcmVtZW50OiB0cnVl
IH0pOyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9y
ZS5vcGVuQ3Vyc29yKCk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAg
ICAgIHRlc3RHcm91cDIoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDIoKQotewot
ICAgIGtleXMgPSBldmFsQW5kTG9nKCJrZXlzID0gWzEsIC0xLCAwLCAxMCwgMjAwMCwgJ3EnLCAn
eicsICd0d28nLCAnYicsICdhJ107Iik7Ci0KLSAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtl
eUluZGV4ID0gMDsiKTsKLQotICAgIGZvciAoaSBpbiBrZXlzKSB7Ci0gICAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZCgnZm9vJywga2V5c1tpXSk7Iik7
Ci0gICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgaWYgKCsra2V5
SW5kZXggPT0ga2V5cy5sZW5ndGgpIHsKLSAgICAgICAgICB0ZXN0R3JvdXAzKCk7Ci0gICAgICAg
IH0KLSAgICAgIH07Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXAzKCkKLXsKLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKTsi
KTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewotICAgICAgICBjdXJzb3IgPSBl
dmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgICAgICBpZiAo
Y3Vyc29yKSB7Ci0gICAgICAgICAgICBzaG91bGRUaHJvdygiY3Vyc29yLnVwZGF0ZSgpOyIpOwot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdGVzdEZhaWxlZCgiY3Vyc29yIHdhcyBudWxs
Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfQotfQotCi0KLXRl
c3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2N1cnNvci11cGRhdGUt
dmFsdWUtYXJndW1lbnQtcmVxdWlyZWQuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8
L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNv
ci11cGRhdGUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci11cGRh
dGUuaHRtbAppbmRleCA5NjU0YzYyNTBmODEwZjE1MDE0NWIyZDg2OTcwYjcxNDY2ZTYzMTdkLi5h
NDZhNzBkNDcwZjRjMGQ1MDFjYzJiZWFkM2JmYWFkN2I4YzI3M2VjIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItdXBkYXRlLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXVwZGF0ZS5odG1sCkBAIC00LDIyMiArNCw3
IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+
CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGN1cnNv
ciB1cGRhdGUuIik7Ci0KLXRlc3QoKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3Zl
VmVuZG9yUHJlZml4ZXMoKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9w
ZW4oJ2N1cnNvci11cGRhdGUnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nl
c3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0K
LWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICB2YXIgZGIgPSBldmFsQW5kTG9nKCJkYiA9
IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5z
ZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRW
ZXJzaW9uU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJz
ZXRWZXJzaW9uU3VjY2VzcygpOiIpOwotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFu
cyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBu
dWxsIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAg
IHRyYW5zLm9uY29tcGxldGUgPSBvcGVuQmFzaWNDdXJzb3I7Ci0KLSAgICBkZWxldGVBbGxPYmpl
Y3RTdG9yZXMoZGIpOwotCi0gICAgdmFyIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0
U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnYmFzaWNTdG9yZScpIik7Ci0gICAgZXZhbEFu
ZExvZygib2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlMScsICdteUtleTEnKS5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKLSAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQo
J215VmFsdWUyJywgJ215S2V5MicpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIp
OwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnbXlWYWx1ZTMnLCAnbXlLZXkzJyku
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7Ci0gICAgZXZhbEFuZExvZygib2Jq
ZWN0U3RvcmUuYWRkKCdteVZhbHVlNCcsICdteUtleTQnKS5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2siKTsKLQotICAgIHZhciBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVj
dFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2F1dG9JbmNyZW1lbnRTdG9yZScsIHthdXRv
SW5jcmVtZW50OiB0cnVlfSkiKTsKLSAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ2Zv
bzEnKS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKLSAgICBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZS5hZGQoJ2ZvbzInKS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2siKTsKLSAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ2ZvbzMnKS5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKLSAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5h
ZGQoJ2ZvbzQnKS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKLQotICAgIHZh
ciBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ2tleVBhdGhTdG9yZScsIHtrZXlQYXRoOiAnaWQnfSkiKTsKLSAgICBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgnbnVtYmVySW5kZXgnLCAnbnVtYmVyJykiKTsKLSAg
ICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoe251bWJlcjogMSwgaWQ6IDF9KS5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKLSAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9y
ZS5hZGQoe251bWJlcjogMiwgaWQ6IDJ9KS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2siKTsKLSAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoe251bWJlcjogMywgaWQ6IDN9
KS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKLSAgICBldmFsQW5kTG9nKCJv
YmplY3RTdG9yZS5hZGQoe251bWJlcjogNCwgaWQ6IDR9KS5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2siKTsKLX0KLQotZnVuY3Rpb24gb3BlbkJhc2ljQ3Vyc29yKCkKLXsKLSAgICBk
ZWJ1Zygib3BlbkJhc2ljQ3Vyc29yKCkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRy
YW5zYWN0aW9uKFsnYmFzaWNTdG9yZScsICdhdXRvSW5jcmVtZW50U3RvcmUnLCAna2V5UGF0aFN0
b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgdHJhbnMub25hYm9ydCA9
IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSB0cmFuc2Fj
dGlvbkNvbXBsZXRlOwotCi0gICAga2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKCJt
eUtleTEiKTsKLSAgICBzZWxmLm9iamVjdFN0b3JlID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0
U3RvcmUoJ2Jhc2ljU3RvcmUnKSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZS5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYmFz
aWNVcGRhdGVDdXJzb3I7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci0gICAgY291bnRlciA9IDE7Ci19Ci0KLWZ1bmN0aW9uIGJhc2ljVXBkYXRlQ3Vyc29y
KCkKLXsKLSAgICBkZWJ1ZygiYmFzaWNVcGRhdGVDdXJzb3IoKSIpOwotICAgIHNob3VsZEJlKCJl
dmVudC50YXJnZXQuc291cmNlIiwgIm9iamVjdFN0b3JlIik7Ci0gICAgaWYgKGV2ZW50LnRhcmdl
dC5yZXN1bHQgPT0gbnVsbCkgewotICAgICAgICBzaG91bGRCZSgiY291bnRlciIsICI1Iik7Ci0g
ICAgICAgIGNvdW50ZXIgPSAxOwotCi0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFu
cy5vYmplY3RTdG9yZSgnYmFzaWNTdG9yZScpLm9wZW5DdXJzb3Ioa2V5UmFuZ2UpIik7Ci0gICAg
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYmFzaWNDaGVja0N1cnNvcjsKLSAgICAgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC51cGRh
dGUoJ215VXBkYXRlZFZhbHVlJyArIGNvdW50ZXIrKykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uKCkgeyBldmFsQW5kTG9nKCJldmVudC50YXJnZXQuc291cmNlLmNvbnRpbnVl
KCkiKTsgfQotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
fQotCi1mdW5jdGlvbiBiYXNpY0NoZWNrQ3Vyc29yKCkKLXsKLSAgICBkZWJ1ZygiYmFzaWNDaGVj
a0N1cnNvcigpIik7Ci0gICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkgewotICAg
ICAgICBzaG91bGRCZSgiY291bnRlciIsICI1Iik7Ci0gICAgICAgIGNvdW50ZXIgPSAxOwotCi0g
ICAgICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgxKTsKLSAgICAgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdhdXRvSW5jcmVtZW50U3RvcmUn
KS5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGF1
dG9JbmNyZW1lbnRVcGRhdGVDdXJzb3I7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICJteUtleSIgKyBjb3Vu
dGVyKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQudmFs
dWUiLCAibXlVcGRhdGVkVmFsdWUiICsgY291bnRlcisrKTsKLSAgICBldmFsQW5kTG9nKCJldmVu
dC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKLX0KLQotZnVuY3Rpb24gYXV0b0luY3JlbWVu
dFVwZGF0ZUN1cnNvcigpCi17Ci0gICAgZGVidWcoImF1dG9JbmNyZW1lbnRVcGRhdGVDdXJzb3Io
KSIpOwotICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0ID09IG51bGwpIHsKLSAgICAgICAgc2hv
dWxkQmUoImNvdW50ZXIiLCAiNSIpOwotICAgICAgICBjb3VudGVyID0gMTsKLQotICAgICAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2F1dG9JbmNyZW1lbnRTdG9y
ZScpLm9wZW5DdXJzb3Ioa2V5UmFuZ2UpIik7Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
YXV0b0luY3JlbWVudENoZWNrQ3Vyc29yOwotICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LnVwZGF0ZSgnbXlVcGRhdGVkRm9v
JyArIGNvdW50ZXIrKykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeyBl
dmFsQW5kTG9nKCJldmVudC50YXJnZXQuc291cmNlLmNvbnRpbnVlKCkiKTsgfQotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBhdXRv
SW5jcmVtZW50Q2hlY2tDdXJzb3IoKQotewotICAgIGRlYnVnKCJhdXRvSW5jcmVtZW50Q2hlY2tD
dXJzb3IoKSIpOwotICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0ID09IG51bGwpIHsKLSAgICAg
ICAgc2hvdWxkQmUoImNvdW50ZXIiLCAiNSIpOwotICAgICAgICBjb3VudGVyID0gMTsKLQotICAg
ICAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQoMSk7Ci0gICAgICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgna2V5UGF0aFN0b3JlJykub3BlbkN1
cnNvcihrZXlSYW5nZSkiKTsKLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBrZXlQYXRoVXBk
YXRlQ3Vyc29yOwotICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHNob3VsZEJlKCJldmVudC50YXJn
ZXQucmVzdWx0LmtleSIsICJjb3VudGVyIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJl
dmVudC50YXJnZXQucmVzdWx0LnZhbHVlIiwgIm15VXBkYXRlZEZvbyIgKyBjb3VudGVyKyspOwot
ICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOwotfQotCi1m
dW5jdGlvbiBrZXlQYXRoVXBkYXRlQ3Vyc29yKCkKLXsKLSAgICBkZWJ1Zygia2V5UGF0aFVwZGF0
ZUN1cnNvcigpIik7Ci0gICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkgewotICAg
ICAgICBzaG91bGRCZSgiY291bnRlciIsICI1Iik7Ci0gICAgICAgIGNvdW50ZXIgPSAxOwotCi0g
ICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgna2V5UGF0aFN0
b3JlJykub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBrZXlQYXRoQ2hlY2tDdXJzb3I7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigiZXZlbnQudGFyZ2V0LnJlc3VsdC51cGRhdGUoe2lkOiAxMDAgKyBjb3Vu
dGVyLCBudW1iZXI6IDEwMCArIGNvdW50ZXJ9KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRB
X0VSUiIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQu
dXBkYXRlKHtpZDogY291bnRlciwgbnVtYmVyOiAxMDAgKyBjb3VudGVyKyt9KSIpOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5z
b3VyY2UuY29udGludWUoKSIpIH07Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGtleVBhdGhDaGVja0N1cnNvcigpCi17Ci0gICAg
ZGVidWcoImtleVBhdGhDaGVja0N1cnNvcigpIik7Ci0gICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1
bHQgPT0gbnVsbCkgewotICAgICAgICBzaG91bGRCZSgiY291bnRlciIsICI1Iik7Ci0gICAgICAg
IGNvdW50ZXIgPSAxOwotCi0gICAgICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2UubG93ZXJCb3Vu
ZCgxMDEpOwotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUo
J2tleVBhdGhTdG9yZScpLmluZGV4KCdudW1iZXJJbmRleCcpLm9wZW5LZXlDdXJzb3Ioa2V5UmFu
Z2UpIik7Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0ga2V5Q3Vyc29yOwotICAgICAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICJjb3Vu
dGVyIik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUuaWQiLCAiY291
bnRlciIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLm51bWJlciIs
IChjb3VudGVyICsgMTAwKS50b1N0cmluZygpKTsKLSAgICBjb3VudGVyKys7Ci0gICAgZXZhbEFu
ZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7Ci19Ci0KLWZ1bmN0aW9uIGtl
eUN1cnNvcigpCi17Ci0gICAgZGVidWcoImtleUN1cnNvcigpIik7Ci0gICAgaWYgKGV2ZW50LnRh
cmdldC5yZXN1bHQgPT0gbnVsbCkgewotICAgICAgICBzaG91bGRCZSgiY291bnRlciIsICI1Iik7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJl
c3VsdC5rZXkiLCAiY291bnRlciArIDEwMCIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQu
cmVzdWx0LnByaW1hcnlLZXkiLCAiY291bnRlciIpOwotCi0gICAgdHJ5IHsKLSAgICAgICAgZGVi
dWcoImV2ZW50LnRhcmdldC5yZXN1bHQudXBkYXRlKHtpZDogY291bnRlciwgbnVtYmVyOiBjb3Vu
dGVyICsgMjAwfSkiKTsKLSAgICAgICAgZXZlbnQudGFyZ2V0LnJlc3VsdC51cGRhdGUoe2lkOiBj
b3VudGVyLCBudW1iZXI6IGNvdW50ZXIgKyAyMDB9KTsKLSAgICAgICAgdGVzdEZhaWxlZCgiRXhw
ZWN0ZWQgZXhjZXB0aW9uLiIpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgY29kZSA9IGUu
Y29kZTsKLSAgICAgICAgc2hvdWxkQmUoImNvZGUiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9U
X0FMTE9XRURfRVJSIik7Ci0gICAgfQotCi0gICAgY291bnRlcisrOwotICAgIGV2ZW50LnRhcmdl
dC5yZXN1bHQuY29udGludWUoKTsKLX0KLQotZnVuY3Rpb24gdHJhbnNhY3Rpb25Db21wbGV0ZSgp
Ci17Ci0gICAgZGVidWcoInRyYW5zYWN0aW9uQ29tcGxldGUoKSIpOwotICAgIGZpbmlzaEpTVGVz
dCgpOwotfQotCi0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jdXJzb3ItdXBk
YXRlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YS1jb3JydXB0aW9uLmh0bWwgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhLWNvcnJ1cHRpb24uaHRtbAppbmRleCA1YzYy
MmU3Yzc4NDJlNzIyNjVmZWQwMmI3NTdlMDg1MTU0ZjBmMGYyLi45NTk3YzViMzUzNWZiY2ZmZDk1
ZDc3MWM5YTg3OWZiODk2OTFiMThlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9kYXRhLWNvcnJ1cHRpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9kYXRhLWNvcnJ1cHRpb24uaHRtbApAQCAtNCw3MSArNCw3IEBACiA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3Jp
cHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IHRoYXQgZGF0YSBpbnNlcnRlZCBpbnRvIEluZGV4ZWRE
QiBkb2VzIG5vdCBnZXQgY29ycnVwdGVkIG9uIGRpc2suIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQot
ewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImluZGV4ZWREQi5vcGVuKCdkYXRhLWNvcnJ1cHRpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkZWJ1Zygib3Bl
blN1Y2Nlc3MoKToiKTsKLSAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJn
ZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbign
bmV3IHZlcnNpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nl
c3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0K
LWZ1bmN0aW9uIHNldFZlcnNpb25TdWNjZXNzKCkKLXsKLSAgICBkZWJ1Zygic2V0VmVyc2lvblN1
Y2Nlc3MoKToiKTsKLSAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50
YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwotICAg
IHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5vbmNv
bXBsZXRlID0gYWRkRGF0YTsKLQotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAg
ICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLX0KLQot
dmFyIHRlc3REYXRlID0gbmV3IERhdGUoJ0ZlYnJ1YXJ5IDI0LCAxOTU1IDEyOjAwOjA4Jyk7Ci0K
LWZ1bmN0aW9uIGFkZERhdGEoKQotewotICAgIGRlYnVnKCJhZGREYXRhKCk6Iik7Ci0gICAgdmFy
IHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihb
J3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIHZhciByZXF1
ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9y
ZU5hbWUnKS5hZGQoe3g6IHRlc3REYXRlfSwgJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9
IGdldERhdGE7Ci19Ci0KLWZ1bmN0aW9uIGdldERhdGEoKQotewotICAgIGRlYnVnKCJhZGREYXRh
KCk6Iik7Ci0gICAgdmFyIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBk
Yi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7
Ci0gICAgdmFyIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gdHJhbnNhY3Rpb24ub2Jq
ZWN0U3RvcmUoJ3N0b3JlTmFtZScpLmdldCgna2V5JykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRvQ2hl
Y2s7Ci19Ci0KLWZ1bmN0aW9uIGRvQ2hlY2soKQotewotICAgIHNob3VsZEJlVHJ1ZSgiZXZlbnQu
dGFyZ2V0LnJlc3VsdC54LnRvU3RyaW5nKCkgPT0gdGVzdERhdGUudG9TdHJpbmcoKSIpOwotICAg
IGZpbmlzaEpTVGVzdCgpOwotfQotCi10ZXN0KCk7Ci0KLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2RhdGEtY29ycnVwdGlvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0i
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9k
eT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Rh
dGFiYXNlLWJhc2ljcy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJh
c2UtYmFzaWNzLmh0bWwKaW5kZXggNzFlNWU1Njg0ZjRmMTQ5ZDFiZDgwYmIxMzhkNzFjZmZlOWEw
ZjlkOS4uMTBlY2IwNTQ0ZTI2OWYxMTcxMzdmZjk3NzY4NTAxYjEzMTk1Yjk0MyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtYmFzaWNzLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtYmFzaWNzLmh0bWwKQEAg
LTQsMTIxICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Njcmlw
dD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgdGhlIGJh
c2ljcyBvZiBJbmRleGVkREIncyBJREJEYXRhYmFzZS4iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17
Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJpbmRleGVkREIub3BlbignZGF0YWJhc2UtYmFzaWNzJykiKTsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgc2VsZi5kYiA9
IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IHNldFZlcnNpb25TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2Vzcygp
Ci17Ci0gICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7Ci0gICAgc2VsZi50cmFucyA9
IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJl
VHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFi
b3J0Q2FsbGJhY2s7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgZGVi
dWcoIlRlc3Rpbmcgc2V0VmVyc2lvbi4iKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygnZGIu
c2V0VmVyc2lvbigidmVyc2lvbiBhIiknKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZl
cnNpb25BZ2FpbjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvbkFnYWluKCkKLXsKLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygnZGIuc2V0VmVyc2lvbigidmVyc2lvbiBiIiknKTsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGNyZWF0ZU9iamVjdFN0b3JlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjcmVhdGVPYmplY3RTdG9yZSgpCi17Ci0g
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkYi52ZXJzaW9uIiwgInZlcnNpb24gYiIpOwotICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGIubmFtZSIsICJkYXRhYmFzZS1iYXNpY3MiKTsKLSAg
ICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcyIsICJbXSIpOwotICAgIHNob3VsZEJlKCJk
Yi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIwIik7Ci0gICAgc2hvdWxkQmUoImRiLm9iamVj
dFN0b3JlTmFtZXMuY29udGFpbnMoJycpIiwgImZhbHNlIik7Ci0gICAgc2hvdWxkQmVOdWxsKCJk
Yi5vYmplY3RTdG9yZU5hbWVzWzBdIik7Ci0gICAgc2hvdWxkQmVOdWxsKCJkYi5vYmplY3RTdG9y
ZU5hbWVzLml0ZW0oMCkiKTsKLQotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygnZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoInRlc3QxMjMiKScpOwotICAgIGNoZWNrT2JqZWN0U3RvcmUoKTsKLSAg
ICBjb21taXRBbmRDb250aW51ZSgpOwotfQotCi1mdW5jdGlvbiBjaGVja09iamVjdFN0b3JlKCkK
LXsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcyIsICJbJ3Rlc3QxMjMnXSIpOwot
ICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIxIik7Ci0gICAgc2hv
dWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJycpIiwgImZhbHNlIik7Ci0gICAg
c2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJ3Rlc3Q0NTYnKSIsICJmYWxz
ZSIpOwotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCd0ZXN0MTIz
JykiLCAidHJ1ZSIpOwotfQotCi1mdW5jdGlvbiBjb21taXRBbmRDb250aW51ZSgpCi17Ci0gICAg
c2VsZi5zZXRUaW1lb3V0KHRlc3RTZXRWZXJzaW9uQWJvcnQsIDApOwotfQotCi1mdW5jdGlvbiB0
ZXN0U2V0VmVyc2lvbkFib3J0KCkKLXsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygnZGIuc2V0
VmVyc2lvbigidmVyc2lvbiBjIiknKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFu
b3RoZXJPYmplY3RTdG9yZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY3JlYXRlQW5vdGhlck9iamVjdFN0b3JlKCkKLXsKLSAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLnZlcnNpb24iLCAidmVyc2lvbiBjIik7Ci0gICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkYi5uYW1lIiwgImRhdGFiYXNlLWJhc2ljcyIpOwotICAg
IGNoZWNrT2JqZWN0U3RvcmUoKTsKLQotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygnZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoInRlc3Q0NTYiKScpOwotICAgIHZhciBzZXRWZXJzaW9uVHJhbnMg
PSBldmFsQW5kTG9nKCJzZXRWZXJzaW9uVHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0g
ICAgc2hvdWxkQmVUcnVlKCJzZXRWZXJzaW9uVHJhbnMgIT09IG51bGwiKTsKLSAgICBzZXRWZXJz
aW9uVHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOwotICAgIHNl
dFZlcnNpb25UcmFucy5vbmFib3J0ID0gY2hlY2tNZXRhZGF0YTsKLSAgICBzZXRWZXJzaW9uVHJh
bnMuYWJvcnQoKTsKLX0KLQotZnVuY3Rpb24gY2hlY2tNZXRhZGF0YSgpCi17Ci0gICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJkYi52ZXJzaW9uIiwgInZlcnNpb24gYiIpOwotICAgIGNoZWNrT2Jq
ZWN0U3RvcmUoKTsKLSAgICB0ZXN0Q2xvc2UoKTsKLX0KLQotZnVuY3Rpb24gdGVzdENsb3NlKCkK
LXsKLSAgICBldmFsQW5kTG9nKCJkYi5jbG9zZSgpIik7Ci0gICAgZGVidWcoIk5vdyB0aGF0IHRo
ZSBjb25uZWN0aW9uIGlzIGNsb3NlZCwgdHJhbnNhY3Rpb24gY3JlYXRpb24gc2hvdWxkIGZhaWwi
KTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbigndGVzdDEyMycp
IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9BTExPV0VEX0VSUiIpOwotICAgIGRlYnVnKCJD
YWxsIHR3aWNlLCBtYWtlIHN1cmUgaXQncyBoYXJtbGVzcyIpOwotICAgIGV2YWxBbmRMb2coImRi
LmNsb3NlKCkiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotdGVzdCgpOwotCi0KLTwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9kYXRhYmFzZS1iYXNpY3MuanMiPjwvc2NyaXB0
PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1uYW1lLXVuZGVmaW5lZC5odG1sIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtbmFtZS11bmRlZmluZWQuaHRtbAppbmRleCA3ODAw
Mjg2ZDlmMWMxMDM2NTEwNTJiYzAzMjA3Nzg1Y2QyYzRhMTA1Li5iNmY5MTQ0NWUzZjIxNjdhMGQ4
YTJkNTU2MjliODVkOTA2NDhhOGRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9kYXRhYmFzZS1uYW1lLXVuZGVmaW5lZC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLW5hbWUtdW5kZWZpbmVkLmh0bWwKQEAgLTEsMjUgKzEs
MTAgQEAKLTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3Jp
cHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiB1bmRlZmluZWQgYXMgcmVjb3JkIHZh
bHVlIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7
Ci0gICAgc2hvdWxkVGhyb3coImluZGV4ZWREQi5vcGVuKCk7Iik7Ci0gICAgZmluaXNoSlNUZXN0
KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
ZGF0YWJhc2UtbmFtZS11bmRlZmluZWQuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFz
ZS1vZGQtbmFtZXMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNl
LW9kZC1uYW1lcy5odG1sCmluZGV4IGYzMzEyOTJmMzVhOWRjZDM0OWUxOWM1NWM0MWFhNDFhNGNm
MzkxYjMuLjEzZWVkOWU5NzdjOWQ2Y2E3YmY4MDEzMTM0Njc2YzRiMmIxOTlmMDUgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLW9kZC1uYW1lcy5odG1s
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLW9kZC1uYW1lcy5o
dG1sCkBAIC0xLDQxICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFk
PgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgb2RkIHZh
bHVlIGRhdGF0eXBlcyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQ
cmVmaXhlcygpOwotCi0gICAgdGVzdERhdGEgPSBbeyBkZXNjcmlwdGlvbjogJ251bGwnLCAgICAg
ICAgICAgICAgIG5hbWU6ICdcdTAwMDAnIH0sCi0gICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlv
bjogJ2ZhaWh1JywgICAgICAgICAgICAgIG5hbWU6ICdcdWQ4MDBcdWRmNDYnIH0sCi0gICAgICAg
ICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ3VucGFpcmVkIHN1cnJvZ2F0ZScsIG5hbWU6ICdcdWQ4
MDAnIH0sCi0gICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ2ZmZmUnLCAgICAgICAgICAg
ICAgIG5hbWU6ICdcdWZmZmUnIH0sCi0gICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ2Zm
ZmYnLCAgICAgICAgICAgICAgIG5hbWU6ICdcdWZmZmYnIH0sCi0gICAgICAgICAgICAgICAgeyBk
ZXNjcmlwdGlvbjogJ2xpbmUgc2VwYXJhdG9yJywgICAgIG5hbWU6ICdcdTIwMjgnIH0KLSAgICBd
OwotICAgIG5leHRUb09wZW4gPSAwOwotICAgIG9wZW5OZXh0RGF0YWJhc2UoKTsKLX0KLQotZnVu
Y3Rpb24gb3Blbk5leHREYXRhYmFzZSgpCi17Ci0gICAgZGVidWcoIm9wZW5pbmcgYSBkYXRhYmFz
ZSBuYW1lZCAiICsgdGVzdERhdGFbbmV4dFRvT3Blbl0uZGVzY3JpcHRpb24pOwotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbih0ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1l
LCB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5kZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9ICsr
bmV4dFRvT3BlbiA8IHRlc3REYXRhLmxlbmd0aCA/IG9wZW5OZXh0RGF0YWJhc2UgOiBmaW5pc2hK
U1Rlc3Q7Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvZGF0YWJhc2Utb2RkLW5hbWVzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2Ut
cXVvdGEuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLXF1b3Rh
Lmh0bWwKaW5kZXggMzM3Njg5MjRmNTdjYjU5MGJiMDIwYmUyNDU2Njc3YTE5YWIzMTA1Mi4uZGY2
Mzc2ZWZkYjhiNWFhZmIyODg0ZmYwNTNjYTk0MTIwY2ZmZDRjNiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtcXVvdGEuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1xdW90YS5odG1sCkBAIC00LDEwMyArNCw3
IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+
CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0cyBJbmRleGVkREIncyBxdW90
YSBlbmZvcmNpbmcgbWVjaGFuaXNtLiIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1v
dmVWZW5kb3JQcmVmaXhlcygpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
b3BlbignZGF0YWJhc2UtcXVvdGEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1
Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19
Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBzZWxmLmRiID0gZXZhbEFuZExvZygi
ZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
ZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
c2V0VmVyc2lvblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb25TdWNjZXNzKCkKLXsKLSAgICBkZWJ1
Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKLSAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygi
dHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAh
PT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsK
LSAgICB0cmFucy5vbmNvbXBsZXRlID0gY2hlY2tRdW90YUVuZm9yY2luZzsKLQotICAgIGRlbGV0
ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLnZl
cnNpb24iLCAibmV3IHZlcnNpb24iKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLm5h
bWUiLCAiZGF0YWJhc2UtcXVvdGEiKTsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1l
cyIsICJbXSIpOwotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIw
Iik7Ci0gICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJycpIiwgImZh
bHNlIik7Ci0KLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coJ2RiLmNyZWF0ZU9iamVjdFN0
b3JlKCJ0ZXN0MTIzIiknKTsKLSAgICBjaGVja09iamVjdFN0b3JlKCk7Ci19Ci0KLWZ1bmN0aW9u
IGNoZWNrT2JqZWN0U3RvcmUoKQotewotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVz
IiwgIlsndGVzdDEyMyddIik7Ci0gICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMubGVu
Z3RoIiwgIjEiKTsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucygn
JykiLCAiZmFsc2UiKTsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlu
cygndGVzdDQ1NicpIiwgImZhbHNlIik7Ci0gICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFt
ZXMuY29udGFpbnMoJ3Rlc3QxMjMnKSIsICJ0cnVlIik7Ci19Ci0KLWZ1bmN0aW9uIGNoZWNrUXVv
dGFFbmZvcmNpbmcoKQotewotICAgIHZhciB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIu
dHJhbnNhY3Rpb24oWyd0ZXN0MTIzJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0g
ICAgdHJhbnMub25hYm9ydCA9IHRlc3RDb21wbGV0ZTsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0g
dW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7Ci0gICAgZGVidWcoIkNyZWF0aW5nICdkYXRhJyB3
aGljaCBjb250YWlucyA2NEsgb2YgZGF0YSIpOwotICAgIHNlbGYuZGF0YSA9ICJYIjsKLSAgICBm
b3IgKHZhciBpID0gMDsgaSA8IDE2OyBpKyspCi0gICAgICAgIGRhdGEgKz0gZGF0YTsKLSAgICBz
aG91bGRCZSgiZGF0YS5sZW5ndGgiLCAiNjU1MzYiKTsKLSAgICBzZWxmLmRhdGFBZGRlZCA9IDA7
Ci0gICAgc2VsZi5zdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUo
J3Rlc3QxMjMnKSIpOwotICAgIGFkZERhdGEoKTsKLX0KLQotZnVuY3Rpb24gYWRkRGF0YSgpCi17
Ci0gICAgaWYgKGRhdGFBZGRlZCA8IDUgKiAxMDI0ICogMTAyNCkgewotICAgICAgICBpZiAoZGF0
YUFkZGVkID4gMCkKLSAgICAgICAgICAgIHN0b3JlID0gZXZlbnQudGFyZ2V0LnNvdXJjZTsKLSAg
ICB9IGVsc2UgewotICAgICAgICB0ZXN0RmFpbGVkKCJhZGRlZCBtb3JlIHRoYW4gcXVvdGEiKTsK
LSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgZGF0
YUFkZGVkICs9IDY1NTM2OwotICAgIHJlcXVlc3QgPSBzdG9yZS5hZGQoe3g6IGRhdGF9LCBkYXRh
QWRkZWQpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkRGF0YTsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSBsb2dFcnJvcjsKLX0KLQotZnVuY3Rpb24gbG9nRXJyb3IoKQotewotICAgIGRlYnVn
KCJFcnJvciBmdW5jdGlvbiBjYWxsZWQ6ICgiICsgZXZlbnQudGFyZ2V0LmVycm9yQ29kZSArICIp
ICIgKyBldmVudC50YXJnZXQud2Via2l0RXJyb3JNZXNzYWdlKTsKLSAgICBldmFsQW5kTG9nKCJl
dmVudC5wcmV2ZW50RGVmYXVsdCgpIik7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RDb21wbGV0ZSgpCi17
Ci0gICAgdGVzdFBhc3NlZCgiQWRkaW5nIGRhdGEgZmFpbGVkIGR1ZSB0byBxdW90YSBlcnJvci4g
RGF0YSBhZGRlZCB3YXMgYWJvdXQgIiArIE1hdGgucm91bmQoZGF0YUFkZGVkIC8gMTAyNCAvIDEw
MjQpICsgIiBNQiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi10ZXN0KCk7Ci0KLQotPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RhdGFiYXNlLXF1b3RhLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvZGVsZXRlLWNsb3NlZC1kYXRhYmFzZS1vYmplY3QuaHRtbCBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZS1jbG9zZWQtZGF0YWJhc2Utb2JqZWN0Lmh0
bWwKaW5kZXggNGFiNTBkMjA4Mjk1NTAxNzFkYThhMWFkYWZmNWRkN2Q3MjU2NWRjMi4uN2ZkZjU4
ZTFkM2Y4YjIxNzRhNzMyNDc4OGM2OGNhZjY3ODQ5N2RlNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlLWNsb3NlZC1kYXRhYmFzZS1vYmplY3QuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGUtY2xvc2VkLWRhdGFiYXNl
LW9iamVjdC5odG1sCkBAIC00LDU2ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hh
cmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRp
b24oIkVuc3VyZSB0aGF0IElEQkRhdGFiYXNlIG9iamVjdHMgYXJlIGRlbGV0ZWQgd2hlbiB0aGVy
ZSBhcmUgbm8gcmV0YWluaW5nIHBhdGhzIGxlZnQiKTsKLQotCi1mdW5jdGlvbiB0ZXN0KCkgewot
ICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgb3BlbkRCQ29ubmVjdGlvbigpOwotfQot
Ci1mdW5jdGlvbiBvcGVuREJDb25uZWN0aW9uKCkKLXsKLSAgICBldmFsQW5kTG9nKCJzZWxmLnN0
YXRlID0gJ3N0YXJ0aW5nJyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
b3BlbignZGVsZXRlLWNsb3NlZC1kYXRhYmFzZS1vYmplY3QnKSIpOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBzZWxmLmRi
ID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICAvLyBPcGVu
IGEgc2Vjb25kIGNvbm5lY3Rpb24gdG8gdGhlIHNhbWUgZGF0YWJhc2UuCi0gICAgdmFyIHJlcXVl
c3QyID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2RlbGV0ZS1jbG9zZWQtZGF0YWJhc2Ut
b2JqZWN0JykiKTsKLSAgICByZXF1ZXN0Mi5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczI7Ci0gICAg
cmVxdWVzdDIub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlv
biBvcGVuU3VjY2VzczIoKQotewotICAgIGRlYnVnKCJTZWNvbmQgY29ubmVjdGlvbiBzdWNjZXNz
ZnVsbHkgZXN0YWJsaXNoZWQuIik7Ci0gICAgLy8gQWZ0ZXIgbGVhdmluZyB0aGlzIGZ1bmN0aW9u
LCB0aGVyZSBhcmUgbm8gcmVtYWluaW5nIHJlZmVyZW5jZXMgdG8gdGhlCi0gICAgLy8gc2Vjb25k
IGNvbm5lY3Rpb24sIHNvIGl0IHNob3VsZCBnZXQgZGVsZXRlZC4KLSAgICBzZXRUaW1lb3V0KHNl
dFZlcnNpb24sIDIpOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uKCkKLXsKLSAgICBnYygpOwot
ICAgIGRlYnVnKCJjYWxsaW5nIHNldFZlcnNpb24oKSAtIGNhbGxiYWNrIHNob3VsZCBydW4gaW1t
ZWRpYXRlbHkiKTsKLSAgICB2YXIgdmVyc2lvbkNoYW5nZVJlcXVlc3QgPSBldmFsQW5kTG9nKCJk
Yi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOwotICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB2ZXJzaW9uQ2hhbmdlUmVxdWVz
dC5vbmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNrOwotICAgIHZlcnNpb25DaGFu
Z2VSZXF1ZXN0Lm9uc3VjY2VzcyA9IGZpbmlzaEpTVGVzdDsKLX0KLQotCi10ZXN0KCk7Ci0KLTwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9kZWxldGUtY2xvc2VkLWRhdGFiYXNlLW9i
amVjdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZS1yYW5nZS5odG1sIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlLXJhbmdlLmh0bWwKaW5kZXggNGZhMmYyMzEw
MTdkMWZkODExMmJkNjAxODE2NzkyOGMzYzE1NGViYS4uYzgwMDQxMThkZGQ1NWM4YzE5YWU3ODUz
NjkzMGI0N2NjYjcwNzIxYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvZGVsZXRlLXJhbmdlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
ZGVsZXRlLXJhbmdlLmh0bWwKQEAgLTQsOTUgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNl
cy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNj
cmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBJREJPYmplY3RTdG9yZS5kZWxldGUoSURCS2V5UmFu
Z2UpIG1ldGhvZC4iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJl
Zml4ZXMoKTsKLQotICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIuZGVsZXRlRGF0
YWJhc2UoJ2RlbGV0ZS1yYW5nZScpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7Ci0g
ICAgICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIub3BlbignZGVsZXRlLXJhbmdl
JykiKTsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAg
ZXZhbEFuZExvZygiZGIgPSByZXF1ZXN0LnJlc3VsdCIpOwotICAgICAgICAgICAgZXZhbEFuZExv
ZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgICAgICAgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgICAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJ0cmFu
cyA9IHJlcXVlc3QucmVzdWx0Iik7Ci0gICAgICAgICAgICAgICAgdHJhbnMub25hYm9ydCA9IHVu
ZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotCi0gICAgICAgICAgICAgICAgZXZhbEFuZExvZygiZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKLQotICAgICAgICAgICAgICAgIHRyYW5zLm9u
Y29tcGxldGUgPSBydW5UZXN0czsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgfQot
fQotCi1mdW5jdGlvbiBjaGVja0tleXMoZXhwZWN0ZWQsIGNhbGxiYWNrKQotewotICAgIGRlYnVn
KCJnZXR0aW5nIGtleXMgZnJvbSBzdG9yZS4uLiIpOwotICAgIGRlYnVnKCJleHBlY3Q6ICIgKyBK
U09OLnN0cmluZ2lmeShleHBlY3RlZCkpOwotICAgIHZhciBrZXlzID0gW107Ci0gICAgcmVxdWVz
dCA9IHN0b3JlLm9wZW5DdXJzb3IoKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKLSAg
ICAgICAgY3Vyc29yID0gcmVxdWVzdC5yZXN1bHQ7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsKLSAg
ICAgICAgICAgIGtleXMucHVzaChjdXJzb3Iua2V5KTsKLSAgICAgICAgICAgIGN1cnNvci5jb250
aW51ZSgpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZGVidWcoImFjdHVhbDogIiAr
IEpTT04uc3RyaW5naWZ5KGtleXMpKTsKLSAgICAgICAgICAgIGlmIChKU09OLnN0cmluZ2lmeShl
eHBlY3RlZCkgPT09IEpTT04uc3RyaW5naWZ5KGtleXMpKSB7Ci0gICAgICAgICAgICAgICAgdGVz
dFBhc3NlZCgiTWF0Y2ghIik7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoIkRvbid0IG1hdGNoISIpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgfTsKLX0KLQotdmFyIHRlc3RzID0gWwotICAgIHsgbG93ZXI6IDMsIHVwcGVyOiA4LCBsb3dl
ck9wZW46IGZhbHNlLCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogWzEsIDIsIDksIDEwXX0s
Ci0gICAgeyBsb3dlcjogMywgdXBwZXI6IDgsIGxvd2VyT3BlbjogdHJ1ZSwgdXBwZXJPcGVuOiBm
YWxzZSwgZXhwZWN0ZWQ6IFsxLCAyLCAzLCA5LCAxMF19LAotICAgIHsgbG93ZXI6IDMsIHVwcGVy
OiA4LCBsb3dlck9wZW46IGZhbHNlLCB1cHBlck9wZW46IHRydWUsIGV4cGVjdGVkOiBbMSwgMiwg
OCwgOSwgMTBdfSwKLSAgICB7IGxvd2VyOiAzLCB1cHBlcjogOCwgbG93ZXJPcGVuOiB0cnVlLCB1
cHBlck9wZW46IHRydWUsIGV4cGVjdGVkOiBbMSwgMiwgMywgOCwgOSwgMTBdfQotXTsKLQotZnVu
Y3Rpb24gcnVuVGVzdHMoKQotewotICAgIGZ1bmN0aW9uIG5leHRUZXN0KCkgewotICAgICAgICB2
YXIgdGVzdCA9IHRlc3RzLnNoaWZ0KCk7Ci0gICAgICAgIGlmICh0ZXN0KSB7Ci0gICAgICAgICAg
ICBkZWJ1ZygiIik7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0
aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgICAgICAgICBl
dmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpIik7Ci0gICAgICAg
ICAgICBmb3IgKGkgPSAxOyBpIDw9IDEwOyArK2kpIHsKLSAgICAgICAgICAgICAgICBldmFsQW5k
TG9nKCJzdG9yZS5wdXQoIiArIGkgKyAiLCIgKyBpICsgIikiKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLmRlbGV0ZShJREJLZXlSYW5nZS5ib3VuZCgiICsK
LSAgICAgICAgICAgICAgICB0ZXN0Lmxvd2VyICsgIiwgIiArCi0gICAgICAgICAgICAgICAgdGVz
dC51cHBlciArICIsICIgKwotICAgICAgICAgICAgICAgIHRlc3QubG93ZXJPcGVuICsgIiwgIiAr
Ci0gICAgICAgICAgICAgICAgdGVzdC51cHBlck9wZW4gKyAiKSkiKTsKLSAgICAgICAgICAgIGNo
ZWNrS2V5cyh0ZXN0LmV4cGVjdGVkLCBuZXh0VGVzdCk7Ci0gICAgICAgICAgICB0cmFucy5vbmFi
b3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgICAgICAgICB0cmFucy5vbmNvbXBs
ZXRlID0gbmV4dFRlc3Q7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLSAgICBuZXh0VGVz
dCgpOwotfQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9k
ZWxldGUtcmFuZ2UuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVJbmRleC5odG1sIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlSW5kZXguaHRtbAppbmRleCA0ZTc2
MWZlZTZhMGZjYzMzOTFhYjI3MmI5OTI3NDkyZjEyNjFlMjczLi5iMmNhNDQzNWU1ZTNmMWQyNThj
YzFiNGM2OWQzMWE4M2M0YWRmMGQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9kZWxldGVJbmRleC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2RlbGV0ZUluZGV4Lmh0bWwKQEAgLTEsNTkgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgog
PGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+
PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0
IEluZGV4ZWREQiBkZWxldGVJbmRleCBtZXRob2QiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0g
ICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5k
ZXhlZERCLm9wZW4oJ2RlbGV0ZUluZGV4JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9w
ZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJk
YiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0
d2lkZGxlSW5kZXhlczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLX0KLQotZnVuY3Rpb24gdHdpZGRsZUluZGV4ZXMoKQotewotICAgIHRyYW5zYWN0aW9u
ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAg
IHRyYW5zYWN0aW9uLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB0cmFu
c2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnNhY3Rp
b24ub25jb21wbGV0ZSA9IHBvc3RUd2lkZGxpbmc7Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVz
KGRiKTsKLQotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5j
cmVhdGVPYmplY3RTdG9yZSgnZm9vJyk7Iik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigi
b2JqZWN0U3RvcmUuZGVsZXRlSW5kZXgoJ2ZpcnN0JykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24u
Tk9UX0ZPVU5EX0VSUiIpOwotICAgIHNob3VsZFRocm93KCJvYmplY3RTdG9yZS5kZWxldGVJbmRl
eCgpIik7IC8vIFR5cGVFcnJvcjogbm90IGVub3VnaCBhcmd1bWVudHMuCi0gICAgaW5kZXggPSBl
dmFsQW5kTG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdmaXJzdCcsICdmaXJz
dCcpOyIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIm9iamVjdFN0b3JlLmRlbGV0ZUlu
ZGV4KCdGSVJTVCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKLSAg
ICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ3Nl
Y29uZCcsICdzZWNvbmQnKTsiKTsKLSAgICByZXR1cm5WYWx1ZSA9IGV2YWxBbmRMb2coInJldHVy
blZhbHVlID0gb2JqZWN0U3RvcmUuZGVsZXRlSW5kZXgoJ2ZpcnN0Jyk7Iik7Ci0gICAgc2hvdWxk
QmUoInJldHVyblZhbHVlIiwgInVuZGVmaW5lZCIpOwotfQotCi1mdW5jdGlvbiBwb3N0VHdpZGRs
aW5nKCkKLXsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi5jcmVhdGVPYmplY3RTdG9y
ZSgnYmFyJyk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9BTExPV0VEX0VSUiIpOwotICAg
IGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIm9iamVjdFN0b3JlLmRlbGV0ZUluZGV4KCdzZWNvbmQn
KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsKLSAg
ICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvZGVsZXRlSW5kZXguanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVP
YmplY3RTdG9yZS1uYW1lLWFyZ3VtZW50LXJlcXVpcmVkLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9kZWxldGVPYmplY3RTdG9yZS1uYW1lLWFyZ3VtZW50LXJlcXVpcmVkLmh0
bWwKaW5kZXggZGUyOTY2M2UxYmZiODgzZmU1YWViZmU2ZjYzNDExNjBlOTdiMWNjNi4uMTdhODll
ZGFkZjY3NTQ1YjEzZGZjMjBlOWI3OWY3MzYwOTBiODlmOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlT2JqZWN0U3RvcmUtbmFtZS1hcmd1bWVudC1yZXF1
aXJlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZU9iamVj
dFN0b3JlLW5hbWUtYXJndW1lbnQtcmVxdWlyZWQuaHRtbApAQCAtMSw0NiArMSwxMCBAQAotPCFE
T0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVz
Y3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGRlbGV0ZU9iamVjdFN0b3JlIHJlcXVpcmVkIGFyZ3Vt
ZW50Iik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7
Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9
ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERC
Lm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVu
U3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVx
dWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Jl
YXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RT
dG9yZSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIHNob3VsZFRo
cm93KCJkYi5kZWxldGVPYmplY3RTdG9yZSgpOyIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQot
Ci0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RlbGV0ZU9i
amVjdFN0b3JlLW5hbWUtYXJndW1lbnQtcmVxdWlyZWQuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBz
cmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8
L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9kZWxldGVPYmplY3RTdG9yZS1udWxsLW5hbWUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2RlbGV0ZU9iamVjdFN0b3JlLW51bGwtbmFtZS5odG1sCmluZGV4IGMzNmRiZGI2
ZDczN2MzZDg2OWFiODkwYmY0ZmI2ZGRmMWM5NWNlNjguLjJmOGU3MGJjMDBjYzEyNWUxZTM1NzBm
YzEzYmVkMWQxNTNmOTI3ZDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2RlbGV0ZU9iamVjdFN0b3JlLW51bGwtbmFtZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZU9iamVjdFN0b3JlLW51bGwtbmFtZS5odG1sCkBAIC0xLDQ3
ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0i
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08
c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgZGVsZXRlT2JqZWN0U3RvcmUg
cmVxdWlyZWQgYXJndW1lbnQiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVu
ZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAg
IGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIgPSBl
dmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjcmVhdGVBbmRQ
b3B1bGF0ZU9iamVjdFN0b3JlKCkKLXsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwot
Ci0gICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ251bGwnKTsiKTsKLSAgICBl
dmFsQW5kTG9nKCJkYi5kZWxldGVPYmplY3RTdG9yZShudWxsKTsiKTsKLSAgICBmaW5pc2hKU1Rl
c3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9kZWxldGVPYmplY3RTdG9yZS1udWxsLW5hbWUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2Jv
ZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9k
dXBsaWNhdGVzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kdXBsaWNhdGVz
Lmh0bWwKaW5kZXggMGQ4MmIzYzkwMzk1ZTBhYTc3Mzk2NzBmMmIzNmQ5MjIxMDFiODM5MS4uNWU5
NDlkZDhjMjhhYjhjNjI0NzA5NzZiNjIzYTRhZTMxNmNhOTJiOCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZHVwbGljYXRlcy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2R1cGxpY2F0ZXMuaHRtbApAQCAtNCwxNzIgKzQsNyBAQAogPHNj
cmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+
Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVmVyaWZ5IHRoYXQgeW91IGNhbiBwdXQgdGhlIHNh
bWUgZGF0YSBpbiAyIGRpZmZlcmVudCBkYXRhYmFzZXMgd2l0aG91dCB1bmlxdWVuZXNzIGNvbnN0
cmFpbnRzIGZpcmluZy4iKTsKLQotdGVzdENvdW50ID0gMDsKLWZ1bmN0aW9uIHRlc3QoKQotewot
ICAgIGlmICh0ZXN0Q291bnQrKyA9PSAwKQotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
aW5kZXhlZERCLm9wZW4oJ2R1cGxpY2F0ZXMtMScpIik7Ci0gICAgZWxzZQotICAgICAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2R1cGxpY2F0ZXMtMicpIik7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uKCkKLXsKLSAg
ICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4aXN0aW5nOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBkZWxldGVFeGlzdGluZygp
Ci17Ci0gICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7Ci0gICAgc2VsZi50cmFucyA9
IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJl
VHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFi
b3J0Q2FsbGJhY2s7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgc2Vs
Zi5zdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBu
dWxsKSIpOwotICAgIHNlbGYuaW5kZXhPYmplY3QgPSBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJ
bmRleCgnaW5kZXhOYW1lJywgJ3gnKSIpOwotICAgIGFkZERhdGEoKTsKLX0KLQotZnVuY3Rpb24g
YWRkRGF0YSgpCi17Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3Zh
bHVlJywgeTogJ3p6eid9LCAna2V5JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZE1v
cmU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0K
LWZ1bmN0aW9uIGFkZE1vcmUoKQotewotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJldmVudC50
YXJnZXQuc291cmNlLmFkZCh7eDogJ3ZhbHVlMicsIHk6ICd6enoyJ30sICdrZXkyJykiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldERhdGE7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGdldERhdGEoKQotewotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5nZXRLZXkoJ3ZhbHVlJykiKTsKLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldE9iamVjdERhdGE7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGdldE9iamVjdERhdGEoKQot
ewotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJrZXki
KTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5nZXQoJ3ZhbHVlJyki
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldERhdGFGYWlsOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBnZXREYXRhRmFp
bCgpCi17Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0Lngi
LCAidmFsdWUiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1
bHQueSIsICJ6enoiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5n
ZXRLZXkoJ2RvZXMgbm90IGV4aXN0JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldE9i
amVjdERhdGFGYWlsOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotfQotCi1mdW5jdGlvbiBnZXRPYmplY3REYXRhRmFpbCgpCi17Ci0gICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldC5yZXN1bHQiLCAidW5kZWZpbmVkIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiaW5kZXhPYmplY3QuZ2V0KCdkb2VzIG5vdCBleGlzdCcpIik7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBvcGVuS2V5Q3Vyc29yOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuS2V5Q3Vyc29yKCkKLXsKLSAg
ICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ1bmRlZmluZWQiKTsKLQotICAgIHNl
bGYucmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3IoKSIpOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29yMUNvbnRpbnVlOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjdXJzb3IxQ29u
dGludWUoKQotewotICAgIHNob3VsZEJlRmFsc2UoImV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51
bGwiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5
IiwgInZhbHVlIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVz
dWx0LnByaW1hcnlLZXkiLCAia2V5Iik7Ci0KLSAgICAvLyBXZSByZS11c2UgdGhlIGxhc3QgcmVx
dWVzdCBvYmplY3QuCi0gICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51
ZSgpIik7Ci0gICAgc2VsZi5yZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvcjFDb250aW51ZTI7Ci19
Ci0KLWZ1bmN0aW9uIGN1cnNvcjFDb250aW51ZTIoKQotewotICAgIHNob3VsZEJlRmFsc2UoImV2
ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
ImV2ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgInZhbHVlMiIpOwotICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgImtleTIiKTsKLQotICAg
IC8vIFdlIHJlLXVzZSB0aGUgbGFzdCByZXF1ZXN0IG9iamVjdC4KLSAgICBldmFsQW5kTG9nKCJl
dmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKLSAgICBzZWxmLnJlcXVlc3Qub25zdWNj
ZXNzID0gb3Blbk9iamVjdEN1cnNvcjsKLX0KLQotZnVuY3Rpb24gb3Blbk9iamVjdEN1cnNvcigp
Ci17Ci0gICAgc2hvdWxkQmVUcnVlKCJldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsIik7Ci0K
LSAgICBzZWxmLnJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5vcGVuQ3Vyc29yKCki
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvcjJDb250aW51ZTsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY3Vyc29y
MkNvbnRpbnVlKCkKLXsKLSAgICBzaG91bGRCZUZhbHNlKCJldmVudC50YXJnZXQucmVzdWx0ID09
PSBudWxsIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0
LmtleSIsICJ2YWx1ZSIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0
LnJlc3VsdC52YWx1ZS54IiwgInZhbHVlIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJl
dmVudC50YXJnZXQucmVzdWx0LnZhbHVlLnkiLCAienp6Iik7Ci0KLSAgICAvLyBXZSByZS11c2Ug
dGhlIGxhc3QgcmVxdWVzdCBvYmplY3QuCi0gICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJl
c3VsdC5jb250aW51ZSgpIik7Ci0gICAgc2VsZi5yZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvcjJD
b250aW51ZTI7Ci19Ci0KLWZ1bmN0aW9uIGN1cnNvcjJDb250aW51ZTIoKQotewotICAgIHNob3Vs
ZEJlRmFsc2UoImV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwiKTsKLSAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgInZhbHVlMiIpOwotICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS54IiwgInZhbHVl
MiIpOyAgICAKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQu
dmFsdWUueSIsICJ6enoyIik7Ci0KLSAgICAvLyBXZSByZS11c2UgdGhlIGxhc3QgcmVxdWVzdCBv
YmplY3QuCi0gICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7
Ci0gICAgc2VsZi5yZXF1ZXN0Lm9uc3VjY2VzcyA9IGxhc3Q7Ci19Ci0KLWZ1bmN0aW9uIGxhc3Qo
KQotewotICAgIHNob3VsZEJlVHJ1ZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCA9PT0gbnVsbCIpOwot
Ci0gICAgaWYgKHRlc3RDb3VudCA9PSAxKQotICAgICAgICB0ZXN0KCk7Ci0gICAgZWxzZQotICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLXRlc3Qo
KTsKLQotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZHVwbGljYXRlcy5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Vycm9yLWNhdXNlcy1hYm9ydC1ieS1kZWZhdWx0Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9lcnJvci1jYXVzZXMtYWJvcnQtYnktZGVm
YXVsdC5odG1sCmluZGV4IDBkYTgwYjExMWE2ZjI2ZTExODYwNzY3MGEwN2I0ZmI4YTJhYjkwNGMu
LmZhNzRkMTI1MjcwNTFmNzE3Y2E0YWYyNGI1YzI3MDUzNTA3MjE2MGYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Vycm9yLWNhdXNlcy1hYm9ydC1ieS1kZWZhdWx0
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZXJyb3ItY2F1c2VzLWFi
b3J0LWJ5LWRlZmF1bHQuaHRtbApAQCAtNCwxMDcgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291
cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1k
ZXNjcmlwdGlvbigiVmVyaWZ5IHRoYXQgYSB0cmFuc2FjdGlvbiB3aXRoIGFuIGVycm9yIGFib3J0
cyB1bmxlc3MgcHJldmVudERlZmF1bHQoKSBpcyBjYWxsZWQuIik7Ci0KLWZ1bmN0aW9uIHRlc3Qo
KQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImluZGV4ZWREQi5vcGVuKCdlcnJvci1jYXVzZXMtYWJvcnQtYnktZGVmYXVsdCcpIik7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uKCkKLXsK
LSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4aXN0aW5nOwotICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBkZWxldGVFeGlzdGlu
ZygpCi17Ci0gICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7Ci0gICAgc2VsZi50cmFu
cyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3Vs
ZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3Rl
ZEFib3J0Q2FsbGJhY2s7Ci0gICAgZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IGFkZERh
dGEiKTsKLQotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBldmFsQW5kTG9n
KCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKLX0KLQotZnVuY3Rp
b24gYWRkRGF0YSgpCi17Ci0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5z
YWN0aW9uKFsnc3RvcmVOYW1lJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAg
ZXZhbEFuZExvZygidHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrIik7Ci0g
ICAgZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IHRyYW5zYWN0aW9uQ29tcGxldGVkIik7
Ci0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9y
ZU5hbWUnKSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1
ZScsIHk6ICd6enonfSwgJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRNb3Jl
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1m
dW5jdGlvbiBhZGRNb3JlKCkKLXsKLSAgICAKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZXZl
bnQudGFyZ2V0LnNvdXJjZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOwotICAgIHJl
cXVlc3QuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLCBwcmV2ZW50VGhlRGVmYXVsdCk7Ci19Ci0K
LWZ1bmN0aW9uIHByZXZlbnRUaGVEZWZhdWx0KCkKLXsKLSAgICBldmFsQW5kTG9nKCJldmVudC5w
cmV2ZW50RGVmYXVsdCgpIik7Ci19Ci0KLWZ1bmN0aW9uIHRyYW5zYWN0aW9uQ29tcGxldGVkKCkK
LXsKLSAgICB0ZXN0UGFzc2VkKCJUcmFuc2FjdGlvbiBjb21wbGV0ZWQiKTsKLSAgICBkZWJ1Zygi
Iik7Ci0gICAgZGVidWcoIiIpOwotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50
cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwot
ICAgIGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSB0cmFuc2FjdGlvbkFib3J0ZWQxIik7Ci0g
ICAgZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxi
YWNrIik7Ci0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3Jl
KCdzdG9yZU5hbWUnKSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6
ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB1
bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOwotICAgIHJlcXVlc3Qub25lcnJvciA9IGFsbG93RGVm
YXVsdDsKLX0KLQotZnVuY3Rpb24gYWxsb3dEZWZhdWx0KCkKLXsKLSAgICBkZWJ1ZygiRG9pbmcg
bm90aGluZyB0byBwcmV2ZW50IHRoZSBkZWZhdWx0IGFjdGlvbi4uLiIpOwotfQotCi1mdW5jdGlv
biB0cmFuc2FjdGlvbkFib3J0ZWQxKCkKLXsKLSAgICB0ZXN0UGFzc2VkKCJUcmFuc2FjdGlvbiBh
Ym9ydGVkIik7Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCIiKTsKLSAgICB0cmFucyA9IGV2
YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJhbnNh
Y3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmFib3J0ID0gdHJh
bnNhY3Rpb25BYm9ydGVkMiIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSB1
bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjayIpOwotICAgIHN0b3JlID0gZXZhbEFuZExvZygic3Rv
cmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKLSAgICBkZWJ1
ZygiT21pdHRpbmcgYW4gb25lcnJvciBoYW5kbGVyIik7Ci19Ci0KLWZ1bmN0aW9uIHRyYW5zYWN0
aW9uQWJvcnRlZDIoKQotewotICAgIHRlc3RQYXNzZWQoIlRyYW5zYWN0aW9uIGFib3J0ZWQiKTsK
LSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotdGVzdCgpOwotCi0KLTwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9lcnJvci1jYXVzZXMtYWJvcnQtYnktZGVmYXVsdC5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2V4Y2VwdGlvbi1pbi1ldmVudC1hYm9ydHMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZXhjZXB0aW9uLWluLWV2ZW50LWFib3J0cy1l
eHBlY3RlZC50eHQKaW5kZXggN2QxZTJkMmE3NDljNTQ1Yjg5ZTNiMDc2ODQ4ZDhjZDk5M2U5ZjZm
My4uYTBhOTYwMTRhYzFkNDUxZmQ0NjNjODliYzZhZmRjNjYwZmY4ZDM3YiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZXhjZXB0aW9uLWluLWV2ZW50LWFib3J0cy1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZXhjZXB0aW9u
LWluLWV2ZW50LWFib3J0cy1leHBlY3RlZC50eHQKQEAgLTEsNSArMSw1IEBACi1DT05TT0xFIE1F
U1NBR0U6IGxpbmUgNjA6IFVuY2F1Z2h0IHRoaXMgZXhjZXB0aW9uIGlzIGV4cGVjdGVkCi1DT05T
T0xFIE1FU1NBR0U6IGxpbmUgNjA6IFVuY2F1Z2h0IHRoaXMgZXhjZXB0aW9uIGlzIGV4cGVjdGVk
CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNTc6IFVuY2F1Z2h0IHRoaXMgZXhjZXB0aW9uIGlzIGV4
cGVjdGVkCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNTc6IFVuY2F1Z2h0IHRoaXMgZXhjZXB0aW9u
IGlzIGV4cGVjdGVkCiBUZXN0IGV4Y2VwdGlvbnMgaW4gSURCUmVxdWVzdCBoYW5kbGVycyBjYXVz
ZSBhYm9ydHMuCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2V4Y2VwdGlvbi1pbi1ldmVudC1hYm9ydHMuaHRtbCBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2V4Y2VwdGlvbi1pbi1ldmVudC1hYm9ydHMu
aHRtbAppbmRleCAwNDNjZmFjZThmYzJhMDkyMWJkODZlM2ExNDQwZmRmNmY3MzBkMzE3Li44Y2Ri
ZDY5NjYxMzE3NzBkMzVjZWQ3MzI4MWMwMGE0YTQxYjhjZTU5IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9leGNlcHRpb24taW4tZXZlbnQtYWJvcnRzLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZXhjZXB0aW9uLWluLWV2ZW50LWFib3J0
cy5odG1sCkBAIC00LDEyNyArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5q
cyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJU
ZXN0IGV4Y2VwdGlvbnMgaW4gSURCUmVxdWVzdCBoYW5kbGVycyBjYXVzZSBhYm9ydHMuIik7Ci0K
LWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdleGNlcHRpb24taW4tZXZlbnQtYWJv
cnRzJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb247Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldFZl
cnNpb24oKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNp
b24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGRl
bGV0ZUV4aXN0aW5nKCkKLXsKLSAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKLSAg
ICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQg
PSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBs
ZXRlID0gc3RhcnRUZXN0Iik7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0g
ICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9y
ZU5hbWUnLCBudWxsKSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6
ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHN0YXJ0VGVzdCgpCi17Ci0gICAg
ZGVidWcoIiIpOwotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlv
bihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIGV2YWxB
bmRMb2coInRyYW5zLm9uYWJvcnQgPSB0cmFuc2FjdGlvbkFib3J0ZWQxIik7Ci0gICAgZXZhbEFu
ZExvZygidHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrIik7Ci0g
ICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5h
bWUnKSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZTIn
LCB5OiAnenp6Mid9LCAna2V5MicpIik7Ci0gICAgdHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignc3Vj
Y2VzcycsIGNhdXNlRXhjZXB0aW9uLCB0cnVlKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY2F1c2VFeGNlcHRpb24oKQotewot
ICAgIGRlYnVnKCIiKTsKLSAgICBldmFsQW5kTG9nKCJldmVudC5wcmV2ZW50RGVmYXVsdCgpIik7
Ci0gICAgZGVidWcoIlRocm93aW5nIik7Ci0gICAgdGhyb3cgInRoaXMgZXhjZXB0aW9uIGlzIGV4
cGVjdGVkIjsKLX0KLQotZnVuY3Rpb24gdHJhbnNhY3Rpb25BYm9ydGVkMSgpCi17Ci0gICAgZGVi
dWcoIiIpOwotICAgIHNob3VsZEhhdmVIYWRFcnJvcigidGhpcyBleGNlcHRpb24gaXMgZXhwZWN0
ZWQiKTsKLSAgICB0ZXN0UGFzc2VkKCJUaGUgdHJhbnNhY3Rpb24gd2FzIGFib3J0ZWQuIik7Ci0g
ICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1l
J10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMu
b25hYm9ydCA9IHRyYW5zYWN0aW9uQWJvcnRlZDIiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5v
bmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2siKTsKLSAgICBzdG9yZSA9IGV2
YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0gICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAn
a2V5JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJh
Y2s7Ci0gICAgZGIub25lcnJvciA9IGNhdXNlRXhjZXB0aW9uOwotfQotCi1mdW5jdGlvbiB0cmFu
c2FjdGlvbkFib3J0ZWQyKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgc2hvdWxkSGF2ZUhhZEVy
cm9yKCJ0aGlzIGV4Y2VwdGlvbiBpcyBleHBlY3RlZCIpOwotICAgIHRlc3RQYXNzZWQoIlRoZSB0
cmFuc2FjdGlvbiB3YXMgYWJvcnRlZC4iKTsKLSAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5z
ID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklU
RSkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2Fs
bGJhY2siKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gdHJhbnNhY3Rpb25D
b21wbGV0ZWQxIik7Ci0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVj
dFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5h
ZGQoe3g6ICd2YWx1ZTMnLCB5OiAnenp6Myd9LCAna2V5MycpIik7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSB0aHJvd0FuZENhdGNoOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotICAgIGRiLm9uZXJyb3IgPSBudWxsOwotfQotCi1mdW5jdGlvbiB0aHJv
d0FuZENhdGNoKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZXZhbEFuZExvZygiZXZlbnQucHJl
dmVudERlZmF1bHQoKSIpOwotICAgIGRlYnVnKCJUaHJvd2luZyB3aXRoaW4gYSB0cnkgYmxvY2si
KTsKLSAgICB0cnkgewotICAgICAgICB0aHJvdyAiQUhISCI7Ci0gICAgfSBjYXRjaCAoZSkgewot
ICAgIH0KLX0KLQotZnVuY3Rpb24gdHJhbnNhY3Rpb25Db21wbGV0ZWQxKCkKLXsKLSAgICBkZWJ1
ZygiIik7Ci0gICAgdGVzdFBhc3NlZCgiVGhlIHRyYW5zYWN0aW9uIGNvbXBsZXRlZC4iKTsKLSAg
ICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUn
XSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5v
bmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2siKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFu
cy5vbmNvbXBsZXRlID0gdHJhbnNhY3Rpb25Db21wbGV0ZWQyIik7Ci0gICAgc3RvcmUgPSBldmFs
QW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZTQnLCB5OiAnenp6NCd9LCAn
a2V5NCcpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgdGVzdFBhc3Nl
ZCgia2V5NCBhZGRlZCIpOyB9Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHRyYW5zYWN0aW9uQ29tcGxldGVkMigpCi17Ci0gICAg
ZGVidWcoIiIpOwotICAgIHRlc3RQYXNzZWQoIlRoZSB0cmFuc2FjdGlvbiBjb21wbGV0ZWQuIik7
Ci0gICAgZGVidWcoIiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi10ZXN0KCk7Ci0KLQot
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2V4Y2VwdGlvbi1pbi1ldmVudC1hYm9y
dHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9mYWN0b3J5LWJhc2ljcy5odG1sIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZmFjdG9yeS1iYXNpY3MuaHRtbAppbmRleCBkNDRjYWIy
NTI5NmFmYzU1ZGI2YWNmNTc3NGFiMmE3NTc5MDczMWJkLi4yYjcxZDZjZDYyY2RlY2UxNTA4ZTcy
MmJmZDJiOTU5YzczZTY0NzQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9mYWN0b3J5LWJhc2ljcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2ZhY3RvcnktYmFzaWNzLmh0bWwKQEAgLTQsODggKzQsNyBAQAogPHNjcmlwdCBzcmM9InJl
c291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0Pgot
Ci1kZXNjcmlwdGlvbigiVGVzdCB0aGUgYmFzaWNzIG9mIEluZGV4ZWREQidzIElEQkZhY3Rvcnku
Iik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0K
LSAgICBzaG91bGRCZVRydWUoInR5cGVvZiBpbmRleGVkREIub3BlbiA9PT0gJ2Z1bmN0aW9uJyIp
OwotICAgIHNob3VsZEJlVHJ1ZSgidHlwZW9mIGluZGV4ZWREQi5jbXAgPT09ICdmdW5jdGlvbici
KTsKLSAgICBzaG91bGRCZVRydWUoInR5cGVvZiBpbmRleGVkREIuZ2V0RGF0YWJhc2VOYW1lcyA9
PT0gJ2Z1bmN0aW9uJyIpOwotCi0gICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2YgaW5kZXhlZERCLmRl
bGV0ZURhdGFiYXNlID09PSAnZnVuY3Rpb24nIik7Ci0KLSAgICBuYW1lID0gJ3N0b3JhZ2UvaW5k
ZXhlZGRiL2ZhY3RvcnktYmFzaWNzJzsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFi
YXNlIjsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIuZ2V0RGF0YWJhc2VO
YW1lcygpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXREYXRhYmFzZU5hbWVzU3VjY2Vz
czE7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0K
LWZ1bmN0aW9uIGdldERhdGFiYXNlTmFtZXNTdWNjZXNzMSgpCi17Ci0gICAgdmFyIGRhdGFiYXNl
TmFtZXM7Ci0gICAgZXZhbEFuZExvZygiZGF0YWJhc2VOYW1lcyA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJkYXRhYmFzZU5hbWVzLmNvbnRhaW5zKCciICsgbmFt
ZSArICInKSIpOwotICAgIHNob3VsZEJlRmFsc2UoImRhdGFiYXNlTmFtZXMuY29udGFpbnMoJ0RB
VEFCQVNFIFRIQVQgRE9FUyBOT1QgRVhJU1QnKSIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBldmFsQW5k
TG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNsb3NlKCkiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCLmdldERhdGFiYXNlTmFtZXMoKSIpOwotICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZ2V0RGF0YWJhc2VOYW1lc1N1Y2Nlc3MyOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBnZXREYXRhYmFzZU5hbWVzU3Vj
Y2VzczIoKQotewotICAgIHZhciBkYXRhYmFzZU5hbWVzOwotICAgIGV2YWxBbmRMb2coImRhdGFi
YXNlTmFtZXMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJkYXRh
YmFzZU5hbWVzLmNvbnRhaW5zKCciICsgbmFtZSArICInKSIpOwotICAgIHNob3VsZEJlRmFsc2Uo
ImRhdGFiYXNlTmFtZXMuY29udGFpbnMoJ0RBVEFCQVNFIFRIQVQgRE9FUyBOT1QgRVhJU1QnKSIp
OwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgn
IiArIG5hbWUgKyAiJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZURhdGFiYXNl
U3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LX0KLQotZnVuY3Rpb24gZGVsZXRlRGF0YWJhc2VTdWNjZXNzKCkKLXsKLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLmdldERhdGFiYXNlTmFtZXMoKSIpOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZ2V0RGF0YWJhc2VOYW1lc1N1Y2Nlc3MzOwotICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBnZXREYXRhYmFzZU5h
bWVzU3VjY2VzczMoKQotewotICAgIHZhciBkYXRhYmFzZU5hbWVzOwotICAgIGV2YWxBbmRMb2co
ImRhdGFiYXNlTmFtZXMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVGYWxz
ZSgiZGF0YWJhc2VOYW1lcy5jb250YWlucygnIiArIG5hbWUgKyAiJykiKTsKLSAgICBzaG91bGRC
ZUZhbHNlKCJkYXRhYmFzZU5hbWVzLmNvbnRhaW5zKCdEQVRBQkFTRSBUSEFUIERPRVMgTk9UIEVY
SVNUJykiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIuZGVsZXRlRGF0
YWJhc2UoJ0RBVEFCQVNFIFRIQVQgRE9FUyBOT1QgRVhJU1QnKSIpOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZGVsZXRlRGF0YWJhc2VTdWNjZXNzMjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZGVsZXRlRGF0YWJhc2VTdWNj
ZXNzMigpCi17Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXRlc3QoKTsKLQotCi08L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZmFjdG9yeS1iYXNpY3MuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9mYWN0b3J5LWNtcC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvZmFjdG9yeS1jbXAuaHRtbAppbmRleCBmNzI4NTMzYjM4MTRjMTU5MzQ4NDgwYjJhYTFmMjZl
ZTYwN2FhZTcxLi40MmYwYWM2MmJlNzJhMDcxNDc1MzU0ZGQ2MWExYzY0MjVlZWI1NDZkIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9mYWN0b3J5LWNtcC5odG1sCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ZhY3RvcnktY21wLmh0bWwKQEAgLTQs
MTQ3ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4K
IDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERC
IGtleSBjb21wYXJpc29uIHVzaW5nIElEQkZhY3RvcnkuY21wKCkuIik7Ci0KLWZ1bmN0aW9uIHRl
c3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBzaG91bGRCZVRydWUo
InR5cGVvZiBpbmRleGVkREIuY21wID09PSAnZnVuY3Rpb24nIik7Ci0KLSAgICB0ZXN0VmFsaWRL
ZXlzKCk7Ci0gICAgdGVzdEludmFsaWRLZXlzKCk7Ci0gICAgdGVzdElkZW50aWNhbEtleXMoKTsK
LSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gdGVzdFZhbGlkS2V5cygpCi17Ci0g
ICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJjb21wYXJlIHZhbGlkIGtleXMiKTsKLQotICAgIHZh
ciBrZXlzID0gWwotICAgICAgICAiLUluZmluaXR5IiwKLSAgICAgICAgIi1OdW1iZXIuTUFYX1ZB
TFVFIiwKLSAgICAgICAgIi0xIiwKLSAgICAgICAgIi1OdW1iZXIuTUlOX1ZBTFVFIiwKLSAgICAg
ICAgIjAiLAotICAgICAgICAiTnVtYmVyLk1JTl9WQUxVRSIsCi0gICAgICAgICIxIiwKLSAgICAg
ICAgIk51bWJlci5NQVhfVkFMVUUiLAotICAgICAgICAiSW5maW5pdHkiLAotIAotICAgICAgICAi
bmV3IERhdGUoMCkiLAotICAgICAgICAibmV3IERhdGUoMTAwMCkiLAotICAgICAgICAibmV3IERh
dGUoMTMxNzM5OTkzMTAyMykiLAotICAgICAgICAKLSAgICAgICAgIicnIiwKLSAgICAgICAgIidc
eDAwJyIsCi0gICAgICAgICInYSciLAotICAgICAgICAiJ2FhJyIsCi0gICAgICAgICInYiciLAot
ICAgICAgICAiJ2JhJyIsCi0KLSAgICAgICAgIidceEEyJyIsIC8vIFUrMDBBMiBDRU5UIFNJR04K
LSAgICAgICAgIidcdTZDMzQnIiwgLy8gVSs2QzM0IENKSyBVTklGSUVEIElERU9HUkFQSCAod2F0
ZXIpCi0gICAgICAgICInXHVEODM0XHVERDFFJyIsIC8vIFUrMUQxMUUgTVVTSUNBTCBTWU1CT0wg
Ry1DTEVGIChVVEYtMTYgc3Vycm9nYXRlIHBhaXIpCi0gICAgICAgICInXHVGRkZEJyIsIC8vIFUr
RkZGRCBSRVBMQUNFTUVOVCBDSEFSQUNURVIKLQotICAgICAgICAiW10iLAotCi0gICAgICAgICJb
LUluZmluaXR5XSIsCi0gICAgICAgICJbLU51bWJlci5NQVhfVkFMVUVdIiwKLSAgICAgICAgIlst
MV0iLAotICAgICAgICAiWy1OdW1iZXIuTUlOX1ZBTFVFXSIsCi0gICAgICAgICJbMF0iLAotICAg
ICAgICAiW051bWJlci5NSU5fVkFMVUVdIiwKLSAgICAgICAgIlsxXSIsCi0gICAgICAgICJbTnVt
YmVyLk1BWF9WQUxVRV0iLAotICAgICAgICAiW0luZmluaXR5XSIsCi0gCi0gICAgICAgICJbbmV3
IERhdGUoMCldIiwKLSAgICAgICAgIltuZXcgRGF0ZSgxMDAwKV0iLAotICAgICAgICAiW25ldyBE
YXRlKDEzMTczOTk5MzEwMjMpXSIsCi0gICAgICAgIAotICAgICAgICAiWycnXSIsCi0gICAgICAg
ICJbJ1x4MDAnXSIsCi0gICAgICAgICJbJ2EnXSIsCi0gICAgICAgICJbJ2FhJ10iLAotICAgICAg
ICAiWydiJ10iLAotICAgICAgICAiWydiYSddIiwKLQotICAgICAgICAiWydceEEyJ10iLCAvLyBV
KzAwQTIgQ0VOVCBTSUdOCi0gICAgICAgICJbJ1x1NkMzNCddIiwgLy8gVSs2QzM0IENKSyBVTklG
SUVEIElERU9HUkFQSCAod2F0ZXIpCi0gICAgICAgICJbJ1x1RDgzNFx1REQxRSddIiwgLy8gVSsx
RDExRSBNVVNJQ0FMIFNZTUJPTCBHLUNMRUYgKFVURi0xNiBzdXJyb2dhdGUgcGFpcikKLSAgICAg
ICAgIlsnXHVGRkZEJ10iLCAvLyBVK0ZGRkQgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSCi0KLSAgICAg
ICAgIltbXV0iLAotICAgICAgICAKLSAgICAgICAgIltbXSwgW11dIiwKLSAgICAgICAgIltbXSwg
W10sIFtdXSIsCi0KLSAgICAgICAgIltbW11dXSIsCi0gICAgICAgICJbW1tbXV1dXSIKLSAgICBd
OwotCi0gICAgdmFyIGksIGtleTEsIGtleTI7Ci0gICAgZm9yIChpID0gMDsgaSA8IGtleXMubGVu
Z3RoIC0gMTsgaSArPSAxKSB7Ci0gICAgICAgIGtleTEgPSBrZXlzW2ldOwotICAgICAgICBrZXky
ID0ga2V5c1tpICsgMV07Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXhlZERCLmNtcCgiICsg
a2V5MSArICIsIiArIGtleTIgKyAiKSA9PT0gLTEiKTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJp
bmRleGVkREIuY21wKCIgKyBrZXkyICsgIiwiICsga2V5MSArICIpID09PSAxIik7Ci0gICAgICAg
IHNob3VsZEJlVHJ1ZSgiaW5kZXhlZERCLmNtcCgiICsga2V5MSArICIsIiArIGtleTEgKyAiKSA9
PT0gMCIpOwotICAgICAgICBzaG91bGRCZVRydWUoImluZGV4ZWREQi5jbXAoIiArIGtleTIgKyAi
LCIgKyBrZXkyICsgIikgPT09IDAiKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RJbnZhbGlk
S2V5cygpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJjb21wYXJlIGludmFsaWQga2V5
cyIpOwotCi0gICAgdmFyIGludmFsaWRLZXlzID0gWwotICAgICAgICAidm9pZCAwIiwgLy8gdW5k
ZWZpbmVkCi0gICAgICAgICJ0cnVlIiwKLSAgICAgICAgImZhbHNlIiwKLSAgICAgICAgIk5hTiIs
Ci0gICAgICAgICJuZXcgRGF0ZShOYU4pIiwKLSAgICAgICAgIm51bGwiLAotICAgICAgICAie30i
LAotICAgICAgICAiZnVuY3Rpb24gKCkge30iLAotICAgICAgICAiL3JlZ2V4LyIsCi0gICAgICAg
ICJzZWxmIiwKLSAgICAgICAgInNlbGYuZG9jdW1lbnQiLAotICAgICAgICAic2VsZi5kb2N1bWVu
dC5ib2R5IgotICAgIF07Ci0KLSAgICB2YXIgaSwga2V5MSwga2V5MjsKLSAgICBmb3IgKGkgPSAw
OyBpIDwgaW52YWxpZEtleXMubGVuZ3RoIC0gMTsgaSArPSAxKSB7Ci0gICAgICAgIGtleTEgPSBp
bnZhbGlkS2V5c1tpXTsKLSAgICAgICAga2V5MiA9IGludmFsaWRLZXlzW2kgKyAxXTsKLSAgICAg
ICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXhlZERCLmNtcCgiICsga2V5MSArICIsICIg
KyBrZXkyICsgIikiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLSAgICAgICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXhlZERCLmNtcCgiICsga2V5MiArICIsICIgKyBr
ZXkxICsgIikiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLSAgICAgICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXhlZERCLmNtcCgiICsga2V5MSArICIsICd2YWxpZCcp
IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0gICAgICAgIGV2YWxBbmRFeHBl
Y3RFeGNlcHRpb24oImluZGV4ZWREQi5jbXAoJ3ZhbGlkJywgIiArIGtleTEgKyAiKSIsICJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJpbmRleGVkREIuY21wKCIgKyBrZXkyICsgIiwgJ3ZhbGlkJykiLCAiSURCRGF0YWJhc2VF
eGNlcHRpb24uREFUQV9FUlIiKTsKLSAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5k
ZXhlZERCLmNtcCgndmFsaWQnLCAiICsga2V5MiArICIpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9u
LkRBVEFfRVJSIik7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0SWRlbnRpY2FsS2V5cygpCi17
Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJjb21wYXJlIGlkZW50aWNhbCBrZXlzIik7Ci0K
LSAgICBzaG91bGRCZVRydWUoImluZGV4ZWREQi5jbXAoMCwgLTApID09PSAwIik7Ci19Ci0KLQot
dGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZmFjdG9yeS1jbXAu
anMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9mYWN0b3J5LWRlbGV0ZWRhdGFiYXNlLWludGVyYWN0
aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZmFjdG9yeS1kZWxldGVk
YXRhYmFzZS1pbnRlcmFjdGlvbnMuaHRtbAppbmRleCBlNWMwZGM2MWJmNmNiMGQzNTVjMTIyZTlj
MDc5ZDFlMGFlZjhjOWE1Li5mMGVmNDc4ZGNkZGY0Y2M5YzVjZjM2MDRkNzk4YzAxMTg5YWMxMTZh
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9mYWN0b3J5LWRlbGV0
ZWRhdGFiYXNlLWludGVyYWN0aW9ucy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2ZhY3RvcnktZGVsZXRlZGF0YWJhc2UtaW50ZXJhY3Rpb25zLmh0bWwKQEAgLTQsMTkx
ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwv
aGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgdGhlIGRlbGV0ZURh
dGFiYXNlIGNhbGwgYW5kIGl0cyBpbnRlcmFjdGlvbiB3aXRoIG9wZW4vc2V0VmVyc2lvbiIpOwot
Ci1mdW5jdGlvbiBDb25uZWN0aW9uKGlkKSB7Ci0gICAgaWQgPSBTdHJpbmcoaWQpOwotICAgIHZh
ciB0aGF0ID0gdGhpczsKLSAgICB0aGlzLm9wZW4gPSBmdW5jdGlvbihvcHRzKSB7Ci0gICAgICAg
IHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5vcGVuJyIpKTsKLSAgICAg
ICAgdmFyIHJlcSA9IGluZGV4ZWREQi5vcGVuKHNlbGYuZGJuYW1lKTsKLSAgICAgICAgcmVxLm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmVxLm9uc3VjY2VzcyA9
IGZ1bmN0aW9uIChlKSB7Ci0gICAgICAgICAgICB0aGF0LmhhbmRsZSA9IGUudGFyZ2V0LnJlc3Vs
dDsKLSAgICAgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5v
cGVuLm9uc3VjY2VzcyciKSk7Ci0gICAgICAgICAgICB0aGF0LmhhbmRsZS5vbnZlcnNpb25jaGFu
Z2UgPSBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxB
bmRMb2coIiciICsgaWQgKyAiLm9udmVyc2lvbmNoYW5nZSciKSk7Ci0gICAgICAgICAgICAgICAg
aWYgKG9wdHMgJiYgb3B0cy5vbnZlcnNpb24pIHsgb3B0cy5vbnZlcnNpb24uY2FsbCh0aGF0KTsg
fQotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIGlmIChvcHRzICYmIG9wdHMub25zdWNjZXNz
KSB7IG9wdHMub25zdWNjZXNzLmNhbGwodGhhdCk7IH0KLSAgICAgICAgfTsKLSAgICB9OwotCi0g
ICAgdGhpcy5jbG9zZSA9IGZ1bmN0aW9uKCkgewotICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZh
bEFuZExvZygiJyIgKyBpZCArICIuY2xvc2UnIikpOwotICAgICAgICB0aGlzLmhhbmRsZS5jbG9z
ZSgpOwotICAgIH07Ci0KLSAgICB0aGlzLnNldFZlcnNpb24gPSBmdW5jdGlvbihvcHRzKSB7Ci0g
ICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5zZXRWZXJzaW9u
JyIpKTsKLSAgICAgICAgdmFyIHJlcSA9IHRoaXMuaGFuZGxlLnNldFZlcnNpb24oU3RyaW5nKHNl
bGYudmVyKyspKTsKLSAgICAgICAgcmVxLm9uYWJvcnQgPSBmdW5jdGlvbiAoZSkgewotICAgICAg
ICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLnNldFZlcnNpb24u
b25hYm9ydCciKSk7Ci0gICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9uYWJvcnQpIHsgb3B0
cy5vbmFib3J0LmNhbGwodGhhdCk7IH0KLSAgICAgICAgfTsKLSAgICAgICAgcmVxLm9uYmxvY2tl
ZCA9IGZ1bmN0aW9uIChlKSB7Ci0gICAgICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExv
ZygiJyIgKyBpZCArICIuc2V0VmVyc2lvbi5vbmJsb2NrZWQnIikpOwotICAgICAgICAgICAgaWYg
KG9wdHMgJiYgb3B0cy5vbmJsb2NrZWQpIHsgb3B0cy5vbmJsb2NrZWQuY2FsbCh0aGF0KTsgfQot
ICAgICAgICB9OwotICAgICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKLSAgICAg
ICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5zZXRWZXJzaW9u
Lm9uc3VjY2VzcyciKSk7Ci0gICAgICAgICAgICBpZiAodGhhdC5oYW5kbGUub2JqZWN0U3RvcmVO
YW1lcy5jb250YWlucygidGVzdC1zdG9yZSIgKyBzZWxmLnZlcikpIHsKLSAgICAgICAgICAgICAg
ICB0aGF0LmhhbmRsZS5kZWxldGVPYmplY3RTdG9yZSgidGVzdC1zdG9yZSIgKyBzZWxmLnZlcik7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2YXIgc3RvcmUgPSB0aGF0LmhhbmRsZS5jcmVh
dGVPYmplY3RTdG9yZSgidGVzdC1zdG9yZSIgKyBzZWxmLnZlcik7Ci0gICAgICAgICAgICB2YXIg
Y291bnQgPSAwOwotICAgICAgICAgICAgZG9fYXN5bmNfcHV0cygpOyAvLyBLZWVwIHRoaXMgdHJh
bnNhY3Rpb24gcnVubmluZyBmb3IgYSB3aGlsZQotICAgICAgICAgICAgZnVuY3Rpb24gZG9fYXN5
bmNfcHV0cygpIHsKLSAgICAgICAgICAgICAgICB2YXIgcmVxID0gc3RvcmUucHV0KGNvdW50LCBj
b3VudCk7Ci0gICAgICAgICAgICAgICAgcmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLSAgICAgICAgICAgICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKCsrY291bnQgPCAxMCkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgZG9fYXN5bmNfcHV0cygpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQg
KyAiLnNldFZlcnNpb24udHJhbnNhY3Rpb24tY29tcGxldGUnIikpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5vbnN1Y2Nlc3MpIHsgb3B0cy5vbnN1Y2Nlc3MuY2Fs
bCh0aGF0KTsgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICAgICAgcmVxLm9uZXJyb3IgPSBmdW5jdGlvbiAo
ZSkgewotICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAi
LnNldFZlcnNpb24ub25lcnJvciciKSk7Ci0gICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9u
ZXJyb3IpIHsgb3B0cy5vbmVycm9yLmNhbGwodGhhdCk7IH0KLSAgICAgICAgfTsKLSAgICB9Owot
fQotCi1mdW5jdGlvbiBkZWxldGVEYXRhYmFzZShpZCwgbmFtZSwgb3B0cykgewotICAgIHNlbGYu
c3RlcHMucHVzaChldmFsQW5kTG9nKCInZGVsZXRlRGF0YWJhc2UoIiArIGlkICsgIiknIikpOwot
ICAgIHZhciByZXEgPSBpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UobmFtZSk7Ci0gICAgcmVxLm9u
c3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7Ci0gICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5k
TG9nKCInZGVsZXRlRGF0YWJhc2UoIiArIGlkICsgIikub25zdWNjZXNzJyIpKTsKLSAgICAgICAg
aWYgKG9wdHMgJiYgb3B0cy5vbnN1Y2Nlc3MpIHsgb3B0cy5vbnN1Y2Nlc3MuY2FsbChudWxsKTsg
fQotICAgIH07Ci0gICAgcmVxLm9uZXJyb3IgPSBmdW5jdGlvbiAoZSkgewotICAgICAgICBzZWxm
LnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJ2RlbGV0ZURhdGFiYXNlKCIgKyBpZCArICIpLm9uZXJy
b3InIikpOwotICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9uZXJyb3IpIHsgb3B0cy5vbmVycm9y
LmNhbGwobnVsbCk7IH0KLSAgICB9OwotICAgIHJlcS5vbmJsb2NrZWQgPSBmdW5jdGlvbiAoZSkg
ewotICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJ2RlbGV0ZURhdGFiYXNlKCIg
KyBpZCArICIpLm9uYmxvY2tlZCciKSk7Ci0gICAgICAgIGlmIChvcHRzICYmIG9wdHMub25ibG9j
a2VkKSB7IG9wdHMub25ibG9ja2VkLmNhbGwobnVsbCk7IH0KLSAgICB9OwotfQotCi0vLyBydW4g
YSBzZXJpZXMgb2Ygc3RlcHMgdGhhdCB0YWtlIGEgY29udGludWF0aW9uIGZ1bmN0aW9uCi1mdW5j
dGlvbiBydW5TdGVwcyhjb21tYW5kcykgewotICAgIGlmIChjb21tYW5kcy5sZW5ndGgpIHsKLSAg
ICAgICAgdmFyIGNvbW1hbmQgPSBjb21tYW5kcy5zaGlmdCgpOwotICAgICAgICBjb21tYW5kKGZ1
bmN0aW9uKCkgeyBydW5TdGVwcyhjb21tYW5kcyk7IH0pOwotICAgIH0KLX0KLQotZnVuY3Rpb24g
dGVzdCgpIHsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIHRlc3QxKCk7Ci19Ci0K
LWZ1bmN0aW9uIHRlc3QxKCkgewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiVEVTVDogZGVs
ZXRlRGF0YWJhc2UgYmxvY2tlZCBvbiBvcGVuIGhhbmRsZXMiKTsKLSAgICBldmFsQW5kTG9nKCJz
ZWxmLmRibmFtZSA9ICd0ZXN0MSc7IHNlbGYudmVyID0gMTsgc2VsZi5zdGVwcyA9IFtdIik7Ci0g
ICAgdmFyIGggPSBuZXcgQ29ubmVjdGlvbigiaCIpOwotICAgIHJ1blN0ZXBzKFtmdW5jdGlvbihk
b05leHQpIHsgaC5vcGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb252ZXJzaW9uOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRlYnVnKCIgICAgaCBjbG9zaW5nLCBidXQgbm90IGltbWVkaWF0ZWx5
Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBoLmNsb3NlKCk7IH0sIDApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9fSk7IH0sCi0gICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBkZWxldGVEYXRhYmFzZSgiIiwg
c2VsZi5kYm5hbWUsIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uc3VjY2VzczogZmlu
aXNoVGVzdH0pOyB9LAotICAgICAgICBdKTsKLSAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgewot
ICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNlbGYuc3RlcHMudG9TdHJpbmcoKSIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImgub3BlbiIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImgub3Blbi5vbnN1Y2Nlc3MiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJkZWxldGVEYXRhYmFzZSgpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiaC5vbnZlcnNpb25jaGFuZ2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJkZWxldGVEYXRhYmFzZSgpLm9uYmxvY2tlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImguY2xvc2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWxldGVE
YXRhYmFzZSgpLm9uc3VjY2VzcyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnRv
U3RyaW5nKCkpOwotICAgICAgICB0ZXN0MigpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdDIo
KSB7Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJURVNUOiBkZWxldGVEYXRhYmFzZSBub3Qg
YmxvY2tlZCB3aGVuIGhhbmRsZXMgY2xvc2UgaW1tZWRpYXRlbHkiKTsKLSAgICBldmFsQW5kTG9n
KCJzZWxmLmRibmFtZSA9ICd0ZXN0Mic7IHNlbGYudmVyID0gMTsgc2VsZi5zdGVwcyA9IFtdIik7
Ci0gICAgdmFyIGggPSBuZXcgQ29ubmVjdGlvbigiaCIpOwotICAgIHJ1blN0ZXBzKFtmdW5jdGlv
bihkb05leHQpIHsgaC5vcGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG9udmVyc2lvbjogZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoIiAgICBoIGNsb3Np
bmcgaW1tZWRpYXRlbHkiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBoLmNsb3NlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9fSk7IH0sCi0gICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBkZWxldGVEYXRhYmFzZSgi
Iiwgc2VsZi5kYm5hbWUsIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uc3VjY2Vzczog
ZmluaXNoVGVzdH0pOyB9LAotICAgICAgICBdKTsKLSAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkg
ewotICAgICAgICBkZWJ1ZygiTk9URTogV2lsbCBGQUlMIHdpdGggZXh0cmEgYm9ndXMgZGVsZXRl
RGF0YWJhc2UoKS5vbmJsb2NrZWQgc3RlcDsgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTcxMTMwIik7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic2VsZi5z
dGVwcy50b1N0cmluZygpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiaC5vcGVu
IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaC5vcGVuLm9uc3VjY2VzcyIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlbGV0ZURhdGFiYXNlKCkiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJoLm9udmVyc2lvbmNoYW5nZSIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImguY2xvc2UiLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJkZWxldGVEYXRhYmFzZSgpLm9uc3VjY2VzcyIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBdLnRvU3RyaW5nKCkpOwotICAgICAgICB0ZXN0MygpOwotICAgIH0KLX0KLQot
ZnVuY3Rpb24gdGVzdDMoKSB7Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJURVNUOiBkZWxl
dGVEYXRhYmFzZSBpcyBkZWxheWVkIGlmIGEgVkVSU0lPTl9DSEFOR0UgdHJhbnNhY3Rpb24gaXMg
cnVubmluZyIpOwotICAgIGV2YWxBbmRMb2coInNlbGYuZGJuYW1lID0gJ3Rlc3QzJzsgc2VsZi52
ZXIgPSAxOyBzZWxmLnN0ZXBzID0gW10iKTsKLSAgICB2YXIgaCA9IG5ldyBDb25uZWN0aW9uKCJo
Iik7Ci0gICAgcnVuU3RlcHMoW2Z1bmN0aW9uKGRvTmV4dCkgeyBoLm9wZW4oe29uc3VjY2Vzczog
ZG9OZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbnZlcnNpb246IGZ1bmN0
aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoIiAgICBo
IGNsb3NpbmcsIGJ1dCBub3QgaW1tZWRpYXRlbHkiKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGguY2xvc2UoKTsgfSwgMCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19KTsgfSwKLSAgICAgICAgICAgICAgZnVu
Y3Rpb24oZG9OZXh0KSB7IGguc2V0VmVyc2lvbigpOyBkb05leHQoKTsgfSwKLSAgICAgICAgICAg
ICAgZnVuY3Rpb24oZG9OZXh0KSB7IGRlbGV0ZURhdGFiYXNlKCIiLCBzZWxmLmRibmFtZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge29uc3VjY2VzczogZmluaXNoVGVzdH0pOyB9
LAotICAgICAgICAgICAgICBdKTsKLQotICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7Ci0gICAg
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic2VsZi5zdGVwcy50b1N0cmluZygpIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFsiaC5vcGVuIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiaC5vcGVuLm9uc3VjY2VzcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImguc2V0VmVyc2lvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRl
bGV0ZURhdGFiYXNlKCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoLnNldFZl
cnNpb24ub25zdWNjZXNzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaC5zZXRW
ZXJzaW9uLnRyYW5zYWN0aW9uLWNvbXBsZXRlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiaC5vbnZlcnNpb25jaGFuZ2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJkZWxldGVEYXRhYmFzZSgpLm9uYmxvY2tlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImguY2xvc2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWxldGVE
YXRhYmFzZSgpLm9uc3VjY2VzcyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnRv
U3RyaW5nKCkpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9Ci19Ci0KLXRlc3QoKTsK
LQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZhY3RvcnktZGVsZXRlZGF0YWJh
c2UtaW50ZXJhY3Rpb25zLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZmFjdG9yeS1kZWxldGVk
YXRhYmFzZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZmFjdG9yeS1kZWxl
dGVkYXRhYmFzZS5odG1sCmluZGV4IDNkMzMyM2M0OTI4MjYxZGNkOTRjNDI2Y2I0ODA1MDVhNDZl
Y2FkMTEuLmQwYzgyNmJmYzViOGMyNDk1NGM4ZDBlYWI4ZTliM2QwZjdmMjE2NWMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ZhY3RvcnktZGVsZXRlZGF0YWJhc2Uu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9mYWN0b3J5LWRlbGV0ZWRh
dGFiYXNlLmh0bWwKQEAgLTQsOTUgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFy
ZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlv
bigiVGVzdCBJbmRleGVkREIncyB3ZWJraXRJbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoKS4iKTsK
LQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2RhdGFiYXNlLXRvLWRlbGV0ZScp
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzdGFydFNldFZlcnNpb247Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHN0YXJ0
U2V0VmVyc2lvbigpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcg
dmVyc2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rp
b24gZGVsZXRlRXhpc3RpbmcoKQotewotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFu
cyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBu
dWxsIik7Ci0KLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7Ci0KLSAgICBzZWxmLmluZGV4ID0gZXZhbEFuZExv
Zygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZScsICcnKSIpOwotICAgIHNob3VsZEJlVHJ1
ZSgic3RvcmUuaW5kZXhOYW1lcy5jb250YWlucygnaW5kZXhOYW1lJykiKTsKLQotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoJ3ZhbHVlJywgJ2tleScpIik7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21wbGV0
ZSA9IGdldFZhbHVlOwotfQotCi1mdW5jdGlvbiBnZXRWYWx1ZSgpCi17Ci0gICAgdHJhbnNhY3Rp
b24gPSBldmFsQW5kTG9nKCJkYi50cmFuc2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rp
b24uUkVBRF9XUklURSkiKTsKLSAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci0gICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2Fj
dGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJzdG9yZS5nZXQoJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRJbmRl
eDsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQot
ZnVuY3Rpb24gYWRkSW5kZXgoKQotewotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQu
dGFyZ2V0LnJlc3VsdCIsICJ2YWx1ZSIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRi
LnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRl
bGV0ZURhdGFiYXNlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotfQotCi1mdW5jdGlvbiBkZWxldGVEYXRhYmFzZSgpCi17Ci0gICAgZGIub252ZXJzaW9u
Y2hhbmdlID0gZnVuY3Rpb24oKSB7IGRiLmNsb3NlKCk7IH0KLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgnZGF0YWJhc2UtdG8tZGVs
ZXRlJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHJlb3BlbkRhdGFiYXNlOwotICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBy
ZW9wZW5EYXRhYmFzZSgpCi17Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5v
cGVuKCdkYXRhYmFzZS10by1kZWxldGUnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc3Rh
cnRTZXRWZXJzaW9uQWdhaW47Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHN0YXJ0U2V0VmVyc2lvbkFnYWluKCkKLXsKLSAgICBy
ZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSB2ZXJpZnlOb3RGb3VuZDsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gdmVyaWZ5Tm90Rm91bmQoKQot
ewotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIwIik7Ci0KLSAg
ICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotdGVzdCgpOwotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL2ZhY3RvcnktZGVsZXRlZGF0YWJhc2UuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBz
cmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8
L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9pbmRleC1jb3VudC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgt
Y291bnQuaHRtbAppbmRleCBmMzJhZTEzNmFlNmY1NDcwNjc5MTY4ZTgyYWU2ZDUyN2UwMmI0ODZj
Li5mODAxMThlMGNmMmRkYzkwYTc2YTE3OWQyZGM4MGMxNzNhNDg3M2FiIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1jb3VudC5odG1sCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWNvdW50Lmh0bWwKQEAgLTQsMTU5ICs0LDcg
QEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4K
IDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgSURCSW5k
ZXguY291bnQoKS4iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJl
Zml4ZXMoKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2luZGV4
LWNvdW50JykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAgICBkYiA9IGV2
YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgICAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOwotICAgICAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBwcmVwYXJlRGF0YWJhc2U7Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24gcHJlcGFy
ZURhdGFiYXNlKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInByZXBhcmluZyBkYXRh
YmFzZSIpOwotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0KLSAgICBk
ZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9y
ZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOwotCi0gICAgc2Vs
Zi5pbmRleCA9IGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleE5hbWUnLCAnJyki
KTsKLSAgICBzaG91bGRCZVRydWUoInN0b3JlLmluZGV4TmFtZXMuY29udGFpbnMoJ2luZGV4TmFt
ZScpIik7Ci0KLSAgICBkZWJ1ZygiYWRkaW5nIDAgLi4uIDk5Iik7Ci0gICAgZm9yICh2YXIgaSA9
IDA7IGkgPCAxMDA7ICsraSkgewotICAgICAgICByZXF1ZXN0ID0gc3RvcmUuYWRkKGksIGkpOwot
ICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB9
Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IHZlcmlmeUNvdW50OwotfQotCi1mdW5jdGlvbiB2ZXJp
ZnlDb3VudCgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJ2ZXJpZnlpbmcgY291bnQg
d2l0aG91dCByYW5nZSIpOwotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFu
c2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKSIpOwotICAgIHNo
b3VsZEJlVHJ1ZSgidHJhbnMgIT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVj
dGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gdmVyaWZ5Q291bnRXaXRo
UmFuZ2U7Ci0KLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3Rv
cmUoJ3N0b3JlTmFtZScpIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJzdG9yZSAhPSBudWxsIik7Ci0g
ICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmluZGV4KCdpbmRleE5hbWUnKSIp
OwotICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXggIT0gbnVsbCIpOwotCi0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleC5jb3VudCgpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbigpIHsKLSAgICAgICAgIHNob3VsZEJlVHJ1ZSgidHlwZW9mIHJlcXVlc3QucmVzdWx0ID09
ICdudW1iZXInIik7Ci0gICAgICAgICBzaG91bGRCZSgicmVxdWVzdC5yZXN1bHQiLCAiMTAwIik7
Ci0gICAgICAgICAvLyBsZXQgdGhlIHRyYW5zYWN0aW9uIGNvbXBsZXRlCi0gICAgfTsKLX0KLQot
ZnVuY3Rpb24gdmVyaWZ5Q291bnRXaXRoUmFuZ2UoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBk
ZWJ1ZygidmVyaWZ5aW5nIGNvdW50IHdpdGggcmFuZ2UiKTsKLSAgICB0cmFucyA9IGV2YWxBbmRM
b2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJF
QURfT05MWSkiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9IG51bGwiKTsKLSAgICB0cmFu
cy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21wbGV0
ZSA9IHZlcmlmeUNvdW50V2l0aEtleTsKLQotICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUg
PSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLSAgICBzaG91bGRCZVRydWUoInN0
b3JlICE9IG51bGwiKTsKLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coImluZGV4ID0gdHJhbnMub2Jq
ZWN0U3RvcmUoJ3N0b3JlTmFtZScpLmluZGV4KCdpbmRleE5hbWUnKSIpOwotICAgIHNob3VsZEJl
VHJ1ZSgiaW5kZXggIT0gbnVsbCIpOwotCi0gICAgdmFyIHRlc3RzID0gWwotICAgICAgICB7IGxv
d2VyOiAwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogOTksIHVwcGVyT3BlbjogZmFsc2UsIGV4
cGVjdGVkOiAxMDAgfSwKLSAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiB0cnVlLCB1cHBl
cjogOTksIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiA5OSB9LAotICAgICAgICB7IGxvd2Vy
OiAwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogOTksIHVwcGVyT3BlbjogdHJ1ZSwgZXhwZWN0
ZWQ6IDk5IH0sCi0gICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogdHJ1ZSwgdXBwZXI6IDk5
LCB1cHBlck9wZW46IHRydWUsIGV4cGVjdGVkOiA5OCB9LAotICAgICAgICB7IGxvd2VyOiAwLCBs
b3dlck9wZW46IGZhbHNlLCB1cHBlcjogMTAwLCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDog
MTAwIH0sCi0gICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiAxMDAs
IHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiAxMDAgfSwKLSAgICAgICAgeyBsb3dlcjogMTAs
IGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiAxMDAsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVk
OiA5MCB9LAotICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogMCwg
dXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDEgfSwKLSAgICAgICAgeyBsb3dlcjogNTAwLCBs
b3dlck9wZW46IGZhbHNlLCB1cHBlcjogNTAwLCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDog
MCB9Ci0gICAgXTsKLQotICAgIGZ1bmN0aW9uIG5leHRUZXN0KCkgewotICAgICAgICBkZWJ1Zygi
Iik7Ci0gICAgICAgIGV2YWxBbmRMb2coInRlc3QgPSAiICsgSlNPTi5zdHJpbmdpZnkodGVzdHMu
c2hpZnQoKSkpOwotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4
LmNvdW50KElEQktleVJhbmdlLmJvdW5kKHRlc3QubG93ZXIsIHRlc3QudXBwZXIsIHRlc3QubG93
ZXJPcGVuLCB0ZXN0LnVwcGVyT3BlbikpIik7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0
aW9uKCkgewotICAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgidHlwZW9mIHJlcXVlc3QucmVzdWx0
ID09ICdudW1iZXInIik7Ci0gICAgICAgICAgICAgc2hvdWxkQmUoInJlcXVlc3QucmVzdWx0Iiwg
U3RyaW5nKHRlc3QuZXhwZWN0ZWQpKTsKLQotICAgICAgICAgICAgIGlmICh0ZXN0cy5sZW5ndGgp
IHsKLSAgICAgICAgICAgICAgICAgbmV4dFRlc3QoKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgLy8gb3RoZXJ3aXNlIGxldCB0aGUgdHJhbnNhY3Rpb24gY29tcGxldGUKLSAgICAgICAg
fTsKLSAgICB9Ci0KLSAgICBuZXh0VGVzdCgpOwotfQotCi1mdW5jdGlvbiB2ZXJpZnlDb3VudFdp
dGhLZXkoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygidmVyaWZ5aW5nIGNvdW50IHdp
dGgga2V5Iik7Ci0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9u
KCdzdG9yZU5hbWUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7Ci0gICAgc2hvdWxkQmVU
cnVlKCJ0cmFucyAhPSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9y
dENhbGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBmaW5pc2hKU1Rlc3Q7Ci0KLSAgICBz
dG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScp
Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJzdG9yZSAhPSBudWxsIik7Ci0gICAgc3RvcmUgPSBldmFs
QW5kTG9nKCJpbmRleCA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKS5pbmRleCgnaW5k
ZXhOYW1lJykiKTsKLSAgICBzaG91bGRCZVRydWUoImluZGV4ICE9IG51bGwiKTsKLQotICAgIGV2
YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4LmNvdW50KE5hTikiLCAiSURCRGF0YWJhc2VFeGNl
cHRpb24uREFUQV9FUlIiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJpbmRleC5jb3Vu
dCh7fSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLSAgICBldmFsQW5kRXhw
ZWN0RXhjZXB0aW9uKCJpbmRleC5jb3VudCgvcmVnZXgvKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlv
bi5EQVRBX0VSUiIpOwotCi0gICAgdmFyIHRlc3RzID0gWwotICAgICAgICB7IGtleTogMCwgZXhw
ZWN0ZWQ6IDEgfSwKLSAgICAgICAgeyBrZXk6IDEwMCwgZXhwZWN0ZWQ6IDAgfSwKLSAgICAgICAg
eyBrZXk6IG51bGwsIGV4cGVjdGVkOiAxMDAgfQotICAgIF07Ci0KLSAgICBmdW5jdGlvbiBuZXh0
VGVzdCgpIHsKLSAgICAgICAgZGVidWcoIiIpOwotICAgICAgICBldmFsQW5kTG9nKCJ0ZXN0ID0g
IiArIEpTT04uc3RyaW5naWZ5KHRlc3RzLnNoaWZ0KCkpKTsKLSAgICAgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleC5jb3VudCh0ZXN0LmtleSkiKTsKLSAgICAgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0eXBl
b2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251bWJlciciKTsKLSAgICAgICAgICAgICBzaG91bGRCZSgi
cmVxdWVzdC5yZXN1bHQiLCBTdHJpbmcodGVzdC5leHBlY3RlZCkpOwotCi0gICAgICAgICAgICAg
aWYgKHRlc3RzLmxlbmd0aCkgewotICAgICAgICAgICAgICAgICBuZXh0VGVzdCgpOwotICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAvLyBvdGhlcndpc2UgbGV0IHRoZSB0cmFuc2FjdGlvbiBj
b21wbGV0ZQotICAgICAgICB9OwotICAgIH0KLQotICAgIG5leHRUZXN0KCk7Ci19Ci0KLXRlc3Qo
KTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2luZGV4LWNvdW50LmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtY3Vyc29yLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9pbmRleC1jdXJzb3IuaHRtbAppbmRleCAzMGExNjA3MzA5YThjNzU1Yzc4
ZGEzM2FjZGY3MWI4OThhZDZlMmIzLi5jOWQ5NDQ0Njk3NzY5MjMzN2JhYjgyM2RhNjdhMWE3OWIx
NmQ5ZjU2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1j
dXJzb3IuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1jdXJz
b3IuaHRtbApAQCAtNCwyNTQgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQu
anMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PiAKLQotZGVzY3JpcHRpb24o
IlRlc3QgSW5kZXhlZERCJ3Mgd2Via2l0SURCSW5kZXgub3BlbkN1cnNvciArIHRoZSBjdXJzb3Ig
aXQgcHJvZHVjZXMgaW4gZGVwdGguIik7Ci0gCi0vLyBJbiBvcmRlciBvZiBob3cgaXQgc2hvdWxk
IGJlIHNvcnRlZCBieSBJbmRleGVkREIuCi1zZWxmLnRlc3REYXRhID0gWwotICAgIDEsCi0gICAg
MSwKLSAgICAzLjE0MTU5LAotICAgIDMuMTQxNTksCi0gICAgMTAsCi0gICAgLy8gRklYTUU6IERh
dGVzLgotICAgICJBIGJpZyBzdHJpbmciLAotICAgICJ0aGUgQklHRVNUIHN0cmluZyIsCi0gICAg
InRoZSBCSUdFU1Qgc3RyaW5nIgotXTsKLSAKLWZ1bmN0aW9uIG9wZW5EYXRhYmFzZSgpCi17Ci0g
ICAgcmVzdWx0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2luZGV4LWN1cnNvcicpIik7
Ci0gICAgcmVzdWx0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb247Ci0gICAgcmVzdWx0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLSAKLWZ1bmN0aW9uIHNldFZlcnNpb24oKQot
ewotICAgIHNlbGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsK
LQotICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJyki
KTsKLSAgICByZXN1bHQub25zdWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7Ci0gICAgcmVzdWx0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZGVsZXRlRXhp
c3RpbmcoKQotewotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0gICAg
dHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotCi0gICAgZGVsZXRlQWxs
T2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIHNlbGYub2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJk
Yi5jcmVhdGVPYmplY3RTdG9yZSgnc29tZU9iamVjdFN0b3JlJykiKTsKLSAgICBzZWxmLmluZGV4
T2JqZWN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ3NvbWVJbmRleCcs
ICd4JykiKTsKLSAgICBzZWxmLm5leHRUb0FkZCA9IDA7Ci0gICAgYWRkRGF0YSgpOwotfQotCi1m
dW5jdGlvbiBhZGREYXRhKCkKLXsKLSAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9y
ZS5hZGQoeyd4JzogdGVzdERhdGFbbmV4dFRvQWRkXX0sIG5leHRUb0FkZCkiKTsKLSAgICByZXN1
bHQub25zdWNjZXNzID0gKytzZWxmLm5leHRUb0FkZCA8IHRlc3REYXRhLmxlbmd0aCA/IGFkZERh
dGEgOiBzY2hlZHVsZVRlc3RzOwotICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNjaGVkdWxlVGVzdHMoKQotewotICAgIGRlYnVnKCJT
Y2hlZHVsaW5nIHRlc3RzLi4uIik7Ci0gICAgc2VsZi5zY2hlZHVsZWRUZXN0cyA9IFtdOwotICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdERhdGEubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgLyog
bGVmdCBib3VuZCwgaXMgb3BlbiwgcmlnaHQgYm91bmQsIGlzIG9wZW4sIGFzY2VuZGluZyAqLwot
ICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCB0cnVlLCBudWxsLCBudWxsLCB0cnVl
XSk7Ci0gICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBudWxsLCBudWxs
LCB0cnVlXSk7Ci0gICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW251bGwsIG51bGwsIGks
IHRydWUsIHRydWVdKTsKLSAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbbnVsbCwgbnVs
bCwgaSwgZmFsc2UsIHRydWVdKTsKLSAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwg
dHJ1ZSwgbnVsbCwgbnVsbCwgZmFsc2VdKTsKLSAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlm
dChbaSwgZmFsc2UsIG51bGwsIG51bGwsIGZhbHNlXSk7Ci0gICAgICAgIHNjaGVkdWxlZFRlc3Rz
LnVuc2hpZnQoW251bGwsIG51bGwsIGksIHRydWUsIGZhbHNlXSk7Ci0gICAgICAgIHNjaGVkdWxl
ZFRlc3RzLnVuc2hpZnQoW251bGwsIG51bGwsIGksIGZhbHNlLCBmYWxzZV0pOwotICAgICAgICBm
b3IgKHZhciBqID0gNjsgaiA8IHRlc3REYXRhLmxlbmd0aDsgKytqKSB7Ci0gICAgICAgICAgICBz
Y2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCB0cnVlLCBqLCB0cnVlLCB0cnVlXSk7Ci0gICAgICAg
ICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCB0cnVlLCBqLCBmYWxzZSwgdHJ1ZV0pOwot
ICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgZmFsc2UsIGosIHRydWUsIHRy
dWVdKTsKLSAgICAgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBqLCBm
YWxzZSwgdHJ1ZV0pOwotICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1
ZSwgaiwgdHJ1ZSwgZmFsc2VdKTsKLSAgICAgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQo
W2ksIHRydWUsIGosIGZhbHNlLCBmYWxzZV0pOwotICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMu
dW5zaGlmdChbaSwgZmFsc2UsIGosIHRydWUsIGZhbHNlXSk7Ci0gICAgICAgICAgICBzY2hlZHVs
ZWRUZXN0cy51bnNoaWZ0KFtpLCBmYWxzZSwgaiwgZmFsc2UsIGZhbHNlXSk7Ci0gICAgICAgIH0K
LSAgICB9Ci0gCi0gICAgZGVidWcoIlJ1bm5pbmcgdGVzdHMuLi4iKTsKLSAgICBydW5OZXh0VGVz
dCgpOwotfQotIAotZnVuY3Rpb24gcnVuTmV4dFRlc3QoKQotewotICAgIGlmICghc2NoZWR1bGVk
VGVzdHMubGVuZ3RoKSB7Ci0gICAgICAgIHRlc3ROdWxsS2V5UmFuZ2UoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAKLSAgICB2YXIgdGVzdCA9IHNjaGVkdWxlZFRlc3RzLnBvcCgpOwotICAg
IHNlbGYubG93ZXIgPSB0ZXN0WzBdOwotICAgIHNlbGYubG93ZXJJc09wZW4gPSB0ZXN0WzFdOwot
ICAgIHNlbGYudXBwZXIgPSB0ZXN0WzJdOwotICAgIHNlbGYudXBwZXJJc09wZW4gPSB0ZXN0WzNd
OwotICAgIHNlbGYuYXNjZW5kaW5nID0gdGVzdFs0XTsKLQotICAgIHN0ciA9ICJOZXh0IHRlc3Q6
ICI7Ci0gICAgaWYgKGxvd2VyICE9PSBudWxsKSB7Ci0gICAgICAgIHN0ciArPSAibG93ZXIgIjsK
LSAgICAgICAgaWYgKGxvd2VySXNPcGVuKQotICAgICAgICAgICAgc3RyICs9ICJvcGVuICI7Ci0g
ICAgICAgIHN0ciArPSAiYm91bmQgaXMgIiArIGxvd2VyICsgIjsgIjsKLSAgICB9Ci0gICAgaWYg
KHVwcGVyICE9PSBudWxsKSB7Ci0gICAgICAgIHN0ciArPSAidXBwZXIgIjsKLSAgICAgICAgaWYg
KHVwcGVySXNPcGVuKQotICAgICAgICAgICAgc3RyICs9ICJvcGVuICI7Ci0gICAgICAgIHN0ciAr
PSAiYm91bmQgaXMgIiArIHVwcGVyICsgIjsgIjsKLSAgICB9Ci0gICAgaWYgKGFzY2VuZGluZykK
LSAgICAgICAgc3RyICs9ICJzb3J0ZWQgYXNjZW5kaW5nLiI7Ci0gICAgZWxzZQotICAgICAgICBz
dHIgKz0gInNvcnRlZCBkZXNjZW5kaW5nLiI7Ci0KLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWco
c3RyKTsKLQotICAgIC8vIFdvcmsgYXJvdW5kIGZvciBkdXBsaWNhdGUgdmFsdWVzLgotICAgIGlm
ICh1cHBlciAhPT0gbnVsbCkgewotICAgICAgICBpZiAodXBwZXJJc09wZW4pIHsKLSAgICAgICAg
ICAgIHdoaWxlICh1cHBlciA+IDAgJiYgdGVzdERhdGFbdXBwZXJdID09PSB0ZXN0RGF0YVt1cHBl
ciAtIDFdKQotICAgICAgICAgICAgICAgIC0tc2VsZi51cHBlcjsKLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIHdoaWxlICh1cHBlciA8IHRlc3REYXRhLmxlbmd0aCAtIDEgJiYgdGVzdERh
dGFbdXBwZXJdID09PSB0ZXN0RGF0YVt1cHBlciArIDFdKQotICAgICAgICAgICAgICAgICsrc2Vs
Zi51cHBlcjsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAobG93ZXIgIT09IG51bGwpIHsKLSAg
ICAgICAgaWYgKGxvd2VySXNPcGVuKSB7Ci0gICAgICAgICAgICB3aGlsZSAobG93ZXIgPCB0ZXN0
RGF0YS5sZW5ndGggLSAxICYmIHRlc3REYXRhW2xvd2VyXSA9PT0gdGVzdERhdGFbbG93ZXIgKyAx
XSkKLSAgICAgICAgICAgICAgICArK3NlbGYubG93ZXI7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICB3aGlsZSAobG93ZXIgPiAwICYmIHRlc3REYXRhW2xvd2VyXSA9PT0gdGVzdERhdGFb
bG93ZXIgLSAxXSkKLSAgICAgICAgICAgICAgICAtLXNlbGYubG93ZXI7Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICBpZiAoYXNjZW5kaW5nKSB7Ci0gICAgICAgIGlmIChsb3dlciAhPT0gbnVsbCkg
ewotICAgICAgICAgICAgaWYgKCFsb3dlcklzT3BlbikKLSAgICAgICAgICAgICAgICBzZWxmLmV4
cGVjdGVkSW5kZXggPSBsb3dlcjsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBz
ZWxmLmV4cGVjdGVkSW5kZXggPSBsb3dlciArIDE7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgc2VsZi5leHBlY3RlZEluZGV4ID0gMDsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAodXBw
ZXIgIT09IG51bGwpIHsKLSAgICAgICAgICAgIGlmICghdXBwZXJJc09wZW4pCi0gICAgICAgICAg
ICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gdXBwZXI7Ci0gICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gdXBwZXIgLSAxOwotICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IHRlc3REYXRhLmxlbmd0aCAtIDE7
Ci0gICAgfQotICAgIHRlc3RXaXRoaW5Cb3VuZHMoKTsKLSAKLSAgICBpZiAodGVzdERhdGFbbG93
ZXJdID09PSB0ZXN0RGF0YVt1cHBlcl0gJiYgKGxvd2VySXNPcGVuIHx8IHVwcGVySXNPcGVuKSkg
ewotICAgICAgICBkZWJ1ZygiU2tpcHBpbmcgaWxsZWdhbCBrZXkgcmFuZ2UuIik7Ci0gICAgICAg
IHJ1bk5leHRUZXN0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB2YXIga2V5UmFu
Z2U7Ci0gICAgaWYgKGxvd2VyICE9PSBudWxsICYmIHVwcGVyICE9PSBudWxsKQotICAgICAgICBr
ZXlSYW5nZSA9IElEQktleVJhbmdlLmJvdW5kKHRlc3REYXRhW2xvd2VyXSwgdGVzdERhdGFbdXBw
ZXJdLCBsb3dlcklzT3BlbiwgdXBwZXJJc09wZW4pOwotICAgIGVsc2UgaWYgKGxvd2VyICE9PSBu
dWxsKQotICAgICAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQodGVzdERhdGFb
bG93ZXJdLCBsb3dlcklzT3Blbik7Ci0gICAgZWxzZQotICAgICAgICBrZXlSYW5nZSA9IElEQktl
eVJhbmdlLnVwcGVyQm91bmQodGVzdERhdGFbdXBwZXJdLCB1cHBlcklzT3Blbik7Ci0gCi0gICAg
dmFyIHJlcXVlc3QgPSBpbmRleE9iamVjdC5vcGVuS2V5Q3Vyc29yKGtleVJhbmdlLCBhc2NlbmRp
bmcgPyBJREJDdXJzb3IuTkVYVCA6IElEQkN1cnNvci5QUkVWKTsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGN1cnNvckl0ZXJhdGlvbjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gdGVzdFdpdGhpbkJvdW5kcygpCi17Ci0gICAg
aWYgKGV4cGVjdGVkSW5kZXggPCAwIHx8IHRlc3REYXRhLmxlbmd0aCA8PSBleHBlY3RlZEluZGV4
KQotICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSBudWxsOwotICAgIGlmIChsb3dlciAhPT0g
bnVsbCAmJiBleHBlY3RlZEluZGV4IDwgbG93ZXIpCi0gICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRl
eCA9IG51bGw7Ci0gICAgaWYgKHVwcGVyICE9PSBudWxsICYmIHVwcGVyIDwgZXhwZWN0ZWRJbmRl
eCkKLSAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gbnVsbDsKLSAgICBpZiAobG93ZXIgIT09
IG51bGwgJiYgbG93ZXJJc09wZW4gJiYgZXhwZWN0ZWRJbmRleCA8PSBsb3dlcikKLSAgICAgICAg
c2VsZi5leHBlY3RlZEluZGV4ID0gbnVsbDsKLSAgICBpZiAodXBwZXIgIT09IG51bGwgJiYgdXBw
ZXJJc09wZW4gJiYgdXBwZXIgPD0gZXhwZWN0ZWRJbmRleCkKLSAgICAgICAgc2VsZi5leHBlY3Rl
ZEluZGV4ID0gbnVsbDsKLX0KLSAKLWZ1bmN0aW9uIGN1cnNvckl0ZXJhdGlvbigpCi17Ci0gICAg
aWYgKGV4cGVjdGVkSW5kZXggPT09IG51bGwpIHsKLSAgICAgICAgc2hvdWxkQmVOdWxsKCJldmVu
dC50YXJnZXQucmVzdWx0Iik7Ci0gICAgICAgIHJ1bk5leHRUZXN0KCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwpIHsKLSAgICAg
ICAgdGVzdEZhaWxlZCgiZXZlbnQudGFyZ2V0LnJlc3VsdCBzaG91bGQgbm90IGJlIG51bGwuIik7
Ci0gICAgICAgIHJ1bk5leHRUZXN0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gCi0gICAg
c2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICJleHBlY3RlZEluZGV4
Iik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgInRlc3REYXRhWyIg
KyBleHBlY3RlZEluZGV4ICsgIl0iKTsKLSAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSBhc2NlbmRp
bmcgPyBleHBlY3RlZEluZGV4ICsgMSA6IGV4cGVjdGVkSW5kZXggLSAxOwotICAgIHRlc3RXaXRo
aW5Cb3VuZHMoKTsKLQotICAgIGV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKTsKLX0KLSAK
LXNlbGYubnVsbEtleVJhbmdlU3RlcCA9IDA7Ci1mdW5jdGlvbiB0ZXN0TnVsbEtleVJhbmdlKCkK
LXsKLSAgICBzZWxmLmxvd2VyID0gMDsKLSAgICBzZWxmLmxvd2VySXNPcGVuID0gZmFsc2U7Ci0g
ICAgc2VsZi51cHBlciA9IHRlc3REYXRhLmxlbmd0aC0xOwotICAgIHNlbGYudXBwZXJJc09wZW4g
PSBmYWxzZTsKLQotICAgIHN0ciA9ICJOZXh0IHRlc3Q6IG51bGwga2V5IHBhdGggIjsKLSAgICBp
ZiAoc2VsZi5udWxsS2V5UmFuZ2VTdGVwID09IDApIHsKLSAgICAgICAgc3RyICs9ICJzb3J0ZWQg
YXNjZW5kaW5nLiI7Ci0gICAgICAgIHNlbGYuYXNjZW5kaW5nID0gdHJ1ZTsKLSAgICAgICAgc2Vs
Zi5leHBlY3RlZEluZGV4ID0gbG93ZXI7Ci0gICAgICAgIHNlbGYubnVsbEtleVJhbmdlU3RlcCA9
IDE7Ci0gICAgfSBlbHNlIGlmIChzZWxmLm51bGxLZXlSYW5nZVN0ZXAgPT0gMSkgewotICAgICAg
ICBzdHIgKz0gInNvcnRlZCBkZXNjZW5kaW5nLiI7Ci0gICAgICAgIHNlbGYuYXNjZW5kaW5nID0g
ZmFsc2U7Ci0gICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IHVwcGVyOwotICAgICAgICBzZWxm
Lm51bGxLZXlSYW5nZVN0ZXAgPSAyOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGZpbmlzaEpTVGVz
dCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZGVidWcoIiIpOwotICAgIGRlYnVn
KHN0cik7Ci0gCi0gICAgdmFyIHJlcXVlc3QgPSBpbmRleE9iamVjdC5vcGVuS2V5Q3Vyc29yKG51
bGwsIGFzY2VuZGluZyA/IElEQkN1cnNvci5ORVhUIDogSURCQ3Vyc29yLlBSRVYpOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gY3Vyc29ySXRlcmF0aW9uOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotIAotcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsK
LW9wZW5EYXRhYmFzZSgpOyAvLyBUaGUgZmlyc3Qgc3RlcC4KLSAKLTwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9pbmRleC1jdXJzb3IuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2Jv
ZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9p
bmRleC1nZXQta2V5LWFyZ3VtZW50LXJlcXVpcmVkLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9pbmRleC1nZXQta2V5LWFyZ3VtZW50LXJlcXVpcmVkLmh0bWwKaW5kZXggM2I5
ZWExZDY1YzdjZjA3OTMyMjEwYTZlMjVlMzRhN2E2ZWJjZjIzYS4uZGRiN2NlMzcxNmU2YzhmYWRm
N2Q1MThiNGQzNzBmMjIzZmE1NzQzYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvaW5kZXgtZ2V0LWtleS1hcmd1bWVudC1yZXF1aXJlZC5odG1sCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWdldC1rZXktYXJndW1lbnQtcmVxdWlyZWQu
aHRtbApAQCAtMSw0OSArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgog
PHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVh
ZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGluZGV4
IC5nZXQoKSByZXF1aXJlZCBhcmd1bWVudCIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICBy
ZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5h
bWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAg
ICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNy
ZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jl
cyhkYik7Ci0KLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycsIHsga2V5UGF0aDogJ2lkJywgYXV0b0luY3JlbWVudDog
dHJ1ZSB9KTsiKTsKLSAgICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gb2JqZWN0U3RvcmUu
Y3JlYXRlSW5kZXgoJ2ZpcnN0JywgJ2ZpcnN0Jyk7Iik7Ci0gICAgc2hvdWxkVGhyb3coImluZGV4
LmdldCgpOyIpOwotICAgIHNob3VsZFRocm93KCJpbmRleC5nZXRLZXkoKTsiKTsKLSAgICBmaW5p
c2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9pbmRleC1nZXQta2V5LWFyZ3VtZW50LXJlcXVpcmVkLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvaW5kZXgtbXVsdGllbnRyeS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvaW5kZXgtbXVsdGllbnRyeS5odG1sCmluZGV4IDVjNzU5OWYwYzUwMmY3ZTY3ZGY0OTJk
ODQyNWQyNWE4MDAwZGEwODUuLmY4YjJkZjU5ZjZiM2U4NzliN2MxMDZiM2Y1NDc5ODY3YmI0Y2Rl
ZjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LW11bHRp
ZW50cnkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1tdWx0
aWVudHJ5Lmh0bWwKQEAgLTQsMTQ2ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hh
cmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRp
b24oIlRlc3QgZmVhdHVyZXMgb2YgSW5kZXhlZERCJ3MgbXVsdGlFbnRyeSBpbmRpY2VzLiIpOwot
Ci1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdpbmRleC1tdWx0aUVudHJ5Jyki
KTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAgICBkYiA9IGV2YWxBbmRMb2co
ImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcHJlcGFy
ZURhdGFiYXNlOwotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIHByZXBhcmVEYXRhYmFzZSgpCi17Ci0g
ICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJDcmVhdGluZyBlbXB0eSBzdG9yZXMgYW5kIGluZGV4
ZXMiKTsKLSAgICB2YXIgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0gICAgdHJhbnMu
b25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUg
PSBhZGREYXRhOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIHN0b3Jl
ID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOwot
ICAgIGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleCcsICd4Jywge211bHRpRW50
cnk6IHRydWV9KSIpOwotCi0gICAgc3RvcmUyID0gZXZhbEFuZExvZygic3RvcmUyID0gZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ3N0b3JlLXVuaXF1ZScpIik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUy
LmNyZWF0ZUluZGV4KCdpbmRleC11bmlxdWUnLCAneCcsIHttdWx0aUVudHJ5OiB0cnVlLCB1bmlx
dWU6IHRydWV9KSIpOwotfQotCi1mdW5jdGlvbiBhZGREYXRhKCkKLXsKLSAgICBkZWJ1ZygiIik7
Ci0gICAgZGVidWcoIlBvcHVsYXRpbmcgc3RvcmVzIChhbmQgaW5kZXhlcykiKTsKLSAgICB0cmFu
c2FjdGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9y
ZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIHRyYW5zYWN0aW9uLm9uYWJv
cnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRl
ID0gZnVuY3Rpb24oKSB7IHZlcmlmeUluZGV4ZXMoJ2luZGV4JywgdmVyaWZ5VW5pcXVlQ29uc3Ry
YWludCk7IH07Ci0KLSAgICBkZWJ1ZygiRmlyc3QgdHJ5IHNvbWUga2V5cyB0aGF0IGFyZW4ndCB3
aGF0IHdlJ3JlIGV4cGVjdGluZyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2Fj
dGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKS5wdXQoe3g6IFs3LCA4LCA5XSwgeTogJ2EnfSwgJ2Zv
bycpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0g
ICAgZGVidWcoIk5vdyBvdmVyd3JpdGUgdGhlbSB3aXRoIHdoYXQgd2UncmUgZXhwZWN0aW5nIik7
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9y
ZScpLnB1dCh7eDogWzEsIDIsIDNdLCB5OiAnYSd9LCAnZm9vJykiKTsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KHt4OiBbNCwgNSwgNl0sIHk6
ICdiJ30sICdiYXInKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotfQotCi1mdW5jdGlvbiB2ZXJpZnlJbmRleGVzKGluZGV4TmFtZSwgY2FsbGJhY2sp
Ci17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJWZXJpZnlpbmcgaW5kZXg6ICIgKyBpbmRl
eE5hbWUpOwotICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50
cmFuc2FjdGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkiKTsKLSAgICB0
cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnNh
Y3Rpb24ub25jb21wbGV0ZSA9IGNhbGxiYWNrOwotCi0gICAgZXhwZWN0ZWQgPSBbCi0gICAgICAg
IHsga2V5OiAxLCBwcmltYXJ5S2V5OiAnZm9vJywgeTogJ2EnIH0sCi0gICAgICAgIHsga2V5OiAy
LCBwcmltYXJ5S2V5OiAnZm9vJywgeTogJ2EnIH0sCi0gICAgICAgIHsga2V5OiAzLCBwcmltYXJ5
S2V5OiAnZm9vJywgeTogJ2EnIH0sCi0gICAgICAgIHsga2V5OiA0LCBwcmltYXJ5S2V5OiAnYmFy
JywgeTogJ2InIH0sCi0gICAgICAgIHsga2V5OiA1LCBwcmltYXJ5S2V5OiAnYmFyJywgeTogJ2In
IH0sCi0gICAgICAgIHsga2V5OiA2LCBwcmltYXJ5S2V5OiAnYmFyJywgeTogJ2InIH0sCi0gICAg
XTsKLQotICAgIHZhciByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3Rv
cmUoJ3N0b3JlJykuaW5kZXgoJyIgKyBpbmRleE5hbWUgKyAiJykub3BlbkN1cnNvcigpIik7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBjdXJzb3IgPSBldmFsQW5k
TG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgICAgIGlmIChjdXJzb3Ip
IHsKLSAgICAgICAgICAgIGV4ID0gZXhwZWN0ZWQuc2hpZnQoKTsKLSAgICAgICAgICAgIHNob3Vs
ZEJlVHJ1ZSgiZXggIT0gbnVsbCIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXki
LCBTdHJpbmcoZXgua2V5KSk7Ci0gICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImN1
cnNvci5wcmltYXJ5S2V5IiwgZXgucHJpbWFyeUtleSk7Ci0gICAgICAgICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImN1cnNvci52YWx1ZS55IiwgZXgueSk7Ci0gICAgICAgICAgICBjdXJzb3Iu
Y29udGludWUoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgi
ZXhwZWN0ZWQubGVuZ3RoID09PSAwIik7Ci0gICAgICAgIH0KLSAgICB9OwotfQotCi1mdW5jdGlv
biB2ZXJpZnlVbmlxdWVDb25zdHJhaW50KCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWco
IlZlcmlmeWluZyB1bmlxdWUgY29uc3RyYWludCBvbiBtdWx0aUVudHJ5IGluZGV4Iik7Ci0gICAg
dHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsn
c3RvcmUtdW5pcXVlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgdHJhbnNh
Y3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgZGVidWcoIlRyYW5zYWN0aW9u
IGFib3J0ZWQgYXMgZXhwZWN0ZWQiKTsKLSAgICAgICAgY3JlYXRlSW5kZXhPblN0b3JlV2l0aERh
dGEoKTsKLSAgICB9OwotICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQ29t
cGxldGVDYWxsYmFjazsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5v
YmplY3RTdG9yZSgnc3RvcmUtdW5pcXVlJykucHV0KHt4OiBbMSwgMiwgM10sIHk6ICdhJ30sICdm
b28nKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGRlYnVnKCJzdWNj
ZXNzISIpOwotICAgICAgICBkZWJ1ZygiUmVwbGFjZSBhbiBleGlzdGluZyByZWNvcmQgLSB0aGlz
IHNob3VsZCB3b3JrIik7Ci0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlv
bi5vYmplY3RTdG9yZSgnc3RvcmUtdW5pcXVlJykucHV0KHt4OiBbMSwgMiwgN10sIHk6ICdhJ30s
ICdmb28nKSIpOwotICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAg
ICAgIGRlYnVnKCJzdWNjZXNzISIpOwotICAgICAgICAgICAgZGVidWcoIlRoaXMgc2hvdWxkIGZh
aWwgdGhlIHVuaXF1ZW5lc3MgY29uc3RyYWludCBvbiB0aGUgaW5kZXgsIGFuZCBmYWlsOiIpOwot
ICAgICAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3Jl
KCdzdG9yZS11bmlxdWUnKS5wdXQoe3g6IFs1LCAyXSwgeTogJ2MnfSwgJ3Nob3VsZCBmYWlsJyki
KTsKLSAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxs
YmFjazsKLSAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKCkgeyBkZWJ1Zygi
UmVxdWVzdCBmYWlsZWQsIGFzIGV4cGVjdGVkIik7IH07Ci0gICAgICAgIH07Ci0gICAgfTsKLX0K
LQotZnVuY3Rpb24gY3JlYXRlSW5kZXhPblN0b3JlV2l0aERhdGEoKQotewotICAgIGRlYnVnKCIi
KTsKLSAgICBkZWJ1ZygiQ3JlYXRlIGFuIGluZGV4IG9uIGEgcG9wdWxhdGVkIHN0b3JlIik7Ci0K
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignMicpIik7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLQotICAgICAgICB2YXIgdHJhbnMgPSBldmFsQW5kTG9nKCJ0
cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJ0cmFu
cyAhPT0gbnVsbCIpOwotICAgICAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2Fs
bGJhY2s7Ci0gICAgICAgIHRyYW5zLm9uY29tcGxldGUgPSBmdW5jdGlvbigpIHsgdmVyaWZ5SW5k
ZXhlcygnaW5kZXgtbmV3JywgZmluaXNoSlNUZXN0KTsgfTsKLQotICAgICAgICBzdG9yZSA9IGV2
YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKLSAgICAgICAg
ZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4LW5ldycsICd4Jywge211bHRpRW50
cnk6IHRydWV9KSIpOwotICAgIH07Ci19Ci0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2luZGV4LW11bHRpZW50cnkuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBz
cmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8
L2JvZHk+CiA8L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2luZGV4LXBvcHVsYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2luZGV4LXBvcHVsYXRpb24uaHRtbAppbmRleCAxY2IyODViM2E2MmI1ZDBkNWZmOGE0ZDJhZDE3
OTVkYTgzMjlmMjY0Li40OWYzODNlMDBjZTZhMDM4NDNkYWRjMWI5YjExODI3MzM0NDVmNTVmIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1wb3B1bGF0aW9u
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtcG9wdWxhdGlv
bi5odG1sCkBAIC00LDk2ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpz
Ij48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRl
c3QgSW5kZXhlZERCIGluZGV4IHBvcHVsYXRpb24uIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewot
ICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
aW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCdpbmRleC1wb3B1bGF0aW9uJykiKTsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZVN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZVN1Y2Nlc3MoKQotewot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignaW5kZXgtcG9wdWxhdGlv
bicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkb1NldFZlcnNpb24xOwotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBkb1Nl
dFZlcnNpb24xKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoImRvU2V0VmVyc2lvbjEo
KToiKTsKLSAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2
ZXJzaW9uIDEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvbjE7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9u
IHNldFZlcnNpb24xKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInNldFZlcnNpb24x
KCk6Iik7Ci0gICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IHJlcXVl
c3QucmVzdWx0Iik7Ci0gICAgdHJhbnNhY3Rpb24ub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFj
azsKLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUo
J3N0b3JlMScpIik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUucHV0KHtkYXRhOiAnYScsIGluZGV4
S2V5OiAxMH0sIDEpIik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUucHV0KHtkYXRhOiAnYicsIGlu
ZGV4S2V5OiAyMH0sIDIpIik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUucHV0KHtkYXRhOiAnYycs
IGluZGV4S2V5OiAxMH0sIDMpIik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUucHV0KHtkYXRhOiAn
ZCcsIGluZGV4S2V5OiAyMH0sIDQpIik7Ci0gICAgZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5j
cmVhdGVJbmRleCgnaW5kZXgxJywgJ2luZGV4S2V5JykiKTsKLSAgICBzaG91bGRCZVRydWUoImlu
ZGV4IGluc3RhbmNlb2YgSURCSW5kZXgiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJpbmRleC51bmlx
dWUiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4LmNvdW50KElE
QktleVJhbmdlLmJvdW5kKC1JbmZpbml0eSwgSW5maW5pdHkpKSIpOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24gKCkgewotICAgICAgICBzaG91bGRCZSgicmVxdWVzdC5yZXN1bHQiLCAiNCIpOwot
ICAgIH07Ci0gICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGRvU2V0VmVyc2lvbjI7Ci19Ci0K
LWZ1bmN0aW9uIGRvU2V0VmVyc2lvbjIoKSB7Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJk
b1NldFZlcnNpb24yKCk6Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBk
Yi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDInKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0
VmVyc2lvbjI7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb24yKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVi
dWcoInNldFZlcnNpb24yKCk6Iik7Ci0gICAgdHJhbnNhY3Rpb24yID0gZXZhbEFuZExvZygidHJh
bnNhY3Rpb24gPSByZXF1ZXN0LnJlc3VsdCIpOwotICAgIHRyYW5zYWN0aW9uMi5vbmFib3J0ID0g
c2V0VmVyc2lvbjJBYm9ydDsKLSAgICB0cmFuc2FjdGlvbjIub25jb21wbGV0ZSA9IHVuZXhwZWN0
ZWRDb21wbGV0ZUNhbGxiYWNrOwotICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5j
cmVhdGVPYmplY3RTdG9yZSgnc3RvcmUyJykiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQo
e2RhdGE6ICdhJywgaW5kZXhLZXk6IDEwfSwgMSkiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZS5w
dXQoe2RhdGE6ICdiJywgaW5kZXhLZXk6IDIwfSwgMikiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9y
ZS5wdXQoe2RhdGE6ICdjJywgaW5kZXhLZXk6IDEwfSwgMykiKTsKLSAgICBldmFsQW5kTG9nKCJz
dG9yZS5wdXQoe2RhdGE6ICdkJywgaW5kZXhLZXk6IDIwfSwgNCkiKTsKLSAgICBldmFsQW5kTG9n
KCJpbmRleDIgPSBzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXgyJywgJ2luZGV4S2V5JywgeyB1bmlx
dWU6IHRydWUgfSkiKTsKLSAgICBzaG91bGRCZVRydWUoImluZGV4MiBpbnN0YW5jZW9mIElEQklu
ZGV4Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJpbmRleDIudW5pcXVlIik7Ci19Ci0KLWZ1bmN0aW9u
IHNldFZlcnNpb24yQWJvcnQoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1Zygic2V0VmVy
c2lvbjJBYm9ydCgpOiIpOwotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0
aCIsICIxIik7Ci0gICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXNbMF0iLCAiJ3N0b3Jl
MSciKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvaW5kZXgtcG9wdWxhdGlvbi5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2luZGV4LXVuaXF1ZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
aW5kZXgtdW5pcXVlLmh0bWwKaW5kZXggNWE1NDQzYzU5ZThhYmYwMmUzYzhmNWNmZTI5MjZkNzky
Y2M4YzZhNS4uYzY2MzhkZjZhMDZiZjNjNGIyZjRiYTgyNzgwZmFkMDRiZDhlYjM4NyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtdW5pcXVlLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtdW5pcXVlLmh0bWwKQEAgLTQs
MTQzICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4K
IDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgZmVhdHVyZXMg
b2YgSW5kZXhlZERCJ3MgdW5pcXVlIGluZGljZXMuIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewot
ICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImlu
ZGV4ZWREQi5vcGVuKCdpbmRleC11bmlxdWUnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
c2V0VmVyc2lvbjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvbigpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJk
YiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJk
Yi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBk
ZWxldGVFeGlzdGluZzsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLX0KLQotZnVuY3Rpb24gZGVsZXRlRXhpc3RpbmcoKQotewotICAgIGRlYnVnKCJkZWxl
dGVFeGlzdGluZygpOiIpOwotICAgIHZhciB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsK
LSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnMu
b25jb21wbGV0ZSA9IHNldFZlcnNpb25Db21wbGV0ZWQ7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RT
dG9yZXMoZGIpOwotCi0gICAgc2VsZi5zdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVj
dFN0b3JlKCdzdG9yZScpIik7Ci0gICAgc2VsZi5pbmRleE9iamVjdCA9IGV2YWxBbmRMb2coInN0
b3JlLmNyZWF0ZUluZGV4KCdpbmRleCcsICd4Jywge3VuaXF1ZTogdHJ1ZX0pIik7Ci0KLSAgICAv
LyBMZXQgc2V0VmVyc2lvbiB0cmFuc2FjdGlvbiBjb21wbGV0ZS4KLX0KLQotZnVuY3Rpb24gc2V0
VmVyc2lvbkNvbXBsZXRlZCgpCi17Ci0gICAgZGVidWcoInNldFZlcnNpb25Db21wbGV0ZWQoKToi
KTsKLSAgICBzZWxmLnRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50
cmFuc2FjdGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0KLSAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJyku
cHV0KHt4OiAxfSwgJ2ZvbycpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRNb3JlRGF0YTsKLX0KLQot
ZnVuY3Rpb24gYWRkTW9yZURhdGEoKQotewotICAgIGRlYnVnKCJhZGRNb3JlRGF0YSgpOiIpOwot
Ci0gICAgLy8gVGhlIHggdmFsdWUgdmlvbGF0ZXMgdGhlIHVuaXF1ZW5lc3MgY29uc3RyYWludCBv
ZiB0aGUgaW5kZXguCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVj
dFN0b3JlKCdzdG9yZScpLnB1dCh7eDogMX0sICdiYXInKSIpOwotICAgIHJlcXVlc3Qub25lcnJv
ciA9IGFkZE1vcmVEYXRhRmFpbGVkOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3Rl
ZFN1Y2Nlc3NDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYWRkTW9yZURhdGFGYWlsZWQoKQotewot
ICAgIGRlYnVnKCJhZGRNb3JlRGF0YUZhaWxlZCgpOiIpOwotCi0gICAgLy8gRG9uJ3QgYWJvcnQg
dGhlIHRyYW5zYWN0aW9uLgotICAgIGV2YWxBbmRMb2coImV2ZW50LnByZXZlbnREZWZhdWx0KCki
KTsKLQotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuZXJyb3JDb2RlIiwgIklEQkRhdGFiYXNl
RXhjZXB0aW9uLkNPTlNUUkFJTlRfRVJSIik7Ci0KLSAgICAvLyBVcGRhdGUgdGhlICdmb28nIGVu
dHJ5IGluIG9iamVjdCBzdG9yZSwgY2hhbmdpbmcgdGhlIHZhbHVlIG9mIHguCi0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLnB1dCh7eDog
MH0sICdmb28nKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2hhbmdlRGF0YVN1Y2Nlc3M7Ci19Ci0KLWZ1
bmN0aW9uIGNoYW5nZURhdGFTdWNjZXNzKCkKLXsKLSAgICBkZWJ1ZygiY2hhbmdlRGF0YVN1Y2Nl
c3MoKToiKTsKLQotICAgIC8vIEFuIGluZGV4IGN1cnNvciBzdGFydGluZyBhdCAxIHNob3VsZCBu
b3QgZmluZCBhbnl0aGluZy4KLSAgICB2YXIgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0
aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLmluZGV4KCdpbmRleCcpLm9wZW5DdXJzb3IoSURCS2V5
UmFuZ2UubG93ZXJCb3VuZCgxKSkiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvclN1
Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19
Ci0KLWZ1bmN0aW9uIGN1cnNvclN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJjdXJzb3JTdWNjZXNz
KCk6Iik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAibnVsbCIpOwotCi0g
ICAgLy8gQSBrZXkgY3Vyc29yIHN0YXJ0aW5nIGF0IDEgc2hvdWxkIG5vdCBmaW5kIGFueXRoaW5n
LgotICAgIHZhciByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUo
J3N0b3JlJykuaW5kZXgoJ2luZGV4Jykub3BlbktleUN1cnNvcihJREJLZXlSYW5nZS5sb3dlckJv
dW5kKDEpKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0ga2V5Q3Vyc29yU3VjY2VzczsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rp
b24ga2V5Q3Vyc29yU3VjY2VzcygpCi17Ci0gICAgZGVidWcoImtleUN1cnNvclN1Y2Nlc3MoKToi
KTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJudWxsIik7Ci0KLSAgICAv
LyBOb3cgd2Ugc2hvdWxkIGJlIGFibGUgdG8gYWRkIGEgdmFsdWUgd2l0aCB4OiAxLgotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKS5wdXQo
e3g6IDF9LCAnYmFyJykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZE1vcmVEYXRhU3VjY2VzOwotfQot
Ci1mdW5jdGlvbiBhZGRNb3JlRGF0YVN1Y2NlcygpCi17Ci0gICAgZGVidWcoImFkZE1vcmVEYXRh
U3VjY2VzKCk6Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2Jq
ZWN0U3RvcmUoJ3N0b3JlJykuZGVsZXRlKCdiYXInKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRl
U3VjY2VzczsKLX0KLQotZnVuY3Rpb24gZGVsZXRlU3VjY2VzcygpCi17Ci0gICAgZGVidWcoImRl
bGV0ZVN1Y2Nlc3MoKToiKTsKLQotICAgIC8vIE5vdyB3ZSBzaG91bGQgYmUgYWJsZSB0byBhZGQg
YSB2YWx1ZSB3aXRoIHg6IDEgYWdhaW4uCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5z
YWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLnB1dCh7eDogMX0sICdiYXonKSIpOwotICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZmluYWxBZGRTdWNjZXNzOwotfQotCi1mdW5jdGlvbiBmaW5hbEFkZFN1Y2Nlc3Mo
KSB7Ci0gICAgZGVidWcoImZpbmFsQWRkU3VjY2VzcygpOiIpOwotCi0gICAgLy8gQW4gb3Zlcndy
aXRlIHNob3VsZCBiZSBvay4KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24u
b2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KHt4OiAxfSwgJ2JheicpIik7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmaW5pc2hKU1Rlc3Q7Ci19Ci0KLXRlc3QoKTsKLQotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvaW5kZXgtdW5pcXVlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5Pgog
PC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnZh
bGlkLWtleXMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludmFsaWQta2V5
cy5odG1sCmluZGV4IGZmOTE1ZTA5NmViOTcxNGJiNTJlMzNmNmIxOTdjMTUzOGYwYTAyMTUuLmUz
NWFiMThmYzYzNjA1OGQ2YmZhZWE2ZDdiOTA0NGVjM2Y1NDBmZjQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludmFsaWQta2V5cy5odG1sCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludmFsaWQta2V5cy5odG1sCkBAIC0xLDc0ICsxLDEwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJl
c291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0Pgot
Ci1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgaW52YWxpZCBrZXlzIik7Ci0KLWZ1bmN0aW9u
IHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2Vs
Zi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNl
IjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3Jp
cHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3Bl
blN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVz
dWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNp
b24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdGVzdEdyb3VwMTsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gdGVz
dEdyb3VwMSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9iamVj
dFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycpOyIpOwotICAg
IHRlc3RJbnZhbGlkS2V5cygpOwotfQotCi1mdW5jdGlvbiB0ZXN0SW52YWxpZEtleXMoKQotewot
ICAgIHZhciBpbnZhbGlkS2V5cyA9IFsKLSAgICAgICAgInZvaWQgMCIsIC8vIFVuZGVmaW5lZAot
ICAgICAgICAibnVsbCIsIC8vIE51bGwKLSAgICAgICAgIihmdW5jdGlvbigpIHsgcmV0dXJuIGFy
Z3VtZW50czsgfSgpKSIsIC8vIEFyZ3VtZW50cwotICAgICAgICAidHJ1ZSIsIC8vIEJvb2xlYW4K
LSAgICAgICAgImZhbHNlIiwgLy8gQm9vbGVhbgotICAgICAgICAibmV3IEVycm9yIiwgLy8gRXJy
b3IKLSAgICAgICAgImZ1bmN0aW9uICgpIHt9IiwgLy8gRnVuY3Rpb24KLSAgICAgICAgIkpTT04i
LCAvLyBKU09OCi0gICAgICAgICJNYXRoIiwgLy8gTWF0aAotICAgICAgICAiTmFOIiwgLy8gTnVt
YmVyIChzcGVjaWFsIGNhc2UpCi0gICAgICAgICJuZXcgRGF0ZShOYU4pIiwgLy8gRGF0ZSAoc3Bl
Y2lhbCBjYXNlKQotICAgICAgICAie30iLCAvLyBPYmplY3QKLSAgICAgICAgIi9yZWdleC8iLCAv
LyBSZWdFeHAKLSAgICAgICAgInNlbGYiLCAvLyBnbG9iYWwKLSAgICAgICAgInNlbGYuZG9jdW1l
bnQiLCAvLyBIVE1MRG9jdW1lbnQKLSAgICAgICAgInNlbGYuZG9jdW1lbnQuYm9keSIgLy8gSFRN
TEJvZHlFbGVtZW50Ci0gICAgXTsKLQotICAgIGludmFsaWRLZXlzLmZvckVhY2goZnVuY3Rpb24o
a2V5KSB7Ci0gICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInJlcXVlc3QgPSBvYmplY3RT
dG9yZS5wdXQoJ3ZhbHVlJywgIiArIGtleSArICIpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRB
VEFfRVJSIik7Ci0gICAgfSk7Ci0gICAgCi0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVz
dCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaW52YWxpZC1rZXlzLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5LWdlbmVyYXRvci5odG1sIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIva2V5LWdlbmVyYXRvci5odG1sCmluZGV4IGE3YjA3ZmZhZDkxYTdk
YmViYzRmYWRkYWE4Y2E4ZjI0NjcyZjg3ZjEuLjg0OWQ0ZjIxOTI2Yzk1OGJkNDhkMGJmZDE4ZjIw
ZGE3NTJjNGRmOTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tl
eS1nZW5lcmF0b3IuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXkt
Z2VuZXJhdG9yLmh0bWwKQEAgLTQsMjEyICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
c2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3Jp
cHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mga2V5IGdlbmVyYXRvciBiZWhhdmlvci4iKTsKLQotZnVu
Y3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIHJ1blRl
c3RzKCk7Ci19Ci0KLXZhciB0ZXN0cyA9IFtdOwotZnVuY3Rpb24gZGVmaW5lVGVzdChkZXNjcmlw
dGlvbiwgdmVyY2hhbmdlLCBvcHRpb25hbCkgewotICB0ZXN0cy5wdXNoKAotICAgIHsKLSAgICAg
IGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiwKLSAgICAgIHZlcmNoYW5nZTogdmVyY2hhbmdlLAot
ICAgICAgb3B0aW9uYWw6IG9wdGlvbmFsCi0gICAgfQotICApOwotfQotCi0KLWZ1bmN0aW9uIHJ1
blRlc3RzKCkgewotCi0gICAgZnVuY3Rpb24gbmV4dFRlc3QoKSB7Ci0gICAgICAgIGlmICghdGVz
dHMubGVuZ3RoKSB7Ci0gICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciB0ZXN0ID0gdGVzdHMuc2hpZnQoKTsKLSAg
ICAgICAgZGVidWcoIiIpOwotICAgICAgICBkZWJ1Zyh0ZXN0LmRlc2NyaXB0aW9uKTsKLQotICAg
ICAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCdrZXkt
Z2VuZXJhdG9yJykiKTsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewotICAg
ICAgICAgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKCdrZXktZ2VuZXJh
dG9yJykiKTsKLSAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7Ci0g
ICAgICAgICAgICAgICAgZXZhbEFuZExvZygiZGIgPSByZXF1ZXN0LnJlc3VsdCIpOwotICAgICAg
ICAgICAgICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAg
ICAgICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LSAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKLSAgICAg
ICAgICAgICAgICAgICAgZXZhbEFuZExvZygidHJhbnMgPSByZXF1ZXN0LnJlc3VsdCIpOwotICAg
ICAgICAgICAgICAgICAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7
Ci0gICAgICAgICAgICAgICAgICAgIHRlc3QudmVyY2hhbmdlKGRiLCB0cmFucyk7Ci0gICAgICAg
ICAgICAgICAgICAgIHRyYW5zLm9uY29tcGxldGUgPSBmdW5jdGlvbiAoKSB7Ci0KLSAgICAgICAg
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZXZhbEFuZExvZygiZGIuY2xvc2UoKSIpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG5leHRUZXN0KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICh0ZXN0Lm9wdGlvbmFsKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGVzdC5vcHRpb25hbChkYiwgZmluaXNoVGVzdCk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaFRl
c3QoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfTsK
LSAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICB9Ci0K
LSAgICBuZXh0VGVzdCgpOwotfQotCi1mdW5jdGlvbiBjaGVjayhzdG9yZSwga2V5LCBleHBlY3Rl
ZCkgewotICAgIHNlbGYuc3RvcmUgPSBzdG9yZTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IHN0b3JlLmdldCgiICsgSlNPTi5zdHJpbmdpZnkoa2V5KSArICIpIik7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZSkgewotICAgICAgICBzZWxmLmV4cGVjdGVkID0gZXhwZWN0
ZWQ7Ci0gICAgICAgIGlmIChKU09OLnN0cmluZ2lmeShldmVudC50YXJnZXQucmVzdWx0KSA9PT0g
SlNPTi5zdHJpbmdpZnkoZXhwZWN0ZWQpKSB7Ci0gICAgICAgICAgICB0ZXN0UGFzc2VkKCJHb3Qg
IiArIEpTT04uc3RyaW5naWZ5KGV2ZW50LnRhcmdldC5yZXN1bHQpICsgIiBmb3Iga2V5OiAiICsg
SlNPTi5zdHJpbmdpZnkoa2V5KSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0ZXN0
RmFpbGVkKCJHb3QgIiArIEpTT04uc3RyaW5naWZ5KGV2ZW50LnRhcmdldC5yZXN1bHQpICsgIiBm
b3Iga2V5OiAiICsgSlNPTi5zdHJpbmdpZnkoa2V5KSArCi0gICAgICAgICAgICAgICAgIiBleHBl
Y3RlZDogIiArIEpTT04uc3RyaW5naWZ5KGV4cGVjdGVkKSk7Ci0gICAgICAgIH0KLSAgICB9Owot
fQotCi1kZWZpbmVUZXN0KAotICAgICdWZXJpZnkgdGhhdCBlYWNoIG9iamVjdCBzdG9yZSBoYXMg
YW4gaW5kZXBlbmRlbnQga2V5IGdlbmVyYXRvci4nLAotICAgIGZ1bmN0aW9uIChkYiwgdHJhbnMp
IHsKLSAgICAgICAgZXZhbEFuZExvZygic3RvcmUxID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0
b3JlMScsIHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9KSIpOwotICAgICAgICBldmFsQW5kTG9nKCJz
dG9yZTEucHV0KCdhJykiKTsKLSAgICAgICAgY2hlY2soc3RvcmUxLCAxLCAnYScpOwotICAgICAg
ICBldmFsQW5kTG9nKCJzdG9yZTIgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUyJywgeyBh
dXRvSW5jcmVtZW50OiB0cnVlIH0pIik7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlMi5wdXQo
J2EnKSIpOwotICAgICAgICBjaGVjayhzdG9yZTIsIDEsICdhJyk7Ci0gICAgICAgIGV2YWxBbmRM
b2coInN0b3JlMS5wdXQoJ2InKSIpOwotICAgICAgICBjaGVjayhzdG9yZTEsIDIsICdiJyk7Ci0g
ICAgICAgIGV2YWxBbmRMb2coInN0b3JlMi5wdXQoJ2InKSIpOwotICAgICAgICBjaGVjayhzdG9y
ZTIsIDIsICdiJyk7Ci0gICAgfQotKTsKLQotZGVmaW5lVGVzdCgKLSAgICAnVmVyaWZ5IHRoYXQg
dGhlIGtleSBnZW5lcmF0b3IgaXMgbm90IHVwZGF0ZWQgaWYgaW5zZXJ0aW9uIGZhaWxzJywKLSAg
ICBmdW5jdGlvbiAoZGIsIHRyYW5zKSB7Ci0gICAgICAgIHRyYW5zLm9uZXJyb3IgPSBmdW5jdGlv
bihlKSB7IGUucHJldmVudERlZmF1bHQoKSB9OwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTEnLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSki
KTsKLSAgICAgICAgZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXgx
JywgJ2l4JywgeyB1bmlxdWU6IHRydWUgfSkiKTsKLSAgICAgICAgZXZhbEFuZExvZygic3RvcmUu
cHV0KHsgaXg6ICdhJ30pIik7Ci0gICAgICAgIGNoZWNrKHN0b3JlLCAxLCB7aXg6ICdhJ30pOwot
ICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoeyBpeDogJ2EnfSkiKTsKLSAgICAgICAgZXZh
bEFuZExvZygic3RvcmUucHV0KHsgaXg6ICdiJ30pIik7Ci0gICAgICAgIGNoZWNrKHN0b3JlLCAy
LCB7aXg6ICdiJ30pOwotICAgIH0KLSk7Ci0KLWRlZmluZVRlc3QoCi0gICAgJ1ZlcmlmeSB0aGF0
IHRoZSBrZXkgZ2VuZXJhdG9yIGlzIG5vdCBhZmZlY3RlZCBieSBpdGVtIHJlbW92YWwgKGRlbGV0
ZSBvciBjbGVhcikuJywKLSAgICBmdW5jdGlvbiAoZGIsIHRyYW5zKSB7Ci0gICAgICAgIGV2YWxB
bmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlMScsIHsgYXV0b0luY3Jl
bWVudDogdHJ1ZSB9KSIpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2EnKSIpOwot
ICAgICAgICBjaGVjayhzdG9yZSwgMSwgJ2EnKTsKLSAgICAgICAgZXZhbEFuZExvZygic3RvcmUu
ZGVsZXRlKDEpIik7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgnYicpIik7Ci0gICAg
ICAgIGNoZWNrKHN0b3JlLCAyLCAnYicpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5jbGVh
cigpIik7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgnYycpIik7Ci0gICAgICAgIGNo
ZWNrKHN0b3JlLCAzLCAnYycpOwotICAgICAgICAvLyBGSVhNRTogSURCT2JqZWN0U3RvcmUuZGVs
ZXRlKElEQktleVJhbmdlKSBpcyBub3QgeWV0IGltcGxlbWVudGVkIGluIENocm9taXVtLgotICAg
ICAgICAvLyBodHRwOi8vY3JidWcuY29tLzEwMTM4NAotICAgICAgICAvL2V2YWxBbmRMb2coInN0
b3JlLmRlbGV0ZShJREJLZXlSYW5nZS5sb3dlckJvdW5kKDApKSIpOwotICAgICAgICBldmFsQW5k
TG9nKCJzdG9yZS5wdXQoJ2QnKSIpOwotICAgICAgICBjaGVjayhzdG9yZSwgNCwgJ2QnKTsKLSAg
ICB9Ci0pOwotCi1kZWZpbmVUZXN0KAotICAgICdWZXJpZnkgdGhhdCB0aGUga2V5IGdlbmVyYXRv
ciBpcyBvbmx5IHNldCBpZiBhbmQgb25seSBpZiBhIG51bWVyaWMga2V5IGdyZWF0ZXIgdGhhbiB0
aGUgbGFzdCBnZW5lcmF0ZWQga2V5IGlzIHVzZWQuJywKLSAgICBmdW5jdGlvbiAoZGIsIHRyYW5z
KSB7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0
b3JlMScsIHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9KSIpOwotICAgICAgICBldmFsQW5kTG9nKCJz
dG9yZS5wdXQoJ2EnKSIpOwotICAgICAgICBjaGVjayhzdG9yZSwgMSwgJ2EnKTsKLSAgICAgICAg
ZXZhbEFuZExvZygic3RvcmUucHV0KCdiJywgMykiKTsKLSAgICAgICAgY2hlY2soc3RvcmUsIDMs
ICdiJyk7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgnYycpIik7Ci0gICAgICAgIGNo
ZWNrKHN0b3JlLCA0LCAnYycpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2QnLCAt
MTApIik7Ci0gICAgICAgIGNoZWNrKHN0b3JlLCAtMTAsICdkJyk7Ci0gICAgICAgIGV2YWxBbmRM
b2coInN0b3JlLnB1dCgnZScpIik7Ci0gICAgICAgIGNoZWNrKHN0b3JlLCA1LCAnZScpOwotICAg
ICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2YnLCA2LjAwMDAxKSIpOwotICAgICAgICBjaGVj
ayhzdG9yZSwgNi4wMDAwMSwgJ2YnKTsKLSAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdn
JykiKTsKLSAgICAgICAgY2hlY2soc3RvcmUsIDcsICdnJyk7Ci0gICAgICAgIGV2YWxBbmRMb2co
InN0b3JlLnB1dCgnZicsIDguOTk5OSkiKTsKLSAgICAgICAgY2hlY2soc3RvcmUsIDguOTk5OSwg
J2YnKTsKLSAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdnJykiKTsKLSAgICAgICAgY2hl
Y2soc3RvcmUsIDksICdnJyk7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgnaCcsICdm
b28nKSIpOwotICAgICAgICBjaGVjayhzdG9yZSwgJ2ZvbycsICdoJyk7Ci0gICAgICAgIGV2YWxB
bmRMb2coInN0b3JlLnB1dCgnaScpIik7Ci0gICAgICAgIGNoZWNrKHN0b3JlLCAxMCwgJ2knKTsK
LSAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdqJywgWzEwMDBdKSIpOwotICAgICAgICBj
aGVjayhzdG9yZSwgWzEwMDBdLCAnaicpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQo
J2snKSIpOwotICAgICAgICBjaGVjayhzdG9yZSwgMTEsICdrJyk7Ci0KLSAgICAgICAgLy8gRklY
TUU6IFJlcGVhdCB0aGlzIHRlc3QsIGJ1dCB3aXRoIGEga2V5UGF0aCBhbmQgaW5saW5lIGtleS4K
LSAgICB9Ci0pOwotCi1kZWZpbmVUZXN0KAotICAgICdWZXJpZnkgdGhhdCBhYm9ydGluZyBhIHRy
YW5zYWN0aW9uIHJlc2V0cyB0aGUga2V5IGdlbmVyYXRvciBzdGF0ZS4nLAotICAgIGZ1bmN0aW9u
IChkYiwgdHJhbnMpIHsKLSAgICAgICAgZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJywgeyBh
dXRvSW5jcmVtZW50OiB0cnVlIH0pOwotICAgIH0sCi0KLSAgICBmdW5jdGlvbiAoZGIsIGNhbGxi
YWNrKSB7Ci0gICAgICAgIGV2YWxBbmRMb2coInRyYW5zMSA9IGRiLnRyYW5zYWN0aW9uKFsnc3Rv
cmUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICAgICAgZXZhbEFuZExvZygi
c3RvcmVfdDEgPSB0cmFuczEub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKLSAgICAgICAgZXZhbEFu
ZExvZygic3RvcmVfdDEucHV0KCdhJykiKTsKLSAgICAgICAgY2hlY2soc3RvcmVfdDEsIDEsICdh
Jyk7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlX3QxLnB1dCgnYicpIik7Ci0gICAgICAgIGNo
ZWNrKHN0b3JlX3QxLCAyLCAnYicpOwotCi0gICAgICAgIC8vIFNjaGVkdWxlIHRoZSBhYm9ydCBh
cyBhIHRhc2sgKG5vdCBydW4gaXQgc3luY2hyb25vdXNseSkKLSAgICAgICAgc3RvcmVfdDEuZ2V0
KDApLm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIGRlYnVnKCdhYm9ydGlu
Zy4uLicpOwotICAgICAgICAgICAgZXZhbEFuZExvZygidHJhbnMxLmFib3J0KCkiKTsKLSAgICAg
ICAgICAgIHRyYW5zMS5vbmFib3J0ID0gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgIGRl
YnVnKCdhYm9ydGVkIScpOwotCi0gICAgICAgICAgICAgICAgZXZhbEFuZExvZygidHJhbnMyID0g
ZGIudHJhbnNhY3Rpb24oWydzdG9yZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwot
ICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coInN0b3JlX3QyID0gdHJhbnMyLm9iamVjdFN0b3Jl
KCdzdG9yZScpIik7Ci0gICAgICAgICAgICAgICAgZXZhbEFuZExvZygic3RvcmVfdDIucHV0KCdj
JykiKTsKLSAgICAgICAgICAgICAgICBjaGVjayhzdG9yZV90MiwgMSwgJ2MnKTsKLSAgICAgICAg
ICAgICAgICBldmFsQW5kTG9nKCJzdG9yZV90Mi5wdXQoJ2QnKSIpOwotICAgICAgICAgICAgICAg
IGNoZWNrKHN0b3JlX3QyLCAyLCAnZCcpOwotCi0gICAgICAgICAgICAgICAgdHJhbnMyLm9uY29t
cGxldGUgPSBjYWxsYmFjazsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgfQotKTsK
LQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMva2V5LWdlbmVy
YXRvci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleS1zb3J0LW9yZGVyLWFjcm9zcy10eXBl
cy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5LXNvcnQtb3JkZXItYWNy
b3NzLXR5cGVzLmh0bWwKaW5kZXggMGEyNDI0M2MyNGNmMjAxZjkyOTRhODA5OGQ2ZDAxNGMyYzRl
Zjg2Yy4uNjQzZjdkY2Y4MDg1NjAzNzg5Yjk4OTE0MTc2NWMyYTA2YzQxMzgwZCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5LXNvcnQtb3JkZXItYWNyb3NzLXR5
cGVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5LXNvcnQtb3Jk
ZXItYWNyb3NzLXR5cGVzLmh0bWwKQEAgLTEsOTUgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgog
PGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+
PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0
IEluZGV4ZWREQiBrZXkgY29tcGFyaXNvbiIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICBy
ZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5h
bWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAg
ICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEtleTE7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGFkZEtleTEoKQotewotICAgIGRlbGV0
ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nKTsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChbXSwgSW5maW5pdHkpOyIpOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gYWRkS2V5MjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYWRkS2V5MigpCi17Ci0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoW10sIC1JbmZpbml0eSk7Iik7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRLZXkzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBhZGRLZXkzKCkKLXsKLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChbXSwgMS4wKTsi
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEtleTQ7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGFkZEtleTQoKQotewot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKFtdLCAn
Jyk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRLZXk1OwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBhZGRLZXk1KCkK
LXsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChb
XSwgJzEuMCcpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbkFDdXJzb3I7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9u
IG9wZW5BQ3Vyc29yKCkKLXsKLSAgICBrZXlJbmRleCA9IDA7Ci0gICAgc29ydGVkS2V5cyA9IGV2
YWxBbmRMb2coInNvcnRlZEtleSA9IFstSW5maW5pdHksIDEuMCwgSW5maW5pdHksICcnLCAnMS4w
J107Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5v
cGVuQ3Vyc29yKCk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAg
ICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsK
LSAgICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXki
LCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNv
ci5jb250aW51ZSgpOyIpOwotICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsK
LSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwot
ICAgICAgICB9Ci0gICAgfQotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2tleS1zb3J0LW9yZGVyLWFjcm9zcy10eXBlcy5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2tleS1zb3J0LW9yZGVyLWRhdGUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2tleS1zb3J0LW9yZGVyLWRhdGUuaHRtbAppbmRleCA1ZDcwMmQwYmFhZTlhOGU1
NmM2ZWE3ZDg5OGNmODQyN2JhZjRhYzE2Li4yZjBlNGVjNmY2ZGQ2N2VjNjYzYmQzMzcxNjdiODkz
YTgzZTJjYjMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXkt
c29ydC1vcmRlci1kYXRlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
a2V5LXNvcnQtb3JkZXItZGF0ZS5odG1sCkBAIC0xLDkyICsxLDEwIEBACi08IURPQ1RZUEUgaHRt
bD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQu
anMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigi
VGVzdCBJbmRleGVkREIga2V5IGNvbXBhcmlzb24iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0g
ICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBh
dGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17
Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRLZXkxOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBhZGRLZXkxKCkKLXsKLSAgICBk
ZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9n
KCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJyk7Iik7Ci0gICAgZGF0ZTEgPSBldmFsQW5kTG9n
KCJkYXRlMSA9IG5ldyBEYXRlKDEwMDApOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKFtdLCBkYXRlMSk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBhZGRLZXkyOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotfQotCi1mdW5jdGlvbiBhZGRLZXkyKCkKLXsKLSAgICBkYXRlMCA9IGV2YWxBbmRM
b2coImRhdGUwID0gbmV3IERhdGUoMCk7Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoW10sIGRhdGUwKTsiKTsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGFkZEtleTM7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGFkZEtleTMoKQotewotICAgIGRhdGUzID0gZXZhbEFuZExv
ZygiZGF0ZTMgPSBuZXcgRGF0ZSgzMDAwKTsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChbXSwgZGF0ZTMpOyIpOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gYWRkS2V5NDsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYWRkS2V5NCgpCi17Ci0gICAgZGF0ZTIgPSBldmFsQW5k
TG9nKCJkYXRlMiA9IG5ldyBEYXRlKDIwMDApOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKFtdLCBkYXRlMik7Iik7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBvcGVuQUN1cnNvcjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlbkFDdXJzb3IoKQotewotICAgIGtleUlu
ZGV4ID0gMDsKLSAgICBzb3J0ZWRLZXlzID0gZXZhbEFuZExvZygic29ydGVkS2V5cyA9IFtkYXRl
MC50b1N0cmluZygpLCBkYXRlMS50b1N0cmluZygpLCBkYXRlMi50b1N0cmluZygpLCBkYXRlMy50
b1N0cmluZygpXTsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVj
dFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkg
ewotICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVz
dWx0OyIpOwotICAgICAgICBpZiAoY3Vyc29yKSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vy
c29yLmtleS50b1N0cmluZygpIiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7Ci0gICAgICAgICAg
ICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKLSAgICAgICAgICAgIGV2YWxBbmRM
b2coImtleUluZGV4Kys7Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotCi10ZXN0KCk7Ci0KLTwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9rZXktc29ydC1vcmRlci1kYXRlLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIva2V5LXR5cGUtYXJyYXkuaHRtbCBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2tleS10eXBlLWFycmF5Lmh0bWwKaW5kZXggYjcxNWYwM2IzMmM3OWFj
MGZjMTg3YjBkNzQzMGFlNjBhZGEyZDZlMi4uYWI1MGQxYTE0ZmI0Yjk1ZTMwZWIzN2EyNWRmZjhj
ODY5NDJmMzAzMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5
LXR5cGUtYXJyYXkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXkt
dHlwZS1hcnJheS5odG1sCkBAIC0xLDIwOCArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+CiA8aHRt
bD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Nj
cmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5k
ZXhlZERCIGtleSB0eXBlcyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5k
b3JQcmVmaXhlcygpOwotCi0gICAgZXZhbEFuZExvZygiSURCVHJhbnNhY3Rpb24gPSBzZWxmLklE
QlRyYW5zYWN0aW9uIHx8IHNlbGYuSURCVHJhbnNhY3Rpb247Iik7Ci0gICAgc2hvdWxkQmVGYWxz
ZSgiSURCVHJhbnNhY3Rpb24gPT0gbnVsbCIpOwotCi0gICAgZXZhbEFuZExvZygiSURCRGF0YWJh
c2VFeGNlcHRpb24gPSBzZWxmLklEQkRhdGFiYXNlRXhjZXB0aW9uIHx8IHNlbGYuSURCRGF0YWJh
c2VFeGNlcHRpb247Iik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiSURCRGF0YWJhc2VFeGNlcHRpb24g
PT0gbnVsbCIpOwotCi0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBk
ZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICBvcGVucmVxID0gZXZhbEFuZExv
ZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgb3BlbnJlcS5vbnN1
Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICBvcGVucmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGV2YWxBbmRM
b2coImRiID0gb3BlbnJlcS5yZXN1bHQiKTsKLSAgICBzZXR2ZXJyZXEgPSBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgc2V0dmVycmVxLm9uc3VjY2VzcyA9
IHNldFZlcnNpb25TdWNjZXNzOwotICAgIHNldHZlcnJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb25TdWNjZXNzKCkKLXsKLSAgICBk
ZWJ1ZygicHJlcGFyaW5nIGRhdGFiYXNlIik7Ci0gICAgdHJhbnMgPSBzZXR2ZXJyZXEucmVzdWx0
OwotICAgIHRyYW5zLm9uY29tcGxldGUgPSB0ZXN0VmFsaWRBcnJheUtleXM7Ci0gICAgZGVsZXRl
QWxsT2JqZWN0U3RvcmVzKGRiKTsKLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpOyIpOwotICAgIGRlYnVnKCIiKTsKLX0KLQotZnVuY3Rp
b24gdGVzdFZhbGlkQXJyYXlLZXlzKCkKLXsKLSAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRy
YW5zYWN0aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZh
bEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOwotICAgIGRlYnVn
KCIiKTsKLQotICAgIGV2YWxBbmRMb2coImxvbmdfYXJyYXkgPSBbXTsgZm9yIChpID0gMDsgaSA8
IDEwMDA7ICsraSkgeyBsb25nX2FycmF5LnB1c2goJ2FiYycsIDEyMywgbmV3IERhdGUoMCksIFtd
KTsgfSIpOwotICAgIGRlYnVnKCIiKTsKLQotICAgIGRlYnVnKCJhcnJheSB0aGF0IGNvbnRhaW5z
IG5vbi1udW1lcmljIHNlbGYtcmVmZXJlbmNlIik7Ci0gICAgZXZhbEFuZExvZygic2VsZl9yZWZl
cnJlbnRpYWxfYXJyYXkgPSBbXTsgc2VsZl9yZWZlcnJlbnRpYWxfYXJyYXkuc2VsZiA9IHNlbGZf
cmVmZXJyZW50aWFsX2FycmF5OyIpOwotICAgIGRlYnVnKCIiKTsKLQotICAgIHZhciBuID0gMCwg
Y2FzZXMgPSBbCi0gICAgICAgICJbXSIsCi0KLSAgICAgICAgIlstSW5maW5pdHldIiwKLSAgICAg
ICAgIlstTnVtYmVyLk1BWF9WQUxVRV0iLAotICAgICAgICAiWy0xXSIsCi0gICAgICAgICJbLU51
bWJlci5NSU5fVkFMVUVdIiwKLSAgICAgICAgIlswXSIsCi0gICAgICAgICJbTnVtYmVyLk1JTl9W
QUxVRV0iLAotICAgICAgICAiWzFdIiwKLSAgICAgICAgIltOdW1iZXIuTUFYX1ZBTFVFXSIsCi0g
ICAgICAgICJbSW5maW5pdHldIiwKLQotICAgICAgICAiWzEsMiwzXSIsCi0KLSAgICAgICAgIltu
ZXcgRGF0ZSgwKV0iLAotICAgICAgICAiW25ldyBEYXRlKCcyNTI1LTAxLTAxVDAwOjAwOjAwWicp
XSIsCi0KLSAgICAgICAgIltuZXcgRGF0ZSgwKSwgbmV3IERhdGUoJzI1MjUtMDEtMDFUMDA6MDA6
MDBaJyldIiwKLQotICAgICAgICAiWycnXSIsCi0gICAgICAgICJbJ1x4MDAnXSIsCi0gICAgICAg
ICJbJ2FiYzEyMyddIiwKLQotICAgICAgICAiWydhYmMnLCAxMjNdIiwKLQotICAgICAgICAiW1td
XSIsCi0KLSAgICAgICAgIltbXSwgW11dIiwKLSAgICAgICAgIltbXSwgW10sIFtdXSIsCi0KLSAg
ICAgICAgIltbW11dXSIsCi0gICAgICAgICJbW1tbXV1dXSIsCi0KLSAgICAgICAgIlsxMjMsICdh
YmMnLCBuZXcgRGF0ZSgwKSwgW11dIiwKLSAgICAgICAgIltbMTIzLCAnYWJjJywgbmV3IERhdGUo
MCksIFtdXSwgWzQ1NiwgJ2RlZicsIG5ldyBEYXRlKDk5OSksIFtbXV1dXSIsCi0KLSAgICAgICAg
ImxvbmdfYXJyYXkiLAotICAgICAgICAic2VsZl9yZWZlcnJlbnRpYWxfYXJyYXkiCi0gICAgXTsK
LQotICAgIGZ1bmN0aW9uIHRlc3RBcnJheVB1dEdldCh2YWx1ZSwga2V5LCBjYWxsYmFjaykKLSAg
ICB7Ci0gICAgICAgIGRlYnVnKCJ0ZXN0aW5nIGFycmF5IGtleTogIiArIGtleSk7Ci0gICAgICAg
IHB1dHJlcSA9IGV2YWxBbmRMb2coInN0b3JlLnB1dCgnIiArIHZhbHVlICsgIicsICIgKyBrZXkg
KyAiKTsiKTsKLSAgICAgICAgcHV0cmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLSAgICAgICAgcHV0cmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
Z2V0cmVxID0gZXZhbEFuZExvZygic3RvcmUuZ2V0KCIgKyBrZXkgKyAiKTsiKTsKLSAgICAgICAg
ICAgIGdldHJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgICAg
ICBnZXRyZXEub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJnZXRyZXEucmVzdWx0IiwgdmFsdWUpOwotICAgICAgICAgICAgICAg
IGRlYnVnKCIiKTsKLSAgICAgICAgICAgICAgICBjYWxsYmFjaygpOwotICAgICAgICAgICAgfTsK
LSAgICAgICAgfTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBuZXh0VGVzdCgpCi0gICAgewotICAg
ICAgICB2YXIgdGVzdGNhc2UgPSBjYXNlcy5zaGlmdCgpOwotICAgICAgICBpZiAodGVzdGNhc2Up
IHsKLSAgICAgICAgICAgIHRlc3RBcnJheVB1dEdldCgidmFsdWUiICsgKCsrbiksIHRlc3RjYXNl
LCBuZXh0VGVzdCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBuZXh0VGVzdCgpOwotCi0gICAg
dHJhbnMub25jb21wbGV0ZSA9IHRlc3RJbnZhbGlkQXJyYXlLZXlzOwotfQotCi0KLWZ1bmN0aW9u
IHRlc3RJbnZhbGlkQXJyYXlLZXlzKCkKLXsKLSAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRy
YW5zYWN0aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZh
bEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOwotICAgIGRlYnVn
KCIiKTsKLQotICAgIGRlYnVnKCJhcnJheSB0aGF0IGNvbnRhaW5zIGl0c2VsZjogYXJyYXkgPSBb
IGFycmF5IF0iKTsKLSAgICBldmFsQW5kTG9nKCJjeWNsaWNfYXJyYXkgPSBbXTsgY3ljbGljX2Fy
cmF5LnB1c2goY3ljbGljX2FycmF5KSIpOwotICAgIHNob3VsZFRocm93KCJKU09OLnN0cmluZ2lm
eShjeWNsaWNfYXJyYXkpIik7Ci0KLSAgICBkZWJ1ZygiYXJyYXkgdGhhdCBjb250YWlucyBpdHNl
bGYsIG9uZSBsZXZlbCBkb3duOiBhcnJheSA9IFsgWyBhcnJheSBdIF0iKTsKLSAgICBldmFsQW5k
TG9nKCJjeWNsaWNfYXJyYXkyID0gW107IGN5Y2xpY19hcnJheTIucHVzaChbY3ljbGljX2FycmF5
Ml0pIik7Ci0gICAgc2hvdWxkVGhyb3coIkpTT04uc3RyaW5naWZ5KGN5Y2xpY19hcnJheTIpIik7
Ci0KLSAgICBkZWJ1ZygiYXJyYXkgdGhhdCBjb250YWlucyBpdHNlbGYsIG5vdCBhcyBmaXJzdCBl
bGVtZW50OiBhcnJheSA9IFsxLCAnYicsIFtdLCBhcnJheV0iKTsKLSAgICBldmFsQW5kTG9nKCJj
eWNsaWNfYXJyYXkzID0gWzEsICdiJywgW11dOyBjeWNsaWNfYXJyYXkzLnB1c2goY3ljbGljX2Fy
cmF5MykiKTsKLSAgICBzaG91bGRUaHJvdygiSlNPTi5zdHJpbmdpZnkoY3ljbGljX2FycmF5Myki
KTsKLSAgICBkZWJ1ZygiIik7Ci0KLSAgICBkZWJ1ZygiYXJyYXkgdGhhdCBjb250YWlucyBhcnJh
eSB0aGF0IGNvbnRhaW5zIGl0c2VsZiIpOwotICAgIGV2YWxBbmRMb2coImN5Y2xpY19hcnJheTQg
PSBbY3ljbGljX2FycmF5XTsiKTsKLSAgICBzaG91bGRUaHJvdygiSlNPTi5zdHJpbmdpZnkoY3lj
bGljX2FycmF5NCkiKTsKLSAgICBkZWJ1ZygiIik7Ci0KLSAgICB2YXIgaW52YWxpZEtleXMgPSBb
Ci0gICAgICAgICJbIHZvaWQgMCBdIiwgLy8gdW5kZWZpbmVkCi0gICAgICAgICJbIHRydWUgXSIs
Ci0gICAgICAgICJbIGZhbHNlIF0iLAotICAgICAgICAiWyBOYU4gXSIsCi0gICAgICAgICJbIG51
bGwgXSIsCi0gICAgICAgICJbIHt9IF0iLAotICAgICAgICAiWyBmdW5jdGlvbiAoKSB7fSBdIiwK
LSAgICAgICAgIlsgL3JlZ2V4LyBdIiwKLSAgICAgICAgIlsgc2VsZiBdIiwKLSAgICAgICAgIlsg
c2VsZi5kb2N1bWVudCBdIiwKLSAgICAgICAgIlsgc2VsZi5kb2N1bWVudC5ib2R5IF0iLAotICAg
ICAgICAiY3ljbGljX2FycmF5IiwKLSAgICAgICAgImN5Y2xpY19hcnJheTIiLAotICAgICAgICAi
Y3ljbGljX2FycmF5MyIsCi0gICAgICAgICJjeWNsaWNfYXJyYXk0IiwKLSAgICAgICAgIkFycmF5
KDEwMDApIiAvLyBzcGFyc2UKLSAgICBdOwotCi0gICAgaW52YWxpZEtleXMuZm9yRWFjaChmdW5j
dGlvbiAoa2V5KSB7Ci0gICAgICAgIGRlYnVnKCJ0ZXN0aW5nIGludmFsaWQgYXJyYXkga2V5OiAi
ICsga2V5KTsKLSAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KCd2YWx1
ZScsICIgKyBrZXkgKyAiKTsiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLSAg
ICAgICAgZGVidWcoIiIpOwotICAgIH0pOwotCi0gICAgdGVzdERlcHRoTGltaXRzKCk7Ci19Ci0K
LWZ1bmN0aW9uIG1ha2VBcnJheU9mRGVwdGgobikKLXsKLSAgICB2YXIgYXJyYXkgPSBbXTsKLSAg
ICB3aGlsZSAoLS1uKSB7Ci0gICAgICAgIGFycmF5ID0gW2FycmF5XTsKLSAgICB9Ci0gICAgcmV0
dXJuIGFycmF5OwotfQotCi1mdW5jdGlvbiB0ZXN0RGVwdGhMaW1pdHMoKQotewotICAgIHNob3Vs
ZEJlKCJpbmRleGVkREIuY21wKG1ha2VBcnJheU9mRGVwdGgoMjUpLCAwKSIsICIxIik7Ci0gICAg
c2hvdWxkQmUoImluZGV4ZWREQi5jbXAobWFrZUFycmF5T2ZEZXB0aCgyNTApLCAwKSIsICIxIik7
Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXhlZERCLmNtcChtYWtlQXJyYXlPZkRl
cHRoKDI1MDApLCAwKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotICAgIGRl
YnVnKCIiKTsKLQotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9rZXktdHlwZS1hcnJheS5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2tleS10eXBlLWluZmluaXR5Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9rZXktdHlwZS1pbmZpbml0eS5odG1sCmluZGV4IGQzOTY0Yjg4Y2FlYWVkNTcxOTYy
YWM2MjcxODRmNjFjY2FjZmIzY2MuLjA1MDc1YWMxNjlmOWQ4NjlhYWI0ODUzNzNmZGIzZjg2NDJh
MTUyZGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleS10eXBl
LWluZmluaXR5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5LXR5
cGUtaW5maW5pdHkuaHRtbApAQCAtMSw2MiArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+CiA8aHRt
bD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Nj
cmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5k
ZXhlZERCIGtleSB0eXBlcyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5k
b3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAg
ZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2
YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IHRlc3RHcm91cDE7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDEoKQotewotICAgIGRlbGV0ZUFs
bE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCdmb28nKTsiKTsKLSAgICBkZWJ1ZygidGVzdCBrZXkgYXMgaW5maW5p
dHkiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFk
ZChbXSwgSW5maW5pdHkpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdGVzdEdyb3VwMjsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVu
Y3Rpb24gdGVzdEdyb3VwMigpCi17Ci0gICAgZGVidWcoInRlc3Qga2V5IGFzIG5lZ2F0aXZlIGlu
ZmluaXR5Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9y
ZS5hZGQoW10sIC1JbmZpbml0eSk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0ZXN0R3Jv
dXAzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQot
Ci1mdW5jdGlvbiB0ZXN0R3JvdXAzKCkKLXsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10
ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9rZXktdHlwZS1pbmZp
bml0eS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtYmFzaWNzLmh0bWwgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWJhc2ljcy5odG1sCmluZGV4IGE2NmQy
Y2Q4N2RjMmVhMzgxMDVhNmI1MjlkMzQxNmQxNzZhYTljMzMuLjcwNGNjYzkyYzU0NGRlMjJlNWIx
OTJmNGNmODc1MzNiOWI2NDFiNzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2tleXBhdGgtYmFzaWNzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIva2V5cGF0aC1iYXNpY3MuaHRtbApAQCAtMSwxMDEgKzEsMTAgQEAKLTwhRE9DVFlQRSBo
dG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJl
ZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9u
KCJUZXN0IGZvciB2YWxpZCBhbmQgaW52YWxpZCBrZXlwYXRocyIpOwotCi1mdW5jdGlvbiB0ZXN0
KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIG5hbWUgPSBzZWxmLmxvY2F0
aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbiki
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2Vz
cygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsK
LQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScp
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0ZXN0VmFsaWRLZXlQYXRoczsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gdGVz
dFZhbGlkS2V5UGF0aHMoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAg
ICB0ZXN0S2V5UGF0aHMgPSBbbnVsbCwgdW5kZWZpbmVkLCAnJ107Ci0gICAgdGVzdEtleVBhdGhz
LmZvckVhY2goZnVuY3Rpb24gKGtleVBhdGgpIHsKLSAgICAgICAgZ2xvYmFsS2V5UGF0aCA9IGtl
eVBhdGg7Ci0gICAgICAgIGRlYnVnKCJnbG9iYWxLZXlQYXRoID0gJyIgKyBnbG9iYWxLZXlQYXRo
ICsgIiciKTsKLSAgICAgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ25hbWUn
LCB7a2V5UGF0aDogZ2xvYmFsS2V5UGF0aH0pIik7Ci0gICAgICAgIGRlbGV0ZUFsbE9iamVjdFN0
b3JlcyhkYik7Ci0gICAgfSk7Ci0KLSAgICB0ZXN0S2V5UGF0aHMgPSBbJ2ZvbycsICdmb28uYmFy
LmJheiddOwotICAgIHRlc3RLZXlQYXRocy5mb3JFYWNoKGZ1bmN0aW9uIChrZXlQYXRoKSB7Ci0g
ICAgICAgIGdsb2JhbEtleVBhdGggPSBrZXlQYXRoOwotICAgICAgICBkZWJ1ZygiZ2xvYmFsS2V5
UGF0aCA9ICciICsgZ2xvYmFsS2V5UGF0aCArICInIik7Ci0gICAgICAgIGV2YWxBbmRMb2coImRi
LmNyZWF0ZU9iamVjdFN0b3JlKCduYW1lJywge2tleVBhdGg6IGdsb2JhbEtleVBhdGh9KSIpOwot
ICAgICAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotICAgIH0pOwotCi0gICAgdGVzdEtl
eVBhdGhzID0gW251bGwsIHVuZGVmaW5lZCwgJycsICdmb28nLCAnZm9vLmJhci5iYXonXTsKLSAg
ICB0ZXN0S2V5UGF0aHMuZm9yRWFjaChmdW5jdGlvbiAoa2V5UGF0aCkgewotICAgICAgICBnbG9i
YWxLZXlQYXRoID0ga2V5UGF0aDsKLSAgICAgICAgZGVidWcoImdsb2JhbEtleVBhdGggPSAnIiAr
IGdsb2JhbEtleVBhdGggKyAiJyIpOwotICAgICAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3Jl
ID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0gICAgICAgIGV2YWxBbmRM
b2coInN0b3JlLmNyZWF0ZUluZGV4KCduYW1lJywgZ2xvYmFsS2V5UGF0aCkiKTsKLSAgICAgICAg
ZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLSAgICB9KTsKLQotICAgIHRlc3RJbnZhbGlkS2V5
UGF0aHMoKTsKLX0KLQotZnVuY3Rpb24gdGVzdEludmFsaWRLZXlQYXRocygpCi17Ci0gICAgZGVs
ZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIHRlc3RLZXlQYXRocyA9IFsnW10nLCAnWyJm
b28iXScsICdbImZvbyIsICJiYXIiXScsICdbIiIsICIiXScsICdbMS4wLCAyLjBdJywgJ1tbImZv
byJdXScsICdbImZvbyIsIFsiYmFyIl1dJ107Ci0gICAgdGVzdEtleVBhdGhzLmZvckVhY2goZnVu
Y3Rpb24gKGtleVBhdGgpIHsKLSAgICAgICAgZ2xvYmFsS2V5UGF0aCA9IGtleVBhdGg7Ci0gICAg
ICAgIGRlYnVnKCJnbG9iYWxLZXlQYXRoID0gJyIgKyBnbG9iYWxLZXlQYXRoICsgIiciKTsKLSAg
ICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ25hbWUn
LCB7a2V5UGF0aDogZ2xvYmFsS2V5UGF0aH0pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PTl9U
UkFOU0lFTlRfRVJSIik7Ci0gICAgICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0gICAg
fSk7Ci0KLSAgICB0ZXN0S2V5UGF0aHMgPSBbJyAnLCAnZm9vICcsICdmb28gYmFyJywgJ2Zvby4g
YmFyJywgJ2ZvbyAuYmFyJywgJ2Zvby4uYmFyJywgJytmb28nLCAnZm9vJSddOwotICAgIHRlc3RL
ZXlQYXRocy5mb3JFYWNoKGZ1bmN0aW9uIChrZXlQYXRoKSB7Ci0gICAgICAgIGdsb2JhbEtleVBh
dGggPSBrZXlQYXRoOwotICAgICAgICBkZWJ1ZygiZ2xvYmFsS2V5UGF0aCA9ICciICsgZ2xvYmFs
S2V5UGF0aCArICInIik7Ci0gICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLmNyZWF0
ZU9iamVjdFN0b3JlKCduYW1lJywge2tleVBhdGg6IGdsb2JhbEtleVBhdGh9KSIsICJJREJEYXRh
YmFzZUV4Y2VwdGlvbi5OT05fVFJBTlNJRU5UX0VSUiIpOwotICAgICAgICBkZWxldGVBbGxPYmpl
Y3RTdG9yZXMoZGIpOwotICAgIH0pOwotCi0gICAgdGVzdEtleVBhdGhzID0gWycgJywgJ2ZvbyAn
LCAnZm9vIGJhcicsICdmb28uIGJhcicsICdmb28gLmJhcicsICdmb28uLmJhcicsICcrZm9vJywg
J2ZvbyUnXTsKLSAgICB0ZXN0S2V5UGF0aHMuZm9yRWFjaChmdW5jdGlvbiAoa2V5UGF0aCkgewot
ICAgICAgICBnbG9iYWxLZXlQYXRoID0ga2V5UGF0aDsKLSAgICAgICAgZGVidWcoImdsb2JhbEtl
eVBhdGggPSAnIiArIGdsb2JhbEtleVBhdGggKyAiJyIpOwotICAgICAgICBzdG9yZSA9IGV2YWxB
bmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0gICAg
ICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmNyZWF0ZUluZGV4KCduYW1lJywgZ2xv
YmFsS2V5UGF0aCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9OX1RSQU5TSUVOVF9FUlIiKTsK
LSAgICAgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLSAgICB9KTsKLQotICAgIGZpbmlz
aEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2tleXBhdGgtYmFzaWNzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1l
ZGdlcy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1lZGdlcy5o
dG1sCmluZGV4IDQ2OGY0MDJiMWE3NWRkNzg4Y2IwZmYwNzRiZTA0MjZmYzA0Y2ExZTEuLmZmOWRh
ZGQyNDQ4ZDVjMzI1YjkzZGVhYjNhNzg4YTI5NmUyNDVlMjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtZWRnZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWVkZ2VzLmh0bWwKQEAgLTEsMTE5ICsxLDEwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJl
c291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0Pgot
Ci1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIga2V5UGF0aCBlZGdlIGNhc2VzIik7Ci0KLWZ1
bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCdrZXlwYXRoLWVkZ2Vz
JykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdrZXlwYXRoLWVkZ2VzJykiKTsKLSAgICAgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nl
c3MoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKLSAg
ICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHRyYW5zYWN0aW9uID0gcmVxdWVzdC5yZXN1
bHQ7Ci0gICAgICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFj
azsKLSAgICAgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlLXdpdGgt
cGF0aCcsIHtrZXlQYXRoOiAnZm9vJ30pIik7Ci0gICAgICAgIGV2YWxBbmRMb2coImRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdzdG9yZS13aXRoLXBhdGgtYW5kLWdlbmVyYXRvcicsIHtrZXlQYXRoOiAn
Zm9vJywgYXV0b0luY3JlbWVudDogdHJ1ZX0pIik7Ci0gICAgICAgIHRyYW5zYWN0aW9uLm9uY29t
cGxldGUgPSB0ZXN0S2V5UGF0aHM7Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24gdGVzdEtleVBhdGhz
KCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInRlc3RLZXlQYXRocygpOiIpOwotCi0g
ICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9u
KFsnc3RvcmUtd2l0aC1wYXRoJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAg
c3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9y
ZS13aXRoLXBhdGgnKSIpOwotCi0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJLZXkgcGF0aCBk
b2Vzbid0IHJlc29sdmUgdG8gYSB2YWx1ZTsgc2hvdWxkIHlpZWxkIG51bGwsIHNob3VsZCB0aHJv
dyBEQVRBX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLnB1dChudWxs
KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotCi0gICAgZGVidWcoIiIpOwot
ICAgIGRlYnVnKCJLZXkgcGF0aCBkb2Vzbid0IHJlc29sdmUgdG8gYSB2YWx1ZTsgc2hvdWxkIHlp
ZWxkIG51bGwsIHNob3VsZCB0aHJvdyBEQVRBX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oInN0b3JlLnB1dCh7fSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsK
LQotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiS2V5IHBhdGggcmVzb2x2ZXMgdG8gYSB2YWx1
ZSB0aGF0IGlzIGludmFsaWQga2V5OyBzaG91bGQgeWllbGQgJ2ludmFsaWQnIGtleSwgc2hvdWxk
IHRocm93IERBVEFfRVJSIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0
KHtmb286IG51bGx9KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotCi0gICAg
ZGVidWcoIiIpOwotICAgIGRlYnVnKCJLZXkgcGF0aCByZXNvbHZlcyB0byBhIHZhbHVlIHRoYXQg
aXMgdmFsaWQga2V5OyBzaG91bGQgeWllbGQgJ3N0cmluZycga2V5LCBzaG91bGQgc3VjY2VlZCIp
OwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5wdXQoe2ZvbzogJ3pvbyd9KSIpOwot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewotICAgICAgICB0ZXN0UGFzc2VkKCJzdG9yZS5w
dXQgc3VjY2VlZGVkIik7Ci0gICAgfTsKLQotICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4
cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gdGVzdEtl
eVBhdGhzQW5kR2VuZXJhdG9yOwotfQotCi1mdW5jdGlvbiB0ZXN0S2V5UGF0aHNBbmRHZW5lcmF0
b3IoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygidGVzdEtleVBhdGhzQW5kR2VuZXJh
dG9yKCk6Iik7Ci0KLSAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0g
ZGIudHJhbnNhY3Rpb24oWydzdG9yZS13aXRoLXBhdGgtYW5kLWdlbmVyYXRvciddLCBJREJUcmFu
c2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0
cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUtd2l0aC1wYXRoLWFuZC1nZW5lcmF0b3InKSIp
OwotCi0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJLZXkgcGF0aCBkb2Vzbid0IHJlc29sdmUg
dG8gYSB2YWx1ZTsgc2hvdWxkIHlpZWxkIG51bGwgYnV0IGluc2VydGlvbiB3b3VsZCBmYWlsLCBz
byBwdXQgcmVxdWVzdCBzaG91bGQgcmFpc2UgZXhjZXB0aW9uIik7Ci0gICAgZXZhbEFuZEV4cGVj
dEV4Y2VwdGlvbigic3RvcmUucHV0KG51bGwpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFf
RVJSIik7Ci0KLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIktleSBwYXRoIGRvZXNuJ3QgcmVz
b2x2ZSB0byBhIHZhbHVlOyBzaG91bGQgeWllbGQgbnVsbCBidXQgaW5zZXJ0aW9uIHdvdWxkIGZh
aWwsIHNvIHB1dCByZXF1ZXN0IHNob3VsZCByYWlzZSBleGNlcHRpb24iKTsKLSAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5wdXQoJ3N0cmluZycpIiwgIklEQkRhdGFiYXNlRXhjZXB0
aW9uLkRBVEFfRVJSIik7Ci0KLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIktleSBwYXRoIGRv
ZXNuJ3QgcmVzb2x2ZSB0byBhIHZhbHVlOyBzaG91bGQgeWllbGQgbnVsbCwga2V5IHNob3VsZCBi
ZSBnZW5lcmF0ZWQsIHB1dCByZXF1ZXN0IHNob3VsZCBzdWNjZWVkIik7Ci0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInN0b3JlLnB1dCh7fSkiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgp
IHsKLSAgICAgICAgdGVzdFBhc3NlZCgic3RvcmUucHV0IHN1Y2NlZWRlZCIpOwotCi0gICAgICAg
IGRlYnVnKCIiKTsKLSAgICAgICAgZGVidWcoIktleSBwYXRoIHJlc29sdmVzIHRvIGEgdmFsdWUg
dGhhdCBpcyBpbnZhbGlkIGtleTsgc2hvdWxkIHlpZWxkICdpbnZhbGlkJyBrZXksIHNob3VsZCB0
aHJvdyBEQVRBX0VSUiIpOwotICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5w
dXQoe2ZvbzogbnVsbH0pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0KLSAg
ICAgICAgZGVidWcoIiIpOwotICAgICAgICBkZWJ1ZygiS2V5IHBhdGggcmVzb2x2ZXMgdG8gYSB2
YWx1ZSB0aGF0IGlzIHZhbGlkIGtleTsgc2hvdWxkIHlpZWxkICdzdHJpbmcnIGtleSwgc2hvdWxk
IHN1Y2NlZWQiKTsKLSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLnB1dCh7Zm9v
OiAnem9vJ30pIik7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKLSAgICAg
ICAgICAgIHRlc3RQYXNzZWQoInN0b3JlLnB1dCBzdWNjZWVkZWQiKTsKLQotICAgICAgICB9Owot
ICAgIH07Ci0KLSAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJh
Y2s7Ci0gICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZpbmlzaEpTVGVzdDsKLX0KLQotdGVz
dCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMva2V5cGF0aC1lZGdlcy5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtZmV0Y2gta2V5Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWZldGNoLWtleS5odG1sCmluZGV4IGMyYzRh
NDgyM2M1OTdiMDJlNDA0ZThhOWQ2MzYyYjYwN2E0ZDcyZmUuLmM4YzgwOGUzYjYzNTRjZGRlNjgw
NDRmZTEzZDUzNzA0NDlmNWQ0M2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2tleXBhdGgtZmV0Y2gta2V5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIva2V5cGF0aC1mZXRjaC1rZXkuaHRtbApAQCAtMSw5MiArMSwxMCBAQAotPCFET0NU
WVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
c2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3Jp
cHRpb24oIlRlc3QgSW5kZXhlZERCIGtleVBhdGhzIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewot
ICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5w
YXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQot
ewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwot
Ci0gICAgdGVzdERhdGEgPSBbeyBuYW1lOiAic2ltcGxlIGlkZW50aWZpZXIiLAotICAgICAgICAg
ICAgICAgICAgdmFsdWU6IHtpZDoxMH0sCi0gICAgICAgICAgICAgICAgICBrZXlQYXRoOiAiaWQi
LAotICAgICAgICAgICAgICAgICAga2V5OiAxMCB9LAotICAgICAgICAgICAgICAgIHsgbmFtZTog
InNpbXBsZSBpZGVudGlmaWVycyIsCi0gICAgICAgICAgICAgICAgICB2YWx1ZToge2lkMToxMCwg
aWQyOjIwfSwKLSAgICAgICAgICAgICAgICAgIGtleVBhdGg6ICJpZDEiLAotICAgICAgICAgICAg
ICAgICAga2V5OiAxMCB9LAotICAgICAgICAgICAgICAgIHsgbmFtZTogIm5lc3RlZCBpZGVudGlm
aWVycyIsCi0gICAgICAgICAgICAgICAgICB2YWx1ZToge291dGVyOntpbm5lcjoxMH19LAotICAg
ICAgICAgICAgICAgICAga2V5UGF0aDogIm91dGVyLmlubmVyIiwKLSAgICAgICAgICAgICAgICAg
IGtleTogMTAgfSwKLSAgICAgICAgICAgICAgICB7IG5hbWU6ICJuZXN0ZWQgaWRlbnRpZmllcnMg
d2l0aCBkaXN0cmFjdGlvbnMiLAotICAgICAgICAgICAgICAgICAgdmFsdWU6IHtvdXRlcjp7aW5u
ZXI6MTB9LCBpbm5lcjp7b3V0ZXI6MjB9fSwKLSAgICAgICAgICAgICAgICAgIGtleVBhdGg6ICJv
dXRlci5pbm5lciIsCi0gICAgICAgICAgICAgICAgICBrZXk6IDEwIH0sCi0gICAgXTsKLSAgICBu
ZXh0VG9PcGVuID0gMDsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRl
T2JqZWN0U3RvcmU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQotewotICAg
IGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygidGVzdGluZyAiICsgdGVzdERhdGFbbmV4dFRvT3Blbl0u
bmFtZSk7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3Rv
cmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKHRlc3RE
YXRhW25leHRUb09wZW5dLm5hbWUsIHtrZXlQYXRoOiB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5rZXlQ
YXRofSk7Iik7Ci0gICAgcmVzdWx0ID0gZXZhbEFuZExvZygicmVzdWx0ID0gb2JqZWN0U3RvcmUu
YWRkKHRlc3REYXRhW25leHRUb09wZW5dLnZhbHVlKTsiKTsKLSAgICByZXN1bHQub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBvcGVuQ3Vy
c29yOwotfQotCi1mdW5jdGlvbiBvcGVuQ3Vyc29yKCkKLXsKLSAgICByZXN1bHQgPSBldmFsQW5k
TG9nKCJyZXN1bHQgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7Ci0gICAgcmVzdWx0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXN1bHQub25zdWNjZXNzID0g
Y2hlY2tDdXJzb3I7Ci19Ci0KLWZ1bmN0aW9uIGNoZWNrQ3Vyc29yKCkKLXsKLSAgICBjdXJzb3Ig
PSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgIGlmIChj
dXJzb3IpIHsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAidGVzdERhdGFbbmV4dFRv
T3Blbl0ua2V5Iik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiY3Vyc29yIGlz
IG51bGwiKTsKLSAgICB9Ci0gICAgaWYgKCsrbmV4dFRvT3BlbiA8IHRlc3REYXRhLmxlbmd0aCkg
ewotICAgICAgICBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCk7Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfQotfQotCi0KLXRlc3QoKTsKLQotPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2tleXBhdGgtZmV0Y2gta2V5LmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIva2V5cmFuZ2UtcmVxdWlyZWQtYXJndW1lbnRzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlyYW5nZS1yZXF1aXJlZC1hcmd1bWVudHMuaHRtbApp
bmRleCA4ODE1ZmY0NDQxZmU3NDUxNmIwNzhiMDQ3OWZjOTA3N2VmY2YxNjE4Li4wNWI5OTdhZjE0
M2ZiYzhkMTZmNWIwNjI1ZmEyYjZhNTE5MzQ2NmE0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9rZXlyYW5nZS1yZXF1aXJlZC1hcmd1bWVudHMuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlyYW5nZS1yZXF1aXJlZC1hcmd1bWVudHMu
aHRtbApAQCAtMSwzMSArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgog
PHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVh
ZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGtleXJh
bmdlIHJlcXVpcmVkIGFyZ3VtZW50cyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1v
dmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgc2hvdWxkVGhyb3coIklEQktleVJhbmdlLm9ubHko
KTsiKTsKLSAgICBzaG91bGRUaHJvdygiSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgpOyIpOwotICAg
IHNob3VsZFRocm93KCJJREJLZXlSYW5nZS51cHBlckJvdW5kKCk7Iik7Ci0gICAgc2hvdWxkVGhy
b3coIklEQktleVJhbmdlLmJvdW5kKDEpOyIpOwotICAgIHNob3VsZFRocm93KCJJREJLZXlSYW5n
ZS5ib3VuZCgpOyIpOwotCi0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMva2V5cmFuZ2UtcmVxdWlyZWQtYXJndW1l
bnRzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cmFuZ2UuaHRtbCBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2tleXJhbmdlLmh0bWwKaW5kZXggNjM4ZDVmMzhhNjc5NDIwNDc4
ZjM4YzY4OGFiYmJlZDE4NTk1NDA5NS4uOWZkYzFjYmVmMTM3YjQ2MGUwNWYxMTIzZmNlZjNlMmMw
ZjU3ODhmNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cmFu
Z2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlyYW5nZS5odG1s
CkBAIC00LDE5MiArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9z
Y3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IElu
ZGV4ZWREQidzIEtleVJhbmdlLiIpOwotCi1mdW5jdGlvbiBjaGVja1NpbmdsZUtleVJhbmdlKHZh
bHVlKQotewotICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygiSURCS2V5UmFuZ2Uub25seSgiICsg
dmFsdWUgKyAiKSIpOwotICAgIHNob3VsZEJlKCJrZXlSYW5nZS5sb3dlciIsICIiICsgdmFsdWUp
OwotICAgIHNob3VsZEJlKCJrZXlSYW5nZS51cHBlciIsICIiICsgdmFsdWUpOwotICAgIHNob3Vs
ZEJlRmFsc2UoImtleVJhbmdlLmxvd2VyT3BlbiIpOwotICAgIHNob3VsZEJlRmFsc2UoImtleVJh
bmdlLnVwcGVyT3BlbiIpOwotfQotCi1mdW5jdGlvbiBjaGVja0xvd2VyQm91bmRLZXlSYW5nZSh2
YWx1ZSwgb3BlbikKLXsKLSAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coIklEQktleVJhbmdlLmxv
d2VyQm91bmQoIiArIHZhbHVlICsgIiwiICsgb3BlbiArICIpIik7Ci0gICAgc2hvdWxkQmUoImtl
eVJhbmdlLmxvd2VyIiwgIiIgKyB2YWx1ZSk7Ci0gICAgaWYgKG9wZW4gPT09IHVuZGVmaW5lZCkK
LSAgICAgICAgb3BlbiA9IGZhbHNlOwotICAgIHNob3VsZEJlKCJrZXlSYW5nZS5sb3dlck9wZW4i
LCAiIiArIG9wZW4pOwotICAgIHNob3VsZEJlTnVsbCgia2V5UmFuZ2UudXBwZXIiKTsKLSAgICBz
aG91bGRCZUZhbHNlKCJrZXlSYW5nZS51cHBlck9wZW4iKTsKLX0KLQotZnVuY3Rpb24gY2hlY2tV
cHBlckJvdW5kS2V5UmFuZ2UodmFsdWUsIG9wZW4pCi17Ci0gICAga2V5UmFuZ2UgPSBldmFsQW5k
TG9nKCJJREJLZXlSYW5nZS51cHBlckJvdW5kKCIgKyB2YWx1ZSArICIsIiArIG9wZW4gKyAiKSIp
OwotICAgIHNob3VsZEJlKCJrZXlSYW5nZS51cHBlciIsICIiICsgdmFsdWUpOwotICAgIGlmIChv
cGVuID09PSB1bmRlZmluZWQpCi0gICAgICAgIG9wZW4gPSBmYWxzZTsKLSAgICBzaG91bGRCZSgi
a2V5UmFuZ2UudXBwZXJPcGVuIiwgIiIgKyBvcGVuKTsKLSAgICBzaG91bGRCZU51bGwoImtleVJh
bmdlLmxvd2VyIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgia2V5UmFuZ2UubG93ZXJPcGVuIik7Ci19
Ci0KLWZ1bmN0aW9uIGNoZWNrQm91bmRLZXlSYW5nZShsb3dlciwgdXBwZXIsIGxvd2VyT3Blbiwg
dXBwZXJPcGVuKQotewotICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygiSURCS2V5UmFuZ2UuYm91
bmQoIiArIGxvd2VyICsgIiwiICsgdXBwZXIgKyAiLCAiICsgbG93ZXJPcGVuICsgIiwgIiArIHVw
cGVyT3BlbiArICIpIik7Ci0gICAgc2hvdWxkQmUoImtleVJhbmdlLmxvd2VyIiwgIiIgKyBsb3dl
cik7Ci0gICAgc2hvdWxkQmUoImtleVJhbmdlLnVwcGVyIiwgIiIgKyB1cHBlcik7Ci0gICAgaWYg
KGxvd2VyT3BlbiA9PT0gdW5kZWZpbmVkKQotICAgICAgICBsb3dlck9wZW4gPSBmYWxzZTsKLSAg
ICBpZiAodXBwZXJPcGVuID09PSB1bmRlZmluZWQpCi0gICAgICAgIHVwcGVyT3BlbiA9IGZhbHNl
OwotICAgIHNob3VsZEJlKCJrZXlSYW5nZS5sb3dlck9wZW4iLCAiIiArIGxvd2VyT3Blbik7Ci0g
ICAgc2hvdWxkQmUoImtleVJhbmdlLnVwcGVyT3BlbiIsICIiICsgdXBwZXJPcGVuKTsKLX0KLQot
ZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICBzaG91
bGRCZUZhbHNlKCInbG93ZXInIGluIElEQktleVJhbmdlIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgi
J3VwcGVyJyBpbiBJREJLZXlSYW5nZSIpOwotICAgIHNob3VsZEJlRmFsc2UoIidsb3dlck9wZW4n
IGluIElEQktleVJhbmdlIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiJ3VwcGVyT3BlbicgaW4gSURC
S2V5UmFuZ2UiKTsKLSAgICBzaG91bGRCZVRydWUoIidvbmx5JyBpbiBJREJLZXlSYW5nZSIpOwot
ICAgIHNob3VsZEJlVHJ1ZSgiJ2xvd2VyQm91bmQnIGluIElEQktleVJhbmdlIik7Ci0gICAgc2hv
dWxkQmVUcnVlKCIndXBwZXJCb3VuZCcgaW4gSURCS2V5UmFuZ2UiKTsKLSAgICBzaG91bGRCZVRy
dWUoIidib3VuZCcgaW4gSURCS2V5UmFuZ2UiKTsKLQotICAgIGRlYnVnKCIiKTsKLQotICAgIHZh
ciBpbnN0YW5jZSA9IGV2YWxBbmRMb2coImluc3RhbmNlID0gSURCS2V5UmFuZ2Uub25seSgxKSIp
OwotICAgIHNob3VsZEJlVHJ1ZSgiJ2xvd2VyJyBpbiBpbnN0YW5jZSIpOwotICAgIHNob3VsZEJl
VHJ1ZSgiJ3VwcGVyJyBpbiBpbnN0YW5jZSIpOwotICAgIHNob3VsZEJlVHJ1ZSgiJ2xvd2VyT3Bl
bicgaW4gaW5zdGFuY2UiKTsKLSAgICBzaG91bGRCZVRydWUoIid1cHBlck9wZW4nIGluIGluc3Rh
bmNlIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiJ29ubHknIGluIGluc3RhbmNlIik7Ci0gICAgc2hv
dWxkQmVGYWxzZSgiJ2xvd2VyQm91bmQnIGluIGluc3RhbmNlIik7Ci0gICAgc2hvdWxkQmVGYWxz
ZSgiJ3VwcGVyQm91bmQnIGluIGluc3RhbmNlIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiJ2JvdW5k
JyBpbiBpbnN0YW5jZSIpOwotCi0gICAgZGVidWcoIiIpOwotCi0gICAgY2hlY2tTaW5nbGVLZXlS
YW5nZSgxKTsKLSAgICBjaGVja1NpbmdsZUtleVJhbmdlKDMuMTQpOwotICAgIGNoZWNrU2luZ2xl
S2V5UmFuZ2UoIidhJyIpOwotCi0gICAgY2hlY2tMb3dlckJvdW5kS2V5UmFuZ2UoMTAsIHRydWUp
OwotICAgIGNoZWNrTG93ZXJCb3VuZEtleVJhbmdlKDExLCBmYWxzZSk7Ci0gICAgY2hlY2tMb3dl
ckJvdW5kS2V5UmFuZ2UoMTIpOwotICAgIGNoZWNrTG93ZXJCb3VuZEtleVJhbmdlKDEwLjEsIHRy
dWUpOwotICAgIGNoZWNrTG93ZXJCb3VuZEtleVJhbmdlKDExLjIsIGZhbHNlKTsKLSAgICBjaGVj
a0xvd2VyQm91bmRLZXlSYW5nZSgxMi4zKTsKLSAgICBjaGVja0xvd2VyQm91bmRLZXlSYW5nZSgi
J2FhJyIsIHRydWUpOwotICAgIGNoZWNrTG93ZXJCb3VuZEtleVJhbmdlKCInYWInIiwgZmFsc2Up
OwotICAgIGNoZWNrTG93ZXJCb3VuZEtleVJhbmdlKCInYWMnIik7Ci0KLSAgICBjaGVja1VwcGVy
Qm91bmRLZXlSYW5nZSgyMCwgdHJ1ZSk7Ci0gICAgY2hlY2tVcHBlckJvdW5kS2V5UmFuZ2UoMjEs
IGZhbHNlKTsKLSAgICBjaGVja1VwcGVyQm91bmRLZXlSYW5nZSgyMik7Ci0gICAgY2hlY2tVcHBl
ckJvdW5kS2V5UmFuZ2UoMjAuMiwgdHJ1ZSk7Ci0gICAgY2hlY2tVcHBlckJvdW5kS2V5UmFuZ2Uo
MjEuMywgZmFsc2UpOwotICAgIGNoZWNrVXBwZXJCb3VuZEtleVJhbmdlKDIyLjQpOwotICAgIGNo
ZWNrVXBwZXJCb3VuZEtleVJhbmdlKCInYmEnIiwgdHJ1ZSk7Ci0gICAgY2hlY2tVcHBlckJvdW5k
S2V5UmFuZ2UoIidiYiciLCBmYWxzZSk7Ci0gICAgY2hlY2tVcHBlckJvdW5kS2V5UmFuZ2UoIidi
YyciKTsKLQotICAgIGNoZWNrQm91bmRLZXlSYW5nZSgzMCwgNDApOwotICAgIGNoZWNrQm91bmRL
ZXlSYW5nZSgzMSwgNDEsIGZhbHNlLCBmYWxzZSk7Ci0gICAgY2hlY2tCb3VuZEtleVJhbmdlKDMy
LCA0MiwgZmFsc2UsIHRydWUpOwotICAgIGNoZWNrQm91bmRLZXlSYW5nZSgzMywgNDMsIHRydWUs
IGZhbHNlKTsKLSAgICBjaGVja0JvdW5kS2V5UmFuZ2UoMzQsIDQ0LCB0cnVlLCB0cnVlKTsKLQot
ICAgIGNoZWNrQm91bmRLZXlSYW5nZSgzMC4xLCA0MC4yKTsKLSAgICBjaGVja0JvdW5kS2V5UmFu
Z2UoMzEuMywgNDEuNCwgZmFsc2UsIGZhbHNlKTsKLSAgICBjaGVja0JvdW5kS2V5UmFuZ2UoMzIu
NSwgNDIuNiwgZmFsc2UsIHRydWUpOwotICAgIGNoZWNrQm91bmRLZXlSYW5nZSgzMy43LCA0My44
LCB0cnVlLCBmYWxzZSk7Ci0gICAgY2hlY2tCb3VuZEtleVJhbmdlKDM0LjksIDQ0LjAsIHRydWUs
IHRydWUpOwotCi0gICAgY2hlY2tCb3VuZEtleVJhbmdlKCInYWFhJyIsICInYWJhJyIsIGZhbHNl
LCBmYWxzZSk7Ci0gICAgY2hlY2tCb3VuZEtleVJhbmdlKCInYWFiJyIsICInYWJiJyIpOwotICAg
IGNoZWNrQm91bmRLZXlSYW5nZSgiJ2FhYyciLCAiJ2FiYyciLCBmYWxzZSwgZmFsc2UpOwotICAg
IGNoZWNrQm91bmRLZXlSYW5nZSgiJ2FhZCciLCAiJ2FiZCciLCBmYWxzZSwgdHJ1ZSk7Ci0gICAg
Y2hlY2tCb3VuZEtleVJhbmdlKCInYWFlJyIsICInYWJlJyIsIHRydWUsIGZhbHNlKTsKLSAgICBj
aGVja0JvdW5kS2V5UmFuZ2UoIidhYWYnIiwgIidhYmYnIiwgdHJ1ZSwgdHJ1ZSk7Ci0KLSAgICB0
cnkgewotICAgICAgICBkZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIG9ubHkoe30p
Iik7Ci0gICAgICAgIElEQktleVJhbmdlLm9ubHkoe30pOwotICAgICAgICB0ZXN0RmFpbGVkKCJO
byBleGNlcHRpb24gdGhyb3duIik7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICB0ZXN0UGFz
c2VkKCJDYXVnaHQgZXhjZXB0aW9uOiAiICsgZS50b1N0cmluZygpKTsKLSAgICB9Ci0KLSAgICB0
cnkgewotICAgICAgICBkZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIHVwcGVyQm91
bmQoe30pIik7Ci0gICAgICAgIElEQktleVJhbmdlLnVwcGVyQm91bmQoe30pOwotICAgICAgICB0
ZXN0RmFpbGVkKCJObyBleGNlcHRpb24gdGhyb3duIik7Ci0gICAgfSBjYXRjaCAoZSkgewotICAg
ICAgICB0ZXN0UGFzc2VkKCJDYXVnaHQgZXhjZXB0aW9uOiAiICsgZS50b1N0cmluZygpKTsKLSAg
ICB9Ci0gCi0gICAgdHJ5IHsKLSAgICAgICAgZGVidWcoIlBhc3NpbmcgYW4gaW52YWxpZCBrZXkg
aW50byBsb3dlckJvdW5kKHt9KSIpOwotICAgICAgICBJREJLZXlSYW5nZS5sb3dlckJvdW5kKHt9
KTsKLSAgICAgICAgdGVzdEZhaWxlZCgiTm8gZXhjZXB0aW9uIHRocm93biIpOwotICAgIH0gY2F0
Y2ggKGUpIHsKLSAgICAgICAgdGVzdFBhc3NlZCgiQ2F1Z2h0IGV4Y2VwdGlvbjogIiArIGUudG9T
dHJpbmcoKSk7Ci0gICAgfQotCi0gICAgdHJ5IHsKLSAgICAgICAgZGVidWcoIlBhc3NpbmcgYW4g
aW52YWxpZCBrZXkgaW50byBib3VuZChudWxsLCB7fSkiKTsKLSAgICAgICAgSURCS2V5UmFuZ2Uu
Ym91bmQobnVsbCwge30pOwotICAgICAgICB0ZXN0RmFpbGVkKCJObyBleGNlcHRpb24gdGhyb3du
Iik7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICB0ZXN0UGFzc2VkKCJDYXVnaHQgZXhjZXB0
aW9uOiAiICsgZS50b1N0cmluZygpKTsKLSAgICB9Ci0KLSAgICB0cnkgewotICAgICAgICBkZWJ1
ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIGJvdW5kKHt9LG51bGwpIik7Ci0gICAgICAg
IElEQktleVJhbmdlLmJvdW5kKHt9LCBudWxsKTsKLSAgICAgICAgdGVzdEZhaWxlZCgiTm8gZXhj
ZXB0aW9uIHRocm93biIpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgdGVzdFBhc3NlZCgi
Q2F1Z2h0IGV4Y2VwdGlvbjogIiArIGUudG9TdHJpbmcoKSk7Ci0gICAgfQotCi0gICAgdHJ5IHsK
LSAgICAgICAgZGVidWcoIlBhc3NpbmcgYW4gaW52YWxpZCBrZXkgaW50byBib3VuZCh7fSwge30p
Iik7Ci0gICAgICAgIElEQktleVJhbmdlLmJvdW5kKHt9LCB7fSk7Ci0gICAgICAgIHRlc3RGYWls
ZWQoIk5vIGV4Y2VwdGlvbiB0aHJvd24iKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIHRl
c3RQYXNzZWQoIkNhdWdodCBleGNlcHRpb246ICIgKyBlLnRvU3RyaW5nKCkpOwotICAgIH0KLQot
ICAgIGRlYnVnKCJMb3dlciBrZXkgZ3JlYXRlciB0aGFuIGhpZ2hlciBrZXksIGJvdW5kKDQsIDMp
Iik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiSURCS2V5UmFuZ2UuYm91bmQoNCwgMyki
LCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLQotICAgIGRlYnVnKCJFcXVhbCBr
ZXlzLCBlaXRoZXIgb2YgdGhlIGJvdW5kcyBpcyBvcGVuLCBib3VuZCg0LCA0LCB0cnVlLCBmYWxz
ZSkiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJJREJLZXlSYW5nZS5ib3VuZCg0LCA0
LCB0cnVlLCBmYWxzZSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLQotICAg
IGRlYnVnKCJFcXVhbCBrZXlzLCBlaXRoZXIgb2YgdGhlIGJvdW5kcyBpcyBvcGVuLCBib3VuZCg0
LCA0LCBmYWxzZSwgdHJ1ZSkiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJJREJLZXlS
YW5nZS5ib3VuZCg0LCA0LCBmYWxzZSwgdHJ1ZSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFU
QV9FUlIiKTsKLQotICAgIGRlYnVnKCJFcXVhbCBrZXlzLCBlaXRoZXIgb2YgdGhlIGJvdW5kcyBp
cyBvcGVuLCBib3VuZCg0LCA0LCB0cnVlLCB0cnVlKSIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oIklEQktleVJhbmdlLmJvdW5kKDQsIDQsIHRydWUsIHRydWUpIiwgIklEQkRhdGFiYXNl
RXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0KLSAgICBkZWJ1ZygiRXF1YWwga2V5cywgbm9uZSBvZiB0
aGUgYm91bmRzIGlzIG9wZW4sIGJvdW5kKDQsIDQsIGZhbHNlLCBmYWxzZSkiKTsKLSAgICBJREJL
ZXlSYW5nZS5ib3VuZCg0LCA0LCBmYWxzZSwgZmFsc2UpOwotfQotCi10ZXN0KCk7Ci0KLWZpbmlz
aEpTVGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMva2V5cmFuZ2Uu
anMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9saXN0LW9yZGVyaW5nLmh0bWwgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9saXN0LW9yZGVyaW5nLmh0bWwKaW5kZXggMDc0MTJmNWI1M2Nj
NDE2ZTA5OWRjMjJlOTkzMWVmMThmNWY4MDNmZS4uYjlkOWIzNTkxOTUzNGI4NmUwNWRmZjk0MmZm
NmY4NWUzMzYzYTU1OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bGlzdC1vcmRlcmluZy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2xp
c3Qtb3JkZXJpbmcuaHRtbApAQCAtNCw5MiArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxpbnB1dCB0eXBlPSJmaWxl
IiBpZD0iZmlsZUlucHV0IiBtdWx0aXBsZT48L2lucHV0PgotPHNjcmlwdD4KLQotZGVzY3JpcHRp
b24oIlRlc3Qgc3RyaW5nIGxpc3Qgb3JkZXJpbmcgaW4gSW5kZXhlZERCLiIpOwotCi12YXIgZXhw
ZWN0ZWRfb3JkZXIgPSBbCi0gICIiLAotICAiXHgwMCIsIC8vICdOVUxMJyAoVSswMDAwKQotICAi
MCIsCi0gICIxIiwKLSAgIkEiLAotICAiQiIsCi0gICJhIiwKLSAgImIiLAotICAiXHg3RiIsIC8v
ICdERUxFVEUnIChVKzAwN0YpCi0gICJceEMwIiwgLy8gJ0xBVElOIENBUElUQUwgTEVUVEVSIEEg
V0lUSCBHUkFWRScgKFUrMDBDMCkKLSAgIlx4QzEiLCAvLyAnTEFUSU4gQ0FQSVRBTCBMRVRURVIg
QSBXSVRIIEFDVVRFJyAoVSswMEMxKQotICAiXHhFMCIsIC8vICdMQVRJTiBTTUFMTCBMRVRURVIg
QSBXSVRIIEdSQVZFJyAoVSswMEUwKQotICAiXHhFMSIsIC8vICdMQVRJTiBTTUFMTCBMRVRURVIg
QSBXSVRIIEFDVVRFJyAoVSswMEUxKQotICAiXHhGRiIsIC8vICdMQVRJTiBTTUFMTCBMRVRURVIg
WSBXSVRIIERJQUVSRVNJUycgKFUrMDBGRikKLSAgIlx1MDEwMCIsIC8vICdMQVRJTiBDQVBJVEFM
IExFVFRFUiBBIFdJVEggTUFDUk9OJyAoVSswMTAwKQotICAiXHUxMDAwIiwgLy8gJ01ZQU5NQVIg
TEVUVEVSIEtBJyAoVSsxMDAwKQotICAiXHVEODM0XHVERDFFIiwgLy8gJ01VU0lDQUwgU1lNQk9M
IEctQ0xFRicgKFUrMUQxMUUpLCBVVEYtMTYgc3Vycm9nYXRlIHBhaXJzCi0gICJcdUZGRkQiIC8v
ICdSRVBMQUNFTUVOVCBDSEFSQUNURVInIChVK0ZGRkQpCi1dOwotdmFyIGksIHRtcCwgcGVybXV0
ZWRfb3JkZXIgPSBleHBlY3RlZF9vcmRlci5zbGljZSgpOyBwZXJtdXRlZF9vcmRlci5yZXZlcnNl
KCk7Ci1mb3IgKGkgPSAwOyBpIDwgcGVybXV0ZWRfb3JkZXIubGVuZ3RoIC0gMjsgaSArPSAyKSB7
Ci0gICAgdG1wID0gcGVybXV0ZWRfb3JkZXJbaV07Ci0gICAgcGVybXV0ZWRfb3JkZXJbaV0gPSBw
ZXJtdXRlZF9vcmRlcltpICsgMV07Ci0gICAgcGVybXV0ZWRfb3JkZXJbaSArIDFdID0gdG1wOwot
fQotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAg
IGRlYnVnKCJjaGVjayB0aGF0IHRoZSBleHBlY3RlZCBvcmRlciBpcyB0aGUgY2Fub25pY2FsIEpT
IHNvcnQgb3JkZXI6Iik7Ci0gICAgZXZhbEFuZExvZygic29ydGVkX29yZGVyID0gZXhwZWN0ZWRf
b3JkZXIuc2xpY2UoKTsgc29ydGVkX29yZGVyLnNvcnQoKSIpOwotICAgIHNob3VsZEJlVHJ1ZSgi
YXJlQXJyYXlzRXF1YWwoc29ydGVkX29yZGVyLCBleHBlY3RlZF9vcmRlcikiKTsKLSAgICB0ZXN0
U3RvcmVzQW5kSW5kZXhlcygpOwotfQotCi0KLQotZnVuY3Rpb24gdGVzdFN0b3Jlc0FuZEluZGV4
ZXMoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygidGVzdFN0b3Jlc0FuZEluZGV4ZXMo
KToiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNl
KCdsaXN0LW9yZGVyaW5nJykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpIHsKLSAgICAg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdsaXN0LW9yZGVyaW5nJyki
KTsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0g
ICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgZXZh
bEFuZExvZygiZGIgPSByZXF1ZXN0LnJlc3VsdCIpOwotICAgICAgICAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJkYi52ZXJzaW9uIiwgIiIpOwotICAgICAgICAgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICB0cmFucyA9IHJlcXVlc3QucmVzdWx0
OwotCi0gICAgICAgICAgICAgICAgZGVidWcoIiIpOwotICAgICAgICAgICAgICAgIGRlYnVnKCJP
YmplY3Qgc3RvcmVzOiIpOwotICAgICAgICAgICAgICAgIHBlcm11dGVkX29yZGVyLmZvckVhY2go
ZnVuY3Rpb24gKG5hbWUpIHsKLSAgICAgICAgICAgICAgICAgICAgZXZhbEFuZExvZygiZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoIiArIEpTT04uc3RyaW5naWZ5KG5hbWUpICsiKSIpOwotICAgICAgICAg
ICAgICAgIH0pOwotCi0gICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJhcmVBcnJheXNFcXVh
bChkYi5vYmplY3RTdG9yZU5hbWVzLCBleHBlY3RlZF9vcmRlcikiKTsKLQotICAgICAgICAgICAg
ICAgIGRlYnVnKCIiKTsKLSAgICAgICAgICAgICAgICBkZWJ1ZygiSW5kZXhlczoiKTsKLSAgICAg
ICAgICAgICAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ3N0b3JlJykiKTsKLSAgICAgICAgICAgICAgICBwZXJtdXRlZF9vcmRlci5mb3JFYWNoKGZ1
bmN0aW9uIChuYW1lKSB7Ci0gICAgICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLmNy
ZWF0ZUluZGV4KCIgKyBKU09OLnN0cmluZ2lmeShuYW1lKSArIiwgJ2tleVBhdGgnKSIpOwotICAg
ICAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJhcmVBcnJh
eXNFcXVhbChzdG9yZS5pbmRleE5hbWVzLCBleHBlY3RlZF9vcmRlcikiKTsKLQotICAgICAgICAg
ICAgICAgIHRyYW5zLm9uY29tcGxldGUgPSBmaW5pc2hKU1Rlc3Q7Ci0gICAgICAgICAgICB9Owot
ICAgICAgICB9OwotICAgIH07Ci19Ci0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2xpc3Qtb3JkZXJpbmcuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+
CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL2FkZC10d2ljZS1mYWlsdXJlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL2FkZC10d2ljZS1mYWlsdXJlLmh0bWwKaW5kZXggY2RkMjEyYmMzMWI1ZWM0ZTNk
NDZmYTMzOWI3OGU4Y2EyNzA5YWRhNy4uY2MzOTEzZGFmYjJiOGQ1OTFhMDUyYjhmNTc0ODAzYWY5
ZTEwNTUyOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9hZGQtdHdpY2UtZmFpbHVyZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvYWRkLXR3aWNlLWZhaWx1cmUuaHRtbApAQCAtMSw3MCArMSwxMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5v
cmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfYWRkX3R3aWNlX2Zh
aWx1cmUuaHRtbAotICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Ci0gICAgIiBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KLSAgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgotLS0+CiA8aHRtbD4KIDxo
ZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Nj
cmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5k
ZXhlZERCIGJlaGF2aW9yIGFkZGluZyB0aGUgc2FtZSBwcm9wZXJ0eSB0d2ljZSIpOwotCi1mdW5j
dGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9
IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRh
YmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRl
c2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9u
IG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRW
ZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0
aW9uIGNsZWFuRGF0YWJhc2UoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0K
LSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ2ZvbycpOyIpOwotICAgIGtleSA9IGV2YWxBbmRMb2coImtleSA9IDEwIik7Ci0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoe30sIGtl
eSk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRGaXJzdFN1Y2Nlc3M7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGFk
ZEZpcnN0U3VjY2VzcygpCi17Ci0gICAgc2hvdWxkQmUoInJlcXVlc3QucmVzdWx0IiwgImtleSIp
OwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKHt9
LCBrZXkpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxs
YmFjazsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSBhZGRTZWNvbmRFeHBlY3RlZEVycm9yOwotfQot
Ci1mdW5jdGlvbiBhZGRTZWNvbmRFeHBlY3RlZEVycm9yKCkKLXsKLSAgICBzaG91bGRCZSgiZXZl
bnQudGFyZ2V0LmVycm9yQ29kZSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5DT05TVFJBSU5UX0VS
UiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2FkZC10d2ljZS1mYWlsdXJlLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL2F1dG9pbmNyZW1lbnQtaW5kZXhlcy5odG1sIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9hdXRvaW5jcmVtZW50LWluZGV4ZXMuaHRt
bAppbmRleCAwOWZmZWZhZGZjZmNjZjdhMWQ2NTg3NjFkODViNTgzOWU4MWJmMTcwLi5kNzI5ZGU4
N2NmODg5MmZmOTdhMTVmZDIwYTVkYTYzOWJkYzMzZTQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2F1dG9pbmNyZW1lbnQtaW5kZXhlcy5odG1sCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvYXV0b2luY3JlbWVudC1p
bmRleGVzLmh0bWwKQEAgLTEsMTAwICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KLTwhLS0KLSAg
b3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9k
b20vaW5kZXhlZERCL3Rlc3QvdGVzdF9hdXRvSW5jcmVtZW50X2luZGV4ZXMuaHRtbD9mb3JjZT0x
Ci0gIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgotICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+CiA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9o
ZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgaW5k
ZXhlcyBhZ2FpbnN0IGF1dG9pbmNyZW1lbnRpbmcga2V5cyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkK
LXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRp
b24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIp
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNz
KCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwot
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJyki
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldHVwT2JqZWN0U3RvcmU7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldHVw
T2JqZWN0U3RvcmUoKQotewotICAgIHRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKLSAgICBk
ZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7IGtleVBhdGg6ICdp
ZCcsIGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7Ci0gICAgZXZhbEFuZExvZygib2JqZWN0U3Rv
cmUuY3JlYXRlSW5kZXgoJ2ZpcnN0JywgJ2ZpcnN0Jyk7Iik7Ci0gICAgZXZhbEFuZExvZygib2Jq
ZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ3NlY29uZCcsICdzZWNvbmQnKTsiKTsKLSAgICBldmFsQW5k
TG9nKCJvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgndGhpcmQnLCAndGhpcmQnKTsiKTsKLSAgICBk
YXRhID0gZXZhbEFuZExvZygiZGF0YSA9IHsgZmlyc3Q6ICdmb28nLCBzZWNvbmQ6ICdmb28nLCB0
aGlyZDogJ2ZvbycgfTsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9i
amVjdFN0b3JlLmFkZChkYXRhKTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldHVwSW5k
ZXhlczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0K
LQotZnVuY3Rpb24gc2V0dXBJbmRleGVzKCkKLXsKLSAgICBrZXkgPSBldmFsQW5kTG9nKCJrZXkg
PSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgIHNob3VsZEJlRmFsc2UoImtleSA9PSBudWxs
Iik7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IHNldFZlcnNpb25Db21wbGV0ZTsKLX0KLQotZnVu
Y3Rpb24gc2V0VmVyc2lvbkNvbXBsZXRlKCkKLXsKLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRM
b2coIm9iamVjdFN0b3JlID0gZGIudHJhbnNhY3Rpb24oJ2ZvbycpLm9iamVjdFN0b3JlKCdmb28n
KTsiKTsKLSAgICBmaXJzdCA9IGV2YWxBbmRMb2coImZpcnN0ID0gb2JqZWN0U3RvcmUuaW5kZXgo
J2ZpcnN0Jyk7Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBmaXJzdC5n
ZXQoJ2ZvbycpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2hlY2tGaXJzdEluZGV4QW5k
UHJlcGFyZVNlY29uZDsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLX0KLQotZnVuY3Rpb24gY2hlY2tGaXJzdEluZGV4QW5kUHJlcGFyZVNlY29uZCgpCi17
Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQuaWQiLCAia2V5Iik7Ci0gICAgc2Vj
b25kID0gZXZhbEFuZExvZygic2Vjb25kID0gb2JqZWN0U3RvcmUuaW5kZXgoJ3NlY29uZCcpOyIp
OwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gc2Vjb25kLmdldCgnZm9vJyk7
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjaGVja1NlY29uZEluZGV4QW5kUHJlcGFyZVRo
aXJkOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQot
Ci1mdW5jdGlvbiBjaGVja1NlY29uZEluZGV4QW5kUHJlcGFyZVRoaXJkKCkKLXsKLSAgICBzaG91
bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5pZCIsICJrZXkiKTsKLSAgICB0aGlyZCA9IGV2YWxB
bmRMb2coInRoaXJkID0gb2JqZWN0U3RvcmUuaW5kZXgoJ3RoaXJkJyk7Iik7Ci0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSB0aGlyZC5nZXQoJ2ZvbycpOyIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gY2hlY2tUaGlyZEluZGV4OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjaGVja1RoaXJkSW5kZXgoKQot
ewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LmlkIiwgImtleSIpOwotICAgIGZp
bmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL2F1dG9pbmNyZW1lbnQtaW5kZXhlcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
IDwvYm9keT4KIDwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9iYWQta2V5cGF0aC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9iYWQta2V5cGF0aC5odG1sCmluZGV4IDExZWUwNmQ0MWNlYjZiY2M4ZWZi
NjdmZmUwMjY4NTkxZWZkN2NhZjYuLjBhZTQ5MjEwOTBlM2RlZDViN2FiODgxMzUyMDNlZTE4Y2Ix
YzM5NjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEv
YmFkLWtleXBhdGguaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL2JhZC1rZXlwYXRoLmh0bWwKQEAgLTEsNjEgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PCEtLQotICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAv
c291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2JhZF9rZXlwYXRoLmh0bWwKLSAgbGljZW5z
ZSBvZiBvcmlnaW5hbCB0ZXN0OgotICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCi0gICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvICIKLS0tPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9k
eT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBhZGRpbmcgcHJvcGVy
dHkgd2l0aCBpbnZhbGlkIGtleXBhdGgiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVt
b3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1l
OwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAg
ZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKLXsK
LSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFs
QW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7IGtleVBh
dGg6ICdrZXlQYXRoJyB9KTsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IG9iamVjdFN0b3JlLmFkZCh7IGtleVBhdGg6ICdmb28nIH0pOyIpOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gYWRkRmlyc3RTdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBhZGRGaXJzdFN1Y2Nlc3MoKQotewotICAg
IGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoe30pOyIs
ICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwot
fQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JhZC1r
ZXlwYXRoLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgotCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NsZWFyLmh0bWwg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NsZWFyLmh0bWwKaW5kZXgg
Mjc5MzI4NTRmZTYyODkwMzU0Y2VlMGQ1Yjg0ZDk4ZjliY2YzYjcwNC4uNjBkOTNjZDA0YjY2Nzg3
NDQyMzhhZWJmYjdmNDUzOWI5NDFmNmQyNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9jbGVhci5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvY2xlYXIuaHRtbApAQCAtMSw3MSArMSwxMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96
aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfY2xlYXIuaHRtbAotICBsaWNl
bnNlIG9mIG9yaWdpbmFsIHRlc3Q6Ci0gICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KLSAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgotLS0+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxi
b2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgY2xlYXJpbmcg
YW4gb2JqZWN0IHN0b3JlIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRv
clByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBk
ZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZh
bEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCi17Ci0gICAgZGVs
ZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygi
b2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJywgeyBhdXRvSW5jcmVtZW50
OiB0cnVlIH0pOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0
U3RvcmUuYWRkKHt9KTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLSAgICBldmVudC50YXJnZXQucmVzdWx0Lm9uY29tcGxldGUgPSBjbGVhcjsKLX0K
LQotZnVuY3Rpb24gY2xlYXIoKQotewotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRy
YW5zYWN0aW9uKCdmb28nKS5vYmplY3RTdG9yZSgnZm9vJykuY2xlYXIoKTsiLCAiSURCRGF0YWJh
c2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUiIpOwotICAgIGV2YWxBbmRMb2coImRiLnRyYW5zYWN0
aW9uKCdmb28nLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKS5vYmplY3RTdG9yZSgnZm9vJyku
Y2xlYXIoKTsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnRyYW5z
YWN0aW9uKCdmb28nKS5vYmplY3RTdG9yZSgnZm9vJykub3BlbkN1cnNvcigpOyIpOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gYXJlV2VDbGVhcllldDsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYXJlV2VDbGVhcllldCgpCi17
Ci0gICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gcmVxdWVzdC5yZXN1bHQ7Iik7Ci0g
ICAgc2hvdWxkQmUoImN1cnNvciIsICJudWxsIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0K
LQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY2xlYXIuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3JlYXRlLWluZGV4LXVuaXF1ZS5o
dG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtaW5kZXgt
dW5pcXVlLmh0bWwKaW5kZXggMGU2NDExM2RiNWFkYzRmZmZjNDNiNDRkNjFjNTQ0NmMwZTljYWNh
MS4uYzE5YTJmNTVlMzMzNWQzMzI5MDYxMTI2ZGY4ZGE4NmYzMWVmYjk2ZCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtaW5kZXgtdW5pcXVl
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUt
aW5kZXgtdW5pcXVlLmh0bWwKQEAgLTEsNzIgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEt
LQotICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291
cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2NyZWF0ZV9pbmRleC5odG1sCi0gIGxpY2Vuc2Ug
b2Ygb3JpZ2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgotICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+
Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBjcmVhdGluZyB1bmlx
dWUgaW5kZXggYW5kIHVwZGF0aW5nIGluZGV4TmFtZXMiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17
Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9u
LnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2Vzcygp
Ci17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRWZXJpZnlJbmRleDsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY3Jl
YXRlQW5kVmVyaWZ5SW5kZXgoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0K
LSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ2EnLCB7IGtleVBhdGg6ICdpZCcsIGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7
Ci0KLSAgICBpbmRleE5hbWUgPSAiMSI7Ci0gICAgaW5kZXhLZXlQYXRoID0gInVuaXF1ZV92YWx1
ZSI7Ci0gICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUlu
ZGV4KGluZGV4TmFtZSwgaW5kZXhLZXlQYXRoLCB7IHVuaXF1ZTogdHJ1ZSB9KTsiLCAiSURCRGF0
YWJhc2VFeGNlcHRpb24uQ09OU1RSQUlOVF9FUlIiKTsKLSAgICBzaG91bGRCZSgiaW5kZXgubmFt
ZSIsICJpbmRleE5hbWUiKTsKLSAgICBzaG91bGRCZSgiaW5kZXgua2V5UGF0aCIsICJpbmRleEtl
eVBhdGgiKTsKLSAgICBzaG91bGRCZSgiaW5kZXgudW5pcXVlIiwgInRydWUiKTsKLSAgICBzaG91
bGRCZSgib2JqZWN0U3RvcmUuaW5kZXhOYW1lcy5sZW5ndGgiLCAiMSIpOwotCi0gICAgZm91bmRO
ZXdseUNyZWF0ZWRJbmRleCA9IGZhbHNlOwotICAgIGZvciAodmFyIGsgPSAwOyBrIDwgb2JqZWN0
U3RvcmUuaW5kZXhOYW1lcy5sZW5ndGg7IGsrKykgewotICAgICAgICBpZiAob2JqZWN0U3RvcmUu
aW5kZXhOYW1lcy5pdGVtKGspID09IGluZGV4TmFtZSkgewotICAgICAgICAgICAgZm91bmROZXds
eUNyZWF0ZWRJbmRleCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgc2hvdWxkQmVUcnVl
KCJmb3VuZE5ld2x5Q3JlYXRlZEluZGV4Iik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50
cmFuc2FjdGlvbi5kYiIsICJkYiIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQudHJhbnNh
Y3Rpb24ucmVhZHlTdGF0ZSIsICJJREJUcmFuc2FjdGlvbi5MT0FESU5HIik7Ci0gICAgc2hvdWxk
QmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2RlIiwgIklEQlRyYW5zYWN0aW9uLlZFUlNJ
T05fQ0hBTkdFIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY3JlYXRlLWluZGV4LXVuaXF1ZS5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtaW5kZXgtd2l0aC1pbnRlZ2Vy
LWtleXMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3JlYXRl
LWluZGV4LXdpdGgtaW50ZWdlci1rZXlzLmh0bWwKaW5kZXggYmRkOGNiYWI2YTg2NDA5YzA3NDNi
MmUxNjcyZTRmODZkMmM5NGEzNS4uNzcxYjNkOGVjMWM1ZDFkNTQ4YzY5ODYyYjdiMTE3ZjUxYjhi
NWU4NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9j
cmVhdGUtaW5kZXgtd2l0aC1pbnRlZ2VyLWtleXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1pbmRleC13aXRoLWludGVnZXIta2V5cy5odG1s
CkBAIC0xLDY3ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KLTwhLS0KLSAgb3JpZ2luYWwgdGVz
dDogaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERC
L3Rlc3QvdGVzdF9jcmVhdGVfaW5kZXhfd2l0aF9pbnRlZ2VyX2tleXMuaHRtbD9mb3JjZT0xCi0g
IGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgotICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFk
PgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBjcmVh
dGluZyBpbmRleCB3aXRoIGludGVnZXIga2V5cyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAg
ICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0
aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsK
LSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldHVwT2JqZWN0U3RvcmVBbmRDcmVhdGVJbmRleDsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rp
b24gc2V0dXBPYmplY3RTdG9yZUFuZENyZWF0ZUluZGV4KCkKLXsKLSAgICBkZWxldGVBbGxPYmpl
Y3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9y
ZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7IGtleVBhdGg6ICdpZCcgfSk7Iik7Ci0g
ICAgZGF0YSA9IGV2YWxBbmRMb2coImRhdGEgPSB7IGlkOiAxNiwgbnVtOiA0MiB9OyIpOwotICAg
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZChkYXRhKTsiKTsKLSAgICBpbmRleCA9IGV2YWxB
bmRMb2coImluZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ2ZvbycsICdudW0nKTsiKTsK
LSAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJyZXN1bHQgPSBpbmRleC5vcGVuS2V5Q3Vyc29yKCk7
Iik7Ci0gICAgcmVzdWx0Lm9uc3VjY2VzcyA9IHZlcmlmeUtleUN1cnNvcjsKLSAgICByZXN1bHQu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiB2ZXJpZnlL
ZXlDdXJzb3IoKQotewotICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRh
cmdldC5yZXN1bHQ7Iik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiY3Vyc29yID09IG51bGwiKTsKLSAg
ICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJkYXRhLm51bSIpOwotICAgIHNob3VsZEJlKCJjdXJz
b3IucHJpbWFyeUtleSIsICJkYXRhLmlkIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQot
dGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY3JlYXRlLWluZGV4
LXdpdGgtaW50ZWdlci1rZXlzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9o
dG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L2NyZWF0ZS1vYmplY3RzdG9yZS1iYXNpY3MuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL21vemlsbGEvY3JlYXRlLW9iamVjdHN0b3JlLWJhc2ljcy5odG1sCmluZGV4IDAwYjg0
NDMzYmYyZDczYmZhOTRlZTQ5NmZiOGFmMTc2MzFhMmZkZmQuLmYzZDE0MTEzODgzZTMyOWE2MjNl
Mjg2ZGQ5YzViYzE0ZDJjMGIyMjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL21vemlsbGEvY3JlYXRlLW9iamVjdHN0b3JlLWJhc2ljcy5odG1sCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3JlYXRlLW9iamVjdHN0b3JlLWJhc2lj
cy5odG1sCkBAIC0xLDc3ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KLTwhLS0KLSAgb3JpZ2lu
YWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5k
ZXhlZERCL3Rlc3QvdGVzdF9jcmVhdGVfb2JqZWN0U3RvcmUuaHRtbAotICBsaWNlbnNlIG9mIG9y
aWdpbmFsIHRlc3Q6Ci0gICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KLSAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8gIgotLS0+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNj
cmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgY3JlYXRpbmcgb2JqZWN0IHN0
b3JlIGFuZCB1cGRhdGluZyBwcm9wZXJ0aWVzIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAg
IHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRo
bmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewot
ICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgp
Ci17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9iamVjdFN0b3JlSW5m
byA9IFsKLSAgICAgICAgeyBuYW1lOiAiMSIsIG9wdGlvbnM6IHsgYXV0b0luY3JlbWVudDogdHJ1
ZSB9IH0sCi0gICAgICAgIHsgbmFtZTogIjIiLCBvcHRpb25zOiB7IGF1dG9JbmNyZW1lbnQ6IGZh
bHNlIH0gfSwKLSAgICAgICAgeyBuYW1lOiAiMyIsIG9wdGlvbnM6IHsga2V5UGF0aDogIiIgfSB9
LAotICAgICAgICB7IG5hbWU6ICI0Iiwgb3B0aW9uczogeyBrZXlQYXRoOiAiIiwgYXV0b0luY3Jl
bWVudDogdHJ1ZSB9IH0sCi0gICAgICAgIHsgbmFtZTogIjUiLCBvcHRpb25zOiB7IGtleVBhdGg6
ICIiLCBhdXRvSW5jcmVtZW50OiBmYWxzZSB9IH0sCi0gICAgICAgIHsgbmFtZTogIjYiLCBvcHRp
b25zOiB7IGtleVBhdGg6ICJmb28iIH0gfSwKLSAgICAgICAgeyBuYW1lOiAiNyIsIG9wdGlvbnM6
IHsga2V5UGF0aDogImZvbyIsIGF1dG9JbmNyZW1lbnQ6IGZhbHNlIH0gfSwKLSAgICAgICAgeyBu
YW1lOiAiOCIsIG9wdGlvbnM6IHsga2V5UGF0aDogImZvbyIsIGF1dG9JbmNyZW1lbnQ6IHRydWUg
fSB9Ci0gICAgXTsKLQotICAgIGZvciAodmFyIGluZGV4IGluIG9iamVjdFN0b3JlSW5mbykgewot
ICAgICAgICBpbmRleCA9IHBhcnNlSW50KGluZGV4KTsKLSAgICAgICAgaW5mbyA9IG9iamVjdFN0
b3JlSW5mb1tpbmRleF07Ci0gICAgICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0
U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShpbmZvLm5hbWUsIGluZm8ub3B0aW9ucyk7Iik7
Ci0gICAgICAgIHNob3VsZEJlKCJvYmplY3RTdG9yZS5uYW1lIiwgImluZm8ubmFtZSIpOwotICAg
ICAgICBpZiAoaW5mby5vcHRpb25zICYmIGluZm8ub3B0aW9ucy5rZXlQYXRoKSB7Ci0gICAgICAg
ICAgICBzaG91bGRCZSgib2JqZWN0U3RvcmUua2V5UGF0aCIsICJpbmZvLm9wdGlvbnMua2V5UGF0
aCIpOwotICAgICAgICB9Ci0gICAgICAgIHNob3VsZEJlKCJvYmplY3RTdG9yZS5pbmRleE5hbWVz
Lmxlbmd0aCIsICIwIik7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQudHJhbnNhY3Rp
b24uZGIiLCAiZGIiKTsKLSAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlv
bi5yZWFkeVN0YXRlIiwgIklEQlRyYW5zYWN0aW9uLkxPQURJTkciKTsKLSAgICAgICAgc2hvdWxk
QmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2RlIiwgIklEQlRyYW5zYWN0aW9uLlZFUlNJ
T05fQ0hBTkdFIik7Ci0gICAgfQotCi0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgp
OwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY3JlYXRlLW9iamVjdHN0b3Jl
LWJhc2ljcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KLQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtb2Jq
ZWN0c3RvcmUtbnVsbC1uYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL2NyZWF0ZS1vYmplY3RzdG9yZS1udWxsLW5hbWUuaHRtbAppbmRleCA0MzM2Y2JiZjFl
NDExNDc5N2E0Y2Q4Y2RiNzNjOWYzZjE3NjNkYjEwLi45YWZhYzcwNjdiZjA2NTAzYmFkODIxOWE5
MjkxMmNkMWYxYThiNjI5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL2NyZWF0ZS1vYmplY3RzdG9yZS1udWxsLW5hbWUuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1vYmplY3RzdG9yZS1udWxsLW5h
bWUuaHRtbApAQCAtMSw1NSArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9yaWdp
bmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2lu
ZGV4ZWREQi90ZXN0L3Rlc3RfY3JlYXRlX29iamVjdFN0b3JlLmh0bWwKLSAgbGljZW5zZSBvZiBv
cmlnaW5hbCB0ZXN0OgotICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCi0gICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvICIKLS0tPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxz
Y3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGNyZWF0aW5nIG9iamVjdCBz
dG9yZSB3aXRoIG51bGwgbmFtZSIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVW
ZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0g
ICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9
IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQotewotICAg
IGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRM
b2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUobnVsbCk7Iik7Ci0gICAgc2hv
dWxkQmUoIm9iamVjdFN0b3JlLm5hbWUiLCAiJ251bGwnIik7Ci0KLSAgICBmaW5pc2hKU1Rlc3Qo
KTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9j
cmVhdGUtb2JqZWN0c3RvcmUtbnVsbC1uYW1lLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9i
b2R5PgogPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL2N1cnNvci1tdXRhdGlvbi1vYmplY3RzdG9yZS1vbmx5Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2N1cnNvci1tdXRhdGlvbi1vYmplY3RzdG9y
ZS1vbmx5Lmh0bWwKaW5kZXggZGU4ZDEzY2JhZjMzYmQxNDhhOGU0NmZjN2M5NjJjZGYxYWY5NDAw
OC4uZWI0ZDBlYzZjZDFhNTk5NjdhNWRiOTNkZTQ0MTk3YzZjZGNhYWQ1OSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jdXJzb3ItbXV0YXRpb24tb2Jq
ZWN0c3RvcmUtb25seS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
emlsbGEvY3Vyc29yLW11dGF0aW9uLW9iamVjdHN0b3JlLW9ubHkuaHRtbApAQCAtMSwxNTEgKzEs
MTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLQotICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhy
Lm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2N1
cnNvcl9tdXRhdGlvbi5odG1sP2ZvcmNlPTEKLSAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0Ogot
ICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCi0g
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIK
LS0tPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2Ny
aXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGN1cnNvciBtdXRhdGlvbiBkdXJpbmcgb2JqZWN0IHN0
b3JlIGN1cnNvciBpdGVyYXRpb24iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3Zl
VmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwot
ICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGVi
dWcoIm9wZW5TdWNjZXNzKCk6Iik7Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIu
c2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXR1cE9iamVjdFN0
b3JlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQot
Ci1mdW5jdGlvbiBzZXR1cE9iamVjdFN0b3JlKCkKLXsKLSAgICBkZWJ1Zygic2V0dXBPYmplY3RT
dG9yZSgpOiIpOwotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBvYmplY3RT
dG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2Zv
bycsIHsga2V5UGF0aDogJ3NzJyB9KTsiKTsKLSAgICBvYmplY3RTdG9yZURhdGEgPSBldmFsQW5k
TG9nKCJvYmplY3RTdG9yZURhdGEgPSBbXG4iICsgCi0iICAgICAgICB7IHNzOiAnMjM3LTIzLTc3
MzInLCBuYW1lOiAnQm9iJyB9LFxuIiArIAotCi0iICAgICAgICB7IHNzOiAnMjM3LTIzLTc3MzMn
LCBuYW1lOiAnQW5uJyB9LFxuIiArCi0iICAgICAgICB7IHNzOiAnMjM3LTIzLTc3MzQnLCBuYW1l
OiAnUm9uJyB9LFxuIiArCi0iICAgICAgICB7IHNzOiAnMjM3LTIzLTc3MzUnLCBuYW1lOiAnU3Vl
JyB9LFxuIiArCi0iICAgICAgICB7IHNzOiAnMjM3LTIzLTc3MzYnLCBuYW1lOiAnSm9lJyB9LFxu
IiArCi0KLSIgICAgICAgIHsgc3M6ICcyMzctMjMtNzczNycsIG5hbWU6ICdQYXQnIH1cbiIgKwot
IiAgICBdOyIpOwotCi0gICAgZm9yIChpID0gMDsgaSA8IG9iamVjdFN0b3JlRGF0YS5sZW5ndGgg
LSAxOyBpKyspIHsKLSAgICAgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0
b3JlRGF0YVtpXSk7Iik7Ci0gICAgfQotCi0gICAgY291bnQgPSBldmFsQW5kTG9nKCJjb3VudCA9
IDA7Iik7Ci0gICAgc2F3QWRkZWQgPSBldmFsQW5kTG9nKCJzYXdBZGRlZCA9IGZhbHNlOyIpOwot
ICAgIHNhd1JlbW92ZWQgPSBldmFsQW5kTG9nKCJzYXdSZW1vdmVkID0gZmFsc2U7Iik7Ci0KLSAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3Io
KTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGl0ZXJhdGVDdXJzb3I7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGl0ZXJh
dGVDdXJzb3IoKQotewotICAgIGRlYnVnKCJpdGVyYXRlQ3Vyc29yKCk6Iik7Ci0gICAgZXZhbEFu
ZExvZygiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBjaGVja0N1cnNvclJl
c3VsdHNBbmRTZXR1cE11dGF0aW5nQ3Vyc29yOyIpOwotICAgIGN1cnNvciA9IGV2YWxBbmRMb2co
ImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgaWYgKGN1cnNvcikgewotICAg
ICAgICBpZiAoY3Vyc29yLnZhbHVlLm5hbWUgPT0gb2JqZWN0U3RvcmVEYXRhWzBdLm5hbWUpIHsK
LSAgICAgICAgICAgIHNhd1JlbW92ZWQgPSBldmFsQW5kTG9nKCJzYXdSZW1vdmVkID0gdHJ1ZTsi
KTsKLSAgICAgICAgfQotICAgICAgICBpZiAoY3Vyc29yLnZhbHVlLm5hbWUgPT0gb2JqZWN0U3Rv
cmVEYXRhW29iamVjdFN0b3JlRGF0YS5sZW5ndGggLSAxXS5uYW1lKSB7Ci0gICAgICAgICAgICBz
YXdBZGRlZCA9IGV2YWxBbmRMb2coInNhd0FkZGVkID0gdHJ1ZTsiKTsKLSAgICAgICAgfQotICAg
ICAgICBldmFsQW5kTG9nKCJjb3VudCsrOyIpOwotICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3Iu
Y29udGludWUoKTsiKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGNoZWNrQ3Vyc29yUmVzdWx0c0Fu
ZFNldHVwTXV0YXRpbmdDdXJzb3IoKQotewotICAgIGRlYnVnKCJjaGVja0N1cnNvclJlc3VsdHNB
bmRTZXR1cE11dGF0aW5nQ3Vyc29yKCk6Iik7Ci0gICAgc2hvdWxkQmUoImNvdW50IiwgIm9iamVj
dFN0b3JlRGF0YS5sZW5ndGggLSAxIik7Ci0gICAgc2hvdWxkQmUoInNhd0FkZGVkIiwgImZhbHNl
Iik7Ci0gICAgc2hvdWxkQmUoInNhd1JlbW92ZWQiLCAidHJ1ZSIpOwotCi0gICAgY291bnQgPSBl
dmFsQW5kTG9nKCJjb3VudCA9IDA7Iik7Ci0gICAgc2F3QWRkZWQgPSBldmFsQW5kTG9nKCJzYXdB
ZGRlZCA9IGZhbHNlOyIpOwotICAgIHNhd1JlbW92ZWQgPSBldmFsQW5kTG9nKCJzYXdSZW1vdmVk
ID0gZmFsc2U7Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnRy
YW5zYWN0aW9uKCdmb28nLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKS5vYmplY3RTdG9yZSgn
Zm9vJykub3BlbkN1cnNvcigpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gaXRlcmF0ZU11
dGF0aW5nQ3Vyc29yOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotfQotCi1mdW5jdGlvbiBpdGVyYXRlTXV0YXRpbmdDdXJzb3IoKQotewotICAgIGRlYnVn
KCJpdGVyYXRlTXV0YXRpbmdDdXJzb3IoKToiKTsKLSAgICBldmFsQW5kTG9nKCJldmVudC50YXJn
ZXQudHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGNoZWNrTXV0YXRpbmdDdXJzb3JSZXN1bHRzOyIp
OwotICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7
Iik7Ci0gICAgaWYgKGN1cnNvcikgewotICAgICAgICBpZiAoY3Vyc29yLnZhbHVlLm5hbWUgPT0g
b2JqZWN0U3RvcmVEYXRhWzBdLm5hbWUpIHsKLSAgICAgICAgICAgIHNhd1JlbW92ZWQgPSBldmFs
QW5kTG9nKCJzYXdSZW1vdmVkID0gdHJ1ZTsiKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoY3Vy
c29yLnZhbHVlLm5hbWUgPT0gb2JqZWN0U3RvcmVEYXRhW29iamVjdFN0b3JlRGF0YS5sZW5ndGgg
LSAxXS5uYW1lKSB7Ci0gICAgICAgICAgICBzYXdBZGRlZCA9IGV2YWxBbmRMb2coInNhd0FkZGVk
ID0gdHJ1ZTsiKTsKLSAgICAgICAgfQotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLm5h
bWUiLCAiJyIgKyBvYmplY3RTdG9yZURhdGFbY291bnRdLm5hbWUgKyAiJyIpOwotICAgICAgICBl
dmFsQW5kTG9nKCJjb3VudCsrIik7Ci0KLSAgICAgICAgaWYgKGNvdW50ID09IDEpIHsKLSAgICAg
ICAgICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBldmVudC50YXJn
ZXQudHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ2ZvbycpOyIpOwotICAgICAgICAgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5kZWxldGUob2JqZWN0U3RvcmVE
YXRhWzBdLnNzKTsiKTsKLSAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkRmluYWxE
YXRhOwotICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjdXJzb3IuY29udGludWUoKTsKLSAg
ICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24gYWRkRmluYWxEYXRhKCkKLXsKLSAgICBkZWJ1
ZygiYWRkRmluYWxEYXRhKCk6Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW29iamVjdFN0b3JlRGF0YS5sZW5ndGgg
LSAxXSk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7IGN1cnNvci5j
b250aW51ZSgpOyB9Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIGNoZWNrTXV0YXRpbmdDdXJzb3JSZXN1bHRzKCkKLXsKLSAgICBk
ZWJ1ZygiY2hlY2tNdXRhdGluZ0N1cnNvclJlc3VsdHMoKToiKTsKLSAgICBzaG91bGRCZSgiY291
bnQiLCAib2JqZWN0U3RvcmVEYXRhLmxlbmd0aCIpOwotICAgIHNob3VsZEJlKCJzYXdBZGRlZCIs
ICJ0cnVlIik7Ci0gICAgc2hvdWxkQmUoInNhd1JlbW92ZWQiLCAidHJ1ZSIpOwotICAgIGZpbmlz
aEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2N1cnNvci1tdXRhdGlvbi1vYmplY3RzdG9yZS1vbmx5LmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9jdXJzb3ItbXV0YXRpb24uaHRtbCBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3Vyc29yLW11dGF0aW9uLmh0bWwKaW5kZXggMGJkNTRl
Y2Y0NGM0YTAyZDFhMWY3NzZjYTRiMmFmNzZkY2IzNjBiMi4uYzgwMTkzYjdkNDA5ZDkxZWJhNDhi
NjgxMTRjMTVlY2I1NzA1ZGEwNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9jdXJzb3ItbXV0YXRpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL2N1cnNvci1tdXRhdGlvbi5odG1sCkBAIC0xLDE5MSArMSwx
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIu
bW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfY3Vy
c29yX211dGF0aW9uLmh0bWw/Zm9yY2U9MQotICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Ci0g
ICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KLSAg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgot
LS0+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
c2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3Jp
cHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgY3Vyc29yIG11dGF0aW9uIik7Ci0KLWZ1bmN0aW9uIHRl
c3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBkZWJ1ZygiIik7Ci0g
ICAgbmFtZSA9ICdjdXJzb3ItbXV0YXRpb24nOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIuZGVsZXRlRGF0YWJhc2UobmFtZSkiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
ICgpIHsKLSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUp
Iik7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
ICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIGV2
YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgICAgICAgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgICAgICAgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgICAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IHNldHVwT2JqZWN0U3RvcmVBbmRDcmVhdGVJbmRleDsgICAgICAgICAgCi0g
ICAgICAgIH07Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24gc2V0dXBPYmplY3RTdG9yZUFuZENyZWF0
ZUluZGV4KCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInNldHVwT2JqZWN0U3RvcmVB
bmRDcmVhdGVJbmRleCgpOiIpOwotCi0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IHJl
cXVlc3QucmVzdWx0Iik7Ci0KLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0
b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycsIHsga2V5UGF0aDogJ3NzJyB9KSIpOwot
ICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgn
bmFtZScsICduYW1lJywgeyB1bmlxdWU6IHRydWUgfSkiKTsKLSAgICBvYmplY3RTdG9yZURhdGEg
PSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZURhdGEgPSBbXG4iICsgCi0gICAgICAgICAvLyBUbyBi
ZSByZW1vdmVkLgotIiAgICAgICAgeyBzczogJzIzNy0yMy03NzMyJywgbmFtZTogJ0JvYicgfSxc
biIgKyAKLQotICAgICAgICAgLy8gQWx3YXlzIHByZXNlbnQuCi0iICAgICAgICB7IHNzOiAnMjM3
LTIzLTc3MzMnLCBuYW1lOiAnQW5uJyB9LFxuIiArCi0iICAgICAgICB7IHNzOiAnMjM3LTIzLTc3
MzQnLCBuYW1lOiAnUm9uJyB9LFxuIiArCi0iICAgICAgICB7IHNzOiAnMjM3LTIzLTc3MzUnLCBu
YW1lOiAnU3VlJyB9LFxuIiArCi0iICAgICAgICB7IHNzOiAnMjM3LTIzLTc3MzYnLCBuYW1lOiAn
Sm9lJyB9LFxuIiArCi0KLSAgICAgICAgIC8vIFRvIGJlIGFkZGVkLgotIiAgICAgICAgeyBzczog
JzIzNy0yMy03NzM3JywgbmFtZTogJ1BhdCcgfVxuIiArCi0iICAgIF0iKTsKLQotICAgIGZvciAo
aSA9IDA7IGkgPCBvYmplY3RTdG9yZURhdGEubGVuZ3RoIC0gMTsgaSsrKSB7Ci0gICAgICAgIGV2
YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbIiArIGkgKyAiXSkiKTsK
LSAgICB9Ci0KLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gY2hlY2tDdXJzb3JS
ZXN1bHRzIik7Ci0gICAgc2V0dXBDdXJzb3IoKTsKLX0KLQotZnVuY3Rpb24gc2V0dXBDdXJzb3Io
KQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1Zygic2V0dXBDdXJzb3IoKToiKTsKLQotICAg
IGNvdW50ID0gZXZhbEFuZExvZygiY291bnQgPSAwIik7Ci0gICAgc2F3QWRkZWQgPSBldmFsQW5k
TG9nKCJzYXdBZGRlZCA9IGZhbHNlIik7Ci0gICAgc2F3UmVtb3ZlZCA9IGV2YWxBbmRMb2coInNh
d1JlbW92ZWQgPSBmYWxzZSIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCkiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGl0ZXJhdGVDdXJz
b3I7Ci19Ci0KLWZ1bmN0aW9uIGl0ZXJhdGVDdXJzb3IoKQotewotICAgIGRlYnVnKCIiKTsKLSAg
ICBkZWJ1ZygiaXRlcmF0ZUN1cnNvcigpOiIpOwotICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1
cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBpZiAoY3Vyc29yKSB7Ci0gICAgICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiY3Vyc29yLnZhbHVlLm5hbWUiLCBvYmplY3RTdG9yZURh
dGFbY291bnRdLm5hbWUpOwotICAgICAgICBpZiAoY3Vyc29yLnZhbHVlLm5hbWUgPT0gb2JqZWN0
U3RvcmVEYXRhWzBdLm5hbWUpIHsKLSAgICAgICAgICAgIHNhd1JlbW92ZWQgPSBldmFsQW5kTG9n
KCJzYXdSZW1vdmVkID0gdHJ1ZSIpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChjdXJzb3IudmFs
dWUubmFtZSA9PSBvYmplY3RTdG9yZURhdGFbb2JqZWN0U3RvcmVEYXRhLmxlbmd0aCAtIDFdLm5h
bWUpIHsKLSAgICAgICAgICAgIHNhd0FkZGVkID0gZXZhbEFuZExvZygic2F3QWRkZWQgPSB0cnVl
Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZXZhbEFuZExvZygiY291bnQrKyIpOwotICAgICAgICBl
dmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKSIpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gY2hl
Y2tDdXJzb3JSZXN1bHRzKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoImNoZWNrQ3Vy
c29yUmVzdWx0cygpOiIpOwotICAgIHNob3VsZEJlKCJjb3VudCIsICJvYmplY3RTdG9yZURhdGEu
bGVuZ3RoIC0gMSIpOwotICAgIHNob3VsZEJlKCJzYXdBZGRlZCIsICJmYWxzZSIpOwotICAgIHNo
b3VsZEJlKCJzYXdSZW1vdmVkIiwgInRydWUiKTsKLQotICAgIHNldHVwTXV0YXRpbmdDdXJzb3Io
KTsKLX0KLQotZnVuY3Rpb24gc2V0dXBNdXRhdGluZ0N1cnNvcigpCi17Ci0gICAgZGVidWcoIiIp
OwotICAgIGRlYnVnKCJzZXR1cE11dGF0aW5nQ3Vyc29yKCk6Iik7Ci0gICAKLSAgICBjb3VudCA9
IGV2YWxBbmRMb2coImNvdW50ID0gMCIpOwotICAgIHNhd0FkZGVkID0gZXZhbEFuZExvZygic2F3
QWRkZWQgPSBmYWxzZSIpOwotICAgIHNhd1JlbW92ZWQgPSBldmFsQW5kTG9nKCJzYXdSZW1vdmVk
ID0gZmFsc2UiKTsKLSAgICBkZWJ1ZygiW29iamVjdFN0b3JlRGF0YU5hbWVTb3J0IGlzIGFuIGFy
cmF5IG9mIGluZGV4ZXMgaW50byBvYmplY3RTdG9yZURhdGEgaW4gYWxwaGFiZXRpY2FsIG9yZGVy
IGJ5IG5hbWVdIik7Ci0gICAgb2JqZWN0U3RvcmVEYXRhTmFtZVNvcnQgPSBldmFsQW5kTG9nKCJv
YmplY3RTdG9yZURhdGFOYW1lU29ydCA9IFsgMSwgNCwgNSwgMiwgMyBdIik7Ci0KLSAgICBkZWJ1
ZygiIik7Ci0KLSAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24o
J2ZvbycsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgb2JqZWN0U3RvcmUgPSBl
dmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdmb28nKSIpOwotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUn
KS5vcGVuQ3Vyc29yKCkiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGl0ZXJhdGVNdXRhdGluZ0N1cnNvcjsK
LSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gY2hlY2tNdXRhdGluZ0N1cnNvclJl
c3VsdHMiKTsKLX0KLQotZnVuY3Rpb24gaXRlcmF0ZU11dGF0aW5nQ3Vyc29yKCkKLXsKLSAgICBk
ZWJ1ZygiIik7Ci0gICAgZGVidWcoIml0ZXJhdGVNdXRhdGluZ0N1cnNvcigpOiIpOwotICAgIGN1
cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBp
ZiAoY3Vyc29yKSB7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY3Vyc29yLnZhbHVl
Lm5hbWUiLCBvYmplY3RTdG9yZURhdGFbb2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRbY291bnRdXS5u
YW1lKTsKLSAgICAgICAgaWYgKGN1cnNvci52YWx1ZS5uYW1lID09IG9iamVjdFN0b3JlRGF0YVsw
XS5uYW1lKSB7Ci0gICAgICAgICAgICBzYXdSZW1vdmVkID0gZXZhbEFuZExvZygic2F3UmVtb3Zl
ZCA9IHRydWUiKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoY3Vyc29yLnZhbHVlLm5hbWUgPT0g
b2JqZWN0U3RvcmVEYXRhW29iamVjdFN0b3JlRGF0YS5sZW5ndGggLSAxXS5uYW1lKSB7Ci0gICAg
ICAgICAgICBzYXdBZGRlZCA9IGV2YWxBbmRMb2coInNhd0FkZGVkID0gdHJ1ZSIpOwotICAgICAg
ICB9Ci0gICAgICAgIGV2YWxBbmRMb2coImNvdW50KysiKTsKLQotICAgICAgICBpZiAoY291bnQg
PT0gMSkgewotICAgICAgICAgICAgZGVidWcoIiIpOwotICAgICAgICAgICAgZGVidWcoIk11dGF0
aW5nIHRoZSBvYmplY3Qgc3RvcmU6Iik7Ci0KLSAgICAgICAgICAgIGRlYnVnKCJSZW1vdmluZyAi
ICsgb2JqZWN0U3RvcmVEYXRhWzBdLm5hbWUpOwotICAgICAgICAgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5kZWxldGUob2JqZWN0U3RvcmVEYXRhWzBdLnNz
KSIpOwotICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci0gICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEZpbmFsRGF0YTsKLQotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7Ci0gICAgICAgIH0K
LSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGFkZEZpbmFsRGF0YSgpCi17Ci0gICAgZGVidWcoIiIpOwot
ICAgIGRlYnVnKCJhZGRGaW5hbERhdGEoKToiKTsKLSAgICBkZWJ1ZygiQWRkaW5nICIgKyBvYmpl
Y3RTdG9yZURhdGFbb2JqZWN0U3RvcmVEYXRhLmxlbmd0aCAtIDFdLm5hbWUpOwotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0
YVtvYmplY3RTdG9yZURhdGEubGVuZ3RoIC0gMV0pIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlv
biAoKSB7Ci0gICAgICAgIGN1cnNvci5jb250aW51ZSgpOwotICAgIH0KLX0KLQotZnVuY3Rpb24g
Y2hlY2tNdXRhdGluZ0N1cnNvclJlc3VsdHMoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1
ZygiY2hlY2tNdXRhdGluZ0N1cnNvclJlc3VsdHMoKToiKTsKLSAgICBzaG91bGRCZSgiY291bnQi
LCAib2JqZWN0U3RvcmVEYXRhLmxlbmd0aCAtIDEiKTsKLSAgICBzaG91bGRCZSgic2F3QWRkZWQi
LCAidHJ1ZSIpOwotICAgIHNob3VsZEJlKCJzYXdSZW1vdmVkIiwgImZhbHNlIik7Ci0gICAgZmlu
aXNoSlNUZXN0KCk7Ci19Ci0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2N1cnNvci1tdXRhdGlvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4K
IDwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9jdXJzb3ItdXBkYXRlLXVwZGF0ZXMtaW5kZXhlcy5odG1sIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9jdXJzb3ItdXBkYXRlLXVwZGF0ZXMtaW5kZXhlcy5odG1s
CmluZGV4IGI4OWFmNjU5Y2YzOGYzN2FiNTdlZGYxYmI2ZWQyOGQ5M2NjMzRiNDcuLjhjOTlmZjg0
ZDNmYzg4OTVjNjMzNDMyYjZmMzYyMjE3ZTQyODVjNDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3Vyc29yLXVwZGF0ZS11cGRhdGVzLWluZGV4ZXMu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2N1cnNvci11
cGRhdGUtdXBkYXRlcy1pbmRleGVzLmh0bWwKQEAgLTEsMTI1ICsxLDEwIEBACi08IURPQ1RZUEUg
aHRtbD4KLTwhLS0KLSAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3pp
bGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9jdXJzb3JfdXBkYXRlX3VwZGF0
ZXNfaW5kZXhlcy5odG1sP2ZvcmNlPTEKLSAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgotICAg
ICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCi0gICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKLS0t
PgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3No
YXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0
aW9uKCJUZXN0IEluZGV4ZWREQjogbXV0YXRpbmcgcmVjb3JkcyB3aXRoIGEgci93IGN1cnNvciB1
cGRhdGVzIGluZGV4ZXMgb24gdGhvc2UgcmVjb3JkcyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsK
LSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24u
cGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkK
LXsKLSAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRi
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIGZpcnN0VmFsdWUgPSBldmFsQW5kTG9nKCJm
aXJzdFZhbHVlID0gJ2hpJzsiKTsKLSAgICBzZWNvbmRWYWx1ZSA9IGV2YWxBbmRMb2coInNlY29u
ZFZhbHVlID0gJ2J5ZSc7Iik7Ci0gICAgb2JqZWN0U3RvcmVJbmZvID0gZXZhbEFuZExvZygib2Jq
ZWN0U3RvcmVJbmZvID0gW1xuIiArCi0iICAgICAgICB7IG5hbWU6ICcxJywgb3B0aW9uczoge30s
IGtleTogMSxcbiIgKwotIiAgICAgICAgICBlbnRyeTogeyBkYXRhOiBmaXJzdFZhbHVlIH0gfSxc
biIgKwotIiAgICAgICAgeyBuYW1lOiAnMicsIG9wdGlvbnM6IHsga2V5UGF0aDogJ2ZvbycgfSxc
biIgKwotIiAgICAgICAgICBlbnRyeTogeyBmb286IDEsIGRhdGE6IGZpcnN0VmFsdWUgfSB9LFxu
IiArCi0iICAgICAgICB7IG5hbWU6ICczJywgb3B0aW9uczogeyBhdXRvSW5jcmVtZW50OiB0cnVl
IH0sXG4iICsKLSIgICAgICAgICAgZW50cnk6IHsgZGF0YTogZmlyc3RWYWx1ZSB9IH0sXG4iICsK
LSIgICAgICAgIHsgbmFtZTogJzQnLCBvcHRpb25zOiB7IGtleVBhdGg6ICdmb28nLCBhdXRvSW5j
cmVtZW50OiB0cnVlIH0sXG4iICsKLSIgICAgICAgICAgZW50cnk6IHsgZGF0YTogZmlyc3RWYWx1
ZSB9IH0sXG4iICsKLSIgICAgXTsiKTsKLSAgICBpID0gZXZhbEFuZExvZygiaSA9IDA7Iik7Ci0g
ICAgc2V0VmVyc2lvbigpOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uKCkKLXsKLSAgICBpZiAo
aSA8IG9iamVjdFN0b3JlSW5mby5sZW5ndGgpIHsKLSAgICAgICAgaW5mbyA9IGV2YWxBbmRMb2co
ImluZm8gPSBvYmplY3RTdG9yZUluZm9baV07Iik7Ci0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gc2V0dXBPYmplY3RTdG9yZUFuZENyZWF0ZUluZGV4QW5kQWRkOwotICAgICAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB9IGVsc2Ugewot
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHNldHVwT2JqZWN0
U3RvcmVBbmRDcmVhdGVJbmRleEFuZEFkZCgpCi17Ci0gICAgZGVidWcoInNldHVwT2JqZWN0U3Rv
cmVBbmRDcmVhdGVJbmRleCgpOiIpOwotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0K
LSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoaW5mby5uYW1lLCBpbmZvLm9wdGlvbnMpOyIpOwotCi0gICAgaW5kZXggPSBldmFs
QW5kTG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdkYXRhX2luZGV4JywgJ2Rh
dGEnLCB7IHVuaXF1ZTogZmFsc2UgfSk7Iik7Ci0gICAgdW5pcXVlSW5kZXggPSBldmFsQW5kTG9n
KCJ1bmlxdWVJbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCd1bmlxdWVfZGF0YV9pbmRl
eCcsICdkYXRhJywgeyB1bmlxdWU6IHRydWUgfSk7Iik7Ci0gICAgaWYgKGluZm8ua2V5KSB7Ci0g
ICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKGlu
Zm8uZW50cnksIGluZm8ua2V5KTsiKTsKLSAgICB9IGVsc2UgewotICAgICAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChpbmZvLmVudHJ5KTsiKTsKLSAg
ICB9Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuQ3Vyc29yOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuQ3Vyc29y
KCkKLXsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLm9w
ZW5DdXJzb3IoKTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVwZGF0ZUN1cnNvcjsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rp
b24gdXBkYXRlQ3Vyc29yKCkKLXsKLSAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBy
ZXF1ZXN0LnJlc3VsdDsiKTsKLSAgICB2YWx1ZSA9IGV2YWxBbmRMb2coInZhbHVlID0gY3Vyc29y
LnZhbHVlOyIpOwotICAgIHZhbHVlLmRhdGEgPSBldmFsQW5kTG9nKCJ2YWx1ZS5kYXRhID0gc2Vj
b25kVmFsdWU7Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBjdXJzb3Iu
dXBkYXRlKHZhbHVlKTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldEluZGV4MTsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rp
b24gZ2V0SW5kZXgxKCkKLXsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGlu
ZGV4LmdldChzZWNvbmRWYWx1ZSk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjaGVja0lu
ZGV4MUFuZEdldEluZGV4MjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY2hlY2tJbmRleDFBbmRHZXRJbmRleDIoKQotewotICAg
IHNob3VsZEJlKCJ2YWx1ZS5kYXRhIiwgImV2ZW50LnRhcmdldC5yZXN1bHQuZGF0YSIpOwotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gdW5pcXVlSW5kZXguZ2V0KHNlY29uZFZh
bHVlKTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNoZWNrSW5kZXgyOwotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjaGVj
a0luZGV4MigpCi17Ci0gICAgc2hvdWxkQmUoInZhbHVlLmRhdGEiLCAiZXZlbnQudGFyZ2V0LnJl
c3VsdC5kYXRhIik7Ci0gICAgZXZhbEFuZExvZygiaSsrOyIpOwotICAgIHNldFZlcnNpb24oKTsK
LX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jdXJz
b3ItdXBkYXRlLXVwZGF0ZXMtaW5kZXhlcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9k
eT4KIDwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW96aWxsYS9jdXJzb3JzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL2N1cnNvcnMuaHRtbAppbmRleCBjYTNkNzJmZWEzNWY1ZjAwMjA4ZjZiNzBiMmI4NzAwMGQ5
ZGU0MTIwLi5jZWRlZDliZTk4OGU1Njg4MGFhYjYzNmIxMTdiMWFkNTM2YWE3YWFmIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2N1cnNvcnMuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2N1cnNvcnMuaHRtbApA
QCAtMSwzOTkgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLQotICBvcmlnaW5hbCB0ZXN0
OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIv
dGVzdC90ZXN0X2N1cnNvcnMuaHRtbD9mb3JjZT0xCi0gIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVz
dDoKLSAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgotICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1k
ZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgY3Vyc29yIGJlaGF2aW9yIik7Ci0KLWZ1bmN0aW9u
IHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2Vs
Zi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNl
IjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3Jp
cHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3Bl
blN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVz
dWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNp
b24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdGVzdEdyb3VwMTsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gdGVz
dEdyb3VwMSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9iamVj
dFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2F1dG9JbmNyZW1lbnQn
LCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGZ1bmN0aW9uIChldmVudCkgewotICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQi
LCAibnVsbCIpOwotICAgICAgdGVzdEdyb3VwMigpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVz
dEdyb3VwMigpCi17Ci0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnYXV0b0luY3JlbWVudEtleVBhdGgnLCB7IGtleVBhdGg6ICdmb28nLCBhdXRvSW5j
cmVtZW50OiB0cnVlIH0pOyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAo
ZXZlbnQpIHsKLSAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIm51bGwiKTsK
LSAgICAgIHRlc3RHcm91cDMoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDMoKQot
ewotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2tl
eVBhdGgnLCB7IGtleVBhdGg6ICdmb28nIH0pOyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0
IiwgIm51bGwiKTsKLSAgICAgIHRlc3RHcm91cDQoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRl
c3RHcm91cDQoKQotewotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ2ZvbycpOyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAo
ZXZlbnQpIHsKLSAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIm51bGwiKTsK
LSAgICAgIHRlc3RHcm91cDUoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDUoKQot
ewotICAgIGtleXMgPSBldmFsQW5kTG9nKCJrZXlzID0gWzEsIC0xLCAwLCAxMCwgMjAwMCwgJ3En
LCAneicsICd0d28nLCAnYicsICdhJ107Iik7Ci0gICAgc29ydGVkS2V5cyA9IGV2YWxBbmRMb2co
InNvcnRlZEtleXMgPSBbLTEsIDAsIDEsIDEwLCAyMDAwLCAnYScsICdiJywgJ3EnLCAndHdvJywg
J3onXTsiKTsKLQotICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAwOyIpOwot
Ci0gICAgZm9yIChpIGluIGtleXMpIHsKLSAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKCdmb28nLCBrZXlzW2ldKTsiKTsKLSAgICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBpZiAoKytrZXlJbmRleCA9PSBrZXlzLmxl
bmd0aCkgewotICAgICAgICAgIHRlc3RHcm91cDYoKTsKLSAgICAgICAgfQotICAgICAgfTsKLSAg
ICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDYoKQotewotICAgIGtleUluZGV4ID0gMDsKLQot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNv
cigpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICBjdXJzb3Ig
PSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgICAgaWYg
KGN1cnNvcikgewotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJzb3J0ZWRLZXlzW2tl
eUluZGV4XSIpOwotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAic29ydGVk
S2V5c1trZXlJbmRleF0iKTsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZSIsICInZm9v
JyIpOwotCi0gICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOwotICAgICAg
ICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJjdXJzb3IuY29udGludWUoKTsiLCAiSURCRGF0YWJh
c2VFeGNlcHRpb24uTk9UX0FMTE9XRURfRVJSIik7Ci0KLSAgICAgICAgc2hvdWxkQmUoImN1cnNv
ci5rZXkiLCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNv
ci5wcmltYXJ5S2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7Ci0gICAgICAgIHNob3VsZEJl
KCJjdXJzb3IudmFsdWUiLCAiJ2ZvbyciKTsKLQotICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRl
eCsrOyIpOwotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIHNob3VsZEJlKCJrZXlJbmRl
eCIsICJrZXlzLmxlbmd0aCIpOwotICAgICAgICB0ZXN0R3JvdXA3KCk7Ci0gICAgICB9Ci0gICAg
fQotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXA3KCkKLXsKLSAgICBrZXlJbmRleCA9IGV2YWxBbmRM
b2coImtleUluZGV4ID0gNDsiKTsKLQotICAgIHJhbmdlID0gZXZhbEFuZExvZygicmFuZ2UgPSBJ
REJLZXlSYW5nZS5ib3VuZCgyMDAwLCAncScpOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcihyYW5nZSk7Iik7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNv
ciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICBpZiAoY3Vyc29yKSB7Ci0gICAgICAg
IHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7Ci0gICAgICAg
IHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOwot
ICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgIidmb28nIik7Ci0KLSAgICAgICAgZXZh
bEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7Ci0KLSAgICAgICAgc2hvdWxkQmUoImN1cnNv
ci5rZXkiLCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNv
ci5wcmltYXJ5S2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7Ci0gICAgICAgIHNob3VsZEJl
KCJjdXJzb3IudmFsdWUiLCAiJ2ZvbyciKTsKLQotICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRl
eCsrOyIpOwotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIHNob3VsZEJlKCJrZXlJbmRl
eCIsICI4Iik7Ci0gICAgICAgIHRlc3RHcm91cDgoKTsKLSAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1
bmN0aW9uIHRlc3RHcm91cDgoKQotewotICAgIGtleUluZGV4ID0gMDsKLQotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICBjdXJzb3IgPSBldmFsQW5kTG9n
KCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgICAgaWYgKGN1cnNvcikgewot
ICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOwot
ICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAic29ydGVkS2V5c1trZXlJbmRl
eF0iKTsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZSIsICInZm9vJyIpOwotCi0gICAg
ICAgIGlmIChrZXlJbmRleCkgewotICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51
ZSgpOyIpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgIGV2YWxBbmRMb2co
ImN1cnNvci5jb250aW51ZSgnYicpOyIpOwotICAgICAgICB9Ci0KLSAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci5rZXkiLCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKLSAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci5wcmltYXJ5S2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7Ci0gICAgICAgIHNo
b3VsZEJlKCJjdXJzb3IudmFsdWUiLCAiJ2ZvbyciKTsKLQotICAgICAgICBldmFsQW5kTG9nKCJr
ZXlJbmRleCArPSBrZXlJbmRleCA/IDE6IDY7Iik7Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAg
ICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgImtleXMubGVuZ3RoIik7Ci0gICAgICAgIHRlc3RH
cm91cDkoKTsKLSAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDkoKQotewot
ICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAwOyIpOwotCi0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgIGN1cnNvciA9IGV2YWxBbmRM
b2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICBpZiAoY3Vyc29yKSB7
Ci0gICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7
Ci0gICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJzb3J0ZWRLZXlzW2tleUlu
ZGV4XSIpOwotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgIidmb28nIik7Ci0KLSAg
ICAgICAgaWYgKGtleUluZGV4KSB7Ci0gICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRp
bnVlKCk7Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgZXZhbEFuZExv
ZygiY3Vyc29yLmNvbnRpbnVlKDEwKTsiKTsKLSAgICAgICAgfQotCi0gICAgICAgIHNob3VsZEJl
KCJjdXJzb3Iua2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7Ci0gICAgICAgIHNob3VsZEJl
KCJjdXJzb3IucHJpbWFyeUtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOwotICAgICAgICBz
aG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgIidmb28nIik7Ci0KLSAgICAgICAgZXZhbEFuZExvZygi
a2V5SW5kZXggKz0ga2V5SW5kZXggPyAxOiAzOyIpOwotICAgICAgfQotICAgICAgZWxzZSB7Ci0g
ICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJrZXlzLmxlbmd0aCIpOwotICAgICAgICB0ZXN0
R3JvdXAxMCgpOwotICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdEdyb3VwMTAoKQot
ewotICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAwOyIpOwotCi0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgIGN1cnNvciA9IGV2YWxB
bmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICBpZiAoY3Vyc29y
KSB7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhd
Iik7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJzb3J0ZWRLZXlzW2tl
eUluZGV4XSIpOwotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgIidmb28nIik7Ci0K
LSAgICAgICAgaWYgKGtleUluZGV4KSB7Ci0gICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNv
bnRpbnVlKCk7Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgZXZhbEFu
ZExvZygiY3Vyc29yLmNvbnRpbnVlKCdjJyk7Iik7Ci0gICAgICAgIH0KLQotICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLmtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOwotICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKLSAgICAg
ICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZSIsICInZm9vJyIpOwotCi0gICAgICAgIGV2YWxBbmRM
b2coImtleUluZGV4ICs9IGtleUluZGV4ID8gMSA6IDc7Iik7Ci0gICAgICB9Ci0gICAgICBlbHNl
IHsKLSAgICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgImtleXMubGVuZ3RoIik7Ci0gICAgICAg
IHRlc3RHcm91cDExKCk7Ci0gICAgICB9Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXAx
MSgpCi17Ci0gICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDA7Iik7Ci0KLSAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3Io
KTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewotICAgICAgY3Vyc29yID0g
ZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgIGlmIChj
dXJzb3IpIHsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAic29ydGVkS2V5c1trZXlJ
bmRleF0iKTsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgInNvcnRlZEtl
eXNba2V5SW5kZXhdIik7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAiJ2Zvbyci
KTsKLQotICAgICAgICBpZiAoa2V5SW5kZXggPT0gNCkgewotICAgICAgICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gY3Vyc29yLnVwZGF0ZSgnYmFyJyk7Iik7Ci0gICAgICAgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICAgICAgZXZhbEFuZExv
Zygia2V5SW5kZXgrKzsiKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51
ZSgpOyIpOwotICAgICAgICAgIH07Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKLSAgICAgICAgICBldmFsQW5kTG9nKCJjdXJz
b3IuY29udGludWUoKTsiKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAg
ICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJrZXlzLmxlbmd0aCIpOwotICAgICAgICB0ZXN0R3Jv
dXAxMigpOwotICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdEdyb3VwMTIoKQotewot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KHNvcnRl
ZEtleXNbNF0pOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdGVzdEdyb3VwMTJiOwotfQotCi1mdW5jdGlv
biB0ZXN0R3JvdXAxMmIoKQotewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0Iiwg
IidiYXInIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0
b3JlLnB1dCgnZm9vJywgc29ydGVkS2V5c1s0XSk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0ZXN0R3Jv
dXAxMzsKLX0KLQotZnVuY3Rpb24gdGVzdEdyb3VwMTMoKQotewotICAgIGtleUluZGV4ID0gZXZh
bEFuZExvZygia2V5SW5kZXggPSAwOyIpOwotCi0gICAgZ290UmVtb3ZlRXZlbnQgPSBmYWxzZTsK
LSAgICByZXR2YWwgPSBmYWxzZTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcihudWxsLCBJREJDdXJzb3IuTkVYVCk7Iik7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2co
ImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICBpZiAoY3Vyc29yKSB7Ci0g
ICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7Ci0g
ICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4
XSIpOwotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgIidmb28nIik7Ci0KLSAgICAg
ICAgaWYgKGtleUluZGV4ID09IDQpIHsKLSAgICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IGN1cnNvci5kZWxldGUoKTsiKTsKLSAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNSIp
OwotICAgICAgICAgICAgZ290UmVtb3ZlRXZlbnQgPSBldmFsQW5kTG9nKCJnb3RSZW1vdmVFdmVu
dCA9IHRydWU7Iik7Ci0gICAgICAgICAgfTsKLSAgICAgICAgfQotCi0gICAgICAgIGV2YWxBbmRM
b2coImtleUluZGV4Kys7Iik7Ci0gICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgp
OyIpOwotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIs
ICJrZXlzLmxlbmd0aCIpOwotICAgICAgICBzaG91bGRCZSgiZ290UmVtb3ZlRXZlbnQiLCAidHJ1
ZSIpOwotICAgICAgICB0ZXN0R3JvdXAxNCgpOwotICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rp
b24gdGVzdEdyb3VwMTQoKQotewotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
b2JqZWN0U3RvcmUuZ2V0KHNvcnRlZEtleXNbNF0pOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdGVzdEdy
b3VwMTRiOwotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXAxNGIoKQotewotICAgIHNob3VsZEJlKCJl
dmVudC50YXJnZXQucmVzdWx0IiwgInVuZGVmaW5lZCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoJ2ZvbycsIHNvcnRlZEtleXNbNF0pOyIp
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gdGVzdEdyb3VwMTU7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDE1
KCkKLXsKLSAgICBrZXlJbmRleCA9IHNvcnRlZEtleXMubGVuZ3RoIC0gMTsKLQotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcihudWxsLCBJ
REJDdXJzb3IuUFJFVik7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAg
ICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7
Ci0gICAgICBpZiAoY3Vyc29yKSB7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgInNv
cnRlZEtleXNba2V5SW5kZXhdIik7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtl
eSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOwotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZh
bHVlIiwgIidmb28nIik7Ci0KLSAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7
Iik7Ci0KLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAic29ydGVkS2V5c1trZXlJbmRl
eF0iKTsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgInNvcnRlZEtleXNb
a2V5SW5kZXhdIik7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAiJ2ZvbyciKTsK
LQotICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleC0tOyIpOwotICAgICAgfQotICAgICAgZWxz
ZSB7Ci0gICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICItMSIpOwotICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKLSAgICAgIH0KLSAgICB9Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvY3Vyc29ycy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwv
Ym9keT4KIDwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW96aWxsYS9kZWxldGUtcmVzdWx0Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL2RlbGV0ZS1yZXN1bHQuaHRtbAppbmRleCAxMGY0NmJjODUwNGIwM2MyNzIz
ZGY0ZTM2M2QwZmQ5NDAxZjNlZWQ3Li5mN2ViNTI2Y2U1NTliZDg5YTk1ODhlMDE5ODFhYmM2MDY5
MzQ1OWVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L2RlbGV0ZS1yZXN1bHQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL2RlbGV0ZS1yZXN1bHQuaHRtbApAQCAtMSw3MyArMSwxMCBAQAotPCFET0NUWVBFIGh0
bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxs
YTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3Rfb2RkX3Jlc3VsdF9vcmRlci5odG1s
P3Jhdz0xCi0gIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgotICAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+
CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0
PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVk
REI6IHJlc3VsdCBwcm9wZXJ0eSBhZnRlciBkZWxldGluZyBleGlzdGluZyBhbmQgbm9uLWV4aXN0
aW5nIHJlY29yZCIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVm
aXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3Jp
cHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImlu
ZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRM
b2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBjcmVhdGVPYmplY3RTdG9yZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY3JlYXRlT2JqZWN0U3RvcmUoKQotewotICAgIGRl
bGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJv
YmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7IGtleVBhdGg6ICdpZCcs
IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoe30pOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZGVsZXRlUmVjb3JkMTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLX0KLQotZnVuY3Rpb24gZGVsZXRlUmVjb3JkMSgpCi17Ci0gICAgaWQgPSBldmFsQW5k
TG9nKCJpZCA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5kZWxldGUoaWQpOyIpOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZGVsZXRlUmVjb3JkMjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZGVsZXRlUmVjb3JkMigpCi17Ci0gICAgc2hv
dWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAidW5kZWZpbmVkIik7Ci0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5kZWxldGUoaWQpOyIpOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZmluYWxDaGVjazsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBmaW5hbENoZWNrKCkKLXsKLSAg
ICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ1bmRlZmluZWQiKTsKLSAgICBmaW5p
c2hKU1Rlc3QoKTsKLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvZGVsZXRlLXJlc3VsdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEv
ZXZlbnQtc291cmNlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L2V2ZW50LXNvdXJjZS5odG1sCmluZGV4IDM3YzEyZTUwZjY1MGE2NmU1YTk2ZDIzMzgxMzk4ZGQx
YWRhNTJhZmYuLmRiMjFiYWE2OTk0ZDZhM2FiNGQ5MWVhYmViMWJiYTcyZDFjYWUwZTkgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvZXZlbnQtc291cmNl
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9ldmVudC1z
b3VyY2UuaHRtbApAQCAtMSw2OCArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9y
aWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9t
L2luZGV4ZWREQi90ZXN0L3Rlc3RfZXZlbnRfc291cmNlLmh0bWwKLSAgbGljZW5zZSBvZiBvcmln
aW5hbCB0ZXN0OgotICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCi0gICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvICIKLS0tPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3Jp
cHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGV2ZW50LnRhcmdldC5zb3VyY2Ug
aW4gc3VjY2VzcyBjYWxsYmFja3MiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3Zl
VmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwot
ICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgc291
cmNlID0gZXZhbEFuZExvZygic291cmNlID0gZXZlbnQudGFyZ2V0LnNvdXJjZTsiKTsKLSAgICBz
aG91bGRCZSgic291cmNlIiwgImluZGV4ZWREQiIpOwotCi0gICAgZGIgPSBldmFsQW5kTG9nKCJk
YiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVx
dWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xl
YW5EYXRhYmFzZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLX0KLQotZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCi17Ci0gICAgc291cmNlID0gZXZhbEFu
ZExvZygic291cmNlID0gZXZlbnQudGFyZ2V0LnNvdXJjZTsiKTsKLSAgICBzaG91bGRCZSgic291
cmNlIiwgImRiIik7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2Jq
ZWN0U3RvcmVOYW1lID0gIk9iamVjdHMiOwotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygi
b2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUsIHsgYXV0
b0luY3JlbWVudDogdHJ1ZSB9KTsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IG9iamVjdFN0b3JlLmFkZCh7fSk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhcmVX
ZURvbmVZZXQ7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci19Ci0KLWZ1bmN0aW9uIGFyZVdlRG9uZVlldCgpCi17Ci0gICAgc291cmNlID0gZXZhbEFuZExv
Zygic291cmNlID0gZXZlbnQudGFyZ2V0LnNvdXJjZTsiKTsKLSAgICBzaG91bGRCZSgic291cmNl
IiwgIm9iamVjdFN0b3JlIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwot
Ci08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZXZlbnQtc291cmNlLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2dsb2JhbC1kYXRhLmh0bWwgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2dsb2JhbC1kYXRhLmh0bWwKaW5kZXggY2Rl
MDY5NjU2ZjY5ZWJmZDkxM2QzNmVjNGNhOTAyNzNhMjQwZDI0ZS4uYTJiMDY3M2RkYjEzNWJmN2Ey
NTFjNzIzOTEyZDY2MmQ2NGMwN2MxZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW96aWxsYS9nbG9iYWwtZGF0YS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vemlsbGEvZ2xvYmFsLWRhdGEuaHRtbApAQCAtMSw4MCArMSwxMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxs
YS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfZ2xvYmFsX2Rh
dGEuaHRtbAotICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Ci0gICAgIiBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KLSAgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgotLS0+CiA8aHRtbD4KIDxoZWFk
PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Njcmlw
dD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhl
ZERCJ3Mgb3BlbmluZyBEQiBtb3JlIHRoYW4gb25jZSIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsK
LSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24u
cGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkK
LXsKLSAgICBkYjEgPSBldmFsQW5kTG9nKCJkYjEgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0K
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiMS5zZXRWZXJzaW9uKCcxJyki
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFuRGF0
YWJhc2UoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYjEpOwotCi0gICAgb2JqZWN0
U3RvcmVOYW1lID0gIk9iamVjdHMiOwotICAgIG9iamVjdFN0b3JlT3B0aW9ucyA9IHsga2V5UGF0
aDogJ2lkJywgYXV0b0luY3JlbWVudDogdHJ1ZSB9OwotICAgIGV2YWxBbmRMb2coImRiMS5jcmVh
dGVPYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUsIG9iamVjdFN0b3JlT3B0aW9ucyk7Iik7Ci0K
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRp
b24pOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbjJTdWNjZXNzOwotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVu
MlN1Y2Nlc3MoKQotewotICAgIGRiMiA9IGV2YWxBbmRMb2coImRiMiA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKLQotICAgIHNob3VsZEJlVHJ1ZSgiZGIxICE9PSBkYjIiKTsKLSAgICBzaG91bGRC
ZSgiZGIxLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjEiKTsKLSAgICBzaG91bGRCZSgiZGIx
Lm9iamVjdFN0b3JlTmFtZXMuaXRlbSgwKSIsICJvYmplY3RTdG9yZU5hbWUiKTsKLSAgICBzaG91
bGRCZSgiZGIyLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjEiKTsKLSAgICBzaG91bGRCZSgi
ZGIyLm9iamVjdFN0b3JlTmFtZXMuaXRlbSgwKSIsICJvYmplY3RTdG9yZU5hbWUiKTsKLQotICAg
IG9iamVjdFN0b3JlMSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlMSA9IGRiMS50cmFuc2FjdGlv
bihvYmplY3RTdG9yZU5hbWUpLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7Iik7Ci0gICAg
c2hvdWxkQmUoIm9iamVjdFN0b3JlMS5uYW1lIiwgIm9iamVjdFN0b3JlTmFtZSIpOwotICAgIHNo
b3VsZEJlKCJvYmplY3RTdG9yZTEua2V5UGF0aCIsICJvYmplY3RTdG9yZU9wdGlvbnMua2V5UGF0
aCIpOwotCi0gICAgb2JqZWN0U3RvcmUyID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUyID0gZGIy
LnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFtZSkub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1l
KTsiKTsKLSAgICBzaG91bGRCZVRydWUoIm9iamVjdFN0b3JlMSAhPT0gb2JqZWN0U3RvcmUyIik7
Ci0gICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlMi5uYW1lIiwgIm9iamVjdFN0b3JlTmFtZSIpOwot
ICAgIHNob3VsZEJlKCJvYmplY3RTdG9yZTIua2V5UGF0aCIsICJvYmplY3RTdG9yZU9wdGlvbnMu
a2V5UGF0aCIpOwotCi0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZ2xvYmFsLWRhdGEuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvaW5kZXhlcy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9pbmRleGVzLmh0bWwKaW5kZXggNGZiN2UxMjRjNWIxMDk2YTQ2
N2NkODE1MTc0NWVkMGUwMWQ1YmU3NC4uOGI2YzZkY2ZiMzQxZDFiYWE4YWQxYzE5ODEyNmUzNDkz
MjZkMDNmMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9pbmRleGVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9pbmRleGVzLmh0bWwKQEAgLTEsMTAyMiArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0t
Ci0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3Vy
Y2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfaW5kZXhlcy5odG1sP2ZvcmNlPTEKLSAgbGljZW5z
ZSBvZiBvcmlnaW5hbCB0ZXN0OgotICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCi0gICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvICIKLS0tPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9k
eT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQjogaXRlcmF0aW5nIHRo
cm91Z2ggaW5kZXggY3Vyc29ycyB3aXRoIGtleXMgYW5kIGtleSByYW5nZXMiKTsKLQotZnVuY3Rp
b24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBz
ZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJh
c2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNj
cmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBv
cGVuU3VjY2VzcygpCi17Ci0gICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7Ci0gICAgZGIgPSBl
dmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIG9iamVjdFN0b3Jl
TmFtZSA9ICJQZW9wbGUiOwotCi0gICAgb2JqZWN0U3RvcmVEYXRhID0gWwotICAgICAgICB7IGtl
eTogIjIzNy0yMy03NzMyIiwgdmFsdWU6IHsgbmFtZTogIkJvYiIsIGhlaWdodDogNjAsIHdlaWdo
dDogMTIwIH0gfSwKLSAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczMyIsIHZhbHVlOiB7IG5hbWU6
ICJBbm4iLCBoZWlnaHQ6IDUyLCB3ZWlnaHQ6IDExMCB9IH0sCi0gICAgICAgIHsga2V5OiAiMjM3
LTIzLTc3MzQiLCB2YWx1ZTogeyBuYW1lOiAiUm9uIiwgaGVpZ2h0OiA3Mywgd2VpZ2h0OiAxODAg
fSB9LAotICAgICAgICB7IGtleTogIjIzNy0yMy03NzM1IiwgdmFsdWU6IHsgbmFtZTogIlN1ZSIs
IGhlaWdodDogNTgsIHdlaWdodDogMTMwIH0gfSwKLSAgICAgICAgeyBrZXk6ICIyMzctMjMtNzcz
NiIsIHZhbHVlOiB7IG5hbWU6ICJKb2UiLCBoZWlnaHQ6IDY1LCB3ZWlnaHQ6IDE1MCB9IH0sCi0g
ICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzciLCB2YWx1ZTogeyBuYW1lOiAiUGF0IiwgaGVpZ2h0
OiA2NSwgd2VpZ2h0OiAxMDAgfSB9Ci0gICAgXTsKLQotICAgIGluZGV4RGF0YSA9IFsKLSAgICAg
ICAgeyBuYW1lOiAibmFtZSIsIGtleVBhdGg6ICJuYW1lIiwgb3B0aW9uczogeyB1bmlxdWU6IHRy
dWUgfSB9LAotICAgICAgICB7IG5hbWU6ICJoZWlnaHQiLCBrZXlQYXRoOiAiaGVpZ2h0Iiwgb3B0
aW9uczogeyB9IH0sCi0gICAgICAgIHsgbmFtZTogIndlaWdodCIsIGtleVBhdGg6ICJ3ZWlnaHQi
LCBvcHRpb25zOiB7IHVuaXF1ZTogZmFsc2UgfSB9Ci0gICAgXTsKLQotICAgIG9iamVjdFN0b3Jl
RGF0YU5hbWVTb3J0ID0gWwotICAgICAgICB7IGtleTogIjIzNy0yMy03NzMzIiwgdmFsdWU6IHsg
bmFtZTogIkFubiIsIGhlaWdodDogNTIsIHdlaWdodDogMTEwIH0gfSwKLSAgICAgICAgeyBrZXk6
ICIyMzctMjMtNzczMiIsIHZhbHVlOiB7IG5hbWU6ICJCb2IiLCBoZWlnaHQ6IDYwLCB3ZWlnaHQ6
IDEyMCB9IH0sCi0gICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzYiLCB2YWx1ZTogeyBuYW1lOiAi
Sm9lIiwgaGVpZ2h0OiA2NSwgd2VpZ2h0OiAxNTAgfSB9LAotICAgICAgICB7IGtleTogIjIzNy0y
My03NzM3IiwgdmFsdWU6IHsgbmFtZTogIlBhdCIsIGhlaWdodDogNjUsIHdlaWdodDogMTAwIH0g
fSwKLSAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNCIsIHZhbHVlOiB7IG5hbWU6ICJSb24iLCBo
ZWlnaHQ6IDczLCB3ZWlnaHQ6IDE4MCB9IH0sCi0gICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzUi
LCB2YWx1ZTogeyBuYW1lOiAiU3VlIiwgaGVpZ2h0OiA1OCwgd2VpZ2h0OiAxMzAgfSB9Ci0gICAg
XTsKLQotICAgIG9iamVjdFN0b3JlRGF0YVdlaWdodFNvcnQgPSBbCi0gICAgICAgIHsga2V5OiAi
MjM3LTIzLTc3MzciLCB2YWx1ZTogeyBuYW1lOiAiUGF0IiwgaGVpZ2h0OiA2NSwgd2VpZ2h0OiAx
MDAgfSB9LAotICAgICAgICB7IGtleTogIjIzNy0yMy03NzMzIiwgdmFsdWU6IHsgbmFtZTogIkFu
biIsIGhlaWdodDogNTIsIHdlaWdodDogMTEwIH0gfSwKLSAgICAgICAgeyBrZXk6ICIyMzctMjMt
NzczMiIsIHZhbHVlOiB7IG5hbWU6ICJCb2IiLCBoZWlnaHQ6IDYwLCB3ZWlnaHQ6IDEyMCB9IH0s
Ci0gICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzUiLCB2YWx1ZTogeyBuYW1lOiAiU3VlIiwgaGVp
Z2h0OiA1OCwgd2VpZ2h0OiAxMzAgfSB9LAotICAgICAgICB7IGtleTogIjIzNy0yMy03NzM2Iiwg
dmFsdWU6IHsgbmFtZTogIkpvZSIsIGhlaWdodDogNjUsIHdlaWdodDogMTUwIH0gfSwKLSAgICAg
ICAgeyBrZXk6ICIyMzctMjMtNzczNCIsIHZhbHVlOiB7IG5hbWU6ICJSb24iLCBoZWlnaHQ6IDcz
LCB3ZWlnaHQ6IDE4MCB9IH0KLSAgICBdOwotCi0gICAgb2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29y
dCA9IFsKLSAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczMyIsIHZhbHVlOiB7IG5hbWU6ICJBbm4i
LCBoZWlnaHQ6IDUyLCB3ZWlnaHQ6IDExMCB9IH0sCi0gICAgICAgIHsga2V5OiAiMjM3LTIzLTc3
MzUiLCB2YWx1ZTogeyBuYW1lOiAiU3VlIiwgaGVpZ2h0OiA1OCwgd2VpZ2h0OiAxMzAgfSB9LAot
ICAgICAgICB7IGtleTogIjIzNy0yMy03NzMyIiwgdmFsdWU6IHsgbmFtZTogIkJvYiIsIGhlaWdo
dDogNjAsIHdlaWdodDogMTIwIH0gfSwKLSAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNiIsIHZh
bHVlOiB7IG5hbWU6ICJKb2UiLCBoZWlnaHQ6IDY1LCB3ZWlnaHQ6IDE1MCB9IH0sCi0gICAgICAg
IHsga2V5OiAiMjM3LTIzLTc3MzciLCB2YWx1ZTogeyBuYW1lOiAiUGF0IiwgaGVpZ2h0OiA2NSwg
d2VpZ2h0OiAxMDAgfSB9LAotICAgICAgICB7IGtleTogIjIzNy0yMy03NzM0IiwgdmFsdWU6IHsg
bmFtZTogIlJvbiIsIGhlaWdodDogNzMsIHdlaWdodDogMTgwIH0gfQotICAgIF07Ci0KLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZTsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24g
Y3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3Rv
cmVzKGRiKTsKLSAgICB0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Ci0KLSAgICBvYmplY3RT
dG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUob2Jq
ZWN0U3RvcmVOYW1lKTsiKTsKLQotICAgIGRlYnVnKCJGaXJzdCwgYWRkIGFsbCBvdXIgZGF0YSB0
byB0aGUgb2JqZWN0IHN0b3JlLiIpOwotICAgIGFkZGVkRGF0YSA9IDA7Ci0gICAgZm9yIChpIGlu
IG9iamVjdFN0b3JlRGF0YSkgewotICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW2ldLnZhbHVlLCBvYmplY3RTdG9yZURh
dGFbaV0ua2V5KTsiKTsKLSAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgewotICAg
ICAgICBpZiAoKythZGRlZERhdGEgPT0gb2JqZWN0U3RvcmVEYXRhLmxlbmd0aCkgewotICAgICAg
ICAgIGNyZWF0ZUluZGV4ZXMoKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLX0KLQotZnVu
Y3Rpb24gY3JlYXRlSW5kZXhlcygpCi17Ci0gICAgZGVidWcoIk5vdyBjcmVhdGUgdGhlIGluZGV4
ZXMuIik7Ci0gICAgZm9yIChpIGluIGluZGV4RGF0YSkgewotICAgICAgZXZhbEFuZExvZygib2Jq
ZWN0U3RvcmUuY3JlYXRlSW5kZXgoaW5kZXhEYXRhW2ldLm5hbWUsIGluZGV4RGF0YVtpXS5rZXlQ
YXRoLCBpbmRleERhdGFbaV0ub3B0aW9ucyk7Iik7Ci0gICAgfQotICAgIHNob3VsZEJlKCJvYmpl
Y3RTdG9yZS5pbmRleE5hbWVzLmxlbmd0aCIsICJpbmRleERhdGEubGVuZ3RoIik7Ci0gICAgdHJh
bnMub25jb21wbGV0ZSA9IHNldFZlcnNpb25Db21wbGV0ZTsKLX0KLQotZnVuY3Rpb24gc2V0VmVy
c2lvbkNvbXBsZXRlKCkKLXsKLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0
b3JlID0gZGIudHJhbnNhY3Rpb24ob2JqZWN0U3RvcmVOYW1lKS5vYmplY3RTdG9yZShvYmplY3RT
dG9yZU5hbWUpOyIpOwotCi0gICAgLy8gQ2hlY2sgZ2xvYmFsIHByb3BlcnRpZXMgdG8gbWFrZSBz
dXJlIHRoZXkgYXJlIGNvcnJlY3QuCi0gICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLmluZGV4TmFt
ZXMubGVuZ3RoIiwgImluZGV4RGF0YS5sZW5ndGgiKTsKLSAgICBmb3IgKGkgaW4gaW5kZXhEYXRh
KSB7Ci0gICAgICAgIGZvdW5kID0gZmFsc2U7Ci0gICAgICAgIGZvciAoaiA9IDA7IGogPCBvYmpl
Y3RTdG9yZS5pbmRleE5hbWVzLmxlbmd0aDsgaisrKSB7Ci0gICAgICAgICAgICBpZiAob2JqZWN0
U3RvcmUuaW5kZXhOYW1lcy5pdGVtKGopID09IGluZGV4RGF0YVtpXS5uYW1lKSB7Ci0gICAgICAg
ICAgICAgICAgZm91bmQgPSB0cnVlOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgiZm91bmQiKTsKLSAgICAgICAg
aW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmluZGV4KGluZGV4RGF0YVtp
XS5uYW1lKTsiKTsKLSAgICAgICAgc2hvdWxkQmUoImluZGV4Lm5hbWUiLCAiaW5kZXhEYXRhW2ld
Lm5hbWUiKTsKLSAgICAgICAgc2hvdWxkQmUoImluZGV4LmtleVBhdGgiLCAiaW5kZXhEYXRhW2ld
LmtleVBhdGgiKTsKLSAgICAgICAgc2hvdWxkQmUoImluZGV4LnVuaXF1ZSIsIGluZGV4RGF0YVtp
XS5vcHRpb25zLnVuaXF1ZSA/ICJ0cnVlIiA6ICJmYWxzZSIpOwotICAgIH0KLQotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5nZXRL
ZXkoJ0JvYicpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2hlY2tHZXRLZXk7Ci19Ci0KLWZ1bmN0aW9u
IGNoZWNrR2V0S2V5KCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICIn
MjM3LTIzLTc3MzInIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9i
amVjdFN0b3JlLmluZGV4KCduYW1lJykuZ2V0KCdCb2InKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNo
ZWNrR2V0OwotfQotCi1mdW5jdGlvbiBjaGVja0dldCgpCi17Ci0gICAgc2hvdWxkQmUoImV2ZW50
LnRhcmdldC5yZXN1bHQubmFtZSIsICInQm9iJyIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJn
ZXQucmVzdWx0LmhlaWdodCIsICI2MCIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVz
dWx0LndlaWdodCIsICIxMjAiKTsKLQotICAgIGtleUluZGV4ID0gMDsKLQotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuS2V5
Q3Vyc29yKCk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAg
Y3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAg
ICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAi
b2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29y
dFtrZXlJbmRleF0ua2V5Iik7Ci0gICAgICAgICAgICBzaG91bGRCZUZhbHNlKCIndmFsdWUnIGlu
IGN1cnNvciIpOwotCi0gICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsi
KTsKLQotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRh
TmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJj
dXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5
Iik7Ci0gICAgICAgICAgICBzaG91bGRCZUZhbHNlKCIndmFsdWUnIGluIGN1cnNvciIpOwotCi0g
ICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOwotICAgICAgICB9Ci0gICAgICAg
IGVsc2UgewotICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJvYmplY3RTdG9yZURhdGEu
bGVuZ3RoIik7Ci0gICAgICAgICAgdGVzdEdyb3VwMygpOwotICAgICAgICB9Ci0gICAgfTsKLX0K
LQotZnVuY3Rpb24gdGVzdEdyb3VwMygpCi17Ci0gICAga2V5SW5kZXggPSAwOwotCi0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnd2VpZ2h0Jyku
b3BlbktleUN1cnNvcihudWxsLCBJREJDdXJzb3IuTkVYVCk7Iik7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICAg
ICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhV2VpZ2h0U29ydFtrZXlJ
bmRleF0udmFsdWUud2VpZ2h0Iik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1h
cnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhV2VpZ2h0U29ydFtrZXlJbmRleF0ua2V5Iik7Ci0KLSAg
ICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOwotCi0gICAgICAgICAg
ICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFXZWlnaHRTb3J0W2tleUlu
ZGV4XS52YWx1ZS53ZWlnaHQiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFy
eUtleSIsICJvYmplY3RTdG9yZURhdGFXZWlnaHRTb3J0W2tleUluZGV4XS5rZXkiKTsKLQotICAg
ICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKLSAgICAgICAgfQotICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJvYmplY3RTdG9yZURhdGEu
bGVuZ3RoIik7Ci0gICAgICAgICAgICB0ZXN0R3JvdXA0KCk7Ci0gICAgICAgIH0KLSAgICB9Ci19
Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDQoKQotewotLyogdGhpcyB3YXMgc3BsaXQgb3V0IGludG8g
YSBzZXBhcmF0ZSB0ZXN0Ci0gICAgZGVidWcoIkNoZWNrIHRoYXQgdGhlIG5hbWUgaW5kZXggZW5m
b3JjZXMgaXRzIHVuaXF1ZSBjb25zdHJhaW50LiIpOwotICAgIG9iamVjdFN0b3JlID0gZXZhbEFu
ZExvZygib2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUsIElEQlRy
YW5zYWN0aW9uLlJFQURfV1JJVEUpLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7Iik7Ci0g
ICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigib2JqZWN0U3RvcmUuYWRkKHsgbmFtZTogJ0JvYics
IGhlaWdodDogNjIsIHdlaWdodDogMTcwIH0sICcyMzctMjMtNzczOCcpOyIsICJJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5DT05TVFJBSU5UX0VSUiIpOwotKi8KLQotICAgIG9iamVjdFN0b3JlID0gZXZh
bEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUpLm9i
amVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7Iik7Ci0gICAga2V5SW5kZXggPSBldmFsQW5kTG9n
KCJrZXlJbmRleCA9IG9iamVjdFN0b3JlRGF0YU5hbWVTb3J0Lmxlbmd0aCAtIDE7Iik7Ci0gICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScp
Lm9wZW5LZXlDdXJzb3IobnVsbCwgSURCQ3Vyc29yLlBSRVYpOyIpOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9
IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUlu
ZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlL
ZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotCi0gICAgICAg
ICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKLQotICAgICAgICAgICAgc2hv
dWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZh
bHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJv
YmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7Ci0KLSAgICAgICAgICAgIGV2
YWxBbmRMb2coImtleUluZGV4LS07Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiLTEiKTsKLSAgICAgICAgICAgIHRlc3RHcm91
cDUoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdEdyb3VwNSgpCi17Ci0g
ICAga2V5SW5kZXggPSAxOwotICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJ
REJLZXlSYW5nZS5ib3VuZCgnQm9iJywgJ1JvbicpOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuS2V5Q3Vyc29yKGtl
eVJhbmdlKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewotICAgICAgICBj
dXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAg
ICAgICBpZiAoY3Vyc29yKSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJv
YmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOwotICAgICAgICAg
ICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0
W2tleUluZGV4XS5rZXkiKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51
ZSgpOyIpOwotICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKLSAgICAgICAg
fQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICI1Iik7
Ci0gICAgICAgICAgICB0ZXN0R3JvdXA2KCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0
aW9uIHRlc3RHcm91cDYoKQotewotICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXgg
PSAyOyIpOwotICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlSYW5n
ZS5ib3VuZCgnQm9iJywgJ1JvbicsIHRydWUpOyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9wZW5LZXlDdXJzb3Ioa2V5
UmFuZ2UpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICAgIGN1
cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAg
ICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9i
amVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAg
ICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRb
a2V5SW5kZXhdLmtleSIpOwotCi0gICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGlu
dWUoKTsiKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7Ci0gICAgICAg
IH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNSIp
OwotICAgICAgICAgICAgdGVzdEdyb3VwNygpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1mdW5j
dGlvbiB0ZXN0R3JvdXA3KCkKLXsKLSAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4
ID0gMTsiKTsKLSAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtleVJhbmdlID0gSURCS2V5UmFu
Z2UuYm91bmQoJ0JvYicsICdSb24nLCBmYWxzZSwgdHJ1ZSk7Iik7Ci0KLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCduYW1lJykub3BlbktleUN1
cnNvcihrZXlSYW5nZSk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAg
ICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsi
KTsKLSAgICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5r
ZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAg
ICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFO
YW1lU29ydFtrZXlJbmRleF0ua2V5Iik7Ci0KLSAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNv
ci5jb250aW51ZSgpOyIpOwotICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsK
LSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRl
eCIsICI0Iik7Ci0gICAgICAgICAgICB0ZXN0R3JvdXA4KCk7Ci0gICAgICAgIH0KLSAgICB9Ci19
Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDgoKQotewotICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygi
a2V5SW5kZXggPSAyOyIpOwotICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJ
REJLZXlSYW5nZS5ib3VuZCgnQm9iJywgJ1JvbicsIHRydWUsIHRydWUpOyIpOwotCi0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9w
ZW5LZXlDdXJzb3Ioa2V5UmFuZ2UpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50
KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQ7Iik7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJj
dXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1l
Iik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3Rv
cmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotCi0gICAgICAgICAgICBldmFsQW5kTG9n
KCJjdXJzb3IuY29udGludWUoKTsiKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4
Kys7Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgi
a2V5SW5kZXgiLCAiNCIpOwotICAgICAgICAgICAgdGVzdEdyb3VwOSgpOwotICAgICAgICB9Ci0g
ICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXA5KCkKLXsKLSAgICBrZXlJbmRleCA9IGV2YWxB
bmRMb2coImtleUluZGV4ID0gMTsiKTsKLSAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtleVJh
bmdlID0gSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgnQm9iJyk7Iik7Ci0KLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCduYW1lJykub3BlbktleUN1
cnNvcihrZXlSYW5nZSk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAg
ICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsi
KTsKLSAgICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5r
ZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAg
ICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFO
YW1lU29ydFtrZXlJbmRleF0ua2V5Iik7Ci0KLSAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNv
ci5jb250aW51ZSgpOyIpOwotICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsK
LSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRl
eCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydC5sZW5ndGgiKTsKLSAgICAgICAgICAgIHRlc3RH
cm91cDEwKCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDEwKCkK
LXsKLSAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gMjsiKTsKLSAgICBrZXlS
YW5nZSA9IGV2YWxBbmRMb2coImtleVJhbmdlID0gSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgnQm9i
JywgdHJ1ZSk7Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVj
dFN0b3JlLmluZGV4KCduYW1lJykub3BlbktleUN1cnNvcihrZXlSYW5nZSk7Iik7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygi
Y3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgICAgaWYgKGN1cnNvcikgewot
ICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNv
cnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
cHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7Ci0K
LSAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOwotICAgICAgICAg
ICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29y
dC5sZW5ndGgiKTsKLSAgICAgICAgICAgIHRlc3RHcm91cDExKCk7Ci0gICAgICAgIH0KLSAgICB9
Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDExKCkKLXsKLSAgICBrZXlJbmRleCA9IGV2YWxBbmRM
b2coImtleUluZGV4ID0gMDsiKTsKLSAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtleVJhbmdl
ID0gSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgnSm9lJyk7Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCduYW1lJykub3BlbktleUN1cnNv
cihrZXlSYW5nZSk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAg
ICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsK
LSAgICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXki
LCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1l
U29ydFtrZXlJbmRleF0ua2V5Iik7Ci0KLSAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5j
b250aW51ZSgpOyIpOwotICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKLSAg
ICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAi
MyIpOwotICAgICAgICAgIHRlc3RHcm91cDEyKCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1
bmN0aW9uIHRlc3RHcm91cDEyKCkKLXsKLSAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUlu
ZGV4ID0gMDsiKTsKLSAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtleVJhbmdlID0gSURCS2V5
UmFuZ2UudXBwZXJCb3VuZCgnSm9lJywgdHJ1ZSk7Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCduYW1lJykub3BlbktleUN1cnNvcihr
ZXlSYW5nZSk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAg
Y3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAg
ICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAi
b2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29y
dFtrZXlJbmRleF0ua2V5Iik7Ci0KLSAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250
aW51ZSgpOyIpOwotICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKLSAgICAg
ICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICIy
Iik7Ci0gICAgICAgICAgICB0ZXN0R3JvdXAxMygpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1m
dW5jdGlvbiB0ZXN0R3JvdXAxMygpCi17Ci0gICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJ
bmRleCA9IDM7Iik7Ci0gICAga2V5UmFuZ2UgPSBldmFsQW5kTG9nKCJrZXlSYW5nZSA9IElEQktl
eVJhbmdlLm9ubHkoJ1BhdCcpOyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVl
c3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9wZW5LZXlDdXJzb3Ioa2V5UmFuZ2UpOyIp
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2
YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICAgIGlmIChj
dXJzb3IpIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3Jl
RGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhd
LmtleSIpOwotCi0gICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsK
LSAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7Ci0gICAgICAgIH0KLSAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNCIpOwotICAgICAg
ICAgICAgdGVzdEdyb3VwMTQoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVz
dEdyb3VwMTQoKQotewotICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAwOyIp
OwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRl
eCgnbmFtZScpLm9wZW5DdXJzb3IoKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVu
dCkgewotICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQu
cmVzdWx0OyIpOwotICAgICAgICBpZiAoY3Vyc29yKSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgi
Y3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFt
ZSIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0
b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJj
dXJzb3IudmFsdWUubmFtZSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFs
dWUubmFtZSIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQiLCAi
b2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOwotICAgICAg
ICAgICAgaWYgKCd3ZWlnaHQnIGluIGN1cnNvci52YWx1ZSkgewotICAgICAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tl
eUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZXZh
bEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7Ci0KLSAgICAgICAgICAgIHNob3VsZEJlKCJj
dXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1l
Iik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3Rv
cmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1
cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1
ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIsICJv
YmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7Ci0gICAgICAg
ICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgc2hv
dWxkQmUoImN1cnNvci52YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5
SW5kZXhdLnZhbHVlLndlaWdodCIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBldmFs
QW5kTG9nKCJrZXlJbmRleCsrOyIpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0Lmxlbmd0
aCIpOwotICAgICAgICAgICAgdGVzdEdyb3VwMTUoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQot
ZnVuY3Rpb24gdGVzdEdyb3VwMTUoKQotewotICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5
SW5kZXggPSBvYmplY3RTdG9yZURhdGFOYW1lU29ydC5sZW5ndGggLSAxOyIpOwotCi0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9w
ZW5DdXJzb3IobnVsbCwgSURCQ3Vyc29yLlBSRVYpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24gKGV2ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50
LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52
YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAi
b2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotICAgICAgICAgICAgc2hv
dWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUlu
ZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmhl
aWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7
Ci0gICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7Ci0gICAgICAgICAg
ICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFt
ZVNvcnRba2V5SW5kZXhdLnZhbHVlLndlaWdodCIpOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKLQotICAgICAgICAgICAgc2hv
dWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZh
bHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJv
YmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7Ci0gICAgICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5k
ZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVp
Z2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsK
LSAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKLSAgICAgICAgICAg
ICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1l
U29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIGtleUluZGV4LS07Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBz
aG91bGRCZSgia2V5SW5kZXgiLCAiLTEiKTsKLSAgICAgICAgICAgIHRlc3RHcm91cDE2KCk7Ci0g
ICAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDE2KCkKLXsKLSAgICBrZXlJ
bmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gMTsiKTsKLSAgICBrZXlSYW5nZSA9IGV2YWxB
bmRMb2coImtleVJhbmdlID0gSURCS2V5UmFuZ2UuYm91bmQoJ0JvYicsICdSb24nKTsiKTsKLQot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25h
bWUnKS5vcGVuQ3Vyc29yKGtleVJhbmdlKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChl
dmVudCkgewotICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJn
ZXQucmVzdWx0OyIpOwotICAgICAgICBpZiAoY3Vyc29yKSB7Ci0gICAgICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUu
bmFtZSIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVj
dFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsKLSAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3IudmFsdWUubmFtZSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0u
dmFsdWUubmFtZSIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQi
LCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOwotICAg
ICAgICAgICAgaWYgKCd3ZWlnaHQnIGluIGN1cnNvci52YWx1ZSkgewotICAgICAgICAgICAgICAg
ICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNv
cnRba2V5SW5kZXhdLnZhbHVlLndlaWdodCIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKLQotICAgICAgICAgICAgc2hvdWxk
QmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVl
Lm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmpl
Y3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7Ci0gICAgICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhd
LnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0
IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKLSAg
ICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKLSAgICAgICAgICAgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVT
b3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICI1Iik7Ci0gICAgICAgICAgICB0ZXN0
R3JvdXAxNygpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXAxNygp
Ci17Ci0gICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDI7Iik7Ci0gICAga2V5
UmFuZ2UgPSBldmFsQW5kTG9nKCJrZXlSYW5nZSA9IElEQktleVJhbmdlLmJvdW5kKCdCb2InLCAn
Um9uJywgdHJ1ZSk7Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9i
amVjdFN0b3JlLmluZGV4KCduYW1lJykub3BlbkN1cnNvcihrZXlSYW5nZSk7Iik7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygi
Y3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgICAgaWYgKGN1cnNvcikgewot
ICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNv
cnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
cHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7Ci0g
ICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRh
TmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJj
dXJzb3IudmFsdWUuaGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52
YWx1ZS5oZWlnaHQiKTsKLSAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUp
IHsKLSAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9i
amVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7Ci0K
LSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVT
b3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29y
LnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwot
ICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0
YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgi
Y3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0u
dmFsdWUuaGVpZ2h0Iik7Ci0gICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVl
KSB7Ci0gICAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIsICJv
YmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7Ci0gICAgICAg
IH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNSIp
OwotICAgICAgICAgICAgdGVzdEdyb3VwMTgoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotZnVu
Y3Rpb24gdGVzdEdyb3VwMTgoKQotewotICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5k
ZXggPSAxOyIpOwotICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlS
YW5nZS5ib3VuZCgnQm9iJywgJ1JvbicsIGZhbHNlLCB0cnVlKTsiKTsKLQotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuQ3Vy
c29yKGtleVJhbmdlKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewotICAg
ICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIp
OwotICAgICAgICBpZiAoY3Vyc29yKSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtl
eSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOwotICAg
ICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5h
bWVTb3J0W2tleUluZGV4XS5rZXkiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFs
dWUubmFtZSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIp
OwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQiLCAib2JqZWN0U3Rv
cmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOwotICAgICAgICAgICAgaWYg
KCd3ZWlnaHQnIGluIGN1cnNvci52YWx1ZSkgewotICAgICAgICAgICAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci52YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhd
LnZhbHVlLndlaWdodCIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBldmFsQW5kTG9n
KCJjdXJzb3IuY29udGludWUoKTsiKTsKLQotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5r
ZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAg
ICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFO
YW1lU29ydFtrZXlJbmRleF0ua2V5Iik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZh
bHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUi
KTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0IiwgIm9iamVjdFN0
b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKLSAgICAgICAgICAgIGlm
ICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKLSAgICAgICAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4
XS52YWx1ZS53ZWlnaHQiKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZXZhbEFuZExv
Zygia2V5SW5kZXgrKzsiKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
IHNob3VsZEJlKCJrZXlJbmRleCIsICI0Iik7Ci0gICAgICAgICAgICB0ZXN0R3JvdXAxOSgpOwot
ICAgICAgICB9Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXAxOSgpCi17Ci0gICAga2V5
SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDI7Iik7Ci0gICAga2V5UmFuZ2UgPSBldmFs
QW5kTG9nKCJrZXlSYW5nZSA9IElEQktleVJhbmdlLmJvdW5kKCdCb2InLCAnUm9uJywgdHJ1ZSwg
dHJ1ZSk7Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0
b3JlLmluZGV4KCduYW1lJykub3BlbkN1cnNvcihrZXlSYW5nZSk7Iik7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29y
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgICAgaWYgKGN1cnNvcikgewotICAgICAg
ICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5
SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFy
eUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7Ci0gICAgICAg
ICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNv
cnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
dmFsdWUuaGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5o
ZWlnaHQiKTsKLSAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKLSAg
ICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0
b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7Ci0KLSAgICAg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tl
eUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1h
cnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotICAgICAg
ICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0YU5hbWVT
b3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29y
LnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUu
aGVpZ2h0Iik7Ci0gICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7Ci0g
ICAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIsICJvYmplY3RT
dG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7Ci0gICAgICAgIH0KLSAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNCIpOwotICAg
ICAgICAgICAgdGVzdEdyb3VwMjAoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24g
dGVzdEdyb3VwMjAoKQotewotICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSA0
OyIpOwotICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5i
b3VuZCgnQm9iJywgJ1JvbicpOyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVl
c3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9wZW5DdXJzb3Ioa2V5UmFuZ2UsIElEQkN1
cnNvci5QUkVWKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewotICAgICAg
ICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwot
ICAgICAgICBpZiAoY3Vyc29yKSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIs
ICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOwotICAgICAg
ICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVT
b3J0W2tleUluZGV4XS5rZXkiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUu
bmFtZSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOwot
ICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQiLCAib2JqZWN0U3RvcmVE
YXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOwotICAgICAgICAgICAgaWYgKCd3
ZWlnaHQnIGluIGN1cnNvci52YWx1ZSkgewotICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoImN1
cnNvci52YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZh
bHVlLndlaWdodCIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBldmFsQW5kTG9nKCJj
dXJzb3IuY29udGludWUoKTsiKTsKLQotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXki
LCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1l
U29ydFtrZXlJbmRleF0ua2V5Iik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVl
Lm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsK
LSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0IiwgIm9iamVjdFN0b3Jl
RGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKLSAgICAgICAgICAgIGlmICgn
d2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKLSAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJj
dXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52
YWx1ZS53ZWlnaHQiKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZXZhbEFuZExvZygi
a2V5SW5kZXgtLTsiKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHNo
b3VsZEJlKCJrZXlJbmRleCIsICIwIik7Ci0gICAgICAgICAgICB0ZXN0R3JvdXAyMSgpOwotICAg
ICAgICB9Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXAyMSgpCi17Ci0gICAga2V5SW5k
ZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDM7Iik7Ci0gICAga2V5UmFuZ2UgPSBldmFsQW5k
TG9nKCJrZXlSYW5nZSA9IElEQktleVJhbmdlLm9ubHkoNjUpOyIpOwotCi0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnaGVpZ2h0Jykub3Blbktl
eUN1cnNvcihrZXlSYW5nZSwgSURCQ3Vyc29yLk5FWFQpOyIpOwotICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVu
Y3Rpb24gKGV2ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2
ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgICAg
IHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5k
ZXhdLnZhbHVlLmhlaWdodCIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5
S2V5IiwgIm9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLmtleSIpOwotCi0gICAg
ICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKLSAgICAgICAgICAgIGV2
YWxBbmRMb2coImtleUluZGV4Kys7Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNSIpOwotICAgICAgICAgICAgdGVzdEdyb3Vw
MjIoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdEdyb3VwMjIoKQotewot
ICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAzOyIpOwotICAgIGtleVJhbmdl
ID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5vbmx5KDY1KTsiKTsKLQotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ2hlaWdo
dCcpLm9wZW5LZXlDdXJzb3Ioa2V5UmFuZ2UsIElEQkN1cnNvci5ORVhUX05PX0RVUExJQ0FURSk7
Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAgY3Vyc29yID0g
ZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgICAgaWYg
KGN1cnNvcikgewotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3Rv
cmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7Ci0gICAgICAgICAgICBz
aG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtr
ZXlJbmRleF0ua2V5Iik7Ci0KLSAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51
ZSgpOyIpOwotICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKLSAgICAgICAg
fQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICI0Iik7
Ci0gICAgICAgICAgICB0ZXN0R3JvdXAyNCgpOwotICAgICAgICB9Ci0gICAgfQotfQotCi0vKiB0
aGlzIHdhcyBzcGxpdCBvdXQgaW50byBhIHNlcGFyYXRlIHRlc3QKLWZ1bmN0aW9uIHRlc3RHcm91
cDIzKCkKLXsKLSAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gNTsiKTsKLQot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ2hl
aWdodCcpLm9wZW5LZXlDdXJzb3IobnVsbCwgSURCQ3Vyc29yLlBSRVZfTk9fRFVQTElDQVRFKTsi
KTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewotICAgICAgICBjdXJzb3IgPSBl
dmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgICAgICBpZiAo
Y3Vyc29yKSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9y
ZURhdGFIZWlnaHRTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKLSAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tl
eUluZGV4XS5rZXkiKTsKLQotICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVl
KCk7Iik7Ci0gICAgICAgICAgICBpZiAoa2V5SW5kZXggPT0gNSkgewotICAgICAgICAgICAgICAg
IGV2YWxBbmRMb2coImtleUluZGV4LS07Iik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBl
dmFsQW5kTG9nKCJrZXlJbmRleC0tOyIpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIi0xIik7Ci0gICAgICAgICAgICB0ZXN0R3Jv
dXAyNCgpOwotICAgICAgICB9Ci0gICAgfQotfQotKi8KLQotZnVuY3Rpb24gdGVzdEdyb3VwMjQo
KQotewotICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAzOyIpOwotICAgIGtl
eVJhbmdlID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5vbmx5KDY1KTsiKTsK
LQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgo
J2hlaWdodCcpLm9wZW5DdXJzb3Ioa2V5UmFuZ2UsIElEQkN1cnNvci5ORVhUKTsiKTsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewotICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9n
KCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgICAgICBpZiAoY3Vyc29yKSB7
Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFIZWln
aHRTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJj
dXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tleUluZGV4XS5r
ZXkiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUubmFtZSIsICJvYmplY3RT
dG9yZURhdGFIZWlnaHRTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBz
aG91bGRCZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0
W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKLSAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBj
dXJzb3IudmFsdWUpIHsKLSAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndl
aWdodCIsICJvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQi
KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRp
bnVlKCk7Iik7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOwotICAgICAg
ICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIjUi
KTsKLSAgICAgICAgICAgIHRlc3RHcm91cDI1KCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1
bmN0aW9uIHRlc3RHcm91cDI1KCkKLXsKLSAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUlu
ZGV4ID0gMzsiKTsKLSAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtleVJhbmdlID0gSURCS2V5
UmFuZ2Uub25seSg2NSk7Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IG9iamVjdFN0b3JlLmluZGV4KCdoZWlnaHQnKS5vcGVuQ3Vyc29yKGtleVJhbmdlLCBJREJDdXJz
b3IuTkVYVF9OT19EVVBMSUNBVEUpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50
KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQ7Iik7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJj
dXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLmhl
aWdodCIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVj
dFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLmtleSIpOwotICAgICAgICAgICAgc2hvdWxk
QmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5k
ZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVp
Z2h0IiwgIm9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIp
OwotICAgICAgICAgICAgaWYgKCd3ZWlnaHQnIGluIGN1cnNvci52YWx1ZSkgewotICAgICAgICAg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YUhl
aWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLndlaWdodCIpOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKLSAgICAgICAgICAgIGV2
YWxBbmRMb2coImtleUluZGV4Kys7Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNCIpOwotICAgICAgICAgICAgdGVzdEdyb3Vw
MjcoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotLyogdGhpcyB3YXMgc3BsaXQgb3V0IGludG8g
YSBzZXBhcmF0ZSB0ZXN0Ci1mdW5jdGlvbiB0ZXN0R3JvdXAyNigpCi17Ci0gICAga2V5SW5kZXgg
PSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDU7Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCdoZWlnaHQnKS5vcGVuQ3Vyc29yKG51bGws
IElEQkN1cnNvci5QUkVWX05PX0RVUExJQ0FURSk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlv
biAoZXZlbnQpIHsKLSAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICAgICAgc2hv
dWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0u
dmFsdWUuaGVpZ2h0Iik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXki
LCAib2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0ua2V5Iik7Ci0gICAgICAgICAg
ICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29y
dFtrZXlJbmRleF0udmFsdWUubmFtZSIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52
YWx1ZS5oZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUu
aGVpZ2h0Iik7Ci0gICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7Ci0g
ICAgICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3Rv
cmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOwotICAgICAg
ICAgICAgaWYgKGtleUluZGV4ID09IDUpIHsKLSAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJr
ZXlJbmRleC0tOyIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZXZhbEFuZExvZygia2V5
SW5kZXgtLTsiKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHNob3Vs
ZEJlKCJrZXlJbmRleCIsICItMSIpOwotICAgICAgICAgICAgdGVzdEdyb3VwMjcoKTsKLSAgICAg
ICAgfQotICAgIH0KLX0KLSovCi0KLWZ1bmN0aW9uIHRlc3RHcm91cDI3KCkKLXsKLSAgICBrZXlJ
bmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gMDsiKTsKLQotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuS2V5Q3Vyc29y
KCk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAgY3Vyc29y
ID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgICAg
aWYgKGN1cnNvcikgewotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0
U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJ
bmRleF0ua2V5Iik7Ci0KLSAgICAgICAgICAgIG5leHRLZXkgPSBldmFsQW5kTG9nKCJuZXh0S2V5
ID0gIWtleUluZGV4ID8gJ1BhdCcgOiB1bmRlZmluZWQ7Iik7Ci0gICAgICAgICAgICBpZiAobmV4
dEtleSkgewotICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZShuZXh0
S2V5KTsiKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZXZhbEFuZExv
ZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52
YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAi
b2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotCi0gICAgICAgICAgICBp
ZiAoIWtleUluZGV4KSB7Ci0gICAgICAgICAgICAgICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJr
ZXlJbmRleCA9IDM7Iik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgc2hvdWxkQmUoImtleUluZGV4Iiwg
Im9iamVjdFN0b3JlRGF0YS5sZW5ndGgiKTsKLSAgICAgICAgICAgIHRlc3RHcm91cDI4KCk7Ci0g
ICAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDI4KCkKLXsKLSAgICBrZXlJ
bmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gMDsiKTsKLQotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuS2V5Q3Vyc29y
KCk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAgY3Vyc29y
ID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgICAg
aWYgKGN1cnNvcikgewotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0
U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJ
bmRleF0ua2V5Iik7Ci0KLSAgICAgICAgICAgIG5leHRLZXkgPSBldmFsQW5kTG9nKCJuZXh0S2V5
ID0gIWtleUluZGV4ID8gJ0ZsbycgOiB1bmRlZmluZWQ7Iik7Ci0gICAgICAgICAgICBpZiAobmV4
dEtleSkgewotICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZShuZXh0
S2V5KTsiKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZXZhbEFuZExv
ZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52
YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAi
b2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotCi0gICAgICAgICAgICBr
ZXlJbmRleCArPSBrZXlJbmRleCA/IDEgOiAyOwotICAgICAgICB9Ci0gICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIm9iamVjdFN0b3JlRGF0YS5sZW5ndGgi
KTsKLSAgICAgICAgICAgIHRlc3RHcm91cDI5KCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1
bmN0aW9uIHRlc3RHcm91cDI5KCkKLXsKLSAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUlu
ZGV4ID0gMDsiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0
U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuQ3Vyc29yKCk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbiAoZXZlbnQpIHsKLSAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZl
bnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICAgICAg
c2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhd
LnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIs
ICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7Ci0gICAgICAgICAgICBz
aG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5
SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUu
aGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQi
KTsKLSAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKLSAgICAgICAg
ICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0
YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgbmV4dEtleSA9IGV2YWxBbmRMb2coIm5leHRLZXkgPSAha2V5SW5kZXggPyAnUGF0
JyA6IHVuZGVmaW5lZDsiKTsKLSAgICAgICAgICAgIGlmIChuZXh0S2V5KSB7Ci0gICAgICAgICAg
ICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKG5leHRLZXkpOyIpOwotICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUo
KTsiKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXki
LCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1l
U29ydFtrZXlJbmRleF0ua2V5Iik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVl
Lm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsK
LSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0IiwgIm9iamVjdFN0b3Jl
RGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKLSAgICAgICAgICAgIGlmICgn
d2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKLSAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJj
dXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52
YWx1ZS53ZWlnaHQiKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCFrZXlJbmRl
eCkgewotICAgICAgICAgICAgICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAz
OyIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAg
ZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJvYmplY3RTdG9y
ZURhdGFOYW1lU29ydC5sZW5ndGgiKTsKLSAgICAgICAgICAgIHRlc3RHcm91cDMwKCk7Ci0gICAg
ICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDMwKCkKLXsKLSAgICBrZXlJbmRl
eCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gMDsiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuQ3Vyc29yKCk7Iik7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAgY3Vyc29yID0gZXZh
bEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgICAgaWYgKGN1
cnNvcikgewotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVE
YXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0u
a2V5Iik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0
U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tl
eUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKLSAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJz
b3IudmFsdWUpIHsKLSAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2Vp
Z2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbmV4dEtleSA9IGV2YWxBbmRMb2coIm5leHRL
ZXkgPSAha2V5SW5kZXggPyAnRmxvJyA6IHVuZGVmaW5lZDsiKTsKLSAgICAgICAgICAgIGlmIChu
ZXh0S2V5KSB7Ci0gICAgICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKG5l
eHRLZXkpOyIpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBldmFsQW5k
TG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
c2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhd
LnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIs
ICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7Ci0gICAgICAgICAgICBz
aG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5
SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUu
aGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQi
KTsKLSAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKLSAgICAgICAg
ICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0
YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAga2V5SW5kZXggKz0ga2V5SW5kZXggPyAxIDogMjsKLSAgICAgICAgfQotICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJvYmplY3RTdG9yZURh
dGFOYW1lU29ydC5sZW5ndGgiKTsKLSAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgICAg
ICB9Ci0gICAgfQotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2luZGV4ZXMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+
Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEva2V5
LXJlcXVpcmVtZW50cy1kZWxldGUtbnVsbC1rZXkuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEva2V5LXJlcXVpcmVtZW50cy1kZWxldGUtbnVsbC1rZXkuaHRtbApp
bmRleCBlOTAwODg3Mjg5MDVhNDhjMmE2ZGQ3Y2E1ZTI5YmQxMDA0MDc0MjlhLi5jZjY2NzVmYTc0
ZjcxNjk5MjY5MDcwOWU3ZjczOTg4ZGVmMzRiNzJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMtZGVsZXRlLW51bGwta2V5
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVx
dWlyZW1lbnRzLWRlbGV0ZS1udWxsLWtleS5odG1sCkBAIC0xLDUzICsxLDEwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTwhLS0KLSAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxhLm9yZy9t
b3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9rZXlfcmVxdWlyZW1lbnRz
Lmh0bWwKLSAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgotICAgICIgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCi0gICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKLS0tPgogPGh0bWw+CiA8aGVhZD4K
IDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+
CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWRE
QidzIGJlaGF2aW9yIGRlbGV0aW5nIGVudHJ5IHdpdGggbm8ga2V5Iik7Ci0KLWZ1bmN0aW9uIHRl
c3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5s
b2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsK
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRp
b24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1
Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24o
J3ZlcnNpb24gMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlQW5k
Q3JlYXRlT2JqZWN0U3RvcmU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFuRGF0YWJhc2VBbmRDcmVhdGVPYmplY3RTdG9y
ZSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLSAgICBvYmplY3RTdG9yZSA9
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2JhcicpOyIp
OwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIm9iamVjdFN0b3JlLmRlbGV0ZShudWxsKTsi
LCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsK
LX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9rZXkt
cmVxdWlyZW1lbnRzLWRlbGV0ZS1udWxsLWtleS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwv
Ym9keT4KIDwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW96aWxsYS9rZXktcmVxdWlyZW1lbnRzLWlubGluZS1hbmQtcGFzc2VkLmh0bWwgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMtaW5saW5l
LWFuZC1wYXNzZWQuaHRtbAppbmRleCBkYzM1ZTU4MTIwMjk3NGY3MGJhNGNmZjVjMDg0NjcyZmE0
YmFjNjUyLi5iOWRiM2I3MDkxZmIwZmZiMGNlMjJkYWUwNTQwN2I3MzZmYjQ1OGUyIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVu
dHMtaW5saW5lLWFuZC1wYXNzZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMtaW5saW5lLWFuZC1wYXNzZWQuaHRtbApAQCAt
MSw1NCArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0
dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0
L3Rlc3Rfa2V5X3JlcXVpcmVtZW50cy5odG1sCi0gIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoK
LSAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgot
ICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAi
Ci0tLT4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNj
cmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBiZWhhdmlvciBhZGRpbmcgaW5saW5lIGFuZCBwYXNz
ZWQga2V5IHNpbXVsdGFuZW91c2x5Iik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92
ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsK
LSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRl
YnVnKCJvcGVuU3VjY2VzcygpOiIpOwotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50
YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRi
LnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVh
bkRhdGFiYXNlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotfQotCi1mdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKLXsKLSAgICBkZWJ1ZygiY2xlYW5EYXRh
YmFzZSgpOiIpOwotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0gICAgb2JqZWN0U3Rv
cmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdiYXon
LCB7IGtleVBhdGg6ICdpZCcgfSk7Iik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigib2Jq
ZWN0U3RvcmUuYWRkKHtpZDogNX0sIDUpOyIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VS
UiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2tleS1yZXF1aXJlbWVudHMtaW5saW5lLWFuZC1wYXNzZWQu
anMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMtcHV0
LW5vLWtleS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXkt
cmVxdWlyZW1lbnRzLXB1dC1uby1rZXkuaHRtbAppbmRleCA1NWRmMDhhM2E4Njk4Nzk2ZDA5ZGI5
NzhmNWUzYTA3ZjM2MTY4ZmRlLi42ZDRlMDU2MGIzOGIyZjY3ZGM2M2RkYTU0YTQ1Zjc1NTU0NTky
Y2UwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tl
eS1yZXF1aXJlbWVudHMtcHV0LW5vLWtleS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEva2V5LXJlcXVpcmVtZW50cy1wdXQtbm8ta2V5Lmh0bWwKQEAgLTEs
NTMgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLQotICBvcmlnaW5hbCB0ZXN0OiBodHRw
Oi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90
ZXN0X2tleV9yZXF1aXJlbWVudHMuaHRtbAotICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Ci0g
ICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KLSAg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgot
LS0+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
c2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3Jp
cHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgYmVoYXZpb3IgcHV0aW5nIHdpdGhvdXQga2V5Iik7Ci0K
LWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBu
YW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0
IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFt
ZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVu
Y3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50
YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRi
LnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFz
ZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQot
ZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRi
KTsKLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ2JhcicpOyIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIm9iamVj
dFN0b3JlLnB1dCh7fSk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0gICAg
ZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMva2V5LXJlcXVpcmVtZW50cy1wdXQtbm8ta2V5LmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMtcHV0LW51bGwta2V5Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMt
cHV0LW51bGwta2V5Lmh0bWwKaW5kZXggYjRlMjlkYTM3OTRiNDZmZjkxZWI2NWQ4ZTJiNzYzOTdm
YmRmNzFkNC4uNzBjOTI0MTk2MDdkM2Q3ZjFmYjIwMDQ4Y2I5ZjAwM2QyNTUzNjE5NCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWlyZW1l
bnRzLXB1dC1udWxsLWtleS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vemlsbGEva2V5LXJlcXVpcmVtZW50cy1wdXQtbnVsbC1rZXkuaHRtbApAQCAtMSw1MyArMSwx
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIu
bW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3Rfa2V5
X3JlcXVpcmVtZW50cy5odG1sCi0gIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKLSAgICAiIEFu
eSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgotICAgICAgaHR0
cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCi0tLT4KIDxo
dG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQu
anMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigi
VGVzdCBJbmRleGVkREIncyBiZWhhdmlvciBwdXQoKWluZyB3aXRoIG51bGwga2V5Iik7Ci0KLWZ1
bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1l
ID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERh
dGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwg
ZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rp
b24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJn
ZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNl
dFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVu
Y3Rpb24gY2xlYW5EYXRhYmFzZSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsK
LSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ2JhcicpOyIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIm9iamVjdFN0
b3JlLnB1dCh7fSwgbnVsbCk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0g
ICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMva2V5LXJlcXVpcmVtZW50cy1wdXQtbnVsbC1rZXkuanMiPjwvc2NyaXB0
PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEva2V5LXJlcXVpcmVtZW50cy5odG1sIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWlyZW1lbnRzLmh0bWwKaW5k
ZXggODMxZjIzNTI4MzBjN2ZiNTQ1YzRhNTE5OTA5ZWEzYzc1ZjgwZDhlNC4uYzMyNGZmNTE0ZDBl
NWVmOTIyNjk2ODU4ZmRlYjE2NGQ4MzViOWExYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWlyZW1lbnRzLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWlyZW1lbnRzLmh0bWwKQEAg
LTEsODYgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLQotICBvcmlnaW5hbCB0ZXN0OiBo
dHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVz
dC90ZXN0X2tleV9yZXF1aXJlbWVudHMuaHRtbAotICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6
Ci0gICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
LSAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8g
IgotLS0+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVz
Y3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgZXZlbnQudGFyZ2V0LnJlc3VsdCBhZnRlciBhZGQo
KSBhbmQgcHV0KCkiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJl
Zml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2Ny
aXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5k
TG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBjbGVhbkRhdGFiYXNlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKLXsKLSAgICBkZWxldGVB
bGxPYmplY3RTdG9yZXMoZGIpOwotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0
U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJywgeyBhdXRvSW5jcmVtZW50OiB0cnVl
IH0pOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
YWRkKHt9KTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RBZGQ7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHBvc3RB
ZGQoKQotewotICAgIGtleTEgPSBldmFsQW5kTG9nKCJrZXkxID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dDsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1
dCh7fSwga2V5MSk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0UHV0MTsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24g
cG9zdFB1dDEoKQotewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgImtleTEi
KTsKLSAgICBrZXkyID0gZXZhbEFuZExvZygia2V5MiA9IDEwOyIpOwotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KHt9LCBrZXkyKTsiKTsKLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RQdXQyOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBwb3N0UHV0MigpCi17Ci0gICAgc2hv
dWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAia2V5MiIpOwotICAgIGtleTIgPSBldmFsQW5k
TG9nKCJrZXkyID0gMTAwOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
b2JqZWN0U3RvcmUucHV0KHt9LCBrZXkyKTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBv
c3RQdXQzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
fQotCi1mdW5jdGlvbiBwb3N0UHV0MygpCi17Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5y
ZXN1bHQiLCAia2V5MiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQot
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2tleS1yZXF1aXJlbWVudHMuanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0LWN1cnNvcnMuaHRtbCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0LWN1cnNvcnMuaHRtbApp
bmRleCAxMDJhYTBhNDE0MDAzOTFiYTlmMjZkNmIxZjI4NDc1Yzk0NTFhMzY1Li5hMTQ3MWU4Njll
YjUzYjZjMjBmZmI3ZTRjOGUxMDk5NWNlMTJkNzA4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29iamVjdC1jdXJzb3JzLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9vYmplY3QtY3Vyc29ycy5odG1sCkBAIC0x
LDk3ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KLTwhLS0KLSAgb3JpZ2luYWwgdGVzdDogaHR0
cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3Qv
dGVzdF9vYmplY3RDdXJzb3JzLmh0bWwKLSAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgotICAg
ICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCi0gICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKLS0t
PgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3No
YXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0
aW9uKCJUZXN0IEluZGV4ZWREQidzIGluZGV4IGN1cnNvcnMiKTsKLQotZnVuY3Rpb24gdGVzdCgp
Ci17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0
aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbiki
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2Vz
cygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsK
LQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScp
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjbGVhbkRh
dGFiYXNlKCkKLXsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotICAgIGF1dG9JbmNy
ZW1lbnQgPSBldmFsQW5kTG9nKCJhdXRvSW5jcmVtZW50ID0gZmFsc2U7Iik7Ci0gICAgb2JqZWN0
U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdh
JywgeyBrZXlQYXRoOiAnaWQnLCBhdXRvSW5jcmVtZW50OiBhdXRvSW5jcmVtZW50IH0pOyIpOwot
ICAgIGluZGV4ZXMgPSBbCi0gICAgICAgIHsgbmFtZTogImEiLCBvcHRpb25zOiB7IH0gfSwKLSAg
ICAgICAgeyBuYW1lOiAiYiIsIG9wdGlvbnM6IHsgdW5pcXVlOiB0cnVlIH0gfQotICAgIF07Ci0g
ICAgZm9yIChqIGluIGluZGV4ZXMpIHsKLSAgICAgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUu
Y3JlYXRlSW5kZXgoaW5kZXhlc1tqXS5uYW1lLCAnbmFtZScsIGluZGV4ZXNbal0ub3B0aW9ucyk7
Iik7Ci0gICAgfQotICAgIGRhdGEgPSBldmFsQW5kTG9nKCJkYXRhID0geyBuYW1lOiAnQmVuJywg
aWQ6IDEgfTsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0
b3JlLmFkZChkYXRhKTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RBZGQ7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9u
IHBvc3RBZGQoKQotewotICAgIG51bUluZGV4ZXMgPSBpbmRleGVzLmxlbmd0aDsKLSAgICBpbmRl
eGVzRmluaXNoZWQgPSAwOwotICAgIGZvciAoaiBpbiBpbmRleGVzKSB7Ci0gICAgICAgIGluZGV4
ID0gZXZhbEFuZExvZygiaW5kZXggPSBvYmplY3RTdG9yZS5pbmRleChpbmRleGVzW2pdLm5hbWUp
OyIpOwotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4Lm9wZW5D
dXJzb3IoKTsiKTsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAg
ICAgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLm5hbWUiLCAiJ0Jl
biciKTsKLSAgICAgICAgICAgIGlmICgrK2luZGV4ZXNGaW5pc2hlZCA9PSBudW1JbmRleGVzKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG9JbmNyZW1lbnQpIHsKLSAgICAgICAgICAgICAgICAg
ICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgc2V0dXBBdXRvSW5jcmVtZW50KCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfQotICAgICAgICB9OwotICAgIH0KLX0KLQotZnVuY3Rpb24gc2V0dXBBdXRvSW5jcmVt
ZW50KCkKLXsKLSAgICBhdXRvSW5jcmVtZW50ID0gZXZhbEFuZExvZygiYXV0b0luY3JlbWVudCA9
IHRydWU7Iik7Ci0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdiJywgeyBrZXlQYXRoOiAnaWQnLCBhdXRvSW5jcmVtZW50OiBh
dXRvSW5jcmVtZW50IH0pOyIpOwotICAgIGZvciAoaiBpbiBpbmRleGVzKSB7Ci0gICAgICAgIGV2
YWxBbmRMb2coIm9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KGluZGV4ZXNbal0ubmFtZSwgJ25hbWUn
LCBpbmRleGVzW2pdLm9wdGlvbnMpOyIpOwotICAgIH0KLSAgICBkYXRhID0gZXZhbEFuZExvZygi
ZGF0YSA9IHsgbmFtZTogJ0JlbicgfTsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVx
dWVzdCA9IG9iamVjdFN0b3JlLmFkZChkYXRhKTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IHBvc3RBZGQ7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb2Jq
ZWN0LWN1cnNvcnMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0
LWlkZW50aXR5Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29i
amVjdC1pZGVudGl0eS5odG1sCmluZGV4IGU0MTI0OTYxMTg1MDRkODhhNjIwMjEzMGVmYjE3M2Nj
YjcxOGUyNDcuLmQxMGJlOWQ3NjQ1NjdlMjVlZGRiZjljMzdjMjhiODNmOTliNTcyOWMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0LWlkZW50
aXR5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9vYmpl
Y3QtaWRlbnRpdHkuaHRtbApAQCAtMSw3NiArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0t
Ci0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3Vy
Y2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3Rfb2JqZWN0X2lkZW50aXR5Lmh0bWw/Zm9yY2U9MQot
ICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Ci0gICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KLSAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgotLS0+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVh
ZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCOiBvYmpl
Y3QgaWRlbnRpdHkiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJl
Zml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2Ny
aXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5k
TG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gY3JlYXRlT2JqZWN0U3RvcmVBbmRJbmRleDsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY3JlYXRlT2JqZWN0U3RvcmVBbmRJ
bmRleCgpCi17Ci0gICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGV2
ZW50LnRhcmdldC50cmFuc2FjdGlvbjsiKTsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIp
OwotICAgIG9iamVjdFN0b3JlMSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlMSA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdmb28nKTsiKTsKLSAgICBvYmplY3RTdG9yZTIgPSBldmFsQW5kTG9nKCJv
YmplY3RTdG9yZTIgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnZm9vJyk7Iik7Ci0gICAgc2hv
dWxkQmVUcnVlKCJvYmplY3RTdG9yZTEgPT09IG9iamVjdFN0b3JlMiIpOwotICAgIGluZGV4MSA9
IGV2YWxBbmRMb2coImluZGV4MSA9IG9iamVjdFN0b3JlMS5jcmVhdGVJbmRleCgnYmFyJywgJ2tl
eScpOyIpOwotICAgIGluZGV4MiA9IGV2YWxBbmRMb2coImluZGV4MiA9IG9iamVjdFN0b3JlMi5p
bmRleCgnYmFyJyk7Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJpbmRleDEgPT09IGluZGV4MiIpOwot
ICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB0ZXN0SWRlbnRpdHlTb21l
TW9yZTsiKTsKLX0KLQotZnVuY3Rpb24gdGVzdElkZW50aXR5U29tZU1vcmUoKQotewotICAgIHRy
YW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignZm9v
Jyk7Iik7Ci0gICAgb2JqZWN0U3RvcmUzID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUzID0gdHJh
bnNhY3Rpb24ub2JqZWN0U3RvcmUoJ2ZvbycpOyIpOwotICAgIG9iamVjdFN0b3JlNCA9IGV2YWxB
bmRMb2coIm9iamVjdFN0b3JlNCA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdmb28nKTsiKTsK
LSAgICBzaG91bGRCZVRydWUoIm9iamVjdFN0b3JlMyA9PT0gb2JqZWN0U3RvcmU0Iik7Ci0KLSAg
ICBzaG91bGRCZUZhbHNlKCJvYmplY3RTdG9yZTMgPT09IG9iamVjdFN0b3JlMSIpOwotICAgIHNo
b3VsZEJlRmFsc2UoIm9iamVjdFN0b3JlNCA9PT0gb2JqZWN0U3RvcmUyIik7Ci0KLSAgICBpbmRl
eDMgPSBldmFsQW5kTG9nKCJpbmRleDMgPSBvYmplY3RTdG9yZTMuaW5kZXgoJ2JhcicpOyIpOwot
ICAgIGluZGV4NCA9IGV2YWxBbmRMb2coImluZGV4NCA9IG9iamVjdFN0b3JlNC5pbmRleCgnYmFy
Jyk7Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJpbmRleDMgPT09IGluZGV4NCIpOwotCi0gICAgc2hv
dWxkQmVGYWxzZSgiaW5kZXgzID09PSBpbmRleDEiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJpbmRl
eDQgPT09IGluZGV4MiIpOwotCi0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXRlc3QoKTsKLQot
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL29iamVjdC1pZGVudGl0eS5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9vYmplY3Qtc3RvcmUtaW5saW5lLWF1dG9p
bmNyZW1lbnQta2V5LWFkZGVkLW9uLXB1dC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9vYmplY3Qtc3RvcmUtaW5saW5lLWF1dG9pbmNyZW1lbnQta2V5LWFkZGVk
LW9uLXB1dC5odG1sCmluZGV4IDM1ZDlmMzM1N2QxNzc4YzlhYmU4ODVhOGE5OGE4MDNjYTIwYjM5
NDkuLjkyMDExYjYzMWQwZjcyYzA5MjViMDQ1ZTBlNjdkOGEwMjU5NWFhMzMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0LXN0b3JlLWlubGlu
ZS1hdXRvaW5jcmVtZW50LWtleS1hZGRlZC1vbi1wdXQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29iamVjdC1zdG9yZS1pbmxpbmUtYXV0b2luY3JlbWVu
dC1rZXktYWRkZWQtb24tcHV0Lmh0bWwKQEAgLTEsNzUgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1s
PgotPCEtLQotICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEy
LjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X29iamVjdFN0b3JlX2lubGluZV9hdXRv
aW5jcmVtZW50X2tleV9hZGRlZF9vbl9wdXQuaHRtbD9mb3JjZT0xCi0gIGxpY2Vuc2Ugb2Ygb3Jp
Z2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgotICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2Ny
aXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgYWRkaW5nIGFuIGF1dG9pbmNyZW1l
bnRlZCBrZXkgYW5kIHJldHJpZXZpbmcgaXQgc3VjY2Vzc2Z1bGx5Iik7Ci0KLWZ1bmN0aW9uIHRl
c3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5s
b2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsK
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRp
b24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1
Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24o
JzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0dXBPYmplY3RTdG9yZTsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24g
c2V0dXBPYmplY3RTdG9yZSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLSAg
ICB0ZXN0ID0gZXZhbEFuZExvZygidGVzdCA9IHtcbiIgKwotIiAgICAgICAgbmFtZTogJ2lubGlu
ZSBrZXk7IGtleSBnZW5lcmF0b3InLFxuIiArCi0iICAgICAgICBhdXRvSW5jcmVtZW50OiB0cnVl
LFxuIiArCi0iICAgICAgICBzdG9yZWRPYmplY3Q6IHsgbmFtZTogJ0xpbmNvbG4nIH0sXG4iICsK
LSIgICAgICAgIGtleU5hbWU6ICdpZCcsXG4iICsKLSIgICAgfTsiKTsKLSAgICBvYmplY3RTdG9y
ZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUodGVzdC5u
YW1lLCB7IGtleVBhdGg6IHRlc3Qua2V5TmFtZSwgYXV0b0luY3JlbWVudDogdGVzdC5hdXRvSW5j
cmVtZW50IH0pOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0
U3RvcmUuYWRkKHRlc3Quc3RvcmVkT2JqZWN0KTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGFkZFN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIGFkZFN1Y2Nlc3MoKQotewotICAgIGlkID0gZXZhbEFuZExvZygi
aWQgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KGlkKTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGdldFN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIGdldFN1Y2Nlc3MoKQotewotICAgIHNob3VsZEJlKCJldmVudC50
YXJnZXQucmVzdWx0Lm5hbWUiLCAidGVzdC5zdG9yZWRPYmplY3QubmFtZSIpOwotICAgIHNob3Vs
ZEJlKCJldmVudC50YXJnZXQucmVzdWx0LmlkIiwgImlkIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7
Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb2Jq
ZWN0LXN0b3JlLWlubGluZS1hdXRvaW5jcmVtZW50LWtleS1hZGRlZC1vbi1wdXQuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0LXN0b3JlLXJlbW92ZS12YWx1ZXMu
aHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0LXN0b3Jl
LXJlbW92ZS12YWx1ZXMuaHRtbAppbmRleCBjMDkxNGJiZGMxYWU2NGQ0ZmU1NTdmYTMxMzcwZWIz
NDAwZDJmYzYyLi5kOGM0ZTk1N2U2YjQ2NGU3YzZhY2RlNjBlZjIwODZlNDQ1MzNiZTY2IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29iamVjdC1zdG9y
ZS1yZW1vdmUtdmFsdWVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW96aWxsYS9vYmplY3Qtc3RvcmUtcmVtb3ZlLXZhbHVlcy5odG1sCkBAIC0xLDEzMiArMSwxMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96
aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3Rfb2JqZWN0
U3RvcmVfcmVtb3ZlX3ZhbHVlcy5odG1sP2ZvcmNlPTEKLSAgbGljZW5zZSBvZiBvcmlnaW5hbCB0
ZXN0OgotICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCi0gICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvICIKLS0tPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0K
LWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQjogYWRkcywgZ2V0cywgZGVsZXRlcywgYW5kIHJl
LWdldHMgYSByZWNvcmQgaW4gYSB2YXJpZXR5IG9mIGRpZmZlcmVudCBvYmplY3Qgc3RvcmUgY29u
ZmlndXJhdGlvbnMiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJl
Zml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2Ny
aXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5k
TG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIGRhdGEgPSBldmFsQW5kTG9n
KCJkYXRhID0gW1xuIiArCi0iICAgICAgICB7IG5hbWU6ICdpbmxpbmUga2V5OyBrZXkgZ2VuZXJh
dG9yJyxcbiIgKwotIiAgICAgICAgICBhdXRvSW5jcmVtZW50OiB0cnVlLFxuIiArCi0iICAgICAg
ICAgIHN0b3JlZE9iamVjdDoge25hbWU6ICdMaW5jb2xuJ30sXG4iICsKLSIgICAgICAgICAga2V5
TmFtZTogJ2lkJyxcbiIgKwotIiAgICAgICAgICBrZXlWYWx1ZTogdW5kZWZpbmVkLFxuIiArCi0i
ICAgICAgICB9LFxuIiArCi0iICAgICAgICB7IG5hbWU6ICdpbmxpbmUga2V5OyBubyBrZXkgZ2Vu
ZXJhdG9yJyxcbiIgKwotIiAgICAgICAgICBhdXRvSW5jcmVtZW50OiBmYWxzZSxcbiIgKwotIiAg
ICAgICAgICBzdG9yZWRPYmplY3Q6IHtpZDogMSwgbmFtZTogJ0xpbmNvbG4nfSxcbiIgKwotIiAg
ICAgICAgICBrZXlOYW1lOiAnaWQnLFxuIiArCi0iICAgICAgICAgIGtleVZhbHVlOiB1bmRlZmlu
ZWQsXG4iICsKLSIgICAgICAgIH0sXG4iICsKLSIgICAgICAgIHsgbmFtZTogJ291dCBvZiBsaW5l
IGtleTsga2V5IGdlbmVyYXRvcicsXG4iICsKLSIgICAgICAgICAgYXV0b0luY3JlbWVudDogdHJ1
ZSxcbiIgKwotIiAgICAgICAgICBzdG9yZWRPYmplY3Q6IHtuYW1lOiAnTGluY29sbid9LFxuIiAr
Ci0iICAgICAgICAgIGtleU5hbWU6IHVuZGVmaW5lZCxcbiIgKwotIiAgICAgICAgICBrZXlWYWx1
ZTogdW5kZWZpbmVkLFxuIiArCi0iICAgICAgICB9LFxuIiArCi0iICAgICAgICB7IG5hbWU6ICdv
dXQgb2YgbGluZSBrZXk7IG5vIGtleSBnZW5lcmF0b3InLFxuIiArCi0iICAgICAgICAgIGF1dG9J
bmNyZW1lbnQ6IGZhbHNlLFxuIiArCi0iICAgICAgICAgIHN0b3JlZE9iamVjdDoge25hbWU6ICdM
aW5jb2xuJ30sXG4iICsKLSIgICAgICAgICAga2V5TmFtZTogdW5kZWZpbmVkLFxuIiArCi0iICAg
ICAgICAgIGtleVZhbHVlOiAxLFxuIiArCi0iICAgICAgICB9XG4iICsKLSIgICAgXTsiKTsKLQot
ICAgIGkgPSBldmFsQW5kTG9nKCJpID0gMDsiKTsKLSAgICBzZXRWZXJzaW9uKCk7Ci19Ci0KLWZ1
bmN0aW9uIHNldFZlcnNpb24oKQotewotICAgIGlmIChpIDwgZGF0YS5sZW5ndGgpIHsKLSAgICAg
ICAgdGVzdCA9IGRhdGFbaV07Ci0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Jl
YXRlT2JqZWN0U3RvcmU7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0K
LX0KLQotZnVuY3Rpb24gY3JlYXRlT2JqZWN0U3RvcmUoKQotewotICAgIGRlbGV0ZUFsbE9iamVj
dFN0b3JlcyhkYik7Ci0KLSAgICBpZiAodGVzdC5rZXlOYW1lKSB7Ci0gICAgICAgIG9iamVjdFN0
b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSh0ZXN0
Lm5hbWUsIHsga2V5UGF0aDogdGVzdC5rZXlOYW1lLCBhdXRvSW5jcmVtZW50OiB0ZXN0LmF1dG9J
bmNyZW1lbnQgfSk7Iik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgb2JqZWN0U3RvcmUgPSBldmFs
QW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKHRlc3QubmFtZSwgeyBh
dXRvSW5jcmVtZW50OiB0ZXN0LmF1dG9JbmNyZW1lbnQgfSk7Iik7Ci0gICAgfQotICAgIGlmICh0
ZXN0LmtleVZhbHVlKSB7Ci0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
b2JqZWN0U3RvcmUuYWRkKHRlc3Quc3RvcmVkT2JqZWN0LCB0ZXN0LmtleVZhbHVlKTsiKTsKLSAg
ICB9IGVsc2UgewotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVj
dFN0b3JlLmFkZCh0ZXN0LnN0b3JlZE9iamVjdCk7Iik7Ci0gICAgfQotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZ2V0UmVjb3JkOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBnZXRSZWNvcmQoKQotewotICAgIGlkID0gZXZhbEFu
ZExvZygiaWQgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KGlkKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRl
bGV0ZVJlY29yZDsKLX0KLQotZnVuY3Rpb24gZGVsZXRlUmVjb3JkKCkKLXsKLSAgICBzaG91bGRC
ZSgidGVzdC5zdG9yZWRPYmplY3QubmFtZSIsICJldmVudC50YXJnZXQucmVzdWx0Lm5hbWUiKTsK
LQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZGVsZXRl
KGlkKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldFJlY29yZEFnYWluOwotfQotCi1mdW5jdGlvbiBn
ZXRSZWNvcmRBZ2FpbigpCi17Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBv
YmplY3RTdG9yZS5nZXQoaWQpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZmluYWxDaGVjazsKLX0KLQot
ZnVuY3Rpb24gZmluYWxDaGVjaygpCi17Ci0gICAgc2hvdWxkQmVUcnVlKCJldmVudC50YXJnZXQu
cmVzdWx0ID09PSB1bmRlZmluZWQiKTsKLSAgICBpKys7Ci0gICAgc2V0VmVyc2lvbigpOwotfQot
Ci0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL29iamVjdC1z
dG9yZS1yZW1vdmUtdmFsdWVzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9o
dG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L29iamVjdHN0b3JlbmFtZXMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
emlsbGEvb2JqZWN0c3RvcmVuYW1lcy5odG1sCmluZGV4IGVlNThjMjUyZWQ2N2NhZWY2YTI0NTI4
MGNkMzk5MTM2NTc2MGQ4YzcuLjM5NDk0OTQ0Yjg5MWEwM2Y0OWVjMjUxMDk2YWVmN2UxZGZiZDM3
NjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2Jq
ZWN0c3RvcmVuYW1lcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
emlsbGEvb2JqZWN0c3RvcmVuYW1lcy5odG1sCkBAIC0xLDU4ICsxLDEwIEBACi08IURPQ1RZUEUg
aHRtbD4KLTwhLS0KLSAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3pp
bGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9nbG9iYWxfZGF0YS5odG1sCi0g
IGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgotICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFk
PgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBvYmpl
Y3RTdG9yZU5hbWVzIGFycmF5Iik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZl
bmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAg
ICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRiID0g
ZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCi17Ci0gICAg
ZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9iamVjdFN0b3JlTmFtZSA9ICJhIjsK
LSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lLCB7IGtleVBhdGg6ICdpZCcsIGF1dG9JbmNyZW1lbnQ6
IHRydWUgfSk7Iik7Ci0KLSAgICBzaG91bGRCZVRydWUoIidvYmplY3RTdG9yZU5hbWVzJyBpbiBk
YiIpOwotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIxIik7Ci0g
ICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMuaXRlbSgwKSIsICJvYmplY3RTdG9yZU5h
bWUiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9vYmplY3RzdG9yZW5hbWVzLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL29kZC1yZXN1bHQtb3JkZXIuaHRtbCBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2RkLXJlc3VsdC1vcmRlci5odG1sCmluZGV4IGNl
NzE1NjNlMDA5MWYwYmY5Y2FkNTcwNWM3Y2VjMTM2MTk2MTVmYzguLjc3Nzk3ZGZjNWYyM2UxNGVi
NDM1ODYzYjhkZWYzMDI4MTlmZDYzYmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvb2RkLXJlc3VsdC1vcmRlci5odG1sCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2RkLXJlc3VsdC1vcmRlci5odG1sCkBAIC0xLDEy
NyArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6
Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rl
c3Rfb2RkX3Jlc3VsdF9vcmRlci5odG1sP3Jhdz0xCi0gIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVz
dDoKLSAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgotICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1k
ZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREI6IHJlcXVlc3QgcmVzdWx0IHBlcnNpc3RzIGluIHNl
dFRpbWVvdXQgY2FsbGJhY2siKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVu
ZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAg
IGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGVidWco
Im9wZW5TdWNjZXNzKCk6Iik7Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IG51bGw7Iik7Ci0g
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9
IHJlcXVlc3QucmVzdWx0OyIpOwotICAgICAgICBjaGVja0RhdGFiYXNlVHlwZSgpOwotICAgIH0s
IDApOwotfQotCi1mdW5jdGlvbiBjaGVja0RhdGFiYXNlVHlwZSgpCi17Ci0gICAgZGVidWcoImNo
ZWNrRGF0YWJhc2VUeXBlKCk6Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJkYiBpbnN0YW5jZW9mIElE
QkRhdGFiYXNlIik7Ci0gICAgZGIub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXR1cE9iamVjdFN0b3JlOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXR1cE9i
amVjdFN0b3JlKCkKLXsKLSAgICBkZWJ1Zygic2V0dXBPYmplY3RTdG9yZSgpOiIpOwotICAgIGRl
bGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJv
YmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7IGtleVBhdGg6ICdrZXkn
LCBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOyIpOwotICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5k
ZXggPSBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgnZm9vJywgJ2luZGV4Jyk7Iik7Ci0gICAgZXZh
bEFuZExvZygiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBhZGRSZWNvcmQ7
Iik7Ci19Ci0KLWZ1bmN0aW9uIGFkZFJlY29yZCgpCi17Ci0gICAgZGVidWcoImFkZFJlY29yZCgp
OiIpOwotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi50cmFu
c2FjdGlvbignZm9vJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3RvcmUoJ2Zv
bycpOyIpOwotICAgIGRhdGEgPSBldmFsQW5kTG9nKCJkYXRhID0geyBrZXk6IDUsIGluZGV4OiAx
MCB9OyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
YWRkKGRhdGEpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkU3VjY2VzczsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24g
YWRkU3VjY2VzcygpCi17Ci0gICAgZGVidWcoImFkZFN1Y2Nlc3MoKToiKTsKLSAgICBrZXkgPSBl
dmFsQW5kTG9nKCJrZXkgPSBudWxsOyIpOwotICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0g
ICAgICBrZXkgPSBldmFsQW5kTG9nKCJrZXkgPSByZXF1ZXN0LnJlc3VsdDsiKTsKLSAgICAgIGNo
ZWNrQWRkZWRLZXkoKTsKLSAgICB9LCAwKTsKLX0KLQotZnVuY3Rpb24gY2hlY2tBZGRlZEtleSgp
Ci17Ci0gICAgZGVidWcoImNoZWNrQWRkZWRLZXkoKToiKTsKLSAgICBzaG91bGRCZSgia2V5Iiwg
ImRhdGEua2V5Iik7Ci0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9
IGRiLnRyYW5zYWN0aW9uKCdmb28nKS5vYmplY3RTdG9yZSgnZm9vJyk7Iik7Ci0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5nZXQoZGF0YS5rZXkpOyIpOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0U3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZ2V0U3VjY2VzcygpCi17
Ci0gICAgZGVidWcoImdldFN1Y2Nlc3MoKToiKTsKLSAgICByZWNvcmQgPSBldmFsQW5kTG9nKCJy
ZWNvcmQgPSBudWxsOyIpOwotICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICByZWNv
cmQgPSBldmFsQW5kTG9nKCJyZWNvcmQgPSByZXF1ZXN0LnJlc3VsdDsiKTsKLSAgICAgIGNoZWNr
UmV0cmlldmVkS2V5KCk7Ci0gICAgfSwgMCk7Ci19Ci0KLWZ1bmN0aW9uIGNoZWNrUmV0cmlldmVk
S2V5KCkKLXsKLSAgICBkZWJ1ZygiY2hlY2tSZXRyaWV2ZWRLZXkoKToiKTsKLSAgICBzaG91bGRC
ZSgicmVjb3JkLmtleSIsICJkYXRhLmtleSIpOwotICAgIHNob3VsZEJlKCJyZWNvcmQuaW5kZXgi
LCAiZGF0YS5pbmRleCIpOwotICAgIGRlbGV0ZVJlY29yZCgpOwotfQotCi1mdW5jdGlvbiBkZWxl
dGVSZWNvcmQoKQotewotICAgIGRlYnVnKCJkZWxldGVSZWNvcmQoKToiKTsKLSAgICBvYmplY3RT
dG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIudHJhbnNhY3Rpb24oJ2ZvbycsIElE
QlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpLm9iamVjdFN0b3JlKCdmb28nKTsiKTsKLSAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmRlbGV0ZShkYXRhLmtleSk7
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVTdWNjZXNzOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBkZWxldGVT
dWNjZXNzKCkKLXsKLSAgICBkZWJ1ZygiZGVsZXRlU3VjY2VzcygpOiIpOwotICAgIGZpbmlzaEpT
VGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL29kZC1yZXN1bHQtb3JkZXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L29wZW4tZGF0YWJhc2UtbnVsbC1uYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL29wZW4tZGF0YWJhc2UtbnVsbC1uYW1lLmh0bWwKaW5kZXggOTA5ODQwZGJj
M2M0YTI1OGNhMjU5NzBiNWZjZTJjMDZlY2Y2OTg0Yy4uOGQyN2U4M2JhNjNmMjJjYmYyMGYyYzBh
ZDY4YTEyNjI4MTk2ZTM5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW96aWxsYS9vcGVuLWRhdGFiYXNlLW51bGwtbmFtZS5odG1sCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb3Blbi1kYXRhYmFzZS1udWxsLW5hbWUuaHRtbApA
QCAtMSw0MiArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6
IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90
ZXN0L3Rlc3Rfb3Blbl9lbXB0eV9kYi5odG1sP2ZvcmNlPTEKLSAgbGljZW5zZSBvZiBvcmlnaW5h
bCB0ZXN0OgotICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCi0gICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvICIKLS0tPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+
Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQjogc2hvdWxkIE5PVCB0aHJvdyB3aGVuIG9w
ZW5pbmcgYSBkYXRhYmFzZSB3aXRoIGEgbnVsbCBuYW1lIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQot
ewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBU
ZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4o
bnVsbCk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3Bl
blN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVz
dWx0Iik7Ci0gICAgc2hvdWxkQmUoImRiLm5hbWUiLCAiJ251bGwnIik7Ci0gICAgZmluaXNoSlNU
ZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvb3Blbi1kYXRhYmFzZS1udWxsLW5hbWUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2Jv
ZHk+CiA8L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vemlsbGEvcHV0LWdldC12YWx1ZXMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvcHV0LWdldC12YWx1ZXMuaHRtbAppbmRleCAwY2FmYmEzMmM0YzRlODY2ZWQw
ZmEyYjhjZTE5NzIxYWNiNjlhMTQyLi41ODcwMGY2YmY5YjZkMzBhNmVkMzVjNDgyMWIzOTBmZDQ5
NjE3MTM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L3B1dC1nZXQtdmFsdWVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW96aWxsYS9wdXQtZ2V0LXZhbHVlcy5odG1sCkBAIC0xLDExOSArMSwxMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96
aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfcHV0X2dldF92YWx1ZXMuaHRt
bAotICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Ci0gICAgIiBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KLSAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgotLS0+CiA8aHRtbD4KIDxoZWFkPgogPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwv
aGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mg
cHV0dGluZyBhbmQgZ2V0dGluZyB2YWx1ZXMgaW4gYW4gb2JqZWN0IHN0b3JlIik7Ci0KLWZ1bmN0
aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0g
c2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFi
YXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVz
Y3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24g
b3BlblN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJz
aW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9u
IGNsZWFuRGF0YWJhc2UoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAg
ICB0ZXN0U3RyaW5nID0gZXZhbEFuZExvZygidGVzdFN0cmluZyA9IHsga2V5OiAwLCB2YWx1ZTog
J3Rlc3RTdHJpbmcnIH07Iik7Ci0gICAgdGVzdEludCA9IGV2YWxBbmRMb2coInRlc3RJbnQgPSB7
IGtleTogMSwgdmFsdWU6IDEwMDIgfTsiKTsKLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2co
Im9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ09iamVjdHMnLCB7IGF1dG9JbmNy
ZW1lbnQ6IGZhbHNlIH0pOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
b2JqZWN0U3RvcmUuYWRkKHRlc3RTdHJpbmcudmFsdWUsIHRlc3RTdHJpbmcua2V5KTsiKTsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IHBvc3RBZGQ7Ci19Ci0KLWZ1bmN0aW9uIHBvc3RBZGQoKQotewotICAgIHNo
b3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgInRlc3RTdHJpbmcua2V5Iik7Ci0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5nZXQodGVzdFN0cmluZy5r
ZXkpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdEdldDsKLX0KLQotZnVuY3Rpb24gcG9zdEdldCgp
Ci17Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAidGVzdFN0cmluZy52YWx1
ZSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRk
KHRlc3RJbnQudmFsdWUsIHRlc3RJbnQua2V5KTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RBZGRJ
bnQ7Ci19Ci0KLWZ1bmN0aW9uIHBvc3RBZGRJbnQoKQotewotICAgIHNob3VsZEJlKCJldmVudC50
YXJnZXQucmVzdWx0IiwgInRlc3RJbnQua2V5Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBvYmplY3RTdG9yZS5nZXQodGVzdEludC5rZXkpOyIpOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gcG9zdEdldEludDsKLX0KLQotZnVuY3Rpb24gcG9zdEdldEludCgpCi17Ci0gICAgc2hvdWxk
QmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAidGVzdEludC52YWx1ZSIpOwotICAgIG9iamVjdFN0
b3JlQXV0b0luY3JlbWVudCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlQXV0b0luY3JlbWVudCA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdBdXRvSW5jcmVtZW50ZWQgT2JqZWN0cycsIHsgYXV0b0lu
Y3JlbWVudDogdHJ1ZSB9KTsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IG9iamVjdFN0b3JlQXV0b0luY3JlbWVudC5hZGQodGVzdFN0cmluZy52YWx1ZSk7Iik7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBwb3N0QWRkQXV0b0luY3JlbWVudDsKLX0KLQotZnVuY3Rpb24gcG9zdEFkZEF1
dG9JbmNyZW1lbnQoKQotewotICAgIHRlc3RTdHJpbmcua2V5ID0gZXZhbEFuZExvZygidGVzdFN0
cmluZy5rZXkgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmVBdXRvSW5jcmVtZW50LmdldCh0ZXN0U3RyaW5nLmtl
eSk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0R2V0QXV0b0luY3JlbWVudDsKLX0KLQotZnVuY3Rp
b24gcG9zdEdldEF1dG9JbmNyZW1lbnQoKQotewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQu
cmVzdWx0IiwgInRlc3RTdHJpbmcudmFsdWUiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IG9iamVjdFN0b3JlQXV0b0luY3JlbWVudC5hZGQodGVzdEludC52YWx1ZSk7Iik7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBwb3N0QWRkSW50QXV0b0luY3JlbWVudDsKLX0KLQotZnVuY3Rpb24g
cG9zdEFkZEludEF1dG9JbmNyZW1lbnQoKQotewotICAgIHRlc3RJbnQua2V5ID0gZXZhbEFuZExv
ZygidGVzdEludC5rZXkgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmVBdXRvSW5jcmVtZW50LmdldCh0ZXN0SW50
LmtleSk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0R2V0SW50QXV0b0luY3JlbWVudDsKLX0KLQot
ZnVuY3Rpb24gcG9zdEdldEludEF1dG9JbmNyZW1lbnQoKQotewotICAgIHNob3VsZEJlKCJldmVu
dC50YXJnZXQucmVzdWx0IiwgInRlc3RJbnQudmFsdWUiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsK
LX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9wdXQt
Z2V0LXZhbHVlcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KLQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZWFkb25s
eS10cmFuc2FjdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEvcmVhZG9ubHktdHJhbnNhY3Rpb25zLmh0bWwKaW5kZXggNDY0MTliYjNkYjNiMzdlOTNmZGZl
ZDQyNDdhMGM4YzA0MzE5Y2Y2My4uMjNjOGZjMDY1NWYxZDMxMmFiOWZlNDM5ZjRjNWZjYTNiZWI5
NzMyNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9y
ZWFkb25seS10cmFuc2FjdGlvbnMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL3JlYWRvbmx5LXRyYW5zYWN0aW9ucy5odG1sCkBAIC0xLDY5ICsxLDEwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTwhLS0KLSAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3pp
bGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9yZWFkb25s
eV90cmFuc2FjdGlvbnMuaHRtbAotICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Ci0gICAgIiBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KLSAgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgotLS0+CiA8
aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVk
LmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24o
IlRlc3QgSW5kZXhlZERCJ3MgcmVhZG9ubHkgdHJhbnNhY3Rpb25zIik7Ci0KLWZ1bmN0aW9uIHRl
c3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5s
b2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsK
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRp
b24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1
Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24o
JzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY2xl
YW5EYXRhYmFzZSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9z
TmFtZSA9ICJ0ZXN0IHN0b3JlIjsKLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVj
dFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUob3NOYW1lLCB7IGF1dG9JbmNyZW1lbnQ6IHRy
dWUgfSk7Iik7Ci0gICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5vbmNvbXBsZXRlID0gc2V0VmVyc2lv
bkNvbXBsZXRlOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uQ29tcGxldGUoKQotewotICAgIGV2
YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKFtvc05hbWVdKS5vYmplY3RTdG9y
ZShvc05hbWUpLmFkZCh7fSk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlJFQURfT05MWV9FUlIi
KTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbihvc05hbWUpLm9i
amVjdFN0b3JlKG9zTmFtZSkuYWRkKHt9KTsiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9P
TkxZX0VSUiIpOwotICAgIGtleTEgPSBldmFsQW5kTG9nKCJrZXkxID0gMTsiKTsKLSAgICBrZXky
ID0gZXZhbEFuZExvZygia2V5MiA9IDI7Iik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigi
ZGIudHJhbnNhY3Rpb24oW29zTmFtZV0pLm9iamVjdFN0b3JlKG9zTmFtZSkucHV0KHt9LCBrZXkx
KTsiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUiIpOwotICAgIGV2YWxBbmRF
eHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKG9zTmFtZSkub2JqZWN0U3RvcmUob3NOYW1l
KS5wdXQoe30sIGtleTIpOyIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5SRUFEX09OTFlfRVJSIik7
Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oW29zTmFtZV0pLm9i
amVjdFN0b3JlKG9zTmFtZSkucHV0KHt9LCBrZXkxKTsiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24u
UkVBRF9PTkxZX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0
aW9uKG9zTmFtZSkub2JqZWN0U3RvcmUob3NOYW1lKS5wdXQoe30sIGtleTEpOyIsICJJREJEYXRh
YmFzZUV4Y2VwdGlvbi5SRUFEX09OTFlfRVJSIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlv
bigiZGIudHJhbnNhY3Rpb24oW29zTmFtZV0pLm9iamVjdFN0b3JlKG9zTmFtZSkuZGVsZXRlKGtl
eTEpOyIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5SRUFEX09OTFlfRVJSIik7Ci0gICAgZXZhbEFu
ZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24ob3NOYW1lKS5vYmplY3RTdG9yZShvc05h
bWUpLmRlbGV0ZShrZXkyKTsiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUiIp
OwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3JlYWRvbmx5LXRyYW5zYWN0aW9ucy5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZWFkd3JpdGUtdHJhbnNhY3Rpb25zLmh0bWwgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3JlYWR3cml0ZS10cmFuc2FjdGlvbnMu
aHRtbAppbmRleCBiMGMwNDJjMjFhYzNkODNkNWE4N2NmNTM1NGFjY2EyYTQ5NGQxY2ZkLi43ZmZm
NTA4ZTgzY2Y5NjEwMmFmYzZmYWFhYTUxNmUxZGE1NDc4ZTU0IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3JlYWR3cml0ZS10cmFuc2FjdGlvbnMuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3JlYWR3cml0ZS10
cmFuc2FjdGlvbnMuaHRtbApAQCAtMSwxMjUgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEt
LQotICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291
cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X3JlYWRvbmx5X3RyYW5zYWN0aW9ucy5odG1sCi0g
IGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgotICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFk
PgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyByZWFk
L3dyaXRlIHRyYW5zYWN0aW9ucyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVW
ZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0g
ICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9
IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQotewotICAg
IGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBvc05hbWUgPSAidGVzdCBzdG9yZSI7
Ci0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9i
amVjdFN0b3JlKG9zTmFtZSwgeyBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOyIpOwotICAgIGV2ZW50
LnRhcmdldC5yZXN1bHQub25jb21wbGV0ZSA9IHNldFZlcnNpb25Db21wbGV0ZTsKLX0KLQotZnVu
Y3Rpb24gc2V0VmVyc2lvbkNvbXBsZXRlKCkKLXsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IGRiLnRyYW5zYWN0aW9uKFtvc05hbWVdLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dS
SVRFKS5vYmplY3RTdG9yZShvc05hbWUpLmFkZCh7fSk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBwb3N0QWRkOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotfQotCi1mdW5jdGlvbiBwb3N0QWRkKCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFy
Z2V0LnRyYW5zYWN0aW9uLm1vZGUiLCAiSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSIpOwotICAg
IGtleTEgPSBldmFsQW5kTG9nKCJrZXkxID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnRyYW5zYWN0aW9uKG9zTmFtZSwgSURC
VHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3RvcmUob3NOYW1lKS5hZGQoe30pOyIpOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdEFkZDI7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHBvc3RBZGQyKCkKLXsKLSAg
ICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm1vZGUiLCAiSURCVHJhbnNhY3Rp
b24uUkVBRF9XUklURSIpOwotICAgIGtleTIgPSBldmFsQW5kTG9nKCJrZXkyID0gZXZlbnQudGFy
Z2V0LnJlc3VsdDsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnRy
YW5zYWN0aW9uKFtvc05hbWVdLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKS5vYmplY3RTdG9y
ZShvc05hbWUpLnB1dCh7fSwga2V5MSk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0
UHV0OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQot
Ci1mdW5jdGlvbiBwb3N0UHV0KCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5z
YWN0aW9uLm1vZGUiLCAiSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSIpOwotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIudHJhbnNhY3Rpb24ob3NOYW1lLCBJREJUcmFuc2Fj
dGlvbi5SRUFEX1dSSVRFKS5vYmplY3RTdG9yZShvc05hbWUpLnB1dCh7fSwga2V5Mik7Iik7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0UHV0MjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gcG9zdFB1dDIoKQotewotICAg
IHNob3VsZEJlKCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24ubW9kZSIsICJJREJUcmFuc2FjdGlv
bi5SRUFEX1dSSVRFIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi50
cmFuc2FjdGlvbihbb3NOYW1lXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3Rv
cmUob3NOYW1lKS5wdXQoe30sIGtleTEpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9z
dFB1dDM7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19
Ci0KLWZ1bmN0aW9uIHBvc3RQdXQzKCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRy
YW5zYWN0aW9uLm1vZGUiLCAiSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSIpOwotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIudHJhbnNhY3Rpb24ob3NOYW1lLCBJREJUcmFu
c2FjdGlvbi5SRUFEX1dSSVRFKS5vYmplY3RTdG9yZShvc05hbWUpLnB1dCh7fSwga2V5MSk7Iik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0UHV0NDsKLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gcG9zdFB1dDQoKQotewot
ICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24ubW9kZSIsICJJREJUcmFuc2Fj
dGlvbi5SRUFEX1dSSVRFIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBk
Yi50cmFuc2FjdGlvbihbb3NOYW1lXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0
U3RvcmUob3NOYW1lKS5kZWxldGUoa2V5MSk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBw
b3N0RGVsZXRlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotfQotCi1mdW5jdGlvbiBwb3N0RGVsZXRlKCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFy
Z2V0LnRyYW5zYWN0aW9uLm1vZGUiLCAiSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSIpOwotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIudHJhbnNhY3Rpb24ob3NOYW1lLCBJ
REJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKS5vYmplY3RTdG9yZShvc05hbWUpLmRlbGV0ZShrZXky
KTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3REZWxldGUyOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBwb3N0RGVs
ZXRlMigpCi17Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2RlIiwg
IklEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQot
Ci10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWFkd3JpdGUt
dHJhbnNhY3Rpb25zLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgot
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3JlYWR5
U3RhdGUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVhZHlT
dGF0ZS5odG1sCmluZGV4IDhkMTBhNGJhZGVkOTQ5OWRjMzNmMzI3M2VhYjBkNzZjNTdiYzRlZTYu
LjVjMjJhM2ZlMzRjYTJjYmM5ZDBiMmRhM2Q0NGExNzlhOWIxYTYxMDMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVhZHlTdGF0ZS5odG1sCisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVhZHlTdGF0ZS5odG1sCkBA
IC0xLDgxICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KLTwhLS0KLSAgb3JpZ2luYWwgdGVzdDog
aHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rl
c3QvdGVzdF9yZXF1ZXN0X3JlYWR5U3RhdGUuaHRtbD9mb3JjZT0xCi0gIGxpY2Vuc2Ugb2Ygb3Jp
Z2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgotICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2Ny
aXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgcmVhZHlTdGF0ZSBwcm9wZXJ0eSBk
dXJpbmcgZGlmZmVyZW50IG9wZXJhdGlvbnMiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAg
cmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhu
YW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICBz
aG91bGRCZSgicmVxdWVzdC5yZWFkeVN0YXRlIiwgIklEQlJlcXVlc3QuTE9BRElORyIpOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsK
LSAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKLSAgICBzaG91bGRCZSgicmVxdWVzdC5yZWFk
eVN0YXRlIiwgIklEQlJlcXVlc3QuRE9ORSIpOwotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBl
dmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICBzaG91bGRCZSgicmVxdWVzdC5yZWFkeVN0YXRl
IiwgIklEQlJlcXVlc3QuTE9BRElORyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0dXBP
YmplY3RTdG9yZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLX0KLQotZnVuY3Rpb24gc2V0dXBPYmplY3RTdG9yZSgpCi17Ci0gICAgZGVidWcoInNldHVw
T2JqZWN0U3RvcmUoKToiKTsKLSAgICBzaG91bGRCZSgicmVxdWVzdC5yZWFkeVN0YXRlIiwgIklE
QlJlcXVlc3QuRE9ORSIpOwotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBv
YmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ2ZvbycpOyIpOwotICAgIGtleSA9IGV2YWxBbmRMb2coImtleSA9IDEwOyIpOwotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKHt9LCBrZXkpOyIp
OwotICAgIHNob3VsZEJlKCJyZXF1ZXN0LnJlYWR5U3RhdGUiLCAiSURCUmVxdWVzdC5MT0FESU5H
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRSZWNvcmQ7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGdldFJlY29yZCgp
Ci17Ci0gICAgZGVidWcoImdldFJlY29yZCgpOiIpOwotICAgIHNob3VsZEJlKCJyZXF1ZXN0LnJl
YWR5U3RhdGUiLCAiSURCUmVxdWVzdC5ET05FIik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdl
dC5yZXN1bHQiLCAia2V5Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBv
YmplY3RTdG9yZS5nZXQoa2V5KTsiKTsKLSAgICBzaG91bGRCZSgicmVxdWVzdC5yZWFkeVN0YXRl
IiwgIklEQlJlcXVlc3QuTE9BRElORyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZmluYWxD
aGVjazsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0K
LQotZnVuY3Rpb24gZmluYWxDaGVjaygpCi17Ci0gICAgZGVidWcoImZpbmFsQ2hlY2soKToiKTsK
LSAgICBzaG91bGRCZSgicmVxdWVzdC5yZWFkeVN0YXRlIiwgIklEQlJlcXVlc3QuRE9ORSIpOwot
ICAgIHNob3VsZEJlRmFsc2UoImV2ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCIpOwotICAgIGZp
bmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3JlYWR5U3RhdGUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8
L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEvcmVtb3ZlLWluZGV4Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL3JlbW92ZS1pbmRleC5odG1sCmluZGV4IGRhNTUzOTYwZjczOGM5MGE1OGQzMTQ4OGViYWZi
Zjg4ZGQ4NGYzMDQuLjBlMjBhNzFkYjAzZjk5NTI0MTU2MTBmNmRiOTY4OWZhZGVjMjFmYzggMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVtb3ZlLWlu
ZGV4Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZW1v
dmUtaW5kZXguaHRtbApAQCAtMSw2NiArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi0g
IG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2Uv
ZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfcmVtb3ZlX2luZGV4Lmh0bWwKLSAgbGljZW5zZSBvZiBv
cmlnaW5hbCB0ZXN0OgotICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCi0gICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvICIKLS0tPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxz
Y3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGNyZWF0aW5nIGFuZCBkZWxl
dGluZyBpbmRleGVzIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclBy
ZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNj
cmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
aW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFu
ZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gY3JlYXRlQW5kRGVsZXRlSW5kZXg7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUFuZERlbGV0ZUluZGV4KCkK
LXsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmVOYW1l
ID0gInRlc3Qgc3RvcmUiOwotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3Rv
cmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUsIHsga2V5UGF0aDogJ2Zv
bycgfSk7Iik7Ci0gICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjEi
KTsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5pdGVtKDApIiwgIm9iamVjdFN0
b3JlTmFtZSIpOwotICAgIHNob3VsZEJlKCJvYmplY3RTdG9yZS5pbmRleE5hbWVzLmxlbmd0aCIs
ICIwIik7Ci0KLSAgICBpbmRleE5hbWUgPSAiTXkgVGVzdCBJbmRleCI7Ci0gICAgaW5kZXggPSBl
dmFsQW5kTG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KGluZGV4TmFtZSwgJ2Zv
bycpOyIpOwotICAgIHNob3VsZEJlKCJvYmplY3RTdG9yZS5pbmRleE5hbWVzLmxlbmd0aCIsICIx
Iik7Ci0gICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLmluZGV4TmFtZXMuaXRlbSgwKSIsICJpbmRl
eE5hbWUiKTsKLQotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmRlbGV0ZUluZGV4KGluZGV4
TmFtZSk7Iik7Ci0gICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLmluZGV4TmFtZXMubGVuZ3RoIiwg
IjAiKTsKLQotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JlbW92ZS1pbmRleC5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9yZW1vdmUtb2JqZWN0c3RvcmUuaHRtbCBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVtb3ZlLW9iamVjdHN0b3JlLmh0bWwKaW5kZXgg
ZjA2NjFjNTQ3NWFiMTYxNGYwNTg4OWExMzY0MzYxYjY4Yjg5MmZkZC4uOTJiNzY1MTRiYzIyOGYw
YmY3YWU3ZmJjNWUxYTgzMTYxZjA0NDk4MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9yZW1vdmUtb2JqZWN0c3RvcmUuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3JlbW92ZS1vYmplY3RzdG9yZS5odG1sCkBA
IC0xLDEyMCArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6
IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90
ZXN0L3Rlc3RfcmVtb3ZlX29iamVjdFN0b3JlLmh0bWw/Zm9yY2U9MQotICBsaWNlbnNlIG9mIG9y
aWdpbmFsIHRlc3Q6Ci0gICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KLSAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8gIgotLS0+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNj
cmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGRlbGV0aW5nIGFuIG9iamVjdCBz
dG9yZSIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygp
OwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24g
PSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWRE
Qi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3Bl
blN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRi
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5h
bWVzLmxlbmd0aCIsICIwIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5k
UG9wdWxhdGVPYmplY3RTdG9yZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSgp
Ci17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9iamVjdFN0b3JlTmFt
ZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlTmFtZSA9ICdPYmplY3RzJzsiKTsKLSAgICBvYmpl
Y3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUo
b2JqZWN0U3RvcmVOYW1lLCB7IGtleVBhdGg6ICdmb28nIH0pOyIpOwotCi0gICAgYWRkZWRDb3Vu
dCA9IGV2YWxBbmRMb2coImFkZGVkQ291bnQgPSAwOyIpOwotICAgIGZvciAoaSA9IDA7IGkgPCAx
MDA7IGkrKykgewotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVj
dFN0b3JlLmFkZCh7Zm9vOiBpfSk7Iik7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KGV2ZW50KSB7Ci0gICAgICAgICAgICBpZiAoKythZGRlZENvdW50ID09IDEwMCkgewotICAgICAg
ICAgICAgICAgIGNoZWNrT2JqZWN0U3RvcmUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
ICAgIH0KLX0KLQotZnVuY3Rpb24gY2hlY2tPYmplY3RTdG9yZSgpCi17Ci0gICAgc2hvdWxkQmUo
ImRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjEiKTsKLSAgICBzaG91bGRCZSgiZGIub2Jq
ZWN0U3RvcmVOYW1lcy5pdGVtKDApIiwgIm9iamVjdFN0b3JlTmFtZSIpOwotCi0gICAgcmVxdWVz
dCA9IGRiLnNldFZlcnNpb24oJzInKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RTZXRWZXJzaW9uMjsK
LX0KLQotZnVuY3Rpb24gcG9zdFNldFZlcnNpb24yKCkKLXsKLSAgICBldmFsQW5kTG9nKCJkYi5k
ZWxldGVPYmplY3RTdG9yZShvYmplY3RTdG9yZS5uYW1lKTsiKTsKLSAgICBzaG91bGRCZSgiZGIu
b2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMCIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFs
QW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFt
ZSwgeyBrZXlQYXRoOiAnZm9vJyB9KTsiKTsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVO
YW1lcy5sZW5ndGgiLCAiMSIpOwotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLml0
ZW0oMCkiLCAib2JqZWN0U3RvcmVOYW1lIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1
bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0Iiwg
Im51bGwiKTsKLSAgICAgICAgZGVsZXRlU2Vjb25kT2JqZWN0U3RvcmUoKTsKLSAgICB9Ci19Ci0K
LWZ1bmN0aW9uIGRlbGV0ZVNlY29uZE9iamVjdFN0b3JlKCkKLXsKLSAgICBldmFsQW5kTG9nKCJk
Yi5kZWxldGVPYmplY3RTdG9yZShvYmplY3RTdG9yZS5uYW1lKTsiKTsKLSAgICBzaG91bGRCZSgi
ZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMCIpOwotICAgIHNldFZlcnNpb24zKCk7Ci19
Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb24zKCkKLXsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzMnKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RTZXRW
ZXJzaW9uMzsKLX0KLQotZnVuY3Rpb24gcG9zdFNldFZlcnNpb24zKCkKLXsKLSAgICBvYmplY3RT
dG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUob2Jq
ZWN0U3RvcmVOYW1lLCB7IGtleVBhdGg6ICdmb28nIH0pOyIpOwotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKHtmb286J2Jhcid9KTsiKTsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGRlbGV0ZVRoaXJkT2JqZWN0U3RvcmU7Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZVRo
aXJkT2JqZWN0U3RvcmUoKQotewotICAgIGV2YWxBbmRMb2coImRiLmRlbGV0ZU9iamVjdFN0b3Jl
KG9iamVjdFN0b3JlTmFtZSk7Iik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgp
OwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVtb3ZlLW9iamVjdHN0b3Jl
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgotCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9hZGQtdHdp
Y2UtZmFpbHVyZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVz
b3VyY2VzL2FkZC10d2ljZS1mYWlsdXJlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhZWYzOTI5ZjE4ZjU1Y2Y4
ODY2MjgxZTkxZWJiNDU2ZmU2NTBjYTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9hZGQtdHdpY2UtZmFpbHVyZS5qcwpA
QCAtMCwwICsxLDU5IEBACisvLyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxh
Lm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9hZGRfdHdpY2Vf
ZmFpbHVyZS5odG1sCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisvLyAiIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorLy8gICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKworaWYgKHRoaXMuaW1w
b3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vcmVzb3Vy
Y2VzL3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgYmVoYXZp
b3IgYWRkaW5nIHRoZSBzYW1lIHByb3BlcnR5IHR3aWNlIik7CisKK2Z1bmN0aW9uIHRlc3QoKQor
eworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlv
bi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3Mo
KQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRh
YmFzZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0
b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9v
Jyk7Iik7CisgICAga2V5ID0gZXZhbEFuZExvZygia2V5ID0gMTAiKTsKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZCh7fSwga2V5KTsiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEZpcnN0U3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gYWRkRmlyc3RTdWNjZXNz
KCkKK3sKKyAgICBzaG91bGRCZSgicmVxdWVzdC5yZXN1bHQiLCAia2V5Iik7CisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoe30sIGtleSk7Iik7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOworICAgIHJl
cXVlc3Qub25lcnJvciA9IGFkZFNlY29uZEV4cGVjdGVkRXJyb3I7Cit9CisKK2Z1bmN0aW9uIGFk
ZFNlY29uZEV4cGVjdGVkRXJyb3IoKQoreworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuZXJy
b3JDb2RlIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkNPTlNUUkFJTlRfRVJSIik7CisgICAgZmlu
aXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNl
cy9hdXRvaW5jcmVtZW50LWluZGV4ZXMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL3Jlc291cmNlcy9hdXRvaW5jcmVtZW50LWluZGV4ZXMuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDIxMmYwOWJhM2YzMzJlM2YxMDFlMmU2Zjk4NzUwYTA3MjhlNDFjMAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2F1dG9p
bmNyZW1lbnQtaW5kZXhlcy5qcwpAQCAtMCwwICsxLDg5IEBACisvLyBvcmlnaW5hbCB0ZXN0Ogor
Ly8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERC
L3Rlc3QvdGVzdF9hdXRvSW5jcmVtZW50X2luZGV4ZXMuaHRtbD9mb3JjZT0xCisvLyBsaWNlbnNl
IG9mIG9yaWdpbmFsIHRlc3Q6CisvLyAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorLy8gICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvICIKKworaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9y
dFNjcmlwdHMoJy4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7
CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vcmVzb3VyY2VzL3NoYXJlZC5qcycpOworfQorCitk
ZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgaW5kZXhlcyBhZ2FpbnN0IGF1dG9pbmNyZW1lbnRp
bmcga2V5cyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhl
cygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRp
b24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4
ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
b3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2co
ImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IHNldHVwT2JqZWN0U3RvcmU7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldHVwT2JqZWN0U3RvcmUoKQoreworICAgIHRyYW5z
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwor
CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9i
amVjdFN0b3JlKCdmb28nLCB7IGtleVBhdGg6ICdpZCcsIGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7
Iik7CisgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ2ZpcnN0JywgJ2Zp
cnN0Jyk7Iik7CisgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ3NlY29u
ZCcsICdzZWNvbmQnKTsiKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5jcmVhdGVJbmRl
eCgndGhpcmQnLCAndGhpcmQnKTsiKTsKKyAgICBkYXRhID0gZXZhbEFuZExvZygiZGF0YSA9IHsg
Zmlyc3Q6ICdmb28nLCBzZWNvbmQ6ICdmb28nLCB0aGlyZDogJ2ZvbycgfTsiKTsKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChkYXRhKTsiKTsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldHVwSW5kZXhlczsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0dXBJbmRleGVzKCkK
K3sKKyAgICBrZXkgPSBldmFsQW5kTG9nKCJrZXkgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwor
ICAgIHNob3VsZEJlRmFsc2UoImtleSA9PSBudWxsIik7CisgICAgdHJhbnMub25jb21wbGV0ZSA9
IHNldFZlcnNpb25Db21wbGV0ZTsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbkNvbXBsZXRlKCkK
K3sKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIudHJhbnNh
Y3Rpb24oJ2ZvbycpLm9iamVjdFN0b3JlKCdmb28nKTsiKTsKKyAgICBmaXJzdCA9IGV2YWxBbmRM
b2coImZpcnN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ2ZpcnN0Jyk7Iik7CisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBmaXJzdC5nZXQoJ2ZvbycpOyIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gY2hlY2tGaXJzdEluZGV4QW5kUHJlcGFyZVNlY29uZDsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2hlY2tG
aXJzdEluZGV4QW5kUHJlcGFyZVNlY29uZCgpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdl
dC5yZXN1bHQuaWQiLCAia2V5Iik7CisgICAgc2Vjb25kID0gZXZhbEFuZExvZygic2Vjb25kID0g
b2JqZWN0U3RvcmUuaW5kZXgoJ3NlY29uZCcpOyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gc2Vjb25kLmdldCgnZm9vJyk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBjaGVja1NlY29uZEluZGV4QW5kUHJlcGFyZVRoaXJkOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjaGVja1NlY29uZEluZGV4
QW5kUHJlcGFyZVRoaXJkKCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5p
ZCIsICJrZXkiKTsKKyAgICB0aGlyZCA9IGV2YWxBbmRMb2coInRoaXJkID0gb2JqZWN0U3RvcmUu
aW5kZXgoJ3RoaXJkJyk7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSB0
aGlyZC5nZXQoJ2ZvbycpOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2hlY2tUaGlyZElu
ZGV4OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBjaGVja1RoaXJkSW5kZXgoKQoreworICAgIHNob3VsZEJlKCJldmVudC50YXJn
ZXQucmVzdWx0LmlkIiwgImtleSIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvYmFkLWtleXBhdGguanMgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9iYWQta2V5cGF0aC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kYTA2NTBmOTBmNmRlZmEyZjQ1YTg4NzRiNjI1OWIyYWY2YmI1ODMxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNv
dXJjZXMvYmFkLWtleXBhdGguanMKQEAgLTAsMCArMSw1MCBAQAorLy8gb3JpZ2luYWwgdGVzdDoK
Ky8vIGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWRE
Qi90ZXN0L3Rlc3RfYmFkX2tleXBhdGguaHRtbAorLy8gbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0
OgorLy8gIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
Ky8vICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAi
CisKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8u
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlw
dHMoJy4uLy4uL3Jlc291cmNlcy9zaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3Qg
SW5kZXhlZERCIGFkZGluZyBwcm9wZXJ0eSB3aXRoIGludmFsaWQga2V5cGF0aCIpOworCitmdW5j
dGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9
IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRh
YmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRl
c2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRW
ZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0
aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisK
KyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ2ZvbycsIHsga2V5UGF0aDogJ2tleVBhdGgnIH0pOyIpOworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKHsga2V5UGF0aDogJ2Zvbycg
fSk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRGaXJzdFN1Y2Nlc3M7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGFk
ZEZpcnN0U3VjY2VzcygpCit7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigicmVxdWVzdCA9
IG9iamVjdFN0b3JlLmFkZCh7fSk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7
CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L3Jlc291cmNlcy9jbGVhci5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEvcmVzb3VyY2VzL2NsZWFyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0MjMwYjRjYzQ1MzMyMjAwZjU2YzQ1
MjkyNTNhNGFjMGViYjY3MTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jbGVhci5qcwpAQCAtMCwwICsxLDYwIEBACisv
LyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3Nv
dXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9jbGVhci5odG1sCisvLyBsaWNlbnNlIG9mIG9y
aWdpbmFsIHRlc3Q6CisvLyAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorLy8gICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvICIKKworaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlw
dHMoJy4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAg
aW1wb3J0U2NyaXB0cygnLi4vLi4vcmVzb3VyY2VzL3NoYXJlZC5qcycpOworfQorCitkZXNjcmlw
dGlvbigiVGVzdCBJbmRleGVkREIncyBjbGVhcmluZyBhbiBvYmplY3Qgc3RvcmUiKTsKKworZnVu
Y3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUg
PSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0
YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBk
ZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0
VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiBjbGVhbkRhdGFiYXNlKCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwor
CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9i
amVjdFN0b3JlKCdmb28nLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7CisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoe30pOyIpOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIGV2ZW50LnRhcmdl
dC5yZXN1bHQub25jb21wbGV0ZSA9IGNsZWFyOworfQorCitmdW5jdGlvbiBjbGVhcigpCit7Cisg
ICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oJ2ZvbycpLm9iamVjdFN0
b3JlKCdmb28nKS5jbGVhcigpOyIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5SRUFEX09OTFlfRVJS
Iik7CisgICAgZXZhbEFuZExvZygiZGIudHJhbnNhY3Rpb24oJ2ZvbycsIElEQlRyYW5zYWN0aW9u
LlJFQURfV1JJVEUpLm9iamVjdFN0b3JlKCdmb28nKS5jbGVhcigpOyIpOworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIudHJhbnNhY3Rpb24oJ2ZvbycpLm9iamVjdFN0b3Jl
KCdmb28nKS5vcGVuQ3Vyc29yKCk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhcmVXZUNs
ZWFyWWV0OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBhcmVXZUNsZWFyWWV0KCkKK3sKKyAgICBjdXJzb3IgPSBldmFsQW5kTG9n
KCJjdXJzb3IgPSByZXF1ZXN0LnJlc3VsdDsiKTsKKyAgICBzaG91bGRCZSgiY3Vyc29yIiwgIm51
bGwiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
emlsbGEvcmVzb3VyY2VzL2NyZWF0ZS1pbmRleC11bmlxdWUuanMgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jcmVhdGUtaW5kZXgtdW5pcXVlLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE4YzZjZjc2YzBjMzNkYjc3NzgxM2JiY2UyMzRjNTdlYTZjMzc5N2EKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291
cmNlcy9jcmVhdGUtaW5kZXgtdW5pcXVlLmpzCkBAIC0wLDAgKzEsNjEgQEAKKy8vIG9yaWdpbmFs
IHRlc3Q6CisvLyBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9p
bmRleGVkREIvdGVzdC90ZXN0X2NyZWF0ZV9pbmRleC5odG1sCisvLyBsaWNlbnNlIG9mIG9yaWdp
bmFsIHRlc3Q6CisvLyAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorLy8gICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvICIKKworaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMo
Jy4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1w
b3J0U2NyaXB0cygnLi4vLi4vcmVzb3VyY2VzL3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlv
bigiVGVzdCBJbmRleGVkREIncyBjcmVhdGluZyB1bmlxdWUgaW5kZXggYW5kIHVwZGF0aW5nIGlu
ZGV4TmFtZXMiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4
ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0
aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRl
eGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9n
KCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBjcmVhdGVBbmRWZXJpZnlJbmRleDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY3JlYXRlQW5kVmVyaWZ5SW5kZXgoKQorewor
ICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxB
bmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2EnLCB7IGtleVBhdGg6
ICdpZCcsIGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7CisKKyAgICBpbmRleE5hbWUgPSAiMSI7
CisgICAgaW5kZXhLZXlQYXRoID0gInVuaXF1ZV92YWx1ZSI7CisgICAgaW5kZXggPSBldmFsQW5k
TG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KGluZGV4TmFtZSwgaW5kZXhLZXlQ
YXRoLCB7IHVuaXF1ZTogdHJ1ZSB9KTsiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uQ09OU1RSQUlO
VF9FUlIiKTsKKyAgICBzaG91bGRCZSgiaW5kZXgubmFtZSIsICJpbmRleE5hbWUiKTsKKyAgICBz
aG91bGRCZSgiaW5kZXgua2V5UGF0aCIsICJpbmRleEtleVBhdGgiKTsKKyAgICBzaG91bGRCZSgi
aW5kZXgudW5pcXVlIiwgInRydWUiKTsKKyAgICBzaG91bGRCZSgib2JqZWN0U3RvcmUuaW5kZXhO
YW1lcy5sZW5ndGgiLCAiMSIpOworCisgICAgZm91bmROZXdseUNyZWF0ZWRJbmRleCA9IGZhbHNl
OworICAgIGZvciAodmFyIGsgPSAwOyBrIDwgb2JqZWN0U3RvcmUuaW5kZXhOYW1lcy5sZW5ndGg7
IGsrKykgeworICAgICAgICBpZiAob2JqZWN0U3RvcmUuaW5kZXhOYW1lcy5pdGVtKGspID09IGlu
ZGV4TmFtZSkgeworICAgICAgICAgICAgZm91bmROZXdseUNyZWF0ZWRJbmRleCA9IHRydWU7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgc2hvdWxkQmVUcnVlKCJmb3VuZE5ld2x5Q3JlYXRlZEluZGV4
Iik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5kYiIsICJkYiIpOwor
ICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24ucmVhZHlTdGF0ZSIsICJJREJU
cmFuc2FjdGlvbi5MT0FESU5HIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2Fj
dGlvbi5tb2RlIiwgIklEQlRyYW5zYWN0aW9uLlZFUlNJT05fQ0hBTkdFIik7CisgICAgZmluaXNo
SlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9j
cmVhdGUtaW5kZXgtd2l0aC1pbnRlZ2VyLWtleXMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jcmVhdGUtaW5kZXgtd2l0aC1pbnRlZ2VyLWtleXMu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMzQzZTRjNWM4ZmE4ODEwYjI4OTM1NmUxZmVhZjAzNGZkNGRiODc4OQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEv
cmVzb3VyY2VzL2NyZWF0ZS1pbmRleC13aXRoLWludGVnZXIta2V5cy5qcwpAQCAtMCwwICsxLDU2
IEBACisvLyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxh
Mi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9jcmVhdGVfaW5kZXhfd2l0aF9pbnRl
Z2VyX2tleXMuaHRtbD9mb3JjZT0xCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisvLyAi
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorLy8gICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKworaWYg
KHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnLi4v
Li4vcmVzb3VyY2VzL3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVk
REIncyBjcmVhdGluZyBpbmRleCB3aXRoIGludGVnZXIga2V5cyIpOworCitmdW5jdGlvbiB0ZXN0
KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9j
YXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Cisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9u
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNj
ZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIp
OworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcx
JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldHVwT2JqZWN0U3RvcmVBbmRDcmVhdGVJ
bmRleDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30K
KworZnVuY3Rpb24gc2V0dXBPYmplY3RTdG9yZUFuZENyZWF0ZUluZGV4KCkKK3sKKyAgICBkZWxl
dGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJv
YmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7IGtleVBhdGg6ICdpZCcg
fSk7Iik7CisgICAgZGF0YSA9IGV2YWxBbmRMb2coImRhdGEgPSB7IGlkOiAxNiwgbnVtOiA0MiB9
OyIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZChkYXRhKTsiKTsKKyAgICBpbmRl
eCA9IGV2YWxBbmRMb2coImluZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ2ZvbycsICdu
dW0nKTsiKTsKKyAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJyZXN1bHQgPSBpbmRleC5vcGVuS2V5
Q3Vyc29yKCk7Iik7CisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9IHZlcmlmeUtleUN1cnNvcjsKKyAg
ICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biB2ZXJpZnlLZXlDdXJzb3IoKQoreworICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9
IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiY3Vyc29yID09IG51
bGwiKTsKKyAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJkYXRhLm51bSIpOworICAgIHNob3Vs
ZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJkYXRhLmlkIik7CisgICAgZmluaXNoSlNUZXN0KCk7
Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jcmVhdGUtb2Jq
ZWN0c3RvcmUtYmFzaWNzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9yZXNvdXJjZXMvY3JlYXRlLW9iamVjdHN0b3JlLWJhc2ljcy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNzMx
NmIyZTRlODQ1MGUzNWQwZWE2OTU1Y2ZiNDdhNDc2YjhkYWQwCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY3JlYXRlLW9i
amVjdHN0b3JlLWJhc2ljcy5qcwpAQCAtMCwwICsxLDY2IEBACisvLyBvcmlnaW5hbCB0ZXN0Ogor
Ly8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERC
L3Rlc3QvdGVzdF9jcmVhdGVfb2JqZWN0U3RvcmUuaHRtbAorLy8gbGljZW5zZSBvZiBvcmlnaW5h
bCB0ZXN0OgorLy8gIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKy8vICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLyAiCisKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcu
Li8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9y
dFNjcmlwdHMoJy4uLy4uL3Jlc291cmNlcy9zaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24o
IlRlc3QgSW5kZXhlZERCJ3MgY3JlYXRpbmcgb2JqZWN0IHN0b3JlIGFuZCB1cGRhdGluZyBwcm9w
ZXJ0aWVzIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVz
KCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlv
biA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhl
ZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBv
cGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygi
ZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
Y2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7CisgICAgZGVsZXRlQWxsT2Jq
ZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlSW5mbyA9IFsKKyAgICAgICAgeyBuYW1l
OiAiMSIsIG9wdGlvbnM6IHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9IH0sCisgICAgICAgIHsgbmFt
ZTogIjIiLCBvcHRpb25zOiB7IGF1dG9JbmNyZW1lbnQ6IGZhbHNlIH0gfSwKKyAgICAgICAgeyBu
YW1lOiAiMyIsIG9wdGlvbnM6IHsga2V5UGF0aDogIiIgfSB9LAorICAgICAgICB7IG5hbWU6ICI0
Iiwgb3B0aW9uczogeyBrZXlQYXRoOiAiIiwgYXV0b0luY3JlbWVudDogdHJ1ZSB9IH0sCisgICAg
ICAgIHsgbmFtZTogIjUiLCBvcHRpb25zOiB7IGtleVBhdGg6ICIiLCBhdXRvSW5jcmVtZW50OiBm
YWxzZSB9IH0sCisgICAgICAgIHsgbmFtZTogIjYiLCBvcHRpb25zOiB7IGtleVBhdGg6ICJmb28i
IH0gfSwKKyAgICAgICAgeyBuYW1lOiAiNyIsIG9wdGlvbnM6IHsga2V5UGF0aDogImZvbyIsIGF1
dG9JbmNyZW1lbnQ6IGZhbHNlIH0gfSwKKyAgICAgICAgeyBuYW1lOiAiOCIsIG9wdGlvbnM6IHsg
a2V5UGF0aDogImZvbyIsIGF1dG9JbmNyZW1lbnQ6IHRydWUgfSB9CisgICAgXTsKKworICAgIGZv
ciAodmFyIGluZGV4IGluIG9iamVjdFN0b3JlSW5mbykgeworICAgICAgICBpbmRleCA9IHBhcnNl
SW50KGluZGV4KTsKKyAgICAgICAgaW5mbyA9IG9iamVjdFN0b3JlSW5mb1tpbmRleF07CisgICAg
ICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZShpbmZvLm5hbWUsIGluZm8ub3B0aW9ucyk7Iik7CisgICAgICAgIHNob3VsZEJlKCJv
YmplY3RTdG9yZS5uYW1lIiwgImluZm8ubmFtZSIpOworICAgICAgICBpZiAoaW5mby5vcHRpb25z
ICYmIGluZm8ub3B0aW9ucy5rZXlQYXRoKSB7CisgICAgICAgICAgICBzaG91bGRCZSgib2JqZWN0
U3RvcmUua2V5UGF0aCIsICJpbmZvLm9wdGlvbnMua2V5UGF0aCIpOworICAgICAgICB9CisgICAg
ICAgIHNob3VsZEJlKCJvYmplY3RTdG9yZS5pbmRleE5hbWVzLmxlbmd0aCIsICIwIik7CisgICAg
ICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24uZGIiLCAiZGIiKTsKKyAgICAg
ICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5yZWFkeVN0YXRlIiwgIklEQlRy
YW5zYWN0aW9uLkxPQURJTkciKTsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50cmFu
c2FjdGlvbi5tb2RlIiwgIklEQlRyYW5zYWN0aW9uLlZFUlNJT05fQ0hBTkdFIik7CisgICAgfQor
CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L3Jlc291cmNlcy9jcmVhdGUtb2JqZWN0c3RvcmUtbnVsbC1uYW1lLmpzIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY3JlYXRlLW9iamVjdHN0b3JlLW51
bGwtbmFtZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYzI2NjkwZWY1YzQzNzMzMzc4ODkyZWQ5NGViNDRjYTIw
NDgwMTc2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW96aWxsYS9yZXNvdXJjZXMvY3JlYXRlLW9iamVjdHN0b3JlLW51bGwtbmFtZS5qcwpAQCAtMCww
ICsxLDQ0IEBACisvLyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9t
b3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9jcmVhdGVfb2JqZWN0U3Rv
cmUuaHRtbAorLy8gbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorLy8gIiBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKy8vICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCisKK2lmICh0aGlzLmltcG9ydFNj
cmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uL3Jlc291cmNlcy9z
aGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgY3JlYXRpbmcg
b2JqZWN0IHN0b3JlIHdpdGggbnVsbCBuYW1lIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAg
IHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRo
bmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQorewor
ICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgp
Cit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0g
ZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShudWxsKTsiKTsK
KyAgICBzaG91bGRCZSgib2JqZWN0U3RvcmUubmFtZSIsICInbnVsbCciKTsKKworICAgIGZpbmlz
aEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMv
Y3Vyc29yLW11dGF0aW9uLW9iamVjdHN0b3JlLW9ubHkuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jdXJzb3ItbXV0YXRpb24tb2JqZWN0c3RvcmUt
b25seS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iNzdlZWNjODU2YmUwYTBiOTJjNmU4YWZlNGM4NDFhNGY0MTgz
NjM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9yZXNvdXJjZXMvY3Vyc29yLW11dGF0aW9uLW9iamVjdHN0b3JlLW9ubHkuanMKQEAgLTAs
MCArMSwxNDEgQEAKKy8vIG9yaWdpbmFsIHRlc3Q6CisvLyBodHRwOi8vbXhyLm1vemlsbGEub3Jn
L21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2N1cnNvcl9tdXRhdGlv
bi5odG1sP2ZvcmNlPTEKKy8vIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5p
bXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi9yZXNv
dXJjZXMvc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGN1
cnNvciBtdXRhdGlvbiBkdXJpbmcgb2JqZWN0IHN0b3JlIGN1cnNvciBpdGVyYXRpb24iKTsKKwor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5h
bWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3Qg
RGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1l
LCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7CisgICAg
ZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBzZXR1cE9iamVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXR1cE9iamVjdFN0b3Jl
KCkKK3sKKyAgICBkZWJ1Zygic2V0dXBPYmplY3RTdG9yZSgpOiIpOworICAgIGRlbGV0ZUFsbE9i
amVjdFN0b3JlcyhkYik7CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0
b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycsIHsga2V5UGF0aDogJ3NzJyB9KTsiKTsK
KyAgICBvYmplY3RTdG9yZURhdGEgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZURhdGEgPSBbXG4i
ICsgCisiICAgICAgICB7IHNzOiAnMjM3LTIzLTc3MzInLCBuYW1lOiAnQm9iJyB9LFxuIiArIAor
CisiICAgICAgICB7IHNzOiAnMjM3LTIzLTc3MzMnLCBuYW1lOiAnQW5uJyB9LFxuIiArCisiICAg
ICAgICB7IHNzOiAnMjM3LTIzLTc3MzQnLCBuYW1lOiAnUm9uJyB9LFxuIiArCisiICAgICAgICB7
IHNzOiAnMjM3LTIzLTc3MzUnLCBuYW1lOiAnU3VlJyB9LFxuIiArCisiICAgICAgICB7IHNzOiAn
MjM3LTIzLTc3MzYnLCBuYW1lOiAnSm9lJyB9LFxuIiArCisKKyIgICAgICAgIHsgc3M6ICcyMzct
MjMtNzczNycsIG5hbWU6ICdQYXQnIH1cbiIgKworIiAgICBdOyIpOworCisgICAgZm9yIChpID0g
MDsgaSA8IG9iamVjdFN0b3JlRGF0YS5sZW5ndGggLSAxOyBpKyspIHsKKyAgICAgICAgZXZhbEFu
ZExvZygib2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXSk7Iik7CisgICAgfQorCisg
ICAgY291bnQgPSBldmFsQW5kTG9nKCJjb3VudCA9IDA7Iik7CisgICAgc2F3QWRkZWQgPSBldmFs
QW5kTG9nKCJzYXdBZGRlZCA9IGZhbHNlOyIpOworICAgIHNhd1JlbW92ZWQgPSBldmFsQW5kTG9n
KCJzYXdSZW1vdmVkID0gZmFsc2U7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVx
dWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGl0ZXJhdGVDdXJzb3I7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGl0ZXJhdGVDdXJzb3IoKQoreworICAgIGRlYnVnKCJp
dGVyYXRlQ3Vyc29yKCk6Iik7CisgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnRyYW5zYWN0
aW9uLm9uY29tcGxldGUgPSBjaGVja0N1cnNvclJlc3VsdHNBbmRTZXR1cE11dGF0aW5nQ3Vyc29y
OyIpOworICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1
bHQ7Iik7CisgICAgaWYgKGN1cnNvcikgeworICAgICAgICBpZiAoY3Vyc29yLnZhbHVlLm5hbWUg
PT0gb2JqZWN0U3RvcmVEYXRhWzBdLm5hbWUpIHsKKyAgICAgICAgICAgIHNhd1JlbW92ZWQgPSBl
dmFsQW5kTG9nKCJzYXdSZW1vdmVkID0gdHJ1ZTsiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAo
Y3Vyc29yLnZhbHVlLm5hbWUgPT0gb2JqZWN0U3RvcmVEYXRhW29iamVjdFN0b3JlRGF0YS5sZW5n
dGggLSAxXS5uYW1lKSB7CisgICAgICAgICAgICBzYXdBZGRlZCA9IGV2YWxBbmRMb2coInNhd0Fk
ZGVkID0gdHJ1ZTsiKTsKKyAgICAgICAgfQorICAgICAgICBldmFsQW5kTG9nKCJjb3VudCsrOyIp
OworICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKKyAgICB9Cit9CisK
K2Z1bmN0aW9uIGNoZWNrQ3Vyc29yUmVzdWx0c0FuZFNldHVwTXV0YXRpbmdDdXJzb3IoKQorewor
ICAgIGRlYnVnKCJjaGVja0N1cnNvclJlc3VsdHNBbmRTZXR1cE11dGF0aW5nQ3Vyc29yKCk6Iik7
CisgICAgc2hvdWxkQmUoImNvdW50IiwgIm9iamVjdFN0b3JlRGF0YS5sZW5ndGggLSAxIik7Cisg
ICAgc2hvdWxkQmUoInNhd0FkZGVkIiwgImZhbHNlIik7CisgICAgc2hvdWxkQmUoInNhd1JlbW92
ZWQiLCAidHJ1ZSIpOworCisgICAgY291bnQgPSBldmFsQW5kTG9nKCJjb3VudCA9IDA7Iik7Cisg
ICAgc2F3QWRkZWQgPSBldmFsQW5kTG9nKCJzYXdBZGRlZCA9IGZhbHNlOyIpOworICAgIHNhd1Jl
bW92ZWQgPSBldmFsQW5kTG9nKCJzYXdSZW1vdmVkID0gZmFsc2U7Iik7CisKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnRyYW5zYWN0aW9uKCdmb28nLCBJREJUcmFuc2Fj
dGlvbi5SRUFEX1dSSVRFKS5vYmplY3RTdG9yZSgnZm9vJykub3BlbkN1cnNvcigpOyIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gaXRlcmF0ZU11dGF0aW5nQ3Vyc29yOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBpdGVyYXRl
TXV0YXRpbmdDdXJzb3IoKQoreworICAgIGRlYnVnKCJpdGVyYXRlTXV0YXRpbmdDdXJzb3IoKToi
KTsKKyAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9
IGNoZWNrTXV0YXRpbmdDdXJzb3JSZXN1bHRzOyIpOworICAgIGN1cnNvciA9IGV2YWxBbmRMb2co
ImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgaWYgKGN1cnNvcikgeworICAg
ICAgICBpZiAoY3Vyc29yLnZhbHVlLm5hbWUgPT0gb2JqZWN0U3RvcmVEYXRhWzBdLm5hbWUpIHsK
KyAgICAgICAgICAgIHNhd1JlbW92ZWQgPSBldmFsQW5kTG9nKCJzYXdSZW1vdmVkID0gdHJ1ZTsi
KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY3Vyc29yLnZhbHVlLm5hbWUgPT0gb2JqZWN0U3Rv
cmVEYXRhW29iamVjdFN0b3JlRGF0YS5sZW5ndGggLSAxXS5uYW1lKSB7CisgICAgICAgICAgICBz
YXdBZGRlZCA9IGV2YWxBbmRMb2coInNhd0FkZGVkID0gdHJ1ZTsiKTsKKyAgICAgICAgfQorICAg
ICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAiJyIgKyBvYmplY3RTdG9yZURhdGFb
Y291bnRdLm5hbWUgKyAiJyIpOworICAgICAgICBldmFsQW5kTG9nKCJjb3VudCsrIik7CisKKyAg
ICAgICAgaWYgKGNvdW50ID09IDEpIHsKKyAgICAgICAgICAgIG9iamVjdFN0b3JlID0gZXZhbEFu
ZExvZygib2JqZWN0U3RvcmUgPSBldmVudC50YXJnZXQudHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUo
J2ZvbycpOyIpOworICAgICAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBv
YmplY3RTdG9yZS5kZWxldGUob2JqZWN0U3RvcmVEYXRhWzBdLnNzKTsiKTsKKyAgICAgICAgICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gYWRkRmluYWxEYXRhOworICAgICAgICAgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBjdXJzb3IuY29udGludWUoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rp
b24gYWRkRmluYWxEYXRhKCkKK3sKKyAgICBkZWJ1ZygiYWRkRmluYWxEYXRhKCk6Iik7CisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQob2JqZWN0U3Rv
cmVEYXRhW29iamVjdFN0b3JlRGF0YS5sZW5ndGggLSAxXSk7Iik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7IGN1cnNvci5jb250aW51ZSgpOyB9CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNoZWNrTXV0
YXRpbmdDdXJzb3JSZXN1bHRzKCkKK3sKKyAgICBkZWJ1ZygiY2hlY2tNdXRhdGluZ0N1cnNvclJl
c3VsdHMoKToiKTsKKyAgICBzaG91bGRCZSgiY291bnQiLCAib2JqZWN0U3RvcmVEYXRhLmxlbmd0
aCIpOworICAgIHNob3VsZEJlKCJzYXdBZGRlZCIsICJ0cnVlIik7CisgICAgc2hvdWxkQmUoInNh
d1JlbW92ZWQiLCAidHJ1ZSIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY3Vyc29yLW11dGF0aW9uLmpzIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY3Vyc29yLW11dGF0aW9u
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjIxNTY2ZmJmZGI4Nzk1ZGUzMzdkN2I5OTYxNDE2ODk2NmMwMzAyMDgK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L3Jlc291cmNlcy9jdXJzb3ItbXV0YXRpb24uanMKQEAgLTAsMCArMSwxODEgQEAKKy8vIG9yaWdp
bmFsIHRlc3Q6CisvLyBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2Rv
bS9pbmRleGVkREIvdGVzdC90ZXN0X2N1cnNvcl9tdXRhdGlvbi5odG1sP2ZvcmNlPTEKKy8vIGxp
Y2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAg
aW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi9yZXNvdXJjZXMvc2hhcmVkLmpzJyk7Cit9
CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGN1cnNvciBtdXRhdGlvbiIpOworCitm
dW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgZGVi
dWcoIiIpOworICAgIG5hbWUgPSAnY3Vyc29yLW11dGF0aW9uJzsKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKG5hbWUpIik7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbiAoKSB7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
b3BlbihuYW1lKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICAgICAg
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICAgICAg
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICAg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXR1cE9iamVjdFN0b3JlQW5kQ3JlYXRlSW5kZXg7ICAg
ICAgICAgIAorICAgICAgICB9OworICAgIH07Cit9CisKK2Z1bmN0aW9uIHNldHVwT2JqZWN0U3Rv
cmVBbmRDcmVhdGVJbmRleCgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJzZXR1cE9i
amVjdFN0b3JlQW5kQ3JlYXRlSW5kZXgoKToiKTsKKworICAgIHRyYW5zID0gZXZhbEFuZExvZygi
dHJhbnMgPSByZXF1ZXN0LnJlc3VsdCIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7IGtleVBhdGg6ICdz
cycgfSkiKTsKKyAgICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gb2JqZWN0U3RvcmUuY3Jl
YXRlSW5kZXgoJ25hbWUnLCAnbmFtZScsIHsgdW5pcXVlOiB0cnVlIH0pIik7CisgICAgb2JqZWN0
U3RvcmVEYXRhID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmVEYXRhID0gW1xuIiArIAorICAgICAg
ICAgLy8gVG8gYmUgcmVtb3ZlZC4KKyIgICAgICAgIHsgc3M6ICcyMzctMjMtNzczMicsIG5hbWU6
ICdCb2InIH0sXG4iICsgCisKKyAgICAgICAgIC8vIEFsd2F5cyBwcmVzZW50LgorIiAgICAgICAg
eyBzczogJzIzNy0yMy03NzMzJywgbmFtZTogJ0FubicgfSxcbiIgKworIiAgICAgICAgeyBzczog
JzIzNy0yMy03NzM0JywgbmFtZTogJ1JvbicgfSxcbiIgKworIiAgICAgICAgeyBzczogJzIzNy0y
My03NzM1JywgbmFtZTogJ1N1ZScgfSxcbiIgKworIiAgICAgICAgeyBzczogJzIzNy0yMy03NzM2
JywgbmFtZTogJ0pvZScgfSxcbiIgKworCisgICAgICAgICAvLyBUbyBiZSBhZGRlZC4KKyIgICAg
ICAgIHsgc3M6ICcyMzctMjMtNzczNycsIG5hbWU6ICdQYXQnIH1cbiIgKworIiAgICBdIik7CisK
KyAgICBmb3IgKGkgPSAwOyBpIDwgb2JqZWN0U3RvcmVEYXRhLmxlbmd0aCAtIDE7IGkrKykgewor
ICAgICAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhWyIgKyBp
ICsgIl0pIik7CisgICAgfQorCisgICAgZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IGNo
ZWNrQ3Vyc29yUmVzdWx0cyIpOworICAgIHNldHVwQ3Vyc29yKCk7Cit9CisKK2Z1bmN0aW9uIHNl
dHVwQ3Vyc29yKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInNldHVwQ3Vyc29yKCk6
Iik7CisKKyAgICBjb3VudCA9IGV2YWxBbmRMb2coImNvdW50ID0gMCIpOworICAgIHNhd0FkZGVk
ID0gZXZhbEFuZExvZygic2F3QWRkZWQgPSBmYWxzZSIpOworICAgIHNhd1JlbW92ZWQgPSBldmFs
QW5kTG9nKCJzYXdSZW1vdmVkID0gZmFsc2UiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpIik7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBp
dGVyYXRlQ3Vyc29yOworfQorCitmdW5jdGlvbiBpdGVyYXRlQ3Vyc29yKCkKK3sKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoIml0ZXJhdGVDdXJzb3IoKToiKTsKKyAgICBjdXJzb3IgPSBldmFs
QW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgaWYgKGN1cnNvcikg
eworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImN1cnNvci52YWx1ZS5uYW1lIiwgb2Jq
ZWN0U3RvcmVEYXRhW2NvdW50XS5uYW1lKTsKKyAgICAgICAgaWYgKGN1cnNvci52YWx1ZS5uYW1l
ID09IG9iamVjdFN0b3JlRGF0YVswXS5uYW1lKSB7CisgICAgICAgICAgICBzYXdSZW1vdmVkID0g
ZXZhbEFuZExvZygic2F3UmVtb3ZlZCA9IHRydWUiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAo
Y3Vyc29yLnZhbHVlLm5hbWUgPT0gb2JqZWN0U3RvcmVEYXRhW29iamVjdFN0b3JlRGF0YS5sZW5n
dGggLSAxXS5uYW1lKSB7CisgICAgICAgICAgICBzYXdBZGRlZCA9IGV2YWxBbmRMb2coInNhd0Fk
ZGVkID0gdHJ1ZSIpOworICAgICAgICB9CisgICAgICAgIGV2YWxBbmRMb2coImNvdW50KysiKTsK
KyAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCkiKTsKKyAgICB9Cit9CisKK2Z1
bmN0aW9uIGNoZWNrQ3Vyc29yUmVzdWx0cygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVn
KCJjaGVja0N1cnNvclJlc3VsdHMoKToiKTsKKyAgICBzaG91bGRCZSgiY291bnQiLCAib2JqZWN0
U3RvcmVEYXRhLmxlbmd0aCAtIDEiKTsKKyAgICBzaG91bGRCZSgic2F3QWRkZWQiLCAiZmFsc2Ui
KTsKKyAgICBzaG91bGRCZSgic2F3UmVtb3ZlZCIsICJ0cnVlIik7CisKKyAgICBzZXR1cE11dGF0
aW5nQ3Vyc29yKCk7Cit9CisKK2Z1bmN0aW9uIHNldHVwTXV0YXRpbmdDdXJzb3IoKQoreworICAg
IGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygic2V0dXBNdXRhdGluZ0N1cnNvcigpOiIpOworICAgCisg
ICAgY291bnQgPSBldmFsQW5kTG9nKCJjb3VudCA9IDAiKTsKKyAgICBzYXdBZGRlZCA9IGV2YWxB
bmRMb2coInNhd0FkZGVkID0gZmFsc2UiKTsKKyAgICBzYXdSZW1vdmVkID0gZXZhbEFuZExvZygi
c2F3UmVtb3ZlZCA9IGZhbHNlIik7CisgICAgZGVidWcoIltvYmplY3RTdG9yZURhdGFOYW1lU29y
dCBpcyBhbiBhcnJheSBvZiBpbmRleGVzIGludG8gb2JqZWN0U3RvcmVEYXRhIGluIGFscGhhYmV0
aWNhbCBvcmRlciBieSBuYW1lXSIpOworICAgIG9iamVjdFN0b3JlRGF0YU5hbWVTb3J0ID0gZXZh
bEFuZExvZygib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnQgPSBbIDEsIDQsIDUsIDIsIDMgXSIpOwor
CisgICAgZGVidWcoIiIpOworCisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRy
YW5zYWN0aW9uKCdmb28nLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIG9iamVj
dFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnZm9v
JykiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmlu
ZGV4KCduYW1lJykub3BlbkN1cnNvcigpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBpdGVyYXRlTXV0YXRp
bmdDdXJzb3I7CisgICAgZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IGNoZWNrTXV0YXRp
bmdDdXJzb3JSZXN1bHRzIik7Cit9CisKK2Z1bmN0aW9uIGl0ZXJhdGVNdXRhdGluZ0N1cnNvcigp
Cit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJpdGVyYXRlTXV0YXRpbmdDdXJzb3IoKToi
KTsKKyAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7CisgICAgaWYgKGN1cnNvcikgeworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImN1
cnNvci52YWx1ZS5uYW1lIiwgb2JqZWN0U3RvcmVEYXRhW29iamVjdFN0b3JlRGF0YU5hbWVTb3J0
W2NvdW50XV0ubmFtZSk7CisgICAgICAgIGlmIChjdXJzb3IudmFsdWUubmFtZSA9PSBvYmplY3RT
dG9yZURhdGFbMF0ubmFtZSkgeworICAgICAgICAgICAgc2F3UmVtb3ZlZCA9IGV2YWxBbmRMb2co
InNhd1JlbW92ZWQgPSB0cnVlIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGN1cnNvci52YWx1
ZS5uYW1lID09IG9iamVjdFN0b3JlRGF0YVtvYmplY3RTdG9yZURhdGEubGVuZ3RoIC0gMV0ubmFt
ZSkgeworICAgICAgICAgICAgc2F3QWRkZWQgPSBldmFsQW5kTG9nKCJzYXdBZGRlZCA9IHRydWUi
KTsKKyAgICAgICAgfQorICAgICAgICBldmFsQW5kTG9nKCJjb3VudCsrIik7CisKKyAgICAgICAg
aWYgKGNvdW50ID09IDEpIHsKKyAgICAgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgICAgIGRl
YnVnKCJNdXRhdGluZyB0aGUgb2JqZWN0IHN0b3JlOiIpOworCisgICAgICAgICAgICBkZWJ1Zygi
UmVtb3ZpbmcgIiArIG9iamVjdFN0b3JlRGF0YVswXS5uYW1lKTsKKyAgICAgICAgICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZGVsZXRlKG9iamVjdFN0b3Jl
RGF0YVswXS5zcykiKTsKKyAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRGaW5hbERh
dGE7CisKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGN1cnNvci5jb250aW51ZSgpOwor
ICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiBhZGRGaW5hbERhdGEoKQoreworICAgIGRl
YnVnKCIiKTsKKyAgICBkZWJ1ZygiYWRkRmluYWxEYXRhKCk6Iik7CisgICAgZGVidWcoIkFkZGlu
ZyAiICsgb2JqZWN0U3RvcmVEYXRhW29iamVjdFN0b3JlRGF0YS5sZW5ndGggLSAxXS5uYW1lKTsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmpl
Y3RTdG9yZURhdGFbb2JqZWN0U3RvcmVEYXRhLmxlbmd0aCAtIDFdKSIpOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZnVuY3Rpb24gKCkgeworICAgICAgICBjdXJzb3IuY29udGludWUoKTsKKyAgICB9Cit9CisK
K2Z1bmN0aW9uIGNoZWNrTXV0YXRpbmdDdXJzb3JSZXN1bHRzKCkKK3sKKyAgICBkZWJ1ZygiIik7
CisgICAgZGVidWcoImNoZWNrTXV0YXRpbmdDdXJzb3JSZXN1bHRzKCk6Iik7CisgICAgc2hvdWxk
QmUoImNvdW50IiwgIm9iamVjdFN0b3JlRGF0YS5sZW5ndGggLSAxIik7CisgICAgc2hvdWxkQmUo
InNhd0FkZGVkIiwgInRydWUiKTsKKyAgICBzaG91bGRCZSgic2F3UmVtb3ZlZCIsICJmYWxzZSIp
OworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9yZXNvdXJjZXMvY3Vyc29yLXVwZGF0ZS11cGRhdGVzLWluZGV4ZXMuanMgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jdXJzb3ItdXBkYXRlLXVwZGF0
ZXMtaW5kZXhlcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYzdkOWJiOWJiNjZlZTRlMzUzNzhlOWNhYjhhZGZi
OTEzYzFiYzkwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW96aWxsYS9yZXNvdXJjZXMvY3Vyc29yLXVwZGF0ZS11cGRhdGVzLWluZGV4ZXMuanMKQEAg
LTAsMCArMSwxMTQgQEAKKy8vIG9yaWdpbmFsIHRlc3Q6CisvLyBodHRwOi8vbXhyLm1vemlsbGEu
b3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2N1cnNvcl91cGRh
dGVfdXBkYXRlc19pbmRleGVzLmh0bWw/Zm9yY2U9MQorLy8gbGljZW5zZSBvZiBvcmlnaW5hbCB0
ZXN0OgorLy8gIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKy8vICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LyAiCisKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8u
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNj
cmlwdHMoJy4uLy4uL3Jlc291cmNlcy9zaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRl
c3QgSW5kZXhlZERCOiBtdXRhdGluZyByZWNvcmRzIHdpdGggYSByL3cgY3Vyc29yIHVwZGF0ZXMg
aW5kZXhlcyBvbiB0aG9zZSByZWNvcmRzIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJl
bW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFt
ZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAg
IGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7CisgICAgZmlyc3RWYWx1ZSA9IGV2YWxBbmRMb2coImZpcnN0VmFs
dWUgPSAnaGknOyIpOworICAgIHNlY29uZFZhbHVlID0gZXZhbEFuZExvZygic2Vjb25kVmFsdWUg
PSAnYnllJzsiKTsKKyAgICBvYmplY3RTdG9yZUluZm8gPSBldmFsQW5kTG9nKCJvYmplY3RTdG9y
ZUluZm8gPSBbXG4iICsKKyIgICAgICAgIHsgbmFtZTogJzEnLCBvcHRpb25zOiB7fSwga2V5OiAx
LFxuIiArCisiICAgICAgICAgIGVudHJ5OiB7IGRhdGE6IGZpcnN0VmFsdWUgfSB9LFxuIiArCisi
ICAgICAgICB7IG5hbWU6ICcyJywgb3B0aW9uczogeyBrZXlQYXRoOiAnZm9vJyB9LFxuIiArCisi
ICAgICAgICAgIGVudHJ5OiB7IGZvbzogMSwgZGF0YTogZmlyc3RWYWx1ZSB9IH0sXG4iICsKKyIg
ICAgICAgIHsgbmFtZTogJzMnLCBvcHRpb25zOiB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSxcbiIg
KworIiAgICAgICAgICBlbnRyeTogeyBkYXRhOiBmaXJzdFZhbHVlIH0gfSxcbiIgKworIiAgICAg
ICAgeyBuYW1lOiAnNCcsIG9wdGlvbnM6IHsga2V5UGF0aDogJ2ZvbycsIGF1dG9JbmNyZW1lbnQ6
IHRydWUgfSxcbiIgKworIiAgICAgICAgICBlbnRyeTogeyBkYXRhOiBmaXJzdFZhbHVlIH0gfSxc
biIgKworIiAgICBdOyIpOworICAgIGkgPSBldmFsQW5kTG9nKCJpID0gMDsiKTsKKyAgICBzZXRW
ZXJzaW9uKCk7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb24oKQoreworICAgIGlmIChpIDwgb2Jq
ZWN0U3RvcmVJbmZvLmxlbmd0aCkgeworICAgICAgICBpbmZvID0gZXZhbEFuZExvZygiaW5mbyA9
IG9iamVjdFN0b3JlSW5mb1tpXTsiKTsKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBzZXR1cE9iamVjdFN0b3JlQW5kQ3JlYXRlSW5kZXhBbmRBZGQ7CisgICAgICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIH0gZWxzZSB7CisgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgIH0KK30KKworZnVuY3Rpb24gc2V0dXBPYmplY3RTdG9yZUFu
ZENyZWF0ZUluZGV4QW5kQWRkKCkKK3sKKyAgICBkZWJ1Zygic2V0dXBPYmplY3RTdG9yZUFuZENy
ZWF0ZUluZGV4KCk6Iik7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9i
amVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9y
ZShpbmZvLm5hbWUsIGluZm8ub3B0aW9ucyk7Iik7CisKKyAgICBpbmRleCA9IGV2YWxBbmRMb2co
ImluZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ2RhdGFfaW5kZXgnLCAnZGF0YScsIHsg
dW5pcXVlOiBmYWxzZSB9KTsiKTsKKyAgICB1bmlxdWVJbmRleCA9IGV2YWxBbmRMb2coInVuaXF1
ZUluZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ3VuaXF1ZV9kYXRhX2luZGV4JywgJ2Rh
dGEnLCB7IHVuaXF1ZTogdHJ1ZSB9KTsiKTsKKyAgICBpZiAoaW5mby5rZXkpIHsKKyAgICAgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoaW5mby5lbnRy
eSwgaW5mby5rZXkpOyIpOworICAgIH0gZWxzZSB7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKGluZm8uZW50cnkpOyIpOworICAgIH0KKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5DdXJzb3I7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5DdXJzb3IoKQorewor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNv
cigpOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdXBkYXRlQ3Vyc29yOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiB1cGRh
dGVDdXJzb3IoKQoreworICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IHJlcXVlc3Qu
cmVzdWx0OyIpOworICAgIHZhbHVlID0gZXZhbEFuZExvZygidmFsdWUgPSBjdXJzb3IudmFsdWU7
Iik7CisgICAgdmFsdWUuZGF0YSA9IGV2YWxBbmRMb2coInZhbHVlLmRhdGEgPSBzZWNvbmRWYWx1
ZTsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGN1cnNvci51cGRhdGUo
dmFsdWUpOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0SW5kZXgxOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBnZXRJ
bmRleDEoKQoreworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXguZ2V0
KHNlY29uZFZhbHVlKTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNoZWNrSW5kZXgxQW5k
R2V0SW5kZXgyOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworfQorCitmdW5jdGlvbiBjaGVja0luZGV4MUFuZEdldEluZGV4MigpCit7CisgICAgc2hvdWxk
QmUoInZhbHVlLmRhdGEiLCAiZXZlbnQudGFyZ2V0LnJlc3VsdC5kYXRhIik7CisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSB1bmlxdWVJbmRleC5nZXQoc2Vjb25kVmFsdWUpOyIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2hlY2tJbmRleDI7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNoZWNrSW5kZXgy
KCkKK3sKKyAgICBzaG91bGRCZSgidmFsdWUuZGF0YSIsICJldmVudC50YXJnZXQucmVzdWx0LmRh
dGEiKTsKKyAgICBldmFsQW5kTG9nKCJpKys7Iik7CisgICAgc2V0VmVyc2lvbigpOworfQorCit0
ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY3Vyc29ycy5qcyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2N1cnNvcnMuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZTFkZTM3NDBhMGNlYTAzZTkyOGI2YWIyMzUzNmYxYjI2YzZiYWM0OQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3Vy
Y2VzL2N1cnNvcnMuanMKQEAgLTAsMCArMSwzODggQEAKKy8vIG9yaWdpbmFsIHRlc3Q6CisvLyBo
dHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVz
dC90ZXN0X2N1cnNvcnMuaHRtbD9mb3JjZT0xCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6
CisvLyAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
Ly8gICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIK
KworaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0
cygnLi4vLi4vcmVzb3VyY2VzL3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJ
bmRleGVkREIgY3Vyc29yIGJlaGF2aW9yIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJl
bW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFt
ZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAg
IGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gdGVzdEdyb3VwMTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gdGVzdEdyb3VwMSgpCit7CisgICAg
ZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExv
ZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2F1dG9JbmNyZW1lbnQnLCB7IGF1dG9JbmNyZW1lbnQ6
IHRydWUgfSk7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVj
dFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkg
eworICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAibnVsbCIpOworICAgICAg
dGVzdEdyb3VwMigpOworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdEdyb3VwMigpCit7CisgICAg
b2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnYXV0b0luY3Jl
bWVudEtleVBhdGgnLCB7IGtleVBhdGg6ICdmb28nLCBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOyIp
OworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVu
Q3Vyc29yKCk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgIHNo
b3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIm51bGwiKTsKKyAgICAgIHRlc3RHcm91cDMo
KTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDMoKQoreworICAgIG9iamVjdFN0b3Jl
ID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2tleVBhdGgnLCB7IGtleVBhdGg6
ICdmb28nIH0pOyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmpl
Y3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQp
IHsKKyAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIm51bGwiKTsKKyAgICAg
IHRlc3RHcm91cDQoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDQoKQoreworICAg
IG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycpOyIp
OworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVu
Q3Vyc29yKCk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgIHNo
b3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIm51bGwiKTsKKyAgICAgIHRlc3RHcm91cDUo
KTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDUoKQoreworICAgIGtleXMgPSBldmFs
QW5kTG9nKCJrZXlzID0gWzEsIC0xLCAwLCAxMCwgMjAwMCwgJ3EnLCAneicsICd0d28nLCAnYics
ICdhJ107Iik7CisgICAgc29ydGVkS2V5cyA9IGV2YWxBbmRMb2coInNvcnRlZEtleXMgPSBbLTEs
IDAsIDEsIDEwLCAyMDAwLCAnYScsICdiJywgJ3EnLCAndHdvJywgJ3onXTsiKTsKKworICAgIGtl
eUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAwOyIpOworCisgICAgZm9yIChpIGluIGtl
eXMpIHsKKyAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
YWRkKCdmb28nLCBrZXlzW2ldKTsiKTsKKyAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVu
dCkgeworICAgICAgICBpZiAoKytrZXlJbmRleCA9PSBrZXlzLmxlbmd0aCkgeworICAgICAgICAg
IHRlc3RHcm91cDYoKTsKKyAgICAgICAgfQorICAgICAgfTsKKyAgICB9Cit9CisKK2Z1bmN0aW9u
IHRlc3RHcm91cDYoKQoreworICAgIGtleUluZGV4ID0gMDsKKworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJz
b3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgICAgaWYgKGN1cnNvcikgeworICAgICAg
ICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOworICAgICAg
ICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsK
KyAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZSIsICInZm9vJyIpOworCisgICAgICAgIGV2
YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOworICAgICAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJjdXJzb3IuY29udGludWUoKTsiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0FM
TE9XRURfRVJSIik7CisKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAic29ydGVkS2V5
c1trZXlJbmRleF0iKTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgInNv
cnRlZEtleXNba2V5SW5kZXhdIik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAi
J2ZvbyciKTsKKworICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOworICAgICAgfQor
ICAgICAgZWxzZSB7CisgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJrZXlzLmxlbmd0aCIp
OworICAgICAgICB0ZXN0R3JvdXA3KCk7CisgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiB0
ZXN0R3JvdXA3KCkKK3sKKyAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gNDsi
KTsKKworICAgIHJhbmdlID0gZXZhbEFuZExvZygicmFuZ2UgPSBJREJLZXlSYW5nZS5ib3VuZCgy
MDAwLCAncScpOyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0
U3RvcmUub3BlbkN1cnNvcihyYW5nZSk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZl
bnQpIHsKKyAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQ7Iik7CisgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
a2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
cHJpbWFyeUtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOworICAgICAgICBzaG91bGRCZSgi
Y3Vyc29yLnZhbHVlIiwgIidmb28nIik7CisKKyAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNv
bnRpbnVlKCk7Iik7CisKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAic29ydGVkS2V5
c1trZXlJbmRleF0iKTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgInNv
cnRlZEtleXNba2V5SW5kZXhdIik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAi
J2ZvbyciKTsKKworICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOworICAgICAgfQor
ICAgICAgZWxzZSB7CisgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICI4Iik7CisgICAgICAg
IHRlc3RHcm91cDgoKTsKKyAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDgo
KQoreworICAgIGtleUluZGV4ID0gMDsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24gKGV2ZW50KSB7CisgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50
YXJnZXQucmVzdWx0OyIpOworICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICBzaG91bGRCZSgi
Y3Vyc29yLmtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOworICAgICAgICBzaG91bGRCZSgi
Y3Vyc29yLnByaW1hcnlLZXkiLCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKKyAgICAgICAgc2hv
dWxkQmUoImN1cnNvci52YWx1ZSIsICInZm9vJyIpOworCisgICAgICAgIGlmIChrZXlJbmRleCkg
eworICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOworICAgICAgICB9
CisgICAgICAgIGVsc2UgeworICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgn
YicpOyIpOworICAgICAgICB9CisKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAic29y
dGVkS2V5c1trZXlJbmRleF0iKTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5
IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFs
dWUiLCAiJ2ZvbyciKTsKKworICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCArPSBrZXlJbmRl
eCA/IDE6IDY7Iik7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgc2hvdWxkQmUoImtl
eUluZGV4IiwgImtleXMubGVuZ3RoIik7CisgICAgICAgIHRlc3RHcm91cDkoKTsKKyAgICAgIH0K
KyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDkoKQoreworICAgIGtleUluZGV4ID0gZXZh
bEFuZExvZygia2V5SW5kZXggPSAwOyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbiAoZXZlbnQpIHsKKyAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50
LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgIHNob3VsZEJl
KCJjdXJzb3Iua2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7CisgICAgICAgIHNob3VsZEJl
KCJjdXJzb3IucHJpbWFyeUtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOworICAgICAgICBz
aG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgIidmb28nIik7CisKKyAgICAgICAgaWYgKGtleUluZGV4
KSB7CisgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisgICAgICAg
IH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVl
KDEwKTsiKTsKKyAgICAgICAgfQorCisgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgInNv
cnRlZEtleXNba2V5SW5kZXhdIik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtl
eSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZh
bHVlIiwgIidmb28nIik7CisKKyAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXggKz0ga2V5SW5k
ZXggPyAxOiAzOyIpOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHNob3VsZEJlKCJr
ZXlJbmRleCIsICJrZXlzLmxlbmd0aCIpOworICAgICAgICB0ZXN0R3JvdXAxMCgpOworICAgICAg
fQorICAgIH0KK30KKworZnVuY3Rpb24gdGVzdEdyb3VwMTAoKQoreworICAgIGtleUluZGV4ID0g
ZXZhbEFuZExvZygia2V5SW5kZXggPSAwOyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2
ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgIHNob3Vs
ZEJlKCJjdXJzb3Iua2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7CisgICAgICAgIHNob3Vs
ZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOworICAgICAg
ICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgIidmb28nIik7CisKKyAgICAgICAgaWYgKGtleUlu
ZGV4KSB7CisgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisgICAg
ICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRp
bnVlKCdjJyk7Iik7CisgICAgICAgIH0KKworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIs
ICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1h
cnlLZXkiLCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNv
ci52YWx1ZSIsICInZm9vJyIpOworCisgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4ICs9IGtl
eUluZGV4ID8gMSA6IDc7Iik7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgc2hvdWxk
QmUoImtleUluZGV4IiwgImtleXMubGVuZ3RoIik7CisgICAgICAgIHRlc3RHcm91cDExKCk7Cisg
ICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0R3JvdXAxMSgpCit7CisgICAga2V5SW5k
ZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDA7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uIChldmVudCkgeworICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29y
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAg
c2hvdWxkQmUoImN1cnNvci5rZXkiLCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKKyAgICAgICAg
c2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7Cisg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAiJ2ZvbyciKTsKKworICAgICAgICBpZiAo
a2V5SW5kZXggPT0gNCkgeworICAgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gY3Vyc29yLnVwZGF0ZSgnYmFyJyk7Iik7CisgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsK
KyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOworICAgICAgICAg
IH07CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgZXZhbEFuZExvZygia2V5
SW5kZXgrKzsiKTsKKyAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsK
KyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHNob3VsZEJlKCJrZXlJ
bmRleCIsICJrZXlzLmxlbmd0aCIpOworICAgICAgICB0ZXN0R3JvdXAxMigpOworICAgICAgfQor
ICAgIH0KK30KKworZnVuY3Rpb24gdGVzdEdyb3VwMTIoKQoreworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KHNvcnRlZEtleXNbNF0pOyIpOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gdGVzdEdyb3VwMTJiOworfQorCitmdW5jdGlvbiB0ZXN0R3JvdXAxMmIoKQor
eworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIidiYXInIik7CisKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgnZm9vJywgc29y
dGVkS2V5c1s0XSk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0ZXN0R3JvdXAxMzsKK30KKworZnVuY3Rp
b24gdGVzdEdyb3VwMTMoKQoreworICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXgg
PSAwOyIpOworCisgICAgZ290UmVtb3ZlRXZlbnQgPSBmYWxzZTsKKyAgICByZXR2YWwgPSBmYWxz
ZTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3Bl
bkN1cnNvcihudWxsLCBJREJDdXJzb3IuTkVYVCk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlv
biAoZXZlbnQpIHsKKyAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRh
cmdldC5yZXN1bHQ7Iik7CisgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgIHNob3VsZEJlKCJj
dXJzb3Iua2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7CisgICAgICAgIHNob3VsZEJlKCJj
dXJzb3IucHJpbWFyeUtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOworICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLnZhbHVlIiwgIidmb28nIik7CisKKyAgICAgICAgaWYgKGtleUluZGV4ID09
IDQpIHsKKyAgICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGN1cnNvci5k
ZWxldGUoKTsiKTsKKyAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKKyAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7
CisgICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNSIpOworICAgICAgICAgICAgZ290
UmVtb3ZlRXZlbnQgPSBldmFsQW5kTG9nKCJnb3RSZW1vdmVFdmVudCA9IHRydWU7Iik7CisgICAg
ICAgICAgfTsKKyAgICAgICAgfQorCisgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7
CisgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOworICAgICAgfQorICAg
ICAgZWxzZSB7CisgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJrZXlzLmxlbmd0aCIpOwor
ICAgICAgICBzaG91bGRCZSgiZ290UmVtb3ZlRXZlbnQiLCAidHJ1ZSIpOworICAgICAgICB0ZXN0
R3JvdXAxNCgpOworICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gdGVzdEdyb3VwMTQoKQor
eworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KHNv
cnRlZEtleXNbNF0pOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdGVzdEdyb3VwMTRiOworfQorCitmdW5j
dGlvbiB0ZXN0R3JvdXAxNGIoKQoreworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0
IiwgInVuZGVmaW5lZCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBv
YmplY3RTdG9yZS5hZGQoJ2ZvbycsIHNvcnRlZEtleXNbNF0pOyIpOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
dGVzdEdyb3VwMTU7Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDE1KCkKK3sKKyAgICBrZXlJbmRl
eCA9IHNvcnRlZEtleXMubGVuZ3RoIC0gMTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcihudWxsLCBJREJDdXJzb3IuUFJFVik7Iik7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgIGN1cnNvciA9IGV2YWxB
bmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICBpZiAoY3Vyc29y
KSB7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhd
Iik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJzb3J0ZWRLZXlzW2tl
eUluZGV4XSIpOworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgIidmb28nIik7CisK
KyAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisKKyAgICAgICAgc2hv
dWxkQmUoImN1cnNvci5rZXkiLCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKKyAgICAgICAgc2hv
dWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7CisgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAiJ2ZvbyciKTsKKworICAgICAgICBldmFsQW5k
TG9nKCJrZXlJbmRleC0tOyIpOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHNob3Vs
ZEJlKCJrZXlJbmRleCIsICItMSIpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgIH0K
KyAgICB9Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9kZWxl
dGUtcmVzdWx0LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNv
dXJjZXMvZGVsZXRlLXJlc3VsdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZjZmZDIwMjEzMDJhZjU3N2JiNGM4
ODNmOWE1MzAwZWJjZTEzMDE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvZGVsZXRlLXJlc3VsdC5qcwpAQCAtMCwwICsx
LDY0IEBACisvLyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3pp
bGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9vZGRfcmVzdWx0X29yZGVyLmh0
bWw/cmF3PTEKKy8vIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBvcnRT
Y3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi9yZXNvdXJjZXMv
c2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQjogcmVzdWx0IHBy
b3BlcnR5IGFmdGVyIGRlbGV0aW5nIGV4aXN0aW5nIGFuZCBub24tZXhpc3RpbmcgcmVjb3JkIik7
CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAg
ICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBU
ZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4o
bmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2Vz
czsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKwor
ZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBk
Yi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZU9iamVj
dFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBjcmVhdGVPYmplY3RTdG9yZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0
U3RvcmVzKGRiKTsKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycsIHsga2V5UGF0aDogJ2lkJywgYXV0b0luY3JlbWVu
dDogdHJ1ZSB9KTsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVj
dFN0b3JlLmFkZCh7fSk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVSZWNvcmQx
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiBkZWxldGVSZWNvcmQxKCkKK3sKKyAgICBpZCA9IGV2YWxBbmRMb2coImlkID0gZXZl
bnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IG9iamVjdFN0b3JlLmRlbGV0ZShpZCk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxl
dGVSZWNvcmQyOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworfQorCitmdW5jdGlvbiBkZWxldGVSZWNvcmQyKCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQu
dGFyZ2V0LnJlc3VsdCIsICJ1bmRlZmluZWQiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IG9iamVjdFN0b3JlLmRlbGV0ZShpZCk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmaW5hbENoZWNrOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRTdWNjZXNz
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGZpbmFsQ2hlY2soKQoreworICAgIHNob3VsZEJlKCJl
dmVudC50YXJnZXQucmVzdWx0IiwgInVuZGVmaW5lZCIpOworICAgIGZpbmlzaEpTVGVzdCgpOwor
fQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvZXZlbnQtc291cmNl
LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvZXZl
bnQtc291cmNlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhNzk2YzUxMTVmNDdmMDA4YjlhZmYwODc4YWViZGRj
N2VmY2I3ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL3Jlc291cmNlcy9ldmVudC1zb3VyY2UuanMKQEAgLTAsMCArMSw1NyBAQAorLy8g
b3JpZ2luYWwgdGVzdDoKKy8vIGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3Vy
Y2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfZXZlbnRfc291cmNlLmh0bWwKKy8vIGxpY2Vuc2Ug
b2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0
U2NyaXB0cygnLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsK
KyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi9yZXNvdXJjZXMvc2hhcmVkLmpzJyk7Cit9CisKK2Rl
c2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGV2ZW50LnRhcmdldC5zb3VyY2UgaW4gc3VjY2Vz
cyBjYWxsYmFja3MiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJl
Zml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2Ny
aXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgc291cmNlID0gZXZh
bEFuZExvZygic291cmNlID0gZXZlbnQudGFyZ2V0LnNvdXJjZTsiKTsKKyAgICBzaG91bGRCZSgi
c291cmNlIiwgImluZGV4ZWREQiIpOworCisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRi
LnNldFZlcnNpb24oJzEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFz
ZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKwor
ZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7CisgICAgc291cmNlID0gZXZhbEFuZExvZygic291
cmNlID0gZXZlbnQudGFyZ2V0LnNvdXJjZTsiKTsKKyAgICBzaG91bGRCZSgic291cmNlIiwgImRi
Iik7CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmVO
YW1lID0gIk9iamVjdHMiOworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3Rv
cmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUsIHsgYXV0b0luY3JlbWVu
dDogdHJ1ZSB9KTsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVj
dFN0b3JlLmFkZCh7fSk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhcmVXZURvbmVZZXQ7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIGFyZVdlRG9uZVlldCgpCit7CisgICAgc291cmNlID0gZXZhbEFuZExvZygic291cmNl
ID0gZXZlbnQudGFyZ2V0LnNvdXJjZTsiKTsKKyAgICBzaG91bGRCZSgic291cmNlIiwgIm9iamVj
dFN0b3JlIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL3Jlc291cmNlcy9nbG9iYWwtZGF0YS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2dsb2JhbC1kYXRhLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMw
ZTliYWUxM2FlNjVlZjQ0YzhlOTk0NjUzNTVjZjEzYjg0YWQ2ZDcKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9nbG9iYWwt
ZGF0YS5qcwpAQCAtMCwwICsxLDY5IEBACisvLyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDovL214
ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9n
bG9iYWxfZGF0YS5odG1sCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisvLyAiIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorLy8gICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKworaWYgKHRoaXMu
aW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vcmVz
b3VyY2VzL3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBv
cGVuaW5nIERCIG1vcmUgdGhhbiBvbmNlIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJl
bW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFt
ZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAg
IGRiMSA9IGV2YWxBbmRMb2coImRiMSA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIxLnNldFZlcnNpb24oJzEnKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgp
Cit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiMSk7CisKKyAgICBvYmplY3RTdG9yZU5h
bWUgPSAiT2JqZWN0cyI7CisgICAgb2JqZWN0U3RvcmVPcHRpb25zID0geyBrZXlQYXRoOiAnaWQn
LCBhdXRvSW5jcmVtZW50OiB0cnVlIH07CisgICAgZXZhbEFuZExvZygiZGIxLmNyZWF0ZU9iamVj
dFN0b3JlKG9iamVjdFN0b3JlTmFtZSwgb2JqZWN0U3RvcmVPcHRpb25zKTsiKTsKKworICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbik7Iik7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuMlN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW4yU3VjY2Vz
cygpCit7CisgICAgZGIyID0gZXZhbEFuZExvZygiZGIyID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIp
OworCisgICAgc2hvdWxkQmVUcnVlKCJkYjEgIT09IGRiMiIpOworICAgIHNob3VsZEJlKCJkYjEu
b2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMSIpOworICAgIHNob3VsZEJlKCJkYjEub2JqZWN0
U3RvcmVOYW1lcy5pdGVtKDApIiwgIm9iamVjdFN0b3JlTmFtZSIpOworICAgIHNob3VsZEJlKCJk
YjIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMSIpOworICAgIHNob3VsZEJlKCJkYjIub2Jq
ZWN0U3RvcmVOYW1lcy5pdGVtKDApIiwgIm9iamVjdFN0b3JlTmFtZSIpOworCisgICAgb2JqZWN0
U3RvcmUxID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUxID0gZGIxLnRyYW5zYWN0aW9uKG9iamVj
dFN0b3JlTmFtZSkub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKTsiKTsKKyAgICBzaG91bGRC
ZSgib2JqZWN0U3RvcmUxLm5hbWUiLCAib2JqZWN0U3RvcmVOYW1lIik7CisgICAgc2hvdWxkQmUo
Im9iamVjdFN0b3JlMS5rZXlQYXRoIiwgIm9iamVjdFN0b3JlT3B0aW9ucy5rZXlQYXRoIik7CisK
KyAgICBvYmplY3RTdG9yZTIgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZTIgPSBkYjIudHJhbnNh
Y3Rpb24ob2JqZWN0U3RvcmVOYW1lKS5vYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpOyIpOwor
ICAgIHNob3VsZEJlVHJ1ZSgib2JqZWN0U3RvcmUxICE9PSBvYmplY3RTdG9yZTIiKTsKKyAgICBz
aG91bGRCZSgib2JqZWN0U3RvcmUyLm5hbWUiLCAib2JqZWN0U3RvcmVOYW1lIik7CisgICAgc2hv
dWxkQmUoIm9iamVjdFN0b3JlMi5rZXlQYXRoIiwgIm9iamVjdFN0b3JlT3B0aW9ucy5rZXlQYXRo
Iik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
emlsbGEvcmVzb3VyY2VzL2luZGV4ZXMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL3Jlc291cmNlcy9pbmRleGVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmNWU1YWUwNzljYjY2
Y2Y0OTExMDYxMDg5ZTJiNGI2NzVjMDI2ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9pbmRleGVzLmpzCkBAIC0wLDAg
KzEsMTAxMSBAQAorLy8gb3JpZ2luYWwgdGVzdDoKKy8vIGh0dHA6Ly9teHIubW96aWxsYS5vcmcv
bW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfaW5kZXhlcy5odG1sP2Zv
cmNlPTEKKy8vIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBvcnRTY3Jp
cHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi9yZXNvdXJjZXMvc2hh
cmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQjogaXRlcmF0aW5nIHRo
cm91Z2ggaW5kZXggY3Vyc29ycyB3aXRoIGtleXMgYW5kIGtleSByYW5nZXMiKTsKKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBz
ZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJh
c2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNj
cmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBv
cGVuU3VjY2VzcygpCit7CisgICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7CisgICAgZGIgPSBl
dmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIG9iamVjdFN0b3Jl
TmFtZSA9ICJQZW9wbGUiOworCisgICAgb2JqZWN0U3RvcmVEYXRhID0gWworICAgICAgICB7IGtl
eTogIjIzNy0yMy03NzMyIiwgdmFsdWU6IHsgbmFtZTogIkJvYiIsIGhlaWdodDogNjAsIHdlaWdo
dDogMTIwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczMyIsIHZhbHVlOiB7IG5hbWU6
ICJBbm4iLCBoZWlnaHQ6IDUyLCB3ZWlnaHQ6IDExMCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3
LTIzLTc3MzQiLCB2YWx1ZTogeyBuYW1lOiAiUm9uIiwgaGVpZ2h0OiA3Mywgd2VpZ2h0OiAxODAg
fSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzM1IiwgdmFsdWU6IHsgbmFtZTogIlN1ZSIs
IGhlaWdodDogNTgsIHdlaWdodDogMTMwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzcz
NiIsIHZhbHVlOiB7IG5hbWU6ICJKb2UiLCBoZWlnaHQ6IDY1LCB3ZWlnaHQ6IDE1MCB9IH0sCisg
ICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzciLCB2YWx1ZTogeyBuYW1lOiAiUGF0IiwgaGVpZ2h0
OiA2NSwgd2VpZ2h0OiAxMDAgfSB9CisgICAgXTsKKworICAgIGluZGV4RGF0YSA9IFsKKyAgICAg
ICAgeyBuYW1lOiAibmFtZSIsIGtleVBhdGg6ICJuYW1lIiwgb3B0aW9uczogeyB1bmlxdWU6IHRy
dWUgfSB9LAorICAgICAgICB7IG5hbWU6ICJoZWlnaHQiLCBrZXlQYXRoOiAiaGVpZ2h0Iiwgb3B0
aW9uczogeyB9IH0sCisgICAgICAgIHsgbmFtZTogIndlaWdodCIsIGtleVBhdGg6ICJ3ZWlnaHQi
LCBvcHRpb25zOiB7IHVuaXF1ZTogZmFsc2UgfSB9CisgICAgXTsKKworICAgIG9iamVjdFN0b3Jl
RGF0YU5hbWVTb3J0ID0gWworICAgICAgICB7IGtleTogIjIzNy0yMy03NzMzIiwgdmFsdWU6IHsg
bmFtZTogIkFubiIsIGhlaWdodDogNTIsIHdlaWdodDogMTEwIH0gfSwKKyAgICAgICAgeyBrZXk6
ICIyMzctMjMtNzczMiIsIHZhbHVlOiB7IG5hbWU6ICJCb2IiLCBoZWlnaHQ6IDYwLCB3ZWlnaHQ6
IDEyMCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzYiLCB2YWx1ZTogeyBuYW1lOiAi
Sm9lIiwgaGVpZ2h0OiA2NSwgd2VpZ2h0OiAxNTAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0y
My03NzM3IiwgdmFsdWU6IHsgbmFtZTogIlBhdCIsIGhlaWdodDogNjUsIHdlaWdodDogMTAwIH0g
fSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNCIsIHZhbHVlOiB7IG5hbWU6ICJSb24iLCBo
ZWlnaHQ6IDczLCB3ZWlnaHQ6IDE4MCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzUi
LCB2YWx1ZTogeyBuYW1lOiAiU3VlIiwgaGVpZ2h0OiA1OCwgd2VpZ2h0OiAxMzAgfSB9CisgICAg
XTsKKworICAgIG9iamVjdFN0b3JlRGF0YVdlaWdodFNvcnQgPSBbCisgICAgICAgIHsga2V5OiAi
MjM3LTIzLTc3MzciLCB2YWx1ZTogeyBuYW1lOiAiUGF0IiwgaGVpZ2h0OiA2NSwgd2VpZ2h0OiAx
MDAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzMzIiwgdmFsdWU6IHsgbmFtZTogIkFu
biIsIGhlaWdodDogNTIsIHdlaWdodDogMTEwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMt
NzczMiIsIHZhbHVlOiB7IG5hbWU6ICJCb2IiLCBoZWlnaHQ6IDYwLCB3ZWlnaHQ6IDEyMCB9IH0s
CisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzUiLCB2YWx1ZTogeyBuYW1lOiAiU3VlIiwgaGVp
Z2h0OiA1OCwgd2VpZ2h0OiAxMzAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzM2Iiwg
dmFsdWU6IHsgbmFtZTogIkpvZSIsIGhlaWdodDogNjUsIHdlaWdodDogMTUwIH0gfSwKKyAgICAg
ICAgeyBrZXk6ICIyMzctMjMtNzczNCIsIHZhbHVlOiB7IG5hbWU6ICJSb24iLCBoZWlnaHQ6IDcz
LCB3ZWlnaHQ6IDE4MCB9IH0KKyAgICBdOworCisgICAgb2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29y
dCA9IFsKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczMyIsIHZhbHVlOiB7IG5hbWU6ICJBbm4i
LCBoZWlnaHQ6IDUyLCB3ZWlnaHQ6IDExMCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3
MzUiLCB2YWx1ZTogeyBuYW1lOiAiU3VlIiwgaGVpZ2h0OiA1OCwgd2VpZ2h0OiAxMzAgfSB9LAor
ICAgICAgICB7IGtleTogIjIzNy0yMy03NzMyIiwgdmFsdWU6IHsgbmFtZTogIkJvYiIsIGhlaWdo
dDogNjAsIHdlaWdodDogMTIwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNiIsIHZh
bHVlOiB7IG5hbWU6ICJKb2UiLCBoZWlnaHQ6IDY1LCB3ZWlnaHQ6IDE1MCB9IH0sCisgICAgICAg
IHsga2V5OiAiMjM3LTIzLTc3MzciLCB2YWx1ZTogeyBuYW1lOiAiUGF0IiwgaGVpZ2h0OiA2NSwg
d2VpZ2h0OiAxMDAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzM0IiwgdmFsdWU6IHsg
bmFtZTogIlJvbiIsIGhlaWdodDogNzMsIHdlaWdodDogMTgwIH0gfQorICAgIF07CisKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZTsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
Y3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3Rv
cmVzKGRiKTsKKyAgICB0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisKKyAgICBvYmplY3RT
dG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUob2Jq
ZWN0U3RvcmVOYW1lKTsiKTsKKworICAgIGRlYnVnKCJGaXJzdCwgYWRkIGFsbCBvdXIgZGF0YSB0
byB0aGUgb2JqZWN0IHN0b3JlLiIpOworICAgIGFkZGVkRGF0YSA9IDA7CisgICAgZm9yIChpIGlu
IG9iamVjdFN0b3JlRGF0YSkgeworICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW2ldLnZhbHVlLCBvYmplY3RTdG9yZURh
dGFbaV0ua2V5KTsiKTsKKyAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgeworICAg
ICAgICBpZiAoKythZGRlZERhdGEgPT0gb2JqZWN0U3RvcmVEYXRhLmxlbmd0aCkgeworICAgICAg
ICAgIGNyZWF0ZUluZGV4ZXMoKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KK30KKworZnVu
Y3Rpb24gY3JlYXRlSW5kZXhlcygpCit7CisgICAgZGVidWcoIk5vdyBjcmVhdGUgdGhlIGluZGV4
ZXMuIik7CisgICAgZm9yIChpIGluIGluZGV4RGF0YSkgeworICAgICAgZXZhbEFuZExvZygib2Jq
ZWN0U3RvcmUuY3JlYXRlSW5kZXgoaW5kZXhEYXRhW2ldLm5hbWUsIGluZGV4RGF0YVtpXS5rZXlQ
YXRoLCBpbmRleERhdGFbaV0ub3B0aW9ucyk7Iik7CisgICAgfQorICAgIHNob3VsZEJlKCJvYmpl
Y3RTdG9yZS5pbmRleE5hbWVzLmxlbmd0aCIsICJpbmRleERhdGEubGVuZ3RoIik7CisgICAgdHJh
bnMub25jb21wbGV0ZSA9IHNldFZlcnNpb25Db21wbGV0ZTsKK30KKworZnVuY3Rpb24gc2V0VmVy
c2lvbkNvbXBsZXRlKCkKK3sKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0
b3JlID0gZGIudHJhbnNhY3Rpb24ob2JqZWN0U3RvcmVOYW1lKS5vYmplY3RTdG9yZShvYmplY3RT
dG9yZU5hbWUpOyIpOworCisgICAgLy8gQ2hlY2sgZ2xvYmFsIHByb3BlcnRpZXMgdG8gbWFrZSBz
dXJlIHRoZXkgYXJlIGNvcnJlY3QuCisgICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLmluZGV4TmFt
ZXMubGVuZ3RoIiwgImluZGV4RGF0YS5sZW5ndGgiKTsKKyAgICBmb3IgKGkgaW4gaW5kZXhEYXRh
KSB7CisgICAgICAgIGZvdW5kID0gZmFsc2U7CisgICAgICAgIGZvciAoaiA9IDA7IGogPCBvYmpl
Y3RTdG9yZS5pbmRleE5hbWVzLmxlbmd0aDsgaisrKSB7CisgICAgICAgICAgICBpZiAob2JqZWN0
U3RvcmUuaW5kZXhOYW1lcy5pdGVtKGopID09IGluZGV4RGF0YVtpXS5uYW1lKSB7CisgICAgICAg
ICAgICAgICAgZm91bmQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiZm91bmQiKTsKKyAgICAgICAg
aW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmluZGV4KGluZGV4RGF0YVtp
XS5uYW1lKTsiKTsKKyAgICAgICAgc2hvdWxkQmUoImluZGV4Lm5hbWUiLCAiaW5kZXhEYXRhW2ld
Lm5hbWUiKTsKKyAgICAgICAgc2hvdWxkQmUoImluZGV4LmtleVBhdGgiLCAiaW5kZXhEYXRhW2ld
LmtleVBhdGgiKTsKKyAgICAgICAgc2hvdWxkQmUoImluZGV4LnVuaXF1ZSIsIGluZGV4RGF0YVtp
XS5vcHRpb25zLnVuaXF1ZSA/ICJ0cnVlIiA6ICJmYWxzZSIpOworICAgIH0KKworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5nZXRL
ZXkoJ0JvYicpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2hlY2tHZXRLZXk7Cit9CisKK2Z1bmN0aW9u
IGNoZWNrR2V0S2V5KCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICIn
MjM3LTIzLTc3MzInIik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9i
amVjdFN0b3JlLmluZGV4KCduYW1lJykuZ2V0KCdCb2InKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNo
ZWNrR2V0OworfQorCitmdW5jdGlvbiBjaGVja0dldCgpCit7CisgICAgc2hvdWxkQmUoImV2ZW50
LnRhcmdldC5yZXN1bHQubmFtZSIsICInQm9iJyIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJn
ZXQucmVzdWx0LmhlaWdodCIsICI2MCIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVz
dWx0LndlaWdodCIsICIxMjAiKTsKKworICAgIGtleUluZGV4ID0gMDsKKworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuS2V5
Q3Vyc29yKCk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAg
Y3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAg
ICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAi
b2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29y
dFtrZXlJbmRleF0ua2V5Iik7CisgICAgICAgICAgICBzaG91bGRCZUZhbHNlKCIndmFsdWUnIGlu
IGN1cnNvciIpOworCisgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsi
KTsKKworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRh
TmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJj
dXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5
Iik7CisgICAgICAgICAgICBzaG91bGRCZUZhbHNlKCIndmFsdWUnIGluIGN1cnNvciIpOworCisg
ICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOworICAgICAgICB9CisgICAgICAg
IGVsc2UgeworICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJvYmplY3RTdG9yZURhdGEu
bGVuZ3RoIik7CisgICAgICAgICAgdGVzdEdyb3VwMygpOworICAgICAgICB9CisgICAgfTsKK30K
KworZnVuY3Rpb24gdGVzdEdyb3VwMygpCit7CisgICAga2V5SW5kZXggPSAwOworCisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnd2VpZ2h0Jyku
b3BlbktleUN1cnNvcihudWxsLCBJREJDdXJzb3IuTkVYVCk7Iik7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICAg
ICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhV2VpZ2h0U29ydFtrZXlJ
bmRleF0udmFsdWUud2VpZ2h0Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1h
cnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhV2VpZ2h0U29ydFtrZXlJbmRleF0ua2V5Iik7CisKKyAg
ICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOworCisgICAgICAgICAg
ICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFXZWlnaHRTb3J0W2tleUlu
ZGV4XS52YWx1ZS53ZWlnaHQiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFy
eUtleSIsICJvYmplY3RTdG9yZURhdGFXZWlnaHRTb3J0W2tleUluZGV4XS5rZXkiKTsKKworICAg
ICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKKyAgICAgICAgfQorICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJvYmplY3RTdG9yZURhdGEu
bGVuZ3RoIik7CisgICAgICAgICAgICB0ZXN0R3JvdXA0KCk7CisgICAgICAgIH0KKyAgICB9Cit9
CisKK2Z1bmN0aW9uIHRlc3RHcm91cDQoKQoreworLyogdGhpcyB3YXMgc3BsaXQgb3V0IGludG8g
YSBzZXBhcmF0ZSB0ZXN0CisgICAgZGVidWcoIkNoZWNrIHRoYXQgdGhlIG5hbWUgaW5kZXggZW5m
b3JjZXMgaXRzIHVuaXF1ZSBjb25zdHJhaW50LiIpOworICAgIG9iamVjdFN0b3JlID0gZXZhbEFu
ZExvZygib2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUsIElEQlRy
YW5zYWN0aW9uLlJFQURfV1JJVEUpLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7Iik7Cisg
ICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigib2JqZWN0U3RvcmUuYWRkKHsgbmFtZTogJ0JvYics
IGhlaWdodDogNjIsIHdlaWdodDogMTcwIH0sICcyMzctMjMtNzczOCcpOyIsICJJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5DT05TVFJBSU5UX0VSUiIpOworKi8KKworICAgIG9iamVjdFN0b3JlID0gZXZh
bEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUpLm9i
amVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7Iik7CisgICAga2V5SW5kZXggPSBldmFsQW5kTG9n
KCJrZXlJbmRleCA9IG9iamVjdFN0b3JlRGF0YU5hbWVTb3J0Lmxlbmd0aCAtIDE7Iik7CisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScp
Lm9wZW5LZXlDdXJzb3IobnVsbCwgSURCQ3Vyc29yLlBSRVYpOyIpOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9
IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUlu
ZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlL
ZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOworCisgICAgICAg
ICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKKworICAgICAgICAgICAgc2hv
dWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZh
bHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJv
YmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7CisKKyAgICAgICAgICAgIGV2
YWxBbmRMb2coImtleUluZGV4LS07Iik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiLTEiKTsKKyAgICAgICAgICAgIHRlc3RHcm91
cDUoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gdGVzdEdyb3VwNSgpCit7Cisg
ICAga2V5SW5kZXggPSAxOworICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJ
REJLZXlSYW5nZS5ib3VuZCgnQm9iJywgJ1JvbicpOyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuS2V5Q3Vyc29yKGtl
eVJhbmdlKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgeworICAgICAgICBj
dXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAg
ICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJv
YmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAgICAg
ICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0
W2tleUluZGV4XS5rZXkiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51
ZSgpOyIpOworICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKKyAgICAgICAg
fQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICI1Iik7
CisgICAgICAgICAgICB0ZXN0R3JvdXA2KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0
aW9uIHRlc3RHcm91cDYoKQoreworICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXgg
PSAyOyIpOworICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlSYW5n
ZS5ib3VuZCgnQm9iJywgJ1JvbicsIHRydWUpOyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9wZW5LZXlDdXJzb3Ioa2V5
UmFuZ2UpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgIGN1
cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAg
ICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9i
amVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAg
ICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRb
a2V5SW5kZXhdLmtleSIpOworCisgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGlu
dWUoKTsiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7CisgICAgICAg
IH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNSIp
OworICAgICAgICAgICAgdGVzdEdyb3VwNygpOworICAgICAgICB9CisgICAgfQorfQorCitmdW5j
dGlvbiB0ZXN0R3JvdXA3KCkKK3sKKyAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4
ID0gMTsiKTsKKyAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtleVJhbmdlID0gSURCS2V5UmFu
Z2UuYm91bmQoJ0JvYicsICdSb24nLCBmYWxzZSwgdHJ1ZSk7Iik7CisKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCduYW1lJykub3BlbktleUN1
cnNvcihrZXlSYW5nZSk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAg
ICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsi
KTsKKyAgICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5r
ZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAg
ICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFO
YW1lU29ydFtrZXlJbmRleF0ua2V5Iik7CisKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNv
ci5jb250aW51ZSgpOyIpOworICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsK
KyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRl
eCIsICI0Iik7CisgICAgICAgICAgICB0ZXN0R3JvdXA4KCk7CisgICAgICAgIH0KKyAgICB9Cit9
CisKK2Z1bmN0aW9uIHRlc3RHcm91cDgoKQoreworICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygi
a2V5SW5kZXggPSAyOyIpOworICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJ
REJLZXlSYW5nZS5ib3VuZCgnQm9iJywgJ1JvbicsIHRydWUsIHRydWUpOyIpOworCisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9w
ZW5LZXlDdXJzb3Ioa2V5UmFuZ2UpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50
KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQ7Iik7CisgICAgICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJj
dXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1l
Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3Rv
cmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOworCisgICAgICAgICAgICBldmFsQW5kTG9n
KCJjdXJzb3IuY29udGludWUoKTsiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4
Kys7Iik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzaG91bGRCZSgi
a2V5SW5kZXgiLCAiNCIpOworICAgICAgICAgICAgdGVzdEdyb3VwOSgpOworICAgICAgICB9Cisg
ICAgfQorfQorCitmdW5jdGlvbiB0ZXN0R3JvdXA5KCkKK3sKKyAgICBrZXlJbmRleCA9IGV2YWxB
bmRMb2coImtleUluZGV4ID0gMTsiKTsKKyAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtleVJh
bmdlID0gSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgnQm9iJyk7Iik7CisKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCduYW1lJykub3BlbktleUN1
cnNvcihrZXlSYW5nZSk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAg
ICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsi
KTsKKyAgICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5r
ZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAg
ICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFO
YW1lU29ydFtrZXlJbmRleF0ua2V5Iik7CisKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNv
ci5jb250aW51ZSgpOyIpOworICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsK
KyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRl
eCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydC5sZW5ndGgiKTsKKyAgICAgICAgICAgIHRlc3RH
cm91cDEwKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDEwKCkK
K3sKKyAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gMjsiKTsKKyAgICBrZXlS
YW5nZSA9IGV2YWxBbmRMb2coImtleVJhbmdlID0gSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgnQm9i
JywgdHJ1ZSk7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVj
dFN0b3JlLmluZGV4KCduYW1lJykub3BlbktleUN1cnNvcihrZXlSYW5nZSk7Iik7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygi
Y3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAgICAgaWYgKGN1cnNvcikgewor
ICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNv
cnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
cHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7CisK
KyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOworICAgICAgICAg
ICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29y
dC5sZW5ndGgiKTsKKyAgICAgICAgICAgIHRlc3RHcm91cDExKCk7CisgICAgICAgIH0KKyAgICB9
Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDExKCkKK3sKKyAgICBrZXlJbmRleCA9IGV2YWxBbmRM
b2coImtleUluZGV4ID0gMDsiKTsKKyAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtleVJhbmdl
ID0gSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgnSm9lJyk7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCduYW1lJykub3BlbktleUN1cnNv
cihrZXlSYW5nZSk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAg
ICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsK
KyAgICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXki
LCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1l
U29ydFtrZXlJbmRleF0ua2V5Iik7CisKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5j
b250aW51ZSgpOyIpOworICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKKyAg
ICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAi
MyIpOworICAgICAgICAgIHRlc3RHcm91cDEyKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1
bmN0aW9uIHRlc3RHcm91cDEyKCkKK3sKKyAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUlu
ZGV4ID0gMDsiKTsKKyAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtleVJhbmdlID0gSURCS2V5
UmFuZ2UudXBwZXJCb3VuZCgnSm9lJywgdHJ1ZSk7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCduYW1lJykub3BlbktleUN1cnNvcihr
ZXlSYW5nZSk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAg
Y3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAg
ICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAi
b2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29y
dFtrZXlJbmRleF0ua2V5Iik7CisKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250
aW51ZSgpOyIpOworICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKKyAgICAg
ICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICIy
Iik7CisgICAgICAgICAgICB0ZXN0R3JvdXAxMygpOworICAgICAgICB9CisgICAgfQorfQorCitm
dW5jdGlvbiB0ZXN0R3JvdXAxMygpCit7CisgICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJ
bmRleCA9IDM7Iik7CisgICAga2V5UmFuZ2UgPSBldmFsQW5kTG9nKCJrZXlSYW5nZSA9IElEQktl
eVJhbmdlLm9ubHkoJ1BhdCcpOyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVl
c3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9wZW5LZXlDdXJzb3Ioa2V5UmFuZ2UpOyIp
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2
YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICAgIGlmIChj
dXJzb3IpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3Jl
RGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhd
LmtleSIpOworCisgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsK
KyAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7CisgICAgICAgIH0KKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNCIpOworICAgICAg
ICAgICAgdGVzdEdyb3VwMTQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gdGVz
dEdyb3VwMTQoKQoreworICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAwOyIp
OworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRl
eCgnbmFtZScpLm9wZW5DdXJzb3IoKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVu
dCkgeworICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQu
cmVzdWx0OyIpOworICAgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgICAgICBzaG91bGRCZSgi
Y3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFt
ZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0
b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJj
dXJzb3IudmFsdWUubmFtZSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFs
dWUubmFtZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQiLCAi
b2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOworICAgICAg
ICAgICAgaWYgKCd3ZWlnaHQnIGluIGN1cnNvci52YWx1ZSkgeworICAgICAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tl
eUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZXZh
bEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisKKyAgICAgICAgICAgIHNob3VsZEJlKCJj
dXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1l
Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3Rv
cmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1
cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1
ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIsICJv
YmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7CisgICAgICAg
ICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7CisgICAgICAgICAgICAgICAgc2hv
dWxkQmUoImN1cnNvci52YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5
SW5kZXhdLnZhbHVlLndlaWdodCIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBldmFs
QW5kTG9nKCJrZXlJbmRleCsrOyIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0Lmxlbmd0
aCIpOworICAgICAgICAgICAgdGVzdEdyb3VwMTUoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwor
ZnVuY3Rpb24gdGVzdEdyb3VwMTUoKQoreworICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5
SW5kZXggPSBvYmplY3RTdG9yZURhdGFOYW1lU29ydC5sZW5ndGggLSAxOyIpOworCisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9w
ZW5DdXJzb3IobnVsbCwgSURCQ3Vyc29yLlBSRVYpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24gKGV2ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50
LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52
YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAi
b2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOworICAgICAgICAgICAgc2hv
dWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUlu
ZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmhl
aWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7
CisgICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7CisgICAgICAgICAg
ICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFt
ZVNvcnRba2V5SW5kZXhdLnZhbHVlLndlaWdodCIpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKKworICAgICAgICAgICAgc2hv
dWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZh
bHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJv
YmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7CisgICAgICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5k
ZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVp
Z2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsK
KyAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKKyAgICAgICAgICAg
ICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1l
U29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGtleUluZGV4LS07CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBz
aG91bGRCZSgia2V5SW5kZXgiLCAiLTEiKTsKKyAgICAgICAgICAgIHRlc3RHcm91cDE2KCk7Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDE2KCkKK3sKKyAgICBrZXlJ
bmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gMTsiKTsKKyAgICBrZXlSYW5nZSA9IGV2YWxB
bmRMb2coImtleVJhbmdlID0gSURCS2V5UmFuZ2UuYm91bmQoJ0JvYicsICdSb24nKTsiKTsKKwor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25h
bWUnKS5vcGVuQ3Vyc29yKGtleVJhbmdlKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChl
dmVudCkgeworICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJn
ZXQucmVzdWx0OyIpOworICAgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUu
bmFtZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVj
dFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsKKyAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3IudmFsdWUubmFtZSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0u
dmFsdWUubmFtZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQi
LCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOworICAg
ICAgICAgICAgaWYgKCd3ZWlnaHQnIGluIGN1cnNvci52YWx1ZSkgeworICAgICAgICAgICAgICAg
ICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNv
cnRba2V5SW5kZXhdLnZhbHVlLndlaWdodCIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKKworICAgICAgICAgICAgc2hvdWxk
QmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVl
Lm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmpl
Y3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7CisgICAgICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhd
LnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0
IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKKyAg
ICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKKyAgICAgICAgICAgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVT
b3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICI1Iik7CisgICAgICAgICAgICB0ZXN0
R3JvdXAxNygpOworICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0R3JvdXAxNygp
Cit7CisgICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDI7Iik7CisgICAga2V5
UmFuZ2UgPSBldmFsQW5kTG9nKCJrZXlSYW5nZSA9IElEQktleVJhbmdlLmJvdW5kKCdCb2InLCAn
Um9uJywgdHJ1ZSk7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9i
amVjdFN0b3JlLmluZGV4KCduYW1lJykub3BlbkN1cnNvcihrZXlSYW5nZSk7Iik7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygi
Y3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAgICAgaWYgKGN1cnNvcikgewor
ICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNv
cnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
cHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7Cisg
ICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRh
TmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJj
dXJzb3IudmFsdWUuaGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52
YWx1ZS5oZWlnaHQiKTsKKyAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUp
IHsKKyAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9i
amVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisK
KyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVT
b3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29y
LnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwor
ICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0
YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgi
Y3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0u
dmFsdWUuaGVpZ2h0Iik7CisgICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVl
KSB7CisgICAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIsICJv
YmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7CisgICAgICAg
IH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNSIp
OworICAgICAgICAgICAgdGVzdEdyb3VwMTgoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVu
Y3Rpb24gdGVzdEdyb3VwMTgoKQoreworICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5k
ZXggPSAxOyIpOworICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlS
YW5nZS5ib3VuZCgnQm9iJywgJ1JvbicsIGZhbHNlLCB0cnVlKTsiKTsKKworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuQ3Vy
c29yKGtleVJhbmdlKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgeworICAg
ICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIp
OworICAgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtl
eSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAg
ICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5h
bWVTb3J0W2tleUluZGV4XS5rZXkiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFs
dWUubmFtZSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIp
OworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQiLCAib2JqZWN0U3Rv
cmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOworICAgICAgICAgICAgaWYg
KCd3ZWlnaHQnIGluIGN1cnNvci52YWx1ZSkgeworICAgICAgICAgICAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci52YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhd
LnZhbHVlLndlaWdodCIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBldmFsQW5kTG9n
KCJjdXJzb3IuY29udGludWUoKTsiKTsKKworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5r
ZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAg
ICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFO
YW1lU29ydFtrZXlJbmRleF0ua2V5Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZh
bHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUi
KTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0IiwgIm9iamVjdFN0
b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKKyAgICAgICAgICAgIGlm
ICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4
XS52YWx1ZS53ZWlnaHQiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZXZhbEFuZExv
Zygia2V5SW5kZXgrKzsiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IHNob3VsZEJlKCJrZXlJbmRleCIsICI0Iik7CisgICAgICAgICAgICB0ZXN0R3JvdXAxOSgpOwor
ICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0R3JvdXAxOSgpCit7CisgICAga2V5
SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDI7Iik7CisgICAga2V5UmFuZ2UgPSBldmFs
QW5kTG9nKCJrZXlSYW5nZSA9IElEQktleVJhbmdlLmJvdW5kKCdCb2InLCAnUm9uJywgdHJ1ZSwg
dHJ1ZSk7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0
b3JlLmluZGV4KCduYW1lJykub3BlbkN1cnNvcihrZXlSYW5nZSk7Iik7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29y
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAgICAgaWYgKGN1cnNvcikgeworICAgICAg
ICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5
SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFy
eUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7CisgICAgICAg
ICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNv
cnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
dmFsdWUuaGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5o
ZWlnaHQiKTsKKyAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKKyAg
ICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0
b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisKKyAgICAg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tl
eUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1h
cnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOworICAgICAg
ICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0YU5hbWVT
b3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29y
LnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUu
aGVpZ2h0Iik7CisgICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7Cisg
ICAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIsICJvYmplY3RT
dG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7CisgICAgICAgIH0KKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNCIpOworICAg
ICAgICAgICAgdGVzdEdyb3VwMjAoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24g
dGVzdEdyb3VwMjAoKQoreworICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSA0
OyIpOworICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5i
b3VuZCgnQm9iJywgJ1JvbicpOyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVl
c3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9wZW5DdXJzb3Ioa2V5UmFuZ2UsIElEQkN1
cnNvci5QUkVWKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgeworICAgICAg
ICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwor
ICAgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIs
ICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAg
ICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVT
b3J0W2tleUluZGV4XS5rZXkiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUu
bmFtZSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOwor
ICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQiLCAib2JqZWN0U3RvcmVE
YXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOworICAgICAgICAgICAgaWYgKCd3
ZWlnaHQnIGluIGN1cnNvci52YWx1ZSkgeworICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoImN1
cnNvci52YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZh
bHVlLndlaWdodCIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBldmFsQW5kTG9nKCJj
dXJzb3IuY29udGludWUoKTsiKTsKKworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXki
LCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1l
U29ydFtrZXlJbmRleF0ua2V5Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVl
Lm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsK
KyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0IiwgIm9iamVjdFN0b3Jl
RGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKKyAgICAgICAgICAgIGlmICgn
d2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJj
dXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52
YWx1ZS53ZWlnaHQiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZXZhbEFuZExvZygi
a2V5SW5kZXgtLTsiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNo
b3VsZEJlKCJrZXlJbmRleCIsICIwIik7CisgICAgICAgICAgICB0ZXN0R3JvdXAyMSgpOworICAg
ICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0R3JvdXAyMSgpCit7CisgICAga2V5SW5k
ZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDM7Iik7CisgICAga2V5UmFuZ2UgPSBldmFsQW5k
TG9nKCJrZXlSYW5nZSA9IElEQktleVJhbmdlLm9ubHkoNjUpOyIpOworCisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnaGVpZ2h0Jykub3Blbktl
eUN1cnNvcihrZXlSYW5nZSwgSURCQ3Vyc29yLk5FWFQpOyIpOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVu
Y3Rpb24gKGV2ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2
ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgICAg
IHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5k
ZXhdLnZhbHVlLmhlaWdodCIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5
S2V5IiwgIm9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLmtleSIpOworCisgICAg
ICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKKyAgICAgICAgICAgIGV2
YWxBbmRMb2coImtleUluZGV4Kys7Iik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNSIpOworICAgICAgICAgICAgdGVzdEdyb3Vw
MjIoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gdGVzdEdyb3VwMjIoKQorewor
ICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAzOyIpOworICAgIGtleVJhbmdl
ID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5vbmx5KDY1KTsiKTsKKworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ2hlaWdo
dCcpLm9wZW5LZXlDdXJzb3Ioa2V5UmFuZ2UsIElEQkN1cnNvci5ORVhUX05PX0RVUExJQ0FURSk7
Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgY3Vyc29yID0g
ZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAgICAgaWYg
KGN1cnNvcikgeworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3Rv
cmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7CisgICAgICAgICAgICBz
aG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtr
ZXlJbmRleF0ua2V5Iik7CisKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51
ZSgpOyIpOworICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKKyAgICAgICAg
fQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICI0Iik7
CisgICAgICAgICAgICB0ZXN0R3JvdXAyNCgpOworICAgICAgICB9CisgICAgfQorfQorCisvKiB0
aGlzIHdhcyBzcGxpdCBvdXQgaW50byBhIHNlcGFyYXRlIHRlc3QKK2Z1bmN0aW9uIHRlc3RHcm91
cDIzKCkKK3sKKyAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gNTsiKTsKKwor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ2hl
aWdodCcpLm9wZW5LZXlDdXJzb3IobnVsbCwgSURCQ3Vyc29yLlBSRVZfTk9fRFVQTElDQVRFKTsi
KTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgeworICAgICAgICBjdXJzb3IgPSBl
dmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgICAgICBpZiAo
Y3Vyc29yKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9y
ZURhdGFIZWlnaHRTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKKyAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tl
eUluZGV4XS5rZXkiKTsKKworICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVl
KCk7Iik7CisgICAgICAgICAgICBpZiAoa2V5SW5kZXggPT0gNSkgeworICAgICAgICAgICAgICAg
IGV2YWxBbmRMb2coImtleUluZGV4LS07Iik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBl
dmFsQW5kTG9nKCJrZXlJbmRleC0tOyIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIi0xIik7CisgICAgICAgICAgICB0ZXN0R3Jv
dXAyNCgpOworICAgICAgICB9CisgICAgfQorfQorKi8KKworZnVuY3Rpb24gdGVzdEdyb3VwMjQo
KQoreworICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAzOyIpOworICAgIGtl
eVJhbmdlID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5vbmx5KDY1KTsiKTsK
KworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgo
J2hlaWdodCcpLm9wZW5DdXJzb3Ioa2V5UmFuZ2UsIElEQkN1cnNvci5ORVhUKTsiKTsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgeworICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9n
KCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgICAgICBpZiAoY3Vyc29yKSB7
CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFIZWln
aHRTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJj
dXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tleUluZGV4XS5r
ZXkiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUubmFtZSIsICJvYmplY3RT
dG9yZURhdGFIZWlnaHRTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBz
aG91bGRCZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0
W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKKyAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBj
dXJzb3IudmFsdWUpIHsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndl
aWdodCIsICJvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQi
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRp
bnVlKCk7Iik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOworICAgICAg
ICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIjUi
KTsKKyAgICAgICAgICAgIHRlc3RHcm91cDI1KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1
bmN0aW9uIHRlc3RHcm91cDI1KCkKK3sKKyAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUlu
ZGV4ID0gMzsiKTsKKyAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtleVJhbmdlID0gSURCS2V5
UmFuZ2Uub25seSg2NSk7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IG9iamVjdFN0b3JlLmluZGV4KCdoZWlnaHQnKS5vcGVuQ3Vyc29yKGtleVJhbmdlLCBJREJDdXJz
b3IuTkVYVF9OT19EVVBMSUNBVEUpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50
KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQ7Iik7CisgICAgICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJj
dXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLmhl
aWdodCIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVj
dFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLmtleSIpOworICAgICAgICAgICAgc2hvdWxk
QmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5k
ZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVp
Z2h0IiwgIm9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIp
OworICAgICAgICAgICAgaWYgKCd3ZWlnaHQnIGluIGN1cnNvci52YWx1ZSkgeworICAgICAgICAg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YUhl
aWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLndlaWdodCIpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKKyAgICAgICAgICAgIGV2
YWxBbmRMb2coImtleUluZGV4Kys7Iik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNCIpOworICAgICAgICAgICAgdGVzdEdyb3Vw
MjcoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLyogdGhpcyB3YXMgc3BsaXQgb3V0IGludG8g
YSBzZXBhcmF0ZSB0ZXN0CitmdW5jdGlvbiB0ZXN0R3JvdXAyNigpCit7CisgICAga2V5SW5kZXgg
PSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDU7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCdoZWlnaHQnKS5vcGVuQ3Vyc29yKG51bGws
IElEQkN1cnNvci5QUkVWX05PX0RVUExJQ0FURSk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlv
biAoZXZlbnQpIHsKKyAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICAgICAgc2hv
dWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0u
dmFsdWUuaGVpZ2h0Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXki
LCAib2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0ua2V5Iik7CisgICAgICAgICAg
ICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29y
dFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52
YWx1ZS5oZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUu
aGVpZ2h0Iik7CisgICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7Cisg
ICAgICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3Rv
cmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOworICAgICAg
ICAgICAgaWYgKGtleUluZGV4ID09IDUpIHsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJr
ZXlJbmRleC0tOyIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZXZhbEFuZExvZygia2V5
SW5kZXgtLTsiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNob3Vs
ZEJlKCJrZXlJbmRleCIsICItMSIpOworICAgICAgICAgICAgdGVzdEdyb3VwMjcoKTsKKyAgICAg
ICAgfQorICAgIH0KK30KKyovCisKK2Z1bmN0aW9uIHRlc3RHcm91cDI3KCkKK3sKKyAgICBrZXlJ
bmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gMDsiKTsKKworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuS2V5Q3Vyc29y
KCk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgY3Vyc29y
ID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAgICAg
aWYgKGN1cnNvcikgeworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0
U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJ
bmRleF0ua2V5Iik7CisKKyAgICAgICAgICAgIG5leHRLZXkgPSBldmFsQW5kTG9nKCJuZXh0S2V5
ID0gIWtleUluZGV4ID8gJ1BhdCcgOiB1bmRlZmluZWQ7Iik7CisgICAgICAgICAgICBpZiAobmV4
dEtleSkgeworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZShuZXh0
S2V5KTsiKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZXZhbEFuZExv
ZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52
YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAi
b2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOworCisgICAgICAgICAgICBp
ZiAoIWtleUluZGV4KSB7CisgICAgICAgICAgICAgICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJr
ZXlJbmRleCA9IDM7Iik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc2hvdWxkQmUoImtleUluZGV4Iiwg
Im9iamVjdFN0b3JlRGF0YS5sZW5ndGgiKTsKKyAgICAgICAgICAgIHRlc3RHcm91cDI4KCk7Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDI4KCkKK3sKKyAgICBrZXlJ
bmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gMDsiKTsKKworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuS2V5Q3Vyc29y
KCk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgY3Vyc29y
ID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAgICAg
aWYgKGN1cnNvcikgeworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0
U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJ
bmRleF0ua2V5Iik7CisKKyAgICAgICAgICAgIG5leHRLZXkgPSBldmFsQW5kTG9nKCJuZXh0S2V5
ID0gIWtleUluZGV4ID8gJ0ZsbycgOiB1bmRlZmluZWQ7Iik7CisgICAgICAgICAgICBpZiAobmV4
dEtleSkgeworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZShuZXh0
S2V5KTsiKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZXZhbEFuZExv
ZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52
YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAi
b2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOworCisgICAgICAgICAgICBr
ZXlJbmRleCArPSBrZXlJbmRleCA/IDEgOiAyOworICAgICAgICB9CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIm9iamVjdFN0b3JlRGF0YS5sZW5ndGgi
KTsKKyAgICAgICAgICAgIHRlc3RHcm91cDI5KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1
bmN0aW9uIHRlc3RHcm91cDI5KCkKK3sKKyAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUlu
ZGV4ID0gMDsiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0
U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuQ3Vyc29yKCk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbiAoZXZlbnQpIHsKKyAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZl
bnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICAgICAg
c2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhd
LnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIs
ICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7CisgICAgICAgICAgICBz
aG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5
SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUu
aGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQi
KTsKKyAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKKyAgICAgICAg
ICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0
YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgbmV4dEtleSA9IGV2YWxBbmRMb2coIm5leHRLZXkgPSAha2V5SW5kZXggPyAnUGF0
JyA6IHVuZGVmaW5lZDsiKTsKKyAgICAgICAgICAgIGlmIChuZXh0S2V5KSB7CisgICAgICAgICAg
ICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKG5leHRLZXkpOyIpOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUo
KTsiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXki
LCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1l
U29ydFtrZXlJbmRleF0ua2V5Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVl
Lm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsK
KyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0IiwgIm9iamVjdFN0b3Jl
RGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKKyAgICAgICAgICAgIGlmICgn
d2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJj
dXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52
YWx1ZS53ZWlnaHQiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFrZXlJbmRl
eCkgeworICAgICAgICAgICAgICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAz
OyIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAg
ZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJvYmplY3RTdG9y
ZURhdGFOYW1lU29ydC5sZW5ndGgiKTsKKyAgICAgICAgICAgIHRlc3RHcm91cDMwKCk7CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDMwKCkKK3sKKyAgICBrZXlJbmRl
eCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gMDsiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuQ3Vyc29yKCk7Iik7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgY3Vyc29yID0gZXZh
bEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAgICAgaWYgKGN1
cnNvcikgeworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVE
YXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0u
a2V5Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0
U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tl
eUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKKyAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJz
b3IudmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2Vp
Z2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbmV4dEtleSA9IGV2YWxBbmRMb2coIm5leHRL
ZXkgPSAha2V5SW5kZXggPyAnRmxvJyA6IHVuZGVmaW5lZDsiKTsKKyAgICAgICAgICAgIGlmIChu
ZXh0S2V5KSB7CisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKG5l
eHRLZXkpOyIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBldmFsQW5k
TG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
c2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhd
LnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIs
ICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7CisgICAgICAgICAgICBz
aG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5
SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUu
aGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQi
KTsKKyAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKKyAgICAgICAg
ICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0
YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAga2V5SW5kZXggKz0ga2V5SW5kZXggPyAxIDogMjsKKyAgICAgICAgfQorICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJvYmplY3RTdG9yZURh
dGFOYW1lU29ydC5sZW5ndGgiKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAg
ICB9CisgICAgfQorfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMv
a2V5LXJlcXVpcmVtZW50cy1kZWxldGUtbnVsbC1rZXkuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9rZXktcmVxdWlyZW1lbnRzLWRlbGV0ZS1udWxs
LWtleS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mOWRkYTkyYzIzMTFiYzczOGU0MDlmMzFiNTAwOGM5MTUwYmY1
ZDhiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9yZXNvdXJjZXMva2V5LXJlcXVpcmVtZW50cy1kZWxldGUtbnVsbC1rZXkuanMKQEAgLTAs
MCArMSw0MiBAQAorLy8gb3JpZ2luYWwgdGVzdDoKKy8vIGh0dHA6Ly9teHIubW96aWxsYS5vcmcv
bW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3Rfa2V5X3JlcXVpcmVtZW50
cy5odG1sCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisvLyAiIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorLy8gICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKworaWYgKHRoaXMuaW1wb3J0U2Ny
aXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vcmVzb3VyY2VzL3No
YXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBiZWhhdmlvciBk
ZWxldGluZyBlbnRyeSB3aXRoIG5vIGtleSIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBy
ZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5h
bWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAg
ICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZUFuZENyZWF0ZU9iamVjdFN0
b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBjbGVhbkRhdGFiYXNlQW5kQ3JlYXRlT2JqZWN0U3RvcmUoKQoreworICAgIGRl
bGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJv
YmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdiYXInKTsiKTsKKyAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKCJvYmplY3RTdG9yZS5kZWxldGUobnVsbCk7IiwgIklEQkRhdGFiYXNl
RXhjZXB0aW9uLkRBVEFfRVJSIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9rZXktcmVxdWlyZW1lbnRzLWlubGluZS1h
bmQtcGFzc2VkLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNv
dXJjZXMva2V5LXJlcXVpcmVtZW50cy1pbmxpbmUtYW5kLXBhc3NlZC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
YjI0ZWQyMWY1ZTAyMDUyZWUzMDk2N2U0MjkwY2U3NjJmYzZlNjZjCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMva2V5LXJl
cXVpcmVtZW50cy1pbmxpbmUtYW5kLXBhc3NlZC5qcwpAQCAtMCwwICsxLDQ0IEBACisvLyBvcmln
aW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9k
b20vaW5kZXhlZERCL3Rlc3QvdGVzdF9rZXlfcmVxdWlyZW1lbnRzLmh0bWwKKy8vIGxpY2Vuc2Ug
b2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0
U2NyaXB0cygnLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsK
KyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi9yZXNvdXJjZXMvc2hhcmVkLmpzJyk7Cit9CisKK2Rl
c2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGJlaGF2aW9yIGFkZGluZyBpbmxpbmUgYW5kIHBh
c3NlZCBrZXkgc2ltdWx0YW5lb3VzbHkiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVt
b3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1l
OworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAg
ZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
ZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNs
ZWFuRGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRlYnVnKCJjbGVhbkRh
dGFiYXNlKCk6Iik7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKyAgICBvYmplY3RT
dG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2Jh
eicsIHsga2V5UGF0aDogJ2lkJyB9KTsiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJv
YmplY3RTdG9yZS5hZGQoe2lkOiA1fSwgNSk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFf
RVJSIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL3Jlc291cmNlcy9rZXktcmVxdWlyZW1lbnRzLXB1dC1uby1rZXkuanMgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9rZXktcmVxdWlyZW1lbnRz
LXB1dC1uby1rZXkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2FmMTQ3ZDFkNTVmMGUxNzk1ZWEyODRiNGI3MmYx
NGFjM2NmNmU1YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvcmVzb3VyY2VzL2tleS1yZXF1aXJlbWVudHMtcHV0LW5vLWtleS5qcwpAQCAt
MCwwICsxLDQyIEBACisvLyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9y
Zy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9rZXlfcmVxdWlyZW1l
bnRzLmh0bWwKKy8vIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBvcnRT
Y3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi9yZXNvdXJjZXMv
c2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGJlaGF2aW9y
IHB1dGluZyB3aXRob3V0IGtleSIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVW
ZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Cisg
ICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9
IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAg
IGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdiYXInKTsiKTsKKyAgICBldmFs
QW5kRXhwZWN0RXhjZXB0aW9uKCJvYmplY3RTdG9yZS5wdXQoe30pOyIsICJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5EQVRBX0VSUiIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMva2V5LXJlcXVpcmVtZW50cy1wdXQtbnVsbC1r
ZXkuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9r
ZXktcmVxdWlyZW1lbnRzLXB1dC1udWxsLWtleS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYWI1ODhjM2RhOWEz
OGQ5ZjYzZjZiZjI1ZTVkOTRjYzViMDRmNDA3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMva2V5LXJlcXVpcmVtZW50cy1w
dXQtbnVsbC1rZXkuanMKQEAgLTAsMCArMSw0MiBAQAorLy8gb3JpZ2luYWwgdGVzdDoKKy8vIGh0
dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0
L3Rlc3Rfa2V5X3JlcXVpcmVtZW50cy5odG1sCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6
CisvLyAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
Ly8gICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIK
KworaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0
cygnLi4vLi4vcmVzb3VyY2VzL3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJ
bmRleGVkREIncyBiZWhhdmlvciBwdXQoKWluZyB3aXRoIG51bGwga2V5Iik7CisKK2Z1bmN0aW9u
IHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2Vs
Zi5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNl
IjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3Jp
cHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3Bl
blN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVz
dWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNp
b24oJzEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
Y2xlYW5EYXRhYmFzZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKyAgICBv
YmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ2JhcicpOyIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIm9iamVjdFN0b3JlLnB1
dCh7fSwgbnVsbCk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisgICAgZmlu
aXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNl
cy9rZXktcmVxdWlyZW1lbnRzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9yZXNvdXJjZXMva2V5LXJlcXVpcmVtZW50cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOTIwODZhNzBh
ZTBhOWQ3Njk3Yzc5YzQ0NmI1ZGEzZjE4MTg4NjE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMva2V5LXJlcXVpcmVtZW50
cy5qcwpAQCAtMCwwICsxLDc1IEBACisvLyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5t
b3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9rZXlf
cmVxdWlyZW1lbnRzLmh0bWwKKy8vIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhp
cy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi9y
ZXNvdXJjZXMvc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidz
IGV2ZW50LnRhcmdldC5yZXN1bHQgYWZ0ZXIgYWRkKCkgYW5kIHB1dCgpIik7CisKK2Z1bmN0aW9u
IHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2Vs
Zi5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNl
IjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3Jp
cHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3Bl
blN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVz
dWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNp
b24oJzEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
Y2xlYW5EYXRhYmFzZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKyAgICBv
YmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ2ZvbycsIHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9KTsiKTsKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZCh7fSk7Iik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBwb3N0QWRkOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBwb3N0QWRkKCkKK3sKKyAgICBrZXkxID0gZXZhbEFu
ZExvZygia2V5MSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoe30sIGtleTEpOyIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gcG9zdFB1dDE7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHBvc3RQdXQxKCkKK3sKKyAgICBzaG91bGRC
ZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJrZXkxIik7CisgICAga2V5MiA9IGV2YWxBbmRMb2co
ImtleTIgPSAxMDsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVj
dFN0b3JlLnB1dCh7fSwga2V5Mik7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0UHV0
MjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKwor
ZnVuY3Rpb24gcG9zdFB1dDIoKQoreworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0
IiwgImtleTIiKTsKKyAgICBrZXkyID0gZXZhbEFuZExvZygia2V5MiA9IDEwMDsiKTsKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCh7fSwga2V5Mik7
Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0UHV0MzsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gcG9zdFB1dDMoKQor
eworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgImtleTIiKTsKKyAgICBmaW5p
c2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2Vz
L29iamVjdC1jdXJzb3JzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9yZXNvdXJjZXMvb2JqZWN0LWN1cnNvcnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGRmYzRmNWJlZjA5YTI3
ZjEzZjlhZGUxYWEwMzg5NTMyNjJkOGNmOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL29iamVjdC1jdXJzb3JzLmpzCkBA
IC0wLDAgKzEsODYgQEAKKy8vIG9yaWdpbmFsIHRlc3Q6CisvLyBodHRwOi8vbXhyLm1vemlsbGEu
b3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X29iamVjdEN1cnNv
cnMuaHRtbAorLy8gbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorLy8gIiBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKy8vICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCisKK2lmICh0aGlzLmltcG9ydFNj
cmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uL3Jlc291cmNlcy9z
aGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgaW5kZXggY3Vy
c29ycyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygp
OworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24g
PSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWRE
Qi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3Bl
blN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRi
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNs
ZWFuRGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRlbGV0ZUFsbE9iamVj
dFN0b3JlcyhkYik7CisgICAgYXV0b0luY3JlbWVudCA9IGV2YWxBbmRMb2coImF1dG9JbmNyZW1l
bnQgPSBmYWxzZTsiKTsKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3Jl
ID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2EnLCB7IGtleVBhdGg6ICdpZCcsIGF1dG9JbmNyZW1l
bnQ6IGF1dG9JbmNyZW1lbnQgfSk7Iik7CisgICAgaW5kZXhlcyA9IFsKKyAgICAgICAgeyBuYW1l
OiAiYSIsIG9wdGlvbnM6IHsgfSB9LAorICAgICAgICB7IG5hbWU6ICJiIiwgb3B0aW9uczogeyB1
bmlxdWU6IHRydWUgfSB9CisgICAgXTsKKyAgICBmb3IgKGogaW4gaW5kZXhlcykgeworICAgICAg
ICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5jcmVhdGVJbmRleChpbmRleGVzW2pdLm5hbWUsICdu
YW1lJywgaW5kZXhlc1tqXS5vcHRpb25zKTsiKTsKKyAgICB9CisgICAgZGF0YSA9IGV2YWxBbmRM
b2coImRhdGEgPSB7IG5hbWU6ICdCZW4nLCBpZDogMSB9OyIpOworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKGRhdGEpOyIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gcG9zdEFkZDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gcG9zdEFkZCgpCit7CisgICAgbnVtSW5kZXhlcyA9
IGluZGV4ZXMubGVuZ3RoOworICAgIGluZGV4ZXNGaW5pc2hlZCA9IDA7CisgICAgZm9yIChqIGlu
IGluZGV4ZXMpIHsKKyAgICAgICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IG9iamVjdFN0
b3JlLmluZGV4KGluZGV4ZXNbal0ubmFtZSk7Iik7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gaW5kZXgub3BlbkN1cnNvcigpOyIpOworICAgICAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdl
dC5yZXN1bHQudmFsdWUubmFtZSIsICInQmVuJyIpOworICAgICAgICAgICAgaWYgKCsraW5kZXhl
c0ZpbmlzaGVkID09IG51bUluZGV4ZXMpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0b0luY3Jl
bWVudCkgeworICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBzZXR1cEF1dG9JbmNyZW1lbnQoKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorfQor
CitmdW5jdGlvbiBzZXR1cEF1dG9JbmNyZW1lbnQoKQoreworICAgIGF1dG9JbmNyZW1lbnQgPSBl
dmFsQW5kTG9nKCJhdXRvSW5jcmVtZW50ID0gdHJ1ZTsiKTsKKyAgICBvYmplY3RTdG9yZSA9IGV2
YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2InLCB7IGtleVBh
dGg6ICdpZCcsIGF1dG9JbmNyZW1lbnQ6IGF1dG9JbmNyZW1lbnQgfSk7Iik7CisgICAgZm9yIChq
IGluIGluZGV4ZXMpIHsKKyAgICAgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuY3JlYXRlSW5k
ZXgoaW5kZXhlc1tqXS5uYW1lLCAnbmFtZScsIGluZGV4ZXNbal0ub3B0aW9ucyk7Iik7CisgICAg
fQorICAgIGRhdGEgPSBldmFsQW5kTG9nKCJkYXRhID0geyBuYW1lOiAnQmVuJyB9OyIpOworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKGRhdGEpOyIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdEFkZDsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKwordGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvb2JqZWN0LWlkZW50
aXR5LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMv
b2JqZWN0LWlkZW50aXR5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1YjMzMzVlMjM4NDJkNTY4MjI5ZDgxODll
YmYzODJlYjQ5YzUyZGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9vYmplY3QtaWRlbnRpdHkuanMKQEAgLTAsMCArMSw2
NiBAQAorLy8gb3JpZ2luYWwgdGVzdDoKKy8vIGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxs
YTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3Rfb2JqZWN0X2lkZW50aXR5Lmh0bWw/
Zm9yY2U9MQorLy8gbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorLy8gIiBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKy8vICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCisKK2lmICh0aGlzLmltcG9ydFNj
cmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uL3Jlc291cmNlcy9z
aGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCOiBvYmplY3QgaWRl
bnRpdHkiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMo
KTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9u
ID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVk
REIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9w
ZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJk
YiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVx
dWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Jl
YXRlT2JqZWN0U3RvcmVBbmRJbmRleDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY3JlYXRlT2JqZWN0U3RvcmVBbmRJbmRleCgp
Cit7CisgICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGV2ZW50LnRh
cmdldC50cmFuc2FjdGlvbjsiKTsKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworICAg
IG9iamVjdFN0b3JlMSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlMSA9IGRiLmNyZWF0ZU9iamVj
dFN0b3JlKCdmb28nKTsiKTsKKyAgICBvYmplY3RTdG9yZTIgPSBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZTIgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnZm9vJyk7Iik7CisgICAgc2hvdWxkQmVU
cnVlKCJvYmplY3RTdG9yZTEgPT09IG9iamVjdFN0b3JlMiIpOworICAgIGluZGV4MSA9IGV2YWxB
bmRMb2coImluZGV4MSA9IG9iamVjdFN0b3JlMS5jcmVhdGVJbmRleCgnYmFyJywgJ2tleScpOyIp
OworICAgIGluZGV4MiA9IGV2YWxBbmRMb2coImluZGV4MiA9IG9iamVjdFN0b3JlMi5pbmRleCgn
YmFyJyk7Iik7CisgICAgc2hvdWxkQmVUcnVlKCJpbmRleDEgPT09IGluZGV4MiIpOworICAgIGV2
YWxBbmRMb2coInRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB0ZXN0SWRlbnRpdHlTb21lTW9yZTsi
KTsKK30KKworZnVuY3Rpb24gdGVzdElkZW50aXR5U29tZU1vcmUoKQoreworICAgIHRyYW5zYWN0
aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignZm9vJyk7Iik7
CisgICAgb2JqZWN0U3RvcmUzID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUzID0gdHJhbnNhY3Rp
b24ub2JqZWN0U3RvcmUoJ2ZvbycpOyIpOworICAgIG9iamVjdFN0b3JlNCA9IGV2YWxBbmRMb2co
Im9iamVjdFN0b3JlNCA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdmb28nKTsiKTsKKyAgICBz
aG91bGRCZVRydWUoIm9iamVjdFN0b3JlMyA9PT0gb2JqZWN0U3RvcmU0Iik7CisKKyAgICBzaG91
bGRCZUZhbHNlKCJvYmplY3RTdG9yZTMgPT09IG9iamVjdFN0b3JlMSIpOworICAgIHNob3VsZEJl
RmFsc2UoIm9iamVjdFN0b3JlNCA9PT0gb2JqZWN0U3RvcmUyIik7CisKKyAgICBpbmRleDMgPSBl
dmFsQW5kTG9nKCJpbmRleDMgPSBvYmplY3RTdG9yZTMuaW5kZXgoJ2JhcicpOyIpOworICAgIGlu
ZGV4NCA9IGV2YWxBbmRMb2coImluZGV4NCA9IG9iamVjdFN0b3JlNC5pbmRleCgnYmFyJyk7Iik7
CisgICAgc2hvdWxkQmVUcnVlKCJpbmRleDMgPT09IGluZGV4NCIpOworCisgICAgc2hvdWxkQmVG
YWxzZSgiaW5kZXgzID09PSBpbmRleDEiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJpbmRleDQgPT09
IGluZGV4MiIpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9vYmplY3Qtc3RvcmUtaW5saW5lLWF1dG9pbmNyZW1lbnQt
a2V5LWFkZGVkLW9uLXB1dC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEvcmVzb3VyY2VzL29iamVjdC1zdG9yZS1pbmxpbmUtYXV0b2luY3JlbWVudC1rZXktYWRkZWQt
b24tcHV0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3ZmRhMDY4NDZkNDg4OWUzYWRkYjBjOWI2NmEzNzVkZDc0
ODY3N2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL3Jlc291cmNlcy9vYmplY3Qtc3RvcmUtaW5saW5lLWF1dG9pbmNyZW1lbnQta2V5LWFk
ZGVkLW9uLXB1dC5qcwpAQCAtMCwwICsxLDY0IEBACisvLyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0
cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3Qv
dGVzdF9vYmplY3RTdG9yZV9pbmxpbmVfYXV0b2luY3JlbWVudF9rZXlfYWRkZWRfb25fcHV0Lmh0
bWw/Zm9yY2U9MQorLy8gbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorLy8gIiBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKy8vICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCisKK2lmICh0aGlzLmltcG9y
dFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uL3Jlc291cmNl
cy9zaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGFkZGluZyBh
biBhdXRvaW5jcmVtZW50ZWQga2V5IGFuZCByZXRyaWV2aW5nIGl0IHN1Y2Nlc3NmdWxseSIpOwor
CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAg
bmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVz
dCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5h
bWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBk
Yi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldHVwT2JqZWN0
U3RvcmU7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIHNldHVwT2JqZWN0U3RvcmUoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0
b3JlcyhkYik7CisgICAgdGVzdCA9IGV2YWxBbmRMb2coInRlc3QgPSB7XG4iICsKKyIgICAgICAg
IG5hbWU6ICdpbmxpbmUga2V5OyBrZXkgZ2VuZXJhdG9yJyxcbiIgKworIiAgICAgICAgYXV0b0lu
Y3JlbWVudDogdHJ1ZSxcbiIgKworIiAgICAgICAgc3RvcmVkT2JqZWN0OiB7IG5hbWU6ICdMaW5j
b2xuJyB9LFxuIiArCisiICAgICAgICBrZXlOYW1lOiAnaWQnLFxuIiArCisiICAgIH07Iik7Cisg
ICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVj
dFN0b3JlKHRlc3QubmFtZSwgeyBrZXlQYXRoOiB0ZXN0LmtleU5hbWUsIGF1dG9JbmNyZW1lbnQ6
IHRlc3QuYXV0b0luY3JlbWVudCB9KTsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVx
dWVzdCA9IG9iamVjdFN0b3JlLmFkZCh0ZXN0LnN0b3JlZE9iamVjdCk7Iik7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBhZGRTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBhZGRTdWNjZXNzKCkKK3sKKyAgICBpZCA9
IGV2YWxBbmRMb2coImlkID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmdldChpZCk7Iik7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBnZXRTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBnZXRTdWNjZXNzKCkKK3sKKyAgICBzaG91
bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5uYW1lIiwgInRlc3Quc3RvcmVkT2JqZWN0Lm5hbWUi
KTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5pZCIsICJpZCIpOworICAgIGZp
bmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJj
ZXMvb2JqZWN0LXN0b3JlLXJlbW92ZS12YWx1ZXMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9vYmplY3Qtc3RvcmUtcmVtb3ZlLXZhbHVlcy5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yYTBkZWE3OWZlZmI4YjAxNTdiZWZlYWFmYTk3MDkxOGU0ZjI5NDdlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNv
dXJjZXMvb2JqZWN0LXN0b3JlLXJlbW92ZS12YWx1ZXMuanMKQEAgLTAsMCArMSwxMjEgQEAKKy8v
IG9yaWdpbmFsIHRlc3Q6CisvLyBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291
cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X29iamVjdFN0b3JlX3JlbW92ZV92YWx1ZXMuaHRt
bD9mb3JjZT0xCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisvLyAiIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorLy8gICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKworaWYgKHRoaXMuaW1wb3J0
U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vcmVzb3VyY2Vz
L3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREI6IGFkZHMsIGdl
dHMsIGRlbGV0ZXMsIGFuZCByZS1nZXRzIGEgcmVjb3JkIGluIGEgdmFyaWV0eSBvZiBkaWZmZXJl
bnQgb2JqZWN0IHN0b3JlIGNvbmZpZ3VyYXRpb25zIik7CisKK2Z1bmN0aW9uIHRlc3QoKQorewor
ICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5w
YXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQor
eworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAg
ICBkYXRhID0gZXZhbEFuZExvZygiZGF0YSA9IFtcbiIgKworIiAgICAgICAgeyBuYW1lOiAnaW5s
aW5lIGtleTsga2V5IGdlbmVyYXRvcicsXG4iICsKKyIgICAgICAgICAgYXV0b0luY3JlbWVudDog
dHJ1ZSxcbiIgKworIiAgICAgICAgICBzdG9yZWRPYmplY3Q6IHtuYW1lOiAnTGluY29sbid9LFxu
IiArCisiICAgICAgICAgIGtleU5hbWU6ICdpZCcsXG4iICsKKyIgICAgICAgICAga2V5VmFsdWU6
IHVuZGVmaW5lZCxcbiIgKworIiAgICAgICAgfSxcbiIgKworIiAgICAgICAgeyBuYW1lOiAnaW5s
aW5lIGtleTsgbm8ga2V5IGdlbmVyYXRvcicsXG4iICsKKyIgICAgICAgICAgYXV0b0luY3JlbWVu
dDogZmFsc2UsXG4iICsKKyIgICAgICAgICAgc3RvcmVkT2JqZWN0OiB7aWQ6IDEsIG5hbWU6ICdM
aW5jb2xuJ30sXG4iICsKKyIgICAgICAgICAga2V5TmFtZTogJ2lkJyxcbiIgKworIiAgICAgICAg
ICBrZXlWYWx1ZTogdW5kZWZpbmVkLFxuIiArCisiICAgICAgICB9LFxuIiArCisiICAgICAgICB7
IG5hbWU6ICdvdXQgb2YgbGluZSBrZXk7IGtleSBnZW5lcmF0b3InLFxuIiArCisiICAgICAgICAg
IGF1dG9JbmNyZW1lbnQ6IHRydWUsXG4iICsKKyIgICAgICAgICAgc3RvcmVkT2JqZWN0OiB7bmFt
ZTogJ0xpbmNvbG4nfSxcbiIgKworIiAgICAgICAgICBrZXlOYW1lOiB1bmRlZmluZWQsXG4iICsK
KyIgICAgICAgICAga2V5VmFsdWU6IHVuZGVmaW5lZCxcbiIgKworIiAgICAgICAgfSxcbiIgKwor
IiAgICAgICAgeyBuYW1lOiAnb3V0IG9mIGxpbmUga2V5OyBubyBrZXkgZ2VuZXJhdG9yJyxcbiIg
KworIiAgICAgICAgICBhdXRvSW5jcmVtZW50OiBmYWxzZSxcbiIgKworIiAgICAgICAgICBzdG9y
ZWRPYmplY3Q6IHtuYW1lOiAnTGluY29sbid9LFxuIiArCisiICAgICAgICAgIGtleU5hbWU6IHVu
ZGVmaW5lZCxcbiIgKworIiAgICAgICAgICBrZXlWYWx1ZTogMSxcbiIgKworIiAgICAgICAgfVxu
IiArCisiICAgIF07Iik7CisKKyAgICBpID0gZXZhbEFuZExvZygiaSA9IDA7Iik7CisgICAgc2V0
VmVyc2lvbigpOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uKCkKK3sKKyAgICBpZiAoaSA8IGRh
dGEubGVuZ3RoKSB7CisgICAgICAgIHRlc3QgPSBkYXRhW2ldOworICAgICAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAgICAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZU9iamVjdFN0b3JlOworICAgICAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB9IGVsc2UgeworICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZU9iamVjdFN0b3JlKCkKK3sK
KyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgaWYgKHRlc3Qua2V5TmFtZSkg
eworICAgICAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3Jl
YXRlT2JqZWN0U3RvcmUodGVzdC5uYW1lLCB7IGtleVBhdGg6IHRlc3Qua2V5TmFtZSwgYXV0b0lu
Y3JlbWVudDogdGVzdC5hdXRvSW5jcmVtZW50IH0pOyIpOworICAgIH0gZWxzZSB7CisgICAgICAg
IG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RT
dG9yZSh0ZXN0Lm5hbWUsIHsgYXV0b0luY3JlbWVudDogdGVzdC5hdXRvSW5jcmVtZW50IH0pOyIp
OworICAgIH0KKyAgICBpZiAodGVzdC5rZXlWYWx1ZSkgeworICAgICAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZCh0ZXN0LnN0b3JlZE9iamVjdCwgdGVz
dC5rZXlWYWx1ZSk7Iik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQodGVzdC5zdG9yZWRPYmplY3QpOyIpOworICAg
IH0KKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldFJlY29yZDsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZ2V0UmVjb3JkKCkK
K3sKKyAgICBpZCA9IGV2YWxBbmRMb2coImlkID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmdldChpZCk7Iik7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVSZWNvcmQ7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZVJlY29y
ZCgpCit7CisgICAgc2hvdWxkQmUoInRlc3Quc3RvcmVkT2JqZWN0Lm5hbWUiLCAiZXZlbnQudGFy
Z2V0LnJlc3VsdC5uYW1lIik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IG9iamVjdFN0b3JlLmRlbGV0ZShpZCk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRSZWNvcmRBZ2Fp
bjsKK30KKworZnVuY3Rpb24gZ2V0UmVjb3JkQWdhaW4oKQoreworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KGlkKTsiKTsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGZpbmFsQ2hlY2s7Cit9CisKK2Z1bmN0aW9uIGZpbmFsQ2hlY2soKQoreworICAgIHNob3VsZEJl
VHJ1ZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCA9PT0gdW5kZWZpbmVkIik7CisgICAgaSsrOworICAg
IHNldFZlcnNpb24oKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3Vy
Y2VzL29iamVjdHN0b3JlbmFtZXMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL3Jlc291cmNlcy9vYmplY3RzdG9yZW5hbWVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1NDUyZWVk
MzhmNWQ0MmE1ZDQ2ZDU5MjE2YWQ1NDU0NmIwOGI3OWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9vYmplY3RzdG9yZW5h
bWVzLmpzCkBAIC0wLDAgKzEsNDcgQEAKKy8vIG9yaWdpbmFsIHRlc3Q6CisvLyBodHRwOi8vbXhy
Lm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2ds
b2JhbF9kYXRhLmh0bWwKKy8vIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5p
bXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi9yZXNv
dXJjZXMvc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIG9i
amVjdFN0b3JlTmFtZXMgYXJyYXkiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3Zl
VmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwor
ICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIg
PSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKK3sKKyAg
ICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmVOYW1lID0gImEi
OworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVP
YmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUsIHsga2V5UGF0aDogJ2lkJywgYXV0b0luY3JlbWVu
dDogdHJ1ZSB9KTsiKTsKKworICAgIHNob3VsZEJlVHJ1ZSgiJ29iamVjdFN0b3JlTmFtZXMnIGlu
IGRiIik7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjEiKTsK
KyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5pdGVtKDApIiwgIm9iamVjdFN0b3Jl
TmFtZSIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW96aWxsYS9yZXNvdXJjZXMvb2RkLXJlc3VsdC1vcmRlci5qcyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL29kZC1yZXN1bHQtb3JkZXIuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZmMyNDBkZjc4OGJhNTBiNWNkMDcyNjNjMWFjN2RhOTZmZTEwYmZmYgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2Vz
L29kZC1yZXN1bHQtb3JkZXIuanMKQEAgLTAsMCArMSwxMTcgQEAKKy8vIG9yaWdpbmFsIHRlc3Q6
CisvLyBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVk
REIvdGVzdC90ZXN0X29kZF9yZXN1bHRfb3JkZXIuaHRtbD9yYXc9MQorLy8gbGljZW5zZSBvZiBv
cmlnaW5hbCB0ZXN0OgorLy8gIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKy8vICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLyAiCisKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3Jp
cHRzKCcuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAg
IGltcG9ydFNjcmlwdHMoJy4uLy4uL3Jlc291cmNlcy9zaGFyZWQuanMnKTsKK30KKworZGVzY3Jp
cHRpb24oIlRlc3QgSW5kZXhlZERCOiByZXF1ZXN0IHJlc3VsdCBwZXJzaXN0cyBpbiBzZXRUaW1l
b3V0IGNhbGxiYWNrIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclBy
ZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNj
cmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
aW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJvcGVu
U3VjY2VzcygpOiIpOworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBudWxsOyIpOworICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSByZXF1
ZXN0LnJlc3VsdDsiKTsKKyAgICAgICAgY2hlY2tEYXRhYmFzZVR5cGUoKTsKKyAgICB9LCAwKTsK
K30KKworZnVuY3Rpb24gY2hlY2tEYXRhYmFzZVR5cGUoKQoreworICAgIGRlYnVnKCJjaGVja0Rh
dGFiYXNlVHlwZSgpOiIpOworICAgIHNob3VsZEJlVHJ1ZSgiZGIgaW5zdGFuY2VvZiBJREJEYXRh
YmFzZSIpOworICAgIGRiLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gc2V0dXBPYmplY3RTdG9yZTsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0dXBPYmplY3RT
dG9yZSgpCit7CisgICAgZGVidWcoInNldHVwT2JqZWN0U3RvcmUoKToiKTsKKyAgICBkZWxldGVB
bGxPYmplY3RTdG9yZXMoZGIpOworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0
U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJywgeyBrZXlQYXRoOiAna2V5JywgYXV0
b0luY3JlbWVudDogdHJ1ZSB9KTsiKTsKKyAgICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0g
b2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ2ZvbycsICdpbmRleCcpOyIpOworICAgIGV2YWxBbmRM
b2coImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gYWRkUmVjb3JkOyIpOwor
fQorCitmdW5jdGlvbiBhZGRSZWNvcmQoKQoreworICAgIGRlYnVnKCJhZGRSZWNvcmQoKToiKTsK
KyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIudHJhbnNhY3Rp
b24oJ2ZvbycsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpLm9iamVjdFN0b3JlKCdmb28nKTsi
KTsKKyAgICBkYXRhID0gZXZhbEFuZExvZygiZGF0YSA9IHsga2V5OiA1LCBpbmRleDogMTAgfTsi
KTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChk
YXRhKTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZFN1Y2Nlc3M7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGFkZFN1
Y2Nlc3MoKQoreworICAgIGRlYnVnKCJhZGRTdWNjZXNzKCk6Iik7CisgICAga2V5ID0gZXZhbEFu
ZExvZygia2V5ID0gbnVsbDsiKTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAg
a2V5ID0gZXZhbEFuZExvZygia2V5ID0gcmVxdWVzdC5yZXN1bHQ7Iik7CisgICAgICBjaGVja0Fk
ZGVkS2V5KCk7CisgICAgfSwgMCk7Cit9CisKK2Z1bmN0aW9uIGNoZWNrQWRkZWRLZXkoKQorewor
ICAgIGRlYnVnKCJjaGVja0FkZGVkS2V5KCk6Iik7CisgICAgc2hvdWxkQmUoImtleSIsICJkYXRh
LmtleSIpOworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi50
cmFuc2FjdGlvbignZm9vJykub2JqZWN0U3RvcmUoJ2ZvbycpOyIpOworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KGRhdGEua2V5KTsiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldFN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGdldFN1Y2Nlc3MoKQoreworICAg
IGRlYnVnKCJnZXRTdWNjZXNzKCk6Iik7CisgICAgcmVjb3JkID0gZXZhbEFuZExvZygicmVjb3Jk
ID0gbnVsbDsiKTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgcmVjb3JkID0g
ZXZhbEFuZExvZygicmVjb3JkID0gcmVxdWVzdC5yZXN1bHQ7Iik7CisgICAgICBjaGVja1JldHJp
ZXZlZEtleSgpOworICAgIH0sIDApOworfQorCitmdW5jdGlvbiBjaGVja1JldHJpZXZlZEtleSgp
Cit7CisgICAgZGVidWcoImNoZWNrUmV0cmlldmVkS2V5KCk6Iik7CisgICAgc2hvdWxkQmUoInJl
Y29yZC5rZXkiLCAiZGF0YS5rZXkiKTsKKyAgICBzaG91bGRCZSgicmVjb3JkLmluZGV4IiwgImRh
dGEuaW5kZXgiKTsKKyAgICBkZWxldGVSZWNvcmQoKTsKK30KKworZnVuY3Rpb24gZGVsZXRlUmVj
b3JkKCkKK3sKKyAgICBkZWJ1ZygiZGVsZXRlUmVjb3JkKCk6Iik7CisgICAgb2JqZWN0U3RvcmUg
PSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLnRyYW5zYWN0aW9uKCdmb28nLCBJREJUcmFu
c2FjdGlvbi5SRUFEX1dSSVRFKS5vYmplY3RTdG9yZSgnZm9vJyk7Iik7CisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5kZWxldGUoZGF0YS5rZXkpOyIpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVsZXRlU3VjY2Vz
cygpCit7CisgICAgZGVidWcoImRlbGV0ZVN1Y2Nlc3MoKToiKTsKKyAgICBmaW5pc2hKU1Rlc3Qo
KTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL29wZW4tZGF0
YWJhc2UtbnVsbC1uYW1lLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9yZXNvdXJjZXMvb3Blbi1kYXRhYmFzZS1udWxsLW5hbWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDhkMGMz
MzJjN2Y4NzFiOTZlNTI2MDM1ODBlMmRhMzgzNGExZTBlMgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL29wZW4tZGF0YWJh
c2UtbnVsbC1uYW1lLmpzCkBAIC0wLDAgKzEsMzEgQEAKKy8vIG9yaWdpbmFsIHRlc3Q6CisvLyBo
dHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVz
dC90ZXN0X29wZW5fZW1wdHlfZGIuaHRtbD9mb3JjZT0xCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFs
IHRlc3Q6CisvLyAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorLy8gICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvICIKKworaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4u
Ly4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0
U2NyaXB0cygnLi4vLi4vcmVzb3VyY2VzL3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigi
VGVzdCBJbmRleGVkREI6IHNob3VsZCBOT1QgdGhyb3cgd2hlbiBvcGVuaW5nIGEgZGF0YWJhc2Ug
d2l0aCBhIG51bGwgbmFtZSIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5k
b3JQcmVmaXhlcygpOworCisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Cisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG51bGwpOyIpOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAg
ICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3Vs
ZEJlKCJkYi5uYW1lIiwgIidudWxsJyIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0
KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvcHV0LWdldC12YWx1ZXMuanMgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9wdXQtZ2V0LXZh
bHVlcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kODRjOGU2MDEyNzY3MDMyNzc1MzUyZTBhM2U2ODYzY2QzNWNk
YTIwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9yZXNvdXJjZXMvcHV0LWdldC12YWx1ZXMuanMKQEAgLTAsMCArMSwxMDggQEAKKy8vIG9y
aWdpbmFsIHRlc3Q6CisvLyBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNl
L2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X3B1dF9nZXRfdmFsdWVzLmh0bWwKKy8vIGxpY2Vuc2Ug
b2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0
U2NyaXB0cygnLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsK
KyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi9yZXNvdXJjZXMvc2hhcmVkLmpzJyk7Cit9CisKK2Rl
c2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIHB1dHRpbmcgYW5kIGdldHRpbmcgdmFsdWVzIGlu
IGFuIG9iamVjdCBzdG9yZSIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5k
b3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAg
ZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2
YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKK3sKKyAgICBkZWxl
dGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgdGVzdFN0cmluZyA9IGV2YWxBbmRMb2coInRl
c3RTdHJpbmcgPSB7IGtleTogMCwgdmFsdWU6ICd0ZXN0U3RyaW5nJyB9OyIpOworICAgIHRlc3RJ
bnQgPSBldmFsQW5kTG9nKCJ0ZXN0SW50ID0geyBrZXk6IDEsIHZhbHVlOiAxMDAyIH07Iik7Cisg
ICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVj
dFN0b3JlKCdPYmplY3RzJywgeyBhdXRvSW5jcmVtZW50OiBmYWxzZSB9KTsiKTsKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZCh0ZXN0U3RyaW5nLnZh
bHVlLCB0ZXN0U3RyaW5nLmtleSk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0QWRkOworfQorCitm
dW5jdGlvbiBwb3N0QWRkKCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIs
ICJ0ZXN0U3RyaW5nLmtleSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
b2JqZWN0U3RvcmUuZ2V0KHRlc3RTdHJpbmcua2V5KTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RH
ZXQ7Cit9CisKK2Z1bmN0aW9uIHBvc3RHZXQoKQoreworICAgIHNob3VsZEJlKCJldmVudC50YXJn
ZXQucmVzdWx0IiwgInRlc3RTdHJpbmcudmFsdWUiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZCh0ZXN0SW50LnZhbHVlLCB0ZXN0SW50LmtleSk7
Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0QWRkSW50OworfQorCitmdW5jdGlvbiBwb3N0QWRkSW50
KCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ0ZXN0SW50LmtleSIp
OworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KHRl
c3RJbnQua2V5KTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RHZXRJbnQ7Cit9CisKK2Z1bmN0aW9u
IHBvc3RHZXRJbnQoKQoreworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgInRl
c3RJbnQudmFsdWUiKTsKKyAgICBvYmplY3RTdG9yZUF1dG9JbmNyZW1lbnQgPSBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZUF1dG9JbmNyZW1lbnQgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnQXV0b0lu
Y3JlbWVudGVkIE9iamVjdHMnLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7CisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZUF1dG9JbmNyZW1lbnQuYWRk
KHRlc3RTdHJpbmcudmFsdWUpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdEFkZEF1dG9JbmNyZW1l
bnQ7Cit9CisKK2Z1bmN0aW9uIHBvc3RBZGRBdXRvSW5jcmVtZW50KCkKK3sKKyAgICB0ZXN0U3Ry
aW5nLmtleSA9IGV2YWxBbmRMb2coInRlc3RTdHJpbmcua2V5ID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dDsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlQXV0
b0luY3JlbWVudC5nZXQodGVzdFN0cmluZy5rZXkpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdEdl
dEF1dG9JbmNyZW1lbnQ7Cit9CisKK2Z1bmN0aW9uIHBvc3RHZXRBdXRvSW5jcmVtZW50KCkKK3sK
KyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ0ZXN0U3RyaW5nLnZhbHVlIik7
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZUF1dG9JbmNy
ZW1lbnQuYWRkKHRlc3RJbnQudmFsdWUpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdEFkZEludEF1
dG9JbmNyZW1lbnQ7Cit9CisKK2Z1bmN0aW9uIHBvc3RBZGRJbnRBdXRvSW5jcmVtZW50KCkKK3sK
KyAgICB0ZXN0SW50LmtleSA9IGV2YWxBbmRMb2coInRlc3RJbnQua2V5ID0gZXZlbnQudGFyZ2V0
LnJlc3VsdDsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0
b3JlQXV0b0luY3JlbWVudC5nZXQodGVzdEludC5rZXkpOyIpOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9z
dEdldEludEF1dG9JbmNyZW1lbnQ7Cit9CisKK2Z1bmN0aW9uIHBvc3RHZXRJbnRBdXRvSW5jcmVt
ZW50KCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ0ZXN0SW50LnZh
bHVlIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL3Jlc291cmNlcy9yZWFkb25seS10cmFuc2FjdGlvbnMuanMgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9yZWFkb25seS10cmFuc2FjdGlvbnMu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTkyZWRlNzRiYzQ2MTJjMTkyOTA0ODRhYmI0ODA2NTA1MmQ0YjNmZAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEv
cmVzb3VyY2VzL3JlYWRvbmx5LXRyYW5zYWN0aW9ucy5qcwpAQCAtMCwwICsxLDU4IEBACisvLyBv
cmlnaW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJj
ZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9yZWFkb25seV90cmFuc2FjdGlvbnMuaHRtbAorLy8g
bGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorLy8gIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKy8vICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLyAiCisKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAg
ICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uL3Jlc291cmNlcy9zaGFyZWQuanMnKTsK
K30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgcmVhZG9ubHkgdHJhbnNhY3Rpb25z
Iik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisK
KyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJN
eSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9w
ZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3Vj
Y2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30K
KworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBl
dmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5E
YXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
K30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3Rv
cmVzKGRiKTsKKworICAgIG9zTmFtZSA9ICJ0ZXN0IHN0b3JlIjsKKyAgICBvYmplY3RTdG9yZSA9
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUob3NOYW1lLCB7
IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7CisgICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5vbmNv
bXBsZXRlID0gc2V0VmVyc2lvbkNvbXBsZXRlOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uQ29t
cGxldGUoKQoreworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKFtv
c05hbWVdKS5vYmplY3RTdG9yZShvc05hbWUpLmFkZCh7fSk7IiwgIklEQkRhdGFiYXNlRXhjZXB0
aW9uLlJFQURfT05MWV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFu
c2FjdGlvbihvc05hbWUpLm9iamVjdFN0b3JlKG9zTmFtZSkuYWRkKHt9KTsiLCAiSURCRGF0YWJh
c2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUiIpOworICAgIGtleTEgPSBldmFsQW5kTG9nKCJrZXkx
ID0gMTsiKTsKKyAgICBrZXkyID0gZXZhbEFuZExvZygia2V5MiA9IDI7Iik7CisgICAgZXZhbEFu
ZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oW29zTmFtZV0pLm9iamVjdFN0b3JlKG9z
TmFtZSkucHV0KHt9LCBrZXkxKTsiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VS
UiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKG9zTmFtZSku
b2JqZWN0U3RvcmUob3NOYW1lKS5wdXQoe30sIGtleTIpOyIsICJJREJEYXRhYmFzZUV4Y2VwdGlv
bi5SRUFEX09OTFlfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNh
Y3Rpb24oW29zTmFtZV0pLm9iamVjdFN0b3JlKG9zTmFtZSkucHV0KHt9LCBrZXkxKTsiLCAiSURC
RGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oImRiLnRyYW5zYWN0aW9uKG9zTmFtZSkub2JqZWN0U3RvcmUob3NOYW1lKS5wdXQoe30s
IGtleTEpOyIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5SRUFEX09OTFlfRVJSIik7CisgICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oW29zTmFtZV0pLm9iamVjdFN0b3Jl
KG9zTmFtZSkuZGVsZXRlKGtleTEpOyIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5SRUFEX09OTFlf
RVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24ob3NOYW1l
KS5vYmplY3RTdG9yZShvc05hbWUpLmRlbGV0ZShrZXkyKTsiLCAiSURCRGF0YWJhc2VFeGNlcHRp
b24uUkVBRF9PTkxZX0VSUiIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvcmVhZHdyaXRlLXRyYW5zYWN0aW9ucy5qcyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL3JlYWR3cml0
ZS10cmFuc2FjdGlvbnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDIwOTc0NmEzOWNmYjQwZjY2ZjYxNzJhMDVm
YTFjOGRiNTZiNDQ5MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL3JlYWR3cml0ZS10cmFuc2FjdGlvbnMuanMKQEAgLTAs
MCArMSwxMTQgQEAKKy8vIG9yaWdpbmFsIHRlc3Q6CisvLyBodHRwOi8vbXhyLm1vemlsbGEub3Jn
L21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X3JlYWRvbmx5X3RyYW5z
YWN0aW9ucy5odG1sCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisvLyAiIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorLy8gICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKworaWYgKHRoaXMuaW1w
b3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vcmVzb3Vy
Y2VzL3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyByZWFk
L3dyaXRlIHRyYW5zYWN0aW9ucyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVW
ZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Cisg
ICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9
IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAg
IGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBvc05hbWUgPSAidGVzdCBzdG9yZSI7
CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9i
amVjdFN0b3JlKG9zTmFtZSwgeyBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOyIpOworICAgIGV2ZW50
LnRhcmdldC5yZXN1bHQub25jb21wbGV0ZSA9IHNldFZlcnNpb25Db21wbGV0ZTsKK30KKworZnVu
Y3Rpb24gc2V0VmVyc2lvbkNvbXBsZXRlKCkKK3sKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IGRiLnRyYW5zYWN0aW9uKFtvc05hbWVdLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dS
SVRFKS5vYmplY3RTdG9yZShvc05hbWUpLmFkZCh7fSk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBwb3N0QWRkOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworfQorCitmdW5jdGlvbiBwb3N0QWRkKCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFy
Z2V0LnRyYW5zYWN0aW9uLm1vZGUiLCAiSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSIpOworICAg
IGtleTEgPSBldmFsQW5kTG9nKCJrZXkxID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnRyYW5zYWN0aW9uKG9zTmFtZSwgSURC
VHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3RvcmUob3NOYW1lKS5hZGQoe30pOyIpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdEFkZDI7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHBvc3RBZGQyKCkKK3sKKyAg
ICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm1vZGUiLCAiSURCVHJhbnNhY3Rp
b24uUkVBRF9XUklURSIpOworICAgIGtleTIgPSBldmFsQW5kTG9nKCJrZXkyID0gZXZlbnQudGFy
Z2V0LnJlc3VsdDsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnRy
YW5zYWN0aW9uKFtvc05hbWVdLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKS5vYmplY3RTdG9y
ZShvc05hbWUpLnB1dCh7fSwga2V5MSk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0
UHV0OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBwb3N0UHV0KCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5z
YWN0aW9uLm1vZGUiLCAiSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSIpOworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIudHJhbnNhY3Rpb24ob3NOYW1lLCBJREJUcmFuc2Fj
dGlvbi5SRUFEX1dSSVRFKS5vYmplY3RTdG9yZShvc05hbWUpLnB1dCh7fSwga2V5Mik7Iik7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0UHV0MjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gcG9zdFB1dDIoKQoreworICAg
IHNob3VsZEJlKCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24ubW9kZSIsICJJREJUcmFuc2FjdGlv
bi5SRUFEX1dSSVRFIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi50
cmFuc2FjdGlvbihbb3NOYW1lXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3Rv
cmUob3NOYW1lKS5wdXQoe30sIGtleTEpOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9z
dFB1dDM7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIHBvc3RQdXQzKCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRy
YW5zYWN0aW9uLm1vZGUiLCAiSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSIpOworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIudHJhbnNhY3Rpb24ob3NOYW1lLCBJREJUcmFu
c2FjdGlvbi5SRUFEX1dSSVRFKS5vYmplY3RTdG9yZShvc05hbWUpLnB1dCh7fSwga2V5MSk7Iik7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0UHV0NDsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gcG9zdFB1dDQoKQorewor
ICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24ubW9kZSIsICJJREJUcmFuc2Fj
dGlvbi5SRUFEX1dSSVRFIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBk
Yi50cmFuc2FjdGlvbihbb3NOYW1lXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0
U3RvcmUob3NOYW1lKS5kZWxldGUoa2V5MSk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBw
b3N0RGVsZXRlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworfQorCitmdW5jdGlvbiBwb3N0RGVsZXRlKCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFy
Z2V0LnRyYW5zYWN0aW9uLm1vZGUiLCAiSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSIpOworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIudHJhbnNhY3Rpb24ob3NOYW1lLCBJ
REJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKS5vYmplY3RTdG9yZShvc05hbWUpLmRlbGV0ZShrZXky
KTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3REZWxldGUyOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBwb3N0RGVs
ZXRlMigpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2RlIiwg
IklEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwor
dGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL3JlYWR5U3RhdGUuanMgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9yZWFkeVN0YXRl
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjI1ZGZjZTNlMmZhMjZlY2RkYmU0YmFiYTBmYWYwNWRiNmUxMGNkYjcK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L3Jlc291cmNlcy9yZWFkeVN0YXRlLmpzCkBAIC0wLDAgKzEsNzAgQEAKKy8vIG9yaWdpbmFsIHRl
c3Q6CisvLyBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRl
eGVkREIvdGVzdC90ZXN0X3JlcXVlc3RfcmVhZHlTdGF0ZS5odG1sP2ZvcmNlPTEKKy8vIGxpY2Vu
c2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1w
b3J0U2NyaXB0cygnLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMn
KTsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi9yZXNvdXJjZXMvc2hhcmVkLmpzJyk7Cit9CisK
K2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiByZWFkeVN0YXRlIHByb3BlcnR5IGR1cmluZyBk
aWZmZXJlbnQgb3BlcmF0aW9ucyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVW
ZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Cisg
ICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHNob3VsZEJl
KCJyZXF1ZXN0LnJlYWR5U3RhdGUiLCAiSURCUmVxdWVzdC5MT0FESU5HIik7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRl
YnVnKCJvcGVuU3VjY2VzcygpOiIpOworICAgIHNob3VsZEJlKCJyZXF1ZXN0LnJlYWR5U3RhdGUi
LCAiSURCUmVxdWVzdC5ET05FIik7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNl
dFZlcnNpb24oJzEnKSIpOworICAgIHNob3VsZEJlKCJyZXF1ZXN0LnJlYWR5U3RhdGUiLCAiSURC
UmVxdWVzdC5MT0FESU5HIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXR1cE9iamVjdFN0
b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBzZXR1cE9iamVjdFN0b3JlKCkKK3sKKyAgICBkZWJ1Zygic2V0dXBPYmplY3RT
dG9yZSgpOiIpOworICAgIHNob3VsZEJlKCJyZXF1ZXN0LnJlYWR5U3RhdGUiLCAiSURCUmVxdWVz
dC5ET05FIik7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0
b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9v
Jyk7Iik7CisgICAga2V5ID0gZXZhbEFuZExvZygia2V5ID0gMTA7Iik7CisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoe30sIGtleSk7Iik7CisgICAg
c2hvdWxkQmUoInJlcXVlc3QucmVhZHlTdGF0ZSIsICJJREJSZXF1ZXN0LkxPQURJTkciKTsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldFJlY29yZDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZ2V0UmVjb3JkKCkKK3sKKyAg
ICBkZWJ1ZygiZ2V0UmVjb3JkKCk6Iik7CisgICAgc2hvdWxkQmUoInJlcXVlc3QucmVhZHlTdGF0
ZSIsICJJREJSZXF1ZXN0LkRPTkUiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3Vs
dCIsICJrZXkiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0
b3JlLmdldChrZXkpOyIpOworICAgIHNob3VsZEJlKCJyZXF1ZXN0LnJlYWR5U3RhdGUiLCAiSURC
UmVxdWVzdC5MT0FESU5HIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmaW5hbENoZWNrOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiBmaW5hbENoZWNrKCkKK3sKKyAgICBkZWJ1ZygiZmluYWxDaGVjaygpOiIpOworICAgIHNo
b3VsZEJlKCJyZXF1ZXN0LnJlYWR5U3RhdGUiLCAiSURCUmVxdWVzdC5ET05FIik7CisgICAgc2hv
dWxkQmVGYWxzZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBudWxsIik7CisgICAgZmluaXNoSlNU
ZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9yZW1v
dmUtaW5kZXguanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291
cmNlcy9yZW1vdmUtaW5kZXguanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWRjYzg0ODRhYjI5NmExYmI5NGY1YTli
OWY2ZTRmNzA1NzUxMjZlZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL3JlbW92ZS1pbmRleC5qcwpAQCAtMCwwICsxLDU1
IEBACisvLyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxh
Mi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9yZW1vdmVfaW5kZXguaHRtbAorLy8g
bGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorLy8gIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKy8vICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLyAiCisKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAg
ICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uL3Jlc291cmNlcy9zaGFyZWQuanMnKTsK
K30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgY3JlYXRpbmcgYW5kIGRlbGV0aW5n
IGluZGV4ZXMiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4
ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0
aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRl
eGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9n
KCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBjcmVhdGVBbmREZWxldGVJbmRleDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY3JlYXRlQW5kRGVsZXRlSW5kZXgoKQorewor
ICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBvYmplY3RTdG9yZU5hbWUgPSAi
dGVzdCBzdG9yZSI7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSwgeyBrZXlQYXRoOiAnZm9vJyB9
KTsiKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMSIpOwor
ICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLml0ZW0oMCkiLCAib2JqZWN0U3RvcmVO
YW1lIik7CisgICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLmluZGV4TmFtZXMubGVuZ3RoIiwgIjAi
KTsKKworICAgIGluZGV4TmFtZSA9ICJNeSBUZXN0IEluZGV4IjsKKyAgICBpbmRleCA9IGV2YWxB
bmRMb2coImluZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoaW5kZXhOYW1lLCAnZm9vJyk7
Iik7CisgICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLmluZGV4TmFtZXMubGVuZ3RoIiwgIjEiKTsK
KyAgICBzaG91bGRCZSgib2JqZWN0U3RvcmUuaW5kZXhOYW1lcy5pdGVtKDApIiwgImluZGV4TmFt
ZSIpOworCisgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuZGVsZXRlSW5kZXgoaW5kZXhOYW1l
KTsiKTsKKyAgICBzaG91bGRCZSgib2JqZWN0U3RvcmUuaW5kZXhOYW1lcy5sZW5ndGgiLCAiMCIp
OworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL3Jlc291cmNlcy9yZW1vdmUtb2JqZWN0c3RvcmUuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9yZW1vdmUtb2JqZWN0c3RvcmUuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzc3MGUwOGRkZThkZGNmZDgyZjBlMjQyZTJjMWZlYzUwMWQ1YzNhZAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2Vz
L3JlbW92ZS1vYmplY3RzdG9yZS5qcwpAQCAtMCwwICsxLDEwOSBAQAorLy8gb3JpZ2luYWwgdGVz
dDoKKy8vIGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4
ZWREQi90ZXN0L3Rlc3RfcmVtb3ZlX29iamVjdFN0b3JlLmh0bWw/Zm9yY2U9MQorLy8gbGljZW5z
ZSBvZiBvcmlnaW5hbCB0ZXN0OgorLy8gIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKy8vICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLyAiCisKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBv
cnRTY3JpcHRzKCcuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycp
OworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uL3Jlc291cmNlcy9zaGFyZWQuanMnKTsKK30KKwor
ZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGRlbGV0aW5nIGFuIG9iamVjdCBzdG9yZSIpOwor
CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAg
bmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVz
dCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5h
bWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0
aCIsICIwIik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZl
cnNpb24oJzEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5kUG9wdWxhdGVP
YmplY3RTdG9yZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSgpCit7CisgICAg
ZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlTmFtZSA9IGV2YWxB
bmRMb2coIm9iamVjdFN0b3JlTmFtZSA9ICdPYmplY3RzJzsiKTsKKyAgICBvYmplY3RTdG9yZSA9
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3Rv
cmVOYW1lLCB7IGtleVBhdGg6ICdmb28nIH0pOyIpOworCisgICAgYWRkZWRDb3VudCA9IGV2YWxB
bmRMb2coImFkZGVkQ291bnQgPSAwOyIpOworICAgIGZvciAoaSA9IDA7IGkgPCAxMDA7IGkrKykg
eworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFk
ZCh7Zm9vOiBpfSk7Iik7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7
CisgICAgICAgICAgICBpZiAoKythZGRlZENvdW50ID09IDEwMCkgeworICAgICAgICAgICAgICAg
IGNoZWNrT2JqZWN0U3RvcmUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30K
KworZnVuY3Rpb24gY2hlY2tPYmplY3RTdG9yZSgpCit7CisgICAgc2hvdWxkQmUoImRiLm9iamVj
dFN0b3JlTmFtZXMubGVuZ3RoIiwgIjEiKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVO
YW1lcy5pdGVtKDApIiwgIm9iamVjdFN0b3JlTmFtZSIpOworCisgICAgcmVxdWVzdCA9IGRiLnNl
dFZlcnNpb24oJzInKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RTZXRWZXJzaW9uMjsKK30KKworZnVu
Y3Rpb24gcG9zdFNldFZlcnNpb24yKCkKK3sKKyAgICBldmFsQW5kTG9nKCJkYi5kZWxldGVPYmpl
Y3RTdG9yZShvYmplY3RTdG9yZS5uYW1lKTsiKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3Rv
cmVOYW1lcy5sZW5ndGgiLCAiMCIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJv
YmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSwgeyBrZXlQ
YXRoOiAnZm9vJyB9KTsiKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5n
dGgiLCAiMSIpOworICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLml0ZW0oMCkiLCAi
b2JqZWN0U3RvcmVOYW1lIik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2
ZW50KSB7CisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIm51bGwiKTsK
KyAgICAgICAgZGVsZXRlU2Vjb25kT2JqZWN0U3RvcmUoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9u
IGRlbGV0ZVNlY29uZE9iamVjdFN0b3JlKCkKK3sKKyAgICBldmFsQW5kTG9nKCJkYi5kZWxldGVP
YmplY3RTdG9yZShvYmplY3RTdG9yZS5uYW1lKTsiKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0
U3RvcmVOYW1lcy5sZW5ndGgiLCAiMCIpOworICAgIHNldFZlcnNpb24zKCk7Cit9CisKK2Z1bmN0
aW9uIHNldFZlcnNpb24zKCkKK3sKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IGRiLnNldFZlcnNpb24oJzMnKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RTZXRWZXJzaW9uMzsK
K30KKworZnVuY3Rpb24gcG9zdFNldFZlcnNpb24zKCkKK3sKKyAgICBvYmplY3RTdG9yZSA9IGV2
YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVO
YW1lLCB7IGtleVBhdGg6ICdmb28nIH0pOyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKHtmb286J2Jhcid9KTsiKTsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGRlbGV0ZVRoaXJkT2JqZWN0U3RvcmU7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZVRoaXJkT2JqZWN0
U3RvcmUoKQoreworICAgIGV2YWxBbmRMb2coImRiLmRlbGV0ZU9iamVjdFN0b3JlKG9iamVjdFN0
b3JlTmFtZSk7Iik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy92ZXJzaW9uY2hhbmdlLWFib3J0LmpzIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvdmVyc2lvbmNoYW5nZS1hYm9y
dC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40M2VhMmNjMDcxOGZmNWNkZTBmOWQwZTgyMWZjMTlmYmFlMjY0ZmM4
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9yZXNvdXJjZXMvdmVyc2lvbmNoYW5nZS1hYm9ydC5qcwpAQCAtMCwwICsxLDU3IEBACisvLyBv
cmlnaW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJj
ZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9zZXRWZXJzaW9uX2Fib3J0Lmh0bWwKKy8vIGxpY2Vu
c2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1w
b3J0U2NyaXB0cygnLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMn
KTsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi9yZXNvdXJjZXMvc2hhcmVkLmpzJyk7Cit9CisK
K2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGFib3J0aW5nIHNldFZlcnNpb24iKTsKKwor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5h
bWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3Qg
RGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1l
LCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKKyAgICBpbml0aWFsVmVyc2lvbiA9IGV2YWxBbmRMb2coImluaXRpYWxW
ZXJzaW9uID0gZGIudmVyc2lvbjsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IGRiLnNldFZlcnNpb24oJzInKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5E
YXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
K30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3Rv
cmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBk
Yi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJyk7Iik7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0
b3JlTmFtZXMubGVuZ3RoIiwgIjEiKTsKKworICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXgg
PSBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgnYmFyJywgJ2JheicpOyIpOworICAgIHNob3VsZEJl
KCJvYmplY3RTdG9yZS5pbmRleE5hbWVzLmxlbmd0aCIsICIxIik7CisKKyAgICBldmVudC50YXJn
ZXQudHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7Cisg
ICAgZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm9uYWJvcnQgPSBwb3N0QWJvcnQ7CisgICAgZXZh
bEFuZExvZygiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLmFib3J0KCk7Iik7Cit9CisKK2Z1bmN0
aW9uIHBvc3RBYm9ydCgpCit7CisgICAgc2hvdWxkQmUoImRiLnZlcnNpb24iLCAiaW5pdGlhbFZl
cnNpb24iKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMCIp
OworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL3Jlc291cmNlcy92ZXJzaW9uY2hhbmdlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvdmVyc2lvbmNoYW5nZS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jM2I1
YzI2MTE2ZDJiZGY2NzUxNTE0Mzc5MGM1ZGE3N2YyYTYwODFhCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvdmVyc2lvbmNo
YW5nZS5qcwpAQCAtMCwwICsxLDEwMSBAQAorLy8gb3JpZ2luYWwgdGVzdDoKKy8vIGh0dHA6Ly9t
eHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3Rf
c2V0VmVyc2lvbl9ldmVudHMuaHRtbAorLy8gbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorLy8g
IiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKy8vICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCisKK2lm
ICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJy4u
Ly4uL3Jlc291cmNlcy9zaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhl
ZERCJ3MgdHJpZ2dlcmluZyB2ZXJzaW9uY2hhbmdlIGV2ZW50Iik7CisKK2Z1bmN0aW9uIHRlc3Qo
KQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2Nh
dGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24p
Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nl
c3MoKQoreworICAgIGRiMSA9IGV2YWxBbmRMb2coImRiMSA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKKyAgICB2ZXJzaW9uQ2hhbmdlRXZlbnRDb3VudCA9IGV2YWxBbmRMb2coInZlcnNpb25DaGFu
Z2VFdmVudENvdW50ID0gMDsiKTsKKyAgICBkZWJ1ZygiZGIxIHdpbGwgYmUgb3BlbiB3aGVuIHdl
IGNhbGwgZGIyLnNldFZlcnNpb24sIHdoaWNoIHdpbGwgdHJpZ2dlciB2ZXJzaW9uY2hhbmdlIG9u
IGRiMSIpOworICAgIGRiMS5vbnZlcnNpb25jaGFuZ2UgPSBmdW5jdGlvbihldmVudCkgeworICAg
ICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0IiwgImRiMSIpOworICAgICAgICBzaG91bGRCZSgi
ZXZlbnQudmVyc2lvbiIsICInMSciKTsKKyAgICAgICAgdmVyc2lvbkNoYW5nZUV2ZW50Q291bnQr
KzsKKyAgICAgICAgc2hvdWxkQmUoInZlcnNpb25DaGFuZ2VFdmVudENvdW50IiwgIjEiKTsKKyAg
ICAgICAgZGVidWcoImNsb3NlIGRiMSBub3cgc28gdmVyc2lvbmNoYW5nZSBkb2Vzbid0IHRyaWdn
ZXIgb24gZGIxIGFnYWluIHdoZW4gd2UgY2FsbCBkYjMuc2V0VmVyc2lvbiIpOworICAgICAgICBl
dmFsQW5kTG9nKCJkYjEuY2xvc2UoKTsiKTsKKyAgICB9OworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IG9wZW5TdWNjZXNzMjsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MyKCkKK3sKKyAgICBkYjIg
PSBldmFsQW5kTG9nKCJkYjIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgZGVidWcoImRi
MiB3aWxsIGJlIG9wZW4gd2hlbiB3ZSBjYWxsIGRiMy5zZXRWZXJzaW9uLCB3aGljaCB3aWxsIHRy
aWdnZXIgdmVyc2lvbmNoYW5nZSBvbiBkYjIiKTsKKyAgICBkYjIub252ZXJzaW9uY2hhbmdlID0g
ZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgdCA9IGV2ZW50LnRhcmdldDsKKyAgICAgICAgc2hv
dWxkQmUoImV2ZW50LnRhcmdldCIsICJkYjIiKTsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRh
cmdldC52ZXJzaW9uIiwgIicxJyIpOworICAgICAgICBzaG91bGRCZSgiZXZlbnQudmVyc2lvbiIs
ICInMiciKTsKKyAgICAgICAgdmVyc2lvbkNoYW5nZUV2ZW50Q291bnQrKzsKKyAgICAgICAgc2hv
dWxkQmUoInZlcnNpb25DaGFuZ2VFdmVudENvdW50IiwgIjIiKTsKKyAgICAgICAgZGVidWcoImRv
bid0IGNsb3NlIGRiMiwgc28gaXQgd2lsbCBibG9jayBkYjMuc2V0VmVyc2lvbiIpOworICAgIH0K
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiMi5zZXRWZXJzaW9uKCcxJyki
KTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RTZXRWZXJzaW9uOworICAgIHJlcXVlc3Qub25ibG9ja2Vk
ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiZGIyIHJlY2VpdmVkIGJs
b2NrZWQgZXZlbnQiKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHBvc3RTZXRWZXJzaW9uKCkKK3sK
KyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJldmVudC50YXJnZXQudHJhbnNh
Y3Rpb24iKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm1vZGUiLCAi
SURCVHJhbnNhY3Rpb24uVkVSU0lPTl9DSEFOR0UiKTsKKyAgICBzaG91bGRCZSgiZGIyLnZlcnNp
b24iLCAiJzEnIik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4
ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNj
ZXNzMzsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MzKCkKK3sKKyAgICBkYjMgPSBldmFsQW5k
TG9nKCJkYjMgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gZGIzLnNldFZlcnNpb24oJzInKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBkZWJ1ZygidGhpcyByZXF1ZXN0IHdp
bGwgYmxvY2sgYmVjYXVzZSBkYjIgaXMgc3RpbGwgb3BlbiIpOworICAgIHJlcXVlc3Qub25ibG9j
a2VkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5z
b3VyY2UiLCAiZGIzIik7CisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuc291cmNlLnZl
cnNpb24iLCAiJzEnIik7CisgICAgICAgIHNob3VsZEJlKCJldmVudC52ZXJzaW9uIiwgIicyJyIp
OworICAgICAgICB2ZXJzaW9uQ2hhbmdlRXZlbnRDb3VudCsrOworICAgICAgICBkZWJ1ZygiY2xv
c2UgZGIyIG5vdyBzbyBvbnN1Y2Nlc3Mgd2lsbCBiZSBjYWxsZWQiKTsKKyAgICAgICAgZXZhbEFu
ZExvZygiZGIyLmNsb3NlKCk7Iik7CisgICAgfQorICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9z
dFNldFZlcnNpb24yOworfQorCitmdW5jdGlvbiBwb3N0U2V0VmVyc2lvbjIoKQoreworICAgIHNo
b3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbiIp
OworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24ubW9kZSIsICJJREJUcmFu
c2FjdGlvbi5WRVJTSU9OX0NIQU5HRSIpOworICAgIHNob3VsZEJlKCJkYjMudmVyc2lvbiIsICIn
MiciKTsKKyAgICBzaG91bGRCZSgidmVyc2lvbkNoYW5nZUV2ZW50Q291bnQiLCAiMyIpOworICAg
IGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS92ZXJz
aW9uY2hhbmdlLWFib3J0Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL3ZlcnNpb25jaGFuZ2UtYWJvcnQuaHRtbAppbmRleCA3MmRlZGM4ZTRkN2Y0YjAxYmUzOTBj
OGY0MGE2Y2ZiNWFhNTNlYjMyLi44MWZjYTczZWNlZWQ3MGNjYjY3YjQ2Y2ZjYTQzZmM1MjRlYzBm
MWVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Zl
cnNpb25jaGFuZ2UtYWJvcnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL3ZlcnNpb25jaGFuZ2UtYWJvcnQuaHRtbApAQCAtMSw2NyArMSwxMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5v
cmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3Rfc2V0VmVyc2lvbl9h
Ym9ydC5odG1sCi0gIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgotICAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgogPGhl
YWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2Ny
aXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRl
eGVkREIncyBhYm9ydGluZyBzZXRWZXJzaW9uIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAg
IHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRo
bmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewot
ICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgaW5p
dGlhbFZlcnNpb24gPSBldmFsQW5kTG9nKCJpbml0aWFsVmVyc2lvbiA9IGRiLnZlcnNpb247Iik7
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcyJyki
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFuRGF0
YWJhc2UoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBvYmplY3RT
dG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2Zv
bycpOyIpOwotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIxIik7
Ci0KLSAgICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5k
ZXgoJ2JhcicsICdiYXonKTsiKTsKLSAgICBzaG91bGRCZSgib2JqZWN0U3RvcmUuaW5kZXhOYW1l
cy5sZW5ndGgiLCAiMSIpOwotCi0gICAgZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm9uY29tcGxl
dGUgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOwotICAgIGV2ZW50LnRhcmdldC50cmFuc2Fj
dGlvbi5vbmFib3J0ID0gcG9zdEFib3J0OwotICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC50
cmFuc2FjdGlvbi5hYm9ydCgpOyIpOwotfQotCi1mdW5jdGlvbiBwb3N0QWJvcnQoKQotewotICAg
IHNob3VsZEJlKCJkYi52ZXJzaW9uIiwgImluaXRpYWxWZXJzaW9uIik7Ci0gICAgc2hvdWxkQmUo
ImRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjAiKTsKLQotICAgIGZpbmlzaEpTVGVzdCgp
OwotfQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy92ZXJz
aW9uY2hhbmdlLWFib3J0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1s
PgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Zl
cnNpb25jaGFuZ2UuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEv
dmVyc2lvbmNoYW5nZS5odG1sCmluZGV4IGYwNThmZDVkYjEzMGJlOTE1ZWQ4Yzg4MTYzZjU4Nzcx
MjcxODlhYTguLjJmZmY2YjFhMmYyNzMyZWYzNTM0NDA4NjNlZGU2ODkwNmQ2M2U2MWUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvdmVyc2lvbmNoYW5n
ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvdmVyc2lv
bmNoYW5nZS5odG1sCkBAIC0xLDExMiArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi0g
IG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2Uv
ZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3Rfc2V0VmVyc2lvbl9ldmVudHMuaHRtbAotICBsaWNlbnNl
IG9mIG9yaWdpbmFsIHRlc3Q6Ci0gICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KLSAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8gIgotLS0+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5
PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgdHJpZ2dlcmluZyB2
ZXJzaW9uY2hhbmdlIGV2ZW50Iik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZl
bmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAg
ICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRiMSA9
IGV2YWxBbmRMb2coImRiMSA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICB2ZXJzaW9uQ2hh
bmdlRXZlbnRDb3VudCA9IGV2YWxBbmRMb2coInZlcnNpb25DaGFuZ2VFdmVudENvdW50ID0gMDsi
KTsKLSAgICBkZWJ1ZygiZGIxIHdpbGwgYmUgb3BlbiB3aGVuIHdlIGNhbGwgZGIyLnNldFZlcnNp
b24sIHdoaWNoIHdpbGwgdHJpZ2dlciB2ZXJzaW9uY2hhbmdlIG9uIGRiMSIpOwotICAgIGRiMS5v
bnZlcnNpb25jaGFuZ2UgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBzaG91bGRCZSgiZXZl
bnQudGFyZ2V0IiwgImRiMSIpOwotICAgICAgICBzaG91bGRCZSgiZXZlbnQudmVyc2lvbiIsICIn
MSciKTsKLSAgICAgICAgdmVyc2lvbkNoYW5nZUV2ZW50Q291bnQrKzsKLSAgICAgICAgc2hvdWxk
QmUoInZlcnNpb25DaGFuZ2VFdmVudENvdW50IiwgIjEiKTsKLSAgICAgICAgZGVidWcoImNsb3Nl
IGRiMSBub3cgc28gdmVyc2lvbmNoYW5nZSBkb2Vzbid0IHRyaWdnZXIgb24gZGIxIGFnYWluIHdo
ZW4gd2UgY2FsbCBkYjMuc2V0VmVyc2lvbiIpOwotICAgICAgICBldmFsQW5kTG9nKCJkYjEuY2xv
c2UoKTsiKTsKLSAgICB9OwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Bl
bihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzMjsKLX0K
LQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MyKCkKLXsKLSAgICBkYjIgPSBldmFsQW5kTG9nKCJkYjIg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgZGVidWcoImRiMiB3aWxsIGJlIG9wZW4gd2hl
biB3ZSBjYWxsIGRiMy5zZXRWZXJzaW9uLCB3aGljaCB3aWxsIHRyaWdnZXIgdmVyc2lvbmNoYW5n
ZSBvbiBkYjIiKTsKLSAgICBkYjIub252ZXJzaW9uY2hhbmdlID0gZnVuY3Rpb24oZXZlbnQpIHsK
LSAgICAgICAgdCA9IGV2ZW50LnRhcmdldDsKLSAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdl
dCIsICJkYjIiKTsKLSAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC52ZXJzaW9uIiwgIicx
JyIpOwotICAgICAgICBzaG91bGRCZSgiZXZlbnQudmVyc2lvbiIsICInMiciKTsKLSAgICAgICAg
dmVyc2lvbkNoYW5nZUV2ZW50Q291bnQrKzsKLSAgICAgICAgc2hvdWxkQmUoInZlcnNpb25DaGFu
Z2VFdmVudENvdW50IiwgIjIiKTsKLSAgICAgICAgZGVidWcoImRvbid0IGNsb3NlIGRiMiwgc28g
aXQgd2lsbCBibG9jayBkYjMuc2V0VmVyc2lvbiIpOwotICAgIH0KLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygicmVxdWVzdCA9IGRiMi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IHBvc3RTZXRWZXJzaW9uOwotICAgIHJlcXVlc3Qub25ibG9ja2VkID0gZnVuY3Rpb24oZXZlbnQp
IHsKLSAgICAgICAgdGVzdFBhc3NlZCgiZGIyIHJlY2VpdmVkIGJsb2NrZWQgZXZlbnQiKTsKLSAg
ICB9Ci19Ci0KLWZ1bmN0aW9uIHBvc3RTZXRWZXJzaW9uKCkKLXsKLSAgICBzaG91bGRCZSgiZXZl
bnQudGFyZ2V0LnJlc3VsdCIsICJldmVudC50YXJnZXQudHJhbnNhY3Rpb24iKTsKLSAgICBzaG91
bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm1vZGUiLCAiSURCVHJhbnNhY3Rpb24uVkVS
U0lPTl9DSEFOR0UiKTsKLSAgICBzaG91bGRCZSgiZGIyLnZlcnNpb24iLCAiJzEnIik7Ci0KLSAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKG5hbWUsIGRl
c2NyaXB0aW9uKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzMzsKLX0KLQotZnVuY3Rp
b24gb3BlblN1Y2Nlc3MzKCkKLXsKLSAgICBkYjMgPSBldmFsQW5kTG9nKCJkYjMgPSBldmVudC50
YXJnZXQucmVzdWx0OyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIz
LnNldFZlcnNpb24oJzInKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLSAgICBkZWJ1ZygidGhpcyByZXF1ZXN0IHdpbGwgYmxvY2sgYmVjYXVzZSBk
YjIgaXMgc3RpbGwgb3BlbiIpOwotICAgIHJlcXVlc3Qub25ibG9ja2VkID0gZnVuY3Rpb24oZXZl
bnQpIHsKLSAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5zb3VyY2UiLCAiZGIzIik7Ci0g
ICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuc291cmNlLnZlcnNpb24iLCAiJzEnIik7Ci0g
ICAgICAgIHNob3VsZEJlKCJldmVudC52ZXJzaW9uIiwgIicyJyIpOwotICAgICAgICB2ZXJzaW9u
Q2hhbmdlRXZlbnRDb3VudCsrOwotICAgICAgICBkZWJ1ZygiY2xvc2UgZGIyIG5vdyBzbyBvbnN1
Y2Nlc3Mgd2lsbCBiZSBjYWxsZWQiKTsKLSAgICAgICAgZXZhbEFuZExvZygiZGIyLmNsb3NlKCk7
Iik7Ci0gICAgfQotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdFNldFZlcnNpb24yOwotfQot
Ci1mdW5jdGlvbiBwb3N0U2V0VmVyc2lvbjIoKQotewotICAgIHNob3VsZEJlKCJldmVudC50YXJn
ZXQucmVzdWx0IiwgImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbiIpOwotICAgIHNob3VsZEJlKCJl
dmVudC50YXJnZXQudHJhbnNhY3Rpb24ubW9kZSIsICJJREJUcmFuc2FjdGlvbi5WRVJTSU9OX0NI
QU5HRSIpOwotICAgIHNob3VsZEJlKCJkYjMudmVyc2lvbiIsICInMiciKTsKLSAgICBzaG91bGRC
ZSgidmVyc2lvbkNoYW5nZUV2ZW50Q291bnQiLCAiMyIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwot
fQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3ZlcnNp
b25jaGFuZ2UuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL211dGF0aW5nLWN1cnNvci5o
dG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbXV0YXRpbmctY3Vyc29yLmh0bWwK
aW5kZXggMzRiMTliOWJiYTJiOGJkMzU3Y2NjZmI1ODg4N2U4MTkwMzU4MmY0Ny4uNDJlZjAzMGNl
M2E1NDFjNTJkMzVhNGY0ZGU0MDEyZTY2YjQwYWU3MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbXV0YXRpbmctY3Vyc29yLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbXV0YXRpbmctY3Vyc29yLmh0bWwKQEAgLTQsMTM4ICs0LDcgQEAK
IDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxi
b2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgbXV0YXRpbmcgYW4gSW5kZXhlZERC
J3Mgb2JqZWN0c3RvcmUgZnJvbSBhIGN1cnNvci4iKTsKLQotdGVzdCgpOwotCi1mdW5jdGlvbiB0
ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJpbmRleGVkREIub3BlbignbXV0YXRpbmctY3Vyc29yJykiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgdmFy
IGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQotewot
ICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOwotICAgIHNlbGYudHJhbnMgPSBldmFs
QW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUo
InRyYW5zICE9PSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENh
bGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBvcGVuRm9yd2FyZEN1cnNvcjsKLQotICAg
IGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICB2YXIgb2JqZWN0U3RvcmUgPSBldmFs
QW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7Ci0g
ICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKDEsIDEpLm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgyLCAyKS5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKLSAgICBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZS5hZGQoMywgMykub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7Ci0g
ICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKDQsIDQpLm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjayIpOwotfQotCi1mdW5jdGlvbiBvcGVuRm9yd2FyZEN1cnNvcigpCi17Ci0g
ICAgZGVidWcoIm9wZW5Gb3J3YXJkQ3Vyc29yKCkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucyA9
IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsK
LSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnMu
b25jb21wbGV0ZSA9IGZvcndhcmRDdXJzb3JDb21wbGV0ZTsKLQotICAgIHNlbGYub2JqZWN0U3Rv
cmUgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOwotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCkiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGZvcndhcmRDdXJzb3I7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgc2VsZi5jdXJzb3JTdGVwcyA9IDA7Ci19Ci0KLWZ1bmN0
aW9uIGZvcndhcmRDdXJzb3IoKQotewotICAgIGRlYnVnKCJmb3J3YXJkQ3Vyc29yKCkiKTsKLSAg
ICBzZWxmLmN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Ci0KLSAgICBpZiAoZXZlbnQudGFy
Z2V0LnJlc3VsdCA9PSBudWxsKSB7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJzb3JTdGVwcyIsICI1
Iik7Ci0KLSAgICAgICAgLy8gTGV0IHRoZSB0cmFuc2FjdGlvbiBmaW5pc2guCi0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBkZWJ1ZygrK2N1cnNvclN0ZXBzKTsKLSAgICBzaG91bGRCZSgi
Y3Vyc29yLmtleSIsICJjdXJzb3JTdGVwcyIpOwotICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUi
LCAiY3Vyc29yU3RlcHMiKTsKLQotICAgIGlmIChjdXJzb3JTdGVwcyA9PSAxKSB7Ci0gICAgICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJldmVudC50YXJnZXQuc291cmNlLmFkZCg1LCA1KSIpOwot
ICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeyBldmFsQW5kTG9nKCJjdXJz
b3IuY29udGludWUoKSIpOyB9Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5j
b250aW51ZSgpIik7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBmb3J3YXJkQ3Vyc29yQ29tcGxldGUo
KQotewotICAgIGRlYnVnKCJmb3J3YXJkQ3Vyc29yQ29tcGxldGUoKSIpOwotICAgIG9wZW5SZXZl
cnNlQ3Vyc29yKCkKLX0KLQotZnVuY3Rpb24gb3BlblJldmVyc2VDdXJzb3IoKQotewotICAgIGRl
YnVnKCJvcGVuUmV2ZXJzZUN1cnNvcigpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50
cmFuc2FjdGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAg
dHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIHRyYW5zLm9uY29t
cGxldGUgPSByZXZlcnNlQ3Vyc29yQ29tcGxldGU7Ci0KLSAgICBzZWxmLm9iamVjdFN0b3JlID0g
ZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygib2JqZWN0U3RvcmUub3BlbkN1cnNvcihudWxsLCBJREJDdXJzb3IuUFJFViki
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHJldmVyc2VDdXJzb3I7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgc2VsZi5jdXJzb3JTdGVwcyA9
IDY7Ci19Ci0KLWZ1bmN0aW9uIHJldmVyc2VDdXJzb3IoKQotewotICAgIGRlYnVnKCJyZXZlcnNl
Q3Vyc29yKCkiKTsKLSAgICBzZWxmLmN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Ci0KLSAg
ICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBudWxsKSB7Ci0gICAgICAgIHNob3VsZEJlKCJj
dXJzb3JTdGVwcyIsICIwIik7Ci0KLSAgICAgICAgLy8gTGV0IHRoZSB0cmFuc2FjdGlvbiBmaW5p
c2guCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBkZWJ1ZygtLWN1cnNvclN0ZXBzKTsK
LSAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJjdXJzb3JTdGVwcyIpOwotICAgIHNob3VsZEJl
KCJjdXJzb3IudmFsdWUiLCAiY3Vyc29yU3RlcHMiKTsKLQotICAgIGlmIChjdXJzb3JTdGVwcyA9
PSAyKSB7Ci0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJldmVudC50YXJnZXQuc291cmNl
LmFkZCgwLCAwKSIpOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeyBl
dmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKSIpOyB9Ci0gICAgICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGV2YWxB
bmRMb2coImN1cnNvci5jb250aW51ZSgpIik7Ci0gICAgfQotfQotCi1mdW5jdGlvbiByZXZlcnNl
Q3Vyc29yQ29tcGxldGUoKQotewotICAgIGRlYnVnKCJyZXZlcnNlQ3Vyc29yQ29tcGxldGUoKSIp
OwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9tdXRhdGluZy1jdXJzb3IuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RT
dG9yZS1yZXF1aXJlZC1hcmd1bWVudHMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL29iamVjdFN0b3JlLXJlcXVpcmVkLWFyZ3VtZW50cy5odG1sCmluZGV4IDZhMmY5ODFhYTJl
MTFjNWY2MmJjODFiMjdiYjg4NmE0ZWY1MGM3MDYuLjgxMWM0ZTAzOTNkYTFhNjE5ZDVkZGZiNTM0
NTM1YWNkZDY2OGY4ZTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L29iamVjdFN0b3JlLXJlcXVpcmVkLWFyZ3VtZW50cy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL29iamVjdFN0b3JlLXJlcXVpcmVkLWFyZ3VtZW50cy5odG1sCkBAIC0x
LDU0ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNy
Yz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+
Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgb2JqZWN0IHN0b3JlIHJl
cXVpcmVkIGFyZ3VtZW50cyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5k
b3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAg
ZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2
YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUFuZFBv
cHVsYXRlT2JqZWN0U3RvcmUoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0K
LSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ2ZvbycpOyIpOwotICAgIHNob3VsZFRocm93KCJvYmplY3RTdG9yZS5wdXQoKTsi
KTsKLSAgICBzaG91bGRUaHJvdygib2JqZWN0U3RvcmUuYWRkKCk7Iik7Ci0gICAgc2hvdWxkVGhy
b3coIm9iamVjdFN0b3JlLmRlbGV0ZSgpOyIpOwotICAgIHNob3VsZFRocm93KCJvYmplY3RTdG9y
ZS5nZXQoKTsiKTsKLSAgICBzaG91bGRUaHJvdygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoKTsi
KTsKLSAgICBzaG91bGRUaHJvdygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ2ZvbycpOyIpOwot
ICAgIHNob3VsZFRocm93KCJvYmplY3RTdG9yZS5pbmRleCgpOyIpOwotICAgIHNob3VsZFRocm93
KCJvYmplY3RTdG9yZS5kZWxldGVJbmRleCgpOyIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQot
Ci0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL29iamVjdFN0
b3JlLXJlcXVpcmVkLWFyZ3VtZW50cy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0
b3JlLWF1dG9pbmNyZW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29i
amVjdHN0b3JlLWF1dG9pbmNyZW1lbnQuaHRtbAppbmRleCA0MDUxZmE0YTA5NzU1MjdjMzZlNzQ0
ZjZhYTI2ZWJiMDAzMzk4NDZlLi5kYmY2ODU5ZTU4MzYzNTZkZDFkYWFjM2JiN2EyYjJiMzA2MWMz
NzgwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9y
ZS1hdXRvaW5jcmVtZW50Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
b2JqZWN0c3RvcmUtYXV0b2luY3JlbWVudC5odG1sCkBAIC00LDIwMCArNCw3IEBACiA8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxz
Y3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIElEQk9iamVjdFN0b3JlIGF1
dG8taW5jcmVtZW50IGZlYXR1cmUuIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92
ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5v
cGVuKCdvYmplY3RzdG9yZS1hdXRvaW5jcmVtZW50JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGVidWcoIm9wZW5T
dWNjZXNzKCk6Iik7Ci0gICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25l
dyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb25TdWNjZXNz
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1m
dW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCi17Ci0gICAgZGVidWcoInNldFZlcnNpb25TdWNj
ZXNzKCk6Iik7Ci0gICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFy
Z2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKLSAgICB0
cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21w
bGV0ZSA9IHNldFZlcnNpb25Db21wbGV0ZWQ7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMo
ZGIpOwotCi0gICAgZGVidWcoImNyZWF0ZU9iamVjdFN0b3JlKCk6Iik7Ci0gICAgc2VsZi5zdG9y
ZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ1N0b3JlV2l0aEtl
eVBhdGgnLCB7a2V5UGF0aDogJ2lkJywgYXV0b0luY3JlbWVudDogdHJ1ZX0pIik7Ci0gICAgZXZh
bEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ1N0b3JlV2l0aEF1dG9JbmNyZW1lbnQnLCB7
YXV0b0luY3JlbWVudDogdHJ1ZX0pIik7Ci0gICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ1BsYWluT2xkU3RvcmUnLCB7YXV0b0luY3JlbWVudDogZmFsc2V9KSIpOwotICAgIGV2
YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdTdG9yZVdpdGhMb25nS2V5UGF0aCcsIHtr
ZXlQYXRoOiAnYS5iLmMuaWQnLCBhdXRvSW5jcmVtZW50OiB0cnVlfSkiKTsKLSAgICB2YXIgc3Rv
cmVOYW1lcyA9IGV2YWxBbmRMb2coInN0b3JlTmFtZXMgPSBkYi5vYmplY3RTdG9yZU5hbWVzIik7
Ci0KLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInN0b3JlLm5hbWUiLCAiU3RvcmVXaXRoS2V5
UGF0aCIpOwotICAgIHNob3VsZEJlKCJzdG9yZS5rZXlQYXRoIiwgIidpZCciKTsKLSAgICBzaG91
bGRCZSgic3RvcmVOYW1lcy5jb250YWlucygnU3RvcmVXaXRoS2V5UGF0aCcpIiwgInRydWUiKTsK
LSAgICBzaG91bGRCZSgic3RvcmVOYW1lcy5jb250YWlucygnU3RvcmVXaXRoQXV0b0luY3JlbWVu
dCcpIiwgInRydWUiKTsKLSAgICBzaG91bGRCZSgic3RvcmVOYW1lcy5jb250YWlucygnUGxhaW5P
bGRTdG9yZScpIiwgInRydWUiKTsKLSAgICBzaG91bGRCZSgic3RvcmVOYW1lcy5sZW5ndGgiLCAi
NCIpOwotCi0gICAgLy8gTGV0IHRoZSBzZXRWZXJzaW9uIHRyYW5zYWN0aW9uIGNvbXBsZXRlLgot
fQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uQ29tcGxldGVkKCkKLXsKLSAgICBkZWJ1Zygic2V0VmVy
c2lvbkNvbXBsZXRlZCgpOiIpOwotCi0gICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5z
ID0gZGIudHJhbnNhY3Rpb24oWydTdG9yZVdpdGhLZXlQYXRoJywgJ1N0b3JlV2l0aEF1dG9JbmNy
ZW1lbnQnLCAnUGxhaW5PbGRTdG9yZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwot
ICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5v
bmNvbXBsZXRlID0gdGVzdExvbmdLZXlQYXRoOwotCi0gICAgc2VsZi5zdG9yZSA9IGV2YWxBbmRM
b2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ1N0b3JlV2l0aEtleVBhdGgnKSIpOwotCi0g
ICAgZGVidWcoIkluc2VydCBpbnRvIG9iamVjdCBzdG9yZSB3aXRoIGF1dG8gaW5jcmVtZW50IGFu
ZCBrZXkgcGF0aCwgd2l0aCBrZXkgaW4gdGhlIG9iamVjdC4iKTsKLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygic3RvcmUuYWRkKHtuYW1lOiAnSmVmZmVyc3NvbicsIG51bWJlcjogJzcwMTAnLCBp
ZDogM30pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRKZWZmZXJzc29uU3VjY2VzczsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVu
Y3Rpb24gYWRkSmVmZmVyc3NvblN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJhZGRKZWZmZXJzc29u
U3VjY2VzcygpOiIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIjMiKTsK
LQotICAgIGRlYnVnKCJJbnNlcnQgaW50byBvYmplY3Qgc3RvcmUgd2l0aCBhdXRvIGluY3JlbWVu
dCBhbmQga2V5IHBhdGgsIHdpdGhvdXQga2V5IGluIHRoZSBvYmplY3QuIik7Ci0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7bmFtZTogJ0xpbmNvbG4nLCBudW1iZXI6ICc3MDEy
J30pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRMaW5jb2xuV2l0aEluamVjdEtleVN1
Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19
Ci0KLWZ1bmN0aW9uIGFkZExpbmNvbG5XaXRoSW5qZWN0S2V5U3VjY2VzcygpCi17Ci0gICAgZGVi
dWcoImFkZExpbmNvbG5XaXRoSW5qZWN0S2V5U3VjY2VzcygpOiIpOwotICAgIHNob3VsZEJlKCJl
dmVudC50YXJnZXQucmVzdWx0IiwgIjQiKTsKLQotICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coInN0
b3JlLmdldCg0KSIpOwotICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBnZXRMaW5jb2xuQWZ0ZXJJbmpl
Y3RlZEtleVN1Y2Nlc3M7Ci0gICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLX0KLQotZnVuY3Rpb24gZ2V0TGluY29sbkFmdGVySW5qZWN0ZWRLZXlTdWNjZXNzKCkK
LXsKLSAgICBkZWJ1ZygiZ2V0TGluY29sbkFmdGVySW5qZWN0ZWRLZXlTdWNjZXNzKCk6Iik7Ci0g
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0Lm5hbWUiLCAiTGlu
Y29sbiIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5u
dW1iZXIiLCAiNzAxMiIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LmlkIiwg
IjQiKTsKLQotICAgIHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVj
dFN0b3JlKCdTdG9yZVdpdGhBdXRvSW5jcmVtZW50JykiKTsKLSAgICBkZWJ1ZygiSW5zZXJ0IGlu
dG8gb2JqZWN0IHN0b3JlIHdpdGgga2V5IGdlbiB1c2luZyBleHBsaWNpdCBrZXkiKTsKLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHtuYW1lOiAnTGluY29sbicsIG51bWJlcjog
JzcwMTInfSwgNSkiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZExpbmNvbG5XaXRoRXhw
bGljaXRLZXlTdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotfQotCi1mdW5jdGlvbiBhZGRMaW5jb2xuV2l0aEV4cGxpY2l0S2V5U3VjY2Vzcygp
Ci17Ci0gICAgZGVidWcoImFkZExpbmNvbG5XaXRoRXhwbGljaXRLZXlTdWNjZXNzKCk6Iik7Ci0g
ICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAiNSIpOwotCi0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInN0b3JlLmdldCg1KSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0
TGluY29sblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGdldExpbmNvbG5TdWNjZXNzKCkKLXsKLSAgICBkZWJ1Zygi
Z2V0TGluY29sblN1Y2Nlc3MoKToiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50
LnRhcmdldC5yZXN1bHQubmFtZSIsICJMaW5jb2xuIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJldmVudC50YXJnZXQucmVzdWx0Lm51bWJlciIsICI3MDEyIik7Ci0KLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygic3RvcmUucHV0KHtuYW1lOiAnQWJyYWhhbScsIG51bWJlcjogJzIxMDcn
fSkiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHB1dEFicmFoYW1TdWNjZXNzOwotICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBw
dXRBYnJhaGFtU3VjY2VzcygpCi17Ci0gICAgZGVidWcoInB1dEFicmFoYW1TdWNjZXNzKCk6Iik7
Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAiNiIpOwotCi0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInN0b3JlLmdldCg2KSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
Z2V0QWJyYWhhbVN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGdldEFicmFoYW1TdWNjZXNzKCkKLXsKLSAgICBkZWJ1
ZygiZ2V0QWJyYWhhbVN1Y2Nlc3MoKToiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2
ZW50LnRhcmdldC5yZXN1bHQubmFtZSIsICJBYnJhaGFtIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0Lm51bWJlciIsICIyMTA3Iik7Ci0KLSAgICBzZWxm
LnN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnUGxhaW5PbGRT
dG9yZScpIik7Ci0gICAgZGVidWcoIlRyeSBhZGRpbmcgd2l0aCBubyBrZXkgdG8gb2JqZWN0IHN0
b3JlIHdpdGhvdXQgYXV0byBpbmNyZW1lbnQuIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlv
bigic3RvcmUuYWRkKHtuYW1lOiAnQWRhbSd9KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRB
X0VSUiIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe25hbWU6ICdBZGFt
J30sIDEpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRBZGFtU3VjY2VzczsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24g
YWRkQWRhbVN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJhZGRBZGFtU3VjY2VzcygpOiIpOwotICAg
IHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIjEiKTsKLX0KLQotZnVuY3Rpb24gdGVz
dExvbmdLZXlQYXRoKCkKLXsKLSAgICBkZWJ1ZygidGVzdExvbmdLZXlQYXRoKCk6Iik7Ci0gICAg
dHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdTdG9yZVdpdGhMb25n
S2V5UGF0aCcsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgdHJhbnMub25hYm9y
dCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBmaW5p
c2hKU1Rlc3Q7Ci0KLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0
U3RvcmUoJ1N0b3JlV2l0aExvbmdLZXlQYXRoJykiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
Zygic3RvcmUuYWRkKHtmb286ICdiYXInfSkiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRk
KHtmb286ICdiYXInLCBhOiB7fX0pIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7Zm9v
OiAnYmFyJywgYToge2I6IHt9fX0pIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7Zm9v
OiAnYmFyJywgYToge2I6IHtjOiB7fX19fSkiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICBjdXJzb3JSZXF1ZXN0ID0gZXZhbEFuZExvZygic3Rv
cmUub3BlbkN1cnNvcigpIik7Ci0gICAgY3Vyc29yUmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci0gICAgZXZhbEFuZExvZygiZXhwZWN0ZWQgPSBudWxsIik7Ci0gICAg
ZXZhbEFuZExvZygiY291bnQgPSAwIik7Ci0gICAgY3Vyc29yUmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbiAoKSB7Ci0gICAgICAgIGN1cnNvciA9IGN1cnNvclJlcXVlc3QucmVzdWx0OwotICAg
ICAgICBpZiAoIWN1cnNvcikgewotICAgICAgICAgICAgc2hvdWxkQmUoImNvdW50IiwgIjQiKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBpZiAoZXhwZWN0ZWQgPT09
IG51bGwpIHsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImV4cGVjdGVkID0gY3Vyc29yLnZhbHVl
LmEuYi5jLmlkICsgMSIpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci52YWx1ZS5mb28iLCAiJ2JhciciKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJz
b3IudmFsdWUuYS5iLmMuaWQiLCAiZXhwZWN0ZWQiKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2co
ImV4cGVjdGVkID0gY3Vyc29yLnZhbHVlLmEuYi5jLmlkICsgMSIpOwotICAgICAgICB9Ci0gICAg
ICAgIGNvdW50Kys7Ci0gICAgICAgIGN1cnNvci5jb250aW51ZSgpOwotICAgIH07Ci19Ci0KLQot
dGVzdCgpOwotCi0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vYmplY3RzdG9y
ZS1hdXRvaW5jcmVtZW50LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY2xl
YXIuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWNsZWFy
Lmh0bWwKaW5kZXggNjZlZTVkY2QyYWUxOGFmYjFkMjZiZjI5ZmMxZWViMDI2NzQxZTVlNS4uNjg4
YTM1OGMzZDlhNTMxYWJmY2EwYzZhYzg0NjA5NGY2MmQ0MTQ1ZCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY2xlYXIuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jbGVhci5odG1sCkBAIC00LDEw
NyArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8
L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidz
IHdlYmtpdElEQk9iamVjdFN0b3JlLmNsZWFyKCkuIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewot
ICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImlu
ZGV4ZWREQi5vcGVuKCdvYmplY3RzdG9yZS1jbGVhcicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBzdGFydFNldFZlcnNpb247Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHN0YXJ0U2V0VmVyc2lvbigpCi17Ci0gICAgZGIg
PSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZGVsZXRlRXhpc3RpbmcoKQotewot
ICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0KLSAgICBkZWxldGVBbGxP
YmplY3RTdG9yZXMoZGIpOwotCi0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOwotCi0gICAgc2VsZi5pbmRleCA9
IGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleE5hbWUnLCAnJykiKTsKLSAgICBz
aG91bGRCZVRydWUoInN0b3JlLmluZGV4TmFtZXMuY29udGFpbnMoJ2luZGV4TmFtZScpIik7Ci0K
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKCd2YWx1ZScsICdrZXknKSIpOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlU2Vjb25kT2JqZWN0U3RvcmVBbmRBZGRWYWx1
ZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQot
ZnVuY3Rpb24gY3JlYXRlU2Vjb25kT2JqZWN0U3RvcmVBbmRBZGRWYWx1ZSgpCi17Ci0gICAgb3Ro
ZXJTdG9yZSA9IGV2YWxBbmRMb2coIm90aGVyU3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgn
b3RoZXJTdG9yZU5hbWUnLCBudWxsKSIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIm90
aGVyU3RvcmUuYWRkKCd2YWx1ZScsICdrZXknKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
Y2xlYXJPYmplY3RTdG9yZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY2xlYXJPYmplY3RTdG9yZSgpCi17Ci0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInN0b3JlLmNsZWFyKCkiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGNsZWFyU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLX0KLQotZnVuY3Rpb24gY2xlYXJTdWNjZXNzKCkKLXsKLSAgICBzaG91bGRCZVVuZGVm
aW5lZCgiZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InN0b3JlLm9wZW5DdXJzb3IoKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbkN1cnNv
clN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci19Ci0KLWZ1bmN0aW9uIG9wZW5DdXJzb3JTdWNjZXNzKCkKLXsKLSAgICBzaG91bGRCZU51bGwo
ImV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXgg
PSBzdG9yZS5pbmRleCgnaW5kZXhOYW1lJykiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
aW5kZXgub3BlbktleUN1cnNvcigpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuS2V5
Q3Vyc29yU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLX0KLQotZnVuY3Rpb24gb3BlbktleUN1cnNvclN1Y2Nlc3MoKQotewotICAgIGRlYnVn
KCJvcGVuS2V5Q3Vyc29yU3VjY2VzcygpOiIpOwotICAgIHNob3VsZEJlTnVsbCgiZXZlbnQudGFy
Z2V0LnJlc3VsdCIpOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBzZXRWZXJzaW9uQ29tcGxldGU7
Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb25Db21wbGV0ZSgpCi17Ci0gICAgdHJhbnNhY3Rpb24g
PSBldmFsQW5kTG9nKCJkYi50cmFuc2FjdGlvbihbJ290aGVyU3RvcmVOYW1lJ10pIik7Ci0gICAg
dHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHZhciBv
dGhlclN0b3JlID0gZXZhbEFuZExvZygib3RoZXJTdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0
b3JlKCdvdGhlclN0b3JlTmFtZScpIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib3Ro
ZXJTdG9yZS5nZXQoJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRTdWNjZXNz
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1m
dW5jdGlvbiBnZXRTdWNjZXNzKCkKLXsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50
LnRhcmdldC5yZXN1bHQiLCAidmFsdWUiKTsKLQotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi10
ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vYmplY3RzdG9yZS1j
bGVhci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWNvdW50Lmh0bWwgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jb3VudC5odG1sCmluZGV4
IDUxZTE0NWRlYTdmYTNjZjRlNDU0ZmQzYTcwNzEwNzRhZGMxMWMzODIuLmRhNDIzZmU0YjY3ZDg1
YTMxOWQxOWUzZDQ3ODc5OTVhMDg3NjViOTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWNvdW50Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY291bnQuaHRtbApAQCAtNCwxNDkgKzQsNyBAQAog
PHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJv
ZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBJREJPYmplY3RT
dG9yZS5jb3VudCgpLiIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQ
cmVmaXhlcygpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbignb2Jq
ZWN0c3RvcmUtY291bnQnKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAg
IGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAg
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IHByZXBhcmVEYXRhYmFzZTsKLSAgICB9OwotfQotCi1mdW5jdGlv
biBwcmVwYXJlRGF0YWJhc2UoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygicHJlcGFy
aW5nIGRhdGFiYXNlIik7Ci0gICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsK
LQotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBzdG9yZSA9IGV2YWxBbmRM
b2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7Ci0K
LSAgICBkZWJ1ZygiYWRkaW5nIDAgLi4uIDk5Iik7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAx
MDA7ICsraSkgewotICAgICAgICByZXF1ZXN0ID0gc3RvcmUuYWRkKGksIGkpOwotICAgICAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB9Ci0gICAgdHJh
bnMub25jb21wbGV0ZSA9IHZlcmlmeUNvdW50OwotfQotCi1mdW5jdGlvbiB2ZXJpZnlDb3VudCgp
Ci17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJ2ZXJpZnlpbmcgY291bnQgd2l0aG91dCBy
YW5nZSIpOwotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbign
c3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKSIpOwotICAgIHNob3VsZEJlVHJ1
ZSgidHJhbnMgIT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRD
YWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gdmVyaWZ5Q291bnRXaXRoUmFuZ2U7Ci0K
LSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3Jl
TmFtZScpIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJzdG9yZSAhPSBudWxsIik7Ci0KLSAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHN0b3JlLmNvdW50KCkiKTsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2YgcmVxdWVzdC5y
ZXN1bHQgPT0gJ251bWJlciciKTsKLSAgICAgICAgIHNob3VsZEJlKCJyZXF1ZXN0LnJlc3VsdCIs
ICIxMDAiKTsKLSAgICAgICAgIC8vIGxldCB0aGUgdHJhbnNhY3Rpb24gY29tcGxldGUKLSAgICB9
OwotfQotCi1mdW5jdGlvbiB2ZXJpZnlDb3VudFdpdGhSYW5nZSgpCi17Ci0gICAgZGVidWcoIiIp
OwotICAgIGRlYnVnKCJ2ZXJpZnlpbmcgY291bnQgd2l0aCByYW5nZSIpOwotICAgIHRyYW5zID0g
ZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNh
Y3Rpb24uUkVBRF9PTkxZKSIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT0gbnVsbCIpOwot
ICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5v
bmNvbXBsZXRlID0gdmVyaWZ5Q291bnRXaXRoS2V5OwotCi0gICAgc3RvcmUgPSBldmFsQW5kTG9n
KCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotICAgIHNob3VsZEJl
VHJ1ZSgic3RvcmUgIT0gbnVsbCIpOwotCi0gICAgdmFyIHRlc3RzID0gWwotICAgICAgICB7IGxv
d2VyOiAwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogOTksIHVwcGVyT3BlbjogZmFsc2UsIGV4
cGVjdGVkOiAxMDAgfSwKLSAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiB0cnVlLCB1cHBl
cjogOTksIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiA5OSB9LAotICAgICAgICB7IGxvd2Vy
OiAwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogOTksIHVwcGVyT3BlbjogdHJ1ZSwgZXhwZWN0
ZWQ6IDk5IH0sCi0gICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogdHJ1ZSwgdXBwZXI6IDk5
LCB1cHBlck9wZW46IHRydWUsIGV4cGVjdGVkOiA5OCB9LAotICAgICAgICB7IGxvd2VyOiAwLCBs
b3dlck9wZW46IGZhbHNlLCB1cHBlcjogMTAwLCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDog
MTAwIH0sCi0gICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiAxMDAs
IHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiAxMDAgfSwKLSAgICAgICAgeyBsb3dlcjogMTAs
IGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiAxMDAsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVk
OiA5MCB9LAotICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogMCwg
dXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDEgfSwKLSAgICAgICAgeyBsb3dlcjogNTAwLCBs
b3dlck9wZW46IGZhbHNlLCB1cHBlcjogNTAwLCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDog
MCB9Ci0gICAgXTsKLQotICAgIGZ1bmN0aW9uIG5leHRUZXN0KCkgewotICAgICAgICBkZWJ1Zygi
Iik7Ci0gICAgICAgIGV2YWxBbmRMb2coInRlc3QgPSAiICsgSlNPTi5zdHJpbmdpZnkodGVzdHMu
c2hpZnQoKSkpOwotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHN0b3Jl
LmNvdW50KElEQktleVJhbmdlLmJvdW5kKHRlc3QubG93ZXIsIHRlc3QudXBwZXIsIHRlc3QubG93
ZXJPcGVuLCB0ZXN0LnVwcGVyT3BlbikpIik7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0
aW9uKCkgewotICAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgidHlwZW9mIHJlcXVlc3QucmVzdWx0
ID09ICdudW1iZXInIik7Ci0gICAgICAgICAgICAgc2hvdWxkQmUoInJlcXVlc3QucmVzdWx0Iiwg
U3RyaW5nKHRlc3QuZXhwZWN0ZWQpKTsKLQotICAgICAgICAgICAgIGlmICh0ZXN0cy5sZW5ndGgp
IHsKLSAgICAgICAgICAgICAgICAgbmV4dFRlc3QoKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgLy8gb3RoZXJ3aXNlIGxldCB0aGUgdHJhbnNhY3Rpb24gY29tcGxldGUKLSAgICAgICAg
fTsKLSAgICB9Ci0KLSAgICBuZXh0VGVzdCgpOwotfQotCi1mdW5jdGlvbiB2ZXJpZnlDb3VudFdp
dGhLZXkoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygidmVyaWZ5aW5nIGNvdW50IHdp
dGgga2V5Iik7Ci0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9u
KCdzdG9yZU5hbWUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7Ci0gICAgc2hvdWxkQmVU
cnVlKCJ0cmFucyAhPSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9y
dENhbGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBmaW5pc2hKU1Rlc3Q7Ci0KLSAgICBz
dG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScp
Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJzdG9yZSAhPSBudWxsIik7Ci0KLSAgICBldmFsQW5kRXhw
ZWN0RXhjZXB0aW9uKCJzdG9yZS5jb3VudChOYU4pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRB
VEFfRVJSIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuY291bnQoe30pIiwg
IklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2Vw
dGlvbigic3RvcmUuY291bnQoL3JlZ2V4LykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9F
UlIiKTsKLQotICAgIHZhciB0ZXN0cyA9IFsKLSAgICAgICAgeyBrZXk6IDAsIGV4cGVjdGVkOiAx
IH0sCi0gICAgICAgIHsga2V5OiAxMDAsIGV4cGVjdGVkOiAwIH0sCi0gICAgICAgIHsga2V5OiBu
dWxsLCBleHBlY3RlZDogMTAwIH0KLSAgICBdOwotCi0gICAgZnVuY3Rpb24gbmV4dFRlc3QoKSB7
Ci0gICAgICAgIGRlYnVnKCIiKTsKLSAgICAgICAgZXZhbEFuZExvZygidGVzdCA9ICIgKyBKU09O
LnN0cmluZ2lmeSh0ZXN0cy5zaGlmdCgpKSk7Ci0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gc3RvcmUuY291bnQodGVzdC5rZXkpIik7Ci0gICAgICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2YgcmVxdWVz
dC5yZXN1bHQgPT0gJ251bWJlciciKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJyZXF1ZXN0LnJl
c3VsdCIsIFN0cmluZyh0ZXN0LmV4cGVjdGVkKSk7Ci0gICAgICAgICAgICAgaWYgKHRlc3RzLmxl
bmd0aCkgewotICAgICAgICAgICAgICAgICBuZXh0VGVzdCgpOwotICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAvLyBvdGhlcndpc2UgbGV0IHRoZSB0cmFuc2FjdGlvbiBjb21wbGV0ZQotICAg
ICAgICB9OwotICAgIH0KLQotICAgIG5leHRUZXN0KCk7Ci19Ci0KLXRlc3QoKTsKLQotPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL29iamVjdHN0b3JlLWNvdW50LmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY3Vyc29yLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jdXJzb3IuaHRtbAppbmRleCBjZDRmMjJkY2QwMjNl
ZTlmYWIzOWRhMGNiMzFiYWQ5OTFiNzgxMTUwLi41OTQwN2M0YTFhNWE4MDMxZmIxYzU5YjcyNjM3
ZDZlOTI1YzZmNDQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9v
YmplY3RzdG9yZS1jdXJzb3IuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9vYmplY3RzdG9yZS1jdXJzb3IuaHRtbApAQCAtNCwyMzEgKzQsNyBAQAogPHNjcmlwdCBzcmM9
InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0
PiAKLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mgb2JqZWN0U3RvcmUub3BlbkN1cnNv
ciArIHRoZSBjdXJzb3IgaXQgcHJvZHVjZXMgaW4gZGVwdGguIik7Ci0gCi0vLyBJbiBvcmRlciBv
ZiBob3cgaXQgc2hvdWxkIGJlIHNvcnRlZCBieSBJbmRleGVkREIuCi1zZWxmLnRlc3REYXRhID0g
WwotICAgIDIuNzE4MjgxODI4NDU5LAotICAgIDMsCi0gICAgMy4xNDE1OTI2NSwKLSAgICAxMCwK
LSAgICAvLyBGSVhNRTogRGF0ZXMuCi0gICAgIkEgYmlnZ2VyIHN0cmluZyIsCi0gICAgIlRoZSBi
aWdnZXN0IiwKLSAgICAiYSBsb3cgc3RyaW5nIgotXTsKLSAKLWZ1bmN0aW9uIG9wZW5EYXRhYmFz
ZSgpCi17Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdvYmplY3Rz
dG9yZS1jdXJzb3InKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvbjsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLSAKLWZ1bmN0
aW9uIHNldFZlcnNpb24oKQotewotICAgIHNlbGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJz
aW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlz
dGluZzsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0K
LQotZnVuY3Rpb24gZGVsZXRlRXhpc3RpbmcoKQotewotICAgIHNlbGYudHJhbnMgPSBldmFsQW5k
TG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRy
YW5zICE9PSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxi
YWNrOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIHNlbGYub2JqZWN0
U3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc29tZU9iamVjdFN0b3Jl
JykiKTsKLSAgICBzZWxmLm5leHRUb0FkZCA9IDA7Ci0gICAgYWRkRGF0YSgpOwotfQotCi1mdW5j
dGlvbiBhZGREYXRhKCkKLXsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUu
YWRkKCcnLCB0ZXN0RGF0YVtuZXh0VG9BZGRdKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
KytzZWxmLm5leHRUb0FkZCA8IHRlc3REYXRhLmxlbmd0aCA/IGFkZERhdGEgOiBzY2hlZHVsZVRl
c3RzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQot
Ci1mdW5jdGlvbiBzY2hlZHVsZVRlc3RzKCkKLXsKLSAgICBkZWJ1ZygiU2NoZWR1bGluZyB0ZXN0
cy4uLiIpOwotICAgIHNlbGYuc2NoZWR1bGVkVGVzdHMgPSBbXTsKLSAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHRlc3REYXRhLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIC8qIGxlZnQgYm91bmQsIGlz
IG9wZW4sIHJpZ2h0IGJvdW5kLCBpcyBvcGVuLCBhc2NlbmRpbmcgKi8KLSAgICAgICAgc2NoZWR1
bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwgbnVsbCwgbnVsbCwgdHJ1ZV0pOwotICAgICAgICBz
Y2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCBmYWxzZSwgbnVsbCwgbnVsbCwgdHJ1ZV0pOwotICAg
ICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtudWxsLCBudWxsLCBpLCB0cnVlLCB0cnVlXSk7
Ci0gICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW251bGwsIG51bGwsIGksIGZhbHNlLCB0
cnVlXSk7Ci0gICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIHRydWUsIG51bGwsIG51
bGwsIGZhbHNlXSk7Ci0gICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBu
dWxsLCBudWxsLCBmYWxzZV0pOwotICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtudWxs
LCBudWxsLCBpLCB0cnVlLCBmYWxzZV0pOwotICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0
KFtudWxsLCBudWxsLCBpLCBmYWxzZSwgZmFsc2VdKTsKLSAgICAgICAgZm9yICh2YXIgaiA9IDY7
IGogPCB0ZXN0RGF0YS5sZW5ndGg7ICsraikgewotICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMu
dW5zaGlmdChbaSwgdHJ1ZSwgaiwgdHJ1ZSwgdHJ1ZV0pOwotICAgICAgICAgICAgc2NoZWR1bGVk
VGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwgaiwgZmFsc2UsIHRydWVdKTsKLSAgICAgICAgICAgIHNj
aGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBqLCB0cnVlLCB0cnVlXSk7Ci0gICAgICAg
ICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCBmYWxzZSwgaiwgZmFsc2UsIHRydWVdKTsK
LSAgICAgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIHRydWUsIGosIHRydWUsIGZh
bHNlXSk7Ci0gICAgICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCB0cnVlLCBqLCBm
YWxzZSwgZmFsc2VdKTsKLSAgICAgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZh
bHNlLCBqLCB0cnVlLCBmYWxzZV0pOwotICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlm
dChbaSwgZmFsc2UsIGosIGZhbHNlLCBmYWxzZV0pOwotICAgICAgICB9Ci0gICAgfQotIAotICAg
IGRlYnVnKCJSdW5uaW5nIHRlc3RzLi4uIik7Ci0gICAgcnVuTmV4dFRlc3QoKTsKLX0KLSAKLWZ1
bmN0aW9uIHJ1bk5leHRUZXN0KCkKLXsKLSAgICBpZiAoIXNjaGVkdWxlZFRlc3RzLmxlbmd0aCkg
ewotICAgICAgICB0ZXN0TnVsbEtleVJhbmdlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
Ci0gICAgdmFyIHRlc3QgPSBzY2hlZHVsZWRUZXN0cy5wb3AoKTsKLSAgICBzZWxmLmxvd2VyID0g
dGVzdFswXTsKLSAgICBzZWxmLmxvd2VySXNPcGVuID0gdGVzdFsxXTsKLSAgICBzZWxmLnVwcGVy
ID0gdGVzdFsyXTsKLSAgICBzZWxmLnVwcGVySXNPcGVuID0gdGVzdFszXTsKLSAgICBzZWxmLmFz
Y2VuZGluZyA9IHRlc3RbNF07Ci0KLSAgICBzdHIgPSAiTmV4dCB0ZXN0OiAiOwotICAgIGlmIChs
b3dlciAhPT0gbnVsbCkgewotICAgICAgICBzdHIgKz0gImxvd2VyICI7Ci0gICAgICAgIGlmIChs
b3dlcklzT3BlbikKLSAgICAgICAgICAgIHN0ciArPSAib3BlbiAiOwotICAgICAgICBzdHIgKz0g
ImJvdW5kIGlzICIgKyBsb3dlciArICI7ICI7Ci0gICAgfQotICAgIGlmICh1cHBlciAhPT0gbnVs
bCkgewotICAgICAgICBzdHIgKz0gInVwcGVyICI7Ci0gICAgICAgIGlmICh1cHBlcklzT3BlbikK
LSAgICAgICAgICAgIHN0ciArPSAib3BlbiAiOwotICAgICAgICBzdHIgKz0gImJvdW5kIGlzICIg
KyB1cHBlciArICI7ICI7Ci0gICAgfQotICAgIGlmIChhc2NlbmRpbmcpCi0gICAgICAgIHN0ciAr
PSAic29ydGVkIGFzY2VuZGluZy4iOwotICAgIGVsc2UKLSAgICAgICAgc3RyICs9ICJzb3J0ZWQg
ZGVzY2VuZGluZy4iOwotCi0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKHN0cik7Ci0gCi0gICAg
aWYgKGFzY2VuZGluZykgewotICAgICAgICBpZiAobG93ZXIgIT09IG51bGwpIHsKLSAgICAgICAg
ICAgIGlmICghbG93ZXJJc09wZW4pCi0gICAgICAgICAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4
ID0gbG93ZXI7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgc2VsZi5leHBlY3Rl
ZEluZGV4ID0gbG93ZXIrMTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBzZWxmLmV4cGVj
dGVkSW5kZXggPSAwOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICh1cHBlciAhPT0gbnVsbCkg
ewotICAgICAgICAgICAgaWYgKCF1cHBlcklzT3BlbikKLSAgICAgICAgICAgICAgICBzZWxmLmV4
cGVjdGVkSW5kZXggPSB1cHBlcjsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBz
ZWxmLmV4cGVjdGVkSW5kZXggPSB1cHBlci0xOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
IHNlbGYuZXhwZWN0ZWRJbmRleCA9IHRlc3REYXRhLmxlbmd0aC0xOwotICAgIH0KLSAgICB0ZXN0
V2l0aGluQm91bmRzKCk7Ci0gCi0gICAgaWYgKHRlc3REYXRhW2xvd2VyXSA9PT0gdGVzdERhdGFb
dXBwZXJdICYmIChsb3dlcklzT3BlbiB8fCB1cHBlcklzT3BlbikpIHsKLSAgICAgICAgZGVidWco
IlNraXBwaW5nIGlsbGVnYWwga2V5IHJhbmdlLiIpOwotICAgICAgICBydW5OZXh0VGVzdCgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdmFyIGtleVJhbmdlOwotICAgIGlmIChsb3dl
ciAhPT0gbnVsbCAmJiB1cHBlciAhPT0gbnVsbCkKLSAgICAgICAga2V5UmFuZ2UgPSBJREJLZXlS
YW5nZS5ib3VuZCh0ZXN0RGF0YVtsb3dlcl0sIHRlc3REYXRhW3VwcGVyXSwgbG93ZXJJc09wZW4s
IHVwcGVySXNPcGVuKTsKLSAgICBlbHNlIGlmIChsb3dlciAhPT0gbnVsbCkKLSAgICAgICAga2V5
UmFuZ2UgPSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKHRlc3REYXRhW2xvd2VyXSwgbG93ZXJJc09w
ZW4pOwotICAgIGVsc2UKLSAgICAgICAga2V5UmFuZ2UgPSBJREJLZXlSYW5nZS51cHBlckJvdW5k
KHRlc3REYXRhW3VwcGVyXSwgdXBwZXJJc09wZW4pOwotIAotICAgIHZhciByZXF1ZXN0ID0gb2Jq
ZWN0U3RvcmUub3BlbkN1cnNvcihrZXlSYW5nZSwgYXNjZW5kaW5nID8gSURCQ3Vyc29yLk5FWFQg
OiBJREJDdXJzb3IuUFJFVik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3JJdGVyYXRp
b247Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0K
LWZ1bmN0aW9uIHRlc3RXaXRoaW5Cb3VuZHMoKQotewotICAgIGlmIChleHBlY3RlZEluZGV4IDwg
MCB8fCB0ZXN0RGF0YS5sZW5ndGggPD0gZXhwZWN0ZWRJbmRleCkKLSAgICAgICAgc2VsZi5leHBl
Y3RlZEluZGV4ID0gbnVsbDsKLSAgICBpZiAobG93ZXIgIT09IG51bGwgJiYgZXhwZWN0ZWRJbmRl
eCA8IGxvd2VyKQotICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSBudWxsOwotICAgIGlmICh1
cHBlciAhPT0gbnVsbCAmJiB1cHBlciA8IGV4cGVjdGVkSW5kZXgpCi0gICAgICAgIHNlbGYuZXhw
ZWN0ZWRJbmRleCA9IG51bGw7Ci0gICAgaWYgKGxvd2VyICE9PSBudWxsICYmIGxvd2VySXNPcGVu
ICYmIGV4cGVjdGVkSW5kZXggPD0gbG93ZXIpCi0gICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9
IG51bGw7Ci0gICAgaWYgKHVwcGVyICE9PSBudWxsICYmIHVwcGVySXNPcGVuICYmIHVwcGVyIDw9
IGV4cGVjdGVkSW5kZXgpCi0gICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IG51bGw7Ci19Ci0g
Ci1mdW5jdGlvbiBjdXJzb3JJdGVyYXRpb24oKQotewotICAgIGlmIChleHBlY3RlZEluZGV4ID09
PSBudWxsKSB7Ci0gICAgICAgIHNob3VsZEJlTnVsbCgiZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwot
ICAgICAgICBydW5OZXh0VGVzdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChl
dmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoImV2ZW50
LnRhcmdldC5yZXN1bHQgc2hvdWxkIG5vdCBiZSBudWxsLiIpOwotICAgICAgICBydW5OZXh0VGVz
dCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotIAotICAgIHNob3VsZEJlKCJldmVudC50YXJn
ZXQucmVzdWx0LmtleSIsICJ0ZXN0RGF0YVsiICsgZXhwZWN0ZWRJbmRleCArICJdIik7Ci0gICAg
c2VsZi5leHBlY3RlZEluZGV4ID0gYXNjZW5kaW5nID8gZXhwZWN0ZWRJbmRleCsxIDogZXhwZWN0
ZWRJbmRleC0xOwotICAgIHRlc3RXaXRoaW5Cb3VuZHMoKTsKLQotICAgIGV2ZW50LnRhcmdldC5y
ZXN1bHQuY29udGludWUoKTsKLX0KLSAKLXNlbGYubnVsbEtleVJhbmdlU3RlcCA9IDA7Ci1mdW5j
dGlvbiB0ZXN0TnVsbEtleVJhbmdlKCkKLXsKLSAgICBzZWxmLmxvd2VyID0gMDsKLSAgICBzZWxm
Lmxvd2VySXNPcGVuID0gZmFsc2U7Ci0gICAgc2VsZi51cHBlciA9IHRlc3REYXRhLmxlbmd0aC0x
OwotICAgIHNlbGYudXBwZXJJc09wZW4gPSBmYWxzZTsKLQotICAgIHN0ciA9ICJOZXh0IHRlc3Q6
IG51bGwga2V5IHBhdGggIjsKLSAgICBpZiAoc2VsZi5udWxsS2V5UmFuZ2VTdGVwID09IDApIHsK
LSAgICAgICAgc3RyICs9ICJzb3J0ZWQgYXNjZW5kaW5nLiI7Ci0gICAgICAgIHNlbGYuYXNjZW5k
aW5nID0gdHJ1ZTsKLSAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gbG93ZXI7Ci0gICAgICAg
IHNlbGYubnVsbEtleVJhbmdlU3RlcCA9IDE7Ci0gICAgfSBlbHNlIGlmIChzZWxmLm51bGxLZXlS
YW5nZVN0ZXAgPT0gMSkgewotICAgICAgICBzdHIgKz0gInNvcnRlZCBkZXNjZW5kaW5nLiI7Ci0g
ICAgICAgIHNlbGYuYXNjZW5kaW5nID0gZmFsc2U7Ci0gICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRl
eCA9IHVwcGVyOwotICAgICAgICBzZWxmLm51bGxLZXlSYW5nZVN0ZXAgPSAyOwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgZGVidWcoIiIpOwotICAgIGRlYnVnKHN0cik7Ci0gCi0gICAgdmFyIHJlcXVlc3QgPSBvYmpl
Y3RTdG9yZS5vcGVuQ3Vyc29yKG51bGwsIGFzY2VuZGluZyA/IElEQkN1cnNvci5ORVhUIDogSURC
Q3Vyc29yLlBSRVYpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29ySXRlcmF0aW9uOwot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotIAotcmVt
b3ZlVmVuZG9yUHJlZml4ZXMoKTsKLW9wZW5EYXRhYmFzZSgpOyAvLyBUaGUgZmlyc3Qgc3RlcC4K
LSAKLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vYmplY3RzdG9yZS1jdXJzb3Iu
anMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1yZW1vdmVvYmplY3RzdG9yZS5o
dG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtcmVtb3Zlb2Jq
ZWN0c3RvcmUuaHRtbAppbmRleCA1MTE0NjUxMjYyZDRkZjllZGMyMjg1ZTcyNTgxOTBmN2YzMTlk
N2MwLi40NzMxMTE0MDBiMDhmMGJlMzlhNWRkMzJmMmIyODMzYTI5MzRmZjAxIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1yZW1vdmVvYmplY3Rz
dG9yZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3Jl
LXJlbW92ZW9iamVjdHN0b3JlLmh0bWwKQEAgLTQsMTAyICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4K
LQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mgd2Via2l0SURCT2JqZWN0U3RvcmUuZGVs
ZXRlT2JqZWN0U3RvcmUoKS4iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVu
ZG9yUHJlZml4ZXMoKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4o
J29iamVjdHN0b3JlLXJlbW92ZW9iamVjdHN0b3JlJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IHN0YXJ0U2V0VmVyc2lvbjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc3RhcnRTZXRWZXJzaW9uKCkKLXsKLSAgICBkYiA9
IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4aXN0aW5nOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBkZWxldGVFeGlzdGluZygpCi17Ci0g
ICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIp
OwotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKLQotICAgIGRlbGV0ZUFsbE9i
amVjdFN0b3JlcyhkYik7Ci0KLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7Ci0KLSAgICBzZWxmLmluZGV4ID0g
ZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZScsICcnKSIpOwotICAgIHNo
b3VsZEJlVHJ1ZSgic3RvcmUuaW5kZXhOYW1lcy5jb250YWlucygnaW5kZXhOYW1lJykiKTsKLQot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoJ3ZhbHVlJywgJ2tleScpIik7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgdHJhbnMu
b25jb21wbGV0ZSA9IGdldFZhbHVlOwotfQotCi1mdW5jdGlvbiBnZXRWYWx1ZSgpCi17Ci0gICAg
dHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddKSIp
OwotICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAg
ICB2YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3Jl
KCdzdG9yZU5hbWUnKSIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmdldCgn
a2V5JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEluZGV4OwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBhZGRJbmRl
eCgpCi17Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0Iiwg
InZhbHVlIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3
IHZlcnNpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlT2JqZWN0U3RvcmU7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1
bmN0aW9uIGRlbGV0ZU9iamVjdFN0b3JlKCkKLXsKLSAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExv
ZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFu
cyAhPT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFj
azsKLQotICAgIGV2YWxBbmRMb2coImRiLmRlbGV0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIp
OwotICAgIGNyZWF0ZU9iamVjdFN0b3JlQWdhaW4oKTsKLX0KLQotZnVuY3Rpb24gY3JlYXRlT2Jq
ZWN0U3RvcmVBZ2FpbigpCi17Ci0gICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUo
J3N0b3JlTmFtZScsIG51bGwpIik7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IGdldFZhbHVlQWdh
aW47Ci19Ci0KLWZ1bmN0aW9uIGdldFZhbHVlQWdhaW4oKQotewotICAgIHRyYW5zYWN0aW9uID0g
ZXZhbEFuZExvZygiZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSkiKTsKLSAgICB0cmFuc2Fj
dGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgdmFyIHN0b3JlID0g
ZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJyki
KTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5nZXQoJ2tleScpIik7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSB2ZXJpZnlOb3RGb3VuZDsKLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gdmVyaWZ5Tm90Rm91bmQo
KQotewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgInVuZGVmaW5lZCIpOwot
ICAgIHNob3VsZEJlRmFsc2UoImV2ZW50LnRhcmdldC5zb3VyY2UuaW5kZXhOYW1lcy5jb250YWlu
cygnaW5kZXhOYW1lJykiKTsKLQotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi10ZXN0KCk7Ci0K
LTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vYmplY3RzdG9yZS1yZW1vdmVvYmpl
Y3RzdG9yZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29kZC1zdHJpbmdzLmh0bWwgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vZGQtc3RyaW5ncy5odG1sCmluZGV4IGE4YTA3MmEz
NDczMTA1MTA5OWUwN2RmYWEwZGVkMDg4ZjAzYjBkNjQuLjY1YTM2M2JkMGQ5ZjA5OTQ0OTQyYjA1
OWI3Yjc2MTVlNDBkYTdmYTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL29kZC1zdHJpbmdzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
b2RkLXN0cmluZ3MuaHRtbApAQCAtMSwxMTEgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgogPGh0
bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9z
Y3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IElu
ZGV4ZWREQiBvZGQgdmFsdWUgZGF0YXR5cGVzIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAg
IHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICB0ZXN0RGF0YSA9IFt7IGRlc2NyaXB0aW9u
OiAnbnVsbCcsICAgICAgICAgICAgICAgbmFtZTogJ1x1MDAwMCcgfSwKLSAgICAgICAgICAgICAg
ICB7IGRlc2NyaXB0aW9uOiAnZmFpaHUnLCAgICAgICAgICAgICAgbmFtZTogJ1x1ZDgwMFx1ZGY0
NicgfSwKLSAgICAgICAgICAgICAgICB7IGRlc2NyaXB0aW9uOiAndW5wYWlyZWQgc3Vycm9nYXRl
JywgbmFtZTogJ1x1ZDgwMCcgfSwKLSAgICAgICAgICAgICAgICB7IGRlc2NyaXB0aW9uOiAnZmZm
ZScsICAgICAgICAgICAgICAgbmFtZTogJ1x1ZmZmZScgfSwKLSAgICAgICAgICAgICAgICB7IGRl
c2NyaXB0aW9uOiAnZmZmZicsICAgICAgICAgICAgICAgbmFtZTogJ1x1ZmZmZicgfSwKLSAgICAg
ICAgICAgICAgICB7IGRlc2NyaXB0aW9uOiAnbGluZSBzZXBhcmF0b3InLCAgICAgbmFtZTogJ1x1
MjAyOCcgfQotICAgIF07Ci0gICAgbmV4dFRvT3BlbiA9IDA7Ci0gICAgb3Blbk5leHREYXRhYmFz
ZSgpOwotfQotCi1mdW5jdGlvbiBvcGVuTmV4dERhdGFiYXNlKCkKLXsKLSAgICBkZWJ1Zygib3Bl
bmluZyBhIGRhdGFiYXNlIG5hbWVkICIgKyB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5kZXNjcmlwdGlv
bik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKHRlc3REYXRhW25l
eHRUb09wZW5dLm5hbWUsIHRlc3REYXRhW25leHRUb09wZW5dLmRlc2NyaXB0aW9uKSIpOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsK
LSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRBS2V5OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBhZGRBS2V5KCkKLXsKLSAgICBkZWxl
dGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJv
YmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKHRlc3REYXRhW25leHRUb09wZW5dLm5h
bWUpOyIpOwotICAgIGtleSA9IGV2YWxBbmRMb2coImtleSA9IHRlc3REYXRhW25leHRUb09wZW5d
Lm5hbWUiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3Jl
LmFkZChrZXksIGtleSk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbG9zZURhdGFiYXNl
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1m
dW5jdGlvbiBjbG9zZURhdGFiYXNlKCkKLXsKLSAgICBldmFsQW5kTG9nKCJkYi5jbG9zZSgpIik7
Ci0gICAgZGVidWcoIiIpOwotICAgIGlmICgrK25leHRUb09wZW4gPCB0ZXN0RGF0YS5sZW5ndGgp
IHsKLSAgICAgICAgb3Blbk5leHREYXRhYmFzZSgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIG5l
eHRUb09wZW4gPSAwOwotICAgICAgICB2ZXJpZnlOZXh0RGF0YWJhc2UoKTsKLSAgICB9Ci19Ci0K
LWZ1bmN0aW9uIHZlcmlmeU5leHREYXRhYmFzZSgpCi17Ci0gICAgZGVidWcoInJlb3BlbmluZyBh
IGRhdGFiYXNlIG5hbWVkICIgKyB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5kZXNjcmlwdGlvbik7Ci0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKHRlc3REYXRhW25leHRUb09w
ZW5dLm5hbWUsIHRlc3REYXRhW25leHRUb09wZW5dLmRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gb3BlblN1Y2Nlc3MyOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzczIoKQotewotICAg
IGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGdldEFLZXk7Ci19Ci0KLWZ1bmN0aW9uIGdldEFLZXkoKQotewotICAgIHRyYW5zID0g
ZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgb2JqZWN0U3Rv
cmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKHRlc3REYXRh
W25leHRUb09wZW5dLm5hbWUpOyIpOwotICAgIGtleSA9IGV2YWxBbmRMb2coImtleSA9IHRlc3RE
YXRhW25leHRUb09wZW5dLm5hbWUiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5DdXJz
b3JTdWNjZXNzOwotfQotCi1mdW5jdGlvbiBvcGVuQ3Vyc29yU3VjY2VzcygpCi17Ci0gICAgY3Vy
c29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICBz
aG91bGRCZSgiY3Vyc29yLmtleSIsICJ0ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1lIik7Ci0gICAg
c2hvdWxkQmUoImN1cnNvci52YWx1ZSIsICJ0ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1lIik7Ci0g
ICAgaWYgKCsrbmV4dFRvT3BlbiA8IHRlc3REYXRhLmxlbmd0aCkgewotICAgICAgICBkZWJ1Zygi
Iik7Ci0gICAgICAgIHZlcmlmeU5leHREYXRhYmFzZSgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IGZpbmlzaEpTVGVzdCgpOwotICAgIH0KLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9vZGQtc3RyaW5ncy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwv
Ym9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L29wZW4tY2xvc2UtdmVyc2lvbi5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
b3Blbi1jbG9zZS12ZXJzaW9uLmh0bWwKaW5kZXggNmMxNGZlMTNiZmQ3MjA1NjNlMzhjNjljMDEy
OTk0NjVlMDIwOTYwOS4uMjlkM2FmM2NlNzNhZjk1N2IzMzY1NjY5ODUxNDQ4OWRmMWIyOWUzYSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi1jbG9zZS12ZXJz
aW9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi1jbG9zZS12
ZXJzaW9uLmh0bWwKQEAgLTQsMjg5ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hh
cmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRp
b24oIlRlc3QgaW50ZXJsZWF2ZWQgb3Blbi9jbG9zZS9zZXRWZXJzaW9uIGNhbGxzIGluIHZhcmlv
dXMgcGVybXV0YXRpb25zIik7Ci0KLWZ1bmN0aW9uIENvbm5lY3Rpb24oaWQpIHsKLSAgICBpZCA9
IFN0cmluZyhpZCk7Ci0gICAgdmFyIHRoYXQgPSB0aGlzOwotICAgIHRoaXMub3BlbiA9IGZ1bmN0
aW9uKG9wdHMpIHsKLSAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQg
KyAiLm9wZW4nIikpOwotICAgICAgICB2YXIgcmVxID0gaW5kZXhlZERCLm9wZW4oc2VsZi5kYm5h
bWUpOwotICAgICAgICByZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAg
ICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAgICAgIHRoYXQuaGFu
ZGxlID0gZS50YXJnZXQucmVzdWx0OwotICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxB
bmRMb2coIiciICsgaWQgKyAiLm9wZW4ub25zdWNjZXNzJyIpKTsKLSAgICAgICAgICAgIHRoYXQu
aGFuZGxlLm9udmVyc2lvbmNoYW5nZSA9IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICBz
ZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIub252ZXJzaW9uY2hhbmdlJyIp
KTsKLSAgICAgICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9udmVyc2lvbikgeyBvcHRzLm9u
dmVyc2lvbi5jYWxsKHRoYXQpOyB9Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgaWYgKG9w
dHMgJiYgb3B0cy5vbnN1Y2Nlc3MpIHsgb3B0cy5vbnN1Y2Nlc3MuY2FsbCh0aGF0KTsgfQotICAg
ICAgICB9OwotICAgIH07Ci0KLSAgICB0aGlzLmNsb3NlID0gZnVuY3Rpb24oKSB7Ci0gICAgICAg
IHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5jbG9zZSciKSk7Ci0gICAg
ICAgIHRoaXMuaGFuZGxlLmNsb3NlKCk7Ci0gICAgfTsKLQotICAgIHRoaXMuc2V0VmVyc2lvbiA9
IGZ1bmN0aW9uKG9wdHMpIHsKLSAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIici
ICsgaWQgKyAiLnNldFZlcnNpb24nIikpOwotICAgICAgICB2YXIgcmVxID0gdGhpcy5oYW5kbGUu
c2V0VmVyc2lvbihTdHJpbmcoc2VsZi52ZXIrKykpOwotICAgICAgICByZXEub25hYm9ydCA9IGZ1
bmN0aW9uIChlKSB7Ci0gICAgICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIg
KyBpZCArICIuc2V0VmVyc2lvbi5vbmFib3J0JyIpKTsKLSAgICAgICAgICAgIGlmIChvcHRzICYm
IG9wdHMub25hYm9ydCkgeyBvcHRzLm9uYWJvcnQuY2FsbCh0aGF0KTsgfQotICAgICAgICB9Owot
ICAgICAgICByZXEub25ibG9ja2VkID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAgICAgIHNlbGYu
c3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5zZXRWZXJzaW9uLm9uYmxvY2tlZCci
KSk7Ci0gICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9uYmxvY2tlZCkgeyBvcHRzLm9uYmxv
Y2tlZC5jYWxsKHRoYXQpOyB9Ci0gICAgICAgIH07Ci0gICAgICAgIHJlcS5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbiAoZSkgewotICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIici
ICsgaWQgKyAiLnNldFZlcnNpb24ub25zdWNjZXNzJyIpKTsKLSAgICAgICAgICAgIGlmICh0aGF0
LmhhbmRsZS5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCJ0ZXN0LXN0b3JlIiArIHNlbGYudmVy
KSkgewotICAgICAgICAgICAgICAgIHRoYXQuaGFuZGxlLmRlbGV0ZU9iamVjdFN0b3JlKCJ0ZXN0
LXN0b3JlIiArIHNlbGYudmVyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZhciBzdG9y
ZSA9IHRoYXQuaGFuZGxlLmNyZWF0ZU9iamVjdFN0b3JlKCJ0ZXN0LXN0b3JlIiArIHNlbGYudmVy
KTsKLSAgICAgICAgICAgIHZhciBjb3VudCA9IDA7Ci0gICAgICAgICAgICBkb19hc3luY19wdXRz
KCk7IC8vIEtlZXAgdGhpcyB0cmFuc2FjdGlvbiBydW5uaW5nIGZvciBhIHdoaWxlCi0gICAgICAg
ICAgICBmdW5jdGlvbiBkb19hc3luY19wdXRzKCkgewotICAgICAgICAgICAgICAgIHZhciByZXEg
PSBzdG9yZS5wdXQoY291bnQsIGNvdW50KTsKLSAgICAgICAgICAgICAgICByZXEub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICAgICAgICAgIHJlcS5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbiAoZSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoKytjb3VudCA8IDEwKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBkb19hc3luY19wdXRzKCk7Ci0gICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZXBzLnB1c2go
ZXZhbEFuZExvZygiJyIgKyBpZCArICIuc2V0VmVyc2lvbi50cmFuc2FjdGlvbi1jb21wbGV0ZSci
KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9uc3VjY2Vzcykg
eyBvcHRzLm9uc3VjY2Vzcy5jYWxsKHRoYXQpOyB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgfQotICAgICAgICB9OwotICAgICAgICByZXEu
b25lcnJvciA9IGZ1bmN0aW9uIChlKSB7Ci0gICAgICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZh
bEFuZExvZygiJyIgKyBpZCArICIuc2V0VmVyc2lvbi5vbmVycm9yJyIpKTsKLSAgICAgICAgICAg
IGlmIChvcHRzICYmIG9wdHMub25lcnJvcikgeyBvcHRzLm9uZXJyb3IuY2FsbCh0aGF0KTsgfQot
ICAgICAgICB9OwotICAgIH07Ci19Ci0KLS8vIHJ1biBhIHNlcmllcyBvZiBzdGVwcyB0aGF0IHRh
a2UgYSBjb250aW51YXRpb24gZnVuY3Rpb24KLWZ1bmN0aW9uIHJ1blN0ZXBzKGNvbW1hbmRzKSB7
Ci0gICAgaWYgKGNvbW1hbmRzLmxlbmd0aCkgewotICAgICAgICB2YXIgY29tbWFuZCA9IGNvbW1h
bmRzLnNoaWZ0KCk7Ci0gICAgICAgIGNvbW1hbmQoZnVuY3Rpb24oKSB7IHJ1blN0ZXBzKGNvbW1h
bmRzKTsgfSk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0KCkgewotICAgIHJlbW92ZVZlbmRv
clByZWZpeGVzKCk7Ci0gICAgdGVzdDEoKTsKLX0KLQotZnVuY3Rpb24gdGVzdDEoKSB7Ci0gICAg
ZGVidWcoIiIpOwotICAgIGRlYnVnKCJURVNUOiBzZXRWZXJzaW9uIGJsb2NrZWQgb24gb3BlbiBo
YW5kbGVzIik7Ci0gICAgZXZhbEFuZExvZygic2VsZi5kYm5hbWUgPSAndGVzdDEnOyBzZWxmLnZl
ciA9IDE7IHNlbGYuc3RlcHMgPSBbXSIpOwotICAgIHZhciBoMSA9IG5ldyBDb25uZWN0aW9uKCJo
MSIpOwotICAgIHZhciBoMiA9IG5ldyBDb25uZWN0aW9uKCJoMiIpOwotICAgIHJ1blN0ZXBzKFtm
dW5jdGlvbihkb05leHQpIHsgaDEub3Blbih7b25zdWNjZXNzOiBkb05leHR9KTsgfSwKLSAgICAg
ICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBoMi5vcGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb252ZXJzaW9uOiBmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKCIgICAgaDIgY2xvc2luZywgYnV0
IG5vdCBpbW1lZGlhdGVseSIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgaDIuY2xvc2UoKTsgfSwgMCk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH19KTsgfSwKLSAgICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBo
MS5zZXRWZXJzaW9uKHtvbnN1Y2Nlc3M6IGZpbmlzaFRlc3R9KTsgfSwKLSAgICAgICAgIF0pOwot
ICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
Zygic2VsZi5zdGVwcy50b1N0cmluZygpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFsiaDEub3BlbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLm9wZW4ub25z
dWNjZXNzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIub3BlbiIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLm9wZW4ub25zdWNjZXNzIiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbiIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImgyLm9udmVyc2lvbmNoYW5nZSIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImgxLnNldFZlcnNpb24ub25ibG9ja2VkIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiaDIuY2xvc2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJoMS5zZXRWZXJzaW9uLm9uc3VjY2VzcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImgxLnNldFZlcnNpb24udHJhbnNhY3Rpb24tY29tcGxldGUiCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXS50b1N0cmluZygpKTsKLSAgICAgICAgdGVzdDIoKTsKLSAgICB9Ci19
Ci0KLWZ1bmN0aW9uIHRlc3QyKCkgewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiVEVTVDog
c2V0VmVyc2lvbiBub3QgYmxvY2tlZCBpZiBoYW5kbGUgY2xvc2VkIGltbWVkaWF0ZWx5Iik7Ci0g
ICAgZXZhbEFuZExvZygic2VsZi5kYm5hbWUgPSAndGVzdDInOyBzZWxmLnZlciA9IDE7IHNlbGYu
c3RlcHMgPSBbXSIpOwotICAgIHZhciBoMSA9IG5ldyBDb25uZWN0aW9uKCJoMSIpOwotICAgIHZh
ciBoMiA9IG5ldyBDb25uZWN0aW9uKCJoMiIpOwotICAgIHJ1blN0ZXBzKFtmdW5jdGlvbihkb05l
eHQpIHsgaDEub3Blbih7b25zdWNjZXNzOiBkb05leHR9KTsgfSwKLSAgICAgICAgICAgICAgZnVu
Y3Rpb24oZG9OZXh0KSB7IGgyLm9wZW4oe29uc3VjY2VzczogZG9OZXh0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb252ZXJzaW9uOiBmdW5jdGlvbigpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiICAgIGgy
IGNsb3NpbmcgaW1tZWRpYXRlbHkiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBoMi5jbG9zZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfX0pOyB9LAotICAgICAgICAgICAgICBmdW5jdGlvbihkb05leHQpIHsgaDEu
c2V0VmVyc2lvbih7b25zdWNjZXNzOiBkb05leHR9KTsgfSwKLSAgICAgICAgICAgICAgZmluaXNo
VGVzdAotICAgICAgICAgICAgICBdKTsKLQotICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7Ci0g
ICAgICAgIGRlYnVnKCJOT1RFOiBXaWxsIEZBSUwgd2l0aCBleHRyYSBib2d1cyBoMS5zZXRWZXJz
aW9uLm9uYmxvY2tlZCBzdGVwOyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzExMzAiKTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzZWxmLnN0ZXBzLnRv
U3RyaW5nKCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJoMS5vcGVuIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEub3Blbi5vbnN1Y2Nlc3MiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5vcGVuIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiaDIub3Blbi5vbnN1Y2Nlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJoMS5zZXRWZXJzaW9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
aDIub252ZXJzaW9uY2hhbmdlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIu
Y2xvc2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLm9u
c3VjY2VzcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24u
dHJhbnNhY3Rpb24tY29tcGxldGUiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS50
b1N0cmluZygpKTsKLSAgICAgICAgdGVzdDMoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3Qz
KCkgewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiVEVTVDogb3BlbiBhbmQgc2V0VmVyc2lv
biBibG9ja2VkIGlmIGEgVkVSU0lPTl9DSEFOR0UgdHJhbnNhY3Rpb24gaXMgcnVubmluZyAtIGNs
b3NlIHdoZW4gYmxvY2tlZCIpOwotICAgIGV2YWxBbmRMb2coInNlbGYuZGJuYW1lID0gJ3Rlc3Qz
Jzsgc2VsZi52ZXIgPSAxOyBzZWxmLnN0ZXBzID0gW10iKTsKLSAgICB2YXIgaDEgPSBuZXcgQ29u
bmVjdGlvbigiaDEiKTsKLSAgICB2YXIgaDIgPSBuZXcgQ29ubmVjdGlvbigiaDIiKTsKLSAgICB2
YXIgaDMgPSBuZXcgQ29ubmVjdGlvbigiaDMiKTsKLSAgICBydW5TdGVwcyhbZnVuY3Rpb24oZG9O
ZXh0KSB7IGgxLm9wZW4oe29uc3VjY2VzczogZG9OZXh0fSk7IH0sCi0gICAgICAgICAgICAgIGZ1
bmN0aW9uKGRvTmV4dCkgeyBoMi5vcGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dH0pOyB9LAotICAgICAg
ICAgICAgICBmdW5jdGlvbihkb05leHQpIHsgaDEuc2V0VmVyc2lvbigpOyBkb05leHQoKTsgfSwK
LSAgICAgICAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGgyLnNldFZlcnNpb24oewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25ibG9ja2VkOiBm
dW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZWJ1ZygiICAgIGgyIGJsb2NrZWQgc28gY2xvc2luZyIpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGgyLmNsb3NlKCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZG9OZXh0KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9fSk7IH0sCi0gICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBoMy5vcGVuKHtvbnN1Y2Nl
c3M6IGZpbmlzaFRlc3R9KTt9Ci0gICAgICAgICAgICAgIF0pOwotCi0gICAgZnVuY3Rpb24gZmlu
aXNoVGVzdCgpIHsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzZWxmLnN0ZXBzLnRv
U3RyaW5nKCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJoMS5vcGVuIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEub3Blbi5vbnN1Y2Nlc3MiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5vcGVuIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiaDIub3Blbi5vbnN1Y2Nlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJoMS5zZXRWZXJzaW9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
aDIuc2V0VmVyc2lvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLm9udmVy
c2lvbmNoYW5nZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNp
b24ub25ibG9ja2VkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEub252ZXJz
aW9uY2hhbmdlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIuc2V0VmVyc2lv
bi5vbmJsb2NrZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5jbG9zZSIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgzLm9wZW4iLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJoMi5zZXRWZXJzaW9uLm9uZXJyb3IiLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLm9uc3VjY2VzcyIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24udHJhbnNhY3Rpb24tY29tcGxldGUi
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMy5vcGVuLm9uc3VjY2VzcyIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnRvU3RyaW5nKCkpOwotICAgICAgICB0ZXN0
NCgpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdDQoKSB7Ci0gICAgZGVidWcoIiIpOwotICAg
IGRlYnVnKCJURVNUOiBvcGVuIGFuZCBzZXRWZXJzaW9uIGJsb2NrZWQgaWYgYSBWRVJTSU9OX0NI
QU5HRSB0cmFuc2FjdGlvbiBpcyBydW5uaW5nIC0ganVzdCBjbG9zZSIpOwotICAgIGV2YWxBbmRM
b2coInNlbGYuZGJuYW1lID0gJ3Rlc3Q0Jzsgc2VsZi52ZXIgPSAxOyBzZWxmLnN0ZXBzID0gW10i
KTsKLSAgICB2YXIgaDEgPSBuZXcgQ29ubmVjdGlvbigiaDEiKTsKLSAgICB2YXIgaDIgPSBuZXcg
Q29ubmVjdGlvbigiaDIiKTsKLSAgICB2YXIgaDMgPSBuZXcgQ29ubmVjdGlvbigiaDMiKTsKLSAg
ICBydW5TdGVwcyhbZnVuY3Rpb24oZG9OZXh0KSB7IGgxLm9wZW4oe29uc3VjY2VzczogZG9OZXh0
fSk7IH0sCi0gICAgICAgICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBoMi5vcGVuKHtvbnN1Y2Nl
c3M6IGRvTmV4dH0pOyB9LAotICAgICAgICAgICAgICBmdW5jdGlvbihkb05leHQpIHsgaDEuc2V0
VmVyc2lvbigpOyBkb05leHQoKTsgfSwKLSAgICAgICAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7
IGgzLm9wZW4oe29uc3VjY2VzczogZmluaXNoVGVzdH0pOyBkb05leHQoKTsgfSwKLSAgICAgICAg
ICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGgyLmNsb3NlKCk7IH0sCi0gICAgICAgICAgICAgIF0p
OwotCi0gICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKLSAgICAgICAgZGVidWcoIk5PVEU6IFdp
bGwgRkFJTCB3aXRoIGV4dHJhIGJvZ3VzIGgxLnNldFZlcnNpb24ub25ibG9ja2VkIHN0ZXA7IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTEzMCIpOwotICAgICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoInNlbGYuc3RlcHMudG9TdHJpbmcoKSIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbImgxLm9wZW4iLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJoMS5vcGVuLm9uc3VjY2VzcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImgyLm9wZW4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5vcGVuLm9u
c3VjY2VzcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24i
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMy5vcGVuIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiaDIuY2xvc2UiLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJoMS5zZXRWZXJzaW9uLm9uc3VjY2VzcyIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImgxLnNldFZlcnNpb24udHJhbnNhY3Rpb24tY29tcGxldGUiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJoMy5vcGVuLm9uc3VjY2VzcyIKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBdLnRvU3RyaW5nKCkpOwotICAgICAgICB0ZXN0NSgpOwotICAgIH0K
LX0KLQotZnVuY3Rpb24gdGVzdDUoKSB7Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJURVNU
OiBvcGVuIGJsb2NrZWQgaWYgYSBWRVJTSU9OX0NIQU5HRSB0cmFuc2FjdGlvbiBpcyBydW5uaW5n
Iik7Ci0gICAgZXZhbEFuZExvZygic2VsZi5kYm5hbWUgPSAndGVzdDUnOyBzZWxmLnZlciA9IDE7
IHNlbGYuc3RlcHMgPSBbXSIpOwotICAgIHZhciBoMSA9IG5ldyBDb25uZWN0aW9uKCJoMSIpOwot
ICAgIHZhciBoMiA9IG5ldyBDb25uZWN0aW9uKCJoMiIpOwotCi0gICAgcnVuU3RlcHMoW2Z1bmN0
aW9uKGRvTmV4dCkgeyBoMS5vcGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dH0pOyB9LAotICAgICAgICAg
ICAgICBmdW5jdGlvbihkb05leHQpIHsgaDEuc2V0VmVyc2lvbigpOyBkb05leHQoKTsgfSwKLSAg
ICAgICAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGgyLm9wZW4oe29uc3VjY2VzczogZmluaXNo
VGVzdH0pOyB9Ci0gICAgICAgICAgICAgIF0pOwotCi0gICAgZnVuY3Rpb24gZmluaXNoVGVzdCgp
IHsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzZWxmLnN0ZXBzLnRvU3RyaW5nKCki
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJoMS5vcGVuIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiaDEub3Blbi5vbnN1Y2Nlc3MiLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiaDIub3BlbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNl
dFZlcnNpb24ub25zdWNjZXNzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEu
c2V0VmVyc2lvbi50cmFuc2FjdGlvbi1jb21wbGV0ZSIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImgyLm9wZW4ub25zdWNjZXNzIgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF0udG9TdHJpbmcoKSk7Ci0gICAgICAgIHRlc3Q2KCk7Ci0gICAgfQotfQotCi0KLWZ1bmN0
aW9uIHRlc3Q2KCkgewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiVEVTVDogdHdvIHNldFZl
cnNpb25zIGZyb20gdGhlIHNhbWUgY29ubmVjdGlvbiIpOwotICAgIGV2YWxBbmRMb2coInNlbGYu
ZGJuYW1lID0gJ3Rlc3Q2Jzsgc2VsZi52ZXIgPSAxOyBzZWxmLnN0ZXBzID0gW10iKTsKLSAgICB2
YXIgaDEgPSBuZXcgQ29ubmVjdGlvbigiaDEiKTsKLQotICAgIHJ1blN0ZXBzKFtmdW5jdGlvbihk
b05leHQpIHsgaDEub3Blbih7b25zdWNjZXNzOiBkb05leHR9KTsgfSwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBoMS5z
ZXRWZXJzaW9uKHtvbnN1Y2Nlc3M6IGhhbGZEb25lfSk7IAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaDEuc2V0VmVyc2lvbih7b25zdWNjZXNzOiBoYWxmRG9uZX0pOyB9Ci0gICAg
ICAgICAgICAgIF0pOwotCi0gICAgdmFyIGNvdW50ZXIgPSAwOwotICAgIGZ1bmN0aW9uIGhhbGZE
b25lKCkgewotICAgICAgICBjb3VudGVyKys7Ci0gICAgICAgIGlmIChjb3VudGVyIDwgMikgewot
ICAgICAgICAgICAgZGVidWcoJ2hhbGYgZG9uZScpOwotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgZmluaXNoVGVzdCgpOwotICAgICAgICB9Ci0gICAgfSAgCi0KLSAgICBmdW5jdGlvbiBm
aW5pc2hUZXN0KCkgewotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNlbGYuc3RlcHMu
dG9TdHJpbmcoKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImgxLm9wZW4iLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5vcGVuLm9uc3VjY2VzcyIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24iLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiaDEuc2V0VmVyc2lvbi5vbnN1Y2Nlc3MiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLnRyYW5zYWN0aW9uLWNvbXBsZXRlIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbi5vbnN1Y2Nlc3MiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLnRyYW5zYWN0aW9uLWNv
bXBsZXRlIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udG9TdHJpbmcoKSk7Ci0g
ICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0KLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3Blbi1jbG9zZS12ZXJzaW9uLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvb3Blbi1jdXJzb3IuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL29wZW4tY3Vyc29yLmh0bWwKaW5kZXggNzE4ZmUxYmJiYTQ0NDEzOTc0ZjViYTU5ZGMyMjVm
ZDYzOTk5M2E5Zi4uZTRlYjE4MmI4MDVkOTBiZWU5NTBmZmIzMmE5YTM2NjRhZGM5ZGI2NCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi1jdXJzb3IuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVuLWN1cnNvci5odG1sCkBAIC00
LDkwICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4K
IDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERC
J3Mgb3BlbkN1cnNvci4iKTsKLQotZnVuY3Rpb24gZW1wdHlDdXJzb3JTdWNjZXNzKCkKLXsKLSAg
ICBkZWJ1ZygiRW1wdHkgY3Vyc29yIG9wZW5lZCBzdWNjZXNzZnVsbHkuIikKLSAgICAvLyBGSVhN
RTogY2hlY2sgdGhhdCB3ZSBjYW4gaXRlcmF0ZSB0aGUgY3Vyc29yLgotICAgIGZpbmlzaEpTVGVz
dCgpOwotfQotCi1mdW5jdGlvbiBvcGVuRW1wdHlDdXJzb3IoKQotewotICAgIGRlYnVnKCJPcGVu
aW5nIGFuIGVtcHR5IGN1cnNvci4iKTsKLSAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2Vy
Qm91bmQoIkluZXhpc3RlbnRLZXkiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0
U3RvcmUub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGVt
cHR5Q3Vyc29yU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY3Vyc29yU3VjY2VzcygpCi17Ci0gICAgZGVidWcoIkN1
cnNvciBvcGVuZWQgc3VjY2Vzc2Z1bGx5LiIpCi0gICAgLy8gRklYTUU6IGNoZWNrIHRoYXQgd2Ug
Y2FuIGl0ZXJhdGUgdGhlIGN1cnNvci4KLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3Vs
dC5kaXJlY3Rpb24iLCAiMCIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0Lmtl
eSIsICInbXlLZXknIik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUi
LCAiJ215VmFsdWUnIik7Ci0gICAgZGVidWcoIiIpOwotICAgIHRyeSB7Ci0gICAgICAgIGRlYnVn
KCJQYXNzaW5nIGFuIGludmFsaWQga2V5IGludG8gLmNvbnRpbnVlKHt9KS4iKTsKLSAgICAgICAg
ZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSh7fSk7Ci0gICAgICAgIHRlc3RGYWlsZWQoIk5v
IGV4Y2VwdGlvbiB0aHJvd24iKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIHRlc3RQYXNz
ZWQoIkNhdWdodCBleGNlcHRpb246ICIgKyBlLnRvU3RyaW5nKCkpOwotICAgIH0KLSAgICBkZWJ1
ZygiIik7Ci0gICAgb3BlbkVtcHR5Q3Vyc29yKCk7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5DdXJzb3Io
KQotewotICAgIGRlYnVnKCJPcGVuaW5nIGN1cnNvciIpOwotICAgIGtleVJhbmdlID0gSURCS2V5
UmFuZ2UubG93ZXJCb3VuZCgibXlLZXkiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZXZl
bnQudGFyZ2V0LnNvdXJjZS5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gY3Vyc29yU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQotewotICAg
IGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOwotICAgIHNlbGYudHJhbnMgPSBldmFsQW5k
TG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRy
YW5zICE9PSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxi
YWNrOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIHZhciBvYmplY3RT
dG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Rl
c3QnKSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ215VmFs
dWUnLCAnbXlLZXknKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbkN1cnNvcjsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLSAKLWZ1bmN0
aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICB2YXIgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKLSAKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVy
c2lvbignbmV3IHZlcnNpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lv
blN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci19Ci0gCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbignb3Blbi1jdXJzb3InKSIp
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLXRlc3QoKTsKLQotCi08L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3Blbi1jdXJzb3IuanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9vcGVuLWR1cmluZy10cmFuc2FjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvb3Blbi1kdXJpbmctdHJhbnNhY3Rpb24uaHRtbAppbmRleCBjYmRkMzVjZGM1
YTY3NDYyNDA5ZDVlYmUyZjgxMTRmOGQ2MDFlYWMwLi5jZDVmOGY2ZGMzNDg2OTM3YTliNGFmODE3
ZjQ0NTEyNGEwOGU1OWY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9vcGVuLWR1cmluZy10cmFuc2FjdGlvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL29wZW4tZHVyaW5nLXRyYW5zYWN0aW9uLmh0bWwKQEAgLTEsODcgKzEsMTAgQEAK
LTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0K
LWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBvcGVuaW5nIGRhdGFiYXNlIGNvbm5lY3Rpb25z
IGR1cmluZyB0cmFuc2FjdGlvbnMiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3Zl
VmVuZG9yUHJlZml4ZXMoKTsKLSAgICBwcmVwYXJlRGF0YWJhc2UoKTsKLX0KLQotZnVuY3Rpb24g
cHJlcGFyZURhdGFiYXNlKCkKLXsKLSAgICBkZWJ1ZygicHJlcGFyZSBkYXRhYmFzZSIpOwotICAg
IGV2YWxBbmRMb2coIm9wZW5yZXExID0gaW5kZXhlZERCLm9wZW4oJ2RiMScpIik7Ci0gICAgb3Bl
bnJlcTEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIG9wZW5yZXExLm9u
c3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7Ci0gICAgICAgIGV2YWxBbmRMb2coImRiYzEgPSBvcGVu
cmVxMS5yZXN1bHQiKTsKLSAgICAgICAgZXZhbEFuZExvZygic2V0dmVycmVxID0gZGJjMS5zZXRW
ZXJzaW9uKCcxLjAnKSIpOwotICAgICAgICBzZXR2ZXJyZXEub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotICAgICAgICBzZXR2ZXJyZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUp
IHsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImRiYzEuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3Jl
TmFtZScpIik7Ci0gICAgICAgICAgICBzZXR2ZXJyZXEucmVzdWx0Lm9uY29tcGxldGUgPSBmdW5j
dGlvbiAoZSkgewotICAgICAgICAgICAgICAgIGRlYnVnKCJkYXRhYmFzZSBwcmVwYXJhdGlvbiBj
b21wbGV0ZSIpOwotICAgICAgICAgICAgICAgIGRlYnVnKCIiKTsKLSAgICAgICAgICAgICAgICBz
dGFydFRyYW5zYWN0aW9uKCk7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgIH07Ci19
Ci0KLWZ1bmN0aW9uIHN0YXJ0VHJhbnNhY3Rpb24oKQotewotICAgIGRlYnVnKCJzdGFydGluZyB0
cmFuc2FjdGlvbiIpOwotICAgIGV2YWxBbmRMb2coInN0YXRlID0gJ3N0YXJ0aW5nJyIpOwotICAg
IGV2YWxBbmRMb2coInRyYW5zID0gZGJjMS50cmFuc2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJh
bnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9y
ZSgnc3RvcmVOYW1lJykucHV0KCd2YWx1ZScsICdrZXknKSIpOwotICAgIHRyYW5zLm9uYWJvcnQg
PSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IGZ1bmN0aW9uIChlKSB7Ci0g
ICAgICAgIGRlYnVnKCJ0cmFuc2FjdGlvbiBjb21wbGV0ZSIpOwotICAgICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoInN0YXRlIiwgIm9wZW4zY29tcGxldGUiKTsKLSAgICAgICAgZmluaXNoSlNU
ZXN0KCk7Ci0gICAgfTsKLQotICAgIGRlYnVnKCIiKTsKLSAgICB0cnlPcGVucygpOwotfQotCi0K
LWZ1bmN0aW9uIHRyeU9wZW5zKCkKLXsKLSAgICBkZWJ1ZygidHJ5aW5nIHRvIG9wZW4gdGhlIHNh
bWUgZGF0YWJhc2UiKTsKLSAgICBldmFsQW5kTG9nKCJvcGVucmVxMiA9IGluZGV4ZWREQi5vcGVu
KCdkYjEnKSIpOwotICAgIG9wZW5yZXEyLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLSAgICBvcGVucmVxMi5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZSkgewotICAgICAgICBkZWJ1
Zygib3BlbnJlcTIub25zdWNjZXNzIik7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
c3RhdGUiLCAic3RhcnRpbmciKTsKLSAgICAgICAgZXZhbEFuZExvZygic3RhdGUgPSAnb3BlbjJj
b21wbGV0ZSciKTsKLSAgICAgICAgZGVidWcoIiIpOwotICAgIH0KLSAgICBkZWJ1ZygiIik7Ci0K
LSAgICBkZWJ1ZygidHJ5aW5nIHRvIG9wZW4gYSBkaWZmZXJlbnQgZGF0YWJhc2UiKTsKLSAgICBl
dmFsQW5kTG9nKCJvcGVucmVxMyA9IGluZGV4ZWREQi5vcGVuKCdkYjInKSIpOwotICAgIG9wZW5y
ZXEzLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICBvcGVucmVxMy5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbiAoZSkgewotICAgICAgICBkZWJ1Zygib3BlbnJlcTMub25zdWNjZXNz
Iik7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3RhdGUiLCAib3BlbjJjb21wbGV0
ZSIpOwotICAgICAgICBldmFsQW5kTG9nKCJzdGF0ZSA9ICdvcGVuM2NvbXBsZXRlJyIpOwotICAg
ICAgICBkZWJ1ZygiIik7Ci0gICAgfQotICAgIGRlYnVnKCIiKTsKLX0KLQotdGVzdCgpOwotCi08
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3Blbi1kdXJpbmctdHJhbnNhY3Rpb24u
anMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9wcmVmZXRjaC1idWdmaXgtMTA4MDcxLmh0bWwgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9wcmVmZXRjaC1idWdmaXgtMTA4MDcxLmh0bWwK
aW5kZXggZWRhMjk5NzdjNWU0NDZmY2RlNmRmNDVhOWY2ZTVhMzVkMDYwYWUwOC4uODRjN2E2NTU3
ZWNhMmVlYTdjNGVmZDcyMjI0ZTA5MmI3NzA5NzljOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcHJlZmV0Y2gtYnVnZml4LTEwODA3MS5odG1sCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ByZWZldGNoLWJ1Z2ZpeC0xMDgwNzEuaHRtbApAQCAt
NCwxMjMgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0
PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBmb3IgY3Ji
dWcuY29tLzEwODA3MSIpOwotCi0vLyBIYXZlIHRvIGJlIGF0IGxlYXN0IDUgaGVyZTogMSBpbml0
aWFsLCAzIGNvbnRpbnVlcyB0byB0cmlnZ2VyIHByZWZldGNoIGFuZCAxCi0vLyBwb3N0LWFib3J0
IG91dHN0YW5kaW5nIGNvbnRpbnVlLgotdmFyIG5hbWVzID0gWydBbHBoYScsICdCcmF2bycsICdD
aGFybGllJywgJ0RlbHRhJywgJ0VjaG8nXTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVt
b3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICBEQk5BTUUgPSAncHJlZmV0Y2gtYnVnZml4LTEwODA3
MSc7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShE
Qk5BTUUpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci0gICAgcmVxdWVzdC5vbmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENhbGxiYWNrOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKERCTkFNRSkiKTsKLSAgICAgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewot
ICAgIHZhciBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb25TdWNjZXNzOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJz
aW9uU3VjY2VzcygpCi17Ci0gICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7Ci0gICAg
c2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwot
ICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0g
dW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IGl0ZXJhdGVB
bmREZWxldGVGaXJzdEVsZW1lbnQ7Ci0KLSAgICB2YXIgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScsIHtrZXlQYXRoOiAn
aWQnfSkiKTsKLSAgICByZXNldE9iamVjdFN0b3JlKCk7Ci19Ci0KLWZ1bmN0aW9uIHJlc2V0T2Jq
ZWN0U3RvcmUoKQotewotICAgIGRlYnVnKCJcbnJlc2V0T2JqZWN0U3RvcmUoKToiKTsKLQotICAg
IG9iamVjdFN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7Ci0gICAgZXZhbEFuZExv
Zygib2JqZWN0U3RvcmUuY2xlYXIoKSIpOwotICAgIGZvciAoaSA9IDA7IGkgPCBuYW1lcy5sZW5n
dGg7IGkrKykgewotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRk
KHtpZDogIiArIGkgKyAiLCBuYW1lOiBcIiIgKyBuYW1lc1tpXSArICJcIn0pIik7Ci0gICAgICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIH0KLQotICAg
IGRlYnVnKCIiKTsKLX0KLQotZnVuY3Rpb24gaXRlcmF0ZUFuZERlbGV0ZUZpcnN0RWxlbWVudCgp
Ci17Ci0gICAgZGVidWcoIml0ZXJhdGVBbmREZWxldGVGaXJzdEVsZW1lbnQoKToiKTsKLQotICAg
IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZSddLCBJREJUcmFuc2Fj
dGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB0cmFuc2FjdGlvbkFib3J0
ZWQ7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOwot
Ci0gICAgLy8gQ3JlYXRlIHRoZSBjdXJzb3IgYW5kIGl0ZXJhdGUgb3ZlciB0aGUgd2hvbGUgdGhp
bmcuCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScp
Lm9wZW5DdXJzb3IoKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewotICAgICAgICB2
YXIgY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKLSAgICAgICAgaWYgKGN1cnNvciA9PSBu
dWxsKSB7Ci0gICAgICAgICAgICByZXNldE9iamVjdFN0b3JlKCk7Ci0gICAgICAgICAgICBwcmVm
ZXRjaEFuZEFib3J0KCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAg
ICBkZWJ1ZyhjdXJzb3IudmFsdWUuaWQgKyAiOiAiICsgY3Vyc29yLnZhbHVlLm5hbWUpOwotCi0g
ICAgICAgIGlmIChjdXJzb3IudmFsdWUuaWQgPT0gMCkgewotICAgICAgICAgICAgLy8gRGVsZXRl
IHRoZSBmaXJzdCBlbGVtZW50IHdoZW4gd2Ugc2VlIGl0LgotICAgICAgICAgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpLmRlbGV0ZSgwKSIpOwotICAg
ICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAg
ICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeyBjdXJzb3IuY29udGludWUo
KTsgfTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGN1cnNvci5jb250aW51ZSgpOwot
ICAgICAgICB9Ci0gICAgfQotfQotCi1mdW5jdGlvbiBwcmVmZXRjaEFuZEFib3J0KCkKLXsKLSAg
ICBkZWJ1ZygicHJlZmV0Y2hBbmRBYm9ydCgpOiIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpLm9wZW5DdXJzb3IoKSIpOwotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZnVuY3Rpb24gKCkgewotICAgICAgICB2YXIgY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJl
c3VsdDsKLSAgICAgICAgZGVidWcoY3Vyc29yLnZhbHVlLmlkICsgIjogIiArIGN1cnNvci52YWx1
ZS5uYW1lKTsKLSAgICAgICAgLy8gSGF2ZSB0byBpdGVyYXRlIHRvIDMgaW4gb3JkZXIgdG8gcHJl
ZmV0Y2gsIGJ1dCBjYW4ndCBpdGVyYXRlIHBhc3QgMwotICAgICAgICAvLyBzbyB0aGF0IHRoZXJl
IHdpbGwgYmUgYSBjb250aW51ZSByZW1haW5pbmcuCi0gICAgICAgIGlmIChjdXJzb3IudmFsdWUu
aWQgPT0gMykgewotICAgICAgICAgICAgZXZhbEFuZExvZygidHJhbnMuYWJvcnQoKSIpOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7Ci0gICAgICAgIH0K
LSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRyYW5zYWN0aW9uQWJvcnRlZCgpCi17Ci0gICAgdGVzdFBh
c3NlZCgiVHJhbnNhY3Rpb24gYWJvcnRlZCBhcyBleHBlY3RlZCIpOwotICAgIGZpbmlzaEpTVGVz
dCgpOwotfQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9w
cmVmZXRjaC1idWdmaXgtMTA4MDcxLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcXVldWVkLWNv
bW1hbmRzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9xdWV1ZWQtY29tbWFu
ZHMuaHRtbAppbmRleCAyYzRiOTlmZWI1ODg1ZTFjMTQ5MTVkZTQ0NjNkZDMxYzhkOGU0OGU0Li41
NzhkY2RlYTA4YWU1NjkyYTI3NDNlYjBiNDljNDQyNmNiZGY3YmExIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9xdWV1ZWQtY29tbWFuZHMuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9xdWV1ZWQtY29tbWFuZHMuaHRtbApAQCAtNCw2OCAr
NCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hl
YWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJWZXJpZnkgdGhhdCBxdWV1aW5n
IHVwIHNldmVyYWwgY29tbWFuZHMgd29ya3MgKGFuZCB0aGV5IGFsbCBmaXJlKS4iKTsKLQotZnVu
Y3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3F1ZXVlZC1jb21tYW5kcycpIik7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uKCkKLXsKLSAg
ICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4aXN0aW5nOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBkZWxldGVFeGlzdGluZygp
Ci17Ci0gICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7Ci0gICAgc2VsZi50cmFucyA9
IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJl
VHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFi
b3J0Q2FsbGJhY2s7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgc2Vs
Zi5zdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIp
OwotICAgIHNlbGYuaW5kZXhPYmplY3QgPSBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgn
aW5kZXhOYW1lJywgJ3gnKSIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFk
ZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAna2V5JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uKCkgeyB2ZXJpZnlBZGQoMCk7IH07Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3Rv
cmUuYWRkKHt4OiAndmFsdWUyJywgeTogJ3p6ejInfSwgJ2tleTInKSIpOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24oKSB7IHZlcmlmeUFkZCgxKTsgfTsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJzdG9yZS5wdXQoe3g6ICd2YWx1MicsIHk6ICd6ejInfSwgJ2t5MicpIik7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgdmVyaWZ5QWRkKDIpOyB9OwotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotCi0gICAgc2VsZi5hZGRDb3Vu
dCA9IDA7Ci19Ci0KLWZ1bmN0aW9uIHZlcmlmeUFkZChleHBlY3RlZCkKLXsKLSAgICBzaG91bGRC
ZSgiIiArIGFkZENvdW50KyssICIiICsgZXhwZWN0ZWQpOwotCi0gICAgaWYgKGFkZENvdW50ID09
IDMpCi0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIGlmIChhZGRDb3VudCA+IDMpCi0gICAg
ICAgIHRlc3RGYWlsZWQoIlVuZXhwZWN0ZWQgY2FsbCB0byB2ZXJpZnlBZGQhIik7Ci19Ci0KLXRl
c3QoKTsKLQotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcXVldWVkLWNvbW1h
bmRzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVhZG9ubHktcHJvcGVydGllcy5odG1sIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVhZG9ubHktcHJvcGVydGllcy5odG1sCmlu
ZGV4IGUyZDdkYjU3Njg5YTQ0N2FjYWUxNjA0ZWU2MWI3MzAwNjI0YWViNWIuLmQ0OGJiMDA4ZjJk
ZjE5NThmMTI3NjdjNjlkYzVhY2Q2ZTY3MzZlNzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3JlYWRvbmx5LXByb3BlcnRpZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZWFkb25seS1wcm9wZXJ0aWVzLmh0bWwKQEAgLTEsNTggKzEs
MTAgQEAKLTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3Jp
cHQ+Ci1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgcmVhZG9ubHkgcHJvcGVydGllcyIpOwot
Ci1mdW5jdGlvbiBzZXRSZWFkb25seVByb3BlcnR5KHByb3BlcnR5LCB2YWx1ZSkKLXsKLSAgICBv
bGRWYWx1ZSA9IGV2YWwocHJvcGVydHkpOwotICAgIGRlYnVnKCJ0cnlpbmcgdG8gc2V0IHJlYWRv
bmx5IHByb3BlcnR5ICIgKyBwcm9wZXJ0eSk7Ci0gICAgZXZhbEFuZExvZyhwcm9wZXJ0eSArICIg
PSAiICsgdmFsdWUpOwotICAgIG5ld1ZhbHVlID0gZXZhbChwcm9wZXJ0eSk7Ci0gICAgaWYgKG9s
ZFZhbHVlID09IG5ld1ZhbHVlKSB7Ci0gICAgICAgIHRlc3RQYXNzZWQocHJvcGVydHkgKyAiIGlz
IHN0aWxsICIgKyBvbGRWYWx1ZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdGVzdEZhaWxlZChw
cm9wZXJ0eSArICIgdmFsdWUgd2FzIGNoYW5nZWQgdG8gIiArIG5ld1ZhbHVlKTsKLSAgICB9Ci19
Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAg
ICBuYW1lID0gImZvbyI7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9u
KSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNj
ZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIp
OwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScp
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3Jl
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1m
dW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKLXsKLSAgICB0cmFuc2FjdGlv
biA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAg
ICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExv
Zygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJyk7Iik7Ci0gICAgc2V0
UmVhZG9ubHlQcm9wZXJ0eSgib2JqZWN0U3RvcmUudHJhbnNhY3Rpb24iLCAidGhpcyIpOwotICAg
IGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3JlYWRvbmx5LXByb3BlcnRpZXMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBz
cmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8
L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZWFkb25seS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVhZG9ubHku
aHRtbAppbmRleCAxNDhlNWUwYzc5MzZiOTA1ZTM3MThhZGE1MDcwYzk0MzljNjY1Yzk5Li4xZTEx
NjIwM2I1NmU4OTlkMGI1MWQzYjczYzBmOTViNGVlYWVjOGFjIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZWFkb25seS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3JlYWRvbmx5Lmh0bWwKQEAgLTEsMTE1ICsxLDEwIEBACi08IURPQ1RZ
UEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9z
aGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotZGVzY3JpcHRp
b24oIlRlc3QgSW5kZXhlZERCIHJlYWRvbmx5IHByb3BlcnRpZXMiKTsKLQotZnVuY3Rpb24gc2V0
UmVhZG9ubHlQcm9wZXJ0eShwcm9wZXJ0eSwgdmFsdWUpCi17Ci0gICAgb2xkVmFsdWUgPSBldmFs
KHByb3BlcnR5KTsKLSAgICBkZWJ1ZygidHJ5aW5nIHRvIHNldCByZWFkb25seSBwcm9wZXJ0eSAi
ICsgcHJvcGVydHkpOwotICAgIGV2YWxBbmRMb2cocHJvcGVydHkgKyAiID0gIiArIHZhbHVlKTsK
LSAgICBuZXdWYWx1ZSA9IGV2YWwocHJvcGVydHkpOwotICAgIGlmIChvbGRWYWx1ZSA9PSBuZXdW
YWx1ZSkgewotICAgICAgICB0ZXN0UGFzc2VkKHByb3BlcnR5ICsgIiBpcyBzdGlsbCAiICsgb2xk
VmFsdWUpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHRlc3RGYWlsZWQocHJvcGVydHkgKyAiIHZh
bHVlIHdhcyBjaGFuZ2VkIik7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICBy
ZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9ICJmb28iOwotICAgIGRlc2NyaXB0
aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRl
eGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgc2V0UmVhZG9ubHlQcm9w
ZXJ0eSgicmVxdWVzdC5yZXN1bHQiLCAiSW5maW5pdHkiKTsKLSAgICBzZXRSZWFkb25seVByb3Bl
cnR5KCJyZXF1ZXN0LmVycm9yQ29kZSIsICI2NjYiKTsKLSAgICBzZXRSZWFkb25seVByb3BlcnR5
KCJyZXF1ZXN0LnNvdXJjZSIsICJ0aGlzIik7Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgicmVx
dWVzdC50cmFuc2FjdGlvbiIsICJ0aGlzIik7Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgicmVx
dWVzdC5yZWFkeVN0YXRlIiwgIjY2NiIpOwotCi0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzZXRSZWFkb25seVByb3BlcnR5KCJkYi5uYW1lIiwg
IidiYXInIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZl
cnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5kUG9wdWxhdGVP
YmplY3RTdG9yZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLX0KLQotZnVuY3Rpb24gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSgpCi17Ci0gICAg
dHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQ7Iik7Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgidHJhbnNhY3Rpb24ubW9kZSIsICI2NjYi
KTsKLSAgICBzZXRSZWFkb25seVByb3BlcnR5KCJ0cmFuc2FjdGlvbi5kYiIsICJ0aGlzIik7Ci0K
LSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFs
QW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nKTsiKTsKLQot
ICAgIHNldFJlYWRvbmx5UHJvcGVydHkoIm9iamVjdFN0b3JlLm5hbWUiLCAiJ2JhciciKTsKLSAg
ICBzZXRSZWFkb25seVByb3BlcnR5KCJvYmplY3RTdG9yZS5rZXlQYXRoIiwgIidiYXInIik7Ci0v
KiBmYWlscywgc3BsaXQgaW50byBzZXBhcmF0ZSB0ZXN0Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0
eSgib2JqZWN0U3RvcmUuaW5kZXhOYW1lcyIsICJbJ2JhciddIik7Ci0qLwotLyogZmFpbHMsIHNw
bGl0IGludG8gc2VwYXJhdGUgdGVzdAotICAgIHNldFJlYWRvbmx5UHJvcGVydHkoIm9iamVjdFN0
b3JlLnRyYW5zYWN0aW9uIiwgInRoaXMiKTsKLSovCi0KLSAgICByZXN1bHQgPSBldmFsQW5kTG9n
KCJyZXN1bHQgPSBvYmplY3RTdG9yZS5hZGQoe30sICdmaXJzdCcpOyIpOwotICAgIHJlc3VsdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVzdWx0Lm9uc3VjY2VzcyA9
IGFkZFN1Y2Nlc3M7Ci19Ci0KLWZ1bmN0aW9uIGFkZFN1Y2Nlc3MoKQotewotICAgIHJlc3VsdCA9
IGV2YWxBbmRMb2coInJlc3VsdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsKLSAgICBy
ZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlc3VsdC5vbnN1
Y2Nlc3MgPSBjaGVja0N1cnNvcjsKLX0KLQotZnVuY3Rpb24gY2hlY2tDdXJzb3IoKQotewotICAg
IGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0g
ICAgaWYgKGN1cnNvcikgewotICAgICAgICBzZXRSZWFkb25seVByb3BlcnR5KCJjdXJzb3Iuc291
cmNlIiwgInRoaXMiKTsKLSAgICAgICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgiY3Vyc29yLmRpcmVj
dGlvbiIsICI2NjYiKTsKLSAgICAgICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgiY3Vyc29yLmtleSIs
ICJJbmZpbml0eSIpOwotICAgICAgICBzZXRSZWFkb25seVByb3BlcnR5KCJjdXJzb3IucHJpbWFy
eUtleSIsICJJbmZpbml0eSIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoImN1
cnNvciBpcyBudWxsIik7Ci0gICAgfQotCi0gICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9
IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdmaXJzdCcsICdmaXJzdCcpOyIpOwotICAgIHNldFJl
YWRvbmx5UHJvcGVydHkoImluZGV4Lm5hbWUiLCAiJ2JhciciKTsKLSAgICBzZXRSZWFkb25seVBy
b3BlcnR5KCJpbmRleC5vYmplY3RTdG9yZSIsICJ0aGlzIik7Ci0gICAgc2V0UmVhZG9ubHlQcm9w
ZXJ0eSgiaW5kZXgua2V5UGF0aCIsICInYmFyJyIpOwotICAgIHNldFJlYWRvbmx5UHJvcGVydHko
ImluZGV4LnVuaXF1ZSIsICJ0cnVlIik7Ci0KLSAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLm9u
bHkoImZpcnN0Iik7Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgia2V5UmFuZ2UubG93ZXIiLCAi
SW5maW5pdHkiKTsKLSAgICBzZXRSZWFkb25seVByb3BlcnR5KCJrZXlSYW5nZS51cHBlciIsICJJ
bmZpbml0eSIpOwotICAgIHNldFJlYWRvbmx5UHJvcGVydHkoImtleVJhbmdlLmxvd2VyT3BlbiIs
ICJ0cnVlIik7Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgia2V5UmFuZ2UudXBwZXJPcGVuIiwg
InRydWUiKTsKLQotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JlYWRvbmx5LmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVxdWVzdC1ldmVudC1wcm9wYWdhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVxdWVzdC1ldmVudC1wcm9wYWdhdGlvbi5odG1sCmluZGV4IGY5MWQ4ZWQ0
MWNjZDU0M2ZjNDM0ZTBlNWY5OGNmYmFhZGQzMTRlZTcuLmIxMTExYmQyYzM2YzQ2Y2U0M2IxYTg5
YjhkOTk4MDZiMTA1ODY3MDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3JlcXVlc3QtZXZlbnQtcHJvcGFnYXRpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZXF1ZXN0LWV2ZW50LXByb3BhZ2F0aW9uLmh0bWwKQEAgLTQsMjczICs0
LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVh
ZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgZXZlbnQgcHJvcG9nYXRp
b24gb24gSURCUmVxdWVzdC4iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVu
ZG9yUHJlZml4ZXMoKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4o
J3JlcXVlc3QtZXZlbnQtcHJvcGFnYXRpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
c2V0VmVyc2lvbjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvbigpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJk
YiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJk
Yi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBk
ZWxldGVFeGlzdGluZzsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLX0KLQotZnVuY3Rpb24gZGVsZXRlRXhpc3RpbmcoKQotewotICAgIGRlYnVnKCJzZXRW
ZXJzaW9uU3VjY2VzcygpOiIpOwotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9
IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxs
Iik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIGV2
YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSBzdGFydFRlc3QiKTsKLQotICAgIGRlbGV0ZUFs
bE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7Ci0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAna2V5JykiKTsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rp
b24gc3RhcnRUZXN0KCkKLXsKLSAgICBkZWJ1ZygiVmVyaWZ5IHRoYXQgaGFuZGxlciBmaXJlcyBh
bmQgdGhhdCBub3QgcHJldmVudGluZyBkZWZhdWx0IHdpbGwgcmVzdWx0IGluIGFuIGFib3J0Iik7
Ci0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVO
YW1lJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFuZExvZygidHJh
bnMub25hYm9ydCA9IHRyYW5zYWN0aW9uQWJvcnRlZCIpOwotICAgIGV2YWxBbmRMb2coInRyYW5z
Lm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjayIpOwotICAgIGV2YWxBbmRM
b2coInRyYW5zLm9uZXJyb3IgPSBhbGxvd0RlZmF1bHQiKTsKLSAgICBzdG9yZSA9IGV2YWxBbmRM
b2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAna2V5Jyki
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7Ci0g
ICAgaGFuZGxlckZpcmVkID0gZmFsc2U7Ci19Ci0KLWZ1bmN0aW9uIGFsbG93RGVmYXVsdCgpCi17
Ci0gICAgdGVzdFBhc3NlZCgiRXZlbnQgaGFuZGxlciBmaXJlZCIpOwotICAgIGRlYnVnKCJEb2lu
ZyBub3RoaW5nIHRvIHByZXZlbnQgdGhlIGRlZmF1bHQgYWN0aW9uLi4uIik7Ci0gICAgaGFuZGxl
ckZpcmVkID0gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gdHJhbnNhY3Rpb25BYm9ydGVkKCkKLXsKLSAg
ICBzaG91bGRCZVRydWUoImhhbmRsZXJGaXJlZCIpOwotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1
ZygiVmVyaWZpbmcgZXJyb3IiKTsKLSAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIu
dHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsK
LSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmFib3J0ID0gdHJhbnNhY3Rpb25BYm9ydGVkMiIpOwot
ICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFj
ayIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZXJy
b3JDYXB0dXJlQ2FsbGJhY2ssIHRydWUpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMuYWRkRXZl
bnRMaXN0ZW5lcignZXJyb3InLCBlcnJvckJ1YmJsZUNhbGxiYWNrLCBmYWxzZSkiKTsKLSAgICBl
dmFsQW5kTG9nKCJ0cmFucy5hZGRFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgdW5leHBlY3RlZFN1
Y2Nlc3NDYWxsYmFjaywgdHJ1ZSkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5hZGRFdmVudExp
c3RlbmVyKCdzdWNjZXNzJywgdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjaywgZmFsc2UpIik7Ci0g
ICAgZXZhbEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBkYkVycm9yQ2FwdHVy
ZUNhbGxiYWNrLCB0cnVlKSIpOwotICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50TGlzdGVuZXIo
J2Vycm9yJywgZGJFcnJvckJ1YmJsZUNhbGxiYWNrLCBmYWxzZSkiKTsKLSAgICBldmFsQW5kTG9n
KCJkYi5hZGRFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFj
aywgdHJ1ZSkiKTsKLSAgICBldmFsQW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdzdWNjZXNz
JywgdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjaywgZmFsc2UpIik7Ci0gICAgc3RvcmUgPSBldmFs
QW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tl
eScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNr
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IGVycm9yRmlyZWRDYWxsYmFjazsKLSAgICBkYkNhcHR1
cmVGaXJlZCA9IGZhbHNlOwotICAgIGNhcHR1cmVGaXJlZCA9IGZhbHNlOwotICAgIHJlcXVlc3RG
aXJlZCA9IGZhbHNlOwotICAgIGJ1YmJsZUZpcmVkID0gZmFsc2U7Ci0gICAgZGJCdWJibGVGaXJl
ZCA9IGZhbHNlOwotfQotCi1mdW5jdGlvbiBkYkVycm9yQ2FwdHVyZUNhbGxiYWNrKCkKLXsKLSAg
ICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIkluIElEQkRhdGFiYXNlIGVycm9yIGNhcHR1cmUiKTsK
LSAgICBzaG91bGRCZUZhbHNlKCJkYkNhcHR1cmVGaXJlZCIpOwotICAgIHNob3VsZEJlRmFsc2Uo
ImNhcHR1cmVGaXJlZCIpOwotICAgIHNob3VsZEJlRmFsc2UoInJlcXVlc3RGaXJlZCIpOwotICAg
IHNob3VsZEJlRmFsc2UoImJ1YmJsZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJi
bGVGaXJlZCIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAicmVxdWVzdCIpOwotICAg
IHNob3VsZEJlKCJldmVudC5jdXJyZW50VGFyZ2V0IiwgImRiIik7Ci0gICAgZGJDYXB0dXJlRmly
ZWQgPSB0cnVlOwotfQotCi1mdW5jdGlvbiBlcnJvckNhcHR1cmVDYWxsYmFjaygpCi17Ci0gICAg
ZGVidWcoIiIpOwotICAgIGRlYnVnKCJJbiBJREJUcmFuc2FjdGlvbiBlcnJvciBjYXB0dXJlIik7
Ci0gICAgc2hvdWxkQmVUcnVlKCJkYkNhcHR1cmVGaXJlZCIpOwotICAgIHNob3VsZEJlRmFsc2Uo
ImNhcHR1cmVGaXJlZCIpOwotICAgIHNob3VsZEJlRmFsc2UoInJlcXVlc3RGaXJlZCIpOwotICAg
IHNob3VsZEJlRmFsc2UoImJ1YmJsZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJi
bGVGaXJlZCIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAicmVxdWVzdCIpOwotICAg
IHNob3VsZEJlKCJldmVudC5jdXJyZW50VGFyZ2V0IiwgInRyYW5zIik7Ci0gICAgY2FwdHVyZUZp
cmVkID0gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gZXJyb3JGaXJlZENhbGxiYWNrKCkKLXsKLSAgICBk
ZWJ1ZygiIik7Ci0gICAgZGVidWcoIkluIElEQlJlcXVlc3QgaGFuZGxlciIpOwotICAgIHNob3Vs
ZEJlVHJ1ZSgiZGJDYXB0dXJlRmlyZWQiKTsKLSAgICBzaG91bGRCZVRydWUoImNhcHR1cmVGaXJl
ZCIpOwotICAgIHNob3VsZEJlRmFsc2UoInJlcXVlc3RGaXJlZCIpOwotICAgIHNob3VsZEJlRmFs
c2UoImJ1YmJsZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVGaXJlZCIpOwot
ICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAicmVxdWVzdCIpOwotICAgIHNob3VsZEJlKCJl
dmVudC5jdXJyZW50VGFyZ2V0IiwgInJlcXVlc3QiKTsKLSAgICByZXF1ZXN0RmlyZWQgPSB0cnVl
OwotfQotCi1mdW5jdGlvbiBlcnJvckJ1YmJsZUNhbGxiYWNrKCkKLXsKLSAgICBkZWJ1ZygiIik7
Ci0gICAgZGVidWcoIkluIElEQlRyYW5zYWN0aW9uIGVycm9yIGJ1YmJsZSIpOwotICAgIHNob3Vs
ZEJlVHJ1ZSgiZGJDYXB0dXJlRmlyZWQiKTsKLSAgICBzaG91bGRCZVRydWUoImNhcHR1cmVGaXJl
ZCIpOwotICAgIHNob3VsZEJlVHJ1ZSgicmVxdWVzdEZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxz
ZSgiYnViYmxlRmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVkIik7Ci0g
ICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldCIsICJyZXF1ZXN0Iik7Ci0gICAgc2hvdWxkQmUoImV2
ZW50LmN1cnJlbnRUYXJnZXQiLCAidHJhbnMiKTsKLSAgICBidWJibGVGaXJlZCA9IHRydWU7Ci19
Ci0KLWZ1bmN0aW9uIGRiRXJyb3JCdWJibGVDYWxsYmFjaygpCi17Ci0gICAgZGVidWcoIiIpOwot
ICAgIGRlYnVnKCJJbiBJREJEYXRhYmFzZSBlcnJvciBidWJibGUiKTsKLSAgICBzaG91bGRCZVRy
dWUoImRiQ2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJjYXB0dXJlRmlyZWQiKTsK
LSAgICBzaG91bGRCZVRydWUoInJlcXVlc3RGaXJlZCIpOwotICAgIHNob3VsZEJlVHJ1ZSgiYnVi
YmxlRmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVkIik7Ci0gICAgc2hv
dWxkQmUoImV2ZW50LnRhcmdldCIsICJyZXF1ZXN0Iik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LmN1
cnJlbnRUYXJnZXQiLCAiZGIiKTsKLSAgICBkYkJ1YmJsZUZpcmVkID0gdHJ1ZTsKLX0KLQotZnVu
Y3Rpb24gdHJhbnNhY3Rpb25BYm9ydGVkMigpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVn
KCJUcmFuc2FjdGlvbiBhYm9ydGVkIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJkYkNhcHR1cmVGaXJl
ZCIpOwotICAgIHNob3VsZEJlVHJ1ZSgiY2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVUcnVl
KCJyZXF1ZXN0RmlyZWQiKTsKLSAgICBzaG91bGRCZVRydWUoImJ1YmJsZUZpcmVkIik7Ci0gICAg
c2hvdWxkQmVUcnVlKCJkYkJ1YmJsZUZpcmVkIik7Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVn
KCJWZXJpZmluZyBzdWNjZXNzLiIpOwotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBk
Yi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIp
OwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSB0cmFuc2FjdGlvbkNvbXBsZXRl
Iik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxi
YWNrIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignc3VjY2Vzcycs
IHN1Y2Nlc3NDYXB0dXJlQ2FsbGJhY2ssIHRydWUpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMu
YWRkRXZlbnRMaXN0ZW5lcignc3VjY2VzcycsIHN1Y2Nlc3NCdWJibGVDYWxsYmFjaywgZmFsc2Up
Iik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjaywgdHJ1ZSkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5hZGRF
dmVudExpc3RlbmVyKCdlcnJvcicsIHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrLCBmYWxzZSkiKTsK
LSAgICBldmFsQW5kTG9nKCJkYi5yZW1vdmVFdmVudExpc3RlbmVyKCdlcnJvcicsIGRiRXJyb3JD
YXB0dXJlQ2FsbGJhY2ssIHRydWUpIik7Ci0gICAgZXZhbEFuZExvZygiZGIucmVtb3ZlRXZlbnRM
aXN0ZW5lcignZXJyb3InLCBkYkVycm9yQnViYmxlQ2FsbGJhY2ssIGZhbHNlKSIpOwotICAgIGV2
YWxBbmRMb2coImRiLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3N1Y2Nlc3MnLCB1bmV4cGVjdGVkU3Vj
Y2Vzc0NhbGxiYWNrLCB0cnVlKSIpOwotICAgIGV2YWxBbmRMb2coImRiLnJlbW92ZUV2ZW50TGlz
dGVuZXIoJ3N1Y2Nlc3MnLCB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrLCBmYWxzZSkiKTsKLSAg
ICBldmFsQW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgZGJTdWNjZXNzQ2Fw
dHVyZUNhbGxiYWNrLCB0cnVlKSIpOwotICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50TGlzdGVu
ZXIoJ3N1Y2Nlc3MnLCBkYlN1Y2Nlc3NCdWJibGVDYWxsYmFjaywgZmFsc2UpIik7Ci0gICAgZXZh
bEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjaywgdHJ1ZSkiKTsKLSAgICBldmFsQW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdlcnJv
cicsIHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrLCBmYWxzZSkiKTsKLSAgICBzdG9yZSA9IGV2YWxB
bmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAna2V5
MicpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzdWNjZXNzRmlyZWRDYWxsYmFjazsKLSAgICBkYkNhcHR1
cmVGaXJlZCA9IGZhbHNlOwotICAgIGNhcHR1cmVGaXJlZCA9IGZhbHNlOwotICAgIHJlcXVlc3RG
aXJlZCA9IGZhbHNlOwotICAgIGJ1YmJsZUZpcmVkID0gZmFsc2U7Ci0gICAgZGJCdWJibGVGaXJl
ZCA9IGZhbHNlOwotfQotCi1mdW5jdGlvbiBkYlN1Y2Nlc3NDYXB0dXJlQ2FsbGJhY2soKQotewot
ICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiSW4gSURCRGF0YWJhc2Ugc3VjY2VzcyBjYXB0dXJl
Iik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGJDYXB0dXJlRmlyZWQiKTsKLSAgICBzaG91bGRCZUZh
bHNlKCJjYXB0dXJlRmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJyZXF1ZXN0RmlyZWQiKTsK
LSAgICBzaG91bGRCZUZhbHNlKCJidWJibGVGaXJlZCIpOwotICAgIHNob3VsZEJlRmFsc2UoImRi
QnViYmxlRmlyZWQiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0IiwgInJlcXVlc3QiKTsK
LSAgICBzaG91bGRCZSgiZXZlbnQuY3VycmVudFRhcmdldCIsICJkYiIpOwotICAgIGRiQ2FwdHVy
ZUZpcmVkID0gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gc3VjY2Vzc0NhcHR1cmVDYWxsYmFjaygpCi17
Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJJbiBJREJUcmFuc2FjdGlvbiBzdWNjZXNzIGNh
cHR1cmUiKTsKLSAgICBzaG91bGRCZVRydWUoImRiQ2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxk
QmVGYWxzZSgiY2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgicmVxdWVzdEZpcmVk
Iik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiYnViYmxlRmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNl
KCJkYkJ1YmJsZUZpcmVkIik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldCIsICJyZXF1ZXN0
Iik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LmN1cnJlbnRUYXJnZXQiLCAidHJhbnMiKTsKLSAgICBj
YXB0dXJlRmlyZWQgPSB0cnVlOwotfQotCi1mdW5jdGlvbiBzdWNjZXNzRmlyZWRDYWxsYmFjaygp
Ci17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJJbiBJREJSZXF1ZXN0IGhhbmRsZXIiKTsK
LSAgICBzaG91bGRCZVRydWUoImRiQ2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJj
YXB0dXJlRmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJyZXF1ZXN0RmlyZWQiKTsKLSAgICBz
aG91bGRCZUZhbHNlKCJidWJibGVGaXJlZCIpOwotICAgIHNob3VsZEJlRmFsc2UoImRiQnViYmxl
RmlyZWQiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0IiwgInJlcXVlc3QiKTsKLSAgICBz
aG91bGRCZSgiZXZlbnQuY3VycmVudFRhcmdldCIsICJyZXF1ZXN0Iik7Ci0gICAgcmVxdWVzdEZp
cmVkID0gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gc3VjY2Vzc0J1YmJsZUNhbGxiYWNrKCkKLXsKLSAg
ICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIkluIElEQlRyYW5zYWN0aW9uIHN1Y2Nlc3MgYnViYmxl
Iik7Ci0gICAgdGVzdEZhaWxlZCgiU3VjY2VzcyBidWJibGUgY2FsbGJhY2sgc2hvdWxkIE5PVCBm
aXJlIik7Ci0gICAgYnViYmxlRmlyZWQgPSB0cnVlOwotfQotCi1mdW5jdGlvbiBkYlN1Y2Nlc3NC
dWJibGVDYWxsYmFjaygpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJJbiBJREJEYXRh
YmFzZSBzdWNjZXNzIGJ1YmJsZSIpOwotICAgIHRlc3RGYWlsZWQoIlN1Y2Nlc3MgYnViYmxlIGNh
bGxiYWNrIHNob3VsZCBOT1QgZmlyZSIpOwotICAgIGRiQnViYmxlRmlyZWQgPSB0cnVlOwotfQot
Ci1mdW5jdGlvbiB0cmFuc2FjdGlvbkNvbXBsZXRlKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAg
ZGVidWcoIlRyYW5zYWN0aW9uIGNvbXBsZXRlZCIpOwotICAgIHNob3VsZEJlVHJ1ZSgiZGJDYXB0
dXJlRmlyZWQiKTsKLSAgICBzaG91bGRCZVRydWUoImNhcHR1cmVGaXJlZCIpOwotICAgIHNob3Vs
ZEJlVHJ1ZSgicmVxdWVzdEZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiYnViYmxlRmlyZWQi
KTsKLSAgICBzaG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVkIik7Ci0gICAgZGVidWcoIiIpOwot
Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgcmV0dXJuOwotfQotCi10ZXN0KCk7Ci0KLQotPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JlcXVlc3QtZXZlbnQtcHJvcGFnYXRpb24u
anMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY29uc3RhbnRzLmpzIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2NvbnN0YW50cy5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44YTUyOWMwYmYxMjNiNmE2Y2RiYWJiY2JiNWJhODExN2FkNDc3YWFjCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2NvbnN0YW50cy5q
cwpAQCAtMCwwICsxLDM5IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0
U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAg
ICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5k
ZXhlZERCJ3MgY29uc3RhbnRzLiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVW
ZW5kb3JQcmVmaXhlcygpOworICAgIHNob3VsZEJlKCJJREJEYXRhYmFzZUV4Y2VwdGlvbi5VTktO
T1dOX0VSUiIsICIxIik7CisgICAgc2hvdWxkQmUoIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PTl9U
UkFOU0lFTlRfRVJSIiwgIjIiKTsKKyAgICBzaG91bGRCZSgiSURCRGF0YWJhc2VFeGNlcHRpb24u
Tk9UX0ZPVU5EX0VSUiIsICIzIik7CisgICAgc2hvdWxkQmUoIklEQkRhdGFiYXNlRXhjZXB0aW9u
LkNPTlNUUkFJTlRfRVJSIiwgIjQiKTsKKyAgICBzaG91bGRCZSgiSURCRGF0YWJhc2VFeGNlcHRp
b24uREFUQV9FUlIiLCAiNSIpOworICAgIHNob3VsZEJlKCJJREJEYXRhYmFzZUV4Y2VwdGlvbi5O
T1RfQUxMT1dFRF9FUlIiLCAiNiIpOworICAgIHNob3VsZEJlKCJJREJEYXRhYmFzZUV4Y2VwdGlv
bi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiLCAiNyIpOworICAgIHNob3VsZEJlKCJJREJEYXRh
YmFzZUV4Y2VwdGlvbi5BQk9SVF9FUlIiLCAiOCIpOworICAgIHNob3VsZEJlKCJJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5SRUFEX09OTFlfRVJSIiwgIjkiKTsKKyAgICBzaG91bGRCZSgiSURCRGF0YWJh
c2VFeGNlcHRpb24uVElNRU9VVF9FUlIiLCAiMTAiKTsKKyAgICBzaG91bGRCZSgiSURCRGF0YWJh
c2VFeGNlcHRpb24uUVVPVEFfRVJSIiwgIjExIik7CisgICAgc2hvdWxkQmUoIklEQkRhdGFiYXNl
RXhjZXB0aW9uLlZFUl9FUlIiLCAiMTIiKTsKKworICAgIHNob3VsZEJlKCJJREJSZXF1ZXN0LkxP
QURJTkciLCAiMSIpOworICAgIHNob3VsZEJlKCJJREJSZXF1ZXN0LkRPTkUiLCAiMiIpOworCisg
ICAgc2hvdWxkQmUoIklEQkN1cnNvci5ORVhUIiwgIjAiKTsKKyAgICBzaG91bGRCZSgiSURCQ3Vy
c29yLk5FWFRfTk9fRFVQTElDQVRFIiwgIjEiKTsKKyAgICBzaG91bGRCZSgiSURCQ3Vyc29yLlBS
RVYiLCAiMiIpOworICAgIHNob3VsZEJlKCJJREJDdXJzb3IuUFJFVl9OT19EVVBMSUNBVEUiLCAi
MyIpOworCisgICAgc2hvdWxkQmUoIklEQlRyYW5zYWN0aW9uLlJFQURfT05MWSIsICIwIik7Cisg
ICAgc2hvdWxkQmUoIklEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUiLCAiMSIpOworICAgIHNob3Vs
ZEJlKCJJREJUcmFuc2FjdGlvbi5WRVJTSU9OX0NIQU5HRSIsICIyIik7Cit9CisKK3Rlc3QoKTsK
KworZmluaXNoSlNUZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2NyZWF0ZS1hbmQtcmVt
b3ZlLW9iamVjdC1zdG9yZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9jcmVhdGUtYW5kLXJlbW92ZS1vYmplY3Qtc3RvcmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjUwOTI5
NDhjMGRiMTkzNjU3ODljOGRjZjkzMmMwYzJkODI5M2VkOAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jcmVhdGUtYW5kLXJlbW92ZS1v
YmplY3Qtc3RvcmUuanMKQEAgLTAsMCArMSw2NiBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykg
eworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0
aW9uKCJUZXN0IEluZGV4ZWREQidzIGNyZWF0ZSBhbmQgcmVtb3ZlT2JqZWN0U3RvcmUiKTsKKwor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2NyZWF0ZS1hbmQtcmVtb3ZlLW9iamVj
dC1zdG9yZScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
b3BlblN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOworICAgIHNlbGYu
ZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICB0ZXN0Q3Jl
YXRlQW5kUmVtb3ZlKCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlc3VsdCA9IGRiLnNl
dFZlcnNpb24oJ3ZlcnNpb24gMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRh
dGFiYXNlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
ICAgIHRlc3RDcmVhdGVBbmRSZW1vdmUoKTsKK30KKworZnVuY3Rpb24gdGVzdENyZWF0ZUFuZFJl
bW92ZSgpCit7CisgICAgZGVidWcoIlRyeWluZyBjcmVhdGUiKTsKKyAgICBldmFsQW5kRXhwZWN0
RXhjZXB0aW9uKCdkYi5jcmVhdGVPYmplY3RTdG9yZSgic29tZSBvcyIpJywgIklEQkRhdGFiYXNl
RXhjZXB0aW9uLk5PVF9BTExPV0VEX0VSUiIpOworICAgIGRlYnVnKCJUcnlpbmcgcmVtb3ZlIik7
CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbignZGIuZGVsZXRlT2JqZWN0U3RvcmUoInNvbWUg
b3MiKScsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9FUlIiKTsKK30KKworZnVu
Y3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsK
KworICAgIG9zID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3RtcCcpIik7Cisg
ICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3RtcCcpIiwg
IklEQkRhdGFiYXNlRXhjZXB0aW9uLkNPTlNUUkFJTlRfRVJSIik7CisgICAgZXZlbnQudGFyZ2V0
LnJlc3VsdC5vbmNvbXBsZXRlID0gc2V0VmVyc2lvbkNvbXBsZXRlOworfQorCitmdW5jdGlvbiBz
ZXRWZXJzaW9uQ29tcGxldGUoKQoreworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBk
Yi50cmFuc2FjdGlvbihbJ3RtcCddKSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFu
cy5vYmplY3RTdG9yZSgndG1wJykuZ2V0KDApIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0
cnlPbmNlTW9yZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gdHJ5T25jZU1vcmUoKQoreworICAgIHNob3VsZEJlVW5kZWZpbmVk
KCJldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICB0ZXN0Q3JlYXRlQW5kUmVtb3ZlKCk7CisK
KyAgICBkZWJ1ZygiVHJ5aW5nIGNyZWF0ZSB3aXRoIHN0b3JlIHRoYXQgYWxyZWFkeSBleGlzdHMi
KTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgndG1w
JykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0FMTE9XRURfRVJSIik7CisgICAgZGVidWco
IlRyeWluZyByZW1vdmUgd2l0aCBzdG9yZSB0aGF0IGFscmVhZHkgZXhpc3RzIik7CisgICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIuZGVsZXRlT2JqZWN0U3RvcmUoJ3RtcCcpIiwgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLk5PVF9BTExPV0VEX0VSUiIpOworCisgICAgZmluaXNoSlNUZXN0KCk7
Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3JlYXRlLW9iamVjdC1zdG9y
ZS1vcHRpb25zLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2Ny
ZWF0ZS1vYmplY3Qtc3RvcmUtb3B0aW9ucy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOGM2YTRjMGUzZWYyMGM0
NjdjODc1YWNiOTdiZjE1N2FmMTJkMTc0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2NyZWF0ZS1vYmplY3Qtc3RvcmUtb3B0aW9ucy5q
cwpAQCAtMCwwICsxLDgxIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0
U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAg
ICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5k
ZXhlZERCJ3MgY3JlYXRlT2JqZWN0U3RvcmUncyB2YXJpb3VzIG9wdGlvbnMiKTsKKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignY3JlYXRlLW9iamVjdC1zdG9yZS1vcHRpb25z
JywgJ2Rlc2NyaXB0aW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNz
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
ZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNs
ZWFuRGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRlbGV0ZUFsbE9iamVj
dFN0b3JlcyhkYik7CisKKyAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnYScs
IHtrZXlQYXRoOiAnYSd9KSIpOworICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdiJykiKTsKKworICAgIGRlYnVnKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnYycsIHthdXRvSW5j
cmVtZW50OiB0cnVlfSk7Iik7CisgICAgZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2MnLCB7YXV0b0lu
Y3JlbWVudDogdHJ1ZX0pOworICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25jb21wbGV0ZSA9IHNl
dFZlcnNpb25Db21wbGV0ZTsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbkNvbXBsZXRlKCkKK3sK
KyAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydhJywgJ2In
XSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICBzaG91bGRCZSgidHJhbnMubW9k
ZSIsICJJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFIik7CisKKyAgICByZXEgPSBldmFsQW5kTG9n
KCJ0cmFucy5vYmplY3RTdG9yZSgnYScpLnB1dCh7J2EnOiAwfSkiKTsKKyAgICByZXEub25zdWNj
ZXNzID0gcHV0QjsKKyAgICByZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbkNsYXNzKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgn
ZCcsICdiYXInKTsiLCAiVHlwZUVycm9yIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbkNs
YXNzKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnZScsIGZhbHNlKTsiLCAiVHlwZUVycm9yIik7Cit9
CisKK2Z1bmN0aW9uIHB1dEIoKQoreworICAgIHJlcSA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVj
dFN0b3JlKCdiJykucHV0KHsnYSc6IDB9LCAwKSIpOyAgLy8gT09QUworICAgIHJlcS5vbnN1Y2Nl
c3MgPSBnZXRBOworICAgIHJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIGdldEEoKQoreworICAgIHJlcSA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVj
dFN0b3JlKCdhJykuZ2V0KDApIik7CisgICAgcmVxLm9uc3VjY2VzcyA9IGdldEI7CisgICAgcmVx
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZ2V0Qigp
Cit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQuYSIsICJ7YTogMH0iKTsKKwor
ICAgIHJlcSA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdiJykuZ2V0KDApIik7Cisg
ICAgcmVxLm9uc3VjY2VzcyA9IGNoZWNrQjsKKyAgICByZXEub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjaGVja0IoKQoreworICAgIHNob3VsZEJlKCJl
dmVudC50YXJnZXQucmVzdWx0LmEiLCAie2E6IDB9Iik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsK
K30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jcmVhdGVPYmplY3RTdG9yZS1u
YW1lLWFyZ3VtZW50LXJlcXVpcmVkLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL2NyZWF0ZU9iamVjdFN0b3JlLW5hbWUtYXJndW1lbnQtcmVxdWlyZWQuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZDk1OWZhNzIwZTJjNDNjMGJkYThhNmU1ODkyNjY2NTgyNzg4NDMwNgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jcmVh
dGVPYmplY3RTdG9yZS1uYW1lLWFyZ3VtZW50LXJlcXVpcmVkLmpzCkBAIC0wLDAgKzEsMzYgQEAK
K2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3No
YXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgY3JlYXRlT2JqZWN0
U3RvcmUgbmFtZSBhcmd1bWVudCBpcyByZXF1aXJlZCIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sK
KyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24u
cGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkK
K3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0
aW9uIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQoreworICAgIGRlbGV0ZUFsbE9iamVj
dFN0b3JlcyhkYik7CisKKyAgICBzaG91bGRUaHJvdygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoKTsi
KTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9jcmVhdGVPYmplY3RTdG9yZS1udWxsLW5hbWUuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvY3JlYXRlT2JqZWN0U3RvcmUtbnVsbC1uYW1lLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmUxNTVhNTAzOGQ2ZTAwYTk2ZjJmODViZGZjZDhiNjM3YWMyNWI5ZTkKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3JlYXRl
T2JqZWN0U3RvcmUtbnVsbC1uYW1lLmpzCkBAIC0wLDAgKzEsMzcgQEAKK2lmICh0aGlzLmltcG9y
dFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQor
CitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgY3JlYXRlT2JqZWN0U3RvcmUgbnVsbCBoYW5k
bGluZyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygp
OworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24g
PSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWRE
Qi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3Bl
blN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRi
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNy
ZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0
U3RvcmUoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBvYmplY3RT
dG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKG51bGwpOyIpOworICAgIHNo
b3VsZEJlKCJvYmplY3RTdG9yZS5uYW1lIiwgIidudWxsJyIpOworICAgIGZpbmlzaEpTVGVzdCgp
OworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1jb250aW51ZS5q
cyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItY29udGlu
dWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODRiMGVmOGE3OGZmNDdlYzYzZjA0NThjM2RlNjAwMmRjZTU1Mzk0
ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9jdXJzb3ItY29udGludWUuanMKQEAgLTAsMCArMSwyNzAgQEAKK2lmICh0aGlzLmltcG9y
dFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQor
CitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBJREJDdXJzb3IuY29udGludWUoKSB3aXRo
IGEga2V5IHBhcmFtZXRlci4iKTsKKwordmFyIGRhdGUgPSBuZXcgRGF0ZSgpOworCisvLyBJbiBv
cmRlciBvZiBob3cgaXQgc2hvdWxkIGJlIHNvcnRlZCBieSBJbmRleGVkREIuCitzZWxmLnRlc3RE
YXRhID0gWworICAgIDAsCisgICAgMSwKKyAgICAxLAorICAgIDMuMTQxNTksCisgICAgMy4xNDE1
OSwKKyAgICAxMCwKKyAgICAxMSwKKyAgICAxMiwKKyAgICAxMywKKyAgICBkYXRlLAorICAgIGRh
dGUsCisgICAgbmV3IERhdGUoZGF0ZS52YWx1ZU9mKCkgKyAxMDAwKSwKKyAgICAiQSBiaWcgc3Ry
aW5nIiwKKyAgICAiQSBiaWcgc3RyaW5nIiwKKyAgICAiQSBiaXQxIiwKKyAgICAiQSBiaXQyIiwK
KyAgICAiQSBiaXQzIiwKKyAgICAidGhlIEJJR0dFU1Qgc3RyaW5nIgorXTsKKworZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBvcGVuRGF0YWJhc2Uo
KTsKK30KKworZnVuY3Rpb24gb3BlbkRhdGFiYXNlKCkKK3sKKyAgICByZXN1bHQgPSBldmFsQW5k
TG9nKCJpbmRleGVkREIub3BlbignY3Vyc29yLWNvbnRpbnVlJykiKTsKKyAgICByZXN1bHQub25z
dWNjZXNzID0gc2V0VmVyc2lvbjsKKyAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uKCkKK3sKKyAgICBzZWxmLmRiID0g
ZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXN1bHQgPSBl
dmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgcmVzdWx0Lm9u
c3VjY2VzcyA9IGRlbGV0ZUV4aXN0aW5nOworICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKK3sKKyAgICBz
ZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Cisg
ICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1
bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7
CisKKyAgICBzZWxmLm9iamVjdFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ3NvbWVPYmplY3RTdG9yZScpIik7CisgICAgc2VsZi5pbmRleE9iamVjdCA9IGV2YWxBbmRM
b2coIm9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdzb21lSW5kZXgnLCAneCcpIik7CisgICAgc2Vs
Zi5uZXh0VG9BZGQgPSAwOworICAgIGFkZERhdGEoKTsKK30KKworZnVuY3Rpb24gYWRkRGF0YSgp
Cit7CisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKHsneCc6IHRlc3RE
YXRhW25leHRUb0FkZF19LCBuZXh0VG9BZGQpIik7CisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9ICsr
c2VsZi5uZXh0VG9BZGQgPCB0ZXN0RGF0YS5sZW5ndGggPyBhZGREYXRhIDogYXNjZW5kaW5nVGVz
dDsKKyAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiBhc2NlbmRpbmdUZXN0KCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgdmFyIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5vcGVuS2V5Q3Vyc29yKG51bGwsIElEQkN1cnNv
ci5ORVhUKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYXNjZW5kaW5nQ2FsbGJhY2s7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgc2VsZi5z
dGFnZSA9IDA7Cit9CisKK2Z1bmN0aW9uIGFzY2VuZGluZ0NhbGxiYWNrKCkKKworeworICAgIGlm
IChzZWxmLnN0YWdlID09IDApIHsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1
bHQucHJpbWFyeUtleSIsICIwIik7CisgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5y
ZXN1bHQuY29udGludWUoMy4xNDE1OSkiKTsKKyAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0g
MSkgeworICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5Iiwg
IjMiKTsKKyAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgp
Iik7CisgICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDIpIHsKKyAgICAgICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICI0Iik7CisgICAgICAgIGV2YWxBbmRM
b2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOworICAgIH0gZWxzZSBpZiAoc2Vs
Zi5zdGFnZSA9PSAzKSB7CisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnBy
aW1hcnlLZXkiLCAiNSIpOworICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0
LmNvbnRpbnVlKDEyKSIpOworICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSA0KSB7CisgICAg
ICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiNyIpOworICAg
ICAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKGRhdGUpIik7Cisg
ICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDUpIHsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50
LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICI5Iik7CisgICAgICAgIGV2YWxBbmRMb2coImV2
ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOworICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFn
ZSA9PSA2KSB7CisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlL
ZXkiLCAiMTAiKTsKKyAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250
aW51ZSgpIik7CisgICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDcpIHsKKyAgICAgICAgc2hv
dWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIxMSIpOworICAgICAgICBl
dmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCdBIGJpdDEnKSIpOworICAg
IH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSA4KSB7CisgICAgICAgIHNob3VsZEJlKCJldmVudC50
YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMTQiKTsKKyAgICAgICAgZXZhbEFuZExvZygiZXZl
bnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgnQSBiaXQzJykiKTsKKyAgICB9IGVsc2UgaWYgKHNl
bGYuc3RhZ2UgPT0gOSkgeworICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5w
cmltYXJ5S2V5IiwgIjE2Iik7CisgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1
bHQuY29udGludWUoJ3RoZSBCSUdHRVNUIHN0cmluZycpIik7CisgICAgfSBlbHNlIGlmIChzZWxm
LnN0YWdlID09IDEwKSB7CisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnBy
aW1hcnlLZXkiLCAiMTciKTsKKyAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3Vs
dC5jb250aW51ZSgpIik7CisgICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDExKSB7CisgICAg
ICAgIHNob3VsZEJlTnVsbCgiZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgICAgICBkZXNjZW5k
aW5nVGVzdCgpOworICAgICAgICByZXR1cm47CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdEZh
aWxlZCgiSWxsZWdhbCBzdGFnZS4iKTsKKyAgICB9CisgICAgc2VsZi5zdGFnZSsrOworfQorCitm
dW5jdGlvbiBkZXNjZW5kaW5nVGVzdCgpCit7CisgICAgZGVidWcoIiIpOworICAgIHZhciByZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhPYmplY3Qub3BlbktleUN1cnNvcihudWxsLCBJREJDdXJz
b3IuUFJFVikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlc2NlbmRpbmdDYWxsYmFjazsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBzZWxm
LnN0YWdlID0gMDsKK30KKworZnVuY3Rpb24gZGVzY2VuZGluZ0NhbGxiYWNrKCkKK3sKKyAgICBp
ZiAoc2VsZi5zdGFnZSA9PSAwKSB7CisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVz
dWx0LnByaW1hcnlLZXkiLCAiMTciKTsKKyAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0
LnJlc3VsdC5jb250aW51ZSgnQSBiaXQyJykiKTsKKyAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2Ug
PT0gMSkgeworICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5
IiwgIjE1Iik7CisgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGlu
dWUoKSIpOworICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSAyKSB7CisgICAgICAgIHNob3Vs
ZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMTQiKTsKKyAgICAgICAgZXZh
bEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZShkYXRlKSIpOworICAgIH0gZWxz
ZSBpZiAoc2VsZi5zdGFnZSA9PSAzKSB7CisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQu
cmVzdWx0LnByaW1hcnlLZXkiLCAiMTAiKTsKKyAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFy
Z2V0LnJlc3VsdC5jb250aW51ZSgpIik7CisgICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDQp
IHsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICI5
Iik7CisgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoMSki
KTsKKyAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gNSkgeworICAgICAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjIiKTsKKyAgICAgICAgZXZhbEFuZExv
ZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7CisgICAgfSBlbHNlIGlmIChzZWxm
LnN0YWdlID09IDYpIHsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJp
bWFyeUtleSIsICIxIik7CisgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQu
Y29udGludWUoKSIpOworICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSA3KSB7CisgICAgICAg
IHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMCIpOworICAgICAg
ICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKKyAgICB9IGVs
c2UgaWYgKHNlbGYuc3RhZ2UgPT0gOCkgeworICAgICAgICBzaG91bGRCZU51bGwoImV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKKyAgICAgICAgYXNjZW5kaW5nRXJyb3JUZXN0TGVzc1RoYW4oKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQoIklsbGVnYWwg
c3RhZ2UuIik7CisgICAgfQorICAgIHNlbGYuc3RhZ2UrKzsKK30KKworZnVuY3Rpb24gYXNjZW5k
aW5nRXJyb3JUZXN0TGVzc1RoYW4oKQoreworICAgIGRlYnVnKCIiKTsKKyAgICB2YXIgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3IobnVsbCwgSURCQ3Vyc29y
Lk5FWFQpIik7CisgICAgc2VsZi5zdGFnZSA9IDA7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgaWYgKHNlbGYuc3RhZ2UgPT09IDApIHsKKyAgICAgICAgICAgIHNob3VsZEJl
KCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMCIpOworICAgICAgICAgICAgZXZh
bEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgzLjE0MTU5KSIpOworICAgICAg
ICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gMSkgeworICAgICAgICAgICAgc2hvdWxkQmUoImV2
ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIzIik7CisgICAgICAgICAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKDEpIiwgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisgICAgICAgICAgICBhc2NlbmRpbmdFcnJvclRl
c3RFcXVhbCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJJbGxlZ2FsIHN0YWdlLiIpOworICAgICAgICB9CisgICAgICAgIHNl
bGYuc3RhZ2UrKzsKKyAgICB9OworfQorCitmdW5jdGlvbiBhc2NlbmRpbmdFcnJvclRlc3RFcXVh
bCgpCit7CisgICAgZGVidWcoIiIpOworICAgIHZhciByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5k
ZXhPYmplY3Qub3BlbktleUN1cnNvcihudWxsLCBJREJDdXJzb3IuTkVYVCkiKTsKKyAgICBzZWxm
LnN0YWdlID0gMDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAoc2Vs
Zi5zdGFnZSA9PT0gMCkgeworICAgICAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1
bHQucHJpbWFyeUtleSIsICIwIik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJn
ZXQucmVzdWx0LmNvbnRpbnVlKDMuMTQxNTkpIik7CisgICAgICAgIH0gZWxzZSBpZiAoc2VsZi5z
dGFnZSA9PSAxKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5w
cmltYXJ5S2V5IiwgIjMiKTsKKyAgICAgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImV2
ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoMy4xNDE1OSkiLCAiSURCRGF0YWJhc2VFeGNlcHRp
b24uREFUQV9FUlIiKTsKKyAgICAgICAgICAgIGRlc2NlbmRpbmdFcnJvclRlc3RHcmVhdGVyVGhh
bigpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICB0
ZXN0RmFpbGVkKCJJbGxlZ2FsIHN0YWdlLiIpOworICAgICAgICB9CisgICAgICAgIHNlbGYuc3Rh
Z2UrKzsKKyAgICB9OworfQorCitmdW5jdGlvbiBkZXNjZW5kaW5nRXJyb3JUZXN0R3JlYXRlclRo
YW4oKQoreworICAgIGRlYnVnKCIiKTsKKyAgICB2YXIgcmVxdWVzdCA9IGV2YWxBbmRMb2coImlu
ZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3IobnVsbCwgSURCQ3Vyc29yLlBSRVYpIik7CisgICAgc2Vs
Zi5zdGFnZSA9IDA7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKHNl
bGYuc3RhZ2UgPT0gMCkgeworICAgICAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1
bHQucHJpbWFyeUtleSIsICIxNyIpOworICAgICAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFy
Z2V0LnJlc3VsdC5jb250aW51ZSgnQSBiaXQyJykiKTsKKyAgICAgICAgfSBlbHNlIGlmIChzZWxm
LnN0YWdlID09IDEpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0
LnByaW1hcnlLZXkiLCAiMTUiKTsKKyAgICAgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24o
ImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoJ0EgYml0MycpIiwgIklEQkRhdGFiYXNlRXhj
ZXB0aW9uLkRBVEFfRVJSIik7CisgICAgICAgICAgICBkZXNjZW5kaW5nRXJyb3JUZXN0RXF1YWwo
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgdGVz
dEZhaWxlZCgiSWxsZWdhbCBzdGFnZS4iKTsKKyAgICAgICAgfQorICAgICAgICBzZWxmLnN0YWdl
Kys7CisgICAgfTsKK30KKworZnVuY3Rpb24gZGVzY2VuZGluZ0Vycm9yVGVzdEVxdWFsKCkKK3sK
KyAgICBkZWJ1ZygiIik7CisgICAgdmFyIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVj
dC5vcGVuS2V5Q3Vyc29yKG51bGwsIElEQkN1cnNvci5QUkVWKSIpOworICAgIHNlbGYuc3RhZ2Ug
PSAwOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGlmIChzZWxmLnN0YWdl
ID09IDApIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1h
cnlLZXkiLCAiMTciKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1
bHQuY29udGludWUoJ0EgYml0MicpIik7CisgICAgICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9
PSAxKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5
S2V5IiwgIjE1Iik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJn
ZXQucmVzdWx0Iik7CisgICAgICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJldmVudC50
YXJnZXQucmVzdWx0LmNvbnRpbnVlKCdBIGJpdDInKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5E
QVRBX0VSUiIpOworICAgICAgICAgICAgc2VsZi50cmFucy5vbmNvbXBsZXRlID0gb25UcmFuc2Fj
dGlvbkNvbXBsZXRlOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJJbGxlZ2FsIHN0YWdlLiIpOworICAgICAgICB9CisgICAgICAg
IHNlbGYuc3RhZ2UrKzsKKyAgICB9OworfQorCitmdW5jdGlvbiBvblRyYW5zYWN0aW9uQ29tcGxl
dGUoKQoreworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImN1cnNvci5jb250aW51ZSgpIiwg
IklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOworICAgIGZp
bmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWRlbGV0ZS5qcyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItZGVsZXRlLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRi
NmUyYjkzNTQ4YTNhNDlkYjU0YjBkNzIwMDE1ODg0YzEyZWIzMzYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWRlbGV0ZS5q
cwpAQCAtMCwwICsxLDEwNSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9y
dFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Cisg
ICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IElu
ZGV4ZWREQidzIG9wZW5DdXJzb3IuIik7CisKK3Rlc3QoKTsKKworZnVuY3Rpb24gdGVzdCgpCit7
CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
aW5kZXhlZERCLm9wZW4oJ2N1cnNvci1kZWxldGUnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICB2YXIgZGIgPSBldmFs
QW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQorewor
ICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOworICAgIHNlbGYudHJhbnMgPSBldmFs
QW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUo
InRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENh
bGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSBvcGVuQ3Vyc29yOworCisgICAgZGVsZXRl
QWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIHZhciBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2co
Im9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Rlc3QnKSIpOworICAgIGV2YWxB
bmRMb2coIm9iamVjdFN0b3JlLmFkZCgnbXlWYWx1ZTEnLCAnbXlLZXkxJykiKTsKKyAgICBldmFs
QW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ215VmFsdWUyJywgJ215S2V5MicpIik7CisgICAgZXZh
bEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlMycsICdteUtleTMnKSIpOworICAgIGV2
YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnbXlWYWx1ZTQnLCAnbXlLZXk0JykiKTsKK30KKwor
ZnVuY3Rpb24gb3BlbkN1cnNvcigpCit7CisgICAgZGVidWcoIm9wZW5DdXJzb3IxIik7CisgICAg
ZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3Rlc3QnXSwgSURCVHJhbnNhY3Rp
b24uUkVBRF9XUklURSkiKTsKKyAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQo
Im15S2V5MSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgn
dGVzdCcpLm9wZW5DdXJzb3Ioe3JhbmdlOiBrZXlSYW5nZX0pIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBjdXJzb3JTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworICAgIGNvdW50ZXIgPSAxOworfQorCitmdW5jdGlvbiBjdXJzb3JTdWNj
ZXNzKCkKK3sKKyAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBudWxsKSB7CisgICAgICAg
IHNob3VsZEJlKCJjb3VudGVyIiwgIjUiKTsKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InRyYW5zLm9iamVjdFN0b3JlKCd0ZXN0Jykub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKKyAgICAg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3JFbXB0eTsKKyAgICAgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5kZWxldGUoKSIpOworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZSIsICJteVZhbHVlIiAr
IGNvdW50ZXIrKyk7CisgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51
ZSgpIik7Cit9CisKK2Z1bmN0aW9uIGN1cnNvckVtcHR5KCkKK3sKKyAgICBzaG91bGRCZU51bGwo
ImV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gYWRkT2JqZWN0
OworfQorCitmdW5jdGlvbiBhZGRPYmplY3QoKQoreworICAgIGV2YWxBbmRMb2coInRyYW5zID0g
ZGIudHJhbnNhY3Rpb24oWyd0ZXN0J10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Cisg
ICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0
b3JlKCd0ZXN0JykiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRk
KCdteVZhbHVlMScsICdteUtleTEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbkN1
cnNvcjI7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIG9wZW5DdXJzb3IyKCkKK3sKKyAgICBkZWJ1Zygib3BlbkN1cnNvcjIiKTsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUub3BlbkN1cnNvcihrZXlSYW5n
ZSkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZU9iamVjdDsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVsZXRl
T2JqZWN0KCkKK3sKKyAgICBzaG91bGRCZU5vbk51bGwoZXZlbnQudGFyZ2V0LnJlc3VsdCk7Cisg
ICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5kZWxldGUoKSIpOworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5nZXQoJ215S2V5MScpIik7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSB2ZXJpZnlPYmplY3REZWxldGVkOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiB2ZXJpZnlPYmplY3REZWxl
dGVkKCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ1bmRlZmluZWQi
KTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29y
LWluY29uc2lzdGVuY3kuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvY3Vyc29yLWluY29uc2lzdGVuY3kuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTA2Nzc5ZDdiNWUzZjk5ZGY2
YzU4NmVkYzI3ZTc0M2I5ODBlYTViNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItaW5jb25zaXN0ZW5jeS5qcwpAQCAtMCww
ICsxLDg1IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygn
Li4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRT
Y3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgY29uc2lzdGVuY3kg
b2YgSW5kZXhlZERCJ3MgY3Vyc29yIG9iamVjdHMuIik7CisKK3Rlc3QoKTsKKworZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2N1cnNvci1pbmNvbnNpc3RlbmN5JykiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7Cisg
ICAgdmFyIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNp
b25TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKKyAgICBz
ZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Cisg
ICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1
bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gb3BlbkJhc2lj
Q3Vyc29yOworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIHZhciBvYmpl
Y3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUo
J2Jhc2ljU3RvcmUnKSIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnc29tZVZh
bHVlMScsICdzb21lS2V5MScpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOwor
ICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnc29tZVZhbHVlMicsICdzb21lS2V5Micp
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coIm9i
amVjdFN0b3JlLmFkZCgnc29tZVZhbHVlMycsICdzb21lS2V5MycpLm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnc29t
ZVZhbHVlNCcsICdzb21lS2V5NCcpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIp
OworCit9CisKK2Z1bmN0aW9uIG9wZW5CYXNpY0N1cnNvcigpCit7CisgICAgZGVidWcoIm9wZW5C
YXNpY0N1cnNvcigpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihb
J2Jhc2ljU3RvcmUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICB0cmFucy5v
bmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9
IHRyYW5zYWN0aW9uQ29tcGxldGU7CisKKyAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2Vy
Qm91bmQoInNvbWVLZXkxIik7CisgICAgc2VsZi5vYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coInRy
YW5zLm9iamVjdFN0b3JlKCdiYXNpY1N0b3JlJykiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
Zygib2JqZWN0U3RvcmUub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGNoZWNrQ3Vyc29yOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworICAgIGNvdW50ZXIgPSAxOworfQorCitzdG9yZWRDdXJzb3IgPSBudWxsOwor
ZnVuY3Rpb24gY2hlY2tDdXJzb3IoKQoreworICAgIGRlYnVnKCIiKQorICAgIGRlYnVnKCJjaGVj
a0N1cnNvcigpIik7CisgICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkgeworICAg
ICAgICBzaG91bGRCZSgiY291bnRlciIsICI1Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgaWYgKHN0b3JlZEN1cnNvciA9PSBudWxsKQorICAgICAgc3RvcmVkQ3Vyc29yID0gZXZhbEFu
ZExvZygic3RvcmVkQ3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgc2hvdWxk
QmVUcnVlKCJzdG9yZWRDdXJzb3IgPT09IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoInN0b3JlZEN1cnNvci5rZXkiLCAic29tZUtleSIgKyBjb3VudGVy
KTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5Iiwg
InNvbWVLZXkiICsgY291bnRlcik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzdG9yZWRD
dXJzb3IudmFsdWUiLCAic29tZVZhbHVlIiArIGNvdW50ZXIpOworICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZSIsICJzb21lVmFsdWUiICsgY291bnRl
cik7CisgICAgY291bnRlcisrOworICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQu
Y29udGludWUoKSIpOworfQorCitmdW5jdGlvbiB0cmFuc2FjdGlvbkNvbXBsZXRlKCkKK3sKKyAg
ICBkZWJ1ZygidHJhbnNhY3Rpb25Db21wbGV0ZSgpIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1pbmRleC1kZWxldGUuanMgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWluZGV4LWRlbGV0ZS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42YmVlZWEyM2ExMGZmODMxNmE0MDU1Mzk5MWQyOWJlNWJjODYyNzBlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1
cnNvci1pbmRleC1kZWxldGUuanMKQEAgLTAsMCArMSwxMDkgQEAKK2lmICh0aGlzLmltcG9ydFNj
cmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitk
ZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBvcGVuQ3Vyc29yLiIpOworCit0ZXN0KCk7CisK
K2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdjdXJzb3ItaW5kZXgtZGVsZXRlJyki
KTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2Vz
cygpCit7CisgICAgdmFyIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNp
b24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IHNldFZlcnNpb25TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToi
KTsKKyAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVz
dWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9u
YWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0g
b3BlbkN1cnNvcjsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBvYmpl
Y3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUo
J3Rlc3QnKSIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCd0ZXN0
SW5kZXgnLCAneCcpIik7CisKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoe3g6IDF9
LCAnbXlLZXkxJykiKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoe3g6IDJ9LCAn
bXlLZXkyJykiKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoe3g6IDN9LCAnbXlL
ZXkzJykiKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoe3g6IDR9LCAnbXlLZXk0
JykiKTsKK30KKworZnVuY3Rpb24gb3BlbkN1cnNvcigpCit7CisgICAgZGVidWcoIm9wZW5DdXJz
b3IxIik7CisgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3Rlc3QnXSwg
SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICBrZXlSYW5nZSA9IElEQktleVJhbmdl
Lmxvd2VyQm91bmQoMSk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0
b3JlKCd0ZXN0JykuaW5kZXgoJ3Rlc3RJbmRleCcpLm9wZW5DdXJzb3Ioa2V5UmFuZ2UpIik7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3JTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIGNvdW50ZXIgPSAxOworfQorCitmdW5j
dGlvbiBjdXJzb3JTdWNjZXNzKCkKK3sKKyAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBu
dWxsKSB7CisgICAgICAgIHNob3VsZEJlKCJjb3VudGVyIiwgIjUiKTsKKyAgICAgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCd0ZXN0JykuaW5kZXgoJ3Rlc3RJbmRl
eCcpLm9wZW5DdXJzb3Ioa2V5UmFuZ2UpIik7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
Y3Vyc29yRW1wdHk7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHZhciBkZWxldGVSZXF1ZXN0ID0g
ZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5kZWxldGUoKSIpOworICAgIGRlbGV0ZVJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHNob3VsZEJlKCJl
dmVudC50YXJnZXQucmVzdWx0LmtleSIsICJjb3VudGVyKysiKTsKKyAgICBldmFsQW5kTG9nKCJl
dmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKK30KKworZnVuY3Rpb24gY3Vyc29yRW1w
dHkoKQoreworICAgIHNob3VsZEJlTnVsbCgiZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHRy
YW5zLm9uY29tcGxldGUgPSBhZGRPYmplY3Q7Cit9CisKK2Z1bmN0aW9uIGFkZE9iamVjdCgpCit7
CisgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3Rlc3QnXSwgSURCVHJh
bnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9i
amVjdFN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3Rlc3QnKSIpOworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoe3g6IDF9LCAnbXlLZXkxJykiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IG9wZW5DdXJzb3IyOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuQ3Vyc29yMigpCit7CisgICAg
ZGVidWcoIm9wZW5DdXJzb3IyIik7CisgICAgZXZhbEFuZExvZygiaW5kZXggPSBldmVudC50YXJn
ZXQuc291cmNlLmluZGV4KCd0ZXN0SW5kZXgnKSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJpbmRleC5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZGVsZXRlT2JqZWN0OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworfQorCitmdW5jdGlvbiBkZWxldGVPYmplY3QoKQoreworICAgIHNob3VsZEJlTm9uTnVs
bChldmVudC50YXJnZXQucmVzdWx0KTsKKyAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVz
dWx0LmRlbGV0ZSgpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4LmdldCgxKSIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdmVyaWZ5T2JqZWN0RGVsZXRlZDsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gdmVy
aWZ5T2JqZWN0RGVsZXRlZCgpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQi
LCAidW5kZWZpbmVkIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL2N1cnNvci1rZXktb3JkZXIuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvY3Vyc29yLWtleS1vcmRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NWMyMTk5M2ZkNzIw
YWFmNzU1MDc2OTQxMWVlYWJiNTZmNGM0MDY3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1rZXktb3JkZXIuanMKQEAgLTAs
MCArMSwyMjUgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRz
KCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9y
dFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIg
a2V5cyBvcmRlcmluZyBhbmQgcmVhZGJhY2sgZnJvbSBjdXJzb3JzLiIpOworCitmdW5jdGlvbiB0
ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgcHJlcGFyZURhdGFi
YXNlKCk7Cit9CisKK2Z1bmN0aW9uIHByZXBhcmVEYXRhYmFzZSgpCit7CisgICAgZGVidWcoIiIp
OworICAgIGV2YWxBbmRMb2coIm9wZW5yZXEgPSBpbmRleGVkREIub3BlbignY3Vyc29yLWtleS1v
cmRlcicpIik7CisgICAgb3BlbnJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CisgICAgb3BlbnJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZXZhbEFuZExv
ZygiZGIgPSBvcGVucmVxLnJlc3VsdCIpOworICAgICAgICBldmFsQW5kTG9nKCJ2ZXJyZXEgPSBk
Yi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICAgICAgdmVycmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKKyAgICAgICAgdmVycmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsK
KyAgICAgICAgICAgIHZlcnJlcS5yZXN1bHQub25jb21wbGV0ZSA9IHBvcHVsYXRlU3RvcmU7Cisg
ICAgICAgIH07CisgICAgfTsKK30KKworc2VsZi5rZXlzID0gWworICAgICItSW5maW5pdHkiLAor
ICAgICItTnVtYmVyLk1BWF9WQUxVRSIsCisgICAgIi0xIiwKKyAgICAiLU51bWJlci5NSU5fVkFM
VUUiLAorICAgICIwIiwKKyAgICAiTnVtYmVyLk1JTl9WQUxVRSIsCisgICAgIjEiLAorICAgICJO
dW1iZXIuTUFYX1ZBTFVFIiwKKyAgICAiSW5maW5pdHkiLAorCisgICAgIm5ldyBEYXRlKDApIiwK
KyAgICAibmV3IERhdGUoMTAwMCkiLAorICAgICJuZXcgRGF0ZSgxMzE3Mzk5OTMxMDIzKSIsCisK
KyAgICAiJyciLAorICAgICInXHgwMCciLAorICAgICInYSciLAorICAgICInYWEnIiwKKyAgICAi
J2InIiwKKyAgICAiJ2JhJyIsCisKKyAgICAiJ1x4QTInIiwgLy8gVSswMEEyIENFTlQgU0lHTgor
ICAgICInXHU2QzM0JyIsIC8vIFUrNkMzNCBDSksgVU5JRklFRCBJREVPR1JBUEggKHdhdGVyKQor
ICAgICInXHVEODM0XHVERDFFJyIsIC8vIFUrMUQxMUUgTVVTSUNBTCBTWU1CT0wgRy1DTEVGIChV
VEYtMTYgc3Vycm9nYXRlIHBhaXIpCisgICAgIidcdUZGRkQnIiwgLy8gVStGRkZEIFJFUExBQ0VN
RU5UIENIQVJBQ1RFUgorCisgICAgIltdIiwKKworICAgICJbLUluZmluaXR5XSIsCisgICAgIlst
TnVtYmVyLk1BWF9WQUxVRV0iLAorICAgICJbLTFdIiwKKyAgICAiWy1OdW1iZXIuTUlOX1ZBTFVF
XSIsCisgICAgIlswXSIsCisgICAgIltOdW1iZXIuTUlOX1ZBTFVFXSIsCisgICAgIlsxXSIsCisg
ICAgIltOdW1iZXIuTUFYX1ZBTFVFXSIsCisgICAgIltJbmZpbml0eV0iLAorCisgICAgIltuZXcg
RGF0ZSgwKV0iLAorICAgICJbbmV3IERhdGUoMTAwMCldIiwKKyAgICAiW25ldyBEYXRlKDEzMTcz
OTk5MzEwMjMpXSIsCisKKyAgICAiWycnXSIsCisgICAgIlsnXHgwMCddIiwKKyAgICAiWydhJ10i
LAorICAgICJbJ2FhJ10iLAorICAgICJbJ2InXSIsCisgICAgIlsnYmEnXSIsCisKKyAgICAiWydc
eEEyJ10iLCAvLyBVKzAwQTIgQ0VOVCBTSUdOCisgICAgIlsnXHU2QzM0J10iLCAvLyBVKzZDMzQg
Q0pLIFVOSUZJRUQgSURFT0dSQVBIICh3YXRlcikKKyAgICAiWydcdUQ4MzRcdUREMUUnXSIsIC8v
IFUrMUQxMUUgTVVTSUNBTCBTWU1CT0wgRy1DTEVGIChVVEYtMTYgc3Vycm9nYXRlIHBhaXIpCisg
ICAgIlsnXHVGRkZEJ10iLCAvLyBVK0ZGRkQgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSCisKKyAgICAi
W1tdXSIsCisKKyAgICAiW1tdLCBbXV0iLAorICAgICJbW10sIFtdLCBbXV0iLAorCisgICAgIltb
W11dXSIsCisgICAgIltbW1tdXV1dIgorXTsKKworZnVuY3Rpb24gY29tcGFyZShhLCBiKQorewor
ICAgIGlmICh0eXBlb2YgYSAhPT0gdHlwZW9mIGIpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIHN3aXRjaCAodHlwZW9mIGEpIHsKKyAgICAgICAgY2FzZSAndW5kZWZpbmVk
JzogLy8gTm90IHZhbGlkIGtleXMsIGJ1dCBjb21wYXJlIGFueXdheS4KKyAgICAgICAgY2FzZSAn
Ym9vbGVhbic6IC8vIE5vdCB2YWxpZCBrZXlzLCBidXQgY29tcGFyZSBhbnl3YXkuCisgICAgICAg
IGNhc2UgJ3N0cmluZyc6CisgICAgICAgICAgICByZXR1cm4gYSA9PT0gYjsKKyAgICAgICAgY2Fz
ZSAnbnVtYmVyJzoKKyAgICAgICAgICAgIGlmIChhID09PSBiKSB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIChhICE9PSAwKSB8fCAoMSAvIGEgPT09IDEgLyBiKTsgLy8gMCBpc24ndCAtMAorICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gYSAhPT0gYSAmJiBiICE9
PSBiOyAvLyBOYU4gaXMgTmFOCisgICAgICAgICAgICB9CisgICAgICAgIGNhc2UgJ29iamVjdCc6
CisgICAgICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIERhdGUgJiYgYiBpbnN0YW5jZW9mIERhdGUp
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gK2EgPT09ICtiOworICAgICAgICAgICAgfSBlbHNl
IGlmIChhIGluc3RhbmNlb2YgQXJyYXkgJiYgYiBpbnN0YW5jZW9mIEFycmF5KSB7CisgICAgICAg
ICAgICAgICAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aCkgeworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBpZiAo
IWNvbXBhcmUoYVtpXSwgYltpXSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIEZvciB0
aGUgcHVycG9zZXMgb2YgdGhpcyB0ZXN0LCBvdGhlciBvYmplY3RzIGRvbid0IGNvdW50CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorfQorCitmdW5jdGlvbiBwb3B1bGF0ZVN0b3JlKCkKK3sKKyAgICBk
ZWJ1ZygiIik7CisgICAgZGVidWcoInBvcHVsYXRpbmcgc3RvcmUuLi4iKTsKKyAgICBldmFsQW5k
TG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURf
V1JJVEUpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3Rv
cmUnKTsiKTsKKyAgICB0cmFucy5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cisg
ICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHZhciBjb3Vu
dCA9IDA7CisgICAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uKGtleSkgeworICAgICAgICBldmFsQW5k
TG9nKCJzdG9yZS5wdXQoIiArIChjb3VudCsrKSArICIsICIgKyBrZXkgKyAiKSIpOworICAgIH0p
OworICAgIHRyYW5zLm9uY29tcGxldGUgPSBjaGVja1N0b3JlOworfQorCitmdW5jdGlvbiBjaGVj
a1N0b3JlKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIml0ZXJhdGluZyBjdXJzb3Iu
Li4iKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElE
QlRyYW5zYWN0aW9uLlJFQURfT05MWSkiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5z
Lm9iamVjdFN0b3JlKCdzdG9yZScpOyIpOworICAgIHRyYW5zLm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJh
Y2s7CisgICAgZXZhbEFuZExvZygiY291bnQgPSAwIik7CisgICAgY3VycmVxID0gZXZhbEFuZExv
ZygiY3VycmVxID0gc3RvcmUub3BlbkN1cnNvcigpIik7CisgICAgY3VycmVxLm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBjdXJyZXEub25zdWNjZXNzID0gZnVuY3Rpb24o
KSB7CisgICAgICAgIGlmIChjdXJyZXEucmVzdWx0KSB7CisgICAgICAgICAgICBldmFsQW5kTG9n
KCJjdXJzb3IgPSBjdXJyZXEucmVzdWx0Iik7CisgICAgICAgICAgICBzaG91bGRCZVRydWUoImNv
bXBhcmUoY3Vyc29yLmtleSwgIiArIGtleXNbY291bnRdICsgIikiKTsKKyAgICAgICAgICAgIGV2
YWxBbmRMb2coImdldHJlcSA9IHN0b3JlLmdldChjdXJzb3Iua2V5KSIpOworICAgICAgICAgICAg
Z2V0cmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgICAgIGdl
dHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBzaG91bGRCZVRy
dWUoImdldHJlcS5yZXN1bHQgPT09IGNvdW50KysiKTsKKyAgICAgICAgICAgICAgICBjdXJzb3Iu
Y29udGludWUoKTsKKyAgICAgICAgICAgIH07CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBzaG91bGRCZVRydWUoImNvdW50ID09PSBrZXlzLmxlbmd0aCIpOworICAgICAgICAgICAgZmlu
aXNoVXAoKTsKKyAgICAgICAgfQorICAgIH07Cit9CisKK2Z1bmN0aW9uIGZpbmlzaFVwKCkKK3sK
KyAgICB0ZXN0S2V5Q29tcGFyZSgpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitmdW5jdGlv
biB0ZXN0S2V5Q29tcGFyZSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ2YWxpZGF0
ZSBjb21wYXJlIGZ1bmN0aW9uIik7CisgICAgdmFyIGNhc2VzID0gWworICAgICAgICAidW5kZWZp
bmVkIiwKKyAgICAgICAgInRydWUiLAorICAgICAgICAiZmFsc2UiLAorICAgICAgICAiMCIsCisg
ICAgICAgICItMCIsCisgICAgICAgICIxMjMiLAorICAgICAgICAiSW5maW5pdHkiLAorICAgICAg
ICAiLUluZmluaXR5IiwKKyAgICAgICAgIk5hTiIsCisgICAgICAgICInJyIsCisgICAgICAgICIn
YWJjJyIsCisgICAgICAgICIneHl6JyIsCisgICAgICAgICJuZXcgRGF0ZSgwKSIsCisgICAgICAg
ICJuZXcgRGF0ZSgxZTMpIiwKKyAgICAgICAgIm5ldyBEYXRlKDFlOSkiLAorICAgICAgICAiW10i
LAorICAgICAgICAiWzEyM10iLAorICAgICAgICAiWydhYmMnXSIsCisgICAgICAgICJbMTIzLCAn
YWJjJ10iLAorICAgICAgICAiWydhYmMnLCAxMjNdIiwKKyAgICAgICAgIltbXV0iLAorICAgICAg
ICAiW1sxMjNdXSIsCisgICAgICAgICJbWydhYmMnXV0iLAorICAgICAgICAiW1sxMjNdLCAnYWJj
J10iLAorICAgICAgICAiW1sxMjNdLCAxMjNdIgorICAgIF07CisKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGNhc2VzLmxlbmd0aDsgKytpKSB7CisgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwg
Y2FzZXMubGVuZ3RoOyArK2opIHsKKyAgICAgICAgICAgIGlmIChpID09PSBqKSB7CisgICAgICAg
ICAgICAgICAgc2hvdWxkQmVUcnVlKCJjb21wYXJlKCIgKyBjYXNlc1tpXSArICIsICIgKyBjYXNl
c1tqXSArICIpIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHNob3Vs
ZEJlRmFsc2UoImNvbXBhcmUoIiArIGNhc2VzW2ldICsgIiwgIiArIGNhc2VzW2pdICsgIikiKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordGVzdCgpOwpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9jdXJzb3ItcHJpbWFyeS1rZXktb3JkZXIuanMgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXByaW1hcnkta2V5LW9yZGVyLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjg5MjkxMGMzNmJkMzRiYmRmODg5ZjM3MmM2NjU2ZTI1ZmM0NmNmNGEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vy
c29yLXByaW1hcnkta2V5LW9yZGVyLmpzCkBAIC0wLDAgKzEsOTggQEAKK2lmICh0aGlzLmltcG9y
dFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQor
CitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgcHJpbWFyeSBrZXkgb3JkZXJpbmcgYW5kIHJl
YWRiYWNrIGZyb20gY3Vyc29ycy4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3Zl
VmVuZG9yUHJlZml4ZXMoKTsKKworICAgIHByZXBhcmVEYXRhYmFzZSgpOworfQorCitmdW5jdGlv
biBwcmVwYXJlRGF0YWJhc2UoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBldmFsQW5kTG9nKCJv
cGVuUmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKCdjdXJzb3ItcHJpbWFyeS1rZXktb3JkZXInKSIp
OworICAgIG9wZW5SZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICBvcGVuUmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZXZhbEFuZExv
ZygiZGIgPSBvcGVuUmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgZXZhbEFuZExvZygidmVyc2lv
bkNoYW5nZVJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICAgICAgdmVyc2lvbkNo
YW5nZVJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICB2
ZXJzaW9uQ2hhbmdlUmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAg
ICAgICAgICAgIGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4Jywg
J2luZGV4S2V5JykiKTsKKworICAgICAgICAgICAgdmVyc2lvbkNoYW5nZVJlcXVlc3QucmVzdWx0
Lm9uY29tcGxldGUgPSBwb3B1bGF0ZVN0b3JlOworICAgICAgICB9OworICAgIH07Cit9CisKK3Nl
bGYua2V5cyA9IFsKKyAgICAiLUluZmluaXR5IiwKKyAgICAiLTIiLAorICAgICItMSIsCisgICAg
IjAiLAorICAgICIxIiwKKyAgICAiMiIsCisgICAgIkluZmluaXR5IiwKKworICAgICInMCciLAor
ICAgICInMSciLAorICAgICInMiciLAorICAgICInQSciLAorICAgICInQiciLAorICAgICInQyci
LAorICAgICInYSciLAorICAgICInYiciLAorICAgICInYyciCitdOworCitmdW5jdGlvbiBwb3B1
bGF0ZVN0b3JlKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInBvcHVsYXRpbmcgc3Rv
cmUuLi4iKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScs
IElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUgPSB0
cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsiKTsKKyAgICB0cmFucy5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENh
bGxiYWNrOworICAgIHZhciBjb3VudCA9IDA7CisgICAgdmFyIGluZGV4S2V5ID0gMDsKKyAgICB2
YXIga2V5cyA9IHNlbGYua2V5cy5zbGljZSgpOworICAgIGtleXMucmV2ZXJzZSgpOworICAgIGtl
eXMuZm9yRWFjaChmdW5jdGlvbihrZXkpIHsKKyAgICAgICAgdmFyIHZhbHVlID0geyBpbmRleEtl
eTogaW5kZXhLZXksIGNvdW50OiBjb3VudCsrIH07CisgICAgICAgIGV2YWxBbmRMb2coInN0b3Jl
LnB1dCgiICsgSlNPTi5zdHJpbmdpZnkodmFsdWUpICsgIiwgIiArIGtleSArICIpIik7CisgICAg
fSk7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IGNoZWNrU3RvcmU7Cit9CisKK2Z1bmN0aW9uIGNo
ZWNrU3RvcmUoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiaXRlcmF0aW5nIGN1cnNv
ci4uLiIpOworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywg
SURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJh
bnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7Iik7CisgICAgZXZhbEFuZExvZygiaW5kZXggPSBzdG9y
ZS5pbmRleCgnaW5kZXgnKTsiKTsKKyAgICB0cmFucy5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwor
ICAgIGN1cnNvclJlcXVlc3QgPSBldmFsQW5kTG9nKCJjdXJzb3JSZXF1ZXN0ID0gaW5kZXgub3Bl
bkN1cnNvcigpIik7CisgICAgZXZhbEFuZExvZygiY291bnQgPSAwIik7CisgICAgdmFyIGluZGV4
S2V5ID0gMDsKKyAgICBjdXJzb3JSZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKKyAgICBjdXJzb3JSZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICBpZiAoY3Vyc29yUmVxdWVzdC5yZXN1bHQpIHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1
cnNvciA9IGN1cnNvclJlcXVlc3QucmVzdWx0Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vy
c29yLmtleSIsIFN0cmluZyhpbmRleEtleSkpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNv
ci5wcmltYXJ5S2V5Iiwgc2VsZi5rZXlzW2NvdW50KytdKTsKKyAgICAgICAgICAgIGN1cnNvci5j
b250aW51ZSgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJj
b3VudCA9PT0ga2V5cy5sZW5ndGgiKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgICB9CisgICAgfTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJz
b3ItcmV2ZXJzZS1idWcuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvY3Vyc29yLXJldmVyc2UtYnVnLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwOGVhZGVhOGM4M2RlNDgyZjEw
ZjA4ZDhmMDIzYmJmMGY5YzI5NDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXJldmVyc2UtYnVnLmpzCkBAIC0wLDAgKzEs
MTAxIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3Jp
cHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGtleXMg
b3JkZXJpbmcgYW5kIHJlYWRiYWNrIGZyb20gY3Vyc29ycy4iKTsKKworZnVuY3Rpb24gdGVzdCgp
Cit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIHByZXBhcmVEYXRhYmFzZSgp
OworfQorCitmdW5jdGlvbiBwcmVwYXJlRGF0YWJhc2UoKQoreworICAgIGRlYnVnKCIiKTsKKyAg
ICBldmFsQW5kTG9nKCJvcGVucmVxID0gaW5kZXhlZERCLm9wZW4oJ2N1cnNvci1yZXZlcnNlLWJ1
ZycpIik7CisgICAgb3BlbnJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cisg
ICAgb3BlbnJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZXZhbEFuZExvZygi
ZGIgPSBvcGVucmVxLnJlc3VsdCIpOworICAgICAgICBldmFsQW5kTG9nKCJ2ZXJyZXEgPSBkYi5z
ZXRWZXJzaW9uKCcxJykiKTsKKyAgICAgICAgdmVycmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICAgICAgdmVycmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKyAgICAgICAgICAgIHN0b3JlID0g
ZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAg
ICAgICAgICAgZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4JywgJycpIik7Cisg
ICAgICAgICAgICB2ZXJyZXEucmVzdWx0Lm9uY29tcGxldGUgPSBwb3B1bGF0ZVN0b3JlOworICAg
ICAgICB9OworICAgIH07Cit9CisKK2Z1bmN0aW9uIHBvcHVsYXRlU3RvcmUoKQoreworICAgIGRl
YnVnKCIiKTsKKyAgICBkZWJ1ZygicG9wdWxhdGluZyBzdG9yZS4uLiIpOworICAgIGV2YWxBbmRM
b2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVBRF9X
UklURSkiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9y
ZScpOyIpOworICAgIHRyYW5zLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisKKyAgICBldmFsQW5k
TG9nKCJzdG9yZS5wdXQoMSwgMSkiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoMiwgMiki
KTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoMywgMykiKTsKKyAgICB0cmFucy5vbmNvbXBs
ZXRlID0gdGVzdEN1cnNvcjsKK30KKwordmFyIHRlc3RzID0gWworICAgICAgICAgICAgICAgIHt1
cHBlckJvdW5kOiA3LCBvcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDN9LAorICAgICAgICAgICAgICAg
IHt1cHBlckJvdW5kOiA3LCBvcGVuOiB0cnVlLCAgZXhwZWN0ZWQ6IDN9LAorICAgICAgICAgICAg
ICAgIHt1cHBlckJvdW5kOiAzLCBvcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDN9LAorICAgICAgICAg
ICAgICAgIHt1cHBlckJvdW5kOiAzLCBvcGVuOiB0cnVlLCAgZXhwZWN0ZWQ6IDJ9CisgICAgICAg
ICAgICBdOworCitmdW5jdGlvbiB0ZXN0Q3Vyc29yKCkKK3sKKyAgICBkZWJ1ZygidGVzdEN1cnNv
cigpIik7CisKKyAgICBpZiAodGVzdHMubGVuZ3RoID09PSAwKSB7CisgICAgICAgIGRlYnVnKCJO
byBtb3JlIHRlc3RzLiIpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIHRlc3QgPSB0ZXN0cy5zaGlmdCgpOworCisgICAgZXZhbEFuZExvZygi
dHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkp
Iik7CisgICAgdHJhbnMub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRy
YW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBs
ZXRlID0gdGVzdEN1cnNvcjsKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0
b3JlKCdzdG9yZScpOyIpOworICAgIGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuaW5kZXgoJ2lu
ZGV4Jyk7Iik7CisKKyAgICB2YXIgdGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24oKSB7CisgICAgICAg
IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICAgICAgaWYg
KGN1cnNvciA9PT0gbnVsbCkgeworICAgICAgICAgICAgZGVidWcoImN1cnNvciBzaG91bGQgbm90
IGJlIG51bGwiKTsKKyAgICAgICAgICAgIGZhaWwoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgInRlc3QuZXhwZWN0ZWQi
KTsKKyAgICAgICAgaWYgKCJ2YWx1ZSIgaW4gY3Vyc29yKQorICAgICAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci52YWx1ZSIsICJ0ZXN0LmV4cGVjdGVkIik7CisgICAgICAgIHNob3VsZEJlKCJjdXJz
b3IucHJpbWFyeUtleSIsICJ0ZXN0LmV4cGVjdGVkIik7CisKKyAgICAgICAgLy8gTGV0IHRoZSB0
cmFuc2FjdGlvbiBmaW5pc2guCisgICAgfQorCisgICAgZGVidWcoInVwcGVyQm91bmQ6ICIgKyB0
ZXN0LnVwcGVyQm91bmQgKyAiIG9wZW46ICIgKyB0ZXN0Lm9wZW4gKyAiIGV4cGVjdGVkOiAiICsg
dGVzdC5leHBlY3RlZCk7CisgICAgc3RvcmVSZXEgPSBldmFsQW5kTG9nKCJzdG9yZVJlcSA9IHN0
b3JlLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCh0ZXN0LnVwcGVyQm91bmQsIHRl
c3Qub3BlbiksIElEQkN1cnNvci5QUkVWKSIpOworICAgIHN0b3JlUmVxLm9uc3VjY2VzcyA9IHRl
c3RGdW5jdGlvbjsKKworICAgIGluZGV4UmVxID0gZXZhbEFuZExvZygiaW5kZXhSZXEgPSBpbmRl
eC5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQodGVzdC51cHBlckJvdW5kLCB0ZXN0
Lm9wZW4pLCBJREJDdXJzb3IuUFJFVikiKTsKKyAgICBpbmRleFJlcS5vbnN1Y2Nlc3MgPSB0ZXN0
RnVuY3Rpb247CisKKyAgICBpbmRleEtleVJlcSA9IGV2YWxBbmRMb2coImluZGV4S2V5UmVxID0g
aW5kZXgub3BlbktleUN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKHRlc3QudXBwZXJCb3Vu
ZCwgdGVzdC5vcGVuKSwgSURCQ3Vyc29yLlBSRVYpIik7CisgICAgaW5kZXhLZXlSZXEub25zdWNj
ZXNzID0gdGVzdEZ1bmN0aW9uOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L2N1cnNvci1za2lwLWRlbGV0ZWQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvY3Vyc29yLXNraXAtZGVsZXRlZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MGU0ZDQxYmM1MjQ0
YTVkNTM0OGMxYzAzMTQ5NDgwMTNhNTJiN2Q3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1za2lwLWRlbGV0ZWQuanMKQEAg
LTAsMCArMSwxOTMgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3Jp
cHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGlt
cG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVk
REIncyBjdXJzb3Igc2tpcHMgZGVsZXRlZCBlbnRyaWVzLiIpOworCit2YXIgbmFtZXMgPSBbJ0Fs
cGhhJywgJ0JyYXZvJywgJ0NoYXJsaWUnLCAnRGVsdGEnLCAnRWNobycsICdGb3h0cm90JywgJ0dv
bGYnLAorICAgICAgICAgICAgICdIb3RlbCcsICdJbmRpYScsICdKdWxpZXQnLCAnS2lsbycsICdM
aW1hJywgJ01pa2UnLCAnTm92ZW1iZXInLAorICAgICAgICAgICAgICdPc2NhcicsICdQYXBhJywg
J1F1ZWJlYycsICdSb21lbycsICdTaWVycmEnLCAnVGFuZ28nLCAnVW5pZm9ybScsCisgICAgICAg
ICAgICAgJ1ZpY3RvcicsICdXaGlza2V5JywgJ1gtcmF5JywgJ1lhbmtlZScsICdadWx1J107CisK
K3Rlc3QoKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMo
KTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2N1cnNvci1za2lw
LWRlbGV0ZWQnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IG9wZW5TdWNjZXNzKCkKK3sKKyAgICB2YXIgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9u
KCduZXcgdmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3Vj
Y2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30K
KworZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJzZXRWZXJzaW9u
U3VjY2VzcygpOiIpOworICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Cisg
ICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zLm9u
Y29tcGxldGUgPSBiYXNpY0N1cnNvclRlc3Q7CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMo
ZGIpOworCisgICAgdmFyIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBk
Yi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnLCB7a2V5UGF0aDogJ2lkJ30pIik7CisgICAgZXZh
bEFuZExvZygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ25hbWVJbmRleCcsICduYW1lJykiKTsK
KyAgICByZXNldE9iamVjdFN0b3JlKGZ1bmN0aW9uKCkge30pOworfQorCit2YXIgc2lsZW50RXJy
b3JIYW5kbGVyID0gZnVuY3Rpb24oKSB7IGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IH0KKworZnVu
Y3Rpb24gcmVzZXRPYmplY3RTdG9yZShjYWxsYmFjaykKK3sKKyAgICBkZWJ1ZygiXG5yZXNldE9i
amVjdFN0b3JlKCk6Iik7CisgICAgaWYgKGNhbGxiYWNrID09PSB1bmRlZmluZWQpCisgICAgICAg
IGNhbGxiYWNrID0gZnVuY3Rpb24gKCkge307CisKKyAgICB2YXIgb2JqZWN0U3RvcmUgPSB0cmFu
cy5vYmplY3RTdG9yZSgnc3RvcmUnKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWVzLmxl
bmd0aDsgaSsrKQorICAgICAgICBvYmplY3RTdG9yZS5kZWxldGUoaSkub25lcnJvciA9IHNpbGVu
dEVycm9ySGFuZGxlcjsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsr
KQorICAgICAgICBvYmplY3RTdG9yZS5hZGQoe2lkOiBpLCBuYW1lOiBuYW1lc1tpXX0pLm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKworICAgIGRlYnVnKCIiKTsKKyAgICBjYWxs
YmFjaygpOworfQorCitmdW5jdGlvbiBjb250YWlucyhhcnIsIG9iaikKK3sKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoYXJyW2ldID09IG9i
aikKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3ZhciBjdXJzb3I7Cit2YXIgZGVsZXRlZDsKK3ZhciBzZWVuOworCitmdW5jdGlvbiB0ZXN0
Q3Vyc29yKGRlbGV0ZUxpc3QsIGNyZWF0ZUN1cnNvckNvbW1hbmQsIGNhbGxiYWNrKQoreworICAg
IGRlYnVnKCJcbnRlc3RDdXJzb3IoKToiKTsKKyAgICBkZWxldGVkID0gW107CisgICAgc2VlbiA9
IFtdOworCisgICAgLy8gQ3JlYXRlIHRoZSBjdXJzb3IuCisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coY3JlYXRlQ3Vyc29yQ29tbWFuZCk7CisKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkgeworICAgICAgICAgICAg
Ly8gTWFrZSBzdXJlIHdlIGhhdmUgc2VlbiBldmVyeSBub24tZGVsZXRlZCBpdGVtLgorICAgICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykgeworICAgICAgICAg
ICAgICAgIGlmIChjb250YWlucyhkZWxldGVkLCBpKSkKKyAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgICAgICAgICBpZiAoIWNvbnRhaW5zKHNlZW4sIGkpKQorICAgICAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJDdXJzb3IgZGlkIG5vdCBzZWUgaXRlbSB3aXRoIGlk
OiAiICsgaSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSB1
c2VkIGV2ZXJ5IHJ1bGUgaW4gfGRlbGV0ZUxpc3R8LgorICAgICAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBkZWxldGVMaXN0Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKCFj
b250YWlucyhzZWVuLCBkZWxldGVMaXN0W2ldLmlkKSkKKyAgICAgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiZGVsZXRlTGlzdCBydWxlIHdpdGggaWQ6ICIgKyBkZWxldGVMaXN0W2ldLmlkICsg
IiB3YXMgbmV2ZXIgdXNlZC4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZGVidWco
IiIpOworICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIGN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgICAgIGRl
YnVnKGV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUuaWQgKyAiOiAiICsgZXZlbnQudGFyZ2V0LnJl
c3VsdC52YWx1ZS5uYW1lKTsKKyAgICAgICAgc2Vlbi5wdXNoKGV2ZW50LnRhcmdldC5yZXN1bHQu
dmFsdWUuaWQpOworCisgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBkb24ndCBzZWUgYW55IGRlbGV0
ZWQgaXRlbXMuCisgICAgICAgIGlmIChjb250YWlucyhkZWxldGVkLCBldmVudC50YXJnZXQucmVz
dWx0LnZhbHVlLmlkKSkKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIkN1cnNvciBoaXQgcHJldmlv
dXNseSBkZWxldGVkIGVsZW1lbnQuIik7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBk
ZWxldGVMaXN0Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LnJl
c3VsdC52YWx1ZS5pZCA9PSBkZWxldGVMaXN0W2ldLmlkKSB7CisgICAgICAgICAgICAgICAgLy8g
RGVsZXRlIG9iamVjdHMgdGFyZ2V0ZWQgYnkgdGhpcyBpZC4KKyAgICAgICAgICAgICAgICB2YXIg
dGFyZ2V0cyA9IGRlbGV0ZUxpc3RbaV0udGFyZ2V0czsKKyAgICAgICAgICAgICAgICBmb3IgKHZh
ciBqID0gMDsgaiA8IHRhcmdldHMubGVuZ3RoOyBqKyspIHsKKyAgICAgICAgICAgICAgICAgICAg
ZGVsZXRlZC5wdXNoKHRhcmdldHNbal0pOworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpLmRlbGV0ZSgi
ICsgdGFyZ2V0c1tqXSArICIpIik7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICAgICAgICAgICAgICBpZiAoaiA9
PSB0YXJnZXRzLmxlbmd0aCAtIDEpCisgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGZ1bmN0aW9uKCkgeyBjdXJzb3IuY29udGludWUoKTsgfQorICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgICAgICBjdXJzb3IuY29udGludWUoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGJhc2lj
Q3Vyc29yVGVzdCgpCit7CisgICAgZGVidWcoImJhc2ljQ3Vyc29yVGVzdCgpIik7CisKKyAgICBl
dmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUnXSwgSURCVHJhbnNhY3Rp
b24uUkVBRF9XUklURSkiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2Fs
bGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHRyYW5zYWN0aW9uQ29tcGxldGU7CisKKyAg
ICB2YXIgZGVsZXRlcyA9IFt7aWQ6IDEsIHRhcmdldHM6IFswXX0sCisgICAgICAgICAgICAgICAg
ICAge2lkOiAyLCB0YXJnZXRzOiBbbmFtZXMubGVuZ3RoIC0gMV19LAorICAgICAgICAgICAgICAg
ICAgIHtpZDogMywgdGFyZ2V0czogWzUsNiw3XX0sCisgICAgICAgICAgICAgICAgICAge2lkOiAx
MCwgdGFyZ2V0czogWzEwXX0sCisgICAgICAgICAgICAgICAgICAge2lkOiAxMiwgdGFyZ2V0czog
WzEzXX0sCisgICAgICAgICAgICAgICAgICAge2lkOiAxNSwgdGFyZ2V0czogWzE0XX0sCisgICAg
ICAgICAgICAgICAgICAge2lkOiAyMCwgdGFyZ2V0czogWzE3LDE4XX0KKyAgICAgICAgICAgICAg
ICAgICBdOworCisgICAgdGVzdEN1cnNvcihkZWxldGVzLCAidHJhbnMub2JqZWN0U3RvcmUoJ3N0
b3JlJykub3BlbkN1cnNvcihJREJLZXlSYW5nZS5sb3dlckJvdW5kKDApKSIsIGZ1bmN0aW9uKCkg
eyByZXNldE9iamVjdFN0b3JlKHJldmVyc2VDdXJzb3JUZXN0KTsgfSk7Cit9CisKK2Z1bmN0aW9u
IHJldmVyc2VDdXJzb3JUZXN0KCkKK3sKKyAgICBkZWJ1ZygicmV2ZXJzZUN1cnNvclRlc3QoKToi
KTsKKworICAgIHZhciBkZWxldGVzID0gW3tpZDogMjQsIHRhcmdldHM6IFtuYW1lcy5sZW5ndGgg
LSAxXX0sCisgICAgICAgICAgICAgICAgICAge2lkOiAyMywgdGFyZ2V0czogWzBdfSwKKyAgICAg
ICAgICAgICAgICAgICB7aWQ6IDIyLCB0YXJnZXRzOiBbMjAsIDE5LCAxOF19LAorICAgICAgICAg
ICAgICAgICAgIHtpZDogMTUsIHRhcmdldHM6IFsxNV19LAorICAgICAgICAgICAgICAgICAgIHtp
ZDogMTMsIHRhcmdldHM6IFsxMl19LAorICAgICAgICAgICAgICAgICAgIHtpZDogMTAsIHRhcmdl
dHM6IFsxMV19LAorICAgICAgICAgICAgICAgICAgIHtpZDogNSwgdGFyZ2V0czogWzcsOF19Cisg
ICAgICAgICAgICAgICAgICAgXTsKKworICAgIHRlc3RDdXJzb3IoZGVsZXRlcywgInRyYW5zLm9i
amVjdFN0b3JlKCdzdG9yZScpLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgwKSwg
SURCQ3Vyc29yLlBSRVYpIiwgZnVuY3Rpb24oKSB7IHJlc2V0T2JqZWN0U3RvcmUoaW5kZXhDdXJz
b3JUZXN0KTsgfSk7Cit9CisKK2Z1bmN0aW9uIGluZGV4Q3Vyc29yVGVzdCgpCit7CisgICAgZGVi
dWcoImluZGV4Q3Vyc29yVGVzdCgpOiIpOworCisgICAgdmFyIGRlbGV0ZXMgPSBbe2lkOiAxLCB0
YXJnZXRzOiBbMF19LAorICAgICAgICAgICAgICAgICAgIHtpZDogMiwgdGFyZ2V0czogW25hbWVz
Lmxlbmd0aCAtIDFdfSwKKyAgICAgICAgICAgICAgICAgICB7aWQ6IDMsIHRhcmdldHM6IFs1LDYs
N119LAorICAgICAgICAgICAgICAgICAgIHtpZDogMTAsIHRhcmdldHM6IFsxMF19LAorICAgICAg
ICAgICAgICAgICAgIHtpZDogMTIsIHRhcmdldHM6IFsxM119LAorICAgICAgICAgICAgICAgICAg
IHtpZDogMTUsIHRhcmdldHM6IFsxNF19LAorICAgICAgICAgICAgICAgICAgIHtpZDogMjAsIHRh
cmdldHM6IFsxNywxOF19CisgICAgICAgICAgICAgICAgICAgXTsKKworICAgIHRlc3RDdXJzb3Io
ZGVsZXRlcywgInRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpLmluZGV4KCduYW1lSW5kZXgnKS5v
cGVuQ3Vyc29yKElEQktleVJhbmdlLmxvd2VyQm91bmQoJ0FscGhhJykpIiwgZnVuY3Rpb24oKSB7
IH0pOworfQorCitmdW5jdGlvbiB0cmFuc2FjdGlvbkNvbXBsZXRlKCkKK3sKKyAgICBkZWJ1Zygi
dHJhbnNhY3Rpb25Db21wbGV0ZSgpOiIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItdXBkYXRlLXZhbHVlLWFyZ3VtZW50LXJlcXVpcmVkLmpz
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci11cGRhdGUt
dmFsdWUtYXJndW1lbnQtcmVxdWlyZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTFjMjczZDJiZThiZWNhNmUw
Y2EwZTQ5Y2Q1NDc2Y2E1MDBkNzgzYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItdXBkYXRlLXZhbHVlLWFyZ3VtZW50LXJl
cXVpcmVkLmpzCkBAIC0wLDAgKzEsNzMgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAg
ICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigi
VGVzdCBJbmRleGVkREIgY3Vyc29yLnVwZGF0ZSByZXF1aXJlZCBhcmd1bWVudHMiKTsKKworZnVu
Y3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUg
PSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0
YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBk
ZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0
VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0ZXN0R3JvdXAxOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biB0ZXN0R3JvdXAxKCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAg
b2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnYXV0b0luY3Jl
bWVudCcsIHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9KTsiKTsKKworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICB0ZXN0R3JvdXAyKCk7CisgICAgfQorfQor
CitmdW5jdGlvbiB0ZXN0R3JvdXAyKCkKK3sKKyAgICBrZXlzID0gZXZhbEFuZExvZygia2V5cyA9
IFsxLCAtMSwgMCwgMTAsIDIwMDAsICdxJywgJ3onLCAndHdvJywgJ2InLCAnYSddOyIpOworCisg
ICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDA7Iik7CisKKyAgICBmb3IgKGkg
aW4ga2V5cykgeworICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RT
dG9yZS5hZGQoJ2ZvbycsIGtleXNbaV0pOyIpOworICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KGV2ZW50KSB7CisgICAgICAgIGlmICgrK2tleUluZGV4ID09IGtleXMubGVuZ3RoKSB7CisgICAg
ICAgICAgdGVzdEdyb3VwMygpOworICAgICAgICB9CisgICAgICB9OworICAgIH0KK30KKworZnVu
Y3Rpb24gdGVzdEdyb3VwMygpCit7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAo
ZXZlbnQpIHsKKyAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFy
Z2V0LnJlc3VsdDsiKTsKKyAgICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICAgICAgc2hvdWxk
VGhyb3coImN1cnNvci51cGRhdGUoKTsiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IHRlc3RGYWlsZWQoImN1cnNvciB3YXMgbnVsbCIpOworICAgICAgICB9CisgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgIH0KK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9j
dXJzb3ItdXBkYXRlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L2N1cnNvci11cGRhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGMwZDUxYjEyMWRhYmVjM2VhZWRkYjIzMTlh
MjAzMGMyZjBkZmFkYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItdXBkYXRlLmpzCkBAIC0wLDAgKzEsMjE2IEBACitpZiAo
dGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQu
anMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgY3Vyc29yIHVwZGF0ZS4i
KTsKKwordGVzdCgpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVm
aXhlcygpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignY3Vyc29y
LXVwZGF0ZScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
b3BlblN1Y2Nlc3MoKQoreworICAgIHZhciBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFy
Z2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24o
J25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb25TdWNj
ZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCit7CisgICAgZGVidWcoInNldFZlcnNpb25T
dWNjZXNzKCk6Iik7CisgICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKyAg
ICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25j
b21wbGV0ZSA9IG9wZW5CYXNpY0N1cnNvcjsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jlcyhk
Yik7CisKKyAgICB2YXIgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdiYXNpY1N0b3JlJykiKTsKKyAgICBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZS5hZGQoJ215VmFsdWUxJywgJ215S2V5MScpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnbXlWYWx1ZTIn
LCAnbXlLZXkyJykub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7CisgICAgZXZh
bEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlMycsICdteUtleTMnKS5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5h
ZGQoJ215VmFsdWU0JywgJ215S2V5NCcpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
ayIpOworCisgICAgdmFyIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBk
Yi5jcmVhdGVPYmplY3RTdG9yZSgnYXV0b0luY3JlbWVudFN0b3JlJywge2F1dG9JbmNyZW1lbnQ6
IHRydWV9KSIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnZm9vMScpLm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0
b3JlLmFkZCgnZm9vMicpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOworICAg
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnZm9vMycpLm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnZm9vNCcp
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOworCisgICAgdmFyIG9iamVjdFN0
b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgna2V5
UGF0aFN0b3JlJywge2tleVBhdGg6ICdpZCd9KSIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0
b3JlLmNyZWF0ZUluZGV4KCdudW1iZXJJbmRleCcsICdudW1iZXInKSIpOworICAgIGV2YWxBbmRM
b2coIm9iamVjdFN0b3JlLmFkZCh7bnVtYmVyOiAxLCBpZDogMX0pLm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCh7bnVt
YmVyOiAyLCBpZDogMn0pLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOworICAg
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCh7bnVtYmVyOiAzLCBpZDogM30pLm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3Jl
LmFkZCh7bnVtYmVyOiA0LCBpZDogNH0pLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
ayIpOworfQorCitmdW5jdGlvbiBvcGVuQmFzaWNDdXJzb3IoKQoreworICAgIGRlYnVnKCJvcGVu
QmFzaWNDdXJzb3IoKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24o
WydiYXNpY1N0b3JlJywgJ2F1dG9JbmNyZW1lbnRTdG9yZScsICdrZXlQYXRoU3RvcmUnXSwgSURC
VHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3Rl
ZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHRyYW5zYWN0aW9uQ29tcGxl
dGU7CisKKyAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQoIm15S2V5MSIpOwor
ICAgIHNlbGYub2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYmFz
aWNTdG9yZScpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLm9wZW5D
dXJzb3Ioa2V5UmFuZ2UpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBiYXNpY1VwZGF0ZUN1
cnNvcjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICBjb3VudGVyID0gMTsKK30KKworZnVuY3Rpb24gYmFzaWNVcGRhdGVDdXJzb3IoKQoreworICAg
IGRlYnVnKCJiYXNpY1VwZGF0ZUN1cnNvcigpIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdl
dC5zb3VyY2UiLCAib2JqZWN0U3RvcmUiKTsKKyAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9
PSBudWxsKSB7CisgICAgICAgIHNob3VsZEJlKCJjb3VudGVyIiwgIjUiKTsKKyAgICAgICAgY291
bnRlciA9IDE7CisKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0
b3JlKCdiYXNpY1N0b3JlJykub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKKyAgICAgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBiYXNpY0NoZWNrQ3Vyc29yOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LnVwZGF0ZSgnbXlVcGRh
dGVkVmFsdWUnICsgY291bnRlcisrKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24oKSB7IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5zb3VyY2UuY29udGludWUoKSIpOyB9Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0
aW9uIGJhc2ljQ2hlY2tDdXJzb3IoKQoreworICAgIGRlYnVnKCJiYXNpY0NoZWNrQ3Vyc29yKCki
KTsKKyAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBudWxsKSB7CisgICAgICAgIHNob3Vs
ZEJlKCJjb3VudGVyIiwgIjUiKTsKKyAgICAgICAgY291bnRlciA9IDE7CisKKyAgICAgICAga2V5
UmFuZ2UgPSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKDEpOworICAgICAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2F1dG9JbmNyZW1lbnRTdG9yZScpLm9wZW5DdXJz
b3Ioa2V5UmFuZ2UpIik7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYXV0b0luY3JlbWVu
dFVwZGF0ZUN1cnNvcjsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgIm15S2V5IiArIGNvdW50ZXIpOworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZSIsICJteVVw
ZGF0ZWRWYWx1ZSIgKyBjb3VudGVyKyspOworICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5y
ZXN1bHQuY29udGludWUoKSIpOworfQorCitmdW5jdGlvbiBhdXRvSW5jcmVtZW50VXBkYXRlQ3Vy
c29yKCkKK3sKKyAgICBkZWJ1ZygiYXV0b0luY3JlbWVudFVwZGF0ZUN1cnNvcigpIik7CisgICAg
aWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkgeworICAgICAgICBzaG91bGRCZSgiY291
bnRlciIsICI1Iik7CisgICAgICAgIGNvdW50ZXIgPSAxOworCisgICAgICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYXV0b0luY3JlbWVudFN0b3JlJykub3BlbkN1
cnNvcihrZXlSYW5nZSkiKTsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhdXRvSW5jcmVt
ZW50Q2hlY2tDdXJzb3I7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQudXBkYXRlKCdteVVwZGF0ZWRGb28nICsgY291bnRl
cisrKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7IGV2YWxBbmRMb2co
ImV2ZW50LnRhcmdldC5zb3VyY2UuY29udGludWUoKSIpOyB9CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGF1dG9JbmNyZW1lbnRD
aGVja0N1cnNvcigpCit7CisgICAgZGVidWcoImF1dG9JbmNyZW1lbnRDaGVja0N1cnNvcigpIik7
CisgICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkgeworICAgICAgICBzaG91bGRC
ZSgiY291bnRlciIsICI1Iik7CisgICAgICAgIGNvdW50ZXIgPSAxOworCisgICAgICAgIGtleVJh
bmdlID0gSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgxKTsKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdrZXlQYXRoU3RvcmUnKS5vcGVuQ3Vyc29yKGtleVJh
bmdlKSIpOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGtleVBhdGhVcGRhdGVDdXJzb3I7
CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQu
a2V5IiwgImNvdW50ZXIiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdl
dC5yZXN1bHQudmFsdWUiLCAibXlVcGRhdGVkRm9vIiArIGNvdW50ZXIrKyk7CisgICAgZXZhbEFu
ZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7Cit9CisKK2Z1bmN0aW9uIGtl
eVBhdGhVcGRhdGVDdXJzb3IoKQoreworICAgIGRlYnVnKCJrZXlQYXRoVXBkYXRlQ3Vyc29yKCki
KTsKKyAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBudWxsKSB7CisgICAgICAgIHNob3Vs
ZEJlKCJjb3VudGVyIiwgIjUiKTsKKyAgICAgICAgY291bnRlciA9IDE7CisKKyAgICAgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdrZXlQYXRoU3RvcmUnKS5vcGVu
Q3Vyc29yKGtleVJhbmdlKSIpOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGtleVBhdGhD
aGVja0N1cnNvcjsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJldmVudC50YXJnZXQucmVzdWx0LnVwZGF0ZSh7aWQ6IDEwMCArIGNvdW50ZXIsIG51bWJl
cjogMTAwICsgY291bnRlcn0pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC51cGRhdGUoe2lk
OiBjb3VudGVyLCBudW1iZXI6IDEwMCArIGNvdW50ZXIrK30pIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbigpIHsgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnNvdXJjZS5jb250
aW51ZSgpIikgfTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24ga2V5UGF0aENoZWNrQ3Vyc29yKCkKK3sKKyAgICBkZWJ1Zygia2V5
UGF0aENoZWNrQ3Vyc29yKCkiKTsKKyAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBudWxs
KSB7CisgICAgICAgIHNob3VsZEJlKCJjb3VudGVyIiwgIjUiKTsKKyAgICAgICAgY291bnRlciA9
IDE7CisKKyAgICAgICAga2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKDEwMSk7Cisg
ICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgna2V5UGF0aFN0
b3JlJykuaW5kZXgoJ251bWJlckluZGV4Jykub3BlbktleUN1cnNvcihrZXlSYW5nZSkiKTsKKyAg
ICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBrZXlDdXJzb3I7CisgICAgICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgImNvdW50ZXIiKTsKKyAg
ICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS5pZCIsICJjb3VudGVyIik7Cisg
ICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUubnVtYmVyIiwgKGNvdW50ZXIg
KyAxMDApLnRvU3RyaW5nKCkpOworICAgIGNvdW50ZXIrKzsKKyAgICBldmFsQW5kTG9nKCJldmVu
dC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKK30KKworZnVuY3Rpb24ga2V5Q3Vyc29yKCkK
K3sKKyAgICBkZWJ1Zygia2V5Q3Vyc29yKCkiKTsKKyAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3Vs
dCA9PSBudWxsKSB7CisgICAgICAgIHNob3VsZEJlKCJjb3VudGVyIiwgIjUiKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIs
ICJjb3VudGVyICsgMTAwIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJp
bWFyeUtleSIsICJjb3VudGVyIik7CisKKyAgICB0cnkgeworICAgICAgICBkZWJ1ZygiZXZlbnQu
dGFyZ2V0LnJlc3VsdC51cGRhdGUoe2lkOiBjb3VudGVyLCBudW1iZXI6IGNvdW50ZXIgKyAyMDB9
KSIpOworICAgICAgICBldmVudC50YXJnZXQucmVzdWx0LnVwZGF0ZSh7aWQ6IGNvdW50ZXIsIG51
bWJlcjogY291bnRlciArIDIwMH0pOworICAgICAgICB0ZXN0RmFpbGVkKCJFeHBlY3RlZCBleGNl
cHRpb24uIik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBjb2RlID0gZS5jb2RlOworICAg
ICAgICBzaG91bGRCZSgiY29kZSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9F
UlIiKTsKKyAgICB9CisKKyAgICBjb3VudGVyKys7CisgICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5j
b250aW51ZSgpOworfQorCitmdW5jdGlvbiB0cmFuc2FjdGlvbkNvbXBsZXRlKCkKK3sKKyAgICBk
ZWJ1ZygidHJhbnNhY3Rpb25Db21wbGV0ZSgpIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGEtY29ycnVwdGlvbi5qcyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kYXRhLWNvcnJ1cHRpb24uanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDE1NWI4MzhkMmEwN2E5YzVjZTY0ZDAzYzU2ZGNmODdlMjljNTg2YgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kYXRhLWNvcnJ1cHRp
b24uanMKQEAgLTAsMCArMSw2NSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGlt
cG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7
CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0
IHRoYXQgZGF0YSBpbnNlcnRlZCBpbnRvIEluZGV4ZWREQiBkb2VzIG5vdCBnZXQgY29ycnVwdGVk
IG9uIGRpc2suIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZp
eGVzKCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdkYXRhLWNv
cnJ1cHRpb24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBzZWxm
LmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb25TdWNj
ZXNzKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKKyAgICBzZWxmLnRy
YW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hv
dWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVj
dGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gYWRkRGF0YTsKKworICAg
IGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVP
YmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKK30KKwordmFyIHRlc3REYXRlID0gbmV3IERhdGUo
J0ZlYnJ1YXJ5IDI0LCAxOTU1IDEyOjAwOjA4Jyk7CisKK2Z1bmN0aW9uIGFkZERhdGEoKQorewor
ICAgIGRlYnVnKCJhZGREYXRhKCk6Iik7CisgICAgdmFyIHRyYW5zYWN0aW9uID0gZXZhbEFuZExv
ZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2Fj
dGlvbi5SRUFEX1dSSVRFKSIpOworICAgIHZhciByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKS5hZGQoe3g6IHRlc3REYXRl
fSwgJ2tleScpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGdldERhdGE7Cit9CisKK2Z1bmN0aW9u
IGdldERhdGEoKQoreworICAgIGRlYnVnKCJhZGREYXRhKCk6Iik7CisgICAgdmFyIHRyYW5zYWN0
aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFt
ZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7CisgICAgdmFyIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpLmdl
dCgna2V5JykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRvQ2hlY2s7Cit9CisKK2Z1bmN0aW9uIGRvQ2hl
Y2soKQoreworICAgIHNob3VsZEJlVHJ1ZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC54LnRvU3RyaW5n
KCkgPT0gdGVzdERhdGUudG9TdHJpbmcoKSIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0
ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGFiYXNlLWJhc2ljcy5qcyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kYXRhYmFzZS1iYXNpY3MuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMmE1YTdhNzNlMTRhZTU2NTdjMWE1YWM0ZjU0NTY5NzBlZDJhYjQ4ZAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kYXRh
YmFzZS1iYXNpY3MuanMKQEAgLTAsMCArMSwxMTUgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMp
IHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlw
dGlvbigiVGVzdCB0aGUgYmFzaWNzIG9mIEluZGV4ZWREQidzIElEQkRhdGFiYXNlLiIpOworCitm
dW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdkYXRhYmFzZS1iYXNpY3MnKSIpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkK
K3sKKyAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24n
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNl
dFZlcnNpb25TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsK
KyAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJv
cnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jl
cyhkYik7CisKKyAgICBkZWJ1ZygiVGVzdGluZyBzZXRWZXJzaW9uLiIpOworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCdkYi5zZXRWZXJzaW9uKCJ2ZXJzaW9uIGEiKScpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gc2V0VmVyc2lvbkFnYWluOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uQWdhaW4oKQorewor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCdkYi5zZXRWZXJzaW9uKCJ2ZXJzaW9uIGIiKScpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlT2JqZWN0U3RvcmU7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZU9i
amVjdFN0b3JlKCkKK3sKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLnZlcnNpb24iLCAi
dmVyc2lvbiBiIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkYi5uYW1lIiwgImRhdGFi
YXNlLWJhc2ljcyIpOworICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzIiwgIltdIik7
CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjAiKTsKKyAgICBz
aG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucygnJykiLCAiZmFsc2UiKTsKKyAg
ICBzaG91bGRCZU51bGwoImRiLm9iamVjdFN0b3JlTmFtZXNbMF0iKTsKKyAgICBzaG91bGRCZU51
bGwoImRiLm9iamVjdFN0b3JlTmFtZXMuaXRlbSgwKSIpOworCisgICAgb2JqZWN0U3RvcmUgPSBl
dmFsQW5kTG9nKCdkYi5jcmVhdGVPYmplY3RTdG9yZSgidGVzdDEyMyIpJyk7CisgICAgY2hlY2tP
YmplY3RTdG9yZSgpOworICAgIGNvbW1pdEFuZENvbnRpbnVlKCk7Cit9CisKK2Z1bmN0aW9uIGNo
ZWNrT2JqZWN0U3RvcmUoKQoreworICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzIiwg
IlsndGVzdDEyMyddIik7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3Ro
IiwgIjEiKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucygnJyki
LCAiZmFsc2UiKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucygn
dGVzdDQ1NicpIiwgImZhbHNlIik7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMu
Y29udGFpbnMoJ3Rlc3QxMjMnKSIsICJ0cnVlIik7Cit9CisKK2Z1bmN0aW9uIGNvbW1pdEFuZENv
bnRpbnVlKCkKK3sKKyAgICBzZWxmLnNldFRpbWVvdXQodGVzdFNldFZlcnNpb25BYm9ydCwgMCk7
Cit9CisKK2Z1bmN0aW9uIHRlc3RTZXRWZXJzaW9uQWJvcnQoKQoreworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCdkYi5zZXRWZXJzaW9uKCJ2ZXJzaW9uIGMiKScpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gY3JlYXRlQW5vdGhlck9iamVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjcmVhdGVBbm90aGVyT2Jq
ZWN0U3RvcmUoKQoreworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGIudmVyc2lvbiIsICJ2
ZXJzaW9uIGMiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLm5hbWUiLCAiZGF0YWJh
c2UtYmFzaWNzIik7CisgICAgY2hlY2tPYmplY3RTdG9yZSgpOworCisgICAgb2JqZWN0U3RvcmUg
PSBldmFsQW5kTG9nKCdkYi5jcmVhdGVPYmplY3RTdG9yZSgidGVzdDQ1NiIpJyk7CisgICAgdmFy
IHNldFZlcnNpb25UcmFucyA9IGV2YWxBbmRMb2coInNldFZlcnNpb25UcmFucyA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInNldFZlcnNpb25UcmFucyAhPT0gbnVs
bCIpOworICAgIHNldFZlcnNpb25UcmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRl
Q2FsbGJhY2s7CisgICAgc2V0VmVyc2lvblRyYW5zLm9uYWJvcnQgPSBjaGVja01ldGFkYXRhOwor
ICAgIHNldFZlcnNpb25UcmFucy5hYm9ydCgpOworfQorCitmdW5jdGlvbiBjaGVja01ldGFkYXRh
KCkKK3sKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLnZlcnNpb24iLCAidmVyc2lvbiBi
Iik7CisgICAgY2hlY2tPYmplY3RTdG9yZSgpOworICAgIHRlc3RDbG9zZSgpOworfQorCitmdW5j
dGlvbiB0ZXN0Q2xvc2UoKQoreworICAgIGV2YWxBbmRMb2coImRiLmNsb3NlKCkiKTsKKyAgICBk
ZWJ1ZygiTm93IHRoYXQgdGhlIGNvbm5lY3Rpb24gaXMgY2xvc2VkLCB0cmFuc2FjdGlvbiBjcmVh
dGlvbiBzaG91bGQgZmFpbCIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5z
YWN0aW9uKCd0ZXN0MTIzJykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0FMTE9XRURfRVJS
Iik7CisgICAgZGVidWcoIkNhbGwgdHdpY2UsIG1ha2Ugc3VyZSBpdCdzIGhhcm1sZXNzIik7Cisg
ICAgZXZhbEFuZExvZygiZGIuY2xvc2UoKSIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0
ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGFiYXNlLW5hbWUtdW5kZWZpbmVkLmpz
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGFiYXNlLW5hbWUt
dW5kZWZpbmVkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiNjQ5Y2M1Y2E1NzM1ZjNiNDVjZTUyYTgwYzc5NmRl
OGQyYmJhZjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvZGF0YWJhc2UtbmFtZS11bmRlZmluZWQuanMKQEAgLTAsMCArMSwxNSBAQAor
aWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hh
cmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiB1bmRlZmluZWQgYXMg
cmVjb3JkIHZhbHVlIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclBy
ZWZpeGVzKCk7CisgICAgc2hvdWxkVGhyb3coImluZGV4ZWREQi5vcGVuKCk7Iik7CisgICAgZmlu
aXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGF0YWJh
c2Utb2RkLW5hbWVzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L2RhdGFiYXNlLW9kZC1uYW1lcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOTRmMWU3NmVlMjUwYzI4MGNmMTUx
MjA5YzkyZjBhNjQyMzJhNzYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGFiYXNlLW9kZC1uYW1lcy5qcwpAQCAtMCwwICsxLDMx
IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRz
KCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIG9kZCB2YWx1
ZSBkYXRhdHlwZXMiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJl
Zml4ZXMoKTsKKworICAgIHRlc3REYXRhID0gW3sgZGVzY3JpcHRpb246ICdudWxsJywgICAgICAg
ICAgICAgICBuYW1lOiAnXHUwMDAwJyB9LAorICAgICAgICAgICAgICAgIHsgZGVzY3JpcHRpb246
ICdmYWlodScsICAgICAgICAgICAgICBuYW1lOiAnXHVkODAwXHVkZjQ2JyB9LAorICAgICAgICAg
ICAgICAgIHsgZGVzY3JpcHRpb246ICd1bnBhaXJlZCBzdXJyb2dhdGUnLCBuYW1lOiAnXHVkODAw
JyB9LAorICAgICAgICAgICAgICAgIHsgZGVzY3JpcHRpb246ICdmZmZlJywgICAgICAgICAgICAg
ICBuYW1lOiAnXHVmZmZlJyB9LAorICAgICAgICAgICAgICAgIHsgZGVzY3JpcHRpb246ICdmZmZm
JywgICAgICAgICAgICAgICBuYW1lOiAnXHVmZmZmJyB9LAorICAgICAgICAgICAgICAgIHsgZGVz
Y3JpcHRpb246ICdsaW5lIHNlcGFyYXRvcicsICAgICBuYW1lOiAnXHUyMDI4JyB9CisgICAgXTsK
KyAgICBuZXh0VG9PcGVuID0gMDsKKyAgICBvcGVuTmV4dERhdGFiYXNlKCk7Cit9CisKK2Z1bmN0
aW9uIG9wZW5OZXh0RGF0YWJhc2UoKQoreworICAgIGRlYnVnKCJvcGVuaW5nIGEgZGF0YWJhc2Ug
bmFtZWQgIiArIHRlc3REYXRhW25leHRUb09wZW5dLmRlc2NyaXB0aW9uKTsKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4odGVzdERhdGFbbmV4dFRvT3Blbl0ubmFtZSwg
dGVzdERhdGFbbmV4dFRvT3Blbl0uZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSArK25l
eHRUb09wZW4gPCB0ZXN0RGF0YS5sZW5ndGggPyBvcGVuTmV4dERhdGFiYXNlIDogZmluaXNoSlNU
ZXN0OworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGFiYXNlLXF1b3Rh
LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGFiYXNlLXF1
b3RhLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmFlMDkxNWZkMDIyOGU5OTI5ZmZjYzU2YTMwOGQ2MDg0ODk4NjBh
ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvZGF0YWJhc2UtcXVvdGEuanMKQEAgLTAsMCArMSw5NyBAQAoraWYgKHRoaXMuaW1wb3J0
U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisK
K2Rlc2NyaXB0aW9uKCJUZXN0cyBJbmRleGVkREIncyBxdW90YSBlbmZvcmNpbmcgbWVjaGFuaXNt
LiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignZGF0YWJhc2UtcXVvdGEn
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNj
ZXNzKCkKK3sKKyAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVz
dWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZl
cnNpb24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0
aW9uIHNldFZlcnNpb25TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3Mo
KToiKTsKKyAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5z
Lm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRl
ID0gY2hlY2tRdW90YUVuZm9yY2luZzsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7
CisKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLnZlcnNpb24iLCAibmV3IHZlcnNpb24i
KTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLm5hbWUiLCAiZGF0YWJhc2UtcXVvdGEi
KTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcyIsICJbXSIpOworICAgIHNob3Vs
ZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIwIik7CisgICAgc2hvdWxkQmUoImRi
Lm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJycpIiwgImZhbHNlIik7CisKKyAgICBvYmplY3RT
dG9yZSA9IGV2YWxBbmRMb2coJ2RiLmNyZWF0ZU9iamVjdFN0b3JlKCJ0ZXN0MTIzIiknKTsKKyAg
ICBjaGVja09iamVjdFN0b3JlKCk7Cit9CisKK2Z1bmN0aW9uIGNoZWNrT2JqZWN0U3RvcmUoKQor
eworICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzIiwgIlsndGVzdDEyMyddIik7Cisg
ICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjEiKTsKKyAgICBzaG91
bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucygnJykiLCAiZmFsc2UiKTsKKyAgICBz
aG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucygndGVzdDQ1NicpIiwgImZhbHNl
Iik7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJ3Rlc3QxMjMn
KSIsICJ0cnVlIik7Cit9CisKK2Z1bmN0aW9uIGNoZWNrUXVvdGFFbmZvcmNpbmcoKQoreworICAg
IHZhciB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWyd0ZXN0MTIz
J10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgdHJhbnMub25hYm9ydCA9IHRl
c3RDb21wbGV0ZTsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2Fs
bGJhY2s7CisgICAgZGVidWcoIkNyZWF0aW5nICdkYXRhJyB3aGljaCBjb250YWlucyA2NEsgb2Yg
ZGF0YSIpOworICAgIHNlbGYuZGF0YSA9ICJYIjsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDE2
OyBpKyspCisgICAgICAgIGRhdGEgKz0gZGF0YTsKKyAgICBzaG91bGRCZSgiZGF0YS5sZW5ndGgi
LCAiNjU1MzYiKTsKKyAgICBzZWxmLmRhdGFBZGRlZCA9IDA7CisgICAgc2VsZi5zdG9yZSA9IGV2
YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3Rlc3QxMjMnKSIpOworICAgIGFk
ZERhdGEoKTsKK30KKworZnVuY3Rpb24gYWRkRGF0YSgpCit7CisgICAgaWYgKGRhdGFBZGRlZCA8
IDUgKiAxMDI0ICogMTAyNCkgeworICAgICAgICBpZiAoZGF0YUFkZGVkID4gMCkKKyAgICAgICAg
ICAgIHN0b3JlID0gZXZlbnQudGFyZ2V0LnNvdXJjZTsKKyAgICB9IGVsc2UgeworICAgICAgICB0
ZXN0RmFpbGVkKCJhZGRlZCBtb3JlIHRoYW4gcXVvdGEiKTsKKyAgICAgICAgZmluaXNoSlNUZXN0
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZGF0YUFkZGVkICs9IDY1NTM2OworICAg
IHJlcXVlc3QgPSBzdG9yZS5hZGQoe3g6IGRhdGF9LCBkYXRhQWRkZWQpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gYWRkRGF0YTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBsb2dFcnJvcjsKK30K
KworZnVuY3Rpb24gbG9nRXJyb3IoKQoreworICAgIGRlYnVnKCJFcnJvciBmdW5jdGlvbiBjYWxs
ZWQ6ICgiICsgZXZlbnQudGFyZ2V0LmVycm9yQ29kZSArICIpICIgKyBldmVudC50YXJnZXQud2Vi
a2l0RXJyb3JNZXNzYWdlKTsKKyAgICBldmFsQW5kTG9nKCJldmVudC5wcmV2ZW50RGVmYXVsdCgp
Iik7Cit9CisKK2Z1bmN0aW9uIHRlc3RDb21wbGV0ZSgpCit7CisgICAgdGVzdFBhc3NlZCgiQWRk
aW5nIGRhdGEgZmFpbGVkIGR1ZSB0byBxdW90YSBlcnJvci4gRGF0YSBhZGRlZCB3YXMgYWJvdXQg
IiArIE1hdGgucm91bmQoZGF0YUFkZGVkIC8gMTAyNCAvIDEwMjQpICsgIiBNQiIpOworICAgIGZp
bmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RlbGV0
ZS1jbG9zZWQtZGF0YWJhc2Utb2JqZWN0LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL2RlbGV0ZS1jbG9zZWQtZGF0YWJhc2Utb2JqZWN0LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjVkMzI5YTJiN2EzYjcwYzA3ZTFmZmY4YjZkNmViYTE4ZDI4NDAzYjgKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGVsZXRlLWNsb3Nl
ZC1kYXRhYmFzZS1vYmplY3QuanMKQEAgLTAsMCArMSw0OSBAQAoraWYgKHRoaXMuaW1wb3J0U2Ny
aXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rl
c2NyaXB0aW9uKCJFbnN1cmUgdGhhdCBJREJEYXRhYmFzZSBvYmplY3RzIGFyZSBkZWxldGVkIHdo
ZW4gdGhlcmUgYXJlIG5vIHJldGFpbmluZyBwYXRocyBsZWZ0Iik7CisKK2Z1bmN0aW9uIHRlc3Qo
KSB7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBvcGVuREJDb25uZWN0aW9uKCk7
Cit9CisKK2Z1bmN0aW9uIG9wZW5EQkNvbm5lY3Rpb24oKQoreworICAgIGV2YWxBbmRMb2coInNl
bGYuc3RhdGUgPSAnc3RhcnRpbmcnIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4
ZWREQi5vcGVuKCdkZWxldGUtY2xvc2VkLWRhdGFiYXNlLW9iamVjdCcpIik7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIHNl
bGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIC8v
IE9wZW4gYSBzZWNvbmQgY29ubmVjdGlvbiB0byB0aGUgc2FtZSBkYXRhYmFzZS4KKyAgICB2YXIg
cmVxdWVzdDIgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignZGVsZXRlLWNsb3NlZC1kYXRh
YmFzZS1vYmplY3QnKSIpOworICAgIHJlcXVlc3QyLm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzMjsK
KyAgICByZXF1ZXN0Mi5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIG9wZW5TdWNjZXNzMigpCit7CisgICAgZGVidWcoIlNlY29uZCBjb25uZWN0aW9uIHN1
Y2Nlc3NmdWxseSBlc3RhYmxpc2hlZC4iKTsKKyAgICAvLyBBZnRlciBsZWF2aW5nIHRoaXMgZnVu
Y3Rpb24sIHRoZXJlIGFyZSBubyByZW1haW5pbmcgcmVmZXJlbmNlcyB0byB0aGUKKyAgICAvLyBz
ZWNvbmQgY29ubmVjdGlvbiwgc28gaXQgc2hvdWxkIGdldCBkZWxldGVkLgorICAgIHNldFRpbWVv
dXQoc2V0VmVyc2lvbiwgMik7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb24oKQoreworICAgIGdj
KCk7CisgICAgZGVidWcoImNhbGxpbmcgc2V0VmVyc2lvbigpIC0gY2FsbGJhY2sgc2hvdWxkIHJ1
biBpbW1lZGlhdGVseSIpOworICAgIHZhciB2ZXJzaW9uQ2hhbmdlUmVxdWVzdCA9IGV2YWxBbmRM
b2coImRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7CisgICAgdmVyc2lvbkNoYW5nZVJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHZlcnNpb25DaGFuZ2VS
ZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7CisgICAgdmVyc2lv
bkNoYW5nZVJlcXVlc3Qub25zdWNjZXNzID0gZmluaXNoSlNUZXN0OworfQorCit0ZXN0KCk7Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RlbGV0ZS1yYW5nZS5qcyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kZWxldGUtcmFuZ2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTVkZjc3
ZjIzNDczNjg5ODc4NDlkYzZlMWM1N2Q3ODYyYzMxZjZlOQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kZWxldGUtcmFuZ2UuanMKQEAg
LTAsMCArMSw5MCBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlw
dHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1w
b3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWRE
QidzIElEQk9iamVjdFN0b3JlLmRlbGV0ZShJREJLZXlSYW5nZSkgbWV0aG9kLiIpOworCitmdW5j
dGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgZXZhbEFu
ZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgnZGVsZXRlLXJhbmdlJyki
KTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgZXZhbEFuZExvZygicmVx
dWVzdCA9IGluZGV4ZWREQi5vcGVuKCdkZWxldGUtcmFuZ2UnKSIpOworICAgICAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJkYiA9IHJlcXVl
c3QucmVzdWx0Iik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVy
c2lvbignMScpIik7CisgICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coInRyYW5zID0gcmVxdWVzdC5yZXN1bHQiKTsK
KyAgICAgICAgICAgICAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7
CisKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3Rv
cmUnKSIpOworCisgICAgICAgICAgICAgICAgdHJhbnMub25jb21wbGV0ZSA9IHJ1blRlc3RzOwor
ICAgICAgICAgICAgfTsKKyAgICAgICAgfTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNoZWNrS2V5
cyhleHBlY3RlZCwgY2FsbGJhY2spCit7CisgICAgZGVidWcoImdldHRpbmcga2V5cyBmcm9tIHN0
b3JlLi4uIik7CisgICAgZGVidWcoImV4cGVjdDogIiArIEpTT04uc3RyaW5naWZ5KGV4cGVjdGVk
KSk7CisgICAgdmFyIGtleXMgPSBbXTsKKyAgICByZXF1ZXN0ID0gc3RvcmUub3BlbkN1cnNvcigp
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICBjdXJzb3IgPSByZXF1ZXN0
LnJlc3VsdDsKKyAgICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICAgICAga2V5cy5wdXNoKGN1
cnNvci5rZXkpOworICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBkZWJ1ZygiYWN0dWFsOiAiICsgSlNPTi5zdHJpbmdpZnkoa2V5cykp
OworICAgICAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KGV4cGVjdGVkKSA9PT0gSlNPTi5zdHJp
bmdpZnkoa2V5cykpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJNYXRjaCEiKTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiRG9uJ3QgbWF0
Y2ghIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworfQorCit2YXIgdGVzdHMg
PSBbCisgICAgeyBsb3dlcjogMywgdXBwZXI6IDgsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyT3Bl
bjogZmFsc2UsIGV4cGVjdGVkOiBbMSwgMiwgOSwgMTBdfSwKKyAgICB7IGxvd2VyOiAzLCB1cHBl
cjogOCwgbG93ZXJPcGVuOiB0cnVlLCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogWzEsIDIs
IDMsIDksIDEwXX0sCisgICAgeyBsb3dlcjogMywgdXBwZXI6IDgsIGxvd2VyT3BlbjogZmFsc2Us
IHVwcGVyT3BlbjogdHJ1ZSwgZXhwZWN0ZWQ6IFsxLCAyLCA4LCA5LCAxMF19LAorICAgIHsgbG93
ZXI6IDMsIHVwcGVyOiA4LCBsb3dlck9wZW46IHRydWUsIHVwcGVyT3BlbjogdHJ1ZSwgZXhwZWN0
ZWQ6IFsxLCAyLCAzLCA4LCA5LCAxMF19CitdOworCitmdW5jdGlvbiBydW5UZXN0cygpCit7Cisg
ICAgZnVuY3Rpb24gbmV4dFRlc3QoKSB7CisgICAgICAgIHZhciB0ZXN0ID0gdGVzdHMuc2hpZnQo
KTsKKyAgICAgICAgaWYgKHRlc3QpIHsKKyAgICAgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAg
ICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNh
Y3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJh
bnMub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICAgICAgICAgIGZvciAoaSA9IDE7IGkgPD0g
MTA7ICsraSkgeworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgiICsgaSAr
ICIsIiArIGkgKyAiKSIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZXZhbEFuZExvZygi
c3RvcmUuZGVsZXRlKElEQktleVJhbmdlLmJvdW5kKCIgKworICAgICAgICAgICAgICAgIHRlc3Qu
bG93ZXIgKyAiLCAiICsKKyAgICAgICAgICAgICAgICB0ZXN0LnVwcGVyICsgIiwgIiArCisgICAg
ICAgICAgICAgICAgdGVzdC5sb3dlck9wZW4gKyAiLCAiICsKKyAgICAgICAgICAgICAgICB0ZXN0
LnVwcGVyT3BlbiArICIpKSIpOworICAgICAgICAgICAgY2hlY2tLZXlzKHRlc3QuZXhwZWN0ZWQs
IG5leHRUZXN0KTsKKyAgICAgICAgICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRD
YWxsYmFjazsKKyAgICAgICAgICAgIHRyYW5zLm9uY29tcGxldGUgPSBuZXh0VGVzdDsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgfQorICAgIG5leHRUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvZGVsZXRlSW5kZXguanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvZGVsZXRlSW5kZXguanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGNiNWJlZGM2
MDA4MjNjZTliZjljM2JhYTRlODZmN2FmZDExNzJlOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kZWxldGVJbmRleC5qcwpAQCAtMCww
ICsxLDUwIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygn
Li4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRT
Y3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGRl
bGV0ZUluZGV4IG1ldGhvZCIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5k
b3JQcmVmaXhlcygpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbign
ZGVsZXRlSW5kZXgnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0
aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFy
Z2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5z
ZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHR3aWRkbGVJbmRleGVz
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiB0d2lkZGxlSW5kZXhlcygpCit7CisgICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9n
KCJ0cmFuc2FjdGlvbiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgdHJhbnNhY3Rpb24u
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRyYW5zYWN0aW9uLm9uYWJv
cnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRl
ID0gcG9zdFR3aWRkbGluZzsKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAg
b2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0
b3JlKCdmb28nKTsiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJvYmplY3RTdG9yZS5k
ZWxldGVJbmRleCgnZmlyc3QnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJS
Iik7CisgICAgc2hvdWxkVGhyb3coIm9iamVjdFN0b3JlLmRlbGV0ZUluZGV4KCkiKTsgLy8gVHlw
ZUVycm9yOiBub3QgZW5vdWdoIGFyZ3VtZW50cy4KKyAgICBpbmRleCA9IGV2YWxBbmRMb2coImlu
ZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ2ZpcnN0JywgJ2ZpcnN0Jyk7Iik7CisgICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigib2JqZWN0U3RvcmUuZGVsZXRlSW5kZXgoJ0ZJUlNUJyki
LCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOworICAgIGluZGV4ID0gZXZh
bEFuZExvZygiaW5kZXggPSBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgnc2Vjb25kJywgJ3NlY29u
ZCcpOyIpOworICAgIHJldHVyblZhbHVlID0gZXZhbEFuZExvZygicmV0dXJuVmFsdWUgPSBvYmpl
Y3RTdG9yZS5kZWxldGVJbmRleCgnZmlyc3QnKTsiKTsKKyAgICBzaG91bGRCZSgicmV0dXJuVmFs
dWUiLCAidW5kZWZpbmVkIik7Cit9CisKK2Z1bmN0aW9uIHBvc3RUd2lkZGxpbmcoKQoreworICAg
IGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdiYXInKTsiLCAi
SURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0FMTE9XRURfRVJSIik7CisgICAgZXZhbEFuZEV4cGVj
dEV4Y2VwdGlvbigib2JqZWN0U3RvcmUuZGVsZXRlSW5kZXgoJ3NlY29uZCcpIiwgIklEQkRhdGFi
YXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOworICAgIGZpbmlzaEpTVGVz
dCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RlbGV0ZU9iamVjdFN0
b3JlLW5hbWUtYXJndW1lbnQtcmVxdWlyZWQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvZGVsZXRlT2JqZWN0U3RvcmUtbmFtZS1hcmd1bWVudC1yZXF1aXJlZC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mNjA5MmExMzU4OTI3NjZjNmYyMjFlMjVlNWRlYTkyZWRjMjIzYzI1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L2RlbGV0ZU9iamVjdFN0b3JlLW5hbWUtYXJndW1lbnQtcmVxdWlyZWQuanMKQEAgLTAsMCArMSwz
NiBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0
cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBkZWxldGVP
YmplY3RTdG9yZSByZXF1aXJlZCBhcmd1bWVudCIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0
aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sK
KyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0
b3JlcyhkYik7CisKKyAgICBzaG91bGRUaHJvdygiZGIuZGVsZXRlT2JqZWN0U3RvcmUoKTsiKTsK
KyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9kZWxldGVPYmplY3RTdG9yZS1udWxsLW5hbWUuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvZGVsZXRlT2JqZWN0U3RvcmUtbnVsbC1uYW1lLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmM0YTgzMzVhYjcxZDQ1ZmQxZTM0NmE5Yzc2YTllMmMwMjVlYzFkNGMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGVsZXRlT2Jq
ZWN0U3RvcmUtbnVsbC1uYW1lLmpzCkBAIC0wLDAgKzEsMzcgQEAKK2lmICh0aGlzLmltcG9ydFNj
cmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitk
ZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgZGVsZXRlT2JqZWN0U3RvcmUgcmVxdWlyZWQgYXJn
dW1lbnQiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMo
KTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9u
ID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVk
REIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9w
ZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJk
YiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBj
cmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVj
dFN0b3JlKCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgZXZhbEFu
ZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ251bGwnKTsiKTsKKyAgICBldmFsQW5kTG9nKCJk
Yi5kZWxldGVPYmplY3RTdG9yZShudWxsKTsiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwor
dGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kdXBsaWNhdGVzLmpzIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2R1cGxpY2F0ZXMuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZTEzM2FlOGQxYzRkOTVlNzVjMzdjOTc1NzE0YWRmYzlhZTJmNzYzZQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kdXBsaWNhdGVzLmpz
CkBAIC0wLDAgKzEsMTY2IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0
U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAg
ICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlZlcmlmeSB0
aGF0IHlvdSBjYW4gcHV0IHRoZSBzYW1lIGRhdGEgaW4gMiBkaWZmZXJlbnQgZGF0YWJhc2VzIHdp
dGhvdXQgdW5pcXVlbmVzcyBjb25zdHJhaW50cyBmaXJpbmcuIik7CisKK3Rlc3RDb3VudCA9IDA7
CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpZiAodGVzdENvdW50KysgPT0gMCkKKyAgICAgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdkdXBsaWNhdGVzLTEnKSIpOwor
ICAgIGVsc2UKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdk
dXBsaWNhdGVzLTInKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvbjsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rp
b24gc2V0VmVyc2lvbigpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCdu
ZXcgdmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gZGVsZXRlRXhpc3RpbmcoKQoreworICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2Vzcygp
OiIpOworICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMu
b25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworCisgICAgZGVsZXRlQWxsT2JqZWN0
U3RvcmVzKGRiKTsKKworICAgIHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKKyAgICBzZWxmLmluZGV4T2JqZWN0ID0gZXZh
bEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZScsICd4JykiKTsKKyAgICBhZGRE
YXRhKCk7Cit9CisKK2Z1bmN0aW9uIGFkZERhdGEoKQoreworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBhZGRNb3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBhZGRNb3JlKCkKK3sKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnNvdXJjZS5hZGQoe3g6ICd2YWx1ZTInLCB5OiAn
enp6Mid9LCAna2V5MicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXREYXRhOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biBnZXREYXRhKCkKK3sKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhPYmplY3QuZ2V0
S2V5KCd2YWx1ZScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRPYmplY3REYXRhOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiBnZXRPYmplY3REYXRhKCkKK3sKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50
LnRhcmdldC5yZXN1bHQiLCAia2V5Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5k
ZXhPYmplY3QuZ2V0KCd2YWx1ZScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXREYXRh
RmFpbDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30K
KworZnVuY3Rpb24gZ2V0RGF0YUZhaWwoKQoreworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
ZXZlbnQudGFyZ2V0LnJlc3VsdC54IiwgInZhbHVlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJldmVudC50YXJnZXQucmVzdWx0LnkiLCAienp6Iik7CisKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiaW5kZXhPYmplY3QuZ2V0S2V5KCdkb2VzIG5vdCBleGlzdCcpIik7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBnZXRPYmplY3REYXRhRmFpbDsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZ2V0T2JqZWN0RGF0YUZh
aWwoKQoreworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgInVuZGVmaW5lZCIp
OworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0LmdldCgnZG9lcyBub3Qg
ZXhpc3QnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbktleUN1cnNvcjsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
b3BlbktleUN1cnNvcigpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAi
dW5kZWZpbmVkIik7CisKKyAgICBzZWxmLnJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVj
dC5vcGVuS2V5Q3Vyc29yKCkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvcjFDb250
aW51ZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30K
KworZnVuY3Rpb24gY3Vyc29yMUNvbnRpbnVlKCkKK3sKKyAgICBzaG91bGRCZUZhbHNlKCJldmVu
dC50YXJnZXQucmVzdWx0ID09PSBudWxsIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJl
dmVudC50YXJnZXQucmVzdWx0LmtleSIsICJ2YWx1ZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgImtleSIpOworCisgICAgLy8g
V2UgcmUtdXNlIHRoZSBsYXN0IHJlcXVlc3Qgb2JqZWN0LgorICAgIGV2YWxBbmRMb2coImV2ZW50
LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOworICAgIHNlbGYucmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBjdXJzb3IxQ29udGludWUyOworfQorCitmdW5jdGlvbiBjdXJzb3IxQ29udGludWUyKCkKK3sK
KyAgICBzaG91bGRCZUZhbHNlKCJldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsIik7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICJ2YWx1ZTIi
KTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFy
eUtleSIsICJrZXkyIik7CisKKyAgICAvLyBXZSByZS11c2UgdGhlIGxhc3QgcmVxdWVzdCBvYmpl
Y3QuCisgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7Cisg
ICAgc2VsZi5yZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5PYmplY3RDdXJzb3I7Cit9CisKK2Z1bmN0
aW9uIG9wZW5PYmplY3RDdXJzb3IoKQoreworICAgIHNob3VsZEJlVHJ1ZSgiZXZlbnQudGFyZ2V0
LnJlc3VsdCA9PT0gbnVsbCIpOworCisgICAgc2VsZi5yZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5k
ZXhPYmplY3Qub3BlbkN1cnNvcigpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3Iy
Q29udGludWU7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Cit9CisKK2Z1bmN0aW9uIGN1cnNvcjJDb250aW51ZSgpCit7CisgICAgc2hvdWxkQmVGYWxzZSgi
ZXZlbnQudGFyZ2V0LnJlc3VsdCA9PT0gbnVsbCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAidmFsdWUiKTsKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUueCIsICJ2YWx1ZSIpOworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS55IiwgInp6eiIp
OworCisgICAgLy8gV2UgcmUtdXNlIHRoZSBsYXN0IHJlcXVlc3Qgb2JqZWN0LgorICAgIGV2YWxB
bmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOworICAgIHNlbGYucmVxdWVz
dC5vbnN1Y2Nlc3MgPSBjdXJzb3IyQ29udGludWUyOworfQorCitmdW5jdGlvbiBjdXJzb3IyQ29u
dGludWUyKCkKK3sKKyAgICBzaG91bGRCZUZhbHNlKCJldmVudC50YXJnZXQucmVzdWx0ID09PSBu
dWxsIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0Lmtl
eSIsICJ2YWx1ZTIiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5y
ZXN1bHQudmFsdWUueCIsICJ2YWx1ZTIiKTsgICAgCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLnkiLCAienp6MiIpOworCisgICAgLy8gV2UgcmUt
dXNlIHRoZSBsYXN0IHJlcXVlc3Qgb2JqZWN0LgorICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdl
dC5yZXN1bHQuY29udGludWUoKSIpOworICAgIHNlbGYucmVxdWVzdC5vbnN1Y2Nlc3MgPSBsYXN0
OworfQorCitmdW5jdGlvbiBsYXN0KCkKK3sKKyAgICBzaG91bGRCZVRydWUoImV2ZW50LnRhcmdl
dC5yZXN1bHQgPT09IG51bGwiKTsKKworICAgIGlmICh0ZXN0Q291bnQgPT0gMSkKKyAgICAgICAg
dGVzdCgpOworICAgIGVsc2UKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3JlbW92ZVZl
bmRvclByZWZpeGVzKCk7Cit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2Vycm9yLWNh
dXNlcy1hYm9ydC1ieS1kZWZhdWx0LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL2Vycm9yLWNhdXNlcy1hYm9ydC1ieS1kZWZhdWx0LmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZk
M2E3Y2RmNDE3NTU5YjNjZjM4MjdhMGE3ODdmNDNmMjY1ZGUzYjUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZXJyb3ItY2F1c2VzLWFi
b3J0LWJ5LWRlZmF1bHQuanMKQEAgLTAsMCArMSwxMDEgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlw
dHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNj
cmlwdGlvbigiVmVyaWZ5IHRoYXQgYSB0cmFuc2FjdGlvbiB3aXRoIGFuIGVycm9yIGFib3J0cyB1
bmxlc3MgcHJldmVudERlZmF1bHQoKSBpcyBjYWxsZWQuIik7CisKK2Z1bmN0aW9uIHRlc3QoKQor
eworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImluZGV4ZWREQi5vcGVuKCdlcnJvci1jYXVzZXMtYWJvcnQtYnktZGVmYXVsdCcpIik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uKCkKK3sKKyAg
ICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4aXN0aW5nOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxldGVFeGlzdGluZygp
Cit7CisgICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7CisgICAgc2VsZi50cmFucyA9
IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJl
VHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFi
b3J0Q2FsbGJhY2s7CisgICAgZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IGFkZERhdGEi
KTsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBldmFsQW5kTG9nKCJk
Yi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKK30KKworZnVuY3Rpb24g
YWRkRGF0YSgpCit7CisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0
aW9uKFsnc3RvcmVOYW1lJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgZXZh
bEFuZExvZygidHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrIik7CisgICAg
ZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IHRyYW5zYWN0aW9uQ29tcGxldGVkIik7Cisg
ICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5h
bWUnKSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScs
IHk6ICd6enonfSwgJ2tleScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRNb3JlOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiBhZGRNb3JlKCkKK3sKKyAgICAKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZXZlbnQu
dGFyZ2V0LnNvdXJjZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOworICAgIHJlcXVl
c3QuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLCBwcmV2ZW50VGhlRGVmYXVsdCk7Cit9CisKK2Z1
bmN0aW9uIHByZXZlbnRUaGVEZWZhdWx0KCkKK3sKKyAgICBldmFsQW5kTG9nKCJldmVudC5wcmV2
ZW50RGVmYXVsdCgpIik7Cit9CisKK2Z1bmN0aW9uIHRyYW5zYWN0aW9uQ29tcGxldGVkKCkKK3sK
KyAgICB0ZXN0UGFzc2VkKCJUcmFuc2FjdGlvbiBjb21wbGV0ZWQiKTsKKyAgICBkZWJ1ZygiIik7
CisgICAgZGVidWcoIiIpOworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFu
c2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAg
IGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSB0cmFuc2FjdGlvbkFib3J0ZWQxIik7CisgICAg
ZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNr
Iik7CisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdz
dG9yZU5hbWUnKSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2
YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4
cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOworICAgIHJlcXVlc3Qub25lcnJvciA9IGFsbG93RGVmYXVs
dDsKK30KKworZnVuY3Rpb24gYWxsb3dEZWZhdWx0KCkKK3sKKyAgICBkZWJ1ZygiRG9pbmcgbm90
aGluZyB0byBwcmV2ZW50IHRoZSBkZWZhdWx0IGFjdGlvbi4uLiIpOworfQorCitmdW5jdGlvbiB0
cmFuc2FjdGlvbkFib3J0ZWQxKCkKK3sKKyAgICB0ZXN0UGFzc2VkKCJUcmFuc2FjdGlvbiBhYm9y
dGVkIik7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCIiKTsKKyAgICB0cmFucyA9IGV2YWxB
bmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rp
b24uUkVBRF9XUklURSkiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmFib3J0ID0gdHJhbnNh
Y3Rpb25BYm9ydGVkMiIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSB1bmV4
cGVjdGVkQ29tcGxldGVDYWxsYmFjayIpOworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUg
PSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKKyAgICBkZWJ1Zygi
T21pdHRpbmcgYW4gb25lcnJvciBoYW5kbGVyIik7Cit9CisKK2Z1bmN0aW9uIHRyYW5zYWN0aW9u
QWJvcnRlZDIoKQoreworICAgIHRlc3RQYXNzZWQoIlRyYW5zYWN0aW9uIGFib3J0ZWQiKTsKKyAg
ICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9l
eGNlcHRpb24taW4tZXZlbnQtYWJvcnRzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL2V4Y2VwdGlvbi1pbi1ldmVudC1hYm9ydHMuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWIw
NTg2ZmJhMGEyODNlOWVlNWUzNDZiNTkwNzUwZjRkMDAxNzdkOQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9leGNlcHRpb24taW4tZXZl
bnQtYWJvcnRzLmpzCkBAIC0wLDAgKzEsMTIxIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7
CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRp
b24oIlRlc3QgZXhjZXB0aW9ucyBpbiBJREJSZXF1ZXN0IGhhbmRsZXJzIGNhdXNlIGFib3J0cy4i
KTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2V4Y2VwdGlvbi1pbi1ldmVu
dC1hYm9ydHMnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvbjsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
c2V0VmVyc2lvbigpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcg
dmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rp
b24gZGVsZXRlRXhpc3RpbmcoKQoreworICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIp
OworICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMub25h
Ym9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9u
Y29tcGxldGUgPSBzdGFydFRlc3QiKTsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7
CisKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUo
J3N0b3JlTmFtZScsIG51bGwpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFk
ZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAna2V5JykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc3RhcnRUZXN0KCkKK3sK
KyAgICBkZWJ1ZygiIik7CisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5z
YWN0aW9uKFsnc3RvcmVOYW1lJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAg
ZXZhbEFuZExvZygidHJhbnMub25hYm9ydCA9IHRyYW5zYWN0aW9uQWJvcnRlZDEiKTsKKyAgICBl
dmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2si
KTsKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0
b3JlTmFtZScpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3Zh
bHVlMicsIHk6ICd6enoyJ30sICdrZXkyJykiKTsKKyAgICB0cmFucy5hZGRFdmVudExpc3RlbmVy
KCdzdWNjZXNzJywgY2F1c2VFeGNlcHRpb24sIHRydWUpOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjYXVzZUV4Y2VwdGlvbigp
Cit7CisgICAgZGVidWcoIiIpOworICAgIGV2YWxBbmRMb2coImV2ZW50LnByZXZlbnREZWZhdWx0
KCkiKTsKKyAgICBkZWJ1ZygiVGhyb3dpbmciKTsKKyAgICB0aHJvdyAidGhpcyBleGNlcHRpb24g
aXMgZXhwZWN0ZWQiOworfQorCitmdW5jdGlvbiB0cmFuc2FjdGlvbkFib3J0ZWQxKCkKK3sKKyAg
ICBkZWJ1ZygiIik7CisgICAgc2hvdWxkSGF2ZUhhZEVycm9yKCJ0aGlzIGV4Y2VwdGlvbiBpcyBl
eHBlY3RlZCIpOworICAgIHRlc3RQYXNzZWQoIlRoZSB0cmFuc2FjdGlvbiB3YXMgYWJvcnRlZC4i
KTsKKyAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9y
ZU5hbWUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICBldmFsQW5kTG9nKCJ0
cmFucy5vbmFib3J0ID0gdHJhbnNhY3Rpb25BYm9ydGVkMiIpOworICAgIGV2YWxBbmRMb2coInRy
YW5zLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjayIpOworICAgIHN0b3Jl
ID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6
J30sICdrZXknKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3ND
YWxsYmFjazsKKyAgICBkYi5vbmVycm9yID0gY2F1c2VFeGNlcHRpb247Cit9CisKK2Z1bmN0aW9u
IHRyYW5zYWN0aW9uQWJvcnRlZDIoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBzaG91bGRIYXZl
SGFkRXJyb3IoInRoaXMgZXhjZXB0aW9uIGlzIGV4cGVjdGVkIik7CisgICAgdGVzdFBhc3NlZCgi
VGhlIHRyYW5zYWN0aW9uIHdhcyBhYm9ydGVkLiIpOworICAgIHRyYW5zID0gZXZhbEFuZExvZygi
dHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFE
X1dSSVRFKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJv
cnRDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSB0cmFuc2Fj
dGlvbkNvbXBsZXRlZDEiKTsKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMu
b2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0
b3JlLmFkZCh7eDogJ3ZhbHVlMycsIHk6ICd6enozJ30sICdrZXkzJykiKTsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IHRocm93QW5kQ2F0Y2g7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7CisgICAgZGIub25lcnJvciA9IG51bGw7Cit9CisKK2Z1bmN0aW9u
IHRocm93QW5kQ2F0Y2goKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBldmFsQW5kTG9nKCJldmVu
dC5wcmV2ZW50RGVmYXVsdCgpIik7CisgICAgZGVidWcoIlRocm93aW5nIHdpdGhpbiBhIHRyeSBi
bG9jayIpOworICAgIHRyeSB7CisgICAgICAgIHRocm93ICJBSEhIIjsKKyAgICB9IGNhdGNoIChl
KSB7CisgICAgfQorfQorCitmdW5jdGlvbiB0cmFuc2FjdGlvbkNvbXBsZXRlZDEoKQoreworICAg
IGRlYnVnKCIiKTsKKyAgICB0ZXN0UGFzc2VkKCJUaGUgdHJhbnNhY3Rpb24gY29tcGxldGVkLiIp
OworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0b3Jl
TmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIGV2YWxBbmRMb2coInRy
YW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2co
InRyYW5zLm9uY29tcGxldGUgPSB0cmFuc2FjdGlvbkNvbXBsZXRlZDIiKTsKKyAgICBzdG9yZSA9
IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Cisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlNCcsIHk6ICd6eno0
J30sICdrZXk0JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeyB0ZXN0
UGFzc2VkKCJrZXk0IGFkZGVkIik7IH0KKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gdHJhbnNhY3Rpb25Db21wbGV0ZWQyKCkKK3sK
KyAgICBkZWJ1ZygiIik7CisgICAgdGVzdFBhc3NlZCgiVGhlIHRyYW5zYWN0aW9uIGNvbXBsZXRl
ZC4iKTsKKyAgICBkZWJ1ZygiIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZmFjdG9yeS1iYXNpY3MuanMgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZmFjdG9yeS1iYXNpY3MuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YzAwN2NmYTcyM2U4OWJkNWM5ZWI0N2NjODg1ZGJkOWFkZmZiZjcwMAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9mYWN0b3J5LWJhc2lj
cy5qcwpAQCAtMCwwICsxLDgyIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1w
b3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsK
KyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3Qg
dGhlIGJhc2ljcyBvZiBJbmRleGVkREIncyBJREJGYWN0b3J5LiIpOworCitmdW5jdGlvbiB0ZXN0
KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgc2hvdWxkQmVUcnVlKCJ0
eXBlb2YgaW5kZXhlZERCLm9wZW4gPT09ICdmdW5jdGlvbiciKTsKKyAgICBzaG91bGRCZVRydWUo
InR5cGVvZiBpbmRleGVkREIuY21wID09PSAnZnVuY3Rpb24nIik7CisgICAgc2hvdWxkQmVUcnVl
KCJ0eXBlb2YgaW5kZXhlZERCLmdldERhdGFiYXNlTmFtZXMgPT09ICdmdW5jdGlvbiciKTsKKwor
ICAgIHNob3VsZEJlVHJ1ZSgidHlwZW9mIGluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSA9PT0gJ2Z1
bmN0aW9uJyIpOworCisgICAgbmFtZSA9ICdzdG9yYWdlL2luZGV4ZWRkYi9mYWN0b3J5LWJhc2lj
cyc7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmdldERhdGFiYXNlTmFtZXMoKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZ2V0RGF0YWJhc2VOYW1lc1N1Y2Nlc3MxOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBnZXREYXRhYmFz
ZU5hbWVzU3VjY2VzczEoKQoreworICAgIHZhciBkYXRhYmFzZU5hbWVzOworICAgIGV2YWxBbmRM
b2coImRhdGFiYXNlTmFtZXMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVG
YWxzZSgiZGF0YWJhc2VOYW1lcy5jb250YWlucygnIiArIG5hbWUgKyAiJykiKTsKKyAgICBzaG91
bGRCZUZhbHNlKCJkYXRhYmFzZU5hbWVzLmNvbnRhaW5zKCdEQVRBQkFTRSBUSEFUIERPRVMgTk9U
IEVYSVNUJykiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbihu
YW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNz
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJl
c3VsdC5jbG9zZSgpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5nZXRE
YXRhYmFzZU5hbWVzKCkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldERhdGFiYXNlTmFt
ZXNTdWNjZXNzMjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gZ2V0RGF0YWJhc2VOYW1lc1N1Y2Nlc3MyKCkKK3sKKyAgICB2YXIg
ZGF0YWJhc2VOYW1lczsKKyAgICBldmFsQW5kTG9nKCJkYXRhYmFzZU5hbWVzID0gZXZlbnQudGFy
Z2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgiZGF0YWJhc2VOYW1lcy5jb250YWlucygn
IiArIG5hbWUgKyAiJykiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJkYXRhYmFzZU5hbWVzLmNvbnRh
aW5zKCdEQVRBQkFTRSBUSEFUIERPRVMgTk9UIEVYSVNUJykiKTsKKworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoJyIgKyBuYW1lICsgIicpIik7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVEYXRhYmFzZVN1Y2Nlc3M7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0
ZURhdGFiYXNlU3VjY2VzcygpCit7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWRE
Qi5nZXREYXRhYmFzZU5hbWVzKCkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldERhdGFi
YXNlTmFtZXNTdWNjZXNzMzsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gZ2V0RGF0YWJhc2VOYW1lc1N1Y2Nlc3MzKCkKK3sKKyAg
ICB2YXIgZGF0YWJhc2VOYW1lczsKKyAgICBldmFsQW5kTG9nKCJkYXRhYmFzZU5hbWVzID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlRmFsc2UoImRhdGFiYXNlTmFtZXMuY29u
dGFpbnMoJyIgKyBuYW1lICsgIicpIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGF0YWJhc2VOYW1l
cy5jb250YWlucygnREFUQUJBU0UgVEhBVCBET0VTIE5PVCBFWElTVCcpIik7CisKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCdEQVRBQkFTRSBUSEFU
IERPRVMgTk9UIEVYSVNUJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZURhdGFi
YXNlU3VjY2VzczI7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZURhdGFiYXNlU3VjY2VzczIoKQoreworICAgIGZpbmlz
aEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ZhY3Rvcnkt
Y21wLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ZhY3Rvcnkt
Y21wLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmY0MjY3NmFjMjRiMjljMDg4YzA2ZGJjMjEyZTMyN2MwMmExNzNl
NzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvZmFjdG9yeS1jbXAuanMKQEAgLTAsMCArMSwxNDEgQEAKK2lmICh0aGlzLmltcG9ydFNj
cmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitk
ZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIga2V5IGNvbXBhcmlzb24gdXNpbmcgSURCRmFjdG9y
eS5jbXAoKS4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4
ZXMoKTsKKworICAgIHNob3VsZEJlVHJ1ZSgidHlwZW9mIGluZGV4ZWREQi5jbXAgPT09ICdmdW5j
dGlvbiciKTsKKworICAgIHRlc3RWYWxpZEtleXMoKTsKKyAgICB0ZXN0SW52YWxpZEtleXMoKTsK
KyAgICB0ZXN0SWRlbnRpY2FsS2V5cygpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitmdW5j
dGlvbiB0ZXN0VmFsaWRLZXlzKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImNvbXBh
cmUgdmFsaWQga2V5cyIpOworCisgICAgdmFyIGtleXMgPSBbCisgICAgICAgICItSW5maW5pdHki
LAorICAgICAgICAiLU51bWJlci5NQVhfVkFMVUUiLAorICAgICAgICAiLTEiLAorICAgICAgICAi
LU51bWJlci5NSU5fVkFMVUUiLAorICAgICAgICAiMCIsCisgICAgICAgICJOdW1iZXIuTUlOX1ZB
TFVFIiwKKyAgICAgICAgIjEiLAorICAgICAgICAiTnVtYmVyLk1BWF9WQUxVRSIsCisgICAgICAg
ICJJbmZpbml0eSIsCisKKyAgICAgICAgIm5ldyBEYXRlKDApIiwKKyAgICAgICAgIm5ldyBEYXRl
KDEwMDApIiwKKyAgICAgICAgIm5ldyBEYXRlKDEzMTczOTk5MzEwMjMpIiwKKyAgICAgICAgCisg
ICAgICAgICInJyIsCisgICAgICAgICInXHgwMCciLAorICAgICAgICAiJ2EnIiwKKyAgICAgICAg
IidhYSciLAorICAgICAgICAiJ2InIiwKKyAgICAgICAgIidiYSciLAorCisgICAgICAgICInXHhB
MiciLCAvLyBVKzAwQTIgQ0VOVCBTSUdOCisgICAgICAgICInXHU2QzM0JyIsIC8vIFUrNkMzNCBD
SksgVU5JRklFRCBJREVPR1JBUEggKHdhdGVyKQorICAgICAgICAiJ1x1RDgzNFx1REQxRSciLCAv
LyBVKzFEMTFFIE1VU0lDQUwgU1lNQk9MIEctQ0xFRiAoVVRGLTE2IHN1cnJvZ2F0ZSBwYWlyKQor
ICAgICAgICAiJ1x1RkZGRCciLCAvLyBVK0ZGRkQgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSCisKKyAg
ICAgICAgIltdIiwKKworICAgICAgICAiWy1JbmZpbml0eV0iLAorICAgICAgICAiWy1OdW1iZXIu
TUFYX1ZBTFVFXSIsCisgICAgICAgICJbLTFdIiwKKyAgICAgICAgIlstTnVtYmVyLk1JTl9WQUxV
RV0iLAorICAgICAgICAiWzBdIiwKKyAgICAgICAgIltOdW1iZXIuTUlOX1ZBTFVFXSIsCisgICAg
ICAgICJbMV0iLAorICAgICAgICAiW051bWJlci5NQVhfVkFMVUVdIiwKKyAgICAgICAgIltJbmZp
bml0eV0iLAorCisgICAgICAgICJbbmV3IERhdGUoMCldIiwKKyAgICAgICAgIltuZXcgRGF0ZSgx
MDAwKV0iLAorICAgICAgICAiW25ldyBEYXRlKDEzMTczOTk5MzEwMjMpXSIsCisgICAgICAgIAor
ICAgICAgICAiWycnXSIsCisgICAgICAgICJbJ1x4MDAnXSIsCisgICAgICAgICJbJ2EnXSIsCisg
ICAgICAgICJbJ2FhJ10iLAorICAgICAgICAiWydiJ10iLAorICAgICAgICAiWydiYSddIiwKKwor
ICAgICAgICAiWydceEEyJ10iLCAvLyBVKzAwQTIgQ0VOVCBTSUdOCisgICAgICAgICJbJ1x1NkMz
NCddIiwgLy8gVSs2QzM0IENKSyBVTklGSUVEIElERU9HUkFQSCAod2F0ZXIpCisgICAgICAgICJb
J1x1RDgzNFx1REQxRSddIiwgLy8gVSsxRDExRSBNVVNJQ0FMIFNZTUJPTCBHLUNMRUYgKFVURi0x
NiBzdXJyb2dhdGUgcGFpcikKKyAgICAgICAgIlsnXHVGRkZEJ10iLCAvLyBVK0ZGRkQgUkVQTEFD
RU1FTlQgQ0hBUkFDVEVSCisKKyAgICAgICAgIltbXV0iLAorICAgICAgICAKKyAgICAgICAgIltb
XSwgW11dIiwKKyAgICAgICAgIltbXSwgW10sIFtdXSIsCisKKyAgICAgICAgIltbW11dXSIsCisg
ICAgICAgICJbW1tbXV1dXSIKKyAgICBdOworCisgICAgdmFyIGksIGtleTEsIGtleTI7CisgICAg
Zm9yIChpID0gMDsgaSA8IGtleXMubGVuZ3RoIC0gMTsgaSArPSAxKSB7CisgICAgICAgIGtleTEg
PSBrZXlzW2ldOworICAgICAgICBrZXkyID0ga2V5c1tpICsgMV07CisgICAgICAgIHNob3VsZEJl
VHJ1ZSgiaW5kZXhlZERCLmNtcCgiICsga2V5MSArICIsIiArIGtleTIgKyAiKSA9PT0gLTEiKTsK
KyAgICAgICAgc2hvdWxkQmVUcnVlKCJpbmRleGVkREIuY21wKCIgKyBrZXkyICsgIiwiICsga2V5
MSArICIpID09PSAxIik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXhlZERCLmNtcCgiICsg
a2V5MSArICIsIiArIGtleTEgKyAiKSA9PT0gMCIpOworICAgICAgICBzaG91bGRCZVRydWUoImlu
ZGV4ZWREQi5jbXAoIiArIGtleTIgKyAiLCIgKyBrZXkyICsgIikgPT09IDAiKTsKKyAgICB9Cit9
CisKK2Z1bmN0aW9uIHRlc3RJbnZhbGlkS2V5cygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRl
YnVnKCJjb21wYXJlIGludmFsaWQga2V5cyIpOworCisgICAgdmFyIGludmFsaWRLZXlzID0gWwor
ICAgICAgICAidm9pZCAwIiwgLy8gdW5kZWZpbmVkCisgICAgICAgICJ0cnVlIiwKKyAgICAgICAg
ImZhbHNlIiwKKyAgICAgICAgIk5hTiIsCisgICAgICAgICJuZXcgRGF0ZShOYU4pIiwKKyAgICAg
ICAgIm51bGwiLAorICAgICAgICAie30iLAorICAgICAgICAiZnVuY3Rpb24gKCkge30iLAorICAg
ICAgICAiL3JlZ2V4LyIsCisgICAgICAgICJzZWxmIiwKKyAgICAgICAgInNlbGYuZG9jdW1lbnQi
LAorICAgICAgICAic2VsZi5kb2N1bWVudC5ib2R5IgorICAgIF07CisKKyAgICB2YXIgaSwga2V5
MSwga2V5MjsKKyAgICBmb3IgKGkgPSAwOyBpIDwgaW52YWxpZEtleXMubGVuZ3RoIC0gMTsgaSAr
PSAxKSB7CisgICAgICAgIGtleTEgPSBpbnZhbGlkS2V5c1tpXTsKKyAgICAgICAga2V5MiA9IGlu
dmFsaWRLZXlzW2kgKyAxXTsKKyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXhl
ZERCLmNtcCgiICsga2V5MSArICIsICIgKyBrZXkyICsgIikiLCAiSURCRGF0YWJhc2VFeGNlcHRp
b24uREFUQV9FUlIiKTsKKyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXhlZERC
LmNtcCgiICsga2V5MiArICIsICIgKyBrZXkxICsgIikiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24u
REFUQV9FUlIiKTsKKyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXhlZERCLmNt
cCgiICsga2V5MSArICIsICd2YWxpZCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJS
Iik7CisgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4ZWREQi5jbXAoJ3ZhbGlk
JywgIiArIGtleTEgKyAiKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworICAg
ICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJpbmRleGVkREIuY21wKCIgKyBrZXkyICsgIiwg
J3ZhbGlkJykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKyAgICAgICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXhlZERCLmNtcCgndmFsaWQnLCAiICsga2V5MiArICIp
IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisgICAgfQorfQorCitmdW5jdGlv
biB0ZXN0SWRlbnRpY2FsS2V5cygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJjb21w
YXJlIGlkZW50aWNhbCBrZXlzIik7CisKKyAgICBzaG91bGRCZVRydWUoImluZGV4ZWREQi5jbXAo
MCwgLTApID09PSAwIik7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZmFj
dG9yeS1kZWxldGVkYXRhYmFzZS1pbnRlcmFjdGlvbnMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvZmFjdG9yeS1kZWxldGVkYXRhYmFzZS1pbnRlcmFjdGlvbnMu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTlkOWI3OTQzZGVhNWYzZTY2OWI1NGU4MmYzNTdkOTZiMjg0ZmIwYwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9mYWN0b3J5LWRlbGV0ZWRhdGFiYXNlLWludGVyYWN0aW9ucy5qcwpAQCAtMCwwICsxLDE4NiBA
QAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygn
c2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoZSBkZWxldGVEYXRhYmFzZSBj
YWxsIGFuZCBpdHMgaW50ZXJhY3Rpb24gd2l0aCBvcGVuL3NldFZlcnNpb24iKTsKKworZnVuY3Rp
b24gQ29ubmVjdGlvbihpZCkgeworICAgIGlkID0gU3RyaW5nKGlkKTsKKyAgICB2YXIgdGhhdCA9
IHRoaXM7CisgICAgdGhpcy5vcGVuID0gZnVuY3Rpb24ob3B0cykgeworICAgICAgICBzZWxmLnN0
ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIub3BlbiciKSk7CisgICAgICAgIHZhciBy
ZXEgPSBpbmRleGVkREIub3BlbihzZWxmLmRibmFtZSk7CisgICAgICAgIHJlcS5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlv
biAoZSkgeworICAgICAgICAgICAgdGhhdC5oYW5kbGUgPSBlLnRhcmdldC5yZXN1bHQ7CisgICAg
ICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIub3Blbi5vbnN1
Y2Nlc3MnIikpOworICAgICAgICAgICAgdGhhdC5oYW5kbGUub252ZXJzaW9uY2hhbmdlID0gZnVu
Y3Rpb24oZSkgeworICAgICAgICAgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCIn
IiArIGlkICsgIi5vbnZlcnNpb25jaGFuZ2UnIikpOworICAgICAgICAgICAgICAgIGlmIChvcHRz
ICYmIG9wdHMub252ZXJzaW9uKSB7IG9wdHMub252ZXJzaW9uLmNhbGwodGhhdCk7IH0KKyAgICAg
ICAgICAgIH07CisgICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9uc3VjY2VzcykgeyBvcHRz
Lm9uc3VjY2Vzcy5jYWxsKHRoYXQpOyB9CisgICAgICAgIH07CisgICAgfTsKKworICAgIHRoaXMu
Y2xvc2UgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2co
IiciICsgaWQgKyAiLmNsb3NlJyIpKTsKKyAgICAgICAgdGhpcy5oYW5kbGUuY2xvc2UoKTsKKyAg
ICB9OworCisgICAgdGhpcy5zZXRWZXJzaW9uID0gZnVuY3Rpb24ob3B0cykgeworICAgICAgICBz
ZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIuc2V0VmVyc2lvbiciKSk7Cisg
ICAgICAgIHZhciByZXEgPSB0aGlzLmhhbmRsZS5zZXRWZXJzaW9uKFN0cmluZyhzZWxmLnZlcisr
KSk7CisgICAgICAgIHJlcS5vbmFib3J0ID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgICAgIHNl
bGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5zZXRWZXJzaW9uLm9uYWJvcnQn
IikpOworICAgICAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5vbmFib3J0KSB7IG9wdHMub25hYm9y
dC5jYWxsKHRoYXQpOyB9CisgICAgICAgIH07CisgICAgICAgIHJlcS5vbmJsb2NrZWQgPSBmdW5j
dGlvbiAoZSkgeworICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsg
aWQgKyAiLnNldFZlcnNpb24ub25ibG9ja2VkJyIpKTsKKyAgICAgICAgICAgIGlmIChvcHRzICYm
IG9wdHMub25ibG9ja2VkKSB7IG9wdHMub25ibG9ja2VkLmNhbGwodGhhdCk7IH0KKyAgICAgICAg
fTsKKyAgICAgICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgICAgICBz
ZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIuc2V0VmVyc2lvbi5vbnN1Y2Nl
c3MnIikpOworICAgICAgICAgICAgaWYgKHRoYXQuaGFuZGxlLm9iamVjdFN0b3JlTmFtZXMuY29u
dGFpbnMoInRlc3Qtc3RvcmUiICsgc2VsZi52ZXIpKSB7CisgICAgICAgICAgICAgICAgdGhhdC5o
YW5kbGUuZGVsZXRlT2JqZWN0U3RvcmUoInRlc3Qtc3RvcmUiICsgc2VsZi52ZXIpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgdmFyIHN0b3JlID0gdGhhdC5oYW5kbGUuY3JlYXRlT2JqZWN0
U3RvcmUoInRlc3Qtc3RvcmUiICsgc2VsZi52ZXIpOworICAgICAgICAgICAgdmFyIGNvdW50ID0g
MDsKKyAgICAgICAgICAgIGRvX2FzeW5jX3B1dHMoKTsgLy8gS2VlcCB0aGlzIHRyYW5zYWN0aW9u
IHJ1bm5pbmcgZm9yIGEgd2hpbGUKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRvX2FzeW5jX3B1dHMo
KSB7CisgICAgICAgICAgICAgICAgdmFyIHJlcSA9IHN0b3JlLnB1dChjb3VudCwgY291bnQpOwor
ICAgICAgICAgICAgICAgIHJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cisg
ICAgICAgICAgICAgICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgICAg
ICAgICAgICAgIGlmICgrK2NvdW50IDwgMTApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRv
X2FzeW5jX3B1dHMoKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5zZXRW
ZXJzaW9uLnRyYW5zYWN0aW9uLWNvbXBsZXRlJyIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChvcHRzICYmIG9wdHMub25zdWNjZXNzKSB7IG9wdHMub25zdWNjZXNzLmNhbGwodGhhdCk7
IH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH07CisgICAgICAgICAg
ICB9CisgICAgICAgIH07CisgICAgICAgIHJlcS5vbmVycm9yID0gZnVuY3Rpb24gKGUpIHsKKyAg
ICAgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5zZXRWZXJz
aW9uLm9uZXJyb3InIikpOworICAgICAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5vbmVycm9yKSB7
IG9wdHMub25lcnJvci5jYWxsKHRoYXQpOyB9CisgICAgICAgIH07CisgICAgfTsKK30KKworZnVu
Y3Rpb24gZGVsZXRlRGF0YWJhc2UoaWQsIG5hbWUsIG9wdHMpIHsKKyAgICBzZWxmLnN0ZXBzLnB1
c2goZXZhbEFuZExvZygiJ2RlbGV0ZURhdGFiYXNlKCIgKyBpZCArICIpJyIpKTsKKyAgICB2YXIg
cmVxID0gaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKG5hbWUpOworICAgIHJlcS5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbiAoZSkgeworICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJ2Rl
bGV0ZURhdGFiYXNlKCIgKyBpZCArICIpLm9uc3VjY2VzcyciKSk7CisgICAgICAgIGlmIChvcHRz
ICYmIG9wdHMub25zdWNjZXNzKSB7IG9wdHMub25zdWNjZXNzLmNhbGwobnVsbCk7IH0KKyAgICB9
OworICAgIHJlcS5vbmVycm9yID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgc2VsZi5zdGVwcy5w
dXNoKGV2YWxBbmRMb2coIidkZWxldGVEYXRhYmFzZSgiICsgaWQgKyAiKS5vbmVycm9yJyIpKTsK
KyAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5vbmVycm9yKSB7IG9wdHMub25lcnJvci5jYWxsKG51
bGwpOyB9CisgICAgfTsKKyAgICByZXEub25ibG9ja2VkID0gZnVuY3Rpb24gKGUpIHsKKyAgICAg
ICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIidkZWxldGVEYXRhYmFzZSgiICsgaWQgKyAi
KS5vbmJsb2NrZWQnIikpOworICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9uYmxvY2tlZCkgeyBv
cHRzLm9uYmxvY2tlZC5jYWxsKG51bGwpOyB9CisgICAgfTsKK30KKworLy8gcnVuIGEgc2VyaWVz
IG9mIHN0ZXBzIHRoYXQgdGFrZSBhIGNvbnRpbnVhdGlvbiBmdW5jdGlvbgorZnVuY3Rpb24gcnVu
U3RlcHMoY29tbWFuZHMpIHsKKyAgICBpZiAoY29tbWFuZHMubGVuZ3RoKSB7CisgICAgICAgIHZh
ciBjb21tYW5kID0gY29tbWFuZHMuc2hpZnQoKTsKKyAgICAgICAgY29tbWFuZChmdW5jdGlvbigp
IHsgcnVuU3RlcHMoY29tbWFuZHMpOyB9KTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3QoKSB7
CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICB0ZXN0MSgpOworfQorCitmdW5jdGlv
biB0ZXN0MSgpIHsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRFU1Q6IGRlbGV0ZURhdGFi
YXNlIGJsb2NrZWQgb24gb3BlbiBoYW5kbGVzIik7CisgICAgZXZhbEFuZExvZygic2VsZi5kYm5h
bWUgPSAndGVzdDEnOyBzZWxmLnZlciA9IDE7IHNlbGYuc3RlcHMgPSBbXSIpOworICAgIHZhciBo
ID0gbmV3IENvbm5lY3Rpb24oImgiKTsKKyAgICBydW5TdGVwcyhbZnVuY3Rpb24oZG9OZXh0KSB7
IGgub3Blbih7b25zdWNjZXNzOiBkb05leHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9udmVyc2lvbjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZWJ1ZygiICAgIGggY2xvc2luZywgYnV0IG5vdCBpbW1lZGlhdGVseSIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
aC5jbG9zZSgpOyB9LCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0pOyB9
LAorICAgICAgICBmdW5jdGlvbihkb05leHQpIHsgZGVsZXRlRGF0YWJhc2UoIiIsIHNlbGYuZGJu
YW1lLCB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBvbnN1Y2Nlc3M6IGZpbmlzaFRlc3R9
KTsgfSwKKyAgICAgICAgXSk7CisgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzZWxmLnN0ZXBzLnRvU3RyaW5nKCkiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgWyJoLm9wZW4iLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJoLm9wZW4ub25zdWNjZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiZGVsZXRlRGF0YWJhc2UoKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgu
b252ZXJzaW9uY2hhbmdlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVsZXRl
RGF0YWJhc2UoKS5vbmJsb2NrZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJo
LmNsb3NlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVsZXRlRGF0YWJhc2Uo
KS5vbnN1Y2Nlc3MiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS50b1N0cmluZygp
KTsKKyAgICAgICAgdGVzdDIoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3QyKCkgeworICAg
IGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVEVTVDogZGVsZXRlRGF0YWJhc2Ugbm90IGJsb2NrZWQg
d2hlbiBoYW5kbGVzIGNsb3NlIGltbWVkaWF0ZWx5Iik7CisgICAgZXZhbEFuZExvZygic2VsZi5k
Ym5hbWUgPSAndGVzdDInOyBzZWxmLnZlciA9IDE7IHNlbGYuc3RlcHMgPSBbXSIpOworICAgIHZh
ciBoID0gbmV3IENvbm5lY3Rpb24oImgiKTsKKyAgICBydW5TdGVwcyhbZnVuY3Rpb24oZG9OZXh0
KSB7IGgub3Blbih7b25zdWNjZXNzOiBkb05leHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvbnZlcnNpb246IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKCIgICAgaCBjbG9zaW5nIGltbWVk
aWF0ZWx5Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aC5jbG9zZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0p
OyB9LAorICAgICAgICBmdW5jdGlvbihkb05leHQpIHsgZGVsZXRlRGF0YWJhc2UoIiIsIHNlbGYu
ZGJuYW1lLCB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBvbnN1Y2Nlc3M6IGZpbmlzaFRl
c3R9KTsgfSwKKyAgICAgICAgXSk7CisgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAg
ICAgZGVidWcoIk5PVEU6IFdpbGwgRkFJTCB3aXRoIGV4dHJhIGJvZ3VzIGRlbGV0ZURhdGFiYXNl
KCkub25ibG9ja2VkIHN0ZXA7IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MTEzMCIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNlbGYuc3RlcHMudG9T
dHJpbmcoKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImgub3BlbiIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImgub3Blbi5vbnN1Y2Nlc3MiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJkZWxldGVEYXRhYmFzZSgpIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiaC5vbnZlcnNpb25jaGFuZ2UiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJoLmNsb3NlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
ZGVsZXRlRGF0YWJhc2UoKS5vbnN1Y2Nlc3MiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXS50b1N0cmluZygpKTsKKyAgICAgICAgdGVzdDMoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9u
IHRlc3QzKCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVEVTVDogZGVsZXRlRGF0YWJh
c2UgaXMgZGVsYXllZCBpZiBhIFZFUlNJT05fQ0hBTkdFIHRyYW5zYWN0aW9uIGlzIHJ1bm5pbmci
KTsKKyAgICBldmFsQW5kTG9nKCJzZWxmLmRibmFtZSA9ICd0ZXN0Myc7IHNlbGYudmVyID0gMTsg
c2VsZi5zdGVwcyA9IFtdIik7CisgICAgdmFyIGggPSBuZXcgQ29ubmVjdGlvbigiaCIpOworICAg
IHJ1blN0ZXBzKFtmdW5jdGlvbihkb05leHQpIHsgaC5vcGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb252ZXJzaW9uOiBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKCIgICAgaCBjbG9zaW5n
LCBidXQgbm90IGltbWVkaWF0ZWx5Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBoLmNsb3NlKCk7IH0sIDApOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9fSk7IH0sCisgICAgICAgICAgICAgIGZ1bmN0aW9uKGRv
TmV4dCkgeyBoLnNldFZlcnNpb24oKTsgZG9OZXh0KCk7IH0sCisgICAgICAgICAgICAgIGZ1bmN0
aW9uKGRvTmV4dCkgeyBkZWxldGVEYXRhYmFzZSgiIiwgc2VsZi5kYm5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHtvbnN1Y2Nlc3M6IGZpbmlzaFRlc3R9KTsgfSwKKyAgICAg
ICAgICAgICAgXSk7CisKKyAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgeworICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoInNlbGYuc3RlcHMudG9TdHJpbmcoKSIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbImgub3BlbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImgub3Blbi5vbnN1Y2Nlc3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJo
LnNldFZlcnNpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWxldGVEYXRh
YmFzZSgpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaC5zZXRWZXJzaW9uLm9u
c3VjY2VzcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImguc2V0VmVyc2lvbi50
cmFuc2FjdGlvbi1jb21wbGV0ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgu
b252ZXJzaW9uY2hhbmdlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVsZXRl
RGF0YWJhc2UoKS5vbmJsb2NrZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJo
LmNsb3NlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVsZXRlRGF0YWJhc2Uo
KS5vbnN1Y2Nlc3MiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS50b1N0cmluZygp
KTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQorfQorCit0ZXN0KCk7ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL2ZhY3RvcnktZGVsZXRlZGF0YWJhc2UuanMgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZmFjdG9yeS1kZWxldGVkYXRhYmFzZS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wNmZhNTYyMjlhNzQyNjY2ZWE5ZmIwNTE2YThhY2I3MjQxMTUwZjk4Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ZhY3Rv
cnktZGVsZXRlZGF0YWJhc2UuanMKQEAgLTAsMCArMSw5MSBAQAoraWYgKHRoaXMuaW1wb3J0U2Ny
aXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rl
c2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIHdlYmtpdEluZGV4ZWREQi5kZWxldGVEYXRhYmFz
ZSgpLiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygp
OworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignZGF0YWJhc2UtdG8t
ZGVsZXRlJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHN0YXJ0U2V0VmVyc2lvbjsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rp
b24gc3RhcnRTZXRWZXJzaW9uKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNp
b24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4aXN0
aW5nOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBkZWxldGVFeGlzdGluZygpCit7CisgICAgc2VsZi50cmFucyA9IGV2YWxBbmRM
b2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJh
bnMgIT09IG51bGwiKTsKKworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVh
dGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKKworICAgIHNlbGYuaW5kZXggPSBl
dmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhOYW1lJywgJycpIik7CisgICAgc2hv
dWxkQmVUcnVlKCJzdG9yZS5pbmRleE5hbWVzLmNvbnRhaW5zKCdpbmRleE5hbWUnKSIpOworCisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCgndmFsdWUnLCAna2V5JykiKTsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB0cmFucy5v
bmNvbXBsZXRlID0gZ2V0VmFsdWU7Cit9CisKK2Z1bmN0aW9uIGdldFZhbHVlKCkKK3sKKyAgICB0
cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coImRiLnRyYW5zYWN0aW9uKCdzdG9yZU5hbWUnLCBJREJU
cmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9
IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworCisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInN0b3JlLmdldCgna2V5JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGFkZEluZGV4OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworfQorCitmdW5jdGlvbiBhZGRJbmRleCgpCit7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJldmVudC50YXJnZXQucmVzdWx0IiwgInZhbHVlIik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZGVsZXRlRGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZURhdGFiYXNlKCkKK3sKKyAgICBkYi5v
bnZlcnNpb25jaGFuZ2UgPSBmdW5jdGlvbigpIHsgZGIuY2xvc2UoKTsgfQorICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCdkYXRhYmFz
ZS10by1kZWxldGUnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcmVvcGVuRGF0YWJhc2U7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIHJlb3BlbkRhdGFiYXNlKCkKK3sKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5k
ZXhlZERCLm9wZW4oJ2RhdGFiYXNlLXRvLWRlbGV0ZScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBzdGFydFNldFZlcnNpb25BZ2FpbjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc3RhcnRTZXRWZXJzaW9uQWdhaW4oKQor
eworICAgIHJkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHZlcmlmeU5vdEZvdW5kOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiB2ZXJpZnlOb3RG
b3VuZCgpCit7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjAi
KTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL2luZGV4LWNvdW50LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL2luZGV4LWNvdW50LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiMGU0ZWYwOTg0NTAxOWY3ZTFmZGZh
ZDdkNDZjNmFiYWJiNDZhN2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvaW5kZXgtY291bnQuanMKQEAgLTAsMCArMSwxNTQgQEAKK2lm
ICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJl
ZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBJREJJbmRleC5jb3Vu
dCgpLiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygp
OworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignaW5kZXgtY291bnQn
KSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGRiID0gZXZhbEFuZExv
ZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IHByZXBhcmVEYXRhYmFzZTsKKyAgICB9OworfQorCitmdW5jdGlvbiBwcmVwYXJlRGF0YWJh
c2UoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygicHJlcGFyaW5nIGRhdGFiYXNlIik7
CisgICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKworICAgIGRlbGV0ZUFs
bE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7CisKKyAgICBzZWxmLmluZGV4
ID0gZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZScsICcnKSIpOworICAg
IHNob3VsZEJlVHJ1ZSgic3RvcmUuaW5kZXhOYW1lcy5jb250YWlucygnaW5kZXhOYW1lJykiKTsK
KworICAgIGRlYnVnKCJhZGRpbmcgMCAuLi4gOTkiKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDEwMDsgKytpKSB7CisgICAgICAgIHJlcXVlc3QgPSBzdG9yZS5hZGQoaSwgaSk7CisgICAgICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIH0KKyAgICB0
cmFucy5vbmNvbXBsZXRlID0gdmVyaWZ5Q291bnQ7Cit9CisKK2Z1bmN0aW9uIHZlcmlmeUNvdW50
KCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInZlcmlmeWluZyBjb3VudCB3aXRob3V0
IHJhbmdlIik7CisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9u
KCdzdG9yZU5hbWUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7CisgICAgc2hvdWxkQmVU
cnVlKCJ0cmFucyAhPSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9y
dENhbGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSB2ZXJpZnlDb3VudFdpdGhSYW5nZTsK
KworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3Rv
cmVOYW1lJykiKTsKKyAgICBzaG91bGRCZVRydWUoInN0b3JlICE9IG51bGwiKTsKKyAgICBpbmRl
eCA9IGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4TmFtZScpIik7CisgICAg
c2hvdWxkQmVUcnVlKCJpbmRleCAhPSBudWxsIik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygicmVxdWVzdCA9IGluZGV4LmNvdW50KCkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkg
eworICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251bWJl
ciciKTsKKyAgICAgICAgIHNob3VsZEJlKCJyZXF1ZXN0LnJlc3VsdCIsICIxMDAiKTsKKyAgICAg
ICAgIC8vIGxldCB0aGUgdHJhbnNhY3Rpb24gY29tcGxldGUKKyAgICB9OworfQorCitmdW5jdGlv
biB2ZXJpZnlDb3VudFdpdGhSYW5nZSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ2
ZXJpZnlpbmcgY291bnQgd2l0aCByYW5nZSIpOworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJh
bnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZ
KSIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJv
cnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gdmVy
aWZ5Q291bnRXaXRoS2V5OworCisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5z
Lm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworICAgIHNob3VsZEJlVHJ1ZSgic3RvcmUgIT0g
bnVsbCIpOworICAgIHN0b3JlID0gZXZhbEFuZExvZygiaW5kZXggPSB0cmFucy5vYmplY3RTdG9y
ZSgnc3RvcmVOYW1lJykuaW5kZXgoJ2luZGV4TmFtZScpIik7CisgICAgc2hvdWxkQmVUcnVlKCJp
bmRleCAhPSBudWxsIik7CisKKyAgICB2YXIgdGVzdHMgPSBbCisgICAgICAgIHsgbG93ZXI6IDAs
IGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiA5OSwgdXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6
IDEwMCB9LAorICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IHRydWUsIHVwcGVyOiA5OSwg
dXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDk5IH0sCisgICAgICAgIHsgbG93ZXI6IDAsIGxv
d2VyT3BlbjogZmFsc2UsIHVwcGVyOiA5OSwgdXBwZXJPcGVuOiB0cnVlLCBleHBlY3RlZDogOTkg
fSwKKyAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiB0cnVlLCB1cHBlcjogOTksIHVwcGVy
T3BlbjogdHJ1ZSwgZXhwZWN0ZWQ6IDk4IH0sCisgICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3Bl
bjogZmFsc2UsIHVwcGVyOiAxMDAsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiAxMDAgfSwK
KyAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDEwMCwgdXBwZXJP
cGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDEwMCB9LAorICAgICAgICB7IGxvd2VyOiAxMCwgbG93ZXJP
cGVuOiBmYWxzZSwgdXBwZXI6IDEwMCwgdXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDkwIH0s
CisgICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiAwLCB1cHBlck9w
ZW46IGZhbHNlLCBleHBlY3RlZDogMSB9LAorICAgICAgICB7IGxvd2VyOiA1MDAsIGxvd2VyT3Bl
bjogZmFsc2UsIHVwcGVyOiA1MDAsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiAwIH0KKyAg
ICBdOworCisgICAgZnVuY3Rpb24gbmV4dFRlc3QoKSB7CisgICAgICAgIGRlYnVnKCIiKTsKKyAg
ICAgICAgZXZhbEFuZExvZygidGVzdCA9ICIgKyBKU09OLnN0cmluZ2lmeSh0ZXN0cy5zaGlmdCgp
KSk7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXguY291bnQo
SURCS2V5UmFuZ2UuYm91bmQodGVzdC5sb3dlciwgdGVzdC51cHBlciwgdGVzdC5sb3dlck9wZW4s
IHRlc3QudXBwZXJPcGVuKSkiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251
bWJlciciKTsKKyAgICAgICAgICAgICBzaG91bGRCZSgicmVxdWVzdC5yZXN1bHQiLCBTdHJpbmco
dGVzdC5leHBlY3RlZCkpOworCisgICAgICAgICAgICAgaWYgKHRlc3RzLmxlbmd0aCkgeworICAg
ICAgICAgICAgICAgICBuZXh0VGVzdCgpOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAv
LyBvdGhlcndpc2UgbGV0IHRoZSB0cmFuc2FjdGlvbiBjb21wbGV0ZQorICAgICAgICB9OworICAg
IH0KKworICAgIG5leHRUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHZlcmlmeUNvdW50V2l0aEtleSgp
Cit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ2ZXJpZnlpbmcgY291bnQgd2l0aCBrZXki
KTsKKyAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3Jl
TmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkiKTsKKyAgICBzaG91bGRCZVRydWUoInRy
YW5zICE9IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJh
Y2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IGZpbmlzaEpTVGVzdDsKKworICAgIHN0b3JlID0g
ZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAg
ICBzaG91bGRCZVRydWUoInN0b3JlICE9IG51bGwiKTsKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2co
ImluZGV4ID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpLmluZGV4KCdpbmRleE5hbWUn
KSIpOworICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXggIT0gbnVsbCIpOworCisgICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigiaW5kZXguY291bnQoTmFOKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5E
QVRBX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4LmNvdW50KHt9KSIs
ICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oImluZGV4LmNvdW50KC9yZWdleC8pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFf
RVJSIik7CisKKyAgICB2YXIgdGVzdHMgPSBbCisgICAgICAgIHsga2V5OiAwLCBleHBlY3RlZDog
MSB9LAorICAgICAgICB7IGtleTogMTAwLCBleHBlY3RlZDogMCB9LAorICAgICAgICB7IGtleTog
bnVsbCwgZXhwZWN0ZWQ6IDEwMCB9CisgICAgXTsKKworICAgIGZ1bmN0aW9uIG5leHRUZXN0KCkg
eworICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgIGV2YWxBbmRMb2coInRlc3QgPSAiICsgSlNP
Ti5zdHJpbmdpZnkodGVzdHMuc2hpZnQoKSkpOworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygicmVxdWVzdCA9IGluZGV4LmNvdW50KHRlc3Qua2V5KSIpOworICAgICAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICBzaG91bGRCZVRydWUoInR5cGVvZiByZXF1
ZXN0LnJlc3VsdCA9PSAnbnVtYmVyJyIpOworICAgICAgICAgICAgIHNob3VsZEJlKCJyZXF1ZXN0
LnJlc3VsdCIsIFN0cmluZyh0ZXN0LmV4cGVjdGVkKSk7CisKKyAgICAgICAgICAgICBpZiAodGVz
dHMubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgIG5leHRUZXN0KCk7CisgICAgICAgICAgICAg
fQorICAgICAgICAgICAgIC8vIG90aGVyd2lzZSBsZXQgdGhlIHRyYW5zYWN0aW9uIGNvbXBsZXRl
CisgICAgICAgIH07CisgICAgfQorCisgICAgbmV4dFRlc3QoKTsKK30KKwordGVzdCgpOwpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9pbmRleC1jdXJzb3IuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvaW5kZXgtY3Vyc29yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5ODhlYmMx
OGM0NmU4ODgxYzRmMTUwMzM4ZjcyN2JmNDg3NTI0ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW5kZXgtY3Vyc29yLmpzCkBAIC0w
LDAgKzEsMjQ5IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0
cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBv
cnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERC
J3Mgd2Via2l0SURCSW5kZXgub3BlbkN1cnNvciArIHRoZSBjdXJzb3IgaXQgcHJvZHVjZXMgaW4g
ZGVwdGguIik7CisKKy8vIEluIG9yZGVyIG9mIGhvdyBpdCBzaG91bGQgYmUgc29ydGVkIGJ5IElu
ZGV4ZWREQi4KK3NlbGYudGVzdERhdGEgPSBbCisgICAgMSwKKyAgICAxLAorICAgIDMuMTQxNTks
CisgICAgMy4xNDE1OSwKKyAgICAxMCwKKyAgICAvLyBGSVhNRTogRGF0ZXMuCisgICAgIkEgYmln
IHN0cmluZyIsCisgICAgInRoZSBCSUdFU1Qgc3RyaW5nIiwKKyAgICAidGhlIEJJR0VTVCBzdHJp
bmciCitdOworCitmdW5jdGlvbiBvcGVuRGF0YWJhc2UoKQoreworICAgIHJlc3VsdCA9IGV2YWxB
bmRMb2coImluZGV4ZWREQi5vcGVuKCdpbmRleC1jdXJzb3InKSIpOworICAgIHJlc3VsdC5vbnN1
Y2Nlc3MgPSBzZXRWZXJzaW9uOworICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb24oKQoreworICAgIHNlbGYuZGIgPSBl
dmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlc3VsdCA9IGV2
YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXN1bHQub25z
dWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7CisgICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVsZXRlRXhpc3RpbmcoKQoreworICAgIHNl
bGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAg
ICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVu
ZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsK
KworICAgIHNlbGYub2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9y
ZSgnc29tZU9iamVjdFN0b3JlJykiKTsKKyAgICBzZWxmLmluZGV4T2JqZWN0ID0gZXZhbEFuZExv
Zygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ3NvbWVJbmRleCcsICd4JykiKTsKKyAgICBzZWxm
Lm5leHRUb0FkZCA9IDA7CisgICAgYWRkRGF0YSgpOworfQorCitmdW5jdGlvbiBhZGREYXRhKCkK
K3sKKyAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoeyd4JzogdGVzdERh
dGFbbmV4dFRvQWRkXX0sIG5leHRUb0FkZCkiKTsKKyAgICByZXN1bHQub25zdWNjZXNzID0gKytz
ZWxmLm5leHRUb0FkZCA8IHRlc3REYXRhLmxlbmd0aCA/IGFkZERhdGEgOiBzY2hlZHVsZVRlc3Rz
OworICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIHNjaGVkdWxlVGVzdHMoKQoreworICAgIGRlYnVnKCJTY2hlZHVsaW5nIHRlc3RzLi4u
Iik7CisgICAgc2VsZi5zY2hlZHVsZWRUZXN0cyA9IFtdOworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgdGVzdERhdGEubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgLyogbGVmdCBib3VuZCwgaXMgb3Bl
biwgcmlnaHQgYm91bmQsIGlzIG9wZW4sIGFzY2VuZGluZyAqLworICAgICAgICBzY2hlZHVsZWRU
ZXN0cy51bnNoaWZ0KFtpLCB0cnVlLCBudWxsLCBudWxsLCB0cnVlXSk7CisgICAgICAgIHNjaGVk
dWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBudWxsLCBudWxsLCB0cnVlXSk7CisgICAgICAg
IHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW251bGwsIG51bGwsIGksIHRydWUsIHRydWVdKTsKKyAg
ICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbbnVsbCwgbnVsbCwgaSwgZmFsc2UsIHRydWVd
KTsKKyAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwgbnVsbCwgbnVsbCwg
ZmFsc2VdKTsKKyAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgZmFsc2UsIG51bGws
IG51bGwsIGZhbHNlXSk7CisgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW251bGwsIG51
bGwsIGksIHRydWUsIGZhbHNlXSk7CisgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW251
bGwsIG51bGwsIGksIGZhbHNlLCBmYWxzZV0pOworICAgICAgICBmb3IgKHZhciBqID0gNjsgaiA8
IHRlc3REYXRhLmxlbmd0aDsgKytqKSB7CisgICAgICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNo
aWZ0KFtpLCB0cnVlLCBqLCB0cnVlLCB0cnVlXSk7CisgICAgICAgICAgICBzY2hlZHVsZWRUZXN0
cy51bnNoaWZ0KFtpLCB0cnVlLCBqLCBmYWxzZSwgdHJ1ZV0pOworICAgICAgICAgICAgc2NoZWR1
bGVkVGVzdHMudW5zaGlmdChbaSwgZmFsc2UsIGosIHRydWUsIHRydWVdKTsKKyAgICAgICAgICAg
IHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBqLCBmYWxzZSwgdHJ1ZV0pOworICAg
ICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwgaiwgdHJ1ZSwgZmFsc2Vd
KTsKKyAgICAgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIHRydWUsIGosIGZhbHNl
LCBmYWxzZV0pOworICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgZmFsc2Us
IGosIHRydWUsIGZhbHNlXSk7CisgICAgICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtp
LCBmYWxzZSwgaiwgZmFsc2UsIGZhbHNlXSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBkZWJ1
ZygiUnVubmluZyB0ZXN0cy4uLiIpOworICAgIHJ1bk5leHRUZXN0KCk7Cit9CisKK2Z1bmN0aW9u
IHJ1bk5leHRUZXN0KCkKK3sKKyAgICBpZiAoIXNjaGVkdWxlZFRlc3RzLmxlbmd0aCkgeworICAg
ICAgICB0ZXN0TnVsbEtleVJhbmdlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2
YXIgdGVzdCA9IHNjaGVkdWxlZFRlc3RzLnBvcCgpOworICAgIHNlbGYubG93ZXIgPSB0ZXN0WzBd
OworICAgIHNlbGYubG93ZXJJc09wZW4gPSB0ZXN0WzFdOworICAgIHNlbGYudXBwZXIgPSB0ZXN0
WzJdOworICAgIHNlbGYudXBwZXJJc09wZW4gPSB0ZXN0WzNdOworICAgIHNlbGYuYXNjZW5kaW5n
ID0gdGVzdFs0XTsKKworICAgIHN0ciA9ICJOZXh0IHRlc3Q6ICI7CisgICAgaWYgKGxvd2VyICE9
PSBudWxsKSB7CisgICAgICAgIHN0ciArPSAibG93ZXIgIjsKKyAgICAgICAgaWYgKGxvd2VySXNP
cGVuKQorICAgICAgICAgICAgc3RyICs9ICJvcGVuICI7CisgICAgICAgIHN0ciArPSAiYm91bmQg
aXMgIiArIGxvd2VyICsgIjsgIjsKKyAgICB9CisgICAgaWYgKHVwcGVyICE9PSBudWxsKSB7Cisg
ICAgICAgIHN0ciArPSAidXBwZXIgIjsKKyAgICAgICAgaWYgKHVwcGVySXNPcGVuKQorICAgICAg
ICAgICAgc3RyICs9ICJvcGVuICI7CisgICAgICAgIHN0ciArPSAiYm91bmQgaXMgIiArIHVwcGVy
ICsgIjsgIjsKKyAgICB9CisgICAgaWYgKGFzY2VuZGluZykKKyAgICAgICAgc3RyICs9ICJzb3J0
ZWQgYXNjZW5kaW5nLiI7CisgICAgZWxzZQorICAgICAgICBzdHIgKz0gInNvcnRlZCBkZXNjZW5k
aW5nLiI7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoc3RyKTsKKworICAgIC8vIFdvcmsg
YXJvdW5kIGZvciBkdXBsaWNhdGUgdmFsdWVzLgorICAgIGlmICh1cHBlciAhPT0gbnVsbCkgewor
ICAgICAgICBpZiAodXBwZXJJc09wZW4pIHsKKyAgICAgICAgICAgIHdoaWxlICh1cHBlciA+IDAg
JiYgdGVzdERhdGFbdXBwZXJdID09PSB0ZXN0RGF0YVt1cHBlciAtIDFdKQorICAgICAgICAgICAg
ICAgIC0tc2VsZi51cHBlcjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHdoaWxlICh1
cHBlciA8IHRlc3REYXRhLmxlbmd0aCAtIDEgJiYgdGVzdERhdGFbdXBwZXJdID09PSB0ZXN0RGF0
YVt1cHBlciArIDFdKQorICAgICAgICAgICAgICAgICsrc2VsZi51cHBlcjsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBpZiAobG93ZXIgIT09IG51bGwpIHsKKyAgICAgICAgaWYgKGxvd2VySXNPcGVu
KSB7CisgICAgICAgICAgICB3aGlsZSAobG93ZXIgPCB0ZXN0RGF0YS5sZW5ndGggLSAxICYmIHRl
c3REYXRhW2xvd2VyXSA9PT0gdGVzdERhdGFbbG93ZXIgKyAxXSkKKyAgICAgICAgICAgICAgICAr
K3NlbGYubG93ZXI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB3aGlsZSAobG93ZXIg
PiAwICYmIHRlc3REYXRhW2xvd2VyXSA9PT0gdGVzdERhdGFbbG93ZXIgLSAxXSkKKyAgICAgICAg
ICAgICAgICAtLXNlbGYubG93ZXI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoYXNjZW5k
aW5nKSB7CisgICAgICAgIGlmIChsb3dlciAhPT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKCFs
b3dlcklzT3BlbikKKyAgICAgICAgICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSBsb3dlcjsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSBs
b3dlciArIDE7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4
ID0gMDsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAodXBwZXIgIT09IG51bGwpIHsKKyAgICAg
ICAgICAgIGlmICghdXBwZXJJc09wZW4pCisgICAgICAgICAgICAgICAgc2VsZi5leHBlY3RlZElu
ZGV4ID0gdXBwZXI7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc2VsZi5leHBl
Y3RlZEluZGV4ID0gdXBwZXIgLSAxOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHNlbGYu
ZXhwZWN0ZWRJbmRleCA9IHRlc3REYXRhLmxlbmd0aCAtIDE7CisgICAgfQorICAgIHRlc3RXaXRo
aW5Cb3VuZHMoKTsKKworICAgIGlmICh0ZXN0RGF0YVtsb3dlcl0gPT09IHRlc3REYXRhW3VwcGVy
XSAmJiAobG93ZXJJc09wZW4gfHwgdXBwZXJJc09wZW4pKSB7CisgICAgICAgIGRlYnVnKCJTa2lw
cGluZyBpbGxlZ2FsIGtleSByYW5nZS4iKTsKKyAgICAgICAgcnVuTmV4dFRlc3QoKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIHZhciBrZXlSYW5nZTsKKyAgICBpZiAobG93ZXIgIT09
IG51bGwgJiYgdXBwZXIgIT09IG51bGwpCisgICAgICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2Uu
Ym91bmQodGVzdERhdGFbbG93ZXJdLCB0ZXN0RGF0YVt1cHBlcl0sIGxvd2VySXNPcGVuLCB1cHBl
cklzT3Blbik7CisgICAgZWxzZSBpZiAobG93ZXIgIT09IG51bGwpCisgICAgICAgIGtleVJhbmdl
ID0gSURCS2V5UmFuZ2UubG93ZXJCb3VuZCh0ZXN0RGF0YVtsb3dlcl0sIGxvd2VySXNPcGVuKTsK
KyAgICBlbHNlCisgICAgICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2UudXBwZXJCb3VuZCh0ZXN0
RGF0YVt1cHBlcl0sIHVwcGVySXNPcGVuKTsKKworICAgIHZhciByZXF1ZXN0ID0gaW5kZXhPYmpl
Y3Qub3BlbktleUN1cnNvcihrZXlSYW5nZSwgYXNjZW5kaW5nID8gSURCQ3Vyc29yLk5FWFQgOiBJ
REJDdXJzb3IuUFJFVik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3JJdGVyYXRpb247
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIHRlc3RXaXRoaW5Cb3VuZHMoKQoreworICAgIGlmIChleHBlY3RlZEluZGV4IDwgMCB8
fCB0ZXN0RGF0YS5sZW5ndGggPD0gZXhwZWN0ZWRJbmRleCkKKyAgICAgICAgc2VsZi5leHBlY3Rl
ZEluZGV4ID0gbnVsbDsKKyAgICBpZiAobG93ZXIgIT09IG51bGwgJiYgZXhwZWN0ZWRJbmRleCA8
IGxvd2VyKQorICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSBudWxsOworICAgIGlmICh1cHBl
ciAhPT0gbnVsbCAmJiB1cHBlciA8IGV4cGVjdGVkSW5kZXgpCisgICAgICAgIHNlbGYuZXhwZWN0
ZWRJbmRleCA9IG51bGw7CisgICAgaWYgKGxvd2VyICE9PSBudWxsICYmIGxvd2VySXNPcGVuICYm
IGV4cGVjdGVkSW5kZXggPD0gbG93ZXIpCisgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IG51
bGw7CisgICAgaWYgKHVwcGVyICE9PSBudWxsICYmIHVwcGVySXNPcGVuICYmIHVwcGVyIDw9IGV4
cGVjdGVkSW5kZXgpCisgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IG51bGw7Cit9CisKK2Z1
bmN0aW9uIGN1cnNvckl0ZXJhdGlvbigpCit7CisgICAgaWYgKGV4cGVjdGVkSW5kZXggPT09IG51
bGwpIHsKKyAgICAgICAgc2hvdWxkQmVOdWxsKCJldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAg
ICAgIHJ1bk5leHRUZXN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGV2ZW50
LnRhcmdldC5yZXN1bHQgPT09IG51bGwpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiZXZlbnQudGFy
Z2V0LnJlc3VsdCBzaG91bGQgbm90IGJlIG51bGwuIik7CisgICAgICAgIHJ1bk5leHRUZXN0KCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJl
c3VsdC5wcmltYXJ5S2V5IiwgImV4cGVjdGVkSW5kZXgiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQu
dGFyZ2V0LnJlc3VsdC5rZXkiLCAidGVzdERhdGFbIiArIGV4cGVjdGVkSW5kZXggKyAiXSIpOwor
ICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IGFzY2VuZGluZyA/IGV4cGVjdGVkSW5kZXggKyAxIDog
ZXhwZWN0ZWRJbmRleCAtIDE7CisgICAgdGVzdFdpdGhpbkJvdW5kcygpOworCisgICAgZXZlbnQu
dGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpOworfQorCitzZWxmLm51bGxLZXlSYW5nZVN0ZXAgPSAw
OworZnVuY3Rpb24gdGVzdE51bGxLZXlSYW5nZSgpCit7CisgICAgc2VsZi5sb3dlciA9IDA7Cisg
ICAgc2VsZi5sb3dlcklzT3BlbiA9IGZhbHNlOworICAgIHNlbGYudXBwZXIgPSB0ZXN0RGF0YS5s
ZW5ndGgtMTsKKyAgICBzZWxmLnVwcGVySXNPcGVuID0gZmFsc2U7CisKKyAgICBzdHIgPSAiTmV4
dCB0ZXN0OiBudWxsIGtleSBwYXRoICI7CisgICAgaWYgKHNlbGYubnVsbEtleVJhbmdlU3RlcCA9
PSAwKSB7CisgICAgICAgIHN0ciArPSAic29ydGVkIGFzY2VuZGluZy4iOworICAgICAgICBzZWxm
LmFzY2VuZGluZyA9IHRydWU7CisgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IGxvd2VyOwor
ICAgICAgICBzZWxmLm51bGxLZXlSYW5nZVN0ZXAgPSAxOworICAgIH0gZWxzZSBpZiAoc2VsZi5u
dWxsS2V5UmFuZ2VTdGVwID09IDEpIHsKKyAgICAgICAgc3RyICs9ICJzb3J0ZWQgZGVzY2VuZGlu
Zy4iOworICAgICAgICBzZWxmLmFzY2VuZGluZyA9IGZhbHNlOworICAgICAgICBzZWxmLmV4cGVj
dGVkSW5kZXggPSB1cHBlcjsKKyAgICAgICAgc2VsZi5udWxsS2V5UmFuZ2VTdGVwID0gMjsKKyAg
ICB9IGVsc2UgeworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZyhzdHIpOworCisgICAgdmFyIHJlcXVlc3Qg
PSBpbmRleE9iamVjdC5vcGVuS2V5Q3Vyc29yKG51bGwsIGFzY2VuZGluZyA/IElEQkN1cnNvci5O
RVhUIDogSURCQ3Vyc29yLlBSRVYpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29ySXRl
cmF0aW9uOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCityZW1vdmVWZW5kb3JQcmVmaXhlcygpOworb3BlbkRhdGFiYXNlKCk7IC8vIFRoZSBmaXJz
dCBzdGVwLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL2luZGV4LWdldC1rZXktYXJndW1lbnQtcmVxdWlyZWQuanMgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW5kZXgtZ2V0LWtleS1hcmd1bWVudC1yZXF1aXJlZC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xM2QzODcwZWVlOWY0ZWJhOTAxNTY4ZWYwOTdiMzBkZmRlYzliOTdhCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L2luZGV4LWdldC1rZXktYXJndW1lbnQtcmVxdWlyZWQuanMKQEAgLTAsMCArMSwzOSBAQAoraWYg
KHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVk
LmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBpbmRleCAuZ2V0KCkgcmVx
dWlyZWQgYXJndW1lbnQiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9y
UHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRl
c2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFs
QW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjcmVhdGVBbmRQb3B1
bGF0ZU9iamVjdFN0b3JlKCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisg
ICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVj
dFN0b3JlKCdmb28nLCB7IGtleVBhdGg6ICdpZCcsIGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7
CisgICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4
KCdmaXJzdCcsICdmaXJzdCcpOyIpOworICAgIHNob3VsZFRocm93KCJpbmRleC5nZXQoKTsiKTsK
KyAgICBzaG91bGRUaHJvdygiaW5kZXguZ2V0S2V5KCk7Iik7CisgICAgZmluaXNoSlNUZXN0KCk7
Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW5kZXgtbXVsdGllbnRyeS5q
cyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbmRleC1tdWx0aWVu
dHJ5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjAzY2RkOGE5MTU5ZWYxOWUxOWE3NjcyMGFjZjk2ZTYwN2IxNzkz
ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvaW5kZXgtbXVsdGllbnRyeS5qcwpAQCAtMCwwICsxLDE0MCBAQAoraWYgKHRoaXMuaW1w
b3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9
CisKK2Rlc2NyaXB0aW9uKCJUZXN0IGZlYXR1cmVzIG9mIEluZGV4ZWREQidzIG11bHRpRW50cnkg
aW5kaWNlcy4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4
ZXMoKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignaW5kZXgt
bXVsdGlFbnRyeScpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZGIg
PSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgICAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IHByZXBhcmVEYXRhYmFzZTsKKyAgICB9OworfQorCitmdW5jdGlvbiBwcmVwYXJlRGF0
YWJhc2UoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiQ3JlYXRpbmcgZW1wdHkgc3Rv
cmVzIGFuZCBpbmRleGVzIik7CisgICAgdmFyIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBl
dmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIp
OworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFu
cy5vbmNvbXBsZXRlID0gYWRkRGF0YTsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7
CisKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUo
J3N0b3JlJykiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXgnLCAn
eCcsIHttdWx0aUVudHJ5OiB0cnVlfSkiKTsKKworICAgIHN0b3JlMiA9IGV2YWxBbmRMb2coInN0
b3JlMiA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZS11bmlxdWUnKSIpOworICAgIGV2YWxB
bmRMb2coInN0b3JlMi5jcmVhdGVJbmRleCgnaW5kZXgtdW5pcXVlJywgJ3gnLCB7bXVsdGlFbnRy
eTogdHJ1ZSwgdW5pcXVlOiB0cnVlfSkiKTsKK30KKworZnVuY3Rpb24gYWRkRGF0YSgpCit7Cisg
ICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJQb3B1bGF0aW5nIHN0b3JlcyAoYW5kIGluZGV4ZXMp
Iik7CisgICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5z
YWN0aW9uKFsnc3RvcmUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICB0cmFu
c2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnNhY3Rp
b24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKCkgeyB2ZXJpZnlJbmRleGVzKCdpbmRleCcsIHZlcmlm
eVVuaXF1ZUNvbnN0cmFpbnQpOyB9OworCisgICAgZGVidWcoIkZpcnN0IHRyeSBzb21lIGtleXMg
dGhhdCBhcmVuJ3Qgd2hhdCB3ZSdyZSBleHBlY3RpbmciKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KHt4OiBbNywgOCwgOV0s
IHk6ICdhJ30sICdmb28nKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworICAgIGRlYnVnKCJOb3cgb3ZlcndyaXRlIHRoZW0gd2l0aCB3aGF0IHdlJ3Jl
IGV4cGVjdGluZyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmpl
Y3RTdG9yZSgnc3RvcmUnKS5wdXQoe3g6IFsxLCAyLCAzXSwgeTogJ2EnfSwgJ2ZvbycpIik7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLnB1dCh7eDog
WzQsIDUsIDZdLCB5OiAnYid9LCAnYmFyJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gdmVyaWZ5SW5kZXhlcyhpbmRleE5h
bWUsIGNhbGxiYWNrKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVmVyaWZ5aW5nIGlu
ZGV4OiAiICsgaW5kZXhOYW1lKTsKKyAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRyYW5z
YWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX09O
TFkpIik7CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNr
OworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBjYWxsYmFjazsKKworICAgIGV4cGVjdGVk
ID0gWworICAgICAgICB7IGtleTogMSwgcHJpbWFyeUtleTogJ2ZvbycsIHk6ICdhJyB9LAorICAg
ICAgICB7IGtleTogMiwgcHJpbWFyeUtleTogJ2ZvbycsIHk6ICdhJyB9LAorICAgICAgICB7IGtl
eTogMywgcHJpbWFyeUtleTogJ2ZvbycsIHk6ICdhJyB9LAorICAgICAgICB7IGtleTogNCwgcHJp
bWFyeUtleTogJ2JhcicsIHk6ICdiJyB9LAorICAgICAgICB7IGtleTogNSwgcHJpbWFyeUtleTog
J2JhcicsIHk6ICdiJyB9LAorICAgICAgICB7IGtleTogNiwgcHJpbWFyeUtleTogJ2JhcicsIHk6
ICdiJyB9LAorICAgIF07CisKKyAgICB2YXIgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0
aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLmluZGV4KCciICsgaW5kZXhOYW1lICsgIicpLm9wZW5D
dXJzb3IoKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgY3Vy
c29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgICAg
ICBpZiAoY3Vyc29yKSB7CisgICAgICAgICAgICBleCA9IGV4cGVjdGVkLnNoaWZ0KCk7CisgICAg
ICAgICAgICBzaG91bGRCZVRydWUoImV4ICE9IG51bGwiKTsKKyAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3Iua2V5IiwgU3RyaW5nKGV4LmtleSkpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJjdXJzb3IucHJpbWFyeUtleSIsIGV4LnByaW1hcnlLZXkpOworICAgICAgICAg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjdXJzb3IudmFsdWUueSIsIGV4LnkpOworICAgICAg
ICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBz
aG91bGRCZVRydWUoImV4cGVjdGVkLmxlbmd0aCA9PT0gMCIpOworICAgICAgICB9CisgICAgfTsK
K30KKworZnVuY3Rpb24gdmVyaWZ5VW5pcXVlQ29uc3RyYWludCgpCit7CisgICAgZGVidWcoIiIp
OworICAgIGRlYnVnKCJWZXJpZnlpbmcgdW5pcXVlIGNvbnN0cmFpbnQgb24gbXVsdGlFbnRyeSBp
bmRleCIpOworICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50
cmFuc2FjdGlvbihbJ3N0b3JlLXVuaXF1ZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIp
OworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgIGRlYnVn
KCJUcmFuc2FjdGlvbiBhYm9ydGVkIGFzIGV4cGVjdGVkIik7CisgICAgICAgIGNyZWF0ZUluZGV4
T25TdG9yZVdpdGhEYXRhKCk7CisgICAgfTsKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0g
dW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
dHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlLXVuaXF1ZScpLnB1dCh7eDogWzEsIDIsIDNd
LCB5OiAnYSd9LCAnZm9vJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICBkZWJ1Zygic3VjY2VzcyEiKTsKKyAgICAgICAgZGVidWcoIlJlcGxhY2UgYW4gZXhpc3Rpbmcg
cmVjb3JkIC0gdGhpcyBzaG91bGQgd29yayIpOworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlLXVuaXF1ZScpLnB1dCh7eDogWzEsIDIs
IDddLCB5OiAnYSd9LCAnZm9vJykiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICBkZWJ1Zygic3VjY2VzcyEiKTsKKyAgICAgICAgICAgIGRlYnVnKCJU
aGlzIHNob3VsZCBmYWlsIHRoZSB1bmlxdWVuZXNzIGNvbnN0cmFpbnQgb24gdGhlIGluZGV4LCBh
bmQgZmFpbDoiKTsKKyAgICAgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlv
bi5vYmplY3RTdG9yZSgnc3RvcmUtdW5pcXVlJykucHV0KHt4OiBbNSwgMl0sIHk6ICdjJ30sICdz
aG91bGQgZmFpbCcpIik7CisgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0
ZWRTdWNjZXNzQ2FsbGJhY2s7CisgICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlv
bigpIHsgZGVidWcoIlJlcXVlc3QgZmFpbGVkLCBhcyBleHBlY3RlZCIpOyB9OworICAgICAgICB9
OworICAgIH07Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUluZGV4T25TdG9yZVdpdGhEYXRhKCkKK3sK
KyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIkNyZWF0ZSBhbiBpbmRleCBvbiBhIHBvcHVsYXRl
ZCBzdG9yZSIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJzIn
KSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisKKyAgICAgICAgdmFyIHRyYW5zID0g
ZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgICAgIHNob3Vs
ZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKyAgICAgICAgdHJhbnMub25hYm9ydCA9IHVuZXhw
ZWN0ZWRBYm9ydENhbGxiYWNrOworICAgICAgICB0cmFucy5vbmNvbXBsZXRlID0gZnVuY3Rpb24o
KSB7IHZlcmlmeUluZGV4ZXMoJ2luZGV4LW5ldycsIGZpbmlzaEpTVGVzdCk7IH07CisKKyAgICAg
ICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScp
Iik7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleC1uZXcnLCAn
eCcsIHttdWx0aUVudHJ5OiB0cnVlfSkiKTsKKyAgICB9OworfQorCit0ZXN0KCk7ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL2luZGV4LXBvcHVsYXRpb24uanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvaW5kZXgtcG9wdWxhdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOTk3
Mjg2NjZmZDZkNDJkZjA5ZGI4MTYzNzRkZTc5M2UwYTFhNWNkCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4LXBvcHVsYXRpb24u
anMKQEAgLTAsMCArMSw5MSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9y
dFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Cisg
ICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IElu
ZGV4ZWREQiBpbmRleCBwb3B1bGF0aW9uLiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBy
ZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4
ZWREQi5kZWxldGVEYXRhYmFzZSgnaW5kZXgtcG9wdWxhdGlvbicpIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBkZWxldGVTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxldGVTdWNjZXNzKCkKK3sKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2luZGV4LXBvcHVsYXRpb24nKSIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZG9TZXRWZXJzaW9uMTsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZG9TZXRWZXJz
aW9uMSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJkb1NldFZlcnNpb24xKCk6Iik7
CisgICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigndmVyc2lv
biAxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb24xOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXRW
ZXJzaW9uMSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJzZXRWZXJzaW9uMSgpOiIp
OworICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSByZXF1ZXN0LnJl
c3VsdCIpOworICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Cisg
ICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9y
ZTEnKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCh7ZGF0YTogJ2EnLCBpbmRleEtleTog
MTB9LCAxKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCh7ZGF0YTogJ2InLCBpbmRleEtl
eTogMjB9LCAyKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCh7ZGF0YTogJ2MnLCBpbmRl
eEtleTogMTB9LCAzKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCh7ZGF0YTogJ2QnLCBp
bmRleEtleTogMjB9LCA0KSIpOworICAgIGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuY3JlYXRl
SW5kZXgoJ2luZGV4MScsICdpbmRleEtleScpIik7CisgICAgc2hvdWxkQmVUcnVlKCJpbmRleCBp
bnN0YW5jZW9mIElEQkluZGV4Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiaW5kZXgudW5pcXVlIik7
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleC5jb3VudChJREJLZXlS
YW5nZS5ib3VuZCgtSW5maW5pdHksIEluZmluaXR5KSkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgc2hvdWxkQmUoInJlcXVlc3QucmVzdWx0IiwgIjQiKTsKKyAgICB9
OworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBkb1NldFZlcnNpb24yOworfQorCitmdW5j
dGlvbiBkb1NldFZlcnNpb24yKCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiZG9TZXRW
ZXJzaW9uMigpOiIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0
VmVyc2lvbigndmVyc2lvbiAyJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNp
b24yOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBzZXRWZXJzaW9uMigpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJz
ZXRWZXJzaW9uMigpOiIpOworICAgIHRyYW5zYWN0aW9uMiA9IGV2YWxBbmRMb2coInRyYW5zYWN0
aW9uID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICB0cmFuc2FjdGlvbjIub25hYm9ydCA9IHNldFZl
cnNpb24yQWJvcnQ7CisgICAgdHJhbnNhY3Rpb24yLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQ29t
cGxldGVDYWxsYmFjazsKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ3N0b3JlMicpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUucHV0KHtkYXRh
OiAnYScsIGluZGV4S2V5OiAxMH0sIDEpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUucHV0KHtk
YXRhOiAnYicsIGluZGV4S2V5OiAyMH0sIDIpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUucHV0
KHtkYXRhOiAnYycsIGluZGV4S2V5OiAxMH0sIDMpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUu
cHV0KHtkYXRhOiAnZCcsIGluZGV4S2V5OiAyMH0sIDQpIik7CisgICAgZXZhbEFuZExvZygiaW5k
ZXgyID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4MicsICdpbmRleEtleScsIHsgdW5pcXVlOiB0
cnVlIH0pIik7CisgICAgc2hvdWxkQmVUcnVlKCJpbmRleDIgaW5zdGFuY2VvZiBJREJJbmRleCIp
OworICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXgyLnVuaXF1ZSIpOworfQorCitmdW5jdGlvbiBzZXRW
ZXJzaW9uMkFib3J0KCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInNldFZlcnNpb24y
QWJvcnQoKToiKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAi
MSIpOworICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzWzBdIiwgIidzdG9yZTEnIik7
CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvaW5kZXgtdW5pcXVlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL2luZGV4LXVuaXF1ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZGI4NWI2OWU0ODA4NTQxYzBiNGE5YzI2
NmY3NjcwZWI2OGZhZTRiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL2luZGV4LXVuaXF1ZS5qcwpAQCAtMCwwICsxLDEzNiBAQAoraWYg
KHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVk
LmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IGZlYXR1cmVzIG9mIEluZGV4ZWREQidzIHVu
aXF1ZSBpbmRpY2VzLiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQ
cmVmaXhlcygpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignaW5k
ZXgtdW5pcXVlJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb247CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IHNldFZlcnNpb24oKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3
IHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0
aW9uIGRlbGV0ZUV4aXN0aW5nKCkKK3sKKyAgICBkZWJ1ZygiZGVsZXRlRXhpc3RpbmcoKToiKTsK
KyAgICB2YXIgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9y
dCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSBzZXRW
ZXJzaW9uQ29tcGxldGVkOworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAg
IHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIp
OworICAgIHNlbGYuaW5kZXhPYmplY3QgPSBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgn
aW5kZXgnLCAneCcsIHt1bmlxdWU6IHRydWV9KSIpOworCisgICAgLy8gTGV0IHNldFZlcnNpb24g
dHJhbnNhY3Rpb24gY29tcGxldGUuCit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb25Db21wbGV0ZWQo
KQoreworICAgIGRlYnVnKCJzZXRWZXJzaW9uQ29tcGxldGVkKCk6Iik7CisgICAgc2VsZi50cmFu
c2FjdGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9y
ZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworCisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLnB1dCh7eDogMX0sICdmb28n
KSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gYWRkTW9yZURhdGE7Cit9CisKK2Z1bmN0aW9uIGFkZE1vcmVE
YXRhKCkKK3sKKyAgICBkZWJ1ZygiYWRkTW9yZURhdGEoKToiKTsKKworICAgIC8vIFRoZSB4IHZh
bHVlIHZpb2xhdGVzIHRoZSB1bmlxdWVuZXNzIGNvbnN0cmFpbnQgb2YgdGhlIGluZGV4LgorICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKS5w
dXQoe3g6IDF9LCAnYmFyJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBhZGRNb3JlRGF0YUZh
aWxlZDsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7
Cit9CisKK2Z1bmN0aW9uIGFkZE1vcmVEYXRhRmFpbGVkKCkKK3sKKyAgICBkZWJ1ZygiYWRkTW9y
ZURhdGFGYWlsZWQoKToiKTsKKworICAgIC8vIERvbid0IGFib3J0IHRoZSB0cmFuc2FjdGlvbi4K
KyAgICBldmFsQW5kTG9nKCJldmVudC5wcmV2ZW50RGVmYXVsdCgpIik7CisKKyAgICBzaG91bGRC
ZSgiZXZlbnQudGFyZ2V0LmVycm9yQ29kZSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5DT05TVFJB
SU5UX0VSUiIpOworCisgICAgLy8gVXBkYXRlIHRoZSAnZm9vJyBlbnRyeSBpbiBvYmplY3Qgc3Rv
cmUsIGNoYW5naW5nIHRoZSB2YWx1ZSBvZiB4LgorICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0
cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKS5wdXQoe3g6IDB9LCAnZm9vJykiKTsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGNoYW5nZURhdGFTdWNjZXNzOworfQorCitmdW5jdGlvbiBjaGFuZ2VEYXRh
U3VjY2VzcygpCit7CisgICAgZGVidWcoImNoYW5nZURhdGFTdWNjZXNzKCk6Iik7CisKKyAgICAv
LyBBbiBpbmRleCBjdXJzb3Igc3RhcnRpbmcgYXQgMSBzaG91bGQgbm90IGZpbmQgYW55dGhpbmcu
CisgICAgdmFyIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgn
c3RvcmUnKS5pbmRleCgnaW5kZXgnKS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLmxvd2VyQm91bmQo
MSkpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3JTdWNjZXNzOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjdXJz
b3JTdWNjZXNzKCkKK3sKKyAgICBkZWJ1ZygiY3Vyc29yU3VjY2VzcygpOiIpOworICAgIHNob3Vs
ZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIm51bGwiKTsKKworICAgIC8vIEEga2V5IGN1cnNv
ciBzdGFydGluZyBhdCAxIHNob3VsZCBub3QgZmluZCBhbnl0aGluZy4KKyAgICB2YXIgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLmluZGV4KCdp
bmRleCcpLm9wZW5LZXlDdXJzb3IoSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgxKSkiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGtleUN1cnNvclN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGtleUN1cnNvclN1Y2Nl
c3MoKQoreworICAgIGRlYnVnKCJrZXlDdXJzb3JTdWNjZXNzKCk6Iik7CisgICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldC5yZXN1bHQiLCAibnVsbCIpOworCisgICAgLy8gTm93IHdlIHNob3VsZCBi
ZSBhYmxlIHRvIGFkZCBhIHZhbHVlIHdpdGggeDogMS4KKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KHt4OiAxfSwgJ2JhcicpIik7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBhZGRNb3JlRGF0YVN1Y2NlczsKK30KKworZnVuY3Rpb24gYWRkTW9y
ZURhdGFTdWNjZXMoKQoreworICAgIGRlYnVnKCJhZGRNb3JlRGF0YVN1Y2NlcygpOiIpOworCisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScp
LmRlbGV0ZSgnYmFyJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZVN1Y2Nlc3M7Cit9CisKK2Z1
bmN0aW9uIGRlbGV0ZVN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJkZWxldGVTdWNjZXNzKCk6Iik7
CisKKyAgICAvLyBOb3cgd2Ugc2hvdWxkIGJlIGFibGUgdG8gYWRkIGEgdmFsdWUgd2l0aCB4OiAx
IGFnYWluLgorICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9y
ZSgnc3RvcmUnKS5wdXQoe3g6IDF9LCAnYmF6JykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZpbmFsQWRk
U3VjY2VzczsKK30KKworZnVuY3Rpb24gZmluYWxBZGRTdWNjZXNzKCkgeworICAgIGRlYnVnKCJm
aW5hbEFkZFN1Y2Nlc3MoKToiKTsKKworICAgIC8vIEFuIG92ZXJ3cml0ZSBzaG91bGQgYmUgb2su
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9y
ZScpLnB1dCh7eDogMX0sICdiYXonKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZmluaXNoSlNUZXN0Owor
fQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ludmFsaWQta2V5cy5qcyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbnZhbGlkLWtleXMuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjZjMTc1NzY3NDBiM2Q1N2Y5OTYzMGVlMmE3MDM4NjA1NjU0YTZmNAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbnZh
bGlkLWtleXMuanMKQEAgLTAsMCArMSw2NCBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewor
ICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9u
KCJUZXN0IEluZGV4ZWREQiBpbnZhbGlkIGtleXMiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7Cisg
ICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBh
dGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7
CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0ZXN0R3JvdXAxOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiB0ZXN0R3JvdXAxKCkKK3sK
KyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFs
QW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJyk7Iik7CisgICAgdGVzdEludmFsaWRL
ZXlzKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RJbnZhbGlkS2V5cygpCit7CisgICAgdmFyIGludmFs
aWRLZXlzID0gWworICAgICAgICAidm9pZCAwIiwgLy8gVW5kZWZpbmVkCisgICAgICAgICJudWxs
IiwgLy8gTnVsbAorICAgICAgICAiKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkp
IiwgLy8gQXJndW1lbnRzCisgICAgICAgICJ0cnVlIiwgLy8gQm9vbGVhbgorICAgICAgICAiZmFs
c2UiLCAvLyBCb29sZWFuCisgICAgICAgICJuZXcgRXJyb3IiLCAvLyBFcnJvcgorICAgICAgICAi
ZnVuY3Rpb24gKCkge30iLCAvLyBGdW5jdGlvbgorICAgICAgICAiSlNPTiIsIC8vIEpTT04KKyAg
ICAgICAgIk1hdGgiLCAvLyBNYXRoCisgICAgICAgICJOYU4iLCAvLyBOdW1iZXIgKHNwZWNpYWwg
Y2FzZSkKKyAgICAgICAgIm5ldyBEYXRlKE5hTikiLCAvLyBEYXRlIChzcGVjaWFsIGNhc2UpCisg
ICAgICAgICJ7fSIsIC8vIE9iamVjdAorICAgICAgICAiL3JlZ2V4LyIsIC8vIFJlZ0V4cAorICAg
ICAgICAic2VsZiIsIC8vIGdsb2JhbAorICAgICAgICAic2VsZi5kb2N1bWVudCIsIC8vIEhUTUxE
b2N1bWVudAorICAgICAgICAic2VsZi5kb2N1bWVudC5ib2R5IiAvLyBIVE1MQm9keUVsZW1lbnQK
KyAgICBdOworCisgICAgaW52YWxpZEtleXMuZm9yRWFjaChmdW5jdGlvbihrZXkpIHsKKyAgICAg
ICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigicmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgndmFs
dWUnLCAiICsga2V5ICsgIikiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKyAg
ICB9KTsKKyAgICAKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9rZXktZ2VuZXJhdG9yLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL2tleS1nZW5lcmF0b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjFiMTc1MThjZTEx
YjA2MWUxYzVmZjhmOTBjMGJjY2JmMTE2YmI5ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXktZ2VuZXJhdG9yLmpzCkBAIC0wLDAg
KzEsMjA2IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygn
Li4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRT
Y3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mg
a2V5IGdlbmVyYXRvciBiZWhhdmlvci4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVt
b3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIHJ1blRlc3RzKCk7Cit9CisKK3ZhciB0ZXN0cyA9
IFtdOworZnVuY3Rpb24gZGVmaW5lVGVzdChkZXNjcmlwdGlvbiwgdmVyY2hhbmdlLCBvcHRpb25h
bCkgeworICB0ZXN0cy5wdXNoKAorICAgIHsKKyAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlv
biwKKyAgICAgIHZlcmNoYW5nZTogdmVyY2hhbmdlLAorICAgICAgb3B0aW9uYWw6IG9wdGlvbmFs
CisgICAgfQorICApOworfQorCitmdW5jdGlvbiBydW5UZXN0cygpIHsKKworICAgIGZ1bmN0aW9u
IG5leHRUZXN0KCkgeworICAgICAgICBpZiAoIXRlc3RzLmxlbmd0aCkgeworICAgICAgICAgICAg
ZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICB2YXIgdGVzdCA9IHRlc3RzLnNoaWZ0KCk7CisgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAg
ZGVidWcodGVzdC5kZXNjcmlwdGlvbik7CisKKyAgICAgICAgZXZhbEFuZExvZygicmVxdWVzdCA9
IGluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgna2V5LWdlbmVyYXRvcicpIik7CisgICAgICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coInJlcXVl
c3QgPSBpbmRleGVkREIub3Blbigna2V5LWdlbmVyYXRvcicpIik7CisgICAgICAgICAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2co
ImRiID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgICAgICAgICAgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgICAgICAgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIGV2YWxBbmRMb2co
InRyYW5zID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgICAgICAgICAgICAgdHJhbnMub25h
Ym9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgICAgICAgICAgICAgICAgICB0ZXN0
LnZlcmNoYW5nZShkYiwgdHJhbnMpOworICAgICAgICAgICAgICAgICAgICB0cmFucy5vbmNvbXBs
ZXRlID0gZnVuY3Rpb24gKCkgeworCisgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBm
aW5pc2hUZXN0KCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImRi
LmNsb3NlKCkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0VGVzdCgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGVz
dC5vcHRpb25hbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Qub3B0aW9uYWwo
ZGIsIGZpbmlzaFRlc3QpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgfTsKKyAgICAg
ICAgICAgIH07CisgICAgICAgIH07CisgICAgfQorCisgICAgbmV4dFRlc3QoKTsKK30KKworZnVu
Y3Rpb24gY2hlY2soc3RvcmUsIGtleSwgZXhwZWN0ZWQpIHsKKyAgICBzZWxmLnN0b3JlID0gc3Rv
cmU7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdG9yZS5nZXQoIiArIEpT
T04uc3RyaW5naWZ5KGtleSkgKyAiKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsK
KyAgICAgICAgc2VsZi5leHBlY3RlZCA9IGV4cGVjdGVkOworICAgICAgICBpZiAoSlNPTi5zdHJp
bmdpZnkoZXZlbnQudGFyZ2V0LnJlc3VsdCkgPT09IEpTT04uc3RyaW5naWZ5KGV4cGVjdGVkKSkg
eworICAgICAgICAgICAgdGVzdFBhc3NlZCgiR290ICIgKyBKU09OLnN0cmluZ2lmeShldmVudC50
YXJnZXQucmVzdWx0KSArICIgZm9yIGtleTogIiArIEpTT04uc3RyaW5naWZ5KGtleSkpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiR290ICIgKyBKU09OLnN0cmlu
Z2lmeShldmVudC50YXJnZXQucmVzdWx0KSArICIgZm9yIGtleTogIiArIEpTT04uc3RyaW5naWZ5
KGtleSkgKworICAgICAgICAgICAgICAgICIgZXhwZWN0ZWQ6ICIgKyBKU09OLnN0cmluZ2lmeShl
eHBlY3RlZCkpOworICAgICAgICB9CisgICAgfTsKK30KKworZGVmaW5lVGVzdCgKKyAgICAnVmVy
aWZ5IHRoYXQgZWFjaCBvYmplY3Qgc3RvcmUgaGFzIGFuIGluZGVwZW5kZW50IGtleSBnZW5lcmF0
b3IuJywKKyAgICBmdW5jdGlvbiAoZGIsIHRyYW5zKSB7CisgICAgICAgIGV2YWxBbmRMb2coInN0
b3JlMSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTEnLCB7IGF1dG9JbmNyZW1lbnQ6IHRy
dWUgfSkiKTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUxLnB1dCgnYScpIik7CisgICAgICAg
IGNoZWNrKHN0b3JlMSwgMSwgJ2EnKTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUyID0gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlMicsIHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9KSIpOwor
ICAgICAgICBldmFsQW5kTG9nKCJzdG9yZTIucHV0KCdhJykiKTsKKyAgICAgICAgY2hlY2soc3Rv
cmUyLCAxLCAnYScpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZTEucHV0KCdiJykiKTsKKyAg
ICAgICAgY2hlY2soc3RvcmUxLCAyLCAnYicpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZTIu
cHV0KCdiJykiKTsKKyAgICAgICAgY2hlY2soc3RvcmUyLCAyLCAnYicpOworICAgIH0KKyk7CisK
K2RlZmluZVRlc3QoCisgICAgJ1ZlcmlmeSB0aGF0IHRoZSBrZXkgZ2VuZXJhdG9yIGlzIG5vdCB1
cGRhdGVkIGlmIGluc2VydGlvbiBmYWlscycsCisgICAgZnVuY3Rpb24gKGRiLCB0cmFucykgewor
ICAgICAgICB0cmFucy5vbmVycm9yID0gZnVuY3Rpb24oZSkgeyBlLnByZXZlbnREZWZhdWx0KCkg
fTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3Rv
cmUxJywgeyBhdXRvSW5jcmVtZW50OiB0cnVlIH0pIik7CisgICAgICAgIGV2YWxBbmRMb2coImlu
ZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4MScsICdpeCcsIHsgdW5pcXVlOiB0cnVlIH0p
Iik7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCh7IGl4OiAnYSd9KSIpOworICAgICAg
ICBjaGVjayhzdG9yZSwgMSwge2l4OiAnYSd9KTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUu
cHV0KHsgaXg6ICdhJ30pIik7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCh7IGl4OiAn
Yid9KSIpOworICAgICAgICBjaGVjayhzdG9yZSwgMiwge2l4OiAnYid9KTsKKyAgICB9CispOwor
CitkZWZpbmVUZXN0KAorICAgICdWZXJpZnkgdGhhdCB0aGUga2V5IGdlbmVyYXRvciBpcyBub3Qg
YWZmZWN0ZWQgYnkgaXRlbSByZW1vdmFsIChkZWxldGUgb3IgY2xlYXIpLicsCisgICAgZnVuY3Rp
b24gKGRiLCB0cmFucykgeworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9i
amVjdFN0b3JlKCdzdG9yZTEnLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSkiKTsKKyAgICAgICAg
ZXZhbEFuZExvZygic3RvcmUucHV0KCdhJykiKTsKKyAgICAgICAgY2hlY2soc3RvcmUsIDEsICdh
Jyk7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLmRlbGV0ZSgxKSIpOworICAgICAgICBldmFs
QW5kTG9nKCJzdG9yZS5wdXQoJ2InKSIpOworICAgICAgICBjaGVjayhzdG9yZSwgMiwgJ2InKTsK
KyAgICAgICAgZXZhbEFuZExvZygic3RvcmUuY2xlYXIoKSIpOworICAgICAgICBldmFsQW5kTG9n
KCJzdG9yZS5wdXQoJ2MnKSIpOworICAgICAgICBjaGVjayhzdG9yZSwgMywgJ2MnKTsKKyAgICAg
ICAgLy8gRklYTUU6IElEQk9iamVjdFN0b3JlLmRlbGV0ZShJREJLZXlSYW5nZSkgaXMgbm90IHll
dCBpbXBsZW1lbnRlZCBpbiBDaHJvbWl1bS4KKyAgICAgICAgLy8gaHR0cDovL2NyYnVnLmNvbS8x
MDEzODQKKyAgICAgICAgLy9ldmFsQW5kTG9nKCJzdG9yZS5kZWxldGUoSURCS2V5UmFuZ2UubG93
ZXJCb3VuZCgwKSkiKTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdkJykiKTsKKyAg
ICAgICAgY2hlY2soc3RvcmUsIDQsICdkJyk7CisgICAgfQorKTsKKworZGVmaW5lVGVzdCgKKyAg
ICAnVmVyaWZ5IHRoYXQgdGhlIGtleSBnZW5lcmF0b3IgaXMgb25seSBzZXQgaWYgYW5kIG9ubHkg
aWYgYSBudW1lcmljIGtleSBncmVhdGVyIHRoYW4gdGhlIGxhc3QgZ2VuZXJhdGVkIGtleSBpcyB1
c2VkLicsCisgICAgZnVuY3Rpb24gKGRiLCB0cmFucykgeworICAgICAgICBldmFsQW5kTG9nKCJz
dG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTEnLCB7IGF1dG9JbmNyZW1lbnQ6IHRy
dWUgfSkiKTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdhJykiKTsKKyAgICAgICAg
Y2hlY2soc3RvcmUsIDEsICdhJyk7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgnYics
IDMpIik7CisgICAgICAgIGNoZWNrKHN0b3JlLCAzLCAnYicpOworICAgICAgICBldmFsQW5kTG9n
KCJzdG9yZS5wdXQoJ2MnKSIpOworICAgICAgICBjaGVjayhzdG9yZSwgNCwgJ2MnKTsKKyAgICAg
ICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdkJywgLTEwKSIpOworICAgICAgICBjaGVjayhzdG9y
ZSwgLTEwLCAnZCcpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2UnKSIpOworICAg
ICAgICBjaGVjayhzdG9yZSwgNSwgJ2UnKTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0
KCdmJywgNi4wMDAwMSkiKTsKKyAgICAgICAgY2hlY2soc3RvcmUsIDYuMDAwMDEsICdmJyk7Cisg
ICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgnZycpIik7CisgICAgICAgIGNoZWNrKHN0b3Jl
LCA3LCAnZycpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2YnLCA4Ljk5OTkpIik7
CisgICAgICAgIGNoZWNrKHN0b3JlLCA4Ljk5OTksICdmJyk7CisgICAgICAgIGV2YWxBbmRMb2co
InN0b3JlLnB1dCgnZycpIik7CisgICAgICAgIGNoZWNrKHN0b3JlLCA5LCAnZycpOworICAgICAg
ICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2gnLCAnZm9vJykiKTsKKyAgICAgICAgY2hlY2soc3Rv
cmUsICdmb28nLCAnaCcpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2knKSIpOwor
ICAgICAgICBjaGVjayhzdG9yZSwgMTAsICdpJyk7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3Jl
LnB1dCgnaicsIFsxMDAwXSkiKTsKKyAgICAgICAgY2hlY2soc3RvcmUsIFsxMDAwXSwgJ2onKTsK
KyAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdrJykiKTsKKyAgICAgICAgY2hlY2soc3Rv
cmUsIDExLCAnaycpOworCisgICAgICAgIC8vIEZJWE1FOiBSZXBlYXQgdGhpcyB0ZXN0LCBidXQg
d2l0aCBhIGtleVBhdGggYW5kIGlubGluZSBrZXkuCisgICAgfQorKTsKKworZGVmaW5lVGVzdCgK
KyAgICAnVmVyaWZ5IHRoYXQgYWJvcnRpbmcgYSB0cmFuc2FjdGlvbiByZXNldHMgdGhlIGtleSBn
ZW5lcmF0b3Igc3RhdGUuJywKKyAgICBmdW5jdGlvbiAoZGIsIHRyYW5zKSB7CisgICAgICAgIGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScsIHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9KTsKKyAg
ICB9LAorCisgICAgZnVuY3Rpb24gKGRiLCBjYWxsYmFjaykgeworICAgICAgICBldmFsQW5kTG9n
KCJ0cmFuczEgPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURf
V1JJVEUpIik7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlX3QxID0gdHJhbnMxLm9iamVjdFN0
b3JlKCdzdG9yZScpIik7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlX3QxLnB1dCgnYScpIik7
CisgICAgICAgIGNoZWNrKHN0b3JlX3QxLCAxLCAnYScpOworICAgICAgICBldmFsQW5kTG9nKCJz
dG9yZV90MS5wdXQoJ2InKSIpOworICAgICAgICBjaGVjayhzdG9yZV90MSwgMiwgJ2InKTsKKwor
ICAgICAgICAvLyBTY2hlZHVsZSB0aGUgYWJvcnQgYXMgYSB0YXNrIChub3QgcnVuIGl0IHN5bmNo
cm9ub3VzbHkpCisgICAgICAgIHN0b3JlX3QxLmdldCgwKS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICBkZWJ1ZygnYWJvcnRpbmcuLi4nKTsKKyAgICAgICAgICAgIGV2YWxB
bmRMb2coInRyYW5zMS5hYm9ydCgpIik7CisgICAgICAgICAgICB0cmFuczEub25hYm9ydCA9IGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBkZWJ1ZygnYWJvcnRlZCEnKTsKKworICAgICAg
ICAgICAgICAgIGV2YWxBbmRMb2coInRyYW5zMiA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUnXSwg
SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9n
KCJzdG9yZV90MiA9IHRyYW5zMi5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgICAgICAgICAg
ICAgIGV2YWxBbmRMb2coInN0b3JlX3QyLnB1dCgnYycpIik7CisgICAgICAgICAgICAgICAgY2hl
Y2soc3RvcmVfdDIsIDEsICdjJyk7CisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygic3RvcmVf
dDIucHV0KCdkJykiKTsKKyAgICAgICAgICAgICAgICBjaGVjayhzdG9yZV90MiwgMiwgJ2QnKTsK
KworICAgICAgICAgICAgICAgIHRyYW5zMi5vbmNvbXBsZXRlID0gY2FsbGJhY2s7CisgICAgICAg
ICAgICB9OworICAgICAgICB9OworICAgIH0KKyk7CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMva2V5LXNvcnQtb3JkZXItYWNyb3NzLXR5cGVzLmpzIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleS1zb3J0LW9yZGVyLWFjcm9zcy10eXBlcy5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43YzdmZjhlNDcwZmUxZjAyZGU4MTJmZjlmNTFmZjdiMDY1MjZkOTE1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tl
eS1zb3J0LW9yZGVyLWFjcm9zcy10eXBlcy5qcwpAQCAtMCwwICsxLDg1IEBACitpZiAodGhpcy5p
bXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsK
K30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGtleSBjb21wYXJpc29uIik7CisKK2Z1
bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1l
ID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERh
dGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwg
ZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rp
b24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJn
ZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNl
dFZlcnNpb24oJzEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkS2V5MTsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
YWRkS2V5MSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVj
dFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycpOyIpOworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKFtdLCBJbmZp
bml0eSk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRLZXkyOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBhZGRLZXky
KCkKK3sKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFk
ZChbXSwgLUluZmluaXR5KTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEtleTM7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0
aW9uIGFkZEtleTMoKQoreworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2Jq
ZWN0U3RvcmUuYWRkKFtdLCAxLjApOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkS2V5
NDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKwor
ZnVuY3Rpb24gYWRkS2V5NCgpCit7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5hZGQoW10sICcnKTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFk
ZEtleTU7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIGFkZEtleTUoKQoreworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKFtdLCAnMS4wJyk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBvcGVuQUN1cnNvcjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlbkFDdXJzb3IoKQoreworICAgIGtleUluZGV4ID0g
MDsKKyAgICBzb3J0ZWRLZXlzID0gZXZhbEFuZExvZygic29ydGVkS2V5ID0gWy1JbmZpbml0eSwg
MS4wLCBJbmZpbml0eSwgJycsICcxLjAnXTsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1
bmN0aW9uIChldmVudCkgeworICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBl
dmVudC50YXJnZXQucmVzdWx0OyIpOworICAgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgICAg
ICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOworICAgICAg
ICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisgICAgICAgICAgICBldmFs
QW5kTG9nKCJrZXlJbmRleCsrOyIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3Rlc3QoKTsKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5LXNvcnQtb3JkZXItZGF0ZS5qcyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXktc29ydC1vcmRlci1kYXRlLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmExZmZmMzcyOWQxOGQ1NzFlNWZmYmY3Zjc3Mjg0ZjI3Yjk2ZTY4NDUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5LXNv
cnQtb3JkZXItZGF0ZS5qcwpAQCAtMCwwICsxLDgyIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRz
KSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3Jp
cHRpb24oIlRlc3QgSW5kZXhlZERCIGtleSBjb21wYXJpc29uIik7CisKK2Z1bmN0aW9uIHRlc3Qo
KQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2Nh
dGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24p
Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nl
c3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEn
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkS2V5MTsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gYWRkS2V5MSgpCit7
CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0gZXZh
bEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycpOyIpOworICAgIGRhdGUxID0gZXZh
bEFuZExvZygiZGF0ZTEgPSBuZXcgRGF0ZSgxMDAwKTsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChbXSwgZGF0ZTEpOyIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gYWRkS2V5MjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gYWRkS2V5MigpCit7CisgICAgZGF0ZTAgPSBl
dmFsQW5kTG9nKCJkYXRlMCA9IG5ldyBEYXRlKDApOyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKFtdLCBkYXRlMCk7Iik7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBhZGRLZXkzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBhZGRLZXkzKCkKK3sKKyAgICBkYXRlMyA9IGV2
YWxBbmRMb2coImRhdGUzID0gbmV3IERhdGUoMzAwMCk7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoW10sIGRhdGUzKTsiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGFkZEtleTQ7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGFkZEtleTQoKQoreworICAgIGRhdGUyID0g
ZXZhbEFuZExvZygiZGF0ZTIgPSBuZXcgRGF0ZSgyMDAwKTsiKTsKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChbXSwgZGF0ZTIpOyIpOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gb3BlbkFDdXJzb3I7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5BQ3Vyc29yKCkKK3sKKyAg
ICBrZXlJbmRleCA9IDA7CisgICAgc29ydGVkS2V5cyA9IGV2YWxBbmRMb2coInNvcnRlZEtleXMg
PSBbZGF0ZTAudG9TdHJpbmcoKSwgZGF0ZTEudG9TdHJpbmcoKSwgZGF0ZTIudG9TdHJpbmcoKSwg
ZGF0ZTMudG9TdHJpbmcoKV07Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAo
ZXZlbnQpIHsKKyAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFy
Z2V0LnJlc3VsdDsiKTsKKyAgICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICAgICAgc2hvdWxk
QmUoImN1cnNvci5rZXkudG9TdHJpbmcoKSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOworICAg
ICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisgICAgICAgICAgICBl
dmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3Rlc3QoKTsK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5LXR5cGUtYXJyYXkuanMgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5LXR5cGUtYXJyYXkuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZWI2MDM4MTJkZDM2MzJkYzJjZDA0MjQ4MjZjZTUyMGRjZmI4YjlkYwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXktdHlwZS1hcnJh
eS5qcwpAQCAtMCwwICsxLDE5NyBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGlt
cG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7
CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0
IEluZGV4ZWREQiBrZXkgdHlwZXMiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3Zl
VmVuZG9yUHJlZml4ZXMoKTsKKworICAgIGV2YWxBbmRMb2coIklEQlRyYW5zYWN0aW9uID0gc2Vs
Zi5JREJUcmFuc2FjdGlvbiB8fCBzZWxmLklEQlRyYW5zYWN0aW9uOyIpOworICAgIHNob3VsZEJl
RmFsc2UoIklEQlRyYW5zYWN0aW9uID09IG51bGwiKTsKKworICAgIGV2YWxBbmRMb2coIklEQkRh
dGFiYXNlRXhjZXB0aW9uID0gc2VsZi5JREJEYXRhYmFzZUV4Y2VwdGlvbiB8fCBzZWxmLklEQkRh
dGFiYXNlRXhjZXB0aW9uOyIpOworICAgIHNob3VsZEJlRmFsc2UoIklEQkRhdGFiYXNlRXhjZXB0
aW9uID09IG51bGwiKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAg
IGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIG9wZW5yZXEgPSBldmFsQW5k
TG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICBvcGVucmVxLm9u
c3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIG9wZW5yZXEub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZXZhbEFu
ZExvZygiZGIgPSBvcGVucmVxLnJlc3VsdCIpOworICAgIHNldHZlcnJlcSA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICBzZXR2ZXJyZXEub25zdWNjZXNz
ID0gc2V0VmVyc2lvblN1Y2Nlc3M7CisgICAgc2V0dmVycmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQoreworICAg
IGRlYnVnKCJwcmVwYXJpbmcgZGF0YWJhc2UiKTsKKyAgICB0cmFucyA9IHNldHZlcnJlcS5yZXN1
bHQ7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHRlc3RWYWxpZEFycmF5S2V5czsKKyAgICBkZWxl
dGVBbGxPYmplY3RTdG9yZXMoZGIpOworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygiZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJyk7Iik7CisgICAgZGVidWcoIiIpOworfQorCitmdW5j
dGlvbiB0ZXN0VmFsaWRBcnJheUtleXMoKQoreworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIu
dHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICBl
dmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgZGVi
dWcoIiIpOworCisgICAgZXZhbEFuZExvZygibG9uZ19hcnJheSA9IFtdOyBmb3IgKGkgPSAwOyBp
IDwgMTAwMDsgKytpKSB7IGxvbmdfYXJyYXkucHVzaCgnYWJjJywgMTIzLCBuZXcgRGF0ZSgwKSwg
W10pOyB9Iik7CisgICAgZGVidWcoIiIpOworCisgICAgZGVidWcoImFycmF5IHRoYXQgY29udGFp
bnMgbm9uLW51bWVyaWMgc2VsZi1yZWZlcmVuY2UiKTsKKyAgICBldmFsQW5kTG9nKCJzZWxmX3Jl
ZmVycmVudGlhbF9hcnJheSA9IFtdOyBzZWxmX3JlZmVycmVudGlhbF9hcnJheS5zZWxmID0gc2Vs
Zl9yZWZlcnJlbnRpYWxfYXJyYXk7Iik7CisgICAgZGVidWcoIiIpOworCisgICAgdmFyIG4gPSAw
LCBjYXNlcyA9IFsKKyAgICAgICAgIltdIiwKKworICAgICAgICAiWy1JbmZpbml0eV0iLAorICAg
ICAgICAiWy1OdW1iZXIuTUFYX1ZBTFVFXSIsCisgICAgICAgICJbLTFdIiwKKyAgICAgICAgIlst
TnVtYmVyLk1JTl9WQUxVRV0iLAorICAgICAgICAiWzBdIiwKKyAgICAgICAgIltOdW1iZXIuTUlO
X1ZBTFVFXSIsCisgICAgICAgICJbMV0iLAorICAgICAgICAiW051bWJlci5NQVhfVkFMVUVdIiwK
KyAgICAgICAgIltJbmZpbml0eV0iLAorCisgICAgICAgICJbMSwyLDNdIiwKKworICAgICAgICAi
W25ldyBEYXRlKDApXSIsCisgICAgICAgICJbbmV3IERhdGUoJzI1MjUtMDEtMDFUMDA6MDA6MDBa
JyldIiwKKworICAgICAgICAiW25ldyBEYXRlKDApLCBuZXcgRGF0ZSgnMjUyNS0wMS0wMVQwMDow
MDowMFonKV0iLAorCisgICAgICAgICJbJyddIiwKKyAgICAgICAgIlsnXHgwMCddIiwKKyAgICAg
ICAgIlsnYWJjMTIzJ10iLAorCisgICAgICAgICJbJ2FiYycsIDEyM10iLAorCisgICAgICAgICJb
W11dIiwKKworICAgICAgICAiW1tdLCBbXV0iLAorICAgICAgICAiW1tdLCBbXSwgW11dIiwKKwor
ICAgICAgICAiW1tbXV1dIiwKKyAgICAgICAgIltbW1tdXV1dIiwKKworICAgICAgICAiWzEyMywg
J2FiYycsIG5ldyBEYXRlKDApLCBbXV0iLAorICAgICAgICAiW1sxMjMsICdhYmMnLCBuZXcgRGF0
ZSgwKSwgW11dLCBbNDU2LCAnZGVmJywgbmV3IERhdGUoOTk5KSwgW1tdXV1dIiwKKworICAgICAg
ICAibG9uZ19hcnJheSIsCisgICAgICAgICJzZWxmX3JlZmVycmVudGlhbF9hcnJheSIKKyAgICBd
OworCisgICAgZnVuY3Rpb24gdGVzdEFycmF5UHV0R2V0KHZhbHVlLCBrZXksIGNhbGxiYWNrKQor
ICAgIHsKKyAgICAgICAgZGVidWcoInRlc3RpbmcgYXJyYXkga2V5OiAiICsga2V5KTsKKyAgICAg
ICAgcHV0cmVxID0gZXZhbEFuZExvZygic3RvcmUucHV0KCciICsgdmFsdWUgKyAiJywgIiArIGtl
eSArICIpOyIpOworICAgICAgICBwdXRyZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworICAgICAgICBwdXRyZXEub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICBnZXRyZXEgPSBldmFsQW5kTG9nKCJzdG9yZS5nZXQoIiArIGtleSArICIpOyIpOworICAgICAg
ICAgICAgZ2V0cmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAg
ICAgIGdldHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImdldHJlcS5yZXN1bHQiLCB2YWx1ZSk7CisgICAgICAgICAgICAg
ICAgZGVidWcoIiIpOworICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgICAgICB9
OworICAgICAgICB9OworICAgIH0KKworICAgIGZ1bmN0aW9uIG5leHRUZXN0KCkKKyAgICB7Cisg
ICAgICAgIHZhciB0ZXN0Y2FzZSA9IGNhc2VzLnNoaWZ0KCk7CisgICAgICAgIGlmICh0ZXN0Y2Fz
ZSkgeworICAgICAgICAgICAgdGVzdEFycmF5UHV0R2V0KCJ2YWx1ZSIgKyAoKytuKSwgdGVzdGNh
c2UsIG5leHRUZXN0KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG5leHRUZXN0KCk7CisKKyAg
ICB0cmFucy5vbmNvbXBsZXRlID0gdGVzdEludmFsaWRBcnJheUtleXM7Cit9CisKK2Z1bmN0aW9u
IHRlc3RJbnZhbGlkQXJyYXlLZXlzKCkKK3sKKyAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRy
YW5zYWN0aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgZXZh
bEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgIGRlYnVn
KCIiKTsKKworICAgIGRlYnVnKCJhcnJheSB0aGF0IGNvbnRhaW5zIGl0c2VsZjogYXJyYXkgPSBb
IGFycmF5IF0iKTsKKyAgICBldmFsQW5kTG9nKCJjeWNsaWNfYXJyYXkgPSBbXTsgY3ljbGljX2Fy
cmF5LnB1c2goY3ljbGljX2FycmF5KSIpOworICAgIHNob3VsZFRocm93KCJKU09OLnN0cmluZ2lm
eShjeWNsaWNfYXJyYXkpIik7CisKKyAgICBkZWJ1ZygiYXJyYXkgdGhhdCBjb250YWlucyBpdHNl
bGYsIG9uZSBsZXZlbCBkb3duOiBhcnJheSA9IFsgWyBhcnJheSBdIF0iKTsKKyAgICBldmFsQW5k
TG9nKCJjeWNsaWNfYXJyYXkyID0gW107IGN5Y2xpY19hcnJheTIucHVzaChbY3ljbGljX2FycmF5
Ml0pIik7CisgICAgc2hvdWxkVGhyb3coIkpTT04uc3RyaW5naWZ5KGN5Y2xpY19hcnJheTIpIik7
CisKKyAgICBkZWJ1ZygiYXJyYXkgdGhhdCBjb250YWlucyBpdHNlbGYsIG5vdCBhcyBmaXJzdCBl
bGVtZW50OiBhcnJheSA9IFsxLCAnYicsIFtdLCBhcnJheV0iKTsKKyAgICBldmFsQW5kTG9nKCJj
eWNsaWNfYXJyYXkzID0gWzEsICdiJywgW11dOyBjeWNsaWNfYXJyYXkzLnB1c2goY3ljbGljX2Fy
cmF5MykiKTsKKyAgICBzaG91bGRUaHJvdygiSlNPTi5zdHJpbmdpZnkoY3ljbGljX2FycmF5Myki
KTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICBkZWJ1ZygiYXJyYXkgdGhhdCBjb250YWlucyBhcnJh
eSB0aGF0IGNvbnRhaW5zIGl0c2VsZiIpOworICAgIGV2YWxBbmRMb2coImN5Y2xpY19hcnJheTQg
PSBbY3ljbGljX2FycmF5XTsiKTsKKyAgICBzaG91bGRUaHJvdygiSlNPTi5zdHJpbmdpZnkoY3lj
bGljX2FycmF5NCkiKTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICB2YXIgaW52YWxpZEtleXMgPSBb
CisgICAgICAgICJbIHZvaWQgMCBdIiwgLy8gdW5kZWZpbmVkCisgICAgICAgICJbIHRydWUgXSIs
CisgICAgICAgICJbIGZhbHNlIF0iLAorICAgICAgICAiWyBOYU4gXSIsCisgICAgICAgICJbIG51
bGwgXSIsCisgICAgICAgICJbIHt9IF0iLAorICAgICAgICAiWyBmdW5jdGlvbiAoKSB7fSBdIiwK
KyAgICAgICAgIlsgL3JlZ2V4LyBdIiwKKyAgICAgICAgIlsgc2VsZiBdIiwKKyAgICAgICAgIlsg
c2VsZi5kb2N1bWVudCBdIiwKKyAgICAgICAgIlsgc2VsZi5kb2N1bWVudC5ib2R5IF0iLAorICAg
ICAgICAiY3ljbGljX2FycmF5IiwKKyAgICAgICAgImN5Y2xpY19hcnJheTIiLAorICAgICAgICAi
Y3ljbGljX2FycmF5MyIsCisgICAgICAgICJjeWNsaWNfYXJyYXk0IiwKKyAgICAgICAgIkFycmF5
KDEwMDApIiAvLyBzcGFyc2UKKyAgICBdOworCisgICAgaW52YWxpZEtleXMuZm9yRWFjaChmdW5j
dGlvbiAoa2V5KSB7CisgICAgICAgIGRlYnVnKCJ0ZXN0aW5nIGludmFsaWQgYXJyYXkga2V5OiAi
ICsga2V5KTsKKyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KCd2YWx1
ZScsICIgKyBrZXkgKyAiKTsiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKyAg
ICAgICAgZGVidWcoIiIpOworICAgIH0pOworCisgICAgdGVzdERlcHRoTGltaXRzKCk7Cit9CisK
K2Z1bmN0aW9uIG1ha2VBcnJheU9mRGVwdGgobikKK3sKKyAgICB2YXIgYXJyYXkgPSBbXTsKKyAg
ICB3aGlsZSAoLS1uKSB7CisgICAgICAgIGFycmF5ID0gW2FycmF5XTsKKyAgICB9CisgICAgcmV0
dXJuIGFycmF5OworfQorCitmdW5jdGlvbiB0ZXN0RGVwdGhMaW1pdHMoKQoreworICAgIHNob3Vs
ZEJlKCJpbmRleGVkREIuY21wKG1ha2VBcnJheU9mRGVwdGgoMjUpLCAwKSIsICIxIik7CisgICAg
c2hvdWxkQmUoImluZGV4ZWREQi5jbXAobWFrZUFycmF5T2ZEZXB0aCgyNTApLCAwKSIsICIxIik7
CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXhlZERCLmNtcChtYWtlQXJyYXlPZkRl
cHRoKDI1MDApLCAwKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworICAgIGRl
YnVnKCIiKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL2tleS10eXBlLWluZmluaXR5LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL2tleS10eXBlLWluZmluaXR5LmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzMzc2
ZTEwNjc3MzIwNjQ2ZDg4ZGM5ZGE1ZDU4NGJlY2UyZjcwMzAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5LXR5cGUtaW5maW5pdHku
anMKQEAgLTAsMCArMSw1MiBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9y
dFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Cisg
ICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IElu
ZGV4ZWREQiBrZXkgdHlwZXMiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVu
ZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAg
IGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBl
dmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSB0ZXN0R3JvdXAxOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiB0ZXN0R3JvdXAxKCkKK3sKKyAgICBkZWxldGVB
bGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJkYi5j
cmVhdGVPYmplY3RTdG9yZSgnZm9vJyk7Iik7CisgICAgZGVidWcoInRlc3Qga2V5IGFzIGluZmlu
aXR5Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5h
ZGQoW10sIEluZmluaXR5KTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHRlc3RHcm91cDI7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIHRlc3RHcm91cDIoKQoreworICAgIGRlYnVnKCJ0ZXN0IGtleSBhcyBuZWdhdGl2ZSBp
bmZpbml0eSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3Rv
cmUuYWRkKFtdLCAtSW5maW5pdHkpOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdGVzdEdy
b3VwMzsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30K
KworZnVuY3Rpb24gdGVzdEdyb3VwMygpCit7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rl
c3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5cGF0aC1iYXNpY3MuanMgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5cGF0aC1iYXNpY3MuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uY2M3ODE3YmI2ZDA2YzAwNDc2OTA5MGZjZWE2ODhjNzk1YTg1NDhjYwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXlwYXRo
LWJhc2ljcy5qcwpAQCAtMCwwICsxLDkxIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Cisg
ICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24o
IlRlc3QgZm9yIHZhbGlkIGFuZCBpbnZhbGlkIGtleXBhdGhzIik7CisKK2Z1bmN0aW9uIHRlc3Qo
KQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgbmFtZSA9IHNlbGYubG9jYXRp
b24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNz
KCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwor
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJyki
KTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHRlc3RWYWxpZEtleVBhdGhzOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiB0ZXN0
VmFsaWRLZXlQYXRocygpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAg
IHRlc3RLZXlQYXRocyA9IFtudWxsLCB1bmRlZmluZWQsICcnXTsKKyAgICB0ZXN0S2V5UGF0aHMu
Zm9yRWFjaChmdW5jdGlvbiAoa2V5UGF0aCkgeworICAgICAgICBnbG9iYWxLZXlQYXRoID0ga2V5
UGF0aDsKKyAgICAgICAgZGVidWcoImdsb2JhbEtleVBhdGggPSAnIiArIGdsb2JhbEtleVBhdGgg
KyAiJyIpOworICAgICAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScs
IHtrZXlQYXRoOiBnbG9iYWxLZXlQYXRofSkiKTsKKyAgICAgICAgZGVsZXRlQWxsT2JqZWN0U3Rv
cmVzKGRiKTsKKyAgICB9KTsKKworICAgIHRlc3RLZXlQYXRocyA9IFsnZm9vJywgJ2Zvby5iYXIu
YmF6J107CisgICAgdGVzdEtleVBhdGhzLmZvckVhY2goZnVuY3Rpb24gKGtleVBhdGgpIHsKKyAg
ICAgICAgZ2xvYmFsS2V5UGF0aCA9IGtleVBhdGg7CisgICAgICAgIGRlYnVnKCJnbG9iYWxLZXlQ
YXRoID0gJyIgKyBnbG9iYWxLZXlQYXRoICsgIiciKTsKKyAgICAgICAgZXZhbEFuZExvZygiZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDogZ2xvYmFsS2V5UGF0aH0pIik7Cisg
ICAgICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisgICAgfSk7CisKKyAgICB0ZXN0S2V5
UGF0aHMgPSBbbnVsbCwgdW5kZWZpbmVkLCAnJywgJ2ZvbycsICdmb28uYmFyLmJheiddOworICAg
IHRlc3RLZXlQYXRocy5mb3JFYWNoKGZ1bmN0aW9uIChrZXlQYXRoKSB7CisgICAgICAgIGdsb2Jh
bEtleVBhdGggPSBrZXlQYXRoOworICAgICAgICBkZWJ1ZygiZ2xvYmFsS2V5UGF0aCA9ICciICsg
Z2xvYmFsS2V5UGF0aCArICInIik7CisgICAgICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUg
PSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICAgICAgZXZhbEFuZExv
Zygic3RvcmUuY3JlYXRlSW5kZXgoJ25hbWUnLCBnbG9iYWxLZXlQYXRoKSIpOworICAgICAgICBk
ZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworICAgIH0pOworCisgICAgdGVzdEludmFsaWRLZXlQ
YXRocygpOworfQorCitmdW5jdGlvbiB0ZXN0SW52YWxpZEtleVBhdGhzKCkKK3sKKyAgICBkZWxl
dGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgdGVzdEtleVBhdGhzID0gWydbXScsICdbImZv
byJdJywgJ1siZm9vIiwgImJhciJdJywgJ1siIiwgIiJdJywgJ1sxLjAsIDIuMF0nLCAnW1siZm9v
Il1dJywgJ1siZm9vIiwgWyJiYXIiXV0nXTsKKyAgICB0ZXN0S2V5UGF0aHMuZm9yRWFjaChmdW5j
dGlvbiAoa2V5UGF0aCkgeworICAgICAgICBnbG9iYWxLZXlQYXRoID0ga2V5UGF0aDsKKyAgICAg
ICAgZGVidWcoImdsb2JhbEtleVBhdGggPSAnIiArIGdsb2JhbEtleVBhdGggKyAiJyIpOworICAg
ICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScs
IHtrZXlQYXRoOiBnbG9iYWxLZXlQYXRofSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9OX1RS
QU5TSUVOVF9FUlIiKTsKKyAgICAgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKyAgICB9
KTsKKworICAgIHRlc3RLZXlQYXRocyA9IFsnICcsICdmb28gJywgJ2ZvbyBiYXInLCAnZm9vLiBi
YXInLCAnZm9vIC5iYXInLCAnZm9vLi5iYXInLCAnK2ZvbycsICdmb28lJ107CisgICAgdGVzdEtl
eVBhdGhzLmZvckVhY2goZnVuY3Rpb24gKGtleVBhdGgpIHsKKyAgICAgICAgZ2xvYmFsS2V5UGF0
aCA9IGtleVBhdGg7CisgICAgICAgIGRlYnVnKCJnbG9iYWxLZXlQYXRoID0gJyIgKyBnbG9iYWxL
ZXlQYXRoICsgIiciKTsKKyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDogZ2xvYmFsS2V5UGF0aH0pIiwgIklEQkRhdGFi
YXNlRXhjZXB0aW9uLk5PTl9UUkFOU0lFTlRfRVJSIik7CisgICAgICAgIGRlbGV0ZUFsbE9iamVj
dFN0b3JlcyhkYik7CisgICAgfSk7CisKKyAgICB0ZXN0S2V5UGF0aHMgPSBbJyAnLCAnZm9vICcs
ICdmb28gYmFyJywgJ2Zvby4gYmFyJywgJ2ZvbyAuYmFyJywgJ2Zvby4uYmFyJywgJytmb28nLCAn
Zm9vJSddOworICAgIHRlc3RLZXlQYXRocy5mb3JFYWNoKGZ1bmN0aW9uIChrZXlQYXRoKSB7Cisg
ICAgICAgIGdsb2JhbEtleVBhdGggPSBrZXlQYXRoOworICAgICAgICBkZWJ1ZygiZ2xvYmFsS2V5
UGF0aCA9ICciICsgZ2xvYmFsS2V5UGF0aCArICInIik7CisgICAgICAgIHN0b3JlID0gZXZhbEFu
ZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICAg
ICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuY3JlYXRlSW5kZXgoJ25hbWUnLCBnbG9i
YWxLZXlQYXRoKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT05fVFJBTlNJRU5UX0VSUiIpOwor
ICAgICAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworICAgIH0pOworCisgICAgZmluaXNo
SlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5cGF0aC1l
ZGdlcy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXlwYXRo
LWVkZ2VzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViZjExYmI2ZGNlMjc2NDcxMTA1YjgzZTFjZDQ5NDEyMmZj
OGI1MDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMva2V5cGF0aC1lZGdlcy5qcwpAQCAtMCwwICsxLDExMCBAQAoraWYgKHRoaXMuaW1w
b3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9
CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBrZXlQYXRoIGVkZ2UgY2FzZXMiKTsKKwor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoJ2tleXBhdGgtZWRn
ZXMnKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2tleXBhdGgtZWRnZXMnKSIpOworICAgICAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICB9OworfQorCitmdW5jdGlvbiBvcGVuU3Vj
Y2VzcygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOwor
ICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdHJhbnNhY3Rpb24gPSByZXF1ZXN0LnJl
c3VsdDsKKyAgICAgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxi
YWNrOworICAgICAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUtd2l0
aC1wYXRoJywge2tleVBhdGg6ICdmb28nfSkiKTsKKyAgICAgICAgZXZhbEFuZExvZygiZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ3N0b3JlLXdpdGgtcGF0aC1hbmQtZ2VuZXJhdG9yJywge2tleVBhdGg6
ICdmb28nLCBhdXRvSW5jcmVtZW50OiB0cnVlfSkiKTsKKyAgICAgICAgdHJhbnNhY3Rpb24ub25j
b21wbGV0ZSA9IHRlc3RLZXlQYXRoczsKKyAgICB9OworfQorCitmdW5jdGlvbiB0ZXN0S2V5UGF0
aHMoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidGVzdEtleVBhdGhzKCk6Iik7CisK
KyAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rp
b24oWydzdG9yZS13aXRoLXBhdGgnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAg
ICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0
b3JlLXdpdGgtcGF0aCcpIik7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIktleSBwYXRo
IGRvZXNuJ3QgcmVzb2x2ZSB0byBhIHZhbHVlOyBzaG91bGQgeWllbGQgbnVsbCwgc2hvdWxkIHRo
cm93IERBVEFfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KG51
bGwpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICBkZWJ1ZygiIik7
CisgICAgZGVidWcoIktleSBwYXRoIGRvZXNuJ3QgcmVzb2x2ZSB0byBhIHZhbHVlOyBzaG91bGQg
eWllbGQgbnVsbCwgc2hvdWxkIHRocm93IERBVEFfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigic3RvcmUucHV0KHt9KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIp
OworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJLZXkgcGF0aCByZXNvbHZlcyB0byBhIHZh
bHVlIHRoYXQgaXMgaW52YWxpZCBrZXk7IHNob3VsZCB5aWVsZCAnaW52YWxpZCcga2V5LCBzaG91
bGQgdGhyb3cgREFUQV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5w
dXQoe2ZvbzogbnVsbH0pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAg
ICBkZWJ1ZygiIik7CisgICAgZGVidWcoIktleSBwYXRoIHJlc29sdmVzIHRvIGEgdmFsdWUgdGhh
dCBpcyB2YWxpZCBrZXk7IHNob3VsZCB5aWVsZCAnc3RyaW5nJyBrZXksIHNob3VsZCBzdWNjZWVk
Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLnB1dCh7Zm9vOiAnem9vJ30pIik7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgIHRlc3RQYXNzZWQoInN0b3Jl
LnB1dCBzdWNjZWVkZWQiKTsKKyAgICB9OworCisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVu
ZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB0ZXN0
S2V5UGF0aHNBbmRHZW5lcmF0b3I7Cit9CisKK2Z1bmN0aW9uIHRlc3RLZXlQYXRoc0FuZEdlbmVy
YXRvcigpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0S2V5UGF0aHNBbmRHZW5l
cmF0b3IoKToiKTsKKworICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24g
PSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlLXdpdGgtcGF0aC1hbmQtZ2VuZXJhdG9yJ10sIElEQlRy
YW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9
IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZS13aXRoLXBhdGgtYW5kLWdlbmVyYXRvcicp
Iik7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIktleSBwYXRoIGRvZXNuJ3QgcmVzb2x2
ZSB0byBhIHZhbHVlOyBzaG91bGQgeWllbGQgbnVsbCBidXQgaW5zZXJ0aW9uIHdvdWxkIGZhaWws
IHNvIHB1dCByZXF1ZXN0IHNob3VsZCByYWlzZSBleGNlcHRpb24iKTsKKyAgICBldmFsQW5kRXhw
ZWN0RXhjZXB0aW9uKCJzdG9yZS5wdXQobnVsbCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFU
QV9FUlIiKTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiS2V5IHBhdGggZG9lc24ndCBy
ZXNvbHZlIHRvIGEgdmFsdWU7IHNob3VsZCB5aWVsZCBudWxsIGJ1dCBpbnNlcnRpb24gd291bGQg
ZmFpbCwgc28gcHV0IHJlcXVlc3Qgc2hvdWxkIHJhaXNlIGV4Y2VwdGlvbiIpOworICAgIGV2YWxB
bmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLnB1dCgnc3RyaW5nJykiLCAiSURCRGF0YWJhc2VFeGNl
cHRpb24uREFUQV9FUlIiKTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiS2V5IHBhdGgg
ZG9lc24ndCByZXNvbHZlIHRvIGEgdmFsdWU7IHNob3VsZCB5aWVsZCBudWxsLCBrZXkgc2hvdWxk
IGJlIGdlbmVyYXRlZCwgcHV0IHJlcXVlc3Qgc2hvdWxkIHN1Y2NlZWQiKTsKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygic3RvcmUucHV0KHt9KSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24g
KCkgeworICAgICAgICB0ZXN0UGFzc2VkKCJzdG9yZS5wdXQgc3VjY2VlZGVkIik7CisKKyAgICAg
ICAgZGVidWcoIiIpOworICAgICAgICBkZWJ1ZygiS2V5IHBhdGggcmVzb2x2ZXMgdG8gYSB2YWx1
ZSB0aGF0IGlzIGludmFsaWQga2V5OyBzaG91bGQgeWllbGQgJ2ludmFsaWQnIGtleSwgc2hvdWxk
IHRocm93IERBVEFfRVJSIik7CisgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3Jl
LnB1dCh7Zm9vOiBudWxsfSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKwor
ICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgIGRlYnVnKCJLZXkgcGF0aCByZXNvbHZlcyB0byBh
IHZhbHVlIHRoYXQgaXMgdmFsaWQga2V5OyBzaG91bGQgeWllbGQgJ3N0cmluZycga2V5LCBzaG91
bGQgc3VjY2VlZCIpOworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUucHV0KHtm
b286ICd6b28nfSkiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgdGVzdFBhc3NlZCgic3RvcmUucHV0IHN1Y2NlZWRlZCIpOworCisgICAgICAgIH07
CisgICAgfTsKKworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxs
YmFjazsKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZmluaXNoSlNUZXN0OworfQorCit0
ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleXBhdGgtZmV0Y2gta2V5LmpzIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleXBhdGgtZmV0Y2gta2V5Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmQwMjMzNTNjMzM2NDQxNDBiYWZjNzZiYzQ3OTdhYWVjNDFlNWEzZDcKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
a2V5cGF0aC1mZXRjaC1rZXkuanMKQEAgLTAsMCArMSw4MiBAQAoraWYgKHRoaXMuaW1wb3J0U2Ny
aXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rl
c2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBrZXlQYXRocyIpOworCitmdW5jdGlvbiB0ZXN0KCkK
K3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRp
b24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNz
KCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwor
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJyki
KTsKKworICAgIHRlc3REYXRhID0gW3sgbmFtZTogInNpbXBsZSBpZGVudGlmaWVyIiwKKyAgICAg
ICAgICAgICAgICAgIHZhbHVlOiB7aWQ6MTB9LAorICAgICAgICAgICAgICAgICAga2V5UGF0aDog
ImlkIiwKKyAgICAgICAgICAgICAgICAgIGtleTogMTAgfSwKKyAgICAgICAgICAgICAgICB7IG5h
bWU6ICJzaW1wbGUgaWRlbnRpZmllcnMiLAorICAgICAgICAgICAgICAgICAgdmFsdWU6IHtpZDE6
MTAsIGlkMjoyMH0sCisgICAgICAgICAgICAgICAgICBrZXlQYXRoOiAiaWQxIiwKKyAgICAgICAg
ICAgICAgICAgIGtleTogMTAgfSwKKyAgICAgICAgICAgICAgICB7IG5hbWU6ICJuZXN0ZWQgaWRl
bnRpZmllcnMiLAorICAgICAgICAgICAgICAgICAgdmFsdWU6IHtvdXRlcjp7aW5uZXI6MTB9fSwK
KyAgICAgICAgICAgICAgICAgIGtleVBhdGg6ICJvdXRlci5pbm5lciIsCisgICAgICAgICAgICAg
ICAgICBrZXk6IDEwIH0sCisgICAgICAgICAgICAgICAgeyBuYW1lOiAibmVzdGVkIGlkZW50aWZp
ZXJzIHdpdGggZGlzdHJhY3Rpb25zIiwKKyAgICAgICAgICAgICAgICAgIHZhbHVlOiB7b3V0ZXI6
e2lubmVyOjEwfSwgaW5uZXI6e291dGVyOjIwfX0sCisgICAgICAgICAgICAgICAgICBrZXlQYXRo
OiAib3V0ZXIuaW5uZXIiLAorICAgICAgICAgICAgICAgICAga2V5OiAxMCB9LAorICAgIF07Cisg
ICAgbmV4dFRvT3BlbiA9IDA7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1
bGF0ZU9iamVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKK3sK
KyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInRlc3RpbmcgIiArIHRlc3REYXRhW25leHRUb09w
ZW5dLm5hbWUpOworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVj
dFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSh0
ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1lLCB7a2V5UGF0aDogdGVzdERhdGFbbmV4dFRvT3Blbl0u
a2V5UGF0aH0pOyIpOworICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coInJlc3VsdCA9IG9iamVjdFN0
b3JlLmFkZCh0ZXN0RGF0YVtuZXh0VG9PcGVuXS52YWx1ZSk7Iik7CisgICAgcmVzdWx0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXN1bHQub25zdWNjZXNzID0gb3Bl
bkN1cnNvcjsKK30KKworZnVuY3Rpb24gb3BlbkN1cnNvcigpCit7CisgICAgcmVzdWx0ID0gZXZh
bEFuZExvZygicmVzdWx0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOworICAgIHJlc3Vs
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVzdWx0Lm9uc3VjY2Vz
cyA9IGNoZWNrQ3Vyc29yOworfQorCitmdW5jdGlvbiBjaGVja0N1cnNvcigpCit7CisgICAgY3Vy
c29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICBp
ZiAoY3Vyc29yKSB7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgInRlc3REYXRhW25l
eHRUb09wZW5dLmtleSIpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQoImN1cnNv
ciBpcyBudWxsIik7CisgICAgfQorICAgIGlmICgrK25leHRUb09wZW4gPCB0ZXN0RGF0YS5sZW5n
dGgpIHsKKyAgICAgICAgY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSgpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0KK30KKwordGVzdCgpOwpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9rZXlyYW5nZS1yZXF1aXJlZC1hcmd1bWVudHMuanMgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5cmFuZ2UtcmVxdWlyZWQtYXJndW1l
bnRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjgxMzIwOTkwMjViZjU3ZjU3ZWY5ZWJkY2RkNDhkMzcwYzBiZWZm
N2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMva2V5cmFuZ2UtcmVxdWlyZWQtYXJndW1lbnRzLmpzCkBAIC0wLDAgKzEsMjEgQEAKK2lm
ICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJl
ZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIga2V5cmFuZ2UgcmVxdWly
ZWQgYXJndW1lbnRzIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclBy
ZWZpeGVzKCk7CisKKyAgICBzaG91bGRUaHJvdygiSURCS2V5UmFuZ2Uub25seSgpOyIpOworICAg
IHNob3VsZFRocm93KCJJREJLZXlSYW5nZS5sb3dlckJvdW5kKCk7Iik7CisgICAgc2hvdWxkVGhy
b3coIklEQktleVJhbmdlLnVwcGVyQm91bmQoKTsiKTsKKyAgICBzaG91bGRUaHJvdygiSURCS2V5
UmFuZ2UuYm91bmQoMSk7Iik7CisgICAgc2hvdWxkVGhyb3coIklEQktleVJhbmdlLmJvdW5kKCk7
Iik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9rZXlyYW5nZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9rZXlyYW5nZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMmY1ZjY1NjZkNjE4MWM5MDhhMzQ3MDIxNmI4
ZjMwOTQ1NWNlN2Y0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL2tleXJhbmdlLmpzCkBAIC0wLDAgKzEsMTg3IEBACitpZiAodGhpcy5p
bXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsK
K30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgS2V5UmFuZ2UuIik7CisKK2Z1bmN0
aW9uIGNoZWNrU2luZ2xlS2V5UmFuZ2UodmFsdWUpCit7CisgICAga2V5UmFuZ2UgPSBldmFsQW5k
TG9nKCJJREJLZXlSYW5nZS5vbmx5KCIgKyB2YWx1ZSArICIpIik7CisgICAgc2hvdWxkQmUoImtl
eVJhbmdlLmxvd2VyIiwgIiIgKyB2YWx1ZSk7CisgICAgc2hvdWxkQmUoImtleVJhbmdlLnVwcGVy
IiwgIiIgKyB2YWx1ZSk7CisgICAgc2hvdWxkQmVGYWxzZSgia2V5UmFuZ2UubG93ZXJPcGVuIik7
CisgICAgc2hvdWxkQmVGYWxzZSgia2V5UmFuZ2UudXBwZXJPcGVuIik7Cit9CisKK2Z1bmN0aW9u
IGNoZWNrTG93ZXJCb3VuZEtleVJhbmdlKHZhbHVlLCBvcGVuKQoreworICAgIGtleVJhbmdlID0g
ZXZhbEFuZExvZygiSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgiICsgdmFsdWUgKyAiLCIgKyBvcGVu
ICsgIikiKTsKKyAgICBzaG91bGRCZSgia2V5UmFuZ2UubG93ZXIiLCAiIiArIHZhbHVlKTsKKyAg
ICBpZiAob3BlbiA9PT0gdW5kZWZpbmVkKQorICAgICAgICBvcGVuID0gZmFsc2U7CisgICAgc2hv
dWxkQmUoImtleVJhbmdlLmxvd2VyT3BlbiIsICIiICsgb3Blbik7CisgICAgc2hvdWxkQmVOdWxs
KCJrZXlSYW5nZS51cHBlciIpOworICAgIHNob3VsZEJlRmFsc2UoImtleVJhbmdlLnVwcGVyT3Bl
biIpOworfQorCitmdW5jdGlvbiBjaGVja1VwcGVyQm91bmRLZXlSYW5nZSh2YWx1ZSwgb3BlbikK
K3sKKyAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coIklEQktleVJhbmdlLnVwcGVyQm91bmQoIiAr
IHZhbHVlICsgIiwiICsgb3BlbiArICIpIik7CisgICAgc2hvdWxkQmUoImtleVJhbmdlLnVwcGVy
IiwgIiIgKyB2YWx1ZSk7CisgICAgaWYgKG9wZW4gPT09IHVuZGVmaW5lZCkKKyAgICAgICAgb3Bl
biA9IGZhbHNlOworICAgIHNob3VsZEJlKCJrZXlSYW5nZS51cHBlck9wZW4iLCAiIiArIG9wZW4p
OworICAgIHNob3VsZEJlTnVsbCgia2V5UmFuZ2UubG93ZXIiKTsKKyAgICBzaG91bGRCZUZhbHNl
KCJrZXlSYW5nZS5sb3dlck9wZW4iKTsKK30KKworZnVuY3Rpb24gY2hlY2tCb3VuZEtleVJhbmdl
KGxvd2VyLCB1cHBlciwgbG93ZXJPcGVuLCB1cHBlck9wZW4pCit7CisgICAga2V5UmFuZ2UgPSBl
dmFsQW5kTG9nKCJJREJLZXlSYW5nZS5ib3VuZCgiICsgbG93ZXIgKyAiLCIgKyB1cHBlciArICIs
ICIgKyBsb3dlck9wZW4gKyAiLCAiICsgdXBwZXJPcGVuICsgIikiKTsKKyAgICBzaG91bGRCZSgi
a2V5UmFuZ2UubG93ZXIiLCAiIiArIGxvd2VyKTsKKyAgICBzaG91bGRCZSgia2V5UmFuZ2UudXBw
ZXIiLCAiIiArIHVwcGVyKTsKKyAgICBpZiAobG93ZXJPcGVuID09PSB1bmRlZmluZWQpCisgICAg
ICAgIGxvd2VyT3BlbiA9IGZhbHNlOworICAgIGlmICh1cHBlck9wZW4gPT09IHVuZGVmaW5lZCkK
KyAgICAgICAgdXBwZXJPcGVuID0gZmFsc2U7CisgICAgc2hvdWxkQmUoImtleVJhbmdlLmxvd2Vy
T3BlbiIsICIiICsgbG93ZXJPcGVuKTsKKyAgICBzaG91bGRCZSgia2V5UmFuZ2UudXBwZXJPcGVu
IiwgIiIgKyB1cHBlck9wZW4pOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVW
ZW5kb3JQcmVmaXhlcygpOworICAgIHNob3VsZEJlRmFsc2UoIidsb3dlcicgaW4gSURCS2V5UmFu
Z2UiKTsKKyAgICBzaG91bGRCZUZhbHNlKCIndXBwZXInIGluIElEQktleVJhbmdlIik7CisgICAg
c2hvdWxkQmVGYWxzZSgiJ2xvd2VyT3BlbicgaW4gSURCS2V5UmFuZ2UiKTsKKyAgICBzaG91bGRC
ZUZhbHNlKCIndXBwZXJPcGVuJyBpbiBJREJLZXlSYW5nZSIpOworICAgIHNob3VsZEJlVHJ1ZSgi
J29ubHknIGluIElEQktleVJhbmdlIik7CisgICAgc2hvdWxkQmVUcnVlKCInbG93ZXJCb3VuZCcg
aW4gSURCS2V5UmFuZ2UiKTsKKyAgICBzaG91bGRCZVRydWUoIid1cHBlckJvdW5kJyBpbiBJREJL
ZXlSYW5nZSIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ2JvdW5kJyBpbiBJREJLZXlSYW5nZSIpOwor
CisgICAgZGVidWcoIiIpOworCisgICAgdmFyIGluc3RhbmNlID0gZXZhbEFuZExvZygiaW5zdGFu
Y2UgPSBJREJLZXlSYW5nZS5vbmx5KDEpIik7CisgICAgc2hvdWxkQmVUcnVlKCInbG93ZXInIGlu
IGluc3RhbmNlIik7CisgICAgc2hvdWxkQmVUcnVlKCIndXBwZXInIGluIGluc3RhbmNlIik7Cisg
ICAgc2hvdWxkQmVUcnVlKCInbG93ZXJPcGVuJyBpbiBpbnN0YW5jZSIpOworICAgIHNob3VsZEJl
VHJ1ZSgiJ3VwcGVyT3BlbicgaW4gaW5zdGFuY2UiKTsKKyAgICBzaG91bGRCZUZhbHNlKCInb25s
eScgaW4gaW5zdGFuY2UiKTsKKyAgICBzaG91bGRCZUZhbHNlKCInbG93ZXJCb3VuZCcgaW4gaW5z
dGFuY2UiKTsKKyAgICBzaG91bGRCZUZhbHNlKCIndXBwZXJCb3VuZCcgaW4gaW5zdGFuY2UiKTsK
KyAgICBzaG91bGRCZUZhbHNlKCInYm91bmQnIGluIGluc3RhbmNlIik7CisKKyAgICBkZWJ1Zygi
Iik7CisKKyAgICBjaGVja1NpbmdsZUtleVJhbmdlKDEpOworICAgIGNoZWNrU2luZ2xlS2V5UmFu
Z2UoMy4xNCk7CisgICAgY2hlY2tTaW5nbGVLZXlSYW5nZSgiJ2EnIik7CisKKyAgICBjaGVja0xv
d2VyQm91bmRLZXlSYW5nZSgxMCwgdHJ1ZSk7CisgICAgY2hlY2tMb3dlckJvdW5kS2V5UmFuZ2Uo
MTEsIGZhbHNlKTsKKyAgICBjaGVja0xvd2VyQm91bmRLZXlSYW5nZSgxMik7CisgICAgY2hlY2tM
b3dlckJvdW5kS2V5UmFuZ2UoMTAuMSwgdHJ1ZSk7CisgICAgY2hlY2tMb3dlckJvdW5kS2V5UmFu
Z2UoMTEuMiwgZmFsc2UpOworICAgIGNoZWNrTG93ZXJCb3VuZEtleVJhbmdlKDEyLjMpOworICAg
IGNoZWNrTG93ZXJCb3VuZEtleVJhbmdlKCInYWEnIiwgdHJ1ZSk7CisgICAgY2hlY2tMb3dlckJv
dW5kS2V5UmFuZ2UoIidhYiciLCBmYWxzZSk7CisgICAgY2hlY2tMb3dlckJvdW5kS2V5UmFuZ2Uo
IidhYyciKTsKKworICAgIGNoZWNrVXBwZXJCb3VuZEtleVJhbmdlKDIwLCB0cnVlKTsKKyAgICBj
aGVja1VwcGVyQm91bmRLZXlSYW5nZSgyMSwgZmFsc2UpOworICAgIGNoZWNrVXBwZXJCb3VuZEtl
eVJhbmdlKDIyKTsKKyAgICBjaGVja1VwcGVyQm91bmRLZXlSYW5nZSgyMC4yLCB0cnVlKTsKKyAg
ICBjaGVja1VwcGVyQm91bmRLZXlSYW5nZSgyMS4zLCBmYWxzZSk7CisgICAgY2hlY2tVcHBlckJv
dW5kS2V5UmFuZ2UoMjIuNCk7CisgICAgY2hlY2tVcHBlckJvdW5kS2V5UmFuZ2UoIidiYSciLCB0
cnVlKTsKKyAgICBjaGVja1VwcGVyQm91bmRLZXlSYW5nZSgiJ2JiJyIsIGZhbHNlKTsKKyAgICBj
aGVja1VwcGVyQm91bmRLZXlSYW5nZSgiJ2JjJyIpOworCisgICAgY2hlY2tCb3VuZEtleVJhbmdl
KDMwLCA0MCk7CisgICAgY2hlY2tCb3VuZEtleVJhbmdlKDMxLCA0MSwgZmFsc2UsIGZhbHNlKTsK
KyAgICBjaGVja0JvdW5kS2V5UmFuZ2UoMzIsIDQyLCBmYWxzZSwgdHJ1ZSk7CisgICAgY2hlY2tC
b3VuZEtleVJhbmdlKDMzLCA0MywgdHJ1ZSwgZmFsc2UpOworICAgIGNoZWNrQm91bmRLZXlSYW5n
ZSgzNCwgNDQsIHRydWUsIHRydWUpOworCisgICAgY2hlY2tCb3VuZEtleVJhbmdlKDMwLjEsIDQw
LjIpOworICAgIGNoZWNrQm91bmRLZXlSYW5nZSgzMS4zLCA0MS40LCBmYWxzZSwgZmFsc2UpOwor
ICAgIGNoZWNrQm91bmRLZXlSYW5nZSgzMi41LCA0Mi42LCBmYWxzZSwgdHJ1ZSk7CisgICAgY2hl
Y2tCb3VuZEtleVJhbmdlKDMzLjcsIDQzLjgsIHRydWUsIGZhbHNlKTsKKyAgICBjaGVja0JvdW5k
S2V5UmFuZ2UoMzQuOSwgNDQuMCwgdHJ1ZSwgdHJ1ZSk7CisKKyAgICBjaGVja0JvdW5kS2V5UmFu
Z2UoIidhYWEnIiwgIidhYmEnIiwgZmFsc2UsIGZhbHNlKTsKKyAgICBjaGVja0JvdW5kS2V5UmFu
Z2UoIidhYWInIiwgIidhYmInIik7CisgICAgY2hlY2tCb3VuZEtleVJhbmdlKCInYWFjJyIsICIn
YWJjJyIsIGZhbHNlLCBmYWxzZSk7CisgICAgY2hlY2tCb3VuZEtleVJhbmdlKCInYWFkJyIsICIn
YWJkJyIsIGZhbHNlLCB0cnVlKTsKKyAgICBjaGVja0JvdW5kS2V5UmFuZ2UoIidhYWUnIiwgIidh
YmUnIiwgdHJ1ZSwgZmFsc2UpOworICAgIGNoZWNrQm91bmRLZXlSYW5nZSgiJ2FhZiciLCAiJ2Fi
ZiciLCB0cnVlLCB0cnVlKTsKKworICAgIHRyeSB7CisgICAgICAgIGRlYnVnKCJQYXNzaW5nIGFu
IGludmFsaWQga2V5IGludG8gb25seSh7fSkiKTsKKyAgICAgICAgSURCS2V5UmFuZ2Uub25seSh7
fSk7CisgICAgICAgIHRlc3RGYWlsZWQoIk5vIGV4Y2VwdGlvbiB0aHJvd24iKTsKKyAgICB9IGNh
dGNoIChlKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkNhdWdodCBleGNlcHRpb246ICIgKyBlLnRv
U3RyaW5nKCkpOworICAgIH0KKworICAgIHRyeSB7CisgICAgICAgIGRlYnVnKCJQYXNzaW5nIGFu
IGludmFsaWQga2V5IGludG8gdXBwZXJCb3VuZCh7fSkiKTsKKyAgICAgICAgSURCS2V5UmFuZ2Uu
dXBwZXJCb3VuZCh7fSk7CisgICAgICAgIHRlc3RGYWlsZWQoIk5vIGV4Y2VwdGlvbiB0aHJvd24i
KTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkNhdWdodCBleGNlcHRp
b246ICIgKyBlLnRvU3RyaW5nKCkpOworICAgIH0KKworICAgIHRyeSB7CisgICAgICAgIGRlYnVn
KCJQYXNzaW5nIGFuIGludmFsaWQga2V5IGludG8gbG93ZXJCb3VuZCh7fSkiKTsKKyAgICAgICAg
SURCS2V5UmFuZ2UubG93ZXJCb3VuZCh7fSk7CisgICAgICAgIHRlc3RGYWlsZWQoIk5vIGV4Y2Vw
dGlvbiB0aHJvd24iKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkNh
dWdodCBleGNlcHRpb246ICIgKyBlLnRvU3RyaW5nKCkpOworICAgIH0KKworICAgIHRyeSB7Cisg
ICAgICAgIGRlYnVnKCJQYXNzaW5nIGFuIGludmFsaWQga2V5IGludG8gYm91bmQobnVsbCwge30p
Iik7CisgICAgICAgIElEQktleVJhbmdlLmJvdW5kKG51bGwsIHt9KTsKKyAgICAgICAgdGVzdEZh
aWxlZCgiTm8gZXhjZXB0aW9uIHRocm93biIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
dGVzdFBhc3NlZCgiQ2F1Z2h0IGV4Y2VwdGlvbjogIiArIGUudG9TdHJpbmcoKSk7CisgICAgfQor
CisgICAgdHJ5IHsKKyAgICAgICAgZGVidWcoIlBhc3NpbmcgYW4gaW52YWxpZCBrZXkgaW50byBi
b3VuZCh7fSxudWxsKSIpOworICAgICAgICBJREJLZXlSYW5nZS5ib3VuZCh7fSwgbnVsbCk7Cisg
ICAgICAgIHRlc3RGYWlsZWQoIk5vIGV4Y2VwdGlvbiB0aHJvd24iKTsKKyAgICB9IGNhdGNoIChl
KSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkNhdWdodCBleGNlcHRpb246ICIgKyBlLnRvU3RyaW5n
KCkpOworICAgIH0KKworICAgIHRyeSB7CisgICAgICAgIGRlYnVnKCJQYXNzaW5nIGFuIGludmFs
aWQga2V5IGludG8gYm91bmQoe30sIHt9KSIpOworICAgICAgICBJREJLZXlSYW5nZS5ib3VuZCh7
fSwge30pOworICAgICAgICB0ZXN0RmFpbGVkKCJObyBleGNlcHRpb24gdGhyb3duIik7CisgICAg
fSBjYXRjaCAoZSkgeworICAgICAgICB0ZXN0UGFzc2VkKCJDYXVnaHQgZXhjZXB0aW9uOiAiICsg
ZS50b1N0cmluZygpKTsKKyAgICB9CisKKyAgICBkZWJ1ZygiTG93ZXIga2V5IGdyZWF0ZXIgdGhh
biBoaWdoZXIga2V5LCBib3VuZCg0LCAzKSIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24o
IklEQktleVJhbmdlLmJvdW5kKDQsIDMpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJS
Iik7CisKKyAgICBkZWJ1ZygiRXF1YWwga2V5cywgZWl0aGVyIG9mIHRoZSBib3VuZHMgaXMgb3Bl
biwgYm91bmQoNCwgNCwgdHJ1ZSwgZmFsc2UpIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlv
bigiSURCS2V5UmFuZ2UuYm91bmQoNCwgNCwgdHJ1ZSwgZmFsc2UpIiwgIklEQkRhdGFiYXNlRXhj
ZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICBkZWJ1ZygiRXF1YWwga2V5cywgZWl0aGVyIG9mIHRo
ZSBib3VuZHMgaXMgb3BlbiwgYm91bmQoNCwgNCwgZmFsc2UsIHRydWUpIik7CisgICAgZXZhbEFu
ZEV4cGVjdEV4Y2VwdGlvbigiSURCS2V5UmFuZ2UuYm91bmQoNCwgNCwgZmFsc2UsIHRydWUpIiwg
IklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICBkZWJ1ZygiRXF1YWwga2V5
cywgZWl0aGVyIG9mIHRoZSBib3VuZHMgaXMgb3BlbiwgYm91bmQoNCwgNCwgdHJ1ZSwgdHJ1ZSki
KTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJJREJLZXlSYW5nZS5ib3VuZCg0LCA0LCB0
cnVlLCB0cnVlKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworCisgICAgZGVi
dWcoIkVxdWFsIGtleXMsIG5vbmUgb2YgdGhlIGJvdW5kcyBpcyBvcGVuLCBib3VuZCg0LCA0LCBm
YWxzZSwgZmFsc2UpIik7CisgICAgSURCS2V5UmFuZ2UuYm91bmQoNCwgNCwgZmFsc2UsIGZhbHNl
KTsKK30KKwordGVzdCgpOworCitmaW5pc2hKU1Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvbGlzdC1vcmRlcmluZy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9saXN0LW9yZGVyaW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczNTk4ZmQ3MjM1ODYwZWRhNzhiMmYx
NzFlZTE0ZGIwYzBjMWFjY2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvbGlzdC1vcmRlcmluZy5qcwpAQCAtMCwwICsxLDg0IEBACitp
ZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFy
ZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3Qgc3RyaW5nIGxpc3Qgb3JkZXJpbmcgaW4g
SW5kZXhlZERCLiIpOworCit2YXIgZXhwZWN0ZWRfb3JkZXIgPSBbCisgICIiLAorICAiXHgwMCIs
IC8vICdOVUxMJyAoVSswMDAwKQorICAiMCIsCisgICIxIiwKKyAgIkEiLAorICAiQiIsCisgICJh
IiwKKyAgImIiLAorICAiXHg3RiIsIC8vICdERUxFVEUnIChVKzAwN0YpCisgICJceEMwIiwgLy8g
J0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBHUkFWRScgKFUrMDBDMCkKKyAgIlx4QzEiLCAv
LyAnTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEFDVVRFJyAoVSswMEMxKQorICAiXHhFMCIs
IC8vICdMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEdSQVZFJyAoVSswMEUwKQorICAiXHhFMSIs
IC8vICdMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEFDVVRFJyAoVSswMEUxKQorICAiXHhGRiIs
IC8vICdMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIERJQUVSRVNJUycgKFUrMDBGRikKKyAgIlx1
MDEwMCIsIC8vICdMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggTUFDUk9OJyAoVSswMTAwKQor
ICAiXHUxMDAwIiwgLy8gJ01ZQU5NQVIgTEVUVEVSIEtBJyAoVSsxMDAwKQorICAiXHVEODM0XHVE
RDFFIiwgLy8gJ01VU0lDQUwgU1lNQk9MIEctQ0xFRicgKFUrMUQxMUUpLCBVVEYtMTYgc3Vycm9n
YXRlIHBhaXJzCisgICJcdUZGRkQiIC8vICdSRVBMQUNFTUVOVCBDSEFSQUNURVInIChVK0ZGRkQp
CitdOwordmFyIGksIHRtcCwgcGVybXV0ZWRfb3JkZXIgPSBleHBlY3RlZF9vcmRlci5zbGljZSgp
OyBwZXJtdXRlZF9vcmRlci5yZXZlcnNlKCk7Citmb3IgKGkgPSAwOyBpIDwgcGVybXV0ZWRfb3Jk
ZXIubGVuZ3RoIC0gMjsgaSArPSAyKSB7CisgICAgdG1wID0gcGVybXV0ZWRfb3JkZXJbaV07Cisg
ICAgcGVybXV0ZWRfb3JkZXJbaV0gPSBwZXJtdXRlZF9vcmRlcltpICsgMV07CisgICAgcGVybXV0
ZWRfb3JkZXJbaSArIDFdID0gdG1wOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1v
dmVWZW5kb3JQcmVmaXhlcygpOworICAgIGRlYnVnKCJjaGVjayB0aGF0IHRoZSBleHBlY3RlZCBv
cmRlciBpcyB0aGUgY2Fub25pY2FsIEpTIHNvcnQgb3JkZXI6Iik7CisgICAgZXZhbEFuZExvZygi
c29ydGVkX29yZGVyID0gZXhwZWN0ZWRfb3JkZXIuc2xpY2UoKTsgc29ydGVkX29yZGVyLnNvcnQo
KSIpOworICAgIHNob3VsZEJlVHJ1ZSgiYXJlQXJyYXlzRXF1YWwoc29ydGVkX29yZGVyLCBleHBl
Y3RlZF9vcmRlcikiKTsKKyAgICB0ZXN0U3RvcmVzQW5kSW5kZXhlcygpOworfQorCitmdW5jdGlv
biB0ZXN0U3RvcmVzQW5kSW5kZXhlcygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0
ZXN0U3RvcmVzQW5kSW5kZXhlcygpOiIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRl
eGVkREIuZGVsZXRlRGF0YWJhc2UoJ2xpc3Qtb3JkZXJpbmcnKSIpOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24oZSkgeworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9w
ZW4oJ2xpc3Qtb3JkZXJpbmcnKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihl
KSB7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJkYiA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAg
ICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLnZlcnNpb24iLCAiIik7CisgICAgICAg
ICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgICAg
ICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAg
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgICAgIHRy
YW5zID0gcmVxdWVzdC5yZXN1bHQ7CisKKyAgICAgICAgICAgICAgICBkZWJ1ZygiIik7CisgICAg
ICAgICAgICAgICAgZGVidWcoIk9iamVjdCBzdG9yZXM6Iik7CisgICAgICAgICAgICAgICAgcGVy
bXV0ZWRfb3JkZXIuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkgeworICAgICAgICAgICAgICAgICAg
ICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgiICsgSlNPTi5zdHJpbmdpZnkobmFt
ZSkgKyIpIik7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBzaG91bGRC
ZVRydWUoImFyZUFycmF5c0VxdWFsKGRiLm9iamVjdFN0b3JlTmFtZXMsIGV4cGVjdGVkX29yZGVy
KSIpOworCisgICAgICAgICAgICAgICAgZGVidWcoIiIpOworICAgICAgICAgICAgICAgIGRlYnVn
KCJJbmRleGVzOiIpOworICAgICAgICAgICAgICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUg
PSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgICAgICAgICAgICAgIHBlcm11
dGVkX29yZGVyLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHsKKyAgICAgICAgICAgICAgICAgICAg
ZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoIiArIEpTT04uc3RyaW5naWZ5KG5hbWUpICsi
LCAna2V5UGF0aCcpIik7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBz
aG91bGRCZVRydWUoImFyZUFycmF5c0VxdWFsKHN0b3JlLmluZGV4TmFtZXMsIGV4cGVjdGVkX29y
ZGVyKSIpOworCisgICAgICAgICAgICAgICAgdHJhbnMub25jb21wbGV0ZSA9IGZpbmlzaEpTVGVz
dDsKKyAgICAgICAgICAgIH07CisgICAgICAgIH07CisgICAgfTsKK30KKwordGVzdCgpOwpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9tdXRhdGluZy1jdXJzb3IuanMgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvbXV0YXRpbmctY3Vyc29yLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3
ZDYxZjZjYzQwYjA2NjA4MGFmMTFkZTY1MWYxODMxMTY3ZmEwY2QKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvbXV0YXRpbmctY3Vyc29y
LmpzCkBAIC0wLDAgKzEsMTMyIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1w
b3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsK
KyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3Qg
bXV0YXRpbmcgYW4gSW5kZXhlZERCJ3Mgb2JqZWN0c3RvcmUgZnJvbSBhIGN1cnNvci4iKTsKKwor
dGVzdCgpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygp
OworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignbXV0YXRpbmctY3Vy
c29yJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVu
U3VjY2VzcygpCit7CisgICAgdmFyIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignMScp
Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0
VmVyc2lvblN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOwor
ICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9y
dCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSBvcGVu
Rm9yd2FyZEN1cnNvcjsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICB2
YXIgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVj
dFN0b3JlKCdzdG9yZScpIik7CisgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKDEsIDEp
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coIm9i
amVjdFN0b3JlLmFkZCgyLCAyKS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsK
KyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoMywgMykub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrIik7CisgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKDQsIDQp
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOworfQorCitmdW5jdGlvbiBvcGVu
Rm9yd2FyZEN1cnNvcigpCit7CisgICAgZGVidWcoIm9wZW5Gb3J3YXJkQ3Vyc29yKCkiKTsKKyAg
ICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUnXSwgSURCVHJhbnNh
Y3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0
Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IGZvcndhcmRDdXJzb3JDb21wbGV0ZTsK
KworICAgIHNlbGYub2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgn
c3RvcmUnKSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5vcGVuQ3Vy
c29yKCkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZvcndhcmRDdXJzb3I7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgc2VsZi5jdXJzb3JT
dGVwcyA9IDA7Cit9CisKK2Z1bmN0aW9uIGZvcndhcmRDdXJzb3IoKQoreworICAgIGRlYnVnKCJm
b3J3YXJkQ3Vyc29yKCkiKTsKKyAgICBzZWxmLmN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7
CisKKyAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBudWxsKSB7CisgICAgICAgIHNob3Vs
ZEJlKCJjdXJzb3JTdGVwcyIsICI1Iik7CisKKyAgICAgICAgLy8gTGV0IHRoZSB0cmFuc2FjdGlv
biBmaW5pc2guCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBkZWJ1ZygrK2N1cnNvclN0
ZXBzKTsKKyAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJjdXJzb3JTdGVwcyIpOworICAgIHNo
b3VsZEJlKCJjdXJzb3IudmFsdWUiLCAiY3Vyc29yU3RlcHMiKTsKKworICAgIGlmIChjdXJzb3JT
dGVwcyA9PSAxKSB7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJldmVudC50YXJnZXQu
c291cmNlLmFkZCg1LCA1KSIpOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KCkgeyBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKSIpOyB9CisgICAgICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIH0gZWxzZSB7CisgICAgICAg
IGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpIik7CisgICAgfQorfQorCitmdW5jdGlvbiBm
b3J3YXJkQ3Vyc29yQ29tcGxldGUoKQoreworICAgIGRlYnVnKCJmb3J3YXJkQ3Vyc29yQ29tcGxl
dGUoKSIpOworICAgIG9wZW5SZXZlcnNlQ3Vyc29yKCkKK30KKworZnVuY3Rpb24gb3BlblJldmVy
c2VDdXJzb3IoKQoreworICAgIGRlYnVnKCJvcGVuUmV2ZXJzZUN1cnNvcigpIik7CisgICAgZXZh
bEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9u
LlJFQURfV1JJVEUpIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxi
YWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSByZXZlcnNlQ3Vyc29yQ29tcGxldGU7CisKKyAg
ICBzZWxmLm9iamVjdFN0b3JlID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3Jl
JykiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUub3BlbkN1cnNvcihu
dWxsLCBJREJDdXJzb3IuUFJFVikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHJldmVyc2VD
dXJzb3I7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cisg
ICAgc2VsZi5jdXJzb3JTdGVwcyA9IDY7Cit9CisKK2Z1bmN0aW9uIHJldmVyc2VDdXJzb3IoKQor
eworICAgIGRlYnVnKCJyZXZlcnNlQ3Vyc29yKCkiKTsKKyAgICBzZWxmLmN1cnNvciA9IGV2ZW50
LnRhcmdldC5yZXN1bHQ7CisKKyAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBudWxsKSB7
CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3JTdGVwcyIsICIwIik7CisKKyAgICAgICAgLy8gTGV0
IHRoZSB0cmFuc2FjdGlvbiBmaW5pc2guCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBk
ZWJ1ZygtLWN1cnNvclN0ZXBzKTsKKyAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJjdXJzb3JT
dGVwcyIpOworICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAiY3Vyc29yU3RlcHMiKTsKKwor
ICAgIGlmIChjdXJzb3JTdGVwcyA9PSAyKSB7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJldmVudC50YXJnZXQuc291cmNlLmFkZCgwLCAwKSIpOworICAgICAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGZ1bmN0aW9uKCkgeyBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKSIpOyB9Cisg
ICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIH0g
ZWxzZSB7CisgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpIik7CisgICAgfQor
fQorCitmdW5jdGlvbiByZXZlcnNlQ3Vyc29yQ29tcGxldGUoKQoreworICAgIGRlYnVnKCJyZXZl
cnNlQ3Vyc29yQ29tcGxldGUoKSIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9vYmplY3RTdG9yZS1yZXF1aXJlZC1hcmd1bWVudHMuanMgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0U3RvcmUtcmVxdWlyZWQtYXJn
dW1lbnRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkZjhiNzA1YzgyOWFlZGM2NjlhYjFhYjUyNTYxMmE4NmI2
MDk5NjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvb2JqZWN0U3RvcmUtcmVxdWlyZWQtYXJndW1lbnRzLmpzCkBAIC0wLDAgKzEsNDQg
QEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMo
J3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgb2JqZWN0IHN0
b3JlIHJlcXVpcmVkIGFyZ3VtZW50cyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1v
dmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7
CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBk
YiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNyZWF0
ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jlcyhk
Yik7CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ2ZvbycpOyIpOworICAgIHNob3VsZFRocm93KCJvYmplY3RTdG9yZS5w
dXQoKTsiKTsKKyAgICBzaG91bGRUaHJvdygib2JqZWN0U3RvcmUuYWRkKCk7Iik7CisgICAgc2hv
dWxkVGhyb3coIm9iamVjdFN0b3JlLmRlbGV0ZSgpOyIpOworICAgIHNob3VsZFRocm93KCJvYmpl
Y3RTdG9yZS5nZXQoKTsiKTsKKyAgICBzaG91bGRUaHJvdygib2JqZWN0U3RvcmUuY3JlYXRlSW5k
ZXgoKTsiKTsKKyAgICBzaG91bGRUaHJvdygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ2Zvbycp
OyIpOworICAgIHNob3VsZFRocm93KCJvYmplY3RTdG9yZS5pbmRleCgpOyIpOworICAgIHNob3Vs
ZFRocm93KCJvYmplY3RTdG9yZS5kZWxldGVJbmRleCgpOyIpOworICAgIGZpbmlzaEpTVGVzdCgp
OworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3JlLWF1dG9p
bmNyZW1lbnQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2Jq
ZWN0c3RvcmUtYXV0b2luY3JlbWVudC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YjFiNDlhMzEzZGNkMTBlMzdm
ZjZjZDc3YmVmZWI4YjA0NmM1ZGI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3JlLWF1dG9pbmNyZW1lbnQuanMKQEAg
LTAsMCArMSwxOTMgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3Jp
cHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGlt
cG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVk
REIncyBJREJPYmplY3RTdG9yZSBhdXRvLWluY3JlbWVudCBmZWF0dXJlLiIpOworCitmdW5jdGlv
biB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJpbmRleGVkREIub3Blbignb2JqZWN0c3RvcmUtYXV0b2luY3JlbWVudCcpIik7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3Mo
KQoreworICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOworICAgIHNlbGYuZGIgPSBldmFsQW5k
TG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBzZXRWZXJzaW9uU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQoreworICAg
IGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOworICAgIHNlbGYudHJhbnMgPSBldmFsQW5k
TG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRy
YW5zICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxi
YWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSBzZXRWZXJzaW9uQ29tcGxldGVkOworCisgICAg
ZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIGRlYnVnKCJjcmVhdGVPYmplY3RTdG9y
ZSgpOiIpOworICAgIHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9i
amVjdFN0b3JlKCdTdG9yZVdpdGhLZXlQYXRoJywge2tleVBhdGg6ICdpZCcsIGF1dG9JbmNyZW1l
bnQ6IHRydWV9KSIpOworICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdTdG9y
ZVdpdGhBdXRvSW5jcmVtZW50Jywge2F1dG9JbmNyZW1lbnQ6IHRydWV9KSIpOworICAgIGV2YWxB
bmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdQbGFpbk9sZFN0b3JlJywge2F1dG9JbmNyZW1l
bnQ6IGZhbHNlfSkiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnU3Rv
cmVXaXRoTG9uZ0tleVBhdGgnLCB7a2V5UGF0aDogJ2EuYi5jLmlkJywgYXV0b0luY3JlbWVudDog
dHJ1ZX0pIik7CisgICAgdmFyIHN0b3JlTmFtZXMgPSBldmFsQW5kTG9nKCJzdG9yZU5hbWVzID0g
ZGIub2JqZWN0U3RvcmVOYW1lcyIpOworCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzdG9y
ZS5uYW1lIiwgIlN0b3JlV2l0aEtleVBhdGgiKTsKKyAgICBzaG91bGRCZSgic3RvcmUua2V5UGF0
aCIsICInaWQnIik7CisgICAgc2hvdWxkQmUoInN0b3JlTmFtZXMuY29udGFpbnMoJ1N0b3JlV2l0
aEtleVBhdGgnKSIsICJ0cnVlIik7CisgICAgc2hvdWxkQmUoInN0b3JlTmFtZXMuY29udGFpbnMo
J1N0b3JlV2l0aEF1dG9JbmNyZW1lbnQnKSIsICJ0cnVlIik7CisgICAgc2hvdWxkQmUoInN0b3Jl
TmFtZXMuY29udGFpbnMoJ1BsYWluT2xkU3RvcmUnKSIsICJ0cnVlIik7CisgICAgc2hvdWxkQmUo
InN0b3JlTmFtZXMubGVuZ3RoIiwgIjQiKTsKKworICAgIC8vIExldCB0aGUgc2V0VmVyc2lvbiB0
cmFuc2FjdGlvbiBjb21wbGV0ZS4KK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbkNvbXBsZXRlZCgp
Cit7CisgICAgZGVidWcoInNldFZlcnNpb25Db21wbGV0ZWQoKToiKTsKKworICAgIHNlbGYudHJh
bnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnU3RvcmVXaXRoS2V5UGF0
aCcsICdTdG9yZVdpdGhBdXRvSW5jcmVtZW50JywgJ1BsYWluT2xkU3RvcmUnXSwgSURCVHJhbnNh
Y3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0
Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHRlc3RMb25nS2V5UGF0aDsKKworICAg
IHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdTdG9y
ZVdpdGhLZXlQYXRoJykiKTsKKworICAgIGRlYnVnKCJJbnNlcnQgaW50byBvYmplY3Qgc3RvcmUg
d2l0aCBhdXRvIGluY3JlbWVudCBhbmQga2V5IHBhdGgsIHdpdGgga2V5IGluIHRoZSBvYmplY3Qu
Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7bmFtZTogJ0plZmZlcnNz
b24nLCBudW1iZXI6ICc3MDEwJywgaWQ6IDN9KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
YWRkSmVmZmVyc3NvblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGFkZEplZmZlcnNzb25TdWNjZXNzKCkKK3sKKyAg
ICBkZWJ1ZygiYWRkSmVmZmVyc3NvblN1Y2Nlc3MoKToiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQu
dGFyZ2V0LnJlc3VsdCIsICIzIik7CisKKyAgICBkZWJ1ZygiSW5zZXJ0IGludG8gb2JqZWN0IHN0
b3JlIHdpdGggYXV0byBpbmNyZW1lbnQgYW5kIGtleSBwYXRoLCB3aXRob3V0IGtleSBpbiB0aGUg
b2JqZWN0LiIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe25hbWU6ICdM
aW5jb2xuJywgbnVtYmVyOiAnNzAxMid9KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRk
TGluY29sbldpdGhJbmplY3RLZXlTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBhZGRMaW5jb2xuV2l0aEluamVjdEtl
eVN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJhZGRMaW5jb2xuV2l0aEluamVjdEtleVN1Y2Nlc3Mo
KToiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICI0Iik7CisKKyAgICBy
ZXN1bHQgPSBldmFsQW5kTG9nKCJzdG9yZS5nZXQoNCkiKTsKKyAgICByZXN1bHQub25zdWNjZXNz
ID0gZ2V0TGluY29sbkFmdGVySW5qZWN0ZWRLZXlTdWNjZXNzOworICAgIHJlc3VsdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGdldExpbmNvbG5BZnRl
ckluamVjdGVkS2V5U3VjY2VzcygpCit7CisgICAgZGVidWcoImdldExpbmNvbG5BZnRlckluamVj
dGVkS2V5U3VjY2VzcygpOiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFy
Z2V0LnJlc3VsdC5uYW1lIiwgIkxpbmNvbG4iKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
ImV2ZW50LnRhcmdldC5yZXN1bHQubnVtYmVyIiwgIjcwMTIiKTsKKyAgICBzaG91bGRCZSgiZXZl
bnQudGFyZ2V0LnJlc3VsdC5pZCIsICI0Iik7CisKKyAgICBzZWxmLnN0b3JlID0gZXZhbEFuZExv
Zygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnU3RvcmVXaXRoQXV0b0luY3JlbWVudCcpIik7
CisgICAgZGVidWcoIkluc2VydCBpbnRvIG9iamVjdCBzdG9yZSB3aXRoIGtleSBnZW4gdXNpbmcg
ZXhwbGljaXQga2V5Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7bmFt
ZTogJ0xpbmNvbG4nLCBudW1iZXI6ICc3MDEyJ30sIDUpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBhZGRMaW5jb2xuV2l0aEV4cGxpY2l0S2V5U3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gYWRkTGluY29sbldp
dGhFeHBsaWNpdEtleVN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJhZGRMaW5jb2xuV2l0aEV4cGxp
Y2l0S2V5U3VjY2VzcygpOiIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0Iiwg
IjUiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5nZXQoNSkiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldExpbmNvbG5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBnZXRMaW5jb2xuU3Vj
Y2VzcygpCit7CisgICAgZGVidWcoImdldExpbmNvbG5TdWNjZXNzKCk6Iik7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0Lm5hbWUiLCAiTGluY29sbiIpOwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5udW1iZXIiLCAi
NzAxMiIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLnB1dCh7bmFtZTogJ0Fi
cmFoYW0nLCBudW1iZXI6ICcyMTA3J30pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwdXRB
YnJhaGFtU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKK30KKworZnVuY3Rpb24gcHV0QWJyYWhhbVN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJw
dXRBYnJhaGFtU3VjY2VzcygpOiIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0
IiwgIjYiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5nZXQoNikiKTsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldEFicmFoYW1TdWNjZXNzOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBnZXRBYnJhaGFt
U3VjY2VzcygpCit7CisgICAgZGVidWcoImdldEFicmFoYW1TdWNjZXNzKCk6Iik7CisgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0Lm5hbWUiLCAiQWJyYWhhbSIp
OworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5udW1iZXIi
LCAiMjEwNyIpOworCisgICAgc2VsZi5zdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMu
b2JqZWN0U3RvcmUoJ1BsYWluT2xkU3RvcmUnKSIpOworICAgIGRlYnVnKCJUcnkgYWRkaW5nIHdp
dGggbm8ga2V5IHRvIG9iamVjdCBzdG9yZSB3aXRob3V0IGF1dG8gaW5jcmVtZW50LiIpOworICAg
IGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmFkZCh7bmFtZTogJ0FkYW0nfSkiLCAiSURC
RGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
c3RvcmUuYWRkKHtuYW1lOiAnQWRhbSd9LCAxKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
YWRkQWRhbVN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIGFkZEFkYW1TdWNjZXNzKCkKK3sKKyAgICBkZWJ1ZygiYWRk
QWRhbVN1Y2Nlc3MoKToiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICIx
Iik7Cit9CisKK2Z1bmN0aW9uIHRlc3RMb25nS2V5UGF0aCgpCit7CisgICAgZGVidWcoInRlc3RM
b25nS2V5UGF0aCgpOiIpOworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFu
c2FjdGlvbignU3RvcmVXaXRoTG9uZ0tleVBhdGgnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRF
KSIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0
cmFucy5vbmNvbXBsZXRlID0gZmluaXNoSlNUZXN0OworCisgICAgc3RvcmUgPSBldmFsQW5kTG9n
KCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdTdG9yZVdpdGhMb25nS2V5UGF0aCcpIik7Cisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7Zm9vOiAnYmFyJ30pIik7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7Zm9vOiAnYmFyJywgYToge319KSIpOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJzdG9yZS5hZGQoe2ZvbzogJ2JhcicsIGE6IHtiOiB7fX19KSIpOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJzdG9yZS5hZGQoe2ZvbzogJ2JhcicsIGE6IHtiOiB7Yzoge319fX0pIik7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgY3Vyc29yUmVx
dWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLm9wZW5DdXJzb3IoKSIpOworICAgIGN1cnNvclJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIGV2YWxBbmRMb2coImV4
cGVjdGVkID0gbnVsbCIpOworICAgIGV2YWxBbmRMb2coImNvdW50ID0gMCIpOworICAgIGN1cnNv
clJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICBjdXJzb3IgPSBjdXJz
b3JSZXF1ZXN0LnJlc3VsdDsKKyAgICAgICAgaWYgKCFjdXJzb3IpIHsKKyAgICAgICAgICAgIHNo
b3VsZEJlKCJjb3VudCIsICI0Iik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKGV4cGVjdGVkID09PSBudWxsKSB7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJl
eHBlY3RlZCA9IGN1cnNvci52YWx1ZS5hLmIuYy5pZCArIDEiKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuZm9vIiwgIidiYXInIik7CisgICAg
ICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmEuYi5jLmlkIiwgImV4cGVjdGVkIik7Cisg
ICAgICAgICAgICBldmFsQW5kTG9nKCJleHBlY3RlZCA9IGN1cnNvci52YWx1ZS5hLmIuYy5pZCAr
IDEiKTsKKyAgICAgICAgfQorICAgICAgICBjb3VudCsrOworICAgICAgICBjdXJzb3IuY29udGlu
dWUoKTsKKyAgICB9OworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVj
dHN0b3JlLWNsZWFyLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L29iamVjdHN0b3JlLWNsZWFyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5NDdjNmM3MjQxZTdhMjQ1OTZkZWZm
YmU1YmViZTI0ODZiM2FiNGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3RvcmUtY2xlYXIuanMKQEAgLTAsMCArMSwxMDIg
QEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMo
J3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyB3ZWJraXRJ
REJPYmplY3RTdG9yZS5jbGVhcigpLiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1v
dmVWZW5kb3JQcmVmaXhlcygpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
b3Blbignb2JqZWN0c3RvcmUtY2xlYXInKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc3Rh
cnRTZXRWZXJzaW9uOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworfQorCitmdW5jdGlvbiBzdGFydFNldFZlcnNpb24oKQoreworICAgIGRiID0gZXZhbEFu
ZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZGVsZXRlRXhpc3Rpbmc7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKK3sKKyAgICBzZWxm
LnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAg
c2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworCisgICAgZGVsZXRlQWxsT2JqZWN0U3Rv
cmVzKGRiKTsKKworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKKworICAgIHNlbGYuaW5kZXggPSBldmFsQW5k
TG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhOYW1lJywgJycpIik7CisgICAgc2hvdWxkQmVU
cnVlKCJzdG9yZS5pbmRleE5hbWVzLmNvbnRhaW5zKCdpbmRleE5hbWUnKSIpOworCisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCgndmFsdWUnLCAna2V5JykiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZVNlY29uZE9iamVjdFN0b3JlQW5kQWRkVmFsdWU7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IGNyZWF0ZVNlY29uZE9iamVjdFN0b3JlQW5kQWRkVmFsdWUoKQoreworICAgIG90aGVyU3RvcmUg
PSBldmFsQW5kTG9nKCJvdGhlclN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ290aGVyU3Rv
cmVOYW1lJywgbnVsbCkiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJvdGhlclN0b3Jl
LmFkZCgndmFsdWUnLCAna2V5JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFyT2Jq
ZWN0U3RvcmU7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Cit9CisKK2Z1bmN0aW9uIGNsZWFyT2JqZWN0U3RvcmUoKQoreworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJzdG9yZS5jbGVhcigpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhclN1
Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIGNsZWFyU3VjY2VzcygpCit7CisgICAgc2hvdWxkQmVVbmRlZmluZWQoImV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5v
cGVuQ3Vyc29yKCkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5DdXJzb3JTdWNjZXNz
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiBvcGVuQ3Vyc29yU3VjY2VzcygpCit7CisgICAgc2hvdWxkQmVOdWxsKCJldmVudC50
YXJnZXQucmVzdWx0Iik7CisKKyAgICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUu
aW5kZXgoJ2luZGV4TmFtZScpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4Lm9w
ZW5LZXlDdXJzb3IoKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbktleUN1cnNvclN1
Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIG9wZW5LZXlDdXJzb3JTdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygib3Blbktl
eUN1cnNvclN1Y2Nlc3MoKToiKTsKKyAgICBzaG91bGRCZU51bGwoImV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gc2V0VmVyc2lvbkNvbXBsZXRlOworfQorCitm
dW5jdGlvbiBzZXRWZXJzaW9uQ29tcGxldGUoKQoreworICAgIHRyYW5zYWN0aW9uID0gZXZhbEFu
ZExvZygiZGIudHJhbnNhY3Rpb24oWydvdGhlclN0b3JlTmFtZSddKSIpOworICAgIHRyYW5zYWN0
aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB2YXIgb3RoZXJTdG9y
ZSA9IGV2YWxBbmRMb2coIm90aGVyU3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnb3Ro
ZXJTdG9yZU5hbWUnKSIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIm90aGVyU3RvcmUu
Z2V0KCdrZXknKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0U3VjY2VzczsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
Z2V0U3VjY2VzcygpCit7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQu
cmVzdWx0IiwgInZhbHVlIik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vYmplY3RzdG9yZS1jb3VudC5qcyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vYmplY3RzdG9yZS1jb3VudC5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42OWRhZTE3NjU2NDE2ODNhNTBkOTZiY2IxNTEwYzI4NWYyMzk1MmY5Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0
b3JlLWNvdW50LmpzCkBAIC0wLDAgKzEsMTQ0IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7
CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRp
b24oIlRlc3QgSW5kZXhlZERCJ3MgSURCT2JqZWN0U3RvcmUuY291bnQoKS4iKTsKKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ29iamVjdHN0b3JlLWNvdW50JykiKTsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0
VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwcmVwYXJl
RGF0YWJhc2U7CisgICAgfTsKK30KKworZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKCkKK3sKKyAg
ICBkZWJ1ZygiIik7CisgICAgZGVidWcoInByZXBhcmluZyBkYXRhYmFzZSIpOworICAgIHNlbGYu
dHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBz
aG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9y
ZXMoZGIpOworCisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVj
dFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOworCisgICAgZGVidWcoImFkZGluZyAwIC4uLiA5
OSIpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAgcmVxdWVz
dCA9IHN0b3JlLmFkZChpLCBpKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7CisgICAgfQorICAgIHRyYW5zLm9uY29tcGxldGUgPSB2ZXJpZnlDb3Vu
dDsKK30KKworZnVuY3Rpb24gdmVyaWZ5Q291bnQoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBk
ZWJ1ZygidmVyaWZ5aW5nIGNvdW50IHdpdGhvdXQgcmFuZ2UiKTsKKyAgICB0cmFucyA9IGV2YWxB
bmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlTmFtZScsIElEQlRyYW5zYWN0aW9u
LlJFQURfT05MWSkiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9IG51bGwiKTsKKyAgICB0
cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21w
bGV0ZSA9IHZlcmlmeUNvdW50V2l0aFJhbmdlOworCisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJz
dG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworICAgIHNob3VsZEJlVHJ1
ZSgic3RvcmUgIT0gbnVsbCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBzdG9yZS5jb3VudCgpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAg
IHNob3VsZEJlVHJ1ZSgidHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXInIik7CisgICAg
ICAgICBzaG91bGRCZSgicmVxdWVzdC5yZXN1bHQiLCAiMTAwIik7CisgICAgICAgICAvLyBsZXQg
dGhlIHRyYW5zYWN0aW9uIGNvbXBsZXRlCisgICAgfTsKK30KKworZnVuY3Rpb24gdmVyaWZ5Q291
bnRXaXRoUmFuZ2UoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidmVyaWZ5aW5nIGNv
dW50IHdpdGggcmFuZ2UiKTsKKyAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJh
bnNhY3Rpb24oJ3N0b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkiKTsKKyAgICBz
aG91bGRCZVRydWUoInRyYW5zICE9IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBl
Y3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHZlcmlmeUNvdW50V2l0
aEtleTsKKworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9y
ZSgnc3RvcmVOYW1lJykiKTsKKyAgICBzaG91bGRCZVRydWUoInN0b3JlICE9IG51bGwiKTsKKwor
ICAgIHZhciB0ZXN0cyA9IFsKKyAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiBmYWxzZSwg
dXBwZXI6IDk5LCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogMTAwIH0sCisgICAgICAgIHsg
bG93ZXI6IDAsIGxvd2VyT3BlbjogdHJ1ZSwgdXBwZXI6IDk5LCB1cHBlck9wZW46IGZhbHNlLCBl
eHBlY3RlZDogOTkgfSwKKyAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBw
ZXI6IDk5LCB1cHBlck9wZW46IHRydWUsIGV4cGVjdGVkOiA5OSB9LAorICAgICAgICB7IGxvd2Vy
OiAwLCBsb3dlck9wZW46IHRydWUsIHVwcGVyOiA5OSwgdXBwZXJPcGVuOiB0cnVlLCBleHBlY3Rl
ZDogOTggfSwKKyAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDEw
MCwgdXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDEwMCB9LAorICAgICAgICB7IGxvd2VyOiAw
LCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogMTAwLCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3Rl
ZDogMTAwIH0sCisgICAgICAgIHsgbG93ZXI6IDEwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjog
MTAwLCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogOTAgfSwKKyAgICAgICAgeyBsb3dlcjog
MCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDAsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVk
OiAxIH0sCisgICAgICAgIHsgbG93ZXI6IDUwMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDUw
MCwgdXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDAgfQorICAgIF07CisKKyAgICBmdW5jdGlv
biBuZXh0VGVzdCgpIHsKKyAgICAgICAgZGVidWcoIiIpOworICAgICAgICBldmFsQW5kTG9nKCJ0
ZXN0ID0gIiArIEpTT04uc3RyaW5naWZ5KHRlc3RzLnNoaWZ0KCkpKTsKKyAgICAgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdG9yZS5jb3VudChJREJLZXlSYW5nZS5ib3VuZCh0
ZXN0Lmxvd2VyLCB0ZXN0LnVwcGVyLCB0ZXN0Lmxvd2VyT3BlbiwgdGVzdC51cHBlck9wZW4pKSIp
OworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICBzaG91
bGRCZVRydWUoInR5cGVvZiByZXF1ZXN0LnJlc3VsdCA9PSAnbnVtYmVyJyIpOworICAgICAgICAg
ICAgIHNob3VsZEJlKCJyZXF1ZXN0LnJlc3VsdCIsIFN0cmluZyh0ZXN0LmV4cGVjdGVkKSk7CisK
KyAgICAgICAgICAgICBpZiAodGVzdHMubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgIG5leHRU
ZXN0KCk7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIC8vIG90aGVyd2lzZSBsZXQgdGhl
IHRyYW5zYWN0aW9uIGNvbXBsZXRlCisgICAgICAgIH07CisgICAgfQorCisgICAgbmV4dFRlc3Qo
KTsKK30KKworZnVuY3Rpb24gdmVyaWZ5Q291bnRXaXRoS2V5KCkKK3sKKyAgICBkZWJ1ZygiIik7
CisgICAgZGVidWcoInZlcmlmeWluZyBjb3VudCB3aXRoIGtleSIpOworICAgIHRyYW5zID0gZXZh
bEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rp
b24uUkVBRF9PTkxZKSIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT0gbnVsbCIpOworICAg
IHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNv
bXBsZXRlID0gZmluaXNoSlNUZXN0OworCisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9
IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworICAgIHNob3VsZEJlVHJ1ZSgic3Rv
cmUgIT0gbnVsbCIpOworCisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuY291bnQo
TmFOKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworICAgIGV2YWxBbmRFeHBl
Y3RFeGNlcHRpb24oInN0b3JlLmNvdW50KHt9KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRB
X0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmNvdW50KC9yZWdleC8p
IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICB2YXIgdGVzdHMgPSBb
CisgICAgICAgIHsga2V5OiAwLCBleHBlY3RlZDogMSB9LAorICAgICAgICB7IGtleTogMTAwLCBl
eHBlY3RlZDogMCB9LAorICAgICAgICB7IGtleTogbnVsbCwgZXhwZWN0ZWQ6IDEwMCB9CisgICAg
XTsKKworICAgIGZ1bmN0aW9uIG5leHRUZXN0KCkgeworICAgICAgICBkZWJ1ZygiIik7CisgICAg
ICAgIGV2YWxBbmRMb2coInRlc3QgPSAiICsgSlNPTi5zdHJpbmdpZnkodGVzdHMuc2hpZnQoKSkp
OworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHN0b3JlLmNvdW50KHRl
c3Qua2V5KSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIHNob3VsZEJlVHJ1ZSgidHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXInIik7Cisg
ICAgICAgICAgICBzaG91bGRCZSgicmVxdWVzdC5yZXN1bHQiLCBTdHJpbmcodGVzdC5leHBlY3Rl
ZCkpOworICAgICAgICAgICAgIGlmICh0ZXN0cy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAg
bmV4dFRlc3QoKTsKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIGxl
dCB0aGUgdHJhbnNhY3Rpb24gY29tcGxldGUKKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBuZXh0
VGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3Jl
LWN1cnNvci5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vYmpl
Y3RzdG9yZS1jdXJzb3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTJjMDJhYzYxYTYzNGZhM2NjZmU0YWQyNGUw
NDFhOTg3NDZhYjI4YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9vYmplY3RzdG9yZS1jdXJzb3IuanMKQEAgLTAsMCArMSwyMjYgQEAK
K2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3No
YXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBvYmplY3RTdG9y
ZS5vcGVuQ3Vyc29yICsgdGhlIGN1cnNvciBpdCBwcm9kdWNlcyBpbiBkZXB0aC4iKTsKKworLy8g
SW4gb3JkZXIgb2YgaG93IGl0IHNob3VsZCBiZSBzb3J0ZWQgYnkgSW5kZXhlZERCLgorc2VsZi50
ZXN0RGF0YSA9IFsKKyAgICAyLjcxODI4MTgyODQ1OSwKKyAgICAzLAorICAgIDMuMTQxNTkyNjUs
CisgICAgMTAsCisgICAgLy8gRklYTUU6IERhdGVzLgorICAgICJBIGJpZ2dlciBzdHJpbmciLAor
ICAgICJUaGUgYmlnZ2VzdCIsCisgICAgImEgbG93IHN0cmluZyIKK107CisKK2Z1bmN0aW9uIG9w
ZW5EYXRhYmFzZSgpCit7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVu
KCdvYmplY3RzdG9yZS1jdXJzb3InKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVy
c2lvbjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30K
KworZnVuY3Rpb24gc2V0VmVyc2lvbigpCit7CisgICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRi
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRi
LnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRl
bGV0ZUV4aXN0aW5nOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworfQorCitmdW5jdGlvbiBkZWxldGVFeGlzdGluZygpCit7CisgICAgc2VsZi50cmFucyA9
IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJl
VHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFi
b3J0Q2FsbGJhY2s7CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgc2Vs
Zi5vYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzb21lT2Jq
ZWN0U3RvcmUnKSIpOworICAgIHNlbGYubmV4dFRvQWRkID0gMDsKKyAgICBhZGREYXRhKCk7Cit9
CisKK2Z1bmN0aW9uIGFkZERhdGEoKQoreworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZS5hZGQoJycsIHRlc3REYXRhW25leHRUb0FkZF0pIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSArK3NlbGYubmV4dFRvQWRkIDwgdGVzdERhdGEubGVuZ3RoID8gYWRkRGF0YSA6IHNj
aGVkdWxlVGVzdHM7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Cit9CisKK2Z1bmN0aW9uIHNjaGVkdWxlVGVzdHMoKQoreworICAgIGRlYnVnKCJTY2hlZHVs
aW5nIHRlc3RzLi4uIik7CisgICAgc2VsZi5zY2hlZHVsZWRUZXN0cyA9IFtdOworICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgdGVzdERhdGEubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgLyogbGVmdCBi
b3VuZCwgaXMgb3BlbiwgcmlnaHQgYm91bmQsIGlzIG9wZW4sIGFzY2VuZGluZyAqLworICAgICAg
ICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCB0cnVlLCBudWxsLCBudWxsLCB0cnVlXSk7Cisg
ICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBudWxsLCBudWxsLCB0cnVl
XSk7CisgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW251bGwsIG51bGwsIGksIHRydWUs
IHRydWVdKTsKKyAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbbnVsbCwgbnVsbCwgaSwg
ZmFsc2UsIHRydWVdKTsKKyAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwg
bnVsbCwgbnVsbCwgZmFsc2VdKTsKKyAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwg
ZmFsc2UsIG51bGwsIG51bGwsIGZhbHNlXSk7CisgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hp
ZnQoW251bGwsIG51bGwsIGksIHRydWUsIGZhbHNlXSk7CisgICAgICAgIHNjaGVkdWxlZFRlc3Rz
LnVuc2hpZnQoW251bGwsIG51bGwsIGksIGZhbHNlLCBmYWxzZV0pOworICAgICAgICBmb3IgKHZh
ciBqID0gNjsgaiA8IHRlc3REYXRhLmxlbmd0aDsgKytqKSB7CisgICAgICAgICAgICBzY2hlZHVs
ZWRUZXN0cy51bnNoaWZ0KFtpLCB0cnVlLCBqLCB0cnVlLCB0cnVlXSk7CisgICAgICAgICAgICBz
Y2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCB0cnVlLCBqLCBmYWxzZSwgdHJ1ZV0pOworICAgICAg
ICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgZmFsc2UsIGosIHRydWUsIHRydWVdKTsK
KyAgICAgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBqLCBmYWxzZSwg
dHJ1ZV0pOworICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwgaiwg
dHJ1ZSwgZmFsc2VdKTsKKyAgICAgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIHRy
dWUsIGosIGZhbHNlLCBmYWxzZV0pOworICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlm
dChbaSwgZmFsc2UsIGosIHRydWUsIGZhbHNlXSk7CisgICAgICAgICAgICBzY2hlZHVsZWRUZXN0
cy51bnNoaWZ0KFtpLCBmYWxzZSwgaiwgZmFsc2UsIGZhbHNlXSk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBkZWJ1ZygiUnVubmluZyB0ZXN0cy4uLiIpOworICAgIHJ1bk5leHRUZXN0KCk7Cit9
CisKK2Z1bmN0aW9uIHJ1bk5leHRUZXN0KCkKK3sKKyAgICBpZiAoIXNjaGVkdWxlZFRlc3RzLmxl
bmd0aCkgeworICAgICAgICB0ZXN0TnVsbEtleVJhbmdlKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICB2YXIgdGVzdCA9IHNjaGVkdWxlZFRlc3RzLnBvcCgpOworICAgIHNlbGYubG93
ZXIgPSB0ZXN0WzBdOworICAgIHNlbGYubG93ZXJJc09wZW4gPSB0ZXN0WzFdOworICAgIHNlbGYu
dXBwZXIgPSB0ZXN0WzJdOworICAgIHNlbGYudXBwZXJJc09wZW4gPSB0ZXN0WzNdOworICAgIHNl
bGYuYXNjZW5kaW5nID0gdGVzdFs0XTsKKworICAgIHN0ciA9ICJOZXh0IHRlc3Q6ICI7CisgICAg
aWYgKGxvd2VyICE9PSBudWxsKSB7CisgICAgICAgIHN0ciArPSAibG93ZXIgIjsKKyAgICAgICAg
aWYgKGxvd2VySXNPcGVuKQorICAgICAgICAgICAgc3RyICs9ICJvcGVuICI7CisgICAgICAgIHN0
ciArPSAiYm91bmQgaXMgIiArIGxvd2VyICsgIjsgIjsKKyAgICB9CisgICAgaWYgKHVwcGVyICE9
PSBudWxsKSB7CisgICAgICAgIHN0ciArPSAidXBwZXIgIjsKKyAgICAgICAgaWYgKHVwcGVySXNP
cGVuKQorICAgICAgICAgICAgc3RyICs9ICJvcGVuICI7CisgICAgICAgIHN0ciArPSAiYm91bmQg
aXMgIiArIHVwcGVyICsgIjsgIjsKKyAgICB9CisgICAgaWYgKGFzY2VuZGluZykKKyAgICAgICAg
c3RyICs9ICJzb3J0ZWQgYXNjZW5kaW5nLiI7CisgICAgZWxzZQorICAgICAgICBzdHIgKz0gInNv
cnRlZCBkZXNjZW5kaW5nLiI7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoc3RyKTsKKwor
ICAgIGlmIChhc2NlbmRpbmcpIHsKKyAgICAgICAgaWYgKGxvd2VyICE9PSBudWxsKSB7CisgICAg
ICAgICAgICBpZiAoIWxvd2VySXNPcGVuKQorICAgICAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWRJ
bmRleCA9IGxvd2VyOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNlbGYuZXhw
ZWN0ZWRJbmRleCA9IGxvd2VyKzE7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgc2VsZi5l
eHBlY3RlZEluZGV4ID0gMDsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAodXBwZXIgIT09IG51
bGwpIHsKKyAgICAgICAgICAgIGlmICghdXBwZXJJc09wZW4pCisgICAgICAgICAgICAgICAgc2Vs
Zi5leHBlY3RlZEluZGV4ID0gdXBwZXI7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgc2VsZi5leHBlY3RlZEluZGV4ID0gdXBwZXItMTsKKyAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSB0ZXN0RGF0YS5sZW5ndGgtMTsKKyAgICB9CisgICAg
dGVzdFdpdGhpbkJvdW5kcygpOworCisgICAgaWYgKHRlc3REYXRhW2xvd2VyXSA9PT0gdGVzdERh
dGFbdXBwZXJdICYmIChsb3dlcklzT3BlbiB8fCB1cHBlcklzT3BlbikpIHsKKyAgICAgICAgZGVi
dWcoIlNraXBwaW5nIGlsbGVnYWwga2V5IHJhbmdlLiIpOworICAgICAgICBydW5OZXh0VGVzdCgp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdmFyIGtleVJhbmdlOworICAgIGlmIChs
b3dlciAhPT0gbnVsbCAmJiB1cHBlciAhPT0gbnVsbCkKKyAgICAgICAga2V5UmFuZ2UgPSBJREJL
ZXlSYW5nZS5ib3VuZCh0ZXN0RGF0YVtsb3dlcl0sIHRlc3REYXRhW3VwcGVyXSwgbG93ZXJJc09w
ZW4sIHVwcGVySXNPcGVuKTsKKyAgICBlbHNlIGlmIChsb3dlciAhPT0gbnVsbCkKKyAgICAgICAg
a2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKHRlc3REYXRhW2xvd2VyXSwgbG93ZXJJ
c09wZW4pOworICAgIGVsc2UKKyAgICAgICAga2V5UmFuZ2UgPSBJREJLZXlSYW5nZS51cHBlckJv
dW5kKHRlc3REYXRhW3VwcGVyXSwgdXBwZXJJc09wZW4pOworCisgICAgdmFyIHJlcXVlc3QgPSBv
YmplY3RTdG9yZS5vcGVuQ3Vyc29yKGtleVJhbmdlLCBhc2NlbmRpbmcgPyBJREJDdXJzb3IuTkVY
VCA6IElEQkN1cnNvci5QUkVWKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvckl0ZXJh
dGlvbjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30K
KworZnVuY3Rpb24gdGVzdFdpdGhpbkJvdW5kcygpCit7CisgICAgaWYgKGV4cGVjdGVkSW5kZXgg
PCAwIHx8IHRlc3REYXRhLmxlbmd0aCA8PSBleHBlY3RlZEluZGV4KQorICAgICAgICBzZWxmLmV4
cGVjdGVkSW5kZXggPSBudWxsOworICAgIGlmIChsb3dlciAhPT0gbnVsbCAmJiBleHBlY3RlZElu
ZGV4IDwgbG93ZXIpCisgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IG51bGw7CisgICAgaWYg
KHVwcGVyICE9PSBudWxsICYmIHVwcGVyIDwgZXhwZWN0ZWRJbmRleCkKKyAgICAgICAgc2VsZi5l
eHBlY3RlZEluZGV4ID0gbnVsbDsKKyAgICBpZiAobG93ZXIgIT09IG51bGwgJiYgbG93ZXJJc09w
ZW4gJiYgZXhwZWN0ZWRJbmRleCA8PSBsb3dlcikKKyAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4
ID0gbnVsbDsKKyAgICBpZiAodXBwZXIgIT09IG51bGwgJiYgdXBwZXJJc09wZW4gJiYgdXBwZXIg
PD0gZXhwZWN0ZWRJbmRleCkKKyAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gbnVsbDsKK30K
KworZnVuY3Rpb24gY3Vyc29ySXRlcmF0aW9uKCkKK3sKKyAgICBpZiAoZXhwZWN0ZWRJbmRleCA9
PT0gbnVsbCkgeworICAgICAgICBzaG91bGRCZU51bGwoImV2ZW50LnRhcmdldC5yZXN1bHQiKTsK
KyAgICAgICAgcnVuTmV4dFRlc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAo
ZXZlbnQudGFyZ2V0LnJlc3VsdCA9PT0gbnVsbCkgeworICAgICAgICB0ZXN0RmFpbGVkKCJldmVu
dC50YXJnZXQucmVzdWx0IHNob3VsZCBub3QgYmUgbnVsbC4iKTsKKyAgICAgICAgcnVuTmV4dFRl
c3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNob3VsZEJlKCJldmVudC50YXJn
ZXQucmVzdWx0LmtleSIsICJ0ZXN0RGF0YVsiICsgZXhwZWN0ZWRJbmRleCArICJdIik7CisgICAg
c2VsZi5leHBlY3RlZEluZGV4ID0gYXNjZW5kaW5nID8gZXhwZWN0ZWRJbmRleCsxIDogZXhwZWN0
ZWRJbmRleC0xOworICAgIHRlc3RXaXRoaW5Cb3VuZHMoKTsKKworICAgIGV2ZW50LnRhcmdldC5y
ZXN1bHQuY29udGludWUoKTsKK30KKworc2VsZi5udWxsS2V5UmFuZ2VTdGVwID0gMDsKK2Z1bmN0
aW9uIHRlc3ROdWxsS2V5UmFuZ2UoKQoreworICAgIHNlbGYubG93ZXIgPSAwOworICAgIHNlbGYu
bG93ZXJJc09wZW4gPSBmYWxzZTsKKyAgICBzZWxmLnVwcGVyID0gdGVzdERhdGEubGVuZ3RoLTE7
CisgICAgc2VsZi51cHBlcklzT3BlbiA9IGZhbHNlOworCisgICAgc3RyID0gIk5leHQgdGVzdDog
bnVsbCBrZXkgcGF0aCAiOworICAgIGlmIChzZWxmLm51bGxLZXlSYW5nZVN0ZXAgPT0gMCkgewor
ICAgICAgICBzdHIgKz0gInNvcnRlZCBhc2NlbmRpbmcuIjsKKyAgICAgICAgc2VsZi5hc2NlbmRp
bmcgPSB0cnVlOworICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSBsb3dlcjsKKyAgICAgICAg
c2VsZi5udWxsS2V5UmFuZ2VTdGVwID0gMTsKKyAgICB9IGVsc2UgaWYgKHNlbGYubnVsbEtleVJh
bmdlU3RlcCA9PSAxKSB7CisgICAgICAgIHN0ciArPSAic29ydGVkIGRlc2NlbmRpbmcuIjsKKyAg
ICAgICAgc2VsZi5hc2NlbmRpbmcgPSBmYWxzZTsKKyAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4
ID0gdXBwZXI7CisgICAgICAgIHNlbGYubnVsbEtleVJhbmdlU3RlcCA9IDI7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBkZWJ1ZygiIik7CisgICAgZGVidWcoc3RyKTsKKworICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0
U3RvcmUub3BlbkN1cnNvcihudWxsLCBhc2NlbmRpbmcgPyBJREJDdXJzb3IuTkVYVCA6IElEQkN1
cnNvci5QUkVWKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvckl0ZXJhdGlvbjsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworcmVtb3Zl
VmVuZG9yUHJlZml4ZXMoKTsKK29wZW5EYXRhYmFzZSgpOyAvLyBUaGUgZmlyc3Qgc3RlcC4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vYmplY3Rz
dG9yZS1yZW1vdmVvYmplY3RzdG9yZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9vYmplY3RzdG9yZS1yZW1vdmVvYmplY3RzdG9yZS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
Mzk4NDc1MDE2YmQxMTVhOWYzZWYyMzBhMGNiYjgzY2MyZDIwYzFkCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3JlLXJl
bW92ZW9iamVjdHN0b3JlLmpzCkBAIC0wLDAgKzEsOTcgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlw
dHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNj
cmlwdGlvbigiVGVzdCBJbmRleGVkREIncyB3ZWJraXRJREJPYmplY3RTdG9yZS5kZWxldGVPYmpl
Y3RTdG9yZSgpLiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVm
aXhlcygpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbignb2JqZWN0
c3RvcmUtcmVtb3Zlb2JqZWN0c3RvcmUnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc3Rh
cnRTZXRWZXJzaW9uOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworfQorCitmdW5jdGlvbiBzdGFydFNldFZlcnNpb24oKQoreworICAgIGRiID0gZXZhbEFu
ZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZGVsZXRlRXhpc3Rpbmc7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKK3sKKyAgICBzZWxm
LnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAg
c2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworCisgICAgZGVsZXRlQWxsT2JqZWN0U3Rv
cmVzKGRiKTsKKworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKKworICAgIHNlbGYuaW5kZXggPSBldmFsQW5k
TG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhOYW1lJywgJycpIik7CisgICAgc2hvdWxkQmVU
cnVlKCJzdG9yZS5pbmRleE5hbWVzLmNvbnRhaW5zKCdpbmRleE5hbWUnKSIpOworCisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCgndmFsdWUnLCAna2V5JykiKTsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBs
ZXRlID0gZ2V0VmFsdWU7Cit9CisKK2Z1bmN0aW9uIGdldFZhbHVlKCkKK3sKKyAgICB0cmFuc2Fj
dGlvbiA9IGV2YWxBbmRMb2coImRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10pIik7CisgICAg
dHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHZhciBz
dG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3Jl
TmFtZScpIik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuZ2V0KCdrZXknKSIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkSW5kZXg7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGFkZEluZGV4KCkKK3sK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAidmFsdWUi
KTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lv
bicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVPYmplY3RTdG9yZTsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
ZGVsZXRlT2JqZWN0U3RvcmUoKQoreworICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFu
cyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBu
dWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworCisg
ICAgZXZhbEFuZExvZygiZGIuZGVsZXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAg
Y3JlYXRlT2JqZWN0U3RvcmVBZ2FpbigpOworfQorCitmdW5jdGlvbiBjcmVhdGVPYmplY3RTdG9y
ZUFnYWluKCkKK3sKKyAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVO
YW1lJywgbnVsbCkiKTsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gZ2V0VmFsdWVBZ2FpbjsKK30K
KworZnVuY3Rpb24gZ2V0VmFsdWVBZ2FpbigpCit7CisgICAgdHJhbnNhY3Rpb24gPSBldmFsQW5k
TG9nKCJkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddKSIpOworICAgIHRyYW5zYWN0aW9uLm9u
YWJvcnQgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB2YXIgc3RvcmUgPSBldmFsQW5k
TG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworCisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmdldCgna2V5JykiKTsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IHZlcmlmeU5vdEZvdW5kOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiB2ZXJpZnlOb3RGb3VuZCgpCit7Cisg
ICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAidW5kZWZpbmVkIik7CisgICAgc2hv
dWxkQmVGYWxzZSgiZXZlbnQudGFyZ2V0LnNvdXJjZS5pbmRleE5hbWVzLmNvbnRhaW5zKCdpbmRl
eE5hbWUnKSIpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvb2RkLXN0cmluZ3MuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvb2RkLXN0cmluZ3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDMxYzUwZWZmYmJmYWUy
YjY0N2M2ZTQxN2UyMzk1YWRkMjQ5ZTI0OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vZGQtc3RyaW5ncy5qcwpAQCAtMCwwICsxLDEw
MSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0
cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBvZGQgdmFs
dWUgZGF0YXR5cGVzIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclBy
ZWZpeGVzKCk7CisKKyAgICB0ZXN0RGF0YSA9IFt7IGRlc2NyaXB0aW9uOiAnbnVsbCcsICAgICAg
ICAgICAgICAgbmFtZTogJ1x1MDAwMCcgfSwKKyAgICAgICAgICAgICAgICB7IGRlc2NyaXB0aW9u
OiAnZmFpaHUnLCAgICAgICAgICAgICAgbmFtZTogJ1x1ZDgwMFx1ZGY0NicgfSwKKyAgICAgICAg
ICAgICAgICB7IGRlc2NyaXB0aW9uOiAndW5wYWlyZWQgc3Vycm9nYXRlJywgbmFtZTogJ1x1ZDgw
MCcgfSwKKyAgICAgICAgICAgICAgICB7IGRlc2NyaXB0aW9uOiAnZmZmZScsICAgICAgICAgICAg
ICAgbmFtZTogJ1x1ZmZmZScgfSwKKyAgICAgICAgICAgICAgICB7IGRlc2NyaXB0aW9uOiAnZmZm
ZicsICAgICAgICAgICAgICAgbmFtZTogJ1x1ZmZmZicgfSwKKyAgICAgICAgICAgICAgICB7IGRl
c2NyaXB0aW9uOiAnbGluZSBzZXBhcmF0b3InLCAgICAgbmFtZTogJ1x1MjAyOCcgfQorICAgIF07
CisgICAgbmV4dFRvT3BlbiA9IDA7CisgICAgb3Blbk5leHREYXRhYmFzZSgpOworfQorCitmdW5j
dGlvbiBvcGVuTmV4dERhdGFiYXNlKCkKK3sKKyAgICBkZWJ1Zygib3BlbmluZyBhIGRhdGFiYXNl
IG5hbWVkICIgKyB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5kZXNjcmlwdGlvbik7CisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKHRlc3REYXRhW25leHRUb09wZW5dLm5hbWUs
IHRlc3REYXRhW25leHRUb09wZW5dLmRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3Bl
blN1Y2Nlc3M7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxB
bmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBhZGRBS2V5OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworfQorCitmdW5jdGlvbiBhZGRBS2V5KCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9y
ZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKHRlc3REYXRhW25leHRUb09wZW5dLm5hbWUpOyIpOworICAgIGtl
eSA9IGV2YWxBbmRMb2coImtleSA9IHRlc3REYXRhW25leHRUb09wZW5dLm5hbWUiKTsKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChrZXksIGtleSk7
Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbG9zZURhdGFiYXNlOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbG9zZURh
dGFiYXNlKCkKK3sKKyAgICBldmFsQW5kTG9nKCJkYi5jbG9zZSgpIik7CisgICAgZGVidWcoIiIp
OworICAgIGlmICgrK25leHRUb09wZW4gPCB0ZXN0RGF0YS5sZW5ndGgpIHsKKyAgICAgICAgb3Bl
bk5leHREYXRhYmFzZSgpOworICAgIH0gZWxzZSB7CisgICAgICAgIG5leHRUb09wZW4gPSAwOwor
ICAgICAgICB2ZXJpZnlOZXh0RGF0YWJhc2UoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHZlcmlm
eU5leHREYXRhYmFzZSgpCit7CisgICAgZGVidWcoInJlb3BlbmluZyBhIGRhdGFiYXNlIG5hbWVk
ICIgKyB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5kZXNjcmlwdGlvbik7CisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKHRlc3REYXRhW25leHRUb09wZW5dLm5hbWUsIHRlc3RE
YXRhW25leHRUb09wZW5dLmRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nl
c3MyOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzczIoKQoreworICAgIGRiID0gZXZhbEFuZExv
ZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldEFLZXk7
Cit9CisKK2Z1bmN0aW9uIGdldEFLZXkoKQoreworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJh
bnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKHRlc3REYXRhW25leHRUb09wZW5dLm5h
bWUpOyIpOworICAgIGtleSA9IGV2YWxBbmRMb2coImtleSA9IHRlc3REYXRhW25leHRUb09wZW5d
Lm5hbWUiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3Jl
Lm9wZW5DdXJzb3IoKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5DdXJzb3JTdWNjZXNzOworfQor
CitmdW5jdGlvbiBvcGVuQ3Vyc29yU3VjY2VzcygpCit7CisgICAgY3Vyc29yID0gZXZhbEFuZExv
ZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICBzaG91bGRCZSgiY3Vyc29y
LmtleSIsICJ0ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1lIik7CisgICAgc2hvdWxkQmUoImN1cnNv
ci52YWx1ZSIsICJ0ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1lIik7CisgICAgaWYgKCsrbmV4dFRv
T3BlbiA8IHRlc3REYXRhLmxlbmd0aCkgeworICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgIHZl
cmlmeU5leHREYXRhYmFzZSgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgIH0KK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuLWNsb3Nl
LXZlcnNpb24uanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Bl
bi1jbG9zZS12ZXJzaW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyM2UxZDhiOTI5NTJmODJmODVkNTlkYTJh
MzI1ZTAxYTExMTMzM2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvb3Blbi1jbG9zZS12ZXJzaW9uLmpzCkBAIC0wLDAgKzEsMjgzIEBA
CitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdz
aGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgaW50ZXJsZWF2ZWQgb3Blbi9jbG9z
ZS9zZXRWZXJzaW9uIGNhbGxzIGluIHZhcmlvdXMgcGVybXV0YXRpb25zIik7CisKK2Z1bmN0aW9u
IENvbm5lY3Rpb24oaWQpIHsKKyAgICBpZCA9IFN0cmluZyhpZCk7CisgICAgdmFyIHRoYXQgPSB0
aGlzOworICAgIHRoaXMub3BlbiA9IGZ1bmN0aW9uKG9wdHMpIHsKKyAgICAgICAgc2VsZi5zdGVw
cy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLm9wZW4nIikpOworICAgICAgICB2YXIgcmVx
ID0gaW5kZXhlZERCLm9wZW4oc2VsZi5kYm5hbWUpOworICAgICAgICByZXEub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24g
KGUpIHsKKyAgICAgICAgICAgIHRoYXQuaGFuZGxlID0gZS50YXJnZXQucmVzdWx0OworICAgICAg
ICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLm9wZW4ub25zdWNj
ZXNzJyIpKTsKKyAgICAgICAgICAgIHRoYXQuaGFuZGxlLm9udmVyc2lvbmNoYW5nZSA9IGZ1bmN0
aW9uKGUpIHsKKyAgICAgICAgICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIg
KyBpZCArICIub252ZXJzaW9uY2hhbmdlJyIpKTsKKyAgICAgICAgICAgICAgICBpZiAob3B0cyAm
JiBvcHRzLm9udmVyc2lvbikgeyBvcHRzLm9udmVyc2lvbi5jYWxsKHRoYXQpOyB9CisgICAgICAg
ICAgICB9OworICAgICAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5vbnN1Y2Nlc3MpIHsgb3B0cy5v
bnN1Y2Nlc3MuY2FsbCh0aGF0KTsgfQorICAgICAgICB9OworICAgIH07CisKKyAgICB0aGlzLmNs
b3NlID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCIn
IiArIGlkICsgIi5jbG9zZSciKSk7CisgICAgICAgIHRoaXMuaGFuZGxlLmNsb3NlKCk7CisgICAg
fTsKKworICAgIHRoaXMuc2V0VmVyc2lvbiA9IGZ1bmN0aW9uKG9wdHMpIHsKKyAgICAgICAgc2Vs
Zi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLnNldFZlcnNpb24nIikpOworICAg
ICAgICB2YXIgcmVxID0gdGhpcy5oYW5kbGUuc2V0VmVyc2lvbihTdHJpbmcoc2VsZi52ZXIrKykp
OworICAgICAgICByZXEub25hYm9ydCA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgICAgICBzZWxm
LnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIuc2V0VmVyc2lvbi5vbmFib3J0JyIp
KTsKKyAgICAgICAgICAgIGlmIChvcHRzICYmIG9wdHMub25hYm9ydCkgeyBvcHRzLm9uYWJvcnQu
Y2FsbCh0aGF0KTsgfQorICAgICAgICB9OworICAgICAgICByZXEub25ibG9ja2VkID0gZnVuY3Rp
b24gKGUpIHsKKyAgICAgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlk
ICsgIi5zZXRWZXJzaW9uLm9uYmxvY2tlZCciKSk7CisgICAgICAgICAgICBpZiAob3B0cyAmJiBv
cHRzLm9uYmxvY2tlZCkgeyBvcHRzLm9uYmxvY2tlZC5jYWxsKHRoYXQpOyB9CisgICAgICAgIH07
CisgICAgICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZSkgeworICAgICAgICAgICAgc2Vs
Zi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLnNldFZlcnNpb24ub25zdWNjZXNz
JyIpKTsKKyAgICAgICAgICAgIGlmICh0aGF0LmhhbmRsZS5vYmplY3RTdG9yZU5hbWVzLmNvbnRh
aW5zKCJ0ZXN0LXN0b3JlIiArIHNlbGYudmVyKSkgeworICAgICAgICAgICAgICAgIHRoYXQuaGFu
ZGxlLmRlbGV0ZU9iamVjdFN0b3JlKCJ0ZXN0LXN0b3JlIiArIHNlbGYudmVyKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIHZhciBzdG9yZSA9IHRoYXQuaGFuZGxlLmNyZWF0ZU9iamVjdFN0
b3JlKCJ0ZXN0LXN0b3JlIiArIHNlbGYudmVyKTsKKyAgICAgICAgICAgIHZhciBjb3VudCA9IDA7
CisgICAgICAgICAgICBkb19hc3luY19wdXRzKCk7IC8vIEtlZXAgdGhpcyB0cmFuc2FjdGlvbiBy
dW5uaW5nIGZvciBhIHdoaWxlCisgICAgICAgICAgICBmdW5jdGlvbiBkb19hc3luY19wdXRzKCkg
eworICAgICAgICAgICAgICAgIHZhciByZXEgPSBzdG9yZS5wdXQoY291bnQsIGNvdW50KTsKKyAg
ICAgICAgICAgICAgICByZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAg
ICAgICAgICAgICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZSkgeworICAgICAgICAgICAg
ICAgICAgICBpZiAoKytjb3VudCA8IDEwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBkb19h
c3luY19wdXRzKCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIuc2V0VmVy
c2lvbi50cmFuc2FjdGlvbi1jb21wbGV0ZSciKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAob3B0cyAmJiBvcHRzLm9uc3VjY2VzcykgeyBvcHRzLm9uc3VjY2Vzcy5jYWxsKHRoYXQpOyB9
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAg
fQorICAgICAgICB9OworICAgICAgICByZXEub25lcnJvciA9IGZ1bmN0aW9uIChlKSB7CisgICAg
ICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIuc2V0VmVyc2lv
bi5vbmVycm9yJyIpKTsKKyAgICAgICAgICAgIGlmIChvcHRzICYmIG9wdHMub25lcnJvcikgeyBv
cHRzLm9uZXJyb3IuY2FsbCh0aGF0KTsgfQorICAgICAgICB9OworICAgIH07Cit9CisKKy8vIHJ1
biBhIHNlcmllcyBvZiBzdGVwcyB0aGF0IHRha2UgYSBjb250aW51YXRpb24gZnVuY3Rpb24KK2Z1
bmN0aW9uIHJ1blN0ZXBzKGNvbW1hbmRzKSB7CisgICAgaWYgKGNvbW1hbmRzLmxlbmd0aCkgewor
ICAgICAgICB2YXIgY29tbWFuZCA9IGNvbW1hbmRzLnNoaWZ0KCk7CisgICAgICAgIGNvbW1hbmQo
ZnVuY3Rpb24oKSB7IHJ1blN0ZXBzKGNvbW1hbmRzKTsgfSk7CisgICAgfQorfQorCitmdW5jdGlv
biB0ZXN0KCkgeworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgdGVzdDEoKTsKK30K
KworZnVuY3Rpb24gdGVzdDEoKSB7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJURVNUOiBz
ZXRWZXJzaW9uIGJsb2NrZWQgb24gb3BlbiBoYW5kbGVzIik7CisgICAgZXZhbEFuZExvZygic2Vs
Zi5kYm5hbWUgPSAndGVzdDEnOyBzZWxmLnZlciA9IDE7IHNlbGYuc3RlcHMgPSBbXSIpOworICAg
IHZhciBoMSA9IG5ldyBDb25uZWN0aW9uKCJoMSIpOworICAgIHZhciBoMiA9IG5ldyBDb25uZWN0
aW9uKCJoMiIpOworICAgIHJ1blN0ZXBzKFtmdW5jdGlvbihkb05leHQpIHsgaDEub3Blbih7b25z
dWNjZXNzOiBkb05leHR9KTsgfSwKKyAgICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBoMi5vcGVu
KHtvbnN1Y2Nlc3M6IGRvTmV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb252
ZXJzaW9uOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRlYnVnKCIgICAgaDIgY2xvc2luZywgYnV0IG5vdCBpbW1lZGlhdGVseSIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgaDIuY2xv
c2UoKTsgfSwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19KTsgfSwKKyAg
ICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBoMS5zZXRWZXJzaW9uKHtvbnN1Y2Nlc3M6IGZpbmlz
aFRlc3R9KTsgfSwKKyAgICAgICAgIF0pOworICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7Cisg
ICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic2VsZi5zdGVwcy50b1N0cmluZygpIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiaDEub3BlbiIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImgxLm9wZW4ub25zdWNjZXNzIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiaDIub3BlbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgy
Lm9wZW4ub25zdWNjZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0
VmVyc2lvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLm9udmVyc2lvbmNo
YW5nZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24ub25i
bG9ja2VkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIuY2xvc2UiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLm9uc3VjY2VzcyIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24udHJhbnNhY3Rpb24t
Y29tcGxldGUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS50b1N0cmluZygpKTsK
KyAgICAgICAgdGVzdDIoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3QyKCkgeworICAgIGRl
YnVnKCIiKTsKKyAgICBkZWJ1ZygiVEVTVDogc2V0VmVyc2lvbiBub3QgYmxvY2tlZCBpZiBoYW5k
bGUgY2xvc2VkIGltbWVkaWF0ZWx5Iik7CisgICAgZXZhbEFuZExvZygic2VsZi5kYm5hbWUgPSAn
dGVzdDInOyBzZWxmLnZlciA9IDE7IHNlbGYuc3RlcHMgPSBbXSIpOworICAgIHZhciBoMSA9IG5l
dyBDb25uZWN0aW9uKCJoMSIpOworICAgIHZhciBoMiA9IG5ldyBDb25uZWN0aW9uKCJoMiIpOwor
ICAgIHJ1blN0ZXBzKFtmdW5jdGlvbihkb05leHQpIHsgaDEub3Blbih7b25zdWNjZXNzOiBkb05l
eHR9KTsgfSwKKyAgICAgICAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGgyLm9wZW4oe29uc3Vj
Y2VzczogZG9OZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b252ZXJzaW9uOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZWJ1ZygiICAgIGgyIGNsb3NpbmcgaW1tZWRpYXRlbHkiKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoMi5jbG9zZSgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0pOyB9LAorICAgICAgICAg
ICAgICBmdW5jdGlvbihkb05leHQpIHsgaDEuc2V0VmVyc2lvbih7b25zdWNjZXNzOiBkb05leHR9
KTsgfSwKKyAgICAgICAgICAgICAgZmluaXNoVGVzdAorICAgICAgICAgICAgICBdKTsKKworICAg
IGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgICAgIGRlYnVnKCJOT1RFOiBXaWxsIEZBSUwg
d2l0aCBleHRyYSBib2d1cyBoMS5zZXRWZXJzaW9uLm9uYmxvY2tlZCBzdGVwOyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzExMzAiKTsKKyAgICAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJzZWxmLnN0ZXBzLnRvU3RyaW5nKCkiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgWyJoMS5vcGVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
aDEub3Blbi5vbnN1Y2Nlc3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5v
cGVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIub3Blbi5vbnN1Y2Nlc3Mi
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIub252ZXJzaW9uY2hhbmdlIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiaDIuY2xvc2UiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJoMS5zZXRWZXJzaW9uLm9uc3VjY2VzcyIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImgxLnNldFZlcnNpb24udHJhbnNhY3Rpb24tY29tcGxldGUiCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXS50b1N0cmluZygpKTsKKyAgICAgICAgdGVzdDMoKTsK
KyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3QzKCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1
ZygiVEVTVDogb3BlbiBhbmQgc2V0VmVyc2lvbiBibG9ja2VkIGlmIGEgVkVSU0lPTl9DSEFOR0Ug
dHJhbnNhY3Rpb24gaXMgcnVubmluZyAtIGNsb3NlIHdoZW4gYmxvY2tlZCIpOworICAgIGV2YWxB
bmRMb2coInNlbGYuZGJuYW1lID0gJ3Rlc3QzJzsgc2VsZi52ZXIgPSAxOyBzZWxmLnN0ZXBzID0g
W10iKTsKKyAgICB2YXIgaDEgPSBuZXcgQ29ubmVjdGlvbigiaDEiKTsKKyAgICB2YXIgaDIgPSBu
ZXcgQ29ubmVjdGlvbigiaDIiKTsKKyAgICB2YXIgaDMgPSBuZXcgQ29ubmVjdGlvbigiaDMiKTsK
KyAgICBydW5TdGVwcyhbZnVuY3Rpb24oZG9OZXh0KSB7IGgxLm9wZW4oe29uc3VjY2VzczogZG9O
ZXh0fSk7IH0sCisgICAgICAgICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBoMi5vcGVuKHtvbnN1
Y2Nlc3M6IGRvTmV4dH0pOyB9LAorICAgICAgICAgICAgICBmdW5jdGlvbihkb05leHQpIHsgaDEu
c2V0VmVyc2lvbigpOyBkb05leHQoKTsgfSwKKyAgICAgICAgICAgICAgZnVuY3Rpb24oZG9OZXh0
KSB7IGgyLnNldFZlcnNpb24oeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb25ibG9ja2VkOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiICAgIGgyIGJsb2Nr
ZWQgc28gY2xvc2luZyIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGgyLmNsb3NlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9OZXh0KCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fSk7IH0sCisgICAgICAgICAgICAgIGZ1
bmN0aW9uKCkgeyBoMy5vcGVuKHtvbnN1Y2Nlc3M6IGZpbmlzaFRlc3R9KTt9CisgICAgICAgICAg
ICAgIF0pOworCisgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJzZWxmLnN0ZXBzLnRvU3RyaW5nKCkiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgWyJoMS5vcGVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
aDEub3Blbi5vbnN1Y2Nlc3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5v
cGVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIub3Blbi5vbnN1Y2Nlc3Mi
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIuc2V0VmVyc2lvbiIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImgyLm9udmVyc2lvbmNoYW5nZSIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24ub25ibG9ja2VkIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiaDEub252ZXJzaW9uY2hhbmdlIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiaDIuc2V0VmVyc2lvbi5vbmJsb2NrZWQiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJoMi5jbG9zZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImgzLm9wZW4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5zZXRWZXJz
aW9uLm9uZXJyb3IiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJz
aW9uLm9uc3VjY2VzcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZl
cnNpb24udHJhbnNhY3Rpb24tY29tcGxldGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJoMy5vcGVuLm9uc3VjY2VzcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBd
LnRvU3RyaW5nKCkpOworICAgICAgICB0ZXN0NCgpOworICAgIH0KK30KKworZnVuY3Rpb24gdGVz
dDQoKSB7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJURVNUOiBvcGVuIGFuZCBzZXRWZXJz
aW9uIGJsb2NrZWQgaWYgYSBWRVJTSU9OX0NIQU5HRSB0cmFuc2FjdGlvbiBpcyBydW5uaW5nIC0g
anVzdCBjbG9zZSIpOworICAgIGV2YWxBbmRMb2coInNlbGYuZGJuYW1lID0gJ3Rlc3Q0Jzsgc2Vs
Zi52ZXIgPSAxOyBzZWxmLnN0ZXBzID0gW10iKTsKKyAgICB2YXIgaDEgPSBuZXcgQ29ubmVjdGlv
bigiaDEiKTsKKyAgICB2YXIgaDIgPSBuZXcgQ29ubmVjdGlvbigiaDIiKTsKKyAgICB2YXIgaDMg
PSBuZXcgQ29ubmVjdGlvbigiaDMiKTsKKyAgICBydW5TdGVwcyhbZnVuY3Rpb24oZG9OZXh0KSB7
IGgxLm9wZW4oe29uc3VjY2VzczogZG9OZXh0fSk7IH0sCisgICAgICAgICAgICAgIGZ1bmN0aW9u
KGRvTmV4dCkgeyBoMi5vcGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dH0pOyB9LAorICAgICAgICAgICAg
ICBmdW5jdGlvbihkb05leHQpIHsgaDEuc2V0VmVyc2lvbigpOyBkb05leHQoKTsgfSwKKyAgICAg
ICAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGgzLm9wZW4oe29uc3VjY2VzczogZmluaXNoVGVz
dH0pOyBkb05leHQoKTsgfSwKKyAgICAgICAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGgyLmNs
b3NlKCk7IH0sCisgICAgICAgICAgICAgIF0pOworCisgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgp
IHsKKyAgICAgICAgZGVidWcoIk5PVEU6IFdpbGwgRkFJTCB3aXRoIGV4dHJhIGJvZ3VzIGgxLnNl
dFZlcnNpb24ub25ibG9ja2VkIHN0ZXA7IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03MTEzMCIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNlbGYuc3Rl
cHMudG9TdHJpbmcoKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImgxLm9wZW4i
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5vcGVuLm9uc3VjY2VzcyIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLm9wZW4iLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJoMi5vcGVuLm9uc3VjY2VzcyIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImgxLnNldFZlcnNpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJoMy5vcGVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIuY2xvc2Ui
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLm9uc3VjY2Vz
cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24udHJhbnNh
Y3Rpb24tY29tcGxldGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMy5vcGVu
Lm9uc3VjY2VzcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnRvU3RyaW5nKCkp
OworICAgICAgICB0ZXN0NSgpOworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdDUoKSB7CisgICAg
ZGVidWcoIiIpOworICAgIGRlYnVnKCJURVNUOiBvcGVuIGJsb2NrZWQgaWYgYSBWRVJTSU9OX0NI
QU5HRSB0cmFuc2FjdGlvbiBpcyBydW5uaW5nIik7CisgICAgZXZhbEFuZExvZygic2VsZi5kYm5h
bWUgPSAndGVzdDUnOyBzZWxmLnZlciA9IDE7IHNlbGYuc3RlcHMgPSBbXSIpOworICAgIHZhciBo
MSA9IG5ldyBDb25uZWN0aW9uKCJoMSIpOworICAgIHZhciBoMiA9IG5ldyBDb25uZWN0aW9uKCJo
MiIpOworCisgICAgcnVuU3RlcHMoW2Z1bmN0aW9uKGRvTmV4dCkgeyBoMS5vcGVuKHtvbnN1Y2Nl
c3M6IGRvTmV4dH0pOyB9LAorICAgICAgICAgICAgICBmdW5jdGlvbihkb05leHQpIHsgaDEuc2V0
VmVyc2lvbigpOyBkb05leHQoKTsgfSwKKyAgICAgICAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7
IGgyLm9wZW4oe29uc3VjY2VzczogZmluaXNoVGVzdH0pOyB9CisgICAgICAgICAgICAgIF0pOwor
CisgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJzZWxmLnN0ZXBzLnRvU3RyaW5nKCkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgWyJoMS5vcGVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEub3Blbi5v
bnN1Y2Nlc3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9u
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIub3BlbiIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24ub25zdWNjZXNzIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbi50cmFuc2FjdGlvbi1jb21wbGV0
ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLm9wZW4ub25zdWNjZXNzIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udG9TdHJpbmcoKSk7CisgICAgICAgIHRl
c3Q2KCk7CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0NigpIHsKKyAgICBkZWJ1ZygiIik7Cisg
ICAgZGVidWcoIlRFU1Q6IHR3byBzZXRWZXJzaW9ucyBmcm9tIHRoZSBzYW1lIGNvbm5lY3Rpb24i
KTsKKyAgICBldmFsQW5kTG9nKCJzZWxmLmRibmFtZSA9ICd0ZXN0Nic7IHNlbGYudmVyID0gMTsg
c2VsZi5zdGVwcyA9IFtdIik7CisgICAgdmFyIGgxID0gbmV3IENvbm5lY3Rpb24oImgxIik7CisK
KyAgICBydW5TdGVwcyhbZnVuY3Rpb24oZG9OZXh0KSB7IGgxLm9wZW4oe29uc3VjY2VzczogZG9O
ZXh0fSk7IH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICBmdW5jdGlvbihkb05leHQpIHsgaDEuc2V0VmVyc2lvbih7b25zdWNjZXNzOiBoYWxmRG9uZX0p
OyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGgxLnNldFZlcnNpb24oe29uc3Vj
Y2VzczogaGFsZkRvbmV9KTsgfQorICAgICAgICAgICAgICBdKTsKKworICAgIHZhciBjb3VudGVy
ID0gMDsKKyAgICBmdW5jdGlvbiBoYWxmRG9uZSgpIHsKKyAgICAgICAgY291bnRlcisrOworICAg
ICAgICBpZiAoY291bnRlciA8IDIpIHsKKyAgICAgICAgICAgIGRlYnVnKCdoYWxmIGRvbmUnKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgfQor
ICAgIH0gIAorCisgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJzZWxmLnN0ZXBzLnRvU3RyaW5nKCkiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgWyJoMS5vcGVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
aDEub3Blbi5vbnN1Y2Nlc3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5z
ZXRWZXJzaW9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lv
biIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24ub25zdWNj
ZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbi50cmFu
c2FjdGlvbi1jb21wbGV0ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNl
dFZlcnNpb24ub25zdWNjZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEu
c2V0VmVyc2lvbi50cmFuc2FjdGlvbi1jb21wbGV0ZSIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBdLnRvU3RyaW5nKCkpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9Cit9
CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Blbi1jdXJzb3IuanMgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Blbi1jdXJzb3IuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOWY5ZGMzYjZiNzk1YmYwZWQ5ZTkzNjRmN2FiZjg4Y2QwZTZjYjg3YwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vcGVuLWN1
cnNvci5qcwpAQCAtMCwwICsxLDg0IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAg
aW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMn
KTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRl
c3QgSW5kZXhlZERCJ3Mgb3BlbkN1cnNvci4iKTsKKworZnVuY3Rpb24gZW1wdHlDdXJzb3JTdWNj
ZXNzKCkKK3sKKyAgICBkZWJ1ZygiRW1wdHkgY3Vyc29yIG9wZW5lZCBzdWNjZXNzZnVsbHkuIikK
KyAgICAvLyBGSVhNRTogY2hlY2sgdGhhdCB3ZSBjYW4gaXRlcmF0ZSB0aGUgY3Vyc29yLgorICAg
IGZpbmlzaEpTVGVzdCgpOworfQorCitmdW5jdGlvbiBvcGVuRW1wdHlDdXJzb3IoKQoreworICAg
IGRlYnVnKCJPcGVuaW5nIGFuIGVtcHR5IGN1cnNvci4iKTsKKyAgICBrZXlSYW5nZSA9IElEQktl
eVJhbmdlLmxvd2VyQm91bmQoIkluZXhpc3RlbnRLZXkiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygib2JqZWN0U3RvcmUub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGVtcHR5Q3Vyc29yU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY3Vyc29yU3VjY2VzcygpCit7Cisg
ICAgZGVidWcoIkN1cnNvciBvcGVuZWQgc3VjY2Vzc2Z1bGx5LiIpCisgICAgLy8gRklYTUU6IGNo
ZWNrIHRoYXQgd2UgY2FuIGl0ZXJhdGUgdGhlIGN1cnNvci4KKyAgICBzaG91bGRCZSgiZXZlbnQu
dGFyZ2V0LnJlc3VsdC5kaXJlY3Rpb24iLCAiMCIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJn
ZXQucmVzdWx0LmtleSIsICInbXlLZXknIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5y
ZXN1bHQudmFsdWUiLCAiJ215VmFsdWUnIik7CisgICAgZGVidWcoIiIpOworICAgIHRyeSB7Cisg
ICAgICAgIGRlYnVnKCJQYXNzaW5nIGFuIGludmFsaWQga2V5IGludG8gLmNvbnRpbnVlKHt9KS4i
KTsKKyAgICAgICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSh7fSk7CisgICAgICAgIHRl
c3RGYWlsZWQoIk5vIGV4Y2VwdGlvbiB0aHJvd24iKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAg
ICAgIHRlc3RQYXNzZWQoIkNhdWdodCBleGNlcHRpb246ICIgKyBlLnRvU3RyaW5nKCkpOworICAg
IH0KKyAgICBkZWJ1ZygiIik7CisgICAgb3BlbkVtcHR5Q3Vyc29yKCk7Cit9CisKK2Z1bmN0aW9u
IG9wZW5DdXJzb3IoKQoreworICAgIGRlYnVnKCJPcGVuaW5nIGN1cnNvciIpOworICAgIGtleVJh
bmdlID0gSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgibXlLZXkiKTsKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiZXZlbnQudGFyZ2V0LnNvdXJjZS5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29yU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nl
c3MoKQoreworICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOworICAgIHNlbGYudHJh
bnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91
bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0
ZWRBYm9ydENhbGxiYWNrOworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAg
IHZhciBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ3Rlc3QnKSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9y
ZS5hZGQoJ215VmFsdWUnLCAnbXlLZXknKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3Bl
bkN1cnNvcjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
K30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIHZhciBkYiA9IGV2YWxBbmRMb2co
ImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IHNldFZlcnNpb25TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVm
aXhlcygpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbignb3Blbi1j
dXJzb3InKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK3Rlc3QoKTsKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Blbi1kdXJpbmctdHJhbnNhY3Rpb24uanMgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Blbi1kdXJpbmctdHJhbnNhY3Rpb24u
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTNjMTlkN2Q5ZjA0YWIxMzY0NTBiNzMxMjZlYjcwMGUyMzNiNTAyNwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9vcGVuLWR1cmluZy10cmFuc2FjdGlvbi5qcwpAQCAtMCwwICsxLDc3IEBACitpZiAodGhpcy5p
bXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsK
K30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIG9wZW5pbmcgZGF0YWJhc2UgY29ubmVj
dGlvbnMgZHVyaW5nIHRyYW5zYWN0aW9ucyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBy
ZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAgIHByZXBhcmVEYXRhYmFzZSgpOworfQorCitmdW5j
dGlvbiBwcmVwYXJlRGF0YWJhc2UoKQoreworICAgIGRlYnVnKCJwcmVwYXJlIGRhdGFiYXNlIik7
CisgICAgZXZhbEFuZExvZygib3BlbnJlcTEgPSBpbmRleGVkREIub3BlbignZGIxJykiKTsKKyAg
ICBvcGVucmVxMS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgb3BlbnJl
cTEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgZXZhbEFuZExvZygiZGJjMSA9
IG9wZW5yZXExLnJlc3VsdCIpOworICAgICAgICBldmFsQW5kTG9nKCJzZXR2ZXJyZXEgPSBkYmMx
LnNldFZlcnNpb24oJzEuMCcpIik7CisgICAgICAgIHNldHZlcnJlcS5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHNldHZlcnJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlv
biAoZSkgeworICAgICAgICAgICAgZXZhbEFuZExvZygiZGJjMS5jcmVhdGVPYmplY3RTdG9yZSgn
c3RvcmVOYW1lJykiKTsKKyAgICAgICAgICAgIHNldHZlcnJlcS5yZXN1bHQub25jb21wbGV0ZSA9
IGZ1bmN0aW9uIChlKSB7CisgICAgICAgICAgICAgICAgZGVidWcoImRhdGFiYXNlIHByZXBhcmF0
aW9uIGNvbXBsZXRlIik7CisgICAgICAgICAgICAgICAgZGVidWcoIiIpOworICAgICAgICAgICAg
ICAgIHN0YXJ0VHJhbnNhY3Rpb24oKTsKKyAgICAgICAgICAgIH07CisgICAgICAgIH07CisgICAg
fTsKK30KKworZnVuY3Rpb24gc3RhcnRUcmFuc2FjdGlvbigpCit7CisgICAgZGVidWcoInN0YXJ0
aW5nIHRyYW5zYWN0aW9uIik7CisgICAgZXZhbEFuZExvZygic3RhdGUgPSAnc3RhcnRpbmcnIik7
CisgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYmMxLnRyYW5zYWN0aW9uKCdzdG9yZU5hbWUnLCBJ
REJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9iamVj
dFN0b3JlKCdzdG9yZU5hbWUnKS5wdXQoJ3ZhbHVlJywgJ2tleScpIik7CisgICAgdHJhbnMub25h
Ym9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zLm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gZnVuY3Rpb24gKGUp
IHsKKyAgICAgICAgZGVidWcoInRyYW5zYWN0aW9uIGNvbXBsZXRlIik7CisgICAgICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygic3RhdGUiLCAib3BlbjNjb21wbGV0ZSIpOworICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKKyAgICB9OworCisgICAgZGVidWcoIiIpOworICAgIHRyeU9wZW5zKCk7Cit9
CisKK2Z1bmN0aW9uIHRyeU9wZW5zKCkKK3sKKyAgICBkZWJ1ZygidHJ5aW5nIHRvIG9wZW4gdGhl
IHNhbWUgZGF0YWJhc2UiKTsKKyAgICBldmFsQW5kTG9nKCJvcGVucmVxMiA9IGluZGV4ZWREQi5v
cGVuKCdkYjEnKSIpOworICAgIG9wZW5yZXEyLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKKyAgICBvcGVucmVxMi5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZSkgeworICAgICAgICBk
ZWJ1Zygib3BlbnJlcTIub25zdWNjZXNzIik7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
Zygic3RhdGUiLCAic3RhcnRpbmciKTsKKyAgICAgICAgZXZhbEFuZExvZygic3RhdGUgPSAnb3Bl
bjJjb21wbGV0ZSciKTsKKyAgICAgICAgZGVidWcoIiIpOworICAgIH0KKyAgICBkZWJ1ZygiIik7
CisKKyAgICBkZWJ1ZygidHJ5aW5nIHRvIG9wZW4gYSBkaWZmZXJlbnQgZGF0YWJhc2UiKTsKKyAg
ICBldmFsQW5kTG9nKCJvcGVucmVxMyA9IGluZGV4ZWREQi5vcGVuKCdkYjInKSIpOworICAgIG9w
ZW5yZXEzLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBvcGVucmVxMy5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZSkgeworICAgICAgICBkZWJ1Zygib3BlbnJlcTMub25zdWNj
ZXNzIik7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3RhdGUiLCAib3BlbjJjb21w
bGV0ZSIpOworICAgICAgICBldmFsQW5kTG9nKCJzdGF0ZSA9ICdvcGVuM2NvbXBsZXRlJyIpOwor
ICAgICAgICBkZWJ1ZygiIik7CisgICAgfQorICAgIGRlYnVnKCIiKTsKK30KKwordGVzdCgpOwpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9wcmVmZXRjaC1idWdmaXgtMTA4MDcxLmpzIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3ByZWZldGNoLWJ1Z2ZpeC0xMDgwNzEu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZmYxNDE2N2ExZGU0YTU0YjU0YmNkM2IzZWQyZmI0Njk5YzlmMWMwOAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9wcmVmZXRjaC1idWdmaXgtMTA4MDcxLmpzCkBAIC0wLDAgKzEsMTE4IEBACitpZiAodGhpcy5p
bXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsK
K30KKworZGVzY3JpcHRpb24oIlRlc3QgZm9yIGNyYnVnLmNvbS8xMDgwNzEiKTsKKworLy8gSGF2
ZSB0byBiZSBhdCBsZWFzdCA1IGhlcmU6IDEgaW5pdGlhbCwgMyBjb250aW51ZXMgdG8gdHJpZ2dl
ciBwcmVmZXRjaCBhbmQgMQorLy8gcG9zdC1hYm9ydCBvdXRzdGFuZGluZyBjb250aW51ZS4KK3Zh
ciBuYW1lcyA9IFsnQWxwaGEnLCAnQnJhdm8nLCAnQ2hhcmxpZScsICdEZWx0YScsICdFY2hvJ107
CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAg
REJOQU1FID0gJ3ByZWZldGNoLWJ1Z2ZpeC0xMDgwNzEnOworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoREJOQU1FKSIpOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25ibG9ja2VkID0g
dW5leHBlY3RlZEJsb2NrZWRDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0
aW9uIChlKSB7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihE
Qk5BTUUpIik7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAg
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIH07Cit9
CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICB2YXIgZGIgPSBldmFsQW5kTG9nKCJk
YiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJk
Yi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBz
ZXRWZXJzaW9uU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQoreworICAgIGRlYnVn
KCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOworICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0
cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9
PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwor
ICAgIHRyYW5zLm9uY29tcGxldGUgPSBpdGVyYXRlQW5kRGVsZXRlRmlyc3RFbGVtZW50OworCisg
ICAgdmFyIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVP
YmplY3RTdG9yZSgnc3RvcmUnLCB7a2V5UGF0aDogJ2lkJ30pIik7CisgICAgcmVzZXRPYmplY3RT
dG9yZSgpOworfQorCitmdW5jdGlvbiByZXNldE9iamVjdFN0b3JlKCkKK3sKKyAgICBkZWJ1Zygi
XG5yZXNldE9iamVjdFN0b3JlKCk6Iik7CisKKyAgICBvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVj
dFN0b3JlKCdzdG9yZScpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmNsZWFyKCkiKTsK
KyAgICBmb3IgKGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCh7aWQ6ICIgKyBpICsgIiwgbmFtZTogXCIi
ICsgbmFtZXNbaV0gKyAiXCJ9KSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICB9CisKKyAgICBkZWJ1ZygiIik7Cit9CisKK2Z1bmN0aW9u
IGl0ZXJhdGVBbmREZWxldGVGaXJzdEVsZW1lbnQoKQoreworICAgIGRlYnVnKCJpdGVyYXRlQW5k
RGVsZXRlRmlyc3RFbGVtZW50KCk6Iik7CisKKyAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRy
YW5zYWN0aW9uKFsnc3RvcmUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICB0
cmFucy5vbmFib3J0ID0gdHJhbnNhY3Rpb25BYm9ydGVkOworICAgIHRyYW5zLm9uY29tcGxldGUg
PSB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjazsKKworICAgIC8vIENyZWF0ZSB0aGUgY3Vyc29y
IGFuZCBpdGVyYXRlIG92ZXIgdGhlIHdob2xlIHRoaW5nLgorICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKS5vcGVuQ3Vyc29yKCkiKTsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdmFyIGN1cnNvciA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQ7CisgICAgICAgIGlmIChjdXJzb3IgPT0gbnVsbCkgeworICAgICAgICAgICAgcmVzZXRP
YmplY3RTdG9yZSgpOworICAgICAgICAgICAgcHJlZmV0Y2hBbmRBYm9ydCgpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZGVidWcoY3Vyc29yLnZhbHVlLmlkICsg
IjogIiArIGN1cnNvci52YWx1ZS5uYW1lKTsKKworICAgICAgICBpZiAoY3Vyc29yLnZhbHVlLmlk
ID09IDApIHsKKyAgICAgICAgICAgIC8vIERlbGV0ZSB0aGUgZmlyc3QgZWxlbWVudCB3aGVuIHdl
IHNlZSBpdC4KKyAgICAgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RT
dG9yZSgnc3RvcmUnKS5kZWxldGUoMCkiKTsKKyAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbigpIHsgY3Vyc29yLmNvbnRpbnVlKCk7IH07CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBjdXJzb3IuY29udGludWUoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVu
Y3Rpb24gcHJlZmV0Y2hBbmRBYm9ydCgpCit7CisgICAgZGVidWcoInByZWZldGNoQW5kQWJvcnQo
KToiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnc3Rv
cmUnKS5vcGVuQ3Vyc29yKCkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgdmFyIGN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgICAgIGRlYnVnKGN1cnNv
ci52YWx1ZS5pZCArICI6ICIgKyBjdXJzb3IudmFsdWUubmFtZSk7CisgICAgICAgIC8vIEhhdmUg
dG8gaXRlcmF0ZSB0byAzIGluIG9yZGVyIHRvIHByZWZldGNoLCBidXQgY2FuJ3QgaXRlcmF0ZSBw
YXN0IDMKKyAgICAgICAgLy8gc28gdGhhdCB0aGVyZSB3aWxsIGJlIGEgY29udGludWUgcmVtYWlu
aW5nLgorICAgICAgICBpZiAoY3Vyc29yLnZhbHVlLmlkID09IDMpIHsKKyAgICAgICAgICAgIGV2
YWxBbmRMb2coInRyYW5zLmFib3J0KCkiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IGN1cnNvci5jb250aW51ZSgpOworICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiB0cmFu
c2FjdGlvbkFib3J0ZWQoKQoreworICAgIHRlc3RQYXNzZWQoIlRyYW5zYWN0aW9uIGFib3J0ZWQg
YXMgZXhwZWN0ZWQiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9xdWV1ZWQtY29tbWFuZHMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvcXVldWVkLWNvbW1hbmRzLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwMGJm
ZDVhMTZjZWNlMTA0NzUyMTI2N2Y2YTJhOTkzMTliNDgyYjIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvcXVldWVkLWNvbW1hbmRzLmpz
CkBAIC0wLDAgKzEsNjIgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRT
Y3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAg
IGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVmVyaWZ5IHRo
YXQgcXVldWluZyB1cCBzZXZlcmFsIGNvbW1hbmRzIHdvcmtzIChhbmQgdGhleSBhbGwgZmlyZSku
Iik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Cisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdxdWV1ZWQtY29tbWFuZHMn
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvbjsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lv
bigpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsK
KworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicp
Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVsZXRl
RXhpc3RpbmcoKQoreworICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOworICAgIHNl
bGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAg
ICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVu
ZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsK
KworICAgIHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3Rv
cmVOYW1lJykiKTsKKyAgICBzZWxmLmluZGV4T2JqZWN0ID0gZXZhbEFuZExvZygic3RvcmUuY3Jl
YXRlSW5kZXgoJ2luZGV4TmFtZScsICd4JykiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgdmVyaWZ5QWRkKDApOyB9OworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworCisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlMicsIHk6ICd6enoyJ30sICdrZXkyJykiKTsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeyB2ZXJpZnlBZGQoMSk7IH07CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygic3RvcmUucHV0KHt4OiAndmFsdTInLCB5OiAnenoyJ30sICdreTInKSIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7IHZlcmlmeUFkZCgyKTsgfTsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKworICAgIHNl
bGYuYWRkQ291bnQgPSAwOworfQorCitmdW5jdGlvbiB2ZXJpZnlBZGQoZXhwZWN0ZWQpCit7Cisg
ICAgc2hvdWxkQmUoIiIgKyBhZGRDb3VudCsrLCAiIiArIGV4cGVjdGVkKTsKKworICAgIGlmIChh
ZGRDb3VudCA9PSAzKQorICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICBpZiAoYWRkQ291bnQg
PiAzKQorICAgICAgICB0ZXN0RmFpbGVkKCJVbmV4cGVjdGVkIGNhbGwgdG8gdmVyaWZ5QWRkISIp
OworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3JlYWRvbmx5LXByb3BlcnRp
ZXMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvcmVhZG9ubHkt
cHJvcGVydGllcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjVjMDQxYjAxODE5YzE0NmUyYjYzYTE2NjlhZDM5
OGQ3N2FiMmM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL3JlYWRvbmx5LXByb3BlcnRpZXMuanMKQEAgLTAsMCArMSw0OSBAQAoraWYg
KHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVk
LmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiByZWFkb25seSBwcm9wZXJ0
aWVzIik7CisKK2Z1bmN0aW9uIHNldFJlYWRvbmx5UHJvcGVydHkocHJvcGVydHksIHZhbHVlKQor
eworICAgIG9sZFZhbHVlID0gZXZhbChwcm9wZXJ0eSk7CisgICAgZGVidWcoInRyeWluZyB0byBz
ZXQgcmVhZG9ubHkgcHJvcGVydHkgIiArIHByb3BlcnR5KTsKKyAgICBldmFsQW5kTG9nKHByb3Bl
cnR5ICsgIiA9ICIgKyB2YWx1ZSk7CisgICAgbmV3VmFsdWUgPSBldmFsKHByb3BlcnR5KTsKKyAg
ICBpZiAob2xkVmFsdWUgPT0gbmV3VmFsdWUpIHsKKyAgICAgICAgdGVzdFBhc3NlZChwcm9wZXJ0
eSArICIgaXMgc3RpbGwgIiArIG9sZFZhbHVlKTsKKyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0
RmFpbGVkKHByb3BlcnR5ICsgIiB2YWx1ZSB3YXMgY2hhbmdlZCB0byAiICsgbmV3VmFsdWUpOwor
ICAgIH0KK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMo
KTsKKworICAgIG5hbWUgPSAiZm9vIjsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFi
YXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVz
Y3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
b3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJz
aW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2Jq
ZWN0U3RvcmU7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQoreworICAgIHRy
YW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBldmVudC50YXJnZXQucmVzdWx0
OyIpOworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisgICAgb2JqZWN0U3RvcmUgPSBl
dmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nKTsiKTsK
KyAgICBzZXRSZWFkb25seVByb3BlcnR5KCJvYmplY3RTdG9yZS50cmFuc2FjdGlvbiIsICJ0aGlz
Iik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvcmVhZG9ubHkuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvcmVhZG9ubHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDZkMzFjZjg4OTJkYjE0Y2EzNjk4MGFhZjhjZDMx
ZmZhNWY5Y2YyYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9yZWFkb25seS5qcwpAQCAtMCwwICsxLDEwNiBAQAoraWYgKHRoaXMuaW1w
b3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9
CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiByZWFkb25seSBwcm9wZXJ0aWVzIik7CisK
K2Z1bmN0aW9uIHNldFJlYWRvbmx5UHJvcGVydHkocHJvcGVydHksIHZhbHVlKQoreworICAgIG9s
ZFZhbHVlID0gZXZhbChwcm9wZXJ0eSk7CisgICAgZGVidWcoInRyeWluZyB0byBzZXQgcmVhZG9u
bHkgcHJvcGVydHkgIiArIHByb3BlcnR5KTsKKyAgICBldmFsQW5kTG9nKHByb3BlcnR5ICsgIiA9
ICIgKyB2YWx1ZSk7CisgICAgbmV3VmFsdWUgPSBldmFsKHByb3BlcnR5KTsKKyAgICBpZiAob2xk
VmFsdWUgPT0gbmV3VmFsdWUpIHsKKyAgICAgICAgdGVzdFBhc3NlZChwcm9wZXJ0eSArICIgaXMg
c3RpbGwgIiArIG9sZFZhbHVlKTsKKyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0RmFpbGVkKHBy
b3BlcnR5ICsgIiB2YWx1ZSB3YXMgY2hhbmdlZCIpOworICAgIH0KK30KKworZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSAiZm9vIjsK
KyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIHNl
dFJlYWRvbmx5UHJvcGVydHkoInJlcXVlc3QucmVzdWx0IiwgIkluZmluaXR5Iik7CisgICAgc2V0
UmVhZG9ubHlQcm9wZXJ0eSgicmVxdWVzdC5lcnJvckNvZGUiLCAiNjY2Iik7CisgICAgc2V0UmVh
ZG9ubHlQcm9wZXJ0eSgicmVxdWVzdC5zb3VyY2UiLCAidGhpcyIpOworICAgIHNldFJlYWRvbmx5
UHJvcGVydHkoInJlcXVlc3QudHJhbnNhY3Rpb24iLCAidGhpcyIpOworICAgIHNldFJlYWRvbmx5
UHJvcGVydHkoInJlcXVlc3QucmVhZHlTdGF0ZSIsICI2NjYiKTsKKworICAgIGRiID0gZXZhbEFu
ZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2V0UmVhZG9ubHlQcm9wZXJ0
eSgiZGIubmFtZSIsICInYmFyJyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVl
c3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0
ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3Rv
cmUoKQoreworICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBldmVu
dC50YXJnZXQucmVzdWx0OyIpOworICAgIHNldFJlYWRvbmx5UHJvcGVydHkoInRyYW5zYWN0aW9u
Lm1vZGUiLCAiNjY2Iik7CisgICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgidHJhbnNhY3Rpb24uZGIi
LCAidGhpcyIpOworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVj
dFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgn
Zm9vJyk7Iik7CisKKyAgICBzZXRSZWFkb25seVByb3BlcnR5KCJvYmplY3RTdG9yZS5uYW1lIiwg
IidiYXInIik7CisgICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgib2JqZWN0U3RvcmUua2V5UGF0aCIs
ICInYmFyJyIpOworLyogZmFpbHMsIHNwbGl0IGludG8gc2VwYXJhdGUgdGVzdAorICAgIHNldFJl
YWRvbmx5UHJvcGVydHkoIm9iamVjdFN0b3JlLmluZGV4TmFtZXMiLCAiWydiYXInXSIpOworKi8K
Ky8qIGZhaWxzLCBzcGxpdCBpbnRvIHNlcGFyYXRlIHRlc3QKKyAgICBzZXRSZWFkb25seVByb3Bl
cnR5KCJvYmplY3RTdG9yZS50cmFuc2FjdGlvbiIsICJ0aGlzIik7CisqLworCisgICAgcmVzdWx0
ID0gZXZhbEFuZExvZygicmVzdWx0ID0gb2JqZWN0U3RvcmUuYWRkKHt9LCAnZmlyc3QnKTsiKTsK
KyAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlc3Vs
dC5vbnN1Y2Nlc3MgPSBhZGRTdWNjZXNzOworfQorCitmdW5jdGlvbiBhZGRTdWNjZXNzKCkKK3sK
KyAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJyZXN1bHQgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29y
KCk7Iik7CisgICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICByZXN1bHQub25zdWNjZXNzID0gY2hlY2tDdXJzb3I7Cit9CisKK2Z1bmN0aW9uIGNoZWNrQ3Vy
c29yKCkKK3sKKyAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQu
cmVzdWx0OyIpOworICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgc2V0UmVhZG9ubHlQcm9wZXJ0
eSgiY3Vyc29yLnNvdXJjZSIsICJ0aGlzIik7CisgICAgICAgIHNldFJlYWRvbmx5UHJvcGVydHko
ImN1cnNvci5kaXJlY3Rpb24iLCAiNjY2Iik7CisgICAgICAgIHNldFJlYWRvbmx5UHJvcGVydHko
ImN1cnNvci5rZXkiLCAiSW5maW5pdHkiKTsKKyAgICAgICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgi
Y3Vyc29yLnByaW1hcnlLZXkiLCAiSW5maW5pdHkiKTsKKyAgICB9IGVsc2UgeworICAgICAgICB0
ZXN0RmFpbGVkKCJjdXJzb3IgaXMgbnVsbCIpOworICAgIH0KKworICAgIGluZGV4ID0gZXZhbEFu
ZExvZygiaW5kZXggPSBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgnZmlyc3QnLCAnZmlyc3QnKTsi
KTsKKyAgICBzZXRSZWFkb25seVByb3BlcnR5KCJpbmRleC5uYW1lIiwgIidiYXInIik7CisgICAg
c2V0UmVhZG9ubHlQcm9wZXJ0eSgiaW5kZXgub2JqZWN0U3RvcmUiLCAidGhpcyIpOworICAgIHNl
dFJlYWRvbmx5UHJvcGVydHkoImluZGV4LmtleVBhdGgiLCAiJ2JhciciKTsKKyAgICBzZXRSZWFk
b25seVByb3BlcnR5KCJpbmRleC51bmlxdWUiLCAidHJ1ZSIpOworCisgICAga2V5UmFuZ2UgPSBJ
REJLZXlSYW5nZS5vbmx5KCJmaXJzdCIpOworICAgIHNldFJlYWRvbmx5UHJvcGVydHkoImtleVJh
bmdlLmxvd2VyIiwgIkluZmluaXR5Iik7CisgICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgia2V5UmFu
Z2UudXBwZXIiLCAiSW5maW5pdHkiKTsKKyAgICBzZXRSZWFkb25seVByb3BlcnR5KCJrZXlSYW5n
ZS5sb3dlck9wZW4iLCAidHJ1ZSIpOworICAgIHNldFJlYWRvbmx5UHJvcGVydHkoImtleVJhbmdl
LnVwcGVyT3BlbiIsICJ0cnVlIik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgp
OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9yZXF1ZXN0LWV2ZW50LXByb3BhZ2F0aW9uLmpzIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3JlcXVlc3QtZXZlbnQtcHJv
cGFnYXRpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzk2NzIzNWUyMGJmZGY4ZjYwZjAwNDJiYWE3ODE2N2Ji
MWNjNTI3MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9yZXF1ZXN0LWV2ZW50LXByb3BhZ2F0aW9uLmpzCkBAIC0wLDAgKzEsMjY3IEBA
CitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdz
aGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgZXZlbnQgcHJvcG9nYXRpb24gb24g
SURCUmVxdWVzdC4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJl
Zml4ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3JlcXVl
c3QtZXZlbnQtcHJvcGFnYXRpb24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVy
c2lvbjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30K
KworZnVuY3Rpb24gc2V0VmVyc2lvbigpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRW
ZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVF
eGlzdGluZzsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
K30KKworZnVuY3Rpb24gZGVsZXRlRXhpc3RpbmcoKQoreworICAgIGRlYnVnKCJzZXRWZXJzaW9u
U3VjY2VzcygpOiIpOworICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Cisg
ICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIGV2YWxBbmRM
b2coInRyYW5zLm9uY29tcGxldGUgPSBzdGFydFRlc3QiKTsKKworICAgIGRlbGV0ZUFsbE9iamVj
dFN0b3JlcyhkYik7CisKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAna2V5JykiKTsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc3Rh
cnRUZXN0KCkKK3sKKyAgICBkZWJ1ZygiVmVyaWZ5IHRoYXQgaGFuZGxlciBmaXJlcyBhbmQgdGhh
dCBub3QgcHJldmVudGluZyBkZWZhdWx0IHdpbGwgcmVzdWx0IGluIGFuIGFib3J0Iik7CisgICAg
dHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10s
IElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMub25h
Ym9ydCA9IHRyYW5zYWN0aW9uQWJvcnRlZCIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29t
cGxldGUgPSB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coInRy
YW5zLm9uZXJyb3IgPSBhbGxvd0RlZmF1bHQiKTsKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0
b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAna2V5JykiKTsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7CisgICAgaGFu
ZGxlckZpcmVkID0gZmFsc2U7Cit9CisKK2Z1bmN0aW9uIGFsbG93RGVmYXVsdCgpCit7CisgICAg
dGVzdFBhc3NlZCgiRXZlbnQgaGFuZGxlciBmaXJlZCIpOworICAgIGRlYnVnKCJEb2luZyBub3Ro
aW5nIHRvIHByZXZlbnQgdGhlIGRlZmF1bHQgYWN0aW9uLi4uIik7CisgICAgaGFuZGxlckZpcmVk
ID0gdHJ1ZTsKK30KKworZnVuY3Rpb24gdHJhbnNhY3Rpb25BYm9ydGVkKCkKK3sKKyAgICBzaG91
bGRCZVRydWUoImhhbmRsZXJGaXJlZCIpOworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVmVy
aWZpbmcgZXJyb3IiKTsKKyAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNh
Y3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICBl
dmFsQW5kTG9nKCJ0cmFucy5vbmFib3J0ID0gdHJhbnNhY3Rpb25BYm9ydGVkMiIpOworICAgIGV2
YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjayIpOwor
ICAgIGV2YWxBbmRMb2coInRyYW5zLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZXJyb3JDYXB0
dXJlQ2FsbGJhY2ssIHRydWUpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMuYWRkRXZlbnRMaXN0
ZW5lcignZXJyb3InLCBlcnJvckJ1YmJsZUNhbGxiYWNrLCBmYWxzZSkiKTsKKyAgICBldmFsQW5k
TG9nKCJ0cmFucy5hZGRFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgdW5leHBlY3RlZFN1Y2Nlc3ND
YWxsYmFjaywgdHJ1ZSkiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5hZGRFdmVudExpc3RlbmVy
KCdzdWNjZXNzJywgdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjaywgZmFsc2UpIik7CisgICAgZXZh
bEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBkYkVycm9yQ2FwdHVyZUNhbGxi
YWNrLCB0cnVlKSIpOworICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9y
JywgZGJFcnJvckJ1YmJsZUNhbGxiYWNrLCBmYWxzZSkiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5h
ZGRFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjaywgdHJ1
ZSkiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgdW5l
eHBlY3RlZFN1Y2Nlc3NDYWxsYmFjaywgZmFsc2UpIik7CisgICAgc3RvcmUgPSBldmFsQW5kTG9n
KCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOworICAg
IHJlcXVlc3Qub25lcnJvciA9IGVycm9yRmlyZWRDYWxsYmFjazsKKyAgICBkYkNhcHR1cmVGaXJl
ZCA9IGZhbHNlOworICAgIGNhcHR1cmVGaXJlZCA9IGZhbHNlOworICAgIHJlcXVlc3RGaXJlZCA9
IGZhbHNlOworICAgIGJ1YmJsZUZpcmVkID0gZmFsc2U7CisgICAgZGJCdWJibGVGaXJlZCA9IGZh
bHNlOworfQorCitmdW5jdGlvbiBkYkVycm9yQ2FwdHVyZUNhbGxiYWNrKCkKK3sKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoIkluIElEQkRhdGFiYXNlIGVycm9yIGNhcHR1cmUiKTsKKyAgICBz
aG91bGRCZUZhbHNlKCJkYkNhcHR1cmVGaXJlZCIpOworICAgIHNob3VsZEJlRmFsc2UoImNhcHR1
cmVGaXJlZCIpOworICAgIHNob3VsZEJlRmFsc2UoInJlcXVlc3RGaXJlZCIpOworICAgIHNob3Vs
ZEJlRmFsc2UoImJ1YmJsZUZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVGaXJl
ZCIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAicmVxdWVzdCIpOworICAgIHNob3Vs
ZEJlKCJldmVudC5jdXJyZW50VGFyZ2V0IiwgImRiIik7CisgICAgZGJDYXB0dXJlRmlyZWQgPSB0
cnVlOworfQorCitmdW5jdGlvbiBlcnJvckNhcHR1cmVDYWxsYmFjaygpCit7CisgICAgZGVidWco
IiIpOworICAgIGRlYnVnKCJJbiBJREJUcmFuc2FjdGlvbiBlcnJvciBjYXB0dXJlIik7CisgICAg
c2hvdWxkQmVUcnVlKCJkYkNhcHR1cmVGaXJlZCIpOworICAgIHNob3VsZEJlRmFsc2UoImNhcHR1
cmVGaXJlZCIpOworICAgIHNob3VsZEJlRmFsc2UoInJlcXVlc3RGaXJlZCIpOworICAgIHNob3Vs
ZEJlRmFsc2UoImJ1YmJsZUZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVGaXJl
ZCIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAicmVxdWVzdCIpOworICAgIHNob3Vs
ZEJlKCJldmVudC5jdXJyZW50VGFyZ2V0IiwgInRyYW5zIik7CisgICAgY2FwdHVyZUZpcmVkID0g
dHJ1ZTsKK30KKworZnVuY3Rpb24gZXJyb3JGaXJlZENhbGxiYWNrKCkKK3sKKyAgICBkZWJ1Zygi
Iik7CisgICAgZGVidWcoIkluIElEQlJlcXVlc3QgaGFuZGxlciIpOworICAgIHNob3VsZEJlVHJ1
ZSgiZGJDYXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRCZVRydWUoImNhcHR1cmVGaXJlZCIpOwor
ICAgIHNob3VsZEJlRmFsc2UoInJlcXVlc3RGaXJlZCIpOworICAgIHNob3VsZEJlRmFsc2UoImJ1
YmJsZUZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVGaXJlZCIpOworICAgIHNo
b3VsZEJlKCJldmVudC50YXJnZXQiLCAicmVxdWVzdCIpOworICAgIHNob3VsZEJlKCJldmVudC5j
dXJyZW50VGFyZ2V0IiwgInJlcXVlc3QiKTsKKyAgICByZXF1ZXN0RmlyZWQgPSB0cnVlOworfQor
CitmdW5jdGlvbiBlcnJvckJ1YmJsZUNhbGxiYWNrKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAg
ZGVidWcoIkluIElEQlRyYW5zYWN0aW9uIGVycm9yIGJ1YmJsZSIpOworICAgIHNob3VsZEJlVHJ1
ZSgiZGJDYXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRCZVRydWUoImNhcHR1cmVGaXJlZCIpOwor
ICAgIHNob3VsZEJlVHJ1ZSgicmVxdWVzdEZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiYnVi
YmxlRmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVkIik7CisgICAgc2hv
dWxkQmUoImV2ZW50LnRhcmdldCIsICJyZXF1ZXN0Iik7CisgICAgc2hvdWxkQmUoImV2ZW50LmN1
cnJlbnRUYXJnZXQiLCAidHJhbnMiKTsKKyAgICBidWJibGVGaXJlZCA9IHRydWU7Cit9CisKK2Z1
bmN0aW9uIGRiRXJyb3JCdWJibGVDYWxsYmFjaygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRl
YnVnKCJJbiBJREJEYXRhYmFzZSBlcnJvciBidWJibGUiKTsKKyAgICBzaG91bGRCZVRydWUoImRi
Q2FwdHVyZUZpcmVkIik7CisgICAgc2hvdWxkQmVUcnVlKCJjYXB0dXJlRmlyZWQiKTsKKyAgICBz
aG91bGRCZVRydWUoInJlcXVlc3RGaXJlZCIpOworICAgIHNob3VsZEJlVHJ1ZSgiYnViYmxlRmly
ZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVkIik7CisgICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldCIsICJyZXF1ZXN0Iik7CisgICAgc2hvdWxkQmUoImV2ZW50LmN1cnJlbnRU
YXJnZXQiLCAiZGIiKTsKKyAgICBkYkJ1YmJsZUZpcmVkID0gdHJ1ZTsKK30KKworZnVuY3Rpb24g
dHJhbnNhY3Rpb25BYm9ydGVkMigpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJUcmFu
c2FjdGlvbiBhYm9ydGVkIik7CisgICAgc2hvdWxkQmVUcnVlKCJkYkNhcHR1cmVGaXJlZCIpOwor
ICAgIHNob3VsZEJlVHJ1ZSgiY2FwdHVyZUZpcmVkIik7CisgICAgc2hvdWxkQmVUcnVlKCJyZXF1
ZXN0RmlyZWQiKTsKKyAgICBzaG91bGRCZVRydWUoImJ1YmJsZUZpcmVkIik7CisgICAgc2hvdWxk
QmVUcnVlKCJkYkJ1YmJsZUZpcmVkIik7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJWZXJp
ZmluZyBzdWNjZXNzLiIpOworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFu
c2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAg
IGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSB0cmFuc2FjdGlvbkNvbXBsZXRlIik7Cisg
ICAgZXZhbEFuZExvZygidHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrIik7
CisgICAgZXZhbEFuZExvZygidHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignc3VjY2VzcycsIHN1Y2Nl
c3NDYXB0dXJlQ2FsbGJhY2ssIHRydWUpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMuYWRkRXZl
bnRMaXN0ZW5lcignc3VjY2VzcycsIHN1Y2Nlc3NCdWJibGVDYWxsYmFjaywgZmFsc2UpIik7Cisg
ICAgZXZhbEFuZExvZygidHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjaywgdHJ1ZSkiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5hZGRFdmVudExp
c3RlbmVyKCdlcnJvcicsIHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrLCBmYWxzZSkiKTsKKyAgICBl
dmFsQW5kTG9nKCJkYi5yZW1vdmVFdmVudExpc3RlbmVyKCdlcnJvcicsIGRiRXJyb3JDYXB0dXJl
Q2FsbGJhY2ssIHRydWUpIik7CisgICAgZXZhbEFuZExvZygiZGIucmVtb3ZlRXZlbnRMaXN0ZW5l
cignZXJyb3InLCBkYkVycm9yQnViYmxlQ2FsbGJhY2ssIGZhbHNlKSIpOworICAgIGV2YWxBbmRM
b2coImRiLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3N1Y2Nlc3MnLCB1bmV4cGVjdGVkU3VjY2Vzc0Nh
bGxiYWNrLCB0cnVlKSIpOworICAgIGV2YWxBbmRMb2coImRiLnJlbW92ZUV2ZW50TGlzdGVuZXIo
J3N1Y2Nlc3MnLCB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrLCBmYWxzZSkiKTsKKyAgICBldmFs
QW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgZGJTdWNjZXNzQ2FwdHVyZUNh
bGxiYWNrLCB0cnVlKSIpOworICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50TGlzdGVuZXIoJ3N1
Y2Nlc3MnLCBkYlN1Y2Nlc3NCdWJibGVDYWxsYmFjaywgZmFsc2UpIik7CisgICAgZXZhbEFuZExv
ZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjaywg
dHJ1ZSkiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrLCBmYWxzZSkiKTsKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2co
InN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAna2V5MicpIik7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBzdWNjZXNzRmlyZWRDYWxsYmFjazsKKyAgICBkYkNhcHR1cmVGaXJl
ZCA9IGZhbHNlOworICAgIGNhcHR1cmVGaXJlZCA9IGZhbHNlOworICAgIHJlcXVlc3RGaXJlZCA9
IGZhbHNlOworICAgIGJ1YmJsZUZpcmVkID0gZmFsc2U7CisgICAgZGJCdWJibGVGaXJlZCA9IGZh
bHNlOworfQorCitmdW5jdGlvbiBkYlN1Y2Nlc3NDYXB0dXJlQ2FsbGJhY2soKQoreworICAgIGRl
YnVnKCIiKTsKKyAgICBkZWJ1ZygiSW4gSURCRGF0YWJhc2Ugc3VjY2VzcyBjYXB0dXJlIik7Cisg
ICAgc2hvdWxkQmVGYWxzZSgiZGJDYXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJj
YXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJyZXF1ZXN0RmlyZWQiKTsKKyAgICBz
aG91bGRCZUZhbHNlKCJidWJibGVGaXJlZCIpOworICAgIHNob3VsZEJlRmFsc2UoImRiQnViYmxl
RmlyZWQiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0IiwgInJlcXVlc3QiKTsKKyAgICBz
aG91bGRCZSgiZXZlbnQuY3VycmVudFRhcmdldCIsICJkYiIpOworICAgIGRiQ2FwdHVyZUZpcmVk
ID0gdHJ1ZTsKK30KKworZnVuY3Rpb24gc3VjY2Vzc0NhcHR1cmVDYWxsYmFjaygpCit7CisgICAg
ZGVidWcoIiIpOworICAgIGRlYnVnKCJJbiBJREJUcmFuc2FjdGlvbiBzdWNjZXNzIGNhcHR1cmUi
KTsKKyAgICBzaG91bGRCZVRydWUoImRiQ2FwdHVyZUZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxz
ZSgiY2FwdHVyZUZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgicmVxdWVzdEZpcmVkIik7Cisg
ICAgc2hvdWxkQmVGYWxzZSgiYnViYmxlRmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJkYkJ1
YmJsZUZpcmVkIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldCIsICJyZXF1ZXN0Iik7Cisg
ICAgc2hvdWxkQmUoImV2ZW50LmN1cnJlbnRUYXJnZXQiLCAidHJhbnMiKTsKKyAgICBjYXB0dXJl
RmlyZWQgPSB0cnVlOworfQorCitmdW5jdGlvbiBzdWNjZXNzRmlyZWRDYWxsYmFjaygpCit7Cisg
ICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJJbiBJREJSZXF1ZXN0IGhhbmRsZXIiKTsKKyAgICBz
aG91bGRCZVRydWUoImRiQ2FwdHVyZUZpcmVkIik7CisgICAgc2hvdWxkQmVUcnVlKCJjYXB0dXJl
RmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJyZXF1ZXN0RmlyZWQiKTsKKyAgICBzaG91bGRC
ZUZhbHNlKCJidWJibGVGaXJlZCIpOworICAgIHNob3VsZEJlRmFsc2UoImRiQnViYmxlRmlyZWQi
KTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0IiwgInJlcXVlc3QiKTsKKyAgICBzaG91bGRC
ZSgiZXZlbnQuY3VycmVudFRhcmdldCIsICJyZXF1ZXN0Iik7CisgICAgcmVxdWVzdEZpcmVkID0g
dHJ1ZTsKK30KKworZnVuY3Rpb24gc3VjY2Vzc0J1YmJsZUNhbGxiYWNrKCkKK3sKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoIkluIElEQlRyYW5zYWN0aW9uIHN1Y2Nlc3MgYnViYmxlIik7Cisg
ICAgdGVzdEZhaWxlZCgiU3VjY2VzcyBidWJibGUgY2FsbGJhY2sgc2hvdWxkIE5PVCBmaXJlIik7
CisgICAgYnViYmxlRmlyZWQgPSB0cnVlOworfQorCitmdW5jdGlvbiBkYlN1Y2Nlc3NCdWJibGVD
YWxsYmFjaygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJJbiBJREJEYXRhYmFzZSBz
dWNjZXNzIGJ1YmJsZSIpOworICAgIHRlc3RGYWlsZWQoIlN1Y2Nlc3MgYnViYmxlIGNhbGxiYWNr
IHNob3VsZCBOT1QgZmlyZSIpOworICAgIGRiQnViYmxlRmlyZWQgPSB0cnVlOworfQorCitmdW5j
dGlvbiB0cmFuc2FjdGlvbkNvbXBsZXRlKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWco
IlRyYW5zYWN0aW9uIGNvbXBsZXRlZCIpOworICAgIHNob3VsZEJlVHJ1ZSgiZGJDYXB0dXJlRmly
ZWQiKTsKKyAgICBzaG91bGRCZVRydWUoImNhcHR1cmVGaXJlZCIpOworICAgIHNob3VsZEJlVHJ1
ZSgicmVxdWVzdEZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiYnViYmxlRmlyZWQiKTsKKyAg
ICBzaG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVkIik7CisgICAgZGVidWcoIiIpOworCisgICAg
ZmluaXNoSlNUZXN0KCk7CisgICAgcmV0dXJuOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL3NldFZlcnNpb24tbnVsbC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9zZXRWZXJzaW9uLW51bGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTg4YTNjNzVmNjJj
NDZlNGEyYzM3ODhlODAyMWMzZTM5ZjNjZDNlZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zZXRWZXJzaW9uLW51bGwuanMKQEAgLTAs
MCArMSwzNSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMo
Jy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0
U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiB3
aXRoIG51bGwgdmVyc2lvbiBzdHJpbmciKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVt
b3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1l
OworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAg
ZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKG51bGwpOyIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gcG9zdFNldFZlcnNpb247CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHBvc3RTZXRWZXJzaW9uKCkKK3sKKyAgICBz
aG91bGRCZSgiZGIudmVyc2lvbiIsICInbnVsbCciKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30K
KworCit0ZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvc2V0VmVyc2lvbi11bmRlZmluZWQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvc2V0VmVyc2lvbi11bmRlZmluZWQuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDc4
MzM2ZTM4ODQzNDBmODMxYTc1N2M2YzYwOTBiYzM1ZDMyYTQxNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zZXRWZXJzaW9uLXVuZGVm
aW5lZC5qcwpAQCAtMCwwICsxLDI4IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAg
aW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMn
KTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRl
c3QgSW5kZXhlZERCIHZlcnNpb24gc3RyaW5nIGlzIHJlcXVpcmVkIik7CisKK2Z1bmN0aW9uIHRl
c3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5s
b2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRp
b24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1
Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7CisKKyAgICBzaG91bGRUaHJvdygiZGIuc2V0VmVyc2lvbigpOyIpOworICAgIGZpbmlzaEpT
VGVzdCgpOworfQorCisKK3Rlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9zZXRfdmVyc2lvbl9ibG9ja2VkLmpzIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NldF92ZXJzaW9uX2Jsb2NrZWQuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNjMzZWI3Yzk5ODgyNDYyYjQ2NmIxMDhlZmU4NGY0ZTc3MmU0ZjA2MAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zZXRfdmVy
c2lvbl9ibG9ja2VkLmpzCkBAIC0wLDAgKzEsNTUgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMp
IHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlw
dGlvbigiQW4gb3BlbiBjb25uZWN0aW9uIGJsb2NrcyBhIHNlcGFyYXRlIGNvbm5lY3Rpb24ncyBz
ZXRWZXJzaW9uIGNhbGwiKTsKKworY29ubmVjdGlvbnMgPSBbXQorZnVuY3Rpb24gdGVzdCgpCit7
CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBvcGVuREJDb25uZWN0aW9uKCk7Cit9
CisKK2Z1bmN0aW9uIG9wZW5EQkNvbm5lY3Rpb24oKQoreworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJpbmRleGVkREIub3Blbignc2V0LXZlcnNpb24tYmxvY2tlZCcpIik7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGNv
bm5lY3Rpb24gPSBldmVudC50YXJnZXQucmVzdWx0OworICAgIGNvbm5lY3Rpb25zLnB1c2goY29u
bmVjdGlvbik7CisgICAgb3JpZ2luYWxfdmVyc2lvbiA9IGNvbm5lY3Rpb24udmVyc2lvbjsKKyAg
ICBpZiAoY29ubmVjdGlvbnMubGVuZ3RoIDwgMikKKyAgICAgICAgb3BlbkRCQ29ubmVjdGlvbigp
OworICAgIGVsc2UgeworICAgICAgICB2YXIgdmVyc2lvbkNoYW5nZVJlcXVlc3QgPSBldmFsQW5k
TG9nKCJjb25uZWN0aW9uc1swXS5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgICAgICB2
ZXJzaW9uQ2hhbmdlUmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cisg
ICAgICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uc3VjY2VzcyA9IGluU2V0VmVyc2lvbjsKKyAg
ICAgICAgdmVyc2lvbkNoYW5nZVJlcXVlc3Qub25ibG9ja2VkID0gYmxvY2tlZDsKKyAgICB9Cit9
CisKK3NlZW5fYmxvY2tlZF9ldmVudCA9IGZhbHNlOworZnVuY3Rpb24gYmxvY2tlZCgpCit7Cisg
ICAgZXZhbEFuZExvZygic2Vlbl9ibG9ja2VkX2V2ZW50ID0gdHJ1ZSIpOworICAgIGJsb2NrZWRf
ZXZlbnQgPSBldmVudDsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImJsb2NrZWRfZXZlbnQu
dmVyc2lvbiIsICJ2ZXJzaW9uIDEiKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJibG9ja2VkX2V2
ZW50LnRhcmdldC5yZWFkeVN0YXRlIiwgMSk7CisgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbnNb
MV0uY2xvc2UoKSIpOworfQorCitmdW5jdGlvbiBpblNldFZlcnNpb24oKQoreworICAgIGRlYnVn
KCJpbiBzZXRWZXJzaW9uLm9uc3VjY2VzcyIpOworICAgIHNob3VsZEJlVHJ1ZSgic2Vlbl9ibG9j
a2VkX2V2ZW50Iik7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGNvbm5lY3Rpb25zWzBdKTsK
KyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NldF92ZXJzaW9uX3F1ZXVlLmpzIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NldF92ZXJzaW9uX3F1ZXVlLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmFhYTM0NWQ0MzdjNjg1OGJhZGEzNzYyZDk5NjYxZmVkMTFiNjVjNjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
c2V0X3ZlcnNpb25fcXVldWUuanMKQEAgLTAsMCArMSwxMjIgQEAKK2lmICh0aGlzLmltcG9ydFNj
cmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitk
ZXNjcmlwdGlvbigiNCBvcGVuIGNvbm5lY3Rpb25zIHRyeSB0byBzZXRWZXJzaW9uIGF0IHRoZSBz
YW1lIHRpbWUuICAzIGNvbm5lY3Rpb25zIGV2ZW50dWFsbHkgY2xvc2UsIGFsbG93aW5nIDEgc2V0
VmVyc2lvbiBjYWxsIHRvIHByb2NlZWQuIik7CisKK2Nvbm5lY3Rpb25zID0gW10KK2Z1bmN0aW9u
IHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBvcGVuREJDb25u
ZWN0aW9uKCk7Cit9CisKK2Z1bmN0aW9uIG9wZW5EQkNvbm5lY3Rpb24oKQoreworICAgIHJlc3Vs
dCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdzZXQtdmVyc2lvbi1xdWV1ZScpIik7Cisg
ICAgcmVzdWx0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlc3VsdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sK
KyAgICBjb25uZWN0aW9uID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICBjb25uZWN0aW9uLm9u
dmVyc2lvbmNoYW5nZSA9IGdlbmVyYXRlVmVyc2lvbkNoYW5nZUhhbmRsZXIoKTsKKyAgICBjb25u
ZWN0aW9ucy5wdXNoKGNvbm5lY3Rpb24pOworICAgIGlmIChjb25uZWN0aW9ucy5sZW5ndGggPCA0
KQorICAgICAgICBvcGVuREJDb25uZWN0aW9uKCk7CisgICAgZWxzZSB7CisgICAgICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJjb25uZWN0aW9uc1swXS5zZXRWZXJzaW9uKCd2ZXJzaW9uIDAnKSIp
OworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCl7IGNvbm5lY3Rpb25F
cnJvcihldmVudCwgMCkgfTsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVk
U3VjY2Vzc0NhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uYmxvY2tlZCA9IGJsb2NrZWQwOwor
ICAgICAgICByZXF1ZXN0MSA9IGV2YWxBbmRMb2coImNvbm5lY3Rpb25zWzFdLnNldFZlcnNpb24o
J3ZlcnNpb24gMScpIik7CisgICAgICAgIHJlcXVlc3QxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdDEub25zdWNjZXNzID0gaW5TZXRWZXJzaW9uMTsK
KyAgICAgICAgcmVxdWVzdDEub25ibG9ja2VkID0gYmxvY2tlZDE7CisgICAgICAgIHJlcXVlc3Qy
ID0gZXZhbEFuZExvZygiY29ubmVjdGlvbnNbMl0uc2V0VmVyc2lvbigndmVyc2lvbiAyJykiKTsK
KyAgICAgICAgcmVxdWVzdDIub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KXsgY29ubmVjdGlvbkVy
cm9yKGV2ZW50LCAyKSB9OworICAgICAgICByZXF1ZXN0Mi5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVk
U3VjY2Vzc0NhbGxiYWNrOworICAgICAgICByZXF1ZXN0Mi5vbmJsb2NrZWQgPSBibG9ja2VkMjsK
KyAgICAgICAgcmVxdWVzdDMgPSBldmFsQW5kTG9nKCJjb25uZWN0aW9uc1szXS5zZXRWZXJzaW9u
KCd2ZXJzaW9uIDMnKSIpOworICAgICAgICByZXF1ZXN0My5vbmVycm9yID0gZnVuY3Rpb24oZXZl
bnQpeyBjb25uZWN0aW9uRXJyb3IoZXZlbnQsIDMpIH07CisgICAgICAgIHJlcXVlc3QzLm9uc3Vj
Y2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3QzLm9uYmxv
Y2tlZCA9IGJsb2NrZWQzOworICAgICAgICBkZWJ1ZygiIik7CisgICAgfQorfQorCitmdW5jdGlv
biBnZW5lcmF0ZVZlcnNpb25DaGFuZ2VIYW5kbGVyKCkKK3sKKyAgICB2YXIgY29ubmVjdGlvbk51
bSA9IGNvbm5lY3Rpb25zLmxlbmd0aDsKKyAgICByZXR1cm4gZnVuY3Rpb24oZXZlbnQpCisgICAg
eworICAgICAgICBzaG91bGRCZVRydWUoImV2ZW50LnZlcnNpb24ubGVuZ3RoID4gMCIpOworICAg
ICAgICBkZWJ1ZygiY29ubmVjdGlvblsiICsgY29ubmVjdGlvbk51bSArICJdIHJlY2VpdmVkIHZl
cnNpb25DaGFuZ2VFdmVudDogIiArIGV2ZW50LnZlcnNpb24pOworICAgIH0KK30KKworYmxvY2tl
ZDBmaXJlZCA9IGZhbHNlOworYmxvY2tlZDJmaXJlZCA9IGZhbHNlOworZnVuY3Rpb24gYmxvY2tl
ZDAoZXZlbnQpCit7CisgICAgZGVidWcoIiIpOworICAgIHRlc3RQYXNzZWQoImNvbm5lY3Rpb25b
MF0gZ290IGJsb2NrZWQgZXZlbnQiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50
LnZlcnNpb24iLCAidmVyc2lvbiAwIik7CisgICAgZGVidWcoIkNsb3NlIHRoZSBjb25uZWN0aW9u
IHRoYXQgcmVjZWl2ZWQgdGhlIGJsb2NrIGV2ZW50OiIpOworICAgIGV2YWxBbmRMb2coImNvbm5l
Y3Rpb25zWzBdLmNsb3NlKCkiKTsKKyAgICBkZWJ1ZygiQ2xvc2UgYW5vdGhlciBjb25uZWN0aW9u
IGFzIHdlbGwsIHRvIHRlc3QgNC43LjQtbm90ZToiKTsKKyAgICBldmFsQW5kTG9nKCJjb25uZWN0
aW9uc1szXS5jbG9zZSgpIik7CisgICAgZXZhbEFuZExvZygiYmxvY2tlZDBmaXJlZCA9IHRydWUi
KTsKKyAgICBkZWJ1ZygiIik7Cit9CisKK2Z1bmN0aW9uIGJsb2NrZWQxKGV2ZW50KQoreworICAg
IGRlYnVnKCIiKQorICAgIHRlc3RQYXNzZWQoImNvbm5lY3Rpb25bMV0gZ290IGJsb2NrZWQgZXZl
bnQiKTsKKyAgICBkZWJ1ZygiRW5zdXJlIHRoYXQgdGhpcyBibG9ja2VkIGV2ZW50IGlzIGluIG9y
ZGVyOiIpOworICAgIHNob3VsZEJlVHJ1ZSgiYmxvY2tlZDBmaXJlZCIpOworICAgIHNob3VsZEJl
RmFsc2UoImJsb2NrZWQyZmlyZWQiKTsKKyAgICBkZWJ1ZygiIikKK30KKworZnVuY3Rpb24gYmxv
Y2tlZDIoZXZlbnQpCit7CisgICAgZGVidWcoIiIpCisgICAgdGVzdFBhc3NlZCgiY29ubmVjdGlv
blsyXSBnb3QgYmxvY2tlZCBldmVudCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZl
bnQudmVyc2lvbiIsICJ2ZXJzaW9uIDIiKTsKKyAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uc1sy
XS5jbG9zZSgpIik7CisgICAgZXZhbEFuZExvZygiYmxvY2tlZDJmaXJlZCA9IHRydWUiKTsKKyAg
ICBkZWJ1ZygiIikKK30KKworZnVuY3Rpb24gYmxvY2tlZDMoZXZlbnQpCit7CisgICAgZGVidWco
IiIpCisgICAgdGVzdFBhc3NlZCgiY29ubmVjdGlvblszXSBnb3QgYmxvY2tlZCBldmVudCIpOwor
ICAgIGRlYnVnKCJOb3RlOiBUaGlzIG1lYW5zIHRoYXQgYSBjb25uZWN0aW9uIGNhbiByZWNlaXZl
IGEgYmxvY2tlZCBldmVudCBhZnRlciBpdHMgY2xvc2UoKSBtZXRob2QgaGFzIGJlZW4gY2FsbGVk
LiAgU3BlYyBpcyBzaWxlbnQgb24gdGhlIGlzc3VlIGFuZCB0aGlzIGlzIGVhc2llc3QgdG8gaW1w
bGVtZW50LiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudmVyc2lvbiIsICJ2
ZXJzaW9uIDMiKTsKK30KKworZnVuY3Rpb24gY29ubmVjdGlvbkVycm9yKGV2ZW50LCBjb25uZWN0
aW9uSWQpCit7CisgICAgZGVidWcoIiIpCisgICAgdGVzdFBhc3NlZCgiY29ubmVjdGlvblsiICsg
Y29ubmVjdGlvbklkICsgIl0gZ290IGVycm9yIGV2ZW50Iik7CisgICAgc2hvdWxkQmUoImV2ZW50
LnRhcmdldC5lcnJvckNvZGUiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uQUJPUlRfRVJSIikKKyAg
ICBpZiAoJ3dlYmtpdEVycm9yTWVzc2FnZScgaW4gZXZlbnQudGFyZ2V0KSB7CisgICAgICAgIHNo
b3VsZEJlKCJldmVudC50YXJnZXQud2Via2l0RXJyb3JNZXNzYWdlLmxlbmd0aCA+IDAiLCAidHJ1
ZSIpOworICAgICAgICBkZWJ1ZyhldmVudC50YXJnZXQud2Via2l0RXJyb3JNZXNzYWdlKTsKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIGluU2V0VmVyc2lvbjEoZXZlbnQpCit7CisgICAgZGVidWcoIiIp
CisgICAgdGVzdFBhc3NlZCgiY29ubmVjdGlvblsxXSBnb3QgaW50byBTZXRWZXJzaW9uIik7Cisg
ICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1hYm9ydC5qcyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1hYm9ydC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41ODY4ZTg3OWUzYzQ0OTQ2YzlkOTExYmNlOGJlNjk2MDIwNzMzNzYzCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3Ry
YW5zYWN0aW9uLWFib3J0LmpzCkBAIC0wLDAgKzEsOTAgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlw
dHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNj
cmlwdGlvbigiVGVzdCB0cmFuc2FjdGlvbiBhYm9ydHMgc2VuZCB0aGUgcHJvcGVyIG9uYWJvcnQg
bWVzc2FnZXMuLiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVm
aXhlcygpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCduYW1l
JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb247CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNp
b24oKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24n
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0
ZUV4aXN0aW5nKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKKyAgICBz
ZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Cisg
ICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1
bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRl
ID0gc3RhcnRUZXN0Iik7CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAg
c3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5h
bWUnLCBudWxsKSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2
YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgpCit7CisgICAgdHJh
bnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIElE
QlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMub25hYm9y
dCA9IHRyYW5zYWN0aW9uQWJvcnRlZCIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxl
dGUgPSB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjayIpOworICAgIHN0b3JlID0gZXZhbEFuZExv
Zygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWUyJywgeTogJ3p6ejInfSwgJ2tleTIn
KSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IGZpcnN0QWRkOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
Zygic3RvcmUuYWRkKHt4OiAndmFsdWUzJywgeTogJ3p6ejMnfSwgJ2tleTMnKSIpOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHNlY29uZEFkZDsKKyAgICB0cmFucy5hYm9ydCgpOworCisgICAgZmly
c3RFcnJvciA9IGZhbHNlOworICAgIHNlY29uZEVycm9yID0gZmFsc2U7CisgICAgYWJvcnRGaXJl
ZCA9IGZhbHNlOworfQorCitmdW5jdGlvbiBmaXJzdEFkZCgpCit7CisgICAgc2hvdWxkQmUoImV2
ZW50LnRhcmdldC5lcnJvckNvZGUiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uQUJPUlRfRVJSIik7
CisgICAgc2hvdWxkQmVGYWxzZSgiZmlyc3RFcnJvciIpOworICAgIHNob3VsZEJlRmFsc2UoInNl
Y29uZEVycm9yIik7CisgICAgc2hvdWxkQmVGYWxzZSgiYWJvcnRGaXJlZCIpOworICAgIGZpcnN0
RXJyb3IgPSB0cnVlOworCisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuYWRkKHt4
OiAndmFsdWU0JywgeTogJ3p6ejQnfSwgJ2tleTQnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5U
UkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsKK30KKworZnVuY3Rpb24gc2Vjb25kQWRkKCkKK3sK
KyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LmVycm9yQ29kZSIsICJJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5BQk9SVF9FUlIiKTsKKyAgICBzaG91bGRCZVRydWUoImZpcnN0RXJyb3IiKTsKKyAgICBz
aG91bGRCZUZhbHNlKCJzZWNvbmRFcnJvciIpOworICAgIHNob3VsZEJlRmFsc2UoImFib3J0Rmly
ZWQiKTsKKyAgICBzZWNvbmRFcnJvciA9IHRydWU7Cit9CisKK2Z1bmN0aW9uIHRyYW5zYWN0aW9u
QWJvcnRlZCgpCit7CisgICAgc2hvdWxkQmVUcnVlKCJmaXJzdEVycm9yIik7CisgICAgc2hvdWxk
QmVUcnVlKCJzZWNvbmRFcnJvciIpOworICAgIHNob3VsZEJlRmFsc2UoImFib3J0RmlyZWQiKTsK
KyAgICBhYm9ydEZpcmVkID0gdHJ1ZTsKKworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0
b3JlLmFkZCh7eDogJ3ZhbHVlNScsIHk6ICd6eno1J30sICdrZXk1JykiLCAiSURCRGF0YWJhc2VF
eGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7CisgICAgZmluaXNoSlNUZXN0KCk7
Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tYWZ0ZXIt
Y2xvc2UuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNh
Y3Rpb24tYWZ0ZXItY2xvc2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDYwZjZkYmQ1YjljOWFlYWJiNGE1MGYy
NDViNDFhZDc5MzVhZmU3NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1hZnRlci1jbG9zZS5qcwpAQCAtMCwwICsx
LDgxIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3Jp
cHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgY2xvc2luZyBhIGRhdGFi
YXNlIGNvbm5lY3Rpb24gaW4gSW5kZXhlZERCLiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImlu
ZGV4ZWREQi5vcGVuKCd0cmFuc2FjdGlvbi1hZnRlci1jbG9zZScpIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRlYnVn
KCJvcGVuU3VjY2VzcygpOiIpOworICAgIHNlbGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRi
LnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBpblNl
dFZlcnNpb247CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Cit9CisKK2Z1bmN0aW9uIGluU2V0VmVyc2lvbigpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3Rv
cmVzKGRiKTsKKworICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25jb21wbGV0ZSA9IHJ1bkZpcnN0
UmVndWxhclRyYW5zYWN0aW9uOworICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25hYm9ydCA9IHVu
ZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBk
Yi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gc3RvcmUucHV0KCd4JywgJ3knKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gb25QdXRTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBvblB1dFN1Y2Nlc3MoKQoreworICAgIHRlc3RQYXNzZWQo
IlB1dCBzdWNjZXNzIikKK30KKworZnVuY3Rpb24gcnVuRmlyc3RSZWd1bGFyVHJhbnNhY3Rpb24o
KQoreworICAgIGRlYnVnKCJydW5uaW5nIGZpcnN0IHRyYW5zYWN0aW9uIikKKyAgICBjdXJyZW50
VHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJjdXJyZW50VHJhbnNhY3Rpb24gPSBkYi50cmFuc2Fj
dGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgY3VycmVu
dFRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICBjdXJy
ZW50VHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZpcnN0VHJhbnNhY3Rpb25Db21wbGV0ZTsKKyAg
ICBvYmplY3RTdG9yZSA9IGN1cnJlbnRUcmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKTsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUucHV0KCdhJywgJ2InKSIpOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiBmaXJzdFRyYW5zYWN0aW9uQ29tcGxldGUoKQoreworICAgIGV2YWxBbmRMb2coImRiLmNs
b3NlKCkiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbihbJ3N0
b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9u
Lk5PVF9BTExPV0VEX0VSUiIpOworCisgICAgZGVidWcoIiIpCisgICAgZGVidWcoInZlcmlmeSB0
aGF0IHdlIGNhbiByZW9wZW4gdGhlIGRiIGFmdGVyIGNhbGxpbmcgY2xvc2UiKQorICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndHJhbnNhY3Rpb24tYWZ0ZXItY2xvc2Un
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb25TZWNvbmRPcGVuCisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9uU2Vjb25k
T3BlbigpIHsKKyAgICBzZWNvbmRfZGIgPSBldmFsQW5kTG9nKCJzZWNvbmRfZGIgPSBldmVudC50
YXJnZXQucmVzdWx0Iik7CisgICAgY3VycmVudFRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygiY3Vy
cmVudFRyYW5zYWN0aW9uID0gc2Vjb25kX2RiLnRyYW5zYWN0aW9uKFsnc3RvcmUnXSwgSURCVHJh
bnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICBzdG9yZSA9IGN1cnJlbnRUcmFuc2FjdGlvbi5v
YmplY3RTdG9yZSgnc3RvcmUnKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IHN0b3JlLnB1dCgnMScsICcyJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9uRmluYWxQ
dXRTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworICAgIGN1cnJlbnRUcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZmluaXNoSlNUZXN0OworICAg
IGN1cnJlbnRUcmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIG9uRmluYWxQdXRTdWNjZXNzKCkgeworICAgIHRlc3RQYXNzZWQoImZpbmFs
IHB1dCBzdWNjZXNzIik7Cit9CisKK3Rlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1hbmQtb2JqZWN0c3RvcmUtY2Fs
bHMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rp
b24tYW5kLW9iamVjdHN0b3JlLWNhbGxzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhYzYxZDgzMmI5N2YzM2Nh
NmYwMjYyOWRiNDhhYzEzZTIzNzYyMjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tYW5kLW9iamVjdHN0b3JlLWNh
bGxzLmpzCkBAIC0wLDAgKzEsMTI0IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAg
aW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMn
KTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRl
c3QgSW5kZXhlZERCJ3MgdHJhbnNhY3Rpb24gYW5kIG9iamVjdFN0b3JlIGNhbGxzIik7CisKK2Z1
bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0aW9uLWFuZC1vYmplY3Rz
dG9yZS1jYWxscycsICdkZXNjcmlwdGlvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBv
cGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIHNlbGYuZGIgPSBldmFsQW5k
TG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygicmVzdWx0ID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIHRy
YW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgZGVs
ZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVj
dFN0b3JlKCdhJykiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnYicp
Iik7CisgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykuY3JlYXRl
SW5kZXgoJ2luZGV4JywgJ3NvbWVfcGF0aCcpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMuYWRk
RXZlbnRMaXN0ZW5lcignY29tcGxldGUnLCBjcmVhdGVkLCB0cnVlKSIpOworICAgIGRlYnVnKCIi
KTsKK30KKworZnVuY3Rpb24gY3JlYXRlZCgpCit7CisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0
cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnYSddKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9i
amVjdFN0b3JlKCdhJykiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0cmFucy5vYmpl
Y3RTdG9yZSgnYicpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKKyAg
ICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0cmFucy5vYmplY3RTdG9yZSgneCcpIiwgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICB0
cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydhJ10pIik7CisgICAg
ZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2EnKSIpOworICAgIGV2YWxBbmRFeHBlY3RF
eGNlcHRpb24oInRyYW5zLm9iamVjdFN0b3JlKCdiJykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24u
Tk9UX0ZPVU5EX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInRyYW5zLm9iamVj
dFN0b3JlKCd4JykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOworICAg
IGRlYnVnKCIiKTsKKworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2Fj
dGlvbihbJ2InXSkiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYicpIik7
CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ2EnKSIsICJJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ3gnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5O
T1RfRk9VTkRfRVJSIik7CisgICAgZGVidWcoIiIpOworCisgICAgdHJhbnMgPSBldmFsQW5kTG9n
KCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnYScsICdiJ10pIik7CisgICAgZXZhbEFuZExvZygi
dHJhbnMub2JqZWN0U3RvcmUoJ2EnKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0
b3JlKCdiJykiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0cmFucy5vYmplY3RTdG9y
ZSgneCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKKyAgICBkZWJ1
ZygiIik7CisKKyAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24o
WydiJywgJ2EnXSkiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYScpIik7
CisgICAgZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2InKSIpOworICAgIGV2YWxBbmRF
eHBlY3RFeGNlcHRpb24oInRyYW5zLm9iamVjdFN0b3JlKCd4JykiLCAiSURCRGF0YWJhc2VFeGNl
cHRpb24uTk9UX0ZPVU5EX0VSUiIpOworICAgIGRlYnVnKCIiKTsKKworICAgIGRlYnVnKCJQYXNz
aW5nIGEgc3RyaW5nIGFzIHRoZSBmaXJzdCBhcmd1bWVudCBpcyBhIHNob3J0Y3V0IGZvciBqdXN0
IG9uZSBvYmplY3Qgc3RvcmU6Iik7CisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRi
LnRyYW5zYWN0aW9uKCdhJykiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgn
YScpIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ2In
KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7CisgICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ3gnKSIsICJJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5OT1RfRk9VTkRfRVJSIik7CisgICAgZGVidWcoIiIpOworCisgICAgc2hvdWxkVGhyb3co
InRyYW5zID0gZGIudHJhbnNhY3Rpb24oKSIpOworICAgIGRlYnVnKCIiKTsKKworICAgIGV2YWxB
bmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKFsneCddKSIsICJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIu
dHJhbnNhY3Rpb24oWyd4J10pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIi
KTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbihbJ2EnLCAneCdd
KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7CisgICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oWyd4JywgJ3gnXSkiLCAiSURCRGF0YWJhc2VF
eGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRi
LnRyYW5zYWN0aW9uKFsnYScsICd4JywgJ2InXSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9U
X0ZPVU5EX0VSUiIpOworICAgIGRlYnVnKCIiKTsKKworICAgIGRlYnVnKCJFeGNlcHRpb24gdGhy
b3duIHdoZW4gbm8gc3RvcmVzIHNwZWNpZmllZDoiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJkYi50cmFuc2FjdGlvbihbXSkiLCAiRE9NRXhjZXB0aW9uLklOVkFMSURfQUNDRVNTX0VS
UiIpOworICAgIGRlYnVnKCIiKTsKKworICAgIGRlYnVnKCJ7fSBjb2VyY2VzIHRvIGEgc3RyaW5n
IC0gc28gbm8gbWF0Y2gsIGJ1dCBub3QgYSB0eXBlIGVycm9yOiIpOworICAgIGV2YWxBbmRFeHBl
Y3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKHt9KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5O
T1RfRk9VTkRfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rp
b24oe21vZGU6MH0pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKKyAg
ICBkZWJ1ZygiIik7CisKKyAgICBkZWJ1ZygiT3ZlcnJpZGluZyB0aGUgZGVmYXVsdCBzdHJpbmcg
Y29lcmNpb24gbWFrZXMgdGhlc2Ugd29yazoiKTsKKyAgICBldmFsQW5kTG9nKCJkYi50cmFuc2Fj
dGlvbih7dG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gJ2EnO319KSIpOworICAgIGV2YWxBbmRM
b2coImRiLnRyYW5zYWN0aW9uKFt7dG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gJ2EnO319XSki
KTsKKyAgICBkZWJ1ZygiLi4uIGJ1dCB5b3Ugc3RpbGwgbmVlZCB0byBzcGVjaWZ5IGEgcmVhbCBz
dG9yZToiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbihbe3Rv
U3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuICd4Jzt9fV0pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9u
Lk5PVF9GT1VORF9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2Fj
dGlvbihbe3RvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuICd4Jzt9fV0pIiwgIklEQkRhdGFiYXNl
RXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICB0cmFucyA9
IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZSddKSIpOworICAgIHNo
b3VsZEJlVHJ1ZSgidHJhbnMgIT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVj
dGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IGFmdGVyQ29tcGxldGU7CisgICAgZXZhbEFu
ZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgIHNob3VsZEJl
VHJ1ZSgic3RvcmUgIT0gbnVsbCIpOworICAgIGV2YWxBbmRMb2coInN0b3JlLmdldCgnc29tZV9r
ZXknKSIpOworfQorCitmdW5jdGlvbiBhZnRlckNvbXBsZXRlKCkKK3sKKyAgICBkZWJ1ZygidHJh
bnNhY3Rpb24gY29tcGxldGUsIGVuc3VyaW5nIG1ldGhvZHMgZmFpbCIpOworICAgIHNob3VsZEJl
VHJ1ZSgidHJhbnMgIT0gbnVsbCIpOworICAgIHNob3VsZEJlVHJ1ZSgic3RvcmUgIT0gbnVsbCIp
OworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScp
IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9BTExPV0VEX0VSUiIpOworICAgIGV2YWxBbmRF
eHBlY3RFeGNlcHRpb24oInN0b3JlLmluZGV4KCdpbmRleCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0
aW9uLk5PVF9BTExPV0VEX0VSUiIpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3Qo
KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tYmFzaWNzLmpzIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWJhc2ljcy5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xYjVkZGM2ZGJkZDgxOTA4NzE5MzcyNTQyZmIzODllZTUyNmMyZWM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3Ry
YW5zYWN0aW9uLWJhc2ljcy5qcwpAQCAtMCwwICsxLDI4NiBAQAoraWYgKHRoaXMuaW1wb3J0U2Ny
aXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rl
c2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiB0cmFuc2FjdGlvbiBiYXNpY3MuIik7CisKK2Z1bmN0
aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0aW9uLWJhc2ljcycpIik7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQor
eworICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOworICAgIHNlbGYuZGIgPSBldmFsQW5kTG9n
KCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKK3sKKyAgICBkZWxl
dGVBbGxPYmplY3RTdG9yZXMoZGIsIGNoZWNrTWV0YWRhdGFFbXB0eSk7CisgICAgZXZlbnQudGFy
Z2V0LnJlc3VsdC5vbmNvbXBsZXRlID0gdGVzdFNldFZlcnNpb25BYm9ydDE7Cit9CisKK2Z1bmN0
aW9uIHRlc3RTZXRWZXJzaW9uQWJvcnQxKCkKK3sKKyAgICBjaGVja01ldGFkYXRhRW1wdHkoKTsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHN0YXJ0U2V0VmVyc2lvbigndmVy
c2lvbiBmYWlsJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZFJlbW92ZUlEQk9iamVj
dHM7Cit9CisKK2Z1bmN0aW9uIGFkZFJlbW92ZUlEQk9iamVjdHMoKQoreworICAgIGRlYnVnKCJh
ZGRSZW1vdmVJREJPYmplY3RzKCk6Iik7CisgICAgdmFyIHRyYW5zID0gZXZhbEFuZExvZygidHJh
bnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0g
bnVsbCIpOworICAgIHRyYW5zLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgdGVzdFNldFZlcnNp
b25BYm9ydDIsIHRydWUpOworICAgIHRyYW5zLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQ29tcGxl
dGVDYWxsYmFjazsKKworICAgIHZhciBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ3N0b3JlRmFpbCcsIG51bGwpIik7CisgICAgdmFyIGluZGV4ID0gZXZh
bEFuZExvZygiaW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhGYWlsJywgJ3gnKSIpOwor
CisgICAgZXZhbEFuZExvZygiZGIuZGVsZXRlT2JqZWN0U3RvcmUoJ3N0b3JlRmFpbCcpIik7Cisg
ICAgZXZhbEFuZExvZygic3RvcmUuZGVsZXRlSW5kZXgoJ2luZGV4RmFpbCcpIik7CisKKyAgICB0
cmFucy5hYm9ydCgpOworfQorCitmdW5jdGlvbiB0ZXN0U2V0VmVyc2lvbkFib3J0MigpCit7Cisg
ICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0U2V0VmVyc2lvbkFib3J0MigpOiIpOworICAg
IGNoZWNrTWV0YWRhdGFFbXB0eSgpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gc3RhcnRTZXRWZXJzaW9uKCd2ZXJzaW9uIGZhaWwnKSIpOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gYWRkUmVtb3ZlQWRkSURCT2JqZWN0czsKK30KKworZnVuY3Rpb24gYWRkUmVtb3ZlQWRk
SURCT2JqZWN0cygpCit7CisgICAgZGVidWcoImFkZFJlbW92ZUFkZElEQk9iamVjdHMoKToiKTsK
KyAgICB2YXIgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMuYWRkRXZl
bnRMaXN0ZW5lcignYWJvcnQnLCB0ZXN0U2V0VmVyc2lvbkFib3J0MywgZmFsc2UpOworICAgIHRy
YW5zLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjazsKKworICAgIHZhciBz
dG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlRmFp
bCcsIG51bGwpIik7CisgICAgdmFyIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5j
cmVhdGVJbmRleCgnaW5kZXhGYWlsJywgJ3gnKSIpOworCisgICAgZXZhbEFuZExvZygiZGIuZGVs
ZXRlT2JqZWN0U3RvcmUoJ3N0b3JlRmFpbCcpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUuZGVs
ZXRlSW5kZXgoJ2luZGV4RmFpbCcpIik7CisKKyAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJz
dG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZUZhaWwnLCBudWxsKSIpOworICAgIHZh
ciBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4RmFp
bCcsICd4JykiKTsKKworICAgIHRyYW5zLmFib3J0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTZXRW
ZXJzaW9uQWJvcnQzKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInRlc3RTZXRWZXJz
aW9uQWJvcnQzKCk6Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiZXZlbnQuY2FuY2VsYWJsZSIpOwor
ICAgIGNoZWNrTWV0YWRhdGFFbXB0eSgpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gc3RhcnRTZXRWZXJzaW9uKCd2ZXJzaW9uIGZhaWwnKSIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gYWRkSURCT2JqZWN0czsKK30KKworZnVuY3Rpb24gYWRkSURCT2JqZWN0cygpCit7
CisgICAgZGVidWcoImFkZElEQk9iamVjdHMoKToiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJldmVu
dC5jYW5jZWxhYmxlIik7CisgICAgdmFyIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwor
ICAgIHRyYW5zLm9uYWJvcnQgPSB0ZXN0SW5hY3RpdmVBYm9ydGVkVHJhbnNhY3Rpb247CisgICAg
dHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOworCisgICAgc3Rv
cmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZUZhaWwn
LCBudWxsKSIpOworICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5jcmVhdGVJ
bmRleCgnaW5kZXhGYWlsJywgJ3gnKSIpOworCisgICAgdHJhbnMuYWJvcnQoKTsKK30KKworZnVu
Y3Rpb24gdGVzdEluYWN0aXZlQWJvcnRlZFRyYW5zYWN0aW9uKCkKK3sKKyAgICBkZWJ1ZygiIik7
CisgICAgZGVidWcoInRlc3RJbmFjdGl2ZUFib3J0ZWRUcmFuc2FjdGlvbigpOiIpOworICAgIGV2
YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4Lm9wZW5DdXJzb3IoKSIsICJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJpbmRleC5vcGVuS2V5Q3Vyc29yKCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJB
TlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5k
ZXguZ2V0KDApIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VS
UiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4LmdldEtleSgwKSIsICJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsKKyAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKCJpbmRleC5jb3VudCgpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRS
QU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOworCisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigi
c3RvcmUucHV0KDAsIDApIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNU
SVZFX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmFkZCgwLCAwKSIs
ICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsKKyAgICBl
dmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5kZWxldGUoMCkiLCAiSURCRGF0YWJhc2VFeGNl
cHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2Vw
dGlvbigic3RvcmUuY2xlYXIoKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9J
TkFDVElWRV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5nZXQoMCki
LCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7CisgICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUub3BlbkN1cnNvcigpIiwgIklEQkRhdGFiYXNl
RXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOworCisgICAgdGVzdFNldFZlcnNp
b25BYm9ydDQoKTsKK30KKworZnVuY3Rpb24gdGVzdFNldFZlcnNpb25BYm9ydDQoKQoreworICAg
IGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidGVzdFNldFZlcnNpb25BYm9ydDQoKToiKTsKKyAgICBj
aGVja01ldGFkYXRhRW1wdHkoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IHN0YXJ0U2V0VmVyc2lvbigndmVyc2lvbiBmYWlsJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGFkZElEQk9iamVjdHNBbmRDb21taXQ7Cit9CisKK2Z1bmN0aW9uIGFkZElEQk9iamVjdHNB
bmRDb21taXQoKQoreworICAgIGRlYnVnKCJhZGRJREJPYmplY3RzQW5kQ29tbWl0KCk6Iik7Cisg
ICAgdmFyIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQg
PSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3Rv
cmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVGYWlsJywgbnVsbCkiKTsKKyAgICBpbmRl
eCA9IGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4RmFpbCcsICd4
JykiKTsKKworICAgIHRyYW5zLm9uY29tcGxldGUgPSB0ZXN0SW5hY3RpdmVDb21wbGV0ZWRUcmFu
c2FjdGlvbjsKK30KKworZnVuY3Rpb24gdGVzdEluYWN0aXZlQ29tcGxldGVkVHJhbnNhY3Rpb24o
KQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidGVzdEluYWN0aXZlQ29tcGxldGVkVHJh
bnNhY3Rpb24oKToiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJpbmRleC5vcGVuQ3Vy
c29yKCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7
CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXgub3BlbktleUN1cnNvcigpIiwgIklE
QkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOworICAgIGV2YWxB
bmRFeHBlY3RFeGNlcHRpb24oImluZGV4LmdldCgwKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5U
UkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJp
bmRleC5nZXRLZXkoMCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJ
VkVfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXguY291bnQoKSIsICJJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsKKworICAgIGV2
YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLnB1dCgwLCAwKSIsICJJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJzdG9yZS5hZGQoMCwgMCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05f
SU5BQ1RJVkVfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuZGVsZXRl
KDApIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOwor
ICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmNsZWFyKCkiLCAiSURCRGF0YWJhc2VF
eGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigic3RvcmUuZ2V0KDApIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9O
X0lOQUNUSVZFX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLm9wZW5D
dXJzb3IoKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIi
KTsKKworICAgIHRlc3RTZXRWZXJzaW9uQWJvcnQ1KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTZXRW
ZXJzaW9uQWJvcnQ1KCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInRlc3RTZXRWZXJz
aW9uQWJvcnQ1KCk6Iik7CisgICAgY2hlY2tNZXRhZGF0YUV4aXN0aW5nT2JqZWN0U3RvcmUoKTsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHN0YXJ0U2V0VmVyc2lvbigndmVy
c2lvbiBmYWlsJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHJlbW92ZUlEQk9iamVjdHM7
Cit9CisKK2Z1bmN0aW9uIHJlbW92ZUlEQk9iamVjdHMoKQoreworICAgIGRlYnVnKCJyZW1vdmVJ
REJPYmplY3RzKCk6Iik7CisgICAgdmFyIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwor
ICAgIHRyYW5zLm9uYWJvcnQgPSB0ZXN0U2V0VmVyc2lvbkFib3J0NjsKKyAgICB0cmFucy5vbmNv
bXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7CisKKyAgICB2YXIgc3RvcmUgPSBl
dmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZUZhaWwnKSIpOworICAg
IGV2YWxBbmRMb2coInN0b3JlLmRlbGV0ZUluZGV4KCdpbmRleEZhaWwnKSIpOworICAgIGV2YWxB
bmRMb2coImRiLmRlbGV0ZU9iamVjdFN0b3JlKCdzdG9yZUZhaWwnKSIpOworCisgICAgdHJhbnMu
YWJvcnQoKTsKK30KKworZnVuY3Rpb24gdGVzdFNldFZlcnNpb25BYm9ydDYoKQoreworICAgIGRl
YnVnKCIiKTsKKyAgICBkZWJ1ZygidGVzdFNldFZlcnNpb25BYm9ydDYoKToiKTsKKyAgICBjaGVj
a01ldGFkYXRhRXhpc3RpbmdPYmplY3RTdG9yZSgpOworICAgIHNldE5ld1ZlcnNpb24oKTsKK30K
KworZnVuY3Rpb24gc3RhcnRTZXRWZXJzaW9uKHZlcnNpb25OYW1lKQoreworICAgIHJlcXVlc3Qg
PSBkYi5zZXRWZXJzaW9uKHZlcnNpb25OYW1lKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXR1cm4gcmVxdWVzdDsKK30KKworZnVuY3Rpb24g
Y2hlY2tNZXRhZGF0YUVtcHR5KCkKK3sKKyAgICBzaG91bGRCZSgic2VsZi5kYi5vYmplY3RTdG9y
ZU5hbWVzIiwgIltdIik7CisgICAgc2hvdWxkQmUoInNlbGYuZGIub2JqZWN0U3RvcmVOYW1lcy5s
ZW5ndGgiLCAiMCIpOworICAgIHNob3VsZEJlKCJzZWxmLmRiLm9iamVjdFN0b3JlTmFtZXMuY29u
dGFpbnMoJ3N0b3JlRmFpbCcpIiwgImZhbHNlIik7Cit9CisKK2Z1bmN0aW9uIGNoZWNrTWV0YWRh
dGFFeGlzdGluZ09iamVjdFN0b3JlKCkKK3sKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVO
YW1lcyIsICJbJ3N0b3JlRmFpbCddIik7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFt
ZXMubGVuZ3RoIiwgIjEiKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5jb250
YWlucygnc3RvcmVGYWlsJykiLCAidHJ1ZSIpOworfQorCitmdW5jdGlvbiBzZXROZXdWZXJzaW9u
KCkKK3sKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNp
b24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IHNldFZlcnNpb25TdWNjZXNzKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInNldFZl
cnNpb25TdWNjZXNzKCk6Iik7CisgICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwi
KTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJh
bnMuYWRkRXZlbnRMaXN0ZW5lcignY29tcGxldGUnLCBjb21wbGV0ZUNhbGxiYWNrLCBmYWxzZSk7
CisgICAgc2VsZi5jb21wbGV0ZUV2ZW50RmlyZWQgPSBmYWxzZTsKKworICAgIGRlbGV0ZUFsbE9i
amVjdFN0b3JlcyhkYik7CisKKyAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgn
c3RvcmVOYW1lJywgbnVsbCkiKTsKK30KKworZnVuY3Rpb24gY29tcGxldGVDYWxsYmFjaygpCit7
CisgICAgc2hvdWxkQmVGYWxzZSgiZXZlbnQuY2FuY2VsYWJsZSIpOworICAgIHRlc3RQYXNzZWQo
ImNvbXBsZXRlIGV2ZW50IGZpcmVkIik7CisgICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJk
Yi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddKSIpOworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQg
PSBhYm9ydENhbGxiYWNrOworICAgIHZhciBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJh
bnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJzdG9yZS5uYW1lIiwgInN0b3JlTmFtZSIpOworfQorCitmdW5jdGlvbiBhYm9ydENh
bGxiYWNrKCkKK3sKKyAgICB0ZXN0UGFzc2VkKCJhYm9ydCBldmVudCBmaXJlZCIpOworICAgIHRl
c3RET01TdHJpbmdMaXN0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RET01TdHJpbmdMaXN0KCkKK3sK
KyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlZlcmlmeWluZyBET01TdHJpbmdMaXN0IHdvcmtz
IGFzIGFyZ3VtZW50IGZvciBJREJEYXRhYmFzZS50cmFuc2FjdGlvbigpIik7CisgICAgZGVidWco
ImRiLm9iamVjdFN0b3JlTmFtZXMgaXMgIiArIGRiLm9iamVjdFN0b3JlTmFtZXMpOworICAgIGRl
YnVnKCIuLi4gd2hpY2ggY29udGFpbnM6ICIgKyBKU09OLnN0cmluZ2lmeShBcnJheS5wcm90b3R5
cGUuc2xpY2UuY2FsbChkYi5vYmplY3RTdG9yZU5hbWVzKSkpOworICAgIGV2YWxBbmRMb2coInRy
YW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oZGIub2JqZWN0U3RvcmVOYW1lcykiKTsKKyAgICB0
ZXN0UGFzc2VkKCJubyBleGNlcHRpb24gdGhyb3duIik7CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aDsgKytpKSB7CisgICAgICBzaG91bGRCZVRydWUo
InRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCIgKyBKU09OLnN0cmluZ2lmeShkYi5vYmplY3RTdG9y
ZU5hbWVzW2ldKSArICIpICE9IG51bGwiKTsKKyAgICB9CisgICAgdGVzdFBhc3NlZCgiYWxsIHN0
b3JlcyBwcmVzZW50IGluIHRyYW5zYWN0aW9uIik7CisgICAgdGVzdEludmFsaWRNb2RlKCk7Cit9
CisKK2Z1bmN0aW9uIHRlc3RJbnZhbGlkTW9kZSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRl
YnVnKCJWZXJpZnkgdGhhdCBzcGVjaWZ5aW5nIGFuIGludmFsaWQgbW9kZSByYWlzZXMgYW4gZXhj
ZXB0aW9uIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oWydz
dG9yZU5hbWUnXSwgMykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9OX1RSQU5TSUVOVF9FUlIi
KTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWNyYXNoLW9uLWFi
b3J0LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0
aW9uLWNyYXNoLW9uLWFib3J0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIzM2ViMDRiZWQxNGM0MmQ0ODA2NzQ5
NzQ5YTk2NmU1Zjg0ZWMzNWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tY3Jhc2gtb24tYWJvcnQuanMKQEAgLTAs
MCArMSwzOSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMo
Jy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0
U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiB0
cmFuc2FjdGlvbiBkb2VzIG5vdCBjcmFzaCBvbiBhYm9ydC4iKTsKKworZnVuY3Rpb24gdGVzdCgp
Cit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJpbmRleGVkREIub3BlbigndHJhbnNhY3Rpb24tY3Jhc2gtb24tYWJvcnQnKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sK
KyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRW
ZXJzaW9uKCcxLjAnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nl
c3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIHNldFZlcnNpb25TdWNjZXNzKCkKK3sKKyAgICBldmFsQW5kTG9nKCJkYi5jcmVh
dGVPYmplY3RTdG9yZSgnZm9vJykiKTsKKyAgICBldmVudC50YXJnZXQucmVzdWx0Lm9uY29tcGxl
dGUgPSBzZXRWZXJzaW9uQ29tcGxldGU7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb25Db21wbGV0
ZSgpCit7CisgICAgZXZhbEFuZExvZygiZGIudHJhbnNhY3Rpb24oJ2ZvbycpIik7CisgICAgZXZh
bEFuZExvZygic2VsZi5nYygpIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tZXZlbnQtcHJvcGFnYXRpb24uanMg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tZXZl
bnQtcHJvcGFnYXRpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQ1YzYxYWJlNWNkMWNkN2ZhZDY4ZjkzM2Y5
MDZiNTk5ZWVmYjVmZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1ldmVudC1wcm9wYWdhdGlvbi5qcwpAQCAtMCww
ICsxLDE0NCBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMo
Jy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0
U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IGV2ZW50IHByb3Bv
Z2F0aW9uIG9uIElEQlRyYW5zYWN0aW9uLiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBy
ZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVk
REIub3BlbigndHJhbnNhY3Rpb24tZXZlbnQtcHJvcGFnYXRpb24nKSIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gc2V0VmVyc2lvbjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbigpCit7CisgICAgZGIgPSBl
dmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVsZXRlRXhpc3RpbmcoKQoreworICAg
IHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsK
KyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9
IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxl
dGUgPSBzdGFydFRlc3QiKTsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAg
ICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3Jl
TmFtZScsIG51bGwpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDog
J3ZhbHVlJywgeTogJ3p6eid9LCAna2V5JykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc3RhcnRUZXN0KCkKK3sKKyAgICBk
ZWJ1ZygiVmVyaWZpbmcgYWJvcnQiKTsKKyAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0g
ZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSki
KTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmFib3J0ID0gYWJvcnRGaXJlZENhbGxiYWNrIik7
CisgICAgZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRBYm9ydENhbGxi
YWNrIik7CisgICAgZXZhbEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBkYkFi
b3J0Q2FwdHVyZUNhbGxiYWNrLCB0cnVlKSIpOworICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50
TGlzdGVuZXIoJ2Fib3J0JywgZGJBYm9ydEJ1YmJsZUNhbGxiYWNrLCBmYWxzZSkiKTsKKyAgICBl
dmFsQW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdjb21wbGV0ZScsIHVuZXhwZWN0ZWRDb21w
bGV0ZUNhbGxiYWNrLCB0cnVlKSIpOworICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50TGlzdGVu
ZXIoJ2NvbXBsZXRlJywgdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2ssIGZhbHNlKSIpOworICAg
IHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1l
JykiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwg
J2tleScpIik7CisgICAgZGJDYXB0dXJlRmlyZWQgPSBmYWxzZTsKKyAgICBhYm9ydEZpcmVkID0g
ZmFsc2U7CisgICAgZGJCdWJibGVGaXJlZDEgPSBmYWxzZTsKK30KKworZnVuY3Rpb24gZGJBYm9y
dENhcHR1cmVDYWxsYmFjaygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJJbiBJREJE
YXRhYmFzZSBhYm9ydCBjYXB0dXJlIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGJDYXB0dXJlRmly
ZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJhYm9ydEZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxz
ZSgiZGJCdWJibGVGaXJlZDEiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0IiwgInRyYW5z
Iik7CisgICAgc2hvdWxkQmUoImV2ZW50LmN1cnJlbnRUYXJnZXQiLCAiZGIiKTsKKyAgICBkYkNh
cHR1cmVGaXJlZCA9IHRydWU7Cit9CisKK2Z1bmN0aW9uIGFib3J0RmlyZWRDYWxsYmFjaygpCit7
CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJJbiBhYm9ydCBoYW5kbGVyIik7CisgICAgc2hv
dWxkQmVUcnVlKCJkYkNhcHR1cmVGaXJlZCIpOworICAgIHNob3VsZEJlRmFsc2UoImFib3J0Rmly
ZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVkMSIpOworICAgIHNob3VsZEJl
KCJldmVudC50YXJnZXQiLCAidHJhbnMiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQuY3VycmVudFRh
cmdldCIsICJ0cmFucyIpOworICAgIGFib3J0RmlyZWQgPSB0cnVlOworfQorCitmdW5jdGlvbiBk
YkFib3J0QnViYmxlQ2FsbGJhY2soKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiSW4g
SURCRGF0YWJhc2UgZXJyb3IgYnViYmxlIik7CisgICAgc2hvdWxkQmVUcnVlKCJkYkNhcHR1cmVG
aXJlZCIpOworICAgIHNob3VsZEJlVHJ1ZSgiYWJvcnRGaXJlZCIpOworICAgIHNob3VsZEJlRmFs
c2UoImRiQnViYmxlRmlyZWQxIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldCIsICJ0cmFu
cyIpOworICAgIHNob3VsZEJlKCJldmVudC5jdXJyZW50VGFyZ2V0IiwgImRiIik7CisgICAgZGJC
dWJibGVGaXJlZDEgPSB0cnVlOworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVmVyaWZpbmcg
c3VjY2Vzcy4iKTsKKyAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rp
b24oWydzdG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICBldmFs
QW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gY29tcGxldGVGaXJlZENhbGxiYWNrIik7CisgICAg
ZXZhbEFuZExvZygidHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrIik7Cisg
ICAgZXZhbEFuZExvZygiZGIucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBkYkFib3J0Q2Fw
dHVyZUNhbGxiYWNrLCB0cnVlKSIpOworICAgIGV2YWxBbmRMb2coImRiLnJlbW92ZUV2ZW50TGlz
dGVuZXIoJ2Fib3J0JywgZGJBYm9ydEJ1YmJsZUNhbGxiYWNrLCBmYWxzZSkiKTsKKyAgICBldmFs
QW5kTG9nKCJkYi5yZW1vdmVFdmVudExpc3RlbmVyKCdjb21wbGV0ZScsIHVuZXhwZWN0ZWRDb21w
bGV0ZUNhbGxiYWNrLCB0cnVlKSIpOworICAgIGV2YWxBbmRMb2coImRiLnJlbW92ZUV2ZW50TGlz
dGVuZXIoJ2NvbXBsZXRlJywgdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2ssIGZhbHNlKSIpOwor
ICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50TGlzdGVuZXIoJ2NvbXBsZXRlJywgZGJDb21wbGV0
ZUNhcHR1cmVDYWxsYmFjaywgdHJ1ZSkiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5hZGRFdmVudExp
c3RlbmVyKCdjb21wbGV0ZScsIGRiQ29tcGxldGVCdWJibGVDYWxsYmFjaywgZmFsc2UpIik7Cisg
ICAgZXZhbEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCB1bmV4cGVjdGVkQWJv
cnRDYWxsYmFjaywgdHJ1ZSkiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVy
KCdhYm9ydCcsIHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrLCBmYWxzZSkiKTsKKyAgICBzdG9yZSA9
IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Cisg
ICAgZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXkyJyki
KTsKKyAgICBkYkNhcHR1cmVGaXJlZCA9IGZhbHNlOworICAgIGNvbXBsZXRlRmlyZWQgPSBmYWxz
ZTsKKyAgICBkYkJ1YmJsZUZpcmVkMiA9IGZhbHNlOworfQorCitmdW5jdGlvbiBkYkNvbXBsZXRl
Q2FwdHVyZUNhbGxiYWNrKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIkluIElEQkRh
dGFiYXNlIGNvbXBsZXRlIGNhcHR1cmUiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJkYkNhcHR1cmVG
aXJlZCIpOworICAgIHNob3VsZEJlRmFsc2UoImNvbXBsZXRlRmlyZWQiKTsKKyAgICBzaG91bGRC
ZUZhbHNlKCJkYkJ1YmJsZUZpcmVkMiIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAi
dHJhbnMiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQuY3VycmVudFRhcmdldCIsICJkYiIpOworICAg
IGRiQ2FwdHVyZUZpcmVkID0gdHJ1ZTsKK30KKworZnVuY3Rpb24gY29tcGxldGVGaXJlZENhbGxi
YWNrKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIkluIElEQlJlcXVlc3QgaGFuZGxl
ciIpOworICAgIHNob3VsZEJlVHJ1ZSgiZGJDYXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRCZUZh
bHNlKCJjb21wbGV0ZUZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVGaXJlZDIi
KTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0IiwgInRyYW5zIik7CisgICAgc2hvdWxkQmUo
ImV2ZW50LmN1cnJlbnRUYXJnZXQiLCAidHJhbnMiKTsKKyAgICBjb21wbGV0ZUZpcmVkID0gdHJ1
ZTsKKyAgICBkZWJ1ZygiIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIGRi
Q29tcGxldGVCdWJibGVDYWxsYmFjaygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJJ
biBJREJEYXRhYmFzZSBjb21wbGV0ZSBidWJibGUiKTsKKyAgICB0ZXN0RmFpbGVkKCJDb21wbGV0
ZSBidWJibGUgY2FsbGJhY2sgc2hvdWxkIE5PVCBmaXJlIik7CisgICAgZGJCdWJibGVGaXJlZDIg
PSB0cnVlOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9u
LXJlYWQtb25seS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90
cmFuc2FjdGlvbi1yZWFkLW9ubHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDk0M2EzMWNmZDdiNWFhMGM3MTdk
YTEzZDdhZmQwOWYxMGEzOWJhZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1yZWFkLW9ubHkuanMKQEAgLTAsMCAr
MSw1OCBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4u
Ly4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2Ny
aXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IHJlYWQtb25seSB0cmFu
c2FjdGlvbnMgaW4gSW5kZXhlZERCLiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1v
dmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWRE
Qi5vcGVuKCd0cmFuc2FjdGlvbi1yZWFkLW9ubHknKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygib3BlblN1
Y2Nlc3MoKToiKTsKKyAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlc3VsdCA9IGRiLnNldFZlcnNp
b24oJ3ZlcnNpb24gMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNl
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIp
OworCisgICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5vbmNvbXBsZXRlID0gc2V0VmVyc2lvbkRvbmU7
CisgICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJh
Y2s7CisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdzdG9yZScpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCd4JywgJ3knKSIpOworfQor
CitmdW5jdGlvbiBzZXRWZXJzaW9uRG9uZSgpCit7CisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0
cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScpIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2Vw
dGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KCdhJywgJ2InKSIsICJJREJEYXRh
YmFzZUV4Y2VwdGlvbi5SRUFEX09OTFlfRVJSIik7CisKKyAgICB0cmFucyA9IGV2YWxBbmRMb2co
InRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJykiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJ0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKS5kZWxldGUoJ3gnKSIsICJJREJEYXRh
YmFzZUV4Y2VwdGlvbi5SRUFEX09OTFlfRVJSIik7CisKKyAgICB0cmFucyA9IGV2YWxBbmRMb2co
InRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJykiKTsKKyAgICBjdXIgPSBldmFsQW5kTG9n
KCJjdXIgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKS5vcGVuQ3Vyc29yKCkiKTsKKyAgICBj
dXIub25zdWNjZXNzID0gZ290Q3Vyc29yOworICAgIGN1ci5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGdvdEN1cnNvcigpCit7CisgICAgc2hvdWxkQmVG
YWxzZSgiIWV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJldmVudC50YXJnZXQucmVzdWx0LmRlbGV0ZSgpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlJF
QURfT05MWV9FUlIiKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rp
b24tcm9sbGJhY2suanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
dHJhbnNhY3Rpb24tcm9sbGJhY2suanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGQ4NDgzM2FiNjA5ZjMyNDU1OWE1
YWU0NTc2NGJjOGE2NmE0NTEwMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1yb2xsYmFjay5qcwpAQCAtMCwwICsx
LDkxIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3Jp
cHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIHRyYW5z
YWN0aW9uIHJvbGxiYWNrLiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5k
b3JQcmVmaXhlcygpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVu
KCd0cmFuc2FjdGlvbi1yb2xsYmFjaycpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVu
U3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
K30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJvcGVuU3VjY2Vzcygp
OiIpOworICAgIHNlbGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3Zl
cnNpb24gMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biBjbGVhbkRhdGFiYXNlKCkKK3sKKyAgICBkZWJ1ZygiY2xlYW5EYXRhYmFzZSgpOiIpOworICAg
IHNlbGYudHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7CisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHNldFZlcnNpb25Db21wbGV0ZTsK
KworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisgICAgZXZhbEFuZExvZygiZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ215T2JqZWN0U3RvcmUnKSIpOworICAgIHNob3VsZEJlKCJkYi5vYmpl
Y3RTdG9yZU5hbWVzLmxlbmd0aCIsICIxIik7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb25Db21w
bGV0ZSgpCit7CisgICAgZGVidWcoInNldFZlcnNpb25Db21wbGV0ZSgpOiIpOworCisgICAgc2Vs
Zi50cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24o
WydteU9iamVjdFN0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgdHJh
bnNhY3Rpb24ub25hYm9ydCA9IGFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnNhY3Rpb24ub25jb21w
bGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOworCisgICAgc2VsZi5zdG9yZSA9IGV2
YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ215T2JqZWN0U3RvcmUn
KSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoJ3JvbGxiYWNrVmFsdWUn
LCAncm9sbGJhY2tLZXkxMjMnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkU3VjY2Vz
czsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKwor
ZnVuY3Rpb24gYWRkU3VjY2VzcygpCit7CisgICAgZGVidWcoImFkZFN1Y2Nlc3MoKToiKTsKKyAg
ICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICIncm9sbGJhY2tLZXkxMjMnIik7CisK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUub3BlbkN1cnNvcigpIik7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBvcGVuQ3Vyc29yU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlbkN1cnNvclN1Y2Nl
c3MoKQoreworICAgIGRlYnVnKCJvcGVuQ3Vyc29yU3VjY2VzcygpOiIpOworICAgIHNlbGYuY3Vy
c29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAg
dHJhbnNhY3Rpb24uYWJvcnQoKTsKK30KKworZnVuY3Rpb24gYWJvcnRDYWxsYmFjaygpCit7Cisg
ICAgZGVidWcoImFib3J0Q2FsbGJhY2soKToiKTsKKyAgICBkZWJ1ZygnVHJhbnNhY3Rpb24gd2Fz
IGFib3J0ZWQuJyk7CisKKyAgICBzZWxmLnRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNh
Y3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ215T2JqZWN0U3RvcmUnXSwgSURCVHJhbnNhY3Rpb24u
UkVBRCkiKTsKKyAgICBzZWxmLnN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlv
bi5vYmplY3RTdG9yZSgnbXlPYmplY3RTdG9yZScpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInN0b3JlLmdldCgncm9sbGJhY2tLZXkxMjMnKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0U3Vj
Y2VzczsKK30KKworZnVuY3Rpb24gZ2V0U3VjY2VzcygpCit7CisgICAgZGVidWcoImdldFN1Y2Nl
c3MoKToiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ1bmRlZmluZWQi
KTsKKworICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAiJ3JvbGxiYWNrVmFsdWUnIik7Cisg
ICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
dHJhbnNhY3Rpb24tc3RvcmVOYW1lcy1yZXF1aXJlZC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1zdG9yZU5hbWVzLXJlcXVpcmVkLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmU1YTNlZDEyYWFjOGE4MDQ5Yjk4ODc3NDA5NWQ1YmUyZTVhNjQyZWQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJh
bnNhY3Rpb24tc3RvcmVOYW1lcy1yZXF1aXJlZC5qcwpAQCAtMCwwICsxLDM2IEBACitpZiAodGhp
cy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMn
KTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCOiB0cmFuc2FjdGlvbiBzdG9yZU5h
bWVzIHJlcXVpcmVkIGFyZ3VtZW50cyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1v
dmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7
CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBk
YiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNyZWF0
ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jlcyhk
Yik7CisKKyAgICBzaG91bGRUaHJvdygiZGIudHJhbnNhY3Rpb24oKTsiKTsKKyAgICBmaW5pc2hK
U1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90d28tdmVyc2lv
bi1jaGFuZ2VzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3R3
by12ZXJzaW9uLWNoYW5nZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTY2ZTUxNGU2NTI1ZDFlODYyMGNjN2I5
Y2Q4Y2Y3MjMyMTM0MDczZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy90d28tdmVyc2lvbi1jaGFuZ2VzLmpzCkBAIC0wLDAgKzEsMTA2
IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRz
KCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgYmVoYXZpb3Igd2hlbiB0aGUg
c2FtZSBjb25uZWN0aW9uIGNhbGxzIHNldFZlcnNpb24gdHdpY2UiKTsKKworZnVuY3Rpb24gdGVz
dCgpIHsKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgc2hvdWxkQmVGYWxzZSgi
aW5kZXhlZERCID09IG51bGwiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJJREJUcmFuc2FjdGlvbiA9
PSBudWxsIik7CisgICAgb3BlbkRCQ29ubmVjdGlvbigpOworfQorCitmdW5jdGlvbiBvcGVuREJD
b25uZWN0aW9uKCkKK3sKKyAgICBldmFsQW5kTG9nKCJzZWxmLnN0YXRlID0gJ3N0YXJ0aW5nJyIp
OworICAgIHZhciByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3R3by12ZXJz
aW9ucy1vbmUtY29ubmVjdGlvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3Vj
Y2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30K
KworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIHNlbGYuZGIgPSBldmFsQW5kTG9nKCJk
YiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBldmFsQW5kTG9nKCJzZWxmLnN0YXRlID0g
MCIpOworCisgICAgdmFyIHZlcnNpb25DaGFuZ2VSZXF1ZXN0MSA9IGV2YWxBbmRMb2coImRiLnNl
dFZlcnNpb24oJ3ZlcnNpb24gMScpIik7CisgICAgdmVyc2lvbkNoYW5nZVJlcXVlc3QxLm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB2ZXJzaW9uQ2hhbmdlUmVxdWVzdDEu
b25zdWNjZXNzID0gaW5TZXRWZXJzaW9uMTsKKworICAgIC8vIGFuZCBjb25jdXJyZW50bHkuLi4K
KworICAgIHZhciB2ZXJzaW9uQ2hhbmdlUmVxdWVzdDIgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJz
aW9uKCd2ZXJzaW9uIDInKSIpOworICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0Mi5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgdmVyc2lvbkNoYW5nZVJlcXVlc3QyLm9uc3Vj
Y2VzcyA9IGluU2V0VmVyc2lvbjI7Cit9CisKK2Z1bmN0aW9uIGluU2V0VmVyc2lvbjEoKQorewor
ICAgIGRlYnVnKCJzZXRWZXJzaW9uKCkgIzEgY2FsbGJhY2siKTsKKyAgICB0cmFucyA9IGV2ZW50
LnRhcmdldC5yZXN1bHQ7CisgICAgZXZhbEFuZExvZygic2VsZi5zdG9yZTEgPSBkYi5jcmVhdGVP
YmplY3RTdG9yZSgndGVzdC1zdG9yZTEnKSIpOworICAgIHNob3VsZEJlKCIrK3NlbGYuc3RhdGUi
LCAiMSIpOworICAgIHZhciByZXEgPSBldmFsQW5kTG9nKCJzZWxmLnN0b3JlMS5wdXQoJ2FhYScs
IDExMSkiKTsKKyAgICByZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAg
IHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZSkgeworICAgICAgICBzaG91bGRCZSgiKytzZWxm
LnN0YXRlIiwgIjIiKTsKKyAgICAgICAgaGFsZndheURvbmUoKTsKKyAgICB9OworfQorCitmdW5j
dGlvbiBpblNldFZlcnNpb24yKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvbigpICMyIGNhbGxi
YWNrIik7CisgICAgdHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgIHNob3VsZEJlKCIr
K3NlbGYuc3RhdGUiLCAiNCIpOworICAgIGV2YWxBbmRMb2coInNlbGYuc3RvcmUyID0gZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ3Rlc3Qtc3RvcmUyJykiKTsKKworICAgIHZhciByZXEgPSBldmFsQW5k
TG9nKCJzZWxmLnN0b3JlMi5wdXQoJ2JiYicsIDIyMikiKTsKKyAgICByZXEub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZSkg
eworICAgICAgICBzaG91bGRCZSgiKytzZWxmLnN0YXRlIiwgIjUiKTsKKyAgICAgICAgaGFsZndh
eURvbmUoKTsKKyAgICB9OworfQorCit2YXIgY291bnRlciA9IDA7CitmdW5jdGlvbiBoYWxmd2F5
RG9uZSgpIAoreworICAgIGNvdW50ZXIgKz0gMTsKKyAgICBpZiAoY291bnRlciA8IDIpIHsKKyAg
ICAgICAgc2hvdWxkQmUoIisrc2VsZi5zdGF0ZSIsICIzIik7CisgICAgICAgIGRlYnVnKCJoYWxm
d2F5IHRoZXJlLi4uIiApOworICAgIH0gZWxzZSB7CisgICAgICAgIHNob3VsZEJlKCIrK3NlbGYu
c3RhdGUiLCAiNiIpOworICAgICAgICBjaGVja1Jlc3VsdHMoKTsKKyAgICB9Cit9CisKK2Z1bmN0
aW9uIGNoZWNrUmVzdWx0cygpIHsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNlbGYuZGIu
dmVyc2lvbiIsICJ2ZXJzaW9uIDIiKTsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gc2V0VmVyc2lv
bkNvbXBsZXRlOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uQ29tcGxldGUoKQoreworICAgIHRy
YW5zID0gZXZhbEFuZExvZygic2VsZi50cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsndGVzdC1zdG9y
ZTEnLCAndGVzdC1zdG9yZTInXSkiKTsKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInNlbGYuc3Rv
cmUgPSBzZWxmLnRyYW5zLm9iamVjdFN0b3JlKCd0ZXN0LXN0b3JlMScpIik7CisgICAgcmVxID0g
ZXZhbEFuZExvZygic2VsZi5yZXEgPSBzZWxmLnN0b3JlLmdldCgxMTEpIik7CisgICAgcmVxLm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXEub25zdWNjZXNzID0gZnVu
Y3Rpb24gKGUpIHsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQu
cmVzdWx0IiwgImFhYSIpOworCisgICAgICAgIHN0b3JlID0gZXZhbEFuZExvZygic2VsZi5zdG9y
ZSA9IHNlbGYudHJhbnMub2JqZWN0U3RvcmUoJ3Rlc3Qtc3RvcmUyJykiKTsKKyAgICAgICAgcmVx
ID0gZXZhbEFuZExvZygic2VsZi5yZXEgPSBzZWxmLnN0b3JlLmdldCgyMjIpIik7CisgICAgICAg
IHJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcS5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbiAoZSkgeworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJldmVudC50YXJnZXQucmVzdWx0IiwgImJiYiIpOworICAgICAgICAgICAgZmluaXNoSlNUZXN0
KCk7CisgICAgICAgIH07CisgICAgfTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy92YWx1ZS11bmRlZmluZWQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvdmFsdWUtdW5kZWZpbmVkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5NzAzM2M3ODdjZmRhYjY1
NWQzN2MxNjYxMzVjZjhkNzFkNzBiNGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdmFsdWUtdW5kZWZpbmVkLmpzCkBAIC0wLDAgKzEs
NjYgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8u
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlw
dHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgdW5kZWZp
bmVkIGFzIHJlY29yZCB2YWx1ZSIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVW
ZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Cisg
ICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9
IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUFu
ZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7
CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ2ZvbycpOyIpOworICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coInJlc3VsdCA9
IG9iamVjdFN0b3JlLmFkZCh1bmRlZmluZWQsIEluZmluaXR5KTsiKTsKKyAgICByZXN1bHQub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBn
ZXRWYWx1ZTsKK30KKworZnVuY3Rpb24gZ2V0VmFsdWUoKQoreworICAgIHJlc3VsdCA9IGV2YWxB
bmRMb2coInJlc3VsdCA9IG9iamVjdFN0b3JlLmdldChJbmZpbml0eSk7Iik7CisgICAgcmVzdWx0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXN1bHQub25zdWNjZXNz
ID0gY2hlY2tWYWx1ZTsKK30KKworZnVuY3Rpb24gY2hlY2tWYWx1ZSgpCit7CisgICAgdmFsdWUg
PSBldmFsQW5kTG9nKCJ2YWx1ZSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgc2hvdWxk
QmUoInZhbHVlIiwgInVuZGVmaW5lZCIpOworICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coInJlc3Vs
dCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsKKyAgICByZXN1bHQub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBjaGVja0N1cnNv
cjsKK30KKworZnVuY3Rpb24gY2hlY2tDdXJzb3IoKQoreworICAgIGN1cnNvciA9IGV2YWxBbmRM
b2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgaWYgKGN1cnNvcikgewor
ICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJJbmZpbml0eSIpOworICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLnZhbHVlIiwgInVuZGVmaW5lZCIpOworICAgIH0gZWxzZSB7CisgICAgICAg
IHRlc3RGYWlsZWQoImN1cnNvciBpcyBudWxsIik7CisgICAgfQorICAgIGZpbmlzaEpTVGVzdCgp
OworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3ZhbHVlcy1vZGQtdHlwZXMu
anMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdmFsdWVzLW9kZC10
eXBlcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jYWUxMTViY2RlYjBiZjZmZjI2NWQ5MWFhOTk0NGU1NjhiNTZm
NGQ1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL3ZhbHVlcy1vZGQtdHlwZXMuanMKQEAgLTAsMCArMSw3OCBAQAoraWYgKHRoaXMuaW1w
b3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9
CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBvZGQgdmFsdWUgZGF0YXR5cGVzIik7CisK
K2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBu
YW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0
IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFt
ZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50
YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRi
LnNldFZlcnNpb24oJzEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkS2V5MTsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rp
b24gYWRkS2V5MSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9i
amVjdFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycsIHthdXRv
SW5jcmVtZW50OiB0cnVlfSk7Iik7CisKKyAgICBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdjYW52YXMnKTsKKyAgICBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7Cisg
ICAgaW1hZ2VkYXRhID0gY29udGV4dC5jcmVhdGVJbWFnZURhdGEoMSwgMSk7CisgICAgdmFsaWRU
eXBlcyA9IFt7IGRlc2NyaXB0aW9uOiAncmVnZXhwJywgICAgdmFsdWU6IG5ldyBSZWdFeHAoJ1xc
XFwnKSB9LAorICAgICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ2RhdGUnLCAgICAgIHZh
bHVlOiBuZXcgRGF0ZSgwKSB9LAorICAgICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ29i
amVjdCcsICAgIHZhbHVlOiBuZXcgT2JqZWN0KCkgfSwKKyAgICAgICAgICAgICAgICAgIHsgZGVz
Y3JpcHRpb246ICdpbWFnZWRhdGEnLCB2YWx1ZTogaW1hZ2VkYXRhIH0sCisgICAgXTsKKyAgICBu
ZXh0VG9BZGQgPSAwOworICAgIGFkZERhdGEoKTsKK30KKworZnVuY3Rpb24gYWRkRGF0YSgpCit7
CisgICAgZGVidWcoImFkZGluZyAiICsgdmFsaWRUeXBlc1tuZXh0VG9BZGRdLmRlc2NyaXB0aW9u
ICsgIiB2YWx1ZSIpOworICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCh2
YWxpZFR5cGVzW25leHRUb0FkZF0udmFsdWUpIik7CisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9ICsr
bmV4dFRvQWRkIDwgdmFsaWRUeXBlcy5sZW5ndGggPyBhZGREYXRhIDogb3BlbkFDdXJzb3I7Cisg
ICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rp
b24gb3BlbkFDdXJzb3IoKQoreworICAgIHZhbHVlSW5kZXggPSAwOworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2co
ImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICAgIGlmIChjdXJzb3IpIHsK
KyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUudG9TdHJpbmcoKSIsICJ2YWxpZFR5
cGVzW3ZhbHVlSW5kZXhdLnZhbHVlLnRvU3RyaW5nKCkiKTsKKyAgICAgICAgICAgIGlmICh2YWx1
ZUluZGV4ID09IDEpIHsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLnRv
VVRDU3RyaW5nKCkiLCAiJ1RodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDAgR01UJyIpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgaWYgKHZhbHVlSW5kZXggPT0gMykgeworICAgICAgICAgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2lkdGgiLCAiMSIpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisgICAgICAgICAg
ICBldmFsQW5kTG9nKCJ2YWx1ZUluZGV4Kys7Iik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordGVz
dCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy92ZXJzaW9uLWNoYW5nZS1hYm9ydC5qcyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy92ZXJzaW9uLWNoYW5nZS1hYm9y
dC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wYjQ0NzE3MmZiZTgwZjFjZTFkZTI4M2EzNWZkY2RjMTgwNDUwZDkz
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL3ZlcnNpb24tY2hhbmdlLWFib3J0LmpzCkBAIC0wLDAgKzEsODkgQEAKK2lmICh0aGlzLmlt
cG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOwor
fQorCitkZXNjcmlwdGlvbigiRW5zdXJlIHRoYXQgYWJvcnRlZCBWRVJTSU9OX0NIQU5HRSB0cmFu
c2FjdGlvbnMgYXJlIGNvbXBsZXRlbHkgcm9sbGVkIGJhY2siKTsKKworZnVuY3Rpb24gdGVzdCgp
IHsKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAgIG9wZW5EQkNvbm5lY3Rpb24oKTsK
K30KKworZnVuY3Rpb24gb3BlbkRCQ29ubmVjdGlvbigpCit7CisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImluZGV4ZWREQi5vcGVuKCd2ZXJzaW9uLWNoYW5nZS1hYm9ydCcpIik7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAg
IHNlbGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBk
ZWJ1ZygiIik7CisKKyAgICBldmFsQW5kTG9nKCJ2Y3JlcSA9IGRiLnNldFZlcnNpb24oJ3ZlcnNp
b24gMScpIik7CisgICAgdmNyZXEub25zdWNjZXNzID0gaW5TZXRWZXJzaW9uMTsKKyAgICB2Y3Jl
cS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGluU2V0
VmVyc2lvbjEoKQoreworICAgIGRlYnVnKCJzZXRWZXJzaW9uMSgpIGNhbGxiYWNrIik7CisgICAg
c2hvdWxkQmVUcnVlKCJ2Y3JlcS5yZXN1bHQgaW5zdGFuY2VvZiBJREJUcmFuc2FjdGlvbiIpOwor
ICAgIHRyYW5zID0gdmNyZXEucmVzdWx0OworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVk
QWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHNldFZlcnNpb24xQ29tcGxldGU7CisKKyAgICBl
dmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTEnKSIpOworfQor
CitmdW5jdGlvbiBzZXRWZXJzaW9uMUNvbXBsZXRlKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lv
bjEgY29tcGxldGUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLnZlcnNpb24iLCAi
dmVyc2lvbiAxIik7CisgICAgZGVidWcoIiIpOworCisgICAgZXZhbEFuZExvZygidmNyZXEgPSBk
Yi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDInKSIpOworICAgIHZjcmVxLm9uc3VjY2VzcyA9IGluU2V0
VmVyc2lvbjI7CisgICAgdmNyZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBpblNldFZlcnNpb24yKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvbjIo
KSBjYWxsYmFjayIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGIudmVyc2lvbiIsICJ2
ZXJzaW9uIDIiKTsKKyAgICBzaG91bGRCZVRydWUoInZjcmVxLnJlc3VsdCBpbnN0YW5jZW9mIElE
QlRyYW5zYWN0aW9uIik7CisgICAgdHJhbnMgPSB2Y3JlcS5yZXN1bHQ7CisgICAgdHJhbnMub25h
Ym9ydCA9IHNldFZlcnNpb24yQWJvcnQ7CisgICAgdHJhbnMub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQ29tcGxldGVD
YWxsYmFjazsKKworICAgIGV2YWxBbmRMb2coInN0b3JlID0gZGIuZGVsZXRlT2JqZWN0U3RvcmUo
J3N0b3JlMScpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9y
ZSgnc3RvcmUyJykiKTsKKworICAgIC8vIEVuc3VyZSB0aGUgdGVzdCBoYXJuZXNzIGVycm9yIGhh
bmRsZXIgaXMgbm90IGludm9rZWQuCisgICAgc2VsZi5vcmlnaW5hbFdpbmRvd09uRXJyb3IgPSBz
ZWxmLm9uZXJyb3I7CisgICAgc2VsZi5vbmVycm9yID0gbnVsbDsKKworICAgIGRlYnVnKCJyYWlz
aW5nIGV4Y2VwdGlvbiIpOworICAgIHRocm93IG5ldyBFcnJvcigiVGhpcyBzaG91bGQgKk5PVCog
YmUgY2F1Z2h0ISIpOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uMkFib3J0KCkKK3sKKyAgICBk
ZWJ1ZygiIik7CisgICAgZGVidWcoInNldFZlcnNpb24yQWJvcnQoKSBjYWxsYmFjayIpOworCisg
ICAgLy8gUmVzdG9yZSB0ZXN0IGhhcm5lc3MgZXJyb3IgaGFuZGxlci4KKyAgICBzZWxmLm9uZXJy
b3IgPSBzZWxmLm9yaWdpbmFsV2luZG93T25FcnJvcjsKKworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygiZGIudmVyc2lvbiIsICJ2ZXJzaW9uIDEiKTsKKyAgICBzaG91bGRCZVRydWUoImRiLm9i
amVjdFN0b3JlTmFtZXMuY29udGFpbnMoJ3N0b3JlMScpIik7CisgICAgc2hvdWxkQmVGYWxzZSgi
ZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucygnc3RvcmUyJykiKTsKKworICAgIGZpbmlzaEpT
VGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3ZlcnNpb24tY2hh
bmdlLWV4Y2x1c2l2ZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy92ZXJzaW9uLWNoYW5nZS1leGNsdXNpdmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODFhYTU4YTg4MzI5NWU0
NzEyN2Q2YTkzMTY0YmJjZWQ4MzliMDkxYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy92ZXJzaW9uLWNoYW5nZS1leGNsdXNpdmUuanMK
QEAgLTAsMCArMSw3MCBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNj
cmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAg
aW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJFbnN1cmUgVkVS
U0lPTl9DSEFOR0UgdHJhbnNhY3Rpb24gZG9lc24ndCBydW4gY29uY3VycmVudGx5IHdpdGggb3Ro
ZXIgdHJhbnNhY3Rpb25zIik7CisKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgcmVtb3ZlVmVuZG9y
UHJlZml4ZXMoKTsKKyAgICBvcGVuREJDb25uZWN0aW9uKCk7Cit9CisKK2Z1bmN0aW9uIG9wZW5E
QkNvbm5lY3Rpb24oKQoreworICAgIGV2YWxBbmRMb2coInNlbGYuc3RhdGUgPSAnc3RhcnRpbmcn
Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCd2ZXJzaW9uLWNo
YW5nZS1leGNsdXNpdmUnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBl
dmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICBkZWJ1ZygiY2FsbGluZyBzZXRWZXJzaW9uKCkg
LSBjYWxsYmFjayBzaG91bGQgcnVuIGltbWVkaWF0ZWx5Iik7CisgICAgdmFyIHZlcnNpb25DaGFu
Z2VSZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsKKyAg
ICB2ZXJzaW9uQ2hhbmdlUmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CisgICAgdmVyc2lvbkNoYW5nZVJlcXVlc3Qub25zdWNjZXNzID0gaW5TZXRWZXJzaW9uOworCisg
ICAgLy8gYW5kIGNvbmN1cnJlbnRseS4uLgorCisgICAgZGVidWcoImNhbGxpbmcgb3BlbigpIC0g
Y2FsbGJhY2sgc2hvdWxkIHdhaXQgdW50aWwgVkVSU0lPTl9DSEFOR0UgdHJhbnNhY3Rpb24gaXMg
Y29tcGxldGUiKTsKKyAgICB2YXIgb3BlblJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
b3BlbigndmVyc2lvbi1jaGFuZ2UtZXhjbHVzaXZlJykiKTsKKyAgICBvcGVuUmVxdWVzdC5vbnN1
Y2Nlc3MgPSBvcGVuQWdhaW5TdWNjZXNzOworICAgIG9wZW5SZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gaW5TZXRWZXJzaW9uKCkKK3sKKyAg
ICBkZWJ1Zygic2V0VmVyc2lvbigpIGNhbGxiYWNrIik7CisgICAgZGVidWcoInN0YXJ0aW5nIHdv
cmsgaW4gVkVSU0lPTl9DSEFOR0UgdHJhbnNhY3Rpb24iKTsKKyAgICBldmFsQW5kTG9nKCJzZWxm
LnN0YXRlID0gJ1ZFUlNJT05fQ0hBTkdFIHN0YXJ0ZWQnIik7CisKKyAgICBzZWxmLnN0b3JlID0g
ZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgndGVzdC1zdG9yZScpIik7
CisgICAgc2VsZi5jb3VudCA9IDA7CisgICAgZG9fYXN5bmNfcHV0cygpOworCisgICAgZnVuY3Rp
b24gZG9fYXN5bmNfcHV0cygpIHsKKyAgICAgICAgdmFyIHJlcSA9IGV2YWxBbmRMb2coInN0b3Jl
LnB1dCgiICsgY291bnQgKyAiLCAiICsgY291bnQgKyAiKSIpOworICAgICAgICByZXEub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXEub25zdWNjZXNzID0gZnVu
Y3Rpb24gKGUpIHsKKyAgICAgICAgICAgIGRlYnVnKCJpbiBwdXQncyBvbnN1Y2Nlc3MiKTsKKyAg
ICAgICAgICAgIGlmICgrK3NlbGYuY291bnQgPCAxMCkgeworICAgICAgICAgICAgICAgIGRvX2Fz
eW5jX3B1dHMoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGVidWco
ImVuZGluZyB3b3JrIGluIFZFUlNJT05fQ0hBTkdFIHRyYW5zYWN0aW9uIik7CisgICAgICAgICAg
ICAgICAgZXZhbEFuZExvZygic2VsZi5zdGF0ZSA9ICdWRVJTSU9OX0NIQU5HRSBmaW5pc2hlZCci
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIG9wZW5B
Z2FpblN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJvcGVuKCkgY2FsbGJhY2sgLSB0aGlzIHNob3Vs
ZCBhcHBlYXIgYWZ0ZXIgVkVSU0lPTl9DSEFOR0UgdHJhbnNhY3Rpb24gZW5kcyIpOworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygic2VsZi5zdGF0ZSIsICJWRVJTSU9OX0NIQU5HRSBmaW5pc2hl
ZCIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL3ZlcnNpb25jaGFuZ2VyZXF1ZXN0LWFjdGl2ZWRvbW9iamVjdC5qcyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy92ZXJzaW9uY2hhbmdlcmVxdWVzdC1hY3Rp
dmVkb21vYmplY3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzVhYWI0MTRhNTAyYTgxNDNjMzNjNmNiYWQxMTQ1
ODI1ODY5Y2NlNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy92ZXJzaW9uY2hhbmdlcmVxdWVzdC1hY3RpdmVkb21vYmplY3QuanMKQEAg
LTAsMCArMSw2NyBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlw
dHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1w
b3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJFbnN1cmUgdGhhdCBJ
REJWZXJzaW9uQ2hhbmdlUmVxdWVzdCBvYmplY3RzIGFyZSBub3QgR0MnZCBpZiB0aGV5IGhhdmUg
cGVuZGluZyBldmVudHMiKTsKKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICByZW1vdmVWZW5kb3JQ
cmVmaXhlcygpOworCisgICAgZGVidWcoIiIpOworICAgIGV2YWxBbmRMb2coInNlbGYuZGJuYW1l
ID0gJ3ZlcnNpb25jaGFuZ2VyZXF1ZXN0LWFjdGl2ZWRvbW9iamVjdCciKTsKKworICAgIHRlc3RE
ZWxldGVEYXRhYmFzZSgpOworfQorCitmdW5jdGlvbiB0ZXN0RGVsZXRlRGF0YWJhc2UoKQorewor
ICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidGVzdERlbGV0ZURhdGFiYXNlKCk6Iik7CisgICAg
Ly8gTk9URTogZGVsZXRlUmVxdWVzdCBpcyBsb2NhbCB2YXJpYWJsZSBzbyBpdCBpcyBub3QgY2Fw
dHVyZWQgaW4gZ2xvYmFsIHNjb3BlLgorICAgIHZhciBkZWxldGVSZXF1ZXN0ID0gZXZhbEFuZExv
ZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKHNlbGYuZGJuYW1lKSIpOworICAgIGRlbGV0ZVJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIGRlbGV0ZVJlcXVl
c3Qub25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2NrZWRDYWxsYmFjazsKKyAgICBkZWxldGVSZXF1
ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeyBkZWxldGVTdWNjZXNzKCk7IH07CisgICAgZGVs
ZXRlUmVxdWVzdCA9IG51bGw7CisgICAgaWYgKHNlbGYuZ2MpIHsKKyAgICAgICAgZXZhbEFuZExv
Zygic2VsZi5nYygpIik7CisgICAgfQorfQorCitmdW5jdGlvbiBkZWxldGVTdWNjZXNzKCkKK3sK
KyAgICB0ZXN0UGFzc2VkKCJkZWxldGVEYXRhYmFzZSdzIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0
Lm9uc3VjY2VzcyBldmVudCBmaXJlZCIpOworICAgIHRlc3RTZXRWZXJzaW9uKCk7Cit9CisKK2Z1
bmN0aW9uIHRlc3RTZXRWZXJzaW9uKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInRl
c3RTZXRWZXJzaW9uKCk6Iik7CisKKyAgICAvLyBOT1RFOiBUaGlzIGlzIGp1c3QgYW4gSURCUmVx
dWVzdCwgaXQgY2FuIGJlIGdsb2JhbC4KKyAgICBldmFsQW5kTG9nKCJvcGVuUmVxdWVzdCA9IGlu
ZGV4ZWREQi5vcGVuKHNlbGYuZGJuYW1lKSIpOworICAgIG9wZW5SZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBvcGVuUmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbiAoKSB7CisgICAgICAgIGV2YWxBbmRMb2coImRiID0gb3BlblJlcXVlc3QucmVzdWx0Iik7
CisKKyAgICAgICAgLy8gTk9URTogdmVyc2lvblJlcXVlc3QgaXMgbG9jYWwgdmFyaWFibGUgc28g
aXQgaXMgbm90IGNhcHR1cmVkIGluIGdsb2JhbCBzY29wZS4KKyAgICAgICAgdmFyIHZlcnNpb25S
ZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgICAgIHZlcnNp
b25SZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgdmVy
c2lvblJlcXVlc3Qub25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2NrZWRDYWxsYmFjazsKKyAgICAg
ICAgdmVyc2lvblJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7IHZlcnNpb25TdWNjZXNz
KCk7IH07CisgICAgICAgIHZlcnNpb25SZXF1ZXN0ID0gbnVsbDsKKyAgICAgICAgaWYgKHNlbGYu
Z2MpIHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coInNlbGYuZ2MoKSIpOworICAgICAgICB9Cisg
ICAgfTsKK30KKworZnVuY3Rpb24gdmVyc2lvblN1Y2Nlc3MoKQoreworICAgIHRlc3RQYXNzZWQo
InNldFZlcnNpb24ncyBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5vbnN1Y2Nlc3MgZXZlbnQgZmly
ZWQiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Nl
dFZlcnNpb24tbnVsbC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0VmVy
c2lvbi1udWxsLmh0bWwKaW5kZXggY2IyYmM2ZWUxYWVkNDY4YzdkOTcyNGFiYTk3YThkOTJiZmMw
MjQyYy4uZGYzZjNkMDg3MDJkYzU5NTViMDliMmUxMmFiNjlkYWNjNGIwYzYxMCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0VmVyc2lvbi1udWxsLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0VmVyc2lvbi1udWxsLmh0bWwKQEAg
LTEsNDQgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPiAKLTxodG1sPiAKKzxodG1sPgogPGhlYWQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PiAKLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4gCi08
L2hlYWQ+IAotPGJvZHk+IAotPHNjcmlwdD4gCi0gCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVk
REIgd2l0aCBudWxsIHZlcnNpb24gc3RyaW5nIik7Ci0gCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAg
ICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotIAotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBh
dGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotIAotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQot
ewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gCi0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24obnVsbCk7Iik7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBwb3N0U2V0VmVyc2lvbjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gcG9zdFNldFZlcnNpb24oKQot
ewotICAgIHNob3VsZEJlKCJkYi52ZXJzaW9uIiwgIidudWxsJyIpOwotICAgIGZpbmlzaEpTVGVz
dCgpOwotfQotIAotIAotdGVzdCgpOwotIAotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL3NldFZlcnNpb24tbnVsbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwv
Ym9keT4gCis8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9zZXRWZXJzaW9uLXVuZGVmaW5lZC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvc2V0VmVyc2lvbi11bmRlZmluZWQuaHRtbAppbmRleCBiZWRjMWUwNWI1NDEw
MWRiYTNmODE4NzZjNzRmODQ3NzdiODk4NzdhLi5hZTYwZjFjNWU5Mzg0N2EwNGEyMzdjZDNmYjMy
OTI5Y2ZkZjU1YzhlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9z
ZXRWZXJzaW9uLXVuZGVmaW5lZC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3NldFZlcnNpb24tdW5kZWZpbmVkLmh0bWwKQEAgLTEsMzcgKzEsMTAgQEAKLTwhRE9DVFlQ
RSBodG1sPiAKLTxodG1sPiAKKzxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PiAKLTxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4gCi08L2hlYWQ+IAotPGJvZHk+IAotPHNjcmlw
dD4gCi0gCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgdmVyc2lvbiBzdHJpbmcgaXMgcmVx
dWlyZWQiKTsKLSAKLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVz
KCk7Ci0gCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRp
b24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4
ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
b3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0gCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9n
KCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAKLSAgICBzaG91bGRUaHJvdygiZGIuc2V0
VmVyc2lvbigpOyIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotIAotIAotdGVzdCgpOwotIAot
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NldFZlcnNpb24t
dW5kZWZpbmVkLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PiAKKzwvYm9keT4KIDwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJzaW9u
X2Jsb2NrZWQuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJzaW9u
X2Jsb2NrZWQuaHRtbAppbmRleCBjMjQ0ZDQzMmNmYmQ0OTE0NmRhYzExYTBjMzMxZWIwNTlhNzM0
ZTUyLi40MDhlNmZhMjk3YmI3Y2QyODc4NWJiMDY1MmJiOTYyYWQ5ZWMwOTA0IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9ibG9ja2VkLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNpb25fYmxvY2tlZC5o
dG1sCkBAIC0xLDY0ICsxLDEwIEBACi08aHRtbD4NCi08aGVhZD4NCi08c2NyaXB0IHNyYz0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pg0KLTxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4NCi08L2hlYWQ+DQotPGJvZHk+DQot
PHNjcmlwdD4NCi0NCi1kZXNjcmlwdGlvbigiQW4gb3BlbiBjb25uZWN0aW9uIGJsb2NrcyBhIHNl
cGFyYXRlIGNvbm5lY3Rpb24ncyBzZXRWZXJzaW9uIGNhbGwiKTsNCi0NCi1jb25uZWN0aW9ucyA9
IFtdDQotZnVuY3Rpb24gdGVzdCgpDQotew0KLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOw0K
LSAgICBvcGVuREJDb25uZWN0aW9uKCk7DQotfQ0KLQ0KLWZ1bmN0aW9uIG9wZW5EQkNvbm5lY3Rp
b24oKQ0KLXsNCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdzZXQt
dmVyc2lvbi1ibG9ja2VkJykiKTsNCi0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2Vz
czsNCi0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQotfQ0K
LQ0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkNCi17DQotICAgIGNvbm5lY3Rpb24gPSBldmVudC50
YXJnZXQucmVzdWx0Ow0KLSAgICBjb25uZWN0aW9ucy5wdXNoKGNvbm5lY3Rpb24pOw0KLSAgICBv
cmlnaW5hbF92ZXJzaW9uID0gY29ubmVjdGlvbi52ZXJzaW9uOw0KLSAgICBpZiAoY29ubmVjdGlv
bnMubGVuZ3RoIDwgMikNCi0gICAgICAgIG9wZW5EQkNvbm5lY3Rpb24oKTsNCi0gICAgZWxzZSB7
DQotICAgICAgICB2YXIgdmVyc2lvbkNoYW5nZVJlcXVlc3QgPSBldmFsQW5kTG9nKCJjb25uZWN0
aW9uc1swXS5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOw0KLSAgICAgICAgdmVyc2lvbkNoYW5n
ZVJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOw0KLSAgICAgICAgdmVy
c2lvbkNoYW5nZVJlcXVlc3Qub25zdWNjZXNzID0gaW5TZXRWZXJzaW9uOw0KLSAgICAgICAgdmVy
c2lvbkNoYW5nZVJlcXVlc3Qub25ibG9ja2VkID0gYmxvY2tlZDsNCi0gICAgfQ0KLX0NCi0NCi1z
ZWVuX2Jsb2NrZWRfZXZlbnQgPSBmYWxzZTsNCi1mdW5jdGlvbiBibG9ja2VkKCkNCi17DQotICAg
IGV2YWxBbmRMb2coInNlZW5fYmxvY2tlZF9ldmVudCA9IHRydWUiKTsNCi0gICAgYmxvY2tlZF9l
dmVudCA9IGV2ZW50Ow0KLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImJsb2NrZWRfZXZlbnQu
dmVyc2lvbiIsICJ2ZXJzaW9uIDEiKTsNCi0gICAgc2hvdWxkRXZhbHVhdGVUbygiYmxvY2tlZF9l
dmVudC50YXJnZXQucmVhZHlTdGF0ZSIsIDEpOw0KLSAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9u
c1sxXS5jbG9zZSgpIik7DQotfQ0KLQ0KLWZ1bmN0aW9uIGluU2V0VmVyc2lvbigpDQotew0KLSAg
ICBkZWJ1ZygiaW4gc2V0VmVyc2lvbi5vbnN1Y2Nlc3MiKTsNCi0gICAgc2hvdWxkQmVUcnVlKCJz
ZWVuX2Jsb2NrZWRfZXZlbnQiKTsNCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGNvbm5lY3Rp
b25zWzBdKTsNCi0gICAgZmluaXNoSlNUZXN0KCk7DQotfQ0KLQ0KLQ0KLXRlc3QoKTsNCi0NCi08
L3NjcmlwdD4NCi08c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4NCi08L2JvZHk+DQotPC9odG1sPg0KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NldF92ZXJzaW9uX2Jsb2NrZWQuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9xdWV1ZS5odG1sIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNpb25fcXVldWUuaHRtbAppbmRleCA0ZWFiZWM2
YTk1ZTgwZDY5ZDI4MGE3Y2Q5NWRiYzIxMjJmODgxNzQ2Li5jMTZjZGQ3MWMwN2JjNTIwNjA3OGEz
MTM0ZTkwODExYmQ3MmRjZWYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9zZXRfdmVyc2lvbl9xdWV1ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3NldF92ZXJzaW9uX3F1ZXVlLmh0bWwKQEAgLTEsMTMxICsxLDEwIEBACi08aHRtbD4N
Ci08aGVhZD4NCi08c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0Pg0KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Nj
cmlwdD4NCi08L2hlYWQ+DQotPGJvZHk+DQotPHNjcmlwdD4NCi0NCi1kZXNjcmlwdGlvbigiNCBv
cGVuIGNvbm5lY3Rpb25zIHRyeSB0byBzZXRWZXJzaW9uIGF0IHRoZSBzYW1lIHRpbWUuICAzIGNv
bm5lY3Rpb25zIGV2ZW50dWFsbHkgY2xvc2UsIGFsbG93aW5nIDEgc2V0VmVyc2lvbiBjYWxsIHRv
IHByb2NlZWQuIik7DQotDQotY29ubmVjdGlvbnMgPSBbXQ0KLWZ1bmN0aW9uIHRlc3QoKQ0KLXsN
Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsNCi0NCi0gICAgb3BlbkRCQ29ubmVjdGlvbigp
Ow0KLX0NCi0NCi1mdW5jdGlvbiBvcGVuREJDb25uZWN0aW9uKCkNCi17DQotICAgIHJlc3VsdCA9
IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdzZXQtdmVyc2lvbi1xdWV1ZScpIik7DQotICAg
IHJlc3VsdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsNCi0gICAgcmVzdWx0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsNCi19DQotDQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQ0K
LXsNCi0gICAgY29ubmVjdGlvbiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7DQotICAgIGNvbm5lY3Rp
b24ub252ZXJzaW9uY2hhbmdlID0gZ2VuZXJhdGVWZXJzaW9uQ2hhbmdlSGFuZGxlcigpOw0KLSAg
ICBjb25uZWN0aW9ucy5wdXNoKGNvbm5lY3Rpb24pOw0KLSAgICBpZiAoY29ubmVjdGlvbnMubGVu
Z3RoIDwgNCkNCi0gICAgICAgIG9wZW5EQkNvbm5lY3Rpb24oKTsNCi0gICAgZWxzZSB7DQotICAg
ICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiY29ubmVjdGlvbnNbMF0uc2V0VmVyc2lvbigndmVy
c2lvbiAwJykiKTsNCi0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KXsg
Y29ubmVjdGlvbkVycm9yKGV2ZW50LCAwKSB9Ow0KLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOw0KLSAgICAgICAgcmVxdWVzdC5vbmJsb2NrZWQg
PSBibG9ja2VkMDsNCi0gICAgICAgIHJlcXVlc3QxID0gZXZhbEFuZExvZygiY29ubmVjdGlvbnNb
MV0uc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsNCi0gICAgICAgIHJlcXVlc3QxLm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsNCi0gICAgICAgIHJlcXVlc3QxLm9uc3VjY2VzcyA9
IGluU2V0VmVyc2lvbjE7DQotICAgICAgICByZXF1ZXN0MS5vbmJsb2NrZWQgPSBibG9ja2VkMTsN
Ci0gICAgICAgIHJlcXVlc3QyID0gZXZhbEFuZExvZygiY29ubmVjdGlvbnNbMl0uc2V0VmVyc2lv
bigndmVyc2lvbiAyJykiKTsNCi0gICAgICAgIHJlcXVlc3QyLm9uZXJyb3IgPSBmdW5jdGlvbihl
dmVudCl7IGNvbm5lY3Rpb25FcnJvcihldmVudCwgMikgfTsNCi0gICAgICAgIHJlcXVlc3QyLm9u
c3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7DQotICAgICAgICByZXF1ZXN0Mi5v
bmJsb2NrZWQgPSBibG9ja2VkMjsNCi0gICAgICAgIHJlcXVlc3QzID0gZXZhbEFuZExvZygiY29u
bmVjdGlvbnNbM10uc2V0VmVyc2lvbigndmVyc2lvbiAzJykiKTsNCi0gICAgICAgIHJlcXVlc3Qz
Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCl7IGNvbm5lY3Rpb25FcnJvcihldmVudCwgMykgfTsN
Ci0gICAgICAgIHJlcXVlc3QzLm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7
DQotICAgICAgICByZXF1ZXN0My5vbmJsb2NrZWQgPSBibG9ja2VkMzsNCi0gICAgICAgIGRlYnVn
KCIiKTsNCi0gICAgfQ0KLX0NCi0NCi1mdW5jdGlvbiBnZW5lcmF0ZVZlcnNpb25DaGFuZ2VIYW5k
bGVyKCkNCi17DQotICAgIHZhciBjb25uZWN0aW9uTnVtID0gY29ubmVjdGlvbnMubGVuZ3RoOw0K
LSAgICByZXR1cm4gZnVuY3Rpb24oZXZlbnQpDQotICAgIHsNCi0gICAgICAgIHNob3VsZEJlVHJ1
ZSgiZXZlbnQudmVyc2lvbi5sZW5ndGggPiAwIik7DQotICAgICAgICBkZWJ1ZygiY29ubmVjdGlv
blsiICsgY29ubmVjdGlvbk51bSArICJdIHJlY2VpdmVkIHZlcnNpb25DaGFuZ2VFdmVudDogIiAr
IGV2ZW50LnZlcnNpb24pOw0KLSAgICB9DQotfQ0KLQ0KLWJsb2NrZWQwZmlyZWQgPSBmYWxzZTsN
Ci1ibG9ja2VkMmZpcmVkID0gZmFsc2U7DQotZnVuY3Rpb24gYmxvY2tlZDAoZXZlbnQpDQotew0K
LSAgICBkZWJ1ZygiIik7DQotICAgIHRlc3RQYXNzZWQoImNvbm5lY3Rpb25bMF0gZ290IGJsb2Nr
ZWQgZXZlbnQiKTsNCi0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC52ZXJzaW9uIiwg
InZlcnNpb24gMCIpOw0KLSAgICBkZWJ1ZygiQ2xvc2UgdGhlIGNvbm5lY3Rpb24gdGhhdCByZWNl
aXZlZCB0aGUgYmxvY2sgZXZlbnQ6Iik7DQotICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb25zWzBd
LmNsb3NlKCkiKTsNCi0gICAgZGVidWcoIkNsb3NlIGFub3RoZXIgY29ubmVjdGlvbiBhcyB3ZWxs
LCB0byB0ZXN0IDQuNy40LW5vdGU6Iik7DQotICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb25zWzNd
LmNsb3NlKCkiKTsNCi0gICAgZXZhbEFuZExvZygiYmxvY2tlZDBmaXJlZCA9IHRydWUiKTsNCi0g
ICAgZGVidWcoIiIpOw0KLX0NCi0NCi1mdW5jdGlvbiBibG9ja2VkMShldmVudCkNCi17DQotICAg
IGRlYnVnKCIiKQ0KLSAgICB0ZXN0UGFzc2VkKCJjb25uZWN0aW9uWzFdIGdvdCBibG9ja2VkIGV2
ZW50Iik7DQotICAgIGRlYnVnKCJFbnN1cmUgdGhhdCB0aGlzIGJsb2NrZWQgZXZlbnQgaXMgaW4g
b3JkZXI6Iik7DQotICAgIHNob3VsZEJlVHJ1ZSgiYmxvY2tlZDBmaXJlZCIpOw0KLSAgICBzaG91
bGRCZUZhbHNlKCJibG9ja2VkMmZpcmVkIik7DQotICAgIGRlYnVnKCIiKQ0KLX0NCi0NCi1mdW5j
dGlvbiBibG9ja2VkMihldmVudCkNCi17DQotICAgIGRlYnVnKCIiKQ0KLSAgICB0ZXN0UGFzc2Vk
KCJjb25uZWN0aW9uWzJdIGdvdCBibG9ja2VkIGV2ZW50Iik7DQotICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygiZXZlbnQudmVyc2lvbiIsICJ2ZXJzaW9uIDIiKTsNCi0gICAgZXZhbEFuZExvZygi
Y29ubmVjdGlvbnNbMl0uY2xvc2UoKSIpOw0KLSAgICBldmFsQW5kTG9nKCJibG9ja2VkMmZpcmVk
ID0gdHJ1ZSIpOw0KLSAgICBkZWJ1ZygiIikNCi19DQotDQotZnVuY3Rpb24gYmxvY2tlZDMoZXZl
bnQpDQotew0KLSAgICBkZWJ1ZygiIikNCi0gICAgdGVzdFBhc3NlZCgiY29ubmVjdGlvblszXSBn
b3QgYmxvY2tlZCBldmVudCIpOw0KLSAgICBkZWJ1ZygiTm90ZTogVGhpcyBtZWFucyB0aGF0IGEg
Y29ubmVjdGlvbiBjYW4gcmVjZWl2ZSBhIGJsb2NrZWQgZXZlbnQgYWZ0ZXIgaXRzIGNsb3NlKCkg
bWV0aG9kIGhhcyBiZWVuIGNhbGxlZC4gIFNwZWMgaXMgc2lsZW50IG9uIHRoZSBpc3N1ZSBhbmQg
dGhpcyBpcyBlYXNpZXN0IHRvIGltcGxlbWVudC4iKTsNCi0gICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJldmVudC52ZXJzaW9uIiwgInZlcnNpb24gMyIpOw0KLX0NCi0NCi1mdW5jdGlvbiBjb25u
ZWN0aW9uRXJyb3IoZXZlbnQsIGNvbm5lY3Rpb25JZCkNCi17DQotICAgIGRlYnVnKCIiKQ0KLSAg
ICB0ZXN0UGFzc2VkKCJjb25uZWN0aW9uWyIgKyBjb25uZWN0aW9uSWQgKyAiXSBnb3QgZXJyb3Ig
ZXZlbnQiKTsNCi0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5lcnJvckNvZGUiLCAiSURCRGF0
YWJhc2VFeGNlcHRpb24uQUJPUlRfRVJSIikNCi0gICAgaWYgKCd3ZWJraXRFcnJvck1lc3NhZ2Un
IGluIGV2ZW50LnRhcmdldCkgew0KLSAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC53ZWJr
aXRFcnJvck1lc3NhZ2UubGVuZ3RoID4gMCIsICJ0cnVlIik7DQotICAgICAgICBkZWJ1ZyhldmVu
dC50YXJnZXQud2Via2l0RXJyb3JNZXNzYWdlKTsNCi0gICAgfQ0KLX0NCi0NCi1mdW5jdGlvbiBp
blNldFZlcnNpb24xKGV2ZW50KQ0KLXsNCi0gICAgZGVidWcoIiIpDQotICAgIHRlc3RQYXNzZWQo
ImNvbm5lY3Rpb25bMV0gZ290IGludG8gU2V0VmVyc2lvbiIpOw0KLSAgICBmaW5pc2hKU1Rlc3Qo
KTsNCi19DQotDQotDQotdGVzdCgpOw0KLQ0KLTwvc2NyaXB0Pg0KLTxzY3JpcHQgc3JjPSIuLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pg0KLTwvYm9keT4N
Ci08L2h0bWw+DQorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvc2V0X3ZlcnNpb25fcXVldWUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2Fj
dGlvbi1hYm9ydC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rp
b24tYWJvcnQuaHRtbAppbmRleCAzNDEwZjQ2M2EyMDMxODk2NTMzYjRhNDY5OWM2N2FkMzU4MTU3
ZWRkLi4xYmFjYjVmYjc4Y2E1MjMyMzRkZmVkZmRjYjNjYjJhMzcwZTliYzNkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hYm9ydC5odG1sCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFib3J0Lmh0bWwK
QEAgLTQsOTYgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2Ny
aXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCB0cmFu
c2FjdGlvbiBhYm9ydHMgc2VuZCB0aGUgcHJvcGVyIG9uYWJvcnQgbWVzc2FnZXMuLiIpOwotCi1m
dW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCduYW1lJykiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IHNldFZlcnNpb247Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb24oKQotewotICAgIGRiID0g
ZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKLXsKLSAg
ICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKLSAgICBzZWxmLnRyYW5zID0gZXZhbEFu
ZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0
cmFucyAhPT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxs
YmFjazsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gc3RhcnRUZXN0Iik7Ci0K
LSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgc3RvcmUgPSBldmFsQW5kTG9n
KCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOwotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwg
J2tleScpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci19Ci0KLWZ1bmN0aW9uIHN0YXJ0VGVzdCgpCi17Ci0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0
cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIElEQlRyYW5zYWN0aW9uLlJFQURf
V1JJVEUpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMub25hYm9ydCA9IHRyYW5zYWN0aW9uQWJv
cnRlZCIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQ29t
cGxldGVDYWxsYmFjayIpOwotICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5v
YmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3Rv
cmUuYWRkKHt4OiAndmFsdWUyJywgeTogJ3p6ejInfSwgJ2tleTInKSIpOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IGZpcnN0QWRkOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1
Y2Nlc3NDYWxsYmFjazsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAn
dmFsdWUzJywgeTogJ3p6ejMnfSwgJ2tleTMnKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHNl
Y29uZEFkZDsKLSAgICB0cmFucy5hYm9ydCgpOwotCi0gICAgZmlyc3RFcnJvciA9IGZhbHNlOwot
ICAgIHNlY29uZEVycm9yID0gZmFsc2U7Ci0gICAgYWJvcnRGaXJlZCA9IGZhbHNlOwotfQotCi1m
dW5jdGlvbiBmaXJzdEFkZCgpCi17Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5lcnJvckNv
ZGUiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uQUJPUlRfRVJSIik7Ci0gICAgc2hvdWxkQmVGYWxz
ZSgiZmlyc3RFcnJvciIpOwotICAgIHNob3VsZEJlRmFsc2UoInNlY29uZEVycm9yIik7Ci0gICAg
c2hvdWxkQmVGYWxzZSgiYWJvcnRGaXJlZCIpOwotICAgIGZpcnN0RXJyb3IgPSB0cnVlOwotCi0g
ICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuYWRkKHt4OiAndmFsdWU0JywgeTogJ3p6
ejQnfSwgJ2tleTQnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElW
RV9FUlIiKTsKLX0KLQotZnVuY3Rpb24gc2Vjb25kQWRkKCkKLXsKLSAgICBzaG91bGRCZSgiZXZl
bnQudGFyZ2V0LmVycm9yQ29kZSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5BQk9SVF9FUlIiKTsK
LSAgICBzaG91bGRCZVRydWUoImZpcnN0RXJyb3IiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJzZWNv
bmRFcnJvciIpOwotICAgIHNob3VsZEJlRmFsc2UoImFib3J0RmlyZWQiKTsKLSAgICBzZWNvbmRF
cnJvciA9IHRydWU7Ci19Ci0KLWZ1bmN0aW9uIHRyYW5zYWN0aW9uQWJvcnRlZCgpCi17Ci0gICAg
c2hvdWxkQmVUcnVlKCJmaXJzdEVycm9yIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJzZWNvbmRFcnJv
ciIpOwotICAgIHNob3VsZEJlRmFsc2UoImFib3J0RmlyZWQiKTsKLSAgICBhYm9ydEZpcmVkID0g
dHJ1ZTsKLQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmFkZCh7eDogJ3ZhbHVl
NScsIHk6ICd6eno1J30sICdrZXk1JykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJ
T05fSU5BQ1RJVkVfRVJSIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXRlc3QoKTsKLQot
Ci08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdHJhbnNhY3Rpb24tYWJvcnQuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hZnRlci1jbG9zZS5odG1sIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWZ0ZXItY2xvc2UuaHRtbApp
bmRleCBmODI3ZWE3MjY1ZmNhNzI3MTdjMWFlZTMzMWExOTQ1NTFiZTFlMGRlLi4zYTQxNjE0Y2Mw
ZmM3ZWExMDY5ZDQ5ODViN2EzMTI5M2ZlOTI1MjUwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hZnRlci1jbG9zZS5odG1sCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFmdGVyLWNsb3NlLmh0bWwKQEAg
LTEsOTAgKzEsMTAgQEAKLTxodG1sPg0KLTxoZWFkPg0KLTxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+DQotPHNjcmlwdCBzcmM9InJl
c291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0Pg0KLTwvaGVhZD4NCi08Ym9keT4NCi08c2NyaXB0
Pg0KLQ0KLWRlc2NyaXB0aW9uKCJUZXN0IGNsb3NpbmcgYSBkYXRhYmFzZSBjb25uZWN0aW9uIGlu
IEluZGV4ZWREQi4iKTsNCi0NCi1mdW5jdGlvbiB0ZXN0KCkNCi17DQotICAgIHJlbW92ZVZlbmRv
clByZWZpeGVzKCk7DQotDQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Bl
bigndHJhbnNhY3Rpb24tYWZ0ZXItY2xvc2UnKSIpOw0KLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IG9wZW5TdWNjZXNzOw0KLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsNCi19DQotDQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQ0KLXsNCi0gICAgZGVidWcoIm9w
ZW5TdWNjZXNzKCk6Iik7DQotICAgIHNlbGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsNCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5z
ZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOw0KLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGluU2V0
VmVyc2lvbjsNCi0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
DQotfQ0KLQ0KLWZ1bmN0aW9uIGluU2V0VmVyc2lvbigpDQotew0KLSAgICBkZWxldGVBbGxPYmpl
Y3RTdG9yZXMoZGIpOw0KLQ0KLSAgICBldmVudC50YXJnZXQucmVzdWx0Lm9uY29tcGxldGUgPSBy
dW5GaXJzdFJlZ3VsYXJUcmFuc2FjdGlvbjsNCi0gICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5vbmFi
b3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7DQotICAgIHN0b3JlID0gZXZhbEFuZExvZygi
c3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOw0KLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IHN0b3JlLnB1dCgneCcsICd5JykiKTsNCi0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBvblB1dFN1Y2Nlc3M7DQotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOw0KLX0NCi0NCi1mdW5jdGlvbiBvblB1dFN1Y2Nlc3MoKQ0KLXsN
Ci0gICAgdGVzdFBhc3NlZCgiUHV0IHN1Y2Nlc3MiKQ0KLX0NCi0NCi1mdW5jdGlvbiBydW5GaXJz
dFJlZ3VsYXJUcmFuc2FjdGlvbigpDQotew0KLSAgICBkZWJ1ZygicnVubmluZyBmaXJzdCB0cmFu
c2FjdGlvbiIpDQotICAgIGN1cnJlbnRUcmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coImN1cnJlbnRU
cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUnXSwgSURCVHJhbnNhY3Rpb24uUkVB
RF9XUklURSkiKTsNCi0gICAgY3VycmVudFRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVk
QWJvcnRDYWxsYmFjazsNCi0gICAgY3VycmVudFRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmaXJz
dFRyYW5zYWN0aW9uQ29tcGxldGU7DQotICAgIG9iamVjdFN0b3JlID0gY3VycmVudFRyYW5zYWN0
aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpOw0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib2Jq
ZWN0U3RvcmUucHV0KCdhJywgJ2InKSIpOw0KLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsNCi19DQotDQotZnVuY3Rpb24gZmlyc3RUcmFuc2FjdGlvbkNvbXBs
ZXRlKCkNCi17DQotICAgIGV2YWxBbmRMb2coImRiLmNsb3NlKCkiKTsNCi0gICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oWydzdG9yZSddLCBJREJUcmFuc2FjdGlvbi5S
RUFEX1dSSVRFKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9FUlIiKTsNCi0N
Ci0gICAgZGVidWcoIiIpDQotICAgIGRlYnVnKCJ2ZXJpZnkgdGhhdCB3ZSBjYW4gcmVvcGVuIHRo
ZSBkYiBhZnRlciBjYWxsaW5nIGNsb3NlIikNCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImlu
ZGV4ZWREQi5vcGVuKCd0cmFuc2FjdGlvbi1hZnRlci1jbG9zZScpIik7DQotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gb25TZWNvbmRPcGVuDQotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOw0KLX0NCi0NCi1mdW5jdGlvbiBvblNlY29uZE9wZW4oKSB7DQotICAg
IHNlY29uZF9kYiA9IGV2YWxBbmRMb2coInNlY29uZF9kYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsNCi0gICAgY3VycmVudFRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygiY3VycmVudFRyYW5zYWN0
aW9uID0gc2Vjb25kX2RiLnRyYW5zYWN0aW9uKFsnc3RvcmUnXSwgSURCVHJhbnNhY3Rpb24uUkVB
RF9XUklURSkiKTsNCi0gICAgc3RvcmUgPSBjdXJyZW50VHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUo
J3N0b3JlJyk7DQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gc3RvcmUucHV0
KCcxJywgJzInKSIpOw0KLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9uRmluYWxQdXRTdWNjZXNz
Ow0KLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsNCi0gICAg
Y3VycmVudFRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmaW5pc2hKU1Rlc3Q7DQotICAgIGN1cnJl
bnRUcmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7DQotfQ0KLQ0K
LWZ1bmN0aW9uIG9uRmluYWxQdXRTdWNjZXNzKCkgew0KLSAgICB0ZXN0UGFzc2VkKCJmaW5hbCBw
dXQgc3VjY2VzcyIpOw0KLX0NCi0NCi0NCi10ZXN0KCk7DQotDQotPC9zY3JpcHQ+DQotPHNjcmlw
dCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
DQotPC9ib2R5Pg0KLTwvaHRtbD4NCis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy90cmFuc2FjdGlvbi1hZnRlci1jbG9zZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFuZC1vYmplY3RzdG9yZS1jYWxscy5odG1sIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYW5kLW9iamVjdHN0b3JlLWNhbGxz
Lmh0bWwKaW5kZXggNmFmYmMzNTlmNjI1ZDlmYzhlNDU5MTJiZmQ2MGE1ZWI0NGRjMjA2NS4uMWEw
YjVlZjk4YmRlMjZmNDBkYmI4ODAxNDU3MzhiMTI0NmY1YmNlZiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYW5kLW9iamVjdHN0b3JlLWNhbGxz
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYW5k
LW9iamVjdHN0b3JlLWNhbGxzLmh0bWwKQEAgLTQsMTI5ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4K
LQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgdHJhbnNhY3Rpb24gYW5kIG9iamVjdFN0
b3JlIGNhbGxzIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZp
eGVzKCk7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3RyYW5z
YWN0aW9uLWFuZC1vYmplY3RzdG9yZS1jYWxscycsICdkZXNjcmlwdGlvbicpIik7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAg
IHNlbGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVzdWx0ID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJyki
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFuRGF0
YWJhc2UoKQotewotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIGV2YWxBbmRM
b2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdhJykiKTsKLSAgICBldmFsQW5kTG9nKCJkYi5jcmVh
dGVPYmplY3RTdG9yZSgnYicpIik7Ci0gICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ3N0b3JlJykuY3JlYXRlSW5kZXgoJ2luZGV4JywgJ3NvbWVfcGF0aCcpIik7Ci0gICAgZXZh
bEFuZExvZygidHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignY29tcGxldGUnLCBjcmVhdGVkLCB0cnVl
KSIpOwotICAgIGRlYnVnKCIiKTsKLX0KLQotZnVuY3Rpb24gY3JlYXRlZCgpCi17Ci0gICAgdHJh
bnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnYSddKSIpOwotICAgIGV2
YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdhJykiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJ0cmFucy5vYmplY3RTdG9yZSgnYicpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5P
VF9GT1VORF9FUlIiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0cmFucy5vYmplY3RT
dG9yZSgneCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKLSAgICBk
ZWJ1ZygiIik7Ci0KLSAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rp
b24oWydhJ10pIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2EnKSIpOwot
ICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInRyYW5zLm9iamVjdFN0b3JlKCdiJykiLCAiSURC
RGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oInRyYW5zLm9iamVjdFN0b3JlKCd4JykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9U
X0ZPVU5EX0VSUiIpOwotICAgIGRlYnVnKCIiKTsKLQotICAgIHRyYW5zID0gZXZhbEFuZExvZygi
dHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ2InXSkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5v
YmplY3RTdG9yZSgnYicpIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigidHJhbnMub2Jq
ZWN0U3RvcmUoJ2EnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7Ci0g
ICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ3gnKSIsICJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7Ci0gICAgZGVidWcoIiIpOwotCi0gICAg
dHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnYScsICdiJ10pIik7
Ci0gICAgZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2EnKSIpOwotICAgIGV2YWxBbmRM
b2coInRyYW5zLm9iamVjdFN0b3JlKCdiJykiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJ0cmFucy5vYmplY3RTdG9yZSgneCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VO
RF9FUlIiKTsKLSAgICBkZWJ1ZygiIik7Ci0KLSAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5z
ID0gZGIudHJhbnNhY3Rpb24oWydiJywgJ2EnXSkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5v
YmplY3RTdG9yZSgnYScpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2In
KSIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInRyYW5zLm9iamVjdFN0b3JlKCd4Jyki
LCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOwotICAgIGRlYnVnKCIiKTsK
LQotICAgIGRlYnVnKCJQYXNzaW5nIGEgc3RyaW5nIGFzIHRoZSBmaXJzdCBhcmd1bWVudCBpcyBh
IHNob3J0Y3V0IGZvciBqdXN0IG9uZSBvYmplY3Qgc3RvcmU6Iik7Ci0gICAgdHJhbnMgPSBldmFs
QW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdhJykiKTsKLSAgICBldmFsQW5kTG9nKCJ0
cmFucy5vYmplY3RTdG9yZSgnYScpIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigidHJh
bnMub2JqZWN0U3RvcmUoJ2InKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJS
Iik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ3gnKSIs
ICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7Ci0gICAgZGVidWcoIiIpOwot
Ci0gICAgc2hvdWxkVGhyb3coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oKSIpOwotICAgIGRlYnVn
KCIiKTsKLQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKFsneCdd
KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7Ci0gICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oWyd4J10pIiwgIklEQkRhdGFiYXNlRXhjZXB0
aW9uLk5PVF9GT1VORF9FUlIiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFu
c2FjdGlvbihbJ2EnLCAneCddKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJS
Iik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oWyd4JywgJ3gn
XSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOwotICAgIGV2YWxBbmRF
eHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKFsnYScsICd4JywgJ2InXSkiLCAiSURCRGF0
YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOwotICAgIGRlYnVnKCIiKTsKLQotICAgIGRl
YnVnKCJFeGNlcHRpb24gdGhyb3duIHdoZW4gbm8gc3RvcmVzIHNwZWNpZmllZDoiKTsKLSAgICBl
dmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbihbXSkiLCAiRE9NRXhjZXB0aW9u
LklOVkFMSURfQUNDRVNTX0VSUiIpOwotICAgIGRlYnVnKCIiKTsKLQotICAgIGRlYnVnKCJ7fSBj
b2VyY2VzIHRvIGEgc3RyaW5nIC0gc28gbm8gbWF0Y2gsIGJ1dCBub3QgYSB0eXBlIGVycm9yOiIp
OwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKHt9KSIsICJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2Vw
dGlvbigiZGIudHJhbnNhY3Rpb24oe21vZGU6MH0pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5P
VF9GT1VORF9FUlIiKTsKLSAgICBkZWJ1ZygiIik7Ci0KLSAgICBkZWJ1ZygiT3ZlcnJpZGluZyB0
aGUgZGVmYXVsdCBzdHJpbmcgY29lcmNpb24gbWFrZXMgdGhlc2Ugd29yazoiKTsKLSAgICBldmFs
QW5kTG9nKCJkYi50cmFuc2FjdGlvbih7dG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gJ2EnO319
KSIpOwotICAgIGV2YWxBbmRMb2coImRiLnRyYW5zYWN0aW9uKFt7dG9TdHJpbmc6ZnVuY3Rpb24o
KXtyZXR1cm4gJ2EnO319XSkiKTsKLSAgICBkZWJ1ZygiLi4uIGJ1dCB5b3Ugc3RpbGwgbmVlZCB0
byBzcGVjaWZ5IGEgcmVhbCBzdG9yZToiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJk
Yi50cmFuc2FjdGlvbihbe3RvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuICd4Jzt9fV0pIiwgIklE
QkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJkYi50cmFuc2FjdGlvbihbe3RvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuICd4Jzt9
fV0pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKLSAgICBkZWJ1Zygi
Iik7Ci0KLSAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydz
dG9yZSddKSIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT0gbnVsbCIpOwotICAgIHRyYW5z
Lm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IGFmdGVyQ29t
cGxldGU7Ci0gICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUn
KSIpOwotICAgIHNob3VsZEJlVHJ1ZSgic3RvcmUgIT0gbnVsbCIpOwotICAgIGV2YWxBbmRMb2co
InN0b3JlLmdldCgnc29tZV9rZXknKSIpOwotfQotCi1mdW5jdGlvbiBhZnRlckNvbXBsZXRlKCkK
LXsKLSAgICBkZWJ1ZygidHJhbnNhY3Rpb24gY29tcGxldGUsIGVuc3VyaW5nIG1ldGhvZHMgZmFp
bCIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT0gbnVsbCIpOwotICAgIHNob3VsZEJlVHJ1
ZSgic3RvcmUgIT0gbnVsbCIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInRyYW5zLm9i
amVjdFN0b3JlKCdzdG9yZScpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9BTExPV0VEX0VS
UiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmluZGV4KCdpbmRleCcpIiwg
IklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9BTExPV0VEX0VSUiIpOwotCi0gICAgZmluaXNoSlNU
ZXN0KCk7Ci19Ci0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3RyYW5zYWN0aW9uLWFuZC1vYmplY3RzdG9yZS1jYWxscy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
IDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvdHJhbnNhY3Rpb24tYmFzaWNzLmh0bWwKaW5kZXggZjFiM2IxNmE5YTdhNGM2YzYxM2I0NTRm
ZmUzODMwMjVlMjQyMGY5Yi4uZDVhN2QyM2JjZTExNTNkMzc3ZWQwMjNlOTE3ZmQxMWEwYjZhYmVi
NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24t
YmFzaWNzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rp
b24tYmFzaWNzLmh0bWwKQEAgLTEsMjk0ICsxLDEwIEBACi08aHRtbD4NCi08aGVhZD4NCi08c2Ny
aXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
Pg0KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4NCi08L2hlYWQ+
DQotPGJvZHk+DQotPHNjcmlwdD4NCi0NCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgdHJh
bnNhY3Rpb24gYmFzaWNzLiIpOw0KLQ0KLWZ1bmN0aW9uIHRlc3QoKQ0KLXsNCi0gICAgcmVtb3Zl
VmVuZG9yUHJlZml4ZXMoKTsNCi0NCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWRE
Qi5vcGVuKCd0cmFuc2FjdGlvbi1iYXNpY3MnKSIpOw0KLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IG9wZW5TdWNjZXNzOw0KLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsNCi19DQotDQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQ0KLXsNCi0gICAgZGVidWcoIm9w
ZW5TdWNjZXNzKCk6Iik7DQotICAgIHNlbGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsNCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5z
ZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOw0KLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFu
RGF0YWJhc2U7DQotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
Ow0KLX0NCi0NCi1mdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkNCi17DQotICAgIGRlbGV0ZUFsbE9i
amVjdFN0b3JlcyhkYiwgY2hlY2tNZXRhZGF0YUVtcHR5KTsNCi0gICAgZXZlbnQudGFyZ2V0LnJl
c3VsdC5vbmNvbXBsZXRlID0gdGVzdFNldFZlcnNpb25BYm9ydDE7DQotfQ0KLQ0KLWZ1bmN0aW9u
IHRlc3RTZXRWZXJzaW9uQWJvcnQxKCkNCi17DQotICAgIGNoZWNrTWV0YWRhdGFFbXB0eSgpOw0K
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHN0YXJ0U2V0VmVyc2lvbigndmVy
c2lvbiBmYWlsJykiKTsNCi0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRSZW1vdmVJREJPYmpl
Y3RzOw0KLX0NCi0NCi1mdW5jdGlvbiBhZGRSZW1vdmVJREJPYmplY3RzKCkNCi17DQotICAgIGRl
YnVnKCJhZGRSZW1vdmVJREJPYmplY3RzKCk6Iik7DQotICAgIHZhciB0cmFucyA9IGV2YWxBbmRM
b2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOw0KLSAgICBzaG91bGRCZVRydWUoInRy
YW5zICE9PSBudWxsIik7DQotICAgIHRyYW5zLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgdGVz
dFNldFZlcnNpb25BYm9ydDIsIHRydWUpOw0KLSAgICB0cmFucy5vbmNvbXBsZXRlID0gdW5leHBl
Y3RlZENvbXBsZXRlQ2FsbGJhY2s7DQotDQotICAgIHZhciBzdG9yZSA9IGV2YWxBbmRMb2coInN0
b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlRmFpbCcsIG51bGwpIik7DQotICAgIHZh
ciBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4RmFp
bCcsICd4JykiKTsNCi0NCi0gICAgZXZhbEFuZExvZygiZGIuZGVsZXRlT2JqZWN0U3RvcmUoJ3N0
b3JlRmFpbCcpIik7DQotICAgIGV2YWxBbmRMb2coInN0b3JlLmRlbGV0ZUluZGV4KCdpbmRleEZh
aWwnKSIpOw0KLQ0KLSAgICB0cmFucy5hYm9ydCgpOw0KLX0NCi0NCi1mdW5jdGlvbiB0ZXN0U2V0
VmVyc2lvbkFib3J0MigpDQotew0KLSAgICBkZWJ1ZygiIik7DQotICAgIGRlYnVnKCJ0ZXN0U2V0
VmVyc2lvbkFib3J0MigpOiIpOw0KLSAgICBjaGVja01ldGFkYXRhRW1wdHkoKTsNCi0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdGFydFNldFZlcnNpb24oJ3ZlcnNpb24gZmFp
bCcpIik7DQotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkUmVtb3ZlQWRkSURCT2JqZWN0czsN
Ci19DQotDQotZnVuY3Rpb24gYWRkUmVtb3ZlQWRkSURCT2JqZWN0cygpDQotew0KLSAgICBkZWJ1
ZygiYWRkUmVtb3ZlQWRkSURCT2JqZWN0cygpOiIpOw0KLSAgICB2YXIgdHJhbnMgPSBldmFsQW5k
TG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsNCi0gICAgc2hvdWxkQmVUcnVlKCJ0
cmFucyAhPT0gbnVsbCIpOw0KLSAgICB0cmFucy5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIHRl
c3RTZXRWZXJzaW9uQWJvcnQzLCBmYWxzZSk7DQotICAgIHRyYW5zLm9uY29tcGxldGUgPSB1bmV4
cGVjdGVkQ29tcGxldGVDYWxsYmFjazsNCi0NCi0gICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygi
c3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVGYWlsJywgbnVsbCkiKTsNCi0gICAg
dmFyIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhG
YWlsJywgJ3gnKSIpOw0KLQ0KLSAgICBldmFsQW5kTG9nKCJkYi5kZWxldGVPYmplY3RTdG9yZSgn
c3RvcmVGYWlsJykiKTsNCi0gICAgZXZhbEFuZExvZygic3RvcmUuZGVsZXRlSW5kZXgoJ2luZGV4
RmFpbCcpIik7DQotDQotICAgIHZhciBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ3N0b3JlRmFpbCcsIG51bGwpIik7DQotICAgIHZhciBpbmRleCA9IGV2
YWxBbmRMb2coImluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4RmFpbCcsICd4JykiKTsN
Ci0NCi0gICAgdHJhbnMuYWJvcnQoKTsNCi19DQotDQotZnVuY3Rpb24gdGVzdFNldFZlcnNpb25B
Ym9ydDMoKQ0KLXsNCi0gICAgZGVidWcoIiIpOw0KLSAgICBkZWJ1ZygidGVzdFNldFZlcnNpb25B
Ym9ydDMoKToiKTsNCi0gICAgc2hvdWxkQmVGYWxzZSgiZXZlbnQuY2FuY2VsYWJsZSIpOw0KLSAg
ICBjaGVja01ldGFkYXRhRW1wdHkoKTsNCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVl
c3QgPSBzdGFydFNldFZlcnNpb24oJ3ZlcnNpb24gZmFpbCcpIik7DQotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gYWRkSURCT2JqZWN0czsNCi19DQotDQotZnVuY3Rpb24gYWRkSURCT2JqZWN0cygp
DQotew0KLSAgICBkZWJ1ZygiYWRkSURCT2JqZWN0cygpOiIpOw0KLSAgICBzaG91bGRCZUZhbHNl
KCJldmVudC5jYW5jZWxhYmxlIik7DQotICAgIHZhciB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5z
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOw0KLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBu
dWxsIik7DQotICAgIHRyYW5zLm9uYWJvcnQgPSB0ZXN0SW5hY3RpdmVBYm9ydGVkVHJhbnNhY3Rp
b247DQotICAgIHRyYW5zLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjazsN
Ci0NCi0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdzdG9yZUZhaWwnLCBudWxsKSIpOw0KLSAgICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0g
c3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4RmFpbCcsICd4JykiKTsNCi0NCi0gICAgdHJhbnMuYWJv
cnQoKTsNCi19DQotDQotZnVuY3Rpb24gdGVzdEluYWN0aXZlQWJvcnRlZFRyYW5zYWN0aW9uKCkN
Ci17DQotICAgIGRlYnVnKCIiKTsNCi0gICAgZGVidWcoInRlc3RJbmFjdGl2ZUFib3J0ZWRUcmFu
c2FjdGlvbigpOiIpOw0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJpbmRleC5vcGVuQ3Vy
c29yKCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7
DQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4Lm9wZW5LZXlDdXJzb3IoKSIsICJJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsNCi0gICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXguZ2V0KDApIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9u
LlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOw0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJpbmRleC5nZXRLZXkoMCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5B
Q1RJVkVfRVJSIik7DQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4LmNvdW50KCki
LCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7DQotDQot
ICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLnB1dCgwLCAwKSIsICJJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsNCi0gICAgZXZhbEFuZEV4cGVj
dEV4Y2VwdGlvbigic3RvcmUuYWRkKDAsIDApIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5T
QUNUSU9OX0lOQUNUSVZFX0VSUiIpOw0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9y
ZS5kZWxldGUoMCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVf
RVJSIik7DQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmNsZWFyKCkiLCAiSURC
RGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7DQotICAgIGV2YWxB
bmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmdldCgwKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5U
UkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsNCi0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigi
c3RvcmUub3BlbkN1cnNvcigpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lO
QUNUSVZFX0VSUiIpOw0KLQ0KLSAgICB0ZXN0U2V0VmVyc2lvbkFib3J0NCgpOw0KLX0NCi0NCi1m
dW5jdGlvbiB0ZXN0U2V0VmVyc2lvbkFib3J0NCgpDQotew0KLSAgICBkZWJ1ZygiIik7DQotICAg
IGRlYnVnKCJ0ZXN0U2V0VmVyc2lvbkFib3J0NCgpOiIpOw0KLSAgICBjaGVja01ldGFkYXRhRW1w
dHkoKTsNCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdGFydFNldFZlcnNp
b24oJ3ZlcnNpb24gZmFpbCcpIik7DQotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkSURCT2Jq
ZWN0c0FuZENvbW1pdDsNCi19DQotDQotZnVuY3Rpb24gYWRkSURCT2JqZWN0c0FuZENvbW1pdCgp
DQotew0KLSAgICBkZWJ1ZygiYWRkSURCT2JqZWN0c0FuZENvbW1pdCgpOiIpOw0KLSAgICB2YXIg
dHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsNCi0gICAg
c2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOw0KLSAgICB0cmFucy5vbmFib3J0ID0gdW5l
eHBlY3RlZEFib3J0Q2FsbGJhY2s7DQotDQotICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUg
PSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVGYWlsJywgbnVsbCkiKTsNCi0gICAgaW5kZXgg
PSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleEZhaWwnLCAneCcp
Iik7DQotDQotICAgIHRyYW5zLm9uY29tcGxldGUgPSB0ZXN0SW5hY3RpdmVDb21wbGV0ZWRUcmFu
c2FjdGlvbjsNCi19DQotDQotZnVuY3Rpb24gdGVzdEluYWN0aXZlQ29tcGxldGVkVHJhbnNhY3Rp
b24oKQ0KLXsNCi0gICAgZGVidWcoIiIpOw0KLSAgICBkZWJ1ZygidGVzdEluYWN0aXZlQ29tcGxl
dGVkVHJhbnNhY3Rpb24oKToiKTsNCi0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXgu
b3BlbkN1cnNvcigpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZF
X0VSUiIpOw0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJpbmRleC5vcGVuS2V5Q3Vyc29y
KCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7DQot
ICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4LmdldCgwKSIsICJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsNCi0gICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigiaW5kZXguZ2V0S2V5KDApIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNU
SU9OX0lOQUNUSVZFX0VSUiIpOw0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJpbmRleC5j
b3VudCgpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIp
Ow0KLQ0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5wdXQoMCwgMCkiLCAiSURC
RGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7DQotICAgIGV2YWxB
bmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmFkZCgwLCAwKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlv
bi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsNCi0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlv
bigic3RvcmUuZGVsZXRlKDApIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lO
QUNUSVZFX0VSUiIpOw0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5jbGVhcigp
IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOw0KLSAg
ICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5nZXQoMCkiLCAiSURCRGF0YWJhc2VFeGNl
cHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7DQotICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oInN0b3JlLm9wZW5DdXJzb3IoKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FD
VElPTl9JTkFDVElWRV9FUlIiKTsNCi0NCi0gICAgdGVzdFNldFZlcnNpb25BYm9ydDUoKTsNCi19
DQotDQotZnVuY3Rpb24gdGVzdFNldFZlcnNpb25BYm9ydDUoKQ0KLXsNCi0gICAgZGVidWcoIiIp
Ow0KLSAgICBkZWJ1ZygidGVzdFNldFZlcnNpb25BYm9ydDUoKToiKTsNCi0gICAgY2hlY2tNZXRh
ZGF0YUV4aXN0aW5nT2JqZWN0U3RvcmUoKTsNCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBzdGFydFNldFZlcnNpb24oJ3ZlcnNpb24gZmFpbCcpIik7DQotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gcmVtb3ZlSURCT2JqZWN0czsNCi19DQotDQotZnVuY3Rpb24gcmVtb3ZlSURC
T2JqZWN0cygpDQotew0KLSAgICBkZWJ1ZygicmVtb3ZlSURCT2JqZWN0cygpOiIpOw0KLSAgICB2
YXIgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsNCi0g
ICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOw0KLSAgICB0cmFucy5vbmFib3J0ID0g
dGVzdFNldFZlcnNpb25BYm9ydDY7DQotICAgIHRyYW5zLm9uY29tcGxldGUgPSB1bmV4cGVjdGVk
Q29tcGxldGVDYWxsYmFjazsNCi0NCi0gICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUg
PSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVGYWlsJykiKTsNCi0gICAgZXZhbEFuZExvZygic3Rv
cmUuZGVsZXRlSW5kZXgoJ2luZGV4RmFpbCcpIik7DQotICAgIGV2YWxBbmRMb2coImRiLmRlbGV0
ZU9iamVjdFN0b3JlKCdzdG9yZUZhaWwnKSIpOw0KLQ0KLSAgICB0cmFucy5hYm9ydCgpOw0KLX0N
Ci0NCi1mdW5jdGlvbiB0ZXN0U2V0VmVyc2lvbkFib3J0NigpDQotew0KLSAgICBkZWJ1ZygiIik7
DQotICAgIGRlYnVnKCJ0ZXN0U2V0VmVyc2lvbkFib3J0NigpOiIpOw0KLSAgICBjaGVja01ldGFk
YXRhRXhpc3RpbmdPYmplY3RTdG9yZSgpOw0KLSAgICBzZXROZXdWZXJzaW9uKCk7DQotfQ0KLQ0K
LWZ1bmN0aW9uIHN0YXJ0U2V0VmVyc2lvbih2ZXJzaW9uTmFtZSkNCi17DQotICAgIHJlcXVlc3Qg
PSBkYi5zZXRWZXJzaW9uKHZlcnNpb25OYW1lKTsNCi0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7DQotICAgIHJldHVybiByZXF1ZXN0Ow0KLX0NCi0NCi1mdW5j
dGlvbiBjaGVja01ldGFkYXRhRW1wdHkoKQ0KLXsNCi0gICAgc2hvdWxkQmUoInNlbGYuZGIub2Jq
ZWN0U3RvcmVOYW1lcyIsICJbXSIpOw0KLSAgICBzaG91bGRCZSgic2VsZi5kYi5vYmplY3RTdG9y
ZU5hbWVzLmxlbmd0aCIsICIwIik7DQotICAgIHNob3VsZEJlKCJzZWxmLmRiLm9iamVjdFN0b3Jl
TmFtZXMuY29udGFpbnMoJ3N0b3JlRmFpbCcpIiwgImZhbHNlIik7DQotfQ0KLQ0KLWZ1bmN0aW9u
IGNoZWNrTWV0YWRhdGFFeGlzdGluZ09iamVjdFN0b3JlKCkNCi17DQotICAgIHNob3VsZEJlKCJk
Yi5vYmplY3RTdG9yZU5hbWVzIiwgIlsnc3RvcmVGYWlsJ10iKTsNCi0gICAgc2hvdWxkQmUoImRi
Lm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjEiKTsNCi0gICAgc2hvdWxkQmUoImRiLm9iamVj
dFN0b3JlTmFtZXMuY29udGFpbnMoJ3N0b3JlRmFpbCcpIiwgInRydWUiKTsNCi19DQotDQotZnVu
Y3Rpb24gc2V0TmV3VmVyc2lvbigpDQotew0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIu
c2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOw0KLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNl
dFZlcnNpb25TdWNjZXNzOw0KLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsNCi19DQotDQotZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQ0KLXsNCi0gICAg
ZGVidWcoIiIpOw0KLSAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsNCi0gICAgc2Vs
Zi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOw0KLSAg
ICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7DQotICAgIHRyYW5zLm9uYWJvcnQgPSB1
bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsNCi0gICAgdHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignY29t
cGxldGUnLCBjb21wbGV0ZUNhbGxiYWNrLCBmYWxzZSk7DQotICAgIHNlbGYuY29tcGxldGVFdmVu
dEZpcmVkID0gZmFsc2U7DQotDQotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7DQotDQot
ICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIp
Ow0KLX0NCi0NCi1mdW5jdGlvbiBjb21wbGV0ZUNhbGxiYWNrKCkNCi17DQotICAgIHNob3VsZEJl
RmFsc2UoImV2ZW50LmNhbmNlbGFibGUiKTsNCi0gICAgdGVzdFBhc3NlZCgiY29tcGxldGUgZXZl
bnQgZmlyZWQiKTsNCi0gICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJkYi50cmFuc2FjdGlv
bihbJ3N0b3JlTmFtZSddKSIpOw0KLSAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gYWJvcnRDYWxs
YmFjazsNCi0gICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5v
YmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsNCi0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJz
dG9yZS5uYW1lIiwgInN0b3JlTmFtZSIpOw0KLX0NCi0NCi1mdW5jdGlvbiBhYm9ydENhbGxiYWNr
KCkNCi17DQotICAgIHRlc3RQYXNzZWQoImFib3J0IGV2ZW50IGZpcmVkIik7DQotICAgIHRlc3RE
T01TdHJpbmdMaXN0KCk7DQotfQ0KLQ0KLWZ1bmN0aW9uIHRlc3RET01TdHJpbmdMaXN0KCkNCi17
DQotICAgIGRlYnVnKCIiKTsNCi0gICAgZGVidWcoIlZlcmlmeWluZyBET01TdHJpbmdMaXN0IHdv
cmtzIGFzIGFyZ3VtZW50IGZvciBJREJEYXRhYmFzZS50cmFuc2FjdGlvbigpIik7DQotICAgIGRl
YnVnKCJkYi5vYmplY3RTdG9yZU5hbWVzIGlzICIgKyBkYi5vYmplY3RTdG9yZU5hbWVzKTsNCi0g
ICAgZGVidWcoIi4uLiB3aGljaCBjb250YWluczogIiArIEpTT04uc3RyaW5naWZ5KEFycmF5LnBy
b3RvdHlwZS5zbGljZS5jYWxsKGRiLm9iamVjdFN0b3JlTmFtZXMpKSk7DQotICAgIGV2YWxBbmRM
b2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oZGIub2JqZWN0U3RvcmVOYW1lcykiKTsN
Ci0gICAgdGVzdFBhc3NlZCgibm8gZXhjZXB0aW9uIHRocm93biIpOw0KLSAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoOyArK2kpIHsNCi0gICAgICBzaG91
bGRCZVRydWUoInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCIgKyBKU09OLnN0cmluZ2lmeShkYi5v
YmplY3RTdG9yZU5hbWVzW2ldKSArICIpICE9IG51bGwiKTsNCi0gICAgfQ0KLSAgICB0ZXN0UGFz
c2VkKCJhbGwgc3RvcmVzIHByZXNlbnQgaW4gdHJhbnNhY3Rpb24iKTsNCi0gICAgdGVzdEludmFs
aWRNb2RlKCk7DQotfQ0KLQ0KLWZ1bmN0aW9uIHRlc3RJbnZhbGlkTW9kZSgpDQotew0KLSAgICBk
ZWJ1ZygiIik7DQotICAgIGRlYnVnKCJWZXJpZnkgdGhhdCBzcGVjaWZ5aW5nIGFuIGludmFsaWQg
bW9kZSByYWlzZXMgYW4gZXhjZXB0aW9uIik7DQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24o
ImRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIDMpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9u
Lk5PTl9UUkFOU0lFTlRfRVJSIik7DQotICAgIGZpbmlzaEpTVGVzdCgpOw0KLX0NCi0NCi10ZXN0
KCk7DQotDQotPC9zY3JpcHQ+DQotPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+DQotPC9ib2R5Pg0KLTwvaHRtbD4NCis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90cmFuc2FjdGlvbi1i
YXNpY3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jcmFzaC1vbi1hYm9y
dC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY3Jhc2gt
b24tYWJvcnQuaHRtbAppbmRleCBkNzkzNzIxZDczNjJiZmQ3OWEyNTUzNmEzMTJhNjM1YmNlYjFl
MjkyLi4xMTU5ZDI5NDIwN2NlYjRlOTZlMzUwYzAyN2RiZDFjYTlhZDU1MjZhIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jcmFzaC1vbi1hYm9y
dC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNy
YXNoLW9uLWFib3J0Lmh0bWwKQEAgLTQsNDUgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNl
cy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNj
cmlwdGlvbigiVGVzdCBJbmRleGVkREIgdHJhbnNhY3Rpb24gZG9lcyBub3QgY3Jhc2ggb24gYWJv
cnQuIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7
Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0aW9u
LWNyYXNoLW9uLWFib3J0JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNz
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1m
dW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7Ci0g
ICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignMS4wJykiKTsKLSAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IHNldFZlcnNpb25TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCi17
Ci0gICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycpIik7Ci0gICAgZXZl
bnQudGFyZ2V0LnJlc3VsdC5vbmNvbXBsZXRlID0gc2V0VmVyc2lvbkNvbXBsZXRlOwotfQotCi1m
dW5jdGlvbiBzZXRWZXJzaW9uQ29tcGxldGUoKQotewotICAgIGV2YWxBbmRMb2coImRiLnRyYW5z
YWN0aW9uKCdmb28nKSIpOwotICAgIGV2YWxBbmRMb2coInNlbGYuZ2MoKSIpOwotICAgIGZpbmlz
aEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3RyYW5zYWN0aW9uLWNyYXNoLW9uLWFib3J0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgog
PC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvdHJhbnNhY3Rpb24tZXZlbnQtcHJvcGFnYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWV2ZW50LXByb3BhZ2F0aW9uLmh0bWwKaW5kZXggODk1
MjhhOGMxNjllNDQzOTJlOTQxYTJiOTg0NWE3ZDdiNWJlNDU5Ny4uZjAzZWEzMTcyYWQyZjdiNzgy
MzAzYmMzNmY1OGFkNTFmZmJlY2MzNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvdHJhbnNhY3Rpb24tZXZlbnQtcHJvcGFnYXRpb24uaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1ldmVudC1wcm9wYWdhdGlvbi5odG1s
CkBAIC00LDE1MCArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9z
Y3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IGV2
ZW50IHByb3BvZ2F0aW9uIG9uIElEQlRyYW5zYWN0aW9uLiIpOwotCi1mdW5jdGlvbiB0ZXN0KCkK
LXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJpbmRleGVkREIub3BlbigndHJhbnNhY3Rpb24tZXZlbnQtcHJvcGFnYXRpb24nKSIpOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvbjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvbigpCi17Ci0g
ICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZGVsZXRlRXhpc3Rpbmco
KQotewotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0gICAgdHJhbnMu
b25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIGV2YWxBbmRMb2coInRyYW5z
Lm9uY29tcGxldGUgPSBzdGFydFRlc3QiKTsKLQotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jlcyhk
Yik7Ci0KLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ3N0b3JlTmFtZScsIG51bGwpIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3Jl
LmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAna2V5JykiKTsKLSAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc3RhcnRUZXN0KCkK
LXsKLSAgICBkZWJ1ZygiVmVyaWZpbmcgYWJvcnQiKTsKLSAgICB0cmFucyA9IGV2YWxBbmRMb2co
InRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rpb24uUkVB
RF9XUklURSkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmFib3J0ID0gYWJvcnRGaXJlZENh
bGxiYWNrIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRB
Ym9ydENhbGxiYWNrIik7Ci0gICAgZXZhbEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignYWJv
cnQnLCBkYkFib3J0Q2FwdHVyZUNhbGxiYWNrLCB0cnVlKSIpOwotICAgIGV2YWxBbmRMb2coImRi
LmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgZGJBYm9ydEJ1YmJsZUNhbGxiYWNrLCBmYWxzZSki
KTsKLSAgICBldmFsQW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdjb21wbGV0ZScsIHVuZXhw
ZWN0ZWRDb21wbGV0ZUNhbGxiYWNrLCB0cnVlKSIpOwotICAgIGV2YWxBbmRMb2coImRiLmFkZEV2
ZW50TGlzdGVuZXIoJ2NvbXBsZXRlJywgdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2ssIGZhbHNl
KSIpOwotICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgn
c3RvcmVOYW1lJykiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6
ICd6enonfSwgJ2tleScpIik7Ci0gICAgZGJDYXB0dXJlRmlyZWQgPSBmYWxzZTsKLSAgICBhYm9y
dEZpcmVkID0gZmFsc2U7Ci0gICAgZGJCdWJibGVGaXJlZDEgPSBmYWxzZTsKLX0KLQotZnVuY3Rp
b24gZGJBYm9ydENhcHR1cmVDYWxsYmFjaygpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVn
KCJJbiBJREJEYXRhYmFzZSBhYm9ydCBjYXB0dXJlIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGJD
YXB0dXJlRmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJhYm9ydEZpcmVkIik7Ci0gICAgc2hv
dWxkQmVGYWxzZSgiZGJCdWJibGVGaXJlZDEiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0
IiwgInRyYW5zIik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LmN1cnJlbnRUYXJnZXQiLCAiZGIiKTsK
LSAgICBkYkNhcHR1cmVGaXJlZCA9IHRydWU7Ci19Ci0KLWZ1bmN0aW9uIGFib3J0RmlyZWRDYWxs
YmFjaygpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJJbiBhYm9ydCBoYW5kbGVyIik7
Ci0gICAgc2hvdWxkQmVUcnVlKCJkYkNhcHR1cmVGaXJlZCIpOwotICAgIHNob3VsZEJlRmFsc2Uo
ImFib3J0RmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVkMSIpOwotICAg
IHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAidHJhbnMiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQu
Y3VycmVudFRhcmdldCIsICJ0cmFucyIpOwotICAgIGFib3J0RmlyZWQgPSB0cnVlOwotfQotCi1m
dW5jdGlvbiBkYkFib3J0QnViYmxlQ2FsbGJhY2soKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBk
ZWJ1ZygiSW4gSURCRGF0YWJhc2UgZXJyb3IgYnViYmxlIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJk
YkNhcHR1cmVGaXJlZCIpOwotICAgIHNob3VsZEJlVHJ1ZSgiYWJvcnRGaXJlZCIpOwotICAgIHNo
b3VsZEJlRmFsc2UoImRiQnViYmxlRmlyZWQxIik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdl
dCIsICJ0cmFucyIpOwotICAgIHNob3VsZEJlKCJldmVudC5jdXJyZW50VGFyZ2V0IiwgImRiIik7
Ci0gICAgZGJCdWJibGVGaXJlZDEgPSB0cnVlOwotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1Zygi
VmVyaWZpbmcgc3VjY2Vzcy4iKTsKLSAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIu
dHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsK
LSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gY29tcGxldGVGaXJlZENhbGxiYWNr
Iik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxi
YWNrIik7Ci0gICAgZXZhbEFuZExvZygiZGIucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBk
YkFib3J0Q2FwdHVyZUNhbGxiYWNrLCB0cnVlKSIpOwotICAgIGV2YWxBbmRMb2coImRiLnJlbW92
ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgZGJBYm9ydEJ1YmJsZUNhbGxiYWNrLCBmYWxzZSkiKTsK
LSAgICBldmFsQW5kTG9nKCJkYi5yZW1vdmVFdmVudExpc3RlbmVyKCdjb21wbGV0ZScsIHVuZXhw
ZWN0ZWRDb21wbGV0ZUNhbGxiYWNrLCB0cnVlKSIpOwotICAgIGV2YWxBbmRMb2coImRiLnJlbW92
ZUV2ZW50TGlzdGVuZXIoJ2NvbXBsZXRlJywgdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2ssIGZh
bHNlKSIpOwotICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50TGlzdGVuZXIoJ2NvbXBsZXRlJywg
ZGJDb21wbGV0ZUNhcHR1cmVDYWxsYmFjaywgdHJ1ZSkiKTsKLSAgICBldmFsQW5kTG9nKCJkYi5h
ZGRFdmVudExpc3RlbmVyKCdjb21wbGV0ZScsIGRiQ29tcGxldGVCdWJibGVDYWxsYmFjaywgZmFs
c2UpIik7Ci0gICAgZXZhbEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCB1bmV4
cGVjdGVkQWJvcnRDYWxsYmFjaywgdHJ1ZSkiKTsKLSAgICBldmFsQW5kTG9nKCJkYi5hZGRFdmVu
dExpc3RlbmVyKCdhYm9ydCcsIHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrLCBmYWxzZSkiKTsKLSAg
ICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFt
ZScpIik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30s
ICdrZXkyJykiKTsKLSAgICBkYkNhcHR1cmVGaXJlZCA9IGZhbHNlOwotICAgIGNvbXBsZXRlRmly
ZWQgPSBmYWxzZTsKLSAgICBkYkJ1YmJsZUZpcmVkMiA9IGZhbHNlOwotfQotCi1mdW5jdGlvbiBk
YkNvbXBsZXRlQ2FwdHVyZUNhbGxiYWNrKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWco
IkluIElEQkRhdGFiYXNlIGNvbXBsZXRlIGNhcHR1cmUiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJk
YkNhcHR1cmVGaXJlZCIpOwotICAgIHNob3VsZEJlRmFsc2UoImNvbXBsZXRlRmlyZWQiKTsKLSAg
ICBzaG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVkMiIpOwotICAgIHNob3VsZEJlKCJldmVudC50
YXJnZXQiLCAidHJhbnMiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQuY3VycmVudFRhcmdldCIsICJk
YiIpOwotICAgIGRiQ2FwdHVyZUZpcmVkID0gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gY29tcGxldGVG
aXJlZENhbGxiYWNrKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIkluIElEQlJlcXVl
c3QgaGFuZGxlciIpOwotICAgIHNob3VsZEJlVHJ1ZSgiZGJDYXB0dXJlRmlyZWQiKTsKLSAgICBz
aG91bGRCZUZhbHNlKCJjb21wbGV0ZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJi
bGVGaXJlZDIiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0IiwgInRyYW5zIik7Ci0gICAg
c2hvdWxkQmUoImV2ZW50LmN1cnJlbnRUYXJnZXQiLCAidHJhbnMiKTsKLSAgICBjb21wbGV0ZUZp
cmVkID0gdHJ1ZTsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLWZ1
bmN0aW9uIGRiQ29tcGxldGVCdWJibGVDYWxsYmFjaygpCi17Ci0gICAgZGVidWcoIiIpOwotICAg
IGRlYnVnKCJJbiBJREJEYXRhYmFzZSBjb21wbGV0ZSBidWJibGUiKTsKLSAgICB0ZXN0RmFpbGVk
KCJDb21wbGV0ZSBidWJibGUgY2FsbGJhY2sgc2hvdWxkIE5PVCBmaXJlIik7Ci0gICAgZGJCdWJi
bGVGaXJlZDIgPSB0cnVlOwotfQotCi10ZXN0KCk7Ci0KLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3RyYW5zYWN0aW9uLWV2ZW50LXByb3BhZ2F0aW9uLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tcmVhZC1vbmx5Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1yZWFkLW9ubHkuaHRtbAppbmRleCA0OTVjYmMxYzJi
NGI3NGM5YzM1MjU5YWQzYWEzNzNiZTgzMjEwM2U5Li5hOTBjYzdhMTY2Y2NhYTc0NDhmZDUzZDBk
YjRmNjE0NGUyZjhkNjAzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi90cmFuc2FjdGlvbi1yZWFkLW9ubHkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi90cmFuc2FjdGlvbi1yZWFkLW9ubHkuaHRtbApAQCAtMSw2NyArMSwxMCBAQAotPGh0
bWw+DQotPGhlYWQ+DQotPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4NCi08c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+
PC9zY3JpcHQ+DQotPC9oZWFkPg0KLTxib2R5Pg0KLTxzY3JpcHQ+DQotDQotZGVzY3JpcHRpb24o
IlRlc3QgcmVhZC1vbmx5IHRyYW5zYWN0aW9ucyBpbiBJbmRleGVkREIuIik7DQotDQotZnVuY3Rp
b24gdGVzdCgpDQotew0KLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOw0KLQ0KLSAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0aW9uLXJlYWQtb25seScp
Iik7DQotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7DQotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOw0KLX0NCi0NCi1mdW5jdGlvbiBvcGVu
U3VjY2VzcygpDQotew0KLSAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsNCi0gICAgc2VsZi5k
YiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOw0KLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVzdWx0ID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsNCi0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOw0KLSAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsNCi19DQotDQotZnVuY3Rpb24gY2xlYW5EYXRh
YmFzZSgpDQotew0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOw0KLQ0KLSAgICBldmVu
dC50YXJnZXQucmVzdWx0Lm9uY29tcGxldGUgPSBzZXRWZXJzaW9uRG9uZTsNCi0gICAgZXZlbnQu
dGFyZ2V0LnJlc3VsdC5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7DQotICAgIHN0
b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIp
Ow0KLSAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ3gnLCAneScpIik7DQotfQ0KLQ0KLWZ1bmN0
aW9uIHNldFZlcnNpb25Eb25lKCkNCi17DQotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMg
PSBkYi50cmFuc2FjdGlvbignc3RvcmUnKSIpOw0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJ0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKS5wdXQoJ2EnLCAnYicpIiwgIklEQkRhdGFiYXNl
RXhjZXB0aW9uLlJFQURfT05MWV9FUlIiKTsNCi0NCi0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0
cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScpIik7DQotICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oInRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpLmRlbGV0ZSgneCcpIiwgIklEQkRhdGFi
YXNlRXhjZXB0aW9uLlJFQURfT05MWV9FUlIiKTsNCi0NCi0gICAgdHJhbnMgPSBldmFsQW5kTG9n
KCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScpIik7DQotICAgIGN1ciA9IGV2YWxBbmRM
b2coImN1ciA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpLm9wZW5DdXJzb3IoKSIpOw0KLSAg
ICBjdXIub25zdWNjZXNzID0gZ290Q3Vyc29yOw0KLSAgICBjdXIub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOw0KLX0NCi0NCi1mdW5jdGlvbiBnb3RDdXJzb3IoKQ0KLXsNCi0gICAg
c2hvdWxkQmVGYWxzZSgiIWV2ZW50LnRhcmdldC5yZXN1bHQiKTsNCi0gICAgZXZhbEFuZEV4cGVj
dEV4Y2VwdGlvbigiZXZlbnQudGFyZ2V0LnJlc3VsdC5kZWxldGUoKSIsICJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5SRUFEX09OTFlfRVJSIik7DQotDQotICAgIGZpbmlzaEpTVGVzdCgpOw0KLX0NCi0N
Ci0NCi10ZXN0KCk7DQotDQotPC9zY3JpcHQ+DQotPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+DQotPC9ib2R5Pg0KLTwvaHRtbD4N
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90cmFu
c2FjdGlvbi1yZWFkLW9ubHkuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1y
b2xsYmFjay5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24t
cm9sbGJhY2suaHRtbAppbmRleCA4YTI3Mzg5MDQ3MzljYTVlMTI2NDZkNjUwYjE1YzFlOTZhM2Qw
Yzc1Li43ZGJkODA0YWM2NTk0ZTI2ZGU0M2YzNTcyYjM5MWIyZjM5MGIxYjc0IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1yb2xsYmFjay5odG1s
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXJvbGxiYWNr
Lmh0bWwKQEAgLTQsOTcgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMi
Pjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVz
dCBJbmRleGVkREIgdHJhbnNhY3Rpb24gcm9sbGJhY2suIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQot
ewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiaW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0aW9uLXJvbGxiYWNrJykiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGVi
dWcoIm9wZW5TdWNjZXNzKCk6Iik7Ci0gICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
ZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNs
ZWFuRGF0YWJhc2U7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQotewotICAgIGRlYnVnKCJjbGVhbkRh
dGFiYXNlKCk6Iik7Ci0gICAgc2VsZi50cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0
aW9uID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gc2V0
VmVyc2lvbkNvbXBsZXRlOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLSAgICBl
dmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnbXlPYmplY3RTdG9yZScpIik7Ci0gICAg
c2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjEiKTsKLX0KLQotZnVuY3Rp
b24gc2V0VmVyc2lvbkNvbXBsZXRlKCkKLXsKLSAgICBkZWJ1Zygic2V0VmVyc2lvbkNvbXBsZXRl
KCk6Iik7Ci0KLSAgICBzZWxmLnRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24g
PSBkYi50cmFuc2FjdGlvbihbJ215T2JqZWN0U3RvcmUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9X
UklURSkiKTsKLSAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gYWJvcnRDYWxsYmFjazsKLSAgICB0
cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7Ci0KLSAg
ICBzZWxmLnN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9y
ZSgnbXlPYmplY3RTdG9yZScpIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFk
ZCgncm9sbGJhY2tWYWx1ZScsICdyb2xsYmFja0tleTEyMycpIik7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBhZGRTdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBhZGRTdWNjZXNzKCkKLXsKLSAgICBkZWJ1ZygiYWRk
U3VjY2VzcygpOiIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIidyb2xs
YmFja0tleTEyMyciKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5vcGVuQ3Vy
c29yKCkiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5DdXJzb3JTdWNjZXNzOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlv
biBvcGVuQ3Vyc29yU3VjY2VzcygpCi17Ci0gICAgZGVidWcoIm9wZW5DdXJzb3JTdWNjZXNzKCk6
Iik7Ci0gICAgc2VsZi5jdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7Ci0KLSAgICB0cmFuc2FjdGlvbi5hYm9ydCgpOwotfQotCi1mdW5jdGlvbiBhYm9y
dENhbGxiYWNrKCkKLXsKLSAgICBkZWJ1ZygiYWJvcnRDYWxsYmFjaygpOiIpOwotICAgIGRlYnVn
KCdUcmFuc2FjdGlvbiB3YXMgYWJvcnRlZC4nKTsKLQotICAgIHNlbGYudHJhbnNhY3Rpb24gPSBl
dmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnbXlPYmplY3RTdG9yZSdd
LCBJREJUcmFuc2FjdGlvbi5SRUFEKSIpOwotICAgIHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJz
dG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdteU9iamVjdFN0b3JlJykiKTsKLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuZ2V0KCdyb2xsYmFja0tleTEyMycpIik7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBnZXRTdWNjZXNzOwotfQotCi1mdW5jdGlvbiBnZXRTdWNjZXNzKCkKLXsKLSAg
ICBkZWJ1ZygiZ2V0U3VjY2VzcygpOiIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVz
dWx0IiwgInVuZGVmaW5lZCIpOwotCi0gICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZSIsICIncm9s
bGJhY2tWYWx1ZSciKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90cmFuc2FjdGlvbi1yb2xsYmFjay5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXN0b3JlTmFtZXMtcmVxdWlyZWQuaHRt
bCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXN0b3JlTmFtZXMt
cmVxdWlyZWQuaHRtbAppbmRleCBlNzNlODY5MjhlZjE4YzJjNDk2MDZkZWI2Zjk5NTg1MGJkZGJk
OGY0Li5iMmFjY2MzNzY2ZmFkZmMzZDNiMjE4NzIwMjJmNDk4MThlZTg3OGJkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1zdG9yZU5hbWVzLXJl
cXVpcmVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rp
b24tc3RvcmVOYW1lcy1yZXF1aXJlZC5odG1sCkBAIC0xLDQ2ICsxLDEwIEBACi08IURPQ1RZUEUg
aHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFy
ZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlv
bigiVGVzdCBJbmRleGVkREI6IHRyYW5zYWN0aW9uIHN0b3JlTmFtZXMgcmVxdWlyZWQgYXJndW1l
bnRzIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7
Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9
ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERC
Lm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVu
U3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVx
dWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Jl
YXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RT
dG9yZSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIHNob3VsZFRo
cm93KCJkYi50cmFuc2FjdGlvbigpOyIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRl
c3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3RyYW5zYWN0aW9uLXN0
b3JlTmFtZXMtcmVxdWlyZWQuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90d28tdmVyc2lvbi1j
aGFuZ2VzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90d28tdmVyc2lvbi1j
aGFuZ2VzLmh0bWwKaW5kZXggOWExZmZhZjFhZWE4NDQyNGVlMWE0YTk4ZTMwMzM3MzYzMDliYTYz
MC4uYzU2OTA5YTRmNGIzOTE5YmFiNzRkMTY0MDVlODhlYzdjZDI2YzczMyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHdvLXZlcnNpb24tY2hhbmdlcy5odG1sCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3R3by12ZXJzaW9uLWNoYW5nZXMuaHRt
bApAQCAtNCwxMTQgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwv
c2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBi
ZWhhdmlvciB3aGVuIHRoZSBzYW1lIGNvbm5lY3Rpb24gY2FsbHMgc2V0VmVyc2lvbiB0d2ljZSIp
OwotCi0KLWZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQot
ICAgIHNob3VsZEJlRmFsc2UoImluZGV4ZWREQiA9PSBudWxsIik7Ci0gICAgc2hvdWxkQmVGYWxz
ZSgiSURCVHJhbnNhY3Rpb24gPT0gbnVsbCIpOwotICAgIG9wZW5EQkNvbm5lY3Rpb24oKTsKLX0K
LQotZnVuY3Rpb24gb3BlbkRCQ29ubmVjdGlvbigpCi17Ci0gICAgZXZhbEFuZExvZygic2VsZi5z
dGF0ZSA9ICdzdGFydGluZyciKTsKLSAgICB2YXIgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4
ZWREQi5vcGVuKCd0d28tdmVyc2lvbnMtb25lLWNvbm5lY3Rpb24nKSIpOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBzZWxm
LmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgZXZhbEFu
ZExvZygic2VsZi5zdGF0ZSA9IDAiKTsKLQotICAgIHZhciB2ZXJzaW9uQ2hhbmdlUmVxdWVzdDEg
PSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOwotICAgIHZlcnNpb25D
aGFuZ2VSZXF1ZXN0MS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgdmVy
c2lvbkNoYW5nZVJlcXVlc3QxLm9uc3VjY2VzcyA9IGluU2V0VmVyc2lvbjE7Ci0KLSAgICAvLyBh
bmQgY29uY3VycmVudGx5Li4uCi0KLSAgICB2YXIgdmVyc2lvbkNoYW5nZVJlcXVlc3QyID0gZXZh
bEFuZExvZygiZGIuc2V0VmVyc2lvbigndmVyc2lvbiAyJykiKTsKLSAgICB2ZXJzaW9uQ2hhbmdl
UmVxdWVzdDIub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHZlcnNpb25D
aGFuZ2VSZXF1ZXN0Mi5vbnN1Y2Nlc3MgPSBpblNldFZlcnNpb24yOwotfQotCi1mdW5jdGlvbiBp
blNldFZlcnNpb24xKCkKLXsKLSAgICBkZWJ1Zygic2V0VmVyc2lvbigpICMxIGNhbGxiYWNrIik7
Ci0gICAgdHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0OwotICAgIGV2YWxBbmRMb2coInNlbGYu
c3RvcmUxID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Rlc3Qtc3RvcmUxJykiKTsKLSAgICBzaG91
bGRCZSgiKytzZWxmLnN0YXRlIiwgIjEiKTsKLSAgICB2YXIgcmVxID0gZXZhbEFuZExvZygic2Vs
Zi5zdG9yZTEucHV0KCdhYWEnLCAxMTEpIik7Ci0gICAgcmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLSAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKLSAgICAg
ICAgc2hvdWxkQmUoIisrc2VsZi5zdGF0ZSIsICIyIik7Ci0gICAgICAgIGhhbGZ3YXlEb25lKCk7
Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24gaW5TZXRWZXJzaW9uMigpCi17Ci0gICAgZGVidWcoInNl
dFZlcnNpb24oKSAjMiBjYWxsYmFjayIpOwotICAgIHRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dDsKLSAgICBzaG91bGRCZSgiKytzZWxmLnN0YXRlIiwgIjQiKTsKLSAgICBldmFsQW5kTG9nKCJz
ZWxmLnN0b3JlMiA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCd0ZXN0LXN0b3JlMicpIik7Ci0KLQot
ICAgIHZhciByZXEgPSBldmFsQW5kTG9nKCJzZWxmLnN0b3JlMi5wdXQoJ2JiYicsIDIyMikiKTsK
LSAgICByZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcS5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbiAoZSkgewotICAgICAgICBzaG91bGRCZSgiKytzZWxmLnN0YXRlIiwg
IjUiKTsKLSAgICAgICAgaGFsZndheURvbmUoKTsKLSAgICB9OwotfQotCi12YXIgY291bnRlciA9
IDA7Ci1mdW5jdGlvbiBoYWxmd2F5RG9uZSgpIAotewotICAgIGNvdW50ZXIgKz0gMTsKLSAgICBp
ZiAoY291bnRlciA8IDIpIHsKLSAgICAgICAgc2hvdWxkQmUoIisrc2VsZi5zdGF0ZSIsICIzIik7
Ci0gICAgICAgIGRlYnVnKCJoYWxmd2F5IHRoZXJlLi4uIiApOwotICAgIH0gZWxzZSB7Ci0gICAg
ICAgIHNob3VsZEJlKCIrK3NlbGYuc3RhdGUiLCAiNiIpOwotICAgICAgICBjaGVja1Jlc3VsdHMo
KTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGNoZWNrUmVzdWx0cygpIHsKLSAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoInNlbGYuZGIudmVyc2lvbiIsICJ2ZXJzaW9uIDIiKTsKLSAgICB0cmFucy5v
bmNvbXBsZXRlID0gc2V0VmVyc2lvbkNvbXBsZXRlOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9u
Q29tcGxldGUoKQotewotICAgIHRyYW5zID0gZXZhbEFuZExvZygic2VsZi50cmFucyA9IGRiLnRy
YW5zYWN0aW9uKFsndGVzdC1zdG9yZTEnLCAndGVzdC1zdG9yZTInXSkiKTsKLSAgICBzdG9yZSA9
IGV2YWxBbmRMb2coInNlbGYuc3RvcmUgPSBzZWxmLnRyYW5zLm9iamVjdFN0b3JlKCd0ZXN0LXN0
b3JlMScpIik7Ci0gICAgcmVxID0gZXZhbEFuZExvZygic2VsZi5yZXEgPSBzZWxmLnN0b3JlLmdl
dCgxMTEpIik7Ci0gICAgcmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAg
ICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0IiwgImFhYSIpOwotCi0gICAgICAgIHN0b3JlID0g
ZXZhbEFuZExvZygic2VsZi5zdG9yZSA9IHNlbGYudHJhbnMub2JqZWN0U3RvcmUoJ3Rlc3Qtc3Rv
cmUyJykiKTsKLSAgICAgICAgcmVxID0gZXZhbEFuZExvZygic2VsZi5yZXEgPSBzZWxmLnN0b3Jl
LmdldCgyMjIpIik7Ci0gICAgICAgIHJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci0gICAgICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZSkgewotICAgICAgICAgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0IiwgImJiYiIpOwotICAg
ICAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgICAgIH07Ci0gICAgfTsKLX0KLQotCi10ZXN0
KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90d28tdmVyc2lvbi1jaGFu
Z2VzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmFsdWUtdW5kZWZpbmVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi92YWx1ZS11bmRlZmluZWQuaHRtbAppbmRleCA2NzAx
ZjA2YTk1MWJhOTA5MWE5N2EyZDdkNTI1NzhlMjY2MmEwZDgxLi4zOTNhYjQ0NTgwZjg1YTQxYmQw
NzFjOWJlZjNkNjBjZjAwZDdiM2RmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi92YWx1ZS11bmRlZmluZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi92YWx1ZS11bmRlZmluZWQuaHRtbApAQCAtMSw3NiArMSwxMCBAQAotPCFET0NUWVBF
IGh0bWw+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hh
cmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRp
b24oIlRlc3QgSW5kZXhlZERCIHVuZGVmaW5lZCBhcyByZWNvcmQgdmFsdWUiKTsKLQotZnVuY3Rp
b24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBz
ZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJh
c2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNj
cmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBv
cGVuU3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVy
c2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9i
amVjdFN0b3JlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotfQotCi1mdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKLXsKLSAgICBk
ZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nKTsiKTsKLSAgICByZXN1
bHQgPSBldmFsQW5kTG9nKCJyZXN1bHQgPSBvYmplY3RTdG9yZS5hZGQodW5kZWZpbmVkLCBJbmZp
bml0eSk7Iik7Ci0gICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LSAgICByZXN1bHQub25zdWNjZXNzID0gZ2V0VmFsdWU7Ci19Ci0KLWZ1bmN0aW9uIGdldFZhbHVl
KCkKLXsKLSAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJyZXN1bHQgPSBvYmplY3RTdG9yZS5nZXQo
SW5maW5pdHkpOyIpOwotICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci0gICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGNoZWNrVmFsdWU7Ci19Ci0KLWZ1bmN0aW9uIGNo
ZWNrVmFsdWUoKQotewotICAgIHZhbHVlID0gZXZhbEFuZExvZygidmFsdWUgPSBldmVudC50YXJn
ZXQucmVzdWx0OyIpOwotICAgIHNob3VsZEJlKCJ2YWx1ZSIsICJ1bmRlZmluZWQiKTsKLSAgICBy
ZXN1bHQgPSBldmFsQW5kTG9nKCJyZXN1bHQgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7
Ci0gICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXN1
bHQub25zdWNjZXNzID0gY2hlY2tDdXJzb3I7Ci19Ci0KLWZ1bmN0aW9uIGNoZWNrQ3Vyc29yKCkK
LXsKLSAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0
OyIpOwotICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAi
SW5maW5pdHkiKTsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZSIsICJ1bmRlZmluZWQi
KTsKLSAgICB9IGVsc2UgewotICAgICAgICB0ZXN0RmFpbGVkKCJjdXJzb3IgaXMgbnVsbCIpOwot
ICAgIH0KLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy92YWx1ZS11bmRlZmluZWQuanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi92YWx1ZXMtb2RkLXR5cGVzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi92YWx1ZXMtb2RkLXR5cGVzLmh0bWwKaW5kZXggMmM4NjNmMzhhZmMyMTM5MzRlOTk4NDk3
MTcwYTBjMDc1M2YwMmNjMi4uODQ4YWM3YzllODlkNGZhMmVjZmZjMmI4YzI2Y2ExYTE0NjI3N2Jk
YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmFsdWVzLW9kZC10
eXBlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ZhbHVlcy1vZGQt
dHlwZXMuaHRtbApAQCAtMSw4OCArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxo
ZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4K
IDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERC
IG9kZCB2YWx1ZSBkYXRhdHlwZXMiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3Zl
VmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwot
ICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIg
PSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBhZGRLZXkxOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBhZGRLZXkxKCkKLXsKLSAgICBkZWxldGVBbGxP
YmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVh
dGVPYmplY3RTdG9yZSgnZm9vJywge2F1dG9JbmNyZW1lbnQ6IHRydWV9KTsiKTsKLQotICAgIGNh
bnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOwotICAgIGNvbnRleHQgPSBj
YW52YXMuZ2V0Q29udGV4dCgnMmQnKTsKLSAgICBpbWFnZWRhdGEgPSBjb250ZXh0LmNyZWF0ZUlt
YWdlRGF0YSgxLCAxKTsKLSAgICB2YWxpZFR5cGVzID0gW3sgZGVzY3JpcHRpb246ICdyZWdleHAn
LCAgICB2YWx1ZTogbmV3IFJlZ0V4cCgnXFxcXCcpIH0sCi0gICAgICAgICAgICAgICAgICB7IGRl
c2NyaXB0aW9uOiAnZGF0ZScsICAgICAgdmFsdWU6IG5ldyBEYXRlKDApIH0sCi0gICAgICAgICAg
ICAgICAgICB7IGRlc2NyaXB0aW9uOiAnb2JqZWN0JywgICAgdmFsdWU6IG5ldyBPYmplY3QoKSB9
LAotICAgICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ2ltYWdlZGF0YScsIHZhbHVlOiBp
bWFnZWRhdGEgfSwKLSAgICBdOwotICAgIG5leHRUb0FkZCA9IDA7Ci0gICAgYWRkRGF0YSgpOwot
fQotCi1mdW5jdGlvbiBhZGREYXRhKCkKLXsKLSAgICBkZWJ1ZygiYWRkaW5nICIgKyB2YWxpZFR5
cGVzW25leHRUb0FkZF0uZGVzY3JpcHRpb24gKyAiIHZhbHVlIik7Ci0gICAgcmVzdWx0ID0gZXZh
bEFuZExvZygib2JqZWN0U3RvcmUuYWRkKHZhbGlkVHlwZXNbbmV4dFRvQWRkXS52YWx1ZSkiKTsK
LSAgICByZXN1bHQub25zdWNjZXNzID0gKytuZXh0VG9BZGQgPCB2YWxpZFR5cGVzLmxlbmd0aCA/
IGFkZERhdGEgOiBvcGVuQUN1cnNvcjsKLSAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuQUN1cnNvcigpCi17Ci0gICAgdmFsdWVJ
bmRleCA9IDA7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9y
ZS5vcGVuQ3Vyc29yKCk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAg
ICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsi
KTsKLSAgICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52
YWx1ZS50b1N0cmluZygpIiwgInZhbGlkVHlwZXNbdmFsdWVJbmRleF0udmFsdWUudG9TdHJpbmco
KSIpOwotICAgICAgICAgICAgaWYgKHZhbHVlSW5kZXggPT0gMSkgewotICAgICAgICAgICAgICAg
IHNob3VsZEJlKCJjdXJzb3IudmFsdWUudG9VVENTdHJpbmcoKSIsICInVGh1LCAwMSBKYW4gMTk3
MCAwMDowMDowMCBHTVQnIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAodmFsdWVJ
bmRleCA9PSAzKSB7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS53aWR0
aCIsICIxIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3Iu
Y29udGludWUoKTsiKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coInZhbHVlSW5kZXgrKzsiKTsK
LSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwot
ICAgICAgICB9Ci0gICAgfQotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3ZhbHVlcy1vZGQtdHlwZXMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2Jv
ZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi92
ZXJzaW9uLWNoYW5nZS1hYm9ydC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi92ZXJzaW9uLWNoYW5nZS1hYm9ydC1leHBlY3RlZC50eHQKaW5kZXggMzE1ZDRkNTdj
ZTg1YjFjOWZlNTg5YmI4ZTdjMTEwZDk1NTcyYzAwNS4uMzFlYmQ2MTNhYmU2N2Y0NGFmMDdiMzg1
MmUyZjk0MjEyMDc2YjAyYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvdmVyc2lvbi1jaGFuZ2UtYWJvcnQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWFib3J0LWV4cGVjdGVkLnR4dApAQCAtMSw0
ICsxLDQgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA3NjogVW5jYXVnaHQgRXJyb3I6IFRoaXMg
c2hvdWxkICpOT1QqIGJlIGNhdWdodCEKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA3MTogVW5jYXVn
aHQgRXJyb3I6IFRoaXMgc2hvdWxkICpOT1QqIGJlIGNhdWdodCEKIEVuc3VyZSB0aGF0IGFib3J0
ZWQgVkVSU0lPTl9DSEFOR0UgdHJhbnNhY3Rpb25zIGFyZSBjb21wbGV0ZWx5IHJvbGxlZCBiYWNr
CiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWFib3J0Lmh0bWwgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9uLWNoYW5nZS1hYm9ydC5odG1sCmluZGV4IGNkYzlhY2Ew
ZTMxODE3MTExMzgwODQxYjIzNTU0NDBmYTViMmUyMTQuLjU3ZGUwMDkwYTU2ZDU5NTU2YWI0OWI5
OWQ1MmY4NDUxZjljM2MyZWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3ZlcnNpb24tY2hhbmdlLWFib3J0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvdmVyc2lvbi1jaGFuZ2UtYWJvcnQuaHRtbApAQCAtMSw5OSArMSwxMCBAQAotPCFE
T0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVz
Y3JpcHRpb24oIkVuc3VyZSB0aGF0IGFib3J0ZWQgVkVSU0lPTl9DSEFOR0UgdHJhbnNhY3Rpb25z
IGFyZSBjb21wbGV0ZWx5IHJvbGxlZCBiYWNrIik7Ci0KLQotZnVuY3Rpb24gdGVzdCgpIHsKLSAg
ICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIG9wZW5EQkNvbm5lY3Rpb24oKTsKLX0KLQot
ZnVuY3Rpb24gb3BlbkRCQ29ubmVjdGlvbigpCi17Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImluZGV4ZWREQi5vcGVuKCd2ZXJzaW9uLWNoYW5nZS1hYm9ydCcpIik7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIHNlbGYu
ZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBkZWJ1Zygi
Iik7Ci0KLSAgICBldmFsQW5kTG9nKCJ2Y3JlcSA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScp
Iik7Ci0gICAgdmNyZXEub25zdWNjZXNzID0gaW5TZXRWZXJzaW9uMTsKLSAgICB2Y3JlcS5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGluU2V0VmVyc2lv
bjEoKQotewotICAgIGRlYnVnKCJzZXRWZXJzaW9uMSgpIGNhbGxiYWNrIik7Ci0gICAgc2hvdWxk
QmVUcnVlKCJ2Y3JlcS5yZXN1bHQgaW5zdGFuY2VvZiBJREJUcmFuc2FjdGlvbiIpOwotICAgIHRy
YW5zID0gdmNyZXEucmVzdWx0OwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRD
YWxsYmFjazsKLSAgICB0cmFucy5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0g
ICAgdHJhbnMub25jb21wbGV0ZSA9IHNldFZlcnNpb24xQ29tcGxldGU7Ci0KLSAgICBldmFsQW5k
TG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTEnKSIpOwotfQotCi1mdW5j
dGlvbiBzZXRWZXJzaW9uMUNvbXBsZXRlKCkKLXsKLSAgICBkZWJ1Zygic2V0VmVyc2lvbjEgY29t
cGxldGUiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLnZlcnNpb24iLCAidmVyc2lv
biAxIik7Ci0gICAgZGVidWcoIiIpOwotCi0gICAgZXZhbEFuZExvZygidmNyZXEgPSBkYi5zZXRW
ZXJzaW9uKCd2ZXJzaW9uIDInKSIpOwotICAgIHZjcmVxLm9uc3VjY2VzcyA9IGluU2V0VmVyc2lv
bjI7Ci0gICAgdmNyZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1m
dW5jdGlvbiBpblNldFZlcnNpb24yKCkKLXsKLSAgICBkZWJ1Zygic2V0VmVyc2lvbjIoKSBjYWxs
YmFjayIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGIudmVyc2lvbiIsICJ2ZXJzaW9u
IDIiKTsKLSAgICBzaG91bGRCZVRydWUoInZjcmVxLnJlc3VsdCBpbnN0YW5jZW9mIElEQlRyYW5z
YWN0aW9uIik7Ci0gICAgdHJhbnMgPSB2Y3JlcS5yZXN1bHQ7Ci0gICAgdHJhbnMub25hYm9ydCA9
IHNldFZlcnNpb24yQWJvcnQ7Ci0gICAgdHJhbnMub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFj
azsKLQotICAgIGV2YWxBbmRMb2coInN0b3JlID0gZGIuZGVsZXRlT2JqZWN0U3RvcmUoJ3N0b3Jl
MScpIik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3Rv
cmUyJykiKTsKLQotICAgIC8vIEVuc3VyZSB0aGUgdGVzdCBoYXJuZXNzIGVycm9yIGhhbmRsZXIg
aXMgbm90IGludm9rZWQuCi0gICAgc2VsZi5vcmlnaW5hbFdpbmRvd09uRXJyb3IgPSBzZWxmLm9u
ZXJyb3I7Ci0gICAgc2VsZi5vbmVycm9yID0gbnVsbDsKLQotICAgIGRlYnVnKCJyYWlzaW5nIGV4
Y2VwdGlvbiIpOwotICAgIHRocm93IG5ldyBFcnJvcigiVGhpcyBzaG91bGQgKk5PVCogYmUgY2F1
Z2h0ISIpOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uMkFib3J0KCkKLXsKLSAgICBkZWJ1Zygi
Iik7Ci0gICAgZGVidWcoInNldFZlcnNpb24yQWJvcnQoKSBjYWxsYmFjayIpOwotCi0gICAgLy8g
UmVzdG9yZSB0ZXN0IGhhcm5lc3MgZXJyb3IgaGFuZGxlci4KLSAgICBzZWxmLm9uZXJyb3IgPSBz
ZWxmLm9yaWdpbmFsV2luZG93T25FcnJvcjsKLQotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
ZGIudmVyc2lvbiIsICJ2ZXJzaW9uIDEiKTsKLSAgICBzaG91bGRCZVRydWUoImRiLm9iamVjdFN0
b3JlTmFtZXMuY29udGFpbnMoJ3N0b3JlMScpIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGIub2Jq
ZWN0U3RvcmVOYW1lcy5jb250YWlucygnc3RvcmUyJykiKTsKLQotICAgIGZpbmlzaEpTVGVzdCgp
OwotfQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy92ZXJz
aW9uLWNoYW5nZS1hYm9ydC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb24tY2hhbmdl
LWV4Y2x1c2l2ZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1j
aGFuZ2UtZXhjbHVzaXZlLmh0bWwKaW5kZXggNDk0OTZkZWIyNGFiOTg3ZDEzYTY4MTQxNGI2ZWU1
OGMzZjllZTUzMi4uNGEwZTQ2MmE2N2FiOWExMjgzMTAxYzc2Zjg2NDY3ODk4NTU0ZDlmZSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1jaGFuZ2UtZXhj
bHVzaXZlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1j
aGFuZ2UtZXhjbHVzaXZlLmh0bWwKQEAgLTQsNzcgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291
cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1k
ZXNjcmlwdGlvbigiRW5zdXJlIFZFUlNJT05fQ0hBTkdFIHRyYW5zYWN0aW9uIGRvZXNuJ3QgcnVu
IGNvbmN1cnJlbnRseSB3aXRoIG90aGVyIHRyYW5zYWN0aW9ucyIpOwotCi0KLWZ1bmN0aW9uIHRl
c3QoKSB7Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICBvcGVuREJDb25uZWN0aW9u
KCk7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5EQkNvbm5lY3Rpb24oKQotewotICAgIGV2YWxBbmRMb2co
InNlbGYuc3RhdGUgPSAnc3RhcnRpbmcnIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImlu
ZGV4ZWREQi5vcGVuKCd2ZXJzaW9uLWNoYW5nZS1leGNsdXNpdmUnKSIpOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBzZWxm
LmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICBkZWJ1
ZygiY2FsbGluZyBzZXRWZXJzaW9uKCkgLSBjYWxsYmFjayBzaG91bGQgcnVuIGltbWVkaWF0ZWx5
Iik7Ci0gICAgdmFyIHZlcnNpb25DaGFuZ2VSZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVy
c2lvbigndmVyc2lvbiAxJykiKTsKLSAgICB2ZXJzaW9uQ2hhbmdlUmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgdmVyc2lvbkNoYW5nZVJlcXVlc3Qub25zdWNj
ZXNzID0gaW5TZXRWZXJzaW9uOwotCi0gICAgLy8gYW5kIGNvbmN1cnJlbnRseS4uLgotCi0gICAg
ZGVidWcoImNhbGxpbmcgb3BlbigpIC0gY2FsbGJhY2sgc2hvdWxkIHdhaXQgdW50aWwgVkVSU0lP
Tl9DSEFOR0UgdHJhbnNhY3Rpb24gaXMgY29tcGxldGUiKTsKLSAgICB2YXIgb3BlblJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndmVyc2lvbi1jaGFuZ2UtZXhjbHVzaXZlJyki
KTsKLSAgICBvcGVuUmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuQWdhaW5TdWNjZXNzOwotICAgIG9w
ZW5SZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rp
b24gaW5TZXRWZXJzaW9uKCkKLXsKLSAgICBkZWJ1Zygic2V0VmVyc2lvbigpIGNhbGxiYWNrIik7
Ci0gICAgZGVidWcoInN0YXJ0aW5nIHdvcmsgaW4gVkVSU0lPTl9DSEFOR0UgdHJhbnNhY3Rpb24i
KTsKLSAgICBldmFsQW5kTG9nKCJzZWxmLnN0YXRlID0gJ1ZFUlNJT05fQ0hBTkdFIHN0YXJ0ZWQn
Iik7Ci0KLSAgICBzZWxmLnN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgndGVzdC1zdG9yZScpIik7Ci0gICAgc2VsZi5jb3VudCA9IDA7Ci0gICAgZG9fYXN5
bmNfcHV0cygpOwotCi0gICAgZnVuY3Rpb24gZG9fYXN5bmNfcHV0cygpIHsKLSAgICAgICAgdmFy
IHJlcSA9IGV2YWxBbmRMb2coInN0b3JlLnB1dCgiICsgY291bnQgKyAiLCAiICsgY291bnQgKyAi
KSIpOwotICAgICAgICByZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAg
ICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAgICAgIGRlYnVnKCJp
biBwdXQncyBvbnN1Y2Nlc3MiKTsKLSAgICAgICAgICAgIGlmICgrK3NlbGYuY291bnQgPCAxMCkg
ewotICAgICAgICAgICAgICAgIGRvX2FzeW5jX3B1dHMoKTsKLSAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgZGVidWcoImVuZGluZyB3b3JrIGluIFZFUlNJT05fQ0hBTkdFIHRy
YW5zYWN0aW9uIik7Ci0gICAgICAgICAgICAgICAgZXZhbEFuZExvZygic2VsZi5zdGF0ZSA9ICdW
RVJTSU9OX0NIQU5HRSBmaW5pc2hlZCciKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAg
ICB9Ci19Ci0KLWZ1bmN0aW9uIG9wZW5BZ2FpblN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJvcGVu
KCkgY2FsbGJhY2sgLSB0aGlzIHNob3VsZCBhcHBlYXIgYWZ0ZXIgVkVSU0lPTl9DSEFOR0UgdHJh
bnNhY3Rpb24gZW5kcyIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic2VsZi5zdGF0ZSIs
ICJWRVJTSU9OX0NIQU5HRSBmaW5pc2hlZCIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0K
LXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3ZlcnNpb24tY2hh
bmdlLWV4Y2x1c2l2ZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb25jaGFuZ2VyZXF1
ZXN0LWFjdGl2ZWRvbW9iamVjdC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
dmVyc2lvbmNoYW5nZXJlcXVlc3QtYWN0aXZlZG9tb2JqZWN0Lmh0bWwKaW5kZXggOWE3YzM1MGRi
NTJiY2RiMGUzY2E0MDhkMzhiYzg2Y2Y4ZmE3NTE0ZC4uNTQ3NDVkNzAxNmIwNTY5NzQ4N2ZmYTA4
ODAyM2Y1NWZkYTZiMzU2NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvdmVyc2lvbmNoYW5nZXJlcXVlc3QtYWN0aXZlZG9tb2JqZWN0Lmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbmNoYW5nZXJlcXVlc3QtYWN0aXZlZG9tb2Jq
ZWN0Lmh0bWwKQEAgLTEsNzYgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVh
ZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8
L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJFbnN1cmUgdGhhdCBJREJW
ZXJzaW9uQ2hhbmdlUmVxdWVzdCBvYmplY3RzIGFyZSBub3QgR0MnZCBpZiB0aGV5IGhhdmUgcGVu
ZGluZyBldmVudHMiKTsKLQotZnVuY3Rpb24gdGVzdCgpIHsKLSAgICByZW1vdmVWZW5kb3JQcmVm
aXhlcygpOwotCi0gICAgZGVidWcoIiIpOwotICAgIGV2YWxBbmRMb2coInNlbGYuZGJuYW1lID0g
J3ZlcnNpb25jaGFuZ2VyZXF1ZXN0LWFjdGl2ZWRvbW9iamVjdCciKTsKLQotICAgIHRlc3REZWxl
dGVEYXRhYmFzZSgpOwotfQotCi1mdW5jdGlvbiB0ZXN0RGVsZXRlRGF0YWJhc2UoKQotewotICAg
IGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygidGVzdERlbGV0ZURhdGFiYXNlKCk6Iik7Ci0gICAgLy8g
Tk9URTogZGVsZXRlUmVxdWVzdCBpcyBsb2NhbCB2YXJpYWJsZSBzbyBpdCBpcyBub3QgY2FwdHVy
ZWQgaW4gZ2xvYmFsIHNjb3BlLgotICAgIHZhciBkZWxldGVSZXF1ZXN0ID0gZXZhbEFuZExvZygi
aW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKHNlbGYuZGJuYW1lKSIpOwotICAgIGRlbGV0ZVJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIGRlbGV0ZVJlcXVlc3Qu
b25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2NrZWRDYWxsYmFjazsKLSAgICBkZWxldGVSZXF1ZXN0
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeyBkZWxldGVTdWNjZXNzKCk7IH07Ci0gICAgZGVsZXRl
UmVxdWVzdCA9IG51bGw7Ci0gICAgaWYgKHNlbGYuZ2MpIHsKLSAgICAgICAgZXZhbEFuZExvZygi
c2VsZi5nYygpIik7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBkZWxldGVTdWNjZXNzKCkKLXsKLSAg
ICB0ZXN0UGFzc2VkKCJkZWxldGVEYXRhYmFzZSdzIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9u
c3VjY2VzcyBldmVudCBmaXJlZCIpOwotICAgIHRlc3RTZXRWZXJzaW9uKCk7Ci19Ci0KLWZ1bmN0
aW9uIHRlc3RTZXRWZXJzaW9uKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInRlc3RT
ZXRWZXJzaW9uKCk6Iik7Ci0KLSAgICAvLyBOT1RFOiBUaGlzIGlzIGp1c3QgYW4gSURCUmVxdWVz
dCwgaXQgY2FuIGJlIGdsb2JhbC4KLSAgICBldmFsQW5kTG9nKCJvcGVuUmVxdWVzdCA9IGluZGV4
ZWREQi5vcGVuKHNlbGYuZGJuYW1lKSIpOwotICAgIG9wZW5SZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICBvcGVuUmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlv
biAoKSB7Ci0gICAgICAgIGV2YWxBbmRMb2coImRiID0gb3BlblJlcXVlc3QucmVzdWx0Iik7Ci0K
LSAgICAgICAgLy8gTk9URTogdmVyc2lvblJlcXVlc3QgaXMgbG9jYWwgdmFyaWFibGUgc28gaXQg
aXMgbm90IGNhcHR1cmVkIGluIGdsb2JhbCBzY29wZS4KLSAgICAgICAgdmFyIHZlcnNpb25SZXF1
ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgICAgIHZlcnNpb25S
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgdmVyc2lv
blJlcXVlc3Qub25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2NrZWRDYWxsYmFjazsKLSAgICAgICAg
dmVyc2lvblJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7IHZlcnNpb25TdWNjZXNzKCk7
IH07Ci0gICAgICAgIHZlcnNpb25SZXF1ZXN0ID0gbnVsbDsKLSAgICAgICAgaWYgKHNlbGYuZ2Mp
IHsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coInNlbGYuZ2MoKSIpOwotICAgICAgICB9Ci0gICAg
fTsKLX0KLQotZnVuY3Rpb24gdmVyc2lvblN1Y2Nlc3MoKQotewotICAgIHRlc3RQYXNzZWQoInNl
dFZlcnNpb24ncyBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5vbnN1Y2Nlc3MgZXZlbnQgZmlyZWQi
KTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvdmVyc2lvbmNoYW5nZXJlcXVlc3QtYWN0aXZlZG9tb2JqZWN0Lmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133907</attachid>
            <date>2012-03-26 15:37:55 -0700</date>
            <delta_ts>2012-03-26 16:49:17 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-81440-20120326153754.patch</filename>
            <type>text/plain</type>
            <size>962391</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMTUyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjYyZWYwZjY2YmFjMzM5NTE3Yjdk
ODBlNWM5ZTdlOGUzMTZkYzg0My4uMzdhMmQzZjE1YTVkYjY2NTJhNGRkZmU4MGNiZThjNWQ2YTU1
YWYwZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTAzLTIzICBEYXZpZCBHcm9nYW4gIDxk
Z3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBFeHRyYWN0IGxvZ2ljIG9mIGluZGV4ZWRk
YiBodG1sIGxheW91dCB0ZXN0cyBpbnRvIGpzIGZpbGVzIHRoYXQgY2FuCisgICAgICAgIGJlIHJ1
biBmcm9tIGVpdGhlciBhIHdvcmtlciBvciBhIHdpbmRvdy4KKworICAgICAgICBUaGUgdHdvIGNo
YW5nZWQgLWV4cGVjdGVkLnR4dCBmaWxlcyBhcmUganVzdCBmb3IgbGluZSBudW1iZXJzIGluIEpT
CisgICAgICAgIGVycm9yIG1lc3NhZ2VzLgorCisgICAgICAgIFNraXBwZWQgd2VyZToKKyAgICAg
ICAgLSB0cmFuc2FjdGlvbi1hYm9ydC13aXRoLWpzLXJlY3Vyc2lvbi5odG1sCisgICAgICAgIC0g
dHJhbnNhY3Rpb24tYWJvcnQtd2l0aC1qcy1yZWN1cnNpb24tY3Jvc3MtZnJhbWUuaHRtbAorICAg
ICAgICAtIG5vYmxvYnMuaHRtbAorICAgICAgICAtIHN0cnVjdHVyZWQtY2xvbmUuaHRtbAorICAg
ICAgICAtIHR1dG9yaWFsLmh0bWwKKyAgICAgICAgVGhlIGZpcnN0IGZvdXIgc2ltdWxhdGUgbW91
c2UgZXZlbnRzIGFuZCB0aGUgbGFzdCBpc24ndCByZWFsbHkgYSB0ZXN0LgorICAgICAgICBzdHJ1
Y3R1cmVkLWNsb25lLmh0bWwgd2lsbCBiZSByZWZhY3RvcmVkIGZvciB3b3JrZXIgY29tcGF0aWJp
bGl0eSBpbiBhCisgICAgICAgIGZ1dHVyZSBwYXRjaC4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE0NDAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2NvbnN0YW50cy5o
dG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZS1hbmQtcmVtb3ZlLW9iamVj
dC1zdG9yZS5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZS1vYmplY3Qt
c3RvcmUtb3B0aW9ucy5odG1sOgorICAgICAgICAqIC4uLiBldmVyeSBodG1sIGZpbGUgaW4gc3Rv
cmFnZS9pbmRleGVkZGIgZXhjZXB0IHRoZSBvbmVzIGxpc3RlZCBhYm92ZQorCisgICAgICAgICog
c3RvcmFnZS9pbmRleGVkZGIvZXhjZXB0aW9uLWluLWV2ZW50LWFib3J0cy1leHBlY3RlZC50eHQ6
CisgICAgICAgIGxpbmUgbnVtYmVyIGluIGphdmFzY3JpcHQgZXJyb3IgbWVzc2FnZSBjaGFuZ2Vk
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1jaGFuZ2UtYWJvcnQtZXhwZWN0
ZWQudHh0OgorICAgICAgICBsaW5lIG51bWJlciBpbiBqYXZhc2NyaXB0IGVycm9yIG1lc3NhZ2Ug
Y2hhbmdlZAorCiAyMDEyLTAzLTI2ICBPamFuIFZhZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgVGhlIGNzczMvc2VsZWN0b3JzMy94bWwgdGVzdHMgYXJlIGZsYWt5IG9uIExlb3Bh
cmQgYXMgd2VsbC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Nv
bnN0YW50cy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY29uc3RhbnRzLmh0
bWwKaW5kZXggZmU4YWNhYjM4MTk1Y2RjYmQ3OTIwODg3YTBiZjBjNGRhNzJiNGM0MS4uZDdmMGYx
NDRkZmU3YmE3OGE2NDI0YjFlMGE3NTMzOTJmMGRiY2ZiMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvY29uc3RhbnRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvY29uc3RhbnRzLmh0bWwKQEAgLTQsNDQgKzQsNyBAQAogPHNjcmlwdCBz
cmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2Ny
aXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBjb25zdGFudHMuIik7Ci0KLWZ1
bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgc2hvdWxk
QmUoIklEQkRhdGFiYXNlRXhjZXB0aW9uLlVOS05PV05fRVJSIiwgIjEiKTsKLSAgICBzaG91bGRC
ZSgiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9OX1RSQU5TSUVOVF9FUlIiLCAiMiIpOwotICAgIHNo
b3VsZEJlKCJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIiwgIjMiKTsKLSAgICBz
aG91bGRCZSgiSURCRGF0YWJhc2VFeGNlcHRpb24uQ09OU1RSQUlOVF9FUlIiLCAiNCIpOwotICAg
IHNob3VsZEJlKCJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIsICI1Iik7Ci0gICAgc2hv
dWxkQmUoIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9BTExPV0VEX0VSUiIsICI2Iik7Ci0gICAg
c2hvdWxkQmUoIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIs
ICI3Iik7Ci0gICAgc2hvdWxkQmUoIklEQkRhdGFiYXNlRXhjZXB0aW9uLkFCT1JUX0VSUiIsICI4
Iik7Ci0gICAgc2hvdWxkQmUoIklEQkRhdGFiYXNlRXhjZXB0aW9uLlJFQURfT05MWV9FUlIiLCAi
OSIpOwotICAgIHNob3VsZEJlKCJJREJEYXRhYmFzZUV4Y2VwdGlvbi5USU1FT1VUX0VSUiIsICIx
MCIpOwotICAgIHNob3VsZEJlKCJJREJEYXRhYmFzZUV4Y2VwdGlvbi5RVU9UQV9FUlIiLCAiMTEi
KTsKLSAgICBzaG91bGRCZSgiSURCRGF0YWJhc2VFeGNlcHRpb24uVkVSX0VSUiIsICIxMiIpOwot
Ci0gICAgc2hvdWxkQmUoIklEQlJlcXVlc3QuTE9BRElORyIsICIxIik7Ci0gICAgc2hvdWxkQmUo
IklEQlJlcXVlc3QuRE9ORSIsICIyIik7Ci0KLSAgICBzaG91bGRCZSgiSURCQ3Vyc29yLk5FWFQi
LCAiMCIpOwotICAgIHNob3VsZEJlKCJJREJDdXJzb3IuTkVYVF9OT19EVVBMSUNBVEUiLCAiMSIp
OwotICAgIHNob3VsZEJlKCJJREJDdXJzb3IuUFJFViIsICIyIik7Ci0gICAgc2hvdWxkQmUoIklE
QkN1cnNvci5QUkVWX05PX0RVUExJQ0FURSIsICIzIik7Ci0KLSAgICBzaG91bGRCZSgiSURCVHJh
bnNhY3Rpb24uUkVBRF9PTkxZIiwgIjAiKTsKLSAgICBzaG91bGRCZSgiSURCVHJhbnNhY3Rpb24u
UkVBRF9XUklURSIsICIxIik7Ci0gICAgc2hvdWxkQmUoIklEQlRyYW5zYWN0aW9uLlZFUlNJT05f
Q0hBTkdFIiwgIjIiKTsKLX0KLQotdGVzdCgpOwotCi1maW5pc2hKU1Rlc3QoKTsKLQotPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NvbnN0YW50cy5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2NyZWF0ZS1hbmQtcmVtb3ZlLW9iamVjdC1zdG9yZS5odG1sIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlLWFuZC1yZW1vdmUtb2JqZWN0LXN0b3JlLmh0bWwKaW5k
ZXggNzE2OTVjMGQ1NzhkZGVjZmJjYTY1YmI1YTI2ZTBiZGI2Zjc0ODczZS4uN2M4OWY1ZTk5YzZi
Njg0NDM0N2Q0NmJhZTU3M2I4NDA5Yzc0NWFiZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvY3JlYXRlLWFuZC1yZW1vdmUtb2JqZWN0LXN0b3JlLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlLWFuZC1yZW1vdmUtb2JqZWN0LXN0
b3JlLmh0bWwKQEAgLTQsNzIgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQu
anMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigi
VGVzdCBJbmRleGVkREIncyBjcmVhdGUgYW5kIHJlbW92ZU9iamVjdFN0b3JlIik7Ci0KLWZ1bmN0
aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdjcmVhdGUtYW5kLXJlbW92ZS1vYmplY3Qtc3Rv
cmUnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5T
dWNjZXNzKCkKLXsKLSAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKLSAgICBzZWxmLmRiID0g
ZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgdGVzdENyZWF0ZUFu
ZFJlbW92ZSgpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXN1bHQgPSBkYi5zZXRWZXJz
aW9uKCd2ZXJzaW9uIDEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFz
ZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB0
ZXN0Q3JlYXRlQW5kUmVtb3ZlKCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RDcmVhdGVBbmRSZW1vdmUo
KQotewotICAgIGRlYnVnKCJUcnlpbmcgY3JlYXRlIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2Vw
dGlvbignZGIuY3JlYXRlT2JqZWN0U3RvcmUoInNvbWUgb3MiKScsICJJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5OT1RfQUxMT1dFRF9FUlIiKTsKLSAgICBkZWJ1ZygiVHJ5aW5nIHJlbW92ZSIpOwotICAg
IGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oJ2RiLmRlbGV0ZU9iamVjdFN0b3JlKCJzb21lIG9zIikn
LCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0FMTE9XRURfRVJSIik7Ci19Ci0KLWZ1bmN0aW9u
IGNsZWFuRGF0YWJhc2UoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAg
ICBvcyA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCd0bXAnKSIpOwotICAgIGV2
YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLmNyZWF0ZU9iamVjdFN0b3JlKCd0bXAnKSIsICJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5DT05TVFJBSU5UX0VSUiIpOwotICAgIGV2ZW50LnRhcmdldC5yZXN1
bHQub25jb21wbGV0ZSA9IHNldFZlcnNpb25Db21wbGV0ZTsKLX0KLQotZnVuY3Rpb24gc2V0VmVy
c2lvbkNvbXBsZXRlKCkKLXsKLSAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJh
bnNhY3Rpb24oWyd0bXAnXSkiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnMub2Jq
ZWN0U3RvcmUoJ3RtcCcpLmdldCgwKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdHJ5T25j
ZU1vcmU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19
Ci0KLWZ1bmN0aW9uIHRyeU9uY2VNb3JlKCkKLXsKLSAgICBzaG91bGRCZVVuZGVmaW5lZCgiZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgdGVzdENyZWF0ZUFuZFJlbW92ZSgpOwotCi0gICAg
ZGVidWcoIlRyeWluZyBjcmVhdGUgd2l0aCBzdG9yZSB0aGF0IGFscmVhZHkgZXhpc3RzIik7Ci0g
ICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3RtcCcpIiwg
IklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9BTExPV0VEX0VSUiIpOwotICAgIGRlYnVnKCJUcnlp
bmcgcmVtb3ZlIHdpdGggc3RvcmUgdGhhdCBhbHJlYWR5IGV4aXN0cyIpOwotICAgIGV2YWxBbmRF
eHBlY3RFeGNlcHRpb24oImRiLmRlbGV0ZU9iamVjdFN0b3JlKCd0bXAnKSIsICJJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9FUlIiKTsKLQotICAgIGZpbmlzaEpTVGVzdCgpOwotfQot
Ci0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NyZWF0ZS1h
bmQtcmVtb3ZlLW9iamVjdC1zdG9yZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZS1v
YmplY3Qtc3RvcmUtb3B0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
Y3JlYXRlLW9iamVjdC1zdG9yZS1vcHRpb25zLmh0bWwKaW5kZXggZGRhYjBmMmM4YWQ4OWQyYjY5
YTYyZjM2MDk1YzE2YTA5YTZiN2MzNS4uNzdjMzMzYWJlOWRhYzY5NzAxZTZkMTAyYjg1ZjVkYzFm
ZTcxYWFlOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRl
LW9iamVjdC1zdG9yZS1vcHRpb25zLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvY3JlYXRlLW9iamVjdC1zdG9yZS1vcHRpb25zLmh0bWwKQEAgLTQsODcgKzQsNyBAQAog
PHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJv
ZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBjcmVhdGVPYmpl
Y3RTdG9yZSdzIHZhcmlvdXMgb3B0aW9ucyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICBy
ZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4
ZWREQi5vcGVuKCdjcmVhdGUtb2JqZWN0LXN0b3JlLW9wdGlvbnMnLCAnZGVzY3JpcHRpb24nKSIp
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNz
KCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwot
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJz
aW9uIDEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24g
Y2xlYW5EYXRhYmFzZSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAg
IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdhJywge2tleVBhdGg6ICdhJ30pIik7
Ci0gICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2InKSIpOwotCi0gICAgZGVi
dWcoImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdjJywge2F1dG9JbmNyZW1lbnQ6IHRydWV9KTsiKTsK
LSAgICBkYi5jcmVhdGVPYmplY3RTdG9yZSgnYycsIHthdXRvSW5jcmVtZW50OiB0cnVlfSk7Ci0g
ICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5vbmNvbXBsZXRlID0gc2V0VmVyc2lvbkNvbXBsZXRlOwot
fQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uQ29tcGxldGUoKQotewotICAgIHRyYW5zID0gZXZhbEFu
ZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ2EnLCAnYiddLCBJREJUcmFuc2FjdGlvbi5S
RUFEX1dSSVRFKSIpOwotICAgIHNob3VsZEJlKCJ0cmFucy5tb2RlIiwgIklEQlRyYW5zYWN0aW9u
LlJFQURfV1JJVEUiKTsKLQotICAgIHJlcSA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3Jl
KCdhJykucHV0KHsnYSc6IDB9KSIpOwotICAgIHJlcS5vbnN1Y2Nlc3MgPSBwdXRCOwotICAgIHJl
cS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0KLSAgICBldmFsQW5kRXhwZWN0
RXhjZXB0aW9uQ2xhc3MoImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdkJywgJ2JhcicpOyIsICJUeXBl
RXJyb3IiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uQ2xhc3MoImRiLmNyZWF0ZU9iamVj
dFN0b3JlKCdlJywgZmFsc2UpOyIsICJUeXBlRXJyb3IiKTsKLX0KLQotZnVuY3Rpb24gcHV0Qigp
Ci17Ci0gICAgcmVxID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2InKS5wdXQoeydh
JzogMH0sIDApIik7ICAvLyBPT1BTCi0gICAgcmVxLm9uc3VjY2VzcyA9IGdldEE7Ci0gICAgcmVx
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZ2V0QSgp
Ci17Ci0gICAgcmVxID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2EnKS5nZXQoMCki
KTsKLSAgICByZXEub25zdWNjZXNzID0gZ2V0QjsKLSAgICByZXEub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBnZXRCKCkKLXsKLSAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0LnJlc3VsdC5hIiwgInthOiAwfSIpOwotCi0gICAgcmVxID0gZXZhbEFuZExv
ZygidHJhbnMub2JqZWN0U3RvcmUoJ2InKS5nZXQoMCkiKTsKLSAgICByZXEub25zdWNjZXNzID0g
Y2hlY2tCOwotICAgIHJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0K
LWZ1bmN0aW9uIGNoZWNrQigpCi17Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQu
YSIsICJ7YTogMH0iKTsKLQotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQot
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NyZWF0ZS1vYmplY3Qtc3RvcmUtb3B0
aW9ucy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZU9iamVjdFN0b3JlLW5hbWUtYXJn
dW1lbnQtcmVxdWlyZWQuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0
ZU9iamVjdFN0b3JlLW5hbWUtYXJndW1lbnQtcmVxdWlyZWQuaHRtbAppbmRleCAyNzJmYzQzMDlh
Y2NkNTY0ZjJiZmM3ZmQxMWRiOTZjNzE2ZTI2ZThjLi5lZThmYThlNzdkMjRkZWY4ODBlNzE2ZTZk
OTYxZTg3OTQ0MzAxYjU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9jcmVhdGVPYmplY3RTdG9yZS1uYW1lLWFyZ3VtZW50LXJlcXVpcmVkLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlT2JqZWN0U3RvcmUtbmFtZS1hcmd1bWVu
dC1yZXF1aXJlZC5odG1sCkBAIC0xLDQ2ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KIDxodG1s
PgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2Ny
aXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRl
eGVkREIgY3JlYXRlT2JqZWN0U3RvcmUgbmFtZSBhcmd1bWVudCBpcyByZXF1aXJlZCIpOwotCi1m
dW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFt
ZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBE
YXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUs
IGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0
aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFy
Z2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5z
ZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVs
YXRlT2JqZWN0U3RvcmU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQotewot
ICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBzaG91bGRUaHJvdygiZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoKTsiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7
Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jcmVhdGVPYmplY3RTdG9yZS1u
YW1lLWFyZ3VtZW50LXJlcXVpcmVkLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlT2Jq
ZWN0U3RvcmUtbnVsbC1uYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9j
cmVhdGVPYmplY3RTdG9yZS1udWxsLW5hbWUuaHRtbAppbmRleCA0YjI1ZTE0NGE4ODA1MDgwMmJl
MjVmOGExYWM3YWNhYzBjMDEwOWU5Li5iMmFhOGEzMDgxYTEwMGNkNTExYzE1ZTVkZmNlMTIxNTc5
MTc3Y2ZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jcmVhdGVP
YmplY3RTdG9yZS1udWxsLW5hbWUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9jcmVhdGVPYmplY3RTdG9yZS1udWxsLW5hbWUuaHRtbApAQCAtMSw0NyArMSwxMCBAQAot
PCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQot
ZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGNyZWF0ZU9iamVjdFN0b3JlIG51bGwgaGFuZGxp
bmciKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsK
LQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0g
Ik15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
b3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5T
dWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
fQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9
IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVh
dGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0
b3JlKCkKLXsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3Rv
cmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZShudWxsKTsiKTsKLSAgICBzaG91
bGRCZSgib2JqZWN0U3RvcmUubmFtZSIsICInbnVsbCciKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsK
LX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jcmVh
dGVPYmplY3RTdG9yZS1udWxsLW5hbWUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3It
Y29udGludWUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1jb250
aW51ZS5odG1sCmluZGV4IDcxMmNkMmIzOWQ2MmRhMjc5M2FmZTY2MjMwMTU2Y2NlMTMxMDc1MWMu
LjA2YmY3MTU4YTczOTMxYzQwYTkyN2JmMTA3YmVkN2JkZTJmMTAwZjMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1jb250aW51ZS5odG1sCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1jb250aW51ZS5odG1sCkBAIC00LDI3
NSArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8
L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+IAotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIn
cyBJREJDdXJzb3IuY29udGludWUoKSB3aXRoIGEga2V5IHBhcmFtZXRlci4iKTsKLQotdmFyIGRh
dGUgPSBuZXcgRGF0ZSgpOwotCi0vLyBJbiBvcmRlciBvZiBob3cgaXQgc2hvdWxkIGJlIHNvcnRl
ZCBieSBJbmRleGVkREIuCi1zZWxmLnRlc3REYXRhID0gWwotICAgIDAsCi0gICAgMSwKLSAgICAx
LAotICAgIDMuMTQxNTksCi0gICAgMy4xNDE1OSwKLSAgICAxMCwKLSAgICAxMSwKLSAgICAxMiwK
LSAgICAxMywKLSAgICBkYXRlLAotICAgIGRhdGUsCi0gICAgbmV3IERhdGUoZGF0ZS52YWx1ZU9m
KCkgKyAxMDAwKSwKLSAgICAiQSBiaWcgc3RyaW5nIiwKLSAgICAiQSBiaWcgc3RyaW5nIiwKLSAg
ICAiQSBiaXQxIiwKLSAgICAiQSBiaXQyIiwKLSAgICAiQSBiaXQzIiwKLSAgICAidGhlIEJJR0dF
U1Qgc3RyaW5nIgotXTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJl
Zml4ZXMoKTsKLSAgICBvcGVuRGF0YWJhc2UoKTsKLX0KLQotZnVuY3Rpb24gb3BlbkRhdGFiYXNl
KCkKLXsKLSAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignY3Vyc29yLWNv
bnRpbnVlJykiKTsKLSAgICByZXN1bHQub25zdWNjZXNzID0gc2V0VmVyc2lvbjsKLSAgICByZXN1
bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotIAotZnVuY3Rpb24gc2V0
VmVyc2lvbigpCi17Ci0gICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOwotCi0gICAgcmVzdWx0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3
IHZlcnNpb24nKSIpOwotICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKLSAg
ICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlv
biBkZWxldGVFeGlzdGluZygpCi17Ci0gICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5z
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51
bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0KLSAg
ICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgc2VsZi5vYmplY3RTdG9yZSA9IGV2
YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzb21lT2JqZWN0U3RvcmUnKSIpOwotICAg
IHNlbGYuaW5kZXhPYmplY3QgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgn
c29tZUluZGV4JywgJ3gnKSIpOwotICAgIHNlbGYubmV4dFRvQWRkID0gMDsKLSAgICBhZGREYXRh
KCk7Ci19Ci0KLWZ1bmN0aW9uIGFkZERhdGEoKQotewotICAgIHJlc3VsdCA9IGV2YWxBbmRMb2co
Im9iamVjdFN0b3JlLmFkZCh7J3gnOiB0ZXN0RGF0YVtuZXh0VG9BZGRdfSwgbmV4dFRvQWRkKSIp
OwotICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSArK3NlbGYubmV4dFRvQWRkIDwgdGVzdERhdGEubGVu
Z3RoID8gYWRkRGF0YSA6IGFzY2VuZGluZ1Rlc3Q7Ci0gICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYXNjZW5kaW5nVGVzdCgpCi17Ci0g
ICAgZGVidWcoIiIpOwotICAgIHZhciByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhPYmplY3Qu
b3BlbktleUN1cnNvcihudWxsLCBJREJDdXJzb3IuTkVYVCkiKTsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGFzY2VuZGluZ0NhbGxiYWNrOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotICAgIHNlbGYuc3RhZ2UgPSAwOwotfQotCi1mdW5jdGlvbiBhc2Nl
bmRpbmdDYWxsYmFjaygpCi0KLXsKLSAgICBpZiAoc2VsZi5zdGFnZSA9PSAwKSB7Ci0gICAgICAg
IHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMCIpOwotICAgICAg
ICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKDMuMTQxNTkpIik7Ci0g
ICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDEpIHsKLSAgICAgICAgc2hvdWxkQmUoImV2ZW50
LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIzIik7Ci0gICAgICAgIGV2YWxBbmRMb2coImV2
ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOwotICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFn
ZSA9PSAyKSB7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlL
ZXkiLCAiNCIpOwotICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRp
bnVlKCkiKTsKLSAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gMykgewotICAgICAgICBzaG91
bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjUiKTsKLSAgICAgICAgZXZh
bEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgxMikiKTsKLSAgICB9IGVsc2Ug
aWYgKHNlbGYuc3RhZ2UgPT0gNCkgewotICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJl
c3VsdC5wcmltYXJ5S2V5IiwgIjciKTsKLSAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0
LnJlc3VsdC5jb250aW51ZShkYXRlKSIpOwotICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSA1
KSB7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAi
OSIpOwotICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCki
KTsKLSAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gNikgewotICAgICAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjEwIik7Ci0gICAgICAgIGV2YWxBbmRM
b2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOwotICAgIH0gZWxzZSBpZiAoc2Vs
Zi5zdGFnZSA9PSA3KSB7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnBy
aW1hcnlLZXkiLCAiMTEiKTsKLSAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3Vs
dC5jb250aW51ZSgnQSBiaXQxJykiKTsKLSAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gOCkg
ewotICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjE0
Iik7Ci0gICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoJ0Eg
Yml0MycpIik7Ci0gICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDkpIHsKLSAgICAgICAgc2hv
dWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIxNiIpOwotICAgICAgICBl
dmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCd0aGUgQklHR0VTVCBzdHJp
bmcnKSIpOwotICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSAxMCkgewotICAgICAgICBzaG91
bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjE3Iik7Ci0gICAgICAgIGV2
YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOwotICAgIH0gZWxzZSBp
ZiAoc2VsZi5zdGFnZSA9PSAxMSkgewotICAgICAgICBzaG91bGRCZU51bGwoImV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKLSAgICAgICAgZGVzY2VuZGluZ1Rlc3QoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0gZWxzZSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIklsbGVnYWwgc3RhZ2UuIik7Ci0gICAg
fQotICAgIHNlbGYuc3RhZ2UrKzsKLX0KLQotZnVuY3Rpb24gZGVzY2VuZGluZ1Rlc3QoKQotewot
ICAgIGRlYnVnKCIiKTsKLSAgICB2YXIgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0
Lm9wZW5LZXlDdXJzb3IobnVsbCwgSURCQ3Vyc29yLlBSRVYpIik7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBkZXNjZW5kaW5nQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgc2VsZi5zdGFnZSA9IDA7Ci19Ci0KLWZ1bmN0aW9uIGRl
c2NlbmRpbmdDYWxsYmFjaygpCi17Ci0gICAgaWYgKHNlbGYuc3RhZ2UgPT0gMCkgewotICAgICAg
ICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjE3Iik7Ci0gICAg
ICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoJ0EgYml0MicpIik7
Ci0gICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDEpIHsKLSAgICAgICAgc2hvdWxkQmUoImV2
ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIxNSIpOwotICAgICAgICBldmFsQW5kTG9n
KCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKLSAgICB9IGVsc2UgaWYgKHNlbGYu
c3RhZ2UgPT0gMikgewotICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmlt
YXJ5S2V5IiwgIjE0Iik7Ci0gICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQu
Y29udGludWUoZGF0ZSkiKTsKLSAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gMykgewotICAg
ICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjEwIik7Ci0g
ICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOwotICAg
IH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSA0KSB7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50
YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiOSIpOwotICAgICAgICBldmFsQW5kTG9nKCJldmVu
dC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKDEpIik7Ci0gICAgfSBlbHNlIGlmIChzZWxmLnN0YWdl
ID09IDUpIHsKLSAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtl
eSIsICIyIik7Ci0gICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGlu
dWUoKSIpOwotICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSA2KSB7Ci0gICAgICAgIHNob3Vs
ZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMSIpOwotICAgICAgICBldmFs
QW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKLSAgICB9IGVsc2UgaWYg
KHNlbGYuc3RhZ2UgPT0gNykgewotICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3Vs
dC5wcmltYXJ5S2V5IiwgIjAiKTsKLSAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJl
c3VsdC5jb250aW51ZSgpIik7Ci0gICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDgpIHsKLSAg
ICAgICAgc2hvdWxkQmVOdWxsKCJldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgICAgIGFzY2Vu
ZGluZ0Vycm9yVGVzdExlc3NUaGFuKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9IGVsc2Ugewot
ICAgICAgICB0ZXN0RmFpbGVkKCJJbGxlZ2FsIHN0YWdlLiIpOwotICAgIH0KLSAgICBzZWxmLnN0
YWdlKys7Ci19Ci0KLWZ1bmN0aW9uIGFzY2VuZGluZ0Vycm9yVGVzdExlc3NUaGFuKCkKLXsKLSAg
ICBkZWJ1ZygiIik7Ci0gICAgdmFyIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5v
cGVuS2V5Q3Vyc29yKG51bGwsIElEQkN1cnNvci5ORVhUKSIpOwotICAgIHNlbGYuc3RhZ2UgPSAw
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmIChzZWxmLnN0YWdlID09
PSAwKSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5
S2V5IiwgIjAiKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQu
Y29udGludWUoMy4xNDE1OSkiKTsKLSAgICAgICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDEp
IHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXki
LCAiMyIpOwotICAgICAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZXZlbnQudGFyZ2V0
LnJlc3VsdC5jb250aW51ZSgxKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwot
ICAgICAgICAgICAgYXNjZW5kaW5nRXJyb3JUZXN0RXF1YWwoKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgdGVzdEZhaWxlZCgiSWxsZWdhbCBzdGFn
ZS4iKTsKLSAgICAgICAgfQotICAgICAgICBzZWxmLnN0YWdlKys7Ci0gICAgfTsKLX0KLQotZnVu
Y3Rpb24gYXNjZW5kaW5nRXJyb3JUZXN0RXF1YWwoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICB2
YXIgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3IobnVsbCwg
SURCQ3Vyc29yLk5FWFQpIik7Ci0gICAgc2VsZi5zdGFnZSA9IDA7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHNlbGYuc3RhZ2UgPT09IDApIHsKLSAgICAgICAgICAg
IHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMCIpOwotICAgICAg
ICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgzLjE0MTU5KSIp
OwotICAgICAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gMSkgewotICAgICAgICAgICAgc2hv
dWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIzIik7Ci0gICAgICAgICAg
ICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKDMu
MTQxNTkpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0gICAgICAgICAgICBk
ZXNjZW5kaW5nRXJyb3JUZXN0R3JlYXRlclRoYW4oKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgdGVzdEZhaWxlZCgiSWxsZWdhbCBzdGFnZS4iKTsK
LSAgICAgICAgfQotICAgICAgICBzZWxmLnN0YWdlKys7Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24g
ZGVzY2VuZGluZ0Vycm9yVGVzdEdyZWF0ZXJUaGFuKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAg
dmFyIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5vcGVuS2V5Q3Vyc29yKG51bGws
IElEQkN1cnNvci5QUkVWKSIpOwotICAgIHNlbGYuc3RhZ2UgPSAwOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmIChzZWxmLnN0YWdlID09IDApIHsKLSAgICAgICAgICAg
IHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMTciKTsKLSAgICAg
ICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoJ0EgYml0Micp
Iik7Ci0gICAgICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSAxKSB7Ci0gICAgICAgICAgICBz
aG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjE1Iik7Ci0gICAgICAg
ICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVl
KCdBIGJpdDMnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotICAgICAgICAg
ICAgZGVzY2VuZGluZ0Vycm9yVGVzdEVxdWFsKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgIHRlc3RGYWlsZWQoIklsbGVnYWwgc3RhZ2UuIik7Ci0g
ICAgICAgIH0KLSAgICAgICAgc2VsZi5zdGFnZSsrOwotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIGRl
c2NlbmRpbmdFcnJvclRlc3RFcXVhbCgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIHZhciByZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhPYmplY3Qub3BlbktleUN1cnNvcihudWxsLCBJREJDdXJz
b3IuUFJFVikiKTsKLSAgICBzZWxmLnN0YWdlID0gMDsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KCkgewotICAgICAgICBpZiAoc2VsZi5zdGFnZSA9PSAwKSB7Ci0gICAgICAgICAgICBzaG91bGRC
ZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjE3Iik7Ci0gICAgICAgICAgICBl
dmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCdBIGJpdDInKSIpOwotICAg
ICAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gMSkgewotICAgICAgICAgICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIxNSIpOwotICAgICAgICAgICAgZXZh
bEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgICAgICAgICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgnQSBiaXQy
JykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLSAgICAgICAgICAgIHNlbGYu
dHJhbnMub25jb21wbGV0ZSA9IG9uVHJhbnNhY3Rpb25Db21wbGV0ZTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgdGVzdEZhaWxlZCgiSWxsZWdhbCBz
dGFnZS4iKTsKLSAgICAgICAgfQotICAgICAgICBzZWxmLnN0YWdlKys7Ci0gICAgfTsKLX0KLQot
ZnVuY3Rpb24gb25UcmFuc2FjdGlvbkNvbXBsZXRlKCkKLXsKLSAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJjdXJzb3IuY29udGludWUoKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FD
VElPTl9JTkFDVElWRV9FUlIiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotdGVzdCgpOwot
IAotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2N1cnNvci1jb250aW51ZS5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1kZWxldGUuaHRtbCBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1kZWxldGUuaHRtbAppbmRleCBkNzQwNzNhYjdmOWFjMTlj
YjcwMjdhZWY3YTJiYzFhYjNhZTA2YjNjLi5lYmQ2YjdmN2MzNTNhODRiMDg1YTdmNDE2YjZiNmE4
ODFjZjAzZDQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJz
b3ItZGVsZXRlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29y
LWRlbGV0ZS5odG1sCkBAIC00LDExMSArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3No
YXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0
aW9uKCJUZXN0IEluZGV4ZWREQidzIG9wZW5DdXJzb3IuIik7Ci0KLXRlc3QoKTsKLQotZnVuY3Rp
b24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2N1cnNvci1kZWxldGUnKSIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICB2
YXIgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvblN1
Y2Nlc3MoKQotewotICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOwotICAgIHNlbGYu
dHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBz
aG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhw
ZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBvcGVuQ3Vyc29yOwot
Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIHZhciBvYmplY3RTdG9yZSA9
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Rlc3QnKSIp
OwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnbXlWYWx1ZTEnLCAnbXlLZXkxJyki
KTsKLSAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ215VmFsdWUyJywgJ215S2V5Micp
Iik7Ci0gICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlMycsICdteUtleTMn
KSIpOwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnbXlWYWx1ZTQnLCAnbXlLZXk0
JykiKTsKLX0KLQotZnVuY3Rpb24gb3BlbkN1cnNvcigpCi17Ci0gICAgZGVidWcoIm9wZW5DdXJz
b3IxIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3Rlc3QnXSwg
SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICBrZXlSYW5nZSA9IElEQktleVJhbmdl
Lmxvd2VyQm91bmQoIm15S2V5MSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5v
YmplY3RTdG9yZSgndGVzdCcpLm9wZW5DdXJzb3Ioe3JhbmdlOiBrZXlSYW5nZX0pIik7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3JTdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIGNvdW50ZXIgPSAxOwotfQotCi1mdW5jdGlv
biBjdXJzb3JTdWNjZXNzKCkKLXsKLSAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBudWxs
KSB7Ci0gICAgICAgIHNob3VsZEJlKCJjb3VudGVyIiwgIjUiKTsKLSAgICAgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCd0ZXN0Jykub3BlbkN1cnNvcihrZXlSYW5n
ZSkiKTsKLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3JFbXB0eTsKLSAgICAgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5kZWxldGUoKSIp
OwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZSIs
ICJteVZhbHVlIiArIGNvdW50ZXIrKyk7Ci0gICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJl
c3VsdC5jb250aW51ZSgpIik7Ci19Ci0KLWZ1bmN0aW9uIGN1cnNvckVtcHR5KCkKLXsKLSAgICBz
aG91bGRCZU51bGwoImV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICB0cmFucy5vbmNvbXBsZXRl
ID0gYWRkT2JqZWN0OwotfQotCi1mdW5jdGlvbiBhZGRPYmplY3QoKQotewotICAgIGV2YWxBbmRM
b2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWyd0ZXN0J10sIElEQlRyYW5zYWN0aW9uLlJFQURf
V1JJVEUpIik7Ci0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IHRy
YW5zLm9iamVjdFN0b3JlKCd0ZXN0JykiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib2Jq
ZWN0U3RvcmUuYWRkKCdteVZhbHVlMScsICdteUtleTEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gb3BlbkN1cnNvcjI7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5DdXJzb3IyKCkKLXsKLSAgICBkZWJ1Zygib3Bl
bkN1cnNvcjIiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUub3BlbkN1
cnNvcihrZXlSYW5nZSkiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZU9iamVjdDsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVu
Y3Rpb24gZGVsZXRlT2JqZWN0KCkKLXsKLSAgICBzaG91bGRCZU5vbk51bGwoZXZlbnQudGFyZ2V0
LnJlc3VsdCk7Ci0gICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5kZWxldGUoKSIp
OwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5nZXQoJ215S2V5MScpIik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB2ZXJpZnlPYmplY3REZWxldGVkOwotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiB2ZXJp
ZnlPYmplY3REZWxldGVkKCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIs
ICJ1bmRlZmluZWQiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi08L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvY3Vyc29yLWRlbGV0ZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
IDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2N1cnNvci1pbmNvbnNpc3RlbmN5Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9jdXJzb3ItaW5jb25zaXN0ZW5jeS5odG1sCmluZGV4IGE0ODU3NmM4MGM5NjRlZDg5N2Yy
YWRkZjY0YjNlNmRiNGNlODUzZTYuLmYyY2VhMGIxYWQ3M2YxNGQyNmM1ZTFiYTQ1N2M3ZmUwYWM1
OTBiZmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1p
bmNvbnNpc3RlbmN5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vy
c29yLWluY29uc2lzdGVuY3kuaHRtbApAQCAtNCw5MSArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0K
LWRlc2NyaXB0aW9uKCJUZXN0IGNvbnNpc3RlbmN5IG9mIEluZGV4ZWREQidzIGN1cnNvciBvYmpl
Y3RzLiIpOwotCi10ZXN0KCk7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRv
clByZWZpeGVzKCk7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdj
dXJzb3ItaW5jb25zaXN0ZW5jeScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3Vj
Y2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0K
LQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIHZhciBkYiA9IGV2YWxBbmRMb2coImRi
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRi
LnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNl
dFZlcnNpb25TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCi17Ci0gICAgZGVidWco
InNldFZlcnNpb25TdWNjZXNzKCk6Iik7Ci0gICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRy
YW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09
IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0g
ICAgdHJhbnMub25jb21wbGV0ZSA9IG9wZW5CYXNpY0N1cnNvcjsKLQotICAgIGRlbGV0ZUFsbE9i
amVjdFN0b3JlcyhkYik7Ci0KLSAgICB2YXIgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdiYXNpY1N0b3JlJykiKTsKLSAgICBldmFs
QW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ3NvbWVWYWx1ZTEnLCAnc29tZUtleTEnKS5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKLSAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9y
ZS5hZGQoJ3NvbWVWYWx1ZTInLCAnc29tZUtleTInKS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2siKTsKLSAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ3NvbWVWYWx1ZTMn
LCAnc29tZUtleTMnKS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKLSAgICBl
dmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ3NvbWVWYWx1ZTQnLCAnc29tZUtleTQnKS5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKLQotfQotCi1mdW5jdGlvbiBvcGVuQmFz
aWNDdXJzb3IoKQotewotICAgIGRlYnVnKCJvcGVuQmFzaWNDdXJzb3IoKSIpOwotICAgIGV2YWxB
bmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydiYXNpY1N0b3JlJ10sIElEQlRyYW5zYWN0
aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENh
bGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSB0cmFuc2FjdGlvbkNvbXBsZXRlOwotCi0g
ICAga2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKCJzb21lS2V5MSIpOwotICAgIHNl
bGYub2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYmFzaWNTdG9y
ZScpIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLm9wZW5DdXJzb3Io
a2V5UmFuZ2UpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjaGVja0N1cnNvcjsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICBjb3VudGVyID0g
MTsKLX0KLQotc3RvcmVkQ3Vyc29yID0gbnVsbDsKLWZ1bmN0aW9uIGNoZWNrQ3Vyc29yKCkKLXsK
LSAgICBkZWJ1ZygiIikKLSAgICBkZWJ1ZygiY2hlY2tDdXJzb3IoKSIpOwotICAgIGlmIChldmVu
dC50YXJnZXQucmVzdWx0ID09IG51bGwpIHsKLSAgICAgICAgc2hvdWxkQmUoImNvdW50ZXIiLCAi
NSIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChzdG9yZWRDdXJzb3IgPT0gbnVs
bCkKLSAgICAgIHN0b3JlZEN1cnNvciA9IGV2YWxBbmRMb2coInN0b3JlZEN1cnNvciA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHNob3VsZEJlVHJ1ZSgic3RvcmVkQ3Vyc29yID09PSBl
dmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzdG9yZWRD
dXJzb3Iua2V5IiwgInNvbWVLZXkiICsgY291bnRlcik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICJzb21lS2V5IiArIGNvdW50ZXIpOwotICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygic3RvcmVkQ3Vyc29yLnZhbHVlIiwgInNvbWVWYWx1ZSIg
KyBjb3VudGVyKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1
bHQudmFsdWUiLCAic29tZVZhbHVlIiArIGNvdW50ZXIpOwotICAgIGNvdW50ZXIrKzsKLSAgICBl
dmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKLX0KLQotZnVuY3Rp
b24gdHJhbnNhY3Rpb25Db21wbGV0ZSgpCi17Ci0gICAgZGVidWcoInRyYW5zYWN0aW9uQ29tcGxl
dGUoKSIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLTwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9jdXJzb3ItaW5jb25zaXN0ZW5jeS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
IDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2N1cnNvci1pbmRleC1kZWxldGUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2N1cnNvci1pbmRleC1kZWxldGUuaHRtbAppbmRleCAxYzYzMDA3M2Y1NzMxOWJhNTdkMTcz
YWE3NDJiNzkyOGMxMmY1OWFjLi5hZGNhNzhlYzk0YTI0ZTVmODBiZjg4NWRkMTEyZWE3NzQxN2Y0
OTQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItaW5k
ZXgtZGVsZXRlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29y
LWluZGV4LWRlbGV0ZS5odG1sCkBAIC00LDExNSArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRl
c2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIG9wZW5DdXJzb3IuIik7Ci0KLXRlc3QoKTsKLQot
ZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2N1cnNvci1pbmRleC1kZWxldGUnKSIp
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNz
KCkKLXsKLSAgICB2YXIgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lv
bicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24g
c2V0VmVyc2lvblN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIp
OwotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0gICAgdHJhbnMub25h
Ym9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBv
cGVuQ3Vyc29yOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9iamVj
dFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgn
dGVzdCcpIik7Ci0gICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ3Rlc3RJ
bmRleCcsICd4JykiKTsKLQotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCh7eDogMX0s
ICdteUtleTEnKSIpOwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCh7eDogMn0sICdt
eUtleTInKSIpOwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCh7eDogM30sICdteUtl
eTMnKSIpOwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCh7eDogNH0sICdteUtleTQn
KSIpOwotfQotCi1mdW5jdGlvbiBvcGVuQ3Vyc29yKCkKLXsKLSAgICBkZWJ1Zygib3BlbkN1cnNv
cjEiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsndGVzdCddLCBJ
REJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2Uu
bG93ZXJCb3VuZCgxKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3Rv
cmUoJ3Rlc3QnKS5pbmRleCgndGVzdEluZGV4Jykub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvclN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgY291bnRlciA9IDE7Ci19Ci0KLWZ1bmN0
aW9uIGN1cnNvclN1Y2Nlc3MoKQotewotICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0ID09IG51
bGwpIHsKLSAgICAgICAgc2hvdWxkQmUoImNvdW50ZXIiLCAiNSIpOwotICAgICAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ3Rlc3QnKS5pbmRleCgndGVzdEluZGV4
Jykub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBj
dXJzb3JFbXB0eTsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgdmFyIGRlbGV0ZVJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmRlbGV0ZSgpIik7Ci0gICAgZGVsZXRlUmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgc2hvdWxkQmUoImV2
ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgImNvdW50ZXIrKyIpOwotICAgIGV2YWxBbmRMb2coImV2
ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOwotfQotCi1mdW5jdGlvbiBjdXJzb3JFbXB0
eSgpCi17Ci0gICAgc2hvdWxkQmVOdWxsKCJldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgdHJh
bnMub25jb21wbGV0ZSA9IGFkZE9iamVjdDsKLX0KLQotZnVuY3Rpb24gYWRkT2JqZWN0KCkKLXsK
LSAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsndGVzdCddLCBJREJUcmFu
c2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2Jq
ZWN0U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgndGVzdCcpIik7Ci0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCh7eDogMX0sICdteUtleTEnKSIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gb3BlbkN1cnNvcjI7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5DdXJzb3IyKCkKLXsKLSAgICBk
ZWJ1Zygib3BlbkN1cnNvcjIiKTsKLSAgICBldmFsQW5kTG9nKCJpbmRleCA9IGV2ZW50LnRhcmdl
dC5zb3VyY2UuaW5kZXgoJ3Rlc3RJbmRleCcpIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImluZGV4Lm9wZW5DdXJzb3Ioa2V5UmFuZ2UpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBk
ZWxldGVPYmplY3Q7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZU9iamVjdCgpCi17Ci0gICAgc2hvdWxkQmVOb25OdWxs
KGV2ZW50LnRhcmdldC5yZXN1bHQpOwotICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1
bHQuZGVsZXRlKCkiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXguZ2V0KDEpIik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB2ZXJpZnlPYmplY3REZWxldGVkOwotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiB2ZXJp
ZnlPYmplY3REZWxldGVkKCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIs
ICJ1bmRlZmluZWQiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi08L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvY3Vyc29yLWluZGV4LWRlbGV0ZS5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2N1cnNvci1rZXktb3JkZXIuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2N1cnNvci1rZXktb3JkZXIuaHRtbAppbmRleCAzYTExZTY5MjliOWM0YmM5Y2RiM2Mz
YWIyMTJhNzBjNjI5ZGE3MDA4Li40MDMwOWRlNDY4M2U2NjY3OGRjMjcwZjY2NzI5NjRlNzMwNTNk
YjU2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3Ita2V5
LW9yZGVyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWtl
eS1vcmRlci5odG1sCkBAIC00LDIzMCArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3No
YXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0
aW9uKCJUZXN0IEluZGV4ZWREQiBrZXlzIG9yZGVyaW5nIGFuZCByZWFkYmFjayBmcm9tIGN1cnNv
cnMuIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7
Ci0KLSAgICBwcmVwYXJlRGF0YWJhc2UoKTsKLX0KLQotZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNl
KCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZXZhbEFuZExvZygib3BlbnJlcSA9IGluZGV4ZWRE
Qi5vcGVuKCdjdXJzb3Ita2V5LW9yZGVyJykiKTsKLSAgICBvcGVucmVxLm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICBvcGVucmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkg
ewotICAgICAgICBldmFsQW5kTG9nKCJkYiA9IG9wZW5yZXEucmVzdWx0Iik7Ci0gICAgICAgIGV2
YWxBbmRMb2coInZlcnJlcSA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgICAgICB2ZXJyZXEu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICB2ZXJyZXEub25zdWNj
ZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnc3RvcmUnKSIpOwotICAgICAgICAgICAgdmVycmVxLnJlc3VsdC5vbmNvbXBsZXRl
ID0gcG9wdWxhdGVTdG9yZTsKLSAgICAgICAgfTsKLSAgICB9OwotfQotCi1zZWxmLmtleXMgPSBb
Ci0gICAgIi1JbmZpbml0eSIsCi0gICAgIi1OdW1iZXIuTUFYX1ZBTFVFIiwKLSAgICAiLTEiLAot
ICAgICItTnVtYmVyLk1JTl9WQUxVRSIsCi0gICAgIjAiLAotICAgICJOdW1iZXIuTUlOX1ZBTFVF
IiwKLSAgICAiMSIsCi0gICAgIk51bWJlci5NQVhfVkFMVUUiLAotICAgICJJbmZpbml0eSIsCi0K
LSAgICAibmV3IERhdGUoMCkiLAotICAgICJuZXcgRGF0ZSgxMDAwKSIsCi0gICAgIm5ldyBEYXRl
KDEzMTczOTk5MzEwMjMpIiwKLQotICAgICInJyIsCi0gICAgIidceDAwJyIsCi0gICAgIidhJyIs
Ci0gICAgIidhYSciLAotICAgICInYiciLAotICAgICInYmEnIiwKLQotICAgICInXHhBMiciLCAv
LyBVKzAwQTIgQ0VOVCBTSUdOCi0gICAgIidcdTZDMzQnIiwgLy8gVSs2QzM0IENKSyBVTklGSUVE
IElERU9HUkFQSCAod2F0ZXIpCi0gICAgIidcdUQ4MzRcdUREMUUnIiwgLy8gVSsxRDExRSBNVVNJ
Q0FMIFNZTUJPTCBHLUNMRUYgKFVURi0xNiBzdXJyb2dhdGUgcGFpcikKLSAgICAiJ1x1RkZGRCci
LCAvLyBVK0ZGRkQgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSCi0KLSAgICAiW10iLAotCi0gICAgIlst
SW5maW5pdHldIiwKLSAgICAiWy1OdW1iZXIuTUFYX1ZBTFVFXSIsCi0gICAgIlstMV0iLAotICAg
ICJbLU51bWJlci5NSU5fVkFMVUVdIiwKLSAgICAiWzBdIiwKLSAgICAiW051bWJlci5NSU5fVkFM
VUVdIiwKLSAgICAiWzFdIiwKLSAgICAiW051bWJlci5NQVhfVkFMVUVdIiwKLSAgICAiW0luZmlu
aXR5XSIsCi0KLSAgICAiW25ldyBEYXRlKDApXSIsCi0gICAgIltuZXcgRGF0ZSgxMDAwKV0iLAot
ICAgICJbbmV3IERhdGUoMTMxNzM5OTkzMTAyMyldIiwKLQotICAgICJbJyddIiwKLSAgICAiWydc
eDAwJ10iLAotICAgICJbJ2EnXSIsCi0gICAgIlsnYWEnXSIsCi0gICAgIlsnYiddIiwKLSAgICAi
WydiYSddIiwKLQotICAgICJbJ1x4QTInXSIsIC8vIFUrMDBBMiBDRU5UIFNJR04KLSAgICAiWydc
dTZDMzQnXSIsIC8vIFUrNkMzNCBDSksgVU5JRklFRCBJREVPR1JBUEggKHdhdGVyKQotICAgICJb
J1x1RDgzNFx1REQxRSddIiwgLy8gVSsxRDExRSBNVVNJQ0FMIFNZTUJPTCBHLUNMRUYgKFVURi0x
NiBzdXJyb2dhdGUgcGFpcikKLSAgICAiWydcdUZGRkQnXSIsIC8vIFUrRkZGRCBSRVBMQUNFTUVO
VCBDSEFSQUNURVIKLQotICAgICJbW11dIiwKLQotICAgICJbW10sIFtdXSIsCi0gICAgIltbXSwg
W10sIFtdXSIsCi0KLSAgICAiW1tbXV1dIiwKLSAgICAiW1tbW11dXV0iCi1dOwotCi1mdW5jdGlv
biBjb21wYXJlKGEsIGIpCi17Ci0gICAgaWYgKHR5cGVvZiBhICE9PSB0eXBlb2YgYikgewotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgc3dpdGNoICh0eXBlb2YgYSkgewotICAg
ICAgICBjYXNlICd1bmRlZmluZWQnOiAvLyBOb3QgdmFsaWQga2V5cywgYnV0IGNvbXBhcmUgYW55
d2F5LgotICAgICAgICBjYXNlICdib29sZWFuJzogLy8gTm90IHZhbGlkIGtleXMsIGJ1dCBjb21w
YXJlIGFueXdheS4KLSAgICAgICAgY2FzZSAnc3RyaW5nJzoKLSAgICAgICAgICAgIHJldHVybiBh
ID09PSBiOwotICAgICAgICBjYXNlICdudW1iZXInOgotICAgICAgICAgICAgaWYgKGEgPT09IGIp
IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gKGEgIT09IDApIHx8ICgxIC8gYSA9PT0gMSAvIGIp
OyAvLyAwIGlzbid0IC0wCi0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHJl
dHVybiBhICE9PSBhICYmIGIgIT09IGI7IC8vIE5hTiBpcyBOYU4KLSAgICAgICAgICAgIH0KLSAg
ICAgICAgY2FzZSAnb2JqZWN0JzoKLSAgICAgICAgICAgIGlmIChhIGluc3RhbmNlb2YgRGF0ZSAm
JiBiIGluc3RhbmNlb2YgRGF0ZSkgewotICAgICAgICAgICAgICAgIHJldHVybiArYSA9PT0gK2I7
Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGEgaW5zdGFuY2VvZiBBcnJheSAmJiBiIGluc3RhbmNl
b2YgQXJyYXkpIHsKLSAgICAgICAgICAgICAgICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSB7
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICghY29tcGFyZShhW2ldLCBiW2ldKSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgLy8gRm9yIHRoZSBwdXJwb3NlcyBvZiB0aGlzIHRlc3QsIG90aGVyIG9iamVj
dHMgZG9uJ3QgY291bnQKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHBvcHVs
YXRlU3RvcmUoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygicG9wdWxhdGluZyBzdG9y
ZS4uLiIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywg
SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRy
YW5zLm9iamVjdFN0b3JlKCdzdG9yZScpOyIpOwotICAgIHRyYW5zLm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2Fs
bGJhY2s7Ci0gICAgdmFyIGNvdW50ID0gMDsKLSAgICBrZXlzLmZvckVhY2goZnVuY3Rpb24oa2V5
KSB7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgiICsgKGNvdW50KyspICsgIiwgIiAr
IGtleSArICIpIik7Ci0gICAgfSk7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IGNoZWNrU3RvcmU7
Ci19Ci0KLWZ1bmN0aW9uIGNoZWNrU3RvcmUoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1
ZygiaXRlcmF0aW5nIGN1cnNvci4uLiIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJh
bnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKSIpOwotICAgIGV2YWxB
bmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7Iik7Ci0gICAgdHJhbnMu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1
bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICBldmFsQW5kTG9nKCJjb3VudCA9IDAiKTsKLSAg
ICBjdXJyZXEgPSBldmFsQW5kTG9nKCJjdXJyZXEgPSBzdG9yZS5vcGVuQ3Vyc29yKCkiKTsKLSAg
ICBjdXJyZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIGN1cnJlcS5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKGN1cnJlcS5yZXN1bHQpIHsKLSAg
ICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvciA9IGN1cnJlcS5yZXN1bHQiKTsKLSAgICAgICAg
ICAgIHNob3VsZEJlVHJ1ZSgiY29tcGFyZShjdXJzb3Iua2V5LCAiICsga2V5c1tjb3VudF0gKyAi
KSIpOwotICAgICAgICAgICAgZXZhbEFuZExvZygiZ2V0cmVxID0gc3RvcmUuZ2V0KGN1cnNvci5r
ZXkpIik7Ci0gICAgICAgICAgICBnZXRyZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotICAgICAgICAgICAgZ2V0cmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAg
ICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiZ2V0cmVxLnJlc3VsdCA9PT0gY291bnQrKyIpOwotICAg
ICAgICAgICAgICAgIGN1cnNvci5jb250aW51ZSgpOwotICAgICAgICAgICAgfTsKLSAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiY291bnQgPT09IGtleXMubGVuZ3Ro
Iik7Ci0gICAgICAgICAgICBmaW5pc2hVcCgpOwotICAgICAgICB9Ci0gICAgfTsKLX0KLQotZnVu
Y3Rpb24gZmluaXNoVXAoKQotewotICAgIHRlc3RLZXlDb21wYXJlKCk7Ci0gICAgZmluaXNoSlNU
ZXN0KCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RLZXlDb21wYXJlKCkKLXsKLSAgICBkZWJ1ZygiIik7
Ci0gICAgZGVidWcoInZhbGlkYXRlIGNvbXBhcmUgZnVuY3Rpb24iKTsKLSAgICB2YXIgY2FzZXMg
PSBbCi0gICAgICAgICJ1bmRlZmluZWQiLAotICAgICAgICAidHJ1ZSIsCi0gICAgICAgICJmYWxz
ZSIsCi0gICAgICAgICIwIiwKLSAgICAgICAgIi0wIiwKLSAgICAgICAgIjEyMyIsCi0gICAgICAg
ICJJbmZpbml0eSIsCi0gICAgICAgICItSW5maW5pdHkiLAotICAgICAgICAiTmFOIiwKLSAgICAg
ICAgIicnIiwKLSAgICAgICAgIidhYmMnIiwKLSAgICAgICAgIid4eXonIiwKLSAgICAgICAgIm5l
dyBEYXRlKDApIiwKLSAgICAgICAgIm5ldyBEYXRlKDFlMykiLAotICAgICAgICAibmV3IERhdGUo
MWU5KSIsCi0gICAgICAgICJbXSIsCi0gICAgICAgICJbMTIzXSIsCi0gICAgICAgICJbJ2FiYydd
IiwKLSAgICAgICAgIlsxMjMsICdhYmMnXSIsCi0gICAgICAgICJbJ2FiYycsIDEyM10iLAotICAg
ICAgICAiW1tdXSIsCi0gICAgICAgICJbWzEyM11dIiwKLSAgICAgICAgIltbJ2FiYyddXSIsCi0g
ICAgICAgICJbWzEyM10sICdhYmMnXSIsCi0gICAgICAgICJbWzEyM10sIDEyM10iCi0gICAgXTsK
LQotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2FzZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAg
Zm9yICh2YXIgaiA9IDA7IGogPCBjYXNlcy5sZW5ndGg7ICsraikgewotICAgICAgICAgICAgaWYg
KGkgPT09IGopIHsKLSAgICAgICAgICAgICAgICBzaG91bGRCZVRydWUoImNvbXBhcmUoIiArIGNh
c2VzW2ldICsgIiwgIiArIGNhc2VzW2pdICsgIikiKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgc2hvdWxkQmVGYWxzZSgiY29tcGFyZSgiICsgY2FzZXNbaV0gKyAiLCAi
ICsgY2FzZXNbal0gKyAiKSIpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQot
Ci10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jdXJzb3Ita2V5
LW9yZGVyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXByaW1hcnkta2V5LW9yZGVy
Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItcHJpbWFyeS1rZXkt
b3JkZXIuaHRtbAppbmRleCBhN2MzNWU3OWI5MjlhNDUzZDRhM2E4MjYxM2RlODhlMjQxYzNhZmFl
Li4zZjE5M2FiYjRjZWIyZmUxMWZlMTUzMGIxYmE3MTliOGM4YWFlMGVlIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItcHJpbWFyeS1rZXktb3JkZXIuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItcHJpbWFyeS1rZXkt
b3JkZXIuaHRtbApAQCAtMSwxMDggKzEsMTAgQEAKIDxodG1sPgogPGhlYWQ+Ci08bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIj4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+
CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWRE
QiBwcmltYXJ5IGtleSBvcmRlcmluZyBhbmQgcmVhZGJhY2sgZnJvbSBjdXJzb3JzLiIpOwotCi1m
dW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgcHJl
cGFyZURhdGFiYXNlKCk7Ci19Ci0KLWZ1bmN0aW9uIHByZXBhcmVEYXRhYmFzZSgpCi17Ci0gICAg
ZGVidWcoIiIpOwotICAgIGV2YWxBbmRMb2coIm9wZW5SZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4o
J2N1cnNvci1wcmltYXJ5LWtleS1vcmRlcicpIik7Ci0gICAgb3BlblJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIG9wZW5SZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1
bmN0aW9uKCkgewotICAgICAgICBldmFsQW5kTG9nKCJkYiA9IG9wZW5SZXF1ZXN0LnJlc3VsdCIp
OwotICAgICAgICBldmFsQW5kTG9nKCJ2ZXJzaW9uQ2hhbmdlUmVxdWVzdCA9IGRiLnNldFZlcnNp
b24oJzEnKSIpOwotICAgICAgICB2ZXJzaW9uQ2hhbmdlUmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVh
dGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOwotICAgICAgICAgICAgZXZhbEFuZExvZygiaW5kZXgg
PSBzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXgnLCAnaW5kZXhLZXknKSIpOwotCi0gICAgICAgICAg
ICB2ZXJzaW9uQ2hhbmdlUmVxdWVzdC5yZXN1bHQub25jb21wbGV0ZSA9IHBvcHVsYXRlU3RvcmU7
Ci0gICAgICAgIH07Ci0gICAgfTsKLX0KLQotc2VsZi5rZXlzID0gWwotICAgICItSW5maW5pdHki
LAotICAgICItMiIsCi0gICAgIi0xIiwKLSAgICAiMCIsCi0gICAgIjEiLAotICAgICIyIiwKLSAg
ICAiSW5maW5pdHkiLAotCi0gICAgIicwJyIsCi0gICAgIicxJyIsCi0gICAgIicyJyIsCi0gICAg
IidBJyIsCi0gICAgIidCJyIsCi0gICAgIidDJyIsCi0gICAgIidhJyIsCi0gICAgIidiJyIsCi0g
ICAgIidjJyIKLV07Ci0KLQotZnVuY3Rpb24gcG9wdWxhdGVTdG9yZSgpCi17Ci0gICAgZGVidWco
IiIpOwotICAgIGRlYnVnKCJwb3B1bGF0aW5nIHN0b3JlLi4uIik7Ci0gICAgZXZhbEFuZExvZygi
dHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRF
KSIpOwotICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7
Iik7Ci0gICAgdHJhbnMub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHRy
YW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB2YXIgY291bnQgPSAw
OwotICAgIHZhciBpbmRleEtleSA9IDA7Ci0gICAgdmFyIGtleXMgPSBzZWxmLmtleXMuc2xpY2Uo
KTsKLSAgICBrZXlzLnJldmVyc2UoKTsKLSAgICBrZXlzLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7
Ci0gICAgICAgIHZhciB2YWx1ZSA9IHsgaW5kZXhLZXk6IGluZGV4S2V5LCBjb3VudDogY291bnQr
KyB9OwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoIiArIEpTT04uc3RyaW5naWZ5KHZh
bHVlKSArICIsICIgKyBrZXkgKyAiKSIpOwotICAgIH0pOwotICAgIHRyYW5zLm9uY29tcGxldGUg
PSBjaGVja1N0b3JlOwotfQotCi1mdW5jdGlvbiBjaGVja1N0b3JlKCkKLXsKLSAgICBkZWJ1Zygi
Iik7Ci0gICAgZGVidWcoIml0ZXJhdGluZyBjdXJzb3IuLi4iKTsKLSAgICBldmFsQW5kTG9nKCJ0
cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSki
KTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpOyIp
OwotICAgIGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4Jyk7Iik7Ci0gICAg
dHJhbnMub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHRyYW5zLm9uYWJv
cnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICBjdXJzb3JSZXF1ZXN0ID0gZXZhbEFu
ZExvZygiY3Vyc29yUmVxdWVzdCA9IGluZGV4Lm9wZW5DdXJzb3IoKSIpOwotICAgIGV2YWxBbmRM
b2coImNvdW50ID0gMCIpOwotICAgIHZhciBpbmRleEtleSA9IDA7Ci0gICAgY3Vyc29yUmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgY3Vyc29yUmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKGN1cnNvclJlcXVlc3QucmVzdWx0
KSB7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IgPSBjdXJzb3JSZXF1ZXN0LnJlc3Vs
dCIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCBTdHJpbmcoaW5kZXhLZXkp
KTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsIHNlbGYua2V5c1tj
b3VudCsrXSk7Ci0gICAgICAgICAgICBjdXJzb3IuY29udGludWUoKTsKLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiY291bnQgPT09IGtleXMubGVuZ3RoIik7Ci0g
ICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAgICAgfQotICAgIH07Ci19Ci0KLXRlc3Qo
KTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2N1cnNvci1wcmltYXJ5LWtl
eS1vcmRlci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1yZXZlcnNlLWJ1Zy5odG1s
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXJldmVyc2UtYnVnLmh0bWwK
aW5kZXggMWE2NjFjNDZlMDA4MjNkOTYxZjU3NWU3OTUxMDU5NTI3YzU1ZjcwMy4uZWJlZjU5Mzg4
MDk0NzZhNDA2MGEzYWZkNTE0YTA0ZDA3YzJlYzNjMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXJldmVyc2UtYnVnLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXJldmVyc2UtYnVnLmh0bWwKQEAgLTQsMTA3ICs0
LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVh
ZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGtleXMg
b3JkZXJpbmcgYW5kIHJlYWRiYWNrIGZyb20gY3Vyc29ycy4iKTsKLQotZnVuY3Rpb24gdGVzdCgp
Ci17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIHByZXBhcmVEYXRhYmFzZSgp
OwotfQotCi1mdW5jdGlvbiBwcmVwYXJlRGF0YWJhc2UoKQotewotICAgIGRlYnVnKCIiKTsKLSAg
ICBldmFsQW5kTG9nKCJvcGVucmVxID0gaW5kZXhlZERCLm9wZW4oJ2N1cnNvci1yZXZlcnNlLWJ1
ZycpIik7Ci0gICAgb3BlbnJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0g
ICAgb3BlbnJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgZXZhbEFuZExvZygi
ZGIgPSBvcGVucmVxLnJlc3VsdCIpOwotICAgICAgICBldmFsQW5kTG9nKCJ2ZXJyZXEgPSBkYi5z
ZXRWZXJzaW9uKCcxJykiKTsKLSAgICAgICAgdmVycmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLSAgICAgICAgdmVycmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAg
ICAgICAgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLSAgICAgICAgICAgIHN0b3JlID0g
ZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOwotICAg
ICAgICAgICAgZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4JywgJycpIik7Ci0g
ICAgICAgICAgICB2ZXJyZXEucmVzdWx0Lm9uY29tcGxldGUgPSBwb3B1bGF0ZVN0b3JlOwotICAg
ICAgICB9OwotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIHBvcHVsYXRlU3RvcmUoKQotewotICAgIGRl
YnVnKCIiKTsKLSAgICBkZWJ1ZygicG9wdWxhdGluZyBzdG9yZS4uLiIpOwotICAgIGV2YWxBbmRM
b2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVBRF9X
UklURSkiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9y
ZScpOyIpOwotICAgIHRyYW5zLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAg
ICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0KLSAgICBldmFsQW5k
TG9nKCJzdG9yZS5wdXQoMSwgMSkiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoMiwgMiki
KTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoMywgMykiKTsKLSAgICB0cmFucy5vbmNvbXBs
ZXRlID0gdGVzdEN1cnNvcjsKLX0KLQotdmFyIHRlc3RzID0gWwotICAgICAgICAgICAgICAgIHt1
cHBlckJvdW5kOiA3LCBvcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDN9LAotICAgICAgICAgICAgICAg
IHt1cHBlckJvdW5kOiA3LCBvcGVuOiB0cnVlLCAgZXhwZWN0ZWQ6IDN9LAotICAgICAgICAgICAg
ICAgIHt1cHBlckJvdW5kOiAzLCBvcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDN9LAotICAgICAgICAg
ICAgICAgIHt1cHBlckJvdW5kOiAzLCBvcGVuOiB0cnVlLCAgZXhwZWN0ZWQ6IDJ9Ci0gICAgICAg
ICAgICBdOwotCi1mdW5jdGlvbiB0ZXN0Q3Vyc29yKCkKLXsKLSAgICBkZWJ1ZygidGVzdEN1cnNv
cigpIik7Ci0KLSAgICBpZiAodGVzdHMubGVuZ3RoID09PSAwKSB7Ci0gICAgICAgIGRlYnVnKCJO
byBtb3JlIHRlc3RzLiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIHRlc3QgPSB0ZXN0cy5zaGlmdCgpOwotCi0gICAgZXZhbEFuZExvZygi
dHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkp
Iik7Ci0gICAgdHJhbnMub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHRy
YW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBs
ZXRlID0gdGVzdEN1cnNvcjsKLSAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0
b3JlKCdzdG9yZScpOyIpOwotICAgIGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuaW5kZXgoJ2lu
ZGV4Jyk7Iik7Ci0KLSAgICB2YXIgdGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24oKSB7Ci0gICAgICAg
IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICAgICAgaWYg
KGN1cnNvciA9PT0gbnVsbCkgewotICAgICAgICAgICAgZGVidWcoImN1cnNvciBzaG91bGQgbm90
IGJlIG51bGwiKTsKLSAgICAgICAgICAgIGZhaWwoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotCi0gICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgInRlc3QuZXhwZWN0ZWQi
KTsKLSAgICAgICAgaWYgKCJ2YWx1ZSIgaW4gY3Vyc29yKQotICAgICAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci52YWx1ZSIsICJ0ZXN0LmV4cGVjdGVkIik7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJz
b3IucHJpbWFyeUtleSIsICJ0ZXN0LmV4cGVjdGVkIik7Ci0KLSAgICAgICAgLy8gTGV0IHRoZSB0
cmFuc2FjdGlvbiBmaW5pc2guCi0gICAgfQotCi0gICAgZGVidWcoInVwcGVyQm91bmQ6ICIgKyB0
ZXN0LnVwcGVyQm91bmQgKyAiIG9wZW46ICIgKyB0ZXN0Lm9wZW4gKyAiIGV4cGVjdGVkOiAiICsg
dGVzdC5leHBlY3RlZCk7Ci0gICAgc3RvcmVSZXEgPSBldmFsQW5kTG9nKCJzdG9yZVJlcSA9IHN0
b3JlLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCh0ZXN0LnVwcGVyQm91bmQsIHRl
c3Qub3BlbiksIElEQkN1cnNvci5QUkVWKSIpOwotICAgIHN0b3JlUmVxLm9uc3VjY2VzcyA9IHRl
c3RGdW5jdGlvbjsKLQotICAgIGluZGV4UmVxID0gZXZhbEFuZExvZygiaW5kZXhSZXEgPSBpbmRl
eC5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQodGVzdC51cHBlckJvdW5kLCB0ZXN0
Lm9wZW4pLCBJREJDdXJzb3IuUFJFVikiKTsKLSAgICBpbmRleFJlcS5vbnN1Y2Nlc3MgPSB0ZXN0
RnVuY3Rpb247Ci0KLSAgICBpbmRleEtleVJlcSA9IGV2YWxBbmRMb2coImluZGV4S2V5UmVxID0g
aW5kZXgub3BlbktleUN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKHRlc3QudXBwZXJCb3Vu
ZCwgdGVzdC5vcGVuKSwgSURCQ3Vyc29yLlBSRVYpIik7Ci0gICAgaW5kZXhLZXlSZXEub25zdWNj
ZXNzID0gdGVzdEZ1bmN0aW9uOwotfQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9jdXJzb3ItcmV2ZXJzZS1idWcuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBz
cmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8
L2JvZHk+CiA8L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2N1cnNvci1za2lwLWRlbGV0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2N1cnNvci1za2lwLWRlbGV0ZWQuaHRtbAppbmRleCA1MWFjZDM0ZDY0NWViZGUxMzZiNzIy
YjQwMmNlZjkzZThhZmU2MjgyLi5hMGNkYmJjYWIxZTgzYjNlOTk3ZWI1MWExMzMxZGNkOWUyOTY5
MTQyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3Itc2tp
cC1kZWxldGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29y
LXNraXAtZGVsZXRlZC5odG1sCkBAIC00LDIwMCArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRl
c2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGN1cnNvciBza2lwcyBkZWxldGVkIGVudHJpZXMu
Iik7Ci0KLXZhciBuYW1lcyA9IFsnQWxwaGEnLCAnQnJhdm8nLCAnQ2hhcmxpZScsICdEZWx0YScs
ICdFY2hvJywgJ0ZveHRyb3QnLCAnR29sZicsCi0gICAgICAgICAgICAgJ0hvdGVsJywgJ0luZGlh
JywgJ0p1bGlldCcsICdLaWxvJywgJ0xpbWEnLCAnTWlrZScsICdOb3ZlbWJlcicsCi0gICAgICAg
ICAgICAgJ09zY2FyJywgJ1BhcGEnLCAnUXVlYmVjJywgJ1JvbWVvJywgJ1NpZXJyYScsICdUYW5n
bycsICdVbmlmb3JtJywKLSAgICAgICAgICAgICAnVmljdG9yJywgJ1doaXNrZXknLCAnWC1yYXkn
LCAnWWFua2VlJywgJ1p1bHUnXTsKLQotdGVzdCgpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAg
ICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRl
eGVkREIub3BlbignY3Vyc29yLXNraXAtZGVsZXRlZCcpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIHZhciBkYiA9IGV2
YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IHNldFZlcnNpb25TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCi17
Ci0gICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7Ci0gICAgc2VsZi50cmFucyA9IGV2
YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlVHJ1
ZSgidHJhbnMgIT09IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0
Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IGJhc2ljQ3Vyc29yVGVzdDsKLQotICAg
IGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICB2YXIgb2JqZWN0U3RvcmUgPSBldmFs
QW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScsIHtrZXlQ
YXRoOiAnaWQnfSkiKTsKLSAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgn
bmFtZUluZGV4JywgJ25hbWUnKSIpOwotICAgIHJlc2V0T2JqZWN0U3RvcmUoZnVuY3Rpb24oKSB7
fSk7Ci19Ci0KLXZhciBzaWxlbnRFcnJvckhhbmRsZXIgPSBmdW5jdGlvbigpIHsgZXZlbnQucHJl
dmVudERlZmF1bHQoKTsgfQotCi1mdW5jdGlvbiByZXNldE9iamVjdFN0b3JlKGNhbGxiYWNrKQot
ewotICAgIGRlYnVnKCJcbnJlc2V0T2JqZWN0U3RvcmUoKToiKTsKLSAgICBpZiAoY2FsbGJhY2sg
PT09IHVuZGVmaW5lZCkKLSAgICAgICAgY2FsbGJhY2sgPSBmdW5jdGlvbiAoKSB7fTsKLQotICAg
IHZhciBvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpOwotICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspCi0gICAgICAgIG9iamVjdFN0b3JlLmRl
bGV0ZShpKS5vbmVycm9yID0gc2lsZW50RXJyb3JIYW5kbGVyOwotICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspCi0gICAgICAgIG9iamVjdFN0b3JlLmFkZCh7aWQ6IGks
IG5hbWU6IG5hbWVzW2ldfSkub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotCi0g
ICAgZGVidWcoIiIpOwotICAgIGNhbGxiYWNrKCk7Ci19Ci0KLWZ1bmN0aW9uIGNvbnRhaW5zKGFy
ciwgb2JqKQotewotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7Ci0g
ICAgICAgIGlmIChhcnJbaV0gPT0gb2JqKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdmFyIGN1cnNvcjsKLXZhciBkZWxldGVkOwotdmFy
IHNlZW47Ci0KLWZ1bmN0aW9uIHRlc3RDdXJzb3IoZGVsZXRlTGlzdCwgY3JlYXRlQ3Vyc29yQ29t
bWFuZCwgY2FsbGJhY2spCi17Ci0gICAgZGVidWcoIlxudGVzdEN1cnNvcigpOiIpOwotICAgIGRl
bGV0ZWQgPSBbXTsKLSAgICBzZWVuID0gW107Ci0KLSAgICAvLyBDcmVhdGUgdGhlIGN1cnNvci4K
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZyhjcmVhdGVDdXJzb3JDb21tYW5kKTsKLQotICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZnVuY3Rpb24gKCkgewotICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9
PSBudWxsKSB7Ci0gICAgICAgICAgICAvLyBNYWtlIHN1cmUgd2UgaGF2ZSBzZWVuIGV2ZXJ5IG5v
bi1kZWxldGVkIGl0ZW0uCi0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWVzLmxl
bmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnRhaW5zKGRlbGV0ZWQsIGkpKQot
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgICAgIGlmICghY29u
dGFpbnMoc2VlbiwgaSkpCi0gICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkN1cnNvciBk
aWQgbm90IHNlZSBpdGVtIHdpdGggaWQ6ICIgKyBpKTsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgLy8gTWFrZSBzdXJlIHdlIHVzZWQgZXZlcnkgcnVsZSBpbiB8ZGVsZXRlTGlzdHwuCi0g
ICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0ZUxpc3QubGVuZ3RoOyBpKyspIHsK
LSAgICAgICAgICAgICAgICBpZiAoIWNvbnRhaW5zKHNlZW4sIGRlbGV0ZUxpc3RbaV0uaWQpKQot
ICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkZWxldGVMaXN0IHJ1bGUgd2l0aCBpZDog
IiArIGRlbGV0ZUxpc3RbaV0uaWQgKyAiIHdhcyBuZXZlciB1c2VkLiIpOwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICBkZWJ1ZygiIik7Ci0gICAgICAgICAgICBjYWxsYmFjaygpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgY3Vyc29yID0gZXZlbnQudGFy
Z2V0LnJlc3VsdDsKLSAgICAgICAgZGVidWcoZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS5pZCAr
ICI6ICIgKyBldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLm5hbWUpOwotICAgICAgICBzZWVuLnB1
c2goZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS5pZCk7Ci0KLSAgICAgICAgLy8gTWFrZSBzdXJl
IHdlIGRvbid0IHNlZSBhbnkgZGVsZXRlZCBpdGVtcy4KLSAgICAgICAgaWYgKGNvbnRhaW5zKGRl
bGV0ZWQsIGV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUuaWQpKQotICAgICAgICAgICAgdGVzdEZh
aWxlZCgiQ3Vyc29yIGhpdCBwcmV2aW91c2x5IGRlbGV0ZWQgZWxlbWVudC4iKTsKLQotICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0ZUxpc3QubGVuZ3RoOyBpKyspIHsKLSAgICAgICAg
ICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLmlkID09IGRlbGV0ZUxpc3RbaV0uaWQp
IHsKLSAgICAgICAgICAgICAgICAvLyBEZWxldGUgb2JqZWN0cyB0YXJnZXRlZCBieSB0aGlzIGlk
LgotICAgICAgICAgICAgICAgIHZhciB0YXJnZXRzID0gZGVsZXRlTGlzdFtpXS50YXJnZXRzOwot
ICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdGFyZ2V0cy5sZW5ndGg7IGorKykg
ewotICAgICAgICAgICAgICAgICAgICBkZWxldGVkLnB1c2godGFyZ2V0c1tqXSk7Ci0gICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gdHJhbnMub2JqZWN0
U3RvcmUoJ3N0b3JlJykuZGVsZXRlKCIgKyB0YXJnZXRzW2pdICsgIikiKTsKLSAgICAgICAgICAg
ICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChqID09IHRhcmdldHMubGVuZ3RoIC0gMSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7IGN1cnNvci5jb250
aW51ZSgpOyB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGN1cnNvci5jb250aW51ZSgpOwotICAg
IH0KLX0KLQotZnVuY3Rpb24gYmFzaWNDdXJzb3JUZXN0KCkKLXsKLSAgICBkZWJ1ZygiYmFzaWND
dXJzb3JUZXN0KCkiKTsKLQotICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24o
WydzdG9yZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIHRyYW5zLm9uYWJv
cnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gdHJh
bnNhY3Rpb25Db21wbGV0ZTsKLQotICAgIHZhciBkZWxldGVzID0gW3tpZDogMSwgdGFyZ2V0czog
WzBdfSwKLSAgICAgICAgICAgICAgICAgICB7aWQ6IDIsIHRhcmdldHM6IFtuYW1lcy5sZW5ndGgg
LSAxXX0sCi0gICAgICAgICAgICAgICAgICAge2lkOiAzLCB0YXJnZXRzOiBbNSw2LDddfSwKLSAg
ICAgICAgICAgICAgICAgICB7aWQ6IDEwLCB0YXJnZXRzOiBbMTBdfSwKLSAgICAgICAgICAgICAg
ICAgICB7aWQ6IDEyLCB0YXJnZXRzOiBbMTNdfSwKLSAgICAgICAgICAgICAgICAgICB7aWQ6IDE1
LCB0YXJnZXRzOiBbMTRdfSwKLSAgICAgICAgICAgICAgICAgICB7aWQ6IDIwLCB0YXJnZXRzOiBb
MTcsMThdfQotICAgICAgICAgICAgICAgICAgIF07Ci0KLSAgICB0ZXN0Q3Vyc29yKGRlbGV0ZXMs
ICJ0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLmxvd2Vy
Qm91bmQoMCkpIiwgZnVuY3Rpb24oKSB7IHJlc2V0T2JqZWN0U3RvcmUocmV2ZXJzZUN1cnNvclRl
c3QpOyB9KTsKLX0KLQotZnVuY3Rpb24gcmV2ZXJzZUN1cnNvclRlc3QoKQotewotICAgIGRlYnVn
KCJyZXZlcnNlQ3Vyc29yVGVzdCgpOiIpOwotCi0gICAgdmFyIGRlbGV0ZXMgPSBbe2lkOiAyNCwg
dGFyZ2V0czogW25hbWVzLmxlbmd0aCAtIDFdfSwKLSAgICAgICAgICAgICAgICAgICB7aWQ6IDIz
LCB0YXJnZXRzOiBbMF19LAotICAgICAgICAgICAgICAgICAgIHtpZDogMjIsIHRhcmdldHM6IFsy
MCwgMTksIDE4XX0sCi0gICAgICAgICAgICAgICAgICAge2lkOiAxNSwgdGFyZ2V0czogWzE1XX0s
Ci0gICAgICAgICAgICAgICAgICAge2lkOiAxMywgdGFyZ2V0czogWzEyXX0sCi0gICAgICAgICAg
ICAgICAgICAge2lkOiAxMCwgdGFyZ2V0czogWzExXX0sCi0gICAgICAgICAgICAgICAgICAge2lk
OiA1LCB0YXJnZXRzOiBbNyw4XX0KLSAgICAgICAgICAgICAgICAgICBdOwotCi0KLSAgICB0ZXN0
Q3Vyc29yKGRlbGV0ZXMsICJ0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKS5vcGVuQ3Vyc29yKElE
QktleVJhbmdlLmxvd2VyQm91bmQoMCksIElEQkN1cnNvci5QUkVWKSIsIGZ1bmN0aW9uKCkgeyBy
ZXNldE9iamVjdFN0b3JlKGluZGV4Q3Vyc29yVGVzdCk7IH0pOwotfQotCi1mdW5jdGlvbiBpbmRl
eEN1cnNvclRlc3QoKQotewotICAgIGRlYnVnKCJpbmRleEN1cnNvclRlc3QoKToiKTsKLQotICAg
IHZhciBkZWxldGVzID0gW3tpZDogMSwgdGFyZ2V0czogWzBdfSwKLSAgICAgICAgICAgICAgICAg
ICB7aWQ6IDIsIHRhcmdldHM6IFtuYW1lcy5sZW5ndGggLSAxXX0sCi0gICAgICAgICAgICAgICAg
ICAge2lkOiAzLCB0YXJnZXRzOiBbNSw2LDddfSwKLSAgICAgICAgICAgICAgICAgICB7aWQ6IDEw
LCB0YXJnZXRzOiBbMTBdfSwKLSAgICAgICAgICAgICAgICAgICB7aWQ6IDEyLCB0YXJnZXRzOiBb
MTNdfSwKLSAgICAgICAgICAgICAgICAgICB7aWQ6IDE1LCB0YXJnZXRzOiBbMTRdfSwKLSAgICAg
ICAgICAgICAgICAgICB7aWQ6IDIwLCB0YXJnZXRzOiBbMTcsMThdfQotICAgICAgICAgICAgICAg
ICAgIF07Ci0KLSAgICB0ZXN0Q3Vyc29yKGRlbGV0ZXMsICJ0cmFucy5vYmplY3RTdG9yZSgnc3Rv
cmUnKS5pbmRleCgnbmFtZUluZGV4Jykub3BlbkN1cnNvcihJREJLZXlSYW5nZS5sb3dlckJvdW5k
KCdBbHBoYScpKSIsIGZ1bmN0aW9uKCkgeyB9KTsKLX0KLQotZnVuY3Rpb24gdHJhbnNhY3Rpb25D
b21wbGV0ZSgpCi17Ci0gICAgZGVidWcoInRyYW5zYWN0aW9uQ29tcGxldGUoKToiKTsKLSAgICBm
aW5pc2hKU1Rlc3QoKTsKLX0KLQotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
Y3Vyc29yLXNraXAtZGVsZXRlZC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci11cGRh
dGUtdmFsdWUtYXJndW1lbnQtcmVxdWlyZWQuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2N1cnNvci11cGRhdGUtdmFsdWUtYXJndW1lbnQtcmVxdWlyZWQuaHRtbAppbmRleCBj
M2ZkYzdlYzhhYWJjYTFmMGJjYjQ2Yzc0ZmQyOWY3ZTlmN2Q3MjNlLi42ODU5YzdjZGY2NGNmZDJl
MTFmOTA5YWJiYzY5YjFhMTVhZWQ3NDYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9jdXJzb3ItdXBkYXRlLXZhbHVlLWFyZ3VtZW50LXJlcXVpcmVkLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXVwZGF0ZS12YWx1ZS1hcmd1
bWVudC1yZXF1aXJlZC5odG1sCkBAIC0xLDg0ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KIDxo
dG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwv
c2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJ
bmRleGVkREIgY3Vyc29yLnVwZGF0ZSByZXF1aXJlZCBhcmd1bWVudHMiKTsKLQotZnVuY3Rpb24g
dGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxm
LmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2Ui
OwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlw
dGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVu
U3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lv
bignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0ZXN0R3JvdXAxOwotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiB0ZXN0
R3JvdXAxKCkKLXsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0
U3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnYXV0b0luY3JlbWVudCcs
IHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9KTsiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICB0ZXN0R3JvdXAyKCk7Ci0gICAgfQotfQotCi1mdW5j
dGlvbiB0ZXN0R3JvdXAyKCkKLXsKLSAgICBrZXlzID0gZXZhbEFuZExvZygia2V5cyA9IFsxLCAt
MSwgMCwgMTAsIDIwMDAsICdxJywgJ3onLCAndHdvJywgJ2InLCAnYSddOyIpOwotCi0gICAga2V5
SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDA7Iik7Ci0KLSAgICBmb3IgKGkgaW4ga2V5
cykgewotICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5h
ZGQoJ2ZvbycsIGtleXNbaV0pOyIpOwotICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci0gICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50
KSB7Ci0gICAgICAgIGlmICgrK2tleUluZGV4ID09IGtleXMubGVuZ3RoKSB7Ci0gICAgICAgICAg
dGVzdEdyb3VwMygpOwotICAgICAgICB9Ci0gICAgICB9OwotICAgIH0KLX0KLQotZnVuY3Rpb24g
dGVzdEdyb3VwMygpCi17Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmpl
Y3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQp
IHsKLSAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJl
c3VsdDsiKTsKLSAgICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICAgICAgc2hvdWxkVGhyb3co
ImN1cnNvci51cGRhdGUoKTsiKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRlc3RG
YWlsZWQoImN1cnNvciB3YXMgbnVsbCIpOwotICAgICAgICB9Ci0gICAgICAgIGZpbmlzaEpTVGVz
dCgpOwotICAgIH0KLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9jdXJzb3ItdXBkYXRlLXZhbHVlLWFyZ3VtZW50LXJlcXVpcmVkLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItdXBkYXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9jdXJzb3ItdXBkYXRlLmh0bWwKaW5kZXggOTY1NGM2MjUwZjgxMGYxNTAxNDVi
MmQ4Njk3MGI3MTQ2NmU2MzE3ZC4uYTQ2YTcwZDQ3MGY0YzBkNTAxY2MyYmVhZDNiZmFhZDdiOGMy
NzNlYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXVw
ZGF0ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci11cGRh
dGUuaHRtbApAQCAtNCwyMjIgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQu
anMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigi
VGVzdCBJbmRleGVkREIncyBjdXJzb3IgdXBkYXRlLiIpOwotCi10ZXN0KCk7Ci0KLWZ1bmN0aW9u
IHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdjdXJzb3ItdXBkYXRlJykiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgdmFy
IGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb25TdWNj
ZXNzKCkKLXsKLSAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKLSAgICBzZWxmLnRy
YW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hv
dWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVj
dGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gb3BlbkJhc2ljQ3Vyc29y
OwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIHZhciBvYmplY3RTdG9y
ZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2Jhc2lj
U3RvcmUnKSIpOwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnbXlWYWx1ZTEnLCAn
bXlLZXkxJykub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7Ci0gICAgZXZhbEFu
ZExvZygib2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlMicsICdteUtleTInKS5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKLSAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQo
J215VmFsdWUzJywgJ215S2V5MycpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIp
OwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnbXlWYWx1ZTQnLCAnbXlLZXk0Jyku
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7Ci0KLSAgICB2YXIgb2JqZWN0U3Rv
cmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdhdXRv
SW5jcmVtZW50U3RvcmUnLCB7YXV0b0luY3JlbWVudDogdHJ1ZX0pIik7Ci0gICAgZXZhbEFuZExv
Zygib2JqZWN0U3RvcmUuYWRkKCdmb28xJykub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrIik7Ci0gICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCdmb28yJykub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7Ci0gICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUu
YWRkKCdmb28zJykub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7Ci0gICAgZXZh
bEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCdmb280Jykub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrIik7Ci0KLSAgICB2YXIgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdrZXlQYXRoU3RvcmUnLCB7a2V5UGF0aDogJ2lk
J30pIik7Ci0gICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ251bWJlcklu
ZGV4JywgJ251bWJlcicpIik7Ci0gICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKHtudW1i
ZXI6IDEsIGlkOiAxfSkub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7Ci0gICAg
ZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKHtudW1iZXI6IDIsIGlkOiAyfSkub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7Ci0gICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUu
YWRkKHtudW1iZXI6IDMsIGlkOiAzfSkub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
Iik7Ci0gICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKHtudW1iZXI6IDQsIGlkOiA0fSku
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5C
YXNpY0N1cnNvcigpCi17Ci0gICAgZGVidWcoIm9wZW5CYXNpY0N1cnNvcigpIik7Ci0gICAgZXZh
bEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ2Jhc2ljU3RvcmUnLCAnYXV0b0luY3Jl
bWVudFN0b3JlJywgJ2tleVBhdGhTdG9yZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIp
OwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFu
cy5vbmNvbXBsZXRlID0gdHJhbnNhY3Rpb25Db21wbGV0ZTsKLQotICAgIGtleVJhbmdlID0gSURC
S2V5UmFuZ2UubG93ZXJCb3VuZCgibXlLZXkxIik7Ci0gICAgc2VsZi5vYmplY3RTdG9yZSA9IGV2
YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdiYXNpY1N0b3JlJykiKTsKLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGJhc2ljVXBkYXRlQ3Vyc29yOwotICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIGNvdW50ZXIgPSAxOwotfQotCi1mdW5j
dGlvbiBiYXNpY1VwZGF0ZUN1cnNvcigpCi17Ci0gICAgZGVidWcoImJhc2ljVXBkYXRlQ3Vyc29y
KCkiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnNvdXJjZSIsICJvYmplY3RTdG9yZSIp
OwotICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0ID09IG51bGwpIHsKLSAgICAgICAgc2hvdWxk
QmUoImNvdW50ZXIiLCAiNSIpOwotICAgICAgICBjb3VudGVyID0gMTsKLQotICAgICAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2Jhc2ljU3RvcmUnKS5vcGVuQ3Vy
c29yKGtleVJhbmdlKSIpOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGJhc2ljQ2hlY2tD
dXJzb3I7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImV2
ZW50LnRhcmdldC5yZXN1bHQudXBkYXRlKCdteVVwZGF0ZWRWYWx1ZScgKyBjb3VudGVyKyspIik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgZXZhbEFuZExvZygiZXZlbnQu
dGFyZ2V0LnNvdXJjZS5jb250aW51ZSgpIik7IH0KLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYmFzaWNDaGVja0N1cnNvcigpCi17
Ci0gICAgZGVidWcoImJhc2ljQ2hlY2tDdXJzb3IoKSIpOwotICAgIGlmIChldmVudC50YXJnZXQu
cmVzdWx0ID09IG51bGwpIHsKLSAgICAgICAgc2hvdWxkQmUoImNvdW50ZXIiLCAiNSIpOwotICAg
ICAgICBjb3VudGVyID0gMTsKLQotICAgICAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2Vy
Qm91bmQoMSk7Ci0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9y
ZSgnYXV0b0luY3JlbWVudFN0b3JlJykub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKLSAgICAgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBhdXRvSW5jcmVtZW50VXBkYXRlQ3Vyc29yOwotICAgICAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3Vs
dC5rZXkiLCAibXlLZXkiICsgY291bnRlcik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJl
dmVudC50YXJnZXQucmVzdWx0LnZhbHVlIiwgIm15VXBkYXRlZFZhbHVlIiArIGNvdW50ZXIrKyk7
Ci0gICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7Ci19Ci0K
LWZ1bmN0aW9uIGF1dG9JbmNyZW1lbnRVcGRhdGVDdXJzb3IoKQotewotICAgIGRlYnVnKCJhdXRv
SW5jcmVtZW50VXBkYXRlQ3Vyc29yKCkiKTsKLSAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9
PSBudWxsKSB7Ci0gICAgICAgIHNob3VsZEJlKCJjb3VudGVyIiwgIjUiKTsKLSAgICAgICAgY291
bnRlciA9IDE7Ci0KLSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0
b3JlKCdhdXRvSW5jcmVtZW50U3RvcmUnKS5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOwotICAgICAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGF1dG9JbmNyZW1lbnRDaGVja0N1cnNvcjsKLSAgICAgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3Vs
dC51cGRhdGUoJ215VXBkYXRlZEZvbycgKyBjb3VudGVyKyspIik7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbigpIHsgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnNvdXJjZS5jb250
aW51ZSgpIik7IH0KLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLX0KLQotZnVuY3Rpb24gYXV0b0luY3JlbWVudENoZWNrQ3Vyc29yKCkKLXsKLSAgICBkZWJ1
ZygiYXV0b0luY3JlbWVudENoZWNrQ3Vyc29yKCkiKTsKLSAgICBpZiAoZXZlbnQudGFyZ2V0LnJl
c3VsdCA9PSBudWxsKSB7Ci0gICAgICAgIHNob3VsZEJlKCJjb3VudGVyIiwgIjUiKTsKLSAgICAg
ICAgY291bnRlciA9IDE7Ci0KLSAgICAgICAga2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5sb3dlckJv
dW5kKDEpOwotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUo
J2tleVBhdGhTdG9yZScpLm9wZW5DdXJzb3Ioa2V5UmFuZ2UpIik7Ci0gICAgICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0ga2V5UGF0aFVwZGF0ZUN1cnNvcjsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAiY291bnRlciIpOwotICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZSIsICJteVVwZGF0
ZWRGb28iICsgY291bnRlcisrKTsKLSAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0
LmNvbnRpbnVlKCkiKTsKLX0KLQotZnVuY3Rpb24ga2V5UGF0aFVwZGF0ZUN1cnNvcigpCi17Ci0g
ICAgZGVidWcoImtleVBhdGhVcGRhdGVDdXJzb3IoKSIpOwotICAgIGlmIChldmVudC50YXJnZXQu
cmVzdWx0ID09IG51bGwpIHsKLSAgICAgICAgc2hvdWxkQmUoImNvdW50ZXIiLCAiNSIpOwotICAg
ICAgICBjb3VudGVyID0gMTsKLQotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnMu
b2JqZWN0U3RvcmUoJ2tleVBhdGhTdG9yZScpLm9wZW5DdXJzb3Ioa2V5UmFuZ2UpIik7Ci0gICAg
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0ga2V5UGF0aENoZWNrQ3Vyc29yOwotICAgICAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImV2ZW50LnRhcmdldC5yZXN1bHQu
dXBkYXRlKHtpZDogMTAwICsgY291bnRlciwgbnVtYmVyOiAxMDAgKyBjb3VudGVyfSkiLCAiSURC
RGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJldmVudC50YXJnZXQucmVzdWx0LnVwZGF0ZSh7aWQ6IGNvdW50ZXIsIG51bWJlcjogMTAwICsg
Y291bnRlcisrfSkiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeyBldmFs
QW5kTG9nKCJldmVudC50YXJnZXQuc291cmNlLmNvbnRpbnVlKCkiKSB9OwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBrZXlQYXRo
Q2hlY2tDdXJzb3IoKQotewotICAgIGRlYnVnKCJrZXlQYXRoQ2hlY2tDdXJzb3IoKSIpOwotICAg
IGlmIChldmVudC50YXJnZXQucmVzdWx0ID09IG51bGwpIHsKLSAgICAgICAgc2hvdWxkQmUoImNv
dW50ZXIiLCAiNSIpOwotICAgICAgICBjb3VudGVyID0gMTsKLQotICAgICAgICBrZXlSYW5nZSA9
IElEQktleVJhbmdlLmxvd2VyQm91bmQoMTAxKTsKLSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInRyYW5zLm9iamVjdFN0b3JlKCdrZXlQYXRoU3RvcmUnKS5pbmRleCgnbnVtYmVySW5kZXgn
KS5vcGVuS2V5Q3Vyc29yKGtleVJhbmdlKSIpOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGtleUN1cnNvcjsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBzaG91bGRCZSgiZXZlbnQudGFy
Z2V0LnJlc3VsdC5rZXkiLCAiY291bnRlciIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQu
cmVzdWx0LnZhbHVlLmlkIiwgImNvdW50ZXIiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0
LnJlc3VsdC52YWx1ZS5udW1iZXIiLCAoY291bnRlciArIDEwMCkudG9TdHJpbmcoKSk7Ci0gICAg
Y291bnRlcisrOwotICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUo
KSIpOwotfQotCi1mdW5jdGlvbiBrZXlDdXJzb3IoKQotewotICAgIGRlYnVnKCJrZXlDdXJzb3Io
KSIpOwotICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0ID09IG51bGwpIHsKLSAgICAgICAgc2hv
dWxkQmUoImNvdW50ZXIiLCAiNSIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc2hv
dWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgImNvdW50ZXIgKyAxMDAiKTsKLSAgICBz
aG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgImNvdW50ZXIiKTsKLQot
ICAgIHRyeSB7Ci0gICAgICAgIGRlYnVnKCJldmVudC50YXJnZXQucmVzdWx0LnVwZGF0ZSh7aWQ6
IGNvdW50ZXIsIG51bWJlcjogY291bnRlciArIDIwMH0pIik7Ci0gICAgICAgIGV2ZW50LnRhcmdl
dC5yZXN1bHQudXBkYXRlKHtpZDogY291bnRlciwgbnVtYmVyOiBjb3VudGVyICsgMjAwfSk7Ci0g
ICAgICAgIHRlc3RGYWlsZWQoIkV4cGVjdGVkIGV4Y2VwdGlvbi4iKTsKLSAgICB9IGNhdGNoIChl
KSB7Ci0gICAgICAgIGNvZGUgPSBlLmNvZGU7Ci0gICAgICAgIHNob3VsZEJlKCJjb2RlIiwgIklE
QkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9BTExPV0VEX0VSUiIpOwotICAgIH0KLQotICAgIGNvdW50
ZXIrKzsKLSAgICBldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCk7Ci19Ci0KLWZ1bmN0aW9u
IHRyYW5zYWN0aW9uQ29tcGxldGUoKQotewotICAgIGRlYnVnKCJ0cmFuc2FjdGlvbkNvbXBsZXRl
KCkiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvY3Vyc29yLXVwZGF0ZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4K
IDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGEt
Y29ycnVwdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YS1jb3Jy
dXB0aW9uLmh0bWwKaW5kZXggNWM2MjJlN2M3ODQyZTcyMjY1ZmVkMDJiNzU3ZTA4NTE1NGYwZjBm
Mi4uOTU5N2M1YjM1MzVmYmNmZmQ5NWQ3NzFjOWE4NzlmYjg5NjkxYjE4ZSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YS1jb3JydXB0aW9uLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YS1jb3JydXB0aW9uLmh0bWwKQEAgLTQs
NzEgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0Pgog
PC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCB0aGF0IGRhdGEg
aW5zZXJ0ZWQgaW50byBJbmRleGVkREIgZG9lcyBub3QgZ2V0IGNvcnJ1cHRlZCBvbiBkaXNrLiIp
OwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignZGF0YS1jb3JydXB0aW9uJyki
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2Vz
cygpCi17Ci0gICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7Ci0gICAgc2VsZi5kYiA9IGV2YWxB
bmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IHNldFZlcnNpb25TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCi17Ci0g
ICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7Ci0gICAgc2VsZi50cmFucyA9IGV2YWxB
bmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgi
dHJhbnMgIT09IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2Fs
bGJhY2s7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IGFkZERhdGE7Ci0KLSAgICBkZWxldGVBbGxP
YmplY3RTdG9yZXMoZGIpOwotCi0gICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUo
J3N0b3JlTmFtZScpIik7Ci19Ci0KLXZhciB0ZXN0RGF0ZSA9IG5ldyBEYXRlKCdGZWJydWFyeSAy
NCwgMTk1NSAxMjowMDowOCcpOwotCi1mdW5jdGlvbiBhZGREYXRhKCkKLXsKLSAgICBkZWJ1Zygi
YWRkRGF0YSgpOiIpOwotICAgIHZhciB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0
aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9X
UklURSkiKTsKLSAgICB2YXIgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSB0cmFuc2Fj
dGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykuYWRkKHt4OiB0ZXN0RGF0ZX0sICdrZXknKSIp
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHRy
YW5zYWN0aW9uLm9uY29tcGxldGUgPSBnZXREYXRhOwotfQotCi1mdW5jdGlvbiBnZXREYXRhKCkK
LXsKLSAgICBkZWJ1ZygiYWRkRGF0YSgpOiIpOwotICAgIHZhciB0cmFuc2FjdGlvbiA9IGV2YWxB
bmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJh
bnNhY3Rpb24uUkVBRF9PTkxZKSIpOwotICAgIHZhciByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVx
dWVzdCA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKS5nZXQoJ2tleScpIik7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBkb0NoZWNrOwotfQotCi1mdW5jdGlvbiBkb0NoZWNrKCkKLXsKLSAg
ICBzaG91bGRCZVRydWUoImV2ZW50LnRhcmdldC5yZXN1bHQueC50b1N0cmluZygpID09IHRlc3RE
YXRlLnRvU3RyaW5nKCkiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotdGVzdCgpOwotCi0K
LTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9kYXRhLWNvcnJ1cHRpb24uanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1iYXNpY3MuaHRtbCBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLWJhc2ljcy5odG1sCmluZGV4IDcxZTVlNTY4NGY0ZjE0
OWQxYmQ4MGJiMTM4ZDcxY2ZmZTlhMGY5ZDkuLjEwZWNiMDU0NGUyNjlmMTE3MTM3ZmY5Nzc2ODUw
MWIxMzE5NWI5NDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Rh
dGFiYXNlLWJhc2ljcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Rh
dGFiYXNlLWJhc2ljcy5odG1sCkBAIC00LDEyMSArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRl
c2NyaXB0aW9uKCJUZXN0IHRoZSBiYXNpY3Mgb2YgSW5kZXhlZERCJ3MgSURCRGF0YWJhc2UuIik7
Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2RhdGFiYXNlLWJhc2ljcycp
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nl
c3MoKQotewotICAgIHNlbGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVy
c2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rp
b24gc2V0VmVyc2lvblN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2Vzcygp
OiIpOwotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0gICAgdHJhbnMu
b25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0
U3RvcmVzKGRiKTsKLQotICAgIGRlYnVnKCJUZXN0aW5nIHNldFZlcnNpb24uIik7Ci0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coJ2RiLnNldFZlcnNpb24oInZlcnNpb24gYSIpJyk7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uQWdhaW47Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb25BZ2Fpbigp
Ci17Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coJ2RiLnNldFZlcnNpb24oInZlcnNpb24gYiIp
Jyk7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVPYmplY3RTdG9yZTsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY3Jl
YXRlT2JqZWN0U3RvcmUoKQotewotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGIudmVyc2lv
biIsICJ2ZXJzaW9uIGIiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLm5hbWUiLCAi
ZGF0YWJhc2UtYmFzaWNzIik7Ci0gICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMiLCAi
W10iKTsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMCIpOwot
ICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCcnKSIsICJmYWxzZSIp
OwotICAgIHNob3VsZEJlTnVsbCgiZGIub2JqZWN0U3RvcmVOYW1lc1swXSIpOwotICAgIHNob3Vs
ZEJlTnVsbCgiZGIub2JqZWN0U3RvcmVOYW1lcy5pdGVtKDApIik7Ci0KLSAgICBvYmplY3RTdG9y
ZSA9IGV2YWxBbmRMb2coJ2RiLmNyZWF0ZU9iamVjdFN0b3JlKCJ0ZXN0MTIzIiknKTsKLSAgICBj
aGVja09iamVjdFN0b3JlKCk7Ci0gICAgY29tbWl0QW5kQ29udGludWUoKTsKLX0KLQotZnVuY3Rp
b24gY2hlY2tPYmplY3RTdG9yZSgpCi17Ci0gICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFt
ZXMiLCAiWyd0ZXN0MTIzJ10iKTsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5s
ZW5ndGgiLCAiMSIpOwotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5z
KCcnKSIsICJmYWxzZSIpOwotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRh
aW5zKCd0ZXN0NDU2JykiLCAiZmFsc2UiKTsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVO
YW1lcy5jb250YWlucygndGVzdDEyMycpIiwgInRydWUiKTsKLX0KLQotZnVuY3Rpb24gY29tbWl0
QW5kQ29udGludWUoKQotewotICAgIHNlbGYuc2V0VGltZW91dCh0ZXN0U2V0VmVyc2lvbkFib3J0
LCAwKTsKLX0KLQotZnVuY3Rpb24gdGVzdFNldFZlcnNpb25BYm9ydCgpCi17Ci0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coJ2RiLnNldFZlcnNpb24oInZlcnNpb24gYyIpJyk7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbm90aGVyT2JqZWN0U3RvcmU7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUFub3Ro
ZXJPYmplY3RTdG9yZSgpCi17Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkYi52ZXJzaW9u
IiwgInZlcnNpb24gYyIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGIubmFtZSIsICJk
YXRhYmFzZS1iYXNpY3MiKTsKLSAgICBjaGVja09iamVjdFN0b3JlKCk7Ci0KLSAgICBvYmplY3RT
dG9yZSA9IGV2YWxBbmRMb2coJ2RiLmNyZWF0ZU9iamVjdFN0b3JlKCJ0ZXN0NDU2IiknKTsKLSAg
ICB2YXIgc2V0VmVyc2lvblRyYW5zID0gZXZhbEFuZExvZygic2V0VmVyc2lvblRyYW5zID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgic2V0VmVyc2lvblRyYW5zICE9
PSBudWxsIik7Ci0gICAgc2V0VmVyc2lvblRyYW5zLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQ29t
cGxldGVDYWxsYmFjazsKLSAgICBzZXRWZXJzaW9uVHJhbnMub25hYm9ydCA9IGNoZWNrTWV0YWRh
dGE7Ci0gICAgc2V0VmVyc2lvblRyYW5zLmFib3J0KCk7Ci19Ci0KLWZ1bmN0aW9uIGNoZWNrTWV0
YWRhdGEoKQotewotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGIudmVyc2lvbiIsICJ2ZXJz
aW9uIGIiKTsKLSAgICBjaGVja09iamVjdFN0b3JlKCk7Ci0gICAgdGVzdENsb3NlKCk7Ci19Ci0K
LWZ1bmN0aW9uIHRlc3RDbG9zZSgpCi17Ci0gICAgZXZhbEFuZExvZygiZGIuY2xvc2UoKSIpOwot
ICAgIGRlYnVnKCJOb3cgdGhhdCB0aGUgY29ubmVjdGlvbiBpcyBjbG9zZWQsIHRyYW5zYWN0aW9u
IGNyZWF0aW9uIHNob3VsZCBmYWlsIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIu
dHJhbnNhY3Rpb24oJ3Rlc3QxMjMnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dF
RF9FUlIiKTsKLSAgICBkZWJ1ZygiQ2FsbCB0d2ljZSwgbWFrZSBzdXJlIGl0J3MgaGFybWxlc3Mi
KTsKLSAgICBldmFsQW5kTG9nKCJkYi5jbG9zZSgpIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19
Ci0KLXRlc3QoKTsKLQotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZGF0YWJh
c2UtYmFzaWNzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtbmFtZS11bmRlZmlu
ZWQuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLW5hbWUtdW5k
ZWZpbmVkLmh0bWwKaW5kZXggNzgwMDI4NmQ5ZjFjMTAzNjUxMDUyYmMwMzIwNzc4NWNkMmM0YTEw
NS4uYjZmOTE0NDVlM2YyMTY3YTBkOGEyZDU1NjI5Yjg1ZDkwNjQ4YThkZSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtbmFtZS11bmRlZmluZWQuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1uYW1lLXVuZGVm
aW5lZC5odG1sCkBAIC0xLDI1ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhl
YWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0Pgog
PC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIg
dW5kZWZpbmVkIGFzIHJlY29yZCB2YWx1ZSIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICBy
ZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIHNob3VsZFRocm93KCJpbmRleGVkREIub3Blbigp
OyIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RhdGFiYXNlLW5hbWUtdW5kZWZpbmVkLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvZGF0YWJhc2Utb2RkLW5hbWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1vZGQtbmFtZXMuaHRtbAppbmRleCBmMzMxMjkyZjM1YTlk
Y2QzNDllMTljNTVjNDFhYTQxYTRjZjM5MWIzLi4xM2VlZDllOTc3YzlkNmNhN2JmODAxMzEzNDY3
NmM0YjJiMTk5ZjA1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9k
YXRhYmFzZS1vZGQtbmFtZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9kYXRhYmFzZS1vZGQtbmFtZXMuaHRtbApAQCAtMSw0MSArMSwxMCBAQAotPCFET0NUWVBFIGh0
bWw+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVk
LmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24o
IlRlc3QgSW5kZXhlZERCIG9kZCB2YWx1ZSBkYXRhdHlwZXMiKTsKLQotZnVuY3Rpb24gdGVzdCgp
Ci17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIHRlc3REYXRhID0gW3sgZGVz
Y3JpcHRpb246ICdudWxsJywgICAgICAgICAgICAgICBuYW1lOiAnXHUwMDAwJyB9LAotICAgICAg
ICAgICAgICAgIHsgZGVzY3JpcHRpb246ICdmYWlodScsICAgICAgICAgICAgICBuYW1lOiAnXHVk
ODAwXHVkZjQ2JyB9LAotICAgICAgICAgICAgICAgIHsgZGVzY3JpcHRpb246ICd1bnBhaXJlZCBz
dXJyb2dhdGUnLCBuYW1lOiAnXHVkODAwJyB9LAotICAgICAgICAgICAgICAgIHsgZGVzY3JpcHRp
b246ICdmZmZlJywgICAgICAgICAgICAgICBuYW1lOiAnXHVmZmZlJyB9LAotICAgICAgICAgICAg
ICAgIHsgZGVzY3JpcHRpb246ICdmZmZmJywgICAgICAgICAgICAgICBuYW1lOiAnXHVmZmZmJyB9
LAotICAgICAgICAgICAgICAgIHsgZGVzY3JpcHRpb246ICdsaW5lIHNlcGFyYXRvcicsICAgICBu
YW1lOiAnXHUyMDI4JyB9Ci0gICAgXTsKLSAgICBuZXh0VG9PcGVuID0gMDsKLSAgICBvcGVuTmV4
dERhdGFiYXNlKCk7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5OZXh0RGF0YWJhc2UoKQotewotICAgIGRl
YnVnKCJvcGVuaW5nIGEgZGF0YWJhc2UgbmFtZWQgIiArIHRlc3REYXRhW25leHRUb09wZW5dLmRl
c2NyaXB0aW9uKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4odGVz
dERhdGFbbmV4dFRvT3Blbl0ubmFtZSwgdGVzdERhdGFbbmV4dFRvT3Blbl0uZGVzY3JpcHRpb24p
Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSArK25leHRUb09wZW4gPCB0ZXN0RGF0YS5sZW5ndGggPyBvcGVu
TmV4dERhdGFiYXNlIDogZmluaXNoSlNUZXN0OwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RhdGFiYXNlLW9kZC1uYW1lcy5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL2RhdGFiYXNlLXF1b3RhLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9kYXRhYmFzZS1xdW90YS5odG1sCmluZGV4IDMzNzY4OTI0ZjU3Y2I1OTBiYjAyMGJl
MjQ1NjY3N2ExOWFiMzEwNTIuLmRmNjM3NmVmZGI4YjVhYWZiMjg4NGZmMDUzY2E5NDEyMGNmZmQ0
YzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLXF1
b3RhLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtcXVv
dGEuaHRtbApAQCAtNCwxMDMgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQu
anMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigi
VGVzdHMgSW5kZXhlZERCJ3MgcXVvdGEgZW5mb3JjaW5nIG1lY2hhbmlzbS4iKTsKLQotZnVuY3Rp
b24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2RhdGFiYXNlLXF1b3RhJykiKTsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAg
c2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb25TdWNjZXNzOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9u
U3VjY2VzcygpCi17Ci0gICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7Ci0gICAgc2Vs
Zi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAg
IHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5l
eHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IGNoZWNrUXVvdGFF
bmZvcmNpbmc7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJkYi52ZXJzaW9uIiwgIm5ldyB2ZXJzaW9uIik7Ci0gICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJkYi5uYW1lIiwgImRhdGFiYXNlLXF1b3RhIik7Ci0gICAgc2hvdWxk
QmUoImRiLm9iamVjdFN0b3JlTmFtZXMiLCAiW10iKTsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0
U3RvcmVOYW1lcy5sZW5ndGgiLCAiMCIpOwotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5h
bWVzLmNvbnRhaW5zKCcnKSIsICJmYWxzZSIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5k
TG9nKCdkYi5jcmVhdGVPYmplY3RTdG9yZSgidGVzdDEyMyIpJyk7Ci0gICAgY2hlY2tPYmplY3RT
dG9yZSgpOwotfQotCi1mdW5jdGlvbiBjaGVja09iamVjdFN0b3JlKCkKLXsKLSAgICBzaG91bGRC
ZSgiZGIub2JqZWN0U3RvcmVOYW1lcyIsICJbJ3Rlc3QxMjMnXSIpOwotICAgIHNob3VsZEJlKCJk
Yi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIxIik7Ci0gICAgc2hvdWxkQmUoImRiLm9iamVj
dFN0b3JlTmFtZXMuY29udGFpbnMoJycpIiwgImZhbHNlIik7Ci0gICAgc2hvdWxkQmUoImRiLm9i
amVjdFN0b3JlTmFtZXMuY29udGFpbnMoJ3Rlc3Q0NTYnKSIsICJmYWxzZSIpOwotICAgIHNob3Vs
ZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCd0ZXN0MTIzJykiLCAidHJ1ZSIpOwot
fQotCi1mdW5jdGlvbiBjaGVja1F1b3RhRW5mb3JjaW5nKCkKLXsKLSAgICB2YXIgdHJhbnMgPSBl
dmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsndGVzdDEyMyddLCBJREJUcmFuc2Fj
dGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB0ZXN0Q29tcGxldGU7Ci0g
ICAgdHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOwotICAgIGRl
YnVnKCJDcmVhdGluZyAnZGF0YScgd2hpY2ggY29udGFpbnMgNjRLIG9mIGRhdGEiKTsKLSAgICBz
ZWxmLmRhdGEgPSAiWCI7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNjsgaSsrKQotICAgICAg
ICBkYXRhICs9IGRhdGE7Ci0gICAgc2hvdWxkQmUoImRhdGEubGVuZ3RoIiwgIjY1NTM2Iik7Ci0g
ICAgc2VsZi5kYXRhQWRkZWQgPSAwOwotICAgIHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9y
ZSA9IHRyYW5zLm9iamVjdFN0b3JlKCd0ZXN0MTIzJykiKTsKLSAgICBhZGREYXRhKCk7Ci19Ci0K
LWZ1bmN0aW9uIGFkZERhdGEoKQotewotICAgIGlmIChkYXRhQWRkZWQgPCA1ICogMTAyNCAqIDEw
MjQpIHsKLSAgICAgICAgaWYgKGRhdGFBZGRlZCA+IDApCi0gICAgICAgICAgICBzdG9yZSA9IGV2
ZW50LnRhcmdldC5zb3VyY2U7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiYWRk
ZWQgbW9yZSB0aGFuIHF1b3RhIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIGRhdGFBZGRlZCArPSA2NTUzNjsKLSAgICByZXF1ZXN0ID0gc3Rv
cmUuYWRkKHt4OiBkYXRhfSwgZGF0YUFkZGVkKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFk
ZERhdGE7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gbG9nRXJyb3I7Ci19Ci0KLWZ1bmN0aW9uIGxv
Z0Vycm9yKCkKLXsKLSAgICBkZWJ1ZygiRXJyb3IgZnVuY3Rpb24gY2FsbGVkOiAoIiArIGV2ZW50
LnRhcmdldC5lcnJvckNvZGUgKyAiKSAiICsgZXZlbnQudGFyZ2V0LndlYmtpdEVycm9yTWVzc2Fn
ZSk7Ci0gICAgZXZhbEFuZExvZygiZXZlbnQucHJldmVudERlZmF1bHQoKSIpOwotfQotCi1mdW5j
dGlvbiB0ZXN0Q29tcGxldGUoKQotewotICAgIHRlc3RQYXNzZWQoIkFkZGluZyBkYXRhIGZhaWxl
ZCBkdWUgdG8gcXVvdGEgZXJyb3IuIERhdGEgYWRkZWQgd2FzIGFib3V0ICIgKyBNYXRoLnJvdW5k
KGRhdGFBZGRlZCAvIDEwMjQgLyAxMDI0KSArICIgTUIiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsK
LX0KLQotdGVzdCgpOwotCi0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9kYXRh
YmFzZS1xdW90YS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZS1jbG9zZWQtZGF0YWJh
c2Utb2JqZWN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGUtY2xv
c2VkLWRhdGFiYXNlLW9iamVjdC5odG1sCmluZGV4IDRhYjUwZDIwODI5NTUwMTcxZGE4YTFhZGFm
ZjVkZDdkNzI1NjVkYzIuLjdmZGY1OGUxZDNmOGIyMTc0YTczMjQ3ODhjNjhjYWY2Nzg0OTdkZTcg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZS1jbG9zZWQt
ZGF0YWJhc2Utb2JqZWN0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
ZGVsZXRlLWNsb3NlZC1kYXRhYmFzZS1vYmplY3QuaHRtbApAQCAtNCw1NiArNCw3IEBACiA8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4K
LTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJFbnN1cmUgdGhhdCBJREJEYXRhYmFzZSBvYmplY3Rz
IGFyZSBkZWxldGVkIHdoZW4gdGhlcmUgYXJlIG5vIHJldGFpbmluZyBwYXRocyBsZWZ0Iik7Ci0K
LQotZnVuY3Rpb24gdGVzdCgpIHsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIG9w
ZW5EQkNvbm5lY3Rpb24oKTsKLX0KLQotZnVuY3Rpb24gb3BlbkRCQ29ubmVjdGlvbigpCi17Ci0g
ICAgZXZhbEFuZExvZygic2VsZi5zdGF0ZSA9ICdzdGFydGluZyciKTsKLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2RlbGV0ZS1jbG9zZWQtZGF0YWJhc2Utb2JqZWN0
JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3Vj
Y2VzcygpCi17Ci0gICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOwotCi0gICAgLy8gT3BlbiBhIHNlY29uZCBjb25uZWN0aW9uIHRvIHRoZSBzYW1lIGRh
dGFiYXNlLgotICAgIHZhciByZXF1ZXN0MiA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdk
ZWxldGUtY2xvc2VkLWRhdGFiYXNlLW9iamVjdCcpIik7Ci0gICAgcmVxdWVzdDIub25zdWNjZXNz
ID0gb3BlblN1Y2Nlc3MyOwotICAgIHJlcXVlc3QyLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MyKCkKLXsKLSAgICBkZWJ1ZygiU2Vj
b25kIGNvbm5lY3Rpb24gc3VjY2Vzc2Z1bGx5IGVzdGFibGlzaGVkLiIpOwotICAgIC8vIEFmdGVy
IGxlYXZpbmcgdGhpcyBmdW5jdGlvbiwgdGhlcmUgYXJlIG5vIHJlbWFpbmluZyByZWZlcmVuY2Vz
IHRvIHRoZQotICAgIC8vIHNlY29uZCBjb25uZWN0aW9uLCBzbyBpdCBzaG91bGQgZ2V0IGRlbGV0
ZWQuCi0gICAgc2V0VGltZW91dChzZXRWZXJzaW9uLCAyKTsKLX0KLQotZnVuY3Rpb24gc2V0VmVy
c2lvbigpCi17Ci0gICAgZ2MoKTsKLSAgICBkZWJ1ZygiY2FsbGluZyBzZXRWZXJzaW9uKCkgLSBj
YWxsYmFjayBzaG91bGQgcnVuIGltbWVkaWF0ZWx5Iik7Ci0gICAgdmFyIHZlcnNpb25DaGFuZ2VS
ZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsKLSAgICB2
ZXJzaW9uQ2hhbmdlUmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0g
ICAgdmVyc2lvbkNoYW5nZVJlcXVlc3Qub25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2NrZWRDYWxs
YmFjazsKLSAgICB2ZXJzaW9uQ2hhbmdlUmVxdWVzdC5vbnN1Y2Nlc3MgPSBmaW5pc2hKU1Rlc3Q7
Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZGVs
ZXRlLWNsb3NlZC1kYXRhYmFzZS1vYmplY3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+
CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxl
dGUtcmFuZ2UuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZS1yYW5n
ZS5odG1sCmluZGV4IDRmYTJmMjMxMDE3ZDFmZDgxMTJiZDYwMTgxNjc5MjhjM2MxNTRlYmEuLmM4
MDA0MTE4ZGRkNTVjOGMxOWFlNzg1MzY5MzBiNDdjY2I3MDcyMWMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZS1yYW5nZS5odG1sCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZS1yYW5nZS5odG1sCkBAIC00LDk1ICs0LDcgQEAK
IDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxi
b2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgSURCT2JqZWN0
U3RvcmUuZGVsZXRlKElEQktleVJhbmdlKSBtZXRob2QuIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQot
ewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCdkZWxldGUtcmFuZ2UnKSIpOwotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZnVuY3Rpb24gKCkgewotICAgICAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhl
ZERCLm9wZW4oJ2RlbGV0ZS1yYW5nZScpIik7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0
aW9uICgpIHsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImRiID0gcmVxdWVzdC5yZXN1bHQiKTsK
LSAgICAgICAgICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsK
LSAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
ICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAg
ICAgICAgZXZhbEFuZExvZygidHJhbnMgPSByZXF1ZXN0LnJlc3VsdCIpOwotICAgICAgICAgICAg
ICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLQotICAgICAgICAg
ICAgICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7Ci0KLSAg
ICAgICAgICAgICAgICB0cmFucy5vbmNvbXBsZXRlID0gcnVuVGVzdHM7Ci0gICAgICAgICAgICB9
OwotICAgICAgICB9OwotICAgIH0KLX0KLQotZnVuY3Rpb24gY2hlY2tLZXlzKGV4cGVjdGVkLCBj
YWxsYmFjaykKLXsKLSAgICBkZWJ1ZygiZ2V0dGluZyBrZXlzIGZyb20gc3RvcmUuLi4iKTsKLSAg
ICBkZWJ1ZygiZXhwZWN0OiAiICsgSlNPTi5zdHJpbmdpZnkoZXhwZWN0ZWQpKTsKLSAgICB2YXIg
a2V5cyA9IFtdOwotICAgIHJlcXVlc3QgPSBzdG9yZS5vcGVuQ3Vyc29yKCk7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIGN1cnNvciA9IHJlcXVlc3QucmVzdWx0OwotICAg
ICAgICBpZiAoY3Vyc29yKSB7Ci0gICAgICAgICAgICBrZXlzLnB1c2goY3Vyc29yLmtleSk7Ci0g
ICAgICAgICAgICBjdXJzb3IuY29udGludWUoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIGRlYnVnKCJhY3R1YWw6ICIgKyBKU09OLnN0cmluZ2lmeShrZXlzKSk7Ci0gICAgICAgICAg
ICBpZiAoSlNPTi5zdHJpbmdpZnkoZXhwZWN0ZWQpID09PSBKU09OLnN0cmluZ2lmeShrZXlzKSkg
ewotICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIk1hdGNoISIpOwotICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJEb24ndCBtYXRjaCEiKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgIH07Ci19Ci0KLXZhciB0ZXN0cyA9IFsKLSAgICB7IGxv
d2VyOiAzLCB1cHBlcjogOCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXJPcGVuOiBmYWxzZSwgZXhw
ZWN0ZWQ6IFsxLCAyLCA5LCAxMF19LAotICAgIHsgbG93ZXI6IDMsIHVwcGVyOiA4LCBsb3dlck9w
ZW46IHRydWUsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiBbMSwgMiwgMywgOSwgMTBdfSwK
LSAgICB7IGxvd2VyOiAzLCB1cHBlcjogOCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXJPcGVuOiB0
cnVlLCBleHBlY3RlZDogWzEsIDIsIDgsIDksIDEwXX0sCi0gICAgeyBsb3dlcjogMywgdXBwZXI6
IDgsIGxvd2VyT3BlbjogdHJ1ZSwgdXBwZXJPcGVuOiB0cnVlLCBleHBlY3RlZDogWzEsIDIsIDMs
IDgsIDksIDEwXX0KLV07Ci0KLWZ1bmN0aW9uIHJ1blRlc3RzKCkKLXsKLSAgICBmdW5jdGlvbiBu
ZXh0VGVzdCgpIHsKLSAgICAgICAgdmFyIHRlc3QgPSB0ZXN0cy5zaGlmdCgpOwotICAgICAgICBp
ZiAodGVzdCkgewotICAgICAgICAgICAgZGVidWcoIiIpOwotICAgICAgICAgICAgZXZhbEFuZExv
ZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dS
SVRFKSIpOwotICAgICAgICAgICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9y
ZSgnc3RvcmUnKSIpOwotICAgICAgICAgICAgZm9yIChpID0gMTsgaSA8PSAxMDsgKytpKSB7Ci0g
ICAgICAgICAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCIgKyBpICsgIiwiICsgaSArICIp
Iik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5kZWxldGUo
SURCS2V5UmFuZ2UuYm91bmQoIiArCi0gICAgICAgICAgICAgICAgdGVzdC5sb3dlciArICIsICIg
KwotICAgICAgICAgICAgICAgIHRlc3QudXBwZXIgKyAiLCAiICsKLSAgICAgICAgICAgICAgICB0
ZXN0Lmxvd2VyT3BlbiArICIsICIgKwotICAgICAgICAgICAgICAgIHRlc3QudXBwZXJPcGVuICsg
IikpIik7Ci0gICAgICAgICAgICBjaGVja0tleXModGVzdC5leHBlY3RlZCwgbmV4dFRlc3QpOwot
ICAgICAgICAgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAg
ICAgICAgICAgdHJhbnMub25jb21wbGV0ZSA9IG5leHRUZXN0OwotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgbmV4dFRlc3QoKTsKLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvZGVsZXRlLXJhbmdlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgog
PC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvZGVsZXRlSW5kZXguaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0
ZUluZGV4Lmh0bWwKaW5kZXggNGU3NjFmZWU2YTBmY2MzMzkxYWIyNzJiOTkyNzQ5MmYxMjYxZTI3
My4uYjJjYTQ0MzVlNWUzZjFkMjU4Y2MxYjRjNjlkMzFhODNjNGFkZjBkNCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlSW5kZXguaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVJbmRleC5odG1sCkBAIC0xLDU5ICsxLDEw
IEBACi08IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0
PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgZGVsZXRlSW5kZXggbWV0aG9kIik7Ci0K
LWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdkZWxldGVJbmRleCcpIik7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewot
ICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gdHdpZGRsZUluZGV4ZXM7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHR3aWRkbGVJbmRleGVz
KCkKLXsKLSAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdDsiKTsKLSAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci0gICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENh
bGxiYWNrOwotICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBwb3N0VHdpZGRsaW5nOwotICAg
IGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRM
b2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycpOyIpOwotICAgIGV2
YWxBbmRFeHBlY3RFeGNlcHRpb24oIm9iamVjdFN0b3JlLmRlbGV0ZUluZGV4KCdmaXJzdCcpIiwg
IklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKLSAgICBzaG91bGRUaHJvdygi
b2JqZWN0U3RvcmUuZGVsZXRlSW5kZXgoKSIpOyAvLyBUeXBlRXJyb3I6IG5vdCBlbm91Z2ggYXJn
dW1lbnRzLgotICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBvYmplY3RTdG9yZS5jcmVh
dGVJbmRleCgnZmlyc3QnLCAnZmlyc3QnKTsiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJvYmplY3RTdG9yZS5kZWxldGVJbmRleCgnRklSU1QnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlv
bi5OT1RfRk9VTkRfRVJSIik7Ci0gICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IG9iamVj
dFN0b3JlLmNyZWF0ZUluZGV4KCdzZWNvbmQnLCAnc2Vjb25kJyk7Iik7Ci0gICAgcmV0dXJuVmFs
dWUgPSBldmFsQW5kTG9nKCJyZXR1cm5WYWx1ZSA9IG9iamVjdFN0b3JlLmRlbGV0ZUluZGV4KCdm
aXJzdCcpOyIpOwotICAgIHNob3VsZEJlKCJyZXR1cm5WYWx1ZSIsICJ1bmRlZmluZWQiKTsKLX0K
LQotZnVuY3Rpb24gcG9zdFR3aWRkbGluZygpCi17Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlv
bigiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2JhcicpOyIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5O
T1RfQUxMT1dFRF9FUlIiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJvYmplY3RTdG9y
ZS5kZWxldGVJbmRleCgnc2Vjb25kJykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJ
T05fSU5BQ1RJVkVfRVJSIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXRlc3QoKTsKLQot
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RlbGV0ZUluZGV4LmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvZGVsZXRlT2JqZWN0U3RvcmUtbmFtZS1hcmd1bWVudC1yZXF1aXJlZC5o
dG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlT2JqZWN0U3RvcmUtbmFt
ZS1hcmd1bWVudC1yZXF1aXJlZC5odG1sCmluZGV4IGRlMjk2NjNlMWJmYjg4M2ZlNWFlYmZlNmY2
MzQxMTYwZTk3YjFjYzYuLjE3YTg5ZWRhZGY2NzU0NWIxM2RmYzIwZTliNzlmNzM2MDkwYjg5Zjgg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZU9iamVjdFN0
b3JlLW5hbWUtYXJndW1lbnQtcmVxdWlyZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9kZWxldGVPYmplY3RTdG9yZS1uYW1lLWFyZ3VtZW50LXJlcXVpcmVkLmh0bWwK
QEAgLTEsNDYgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3Jp
cHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8
Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBkZWxldGVPYmpl
Y3RTdG9yZSByZXF1aXJlZCBhcmd1bWVudCIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICBy
ZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5h
bWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAg
ICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNy
ZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jl
cyhkYik7Ci0KLSAgICBzaG91bGRUaHJvdygiZGIuZGVsZXRlT2JqZWN0U3RvcmUoKTsiKTsKLSAg
ICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9kZWxldGVPYmplY3RTdG9yZS1uYW1lLWFyZ3VtZW50LXJlcXVpcmVkLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlT2JqZWN0U3RvcmUtbnVsbC1uYW1lLmh0bWwg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVPYmplY3RTdG9yZS1udWxsLW5h
bWUuaHRtbAppbmRleCBjMzZkYmRiNmQ3MzdjM2Q4NjlhYjg5MGJmNGZiNmRkZjFjOTVjZTY4Li4y
ZjhlNzBiYzAwY2MxMjVlMWUzNTcwZmMxM2JlZDFkMTUzZjkyN2Q4IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVPYmplY3RTdG9yZS1udWxsLW5hbWUuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVPYmplY3RTdG9yZS1u
dWxsLW5hbWUuaHRtbApAQCAtMSw0NyArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4K
IDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Njcmlw
dD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhl
ZERCIGRlbGV0ZU9iamVjdFN0b3JlIHJlcXVpcmVkIGFyZ3VtZW50Iik7Ci0KLWZ1bmN0aW9uIHRl
c3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5s
b2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsK
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRp
b24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1
Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24o
JzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RT
dG9yZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0K
LQotZnVuY3Rpb24gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSgpCi17Ci0gICAgZGVsZXRl
QWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0
b3JlKCdudWxsJyk7Iik7Ci0gICAgZXZhbEFuZExvZygiZGIuZGVsZXRlT2JqZWN0U3RvcmUobnVs
bCk7Iik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZGVsZXRlT2JqZWN0U3RvcmUtbnVsbC1uYW1lLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvZHVwbGljYXRlcy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvZHVwbGljYXRlcy5odG1sCmluZGV4IDBkODJiM2M5MDM5NWUwYWE3NzM5Njcw
ZjJiMzZkOTIyMTAxYjgzOTEuLjVlOTQ5ZGQ4YzI4YWI4YzYyNDcwOTc2YjYyM2E0YWUzMTZjYTky
YjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2R1cGxpY2F0ZXMu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kdXBsaWNhdGVzLmh0bWwK
QEAgLTQsMTcyICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Nj
cmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlZlcmlmeSB0
aGF0IHlvdSBjYW4gcHV0IHRoZSBzYW1lIGRhdGEgaW4gMiBkaWZmZXJlbnQgZGF0YWJhc2VzIHdp
dGhvdXQgdW5pcXVlbmVzcyBjb25zdHJhaW50cyBmaXJpbmcuIik7Ci0KLXRlc3RDb3VudCA9IDA7
Ci1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICBpZiAodGVzdENvdW50KysgPT0gMCkKLSAgICAgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdkdXBsaWNhdGVzLTEnKSIpOwot
ICAgIGVsc2UKLSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdk
dXBsaWNhdGVzLTInKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvbjsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rp
b24gc2V0VmVyc2lvbigpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCdu
ZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVu
Y3Rpb24gZGVsZXRlRXhpc3RpbmcoKQotewotICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2Vzcygp
OiIpOwotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0gICAgdHJhbnMu
b25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0
U3RvcmVzKGRiKTsKLQotICAgIHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKLSAgICBzZWxmLmluZGV4T2JqZWN0ID0gZXZh
bEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZScsICd4JykiKTsKLSAgICBhZGRE
YXRhKCk7Ci19Ci0KLWZ1bmN0aW9uIGFkZERhdGEoKQotewotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBhZGRNb3JlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBhZGRNb3JlKCkKLXsKLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnNvdXJjZS5hZGQoe3g6ICd2YWx1ZTInLCB5OiAn
enp6Mid9LCAna2V5MicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXREYXRhOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlv
biBnZXREYXRhKCkKLXsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhPYmplY3QuZ2V0
S2V5KCd2YWx1ZScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRPYmplY3REYXRhOwot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5j
dGlvbiBnZXRPYmplY3REYXRhKCkKLXsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50
LnRhcmdldC5yZXN1bHQiLCAia2V5Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5k
ZXhPYmplY3QuZ2V0KCd2YWx1ZScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXREYXRh
RmFpbDsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0K
LQotZnVuY3Rpb24gZ2V0RGF0YUZhaWwoKQotewotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
ZXZlbnQudGFyZ2V0LnJlc3VsdC54IiwgInZhbHVlIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJldmVudC50YXJnZXQucmVzdWx0LnkiLCAienp6Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiaW5kZXhPYmplY3QuZ2V0S2V5KCdkb2VzIG5vdCBleGlzdCcpIik7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBnZXRPYmplY3REYXRhRmFpbDsKLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZ2V0T2JqZWN0RGF0YUZh
aWwoKQotewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgInVuZGVmaW5lZCIp
OwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0LmdldCgnZG9lcyBub3Qg
ZXhpc3QnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbktleUN1cnNvcjsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24g
b3BlbktleUN1cnNvcigpCi17Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAi
dW5kZWZpbmVkIik7Ci0KLSAgICBzZWxmLnJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVj
dC5vcGVuS2V5Q3Vyc29yKCkiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvcjFDb250
aW51ZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0K
LQotZnVuY3Rpb24gY3Vyc29yMUNvbnRpbnVlKCkKLXsKLSAgICBzaG91bGRCZUZhbHNlKCJldmVu
dC50YXJnZXQucmVzdWx0ID09PSBudWxsIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJl
dmVudC50YXJnZXQucmVzdWx0LmtleSIsICJ2YWx1ZSIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgImtleSIpOwotCi0gICAgLy8g
V2UgcmUtdXNlIHRoZSBsYXN0IHJlcXVlc3Qgb2JqZWN0LgotICAgIGV2YWxBbmRMb2coImV2ZW50
LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOwotICAgIHNlbGYucmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBjdXJzb3IxQ29udGludWUyOwotfQotCi1mdW5jdGlvbiBjdXJzb3IxQ29udGludWUyKCkKLXsK
LSAgICBzaG91bGRCZUZhbHNlKCJldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsIik7Ci0gICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICJ2YWx1ZTIi
KTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFy
eUtleSIsICJrZXkyIik7Ci0KLSAgICAvLyBXZSByZS11c2UgdGhlIGxhc3QgcmVxdWVzdCBvYmpl
Y3QuCi0gICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7Ci0g
ICAgc2VsZi5yZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5PYmplY3RDdXJzb3I7Ci19Ci0KLWZ1bmN0
aW9uIG9wZW5PYmplY3RDdXJzb3IoKQotewotICAgIHNob3VsZEJlVHJ1ZSgiZXZlbnQudGFyZ2V0
LnJlc3VsdCA9PT0gbnVsbCIpOwotCi0gICAgc2VsZi5yZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5k
ZXhPYmplY3Qub3BlbkN1cnNvcigpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3Iy
Q29udGludWU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci19Ci0KLWZ1bmN0aW9uIGN1cnNvcjJDb250aW51ZSgpCi17Ci0gICAgc2hvdWxkQmVGYWxzZSgi
ZXZlbnQudGFyZ2V0LnJlc3VsdCA9PT0gbnVsbCIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAidmFsdWUiKTsKLSAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUueCIsICJ2YWx1ZSIpOwotICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS55IiwgInp6eiIp
OwotCi0gICAgLy8gV2UgcmUtdXNlIHRoZSBsYXN0IHJlcXVlc3Qgb2JqZWN0LgotICAgIGV2YWxB
bmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOwotICAgIHNlbGYucmVxdWVz
dC5vbnN1Y2Nlc3MgPSBjdXJzb3IyQ29udGludWUyOwotfQotCi1mdW5jdGlvbiBjdXJzb3IyQ29u
dGludWUyKCkKLXsKLSAgICBzaG91bGRCZUZhbHNlKCJldmVudC50YXJnZXQucmVzdWx0ID09PSBu
dWxsIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0Lmtl
eSIsICJ2YWx1ZTIiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5y
ZXN1bHQudmFsdWUueCIsICJ2YWx1ZTIiKTsgICAgCi0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLnkiLCAienp6MiIpOwotCi0gICAgLy8gV2UgcmUt
dXNlIHRoZSBsYXN0IHJlcXVlc3Qgb2JqZWN0LgotICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdl
dC5yZXN1bHQuY29udGludWUoKSIpOwotICAgIHNlbGYucmVxdWVzdC5vbnN1Y2Nlc3MgPSBsYXN0
OwotfQotCi1mdW5jdGlvbiBsYXN0KCkKLXsKLSAgICBzaG91bGRCZVRydWUoImV2ZW50LnRhcmdl
dC5yZXN1bHQgPT09IG51bGwiKTsKLQotICAgIGlmICh0ZXN0Q291bnQgPT0gMSkKLSAgICAgICAg
dGVzdCgpOwotICAgIGVsc2UKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXJlbW92ZVZl
bmRvclByZWZpeGVzKCk7Ci10ZXN0KCk7Ci0KLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2R1cGxpY2F0ZXMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9lcnJvci1jYXVzZXMt
YWJvcnQtYnktZGVmYXVsdC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZXJy
b3ItY2F1c2VzLWFib3J0LWJ5LWRlZmF1bHQuaHRtbAppbmRleCAwZGE4MGIxMTFhNmYyNmUxMTg2
MDc2NzBhMDdiNGZiOGEyYWI5MDRjLi5mYTc0ZDEyNTI3MDUxZjcxN2NhNGFmMjRiNWMyNzA1MzUw
NzIxNjBmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9lcnJvci1j
YXVzZXMtYWJvcnQtYnktZGVmYXVsdC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2Vycm9yLWNhdXNlcy1hYm9ydC1ieS1kZWZhdWx0Lmh0bWwKQEAgLTQsMTA3ICs0LDcg
QEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4K
IDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlZlcmlmeSB0aGF0IGEgdHJhbnNhY3Rp
b24gd2l0aCBhbiBlcnJvciBhYm9ydHMgdW5sZXNzIHByZXZlbnREZWZhdWx0KCkgaXMgY2FsbGVk
LiIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignZXJyb3ItY2F1c2VzLWFi
b3J0LWJ5LWRlZmF1bHQnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvbjsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVu
Y3Rpb24gc2V0VmVyc2lvbigpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9u
KCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGlu
ZzsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQot
ZnVuY3Rpb24gZGVsZXRlRXhpc3RpbmcoKQotewotICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2Vz
cygpOiIpOwotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0gICAgdHJh
bnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIGV2YWxBbmRMb2coInRy
YW5zLm9uY29tcGxldGUgPSBhZGREYXRhIik7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMo
ZGIpOwotCi0gICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScs
IG51bGwpIik7Ci19Ci0KLWZ1bmN0aW9uIGFkZERhdGEoKQotewotICAgIHRyYW5zID0gZXZhbEFu
ZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlv
bi5SRUFEX1dSSVRFKSIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSB1bmV4cGVj
dGVkQWJvcnRDYWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSB0
cmFuc2FjdGlvbkNvbXBsZXRlZCIpOwotICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0
cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
Zygic3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gYWRkTW9yZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYWRkTW9yZSgpCi17Ci0gICAgCi0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5zb3VyY2UuYWRkKHt4OiAndmFsdWUnLCB5
OiAnenp6J30sICdrZXknKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1
Y2Nlc3NDYWxsYmFjazsKLSAgICByZXF1ZXN0LmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIiwgcHJl
dmVudFRoZURlZmF1bHQpOwotfQotCi1mdW5jdGlvbiBwcmV2ZW50VGhlRGVmYXVsdCgpCi17Ci0g
ICAgZXZhbEFuZExvZygiZXZlbnQucHJldmVudERlZmF1bHQoKSIpOwotfQotCi1mdW5jdGlvbiB0
cmFuc2FjdGlvbkNvbXBsZXRlZCgpCi17Ci0gICAgdGVzdFBhc3NlZCgiVHJhbnNhY3Rpb24gY29t
cGxldGVkIik7Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCIiKTsKLSAgICB0cmFucyA9IGV2
YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJhbnNh
Y3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmFib3J0ID0gdHJh
bnNhY3Rpb25BYm9ydGVkMSIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSB1
bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjayIpOwotICAgIHN0b3JlID0gZXZhbEFuZExvZygic3Rv
cmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSBhbGxvd0RlZmF1bHQ7Ci19Ci0KLWZ1bmN0aW9uIGFsbG93RGVmYXVsdCgp
Ci17Ci0gICAgZGVidWcoIkRvaW5nIG5vdGhpbmcgdG8gcHJldmVudCB0aGUgZGVmYXVsdCBhY3Rp
b24uLi4iKTsKLX0KLQotZnVuY3Rpb24gdHJhbnNhY3Rpb25BYm9ydGVkMSgpCi17Ci0gICAgdGVz
dFBhc3NlZCgiVHJhbnNhY3Rpb24gYWJvcnRlZCIpOwotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1
ZygiIik7Ci0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsn
c3RvcmVOYW1lJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFuZExv
ZygidHJhbnMub25hYm9ydCA9IHRyYW5zYWN0aW9uQWJvcnRlZDIiKTsKLSAgICBldmFsQW5kTG9n
KCJ0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2siKTsKLSAgICBz
dG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScp
Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTog
J3p6eid9LCAna2V5JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNj
ZXNzQ2FsbGJhY2s7Ci0gICAgZGVidWcoIk9taXR0aW5nIGFuIG9uZXJyb3IgaGFuZGxlciIpOwot
fQotCi1mdW5jdGlvbiB0cmFuc2FjdGlvbkFib3J0ZWQyKCkKLXsKLSAgICB0ZXN0UGFzc2VkKCJU
cmFuc2FjdGlvbiBhYm9ydGVkIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXRlc3QoKTsK
LQotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZXJyb3ItY2F1c2VzLWFib3J0
LWJ5LWRlZmF1bHQuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9leGNlcHRpb24taW4tZXZlbnQt
YWJvcnRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2V4Y2Vw
dGlvbi1pbi1ldmVudC1hYm9ydHMtZXhwZWN0ZWQudHh0CmluZGV4IDdkMWUyZDJhNzQ5YzU0NWI4
OWUzYjA3Njg0OGQ4Y2Q5OTNlOWY2ZjMuLmEwYTk2MDE0YWMxZDQ1MWZkNDYzYzg5YmM2YWZkYzY2
MGZmOGQzN2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2V4Y2Vw
dGlvbi1pbi1ldmVudC1hYm9ydHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL2V4Y2VwdGlvbi1pbi1ldmVudC1hYm9ydHMtZXhwZWN0ZWQudHh0CkBAIC0x
LDUgKzEsNSBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDYwOiBVbmNhdWdodCB0aGlzIGV4Y2Vw
dGlvbiBpcyBleHBlY3RlZAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDYwOiBVbmNhdWdodCB0aGlz
IGV4Y2VwdGlvbiBpcyBleHBlY3RlZAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDU3OiBVbmNhdWdo
dCB0aGlzIGV4Y2VwdGlvbiBpcyBleHBlY3RlZAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDU3OiBV
bmNhdWdodCB0aGlzIGV4Y2VwdGlvbiBpcyBleHBlY3RlZAogVGVzdCBleGNlcHRpb25zIGluIElE
QlJlcXVlc3QgaGFuZGxlcnMgY2F1c2UgYWJvcnRzLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9leGNlcHRpb24t
aW4tZXZlbnQtYWJvcnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9leGNl
cHRpb24taW4tZXZlbnQtYWJvcnRzLmh0bWwKaW5kZXggMDQzY2ZhY2U4ZmMyYTA5MjFiZDg2ZTNh
MTQ0MGZkZjZmNzMwZDMxNy4uOGNkYmQ2OTY2MTMxNzcwZDM1Y2VkNzMyODFjMDBhNGE0MWI4Y2U1
OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZXhjZXB0aW9uLWlu
LWV2ZW50LWFib3J0cy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2V4
Y2VwdGlvbi1pbi1ldmVudC1hYm9ydHMuaHRtbApAQCAtNCwxMjcgKzQsNyBAQAogPHNjcmlwdCBz
cmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2Ny
aXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBleGNlcHRpb25zIGluIElEQlJlcXVlc3QgaGFuZGxl
cnMgY2F1c2UgYWJvcnRzLiIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5k
b3JQcmVmaXhlcygpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbign
ZXhjZXB0aW9uLWluLWV2ZW50LWFib3J0cycpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBz
ZXRWZXJzaW9uOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRi
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRi
LnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRl
bGV0ZUV4aXN0aW5nOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotfQotCi1mdW5jdGlvbiBkZWxldGVFeGlzdGluZygpCi17Ci0gICAgZGVidWcoInNldFZl
cnNpb25TdWNjZXNzKCk6Iik7Ci0gICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwi
KTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgZXZh
bEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IHN0YXJ0VGVzdCIpOwotCi0gICAgZGVsZXRlQWxs
T2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5j
cmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlv
biBzdGFydFRlc3QoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICB0cmFucyA9IGV2YWxBbmRMb2co
InRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rpb24uUkVB
RF9XUklURSkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmFib3J0ID0gdHJhbnNhY3Rpb25B
Ym9ydGVkMSIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSB1bmV4cGVjdGVk
Q29tcGxldGVDYWxsYmFjayIpOwotICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFu
cy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
c3RvcmUuYWRkKHt4OiAndmFsdWUyJywgeTogJ3p6ejInfSwgJ2tleTInKSIpOwotICAgIHRyYW5z
LmFkZEV2ZW50TGlzdGVuZXIoJ3N1Y2Nlc3MnLCBjYXVzZUV4Y2VwdGlvbiwgdHJ1ZSk7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9u
IGNhdXNlRXhjZXB0aW9uKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZXZhbEFuZExvZygiZXZl
bnQucHJldmVudERlZmF1bHQoKSIpOwotICAgIGRlYnVnKCJUaHJvd2luZyIpOwotICAgIHRocm93
ICJ0aGlzIGV4Y2VwdGlvbiBpcyBleHBlY3RlZCI7Ci19Ci0KLWZ1bmN0aW9uIHRyYW5zYWN0aW9u
QWJvcnRlZDEoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBzaG91bGRIYXZlSGFkRXJyb3IoInRo
aXMgZXhjZXB0aW9uIGlzIGV4cGVjdGVkIik7Ci0gICAgdGVzdFBhc3NlZCgiVGhlIHRyYW5zYWN0
aW9uIHdhcyBhYm9ydGVkLiIpOwotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50
cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwot
ICAgIGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSB0cmFuc2FjdGlvbkFib3J0ZWQyIik7Ci0g
ICAgZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxi
YWNrIik7Ci0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3Jl
KCdzdG9yZU5hbWUnKSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6
ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB1
bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOwotICAgIGRiLm9uZXJyb3IgPSBjYXVzZUV4Y2VwdGlv
bjsKLX0KLQotZnVuY3Rpb24gdHJhbnNhY3Rpb25BYm9ydGVkMigpCi17Ci0gICAgZGVidWcoIiIp
OwotICAgIHNob3VsZEhhdmVIYWRFcnJvcigidGhpcyBleGNlcHRpb24gaXMgZXhwZWN0ZWQiKTsK
LSAgICB0ZXN0UGFzc2VkKCJUaGUgdHJhbnNhY3Rpb24gd2FzIGFib3J0ZWQuIik7Ci0gICAgdHJh
bnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIElE
QlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMub25hYm9y
dCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMub25j
b21wbGV0ZSA9IHRyYW5zYWN0aW9uQ29tcGxldGVkMSIpOwotICAgIHN0b3JlID0gZXZhbEFuZExv
Zygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWUzJywgeTogJ3p6ejMnfSwgJ2tleTMn
KSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdGhyb3dBbmRDYXRjaDsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICBkYi5vbmVycm9yID0gbnVs
bDsKLX0KLQotZnVuY3Rpb24gdGhyb3dBbmRDYXRjaCgpCi17Ci0gICAgZGVidWcoIiIpOwotICAg
IGV2YWxBbmRMb2coImV2ZW50LnByZXZlbnREZWZhdWx0KCkiKTsKLSAgICBkZWJ1ZygiVGhyb3dp
bmcgd2l0aGluIGEgdHJ5IGJsb2NrIik7Ci0gICAgdHJ5IHsKLSAgICAgICAgdGhyb3cgIkFISEgi
OwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRyYW5zYWN0aW9uQ29t
cGxldGVkMSgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIHRlc3RQYXNzZWQoIlRoZSB0cmFuc2Fj
dGlvbiBjb21wbGV0ZWQuIik7Ci0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRy
YW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0g
ICAgZXZhbEFuZExvZygidHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrIik7
Ci0gICAgZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IHRyYW5zYWN0aW9uQ29tcGxldGVk
MiIpOwotICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgn
c3RvcmVOYW1lJykiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAn
dmFsdWU0JywgeTogJ3p6ejQnfSwgJ2tleTQnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24oKSB7IHRlc3RQYXNzZWQoImtleTQgYWRkZWQiKTsgfQotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiB0cmFuc2FjdGlv
bkNvbXBsZXRlZDIoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICB0ZXN0UGFzc2VkKCJUaGUgdHJh
bnNhY3Rpb24gY29tcGxldGVkLiIpOwotICAgIGRlYnVnKCIiKTsKLSAgICBmaW5pc2hKU1Rlc3Qo
KTsKLX0KLQotdGVzdCgpOwotCi0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9l
eGNlcHRpb24taW4tZXZlbnQtYWJvcnRzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5Pgog
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZmFjdG9y
eS1iYXNpY3MuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ZhY3RvcnktYmFz
aWNzLmh0bWwKaW5kZXggZDQ0Y2FiMjUyOTZhZmM1NWRiNmFjZjU3NzRhYjJhNzU3OTA3MzFiZC4u
MmI3MWQ2Y2Q2MmNkZWNlMTUwOGU3MjJiZmQyYjk1OWM3M2U2NDc0MyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZmFjdG9yeS1iYXNpY3MuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9mYWN0b3J5LWJhc2ljcy5odG1sCkBAIC00LDg4ICs0
LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVh
ZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgdGhlIGJhc2ljcyBvZiBJ
bmRleGVkREIncyBJREJGYWN0b3J5LiIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1v
dmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2YgaW5kZXhlZERC
Lm9wZW4gPT09ICdmdW5jdGlvbiciKTsKLSAgICBzaG91bGRCZVRydWUoInR5cGVvZiBpbmRleGVk
REIuY21wID09PSAnZnVuY3Rpb24nIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2YgaW5kZXhl
ZERCLmdldERhdGFiYXNlTmFtZXMgPT09ICdmdW5jdGlvbiciKTsKLQotICAgIHNob3VsZEJlVHJ1
ZSgidHlwZW9mIGluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSA9PT0gJ2Z1bmN0aW9uJyIpOwotCi0g
ICAgbmFtZSA9ICdzdG9yYWdlL2luZGV4ZWRkYi9mYWN0b3J5LWJhc2ljcyc7Ci0gICAgZGVzY3Jp
cHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
aW5kZXhlZERCLmdldERhdGFiYXNlTmFtZXMoKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
Z2V0RGF0YWJhc2VOYW1lc1N1Y2Nlc3MxOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBnZXREYXRhYmFzZU5hbWVzU3VjY2VzczEo
KQotewotICAgIHZhciBkYXRhYmFzZU5hbWVzOwotICAgIGV2YWxBbmRMb2coImRhdGFiYXNlTmFt
ZXMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGF0YWJhc2VO
YW1lcy5jb250YWlucygnIiArIG5hbWUgKyAiJykiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJkYXRh
YmFzZU5hbWVzLmNvbnRhaW5zKCdEQVRBQkFTRSBUSEFUIERPRVMgTk9UIEVYSVNUJykiKTsKLQot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlv
bikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3Vj
Y2VzcygpCi17Ci0gICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jbG9zZSgpIik7
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5nZXREYXRhYmFzZU5hbWVzKCki
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldERhdGFiYXNlTmFtZXNTdWNjZXNzMjsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rp
b24gZ2V0RGF0YWJhc2VOYW1lc1N1Y2Nlc3MyKCkKLXsKLSAgICB2YXIgZGF0YWJhc2VOYW1lczsK
LSAgICBldmFsQW5kTG9nKCJkYXRhYmFzZU5hbWVzID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwot
ICAgIHNob3VsZEJlVHJ1ZSgiZGF0YWJhc2VOYW1lcy5jb250YWlucygnIiArIG5hbWUgKyAiJyki
KTsKLSAgICBzaG91bGRCZUZhbHNlKCJkYXRhYmFzZU5hbWVzLmNvbnRhaW5zKCdEQVRBQkFTRSBU
SEFUIERPRVMgTk9UIEVYSVNUJykiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRl
eGVkREIuZGVsZXRlRGF0YWJhc2UoJyIgKyBuYW1lICsgIicpIik7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBkZWxldGVEYXRhYmFzZVN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZURhdGFiYXNlU3VjY2Vz
cygpCi17Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5nZXREYXRhYmFzZU5h
bWVzKCkiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldERhdGFiYXNlTmFtZXNTdWNjZXNz
MzsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQot
ZnVuY3Rpb24gZ2V0RGF0YWJhc2VOYW1lc1N1Y2Nlc3MzKCkKLXsKLSAgICB2YXIgZGF0YWJhc2VO
YW1lczsKLSAgICBldmFsQW5kTG9nKCJkYXRhYmFzZU5hbWVzID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dCIpOwotICAgIHNob3VsZEJlRmFsc2UoImRhdGFiYXNlTmFtZXMuY29udGFpbnMoJyIgKyBuYW1l
ICsgIicpIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGF0YWJhc2VOYW1lcy5jb250YWlucygnREFU
QUJBU0UgVEhBVCBET0VTIE5PVCBFWElTVCcpIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCdEQVRBQkFTRSBUSEFUIERPRVMgTk9UIEVYSVNU
JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZURhdGFiYXNlU3VjY2VzczI7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0
aW9uIGRlbGV0ZURhdGFiYXNlU3VjY2VzczIoKQotewotICAgIGZpbmlzaEpTVGVzdCgpOwotfQot
Ci10ZXN0KCk7Ci0KLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZhY3Rvcnkt
YmFzaWNzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZmFjdG9yeS1jbXAuaHRtbCBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ZhY3RvcnktY21wLmh0bWwKaW5kZXggZjcyODUzM2Iz
ODE0YzE1OTM0ODQ4MGIyYWExZjI2ZWU2MDdhYWU3MS4uNDJmMGFjNjJiZTcyYTA3MTQ3NTM1NGRk
NjFhMWM2NDI1ZWViNTQ2ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvZmFjdG9yeS1jbXAuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9m
YWN0b3J5LWNtcC5odG1sCkBAIC00LDE0NyArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2Ny
aXB0aW9uKCJUZXN0IEluZGV4ZWREQiBrZXkgY29tcGFyaXNvbiB1c2luZyBJREJGYWN0b3J5LmNt
cCgpLiIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygp
OwotCi0gICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2YgaW5kZXhlZERCLmNtcCA9PT0gJ2Z1bmN0aW9u
JyIpOwotCi0gICAgdGVzdFZhbGlkS2V5cygpOwotICAgIHRlc3RJbnZhbGlkS2V5cygpOwotICAg
IHRlc3RJZGVudGljYWxLZXlzKCk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLWZ1bmN0aW9u
IHRlc3RWYWxpZEtleXMoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiY29tcGFyZSB2
YWxpZCBrZXlzIik7Ci0KLSAgICB2YXIga2V5cyA9IFsKLSAgICAgICAgIi1JbmZpbml0eSIsCi0g
ICAgICAgICItTnVtYmVyLk1BWF9WQUxVRSIsCi0gICAgICAgICItMSIsCi0gICAgICAgICItTnVt
YmVyLk1JTl9WQUxVRSIsCi0gICAgICAgICIwIiwKLSAgICAgICAgIk51bWJlci5NSU5fVkFMVUUi
LAotICAgICAgICAiMSIsCi0gICAgICAgICJOdW1iZXIuTUFYX1ZBTFVFIiwKLSAgICAgICAgIklu
ZmluaXR5IiwKLSAKLSAgICAgICAgIm5ldyBEYXRlKDApIiwKLSAgICAgICAgIm5ldyBEYXRlKDEw
MDApIiwKLSAgICAgICAgIm5ldyBEYXRlKDEzMTczOTk5MzEwMjMpIiwKLSAgICAgICAgCi0gICAg
ICAgICInJyIsCi0gICAgICAgICInXHgwMCciLAotICAgICAgICAiJ2EnIiwKLSAgICAgICAgIidh
YSciLAotICAgICAgICAiJ2InIiwKLSAgICAgICAgIidiYSciLAotCi0gICAgICAgICInXHhBMici
LCAvLyBVKzAwQTIgQ0VOVCBTSUdOCi0gICAgICAgICInXHU2QzM0JyIsIC8vIFUrNkMzNCBDSksg
VU5JRklFRCBJREVPR1JBUEggKHdhdGVyKQotICAgICAgICAiJ1x1RDgzNFx1REQxRSciLCAvLyBV
KzFEMTFFIE1VU0lDQUwgU1lNQk9MIEctQ0xFRiAoVVRGLTE2IHN1cnJvZ2F0ZSBwYWlyKQotICAg
ICAgICAiJ1x1RkZGRCciLCAvLyBVK0ZGRkQgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSCi0KLSAgICAg
ICAgIltdIiwKLQotICAgICAgICAiWy1JbmZpbml0eV0iLAotICAgICAgICAiWy1OdW1iZXIuTUFY
X1ZBTFVFXSIsCi0gICAgICAgICJbLTFdIiwKLSAgICAgICAgIlstTnVtYmVyLk1JTl9WQUxVRV0i
LAotICAgICAgICAiWzBdIiwKLSAgICAgICAgIltOdW1iZXIuTUlOX1ZBTFVFXSIsCi0gICAgICAg
ICJbMV0iLAotICAgICAgICAiW051bWJlci5NQVhfVkFMVUVdIiwKLSAgICAgICAgIltJbmZpbml0
eV0iLAotIAotICAgICAgICAiW25ldyBEYXRlKDApXSIsCi0gICAgICAgICJbbmV3IERhdGUoMTAw
MCldIiwKLSAgICAgICAgIltuZXcgRGF0ZSgxMzE3Mzk5OTMxMDIzKV0iLAotICAgICAgICAKLSAg
ICAgICAgIlsnJ10iLAotICAgICAgICAiWydceDAwJ10iLAotICAgICAgICAiWydhJ10iLAotICAg
ICAgICAiWydhYSddIiwKLSAgICAgICAgIlsnYiddIiwKLSAgICAgICAgIlsnYmEnXSIsCi0KLSAg
ICAgICAgIlsnXHhBMiddIiwgLy8gVSswMEEyIENFTlQgU0lHTgotICAgICAgICAiWydcdTZDMzQn
XSIsIC8vIFUrNkMzNCBDSksgVU5JRklFRCBJREVPR1JBUEggKHdhdGVyKQotICAgICAgICAiWydc
dUQ4MzRcdUREMUUnXSIsIC8vIFUrMUQxMUUgTVVTSUNBTCBTWU1CT0wgRy1DTEVGIChVVEYtMTYg
c3Vycm9nYXRlIHBhaXIpCi0gICAgICAgICJbJ1x1RkZGRCddIiwgLy8gVStGRkZEIFJFUExBQ0VN
RU5UIENIQVJBQ1RFUgotCi0gICAgICAgICJbW11dIiwKLSAgICAgICAgCi0gICAgICAgICJbW10s
IFtdXSIsCi0gICAgICAgICJbW10sIFtdLCBbXV0iLAotCi0gICAgICAgICJbW1tdXV0iLAotICAg
ICAgICAiW1tbW11dXV0iCi0gICAgXTsKLQotICAgIHZhciBpLCBrZXkxLCBrZXkyOwotICAgIGZv
ciAoaSA9IDA7IGkgPCBrZXlzLmxlbmd0aCAtIDE7IGkgKz0gMSkgewotICAgICAgICBrZXkxID0g
a2V5c1tpXTsKLSAgICAgICAga2V5MiA9IGtleXNbaSArIDFdOwotICAgICAgICBzaG91bGRCZVRy
dWUoImluZGV4ZWREQi5jbXAoIiArIGtleTEgKyAiLCIgKyBrZXkyICsgIikgPT09IC0xIik7Ci0g
ICAgICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXhlZERCLmNtcCgiICsga2V5MiArICIsIiArIGtleTEg
KyAiKSA9PT0gMSIpOwotICAgICAgICBzaG91bGRCZVRydWUoImluZGV4ZWREQi5jbXAoIiArIGtl
eTEgKyAiLCIgKyBrZXkxICsgIikgPT09IDAiKTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJpbmRl
eGVkREIuY21wKCIgKyBrZXkyICsgIiwiICsga2V5MiArICIpID09PSAwIik7Ci0gICAgfQotfQot
Ci1mdW5jdGlvbiB0ZXN0SW52YWxpZEtleXMoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1
ZygiY29tcGFyZSBpbnZhbGlkIGtleXMiKTsKLQotICAgIHZhciBpbnZhbGlkS2V5cyA9IFsKLSAg
ICAgICAgInZvaWQgMCIsIC8vIHVuZGVmaW5lZAotICAgICAgICAidHJ1ZSIsCi0gICAgICAgICJm
YWxzZSIsCi0gICAgICAgICJOYU4iLAotICAgICAgICAibmV3IERhdGUoTmFOKSIsCi0gICAgICAg
ICJudWxsIiwKLSAgICAgICAgInt9IiwKLSAgICAgICAgImZ1bmN0aW9uICgpIHt9IiwKLSAgICAg
ICAgIi9yZWdleC8iLAotICAgICAgICAic2VsZiIsCi0gICAgICAgICJzZWxmLmRvY3VtZW50IiwK
LSAgICAgICAgInNlbGYuZG9jdW1lbnQuYm9keSIKLSAgICBdOwotCi0gICAgdmFyIGksIGtleTEs
IGtleTI7Ci0gICAgZm9yIChpID0gMDsgaSA8IGludmFsaWRLZXlzLmxlbmd0aCAtIDE7IGkgKz0g
MSkgewotICAgICAgICBrZXkxID0gaW52YWxpZEtleXNbaV07Ci0gICAgICAgIGtleTIgPSBpbnZh
bGlkS2V5c1tpICsgMV07Ci0gICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4ZWRE
Qi5jbXAoIiArIGtleTEgKyAiLCAiICsga2V5MiArICIpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9u
LkRBVEFfRVJSIik7Ci0gICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4ZWREQi5j
bXAoIiArIGtleTIgKyAiLCAiICsga2V5MSArICIpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRB
VEFfRVJSIik7Ci0gICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4ZWREQi5jbXAo
IiArIGtleTEgKyAiLCAndmFsaWQnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIp
OwotICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJpbmRleGVkREIuY21wKCd2YWxpZCcs
ICIgKyBrZXkxICsgIikiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLSAgICAg
ICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXhlZERCLmNtcCgiICsga2V5MiArICIsICd2
YWxpZCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0gICAgICAgIGV2YWxB
bmRFeHBlY3RFeGNlcHRpb24oImluZGV4ZWREQi5jbXAoJ3ZhbGlkJywgIiArIGtleTIgKyAiKSIs
ICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotICAgIH0KLX0KLQotZnVuY3Rpb24g
dGVzdElkZW50aWNhbEtleXMoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiY29tcGFy
ZSBpZGVudGljYWwga2V5cyIpOwotCi0gICAgc2hvdWxkQmVUcnVlKCJpbmRleGVkREIuY21wKDAs
IC0wKSA9PT0gMCIpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL2ZhY3RvcnktY21wLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZmFjdG9yeS1k
ZWxldGVkYXRhYmFzZS1pbnRlcmFjdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2ZhY3RvcnktZGVsZXRlZGF0YWJhc2UtaW50ZXJhY3Rpb25zLmh0bWwKaW5kZXggZTVj
MGRjNjFiZjZjYjBkMzU1YzEyMmU5YzA3OWQxZTBhZWY4YzlhNS4uZjBlZjQ3OGRjZGRmNGNjOWM1
Y2YzNjA0ZDc5OGMwMTE4OWFjMTE2YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvZmFjdG9yeS1kZWxldGVkYXRhYmFzZS1pbnRlcmFjdGlvbnMuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9mYWN0b3J5LWRlbGV0ZWRhdGFiYXNlLWludGVy
YWN0aW9ucy5odG1sCkBAIC00LDE5MSArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3No
YXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0
aW9uKCJUZXN0IHRoZSBkZWxldGVEYXRhYmFzZSBjYWxsIGFuZCBpdHMgaW50ZXJhY3Rpb24gd2l0
aCBvcGVuL3NldFZlcnNpb24iKTsKLQotZnVuY3Rpb24gQ29ubmVjdGlvbihpZCkgewotICAgIGlk
ID0gU3RyaW5nKGlkKTsKLSAgICB2YXIgdGhhdCA9IHRoaXM7Ci0gICAgdGhpcy5vcGVuID0gZnVu
Y3Rpb24ob3B0cykgewotICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBp
ZCArICIub3BlbiciKSk7Ci0gICAgICAgIHZhciByZXEgPSBpbmRleGVkREIub3BlbihzZWxmLmRi
bmFtZSk7Ci0gICAgICAgIHJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0g
ICAgICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZSkgewotICAgICAgICAgICAgdGhhdC5o
YW5kbGUgPSBlLnRhcmdldC5yZXN1bHQ7Ci0gICAgICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZh
bEFuZExvZygiJyIgKyBpZCArICIub3Blbi5vbnN1Y2Nlc3MnIikpOwotICAgICAgICAgICAgdGhh
dC5oYW5kbGUub252ZXJzaW9uY2hhbmdlID0gZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAg
IHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5vbnZlcnNpb25jaGFuZ2Un
IikpOwotICAgICAgICAgICAgICAgIGlmIChvcHRzICYmIG9wdHMub252ZXJzaW9uKSB7IG9wdHMu
b252ZXJzaW9uLmNhbGwodGhhdCk7IH0KLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBpZiAo
b3B0cyAmJiBvcHRzLm9uc3VjY2VzcykgeyBvcHRzLm9uc3VjY2Vzcy5jYWxsKHRoYXQpOyB9Ci0g
ICAgICAgIH07Ci0gICAgfTsKLQotICAgIHRoaXMuY2xvc2UgPSBmdW5jdGlvbigpIHsKLSAgICAg
ICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLmNsb3NlJyIpKTsKLSAg
ICAgICAgdGhpcy5oYW5kbGUuY2xvc2UoKTsKLSAgICB9OwotCi0gICAgdGhpcy5zZXRWZXJzaW9u
ID0gZnVuY3Rpb24ob3B0cykgewotICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygi
JyIgKyBpZCArICIuc2V0VmVyc2lvbiciKSk7Ci0gICAgICAgIHZhciByZXEgPSB0aGlzLmhhbmRs
ZS5zZXRWZXJzaW9uKFN0cmluZyhzZWxmLnZlcisrKSk7Ci0gICAgICAgIHJlcS5vbmFib3J0ID0g
ZnVuY3Rpb24gKGUpIHsKLSAgICAgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCIn
IiArIGlkICsgIi5zZXRWZXJzaW9uLm9uYWJvcnQnIikpOwotICAgICAgICAgICAgaWYgKG9wdHMg
JiYgb3B0cy5vbmFib3J0KSB7IG9wdHMub25hYm9ydC5jYWxsKHRoYXQpOyB9Ci0gICAgICAgIH07
Ci0gICAgICAgIHJlcS5vbmJsb2NrZWQgPSBmdW5jdGlvbiAoZSkgewotICAgICAgICAgICAgc2Vs
Zi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLnNldFZlcnNpb24ub25ibG9ja2Vk
JyIpKTsKLSAgICAgICAgICAgIGlmIChvcHRzICYmIG9wdHMub25ibG9ja2VkKSB7IG9wdHMub25i
bG9ja2VkLmNhbGwodGhhdCk7IH0KLSAgICAgICAgfTsKLSAgICAgICAgcmVxLm9uc3VjY2VzcyA9
IGZ1bmN0aW9uIChlKSB7Ci0gICAgICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygi
JyIgKyBpZCArICIuc2V0VmVyc2lvbi5vbnN1Y2Nlc3MnIikpOwotICAgICAgICAgICAgaWYgKHRo
YXQuaGFuZGxlLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoInRlc3Qtc3RvcmUiICsgc2VsZi52
ZXIpKSB7Ci0gICAgICAgICAgICAgICAgdGhhdC5oYW5kbGUuZGVsZXRlT2JqZWN0U3RvcmUoInRl
c3Qtc3RvcmUiICsgc2VsZi52ZXIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdmFyIHN0
b3JlID0gdGhhdC5oYW5kbGUuY3JlYXRlT2JqZWN0U3RvcmUoInRlc3Qtc3RvcmUiICsgc2VsZi52
ZXIpOwotICAgICAgICAgICAgdmFyIGNvdW50ID0gMDsKLSAgICAgICAgICAgIGRvX2FzeW5jX3B1
dHMoKTsgLy8gS2VlcCB0aGlzIHRyYW5zYWN0aW9uIHJ1bm5pbmcgZm9yIGEgd2hpbGUKLSAgICAg
ICAgICAgIGZ1bmN0aW9uIGRvX2FzeW5jX3B1dHMoKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHJl
cSA9IHN0b3JlLnB1dChjb3VudCwgY291bnQpOwotICAgICAgICAgICAgICAgIHJlcS5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgICAgICAgICAgcmVxLm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uIChlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgrK2NvdW50IDwgMTAp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRvX2FzeW5jX3B1dHMoKTsKLSAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RlcHMucHVz
aChldmFsQW5kTG9nKCInIiArIGlkICsgIi5zZXRWZXJzaW9uLnRyYW5zYWN0aW9uLWNvbXBsZXRl
JyIpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRzICYmIG9wdHMub25zdWNjZXNz
KSB7IG9wdHMub25zdWNjZXNzLmNhbGwodGhhdCk7IH0KLSAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0gICAgICAgIHJl
cS5vbmVycm9yID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAgICAgIHNlbGYuc3RlcHMucHVzaChl
dmFsQW5kTG9nKCInIiArIGlkICsgIi5zZXRWZXJzaW9uLm9uZXJyb3InIikpOwotICAgICAgICAg
ICAgaWYgKG9wdHMgJiYgb3B0cy5vbmVycm9yKSB7IG9wdHMub25lcnJvci5jYWxsKHRoYXQpOyB9
Ci0gICAgICAgIH07Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24gZGVsZXRlRGF0YWJhc2UoaWQsIG5h
bWUsIG9wdHMpIHsKLSAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJ2RlbGV0ZURhdGFi
YXNlKCIgKyBpZCArICIpJyIpKTsKLSAgICB2YXIgcmVxID0gaW5kZXhlZERCLmRlbGV0ZURhdGFi
YXNlKG5hbWUpOwotICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZSkgewotICAgICAgICBz
ZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJ2RlbGV0ZURhdGFiYXNlKCIgKyBpZCArICIpLm9u
c3VjY2VzcyciKSk7Ci0gICAgICAgIGlmIChvcHRzICYmIG9wdHMub25zdWNjZXNzKSB7IG9wdHMu
b25zdWNjZXNzLmNhbGwobnVsbCk7IH0KLSAgICB9OwotICAgIHJlcS5vbmVycm9yID0gZnVuY3Rp
b24gKGUpIHsKLSAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIidkZWxldGVEYXRh
YmFzZSgiICsgaWQgKyAiKS5vbmVycm9yJyIpKTsKLSAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5v
bmVycm9yKSB7IG9wdHMub25lcnJvci5jYWxsKG51bGwpOyB9Ci0gICAgfTsKLSAgICByZXEub25i
bG9ja2VkID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRM
b2coIidkZWxldGVEYXRhYmFzZSgiICsgaWQgKyAiKS5vbmJsb2NrZWQnIikpOwotICAgICAgICBp
ZiAob3B0cyAmJiBvcHRzLm9uYmxvY2tlZCkgeyBvcHRzLm9uYmxvY2tlZC5jYWxsKG51bGwpOyB9
Ci0gICAgfTsKLX0KLQotLy8gcnVuIGEgc2VyaWVzIG9mIHN0ZXBzIHRoYXQgdGFrZSBhIGNvbnRp
bnVhdGlvbiBmdW5jdGlvbgotZnVuY3Rpb24gcnVuU3RlcHMoY29tbWFuZHMpIHsKLSAgICBpZiAo
Y29tbWFuZHMubGVuZ3RoKSB7Ci0gICAgICAgIHZhciBjb21tYW5kID0gY29tbWFuZHMuc2hpZnQo
KTsKLSAgICAgICAgY29tbWFuZChmdW5jdGlvbigpIHsgcnVuU3RlcHMoY29tbWFuZHMpOyB9KTsK
LSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMo
KTsKLSAgICB0ZXN0MSgpOwotfQotCi1mdW5jdGlvbiB0ZXN0MSgpIHsKLSAgICBkZWJ1ZygiIik7
Ci0gICAgZGVidWcoIlRFU1Q6IGRlbGV0ZURhdGFiYXNlIGJsb2NrZWQgb24gb3BlbiBoYW5kbGVz
Iik7Ci0gICAgZXZhbEFuZExvZygic2VsZi5kYm5hbWUgPSAndGVzdDEnOyBzZWxmLnZlciA9IDE7
IHNlbGYuc3RlcHMgPSBbXSIpOwotICAgIHZhciBoID0gbmV3IENvbm5lY3Rpb24oImgiKTsKLSAg
ICBydW5TdGVwcyhbZnVuY3Rpb24oZG9OZXh0KSB7IGgub3Blbih7b25zdWNjZXNzOiBkb05leHQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9udmVyc2lvbjogZnVuY3Rpb24oKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiICAgIGggY2xvc2lu
ZywgYnV0IG5vdCBpbW1lZGlhdGVseSIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgaC5jbG9zZSgpOyB9LCAwKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfX0pOyB9LAotICAgICAgICBmdW5jdGlvbihkb05leHQp
IHsgZGVsZXRlRGF0YWJhc2UoIiIsIHNlbGYuZGJuYW1lLCB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICBvbnN1Y2Nlc3M6IGZpbmlzaFRlc3R9KTsgfSwKLSAgICAgICAgXSk7Ci0gICAgZnVu
Y3Rpb24gZmluaXNoVGVzdCgpIHsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzZWxm
LnN0ZXBzLnRvU3RyaW5nKCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJoLm9w
ZW4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoLm9wZW4ub25zdWNjZXNzIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVsZXRlRGF0YWJhc2UoKSIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImgub252ZXJzaW9uY2hhbmdlIiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiZGVsZXRlRGF0YWJhc2UoKS5vbmJsb2NrZWQiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoLmNsb3NlIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiZGVsZXRlRGF0YWJhc2UoKS5vbnN1Y2Nlc3MiCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXS50b1N0cmluZygpKTsKLSAgICAgICAgdGVzdDIoKTsKLSAgICB9
Ci19Ci0KLWZ1bmN0aW9uIHRlc3QyKCkgewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiVEVT
VDogZGVsZXRlRGF0YWJhc2Ugbm90IGJsb2NrZWQgd2hlbiBoYW5kbGVzIGNsb3NlIGltbWVkaWF0
ZWx5Iik7Ci0gICAgZXZhbEFuZExvZygic2VsZi5kYm5hbWUgPSAndGVzdDInOyBzZWxmLnZlciA9
IDE7IHNlbGYuc3RlcHMgPSBbXSIpOwotICAgIHZhciBoID0gbmV3IENvbm5lY3Rpb24oImgiKTsK
LSAgICBydW5TdGVwcyhbZnVuY3Rpb24oZG9OZXh0KSB7IGgub3Blbih7b25zdWNjZXNzOiBkb05l
eHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbnZlcnNpb246
IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRlYnVnKCIgICAgaCBjbG9zaW5nIGltbWVkaWF0ZWx5Iik7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaC5jbG9zZSgpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0pOyB9LAotICAgICAgICBmdW5jdGlvbihkb05l
eHQpIHsgZGVsZXRlRGF0YWJhc2UoIiIsIHNlbGYuZGJuYW1lLCB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICBvbnN1Y2Nlc3M6IGZpbmlzaFRlc3R9KTsgfSwKLSAgICAgICAgXSk7Ci0gICAg
ZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKLSAgICAgICAgZGVidWcoIk5PVEU6IFdpbGwgRkFJTCB3
aXRoIGV4dHJhIGJvZ3VzIGRlbGV0ZURhdGFiYXNlKCkub25ibG9ja2VkIHN0ZXA7IGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTEzMCIpOwotICAgICAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoInNlbGYuc3RlcHMudG9TdHJpbmcoKSIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbImgub3BlbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Imgub3Blbi5vbnN1Y2Nlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWxl
dGVEYXRhYmFzZSgpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaC5vbnZlcnNp
b25jaGFuZ2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoLmNsb3NlIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVsZXRlRGF0YWJhc2UoKS5vbnN1Y2Nlc3Mi
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS50b1N0cmluZygpKTsKLSAgICAgICAg
dGVzdDMoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3QzKCkgewotICAgIGRlYnVnKCIiKTsK
LSAgICBkZWJ1ZygiVEVTVDogZGVsZXRlRGF0YWJhc2UgaXMgZGVsYXllZCBpZiBhIFZFUlNJT05f
Q0hBTkdFIHRyYW5zYWN0aW9uIGlzIHJ1bm5pbmciKTsKLSAgICBldmFsQW5kTG9nKCJzZWxmLmRi
bmFtZSA9ICd0ZXN0Myc7IHNlbGYudmVyID0gMTsgc2VsZi5zdGVwcyA9IFtdIik7Ci0gICAgdmFy
IGggPSBuZXcgQ29ubmVjdGlvbigiaCIpOwotICAgIHJ1blN0ZXBzKFtmdW5jdGlvbihkb05leHQp
IHsgaC5vcGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb252ZXJzaW9uOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRlYnVnKCIgICAgaCBjbG9zaW5nLCBidXQgbm90IGltbWVkaWF0ZWx5Iik7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBoLmNsb3NlKCk7IH0sIDApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fSk7
IH0sCi0gICAgICAgICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBoLnNldFZlcnNpb24oKTsgZG9O
ZXh0KCk7IH0sCi0gICAgICAgICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBkZWxldGVEYXRhYmFz
ZSgiIiwgc2VsZi5kYm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtvbnN1
Y2Nlc3M6IGZpbmlzaFRlc3R9KTsgfSwKLSAgICAgICAgICAgICAgXSk7Ci0KLSAgICBmdW5jdGlv
biBmaW5pc2hUZXN0KCkgewotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNlbGYuc3Rl
cHMudG9TdHJpbmcoKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImgub3BlbiIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgub3Blbi5vbnN1Y2Nlc3MiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoLnNldFZlcnNpb24iLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJkZWxldGVEYXRhYmFzZSgpIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiaC5zZXRWZXJzaW9uLm9uc3VjY2VzcyIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImguc2V0VmVyc2lvbi50cmFuc2FjdGlvbi1jb21wbGV0ZSIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImgub252ZXJzaW9uY2hhbmdlIiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiZGVsZXRlRGF0YWJhc2UoKS5vbmJsb2NrZWQiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoLmNsb3NlIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiZGVsZXRlRGF0YWJhc2UoKS5vbnN1Y2Nlc3MiCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXS50b1N0cmluZygpKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7
Ci0gICAgfQotfQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9mYWN0b3J5LWRlbGV0ZWRhdGFiYXNlLWludGVyYWN0aW9ucy5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2ZhY3RvcnktZGVsZXRlZGF0YWJhc2UuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2ZhY3RvcnktZGVsZXRlZGF0YWJhc2UuaHRtbAppbmRleCAzZDMzMjNjNDkyODI2
MWRjZDk0YzQyNmNiNDgwNTA1YTQ2ZWNhZDExLi5kMGM4MjZiZmM1YjhjMjQ5NTRjOGQwZWFiOGU5
YjNkMGY3ZjIxNjVjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9m
YWN0b3J5LWRlbGV0ZWRhdGFiYXNlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvZmFjdG9yeS1kZWxldGVkYXRhYmFzZS5odG1sCkBAIC00LDk1ICs0LDcgQEAKIDxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5Pgot
PHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mgd2Via2l0SW5kZXhlZERC
LmRlbGV0ZURhdGFiYXNlKCkuIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZl
bmRvclByZWZpeGVzKCk7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVu
KCdkYXRhYmFzZS10by1kZWxldGUnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc3RhcnRT
ZXRWZXJzaW9uOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotfQotCi1mdW5jdGlvbiBzdGFydFNldFZlcnNpb24oKQotewotICAgIGRiID0gZXZhbEFuZExv
ZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZGVsZXRlRXhpc3Rpbmc7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKLXsKLSAgICBzZWxmLnRy
YW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hv
dWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwotCi0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJz
dG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOwotCi0gICAg
c2VsZi5pbmRleCA9IGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleE5hbWUnLCAn
JykiKTsKLSAgICBzaG91bGRCZVRydWUoInN0b3JlLmluZGV4TmFtZXMuY29udGFpbnMoJ2luZGV4
TmFtZScpIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKCd2YWx1ZScs
ICdrZXknKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBnZXRWYWx1ZTsKLX0KLQotZnVuY3Rpb24gZ2V0VmFs
dWUoKQotewotICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygiZGIudHJhbnNhY3Rpb24oJ3N0
b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgdHJhbnNhY3Rpb24u
b25hYm9ydCA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHZhciBzdG9yZSA9IGV2YWxB
bmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0K
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuZ2V0KCdrZXknKSIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gYWRkSW5kZXg7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGFkZEluZGV4KCkKLXsKLSAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAidmFsdWUiKTsKLQotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVEYXRhYmFzZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZGVsZXRlRGF0YWJhc2Uo
KQotewotICAgIGRiLm9udmVyc2lvbmNoYW5nZSA9IGZ1bmN0aW9uKCkgeyBkYi5jbG9zZSgpOyB9
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIuZGVsZXRlRGF0
YWJhc2UoJ2RhdGFiYXNlLXRvLWRlbGV0ZScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBy
ZW9wZW5EYXRhYmFzZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLX0KLQotZnVuY3Rpb24gcmVvcGVuRGF0YWJhc2UoKQotewotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignZGF0YWJhc2UtdG8tZGVsZXRlJykiKTsKLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IHN0YXJ0U2V0VmVyc2lvbkFnYWluOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzdGFydFNldFZl
cnNpb25BZ2FpbigpCi17Ci0gICAgcmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3
IHZlcnNpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdmVyaWZ5Tm90Rm91bmQ7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0
aW9uIHZlcmlmeU5vdEZvdW5kKCkKLXsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1l
cy5sZW5ndGgiLCAiMCIpOwotCi0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXRlc3QoKTsKLTwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9mYWN0b3J5LWRlbGV0ZWRhdGFiYXNlLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtY291bnQuaHRtbCBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWNvdW50Lmh0bWwKaW5kZXggZjMyYWUxMzZhZTZmNTQ3MDY3
OTE2OGU4MmFlNmQ1MjdlMDJiNDg2Yy4uZjgwMTE4ZTBjZjJkZGM5MGE3NmExNzlkMmRjODBjMTcz
YTQ4NzNhYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgt
Y291bnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1jb3Vu
dC5odG1sCkBAIC00LDE1OSArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5q
cyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJU
ZXN0IEluZGV4ZWREQidzIElEQkluZGV4LmNvdW50KCkuIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQot
ewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImluZGV4ZWREQi5vcGVuKCdpbmRleC1jb3VudCcpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlv
bigpIHsKLSAgICAgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKLSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJz
aW9uJykiKTsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcHJlcGFyZURhdGFiYXNlOwotICAgIH07
Ci19Ci0KLWZ1bmN0aW9uIHByZXBhcmVEYXRhYmFzZSgpCi17Ci0gICAgZGVidWcoIiIpOwotICAg
IGRlYnVnKCJwcmVwYXJpbmcgZGF0YWJhc2UiKTsKLSAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExv
ZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFu
cyAhPT0gbnVsbCIpOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIHN0
b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1l
JywgbnVsbCkiKTsKLQotICAgIHNlbGYuaW5kZXggPSBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJ
bmRleCgnaW5kZXhOYW1lJywgJycpIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJzdG9yZS5pbmRleE5h
bWVzLmNvbnRhaW5zKCdpbmRleE5hbWUnKSIpOwotCi0gICAgZGVidWcoImFkZGluZyAwIC4uLiA5
OSIpOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKLSAgICAgICAgcmVxdWVz
dCA9IHN0b3JlLmFkZChpLCBpKTsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci0gICAgfQotICAgIHRyYW5zLm9uY29tcGxldGUgPSB2ZXJpZnlDb3Vu
dDsKLX0KLQotZnVuY3Rpb24gdmVyaWZ5Q291bnQoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBk
ZWJ1ZygidmVyaWZ5aW5nIGNvdW50IHdpdGhvdXQgcmFuZ2UiKTsKLSAgICB0cmFucyA9IGV2YWxB
bmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlTmFtZScsIElEQlRyYW5zYWN0aW9u
LlJFQURfT05MWSkiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9IG51bGwiKTsKLSAgICB0
cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21w
bGV0ZSA9IHZlcmlmeUNvdW50V2l0aFJhbmdlOwotCi0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJz
dG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotICAgIHNob3VsZEJlVHJ1
ZSgic3RvcmUgIT0gbnVsbCIpOwotICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBzdG9y
ZS5pbmRleCgnaW5kZXhOYW1lJykiKTsKLSAgICBzaG91bGRCZVRydWUoImluZGV4ICE9IG51bGwi
KTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXguY291bnQoKSIp
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICBzaG91bGRCZVRydWUoInR5
cGVvZiByZXF1ZXN0LnJlc3VsdCA9PSAnbnVtYmVyJyIpOwotICAgICAgICAgc2hvdWxkQmUoInJl
cXVlc3QucmVzdWx0IiwgIjEwMCIpOwotICAgICAgICAgLy8gbGV0IHRoZSB0cmFuc2FjdGlvbiBj
b21wbGV0ZQotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIHZlcmlmeUNvdW50V2l0aFJhbmdlKCkKLXsK
LSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInZlcmlmeWluZyBjb3VudCB3aXRoIHJhbmdlIik7
Ci0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZU5h
bWUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFu
cyAhPSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNr
OwotICAgIHRyYW5zLm9uY29tcGxldGUgPSB2ZXJpZnlDb3VudFdpdGhLZXk7Ci0KLSAgICBzdG9y
ZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7
Ci0gICAgc2hvdWxkQmVUcnVlKCJzdG9yZSAhPSBudWxsIik7Ci0gICAgc3RvcmUgPSBldmFsQW5k
TG9nKCJpbmRleCA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKS5pbmRleCgnaW5kZXhO
YW1lJykiKTsKLSAgICBzaG91bGRCZVRydWUoImluZGV4ICE9IG51bGwiKTsKLQotICAgIHZhciB0
ZXN0cyA9IFsKLSAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDk5
LCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogMTAwIH0sCi0gICAgICAgIHsgbG93ZXI6IDAs
IGxvd2VyT3BlbjogdHJ1ZSwgdXBwZXI6IDk5LCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDog
OTkgfSwKLSAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDk5LCB1
cHBlck9wZW46IHRydWUsIGV4cGVjdGVkOiA5OSB9LAotICAgICAgICB7IGxvd2VyOiAwLCBsb3dl
ck9wZW46IHRydWUsIHVwcGVyOiA5OSwgdXBwZXJPcGVuOiB0cnVlLCBleHBlY3RlZDogOTggfSwK
LSAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDEwMCwgdXBwZXJP
cGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDEwMCB9LAotICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9w
ZW46IGZhbHNlLCB1cHBlcjogMTAwLCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogMTAwIH0s
Ci0gICAgICAgIHsgbG93ZXI6IDEwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogMTAwLCB1cHBl
ck9wZW46IGZhbHNlLCBleHBlY3RlZDogOTAgfSwKLSAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJP
cGVuOiBmYWxzZSwgdXBwZXI6IDAsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiAxIH0sCi0g
ICAgICAgIHsgbG93ZXI6IDUwMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDUwMCwgdXBwZXJP
cGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDAgfQotICAgIF07Ci0KLSAgICBmdW5jdGlvbiBuZXh0VGVz
dCgpIHsKLSAgICAgICAgZGVidWcoIiIpOwotICAgICAgICBldmFsQW5kTG9nKCJ0ZXN0ID0gIiAr
IEpTT04uc3RyaW5naWZ5KHRlc3RzLnNoaWZ0KCkpKTsKLSAgICAgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBpbmRleC5jb3VudChJREJLZXlSYW5nZS5ib3VuZCh0ZXN0Lmxvd2Vy
LCB0ZXN0LnVwcGVyLCB0ZXN0Lmxvd2VyT3BlbiwgdGVzdC51cHBlck9wZW4pKSIpOwotICAgICAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICBzaG91bGRCZVRydWUo
InR5cGVvZiByZXF1ZXN0LnJlc3VsdCA9PSAnbnVtYmVyJyIpOwotICAgICAgICAgICAgIHNob3Vs
ZEJlKCJyZXF1ZXN0LnJlc3VsdCIsIFN0cmluZyh0ZXN0LmV4cGVjdGVkKSk7Ci0KLSAgICAgICAg
ICAgICBpZiAodGVzdHMubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgIG5leHRUZXN0KCk7Ci0g
ICAgICAgICAgICAgfQotICAgICAgICAgICAgIC8vIG90aGVyd2lzZSBsZXQgdGhlIHRyYW5zYWN0
aW9uIGNvbXBsZXRlCi0gICAgICAgIH07Ci0gICAgfQotCi0gICAgbmV4dFRlc3QoKTsKLX0KLQot
ZnVuY3Rpb24gdmVyaWZ5Q291bnRXaXRoS2V5KCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVi
dWcoInZlcmlmeWluZyBjb3VudCB3aXRoIGtleSIpOwotICAgIHRyYW5zID0gZXZhbEFuZExvZygi
dHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9P
TkxZKSIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT0gbnVsbCIpOwotICAgIHRyYW5zLm9u
YWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0g
ZmluaXNoSlNUZXN0OwotCi0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9i
amVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotICAgIHNob3VsZEJlVHJ1ZSgic3RvcmUgIT0gbnVs
bCIpOwotICAgIHN0b3JlID0gZXZhbEFuZExvZygiaW5kZXggPSB0cmFucy5vYmplY3RTdG9yZSgn
c3RvcmVOYW1lJykuaW5kZXgoJ2luZGV4TmFtZScpIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJpbmRl
eCAhPSBudWxsIik7Ci0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJpbmRleC5jb3VudChO
YU4pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0gICAgZXZhbEFuZEV4cGVj
dEV4Y2VwdGlvbigiaW5kZXguY291bnQoe30pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFf
RVJSIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXguY291bnQoL3JlZ2V4Lyki
LCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLQotICAgIHZhciB0ZXN0cyA9IFsK
LSAgICAgICAgeyBrZXk6IDAsIGV4cGVjdGVkOiAxIH0sCi0gICAgICAgIHsga2V5OiAxMDAsIGV4
cGVjdGVkOiAwIH0sCi0gICAgICAgIHsga2V5OiBudWxsLCBleHBlY3RlZDogMTAwIH0KLSAgICBd
OwotCi0gICAgZnVuY3Rpb24gbmV4dFRlc3QoKSB7Ci0gICAgICAgIGRlYnVnKCIiKTsKLSAgICAg
ICAgZXZhbEFuZExvZygidGVzdCA9ICIgKyBKU09OLnN0cmluZ2lmeSh0ZXN0cy5zaGlmdCgpKSk7
Ci0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXguY291bnQodGVz
dC5rZXkpIik7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAgICAg
ICAgIHNob3VsZEJlVHJ1ZSgidHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXInIik7Ci0g
ICAgICAgICAgICAgc2hvdWxkQmUoInJlcXVlc3QucmVzdWx0IiwgU3RyaW5nKHRlc3QuZXhwZWN0
ZWQpKTsKLQotICAgICAgICAgICAgIGlmICh0ZXN0cy5sZW5ndGgpIHsKLSAgICAgICAgICAgICAg
ICAgbmV4dFRlc3QoKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgLy8gb3RoZXJ3aXNl
IGxldCB0aGUgdHJhbnNhY3Rpb24gY29tcGxldGUKLSAgICAgICAgfTsKLSAgICB9Ci0KLSAgICBu
ZXh0VGVzdCgpOwotfQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy9pbmRleC1jb3VudC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWN1cnNvci5o
dG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtY3Vyc29yLmh0bWwKaW5k
ZXggMzBhMTYwNzMwOWE4Yzc1NWM3OGRhMzNhY2RmNzFiODk4YWQ2ZTJiMy4uYzlkOTQ0NDY5Nzc2
OTIzMzdiYWI4MjNkYTY3YTFhNzliMTZkOWY1NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvaW5kZXgtY3Vyc29yLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvaW5kZXgtY3Vyc29yLmh0bWwKQEAgLTQsMjU0ICs0LDcgQEAKIDxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNj
cmlwdD4gCi0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIHdlYmtpdElEQkluZGV4Lm9w
ZW5DdXJzb3IgKyB0aGUgY3Vyc29yIGl0IHByb2R1Y2VzIGluIGRlcHRoLiIpOwotIAotLy8gSW4g
b3JkZXIgb2YgaG93IGl0IHNob3VsZCBiZSBzb3J0ZWQgYnkgSW5kZXhlZERCLgotc2VsZi50ZXN0
RGF0YSA9IFsKLSAgICAxLAotICAgIDEsCi0gICAgMy4xNDE1OSwKLSAgICAzLjE0MTU5LAotICAg
IDEwLAotICAgIC8vIEZJWE1FOiBEYXRlcy4KLSAgICAiQSBiaWcgc3RyaW5nIiwKLSAgICAidGhl
IEJJR0VTVCBzdHJpbmciLAotICAgICJ0aGUgQklHRVNUIHN0cmluZyIKLV07Ci0gCi1mdW5jdGlv
biBvcGVuRGF0YWJhc2UoKQotewotICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5v
cGVuKCdpbmRleC1jdXJzb3InKSIpOwotICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9u
OwotICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0gCi1m
dW5jdGlvbiBzZXRWZXJzaW9uKCkKLXsKLSAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBl
dmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJkYi5zZXRW
ZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4
aXN0aW5nOwotICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19
Ci0KLWZ1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKLXsKLSAgICBzZWxmLnRyYW5zID0gZXZhbEFu
ZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0
cmFucyAhPT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxs
YmFjazsKLQotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBzZWxmLm9iamVj
dFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3NvbWVPYmplY3RTdG9y
ZScpIik7Ci0gICAgc2VsZi5pbmRleE9iamVjdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmNy
ZWF0ZUluZGV4KCdzb21lSW5kZXgnLCAneCcpIik7Ci0gICAgc2VsZi5uZXh0VG9BZGQgPSAwOwot
ICAgIGFkZERhdGEoKTsKLX0KLQotZnVuY3Rpb24gYWRkRGF0YSgpCi17Ci0gICAgcmVzdWx0ID0g
ZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKHsneCc6IHRlc3REYXRhW25leHRUb0FkZF19LCBu
ZXh0VG9BZGQpIik7Ci0gICAgcmVzdWx0Lm9uc3VjY2VzcyA9ICsrc2VsZi5uZXh0VG9BZGQgPCB0
ZXN0RGF0YS5sZW5ndGggPyBhZGREYXRhIDogc2NoZWR1bGVUZXN0czsKLSAgICByZXN1bHQub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzY2hlZHVsZVRl
c3RzKCkKLXsKLSAgICBkZWJ1ZygiU2NoZWR1bGluZyB0ZXN0cy4uLiIpOwotICAgIHNlbGYuc2No
ZWR1bGVkVGVzdHMgPSBbXTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRlc3REYXRhLmxlbmd0
aDsgKytpKSB7Ci0gICAgICAgIC8qIGxlZnQgYm91bmQsIGlzIG9wZW4sIHJpZ2h0IGJvdW5kLCBp
cyBvcGVuLCBhc2NlbmRpbmcgKi8KLSAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwg
dHJ1ZSwgbnVsbCwgbnVsbCwgdHJ1ZV0pOwotICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0
KFtpLCBmYWxzZSwgbnVsbCwgbnVsbCwgdHJ1ZV0pOwotICAgICAgICBzY2hlZHVsZWRUZXN0cy51
bnNoaWZ0KFtudWxsLCBudWxsLCBpLCB0cnVlLCB0cnVlXSk7Ci0gICAgICAgIHNjaGVkdWxlZFRl
c3RzLnVuc2hpZnQoW251bGwsIG51bGwsIGksIGZhbHNlLCB0cnVlXSk7Ci0gICAgICAgIHNjaGVk
dWxlZFRlc3RzLnVuc2hpZnQoW2ksIHRydWUsIG51bGwsIG51bGwsIGZhbHNlXSk7Ci0gICAgICAg
IHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBudWxsLCBudWxsLCBmYWxzZV0pOwot
ICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtudWxsLCBudWxsLCBpLCB0cnVlLCBmYWxz
ZV0pOwotICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtudWxsLCBudWxsLCBpLCBmYWxz
ZSwgZmFsc2VdKTsKLSAgICAgICAgZm9yICh2YXIgaiA9IDY7IGogPCB0ZXN0RGF0YS5sZW5ndGg7
ICsraikgewotICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwgaiwg
dHJ1ZSwgdHJ1ZV0pOwotICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1
ZSwgaiwgZmFsc2UsIHRydWVdKTsKLSAgICAgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQo
W2ksIGZhbHNlLCBqLCB0cnVlLCB0cnVlXSk7Ci0gICAgICAgICAgICBzY2hlZHVsZWRUZXN0cy51
bnNoaWZ0KFtpLCBmYWxzZSwgaiwgZmFsc2UsIHRydWVdKTsKLSAgICAgICAgICAgIHNjaGVkdWxl
ZFRlc3RzLnVuc2hpZnQoW2ksIHRydWUsIGosIHRydWUsIGZhbHNlXSk7Ci0gICAgICAgICAgICBz
Y2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCB0cnVlLCBqLCBmYWxzZSwgZmFsc2VdKTsKLSAgICAg
ICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBqLCB0cnVlLCBmYWxzZV0p
OwotICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgZmFsc2UsIGosIGZhbHNl
LCBmYWxzZV0pOwotICAgICAgICB9Ci0gICAgfQotIAotICAgIGRlYnVnKCJSdW5uaW5nIHRlc3Rz
Li4uIik7Ci0gICAgcnVuTmV4dFRlc3QoKTsKLX0KLSAKLWZ1bmN0aW9uIHJ1bk5leHRUZXN0KCkK
LXsKLSAgICBpZiAoIXNjaGVkdWxlZFRlc3RzLmxlbmd0aCkgewotICAgICAgICB0ZXN0TnVsbEtl
eVJhbmdlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gCi0gICAgdmFyIHRlc3QgPSBzY2hl
ZHVsZWRUZXN0cy5wb3AoKTsKLSAgICBzZWxmLmxvd2VyID0gdGVzdFswXTsKLSAgICBzZWxmLmxv
d2VySXNPcGVuID0gdGVzdFsxXTsKLSAgICBzZWxmLnVwcGVyID0gdGVzdFsyXTsKLSAgICBzZWxm
LnVwcGVySXNPcGVuID0gdGVzdFszXTsKLSAgICBzZWxmLmFzY2VuZGluZyA9IHRlc3RbNF07Ci0K
LSAgICBzdHIgPSAiTmV4dCB0ZXN0OiAiOwotICAgIGlmIChsb3dlciAhPT0gbnVsbCkgewotICAg
ICAgICBzdHIgKz0gImxvd2VyICI7Ci0gICAgICAgIGlmIChsb3dlcklzT3BlbikKLSAgICAgICAg
ICAgIHN0ciArPSAib3BlbiAiOwotICAgICAgICBzdHIgKz0gImJvdW5kIGlzICIgKyBsb3dlciAr
ICI7ICI7Ci0gICAgfQotICAgIGlmICh1cHBlciAhPT0gbnVsbCkgewotICAgICAgICBzdHIgKz0g
InVwcGVyICI7Ci0gICAgICAgIGlmICh1cHBlcklzT3BlbikKLSAgICAgICAgICAgIHN0ciArPSAi
b3BlbiAiOwotICAgICAgICBzdHIgKz0gImJvdW5kIGlzICIgKyB1cHBlciArICI7ICI7Ci0gICAg
fQotICAgIGlmIChhc2NlbmRpbmcpCi0gICAgICAgIHN0ciArPSAic29ydGVkIGFzY2VuZGluZy4i
OwotICAgIGVsc2UKLSAgICAgICAgc3RyICs9ICJzb3J0ZWQgZGVzY2VuZGluZy4iOwotCi0gICAg
ZGVidWcoIiIpOwotICAgIGRlYnVnKHN0cik7Ci0KLSAgICAvLyBXb3JrIGFyb3VuZCBmb3IgZHVw
bGljYXRlIHZhbHVlcy4KLSAgICBpZiAodXBwZXIgIT09IG51bGwpIHsKLSAgICAgICAgaWYgKHVw
cGVySXNPcGVuKSB7Ci0gICAgICAgICAgICB3aGlsZSAodXBwZXIgPiAwICYmIHRlc3REYXRhW3Vw
cGVyXSA9PT0gdGVzdERhdGFbdXBwZXIgLSAxXSkKLSAgICAgICAgICAgICAgICAtLXNlbGYudXBw
ZXI7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB3aGlsZSAodXBwZXIgPCB0ZXN0RGF0
YS5sZW5ndGggLSAxICYmIHRlc3REYXRhW3VwcGVyXSA9PT0gdGVzdERhdGFbdXBwZXIgKyAxXSkK
LSAgICAgICAgICAgICAgICArK3NlbGYudXBwZXI7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYg
KGxvd2VyICE9PSBudWxsKSB7Ci0gICAgICAgIGlmIChsb3dlcklzT3BlbikgewotICAgICAgICAg
ICAgd2hpbGUgKGxvd2VyIDwgdGVzdERhdGEubGVuZ3RoIC0gMSAmJiB0ZXN0RGF0YVtsb3dlcl0g
PT09IHRlc3REYXRhW2xvd2VyICsgMV0pCi0gICAgICAgICAgICAgICAgKytzZWxmLmxvd2VyOwot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgd2hpbGUgKGxvd2VyID4gMCAmJiB0ZXN0RGF0
YVtsb3dlcl0gPT09IHRlc3REYXRhW2xvd2VyIC0gMV0pCi0gICAgICAgICAgICAgICAgLS1zZWxm
Lmxvd2VyOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGFzY2VuZGluZykgewotICAgICAg
ICBpZiAobG93ZXIgIT09IG51bGwpIHsKLSAgICAgICAgICAgIGlmICghbG93ZXJJc09wZW4pCi0g
ICAgICAgICAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gbG93ZXI7Ci0gICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gbG93ZXIgKyAxOwotICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IDA7Ci0gICAgfSBl
bHNlIHsKLSAgICAgICAgaWYgKHVwcGVyICE9PSBudWxsKSB7Ci0gICAgICAgICAgICBpZiAoIXVw
cGVySXNPcGVuKQotICAgICAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IHVwcGVyOwot
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IHVw
cGVyIC0gMTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXgg
PSB0ZXN0RGF0YS5sZW5ndGggLSAxOwotICAgIH0KLSAgICB0ZXN0V2l0aGluQm91bmRzKCk7Ci0g
Ci0gICAgaWYgKHRlc3REYXRhW2xvd2VyXSA9PT0gdGVzdERhdGFbdXBwZXJdICYmIChsb3dlcklz
T3BlbiB8fCB1cHBlcklzT3BlbikpIHsKLSAgICAgICAgZGVidWcoIlNraXBwaW5nIGlsbGVnYWwg
a2V5IHJhbmdlLiIpOwotICAgICAgICBydW5OZXh0VGVzdCgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgdmFyIGtleVJhbmdlOwotICAgIGlmIChsb3dlciAhPT0gbnVsbCAmJiB1cHBl
ciAhPT0gbnVsbCkKLSAgICAgICAga2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5ib3VuZCh0ZXN0RGF0
YVtsb3dlcl0sIHRlc3REYXRhW3VwcGVyXSwgbG93ZXJJc09wZW4sIHVwcGVySXNPcGVuKTsKLSAg
ICBlbHNlIGlmIChsb3dlciAhPT0gbnVsbCkKLSAgICAgICAga2V5UmFuZ2UgPSBJREJLZXlSYW5n
ZS5sb3dlckJvdW5kKHRlc3REYXRhW2xvd2VyXSwgbG93ZXJJc09wZW4pOwotICAgIGVsc2UKLSAg
ICAgICAga2V5UmFuZ2UgPSBJREJLZXlSYW5nZS51cHBlckJvdW5kKHRlc3REYXRhW3VwcGVyXSwg
dXBwZXJJc09wZW4pOwotIAotICAgIHZhciByZXF1ZXN0ID0gaW5kZXhPYmplY3Qub3BlbktleUN1
cnNvcihrZXlSYW5nZSwgYXNjZW5kaW5nID8gSURCQ3Vyc29yLk5FWFQgOiBJREJDdXJzb3IuUFJF
Vik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3JJdGVyYXRpb247Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RX
aXRoaW5Cb3VuZHMoKQotewotICAgIGlmIChleHBlY3RlZEluZGV4IDwgMCB8fCB0ZXN0RGF0YS5s
ZW5ndGggPD0gZXhwZWN0ZWRJbmRleCkKLSAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gbnVs
bDsKLSAgICBpZiAobG93ZXIgIT09IG51bGwgJiYgZXhwZWN0ZWRJbmRleCA8IGxvd2VyKQotICAg
ICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSBudWxsOwotICAgIGlmICh1cHBlciAhPT0gbnVsbCAm
JiB1cHBlciA8IGV4cGVjdGVkSW5kZXgpCi0gICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IG51
bGw7Ci0gICAgaWYgKGxvd2VyICE9PSBudWxsICYmIGxvd2VySXNPcGVuICYmIGV4cGVjdGVkSW5k
ZXggPD0gbG93ZXIpCi0gICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IG51bGw7Ci0gICAgaWYg
KHVwcGVyICE9PSBudWxsICYmIHVwcGVySXNPcGVuICYmIHVwcGVyIDw9IGV4cGVjdGVkSW5kZXgp
Ci0gICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IG51bGw7Ci19Ci0gCi1mdW5jdGlvbiBjdXJz
b3JJdGVyYXRpb24oKQotewotICAgIGlmIChleHBlY3RlZEluZGV4ID09PSBudWxsKSB7Ci0gICAg
ICAgIHNob3VsZEJlTnVsbCgiZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgICAgICBydW5OZXh0
VGVzdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChldmVudC50YXJnZXQucmVz
dWx0ID09PSBudWxsKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoImV2ZW50LnRhcmdldC5yZXN1bHQg
c2hvdWxkIG5vdCBiZSBudWxsLiIpOwotICAgICAgICBydW5OZXh0VGVzdCgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotIAotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1h
cnlLZXkiLCAiZXhwZWN0ZWRJbmRleCIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVz
dWx0LmtleSIsICJ0ZXN0RGF0YVsiICsgZXhwZWN0ZWRJbmRleCArICJdIik7Ci0gICAgc2VsZi5l
eHBlY3RlZEluZGV4ID0gYXNjZW5kaW5nID8gZXhwZWN0ZWRJbmRleCArIDEgOiBleHBlY3RlZElu
ZGV4IC0gMTsKLSAgICB0ZXN0V2l0aGluQm91bmRzKCk7Ci0KLSAgICBldmVudC50YXJnZXQucmVz
dWx0LmNvbnRpbnVlKCk7Ci19Ci0gCi1zZWxmLm51bGxLZXlSYW5nZVN0ZXAgPSAwOwotZnVuY3Rp
b24gdGVzdE51bGxLZXlSYW5nZSgpCi17Ci0gICAgc2VsZi5sb3dlciA9IDA7Ci0gICAgc2VsZi5s
b3dlcklzT3BlbiA9IGZhbHNlOwotICAgIHNlbGYudXBwZXIgPSB0ZXN0RGF0YS5sZW5ndGgtMTsK
LSAgICBzZWxmLnVwcGVySXNPcGVuID0gZmFsc2U7Ci0KLSAgICBzdHIgPSAiTmV4dCB0ZXN0OiBu
dWxsIGtleSBwYXRoICI7Ci0gICAgaWYgKHNlbGYubnVsbEtleVJhbmdlU3RlcCA9PSAwKSB7Ci0g
ICAgICAgIHN0ciArPSAic29ydGVkIGFzY2VuZGluZy4iOwotICAgICAgICBzZWxmLmFzY2VuZGlu
ZyA9IHRydWU7Ci0gICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IGxvd2VyOwotICAgICAgICBz
ZWxmLm51bGxLZXlSYW5nZVN0ZXAgPSAxOwotICAgIH0gZWxzZSBpZiAoc2VsZi5udWxsS2V5UmFu
Z2VTdGVwID09IDEpIHsKLSAgICAgICAgc3RyICs9ICJzb3J0ZWQgZGVzY2VuZGluZy4iOwotICAg
ICAgICBzZWxmLmFzY2VuZGluZyA9IGZhbHNlOwotICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXgg
PSB1cHBlcjsKLSAgICAgICAgc2VsZi5udWxsS2V5UmFuZ2VTdGVwID0gMjsKLSAgICB9IGVsc2Ug
ewotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGRlYnVnKCIiKTsKLSAgICBkZWJ1ZyhzdHIpOwotIAotICAgIHZhciByZXF1ZXN0ID0gaW5kZXhP
YmplY3Qub3BlbktleUN1cnNvcihudWxsLCBhc2NlbmRpbmcgPyBJREJDdXJzb3IuTkVYVCA6IElE
QkN1cnNvci5QUkVWKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvckl0ZXJhdGlvbjsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLSAKLXJl
bW92ZVZlbmRvclByZWZpeGVzKCk7Ci1vcGVuRGF0YWJhc2UoKTsgLy8gVGhlIGZpcnN0IHN0ZXAu
Ci0gCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaW5kZXgtY3Vyc29yLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtZ2V0LWtleS1hcmd1bWVudC1yZXF1aXJlZC5odG1s
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtZ2V0LWtleS1hcmd1bWVudC1y
ZXF1aXJlZC5odG1sCmluZGV4IDNiOWVhMWQ2NWM3Y2YwNzkzMjIxMGE2ZTI1ZTM0YTdhNmViY2Yy
M2EuLmRkYjdjZTM3MTZlNmM4ZmFkZjdkNTE4YjRkMzcwZjIyM2ZhNTc0M2MgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWdldC1rZXktYXJndW1lbnQtcmVx
dWlyZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1nZXQt
a2V5LWFyZ3VtZW50LXJlcXVpcmVkLmh0bWwKQEAgLTEsNDkgKzEsMTAgQEAKLTwhRE9DVFlQRSBo
dG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJl
ZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9u
KCJUZXN0IEluZGV4ZWREQiBpbmRleCAuZ2V0KCkgcmVxdWlyZWQgYXJndW1lbnQiKTsKLQotZnVu
Y3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUg
PSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0
YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBk
ZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlv
biBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0
VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0
ZU9iamVjdFN0b3JlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotfQotCi1mdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKLXsKLSAg
ICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5k
TG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7IGtleVBhdGg6
ICdpZCcsIGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7Ci0gICAgaW5kZXggPSBldmFsQW5kTG9n
KCJpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdmaXJzdCcsICdmaXJzdCcpOyIpOwot
ICAgIHNob3VsZFRocm93KCJpbmRleC5nZXQoKTsiKTsKLSAgICBzaG91bGRUaHJvdygiaW5kZXgu
Z2V0S2V5KCk7Iik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaW5kZXgtZ2V0LWtleS1hcmd1bWVudC1yZXF1
aXJlZC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LW11bHRpZW50cnkuaHRtbCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LW11bHRpZW50cnkuaHRtbAppbmRleCA1
Yzc1OTlmMGM1MDJmN2U2N2RmNDkyZDg0MjVkMjVhODAwMGRhMDg1Li5mOGIyZGY1OWY2YjNlODc5
YjdjMTA2YjNmNTQ3OTg2N2JiNGNkZWYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9pbmRleC1tdWx0aWVudHJ5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvaW5kZXgtbXVsdGllbnRyeS5odG1sCkBAIC00LDE0NiArNCw3IEBACiA8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4K
LTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IGZlYXR1cmVzIG9mIEluZGV4ZWREQidzIG11
bHRpRW50cnkgaW5kaWNlcy4iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVu
ZG9yUHJlZml4ZXMoKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Bl
bignaW5kZXgtbXVsdGlFbnRyeScpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAg
ICAgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAg
ICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IHByZXBhcmVEYXRhYmFzZTsKLSAgICB9OwotfQotCi1mdW5jdGlvbiBw
cmVwYXJlRGF0YWJhc2UoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiQ3JlYXRpbmcg
ZW1wdHkgc3RvcmVzIGFuZCBpbmRleGVzIik7Ci0gICAgdmFyIHRyYW5zID0gZXZhbEFuZExvZygi
dHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAh
PT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsK
LSAgICB0cmFucy5vbmNvbXBsZXRlID0gYWRkRGF0YTsKLQotICAgIGRlbGV0ZUFsbE9iamVjdFN0
b3JlcyhkYik7Ci0KLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ3N0b3JlJykiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgn
aW5kZXgnLCAneCcsIHttdWx0aUVudHJ5OiB0cnVlfSkiKTsKLQotICAgIHN0b3JlMiA9IGV2YWxB
bmRMb2coInN0b3JlMiA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZS11bmlxdWUnKSIpOwot
ICAgIGV2YWxBbmRMb2coInN0b3JlMi5jcmVhdGVJbmRleCgnaW5kZXgtdW5pcXVlJywgJ3gnLCB7
bXVsdGlFbnRyeTogdHJ1ZSwgdW5pcXVlOiB0cnVlfSkiKTsKLX0KLQotZnVuY3Rpb24gYWRkRGF0
YSgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJQb3B1bGF0aW5nIHN0b3JlcyAoYW5k
IGluZGV4ZXMpIik7Ci0gICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9
IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsK
LSAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAg
dHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKCkgeyB2ZXJpZnlJbmRleGVzKCdpbmRl
eCcsIHZlcmlmeVVuaXF1ZUNvbnN0cmFpbnQpOyB9OwotCi0gICAgZGVidWcoIkZpcnN0IHRyeSBz
b21lIGtleXMgdGhhdCBhcmVuJ3Qgd2hhdCB3ZSdyZSBleHBlY3RpbmciKTsKLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KHt4OiBb
NywgOCwgOV0sIHk6ICdhJ30sICdmb28nKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIGRlYnVnKCJOb3cgb3ZlcndyaXRlIHRoZW0gd2l0aCB3
aGF0IHdlJ3JlIGV4cGVjdGluZyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2Fj
dGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKS5wdXQoe3g6IFsxLCAyLCAzXSwgeTogJ2EnfSwgJ2Zv
bycpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScp
LnB1dCh7eDogWzQsIDUsIDZdLCB5OiAnYid9LCAnYmFyJykiKTsKLSAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gdmVyaWZ5SW5kZXhl
cyhpbmRleE5hbWUsIGNhbGxiYWNrKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiVmVy
aWZ5aW5nIGluZGV4OiAiICsgaW5kZXhOYW1lKTsKLSAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRM
b2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZSddLCBJREJUcmFuc2FjdGlv
bi5SRUFEX09OTFkpIik7Ci0gICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9y
dENhbGxiYWNrOwotICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBjYWxsYmFjazsKLQotICAg
IGV4cGVjdGVkID0gWwotICAgICAgICB7IGtleTogMSwgcHJpbWFyeUtleTogJ2ZvbycsIHk6ICdh
JyB9LAotICAgICAgICB7IGtleTogMiwgcHJpbWFyeUtleTogJ2ZvbycsIHk6ICdhJyB9LAotICAg
ICAgICB7IGtleTogMywgcHJpbWFyeUtleTogJ2ZvbycsIHk6ICdhJyB9LAotICAgICAgICB7IGtl
eTogNCwgcHJpbWFyeUtleTogJ2JhcicsIHk6ICdiJyB9LAotICAgICAgICB7IGtleTogNSwgcHJp
bWFyeUtleTogJ2JhcicsIHk6ICdiJyB9LAotICAgICAgICB7IGtleTogNiwgcHJpbWFyeUtleTog
J2JhcicsIHk6ICdiJyB9LAotICAgIF07Ci0KLSAgICB2YXIgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLmluZGV4KCciICsgaW5kZXhOYW1lICsg
IicpLm9wZW5DdXJzb3IoKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAg
ICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIp
OwotICAgICAgICBpZiAoY3Vyc29yKSB7Ci0gICAgICAgICAgICBleCA9IGV4cGVjdGVkLnNoaWZ0
KCk7Ci0gICAgICAgICAgICBzaG91bGRCZVRydWUoImV4ICE9IG51bGwiKTsKLSAgICAgICAgICAg
IHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgU3RyaW5nKGV4LmtleSkpOwotICAgICAgICAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJjdXJzb3IucHJpbWFyeUtleSIsIGV4LnByaW1hcnlLZXkpOwot
ICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjdXJzb3IudmFsdWUueSIsIGV4Lnkp
OwotICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBzaG91bGRCZVRydWUoImV4cGVjdGVkLmxlbmd0aCA9PT0gMCIpOwotICAgICAgICB9
Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24gdmVyaWZ5VW5pcXVlQ29uc3RyYWludCgpCi17Ci0gICAg
ZGVidWcoIiIpOwotICAgIGRlYnVnKCJWZXJpZnlpbmcgdW5pcXVlIGNvbnN0cmFpbnQgb24gbXVs
dGlFbnRyeSBpbmRleCIpOwotICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rp
b24gPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlLXVuaXF1ZSddLCBJREJUcmFuc2FjdGlvbi5SRUFE
X1dSSVRFKSIpOwotICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbiAoKSB7Ci0gICAg
ICAgIGRlYnVnKCJUcmFuc2FjdGlvbiBhYm9ydGVkIGFzIGV4cGVjdGVkIik7Ci0gICAgICAgIGNy
ZWF0ZUluZGV4T25TdG9yZVdpdGhEYXRhKCk7Ci0gICAgfTsKLSAgICB0cmFuc2FjdGlvbi5vbmNv
bXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7Ci0KLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlLXVuaXF1ZScpLnB1dCh7eDog
WzEsIDIsIDNdLCB5OiAnYSd9LCAnZm9vJykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkg
ewotICAgICAgICBkZWJ1Zygic3VjY2VzcyEiKTsKLSAgICAgICAgZGVidWcoIlJlcGxhY2UgYW4g
ZXhpc3RpbmcgcmVjb3JkIC0gdGhpcyBzaG91bGQgd29yayIpOwotICAgICAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlLXVuaXF1ZScpLnB1dCh7
eDogWzEsIDIsIDddLCB5OiAnYSd9LCAnZm9vJykiKTsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBkZWJ1Zygic3VjY2VzcyEiKTsKLSAgICAgICAgICAg
IGRlYnVnKCJUaGlzIHNob3VsZCBmYWlsIHRoZSB1bmlxdWVuZXNzIGNvbnN0cmFpbnQgb24gdGhl
IGluZGV4LCBhbmQgZmFpbDoiKTsKLSAgICAgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0
cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUtdW5pcXVlJykucHV0KHt4OiBbNSwgMl0sIHk6
ICdjJ30sICdzaG91bGQgZmFpbCcpIik7Ci0gICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7Ci0gICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSBmdW5jdGlvbigpIHsgZGVidWcoIlJlcXVlc3QgZmFpbGVkLCBhcyBleHBlY3RlZCIpOyB9Owot
ICAgICAgICB9OwotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUluZGV4T25TdG9yZVdpdGhE
YXRhKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIkNyZWF0ZSBhbiBpbmRleCBvbiBh
IHBvcHVsYXRlZCBzdG9yZSIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZl
cnNpb24oJzInKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0KLSAgICAgICAgdmFy
IHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAg
ICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKLSAgICAgICAgdHJhbnMub25hYm9y
dCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgICAgICB0cmFucy5vbmNvbXBsZXRlID0g
ZnVuY3Rpb24oKSB7IHZlcmlmeUluZGV4ZXMoJ2luZGV4LW5ldycsIGZpbmlzaEpTVGVzdCk7IH07
Ci0KLSAgICAgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3Jl
KCdzdG9yZScpIik7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdpbmRl
eC1uZXcnLCAneCcsIHttdWx0aUVudHJ5OiB0cnVlfSkiKTsKLSAgICB9OwotfQotCi10ZXN0KCk7
Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9pbmRleC1tdWx0aWVudHJ5Lmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1wb3B1bGF0aW9uLmh0bWwgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1wb3B1bGF0aW9uLmh0bWwKaW5kZXggMWNiMjg1
YjNhNjJiNWQwZDVmZjhhNGQyYWQxNzk1ZGE4MzI5ZjI2NC4uNDlmMzgzZTAwY2U2YTAzODQzZGFk
YzFiOWIxMTgyNzMzNDQ1ZjU1ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvaW5kZXgtcG9wdWxhdGlvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2luZGV4LXBvcHVsYXRpb24uaHRtbApAQCAtNCw5NiArNCw3IEBACiA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3Jp
cHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBpbmRleCBwb3B1bGF0aW9uLiIpOwot
Ci1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgnaW5kZXgtcG9w
dWxhdGlvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVTdWNjZXNzOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlv
biBkZWxldGVTdWNjZXNzKCkKLXsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERC
Lm9wZW4oJ2luZGV4LXBvcHVsYXRpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZG9T
ZXRWZXJzaW9uMTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLX0KLQotZnVuY3Rpb24gZG9TZXRWZXJzaW9uMSgpCi17Ci0gICAgZGVidWcoIiIpOwotICAg
IGRlYnVnKCJkb1NldFZlcnNpb24xKCk6Iik7Ci0gICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRi
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IHNldFZlcnNpb24xOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uMSgpCi17Ci0gICAgZGVidWcoIiIpOwot
ICAgIGRlYnVnKCJzZXRWZXJzaW9uMSgpOiIpOwotICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExv
ZygidHJhbnNhY3Rpb24gPSByZXF1ZXN0LnJlc3VsdCIpOwotICAgIHRyYW5zYWN0aW9uLm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0g
dW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTEnKSIpOwotICAgIGV2YWxBbmRMb2coInN0b3Jl
LnB1dCh7ZGF0YTogJ2EnLCBpbmRleEtleTogMTB9LCAxKSIpOwotICAgIGV2YWxBbmRMb2coInN0
b3JlLnB1dCh7ZGF0YTogJ2InLCBpbmRleEtleTogMjB9LCAyKSIpOwotICAgIGV2YWxBbmRMb2co
InN0b3JlLnB1dCh7ZGF0YTogJ2MnLCBpbmRleEtleTogMTB9LCAzKSIpOwotICAgIGV2YWxBbmRM
b2coInN0b3JlLnB1dCh7ZGF0YTogJ2QnLCBpbmRleEtleTogMjB9LCA0KSIpOwotICAgIGV2YWxB
bmRMb2coImluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4MScsICdpbmRleEtleScpIik7
Ci0gICAgc2hvdWxkQmVUcnVlKCJpbmRleCBpbnN0YW5jZW9mIElEQkluZGV4Iik7Ci0gICAgc2hv
dWxkQmVGYWxzZSgiaW5kZXgudW5pcXVlIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBpbmRleC5jb3VudChJREJLZXlSYW5nZS5ib3VuZCgtSW5maW5pdHksIEluZmluaXR5
KSkiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgc2hvdWxkQmUoInJl
cXVlc3QucmVzdWx0IiwgIjQiKTsKLSAgICB9OwotICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUg
PSBkb1NldFZlcnNpb24yOwotfQotCi1mdW5jdGlvbiBkb1NldFZlcnNpb24yKCkgewotICAgIGRl
YnVnKCIiKTsKLSAgICBkZWJ1ZygiZG9TZXRWZXJzaW9uMigpOiIpOwotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAyJykiKTsKLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb24yOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uMigpCi17Ci0g
ICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJzZXRWZXJzaW9uMigpOiIpOwotICAgIHRyYW5zYWN0
aW9uMiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gcmVxdWVzdC5yZXN1bHQiKTsKLSAgICB0
cmFuc2FjdGlvbjIub25hYm9ydCA9IHNldFZlcnNpb24yQWJvcnQ7Ci0gICAgdHJhbnNhY3Rpb24y
Lm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjazsKLSAgICBzdG9yZSA9IGV2
YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlMicpIik7Ci0gICAg
ZXZhbEFuZExvZygic3RvcmUucHV0KHtkYXRhOiAnYScsIGluZGV4S2V5OiAxMH0sIDEpIik7Ci0g
ICAgZXZhbEFuZExvZygic3RvcmUucHV0KHtkYXRhOiAnYicsIGluZGV4S2V5OiAyMH0sIDIpIik7
Ci0gICAgZXZhbEFuZExvZygic3RvcmUucHV0KHtkYXRhOiAnYycsIGluZGV4S2V5OiAxMH0sIDMp
Iik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUucHV0KHtkYXRhOiAnZCcsIGluZGV4S2V5OiAyMH0s
IDQpIik7Ci0gICAgZXZhbEFuZExvZygiaW5kZXgyID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4
MicsICdpbmRleEtleScsIHsgdW5pcXVlOiB0cnVlIH0pIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJp
bmRleDIgaW5zdGFuY2VvZiBJREJJbmRleCIpOwotICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXgyLnVu
aXF1ZSIpOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uMkFib3J0KCkKLXsKLSAgICBkZWJ1Zygi
Iik7Ci0gICAgZGVidWcoInNldFZlcnNpb24yQWJvcnQoKToiKTsKLSAgICBzaG91bGRCZSgiZGIu
b2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMSIpOwotICAgIHNob3VsZEJlKCJkYi5vYmplY3RT
dG9yZU5hbWVzWzBdIiwgIidzdG9yZTEnIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXRl
c3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2luZGV4LXBvcHVsYXRp
b24uanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC11bmlxdWUuaHRtbCBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LXVuaXF1ZS5odG1sCmluZGV4IDVhNTQ0M2M1OWU4
YWJmMDJlM2M4ZjVjZmUyOTI2ZDc5MmNjOGM2YTUuLmM2NjM4ZGY2YTA2YmYzYzRiMmY0YmE4Mjc4
MGZhZDA0YmQ4ZWIzODcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2luZGV4LXVuaXF1ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2lu
ZGV4LXVuaXF1ZS5odG1sCkBAIC00LDE0MyArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2Ny
aXB0aW9uKCJUZXN0IGZlYXR1cmVzIG9mIEluZGV4ZWREQidzIHVuaXF1ZSBpbmRpY2VzLiIpOwot
Ci1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignaW5kZXgtdW5pcXVlJykiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb247Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb24oKQotewot
ICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZUV4aXN0aW5n
KCkKLXsKLSAgICBkZWJ1ZygiZGVsZXRlRXhpc3RpbmcoKToiKTsKLSAgICB2YXIgdHJhbnMgPSBl
dmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRy
dWUoInRyYW5zICE9PSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9y
dENhbGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBzZXRWZXJzaW9uQ29tcGxldGVkOwot
Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIHNlbGYuc3RvcmUgPSBldmFs
QW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOwotICAgIHNlbGYuaW5kZXhP
YmplY3QgPSBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXgnLCAneCcsIHt1bmlx
dWU6IHRydWV9KSIpOwotCi0gICAgLy8gTGV0IHNldFZlcnNpb24gdHJhbnNhY3Rpb24gY29tcGxl
dGUuCi19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb25Db21wbGV0ZWQoKQotewotICAgIGRlYnVnKCJz
ZXRWZXJzaW9uQ29tcGxldGVkKCk6Iik7Ci0gICAgc2VsZi50cmFuc2FjdGlvbiA9IGV2YWxBbmRM
b2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZSddLCBJREJUcmFuc2FjdGlv
bi5SRUFEX1dSSVRFKSIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9u
Lm9iamVjdFN0b3JlKCdzdG9yZScpLnB1dCh7eDogMX0sICdmb28nKSIpOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gYWRkTW9yZURhdGE7Ci19Ci0KLWZ1bmN0aW9uIGFkZE1vcmVEYXRhKCkKLXsKLSAgICBkZWJ1
ZygiYWRkTW9yZURhdGEoKToiKTsKLQotICAgIC8vIFRoZSB4IHZhbHVlIHZpb2xhdGVzIHRoZSB1
bmlxdWVuZXNzIGNvbnN0cmFpbnQgb2YgdGhlIGluZGV4LgotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKS5wdXQoe3g6IDF9LCAnYmFyJyki
KTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSBhZGRNb3JlRGF0YUZhaWxlZDsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGFk
ZE1vcmVEYXRhRmFpbGVkKCkKLXsKLSAgICBkZWJ1ZygiYWRkTW9yZURhdGFGYWlsZWQoKToiKTsK
LQotICAgIC8vIERvbid0IGFib3J0IHRoZSB0cmFuc2FjdGlvbi4KLSAgICBldmFsQW5kTG9nKCJl
dmVudC5wcmV2ZW50RGVmYXVsdCgpIik7Ci0KLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LmVy
cm9yQ29kZSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5DT05TVFJBSU5UX0VSUiIpOwotCi0gICAg
Ly8gVXBkYXRlIHRoZSAnZm9vJyBlbnRyeSBpbiBvYmplY3Qgc3RvcmUsIGNoYW5naW5nIHRoZSB2
YWx1ZSBvZiB4LgotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RT
dG9yZSgnc3RvcmUnKS5wdXQoe3g6IDB9LCAnZm9vJykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNoYW5n
ZURhdGFTdWNjZXNzOwotfQotCi1mdW5jdGlvbiBjaGFuZ2VEYXRhU3VjY2VzcygpCi17Ci0gICAg
ZGVidWcoImNoYW5nZURhdGFTdWNjZXNzKCk6Iik7Ci0KLSAgICAvLyBBbiBpbmRleCBjdXJzb3Ig
c3RhcnRpbmcgYXQgMSBzaG91bGQgbm90IGZpbmQgYW55dGhpbmcuCi0gICAgdmFyIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKS5pbmRleCgnaW5k
ZXgnKS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLmxvd2VyQm91bmQoMSkpIik7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBjdXJzb3JTdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjdXJzb3JTdWNjZXNzKCkKLXsKLSAg
ICBkZWJ1ZygiY3Vyc29yU3VjY2VzcygpOiIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQu
cmVzdWx0IiwgIm51bGwiKTsKLQotICAgIC8vIEEga2V5IGN1cnNvciBzdGFydGluZyBhdCAxIHNo
b3VsZCBub3QgZmluZCBhbnl0aGluZy4KLSAgICB2YXIgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRy
YW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLmluZGV4KCdpbmRleCcpLm9wZW5LZXlDdXJz
b3IoSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgxKSkiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGtleUN1cnNvclN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGtleUN1cnNvclN1Y2Nlc3MoKQotewotICAgIGRlYnVn
KCJrZXlDdXJzb3JTdWNjZXNzKCk6Iik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1
bHQiLCAibnVsbCIpOwotCi0gICAgLy8gTm93IHdlIHNob3VsZCBiZSBhYmxlIHRvIGFkZCBhIHZh
bHVlIHdpdGggeDogMS4KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2Jq
ZWN0U3RvcmUoJ3N0b3JlJykucHV0KHt4OiAxfSwgJ2JhcicpIik7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBh
ZGRNb3JlRGF0YVN1Y2NlczsKLX0KLQotZnVuY3Rpb24gYWRkTW9yZURhdGFTdWNjZXMoKQotewot
ICAgIGRlYnVnKCJhZGRNb3JlRGF0YVN1Y2NlcygpOiIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLmRlbGV0ZSgnYmFyJykiKTsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZVN1Y2Nlc3M7Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZVN1Y2Nl
c3MoKQotewotICAgIGRlYnVnKCJkZWxldGVTdWNjZXNzKCk6Iik7Ci0KLSAgICAvLyBOb3cgd2Ug
c2hvdWxkIGJlIGFibGUgdG8gYWRkIGEgdmFsdWUgd2l0aCB4OiAxIGFnYWluLgotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKS5wdXQoe3g6
IDF9LCAnYmF6JykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZpbmFsQWRkU3VjY2VzczsKLX0KLQotZnVu
Y3Rpb24gZmluYWxBZGRTdWNjZXNzKCkgewotICAgIGRlYnVnKCJmaW5hbEFkZFN1Y2Nlc3MoKToi
KTsKLQotICAgIC8vIEFuIG92ZXJ3cml0ZSBzaG91bGQgYmUgb2suCi0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLnB1dCh7eDogMX0sICdi
YXonKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZmluaXNoSlNUZXN0OwotfQotCi10ZXN0KCk7Ci0KLQot
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2luZGV4LXVuaXF1ZS5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvaW52YWxpZC1rZXlzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9pbnZhbGlkLWtleXMuaHRtbAppbmRleCBmZjkxNWUwOTZlYjk3MTRiYjUyZTMz
ZjZiMTk3YzE1MzhmMGEwMjE1Li5lMzVhYjE4ZmM2MzYwNThkNmJmYWVhNmQ3YjkwNDRlYzNmNTQw
ZmY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnZhbGlkLWtl
eXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnZhbGlkLWtleXMu
aHRtbApAQCAtMSw3NCArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgog
PHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVh
ZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGludmFs
aWQga2V5cyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhl
cygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRp
b24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4
ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
b3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2co
ImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IHRlc3RHcm91cDE7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDEoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0
b3JlcyhkYik7Ci0KLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVj
dFN0b3JlKCdmb28nKTsiKTsKLSAgICB0ZXN0SW52YWxpZEtleXMoKTsKLX0KLQotZnVuY3Rpb24g
dGVzdEludmFsaWRLZXlzKCkKLXsKLSAgICB2YXIgaW52YWxpZEtleXMgPSBbCi0gICAgICAgICJ2
b2lkIDAiLCAvLyBVbmRlZmluZWQKLSAgICAgICAgIm51bGwiLCAvLyBOdWxsCi0gICAgICAgICIo
ZnVuY3Rpb24oKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSkiLCAvLyBBcmd1bWVudHMKLSAgICAg
ICAgInRydWUiLCAvLyBCb29sZWFuCi0gICAgICAgICJmYWxzZSIsIC8vIEJvb2xlYW4KLSAgICAg
ICAgIm5ldyBFcnJvciIsIC8vIEVycm9yCi0gICAgICAgICJmdW5jdGlvbiAoKSB7fSIsIC8vIEZ1
bmN0aW9uCi0gICAgICAgICJKU09OIiwgLy8gSlNPTgotICAgICAgICAiTWF0aCIsIC8vIE1hdGgK
LSAgICAgICAgIk5hTiIsIC8vIE51bWJlciAoc3BlY2lhbCBjYXNlKQotICAgICAgICAibmV3IERh
dGUoTmFOKSIsIC8vIERhdGUgKHNwZWNpYWwgY2FzZSkKLSAgICAgICAgInt9IiwgLy8gT2JqZWN0
Ci0gICAgICAgICIvcmVnZXgvIiwgLy8gUmVnRXhwCi0gICAgICAgICJzZWxmIiwgLy8gZ2xvYmFs
Ci0gICAgICAgICJzZWxmLmRvY3VtZW50IiwgLy8gSFRNTERvY3VtZW50Ci0gICAgICAgICJzZWxm
LmRvY3VtZW50LmJvZHkiIC8vIEhUTUxCb2R5RWxlbWVudAotICAgIF07Ci0KLSAgICBpbnZhbGlk
S2V5cy5mb3JFYWNoKGZ1bmN0aW9uKGtleSkgewotICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCd2YWx1ZScsICIgKyBrZXkgKyAiKSIsICJJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotICAgIH0pOwotICAgIAotICAgIGZpbmlz
aEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2ludmFsaWQta2V5cy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleS1nZW5lcmF0
b3IuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleS1nZW5lcmF0b3IuaHRt
bAppbmRleCBhN2IwN2ZmYWQ5MWE3ZGJlYmM0ZmFkZGFhOGNhOGYyNDY3MmY4N2YxLi44NDlkNGYy
MTkyNmM5NThiZDQ4ZDBiZmQxOGYyMGRhNzUyYzRkZjk4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXktZ2VuZXJhdG9yLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIva2V5LWdlbmVyYXRvci5odG1sCkBAIC00LDIxMiArNCw3IEBACiA8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9k
eT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGtleSBnZW5lcmF0
b3IgYmVoYXZpb3IuIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclBy
ZWZpeGVzKCk7Ci0KLSAgICBydW5UZXN0cygpOwotfQotCi12YXIgdGVzdHMgPSBbXTsKLWZ1bmN0
aW9uIGRlZmluZVRlc3QoZGVzY3JpcHRpb24sIHZlcmNoYW5nZSwgb3B0aW9uYWwpIHsKLSAgdGVz
dHMucHVzaCgKLSAgICB7Ci0gICAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sCi0gICAgICB2
ZXJjaGFuZ2U6IHZlcmNoYW5nZSwKLSAgICAgIG9wdGlvbmFsOiBvcHRpb25hbAotICAgIH0KLSAg
KTsKLX0KLQotCi1mdW5jdGlvbiBydW5UZXN0cygpIHsKLQotICAgIGZ1bmN0aW9uIG5leHRUZXN0
KCkgewotICAgICAgICBpZiAoIXRlc3RzLmxlbmd0aCkgewotICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgdGVz
dCA9IHRlc3RzLnNoaWZ0KCk7Ci0gICAgICAgIGRlYnVnKCIiKTsKLSAgICAgICAgZGVidWcodGVz
dC5kZXNjcmlwdGlvbik7Ci0KLSAgICAgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWRE
Qi5kZWxldGVEYXRhYmFzZSgna2V5LWdlbmVyYXRvcicpIik7Ci0gICAgICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRl
eGVkREIub3Blbigna2V5LWdlbmVyYXRvcicpIik7Ci0gICAgICAgICAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImRiID0gcmVx
dWVzdC5yZXN1bHQiKTsKLSAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIu
c2V0VmVyc2lvbignMScpIik7Ci0gICAgICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coInRyYW5zID0g
cmVxdWVzdC5yZXN1bHQiKTsKLSAgICAgICAgICAgICAgICAgICAgdHJhbnMub25hYm9ydCA9IHVu
ZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgICAgICAgICAgICAgICAgICB0ZXN0LnZlcmNoYW5n
ZShkYiwgdHJhbnMpOwotICAgICAgICAgICAgICAgICAgICB0cmFucy5vbmNvbXBsZXRlID0gZnVu
Y3Rpb24gKCkgewotCi0gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBmaW5pc2hUZXN0
KCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImRiLmNsb3NlKCki
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0VGVzdCgpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGVzdC5vcHRpb25h
bCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Qub3B0aW9uYWwoZGIsIGZpbmlz
aFRlc3QpOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIH07
Ci0gICAgICAgIH07Ci0gICAgfQotCi0gICAgbmV4dFRlc3QoKTsKLX0KLQotZnVuY3Rpb24gY2hl
Y2soc3RvcmUsIGtleSwgZXhwZWN0ZWQpIHsKLSAgICBzZWxmLnN0b3JlID0gc3RvcmU7Ci0gICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdG9yZS5nZXQoIiArIEpTT04uc3RyaW5n
aWZ5KGtleSkgKyAiKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAg
c2VsZi5leHBlY3RlZCA9IGV4cGVjdGVkOwotICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkoZXZl
bnQudGFyZ2V0LnJlc3VsdCkgPT09IEpTT04uc3RyaW5naWZ5KGV4cGVjdGVkKSkgewotICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiR290ICIgKyBKU09OLnN0cmluZ2lmeShldmVudC50YXJnZXQucmVz
dWx0KSArICIgZm9yIGtleTogIiArIEpTT04uc3RyaW5naWZ5KGtleSkpOwotICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgdGVzdEZhaWxlZCgiR290ICIgKyBKU09OLnN0cmluZ2lmeShldmVu
dC50YXJnZXQucmVzdWx0KSArICIgZm9yIGtleTogIiArIEpTT04uc3RyaW5naWZ5KGtleSkgKwot
ICAgICAgICAgICAgICAgICIgZXhwZWN0ZWQ6ICIgKyBKU09OLnN0cmluZ2lmeShleHBlY3RlZCkp
OwotICAgICAgICB9Ci0gICAgfTsKLX0KLQotZGVmaW5lVGVzdCgKLSAgICAnVmVyaWZ5IHRoYXQg
ZWFjaCBvYmplY3Qgc3RvcmUgaGFzIGFuIGluZGVwZW5kZW50IGtleSBnZW5lcmF0b3IuJywKLSAg
ICBmdW5jdGlvbiAoZGIsIHRyYW5zKSB7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlMSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTEnLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSkiKTsK
LSAgICAgICAgZXZhbEFuZExvZygic3RvcmUxLnB1dCgnYScpIik7Ci0gICAgICAgIGNoZWNrKHN0
b3JlMSwgMSwgJ2EnKTsKLSAgICAgICAgZXZhbEFuZExvZygic3RvcmUyID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ3N0b3JlMicsIHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9KSIpOwotICAgICAgICBl
dmFsQW5kTG9nKCJzdG9yZTIucHV0KCdhJykiKTsKLSAgICAgICAgY2hlY2soc3RvcmUyLCAxLCAn
YScpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZTEucHV0KCdiJykiKTsKLSAgICAgICAgY2hl
Y2soc3RvcmUxLCAyLCAnYicpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZTIucHV0KCdiJyki
KTsKLSAgICAgICAgY2hlY2soc3RvcmUyLCAyLCAnYicpOwotICAgIH0KLSk7Ci0KLWRlZmluZVRl
c3QoCi0gICAgJ1ZlcmlmeSB0aGF0IHRoZSBrZXkgZ2VuZXJhdG9yIGlzIG5vdCB1cGRhdGVkIGlm
IGluc2VydGlvbiBmYWlscycsCi0gICAgZnVuY3Rpb24gKGRiLCB0cmFucykgewotICAgICAgICB0
cmFucy5vbmVycm9yID0gZnVuY3Rpb24oZSkgeyBlLnByZXZlbnREZWZhdWx0KCkgfTsKLSAgICAg
ICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUxJywgeyBh
dXRvSW5jcmVtZW50OiB0cnVlIH0pIik7Ci0gICAgICAgIGV2YWxBbmRMb2coImluZGV4ID0gc3Rv
cmUuY3JlYXRlSW5kZXgoJ2luZGV4MScsICdpeCcsIHsgdW5pcXVlOiB0cnVlIH0pIik7Ci0gICAg
ICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCh7IGl4OiAnYSd9KSIpOwotICAgICAgICBjaGVjayhz
dG9yZSwgMSwge2l4OiAnYSd9KTsKLSAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KHsgaXg6
ICdhJ30pIik7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCh7IGl4OiAnYid9KSIpOwot
ICAgICAgICBjaGVjayhzdG9yZSwgMiwge2l4OiAnYid9KTsKLSAgICB9Ci0pOwotCi1kZWZpbmVU
ZXN0KAotICAgICdWZXJpZnkgdGhhdCB0aGUga2V5IGdlbmVyYXRvciBpcyBub3QgYWZmZWN0ZWQg
YnkgaXRlbSByZW1vdmFsIChkZWxldGUgb3IgY2xlYXIpLicsCi0gICAgZnVuY3Rpb24gKGRiLCB0
cmFucykgewotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdzdG9yZTEnLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSkiKTsKLSAgICAgICAgZXZhbEFuZExv
Zygic3RvcmUucHV0KCdhJykiKTsKLSAgICAgICAgY2hlY2soc3RvcmUsIDEsICdhJyk7Ci0gICAg
ICAgIGV2YWxBbmRMb2coInN0b3JlLmRlbGV0ZSgxKSIpOwotICAgICAgICBldmFsQW5kTG9nKCJz
dG9yZS5wdXQoJ2InKSIpOwotICAgICAgICBjaGVjayhzdG9yZSwgMiwgJ2InKTsKLSAgICAgICAg
ZXZhbEFuZExvZygic3RvcmUuY2xlYXIoKSIpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5w
dXQoJ2MnKSIpOwotICAgICAgICBjaGVjayhzdG9yZSwgMywgJ2MnKTsKLSAgICAgICAgLy8gRklY
TUU6IElEQk9iamVjdFN0b3JlLmRlbGV0ZShJREJLZXlSYW5nZSkgaXMgbm90IHlldCBpbXBsZW1l
bnRlZCBpbiBDaHJvbWl1bS4KLSAgICAgICAgLy8gaHR0cDovL2NyYnVnLmNvbS8xMDEzODQKLSAg
ICAgICAgLy9ldmFsQW5kTG9nKCJzdG9yZS5kZWxldGUoSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgw
KSkiKTsKLSAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdkJykiKTsKLSAgICAgICAgY2hl
Y2soc3RvcmUsIDQsICdkJyk7Ci0gICAgfQotKTsKLQotZGVmaW5lVGVzdCgKLSAgICAnVmVyaWZ5
IHRoYXQgdGhlIGtleSBnZW5lcmF0b3IgaXMgb25seSBzZXQgaWYgYW5kIG9ubHkgaWYgYSBudW1l
cmljIGtleSBncmVhdGVyIHRoYW4gdGhlIGxhc3QgZ2VuZXJhdGVkIGtleSBpcyB1c2VkLicsCi0g
ICAgZnVuY3Rpb24gKGRiLCB0cmFucykgewotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTEnLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSkiKTsK
LSAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdhJykiKTsKLSAgICAgICAgY2hlY2soc3Rv
cmUsIDEsICdhJyk7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgnYicsIDMpIik7Ci0g
ICAgICAgIGNoZWNrKHN0b3JlLCAzLCAnYicpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5w
dXQoJ2MnKSIpOwotICAgICAgICBjaGVjayhzdG9yZSwgNCwgJ2MnKTsKLSAgICAgICAgZXZhbEFu
ZExvZygic3RvcmUucHV0KCdkJywgLTEwKSIpOwotICAgICAgICBjaGVjayhzdG9yZSwgLTEwLCAn
ZCcpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2UnKSIpOwotICAgICAgICBjaGVj
ayhzdG9yZSwgNSwgJ2UnKTsKLSAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdmJywgNi4w
MDAwMSkiKTsKLSAgICAgICAgY2hlY2soc3RvcmUsIDYuMDAwMDEsICdmJyk7Ci0gICAgICAgIGV2
YWxBbmRMb2coInN0b3JlLnB1dCgnZycpIik7Ci0gICAgICAgIGNoZWNrKHN0b3JlLCA3LCAnZycp
OwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2YnLCA4Ljk5OTkpIik7Ci0gICAgICAg
IGNoZWNrKHN0b3JlLCA4Ljk5OTksICdmJyk7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1
dCgnZycpIik7Ci0gICAgICAgIGNoZWNrKHN0b3JlLCA5LCAnZycpOwotICAgICAgICBldmFsQW5k
TG9nKCJzdG9yZS5wdXQoJ2gnLCAnZm9vJykiKTsKLSAgICAgICAgY2hlY2soc3RvcmUsICdmb28n
LCAnaCcpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2knKSIpOwotICAgICAgICBj
aGVjayhzdG9yZSwgMTAsICdpJyk7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgnaics
IFsxMDAwXSkiKTsKLSAgICAgICAgY2hlY2soc3RvcmUsIFsxMDAwXSwgJ2onKTsKLSAgICAgICAg
ZXZhbEFuZExvZygic3RvcmUucHV0KCdrJykiKTsKLSAgICAgICAgY2hlY2soc3RvcmUsIDExLCAn
aycpOwotCi0gICAgICAgIC8vIEZJWE1FOiBSZXBlYXQgdGhpcyB0ZXN0LCBidXQgd2l0aCBhIGtl
eVBhdGggYW5kIGlubGluZSBrZXkuCi0gICAgfQotKTsKLQotZGVmaW5lVGVzdCgKLSAgICAnVmVy
aWZ5IHRoYXQgYWJvcnRpbmcgYSB0cmFuc2FjdGlvbiByZXNldHMgdGhlIGtleSBnZW5lcmF0b3Ig
c3RhdGUuJywKLSAgICBmdW5jdGlvbiAoZGIsIHRyYW5zKSB7Ci0gICAgICAgIGRiLmNyZWF0ZU9i
amVjdFN0b3JlKCdzdG9yZScsIHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9KTsKLSAgICB9LAotCi0g
ICAgZnVuY3Rpb24gKGRiLCBjYWxsYmFjaykgewotICAgICAgICBldmFsQW5kTG9nKCJ0cmFuczEg
PSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7
Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlX3QxID0gdHJhbnMxLm9iamVjdFN0b3JlKCdzdG9y
ZScpIik7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlX3QxLnB1dCgnYScpIik7Ci0gICAgICAg
IGNoZWNrKHN0b3JlX3QxLCAxLCAnYScpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZV90MS5w
dXQoJ2InKSIpOwotICAgICAgICBjaGVjayhzdG9yZV90MSwgMiwgJ2InKTsKLQotICAgICAgICAv
LyBTY2hlZHVsZSB0aGUgYWJvcnQgYXMgYSB0YXNrIChub3QgcnVuIGl0IHN5bmNocm9ub3VzbHkp
Ci0gICAgICAgIHN0b3JlX3QxLmdldCgwKS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7Ci0gICAg
ICAgICAgICBkZWJ1ZygnYWJvcnRpbmcuLi4nKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coInRy
YW5zMS5hYm9ydCgpIik7Ci0gICAgICAgICAgICB0cmFuczEub25hYm9ydCA9IGZ1bmN0aW9uICgp
IHsKLSAgICAgICAgICAgICAgICBkZWJ1ZygnYWJvcnRlZCEnKTsKLQotICAgICAgICAgICAgICAg
IGV2YWxBbmRMb2coInRyYW5zMiA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUnXSwgSURCVHJhbnNh
Y3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJzdG9yZV90
MiA9IHRyYW5zMi5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOwotICAgICAgICAgICAgICAgIGV2YWxB
bmRMb2coInN0b3JlX3QyLnB1dCgnYycpIik7Ci0gICAgICAgICAgICAgICAgY2hlY2soc3RvcmVf
dDIsIDEsICdjJyk7Ci0gICAgICAgICAgICAgICAgZXZhbEFuZExvZygic3RvcmVfdDIucHV0KCdk
JykiKTsKLSAgICAgICAgICAgICAgICBjaGVjayhzdG9yZV90MiwgMiwgJ2QnKTsKLQotICAgICAg
ICAgICAgICAgIHRyYW5zMi5vbmNvbXBsZXRlID0gY2FsbGJhY2s7Ci0gICAgICAgICAgICB9Owot
ICAgICAgICB9OwotICAgIH0KLSk7Ci0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2tleS1nZW5lcmF0b3IuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+
CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXkt
c29ydC1vcmRlci1hY3Jvc3MtdHlwZXMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2tleS1zb3J0LW9yZGVyLWFjcm9zcy10eXBlcy5odG1sCmluZGV4IDBhMjQyNDNjMjRjZjIw
MWY5Mjk0YTgwOThkNmQwMTRjMmM0ZWY4NmMuLjY0M2Y3ZGNmODA4NTYwMzc4OWI5ODkxNDE3NjVj
MmEwNmM0MTM4MGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tl
eS1zb3J0LW9yZGVyLWFjcm9zcy10eXBlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2tleS1zb3J0LW9yZGVyLWFjcm9zcy10eXBlcy5odG1sCkBAIC0xLDk1ICsxLDEw
IEBACi08IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0
PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIga2V5IGNvbXBhcmlzb24iKTsKLQotZnVu
Y3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUg
PSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0
YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBk
ZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlv
biBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0
VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRLZXkxOwotICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBh
ZGRLZXkxKCkKLXsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0
U3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJyk7Iik7Ci0gICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoW10sIEluZmlu
aXR5KTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEtleTI7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGFkZEtleTIo
KQotewotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRk
KFtdLCAtSW5maW5pdHkpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkS2V5MzsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rp
b24gYWRkS2V5MygpCi17Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmpl
Y3RTdG9yZS5hZGQoW10sIDEuMCk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRLZXk0
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1m
dW5jdGlvbiBhZGRLZXk0KCkKLXsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IG9iamVjdFN0b3JlLmFkZChbXSwgJycpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRk
S2V5NTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0K
LQotZnVuY3Rpb24gYWRkS2V5NSgpCi17Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVl
c3QgPSBvYmplY3RTdG9yZS5hZGQoW10sICcxLjAnKTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IG9wZW5BQ3Vyc29yOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuQUN1cnNvcigpCi17Ci0gICAga2V5SW5kZXggPSAw
OwotICAgIHNvcnRlZEtleXMgPSBldmFsQW5kTG9nKCJzb3J0ZWRLZXkgPSBbLUluZmluaXR5LCAx
LjAsIEluZmluaXR5LCAnJywgJzEuMCddOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOwotICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVu
Y3Rpb24gKGV2ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2
ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgICAg
IHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7Ci0gICAgICAg
ICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKLSAgICAgICAgICAgIGV2YWxB
bmRMb2coImtleUluZGV4Kys7Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotCi10ZXN0KCk7Ci0K
LTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9rZXktc29ydC1vcmRlci1hY3Jvc3Mt
dHlwZXMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXktc29ydC1vcmRlci1kYXRlLmh0bWwg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXktc29ydC1vcmRlci1kYXRlLmh0bWwK
aW5kZXggNWQ3MDJkMGJhYWU5YThlNTZjNmVhN2Q4OThjZjg0MjdiYWY0YWMxNi4uMmYwZTRlYzZm
NmRkNjdlYzY2M2JkMzM3MTY3Yjg5M2E4M2UyY2IzMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIva2V5LXNvcnQtb3JkZXItZGF0ZS5odG1sCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleS1zb3J0LW9yZGVyLWRhdGUuaHRtbApAQCAtMSw5MiAr
MSwxMCBAQAotPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNj
cmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGtleSBjb21wYXJpc29uIik7Ci0K
LWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBu
YW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0
IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFt
ZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVu
Y3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50
YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRi
LnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkS2V5MTsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rp
b24gYWRkS2V5MSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9i
amVjdFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycpOyIpOwot
ICAgIGRhdGUxID0gZXZhbEFuZExvZygiZGF0ZTEgPSBuZXcgRGF0ZSgxMDAwKTsiKTsKLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChbXSwgZGF0ZTEp
OyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkS2V5MjsKLSAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYWRkS2V5MigpCi17
Ci0gICAgZGF0ZTAgPSBldmFsQW5kTG9nKCJkYXRlMCA9IG5ldyBEYXRlKDApOyIpOwotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKFtdLCBkYXRlMCk7
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRLZXkzOwotICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBhZGRLZXkzKCkKLXsK
LSAgICBkYXRlMyA9IGV2YWxBbmRMb2coImRhdGUzID0gbmV3IERhdGUoMzAwMCk7Iik7Ci0gICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoW10sIGRhdGUz
KTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEtleTQ7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGFkZEtleTQoKQot
ewotICAgIGRhdGUyID0gZXZhbEFuZExvZygiZGF0ZTIgPSBuZXcgRGF0ZSgyMDAwKTsiKTsKLSAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChbXSwgZGF0
ZTIpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbkFDdXJzb3I7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5B
Q3Vyc29yKCkKLXsKLSAgICBrZXlJbmRleCA9IDA7Ci0gICAgc29ydGVkS2V5cyA9IGV2YWxBbmRM
b2coInNvcnRlZEtleXMgPSBbZGF0ZTAudG9TdHJpbmcoKSwgZGF0ZTEudG9TdHJpbmcoKSwgZGF0
ZTIudG9TdHJpbmcoKSwgZGF0ZTMudG9TdHJpbmcoKV07Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vy
c29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgICAgaWYgKGN1cnNvcikgewotICAg
ICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkudG9TdHJpbmcoKSIsICJzb3J0ZWRLZXlzW2tl
eUluZGV4XSIpOwotICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7
Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOwotICAgICAgICB9Ci0gICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgICAgIH0KLSAgICB9
Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMva2V5
LXNvcnQtb3JkZXItZGF0ZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleS10eXBlLWFycmF5
Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXktdHlwZS1hcnJheS5odG1s
CmluZGV4IGI3MTVmMDNiMzJjNzlhYzBmYzE4N2IwZDc0MzBhZTYwYWRhMmQ2ZTIuLmFiNTBkMWEx
NGZiNGI5NWUzMGViMzdhMjVkZmY4Yzg2OTQyZjMwMzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2tleS10eXBlLWFycmF5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIva2V5LXR5cGUtYXJyYXkuaHRtbApAQCAtMSwyMDggKzEsMTAgQEAK
LTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0K
LWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBrZXkgdHlwZXMiKTsKLQotZnVuY3Rpb24gdGVz
dCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIGV2YWxBbmRMb2coIklE
QlRyYW5zYWN0aW9uID0gc2VsZi5JREJUcmFuc2FjdGlvbiB8fCBzZWxmLklEQlRyYW5zYWN0aW9u
OyIpOwotICAgIHNob3VsZEJlRmFsc2UoIklEQlRyYW5zYWN0aW9uID09IG51bGwiKTsKLQotICAg
IGV2YWxBbmRMb2coIklEQkRhdGFiYXNlRXhjZXB0aW9uID0gc2VsZi5JREJEYXRhYmFzZUV4Y2Vw
dGlvbiB8fCBzZWxmLklEQkRhdGFiYXNlRXhjZXB0aW9uOyIpOwotICAgIHNob3VsZEJlRmFsc2Uo
IklEQkRhdGFiYXNlRXhjZXB0aW9uID09IG51bGwiKTsKLQotCi0gICAgbmFtZSA9IHNlbGYubG9j
YXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0g
ICAgb3BlbnJlcSA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9u
KSIpOwotICAgIG9wZW5yZXEub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgb3BlbnJlcS5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNj
ZXNzKCkKLXsKLSAgICBldmFsQW5kTG9nKCJkYiA9IG9wZW5yZXEucmVzdWx0Iik7Ci0gICAgc2V0
dmVycmVxID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAg
IHNldHZlcnJlcS5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsKLSAgICBzZXR2ZXJyZXEu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJz
aW9uU3VjY2VzcygpCi17Ci0gICAgZGVidWcoInByZXBhcmluZyBkYXRhYmFzZSIpOwotICAgIHRy
YW5zID0gc2V0dmVycmVxLnJlc3VsdDsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gdGVzdFZhbGlk
QXJyYXlLZXlzOwotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0gICAgb2JqZWN0U3Rv
cmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKTsiKTsKLSAgICBk
ZWJ1ZygiIik7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RWYWxpZEFycmF5S2V5cygpCi17Ci0gICAgZXZh
bEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5S
RUFEX1dSSVRFKSIpOwotICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUo
J3N0b3JlJykiKTsKLSAgICBkZWJ1ZygiIik7Ci0KLSAgICBldmFsQW5kTG9nKCJsb25nX2FycmF5
ID0gW107IGZvciAoaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsgbG9uZ19hcnJheS5wdXNoKCdhYmMn
LCAxMjMsIG5ldyBEYXRlKDApLCBbXSk7IH0iKTsKLSAgICBkZWJ1ZygiIik7Ci0KLSAgICBkZWJ1
ZygiYXJyYXkgdGhhdCBjb250YWlucyBub24tbnVtZXJpYyBzZWxmLXJlZmVyZW5jZSIpOwotICAg
IGV2YWxBbmRMb2coInNlbGZfcmVmZXJyZW50aWFsX2FycmF5ID0gW107IHNlbGZfcmVmZXJyZW50
aWFsX2FycmF5LnNlbGYgPSBzZWxmX3JlZmVycmVudGlhbF9hcnJheTsiKTsKLSAgICBkZWJ1Zygi
Iik7Ci0KLSAgICB2YXIgbiA9IDAsIGNhc2VzID0gWwotICAgICAgICAiW10iLAotCi0gICAgICAg
ICJbLUluZmluaXR5XSIsCi0gICAgICAgICJbLU51bWJlci5NQVhfVkFMVUVdIiwKLSAgICAgICAg
IlstMV0iLAotICAgICAgICAiWy1OdW1iZXIuTUlOX1ZBTFVFXSIsCi0gICAgICAgICJbMF0iLAot
ICAgICAgICAiW051bWJlci5NSU5fVkFMVUVdIiwKLSAgICAgICAgIlsxXSIsCi0gICAgICAgICJb
TnVtYmVyLk1BWF9WQUxVRV0iLAotICAgICAgICAiW0luZmluaXR5XSIsCi0KLSAgICAgICAgIlsx
LDIsM10iLAotCi0gICAgICAgICJbbmV3IERhdGUoMCldIiwKLSAgICAgICAgIltuZXcgRGF0ZSgn
MjUyNS0wMS0wMVQwMDowMDowMFonKV0iLAotCi0gICAgICAgICJbbmV3IERhdGUoMCksIG5ldyBE
YXRlKCcyNTI1LTAxLTAxVDAwOjAwOjAwWicpXSIsCi0KLSAgICAgICAgIlsnJ10iLAotICAgICAg
ICAiWydceDAwJ10iLAotICAgICAgICAiWydhYmMxMjMnXSIsCi0KLSAgICAgICAgIlsnYWJjJywg
MTIzXSIsCi0KLSAgICAgICAgIltbXV0iLAotCi0gICAgICAgICJbW10sIFtdXSIsCi0gICAgICAg
ICJbW10sIFtdLCBbXV0iLAotCi0gICAgICAgICJbW1tdXV0iLAotICAgICAgICAiW1tbW11dXV0i
LAotCi0gICAgICAgICJbMTIzLCAnYWJjJywgbmV3IERhdGUoMCksIFtdXSIsCi0gICAgICAgICJb
WzEyMywgJ2FiYycsIG5ldyBEYXRlKDApLCBbXV0sIFs0NTYsICdkZWYnLCBuZXcgRGF0ZSg5OTkp
LCBbW11dXV0iLAotCi0gICAgICAgICJsb25nX2FycmF5IiwKLSAgICAgICAgInNlbGZfcmVmZXJy
ZW50aWFsX2FycmF5IgotICAgIF07Ci0KLSAgICBmdW5jdGlvbiB0ZXN0QXJyYXlQdXRHZXQodmFs
dWUsIGtleSwgY2FsbGJhY2spCi0gICAgewotICAgICAgICBkZWJ1ZygidGVzdGluZyBhcnJheSBr
ZXk6ICIgKyBrZXkpOwotICAgICAgICBwdXRyZXEgPSBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJyIg
KyB2YWx1ZSArICInLCAiICsga2V5ICsgIik7Iik7Ci0gICAgICAgIHB1dHJlcS5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgIHB1dHJlcS5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbigpIHsKLSAgICAgICAgICAgIGdldHJlcSA9IGV2YWxBbmRMb2coInN0b3JlLmdldCgiICsg
a2V5ICsgIik7Iik7Ci0gICAgICAgICAgICBnZXRyZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotICAgICAgICAgICAgZ2V0cmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZ2V0cmVxLnJlc3VsdCIsIHZh
bHVlKTsKLSAgICAgICAgICAgICAgICBkZWJ1ZygiIik7Ci0gICAgICAgICAgICAgICAgY2FsbGJh
Y2soKTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgfQotCi0gICAgZnVuY3Rpb24g
bmV4dFRlc3QoKQotICAgIHsKLSAgICAgICAgdmFyIHRlc3RjYXNlID0gY2FzZXMuc2hpZnQoKTsK
LSAgICAgICAgaWYgKHRlc3RjYXNlKSB7Ci0gICAgICAgICAgICB0ZXN0QXJyYXlQdXRHZXQoInZh
bHVlIiArICgrK24pLCB0ZXN0Y2FzZSwgbmV4dFRlc3QpOwotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgbmV4dFRlc3QoKTsKLQotICAgIHRyYW5zLm9uY29tcGxldGUgPSB0ZXN0SW52YWxpZEFycmF5
S2V5czsKLX0KLQotCi1mdW5jdGlvbiB0ZXN0SW52YWxpZEFycmF5S2V5cygpCi17Ci0gICAgZXZh
bEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5S
RUFEX1dSSVRFKSIpOwotICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUo
J3N0b3JlJykiKTsKLSAgICBkZWJ1ZygiIik7Ci0KLSAgICBkZWJ1ZygiYXJyYXkgdGhhdCBjb250
YWlucyBpdHNlbGY6IGFycmF5ID0gWyBhcnJheSBdIik7Ci0gICAgZXZhbEFuZExvZygiY3ljbGlj
X2FycmF5ID0gW107IGN5Y2xpY19hcnJheS5wdXNoKGN5Y2xpY19hcnJheSkiKTsKLSAgICBzaG91
bGRUaHJvdygiSlNPTi5zdHJpbmdpZnkoY3ljbGljX2FycmF5KSIpOwotCi0gICAgZGVidWcoImFy
cmF5IHRoYXQgY29udGFpbnMgaXRzZWxmLCBvbmUgbGV2ZWwgZG93bjogYXJyYXkgPSBbIFsgYXJy
YXkgXSBdIik7Ci0gICAgZXZhbEFuZExvZygiY3ljbGljX2FycmF5MiA9IFtdOyBjeWNsaWNfYXJy
YXkyLnB1c2goW2N5Y2xpY19hcnJheTJdKSIpOwotICAgIHNob3VsZFRocm93KCJKU09OLnN0cmlu
Z2lmeShjeWNsaWNfYXJyYXkyKSIpOwotCi0gICAgZGVidWcoImFycmF5IHRoYXQgY29udGFpbnMg
aXRzZWxmLCBub3QgYXMgZmlyc3QgZWxlbWVudDogYXJyYXkgPSBbMSwgJ2InLCBbXSwgYXJyYXld
Iik7Ci0gICAgZXZhbEFuZExvZygiY3ljbGljX2FycmF5MyA9IFsxLCAnYicsIFtdXTsgY3ljbGlj
X2FycmF5My5wdXNoKGN5Y2xpY19hcnJheTMpIik7Ci0gICAgc2hvdWxkVGhyb3coIkpTT04uc3Ry
aW5naWZ5KGN5Y2xpY19hcnJheTMpIik7Ci0gICAgZGVidWcoIiIpOwotCi0gICAgZGVidWcoImFy
cmF5IHRoYXQgY29udGFpbnMgYXJyYXkgdGhhdCBjb250YWlucyBpdHNlbGYiKTsKLSAgICBldmFs
QW5kTG9nKCJjeWNsaWNfYXJyYXk0ID0gW2N5Y2xpY19hcnJheV07Iik7Ci0gICAgc2hvdWxkVGhy
b3coIkpTT04uc3RyaW5naWZ5KGN5Y2xpY19hcnJheTQpIik7Ci0gICAgZGVidWcoIiIpOwotCi0g
ICAgdmFyIGludmFsaWRLZXlzID0gWwotICAgICAgICAiWyB2b2lkIDAgXSIsIC8vIHVuZGVmaW5l
ZAotICAgICAgICAiWyB0cnVlIF0iLAotICAgICAgICAiWyBmYWxzZSBdIiwKLSAgICAgICAgIlsg
TmFOIF0iLAotICAgICAgICAiWyBudWxsIF0iLAotICAgICAgICAiWyB7fSBdIiwKLSAgICAgICAg
IlsgZnVuY3Rpb24gKCkge30gXSIsCi0gICAgICAgICJbIC9yZWdleC8gXSIsCi0gICAgICAgICJb
IHNlbGYgXSIsCi0gICAgICAgICJbIHNlbGYuZG9jdW1lbnQgXSIsCi0gICAgICAgICJbIHNlbGYu
ZG9jdW1lbnQuYm9keSBdIiwKLSAgICAgICAgImN5Y2xpY19hcnJheSIsCi0gICAgICAgICJjeWNs
aWNfYXJyYXkyIiwKLSAgICAgICAgImN5Y2xpY19hcnJheTMiLAotICAgICAgICAiY3ljbGljX2Fy
cmF5NCIsCi0gICAgICAgICJBcnJheSgxMDAwKSIgLy8gc3BhcnNlCi0gICAgXTsKLQotICAgIGlu
dmFsaWRLZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSkgewotICAgICAgICBkZWJ1ZygidGVzdGlu
ZyBpbnZhbGlkIGFycmF5IGtleTogIiArIGtleSk7Ci0gICAgICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oInN0b3JlLnB1dCgndmFsdWUnLCAiICsga2V5ICsgIik7IiwgIklEQkRhdGFiYXNlRXhj
ZXB0aW9uLkRBVEFfRVJSIik7Ci0gICAgICAgIGRlYnVnKCIiKTsKLSAgICB9KTsKLQotICAgIHRl
c3REZXB0aExpbWl0cygpOwotfQotCi1mdW5jdGlvbiBtYWtlQXJyYXlPZkRlcHRoKG4pCi17Ci0g
ICAgdmFyIGFycmF5ID0gW107Ci0gICAgd2hpbGUgKC0tbikgewotICAgICAgICBhcnJheSA9IFth
cnJheV07Ci0gICAgfQotICAgIHJldHVybiBhcnJheTsKLX0KLQotZnVuY3Rpb24gdGVzdERlcHRo
TGltaXRzKCkKLXsKLSAgICBzaG91bGRCZSgiaW5kZXhlZERCLmNtcChtYWtlQXJyYXlPZkRlcHRo
KDI1KSwgMCkiLCAiMSIpOwotICAgIHNob3VsZEJlKCJpbmRleGVkREIuY21wKG1ha2VBcnJheU9m
RGVwdGgoMjUwKSwgMCkiLCAiMSIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4
ZWREQi5jbXAobWFrZUFycmF5T2ZEZXB0aCgyNTAwKSwgMCkiLCAiSURCRGF0YWJhc2VFeGNlcHRp
b24uREFUQV9FUlIiKTsKLSAgICBkZWJ1ZygiIik7Ci0KLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0K
LQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMva2V5LXR5cGUt
YXJyYXkuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXktdHlwZS1pbmZpbml0eS5odG1sIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5LXR5cGUtaW5maW5pdHkuaHRtbAppbmRl
eCBkMzk2NGI4OGNhZWFlZDU3MTk2MmFjNjI3MTg0ZjYxY2NhY2ZiM2NjLi4wNTA3NWFjMTY5Zjlk
ODY5YWFiNDg1MzczZmRiM2Y4NjQyYTE1MmRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9rZXktdHlwZS1pbmZpbml0eS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2tleS10eXBlLWluZmluaXR5Lmh0bWwKQEAgLTEsNjIgKzEsMTAgQEAK
LTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0K
LWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBrZXkgdHlwZXMiKTsKLQotZnVuY3Rpb24gdGVz
dCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxv
Y2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlv
bikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3Vj
Y2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbign
MScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0ZXN0R3JvdXAxOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiB0ZXN0R3Jv
dXAxKCkKLXsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3Rv
cmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJyk7Iik7Ci0gICAgZGVi
dWcoInRlc3Qga2V5IGFzIGluZmluaXR5Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoW10sIEluZmluaXR5KTsiKTsKLSAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IHRlc3RHcm91cDI7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDIoKQotewotICAgIGRlYnVnKCJ0
ZXN0IGtleSBhcyBuZWdhdGl2ZSBpbmZpbml0eSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKFtdLCAtSW5maW5pdHkpOyIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gdGVzdEdyb3VwMzsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gdGVzdEdyb3VwMygpCi17Ci0gICAgZmlu
aXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMva2V5LXR5cGUtaW5maW5pdHkuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+
CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlw
YXRoLWJhc2ljcy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1i
YXNpY3MuaHRtbAppbmRleCBhNjZkMmNkODdkYzJlYTM4MTA1YTZiNTI5ZDM0MTZkMTc2YWE5YzMz
Li43MDRjY2M5MmM1NDRkZTIyZTViMTkyZjRjZjg3NTMzYjliNjQxYjc4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWJhc2ljcy5odG1sCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtYmFzaWNzLmh0bWwKQEAgLTEsMTAx
ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0i
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08
c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBmb3IgdmFsaWQgYW5kIGludmFsaWQga2V5cGF0
aHMiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsK
LSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJN
eSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9w
ZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3Vj
Y2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0K
LQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBl
dmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdGVzdFZh
bGlkS2V5UGF0aHM7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RWYWxpZEtleVBhdGhzKCkKLXsKLSAgICBkZWxldGVBbGxP
YmplY3RTdG9yZXMoZGIpOwotCi0gICAgdGVzdEtleVBhdGhzID0gW251bGwsIHVuZGVmaW5lZCwg
JyddOwotICAgIHRlc3RLZXlQYXRocy5mb3JFYWNoKGZ1bmN0aW9uIChrZXlQYXRoKSB7Ci0gICAg
ICAgIGdsb2JhbEtleVBhdGggPSBrZXlQYXRoOwotICAgICAgICBkZWJ1ZygiZ2xvYmFsS2V5UGF0
aCA9ICciICsgZ2xvYmFsS2V5UGF0aCArICInIik7Ci0gICAgICAgIGV2YWxBbmRMb2coImRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCduYW1lJywge2tleVBhdGg6IGdsb2JhbEtleVBhdGh9KSIpOwotICAg
ICAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotICAgIH0pOwotCi0gICAgdGVzdEtleVBh
dGhzID0gWydmb28nLCAnZm9vLmJhci5iYXonXTsKLSAgICB0ZXN0S2V5UGF0aHMuZm9yRWFjaChm
dW5jdGlvbiAoa2V5UGF0aCkgewotICAgICAgICBnbG9iYWxLZXlQYXRoID0ga2V5UGF0aDsKLSAg
ICAgICAgZGVidWcoImdsb2JhbEtleVBhdGggPSAnIiArIGdsb2JhbEtleVBhdGggKyAiJyIpOwot
ICAgICAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScsIHtrZXlQYXRo
OiBnbG9iYWxLZXlQYXRofSkiKTsKLSAgICAgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsK
LSAgICB9KTsKLQotICAgIHRlc3RLZXlQYXRocyA9IFtudWxsLCB1bmRlZmluZWQsICcnLCAnZm9v
JywgJ2Zvby5iYXIuYmF6J107Ci0gICAgdGVzdEtleVBhdGhzLmZvckVhY2goZnVuY3Rpb24gKGtl
eVBhdGgpIHsKLSAgICAgICAgZ2xvYmFsS2V5UGF0aCA9IGtleVBhdGg7Ci0gICAgICAgIGRlYnVn
KCJnbG9iYWxLZXlQYXRoID0gJyIgKyBnbG9iYWxLZXlQYXRoICsgIiciKTsKLSAgICAgICAgc3Rv
cmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUn
KSIpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnbmFtZScsIGdsb2Jh
bEtleVBhdGgpIik7Ci0gICAgICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0gICAgfSk7
Ci0KLSAgICB0ZXN0SW52YWxpZEtleVBhdGhzKCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RJbnZhbGlk
S2V5UGF0aHMoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICB0ZXN0
S2V5UGF0aHMgPSBbJ1tdJywgJ1siZm9vIl0nLCAnWyJmb28iLCAiYmFyIl0nLCAnWyIiLCAiIl0n
LCAnWzEuMCwgMi4wXScsICdbWyJmb28iXV0nLCAnWyJmb28iLCBbImJhciJdXSddOwotICAgIHRl
c3RLZXlQYXRocy5mb3JFYWNoKGZ1bmN0aW9uIChrZXlQYXRoKSB7Ci0gICAgICAgIGdsb2JhbEtl
eVBhdGggPSBrZXlQYXRoOwotICAgICAgICBkZWJ1ZygiZ2xvYmFsS2V5UGF0aCA9ICciICsgZ2xv
YmFsS2V5UGF0aCArICInIik7Ci0gICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCduYW1lJywge2tleVBhdGg6IGdsb2JhbEtleVBhdGh9KSIsICJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5OT05fVFJBTlNJRU5UX0VSUiIpOwotICAgICAgICBkZWxldGVBbGxP
YmplY3RTdG9yZXMoZGIpOwotICAgIH0pOwotCi0gICAgdGVzdEtleVBhdGhzID0gWycgJywgJ2Zv
byAnLCAnZm9vIGJhcicsICdmb28uIGJhcicsICdmb28gLmJhcicsICdmb28uLmJhcicsICcrZm9v
JywgJ2ZvbyUnXTsKLSAgICB0ZXN0S2V5UGF0aHMuZm9yRWFjaChmdW5jdGlvbiAoa2V5UGF0aCkg
ewotICAgICAgICBnbG9iYWxLZXlQYXRoID0ga2V5UGF0aDsKLSAgICAgICAgZGVidWcoImdsb2Jh
bEtleVBhdGggPSAnIiArIGdsb2JhbEtleVBhdGggKyAiJyIpOwotICAgICAgICBldmFsQW5kRXhw
ZWN0RXhjZXB0aW9uKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScsIHtrZXlQYXRoOiBnbG9i
YWxLZXlQYXRofSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9OX1RSQU5TSUVOVF9FUlIiKTsK
LSAgICAgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLSAgICB9KTsKLQotICAgIHRlc3RL
ZXlQYXRocyA9IFsnICcsICdmb28gJywgJ2ZvbyBiYXInLCAnZm9vLiBiYXInLCAnZm9vIC5iYXIn
LCAnZm9vLi5iYXInLCAnK2ZvbycsICdmb28lJ107Ci0gICAgdGVzdEtleVBhdGhzLmZvckVhY2go
ZnVuY3Rpb24gKGtleVBhdGgpIHsKLSAgICAgICAgZ2xvYmFsS2V5UGF0aCA9IGtleVBhdGg7Ci0g
ICAgICAgIGRlYnVnKCJnbG9iYWxLZXlQYXRoID0gJyIgKyBnbG9iYWxLZXlQYXRoICsgIiciKTsK
LSAgICAgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdzdG9yZU5hbWUnKSIpOwotICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5j
cmVhdGVJbmRleCgnbmFtZScsIGdsb2JhbEtleVBhdGgpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9u
Lk5PTl9UUkFOU0lFTlRfRVJSIik7Ci0gICAgICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7
Ci0gICAgfSk7Ci0KLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9rZXlwYXRoLWJhc2ljcy5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL2tleXBhdGgtZWRnZXMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2tleXBhdGgtZWRnZXMuaHRtbAppbmRleCA0NjhmNDAyYjFhNzVkZDc4OGNiMGZmMDc0
YmUwNDI2ZmMwNGNhMWUxLi5mZjlkYWRkMjQ0OGQ1YzMyNWI5M2RlYWIzYTc4OGEyOTZlMjQ1ZTIw
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWVkZ2Vz
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1lZGdlcy5o
dG1sCkBAIC0xLDExOSArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgog
PHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVh
ZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGtleVBh
dGggZWRnZSBjYXNlcyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQ
cmVmaXhlcygpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVE
YXRhYmFzZSgna2V5cGF0aC1lZGdlcycpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7
Ci0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbigna2V5cGF0aC1l
ZGdlcycpIik7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIH07Ci19
Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWco
Im9wZW5TdWNjZXNzKCk6Iik7Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZl
cnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewotICAgICAgICB0cmFu
c2FjdGlvbiA9IHJlcXVlc3QucmVzdWx0OwotICAgICAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0g
dW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9i
amVjdFN0b3JlKCdzdG9yZS13aXRoLXBhdGgnLCB7a2V5UGF0aDogJ2Zvbyd9KSIpOwotICAgICAg
ICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUtd2l0aC1wYXRoLWFuZC1n
ZW5lcmF0b3InLCB7a2V5UGF0aDogJ2ZvbycsIGF1dG9JbmNyZW1lbnQ6IHRydWV9KSIpOwotICAg
ICAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gdGVzdEtleVBhdGhzOwotICAgIH07Ci19Ci0K
LWZ1bmN0aW9uIHRlc3RLZXlQYXRocygpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJ0
ZXN0S2V5UGF0aHMoKToiKTsKLQotICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNh
Y3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlLXdpdGgtcGF0aCddLCBJREJUcmFuc2FjdGlv
bi5SRUFEX1dSSVRFKSIpOwotICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2Fj
dGlvbi5vYmplY3RTdG9yZSgnc3RvcmUtd2l0aC1wYXRoJykiKTsKLQotICAgIGRlYnVnKCIiKTsK
LSAgICBkZWJ1ZygiS2V5IHBhdGggZG9lc24ndCByZXNvbHZlIHRvIGEgdmFsdWU7IHNob3VsZCB5
aWVsZCBudWxsLCBzaG91bGQgdGhyb3cgREFUQV9FUlIiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJzdG9yZS5wdXQobnVsbCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIi
KTsKLQotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiS2V5IHBhdGggZG9lc24ndCByZXNvbHZl
IHRvIGEgdmFsdWU7IHNob3VsZCB5aWVsZCBudWxsLCBzaG91bGQgdGhyb3cgREFUQV9FUlIiKTsK
LSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5wdXQoe30pIiwgIklEQkRhdGFiYXNl
RXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0KLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIktleSBw
YXRoIHJlc29sdmVzIHRvIGEgdmFsdWUgdGhhdCBpcyBpbnZhbGlkIGtleTsgc2hvdWxkIHlpZWxk
ICdpbnZhbGlkJyBrZXksIHNob3VsZCB0aHJvdyBEQVRBX0VSUiIpOwotICAgIGV2YWxBbmRFeHBl
Y3RFeGNlcHRpb24oInN0b3JlLnB1dCh7Zm9vOiBudWxsfSkiLCAiSURCRGF0YWJhc2VFeGNlcHRp
b24uREFUQV9FUlIiKTsKLQotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiS2V5IHBhdGggcmVz
b2x2ZXMgdG8gYSB2YWx1ZSB0aGF0IGlzIHZhbGlkIGtleTsgc2hvdWxkIHlpZWxkICdzdHJpbmcn
IGtleSwgc2hvdWxkIHN1Y2NlZWQiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUu
cHV0KHtmb286ICd6b28nfSkiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKLSAgICAg
ICAgdGVzdFBhc3NlZCgic3RvcmUucHV0IHN1Y2NlZWRlZCIpOwotICAgIH07Ci0KLSAgICB0cmFu
c2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnNhY3Rp
b24ub25jb21wbGV0ZSA9IHRlc3RLZXlQYXRoc0FuZEdlbmVyYXRvcjsKLX0KLQotZnVuY3Rpb24g
dGVzdEtleVBhdGhzQW5kR2VuZXJhdG9yKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWco
InRlc3RLZXlQYXRoc0FuZEdlbmVyYXRvcigpOiIpOwotCi0gICAgdHJhbnNhY3Rpb24gPSBldmFs
QW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUtd2l0aC1wYXRoLWFu
ZC1nZW5lcmF0b3InXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICBzdG9yZSA9
IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlLXdpdGgt
cGF0aC1hbmQtZ2VuZXJhdG9yJykiKTsKLQotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiS2V5
IHBhdGggZG9lc24ndCByZXNvbHZlIHRvIGEgdmFsdWU7IHNob3VsZCB5aWVsZCBudWxsIGJ1dCBp
bnNlcnRpb24gd291bGQgZmFpbCwgc28gcHV0IHJlcXVlc3Qgc2hvdWxkIHJhaXNlIGV4Y2VwdGlv
biIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLnB1dChudWxsKSIsICJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotCi0gICAgZGVidWcoIiIpOwotICAgIGRlYnVn
KCJLZXkgcGF0aCBkb2Vzbid0IHJlc29sdmUgdG8gYSB2YWx1ZTsgc2hvdWxkIHlpZWxkIG51bGwg
YnV0IGluc2VydGlvbiB3b3VsZCBmYWlsLCBzbyBwdXQgcmVxdWVzdCBzaG91bGQgcmFpc2UgZXhj
ZXB0aW9uIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KCdzdHJpbmcn
KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotCi0gICAgZGVidWcoIiIpOwot
ICAgIGRlYnVnKCJLZXkgcGF0aCBkb2Vzbid0IHJlc29sdmUgdG8gYSB2YWx1ZTsgc2hvdWxkIHlp
ZWxkIG51bGwsIGtleSBzaG91bGQgYmUgZ2VuZXJhdGVkLCBwdXQgcmVxdWVzdCBzaG91bGQgc3Vj
Y2VlZCIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5wdXQoe30pIik7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHRlc3RQYXNzZWQoInN0b3JlLnB1dCBz
dWNjZWVkZWQiKTsKLQotICAgICAgICBkZWJ1ZygiIik7Ci0gICAgICAgIGRlYnVnKCJLZXkgcGF0
aCByZXNvbHZlcyB0byBhIHZhbHVlIHRoYXQgaXMgaW52YWxpZCBrZXk7IHNob3VsZCB5aWVsZCAn
aW52YWxpZCcga2V5LCBzaG91bGQgdGhyb3cgREFUQV9FUlIiKTsKLSAgICAgICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KHtmb286IG51bGx9KSIsICJJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5EQVRBX0VSUiIpOwotCi0gICAgICAgIGRlYnVnKCIiKTsKLSAgICAgICAgZGVidWcoIktl
eSBwYXRoIHJlc29sdmVzIHRvIGEgdmFsdWUgdGhhdCBpcyB2YWxpZCBrZXk7IHNob3VsZCB5aWVs
ZCAnc3RyaW5nJyBrZXksIHNob3VsZCBzdWNjZWVkIik7Ci0gICAgICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJzdG9yZS5wdXQoe2ZvbzogJ3pvbyd9KSIpOwotICAgICAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICB0ZXN0UGFzc2VkKCJzdG9yZS5wdXQgc3VjY2Vl
ZGVkIik7Ci0KLSAgICAgICAgfTsKLSAgICB9OwotCi0gICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9
IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBm
aW5pc2hKU1Rlc3Q7Ci19Ci0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2tleXBhdGgtZWRnZXMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWZl
dGNoLWtleS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1mZXRj
aC1rZXkuaHRtbAppbmRleCBjMmM0YTQ4MjNjNTk3YjAyZTQwNGU4YTlkNjM2MmI2MDdhNGQ3MmZl
Li5jOGM4MDhlM2I2MzU0Y2RkZTY4MDQ0ZmUxM2Q1MzcwNDQ5ZjVkNDNjIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWZldGNoLWtleS5odG1sCisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtZmV0Y2gta2V5Lmh0bWwKQEAg
LTEsOTIgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQg
c3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9k
eT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBrZXlQYXRocyIpOwot
Ci1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAg
bmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVz
dCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5h
bWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1
bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBk
Yi5zZXRWZXJzaW9uKCcxJykiKTsKLQotICAgIHRlc3REYXRhID0gW3sgbmFtZTogInNpbXBsZSBp
ZGVudGlmaWVyIiwKLSAgICAgICAgICAgICAgICAgIHZhbHVlOiB7aWQ6MTB9LAotICAgICAgICAg
ICAgICAgICAga2V5UGF0aDogImlkIiwKLSAgICAgICAgICAgICAgICAgIGtleTogMTAgfSwKLSAg
ICAgICAgICAgICAgICB7IG5hbWU6ICJzaW1wbGUgaWRlbnRpZmllcnMiLAotICAgICAgICAgICAg
ICAgICAgdmFsdWU6IHtpZDE6MTAsIGlkMjoyMH0sCi0gICAgICAgICAgICAgICAgICBrZXlQYXRo
OiAiaWQxIiwKLSAgICAgICAgICAgICAgICAgIGtleTogMTAgfSwKLSAgICAgICAgICAgICAgICB7
IG5hbWU6ICJuZXN0ZWQgaWRlbnRpZmllcnMiLAotICAgICAgICAgICAgICAgICAgdmFsdWU6IHtv
dXRlcjp7aW5uZXI6MTB9fSwKLSAgICAgICAgICAgICAgICAgIGtleVBhdGg6ICJvdXRlci5pbm5l
ciIsCi0gICAgICAgICAgICAgICAgICBrZXk6IDEwIH0sCi0gICAgICAgICAgICAgICAgeyBuYW1l
OiAibmVzdGVkIGlkZW50aWZpZXJzIHdpdGggZGlzdHJhY3Rpb25zIiwKLSAgICAgICAgICAgICAg
ICAgIHZhbHVlOiB7b3V0ZXI6e2lubmVyOjEwfSwgaW5uZXI6e291dGVyOjIwfX0sCi0gICAgICAg
ICAgICAgICAgICBrZXlQYXRoOiAib3V0ZXIuaW5uZXIiLAotICAgICAgICAgICAgICAgICAga2V5
OiAxMCB9LAotICAgIF07Ci0gICAgbmV4dFRvT3BlbiA9IDA7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0
ZU9iamVjdFN0b3JlKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInRlc3RpbmcgIiAr
IHRlc3REYXRhW25leHRUb09wZW5dLm5hbWUpOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVz
KGRiKTsKLQotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5j
cmVhdGVPYmplY3RTdG9yZSh0ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1lLCB7a2V5UGF0aDogdGVz
dERhdGFbbmV4dFRvT3Blbl0ua2V5UGF0aH0pOyIpOwotICAgIHJlc3VsdCA9IGV2YWxBbmRMb2co
InJlc3VsdCA9IG9iamVjdFN0b3JlLmFkZCh0ZXN0RGF0YVtuZXh0VG9PcGVuXS52YWx1ZSk7Iik7
Ci0gICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXN1
bHQub25zdWNjZXNzID0gb3BlbkN1cnNvcjsKLX0KLQotZnVuY3Rpb24gb3BlbkN1cnNvcigpCi17
Ci0gICAgcmVzdWx0ID0gZXZhbEFuZExvZygicmVzdWx0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNv
cigpOyIpOwotICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0g
ICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGNoZWNrQ3Vyc29yOwotfQotCi1mdW5jdGlvbiBjaGVja0N1
cnNvcigpCi17Ci0gICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0
LnJlc3VsdDsiKTsKLSAgICBpZiAoY3Vyc29yKSB7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
a2V5IiwgInRlc3REYXRhW25leHRUb09wZW5dLmtleSIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IHRlc3RGYWlsZWQoImN1cnNvciBpcyBudWxsIik7Ci0gICAgfQotICAgIGlmICgrK25leHRUb09w
ZW4gPCB0ZXN0RGF0YS5sZW5ndGgpIHsKLSAgICAgICAgY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RT
dG9yZSgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0KLX0K
LQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9rZXlwYXRo
LWZldGNoLWtleS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleXJhbmdlLXJlcXVpcmVkLWFy
Z3VtZW50cy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cmFuZ2UtcmVx
dWlyZWQtYXJndW1lbnRzLmh0bWwKaW5kZXggODgxNWZmNDQ0MWZlNzQ1MTZiMDc4YjA0NzlmYzkw
NzdlZmNmMTYxOC4uMDViOTk3YWYxNDNmYmM4ZDE2ZjViMDYyNWZhMmI2YTUxOTM0NjZhNCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cmFuZ2UtcmVxdWlyZWQt
YXJndW1lbnRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cmFu
Z2UtcmVxdWlyZWQtYXJndW1lbnRzLmh0bWwKQEAgLTEsMzEgKzEsMTAgQEAKLTwhRE9DVFlQRSBo
dG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJl
ZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9u
KCJUZXN0IEluZGV4ZWREQiBrZXlyYW5nZSByZXF1aXJlZCBhcmd1bWVudHMiKTsKLQotZnVuY3Rp
b24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIHNob3VsZFRo
cm93KCJJREJLZXlSYW5nZS5vbmx5KCk7Iik7Ci0gICAgc2hvdWxkVGhyb3coIklEQktleVJhbmdl
Lmxvd2VyQm91bmQoKTsiKTsKLSAgICBzaG91bGRUaHJvdygiSURCS2V5UmFuZ2UudXBwZXJCb3Vu
ZCgpOyIpOwotICAgIHNob3VsZFRocm93KCJJREJLZXlSYW5nZS5ib3VuZCgxKTsiKTsKLSAgICBz
aG91bGRUaHJvdygiSURCS2V5UmFuZ2UuYm91bmQoKTsiKTsKLQotICAgIGZpbmlzaEpTVGVzdCgp
OwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2tl
eXJhbmdlLXJlcXVpcmVkLWFyZ3VtZW50cy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4K
IDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleXJh
bmdlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlyYW5nZS5odG1sCmlu
ZGV4IDYzOGQ1ZjM4YTY3OTQyMDQ3OGYzOGM2ODhhYmJiZWQxODU5NTQwOTUuLjlmZGMxY2JlZjEz
N2I0NjBlMDVmMTEyM2ZjZWYzZTJjMGY1Nzg4ZjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2tleXJhbmdlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIva2V5cmFuZ2UuaHRtbApAQCAtNCwxOTIgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJl
c291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0Pgot
Ci1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBLZXlSYW5nZS4iKTsKLQotZnVuY3Rpb24g
Y2hlY2tTaW5nbGVLZXlSYW5nZSh2YWx1ZSkKLXsKLSAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2co
IklEQktleVJhbmdlLm9ubHkoIiArIHZhbHVlICsgIikiKTsKLSAgICBzaG91bGRCZSgia2V5UmFu
Z2UubG93ZXIiLCAiIiArIHZhbHVlKTsKLSAgICBzaG91bGRCZSgia2V5UmFuZ2UudXBwZXIiLCAi
IiArIHZhbHVlKTsKLSAgICBzaG91bGRCZUZhbHNlKCJrZXlSYW5nZS5sb3dlck9wZW4iKTsKLSAg
ICBzaG91bGRCZUZhbHNlKCJrZXlSYW5nZS51cHBlck9wZW4iKTsKLX0KLQotZnVuY3Rpb24gY2hl
Y2tMb3dlckJvdW5kS2V5UmFuZ2UodmFsdWUsIG9wZW4pCi17Ci0gICAga2V5UmFuZ2UgPSBldmFs
QW5kTG9nKCJJREJLZXlSYW5nZS5sb3dlckJvdW5kKCIgKyB2YWx1ZSArICIsIiArIG9wZW4gKyAi
KSIpOwotICAgIHNob3VsZEJlKCJrZXlSYW5nZS5sb3dlciIsICIiICsgdmFsdWUpOwotICAgIGlm
IChvcGVuID09PSB1bmRlZmluZWQpCi0gICAgICAgIG9wZW4gPSBmYWxzZTsKLSAgICBzaG91bGRC
ZSgia2V5UmFuZ2UubG93ZXJPcGVuIiwgIiIgKyBvcGVuKTsKLSAgICBzaG91bGRCZU51bGwoImtl
eVJhbmdlLnVwcGVyIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgia2V5UmFuZ2UudXBwZXJPcGVuIik7
Ci19Ci0KLWZ1bmN0aW9uIGNoZWNrVXBwZXJCb3VuZEtleVJhbmdlKHZhbHVlLCBvcGVuKQotewot
ICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygiSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgiICsgdmFs
dWUgKyAiLCIgKyBvcGVuICsgIikiKTsKLSAgICBzaG91bGRCZSgia2V5UmFuZ2UudXBwZXIiLCAi
IiArIHZhbHVlKTsKLSAgICBpZiAob3BlbiA9PT0gdW5kZWZpbmVkKQotICAgICAgICBvcGVuID0g
ZmFsc2U7Ci0gICAgc2hvdWxkQmUoImtleVJhbmdlLnVwcGVyT3BlbiIsICIiICsgb3Blbik7Ci0g
ICAgc2hvdWxkQmVOdWxsKCJrZXlSYW5nZS5sb3dlciIpOwotICAgIHNob3VsZEJlRmFsc2UoImtl
eVJhbmdlLmxvd2VyT3BlbiIpOwotfQotCi1mdW5jdGlvbiBjaGVja0JvdW5kS2V5UmFuZ2UobG93
ZXIsIHVwcGVyLCBsb3dlck9wZW4sIHVwcGVyT3BlbikKLXsKLSAgICBrZXlSYW5nZSA9IGV2YWxB
bmRMb2coIklEQktleVJhbmdlLmJvdW5kKCIgKyBsb3dlciArICIsIiArIHVwcGVyICsgIiwgIiAr
IGxvd2VyT3BlbiArICIsICIgKyB1cHBlck9wZW4gKyAiKSIpOwotICAgIHNob3VsZEJlKCJrZXlS
YW5nZS5sb3dlciIsICIiICsgbG93ZXIpOwotICAgIHNob3VsZEJlKCJrZXlSYW5nZS51cHBlciIs
ICIiICsgdXBwZXIpOwotICAgIGlmIChsb3dlck9wZW4gPT09IHVuZGVmaW5lZCkKLSAgICAgICAg
bG93ZXJPcGVuID0gZmFsc2U7Ci0gICAgaWYgKHVwcGVyT3BlbiA9PT0gdW5kZWZpbmVkKQotICAg
ICAgICB1cHBlck9wZW4gPSBmYWxzZTsKLSAgICBzaG91bGRCZSgia2V5UmFuZ2UubG93ZXJPcGVu
IiwgIiIgKyBsb3dlck9wZW4pOwotICAgIHNob3VsZEJlKCJrZXlSYW5nZS51cHBlck9wZW4iLCAi
IiArIHVwcGVyT3Blbik7Ci19Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRv
clByZWZpeGVzKCk7Ci0gICAgc2hvdWxkQmVGYWxzZSgiJ2xvd2VyJyBpbiBJREJLZXlSYW5nZSIp
OwotICAgIHNob3VsZEJlRmFsc2UoIid1cHBlcicgaW4gSURCS2V5UmFuZ2UiKTsKLSAgICBzaG91
bGRCZUZhbHNlKCInbG93ZXJPcGVuJyBpbiBJREJLZXlSYW5nZSIpOwotICAgIHNob3VsZEJlRmFs
c2UoIid1cHBlck9wZW4nIGluIElEQktleVJhbmdlIik7Ci0gICAgc2hvdWxkQmVUcnVlKCInb25s
eScgaW4gSURCS2V5UmFuZ2UiKTsKLSAgICBzaG91bGRCZVRydWUoIidsb3dlckJvdW5kJyBpbiBJ
REJLZXlSYW5nZSIpOwotICAgIHNob3VsZEJlVHJ1ZSgiJ3VwcGVyQm91bmQnIGluIElEQktleVJh
bmdlIik7Ci0gICAgc2hvdWxkQmVUcnVlKCInYm91bmQnIGluIElEQktleVJhbmdlIik7Ci0KLSAg
ICBkZWJ1ZygiIik7Ci0KLSAgICB2YXIgaW5zdGFuY2UgPSBldmFsQW5kTG9nKCJpbnN0YW5jZSA9
IElEQktleVJhbmdlLm9ubHkoMSkiKTsKLSAgICBzaG91bGRCZVRydWUoIidsb3dlcicgaW4gaW5z
dGFuY2UiKTsKLSAgICBzaG91bGRCZVRydWUoIid1cHBlcicgaW4gaW5zdGFuY2UiKTsKLSAgICBz
aG91bGRCZVRydWUoIidsb3dlck9wZW4nIGluIGluc3RhbmNlIik7Ci0gICAgc2hvdWxkQmVUcnVl
KCIndXBwZXJPcGVuJyBpbiBpbnN0YW5jZSIpOwotICAgIHNob3VsZEJlRmFsc2UoIidvbmx5JyBp
biBpbnN0YW5jZSIpOwotICAgIHNob3VsZEJlRmFsc2UoIidsb3dlckJvdW5kJyBpbiBpbnN0YW5j
ZSIpOwotICAgIHNob3VsZEJlRmFsc2UoIid1cHBlckJvdW5kJyBpbiBpbnN0YW5jZSIpOwotICAg
IHNob3VsZEJlRmFsc2UoIidib3VuZCcgaW4gaW5zdGFuY2UiKTsKLQotICAgIGRlYnVnKCIiKTsK
LQotICAgIGNoZWNrU2luZ2xlS2V5UmFuZ2UoMSk7Ci0gICAgY2hlY2tTaW5nbGVLZXlSYW5nZSgz
LjE0KTsKLSAgICBjaGVja1NpbmdsZUtleVJhbmdlKCInYSciKTsKLQotICAgIGNoZWNrTG93ZXJC
b3VuZEtleVJhbmdlKDEwLCB0cnVlKTsKLSAgICBjaGVja0xvd2VyQm91bmRLZXlSYW5nZSgxMSwg
ZmFsc2UpOwotICAgIGNoZWNrTG93ZXJCb3VuZEtleVJhbmdlKDEyKTsKLSAgICBjaGVja0xvd2Vy
Qm91bmRLZXlSYW5nZSgxMC4xLCB0cnVlKTsKLSAgICBjaGVja0xvd2VyQm91bmRLZXlSYW5nZSgx
MS4yLCBmYWxzZSk7Ci0gICAgY2hlY2tMb3dlckJvdW5kS2V5UmFuZ2UoMTIuMyk7Ci0gICAgY2hl
Y2tMb3dlckJvdW5kS2V5UmFuZ2UoIidhYSciLCB0cnVlKTsKLSAgICBjaGVja0xvd2VyQm91bmRL
ZXlSYW5nZSgiJ2FiJyIsIGZhbHNlKTsKLSAgICBjaGVja0xvd2VyQm91bmRLZXlSYW5nZSgiJ2Fj
JyIpOwotCi0gICAgY2hlY2tVcHBlckJvdW5kS2V5UmFuZ2UoMjAsIHRydWUpOwotICAgIGNoZWNr
VXBwZXJCb3VuZEtleVJhbmdlKDIxLCBmYWxzZSk7Ci0gICAgY2hlY2tVcHBlckJvdW5kS2V5UmFu
Z2UoMjIpOwotICAgIGNoZWNrVXBwZXJCb3VuZEtleVJhbmdlKDIwLjIsIHRydWUpOwotICAgIGNo
ZWNrVXBwZXJCb3VuZEtleVJhbmdlKDIxLjMsIGZhbHNlKTsKLSAgICBjaGVja1VwcGVyQm91bmRL
ZXlSYW5nZSgyMi40KTsKLSAgICBjaGVja1VwcGVyQm91bmRLZXlSYW5nZSgiJ2JhJyIsIHRydWUp
OwotICAgIGNoZWNrVXBwZXJCb3VuZEtleVJhbmdlKCInYmInIiwgZmFsc2UpOwotICAgIGNoZWNr
VXBwZXJCb3VuZEtleVJhbmdlKCInYmMnIik7Ci0KLSAgICBjaGVja0JvdW5kS2V5UmFuZ2UoMzAs
IDQwKTsKLSAgICBjaGVja0JvdW5kS2V5UmFuZ2UoMzEsIDQxLCBmYWxzZSwgZmFsc2UpOwotICAg
IGNoZWNrQm91bmRLZXlSYW5nZSgzMiwgNDIsIGZhbHNlLCB0cnVlKTsKLSAgICBjaGVja0JvdW5k
S2V5UmFuZ2UoMzMsIDQzLCB0cnVlLCBmYWxzZSk7Ci0gICAgY2hlY2tCb3VuZEtleVJhbmdlKDM0
LCA0NCwgdHJ1ZSwgdHJ1ZSk7Ci0KLSAgICBjaGVja0JvdW5kS2V5UmFuZ2UoMzAuMSwgNDAuMik7
Ci0gICAgY2hlY2tCb3VuZEtleVJhbmdlKDMxLjMsIDQxLjQsIGZhbHNlLCBmYWxzZSk7Ci0gICAg
Y2hlY2tCb3VuZEtleVJhbmdlKDMyLjUsIDQyLjYsIGZhbHNlLCB0cnVlKTsKLSAgICBjaGVja0Jv
dW5kS2V5UmFuZ2UoMzMuNywgNDMuOCwgdHJ1ZSwgZmFsc2UpOwotICAgIGNoZWNrQm91bmRLZXlS
YW5nZSgzNC45LCA0NC4wLCB0cnVlLCB0cnVlKTsKLQotICAgIGNoZWNrQm91bmRLZXlSYW5nZSgi
J2FhYSciLCAiJ2FiYSciLCBmYWxzZSwgZmFsc2UpOwotICAgIGNoZWNrQm91bmRLZXlSYW5nZSgi
J2FhYiciLCAiJ2FiYiciKTsKLSAgICBjaGVja0JvdW5kS2V5UmFuZ2UoIidhYWMnIiwgIidhYmMn
IiwgZmFsc2UsIGZhbHNlKTsKLSAgICBjaGVja0JvdW5kS2V5UmFuZ2UoIidhYWQnIiwgIidhYmQn
IiwgZmFsc2UsIHRydWUpOwotICAgIGNoZWNrQm91bmRLZXlSYW5nZSgiJ2FhZSciLCAiJ2FiZSci
LCB0cnVlLCBmYWxzZSk7Ci0gICAgY2hlY2tCb3VuZEtleVJhbmdlKCInYWFmJyIsICInYWJmJyIs
IHRydWUsIHRydWUpOwotCi0gICAgdHJ5IHsKLSAgICAgICAgZGVidWcoIlBhc3NpbmcgYW4gaW52
YWxpZCBrZXkgaW50byBvbmx5KHt9KSIpOwotICAgICAgICBJREJLZXlSYW5nZS5vbmx5KHt9KTsK
LSAgICAgICAgdGVzdEZhaWxlZCgiTm8gZXhjZXB0aW9uIHRocm93biIpOwotICAgIH0gY2F0Y2gg
KGUpIHsKLSAgICAgICAgdGVzdFBhc3NlZCgiQ2F1Z2h0IGV4Y2VwdGlvbjogIiArIGUudG9TdHJp
bmcoKSk7Ci0gICAgfQotCi0gICAgdHJ5IHsKLSAgICAgICAgZGVidWcoIlBhc3NpbmcgYW4gaW52
YWxpZCBrZXkgaW50byB1cHBlckJvdW5kKHt9KSIpOwotICAgICAgICBJREJLZXlSYW5nZS51cHBl
ckJvdW5kKHt9KTsKLSAgICAgICAgdGVzdEZhaWxlZCgiTm8gZXhjZXB0aW9uIHRocm93biIpOwot
ICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgdGVzdFBhc3NlZCgiQ2F1Z2h0IGV4Y2VwdGlvbjog
IiArIGUudG9TdHJpbmcoKSk7Ci0gICAgfQotIAotICAgIHRyeSB7Ci0gICAgICAgIGRlYnVnKCJQ
YXNzaW5nIGFuIGludmFsaWQga2V5IGludG8gbG93ZXJCb3VuZCh7fSkiKTsKLSAgICAgICAgSURC
S2V5UmFuZ2UubG93ZXJCb3VuZCh7fSk7Ci0gICAgICAgIHRlc3RGYWlsZWQoIk5vIGV4Y2VwdGlv
biB0aHJvd24iKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIHRlc3RQYXNzZWQoIkNhdWdo
dCBleGNlcHRpb246ICIgKyBlLnRvU3RyaW5nKCkpOwotICAgIH0KLQotICAgIHRyeSB7Ci0gICAg
ICAgIGRlYnVnKCJQYXNzaW5nIGFuIGludmFsaWQga2V5IGludG8gYm91bmQobnVsbCwge30pIik7
Ci0gICAgICAgIElEQktleVJhbmdlLmJvdW5kKG51bGwsIHt9KTsKLSAgICAgICAgdGVzdEZhaWxl
ZCgiTm8gZXhjZXB0aW9uIHRocm93biIpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgdGVz
dFBhc3NlZCgiQ2F1Z2h0IGV4Y2VwdGlvbjogIiArIGUudG9TdHJpbmcoKSk7Ci0gICAgfQotCi0g
ICAgdHJ5IHsKLSAgICAgICAgZGVidWcoIlBhc3NpbmcgYW4gaW52YWxpZCBrZXkgaW50byBib3Vu
ZCh7fSxudWxsKSIpOwotICAgICAgICBJREJLZXlSYW5nZS5ib3VuZCh7fSwgbnVsbCk7Ci0gICAg
ICAgIHRlc3RGYWlsZWQoIk5vIGV4Y2VwdGlvbiB0aHJvd24iKTsKLSAgICB9IGNhdGNoIChlKSB7
Ci0gICAgICAgIHRlc3RQYXNzZWQoIkNhdWdodCBleGNlcHRpb246ICIgKyBlLnRvU3RyaW5nKCkp
OwotICAgIH0KLQotICAgIHRyeSB7Ci0gICAgICAgIGRlYnVnKCJQYXNzaW5nIGFuIGludmFsaWQg
a2V5IGludG8gYm91bmQoe30sIHt9KSIpOwotICAgICAgICBJREJLZXlSYW5nZS5ib3VuZCh7fSwg
e30pOwotICAgICAgICB0ZXN0RmFpbGVkKCJObyBleGNlcHRpb24gdGhyb3duIik7Ci0gICAgfSBj
YXRjaCAoZSkgewotICAgICAgICB0ZXN0UGFzc2VkKCJDYXVnaHQgZXhjZXB0aW9uOiAiICsgZS50
b1N0cmluZygpKTsKLSAgICB9Ci0KLSAgICBkZWJ1ZygiTG93ZXIga2V5IGdyZWF0ZXIgdGhhbiBo
aWdoZXIga2V5LCBib3VuZCg0LCAzKSIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIklE
QktleVJhbmdlLmJvdW5kKDQsIDMpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7
Ci0KLSAgICBkZWJ1ZygiRXF1YWwga2V5cywgZWl0aGVyIG9mIHRoZSBib3VuZHMgaXMgb3Blbiwg
Ym91bmQoNCwgNCwgdHJ1ZSwgZmFsc2UpIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigi
SURCS2V5UmFuZ2UuYm91bmQoNCwgNCwgdHJ1ZSwgZmFsc2UpIiwgIklEQkRhdGFiYXNlRXhjZXB0
aW9uLkRBVEFfRVJSIik7Ci0KLSAgICBkZWJ1ZygiRXF1YWwga2V5cywgZWl0aGVyIG9mIHRoZSBi
b3VuZHMgaXMgb3BlbiwgYm91bmQoNCwgNCwgZmFsc2UsIHRydWUpIik7Ci0gICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigiSURCS2V5UmFuZ2UuYm91bmQoNCwgNCwgZmFsc2UsIHRydWUpIiwgIklE
QkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0KLSAgICBkZWJ1ZygiRXF1YWwga2V5cywg
ZWl0aGVyIG9mIHRoZSBib3VuZHMgaXMgb3BlbiwgYm91bmQoNCwgNCwgdHJ1ZSwgdHJ1ZSkiKTsK
LSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJJREJLZXlSYW5nZS5ib3VuZCg0LCA0LCB0cnVl
LCB0cnVlKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotCi0gICAgZGVidWco
IkVxdWFsIGtleXMsIG5vbmUgb2YgdGhlIGJvdW5kcyBpcyBvcGVuLCBib3VuZCg0LCA0LCBmYWxz
ZSwgZmFsc2UpIik7Ci0gICAgSURCS2V5UmFuZ2UuYm91bmQoNCwgNCwgZmFsc2UsIGZhbHNlKTsK
LX0KLQotdGVzdCgpOwotCi1maW5pc2hKU1Rlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2tleXJhbmdlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbGlzdC1vcmRl
cmluZy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbGlzdC1vcmRlcmluZy5o
dG1sCmluZGV4IDA3NDEyZjViNTNjYzQxNmUwOTlkYzIyZTk5MzFlZjE4ZjVmODAzZmUuLmI5ZDli
MzU5MTk1MzRiODZlMDVkZmY5NDJmZjZmODVlMzM2M2E1NTggMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2xpc3Qtb3JkZXJpbmcuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9saXN0LW9yZGVyaW5nLmh0bWwKQEAgLTQsOTIgKzQsNyBAQAog
PHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJv
ZHk+Ci08aW5wdXQgdHlwZT0iZmlsZSIgaWQ9ImZpbGVJbnB1dCIgbXVsdGlwbGU+PC9pbnB1dD4K
LTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IHN0cmluZyBsaXN0IG9yZGVyaW5nIGluIElu
ZGV4ZWREQi4iKTsKLQotdmFyIGV4cGVjdGVkX29yZGVyID0gWwotICAiIiwKLSAgIlx4MDAiLCAv
LyAnTlVMTCcgKFUrMDAwMCkKLSAgIjAiLAotICAiMSIsCi0gICJBIiwKLSAgIkIiLAotICAiYSIs
Ci0gICJiIiwKLSAgIlx4N0YiLCAvLyAnREVMRVRFJyAoVSswMDdGKQotICAiXHhDMCIsIC8vICdM
QVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggR1JBVkUnIChVKzAwQzApCi0gICJceEMxIiwgLy8g
J0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBBQ1VURScgKFUrMDBDMSkKLSAgIlx4RTAiLCAv
LyAnTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBHUkFWRScgKFUrMDBFMCkKLSAgIlx4RTEiLCAv
LyAnTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBBQ1VURScgKFUrMDBFMSkKLSAgIlx4RkYiLCAv
LyAnTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBESUFFUkVTSVMnIChVKzAwRkYpCi0gICJcdTAx
MDAiLCAvLyAnTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIE1BQ1JPTicgKFUrMDEwMCkKLSAg
Ilx1MTAwMCIsIC8vICdNWUFOTUFSIExFVFRFUiBLQScgKFUrMTAwMCkKLSAgIlx1RDgzNFx1REQx
RSIsIC8vICdNVVNJQ0FMIFNZTUJPTCBHLUNMRUYnIChVKzFEMTFFKSwgVVRGLTE2IHN1cnJvZ2F0
ZSBwYWlycwotICAiXHVGRkZEIiAvLyAnUkVQTEFDRU1FTlQgQ0hBUkFDVEVSJyAoVStGRkZEKQot
XTsKLXZhciBpLCB0bXAsIHBlcm11dGVkX29yZGVyID0gZXhwZWN0ZWRfb3JkZXIuc2xpY2UoKTsg
cGVybXV0ZWRfb3JkZXIucmV2ZXJzZSgpOwotZm9yIChpID0gMDsgaSA8IHBlcm11dGVkX29yZGVy
Lmxlbmd0aCAtIDI7IGkgKz0gMikgewotICAgIHRtcCA9IHBlcm11dGVkX29yZGVyW2ldOwotICAg
IHBlcm11dGVkX29yZGVyW2ldID0gcGVybXV0ZWRfb3JkZXJbaSArIDFdOwotICAgIHBlcm11dGVk
X29yZGVyW2kgKyAxXSA9IHRtcDsKLX0KLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3Zl
VmVuZG9yUHJlZml4ZXMoKTsKLSAgICBkZWJ1ZygiY2hlY2sgdGhhdCB0aGUgZXhwZWN0ZWQgb3Jk
ZXIgaXMgdGhlIGNhbm9uaWNhbCBKUyBzb3J0IG9yZGVyOiIpOwotICAgIGV2YWxBbmRMb2coInNv
cnRlZF9vcmRlciA9IGV4cGVjdGVkX29yZGVyLnNsaWNlKCk7IHNvcnRlZF9vcmRlci5zb3J0KCki
KTsKLSAgICBzaG91bGRCZVRydWUoImFyZUFycmF5c0VxdWFsKHNvcnRlZF9vcmRlciwgZXhwZWN0
ZWRfb3JkZXIpIik7Ci0gICAgdGVzdFN0b3Jlc0FuZEluZGV4ZXMoKTsKLX0KLQotCi0KLWZ1bmN0
aW9uIHRlc3RTdG9yZXNBbmRJbmRleGVzKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWco
InRlc3RTdG9yZXNBbmRJbmRleGVzKCk6Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImlu
ZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgnbGlzdC1vcmRlcmluZycpIik7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbihlKSB7Ci0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
b3BlbignbGlzdC1vcmRlcmluZycpIik7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KGUpIHsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImRiID0gcmVxdWVzdC5yZXN1bHQiKTsKLSAg
ICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGIudmVyc2lvbiIsICIiKTsKLSAgICAg
ICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICAg
ICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAg
ICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAg
dHJhbnMgPSByZXF1ZXN0LnJlc3VsdDsKLQotICAgICAgICAgICAgICAgIGRlYnVnKCIiKTsKLSAg
ICAgICAgICAgICAgICBkZWJ1ZygiT2JqZWN0IHN0b3JlczoiKTsKLSAgICAgICAgICAgICAgICBw
ZXJtdXRlZF9vcmRlci5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCIgKyBKU09OLnN0cmluZ2lmeShu
YW1lKSArIikiKTsKLSAgICAgICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgICAgIHNob3Vs
ZEJlVHJ1ZSgiYXJlQXJyYXlzRXF1YWwoZGIub2JqZWN0U3RvcmVOYW1lcywgZXhwZWN0ZWRfb3Jk
ZXIpIik7Ci0KLSAgICAgICAgICAgICAgICBkZWJ1ZygiIik7Ci0gICAgICAgICAgICAgICAgZGVi
dWcoIkluZGV4ZXM6Iik7Ci0gICAgICAgICAgICAgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9y
ZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7Ci0gICAgICAgICAgICAgICAgcGVy
bXV0ZWRfb3JkZXIuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkgewotICAgICAgICAgICAgICAgICAg
ICBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgiICsgSlNPTi5zdHJpbmdpZnkobmFtZSkg
KyIsICdrZXlQYXRoJykiKTsKLSAgICAgICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgICAg
IHNob3VsZEJlVHJ1ZSgiYXJlQXJyYXlzRXF1YWwoc3RvcmUuaW5kZXhOYW1lcywgZXhwZWN0ZWRf
b3JkZXIpIik7Ci0KLSAgICAgICAgICAgICAgICB0cmFucy5vbmNvbXBsZXRlID0gZmluaXNoSlNU
ZXN0OwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICB9OwotfQotCi10ZXN0KCk7Ci0K
LTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9saXN0LW9yZGVyaW5nLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9hZGQtdHdpY2UtZmFpbHVyZS5odG1sIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9hZGQtdHdpY2UtZmFpbHVyZS5odG1sCmlu
ZGV4IGNkZDIxMmJjMzFiNWVjNGUzZDQ2ZmEzMzliNzhlOGNhMjcwOWFkYTcuLmNjMzkxM2RhZmIy
YjhkNTkxYTA1MmI4ZjU3NDgwM2FmOWUxMDU1MjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvYWRkLXR3aWNlLWZhaWx1cmUuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2FkZC10d2ljZS1mYWlsdXJlLmh0bWwK
QEAgLTEsNzAgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLQotICBvcmlnaW5hbCB0ZXN0
OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIv
dGVzdC90ZXN0X2FkZF90d2ljZV9mYWlsdXJlLmh0bWwKLSAgbGljZW5zZSBvZiBvcmlnaW5hbCB0
ZXN0OgotICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCi0gICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvICIKLS0tPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0K
LWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBiZWhhdmlvciBhZGRpbmcgdGhlIHNhbWUgcHJv
cGVydHkgdHdpY2UiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJl
Zml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2Ny
aXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5k
TG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBjbGVhbkRhdGFiYXNlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKLXsKLSAgICBkZWxldGVB
bGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nKTsiKTsKLSAgICBrZXkgPSBldmFs
QW5kTG9nKCJrZXkgPSAxMCIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
b2JqZWN0U3RvcmUuYWRkKHt9LCBrZXkpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRk
Rmlyc3RTdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotfQotCi1mdW5jdGlvbiBhZGRGaXJzdFN1Y2Nlc3MoKQotewotICAgIHNob3VsZEJlKCJy
ZXF1ZXN0LnJlc3VsdCIsICJrZXkiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IG9iamVjdFN0b3JlLmFkZCh7fSwga2V5KTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gYWRkU2Vj
b25kRXhwZWN0ZWRFcnJvcjsKLX0KLQotZnVuY3Rpb24gYWRkU2Vjb25kRXhwZWN0ZWRFcnJvcigp
Ci17Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5lcnJvckNvZGUiLCAiSURCRGF0YWJhc2VF
eGNlcHRpb24uQ09OU1RSQUlOVF9FUlIiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10
ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9hZGQtdHdpY2UtZmFp
bHVyZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KLQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9hdXRvaW5jcmVtZW50
LWluZGV4ZXMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvYXV0
b2luY3JlbWVudC1pbmRleGVzLmh0bWwKaW5kZXggMDlmZmVmYWRmY2ZjY2Y3YTFkNjU4NzYxZDg1
YjU4MzllODFiZjE3MC4uZDcyOWRlODdjZjg4OTJmZjk3YTE1ZmQyMGE1ZGE2MzliZGMzM2U0MCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9hdXRvaW5j
cmVtZW50LWluZGV4ZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL2F1dG9pbmNyZW1lbnQtaW5kZXhlcy5odG1sCkBAIC0xLDEwMCArMSwxMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5v
cmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfYXV0b0luY3JlbWVu
dF9pbmRleGVzLmh0bWw/Zm9yY2U9MQotICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Ci0gICAg
IiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KLSAgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgotLS0+
CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hh
cmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRp
b24oIlRlc3QgSW5kZXhlZERCIGluZGV4ZXMgYWdhaW5zdCBhdXRvaW5jcmVtZW50aW5nIGtleXMi
KTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQot
ICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15
IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Bl
bihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNj
ZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQot
Ci1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXR1cE9i
amVjdFN0b3JlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotfQotCi1mdW5jdGlvbiBzZXR1cE9iamVjdFN0b3JlKCkKLXsKLSAgICB0cmFucyA9IGV2ZW50
LnRhcmdldC5yZXN1bHQ7Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9i
amVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9y
ZSgnZm9vJywgeyBrZXlQYXRoOiAnaWQnLCBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOyIpOwotICAg
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdmaXJzdCcsICdmaXJzdCcpOyIp
OwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdzZWNvbmQnLCAnc2Vj
b25kJyk7Iik7Ci0gICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ3RoaXJk
JywgJ3RoaXJkJyk7Iik7Ci0gICAgZGF0YSA9IGV2YWxBbmRMb2coImRhdGEgPSB7IGZpcnN0OiAn
Zm9vJywgc2Vjb25kOiAnZm9vJywgdGhpcmQ6ICdmb28nIH07Iik7Ci0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoZGF0YSk7Iik7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBzZXR1cEluZGV4ZXM7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldHVwSW5kZXhlcygpCi17Ci0gICAg
a2V5ID0gZXZhbEFuZExvZygia2V5ID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICBzaG91
bGRCZUZhbHNlKCJrZXkgPT0gbnVsbCIpOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBzZXRWZXJz
aW9uQ29tcGxldGU7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb25Db21wbGV0ZSgpCi17Ci0gICAg
b2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLnRyYW5zYWN0aW9uKCdm
b28nKS5vYmplY3RTdG9yZSgnZm9vJyk7Iik7Ci0gICAgZmlyc3QgPSBldmFsQW5kTG9nKCJmaXJz
dCA9IG9iamVjdFN0b3JlLmluZGV4KCdmaXJzdCcpOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gZmlyc3QuZ2V0KCdmb28nKTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGNoZWNrRmlyc3RJbmRleEFuZFByZXBhcmVTZWNvbmQ7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNoZWNrRmlyc3RJbmRl
eEFuZFByZXBhcmVTZWNvbmQoKQotewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0
LmlkIiwgImtleSIpOwotICAgIHNlY29uZCA9IGV2YWxBbmRMb2coInNlY29uZCA9IG9iamVjdFN0
b3JlLmluZGV4KCdzZWNvbmQnKTsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IHNlY29uZC5nZXQoJ2ZvbycpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2hlY2tT
ZWNvbmRJbmRleEFuZFByZXBhcmVUaGlyZDsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY2hlY2tTZWNvbmRJbmRleEFuZFByZXBh
cmVUaGlyZCgpCi17Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQuaWQiLCAia2V5
Iik7Ci0gICAgdGhpcmQgPSBldmFsQW5kTG9nKCJ0aGlyZCA9IG9iamVjdFN0b3JlLmluZGV4KCd0
aGlyZCcpOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gdGhpcmQuZ2V0
KCdmb28nKTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNoZWNrVGhpcmRJbmRleDsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rp
b24gY2hlY2tUaGlyZEluZGV4KCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3Vs
dC5pZCIsICJrZXkiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9hdXRvaW5jcmVtZW50LWluZGV4ZXMuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvYmFkLWtleXBhdGguaHRtbCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvYmFkLWtleXBhdGguaHRtbAppbmRl
eCAxMWVlMDZkNDFjZWI2YmNjOGVmYjY3ZmZlMDI2ODU5MWVmZDdjYWY2Li4wYWU0OTIxMDkwZTNk
ZWQ1YjdhYjg4MTM1MjAzZWUxOGNiMWMzOTY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL2JhZC1rZXlwYXRoLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9iYWQta2V5cGF0aC5odG1sCkBAIC0xLDYxICsxLDEw
IEBACi08IURPQ1RZUEUgaHRtbD4KLTwhLS0KLSAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5t
b3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9iYWRf
a2V5cGF0aC5odG1sCi0gIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgotICAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgog
PGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwv
c2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJ
bmRleGVkREIgYWRkaW5nIHByb3BlcnR5IHdpdGggaW52YWxpZCBrZXlwYXRoIik7Ci0KLWZ1bmN0
aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0g
c2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFi
YXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVz
Y3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24g
b3BlblN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZl
cnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rp
b24gY2xlYW5EYXRhYmFzZSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQot
ICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnZm9vJywgeyBrZXlQYXRoOiAna2V5UGF0aCcgfSk7Iik7Ci0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoeyBrZXlQYXRoOiAnZm9vJyB9
KTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEZpcnN0U3VjY2VzczsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYWRk
Rmlyc3RTdWNjZXNzKCkKLXsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJyZXF1ZXN0ID0g
b2JqZWN0U3RvcmUuYWRkKHt9KTsiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsK
LSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9iYWQta2V5cGF0aC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwv
Ym9keT4KIDwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW96aWxsYS9jbGVhci5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9jbGVhci5odG1sCmluZGV4IDI3OTMyODU0ZmU2Mjg5MDM1NGNlZTBkNWI4NGQ5OGY5YmNm
M2I3MDQuLjYwZDkzY2QwNGI2Njc4NzQ0MjM4YWViZmI3ZjQ1MzliOTQxZjZkMjUgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY2xlYXIuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NsZWFyLmh0bWwKQEAgLTEs
NzEgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLQotICBvcmlnaW5hbCB0ZXN0OiBodHRw
Oi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90
ZXN0X2NsZWFyLmh0bWwKLSAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgotICAgICIgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCi0gICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKLS0tPgogPGh0bWw+
CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+
PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0
IEluZGV4ZWREQidzIGNsZWFyaW5nIGFuIG9iamVjdCBzdG9yZSIpOwotCi1mdW5jdGlvbiB0ZXN0
KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9j
YXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9u
KSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNj
ZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIp
OwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcx
JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFu
RGF0YWJhc2UoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBvYmpl
Y3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUo
J2ZvbycsIHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9KTsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZCh7fSk7Iik7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5v
bmNvbXBsZXRlID0gY2xlYXI7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFyKCkKLXsKLSAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbignZm9vJykub2JqZWN0U3RvcmUoJ2Zvbycp
LmNsZWFyKCk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlJFQURfT05MWV9FUlIiKTsKLSAgICBl
dmFsQW5kTG9nKCJkYi50cmFuc2FjdGlvbignZm9vJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklU
RSkub2JqZWN0U3RvcmUoJ2ZvbycpLmNsZWFyKCk7Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBkYi50cmFuc2FjdGlvbignZm9vJykub2JqZWN0U3RvcmUoJ2ZvbycpLm9w
ZW5DdXJzb3IoKTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFyZVdlQ2xlYXJZZXQ7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0
aW9uIGFyZVdlQ2xlYXJZZXQoKQotewotICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9
IHJlcXVlc3QucmVzdWx0OyIpOwotICAgIHNob3VsZEJlKCJjdXJzb3IiLCAibnVsbCIpOwotICAg
IGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2NsZWFyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9o
dG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L2NyZWF0ZS1pbmRleC11bmlxdWUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vemlsbGEvY3JlYXRlLWluZGV4LXVuaXF1ZS5odG1sCmluZGV4IDBlNjQxMTNkYjVhZGM0ZmZm
YzQzYjQ0ZDYxYzU0NDZjMGU5Y2FjYTEuLmMxOWEyZjU1ZTMzMzVkMzMyOTA2MTEyNmRmOGRhODZm
MzFlZmI5NmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEvY3JlYXRlLWluZGV4LXVuaXF1ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL21vemlsbGEvY3JlYXRlLWluZGV4LXVuaXF1ZS5odG1sCkBAIC0xLDcyICsxLDEwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTwhLS0KLSAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3pp
bGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9jcmVhdGVf
aW5kZXguaHRtbAotICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Ci0gICAgIiBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KLSAgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgotLS0+CiA8aHRtbD4KIDxo
ZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Nj
cmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5k
ZXhlZERCJ3MgY3JlYXRpbmcgdW5pcXVlIGluZGV4IGFuZCB1cGRhdGluZyBpbmRleE5hbWVzIik7
Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAg
ICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBU
ZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4o
bmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2Vz
czsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQot
ZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5k
VmVyaWZ5SW5kZXg7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUFuZFZlcmlmeUluZGV4KCkKLXsKLSAgICBkZWxldGVB
bGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdhJywgeyBrZXlQYXRoOiAnaWQnLCBhdXRv
SW5jcmVtZW50OiB0cnVlIH0pOyIpOwotCi0gICAgaW5kZXhOYW1lID0gIjEiOwotICAgIGluZGV4
S2V5UGF0aCA9ICJ1bmlxdWVfdmFsdWUiOwotICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXgg
PSBvYmplY3RTdG9yZS5jcmVhdGVJbmRleChpbmRleE5hbWUsIGluZGV4S2V5UGF0aCwgeyB1bmlx
dWU6IHRydWUgfSk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkNPTlNUUkFJTlRfRVJSIik7Ci0g
ICAgc2hvdWxkQmUoImluZGV4Lm5hbWUiLCAiaW5kZXhOYW1lIik7Ci0gICAgc2hvdWxkQmUoImlu
ZGV4LmtleVBhdGgiLCAiaW5kZXhLZXlQYXRoIik7Ci0gICAgc2hvdWxkQmUoImluZGV4LnVuaXF1
ZSIsICJ0cnVlIik7Ci0gICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLmluZGV4TmFtZXMubGVuZ3Ro
IiwgIjEiKTsKLQotICAgIGZvdW5kTmV3bHlDcmVhdGVkSW5kZXggPSBmYWxzZTsKLSAgICBmb3Ig
KHZhciBrID0gMDsgayA8IG9iamVjdFN0b3JlLmluZGV4TmFtZXMubGVuZ3RoOyBrKyspIHsKLSAg
ICAgICAgaWYgKG9iamVjdFN0b3JlLmluZGV4TmFtZXMuaXRlbShrKSA9PSBpbmRleE5hbWUpIHsK
LSAgICAgICAgICAgIGZvdW5kTmV3bHlDcmVhdGVkSW5kZXggPSB0cnVlOwotICAgICAgICB9Ci0g
ICAgfQotICAgIHNob3VsZEJlVHJ1ZSgiZm91bmROZXdseUNyZWF0ZWRJbmRleCIpOwotICAgIHNo
b3VsZEJlKCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24uZGIiLCAiZGIiKTsKLSAgICBzaG91bGRC
ZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLnJlYWR5U3RhdGUiLCAiSURCVHJhbnNhY3Rpb24u
TE9BRElORyIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24ubW9kZSIs
ICJJREJUcmFuc2FjdGlvbi5WRVJTSU9OX0NIQU5HRSIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwot
fQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NyZWF0
ZS1pbmRleC11bmlxdWUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+
Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3Jl
YXRlLWluZGV4LXdpdGgtaW50ZWdlci1rZXlzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1pbmRleC13aXRoLWludGVnZXIta2V5cy5odG1sCmluZGV4
IGJkZDhjYmFiNmE4NjQwOWMwNzQzYjJlMTY3MmU0Zjg2ZDJjOTRhMzUuLjc3MWIzZDhlYzFjNWQx
ZDU0OGM2OTg2MmI3YjExN2Y1MWI4YjVlODUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vemlsbGEvY3JlYXRlLWluZGV4LXdpdGgtaW50ZWdlci1rZXlzLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtaW5kZXgt
d2l0aC1pbnRlZ2VyLWtleXMuaHRtbApAQCAtMSw2NyArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIu
MC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfY3JlYXRlX2luZGV4X3dpdGhfaW50ZWdl
cl9rZXlzLmh0bWw/Zm9yY2U9MQotICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Ci0gICAgIiBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KLSAgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgotLS0+CiA8
aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVk
LmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24o
IlRlc3QgSW5kZXhlZERCJ3MgY3JlYXRpbmcgaW5kZXggd2l0aCBpbnRlZ2VyIGtleXMiKTsKLQot
ZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5h
bWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3Qg
RGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1l
LCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5j
dGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIu
c2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXR1cE9iamVjdFN0
b3JlQW5kQ3JlYXRlSW5kZXg7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldHVwT2JqZWN0U3RvcmVBbmRDcmVhdGVJbmRleCgp
Ci17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9iamVjdFN0b3JlID0g
ZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJywgeyBr
ZXlQYXRoOiAnaWQnIH0pOyIpOwotICAgIGRhdGEgPSBldmFsQW5kTG9nKCJkYXRhID0geyBpZDog
MTYsIG51bTogNDIgfTsiKTsKLSAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoZGF0YSk7
Iik7Ci0gICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUlu
ZGV4KCdmb28nLCAnbnVtJyk7Iik7Ci0gICAgcmVzdWx0ID0gZXZhbEFuZExvZygicmVzdWx0ID0g
aW5kZXgub3BlbktleUN1cnNvcigpOyIpOwotICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSB2ZXJpZnlL
ZXlDdXJzb3I7Ci0gICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LX0KLQotZnVuY3Rpb24gdmVyaWZ5S2V5Q3Vyc29yKCkKLXsKLSAgICBjdXJzb3IgPSBldmFsQW5k
TG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgIHNob3VsZEJlRmFsc2Uo
ImN1cnNvciA9PSBudWxsIik7Ci0gICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAiZGF0YS5udW0i
KTsKLSAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAiZGF0YS5pZCIpOwotICAgIGZp
bmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL2NyZWF0ZS1pbmRleC13aXRoLWludGVnZXIta2V5cy5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtb2JqZWN0c3RvcmUtYmFzaWNzLmh0bWwgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1vYmplY3RzdG9yZS1i
YXNpY3MuaHRtbAppbmRleCAwMGI4NDQzM2JmMmQ3M2JmYTk0ZWU0OTZmYjhhZjE3NjMxYTJmZGZk
Li5mM2QxNDExMzg4M2UzMjlhNjIzZTI4NmRkOWM1YmMxNGQyYzBiMjI3IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1vYmplY3RzdG9yZS1i
YXNpY3MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2Ny
ZWF0ZS1vYmplY3RzdG9yZS1iYXNpY3MuaHRtbApAQCAtMSw3NyArMSwxMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96
aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfY3JlYXRlX29iamVjdFN0b3Jl
Lmh0bWwKLSAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgotICAgICIgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCi0gICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKLS0tPgogPGh0bWw+CiA8aGVhZD4K
IDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+
CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWRE
QidzIGNyZWF0aW5nIG9iamVjdCBzdG9yZSBhbmQgdXBkYXRpbmcgcHJvcGVydGllcyIpOwotCi1m
dW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFt
ZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBE
YXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUs
IGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0
aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFy
Z2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5z
ZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1
bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7
Ci0KLSAgICBvYmplY3RTdG9yZUluZm8gPSBbCi0gICAgICAgIHsgbmFtZTogIjEiLCBvcHRpb25z
OiB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSB9LAotICAgICAgICB7IG5hbWU6ICIyIiwgb3B0aW9u
czogeyBhdXRvSW5jcmVtZW50OiBmYWxzZSB9IH0sCi0gICAgICAgIHsgbmFtZTogIjMiLCBvcHRp
b25zOiB7IGtleVBhdGg6ICIiIH0gfSwKLSAgICAgICAgeyBuYW1lOiAiNCIsIG9wdGlvbnM6IHsg
a2V5UGF0aDogIiIsIGF1dG9JbmNyZW1lbnQ6IHRydWUgfSB9LAotICAgICAgICB7IG5hbWU6ICI1
Iiwgb3B0aW9uczogeyBrZXlQYXRoOiAiIiwgYXV0b0luY3JlbWVudDogZmFsc2UgfSB9LAotICAg
ICAgICB7IG5hbWU6ICI2Iiwgb3B0aW9uczogeyBrZXlQYXRoOiAiZm9vIiB9IH0sCi0gICAgICAg
IHsgbmFtZTogIjciLCBvcHRpb25zOiB7IGtleVBhdGg6ICJmb28iLCBhdXRvSW5jcmVtZW50OiBm
YWxzZSB9IH0sCi0gICAgICAgIHsgbmFtZTogIjgiLCBvcHRpb25zOiB7IGtleVBhdGg6ICJmb28i
LCBhdXRvSW5jcmVtZW50OiB0cnVlIH0gfQotICAgIF07Ci0KLSAgICBmb3IgKHZhciBpbmRleCBp
biBvYmplY3RTdG9yZUluZm8pIHsKLSAgICAgICAgaW5kZXggPSBwYXJzZUludChpbmRleCk7Ci0g
ICAgICAgIGluZm8gPSBvYmplY3RTdG9yZUluZm9baW5kZXhdOwotICAgICAgICBvYmplY3RTdG9y
ZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoaW5mby5u
YW1lLCBpbmZvLm9wdGlvbnMpOyIpOwotICAgICAgICBzaG91bGRCZSgib2JqZWN0U3RvcmUubmFt
ZSIsICJpbmZvLm5hbWUiKTsKLSAgICAgICAgaWYgKGluZm8ub3B0aW9ucyAmJiBpbmZvLm9wdGlv
bnMua2V5UGF0aCkgewotICAgICAgICAgICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLmtleVBhdGgi
LCAiaW5mby5vcHRpb25zLmtleVBhdGgiKTsKLSAgICAgICAgfQotICAgICAgICBzaG91bGRCZSgi
b2JqZWN0U3RvcmUuaW5kZXhOYW1lcy5sZW5ndGgiLCAiMCIpOwotICAgICAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLmRiIiwgImRiIik7Ci0gICAgICAgIHNob3VsZEJlKCJl
dmVudC50YXJnZXQudHJhbnNhY3Rpb24ucmVhZHlTdGF0ZSIsICJJREJUcmFuc2FjdGlvbi5MT0FE
SU5HIik7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24ubW9kZSIs
ICJJREJUcmFuc2FjdGlvbi5WRVJTSU9OX0NIQU5HRSIpOwotICAgIH0KLQotICAgIGZpbmlzaEpT
VGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL2NyZWF0ZS1vYmplY3RzdG9yZS1iYXNpY3MuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8
L2JvZHk+CiA8L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvY3JlYXRlLW9iamVjdHN0b3JlLW51bGwtbmFtZS5odG1sIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtb2JqZWN0c3RvcmUtbnVsbC1uYW1l
Lmh0bWwKaW5kZXggNDMzNmNiYmYxZTQxMTQ3OTdhNGNkOGNkYjczYzlmM2YxNzYzZGIxMC4uOWFm
YWM3MDY3YmYwNjUwM2JhZDgyMTlhOTI5MTJjZDFmMWE4YjYyOSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtb2JqZWN0c3RvcmUtbnVsbC1u
YW1lLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVh
dGUtb2JqZWN0c3RvcmUtbnVsbC1uYW1lLmh0bWwKQEAgLTEsNTUgKzEsMTAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPCEtLQotICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21v
emlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2NyZWF0ZV9vYmplY3RTdG9y
ZS5odG1sCi0gIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgotICAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+
CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0
PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVk
REIncyBjcmVhdGluZyBvYmplY3Qgc3RvcmUgd2l0aCBudWxsIG5hbWUiKTsKLQotZnVuY3Rpb24g
dGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxm
LmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2Ui
OwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlw
dGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVu
U3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lv
bignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOwotICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBj
bGVhbkRhdGFiYXNlKCkKLXsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAg
b2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0
b3JlKG51bGwpOyIpOwotICAgIHNob3VsZEJlKCJvYmplY3RTdG9yZS5uYW1lIiwgIidudWxsJyIp
OwotCi0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvY3JlYXRlLW9iamVjdHN0b3JlLW51bGwtbmFtZS5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jdXJzb3ItbXV0YXRpb24tb2JqZWN0c3Rv
cmUtb25seS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jdXJz
b3ItbXV0YXRpb24tb2JqZWN0c3RvcmUtb25seS5odG1sCmluZGV4IGRlOGQxM2NiYWYzM2JkMTQ4
YThlNDZmYzdjOTYyY2RmMWFmOTQwMDguLmViNGQwZWM2Y2QxYTU5OTY3YTVkYjkzZGU0NDE5N2M2
Y2RjYWFkNTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEvY3Vyc29yLW11dGF0aW9uLW9iamVjdHN0b3JlLW9ubHkuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2N1cnNvci1tdXRhdGlvbi1vYmplY3RzdG9yZS1v
bmx5Lmh0bWwKQEAgLTEsMTUxICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KLTwhLS0KLSAgb3Jp
Z2luYWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20v
aW5kZXhlZERCL3Rlc3QvdGVzdF9jdXJzb3JfbXV0YXRpb24uaHRtbD9mb3JjZT0xCi0gIGxpY2Vu
c2Ugb2Ygb3JpZ2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgotICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJv
ZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBjdXJzb3IgbXV0
YXRpb24gZHVyaW5nIG9iamVjdCBzdG9yZSBjdXJzb3IgaXRlcmF0aW9uIik7Ci0KLWZ1bmN0aW9u
IHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2Vs
Zi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNl
IjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3Jp
cHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3Bl
blN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOwotICAgIGRiID0gZXZh
bEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gc2V0dXBPYmplY3RTdG9yZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc2V0dXBPYmplY3RTdG9yZSgpCi17Ci0g
ICAgZGVidWcoInNldHVwT2JqZWN0U3RvcmUoKToiKTsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9y
ZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7IGtleVBhdGg6ICdzcycgfSk7Iik7Ci0gICAgb2Jq
ZWN0U3RvcmVEYXRhID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmVEYXRhID0gW1xuIiArIAotIiAg
ICAgICAgeyBzczogJzIzNy0yMy03NzMyJywgbmFtZTogJ0JvYicgfSxcbiIgKyAKLQotIiAgICAg
ICAgeyBzczogJzIzNy0yMy03NzMzJywgbmFtZTogJ0FubicgfSxcbiIgKwotIiAgICAgICAgeyBz
czogJzIzNy0yMy03NzM0JywgbmFtZTogJ1JvbicgfSxcbiIgKwotIiAgICAgICAgeyBzczogJzIz
Ny0yMy03NzM1JywgbmFtZTogJ1N1ZScgfSxcbiIgKwotIiAgICAgICAgeyBzczogJzIzNy0yMy03
NzM2JywgbmFtZTogJ0pvZScgfSxcbiIgKwotCi0iICAgICAgICB7IHNzOiAnMjM3LTIzLTc3Mzcn
LCBuYW1lOiAnUGF0JyB9XG4iICsKLSIgICAgXTsiKTsKLQotICAgIGZvciAoaSA9IDA7IGkgPCBv
YmplY3RTdG9yZURhdGEubGVuZ3RoIC0gMTsgaSsrKSB7Ci0gICAgICAgIGV2YWxBbmRMb2coIm9i
amVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0pOyIpOwotICAgIH0KLQotICAgIGNvdW50
ID0gZXZhbEFuZExvZygiY291bnQgPSAwOyIpOwotICAgIHNhd0FkZGVkID0gZXZhbEFuZExvZygi
c2F3QWRkZWQgPSBmYWxzZTsiKTsKLSAgICBzYXdSZW1vdmVkID0gZXZhbEFuZExvZygic2F3UmVt
b3ZlZCA9IGZhbHNlOyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBv
YmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBpdGVy
YXRlQ3Vyc29yOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotfQotCi1mdW5jdGlvbiBpdGVyYXRlQ3Vyc29yKCkKLXsKLSAgICBkZWJ1ZygiaXRlcmF0ZUN1
cnNvcigpOiIpOwotICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5vbmNv
bXBsZXRlID0gY2hlY2tDdXJzb3JSZXN1bHRzQW5kU2V0dXBNdXRhdGluZ0N1cnNvcjsiKTsKLSAg
ICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwot
ICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgaWYgKGN1cnNvci52YWx1ZS5uYW1lID09IG9iamVj
dFN0b3JlRGF0YVswXS5uYW1lKSB7Ci0gICAgICAgICAgICBzYXdSZW1vdmVkID0gZXZhbEFuZExv
Zygic2F3UmVtb3ZlZCA9IHRydWU7Iik7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGN1cnNvci52
YWx1ZS5uYW1lID09IG9iamVjdFN0b3JlRGF0YVtvYmplY3RTdG9yZURhdGEubGVuZ3RoIC0gMV0u
bmFtZSkgewotICAgICAgICAgICAgc2F3QWRkZWQgPSBldmFsQW5kTG9nKCJzYXdBZGRlZCA9IHRy
dWU7Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZXZhbEFuZExvZygiY291bnQrKzsiKTsKLSAgICAg
ICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7Ci0gICAgfQotfQotCi1mdW5jdGlv
biBjaGVja0N1cnNvclJlc3VsdHNBbmRTZXR1cE11dGF0aW5nQ3Vyc29yKCkKLXsKLSAgICBkZWJ1
ZygiY2hlY2tDdXJzb3JSZXN1bHRzQW5kU2V0dXBNdXRhdGluZ0N1cnNvcigpOiIpOwotICAgIHNo
b3VsZEJlKCJjb3VudCIsICJvYmplY3RTdG9yZURhdGEubGVuZ3RoIC0gMSIpOwotICAgIHNob3Vs
ZEJlKCJzYXdBZGRlZCIsICJmYWxzZSIpOwotICAgIHNob3VsZEJlKCJzYXdSZW1vdmVkIiwgInRy
dWUiKTsKLQotICAgIGNvdW50ID0gZXZhbEFuZExvZygiY291bnQgPSAwOyIpOwotICAgIHNhd0Fk
ZGVkID0gZXZhbEFuZExvZygic2F3QWRkZWQgPSBmYWxzZTsiKTsKLSAgICBzYXdSZW1vdmVkID0g
ZXZhbEFuZExvZygic2F3UmVtb3ZlZCA9IGZhbHNlOyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBkYi50cmFuc2FjdGlvbignZm9vJywgSURCVHJhbnNhY3Rpb24uUkVB
RF9XUklURSkub2JqZWN0U3RvcmUoJ2ZvbycpLm9wZW5DdXJzb3IoKTsiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGl0ZXJhdGVNdXRhdGluZ0N1cnNvcjsKLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gaXRlcmF0ZU11dGF0aW5n
Q3Vyc29yKCkKLXsKLSAgICBkZWJ1ZygiaXRlcmF0ZU11dGF0aW5nQ3Vyc29yKCk6Iik7Ci0gICAg
ZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBjaGVja011
dGF0aW5nQ3Vyc29yUmVzdWx0czsiKTsKLSAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3Ig
PSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgaWYg
KGN1cnNvci52YWx1ZS5uYW1lID09IG9iamVjdFN0b3JlRGF0YVswXS5uYW1lKSB7Ci0gICAgICAg
ICAgICBzYXdSZW1vdmVkID0gZXZhbEFuZExvZygic2F3UmVtb3ZlZCA9IHRydWU7Iik7Ci0gICAg
ICAgIH0KLSAgICAgICAgaWYgKGN1cnNvci52YWx1ZS5uYW1lID09IG9iamVjdFN0b3JlRGF0YVtv
YmplY3RTdG9yZURhdGEubGVuZ3RoIC0gMV0ubmFtZSkgewotICAgICAgICAgICAgc2F3QWRkZWQg
PSBldmFsQW5kTG9nKCJzYXdBZGRlZCA9IHRydWU7Iik7Ci0gICAgICAgIH0KLSAgICAgICAgc2hv
dWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIiciICsgb2JqZWN0U3RvcmVEYXRhW2NvdW50XS5u
YW1lICsgIiciKTsKLSAgICAgICAgZXZhbEFuZExvZygiY291bnQrKyIpOwotCi0gICAgICAgIGlm
IChjb3VudCA9PSAxKSB7Ci0gICAgICAgICAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9i
amVjdFN0b3JlID0gZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdmb28nKTsi
KTsKLSAgICAgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3Rv
cmUuZGVsZXRlKG9iamVjdFN0b3JlRGF0YVswXS5zcyk7Iik7Ci0gICAgICAgICAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGFkZEZpbmFsRGF0YTsKLSAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
Y3Vyc29yLmNvbnRpbnVlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGFkZEZp
bmFsRGF0YSgpCi17Ci0gICAgZGVidWcoImFkZEZpbmFsRGF0YSgpOiIpOwotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtv
YmplY3RTdG9yZURhdGEubGVuZ3RoIC0gMV0pOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24gKCkgeyBjdXJzb3IuY29udGludWUoKTsgfQotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjaGVja011dGF0aW5nQ3Vy
c29yUmVzdWx0cygpCi17Ci0gICAgZGVidWcoImNoZWNrTXV0YXRpbmdDdXJzb3JSZXN1bHRzKCk6
Iik7Ci0gICAgc2hvdWxkQmUoImNvdW50IiwgIm9iamVjdFN0b3JlRGF0YS5sZW5ndGgiKTsKLSAg
ICBzaG91bGRCZSgic2F3QWRkZWQiLCAidHJ1ZSIpOwotICAgIHNob3VsZEJlKCJzYXdSZW1vdmVk
IiwgInRydWUiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jdXJzb3ItbXV0YXRpb24tb2JqZWN0c3RvcmUt
b25seS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3Vyc29yLW11dGF0aW9u
Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2N1cnNvci1tdXRh
dGlvbi5odG1sCmluZGV4IDBiZDU0ZWNmNDRjNGEwMmQxYTFmNzc2Y2E0YjJhZjc2ZGNiMzYwYjIu
LmM4MDE5M2I3ZDQwOWQ5MWViYTQ4YjY4MTE0YzE1ZWNiNTcwNWRhMDYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3Vyc29yLW11dGF0aW9uLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jdXJzb3ItbXV0YXRp
b24uaHRtbApAQCAtMSwxOTEgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLQotICBvcmln
aW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9p
bmRleGVkREIvdGVzdC90ZXN0X2N1cnNvcl9tdXRhdGlvbi5odG1sP2ZvcmNlPTEKLSAgbGljZW5z
ZSBvZiBvcmlnaW5hbCB0ZXN0OgotICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCi0gICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvICIKLS0tPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9k
eT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGN1cnNvciBtdXRh
dGlvbiIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygp
OwotCi0gICAgZGVidWcoIiIpOwotICAgIG5hbWUgPSAnY3Vyc29yLW11dGF0aW9uJzsKLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKG5hbWUpIik7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJpbmRleGVkREIub3BlbihuYW1lKSIpOwotICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlv
biAoKSB7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKLSAgICAgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCcxJyki
KTsKLSAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXR1cE9iamVjdFN0b3JlQW5kQ3Jl
YXRlSW5kZXg7ICAgICAgICAgIAotICAgICAgICB9OwotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIHNl
dHVwT2JqZWN0U3RvcmVBbmRDcmVhdGVJbmRleCgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRl
YnVnKCJzZXR1cE9iamVjdFN0b3JlQW5kQ3JlYXRlSW5kZXgoKToiKTsKLQotICAgIHRyYW5zID0g
ZXZhbEFuZExvZygidHJhbnMgPSByZXF1ZXN0LnJlc3VsdCIpOwotCi0gICAgb2JqZWN0U3RvcmUg
PSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7
IGtleVBhdGg6ICdzcycgfSkiKTsKLSAgICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gb2Jq
ZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ25hbWUnLCAnbmFtZScsIHsgdW5pcXVlOiB0cnVlIH0pIik7
Ci0gICAgb2JqZWN0U3RvcmVEYXRhID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmVEYXRhID0gW1xu
IiArIAotICAgICAgICAgLy8gVG8gYmUgcmVtb3ZlZC4KLSIgICAgICAgIHsgc3M6ICcyMzctMjMt
NzczMicsIG5hbWU6ICdCb2InIH0sXG4iICsgCi0KLSAgICAgICAgIC8vIEFsd2F5cyBwcmVzZW50
LgotIiAgICAgICAgeyBzczogJzIzNy0yMy03NzMzJywgbmFtZTogJ0FubicgfSxcbiIgKwotIiAg
ICAgICAgeyBzczogJzIzNy0yMy03NzM0JywgbmFtZTogJ1JvbicgfSxcbiIgKwotIiAgICAgICAg
eyBzczogJzIzNy0yMy03NzM1JywgbmFtZTogJ1N1ZScgfSxcbiIgKwotIiAgICAgICAgeyBzczog
JzIzNy0yMy03NzM2JywgbmFtZTogJ0pvZScgfSxcbiIgKwotCi0gICAgICAgICAvLyBUbyBiZSBh
ZGRlZC4KLSIgICAgICAgIHsgc3M6ICcyMzctMjMtNzczNycsIG5hbWU6ICdQYXQnIH1cbiIgKwot
IiAgICBdIik7Ci0KLSAgICBmb3IgKGkgPSAwOyBpIDwgb2JqZWN0U3RvcmVEYXRhLmxlbmd0aCAt
IDE7IGkrKykgewotICAgICAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQob2JqZWN0U3Rv
cmVEYXRhWyIgKyBpICsgIl0pIik7Ci0gICAgfQotCi0gICAgZXZhbEFuZExvZygidHJhbnMub25j
b21wbGV0ZSA9IGNoZWNrQ3Vyc29yUmVzdWx0cyIpOwotICAgIHNldHVwQ3Vyc29yKCk7Ci19Ci0K
LWZ1bmN0aW9uIHNldHVwQ3Vyc29yKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInNl
dHVwQ3Vyc29yKCk6Iik7Ci0KLSAgICBjb3VudCA9IGV2YWxBbmRMb2coImNvdW50ID0gMCIpOwot
ICAgIHNhd0FkZGVkID0gZXZhbEFuZExvZygic2F3QWRkZWQgPSBmYWxzZSIpOwotICAgIHNhd1Jl
bW92ZWQgPSBldmFsQW5kTG9nKCJzYXdSZW1vdmVkID0gZmFsc2UiKTsKLQotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpIik7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBpdGVyYXRlQ3Vyc29yOwotfQotCi1mdW5jdGlvbiBpdGVyYXRlQ3Vyc29yKCkK
LXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIml0ZXJhdGVDdXJzb3IoKToiKTsKLSAgICBj
dXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAg
aWYgKGN1cnNvcikgewotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImN1cnNvci52YWx1
ZS5uYW1lIiwgb2JqZWN0U3RvcmVEYXRhW2NvdW50XS5uYW1lKTsKLSAgICAgICAgaWYgKGN1cnNv
ci52YWx1ZS5uYW1lID09IG9iamVjdFN0b3JlRGF0YVswXS5uYW1lKSB7Ci0gICAgICAgICAgICBz
YXdSZW1vdmVkID0gZXZhbEFuZExvZygic2F3UmVtb3ZlZCA9IHRydWUiKTsKLSAgICAgICAgfQot
ICAgICAgICBpZiAoY3Vyc29yLnZhbHVlLm5hbWUgPT0gb2JqZWN0U3RvcmVEYXRhW29iamVjdFN0
b3JlRGF0YS5sZW5ndGggLSAxXS5uYW1lKSB7Ci0gICAgICAgICAgICBzYXdBZGRlZCA9IGV2YWxB
bmRMb2coInNhd0FkZGVkID0gdHJ1ZSIpOwotICAgICAgICB9Ci0gICAgICAgIGV2YWxBbmRMb2co
ImNvdW50KysiKTsKLSAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCkiKTsKLSAg
ICB9Ci19Ci0KLWZ1bmN0aW9uIGNoZWNrQ3Vyc29yUmVzdWx0cygpCi17Ci0gICAgZGVidWcoIiIp
OwotICAgIGRlYnVnKCJjaGVja0N1cnNvclJlc3VsdHMoKToiKTsKLSAgICBzaG91bGRCZSgiY291
bnQiLCAib2JqZWN0U3RvcmVEYXRhLmxlbmd0aCAtIDEiKTsKLSAgICBzaG91bGRCZSgic2F3QWRk
ZWQiLCAiZmFsc2UiKTsKLSAgICBzaG91bGRCZSgic2F3UmVtb3ZlZCIsICJ0cnVlIik7Ci0KLSAg
ICBzZXR1cE11dGF0aW5nQ3Vyc29yKCk7Ci19Ci0KLWZ1bmN0aW9uIHNldHVwTXV0YXRpbmdDdXJz
b3IoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1Zygic2V0dXBNdXRhdGluZ0N1cnNvcigp
OiIpOwotICAgCi0gICAgY291bnQgPSBldmFsQW5kTG9nKCJjb3VudCA9IDAiKTsKLSAgICBzYXdB
ZGRlZCA9IGV2YWxBbmRMb2coInNhd0FkZGVkID0gZmFsc2UiKTsKLSAgICBzYXdSZW1vdmVkID0g
ZXZhbEFuZExvZygic2F3UmVtb3ZlZCA9IGZhbHNlIik7Ci0gICAgZGVidWcoIltvYmplY3RTdG9y
ZURhdGFOYW1lU29ydCBpcyBhbiBhcnJheSBvZiBpbmRleGVzIGludG8gb2JqZWN0U3RvcmVEYXRh
IGluIGFscGhhYmV0aWNhbCBvcmRlciBieSBuYW1lXSIpOwotICAgIG9iamVjdFN0b3JlRGF0YU5h
bWVTb3J0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnQgPSBbIDEsIDQsIDUs
IDIsIDMgXSIpOwotCi0gICAgZGVidWcoIiIpOwotCi0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0
cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdmb28nLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIp
OwotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSB0cmFucy5vYmpl
Y3RTdG9yZSgnZm9vJykiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9i
amVjdFN0b3JlLmluZGV4KCduYW1lJykub3BlbkN1cnNvcigpIik7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBp
dGVyYXRlTXV0YXRpbmdDdXJzb3I7Ci0gICAgZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9
IGNoZWNrTXV0YXRpbmdDdXJzb3JSZXN1bHRzIik7Ci19Ci0KLWZ1bmN0aW9uIGl0ZXJhdGVNdXRh
dGluZ0N1cnNvcigpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJpdGVyYXRlTXV0YXRp
bmdDdXJzb3IoKToiKTsKLSAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50
YXJnZXQucmVzdWx0Iik7Ci0gICAgaWYgKGN1cnNvcikgewotICAgICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImN1cnNvci52YWx1ZS5uYW1lIiwgb2JqZWN0U3RvcmVEYXRhW29iamVjdFN0b3Jl
RGF0YU5hbWVTb3J0W2NvdW50XV0ubmFtZSk7Ci0gICAgICAgIGlmIChjdXJzb3IudmFsdWUubmFt
ZSA9PSBvYmplY3RTdG9yZURhdGFbMF0ubmFtZSkgewotICAgICAgICAgICAgc2F3UmVtb3ZlZCA9
IGV2YWxBbmRMb2coInNhd1JlbW92ZWQgPSB0cnVlIik7Ci0gICAgICAgIH0KLSAgICAgICAgaWYg
KGN1cnNvci52YWx1ZS5uYW1lID09IG9iamVjdFN0b3JlRGF0YVtvYmplY3RTdG9yZURhdGEubGVu
Z3RoIC0gMV0ubmFtZSkgewotICAgICAgICAgICAgc2F3QWRkZWQgPSBldmFsQW5kTG9nKCJzYXdB
ZGRlZCA9IHRydWUiKTsKLSAgICAgICAgfQotICAgICAgICBldmFsQW5kTG9nKCJjb3VudCsrIik7
Ci0KLSAgICAgICAgaWYgKGNvdW50ID09IDEpIHsKLSAgICAgICAgICAgIGRlYnVnKCIiKTsKLSAg
ICAgICAgICAgIGRlYnVnKCJNdXRhdGluZyB0aGUgb2JqZWN0IHN0b3JlOiIpOwotCi0gICAgICAg
ICAgICBkZWJ1ZygiUmVtb3ZpbmcgIiArIG9iamVjdFN0b3JlRGF0YVswXS5uYW1lKTsKLSAgICAg
ICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZGVsZXRl
KG9iamVjdFN0b3JlRGF0YVswXS5zcykiKTsKLSAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBhZGRGaW5hbERhdGE7Ci0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGN1cnNvci5j
b250aW51ZSgpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1mdW5jdGlvbiBhZGRGaW5hbERhdGEo
KQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiYWRkRmluYWxEYXRhKCk6Iik7Ci0gICAg
ZGVidWcoIkFkZGluZyAiICsgb2JqZWN0U3RvcmVEYXRhW29iamVjdFN0b3JlRGF0YS5sZW5ndGgg
LSAxXS5uYW1lKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0
b3JlLmFkZChvYmplY3RTdG9yZURhdGFbb2JqZWN0U3RvcmVEYXRhLmxlbmd0aCAtIDFdKSIpOwot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewotICAgICAgICBjdXJzb3IuY29udGludWUoKTsK
LSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGNoZWNrTXV0YXRpbmdDdXJzb3JSZXN1bHRzKCkKLXsKLSAg
ICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoImNoZWNrTXV0YXRpbmdDdXJzb3JSZXN1bHRzKCk6Iik7
Ci0gICAgc2hvdWxkQmUoImNvdW50IiwgIm9iamVjdFN0b3JlRGF0YS5sZW5ndGggLSAxIik7Ci0g
ICAgc2hvdWxkQmUoInNhd0FkZGVkIiwgInRydWUiKTsKLSAgICBzaG91bGRCZSgic2F3UmVtb3Zl
ZCIsICJmYWxzZSIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi10ZXN0KCk7Ci0KLTwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jdXJzb3ItbXV0YXRpb24uanMiPjwvc2NyaXB0
PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3Vyc29yLXVwZGF0ZS11cGRhdGVzLWluZGV4ZXMu
aHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3Vyc29yLXVwZGF0
ZS11cGRhdGVzLWluZGV4ZXMuaHRtbAppbmRleCBiODlhZjY1OWNmMzhmMzdhYjU3ZWRmMWJiNmVk
MjhkOTNjYzM0YjQ3Li44Yzk5ZmY4NGQzZmM4ODk1YzYzMzQzMmI2ZjM2MjIxN2U0Mjg1YzQwIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2N1cnNvci11
cGRhdGUtdXBkYXRlcy1pbmRleGVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9jdXJzb3ItdXBkYXRlLXVwZGF0ZXMtaW5kZXhlcy5odG1sCkBAIC0xLDEy
NSArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6
Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rl
c3RfY3Vyc29yX3VwZGF0ZV91cGRhdGVzX2luZGV4ZXMuaHRtbD9mb3JjZT0xCi0gIGxpY2Vuc2Ug
b2Ygb3JpZ2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgotICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+
Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREI6IG11dGF0aW5nIHJlY29y
ZHMgd2l0aCBhIHIvdyBjdXJzb3IgdXBkYXRlcyBpbmRleGVzIG9uIHRob3NlIHJlY29yZHMiKTsK
LQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAg
IG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRl
c3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbihu
YW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNz
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1m
dW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7Ci0g
ICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBmaXJz
dFZhbHVlID0gZXZhbEFuZExvZygiZmlyc3RWYWx1ZSA9ICdoaSc7Iik7Ci0gICAgc2Vjb25kVmFs
dWUgPSBldmFsQW5kTG9nKCJzZWNvbmRWYWx1ZSA9ICdieWUnOyIpOwotICAgIG9iamVjdFN0b3Jl
SW5mbyA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlSW5mbyA9IFtcbiIgKwotIiAgICAgICAgeyBu
YW1lOiAnMScsIG9wdGlvbnM6IHt9LCBrZXk6IDEsXG4iICsKLSIgICAgICAgICAgZW50cnk6IHsg
ZGF0YTogZmlyc3RWYWx1ZSB9IH0sXG4iICsKLSIgICAgICAgIHsgbmFtZTogJzInLCBvcHRpb25z
OiB7IGtleVBhdGg6ICdmb28nIH0sXG4iICsKLSIgICAgICAgICAgZW50cnk6IHsgZm9vOiAxLCBk
YXRhOiBmaXJzdFZhbHVlIH0gfSxcbiIgKwotIiAgICAgICAgeyBuYW1lOiAnMycsIG9wdGlvbnM6
IHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9LFxuIiArCi0iICAgICAgICAgIGVudHJ5OiB7IGRhdGE6
IGZpcnN0VmFsdWUgfSB9LFxuIiArCi0iICAgICAgICB7IG5hbWU6ICc0Jywgb3B0aW9uczogeyBr
ZXlQYXRoOiAnZm9vJywgYXV0b0luY3JlbWVudDogdHJ1ZSB9LFxuIiArCi0iICAgICAgICAgIGVu
dHJ5OiB7IGRhdGE6IGZpcnN0VmFsdWUgfSB9LFxuIiArCi0iICAgIF07Iik7Ci0gICAgaSA9IGV2
YWxBbmRMb2coImkgPSAwOyIpOwotICAgIHNldFZlcnNpb24oKTsKLX0KLQotZnVuY3Rpb24gc2V0
VmVyc2lvbigpCi17Ci0gICAgaWYgKGkgPCBvYmplY3RTdG9yZUluZm8ubGVuZ3RoKSB7Ci0gICAg
ICAgIGluZm8gPSBldmFsQW5kTG9nKCJpbmZvID0gb2JqZWN0U3RvcmVJbmZvW2ldOyIpOwotICAg
ICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIp
OwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldHVwT2JqZWN0U3RvcmVBbmRDcmVhdGVJ
bmRleEFuZEFkZDsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfQotfQot
Ci1mdW5jdGlvbiBzZXR1cE9iamVjdFN0b3JlQW5kQ3JlYXRlSW5kZXhBbmRBZGQoKQotewotICAg
IGRlYnVnKCJzZXR1cE9iamVjdFN0b3JlQW5kQ3JlYXRlSW5kZXgoKToiKTsKLSAgICBkZWxldGVB
bGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKGluZm8ubmFtZSwgaW5mby5vcHRpb25zKTsi
KTsKLQotICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBvYmplY3RTdG9yZS5jcmVhdGVJ
bmRleCgnZGF0YV9pbmRleCcsICdkYXRhJywgeyB1bmlxdWU6IGZhbHNlIH0pOyIpOwotICAgIHVu
aXF1ZUluZGV4ID0gZXZhbEFuZExvZygidW5pcXVlSW5kZXggPSBvYmplY3RTdG9yZS5jcmVhdGVJ
bmRleCgndW5pcXVlX2RhdGFfaW5kZXgnLCAnZGF0YScsIHsgdW5pcXVlOiB0cnVlIH0pOyIpOwot
ICAgIGlmIChpbmZvLmtleSkgewotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IG9iamVjdFN0b3JlLmFkZChpbmZvLmVudHJ5LCBpbmZvLmtleSk7Iik7Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5h
ZGQoaW5mby5lbnRyeSk7Iik7Ci0gICAgfQotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbkN1
cnNvcjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0K
LQotZnVuY3Rpb24gb3BlbkN1cnNvcigpCi17Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSB1cGRhdGVDdXJzb3I7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHVwZGF0ZUN1cnNvcigpCi17Ci0gICAgY3Vyc29yID0g
ZXZhbEFuZExvZygiY3Vyc29yID0gcmVxdWVzdC5yZXN1bHQ7Iik7Ci0gICAgdmFsdWUgPSBldmFs
QW5kTG9nKCJ2YWx1ZSA9IGN1cnNvci52YWx1ZTsiKTsKLSAgICB2YWx1ZS5kYXRhID0gZXZhbEFu
ZExvZygidmFsdWUuZGF0YSA9IHNlY29uZFZhbHVlOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gY3Vyc29yLnVwZGF0ZSh2YWx1ZSk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBnZXRJbmRleDE7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGdldEluZGV4MSgpCi17Ci0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleC5nZXQoc2Vjb25kVmFsdWUpOyIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gY2hlY2tJbmRleDFBbmRHZXRJbmRleDI7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNoZWNrSW5kZXgx
QW5kR2V0SW5kZXgyKCkKLXsKLSAgICBzaG91bGRCZSgidmFsdWUuZGF0YSIsICJldmVudC50YXJn
ZXQucmVzdWx0LmRhdGEiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHVu
aXF1ZUluZGV4LmdldChzZWNvbmRWYWx1ZSk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBj
aGVja0luZGV4MjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLX0KLQotZnVuY3Rpb24gY2hlY2tJbmRleDIoKQotewotICAgIHNob3VsZEJlKCJ2YWx1ZS5k
YXRhIiwgImV2ZW50LnRhcmdldC5yZXN1bHQuZGF0YSIpOwotICAgIGV2YWxBbmRMb2coImkrKzsi
KTsKLSAgICBzZXRWZXJzaW9uKCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvY3Vyc29yLXVwZGF0ZS11cGRhdGVzLWluZGV4ZXMuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3Vyc29ycy5odG1sIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jdXJzb3JzLmh0bWwKaW5kZXggY2EzZDcyZmVhMzVm
NWYwMDIwOGY2YjcwYjJiODcwMDBkOWRlNDEyMC4uY2VkZWQ5YmU5ODhlNTY4ODBhYWI2MzZiMTE3
YjFhZDUzNmFhN2FhZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW96aWxsYS9jdXJzb3JzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW96aWxsYS9jdXJzb3JzLmh0bWwKQEAgLTEsMzk5ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTwhLS0KLSAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4w
L3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9jdXJzb3JzLmh0bWw/Zm9yY2U9MQotICBs
aWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Ci0gICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KLSAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgotLS0+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4K
IDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGN1cnNvciBi
ZWhhdmlvciIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhl
cygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRp
b24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4
ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
b3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2co
ImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IHRlc3RHcm91cDE7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDEoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0
b3JlcyhkYik7Ci0KLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVj
dFN0b3JlKCdhdXRvSW5jcmVtZW50JywgeyBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOyIpOwotCi0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29y
KCk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgIHNob3VsZEJl
KCJldmVudC50YXJnZXQucmVzdWx0IiwgIm51bGwiKTsKLSAgICAgIHRlc3RHcm91cDIoKTsKLSAg
ICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDIoKQotewotICAgIG9iamVjdFN0b3JlID0gZXZh
bEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2F1dG9JbmNyZW1lbnRLZXlQYXRoJywgeyBr
ZXlQYXRoOiAnZm9vJywgYXV0b0luY3JlbWVudDogdHJ1ZSB9KTsiKTsKLQotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICBzaG91bGRCZSgiZXZlbnQudGFy
Z2V0LnJlc3VsdCIsICJudWxsIik7Ci0gICAgICB0ZXN0R3JvdXAzKCk7Ci0gICAgfQotfQotCi1m
dW5jdGlvbiB0ZXN0R3JvdXAzKCkKLXsKLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdrZXlQYXRoJywgeyBrZXlQYXRoOiAnZm9vJyB9KTsiKTsKLQot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNv
cigpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICBzaG91bGRC
ZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJudWxsIik7Ci0gICAgICB0ZXN0R3JvdXA0KCk7Ci0g
ICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXA0KCkKLXsKLSAgICBvYmplY3RTdG9yZSA9IGV2
YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nKTsiKTsKLQotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICBzaG91bGRCZSgiZXZlbnQudGFy
Z2V0LnJlc3VsdCIsICJudWxsIik7Ci0gICAgICB0ZXN0R3JvdXA1KCk7Ci0gICAgfQotfQotCi1m
dW5jdGlvbiB0ZXN0R3JvdXA1KCkKLXsKLSAgICBrZXlzID0gZXZhbEFuZExvZygia2V5cyA9IFsx
LCAtMSwgMCwgMTAsIDIwMDAsICdxJywgJ3onLCAndHdvJywgJ2InLCAnYSddOyIpOwotICAgIHNv
cnRlZEtleXMgPSBldmFsQW5kTG9nKCJzb3J0ZWRLZXlzID0gWy0xLCAwLCAxLCAxMCwgMjAwMCwg
J2EnLCAnYicsICdxJywgJ3R3bycsICd6J107Iik7Ci0KLSAgICBrZXlJbmRleCA9IGV2YWxBbmRM
b2coImtleUluZGV4ID0gMDsiKTsKLQotICAgIGZvciAoaSBpbiBrZXlzKSB7Ci0gICAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZCgnZm9vJywga2V5c1tp
XSk7Iik7Ci0gICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LSAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgaWYg
KCsra2V5SW5kZXggPT0ga2V5cy5sZW5ndGgpIHsKLSAgICAgICAgICB0ZXN0R3JvdXA2KCk7Ci0g
ICAgICAgIH0KLSAgICAgIH07Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXA2KCkKLXsK
LSAgICBrZXlJbmRleCA9IDA7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChl
dmVudCkgewotICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0
LnJlc3VsdDsiKTsKLSAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNv
ci5rZXkiLCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNv
ci5wcmltYXJ5S2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7Ci0gICAgICAgIHNob3VsZEJl
KCJjdXJzb3IudmFsdWUiLCAiJ2ZvbyciKTsKLQotICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3Iu
Y29udGludWUoKTsiKTsKLSAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiY3Vyc29yLmNv
bnRpbnVlKCk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9BTExPV0VEX0VSUiIpOwotCi0g
ICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7Ci0g
ICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4
XSIpOwotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgIidmb28nIik7Ci0KLSAgICAg
ICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAg
ICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAia2V5cy5sZW5ndGgiKTsKLSAgICAgICAgdGVzdEdy
b3VwNygpOwotICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdEdyb3VwNygpCi17Ci0g
ICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDQ7Iik7Ci0KLSAgICByYW5nZSA9
IGV2YWxBbmRMb2coInJhbmdlID0gSURCS2V5UmFuZ2UuYm91bmQoMjAwMCwgJ3EnKTsiKTsKLSAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3Io
cmFuZ2UpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICBjdXJz
b3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgICAg
aWYgKGN1cnNvcikgewotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJzb3J0ZWRLZXlz
W2tleUluZGV4XSIpOwotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAic29y
dGVkS2V5c1trZXlJbmRleF0iKTsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZSIsICIn
Zm9vJyIpOwotCi0gICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOwotCi0g
ICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7Ci0g
ICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4
XSIpOwotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgIidmb28nIik7Ci0KLSAgICAg
ICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAg
ICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiOCIpOwotICAgICAgICB0ZXN0R3JvdXA4KCk7Ci0g
ICAgICB9Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXA4KCkKLXsKLSAgICBrZXlJbmRl
eCA9IDA7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3Jl
Lm9wZW5DdXJzb3IoKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewotICAg
ICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsK
LSAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAic29y
dGVkS2V5c1trZXlJbmRleF0iKTsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5
IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFs
dWUiLCAiJ2ZvbyciKTsKLQotICAgICAgICBpZiAoa2V5SW5kZXgpIHsKLSAgICAgICAgICBldmFs
QW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsK
LSAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoJ2InKTsiKTsKLSAgICAgICAg
fQotCi0gICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhd
Iik7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJzb3J0ZWRLZXlzW2tl
eUluZGV4XSIpOwotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgIidmb28nIik7Ci0K
LSAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXggKz0ga2V5SW5kZXggPyAxOiA2OyIpOwotICAg
ICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJrZXlzLmxl
bmd0aCIpOwotICAgICAgICB0ZXN0R3JvdXA5KCk7Ci0gICAgICB9Ci0gICAgfQotfQotCi1mdW5j
dGlvbiB0ZXN0R3JvdXA5KCkKLXsKLSAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4
ID0gMDsiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3Rv
cmUub3BlbkN1cnNvcigpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0g
ICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIp
OwotICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJz
b3J0ZWRLZXlzW2tleUluZGV4XSIpOwotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlL
ZXkiLCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci52
YWx1ZSIsICInZm9vJyIpOwotCi0gICAgICAgIGlmIChrZXlJbmRleCkgewotICAgICAgICAgIGV2
YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2Ug
ewotICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgxMCk7Iik7Ci0gICAgICAg
IH0KLQotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4
XSIpOwotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAic29ydGVkS2V5c1tr
ZXlJbmRleF0iKTsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZSIsICInZm9vJyIpOwot
Ci0gICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4ICs9IGtleUluZGV4ID8gMTogMzsiKTsKLSAg
ICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAia2V5cy5s
ZW5ndGgiKTsKLSAgICAgICAgdGVzdEdyb3VwMTAoKTsKLSAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1
bmN0aW9uIHRlc3RHcm91cDEwKCkKLXsKLSAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUlu
ZGV4ID0gMDsiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0
U3RvcmUub3BlbkN1cnNvcigpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7
Ci0gICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0
OyIpOwotICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIs
ICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOwotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1h
cnlLZXkiLCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNv
ci52YWx1ZSIsICInZm9vJyIpOwotCi0gICAgICAgIGlmIChrZXlJbmRleCkgewotICAgICAgICAg
IGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOwotICAgICAgICB9Ci0gICAgICAgIGVs
c2UgewotICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgnYycpOyIpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAic29ydGVkS2V5c1trZXlJ
bmRleF0iKTsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgInNvcnRlZEtl
eXNba2V5SW5kZXhdIik7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAiJ2Zvbyci
KTsKLQotICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCArPSBrZXlJbmRleCA/IDEgOiA3OyIp
OwotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJr
ZXlzLmxlbmd0aCIpOwotICAgICAgICB0ZXN0R3JvdXAxMSgpOwotICAgICAgfQotICAgIH0KLX0K
LQotZnVuY3Rpb24gdGVzdEdyb3VwMTEoKQotewotICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygi
a2V5SW5kZXggPSAwOyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBv
YmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZl
bnQpIHsKLSAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQ7Iik7Ci0gICAgICBpZiAoY3Vyc29yKSB7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
a2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
cHJpbWFyeUtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOwotICAgICAgICBzaG91bGRCZSgi
Y3Vyc29yLnZhbHVlIiwgIidmb28nIik7Ci0KLSAgICAgICAgaWYgKGtleUluZGV4ID09IDQpIHsK
LSAgICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGN1cnNvci51cGRhdGUo
J2JhcicpOyIpOwotICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsK
LSAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7Ci0gICAgICAgICAgICBldmFs
QW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKLSAgICAgICAgICB9OwotICAgICAgICB9Ci0g
ICAgICAgIGVsc2UgewotICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7Ci0gICAg
ICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7Ci0gICAgICAgIH0KLSAgICAg
IH0KLSAgICAgIGVsc2UgewotICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAia2V5cy5sZW5n
dGgiKTsKLSAgICAgICAgdGVzdEdyb3VwMTIoKTsKLSAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0
aW9uIHRlc3RHcm91cDEyKCkKLXsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IG9iamVjdFN0b3JlLmdldChzb3J0ZWRLZXlzWzRdKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHRlc3RH
cm91cDEyYjsKLX0KLQotZnVuY3Rpb24gdGVzdEdyb3VwMTJiKCkKLXsKLSAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0LnJlc3VsdCIsICInYmFyJyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoJ2ZvbycsIHNvcnRlZEtleXNbNF0pOyIpOwot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gdGVzdEdyb3VwMTM7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDEzKCkK
LXsKLSAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gMDsiKTsKLQotICAgIGdv
dFJlbW92ZUV2ZW50ID0gZmFsc2U7Ci0gICAgcmV0dmFsID0gZmFsc2U7Ci0KLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IobnVsbCwgSURC
Q3Vyc29yLk5FWFQpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAg
ICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwot
ICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJzb3J0
ZWRLZXlzW2tleUluZGV4XSIpOwotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXki
LCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1
ZSIsICInZm9vJyIpOwotCi0gICAgICAgIGlmIChrZXlJbmRleCA9PSA0KSB7Ci0gICAgICAgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBjdXJzb3IuZGVsZXRlKCk7Iik7Ci0gICAg
ICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICAgICAgc2hv
dWxkQmUoImtleUluZGV4IiwgIjUiKTsKLSAgICAgICAgICAgIGdvdFJlbW92ZUV2ZW50ID0gZXZh
bEFuZExvZygiZ290UmVtb3ZlRXZlbnQgPSB0cnVlOyIpOwotICAgICAgICAgIH07Ci0gICAgICAg
IH0KLQotICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOwotICAgICAgICBldmFsQW5k
TG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAg
ICBzaG91bGRCZSgia2V5SW5kZXgiLCAia2V5cy5sZW5ndGgiKTsKLSAgICAgICAgc2hvdWxkQmUo
ImdvdFJlbW92ZUV2ZW50IiwgInRydWUiKTsKLSAgICAgICAgdGVzdEdyb3VwMTQoKTsKLSAgICAg
IH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDE0KCkKLXsKLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmdldChzb3J0ZWRLZXlzWzRdKTsiKTsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IHRlc3RHcm91cDE0YjsKLX0KLQotZnVuY3Rpb24gdGVzdEdyb3VwMTRi
KCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ1bmRlZmluZWQiKTsK
LQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKCdm
b28nLCBzb3J0ZWRLZXlzWzRdKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHRlc3RHcm91cDE1OwotfQot
Ci1mdW5jdGlvbiB0ZXN0R3JvdXAxNSgpCi17Ci0gICAga2V5SW5kZXggPSBzb3J0ZWRLZXlzLmxl
bmd0aCAtIDE7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0
b3JlLm9wZW5DdXJzb3IobnVsbCwgSURCQ3Vyc29yLlBSRVYpOyIpOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBl
dmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLmtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOwotICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKLSAgICAg
ICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZSIsICInZm9vJyIpOwotCi0gICAgICAgIGV2YWxBbmRM
b2coImN1cnNvci5jb250aW51ZSgpOyIpOwotCi0gICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5
IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJp
bWFyeUtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOwotICAgICAgICBzaG91bGRCZSgiY3Vy
c29yLnZhbHVlIiwgIidmb28nIik7Ci0KLSAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgtLTsi
KTsKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAi
LTEiKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgICB9Ci0gICAgfQotfQotCi0KLXRl
c3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2N1cnNvcnMuanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvZGVsZXRlLXJlc3VsdC5odG1sIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9kZWxldGUtcmVzdWx0Lmh0bWwKaW5k
ZXggMTBmNDZiYzg1MDRiMDNjMjcyM2RmNGUzNjNkMGZkOTQwMWYzZWVkNy4uZjdlYjUyNmNlNTU5
YmQ4OWE5NTg4ZTAxOTgxYWJjNjA2OTM0NTllYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9kZWxldGUtcmVzdWx0Lmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9kZWxldGUtcmVzdWx0Lmh0bWwKQEAgLTEsNzMg
KzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLQotICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8v
bXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0
X29kZF9yZXN1bHRfb3JkZXIuaHRtbD9yYXc9MQotICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6
Ci0gICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
LSAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8g
IgotLS0+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVz
Y3JpcHRpb24oIlRlc3QgSW5kZXhlZERCOiByZXN1bHQgcHJvcGVydHkgYWZ0ZXIgZGVsZXRpbmcg
ZXhpc3RpbmcgYW5kIG5vbi1leGlzdGluZyByZWNvcmQiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17
Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9u
LnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2Vzcygp
Ci17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlT2JqZWN0U3RvcmU7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZU9i
amVjdFN0b3JlKCkKLXsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotICAgIG9iamVj
dFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgn
Zm9vJywgeyBrZXlQYXRoOiAnaWQnLCBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOyIpOwotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKHt9KTsiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZVJlY29yZDE7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZVJlY29yZDEo
KQotewotICAgIGlkID0gZXZhbEFuZExvZygiaWQgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZGVsZXRlKGlk
KTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZVJlY29yZDI7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0
ZVJlY29yZDIoKQotewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgInVuZGVm
aW5lZCIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
ZGVsZXRlKGlkKTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZpbmFsQ2hlY2s7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKLX0KLQotZnVuY3Rp
b24gZmluYWxDaGVjaygpCi17Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAi
dW5kZWZpbmVkIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXRlc3QoKTsKLQotPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RlbGV0ZS1yZXN1bHQuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL2V2ZW50LXNvdXJjZS5odG1sIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9ldmVudC1zb3VyY2UuaHRtbAppbmRleCAzN2MxMmU1MGY2
NTBhNjZlNWE5NmQyMzM4MTM5OGRkMWFkYTUyYWZmLi5kYjIxYmFhNjk5NGQ2YTNhYjRkOTFlYWJl
YjFiYmE3MmQxY2FlMGU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL2V2ZW50LXNvdXJjZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL21vemlsbGEvZXZlbnQtc291cmNlLmh0bWwKQEAgLTEsNjggKzEsMTAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPCEtLQotICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3Jn
L21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2V2ZW50X3NvdXJjZS5o
dG1sCi0gIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgotICAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+CiA8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0Pgog
PC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIn
cyBldmVudC50YXJnZXQuc291cmNlIGluIHN1Y2Nlc3MgY2FsbGJhY2tzIik7Ci0KLWZ1bmN0aW9u
IHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2Vs
Zi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNl
IjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3Jp
cHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3Bl
blN1Y2Nlc3MoKQotewotICAgIHNvdXJjZSA9IGV2YWxBbmRMb2coInNvdXJjZSA9IGV2ZW50LnRh
cmdldC5zb3VyY2U7Iik7Ci0gICAgc2hvdWxkQmUoInNvdXJjZSIsICJpbmRleGVkREIiKTsKLQot
ICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQot
ewotICAgIHNvdXJjZSA9IGV2YWxBbmRMb2coInNvdXJjZSA9IGV2ZW50LnRhcmdldC5zb3VyY2U7
Iik7Ci0gICAgc2hvdWxkQmUoInNvdXJjZSIsICJkYiIpOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0
U3RvcmVzKGRiKTsKLQotICAgIG9iamVjdFN0b3JlTmFtZSA9ICJPYmplY3RzIjsKLSAgICBvYmpl
Y3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUo
b2JqZWN0U3RvcmVOYW1lLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7Ci0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoe30pOyIpOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gYXJlV2VEb25lWWV0OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBhcmVXZURvbmVZZXQoKQotewot
ICAgIHNvdXJjZSA9IGV2YWxBbmRMb2coInNvdXJjZSA9IGV2ZW50LnRhcmdldC5zb3VyY2U7Iik7
Ci0gICAgc2hvdWxkQmUoInNvdXJjZSIsICJvYmplY3RTdG9yZSIpOwotICAgIGZpbmlzaEpTVGVz
dCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2V2ZW50LXNvdXJjZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4K
LQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9nbG9i
YWwtZGF0YS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9nbG9i
YWwtZGF0YS5odG1sCmluZGV4IGNkZTA2OTY1NmY2OWViZmQ5MTNkMzZlYzRjYTkwMjczYTI0MGQy
NGUuLmEyYjA2NzNkZGIxMzViZjdhMjUxYzcyMzkxMmQ2NjJkNjRjMDdjMWQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvZ2xvYmFsLWRhdGEuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2dsb2JhbC1kYXRhLmh0
bWwKQEAgLTEsODAgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLQotICBvcmlnaW5hbCB0
ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVk
REIvdGVzdC90ZXN0X2dsb2JhbF9kYXRhLmh0bWwKLSAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0
OgotICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
Ci0gICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
ICIKLS0tPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRl
c2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIG9wZW5pbmcgREIgbW9yZSB0aGFuIG9uY2UiKTsK
LQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAg
IG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRl
c3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbihu
YW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNz
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1m
dW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIxID0gZXZhbEFuZExvZygiZGIxID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBkYjEuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRh
dGFiYXNlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
fQotCi1mdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKLXsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9y
ZXMoZGIxKTsKLQotICAgIG9iamVjdFN0b3JlTmFtZSA9ICJPYmplY3RzIjsKLSAgICBvYmplY3RT
dG9yZU9wdGlvbnMgPSB7IGtleVBhdGg6ICdpZCcsIGF1dG9JbmNyZW1lbnQ6IHRydWUgfTsKLSAg
ICBldmFsQW5kTG9nKCJkYjEuY3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lLCBvYmpl
Y3RTdG9yZU9wdGlvbnMpOyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWRE
Qi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9w
ZW4yU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLX0KLQotZnVuY3Rpb24gb3BlbjJTdWNjZXNzKCkKLXsKLSAgICBkYjIgPSBldmFsQW5kTG9n
KCJkYjIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICBzaG91bGRCZVRydWUoImRiMSAh
PT0gZGIyIik7Ci0gICAgc2hvdWxkQmUoImRiMS5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIx
Iik7Ci0gICAgc2hvdWxkQmUoImRiMS5vYmplY3RTdG9yZU5hbWVzLml0ZW0oMCkiLCAib2JqZWN0
U3RvcmVOYW1lIik7Ci0gICAgc2hvdWxkQmUoImRiMi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIs
ICIxIik7Ci0gICAgc2hvdWxkQmUoImRiMi5vYmplY3RTdG9yZU5hbWVzLml0ZW0oMCkiLCAib2Jq
ZWN0U3RvcmVOYW1lIik7Ci0KLSAgICBvYmplY3RTdG9yZTEgPSBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZTEgPSBkYjEudHJhbnNhY3Rpb24ob2JqZWN0U3RvcmVOYW1lKS5vYmplY3RTdG9yZShvYmpl
Y3RTdG9yZU5hbWUpOyIpOwotICAgIHNob3VsZEJlKCJvYmplY3RTdG9yZTEubmFtZSIsICJvYmpl
Y3RTdG9yZU5hbWUiKTsKLSAgICBzaG91bGRCZSgib2JqZWN0U3RvcmUxLmtleVBhdGgiLCAib2Jq
ZWN0U3RvcmVPcHRpb25zLmtleVBhdGgiKTsKLQotICAgIG9iamVjdFN0b3JlMiA9IGV2YWxBbmRM
b2coIm9iamVjdFN0b3JlMiA9IGRiMi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUpLm9iamVj
dFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJvYmplY3RTdG9y
ZTEgIT09IG9iamVjdFN0b3JlMiIpOwotICAgIHNob3VsZEJlKCJvYmplY3RTdG9yZTIubmFtZSIs
ICJvYmplY3RTdG9yZU5hbWUiKTsKLSAgICBzaG91bGRCZSgib2JqZWN0U3RvcmUyLmtleVBhdGgi
LCAib2JqZWN0U3RvcmVPcHRpb25zLmtleVBhdGgiKTsKLQotICAgIGZpbmlzaEpTVGVzdCgpOwot
fQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2dsb2Jh
bC1kYXRhLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgotCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2luZGV4ZXMuaHRt
bCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvaW5kZXhlcy5odG1sCmlu
ZGV4IDRmYjdlMTI0YzViMTA5NmE0NjdjZDgxNTE3NDVlZDBlMDFkNWJlNzQuLjhiNmM2ZGNmYjM0
MWQxYmFhOGFkMWMxOTgxMjZlMzQ5MzI2ZDAzZjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvaW5kZXhlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvaW5kZXhlcy5odG1sCkBAIC0xLDEwMjIgKzEsMTAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPCEtLQotICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemls
bGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2luZGV4ZXMu
aHRtbD9mb3JjZT0xCi0gIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgotICAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgog
PGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwv
c2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJ
bmRleGVkREI6IGl0ZXJhdGluZyB0aHJvdWdoIGluZGV4IGN1cnNvcnMgd2l0aCBrZXlzIGFuZCBr
ZXkgcmFuZ2VzIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZp
eGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlw
dGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5k
ZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJvcGVuU3Vj
Y2VzcygpOiIpOwotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7Ci0KLSAgICBvYmplY3RTdG9yZU5hbWUgPSAiUGVvcGxlIjsKLQotICAgIG9iamVjdFN0b3Jl
RGF0YSA9IFsKLSAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczMiIsIHZhbHVlOiB7IG5hbWU6ICJC
b2IiLCBoZWlnaHQ6IDYwLCB3ZWlnaHQ6IDEyMCB9IH0sCi0gICAgICAgIHsga2V5OiAiMjM3LTIz
LTc3MzMiLCB2YWx1ZTogeyBuYW1lOiAiQW5uIiwgaGVpZ2h0OiA1Miwgd2VpZ2h0OiAxMTAgfSB9
LAotICAgICAgICB7IGtleTogIjIzNy0yMy03NzM0IiwgdmFsdWU6IHsgbmFtZTogIlJvbiIsIGhl
aWdodDogNzMsIHdlaWdodDogMTgwIH0gfSwKLSAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNSIs
IHZhbHVlOiB7IG5hbWU6ICJTdWUiLCBoZWlnaHQ6IDU4LCB3ZWlnaHQ6IDEzMCB9IH0sCi0gICAg
ICAgIHsga2V5OiAiMjM3LTIzLTc3MzYiLCB2YWx1ZTogeyBuYW1lOiAiSm9lIiwgaGVpZ2h0OiA2
NSwgd2VpZ2h0OiAxNTAgfSB9LAotICAgICAgICB7IGtleTogIjIzNy0yMy03NzM3IiwgdmFsdWU6
IHsgbmFtZTogIlBhdCIsIGhlaWdodDogNjUsIHdlaWdodDogMTAwIH0gfQotICAgIF07Ci0KLSAg
ICBpbmRleERhdGEgPSBbCi0gICAgICAgIHsgbmFtZTogIm5hbWUiLCBrZXlQYXRoOiAibmFtZSIs
IG9wdGlvbnM6IHsgdW5pcXVlOiB0cnVlIH0gfSwKLSAgICAgICAgeyBuYW1lOiAiaGVpZ2h0Iiwg
a2V5UGF0aDogImhlaWdodCIsIG9wdGlvbnM6IHsgfSB9LAotICAgICAgICB7IG5hbWU6ICJ3ZWln
aHQiLCBrZXlQYXRoOiAid2VpZ2h0Iiwgb3B0aW9uczogeyB1bmlxdWU6IGZhbHNlIH0gfQotICAg
IF07Ci0KLSAgICBvYmplY3RTdG9yZURhdGFOYW1lU29ydCA9IFsKLSAgICAgICAgeyBrZXk6ICIy
MzctMjMtNzczMyIsIHZhbHVlOiB7IG5hbWU6ICJBbm4iLCBoZWlnaHQ6IDUyLCB3ZWlnaHQ6IDEx
MCB9IH0sCi0gICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzIiLCB2YWx1ZTogeyBuYW1lOiAiQm9i
IiwgaGVpZ2h0OiA2MCwgd2VpZ2h0OiAxMjAgfSB9LAotICAgICAgICB7IGtleTogIjIzNy0yMy03
NzM2IiwgdmFsdWU6IHsgbmFtZTogIkpvZSIsIGhlaWdodDogNjUsIHdlaWdodDogMTUwIH0gfSwK
LSAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNyIsIHZhbHVlOiB7IG5hbWU6ICJQYXQiLCBoZWln
aHQ6IDY1LCB3ZWlnaHQ6IDEwMCB9IH0sCi0gICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzQiLCB2
YWx1ZTogeyBuYW1lOiAiUm9uIiwgaGVpZ2h0OiA3Mywgd2VpZ2h0OiAxODAgfSB9LAotICAgICAg
ICB7IGtleTogIjIzNy0yMy03NzM1IiwgdmFsdWU6IHsgbmFtZTogIlN1ZSIsIGhlaWdodDogNTgs
IHdlaWdodDogMTMwIH0gfQotICAgIF07Ci0KLSAgICBvYmplY3RTdG9yZURhdGFXZWlnaHRTb3J0
ID0gWwotICAgICAgICB7IGtleTogIjIzNy0yMy03NzM3IiwgdmFsdWU6IHsgbmFtZTogIlBhdCIs
IGhlaWdodDogNjUsIHdlaWdodDogMTAwIH0gfSwKLSAgICAgICAgeyBrZXk6ICIyMzctMjMtNzcz
MyIsIHZhbHVlOiB7IG5hbWU6ICJBbm4iLCBoZWlnaHQ6IDUyLCB3ZWlnaHQ6IDExMCB9IH0sCi0g
ICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzIiLCB2YWx1ZTogeyBuYW1lOiAiQm9iIiwgaGVpZ2h0
OiA2MCwgd2VpZ2h0OiAxMjAgfSB9LAotICAgICAgICB7IGtleTogIjIzNy0yMy03NzM1IiwgdmFs
dWU6IHsgbmFtZTogIlN1ZSIsIGhlaWdodDogNTgsIHdlaWdodDogMTMwIH0gfSwKLSAgICAgICAg
eyBrZXk6ICIyMzctMjMtNzczNiIsIHZhbHVlOiB7IG5hbWU6ICJKb2UiLCBoZWlnaHQ6IDY1LCB3
ZWlnaHQ6IDE1MCB9IH0sCi0gICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzQiLCB2YWx1ZTogeyBu
YW1lOiAiUm9uIiwgaGVpZ2h0OiA3Mywgd2VpZ2h0OiAxODAgfSB9Ci0gICAgXTsKLQotICAgIG9i
amVjdFN0b3JlRGF0YUhlaWdodFNvcnQgPSBbCi0gICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzMi
LCB2YWx1ZTogeyBuYW1lOiAiQW5uIiwgaGVpZ2h0OiA1Miwgd2VpZ2h0OiAxMTAgfSB9LAotICAg
ICAgICB7IGtleTogIjIzNy0yMy03NzM1IiwgdmFsdWU6IHsgbmFtZTogIlN1ZSIsIGhlaWdodDog
NTgsIHdlaWdodDogMTMwIH0gfSwKLSAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczMiIsIHZhbHVl
OiB7IG5hbWU6ICJCb2IiLCBoZWlnaHQ6IDYwLCB3ZWlnaHQ6IDEyMCB9IH0sCi0gICAgICAgIHsg
a2V5OiAiMjM3LTIzLTc3MzYiLCB2YWx1ZTogeyBuYW1lOiAiSm9lIiwgaGVpZ2h0OiA2NSwgd2Vp
Z2h0OiAxNTAgfSB9LAotICAgICAgICB7IGtleTogIjIzNy0yMy03NzM3IiwgdmFsdWU6IHsgbmFt
ZTogIlBhdCIsIGhlaWdodDogNjUsIHdlaWdodDogMTAwIH0gfSwKLSAgICAgICAgeyBrZXk6ICIy
MzctMjMtNzczNCIsIHZhbHVlOiB7IG5hbWU6ICJSb24iLCBoZWlnaHQ6IDczLCB3ZWlnaHQ6IDE4
MCB9IH0KLSAgICBdOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5z
ZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVs
YXRlT2JqZWN0U3RvcmU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQotewot
ICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0gICAgdHJhbnMgPSBldmVudC50YXJnZXQu
cmVzdWx0OwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7Iik7Ci0KLSAgICBkZWJ1ZygiRmly
c3QsIGFkZCBhbGwgb3VyIGRhdGEgdG8gdGhlIG9iamVjdCBzdG9yZS4iKTsKLSAgICBhZGRlZERh
dGEgPSAwOwotICAgIGZvciAoaSBpbiBvYmplY3RTdG9yZURhdGEpIHsKLSAgICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtp
XS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7Iik7Ci0gICAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgaWYgKCsrYWRkZWREYXRhID09IG9iamVjdFN0b3Jl
RGF0YS5sZW5ndGgpIHsKLSAgICAgICAgICBjcmVhdGVJbmRleGVzKCk7Ci0gICAgICAgIH0KLSAg
ICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUluZGV4ZXMoKQotewotICAgIGRlYnVn
KCJOb3cgY3JlYXRlIHRoZSBpbmRleGVzLiIpOwotICAgIGZvciAoaSBpbiBpbmRleERhdGEpIHsK
LSAgICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KGluZGV4RGF0YVtpXS5u
YW1lLCBpbmRleERhdGFbaV0ua2V5UGF0aCwgaW5kZXhEYXRhW2ldLm9wdGlvbnMpOyIpOwotICAg
IH0KLSAgICBzaG91bGRCZSgib2JqZWN0U3RvcmUuaW5kZXhOYW1lcy5sZW5ndGgiLCAiaW5kZXhE
YXRhLmxlbmd0aCIpOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBzZXRWZXJzaW9uQ29tcGxldGU7
Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb25Db21wbGV0ZSgpCi17Ci0gICAgb2JqZWN0U3RvcmUg
PSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFt
ZSkub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKTsiKTsKLQotICAgIC8vIENoZWNrIGdsb2Jh
bCBwcm9wZXJ0aWVzIHRvIG1ha2Ugc3VyZSB0aGV5IGFyZSBjb3JyZWN0LgotICAgIHNob3VsZEJl
KCJvYmplY3RTdG9yZS5pbmRleE5hbWVzLmxlbmd0aCIsICJpbmRleERhdGEubGVuZ3RoIik7Ci0g
ICAgZm9yIChpIGluIGluZGV4RGF0YSkgewotICAgICAgICBmb3VuZCA9IGZhbHNlOwotICAgICAg
ICBmb3IgKGogPSAwOyBqIDwgb2JqZWN0U3RvcmUuaW5kZXhOYW1lcy5sZW5ndGg7IGorKykgewot
ICAgICAgICAgICAgaWYgKG9iamVjdFN0b3JlLmluZGV4TmFtZXMuaXRlbShqKSA9PSBpbmRleERh
dGFbaV0ubmFtZSkgewotICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBzaG91bGRCZVRy
dWUoImZvdW5kIik7Ci0gICAgICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBvYmplY3RT
dG9yZS5pbmRleChpbmRleERhdGFbaV0ubmFtZSk7Iik7Ci0gICAgICAgIHNob3VsZEJlKCJpbmRl
eC5uYW1lIiwgImluZGV4RGF0YVtpXS5uYW1lIik7Ci0gICAgICAgIHNob3VsZEJlKCJpbmRleC5r
ZXlQYXRoIiwgImluZGV4RGF0YVtpXS5rZXlQYXRoIik7Ci0gICAgICAgIHNob3VsZEJlKCJpbmRl
eC51bmlxdWUiLCBpbmRleERhdGFbaV0ub3B0aW9ucy51bmlxdWUgPyAidHJ1ZSIgOiAiZmFsc2Ui
KTsKLSAgICB9Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0
b3JlLmluZGV4KCduYW1lJykuZ2V0S2V5KCdCb2InKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNoZWNr
R2V0S2V5OwotfQotCi1mdW5jdGlvbiBjaGVja0dldEtleSgpCi17Ci0gICAgc2hvdWxkQmUoImV2
ZW50LnRhcmdldC5yZXN1bHQiLCAiJzIzNy0yMy03NzMyJyIpOwotCi0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScpLmdldCgnQm9iJyk7
Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBjaGVja0dldDsKLX0KLQotZnVuY3Rpb24gY2hlY2tHZXQoKQot
ewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0Lm5hbWUiLCAiJ0JvYiciKTsKLSAg
ICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5oZWlnaHQiLCAiNjAiKTsKLSAgICBzaG91
bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC53ZWlnaHQiLCAiMTIwIik7Ci0KLSAgICBrZXlJbmRl
eCA9IDA7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3Jl
LmluZGV4KCduYW1lJykub3BlbktleUN1cnNvcigpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24gKGV2ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50
LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52
YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAi
b2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotICAgICAgICAgICAgc2hv
dWxkQmVGYWxzZSgiJ3ZhbHVlJyBpbiBjdXJzb3IiKTsKLQotICAgICAgICAgICAgZXZhbEFuZExv
ZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7Ci0KLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
a2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0g
ICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRh
TmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotICAgICAgICAgICAgc2hvdWxkQmVGYWxzZSgiJ3Zh
bHVlJyBpbiBjdXJzb3IiKTsKLQotICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsi
KTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICBzaG91bGRCZSgia2V5SW5k
ZXgiLCAib2JqZWN0U3RvcmVEYXRhLmxlbmd0aCIpOwotICAgICAgICAgIHRlc3RHcm91cDMoKTsK
LSAgICAgICAgfQotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDMoKQotewotICAgIGtl
eUluZGV4ID0gMDsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0
U3RvcmUuaW5kZXgoJ3dlaWdodCcpLm9wZW5LZXlDdXJzb3IobnVsbCwgSURCQ3Vyc29yLk5FWFQp
OyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9
IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICAgIGlm
IChjdXJzb3IpIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0
b3JlRGF0YVdlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLndlaWdodCIpOwotICAgICAgICAgICAg
c2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YVdlaWdodFNvcnRb
a2V5SW5kZXhdLmtleSIpOwotCi0gICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGlu
dWUoKTsiKTsKLQotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3Rv
cmVEYXRhV2VpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7Ci0gICAgICAgICAgICBz
aG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhV2VpZ2h0U29ydFtr
ZXlJbmRleF0ua2V5Iik7Ci0KLSAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7
Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgia2V5SW5k
ZXgiLCAib2JqZWN0U3RvcmVEYXRhLmxlbmd0aCIpOwotICAgICAgICAgICAgdGVzdEdyb3VwNCgp
OwotICAgICAgICB9Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXA0KCkKLXsKLS8qIHRo
aXMgd2FzIHNwbGl0IG91dCBpbnRvIGEgc2VwYXJhdGUgdGVzdAotICAgIGRlYnVnKCJDaGVjayB0
aGF0IHRoZSBuYW1lIGluZGV4IGVuZm9yY2VzIGl0cyB1bmlxdWUgY29uc3RyYWludC4iKTsKLSAg
ICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIudHJhbnNhY3Rpb24o
b2JqZWN0U3RvcmVOYW1lLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKS5vYmplY3RTdG9yZShv
YmplY3RTdG9yZU5hbWUpOyIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIm9iamVjdFN0
b3JlLmFkZCh7IG5hbWU6ICdCb2InLCBoZWlnaHQ6IDYyLCB3ZWlnaHQ6IDE3MCB9LCAnMjM3LTIz
LTc3MzgnKTsiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uQ09OU1RSQUlOVF9FUlIiKTsKLSovCi0K
LSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIudHJhbnNhY3Rp
b24ob2JqZWN0U3RvcmVOYW1lKS5vYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpOyIpOwotICAg
IGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSBvYmplY3RTdG9yZURhdGFOYW1lU29y
dC5sZW5ndGggLSAxOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2Jq
ZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuS2V5Q3Vyc29yKG51bGwsIElEQkN1cnNvci5QUkVW
KTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewotICAgICAgICBjdXJzb3Ig
PSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgICAgICBp
ZiAoY3Vyc29yKSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RT
dG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOwotICAgICAgICAgICAgc2hv
dWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUlu
ZGV4XS5rZXkiKTsKLQotICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7
Iik7Ci0KLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0
YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgi
Y3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtl
eSIpOwotCi0gICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleC0tOyIpOwotICAgICAgICB9
Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIi0xIik7
Ci0gICAgICAgICAgICB0ZXN0R3JvdXA1KCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0
aW9uIHRlc3RHcm91cDUoKQotewotICAgIGtleUluZGV4ID0gMTsKLSAgICBrZXlSYW5nZSA9IGV2
YWxBbmRMb2coImtleVJhbmdlID0gSURCS2V5UmFuZ2UuYm91bmQoJ0JvYicsICdSb24nKTsiKTsK
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCdu
YW1lJykub3BlbktleUN1cnNvcihrZXlSYW5nZSk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlv
biAoZXZlbnQpIHsKLSAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICAgICAgc2hv
dWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZh
bHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJv
YmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7Ci0gICAgICAgICAgICBldmFs
QW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImtl
eUluZGV4Kys7Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBzaG91
bGRCZSgia2V5SW5kZXgiLCAiNSIpOwotICAgICAgICAgICAgdGVzdEdyb3VwNigpOwotICAgICAg
ICB9Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXA2KCkKLXsKLSAgICBrZXlJbmRleCA9
IGV2YWxBbmRMb2coImtleUluZGV4ID0gMjsiKTsKLSAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2co
ImtleVJhbmdlID0gSURCS2V5UmFuZ2UuYm91bmQoJ0JvYicsICdSb24nLCB0cnVlKTsiKTsKLQot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25h
bWUnKS5vcGVuS2V5Q3Vyc29yKGtleVJhbmdlKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
IChldmVudCkgewotICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50
YXJnZXQucmVzdWx0OyIpOwotICAgICAgICBpZiAoY3Vyc29yKSB7Ci0gICAgICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFs
dWUubmFtZSIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9i
amVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsKLQotICAgICAgICAgICAgZXZh
bEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJr
ZXlJbmRleCsrOyIpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgc2hv
dWxkQmUoImtleUluZGV4IiwgIjUiKTsKLSAgICAgICAgICAgIHRlc3RHcm91cDcoKTsKLSAgICAg
ICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdEdyb3VwNygpCi17Ci0gICAga2V5SW5kZXgg
PSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDE7Iik7Ci0gICAga2V5UmFuZ2UgPSBldmFsQW5kTG9n
KCJrZXlSYW5nZSA9IElEQktleVJhbmdlLmJvdW5kKCdCb2InLCAnUm9uJywgZmFsc2UsIHRydWUp
OyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5p
bmRleCgnbmFtZScpLm9wZW5LZXlDdXJzb3Ioa2V5UmFuZ2UpOyIpOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9
IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUlu
ZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlL
ZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotCi0gICAgICAg
ICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKLSAgICAgICAgICAgIGV2YWxB
bmRMb2coImtleUluZGV4Kys7Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNCIpOwotICAgICAgICAgICAgdGVzdEdyb3VwOCgp
OwotICAgICAgICB9Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXA4KCkKLXsKLSAgICBr
ZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gMjsiKTsKLSAgICBrZXlSYW5nZSA9IGV2
YWxBbmRMb2coImtleVJhbmdlID0gSURCS2V5UmFuZ2UuYm91bmQoJ0JvYicsICdSb24nLCB0cnVl
LCB0cnVlKTsiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0
U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuS2V5Q3Vyc29yKGtleVJhbmdlKTsiKTsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewotICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJj
dXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgICAgICBpZiAoY3Vyc29yKSB7Ci0g
ICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29y
dFtrZXlJbmRleF0udmFsdWUubmFtZSIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5w
cmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsKLQot
ICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7Ci0gICAgICAgICAg
ICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIjQiKTsKLSAgICAgICAgICAgIHRlc3RH
cm91cDkoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdEdyb3VwOSgpCi17
Ci0gICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDE7Iik7Ci0gICAga2V5UmFu
Z2UgPSBldmFsQW5kTG9nKCJrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQoJ0JvYicp
OyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5p
bmRleCgnbmFtZScpLm9wZW5LZXlDdXJzb3Ioa2V5UmFuZ2UpOyIpOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9
IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUlu
ZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlL
ZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotCi0gICAgICAg
ICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKLSAgICAgICAgICAgIGV2YWxB
bmRMb2coImtleUluZGV4Kys7Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnQubGVuZ3Ro
Iik7Ci0gICAgICAgICAgICB0ZXN0R3JvdXAxMCgpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1m
dW5jdGlvbiB0ZXN0R3JvdXAxMCgpCi17Ci0gICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJ
bmRleCA9IDI7Iik7Ci0gICAga2V5UmFuZ2UgPSBldmFsQW5kTG9nKCJrZXlSYW5nZSA9IElEQktl
eVJhbmdlLmxvd2VyQm91bmQoJ0JvYicsIHRydWUpOyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9wZW5LZXlDdXJzb3Io
a2V5UmFuZ2UpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICAg
IGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0g
ICAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5Iiwg
Im9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAg
ICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNv
cnRba2V5SW5kZXhdLmtleSIpOwotCi0gICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29u
dGludWUoKTsiKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7Ci0gICAg
ICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAi
b2JqZWN0U3RvcmVEYXRhTmFtZVNvcnQubGVuZ3RoIik7Ci0gICAgICAgICAgICB0ZXN0R3JvdXAx
MSgpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXAxMSgpCi17Ci0g
ICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDA7Iik7Ci0gICAga2V5UmFuZ2Ug
PSBldmFsQW5kTG9nKCJrZXlSYW5nZSA9IElEQktleVJhbmdlLnVwcGVyQm91bmQoJ0pvZScpOyIp
OwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRl
eCgnbmFtZScpLm9wZW5LZXlDdXJzb3Ioa2V5UmFuZ2UpOyIpOwotICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVu
Y3Rpb24gKGV2ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2
ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgICAg
IHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4
XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXki
LCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotCi0gICAgICAgICAg
ICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKLSAgICAgICAgICAgIGV2YWxBbmRM
b2coImtleUluZGV4Kys7Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
c2hvdWxkQmUoImtleUluZGV4IiwgIjMiKTsKLSAgICAgICAgICB0ZXN0R3JvdXAxMigpOwotICAg
ICAgICB9Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXAxMigpCi17Ci0gICAga2V5SW5k
ZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDA7Iik7Ci0gICAga2V5UmFuZ2UgPSBldmFsQW5k
TG9nKCJrZXlSYW5nZSA9IElEQktleVJhbmdlLnVwcGVyQm91bmQoJ0pvZScsIHRydWUpOyIpOwot
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgn
bmFtZScpLm9wZW5LZXlDdXJzb3Ioa2V5UmFuZ2UpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24gKGV2ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50
LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52
YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAi
b2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotCi0gICAgICAgICAgICBl
dmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2co
ImtleUluZGV4Kys7Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBz
aG91bGRCZSgia2V5SW5kZXgiLCAiMiIpOwotICAgICAgICAgICAgdGVzdEdyb3VwMTMoKTsKLSAg
ICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdEdyb3VwMTMoKQotewotICAgIGtleUlu
ZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAzOyIpOwotICAgIGtleVJhbmdlID0gZXZhbEFu
ZExvZygia2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5vbmx5KCdQYXQnKTsiKTsKLQotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVu
S2V5Q3Vyc29yKGtleVJhbmdlKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkg
ewotICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVz
dWx0OyIpOwotICAgICAgICBpZiAoY3Vyc29yKSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vy
c29yLmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIp
OwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3Jl
RGF0YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsKLQotICAgICAgICAgICAgZXZhbEFuZExvZygi
Y3Vyc29yLmNvbnRpbnVlKCk7Iik7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsr
OyIpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgc2hvdWxkQmUoImtl
eUluZGV4IiwgIjQiKTsKLSAgICAgICAgICAgIHRlc3RHcm91cDE0KCk7Ci0gICAgICAgIH0KLSAg
ICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDE0KCkKLXsKLSAgICBrZXlJbmRleCA9IGV2YWxB
bmRMb2coImtleUluZGV4ID0gMDsiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuQ3Vyc29yKCk7Iik7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygi
Y3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgICAgaWYgKGN1cnNvcikgewot
ICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNv
cnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
cHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7Ci0g
ICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRh
TmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJj
dXJzb3IudmFsdWUuaGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52
YWx1ZS5oZWlnaHQiKTsKLSAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUp
IHsKLSAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIsICJvYmpl
Y3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOwotCi0g
ICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29y
dFtrZXlJbmRleF0udmFsdWUubmFtZSIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5w
cmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsKLSAg
ICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUubmFtZSIsICJvYmplY3RTdG9yZURhdGFO
YW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1
cnNvci52YWx1ZS5oZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZh
bHVlLmhlaWdodCIpOwotICAgICAgICAgICAgaWYgKCd3ZWlnaHQnIGluIGN1cnNvci52YWx1ZSkg
ewotICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVj
dFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKLSAgICAgICAgfQot
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJvYmplY3RT
dG9yZURhdGFOYW1lU29ydC5sZW5ndGgiKTsKLSAgICAgICAgICAgIHRlc3RHcm91cDE1KCk7Ci0g
ICAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDE1KCkKLXsKLSAgICBrZXlJ
bmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gb2JqZWN0U3RvcmVEYXRhTmFtZVNvcnQubGVu
Z3RoIC0gMTsiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0
U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuQ3Vyc29yKG51bGwsIElEQkN1cnNvci5QUkVWKTsiKTsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewotICAgICAgICBjdXJzb3IgPSBldmFs
QW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgICAgICBpZiAoY3Vy
c29yKSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURh
dGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOwotICAgICAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS5r
ZXkiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUubmFtZSIsICJvYmplY3RT
dG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOwotICAgICAgICAgICAgc2hv
dWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5
SW5kZXhdLnZhbHVlLmhlaWdodCIpOwotICAgICAgICAgICAgaWYgKCd3ZWlnaHQnIGluIGN1cnNv
ci52YWx1ZSkgewotICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0
IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7
Iik7Ci0KLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0
YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgi
Y3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtl
eSIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0
b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJ
bmRleF0udmFsdWUuaGVpZ2h0Iik7Ci0gICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29y
LnZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS53ZWlnaHQi
LCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLndlaWdodCIpOwotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICBrZXlJbmRleC0tOwotICAgICAgICB9Ci0gICAgICAg
IGVsc2UgewotICAgICAgICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIi0xIik7Ci0gICAgICAg
ICAgICB0ZXN0R3JvdXAxNigpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0
R3JvdXAxNigpCi17Ci0gICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDE7Iik7
Ci0gICAga2V5UmFuZ2UgPSBldmFsQW5kTG9nKCJrZXlSYW5nZSA9IElEQktleVJhbmdlLmJvdW5k
KCdCb2InLCAnUm9uJyk7Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IG9iamVjdFN0b3JlLmluZGV4KCduYW1lJykub3BlbkN1cnNvcihrZXlSYW5nZSk7Iik7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAgY3Vyc29yID0gZXZhbEFuZExv
ZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgICAgaWYgKGN1cnNvcikg
ewotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFt
ZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJz
b3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7
Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVE
YXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3IudmFsdWUuaGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4
XS52YWx1ZS5oZWlnaHQiKTsKLSAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFs
dWUpIHsKLSAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0Iiwg
Im9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7
Ci0KLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5h
bWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vy
c29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIp
OwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3Jl
RGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRl
eF0udmFsdWUuaGVpZ2h0Iik7Ci0gICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZh
bHVlKSB7Ci0gICAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIs
ICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7Ci0gICAg
ICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAi
NSIpOwotICAgICAgICAgICAgdGVzdEdyb3VwMTcoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQot
ZnVuY3Rpb24gdGVzdEdyb3VwMTcoKQotewotICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5
SW5kZXggPSAyOyIpOwotICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJL
ZXlSYW5nZS5ib3VuZCgnQm9iJywgJ1JvbicsIHRydWUpOyIpOwotCi0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9wZW5DdXJzb3Io
a2V5UmFuZ2UpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICAg
IGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0g
ICAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5Iiwg
Im9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAg
ICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNv
cnRba2V5SW5kZXhdLmtleSIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5u
YW1lIiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0g
ICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURh
dGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7Ci0gICAgICAgICAgICBpZiAoJ3dl
aWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vy
c29yLnZhbHVlLndlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFs
dWUud2VpZ2h0Iik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGV2YWxBbmRMb2coImN1
cnNvci5jb250aW51ZSgpOyIpOwotCi0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIs
ICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOwotICAgICAg
ICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVT
b3J0W2tleUluZGV4XS5rZXkiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUu
bmFtZSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOwot
ICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQiLCAib2JqZWN0U3RvcmVE
YXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOwotICAgICAgICAgICAgaWYgKCd3
ZWlnaHQnIGluIGN1cnNvci52YWx1ZSkgewotICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoImN1
cnNvci52YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZh
bHVlLndlaWdodCIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBldmFsQW5kTG9nKCJr
ZXlJbmRleCsrOyIpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgc2hv
dWxkQmUoImtleUluZGV4IiwgIjUiKTsKLSAgICAgICAgICAgIHRlc3RHcm91cDE4KCk7Ci0gICAg
ICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDE4KCkKLXsKLSAgICBrZXlJbmRl
eCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gMTsiKTsKLSAgICBrZXlSYW5nZSA9IGV2YWxBbmRM
b2coImtleVJhbmdlID0gSURCS2V5UmFuZ2UuYm91bmQoJ0JvYicsICdSb24nLCBmYWxzZSwgdHJ1
ZSk7Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3Jl
LmluZGV4KCduYW1lJykub3BlbkN1cnNvcihrZXlSYW5nZSk7Iik7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICAg
ICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5k
ZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtl
eSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7Ci0gICAgICAgICAg
ICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRb
a2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFs
dWUuaGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWln
aHQiKTsKLSAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKLSAgICAg
ICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3Jl
RGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7Ci0KLSAgICAgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUlu
ZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlL
ZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotICAgICAgICAg
ICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0
W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZh
bHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUuaGVp
Z2h0Iik7Ci0gICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7Ci0gICAg
ICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIsICJvYmplY3RTdG9y
ZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7Ci0gICAgICAgIH0KLSAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNCIpOwotICAgICAg
ICAgICAgdGVzdEdyb3VwMTkoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVz
dEdyb3VwMTkoKQotewotICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAyOyIp
OwotICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5ib3Vu
ZCgnQm9iJywgJ1JvbicsIHRydWUsIHRydWUpOyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9wZW5DdXJzb3Ioa2V5UmFu
Z2UpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICAgIGN1cnNv
ciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICAg
IGlmIChjdXJzb3IpIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVj
dFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBz
aG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5
SW5kZXhdLmtleSIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwg
Im9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAg
ICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1l
U29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7Ci0gICAgICAgICAgICBpZiAoJ3dlaWdodCcg
aW4gY3Vyc29yLnZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZh
bHVlLndlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUud2Vp
Z2h0Iik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5j
b250aW51ZSgpOyIpOwotCi0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmpl
Y3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOwotICAgICAgICAgICAg
c2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tl
eUluZGV4XS5rZXkiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUubmFtZSIs
ICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOwotICAgICAg
ICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFt
ZVNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOwotICAgICAgICAgICAgaWYgKCd3ZWlnaHQn
IGluIGN1cnNvci52YWx1ZSkgewotICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52
YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLndl
aWdodCIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRl
eCsrOyIpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgc2hvdWxkQmUo
ImtleUluZGV4IiwgIjQiKTsKLSAgICAgICAgICAgIHRlc3RHcm91cDIwKCk7Ci0gICAgICAgIH0K
LSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDIwKCkKLXsKLSAgICBrZXlJbmRleCA9IGV2
YWxBbmRMb2coImtleUluZGV4ID0gNDsiKTsKLSAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtl
eVJhbmdlID0gSURCS2V5UmFuZ2UuYm91bmQoJ0JvYicsICdSb24nKTsiKTsKLQotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVu
Q3Vyc29yKGtleVJhbmdlLCBJREJDdXJzb3IuUFJFVik7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbiAoZXZlbnQpIHsKLSAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZl
bnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICAgICAg
c2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhd
LnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIs
ICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7Ci0gICAgICAgICAgICBz
aG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5
SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUu
aGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQi
KTsKLSAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKLSAgICAgICAg
ICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0
YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7Ci0KLSAgICAgICAgICAg
IHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4
XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXki
LCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotICAgICAgICAgICAg
c2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tl
eUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVl
LmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0
Iik7Ci0gICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7Ci0gICAgICAg
ICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIsICJvYmplY3RTdG9yZURh
dGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4LS07Iik7Ci0gICAgICAgIH0KLSAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiMCIpOwotICAgICAgICAg
ICAgdGVzdEdyb3VwMjEoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdEdy
b3VwMjEoKQotewotICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAzOyIpOwot
ICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5vbmx5KDY1
KTsiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
aW5kZXgoJ2hlaWdodCcpLm9wZW5LZXlDdXJzb3Ioa2V5UmFuZ2UsIElEQkN1cnNvci5ORVhUKTsi
KTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewotICAgICAgICBjdXJzb3IgPSBl
dmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgICAgICBpZiAo
Y3Vyc29yKSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9y
ZURhdGFIZWlnaHRTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKLSAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tl
eUluZGV4XS5rZXkiKTsKLQotICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVl
KCk7Iik7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOwotICAgICAgICB9
Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIjUiKTsK
LSAgICAgICAgICAgIHRlc3RHcm91cDIyKCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0
aW9uIHRlc3RHcm91cDIyKCkKLXsKLSAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4
ID0gMzsiKTsKLSAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtleVJhbmdlID0gSURCS2V5UmFu
Z2Uub25seSg2NSk7Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9i
amVjdFN0b3JlLmluZGV4KCdoZWlnaHQnKS5vcGVuS2V5Q3Vyc29yKGtleVJhbmdlLCBJREJDdXJz
b3IuTkVYVF9OT19EVVBMSUNBVEUpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50
KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQ7Iik7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJj
dXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLmhl
aWdodCIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVj
dFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLmtleSIpOwotCi0gICAgICAgICAgICBldmFs
QW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImtl
eUluZGV4Kys7Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBzaG91
bGRCZSgia2V5SW5kZXgiLCAiNCIpOwotICAgICAgICAgICAgdGVzdEdyb3VwMjQoKTsKLSAgICAg
ICAgfQotICAgIH0KLX0KLQotLyogdGhpcyB3YXMgc3BsaXQgb3V0IGludG8gYSBzZXBhcmF0ZSB0
ZXN0Ci1mdW5jdGlvbiB0ZXN0R3JvdXAyMygpCi17Ci0gICAga2V5SW5kZXggPSBldmFsQW5kTG9n
KCJrZXlJbmRleCA9IDU7Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IG9iamVjdFN0b3JlLmluZGV4KCdoZWlnaHQnKS5vcGVuS2V5Q3Vyc29yKG51bGwsIElEQkN1cnNv
ci5QUkVWX05PX0RVUExJQ0FURSk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQp
IHsKLSAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJl
c3VsdDsiKTsKLSAgICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICAgICAgc2hvdWxkQmUoImN1
cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUuaGVp
Z2h0Iik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0
U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0ua2V5Iik7Ci0KLSAgICAgICAgICAgIGV2YWxB
bmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOwotICAgICAgICAgICAgaWYgKGtleUluZGV4ID09
IDUpIHsKLSAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleC0tOyIpOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgtLTsiKTsKLSAgICAgICAg
fQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICItMSIp
OwotICAgICAgICAgICAgdGVzdEdyb3VwMjQoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLSovCi0K
LWZ1bmN0aW9uIHRlc3RHcm91cDI0KCkKLXsKLSAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtl
eUluZGV4ID0gMzsiKTsKLSAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtleVJhbmdlID0gSURC
S2V5UmFuZ2Uub25seSg2NSk7Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IG9iamVjdFN0b3JlLmluZGV4KCdoZWlnaHQnKS5vcGVuQ3Vyc29yKGtleVJhbmdlLCBJREJD
dXJzb3IuTkVYVCk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAg
ICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsK
LSAgICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXki
LCAib2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7Ci0g
ICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRh
SGVpZ2h0U29ydFtrZXlJbmRleF0ua2V5Iik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29y
LnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUu
bmFtZSIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQiLCAib2Jq
ZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7Ci0gICAgICAg
ICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgc2hv
dWxkQmUoImN1cnNvci52YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtr
ZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGV2
YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOwotICAgICAgICAgICAgZXZhbEFuZExvZygi
a2V5SW5kZXgrKzsiKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHNo
b3VsZEJlKCJrZXlJbmRleCIsICI1Iik7Ci0gICAgICAgICAgICB0ZXN0R3JvdXAyNSgpOwotICAg
ICAgICB9Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXAyNSgpCi17Ci0gICAga2V5SW5k
ZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDM7Iik7Ci0gICAga2V5UmFuZ2UgPSBldmFsQW5k
TG9nKCJrZXlSYW5nZSA9IElEQktleVJhbmdlLm9ubHkoNjUpOyIpOwotCi0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnaGVpZ2h0Jykub3BlbkN1
cnNvcihrZXlSYW5nZSwgSURCQ3Vyc29yLk5FWFRfTk9fRFVQTElDQVRFKTsiKTsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewotICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJj
dXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgICAgICBpZiAoY3Vyc29yKSB7Ci0g
ICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFIZWlnaHRT
b3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJz
b3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tleUluZGV4XS5rZXki
KTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUubmFtZSIsICJvYmplY3RTdG9y
ZURhdGFIZWlnaHRTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tl
eUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKLSAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJz
b3IudmFsdWUpIHsKLSAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdo
dCIsICJvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVl
KCk7Iik7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOwotICAgICAgICB9
Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIjQiKTsK
LSAgICAgICAgICAgIHRlc3RHcm91cDI3KCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLS8qIHRo
aXMgd2FzIHNwbGl0IG91dCBpbnRvIGEgc2VwYXJhdGUgdGVzdAotZnVuY3Rpb24gdGVzdEdyb3Vw
MjYoKQotewotICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSA1OyIpOwotCi0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnaGVp
Z2h0Jykub3BlbkN1cnNvcihudWxsLCBJREJDdXJzb3IuUFJFVl9OT19EVVBMSUNBVEUpOyIpOwot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2YWxB
bmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICAgIGlmIChjdXJz
b3IpIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0
YUhlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOwotICAgICAgICAgICAgc2hvdWxk
QmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5k
ZXhdLmtleSIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9i
amVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YUhlaWdo
dFNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOwotICAgICAgICAgICAgaWYgKCd3ZWlnaHQn
IGluIGN1cnNvci52YWx1ZSkgewotICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFs
dWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLndl
aWdodCIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3Iu
Y29udGludWUoKTsiKTsKLSAgICAgICAgICAgIGlmIChrZXlJbmRleCA9PSA1KSB7Ci0gICAgICAg
ICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgtLTsiKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4LS07Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiLTEiKTsKLSAgICAgICAgICAg
IHRlc3RHcm91cDI3KCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0qLwotCi1mdW5jdGlvbiB0ZXN0
R3JvdXAyNygpCi17Ci0gICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDA7Iik7
Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4
KCduYW1lJykub3BlbktleUN1cnNvcigpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2
ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQ7Iik7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5u
YW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0
U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotCi0gICAgICAgICAgICBuZXh0S2V5
ID0gZXZhbEFuZExvZygibmV4dEtleSA9ICFrZXlJbmRleCA/ICdQYXQnIDogdW5kZWZpbmVkOyIp
OwotICAgICAgICAgICAgaWYgKG5leHRLZXkpIHsKLSAgICAgICAgICAgICAgICBldmFsQW5kTG9n
KCJjdXJzb3IuY29udGludWUobmV4dEtleSk7Iik7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURh
dGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOwotICAgICAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS5r
ZXkiKTsKLQotICAgICAgICAgICAgaWYgKCFrZXlJbmRleCkgewotICAgICAgICAgICAgICAgIGtl
eUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAzOyIpOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsi
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
IHNob3VsZEJlKCJrZXlJbmRleCIsICJvYmplY3RTdG9yZURhdGEubGVuZ3RoIik7Ci0gICAgICAg
ICAgICB0ZXN0R3JvdXAyOCgpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0
R3JvdXAyOCgpCi17Ci0gICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDA7Iik7
Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4
KCduYW1lJykub3BlbktleUN1cnNvcigpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2
ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQ7Iik7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5u
YW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0
U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotCi0gICAgICAgICAgICBuZXh0S2V5
ID0gZXZhbEFuZExvZygibmV4dEtleSA9ICFrZXlJbmRleCA/ICdGbG8nIDogdW5kZWZpbmVkOyIp
OwotICAgICAgICAgICAgaWYgKG5leHRLZXkpIHsKLSAgICAgICAgICAgICAgICBldmFsQW5kTG9n
KCJjdXJzb3IuY29udGludWUobmV4dEtleSk7Iik7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURh
dGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOwotICAgICAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS5r
ZXkiKTsKLQotICAgICAgICAgICAga2V5SW5kZXggKz0ga2V5SW5kZXggPyAxIDogMjsKLSAgICAg
ICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJv
YmplY3RTdG9yZURhdGEubGVuZ3RoIik7Ci0gICAgICAgICAgICB0ZXN0R3JvdXAyOSgpOwotICAg
ICAgICB9Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXAyOSgpCi17Ci0gICAga2V5SW5k
ZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDA7Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCduYW1lJykub3BlbkN1cnNvcigpOyIp
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2
YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICAgIGlmIChj
dXJzb3IpIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3Jl
RGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhd
LmtleSIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVj
dFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBz
aG91bGRCZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtr
ZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7Ci0gICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vy
c29yLnZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndl
aWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIG5leHRLZXkgPSBldmFsQW5kTG9nKCJuZXh0
S2V5ID0gIWtleUluZGV4ID8gJ1BhdCcgOiB1bmRlZmluZWQ7Iik7Ci0gICAgICAgICAgICBpZiAo
bmV4dEtleSkgewotICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZShu
ZXh0S2V5KTsiKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZXZhbEFu
ZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4
XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXki
LCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotICAgICAgICAgICAg
c2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tl
eUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVl
LmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0
Iik7Ci0gICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7Ci0gICAgICAg
ICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIsICJvYmplY3RTdG9yZURh
dGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIGlmICgha2V5SW5kZXgpIHsKLSAgICAgICAgICAgICAgICBrZXlJbmRleCA9IGV2
YWxBbmRMb2coImtleUluZGV4ID0gMzsiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgi
a2V5SW5kZXgiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnQubGVuZ3RoIik7Ci0gICAgICAgICAg
ICB0ZXN0R3JvdXAzMCgpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0R3Jv
dXAzMCgpCi17Ci0gICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDA7Iik7Ci0K
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCdu
YW1lJykub3BlbkN1cnNvcigpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7
Ci0gICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1
bHQ7Iik7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJz
b3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7
Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVE
YXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNv
ci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5u
YW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmpl
Y3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7Ci0gICAgICAgICAg
ICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJ
bmRleF0udmFsdWUud2VpZ2h0Iik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIG5leHRL
ZXkgPSBldmFsQW5kTG9nKCJuZXh0S2V5ID0gIWtleUluZGV4ID8gJ0ZsbycgOiB1bmRlZmluZWQ7
Iik7Ci0gICAgICAgICAgICBpZiAobmV4dEtleSkgewotICAgICAgICAgICAgICAgIGV2YWxBbmRM
b2coImN1cnNvci5jb250aW51ZShuZXh0S2V5KTsiKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3Jl
RGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhd
LmtleSIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVj
dFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBz
aG91bGRCZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtr
ZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7Ci0gICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vy
c29yLnZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndl
aWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGtleUluZGV4ICs9IGtleUluZGV4ID8gMSA6
IDI7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgia2V5
SW5kZXgiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnQubGVuZ3RoIik7Ci0gICAgICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9pbmRleGVzLmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgogPC9ib2R5PgogPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMtZGVsZXRlLW51bGwta2V5Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMt
ZGVsZXRlLW51bGwta2V5Lmh0bWwKaW5kZXggZTkwMDg4NzI4OTA1YTQ4YzJhNmRkN2NhNWUyOWJk
MTAwNDA3NDI5YS4uY2Y2Njc1ZmE3NGY3MTY5OTI2OTA3MDllN2Y3Mzk4OGRlZjM0YjcyYyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWly
ZW1lbnRzLWRlbGV0ZS1udWxsLWtleS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL21vemlsbGEva2V5LXJlcXVpcmVtZW50cy1kZWxldGUtbnVsbC1rZXkuaHRtbApAQCAt
MSw1MyArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0
dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0
L3Rlc3Rfa2V5X3JlcXVpcmVtZW50cy5odG1sCi0gIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoK
LSAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgot
ICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAi
Ci0tLT4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNj
cmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBiZWhhdmlvciBkZWxldGluZyBlbnRyeSB3aXRoIG5v
IGtleSIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygp
OwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24g
PSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWRE
Qi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3Bl
blN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRi
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gY2xlYW5EYXRhYmFzZUFuZENyZWF0ZU9iamVjdFN0b3JlOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjbGVhbkRhdGFi
YXNlQW5kQ3JlYXRlT2JqZWN0U3RvcmUoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jlcyhk
Yik7Ci0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdiYXInKTsiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJvYmpl
Y3RTdG9yZS5kZWxldGUobnVsbCk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7
Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMva2V5LXJlcXVpcmVtZW50cy1kZWxldGUtbnVsbC1rZXkuanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEva2V5LXJlcXVpcmVtZW50cy1pbmxpbmUt
YW5kLXBhc3NlZC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9r
ZXktcmVxdWlyZW1lbnRzLWlubGluZS1hbmQtcGFzc2VkLmh0bWwKaW5kZXggZGMzNWU1ODEyMDI5
NzRmNzBiYTRjZmY1YzA4NDY3MmZhNGJhYzY1Mi4uYjlkYjNiNzA5MWZiMGZmYjBjZTIyZGFlMDU0
MDdiNzM2ZmI0NThlMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW96aWxsYS9rZXktcmVxdWlyZW1lbnRzLWlubGluZS1hbmQtcGFzc2VkLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWlyZW1lbnRzLWlubGlu
ZS1hbmQtcGFzc2VkLmh0bWwKQEAgLTEsNTQgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEt
LQotICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291
cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2tleV9yZXF1aXJlbWVudHMuaHRtbAotICBsaWNl
bnNlIG9mIG9yaWdpbmFsIHRlc3Q6Ci0gICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KLSAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgotLS0+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxi
b2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgYmVoYXZpb3Ig
YWRkaW5nIGlubGluZSBhbmQgcGFzc2VkIGtleSBzaW11bHRhbmVvdXNseSIpOwotCi1mdW5jdGlv
biB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNl
bGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFz
ZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2Ny
aXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9w
ZW5TdWNjZXNzKCkKLXsKLSAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKLSAgICBkYiA9IGV2
YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCi17
Ci0gICAgZGVidWcoImNsZWFuRGF0YWJhc2UoKToiKTsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9y
ZXMoZGIpOwotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5j
cmVhdGVPYmplY3RTdG9yZSgnYmF6JywgeyBrZXlQYXRoOiAnaWQnIH0pOyIpOwotICAgIGV2YWxB
bmRFeHBlY3RFeGNlcHRpb24oIm9iamVjdFN0b3JlLmFkZCh7aWQ6IDV9LCA1KTsiLCAiSURCRGF0
YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10
ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9rZXktcmVxdWlyZW1l
bnRzLWlubGluZS1hbmQtcGFzc2VkLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5Pgog
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9rZXktcmVxdWlyZW1lbnRzLXB1dC1uby1rZXkuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEva2V5LXJlcXVpcmVtZW50cy1wdXQtbm8ta2V5Lmh0bWwKaW5kZXgg
NTVkZjA4YTNhODY5ODc5NmQwOWRiOTc4ZjVlM2EwN2YzNjE2OGZkZS4uNmQ0ZTA1NjBiMzhiMmY2
N2RjNjNkZGE1NGE0NWY3NTU1NDU5MmNlMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWlyZW1lbnRzLXB1dC1uby1rZXkuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMt
cHV0LW5vLWtleS5odG1sCkBAIC0xLDUzICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KLTwhLS0K
LSAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJj
ZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9rZXlfcmVxdWlyZW1lbnRzLmh0bWwKLSAgbGljZW5z
ZSBvZiBvcmlnaW5hbCB0ZXN0OgotICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCi0gICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvICIKLS0tPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9k
eT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGJlaGF2aW9yIHB1
dGluZyB3aXRob3V0IGtleSIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5k
b3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAg
ZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2
YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQotewotICAgIGRl
bGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJv
YmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdiYXInKTsiKTsKLSAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKCJvYmplY3RTdG9yZS5wdXQoe30pOyIsICJJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5EQVRBX0VSUiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQot
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2tleS1yZXF1aXJlbWVudHMtcHV0LW5v
LWtleS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KLQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWlyZW1l
bnRzLXB1dC1udWxsLWtleS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9rZXktcmVxdWlyZW1lbnRzLXB1dC1udWxsLWtleS5odG1sCmluZGV4IGI0ZTI5ZGEzNzk0
YjQ2ZmY5MWViNjVkOGUyYjc2Mzk3ZmJkZjcxZDQuLjcwYzkyNDE5NjA3ZDNkN2YxZmIyMDA0OGNi
OWYwMDNkMjU1MzYxOTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vemlsbGEva2V5LXJlcXVpcmVtZW50cy1wdXQtbnVsbC1rZXkuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMtcHV0LW51bGwt
a2V5Lmh0bWwKQEAgLTEsNTMgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLQotICBvcmln
aW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9p
bmRleGVkREIvdGVzdC90ZXN0X2tleV9yZXF1aXJlbWVudHMuaHRtbAotICBsaWNlbnNlIG9mIG9y
aWdpbmFsIHRlc3Q6Ci0gICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KLSAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8gIgotLS0+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNj
cmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgYmVoYXZpb3IgcHV0KClpbmcg
d2l0aCBudWxsIGtleSIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQ
cmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVz
Y3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxB
bmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGNsZWFuRGF0YWJhc2U7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQotewotICAgIGRlbGV0
ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdiYXInKTsiKTsKLSAgICBldmFsQW5kRXhw
ZWN0RXhjZXB0aW9uKCJvYmplY3RTdG9yZS5wdXQoe30sIG51bGwpOyIsICJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5EQVRBX0VSUiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsK
LQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2tleS1yZXF1aXJlbWVudHMtcHV0
LW51bGwta2V5LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgotCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1
aXJlbWVudHMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEva2V5
LXJlcXVpcmVtZW50cy5odG1sCmluZGV4IDgzMWYyMzUyODMwYzdmYjU0NWM0YTUxOTkwOWVhM2M3
NWY4MGQ4ZTQuLmMzMjRmZjUxNGQwZTVlZjkyMjY5Njg1OGZkZWIxNjRkODM1YjlhMWMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEva2V5LXJlcXVpcmVt
ZW50cy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEva2V5
LXJlcXVpcmVtZW50cy5odG1sCkBAIC0xLDg2ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KLTwh
LS0KLSAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3Nv
dXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9rZXlfcmVxdWlyZW1lbnRzLmh0bWwKLSAgbGlj
ZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgotICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCi0gICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvICIKLS0tPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8
Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGV2ZW50LnRh
cmdldC5yZXN1bHQgYWZ0ZXIgYWRkKCkgYW5kIHB1dCgpIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQot
ewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlv
bi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3Mo
KQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0K
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIp
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY2xlYW5EYXRh
YmFzZSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLSAgICBvYmplY3RTdG9y
ZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2Zvbycs
IHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9KTsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZCh7fSk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBwb3N0QWRkOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotfQotCi1mdW5jdGlvbiBwb3N0QWRkKCkKLXsKLSAgICBrZXkxID0gZXZhbEFuZExvZygia2V5
MSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoe30sIGtleTEpOyIpOwotICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gcG9zdFB1dDE7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHBvc3RQdXQxKCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQu
dGFyZ2V0LnJlc3VsdCIsICJrZXkxIik7Ci0gICAga2V5MiA9IGV2YWxBbmRMb2coImtleTIgPSAx
MDsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1
dCh7fSwga2V5Mik7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0UHV0MjsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24g
cG9zdFB1dDIoKQotewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgImtleTIi
KTsKLSAgICBrZXkyID0gZXZhbEFuZExvZygia2V5MiA9IDEwMDsiKTsKLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCh7fSwga2V5Mik7Iik7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0UHV0MzsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gcG9zdFB1dDMoKQotewotICAgIHNo
b3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgImtleTIiKTsKLSAgICBmaW5pc2hKU1Rlc3Qo
KTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9r
ZXktcmVxdWlyZW1lbnRzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1s
PgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29i
amVjdC1jdXJzb3JzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L29iamVjdC1jdXJzb3JzLmh0bWwKaW5kZXggMTAyYWEwYTQxNDAwMzkxYmE5ZjI2ZDZiMWYyODQ3
NWM5NDUxYTM2NS4uYTE0NzFlODY5ZWI1M2I2YzIwZmZiN2U0YzhlMTA5OTVjZTEyZDcwOCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9vYmplY3QtY3Vy
c29ycy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2Jq
ZWN0LWN1cnNvcnMuaHRtbApAQCAtMSw5NyArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0t
Ci0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3Vy
Y2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3Rfb2JqZWN0Q3Vyc29ycy5odG1sCi0gIGxpY2Vuc2Ug
b2Ygb3JpZ2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgotICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+
Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBpbmRleCBjdXJzb3Jz
Iik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0K
LSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJN
eSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9w
ZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3Vj
Y2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0K
LQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBl
dmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5E
YXRhYmFzZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LX0KLQotZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3Rv
cmVzKGRiKTsKLSAgICBhdXRvSW5jcmVtZW50ID0gZXZhbEFuZExvZygiYXV0b0luY3JlbWVudCA9
IGZhbHNlOyIpOwotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBk
Yi5jcmVhdGVPYmplY3RTdG9yZSgnYScsIHsga2V5UGF0aDogJ2lkJywgYXV0b0luY3JlbWVudDog
YXV0b0luY3JlbWVudCB9KTsiKTsKLSAgICBpbmRleGVzID0gWwotICAgICAgICB7IG5hbWU6ICJh
Iiwgb3B0aW9uczogeyB9IH0sCi0gICAgICAgIHsgbmFtZTogImIiLCBvcHRpb25zOiB7IHVuaXF1
ZTogdHJ1ZSB9IH0KLSAgICBdOwotICAgIGZvciAoaiBpbiBpbmRleGVzKSB7Ci0gICAgICAgIGV2
YWxBbmRMb2coIm9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KGluZGV4ZXNbal0ubmFtZSwgJ25hbWUn
LCBpbmRleGVzW2pdLm9wdGlvbnMpOyIpOwotICAgIH0KLSAgICBkYXRhID0gZXZhbEFuZExvZygi
ZGF0YSA9IHsgbmFtZTogJ0JlbicsIGlkOiAxIH07Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoZGF0YSk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBwb3N0QWRkOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotfQotCi1mdW5jdGlvbiBwb3N0QWRkKCkKLXsKLSAgICBudW1JbmRleGVzID0gaW5k
ZXhlcy5sZW5ndGg7Ci0gICAgaW5kZXhlc0ZpbmlzaGVkID0gMDsKLSAgICBmb3IgKGogaW4gaW5k
ZXhlcykgewotICAgICAgICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gb2JqZWN0U3RvcmUu
aW5kZXgoaW5kZXhlc1tqXS5uYW1lKTsiKTsKLSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBpbmRleC5vcGVuQ3Vyc29yKCk7Iik7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJl
c3VsdC52YWx1ZS5uYW1lIiwgIidCZW4nIik7Ci0gICAgICAgICAgICBpZiAoKytpbmRleGVzRmlu
aXNoZWQgPT0gbnVtSW5kZXhlcykgewotICAgICAgICAgICAgICAgIGlmIChhdXRvSW5jcmVtZW50
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHNldHVwQXV0b0luY3JlbWVudCgpOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICB9Ci19Ci0KLWZ1
bmN0aW9uIHNldHVwQXV0b0luY3JlbWVudCgpCi17Ci0gICAgYXV0b0luY3JlbWVudCA9IGV2YWxB
bmRMb2coImF1dG9JbmNyZW1lbnQgPSB0cnVlOyIpOwotICAgIG9iamVjdFN0b3JlID0gZXZhbEFu
ZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnYicsIHsga2V5UGF0aDog
J2lkJywgYXV0b0luY3JlbWVudDogYXV0b0luY3JlbWVudCB9KTsiKTsKLSAgICBmb3IgKGogaW4g
aW5kZXhlcykgewotICAgICAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5jcmVhdGVJbmRleChp
bmRleGVzW2pdLm5hbWUsICduYW1lJywgaW5kZXhlc1tqXS5vcHRpb25zKTsiKTsKLSAgICB9Ci0g
ICAgZGF0YSA9IGV2YWxBbmRMb2coImRhdGEgPSB7IG5hbWU6ICdCZW4nIH07Iik7Ci0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoZGF0YSk7Iik7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0QWRkOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL29iamVjdC1jdXJzb3JzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgogPC9ib2R5PgogPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL29iamVjdC1pZGVudGl0eS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9vYmplY3QtaWRlbnRpdHkuaHRtbAppbmRleCBlNDEyNDk2MTE4
NTA0ZDg4YTYyMDIxMzBlZmIxNzNjY2I3MThlMjQ3Li5kMTBiZTlkNzY0NTY3ZTI1ZWRkYmY5YzM3
YzI4YjgzZjk5YjU3MjljIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL29iamVjdC1pZGVudGl0eS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvb2JqZWN0LWlkZW50aXR5Lmh0bWwKQEAgLTEsNzYgKzEsMTAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPCEtLQotICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemls
bGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X29iamVjdF9p
ZGVudGl0eS5odG1sP2ZvcmNlPTEKLSAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgotICAgICIg
QW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCi0gICAgICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKLS0tPgog
PGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJl
ZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9u
KCJUZXN0IEluZGV4ZWREQjogb2JqZWN0IGlkZW50aXR5Iik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQot
ewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlv
bi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3Mo
KQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZU9iamVjdFN0b3JlQW5kSW5kZXg7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9u
IGNyZWF0ZU9iamVjdFN0b3JlQW5kSW5kZXgoKQotewotICAgIHRyYW5zYWN0aW9uID0gZXZhbEFu
ZExvZygidHJhbnNhY3Rpb24gPSBldmVudC50YXJnZXQudHJhbnNhY3Rpb247Iik7Ci0gICAgZGVs
ZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLSAgICBvYmplY3RTdG9yZTEgPSBldmFsQW5kTG9nKCJv
YmplY3RTdG9yZTEgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJyk7Iik7Ci0gICAgb2JqZWN0
U3RvcmUyID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUyID0gdHJhbnNhY3Rpb24ub2JqZWN0U3Rv
cmUoJ2ZvbycpOyIpOwotICAgIHNob3VsZEJlVHJ1ZSgib2JqZWN0U3RvcmUxID09PSBvYmplY3RT
dG9yZTIiKTsKLSAgICBpbmRleDEgPSBldmFsQW5kTG9nKCJpbmRleDEgPSBvYmplY3RTdG9yZTEu
Y3JlYXRlSW5kZXgoJ2JhcicsICdrZXknKTsiKTsKLSAgICBpbmRleDIgPSBldmFsQW5kTG9nKCJp
bmRleDIgPSBvYmplY3RTdG9yZTIuaW5kZXgoJ2JhcicpOyIpOwotICAgIHNob3VsZEJlVHJ1ZSgi
aW5kZXgxID09PSBpbmRleDIiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vbmNvbXBs
ZXRlID0gdGVzdElkZW50aXR5U29tZU1vcmU7Iik7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RJZGVudGl0
eVNvbWVNb3JlKCkKLXsKLSAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9u
ID0gZGIudHJhbnNhY3Rpb24oJ2ZvbycpOyIpOwotICAgIG9iamVjdFN0b3JlMyA9IGV2YWxBbmRM
b2coIm9iamVjdFN0b3JlMyA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdmb28nKTsiKTsKLSAg
ICBvYmplY3RTdG9yZTQgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZTQgPSB0cmFuc2FjdGlvbi5v
YmplY3RTdG9yZSgnZm9vJyk7Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJvYmplY3RTdG9yZTMgPT09
IG9iamVjdFN0b3JlNCIpOwotCi0gICAgc2hvdWxkQmVGYWxzZSgib2JqZWN0U3RvcmUzID09PSBv
YmplY3RTdG9yZTEiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJvYmplY3RTdG9yZTQgPT09IG9iamVj
dFN0b3JlMiIpOwotCi0gICAgaW5kZXgzID0gZXZhbEFuZExvZygiaW5kZXgzID0gb2JqZWN0U3Rv
cmUzLmluZGV4KCdiYXInKTsiKTsKLSAgICBpbmRleDQgPSBldmFsQW5kTG9nKCJpbmRleDQgPSBv
YmplY3RTdG9yZTQuaW5kZXgoJ2JhcicpOyIpOwotICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXgzID09
PSBpbmRleDQiKTsKLQotICAgIHNob3VsZEJlRmFsc2UoImluZGV4MyA9PT0gaW5kZXgxIik7Ci0g
ICAgc2hvdWxkQmVGYWxzZSgiaW5kZXg0ID09PSBpbmRleDIiKTsKLQotICAgIGZpbmlzaEpTVGVz
dCgpOwotfQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9v
YmplY3QtaWRlbnRpdHkuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+
Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2Jq
ZWN0LXN0b3JlLWlubGluZS1hdXRvaW5jcmVtZW50LWtleS1hZGRlZC1vbi1wdXQuaHRtbCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0LXN0b3JlLWlubGluZS1h
dXRvaW5jcmVtZW50LWtleS1hZGRlZC1vbi1wdXQuaHRtbAppbmRleCAzNWQ5ZjMzNTdkMTc3OGM5
YWJlODg1YThhOThhODAzY2EyMGIzOTQ5Li45MjAxMWI2MzFkMGY3MmMwOTI1YjA0NWUwZTY3ZDhh
MDI1OTVhYTMzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL29iamVjdC1zdG9yZS1pbmxpbmUtYXV0b2luY3JlbWVudC1rZXktYWRkZWQtb24tcHV0Lmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9vYmplY3Qtc3Rv
cmUtaW5saW5lLWF1dG9pbmNyZW1lbnQta2V5LWFkZGVkLW9uLXB1dC5odG1sCkBAIC0xLDc1ICsx
LDEwIEBACi08IURPQ1RZUEUgaHRtbD4KLTwhLS0KLSAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214
ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9v
YmplY3RTdG9yZV9pbmxpbmVfYXV0b2luY3JlbWVudF9rZXlfYWRkZWRfb25fcHV0Lmh0bWw/Zm9y
Y2U9MQotICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Ci0gICAgIiBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KLSAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgotLS0+CiA8aHRtbD4KIDxoZWFkPgog
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4K
IDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERC
IGFkZGluZyBhbiBhdXRvaW5jcmVtZW50ZWQga2V5IGFuZCByZXRyaWV2aW5nIGl0IHN1Y2Nlc3Nm
dWxseSIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygp
OwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24g
PSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWRE
Qi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3Bl
blN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRi
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNl
dHVwT2JqZWN0U3RvcmU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldHVwT2JqZWN0U3RvcmUoKQotewotICAgIGRlbGV0ZUFs
bE9iamVjdFN0b3JlcyhkYik7Ci0gICAgdGVzdCA9IGV2YWxBbmRMb2coInRlc3QgPSB7XG4iICsK
LSIgICAgICAgIG5hbWU6ICdpbmxpbmUga2V5OyBrZXkgZ2VuZXJhdG9yJyxcbiIgKwotIiAgICAg
ICAgYXV0b0luY3JlbWVudDogdHJ1ZSxcbiIgKwotIiAgICAgICAgc3RvcmVkT2JqZWN0OiB7IG5h
bWU6ICdMaW5jb2xuJyB9LFxuIiArCi0iICAgICAgICBrZXlOYW1lOiAnaWQnLFxuIiArCi0iICAg
IH07Iik7Ci0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNy
ZWF0ZU9iamVjdFN0b3JlKHRlc3QubmFtZSwgeyBrZXlQYXRoOiB0ZXN0LmtleU5hbWUsIGF1dG9J
bmNyZW1lbnQ6IHRlc3QuYXV0b0luY3JlbWVudCB9KTsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZCh0ZXN0LnN0b3JlZE9iamVjdCk7Iik7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRTdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBhZGRTdWNjZXNzKCkKLXsK
LSAgICBpZCA9IGV2YWxBbmRMb2coImlkID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmdldChpZCk7Iik7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRTdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBnZXRTdWNjZXNzKCkKLXsK
LSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5uYW1lIiwgInRlc3Quc3RvcmVkT2Jq
ZWN0Lm5hbWUiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5pZCIsICJpZCIp
OwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL29iamVjdC1zdG9yZS1pbmxpbmUtYXV0b2luY3JlbWVudC1rZXkt
YWRkZWQtb24tcHV0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgot
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29iamVj
dC1zdG9yZS1yZW1vdmUtdmFsdWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL29iamVjdC1zdG9yZS1yZW1vdmUtdmFsdWVzLmh0bWwKaW5kZXggYzA5MTRiYmRj
MWFlNjRkNGZlNTU3ZmEzMTM3MGViMzQwMGQyZmM2Mi4uZDhjNGU5NTdlNmI0NjRlN2M2YWNkZTYw
ZWYyMDg2ZTQ0NTMzYmU2NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW96aWxsYS9vYmplY3Qtc3RvcmUtcmVtb3ZlLXZhbHVlcy5odG1sCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0LXN0b3JlLXJlbW92ZS12YWx1ZXMu
aHRtbApAQCAtMSwxMzIgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLQotICBvcmlnaW5h
bCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRl
eGVkREIvdGVzdC90ZXN0X29iamVjdFN0b3JlX3JlbW92ZV92YWx1ZXMuaHRtbD9mb3JjZT0xCi0g
IGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgotICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFk
PgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREI6IGFkZHMs
IGdldHMsIGRlbGV0ZXMsIGFuZCByZS1nZXRzIGEgcmVjb3JkIGluIGEgdmFyaWV0eSBvZiBkaWZm
ZXJlbnQgb2JqZWN0IHN0b3JlIGNvbmZpZ3VyYXRpb25zIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQot
ewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlv
bi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3Mo
KQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0K
LSAgICBkYXRhID0gZXZhbEFuZExvZygiZGF0YSA9IFtcbiIgKwotIiAgICAgICAgeyBuYW1lOiAn
aW5saW5lIGtleTsga2V5IGdlbmVyYXRvcicsXG4iICsKLSIgICAgICAgICAgYXV0b0luY3JlbWVu
dDogdHJ1ZSxcbiIgKwotIiAgICAgICAgICBzdG9yZWRPYmplY3Q6IHtuYW1lOiAnTGluY29sbid9
LFxuIiArCi0iICAgICAgICAgIGtleU5hbWU6ICdpZCcsXG4iICsKLSIgICAgICAgICAga2V5VmFs
dWU6IHVuZGVmaW5lZCxcbiIgKwotIiAgICAgICAgfSxcbiIgKwotIiAgICAgICAgeyBuYW1lOiAn
aW5saW5lIGtleTsgbm8ga2V5IGdlbmVyYXRvcicsXG4iICsKLSIgICAgICAgICAgYXV0b0luY3Jl
bWVudDogZmFsc2UsXG4iICsKLSIgICAgICAgICAgc3RvcmVkT2JqZWN0OiB7aWQ6IDEsIG5hbWU6
ICdMaW5jb2xuJ30sXG4iICsKLSIgICAgICAgICAga2V5TmFtZTogJ2lkJyxcbiIgKwotIiAgICAg
ICAgICBrZXlWYWx1ZTogdW5kZWZpbmVkLFxuIiArCi0iICAgICAgICB9LFxuIiArCi0iICAgICAg
ICB7IG5hbWU6ICdvdXQgb2YgbGluZSBrZXk7IGtleSBnZW5lcmF0b3InLFxuIiArCi0iICAgICAg
ICAgIGF1dG9JbmNyZW1lbnQ6IHRydWUsXG4iICsKLSIgICAgICAgICAgc3RvcmVkT2JqZWN0OiB7
bmFtZTogJ0xpbmNvbG4nfSxcbiIgKwotIiAgICAgICAgICBrZXlOYW1lOiB1bmRlZmluZWQsXG4i
ICsKLSIgICAgICAgICAga2V5VmFsdWU6IHVuZGVmaW5lZCxcbiIgKwotIiAgICAgICAgfSxcbiIg
KwotIiAgICAgICAgeyBuYW1lOiAnb3V0IG9mIGxpbmUga2V5OyBubyBrZXkgZ2VuZXJhdG9yJyxc
biIgKwotIiAgICAgICAgICBhdXRvSW5jcmVtZW50OiBmYWxzZSxcbiIgKwotIiAgICAgICAgICBz
dG9yZWRPYmplY3Q6IHtuYW1lOiAnTGluY29sbid9LFxuIiArCi0iICAgICAgICAgIGtleU5hbWU6
IHVuZGVmaW5lZCxcbiIgKwotIiAgICAgICAgICBrZXlWYWx1ZTogMSxcbiIgKwotIiAgICAgICAg
fVxuIiArCi0iICAgIF07Iik7Ci0KLSAgICBpID0gZXZhbEFuZExvZygiaSA9IDA7Iik7Ci0gICAg
c2V0VmVyc2lvbigpOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uKCkKLXsKLSAgICBpZiAoaSA8
IGRhdGEubGVuZ3RoKSB7Ci0gICAgICAgIHRlc3QgPSBkYXRhW2ldOwotICAgICAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgICAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZU9iamVjdFN0b3JlOwotICAgICAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB9IGVsc2UgewotICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZU9iamVjdFN0b3JlKCkK
LXsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgaWYgKHRlc3Qua2V5TmFt
ZSkgewotICAgICAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUodGVzdC5uYW1lLCB7IGtleVBhdGg6IHRlc3Qua2V5TmFtZSwgYXV0
b0luY3JlbWVudDogdGVzdC5hdXRvSW5jcmVtZW50IH0pOyIpOwotICAgIH0gZWxzZSB7Ci0gICAg
ICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSh0ZXN0Lm5hbWUsIHsgYXV0b0luY3JlbWVudDogdGVzdC5hdXRvSW5jcmVtZW50IH0p
OyIpOwotICAgIH0KLSAgICBpZiAodGVzdC5rZXlWYWx1ZSkgewotICAgICAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZCh0ZXN0LnN0b3JlZE9iamVjdCwg
dGVzdC5rZXlWYWx1ZSk7Iik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQodGVzdC5zdG9yZWRPYmplY3QpOyIpOwot
ICAgIH0KLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldFJlY29yZDsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZ2V0UmVjb3Jk
KCkKLXsKLSAgICBpZCA9IGV2YWxBbmRMb2coImlkID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsK
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmdldChpZCk7
Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVSZWNvcmQ7Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZVJl
Y29yZCgpCi17Ci0gICAgc2hvdWxkQmUoInRlc3Quc3RvcmVkT2JqZWN0Lm5hbWUiLCAiZXZlbnQu
dGFyZ2V0LnJlc3VsdC5uYW1lIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IG9iamVjdFN0b3JlLmRlbGV0ZShpZCk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRSZWNvcmRB
Z2FpbjsKLX0KLQotZnVuY3Rpb24gZ2V0UmVjb3JkQWdhaW4oKQotewotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KGlkKTsiKTsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZpbmFsQ2hlY2s7Ci19Ci0KLWZ1bmN0aW9uIGZpbmFsQ2hlY2soKQotewotICAgIHNob3Vs
ZEJlVHJ1ZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCA9PT0gdW5kZWZpbmVkIik7Ci0gICAgaSsrOwot
ICAgIHNldFZlcnNpb24oKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9vYmplY3Qtc3RvcmUtcmVtb3ZlLXZhbHVlcy5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9vYmplY3RzdG9yZW5hbWVzLmh0bWwgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29iamVjdHN0b3JlbmFtZXMuaHRtbAppbmRleCBl
ZTU4YzI1MmVkNjdjYWVmNmEyNDUyODBjZDM5OTEzNjU3NjBkOGM3Li4zOTQ5NDk0NGI4OTFhMDNm
NDllYzI1MTA5NmFlZjdlMWRmYmQzNzY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL29iamVjdHN0b3JlbmFtZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29iamVjdHN0b3JlbmFtZXMuaHRtbApAQCAtMSw1
OCArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6
Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rl
c3RfZ2xvYmFsX2RhdGEuaHRtbAotICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Ci0gICAgIiBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KLSAgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgotLS0+CiA8
aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVk
LmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24o
IlRlc3QgSW5kZXhlZERCJ3Mgb2JqZWN0U3RvcmVOYW1lcyBhcnJheSIpOwotCi1mdW5jdGlvbiB0
ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYu
bG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0
aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5T
dWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9u
KCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNs
ZWFuRGF0YWJhc2UoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBv
YmplY3RTdG9yZU5hbWUgPSAiYSI7Ci0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSwgeyBrZXlQYXRo
OiAnaWQnLCBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOyIpOwotCi0gICAgc2hvdWxkQmVUcnVlKCIn
b2JqZWN0U3RvcmVOYW1lcycgaW4gZGIiKTsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVO
YW1lcy5sZW5ndGgiLCAiMSIpOwotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLml0
ZW0oMCkiLCAib2JqZWN0U3RvcmVOYW1lIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQot
dGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb2JqZWN0c3RvcmVu
YW1lcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KLQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9vZGQtcmVzdWx0LW9y
ZGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29kZC1yZXN1
bHQtb3JkZXIuaHRtbAppbmRleCBjZTcxNTYzZTAwOTFmMGJmOWNhZDU3MDVjN2NlYzEzNjE5NjE1
ZmM4Li43Nzc5N2RmYzVmMjNlMTRlYjQzNTg2M2I4ZGVmMzAyODE5ZmQ2M2JmIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29kZC1yZXN1bHQtb3JkZXIu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29kZC1yZXN1
bHQtb3JkZXIuaHRtbApAQCAtMSwxMjcgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLQot
ICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNl
L2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X29kZF9yZXN1bHRfb3JkZXIuaHRtbD9yYXc9MQotICBs
aWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Ci0gICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KLSAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgotLS0+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4K
IDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCOiByZXF1ZXN0
IHJlc3VsdCBwZXJzaXN0cyBpbiBzZXRUaW1lb3V0IGNhbGxiYWNrIik7Ci0KLWZ1bmN0aW9uIHRl
c3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5s
b2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsK
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRp
b24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1
Y2Nlc3MoKQotewotICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOwotICAgIGRiID0gZXZhbEFu
ZExvZygiZGIgPSBudWxsOyIpOwotICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAg
IGRiID0gZXZhbEFuZExvZygiZGIgPSByZXF1ZXN0LnJlc3VsdDsiKTsKLSAgICAgICAgY2hlY2tE
YXRhYmFzZVR5cGUoKTsKLSAgICB9LCAwKTsKLX0KLQotZnVuY3Rpb24gY2hlY2tEYXRhYmFzZVR5
cGUoKQotewotICAgIGRlYnVnKCJjaGVja0RhdGFiYXNlVHlwZSgpOiIpOwotICAgIHNob3VsZEJl
VHJ1ZSgiZGIgaW5zdGFuY2VvZiBJREJEYXRhYmFzZSIpOwotICAgIGRiLm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0dXBPYmpl
Y3RTdG9yZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LX0KLQotZnVuY3Rpb24gc2V0dXBPYmplY3RTdG9yZSgpCi17Ci0gICAgZGVidWcoInNldHVwT2Jq
ZWN0U3RvcmUoKToiKTsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotICAgIG9iamVj
dFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgn
Zm9vJywgeyBrZXlQYXRoOiAna2V5JywgYXV0b0luY3JlbWVudDogdHJ1ZSB9KTsiKTsKLSAgICBp
bmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ2Zvbycs
ICdpbmRleCcpOyIpOwotICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5v
bmNvbXBsZXRlID0gYWRkUmVjb3JkOyIpOwotfQotCi1mdW5jdGlvbiBhZGRSZWNvcmQoKQotewot
ICAgIGRlYnVnKCJhZGRSZWNvcmQoKToiKTsKLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2co
Im9iamVjdFN0b3JlID0gZGIudHJhbnNhY3Rpb24oJ2ZvbycsIElEQlRyYW5zYWN0aW9uLlJFQURf
V1JJVEUpLm9iamVjdFN0b3JlKCdmb28nKTsiKTsKLSAgICBkYXRhID0gZXZhbEFuZExvZygiZGF0
YSA9IHsga2V5OiA1LCBpbmRleDogMTAgfTsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChkYXRhKTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGFkZFN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGFkZFN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJhZGRTdWNj
ZXNzKCk6Iik7Ci0gICAga2V5ID0gZXZhbEFuZExvZygia2V5ID0gbnVsbDsiKTsKLSAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAga2V5ID0gZXZhbEFuZExvZygia2V5ID0gcmVxdWVz
dC5yZXN1bHQ7Iik7Ci0gICAgICBjaGVja0FkZGVkS2V5KCk7Ci0gICAgfSwgMCk7Ci19Ci0KLWZ1
bmN0aW9uIGNoZWNrQWRkZWRLZXkoKQotewotICAgIGRlYnVnKCJjaGVja0FkZGVkS2V5KCk6Iik7
Ci0gICAgc2hvdWxkQmUoImtleSIsICJkYXRhLmtleSIpOwotICAgIG9iamVjdFN0b3JlID0gZXZh
bEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbignZm9vJykub2JqZWN0U3RvcmUo
J2ZvbycpOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3Rv
cmUuZ2V0KGRhdGEua2V5KTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldFN1Y2Nlc3M7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1
bmN0aW9uIGdldFN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJnZXRTdWNjZXNzKCk6Iik7Ci0gICAg
cmVjb3JkID0gZXZhbEFuZExvZygicmVjb3JkID0gbnVsbDsiKTsKLSAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgewotICAgICAgcmVjb3JkID0gZXZhbEFuZExvZygicmVjb3JkID0gcmVxdWVzdC5y
ZXN1bHQ7Iik7Ci0gICAgICBjaGVja1JldHJpZXZlZEtleSgpOwotICAgIH0sIDApOwotfQotCi1m
dW5jdGlvbiBjaGVja1JldHJpZXZlZEtleSgpCi17Ci0gICAgZGVidWcoImNoZWNrUmV0cmlldmVk
S2V5KCk6Iik7Ci0gICAgc2hvdWxkQmUoInJlY29yZC5rZXkiLCAiZGF0YS5rZXkiKTsKLSAgICBz
aG91bGRCZSgicmVjb3JkLmluZGV4IiwgImRhdGEuaW5kZXgiKTsKLSAgICBkZWxldGVSZWNvcmQo
KTsKLX0KLQotZnVuY3Rpb24gZGVsZXRlUmVjb3JkKCkKLXsKLSAgICBkZWJ1ZygiZGVsZXRlUmVj
b3JkKCk6Iik7Ci0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRi
LnRyYW5zYWN0aW9uKCdmb28nLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKS5vYmplY3RTdG9y
ZSgnZm9vJyk7Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RT
dG9yZS5kZWxldGUoZGF0YS5rZXkpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRl
U3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LX0KLQotZnVuY3Rpb24gZGVsZXRlU3VjY2VzcygpCi17Ci0gICAgZGVidWcoImRlbGV0ZVN1Y2Nl
c3MoKToiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vZGQtcmVzdWx0LW9yZGVyLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9vcGVuLWRhdGFiYXNlLW51bGwtbmFtZS5odG1sIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9vcGVuLWRhdGFiYXNlLW51bGwtbmFt
ZS5odG1sCmluZGV4IDkwOTg0MGRiYzNjNGEyNThjYTI1OTcwYjVmY2UyYzA2ZWNmNjk4NGMuLjhk
MjdlODNiYTYzZjIyY2JmMjBmMmMwYWQ2OGExMjYyODE5NmUzOTYgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb3Blbi1kYXRhYmFzZS1udWxsLW5hbWUu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29wZW4tZGF0
YWJhc2UtbnVsbC1uYW1lLmh0bWwKQEAgLTEsNDIgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PCEtLQotICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAv
c291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X29wZW5fZW1wdHlfZGIuaHRtbD9mb3JjZT0x
Ci0gIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgotICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+CiA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9o
ZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREI6IHNo
b3VsZCBOT1QgdGhyb3cgd2hlbiBvcGVuaW5nIGEgZGF0YWJhc2Ugd2l0aCBhIG51bGwgbmFtZSIp
OwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0g
ICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImluZGV4ZWREQi5vcGVuKG51bGwpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
b3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2co
ImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlKCJkYi5uYW1lIiwgIidu
dWxsJyIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL29wZW4tZGF0YWJhc2UtbnVsbC1uYW1lLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3B1dC1nZXQtdmFsdWVzLmh0bWwgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3B1dC1nZXQtdmFsdWVzLmh0bWwKaW5k
ZXggMGNhZmJhMzJjNGM0ZTg2NmVkMGZhMmI4Y2UxOTcyMWFjYjY5YTE0Mi4uNTg3MDBmNmJmOWI2
ZDMwYTZlZDM1YzQ4MjFiMzkwZmQ0OTYxNzEzOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9wdXQtZ2V0LXZhbHVlcy5odG1sCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcHV0LWdldC12YWx1ZXMuaHRtbApAQCAtMSwx
MTkgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLQotICBvcmlnaW5hbCB0ZXN0OiBodHRw
Oi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90
ZXN0X3B1dF9nZXRfdmFsdWVzLmh0bWwKLSAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgotICAg
ICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCi0gICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKLS0t
PgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3No
YXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0
aW9uKCJUZXN0IEluZGV4ZWREQidzIHB1dHRpbmcgYW5kIGdldHRpbmcgdmFsdWVzIGluIGFuIG9i
amVjdCBzdG9yZSIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVm
aXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3Jp
cHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImlu
ZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRM
b2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBjbGVhbkRhdGFiYXNlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotfQotCi1mdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKLXsKLSAgICBkZWxldGVBbGxP
YmplY3RTdG9yZXMoZGIpOwotCi0gICAgdGVzdFN0cmluZyA9IGV2YWxBbmRMb2coInRlc3RTdHJp
bmcgPSB7IGtleTogMCwgdmFsdWU6ICd0ZXN0U3RyaW5nJyB9OyIpOwotICAgIHRlc3RJbnQgPSBl
dmFsQW5kTG9nKCJ0ZXN0SW50ID0geyBrZXk6IDEsIHZhbHVlOiAxMDAyIH07Iik7Ci0gICAgb2Jq
ZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdPYmplY3RzJywgeyBhdXRvSW5jcmVtZW50OiBmYWxzZSB9KTsiKTsKLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZCh0ZXN0U3RyaW5nLnZhbHVlLCB0
ZXN0U3RyaW5nLmtleSk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0QWRkOwotfQotCi1mdW5jdGlv
biBwb3N0QWRkKCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ0ZXN0
U3RyaW5nLmtleSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0
U3RvcmUuZ2V0KHRlc3RTdHJpbmcua2V5KTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RHZXQ7Ci19
Ci0KLWZ1bmN0aW9uIHBvc3RHZXQoKQotewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVz
dWx0IiwgInRlc3RTdHJpbmcudmFsdWUiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVx
dWVzdCA9IG9iamVjdFN0b3JlLmFkZCh0ZXN0SW50LnZhbHVlLCB0ZXN0SW50LmtleSk7Iik7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBwb3N0QWRkSW50OwotfQotCi1mdW5jdGlvbiBwb3N0QWRkSW50KCkKLXsK
LSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ0ZXN0SW50LmtleSIpOwotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KHRlc3RJbnQu
a2V5KTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RHZXRJbnQ7Ci19Ci0KLWZ1bmN0aW9uIHBvc3RH
ZXRJbnQoKQotewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgInRlc3RJbnQu
dmFsdWUiKTsKLSAgICBvYmplY3RTdG9yZUF1dG9JbmNyZW1lbnQgPSBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZUF1dG9JbmNyZW1lbnQgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnQXV0b0luY3JlbWVu
dGVkIE9iamVjdHMnLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7Ci0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZUF1dG9JbmNyZW1lbnQuYWRkKHRlc3RT
dHJpbmcudmFsdWUpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdEFkZEF1dG9JbmNyZW1lbnQ7Ci19
Ci0KLWZ1bmN0aW9uIHBvc3RBZGRBdXRvSW5jcmVtZW50KCkKLXsKLSAgICB0ZXN0U3RyaW5nLmtl
eSA9IGV2YWxBbmRMb2coInRlc3RTdHJpbmcua2V5ID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsK
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlQXV0b0luY3Jl
bWVudC5nZXQodGVzdFN0cmluZy5rZXkpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdEdldEF1dG9J
bmNyZW1lbnQ7Ci19Ci0KLWZ1bmN0aW9uIHBvc3RHZXRBdXRvSW5jcmVtZW50KCkKLXsKLSAgICBz
aG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ0ZXN0U3RyaW5nLnZhbHVlIik7Ci0gICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZUF1dG9JbmNyZW1lbnQu
YWRkKHRlc3RJbnQudmFsdWUpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdEFkZEludEF1dG9JbmNy
ZW1lbnQ7Ci19Ci0KLWZ1bmN0aW9uIHBvc3RBZGRJbnRBdXRvSW5jcmVtZW50KCkKLXsKLSAgICB0
ZXN0SW50LmtleSA9IGV2YWxBbmRMb2coInRlc3RJbnQua2V5ID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dDsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlQXV0
b0luY3JlbWVudC5nZXQodGVzdEludC5rZXkpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdEdldElu
dEF1dG9JbmNyZW1lbnQ7Ci19Ci0KLWZ1bmN0aW9uIHBvc3RHZXRJbnRBdXRvSW5jcmVtZW50KCkK
LXsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ0ZXN0SW50LnZhbHVlIik7
Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvcHV0LWdldC12YWx1ZXMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL21vemlsbGEvcmVhZG9ubHktdHJhbnNhY3Rpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3JlYWRvbmx5LXRyYW5zYWN0aW9ucy5odG1sCmluZGV4
IDQ2NDE5YmIzZGIzYjM3ZTkzZmRmZWQ0MjQ3YTBjOGMwNDMxOWNmNjMuLjIzYzhmYzA2NTVmMWQz
MTJhYjlmZTQzOWY0YzVmY2EzYmViOTczMjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vemlsbGEvcmVhZG9ubHktdHJhbnNhY3Rpb25zLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZWFkb25seS10cmFuc2FjdGlvbnMu
aHRtbApAQCAtMSw2OSArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFs
IHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4
ZWREQi90ZXN0L3Rlc3RfcmVhZG9ubHlfdHJhbnNhY3Rpb25zLmh0bWwKLSAgbGljZW5zZSBvZiBv
cmlnaW5hbCB0ZXN0OgotICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCi0gICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvICIKLS0tPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxz
Y3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIHJlYWRvbmx5IHRyYW5zYWN0
aW9ucyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygp
OwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24g
PSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWRE
Qi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3Bl
blN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRi
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNs
ZWFuRGF0YWJhc2U7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQotewotICAgIGRlbGV0ZUFsbE9iamVj
dFN0b3JlcyhkYik7Ci0KLSAgICBvc05hbWUgPSAidGVzdCBzdG9yZSI7Ci0gICAgb2JqZWN0U3Rv
cmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKG9zTmFt
ZSwgeyBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOyIpOwotICAgIGV2ZW50LnRhcmdldC5yZXN1bHQu
b25jb21wbGV0ZSA9IHNldFZlcnNpb25Db21wbGV0ZTsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lv
bkNvbXBsZXRlKCkKLXsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlv
bihbb3NOYW1lXSkub2JqZWN0U3RvcmUob3NOYW1lKS5hZGQoe30pOyIsICJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5SRUFEX09OTFlfRVJSIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIu
dHJhbnNhY3Rpb24ob3NOYW1lKS5vYmplY3RTdG9yZShvc05hbWUpLmFkZCh7fSk7IiwgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLlJFQURfT05MWV9FUlIiKTsKLSAgICBrZXkxID0gZXZhbEFuZExvZygi
a2V5MSA9IDE7Iik7Ci0gICAga2V5MiA9IGV2YWxBbmRMb2coImtleTIgPSAyOyIpOwotICAgIGV2
YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKFtvc05hbWVdKS5vYmplY3RTdG9y
ZShvc05hbWUpLnB1dCh7fSwga2V5MSk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlJFQURfT05M
WV9FUlIiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbihvc05h
bWUpLm9iamVjdFN0b3JlKG9zTmFtZSkucHV0KHt9LCBrZXkyKTsiLCAiSURCRGF0YWJhc2VFeGNl
cHRpb24uUkVBRF9PTkxZX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRy
YW5zYWN0aW9uKFtvc05hbWVdKS5vYmplY3RTdG9yZShvc05hbWUpLnB1dCh7fSwga2V5MSk7Iiwg
IklEQkRhdGFiYXNlRXhjZXB0aW9uLlJFQURfT05MWV9FUlIiKTsKLSAgICBldmFsQW5kRXhwZWN0
RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbihvc05hbWUpLm9iamVjdFN0b3JlKG9zTmFtZSkucHV0
KHt9LCBrZXkxKTsiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUiIpOwotICAg
IGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKFtvc05hbWVdKS5vYmplY3RT
dG9yZShvc05hbWUpLmRlbGV0ZShrZXkxKTsiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9P
TkxZX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKG9z
TmFtZSkub2JqZWN0U3RvcmUob3NOYW1lKS5kZWxldGUoa2V5Mik7IiwgIklEQkRhdGFiYXNlRXhj
ZXB0aW9uLlJFQURfT05MWV9FUlIiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0
KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWFkb25seS10cmFuc2Fj
dGlvbnMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVhZHdyaXRlLXRy
YW5zYWN0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9y
ZWFkd3JpdGUtdHJhbnNhY3Rpb25zLmh0bWwKaW5kZXggYjBjMDQyYzIxYWMzZDgzZDVhODdjZjUz
NTRhY2NhMmE0OTRkMWNmZC4uN2ZmZjUwOGU4M2NmOTYxMDJhZmM2ZmFhYWE1MTZlMWRhNTQ3OGU1
NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZWFk
d3JpdGUtdHJhbnNhY3Rpb25zLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW96aWxsYS9yZWFkd3JpdGUtdHJhbnNhY3Rpb25zLmh0bWwKQEAgLTEsMTI1ICsxLDEwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTwhLS0KLSAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3pp
bGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9yZWFkb25s
eV90cmFuc2FjdGlvbnMuaHRtbAotICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Ci0gICAgIiBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KLSAgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgotLS0+CiA8
aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVk
LmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24o
IlRlc3QgSW5kZXhlZERCJ3MgcmVhZC93cml0ZSB0cmFuc2FjdGlvbnMiKTsKLQotZnVuY3Rpb24g
dGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxm
LmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2Ui
OwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlw
dGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVu
U3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lv
bignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOwotICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBj
bGVhbkRhdGFiYXNlKCkKLXsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAg
b3NOYW1lID0gInRlc3Qgc3RvcmUiOwotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2Jq
ZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShvc05hbWUsIHsgYXV0b0luY3JlbWVudDog
dHJ1ZSB9KTsiKTsKLSAgICBldmVudC50YXJnZXQucmVzdWx0Lm9uY29tcGxldGUgPSBzZXRWZXJz
aW9uQ29tcGxldGU7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb25Db21wbGV0ZSgpCi17Ci0gICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi50cmFuc2FjdGlvbihbb3NOYW1lXSwg
SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3RvcmUob3NOYW1lKS5hZGQoe30pOyIp
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdEFkZDsKLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gcG9zdEFkZCgpCi17Ci0g
ICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2RlIiwgIklEQlRyYW5zYWN0
aW9uLlJFQURfV1JJVEUiKTsKLSAgICBrZXkxID0gZXZhbEFuZExvZygia2V5MSA9IGV2ZW50LnRh
cmdldC5yZXN1bHQ7Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi50
cmFuc2FjdGlvbihvc05hbWUsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpLm9iamVjdFN0b3Jl
KG9zTmFtZSkuYWRkKHt9KTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RBZGQyOwot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5j
dGlvbiBwb3N0QWRkMigpCi17Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlv
bi5tb2RlIiwgIklEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUiKTsKLSAgICBrZXkyID0gZXZhbEFu
ZExvZygia2V5MiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBkYi50cmFuc2FjdGlvbihbb3NOYW1lXSwgSURCVHJhbnNhY3Rpb24u
UkVBRF9XUklURSkub2JqZWN0U3RvcmUob3NOYW1lKS5wdXQoe30sIGtleTEpOyIpOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gcG9zdFB1dDsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gcG9zdFB1dCgpCi17Ci0gICAgc2hvdWxk
QmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2RlIiwgIklEQlRyYW5zYWN0aW9uLlJFQURf
V1JJVEUiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnRyYW5zYWN0
aW9uKG9zTmFtZSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3RvcmUob3NOYW1l
KS5wdXQoe30sIGtleTIpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdFB1dDI7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0
aW9uIHBvc3RQdXQyKCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9u
Lm1vZGUiLCAiSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSIpOwotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gZGIudHJhbnNhY3Rpb24oW29zTmFtZV0sIElEQlRyYW5zYWN0aW9u
LlJFQURfV1JJVEUpLm9iamVjdFN0b3JlKG9zTmFtZSkucHV0KHt9LCBrZXkxKTsiKTsKLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RQdXQzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBwb3N0UHV0MygpCi17Ci0gICAgc2hv
dWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2RlIiwgIklEQlRyYW5zYWN0aW9uLlJF
QURfV1JJVEUiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnRyYW5z
YWN0aW9uKG9zTmFtZSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3RvcmUob3NO
YW1lKS5wdXQoe30sIGtleTEpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdFB1dDQ7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1
bmN0aW9uIHBvc3RQdXQ0KCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0
aW9uLm1vZGUiLCAiSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSIpOwotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIudHJhbnNhY3Rpb24oW29zTmFtZV0sIElEQlRyYW5zYWN0
aW9uLlJFQURfV1JJVEUpLm9iamVjdFN0b3JlKG9zTmFtZSkuZGVsZXRlKGtleTEpOyIpOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdERlbGV0ZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gcG9zdERlbGV0ZSgpCi17Ci0g
ICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2RlIiwgIklEQlRyYW5zYWN0
aW9uLlJFQURfV1JJVEUiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRi
LnRyYW5zYWN0aW9uKG9zTmFtZSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3Rv
cmUob3NOYW1lKS5kZWxldGUoa2V5Mik7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0
RGVsZXRlMjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LX0KLQotZnVuY3Rpb24gcG9zdERlbGV0ZTIoKQotewotICAgIHNob3VsZEJlKCJldmVudC50YXJn
ZXQudHJhbnNhY3Rpb24ubW9kZSIsICJJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFIik7Ci0gICAg
ZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvcmVhZHdyaXRlLXRyYW5zYWN0aW9ucy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KIDwvYm9keT4KIDwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW96aWxsYS9yZWFkeVN0YXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL3JlYWR5U3RhdGUuaHRtbAppbmRleCA4ZDEwYTRiYWRlZDk0OTlkYzMz
ZjMyNzNlYWIwZDc2YzU3YmM0ZWU2Li41YzIyYTNmZTM0Y2EyY2JjOWQwYjJkYTNkNDRhMTc5YTli
MWE2MTAzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L3JlYWR5U3RhdGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL3JlYWR5U3RhdGUuaHRtbApAQCAtMSw4MSArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08
IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9z
b3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfcmVxdWVzdF9yZWFkeVN0YXRlLmh0bWw/Zm9y
Y2U9MQotICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Ci0gICAgIiBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KLSAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgotLS0+CiA8aHRtbD4KIDxoZWFkPgog
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4K
IDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERC
IHJlYWR5U3RhdGUgcHJvcGVydHkgZHVyaW5nIGRpZmZlcmVudCBvcGVyYXRpb25zIik7Ci0KLWZ1
bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1l
ID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERh
dGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwg
ZGVzY3JpcHRpb24pIik7Ci0gICAgc2hvdWxkQmUoInJlcXVlc3QucmVhZHlTdGF0ZSIsICJJREJS
ZXF1ZXN0LkxPQURJTkciKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5j
dGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7Ci0gICAg
c2hvdWxkQmUoInJlcXVlc3QucmVhZHlTdGF0ZSIsICJJREJSZXF1ZXN0LkRPTkUiKTsKLSAgICBk
YiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgc2hvdWxk
QmUoInJlcXVlc3QucmVhZHlTdGF0ZSIsICJJREJSZXF1ZXN0LkxPQURJTkciKTsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IHNldHVwT2JqZWN0U3RvcmU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldHVwT2JqZWN0U3RvcmUo
KQotewotICAgIGRlYnVnKCJzZXR1cE9iamVjdFN0b3JlKCk6Iik7Ci0gICAgc2hvdWxkQmUoInJl
cXVlc3QucmVhZHlTdGF0ZSIsICJJREJSZXF1ZXN0LkRPTkUiKTsKLSAgICBkZWxldGVBbGxPYmpl
Y3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9y
ZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nKTsiKTsKLSAgICBrZXkgPSBldmFsQW5kTG9n
KCJrZXkgPSAxMDsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVj
dFN0b3JlLmFkZCh7fSwga2V5KTsiKTsKLSAgICBzaG91bGRCZSgicmVxdWVzdC5yZWFkeVN0YXRl
IiwgIklEQlJlcXVlc3QuTE9BRElORyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0UmVj
b3JkOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQot
Ci1mdW5jdGlvbiBnZXRSZWNvcmQoKQotewotICAgIGRlYnVnKCJnZXRSZWNvcmQoKToiKTsKLSAg
ICBzaG91bGRCZSgicmVxdWVzdC5yZWFkeVN0YXRlIiwgIklEQlJlcXVlc3QuRE9ORSIpOwotICAg
IHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgImtleSIpOwotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KGtleSk7Iik7Ci0gICAgc2hvdWxk
QmUoInJlcXVlc3QucmVhZHlTdGF0ZSIsICJJREJSZXF1ZXN0LkxPQURJTkciKTsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGZpbmFsQ2hlY2s7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGZpbmFsQ2hlY2soKQotewotICAgIGRl
YnVnKCJmaW5hbENoZWNrKCk6Iik7Ci0gICAgc2hvdWxkQmUoInJlcXVlc3QucmVhZHlTdGF0ZSIs
ICJJREJSZXF1ZXN0LkRPTkUiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJldmVudC50YXJnZXQucmVz
dWx0ID09IG51bGwiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWFkeVN0YXRlLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3JlbW92ZS1pbmRleC5odG1sIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZW1vdmUtaW5kZXguaHRtbAppbmRleCBkYTU1Mzk2
MGY3MzhjOTBhNThkMzE0ODhlYmFmYmY4OGRkODRmMzA0Li4wZTIwYTcxZGIwM2Y5OTUyNDE1NjEw
ZjZkYjk2ODlmYWRlYzIxZmM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL3JlbW92ZS1pbmRleC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvcmVtb3ZlLWluZGV4Lmh0bWwKQEAgLTEsNjYgKzEsMTAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPCEtLQotICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEu
b3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X3JlbW92ZV9pbmRl
eC5odG1sCi0gIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgotICAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+
CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0
PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVk
REIncyBjcmVhdGluZyBhbmQgZGVsZXRpbmcgaW5kZXhlcyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkK
LXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRp
b24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIp
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNz
KCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwot
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJyki
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZERlbGV0ZUluZGV4OwotICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBj
cmVhdGVBbmREZWxldGVJbmRleCgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsK
LQotICAgIG9iamVjdFN0b3JlTmFtZSA9ICJ0ZXN0IHN0b3JlIjsKLSAgICBvYmplY3RTdG9yZSA9
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3Rv
cmVOYW1lLCB7IGtleVBhdGg6ICdmb28nIH0pOyIpOwotICAgIHNob3VsZEJlKCJkYi5vYmplY3RT
dG9yZU5hbWVzLmxlbmd0aCIsICIxIik7Ci0gICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFt
ZXMuaXRlbSgwKSIsICJvYmplY3RTdG9yZU5hbWUiKTsKLSAgICBzaG91bGRCZSgib2JqZWN0U3Rv
cmUuaW5kZXhOYW1lcy5sZW5ndGgiLCAiMCIpOwotCi0gICAgaW5kZXhOYW1lID0gIk15IFRlc3Qg
SW5kZXgiOwotICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBvYmplY3RTdG9yZS5jcmVh
dGVJbmRleChpbmRleE5hbWUsICdmb28nKTsiKTsKLSAgICBzaG91bGRCZSgib2JqZWN0U3RvcmUu
aW5kZXhOYW1lcy5sZW5ndGgiLCAiMSIpOwotICAgIHNob3VsZEJlKCJvYmplY3RTdG9yZS5pbmRl
eE5hbWVzLml0ZW0oMCkiLCAiaW5kZXhOYW1lIik7Ci0KLSAgICBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZS5kZWxldGVJbmRleChpbmRleE5hbWUpOyIpOwotICAgIHNob3VsZEJlKCJvYmplY3RTdG9y
ZS5pbmRleE5hbWVzLmxlbmd0aCIsICIwIik7Ci0KLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQot
Ci10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZW1vdmUtaW5k
ZXguanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVtb3ZlLW9iamVjdHN0
b3JlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3JlbW92ZS1v
YmplY3RzdG9yZS5odG1sCmluZGV4IGYwNjYxYzU0NzVhYjE2MTRmMDU4ODlhMTM2NDM2MWI2OGI4
OTJmZGQuLjkyYjc2NTE0YmMyMjhmMGJmN2FlN2ZiYzVlMWE4MzE2MWYwNDQ5ODMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVtb3ZlLW9iamVjdHN0
b3JlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZW1v
dmUtb2JqZWN0c3RvcmUuaHRtbApAQCAtMSwxMjAgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PCEtLQotICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAv
c291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X3JlbW92ZV9vYmplY3RTdG9yZS5odG1sP2Zv
cmNlPTEKLSAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgotICAgICIgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCi0gICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKLS0tPgogPGh0bWw+CiA8aGVhZD4K
IDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+
CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWRE
QiBkZWxldGluZyBhbiBvYmplY3Qgc3RvcmUiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAg
cmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhu
YW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0g
ICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91
bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMCIpOwotCi0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUFu
ZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7
Ci0KLSAgICBvYmplY3RTdG9yZU5hbWUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZU5hbWUgPSAn
T2JqZWN0cyc7Iik7Ci0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSwgeyBrZXlQYXRoOiAnZm9vJyB9
KTsiKTsKLQotICAgIGFkZGVkQ291bnQgPSBldmFsQW5kTG9nKCJhZGRlZENvdW50ID0gMDsiKTsK
LSAgICBmb3IgKGkgPSAwOyBpIDwgMTAwOyBpKyspIHsKLSAgICAgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoe2ZvbzogaX0pOyIpOwotICAgICAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICAgICAgaWYgKCsrYWRkZWRD
b3VudCA9PSAxMDApIHsKLSAgICAgICAgICAgICAgICBjaGVja09iamVjdFN0b3JlKCk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGNoZWNrT2JqZWN0U3Rv
cmUoKQotewotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIxIik7
Ci0gICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMuaXRlbSgwKSIsICJvYmplY3RTdG9y
ZU5hbWUiKTsKLQotICAgIHJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcyJyk7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBwb3N0U2V0VmVyc2lvbjI7Ci19Ci0KLWZ1bmN0aW9uIHBvc3RTZXRWZXJzaW9uMigpCi17
Ci0gICAgZXZhbEFuZExvZygiZGIuZGVsZXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmUubmFtZSk7
Iik7Ci0gICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjAiKTsKLQot
ICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZShvYmplY3RTdG9yZU5hbWUsIHsga2V5UGF0aDogJ2ZvbycgfSk7Iik7Ci0gICAgc2hv
dWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjEiKTsKLSAgICBzaG91bGRCZSgi
ZGIub2JqZWN0U3RvcmVOYW1lcy5pdGVtKDApIiwgIm9iamVjdFN0b3JlTmFtZSIpOwotCi0gICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7
Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJudWxsIik7Ci0gICAgICAgIGRlbGV0ZVNlY29uZE9iamVj
dFN0b3JlKCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBkZWxldGVTZWNvbmRPYmplY3RTdG9yZSgp
Ci17Ci0gICAgZXZhbEFuZExvZygiZGIuZGVsZXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmUubmFt
ZSk7Iik7Ci0gICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjAiKTsK
LSAgICBzZXRWZXJzaW9uMygpOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uMygpCi17Ci0gICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCczJyk7Iik7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBwb3N0U2V0VmVyc2lvbjM7Ci19Ci0KLWZ1bmN0aW9uIHBvc3RTZXRWZXJz
aW9uMygpCi17Ci0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSwgeyBrZXlQYXRoOiAnZm9vJyB9KTsi
KTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZCh7
Zm9vOidiYXInfSk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVUaGlyZE9iamVjdFN0b3JlOwot
fQotCi1mdW5jdGlvbiBkZWxldGVUaGlyZE9iamVjdFN0b3JlKCkKLXsKLSAgICBldmFsQW5kTG9n
KCJkYi5kZWxldGVPYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpOyIpOwotICAgIGZpbmlzaEpT
VGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3JlbW92ZS1vYmplY3RzdG9yZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4K
IDwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9yZXNvdXJjZXMvYWRkLXR3aWNlLWZhaWx1cmUuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9hZGQtdHdpY2UtZmFpbHVyZS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iYWVmMzkyOWYxOGY1NWNmODg2NjI4MWU5MWViYjQ1NmZlNjUwY2E3Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMv
YWRkLXR3aWNlLWZhaWx1cmUuanMKQEAgLTAsMCArMSw1OSBAQAorLy8gb3JpZ2luYWwgdGVzdDoK
Ky8vIGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWRE
Qi90ZXN0L3Rlc3RfYWRkX3R3aWNlX2ZhaWx1cmUuaHRtbAorLy8gbGljZW5zZSBvZiBvcmlnaW5h
bCB0ZXN0OgorLy8gIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKy8vICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLyAiCisKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcu
Li8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9y
dFNjcmlwdHMoJy4uLy4uL3Jlc291cmNlcy9zaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24o
IlRlc3QgSW5kZXhlZERCIGJlaGF2aW9yIGFkZGluZyB0aGUgc2FtZSBwcm9wZXJ0eSB0d2ljZSIp
OworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisg
ICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkg
VGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVu
KG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nl
c3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0
YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jl
cyhkYik7CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycpOyIpOworICAgIGtleSA9IGV2YWxBbmRMb2coImtleSA9
IDEwIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5h
ZGQoe30sIGtleSk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRGaXJzdFN1Y2Nlc3M7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIGFkZEZpcnN0U3VjY2VzcygpCit7CisgICAgc2hvdWxkQmUoInJlcXVlc3QucmVzdWx0
IiwgImtleSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3Rv
cmUuYWRkKHt9LCBrZXkpOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1
Y2Nlc3NDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBhZGRTZWNvbmRFeHBlY3RlZEVy
cm9yOworfQorCitmdW5jdGlvbiBhZGRTZWNvbmRFeHBlY3RlZEVycm9yKCkKK3sKKyAgICBzaG91
bGRCZSgiZXZlbnQudGFyZ2V0LmVycm9yQ29kZSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5DT05T
VFJBSU5UX0VSUiIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvYXV0b2luY3JlbWVudC1pbmRleGVzLmpzIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvYXV0b2luY3JlbWVudC1p
bmRleGVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAyMTJmMDliYTNmMzMyZTNmMTAxZTJlNmY5ODc1MGEwNzI4
ZTQxYzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL3Jlc291cmNlcy9hdXRvaW5jcmVtZW50LWluZGV4ZXMuanMKQEAgLTAsMCArMSw4OSBA
QAorLy8gb3JpZ2luYWwgdGVzdDoKKy8vIGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIu
MC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfYXV0b0luY3JlbWVudF9pbmRleGVzLmh0
bWw/Zm9yY2U9MQorLy8gbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorLy8gIiBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKy8vICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCisKK2lmICh0aGlzLmltcG9y
dFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uL3Jlc291cmNl
cy9zaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGluZGV4ZXMg
YWdhaW5zdCBhdXRvaW5jcmVtZW50aW5nIGtleXMiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7Cisg
ICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBh
dGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7
CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXR1cE9iamVjdFN0b3JlOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXR1cE9iamVj
dFN0b3JlKCkKK3sKKyAgICB0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgZGVsZXRl
QWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2Jq
ZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJywgeyBrZXlQYXRoOiAnaWQnLCBh
dXRvSW5jcmVtZW50OiB0cnVlIH0pOyIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmNy
ZWF0ZUluZGV4KCdmaXJzdCcsICdmaXJzdCcpOyIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0
b3JlLmNyZWF0ZUluZGV4KCdzZWNvbmQnLCAnc2Vjb25kJyk7Iik7CisgICAgZXZhbEFuZExvZygi
b2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ3RoaXJkJywgJ3RoaXJkJyk7Iik7CisgICAgZGF0YSA9
IGV2YWxBbmRMb2coImRhdGEgPSB7IGZpcnN0OiAnZm9vJywgc2Vjb25kOiAnZm9vJywgdGhpcmQ6
ICdmb28nIH07Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RT
dG9yZS5hZGQoZGF0YSk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXR1cEluZGV4ZXM7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIHNldHVwSW5kZXhlcygpCit7CisgICAga2V5ID0gZXZhbEFuZExvZygia2V5ID0gZXZl
bnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJrZXkgPT0gbnVsbCIpOwor
ICAgIHRyYW5zLm9uY29tcGxldGUgPSBzZXRWZXJzaW9uQ29tcGxldGU7Cit9CisKK2Z1bmN0aW9u
IHNldFZlcnNpb25Db21wbGV0ZSgpCit7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJv
YmplY3RTdG9yZSA9IGRiLnRyYW5zYWN0aW9uKCdmb28nKS5vYmplY3RTdG9yZSgnZm9vJyk7Iik7
CisgICAgZmlyc3QgPSBldmFsQW5kTG9nKCJmaXJzdCA9IG9iamVjdFN0b3JlLmluZGV4KCdmaXJz
dCcpOyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZmlyc3QuZ2V0KCdm
b28nKTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNoZWNrRmlyc3RJbmRleEFuZFByZXBh
cmVTZWNvbmQ7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Cit9CisKK2Z1bmN0aW9uIGNoZWNrRmlyc3RJbmRleEFuZFByZXBhcmVTZWNvbmQoKQoreworICAg
IHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LmlkIiwgImtleSIpOworICAgIHNlY29uZCA9
IGV2YWxBbmRMb2coInNlY29uZCA9IG9iamVjdFN0b3JlLmluZGV4KCdzZWNvbmQnKTsiKTsKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHNlY29uZC5nZXQoJ2ZvbycpOyIpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2hlY2tTZWNvbmRJbmRleEFuZFByZXBhcmVUaGlyZDsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gY2hlY2tTZWNvbmRJbmRleEFuZFByZXBhcmVUaGlyZCgpCit7CisgICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldC5yZXN1bHQuaWQiLCAia2V5Iik7CisgICAgdGhpcmQgPSBldmFsQW5kTG9n
KCJ0aGlyZCA9IG9iamVjdFN0b3JlLmluZGV4KCd0aGlyZCcpOyIpOworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gdGhpcmQuZ2V0KCdmb28nKTsiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGNoZWNrVGhpcmRJbmRleDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2hlY2tUaGlyZEluZGV4KCkKK3sKKyAg
ICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5pZCIsICJrZXkiKTsKKyAgICBmaW5pc2hK
U1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2Jh
ZC1rZXlwYXRoLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNv
dXJjZXMvYmFkLWtleXBhdGguanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGEwNjUwZjkwZjZkZWZhMmY0NWE4ODc0
YjYyNTliMmFmNmJiNTgzMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2JhZC1rZXlwYXRoLmpzCkBAIC0wLDAgKzEsNTAg
QEAKKy8vIG9yaWdpbmFsIHRlc3Q6CisvLyBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEy
LjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2JhZF9rZXlwYXRoLmh0bWwKKy8vIGxp
Y2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAg
aW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi9yZXNvdXJjZXMvc2hhcmVkLmpzJyk7Cit9
CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBhZGRpbmcgcHJvcGVydHkgd2l0aCBpbnZh
bGlkIGtleXBhdGgiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJl
Zml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2Ny
aXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5k
TG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBjbGVhbkRhdGFiYXNlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKK3sKKyAgICBkZWxldGVB
bGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7IGtleVBhdGg6ICdrZXlQYXRo
JyB9KTsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3Jl
LmFkZCh7IGtleVBhdGg6ICdmb28nIH0pOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRk
Rmlyc3RTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworfQorCitmdW5jdGlvbiBhZGRGaXJzdFN1Y2Nlc3MoKQoreworICAgIGV2YWxBbmRFeHBl
Y3RFeGNlcHRpb24oInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoe30pOyIsICJJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY2xlYXIuanMgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jbGVhci5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
NDIzMGI0Y2M0NTMzMjIwMGY1NmM0NTI5MjUzYTRhYzBlYmI2NzE0Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY2xlYXIu
anMKQEAgLTAsMCArMSw2MCBAQAorLy8gb3JpZ2luYWwgdGVzdDoKKy8vIGh0dHA6Ly9teHIubW96
aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfY2xlYXIu
aHRtbAorLy8gbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorLy8gIiBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKy8vICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCisKK2lmICh0aGlzLmltcG9ydFNjcmlw
dHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uL3Jlc291cmNlcy9zaGFy
ZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgY2xlYXJpbmcgYW4g
b2JqZWN0IHN0b3JlIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclBy
ZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNj
cmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
aW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFu
ZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7CisgICAgZGVsZXRl
QWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2Jq
ZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJywgeyBhdXRvSW5jcmVtZW50OiB0
cnVlIH0pOyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3Rv
cmUuYWRkKHt9KTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKKyAgICBldmVudC50YXJnZXQucmVzdWx0Lm9uY29tcGxldGUgPSBjbGVhcjsKK30KKwor
ZnVuY3Rpb24gY2xlYXIoKQoreworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5z
YWN0aW9uKCdmb28nKS5vYmplY3RTdG9yZSgnZm9vJykuY2xlYXIoKTsiLCAiSURCRGF0YWJhc2VF
eGNlcHRpb24uUkVBRF9PTkxZX0VSUiIpOworICAgIGV2YWxBbmRMb2coImRiLnRyYW5zYWN0aW9u
KCdmb28nLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKS5vYmplY3RTdG9yZSgnZm9vJykuY2xl
YXIoKTsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnRyYW5zYWN0
aW9uKCdmb28nKS5vYmplY3RTdG9yZSgnZm9vJykub3BlbkN1cnNvcigpOyIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gYXJlV2VDbGVhcllldDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gYXJlV2VDbGVhcllldCgpCit7Cisg
ICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gcmVxdWVzdC5yZXN1bHQ7Iik7CisgICAg
c2hvdWxkQmUoImN1cnNvciIsICJudWxsIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rl
c3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jcmVhdGUtaW5kZXgtdW5pcXVl
LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY3Jl
YXRlLWluZGV4LXVuaXF1ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOGM2Y2Y3NmMwYzMzZGI3Nzc4MTNiYmNl
MjM0YzU3ZWE2YzM3OTdhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY3JlYXRlLWluZGV4LXVuaXF1ZS5qcwpAQCAtMCww
ICsxLDYxIEBACisvLyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9t
b3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9jcmVhdGVfaW5kZXguaHRt
bAorLy8gbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorLy8gIiBBbnkgY29weXJpZ2h0IGlzIGRl
ZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKy8vICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCisKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMp
IHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uL3Jlc291cmNlcy9zaGFyZWQu
anMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgY3JlYXRpbmcgdW5pcXVl
IGluZGV4IGFuZCB1cGRhdGluZyBpbmRleE5hbWVzIik7CisKK2Z1bmN0aW9uIHRlc3QoKQorewor
ICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5w
YXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQor
eworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5kVmVyaWZ5SW5kZXg7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNyZWF0
ZUFuZFZlcmlmeUluZGV4KCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisg
ICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVj
dFN0b3JlKCdhJywgeyBrZXlQYXRoOiAnaWQnLCBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOyIpOwor
CisgICAgaW5kZXhOYW1lID0gIjEiOworICAgIGluZGV4S2V5UGF0aCA9ICJ1bmlxdWVfdmFsdWUi
OworICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBvYmplY3RTdG9yZS5jcmVhdGVJbmRl
eChpbmRleE5hbWUsIGluZGV4S2V5UGF0aCwgeyB1bmlxdWU6IHRydWUgfSk7IiwgIklEQkRhdGFi
YXNlRXhjZXB0aW9uLkNPTlNUUkFJTlRfRVJSIik7CisgICAgc2hvdWxkQmUoImluZGV4Lm5hbWUi
LCAiaW5kZXhOYW1lIik7CisgICAgc2hvdWxkQmUoImluZGV4LmtleVBhdGgiLCAiaW5kZXhLZXlQ
YXRoIik7CisgICAgc2hvdWxkQmUoImluZGV4LnVuaXF1ZSIsICJ0cnVlIik7CisgICAgc2hvdWxk
QmUoIm9iamVjdFN0b3JlLmluZGV4TmFtZXMubGVuZ3RoIiwgIjEiKTsKKworICAgIGZvdW5kTmV3
bHlDcmVhdGVkSW5kZXggPSBmYWxzZTsKKyAgICBmb3IgKHZhciBrID0gMDsgayA8IG9iamVjdFN0
b3JlLmluZGV4TmFtZXMubGVuZ3RoOyBrKyspIHsKKyAgICAgICAgaWYgKG9iamVjdFN0b3JlLmlu
ZGV4TmFtZXMuaXRlbShrKSA9PSBpbmRleE5hbWUpIHsKKyAgICAgICAgICAgIGZvdW5kTmV3bHlD
cmVhdGVkSW5kZXggPSB0cnVlOworICAgICAgICB9CisgICAgfQorICAgIHNob3VsZEJlVHJ1ZSgi
Zm91bmROZXdseUNyZWF0ZWRJbmRleCIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQudHJh
bnNhY3Rpb24uZGIiLCAiZGIiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0
aW9uLnJlYWR5U3RhdGUiLCAiSURCVHJhbnNhY3Rpb24uTE9BRElORyIpOworICAgIHNob3VsZEJl
KCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24ubW9kZSIsICJJREJUcmFuc2FjdGlvbi5WRVJTSU9O
X0NIQU5HRSIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW96aWxsYS9yZXNvdXJjZXMvY3JlYXRlLWluZGV4LXdpdGgtaW50ZWdlci1rZXlzLmpzIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY3JlYXRlLWlu
ZGV4LXdpdGgtaW50ZWdlci1rZXlzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0M2U0YzVjOGZhODgxMGIyODkz
NTZlMWZlYWYwMzRmZDRkYjg3ODkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jcmVhdGUtaW5kZXgtd2l0aC1pbnRlZ2Vy
LWtleXMuanMKQEAgLTAsMCArMSw1NiBAQAorLy8gb3JpZ2luYWwgdGVzdDoKKy8vIGh0dHA6Ly9t
eHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3Rf
Y3JlYXRlX2luZGV4X3dpdGhfaW50ZWdlcl9rZXlzLmh0bWw/Zm9yY2U9MQorLy8gbGljZW5zZSBv
ZiBvcmlnaW5hbCB0ZXN0OgorLy8gIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKy8vICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLyAiCisKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRT
Y3JpcHRzKCcuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwor
ICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uL3Jlc291cmNlcy9zaGFyZWQuanMnKTsKK30KKworZGVz
Y3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgY3JlYXRpbmcgaW5kZXggd2l0aCBpbnRlZ2VyIGtl
eXMiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsK
KworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0g
Ik15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
b3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5T
dWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9
IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXR1
cE9iamVjdFN0b3JlQW5kQ3JlYXRlSW5kZXg7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldHVwT2JqZWN0U3RvcmVBbmRDcmVh
dGVJbmRleCgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVj
dFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgn
Zm9vJywgeyBrZXlQYXRoOiAnaWQnIH0pOyIpOworICAgIGRhdGEgPSBldmFsQW5kTG9nKCJkYXRh
ID0geyBpZDogMTYsIG51bTogNDIgfTsiKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5h
ZGQoZGF0YSk7Iik7CisgICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IG9iamVjdFN0b3Jl
LmNyZWF0ZUluZGV4KCdmb28nLCAnbnVtJyk7Iik7CisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygi
cmVzdWx0ID0gaW5kZXgub3BlbktleUN1cnNvcigpOyIpOworICAgIHJlc3VsdC5vbnN1Y2Nlc3Mg
PSB2ZXJpZnlLZXlDdXJzb3I7CisgICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gdmVyaWZ5S2V5Q3Vyc29yKCkKK3sKKyAgICBjdXJzb3Ig
PSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgIHNob3Vs
ZEJlRmFsc2UoImN1cnNvciA9PSBudWxsIik7CisgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAi
ZGF0YS5udW0iKTsKKyAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAiZGF0YS5pZCIp
OworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9yZXNvdXJjZXMvY3JlYXRlLW9iamVjdHN0b3JlLWJhc2ljcy5qcyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2NyZWF0ZS1vYmplY3RzdG9yZS1iYXNp
Y3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjczMTZiMmU0ZTg0NTBlMzVkMGVhNjk1NWNmYjQ3YTQ3NmI4ZGFk
MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEvcmVzb3VyY2VzL2NyZWF0ZS1vYmplY3RzdG9yZS1iYXNpY3MuanMKQEAgLTAsMCArMSw2NiBA
QAorLy8gb3JpZ2luYWwgdGVzdDoKKy8vIGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIu
MC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfY3JlYXRlX29iamVjdFN0b3JlLmh0bWwK
Ky8vIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7
CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi9yZXNvdXJjZXMvc2hhcmVkLmpz
Jyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGNyZWF0aW5nIG9iamVjdCBz
dG9yZSBhbmQgdXBkYXRpbmcgcHJvcGVydGllcyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0
aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sK
KyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2Uo
KQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBvYmplY3RTdG9yZUlu
Zm8gPSBbCisgICAgICAgIHsgbmFtZTogIjEiLCBvcHRpb25zOiB7IGF1dG9JbmNyZW1lbnQ6IHRy
dWUgfSB9LAorICAgICAgICB7IG5hbWU6ICIyIiwgb3B0aW9uczogeyBhdXRvSW5jcmVtZW50OiBm
YWxzZSB9IH0sCisgICAgICAgIHsgbmFtZTogIjMiLCBvcHRpb25zOiB7IGtleVBhdGg6ICIiIH0g
fSwKKyAgICAgICAgeyBuYW1lOiAiNCIsIG9wdGlvbnM6IHsga2V5UGF0aDogIiIsIGF1dG9JbmNy
ZW1lbnQ6IHRydWUgfSB9LAorICAgICAgICB7IG5hbWU6ICI1Iiwgb3B0aW9uczogeyBrZXlQYXRo
OiAiIiwgYXV0b0luY3JlbWVudDogZmFsc2UgfSB9LAorICAgICAgICB7IG5hbWU6ICI2Iiwgb3B0
aW9uczogeyBrZXlQYXRoOiAiZm9vIiB9IH0sCisgICAgICAgIHsgbmFtZTogIjciLCBvcHRpb25z
OiB7IGtleVBhdGg6ICJmb28iLCBhdXRvSW5jcmVtZW50OiBmYWxzZSB9IH0sCisgICAgICAgIHsg
bmFtZTogIjgiLCBvcHRpb25zOiB7IGtleVBhdGg6ICJmb28iLCBhdXRvSW5jcmVtZW50OiB0cnVl
IH0gfQorICAgIF07CisKKyAgICBmb3IgKHZhciBpbmRleCBpbiBvYmplY3RTdG9yZUluZm8pIHsK
KyAgICAgICAgaW5kZXggPSBwYXJzZUludChpbmRleCk7CisgICAgICAgIGluZm8gPSBvYmplY3RT
dG9yZUluZm9baW5kZXhdOworICAgICAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVj
dFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoaW5mby5uYW1lLCBpbmZvLm9wdGlvbnMpOyIp
OworICAgICAgICBzaG91bGRCZSgib2JqZWN0U3RvcmUubmFtZSIsICJpbmZvLm5hbWUiKTsKKyAg
ICAgICAgaWYgKGluZm8ub3B0aW9ucyAmJiBpbmZvLm9wdGlvbnMua2V5UGF0aCkgeworICAgICAg
ICAgICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLmtleVBhdGgiLCAiaW5mby5vcHRpb25zLmtleVBh
dGgiKTsKKyAgICAgICAgfQorICAgICAgICBzaG91bGRCZSgib2JqZWN0U3RvcmUuaW5kZXhOYW1l
cy5sZW5ndGgiLCAiMCIpOworICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0
aW9uLmRiIiwgImRiIik7CisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQudHJhbnNhY3Rp
b24ucmVhZHlTdGF0ZSIsICJJREJUcmFuc2FjdGlvbi5MT0FESU5HIik7CisgICAgICAgIHNob3Vs
ZEJlKCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24ubW9kZSIsICJJREJUcmFuc2FjdGlvbi5WRVJT
SU9OX0NIQU5HRSIpOworICAgIH0KKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY3JlYXRlLW9iamVjdHN0b3JlLW51bGwt
bmFtZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2Vz
L2NyZWF0ZS1vYmplY3RzdG9yZS1udWxsLW5hbWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2MyNjY5MGVmNWM0
MzczMzM3ODg5MmVkOTRlYjQ0Y2EyMDQ4MDE3NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2NyZWF0ZS1vYmplY3RzdG9y
ZS1udWxsLW5hbWUuanMKQEAgLTAsMCArMSw0NCBAQAorLy8gb3JpZ2luYWwgdGVzdDoKKy8vIGh0
dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0
L3Rlc3RfY3JlYXRlX29iamVjdFN0b3JlLmh0bWwKKy8vIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVz
dDoKKy8vICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisvLyAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8g
IgorCitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3Jp
cHRzKCcuLi8uLi9yZXNvdXJjZXMvc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0
IEluZGV4ZWREQidzIGNyZWF0aW5nIG9iamVjdCBzdG9yZSB3aXRoIG51bGwgbmFtZSIpOworCitm
dW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFt
ZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBE
YXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUs
IGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0
aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFy
Z2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5z
ZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7
CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRl
T2JqZWN0U3RvcmUobnVsbCk7Iik7CisgICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLm5hbWUiLCAi
J251bGwnIik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvcmVzb3VyY2VzL2N1cnNvci1tdXRhdGlvbi1vYmplY3RzdG9yZS1vbmx5Lmpz
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY3Vyc29y
LW11dGF0aW9uLW9iamVjdHN0b3JlLW9ubHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjc3ZWVjYzg1NmJlMGEw
YjkyYzZlOGFmZTRjODQxYTRmNDE4MzYzNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2N1cnNvci1tdXRhdGlvbi1vYmpl
Y3RzdG9yZS1vbmx5LmpzCkBAIC0wLDAgKzEsMTQxIEBACisvLyBvcmlnaW5hbCB0ZXN0OgorLy8g
aHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rl
c3QvdGVzdF9jdXJzb3JfbXV0YXRpb24uaHRtbD9mb3JjZT0xCisvLyBsaWNlbnNlIG9mIG9yaWdp
bmFsIHRlc3Q6CisvLyAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorLy8gICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvICIKKworaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMo
Jy4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1w
b3J0U2NyaXB0cygnLi4vLi4vcmVzb3VyY2VzL3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlv
bigiVGVzdCBJbmRleGVkREIncyBjdXJzb3IgbXV0YXRpb24gZHVyaW5nIG9iamVjdCBzdG9yZSBj
dXJzb3IgaXRlcmF0aW9uIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRv
clByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBk
ZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJv
cGVuU3VjY2VzcygpOiIpOworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZl
cnNpb24oJzEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0dXBPYmplY3RTdG9yZTsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gc2V0dXBPYmplY3RTdG9yZSgpCit7CisgICAgZGVidWcoInNldHVwT2JqZWN0U3RvcmUo
KToiKTsKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmUg
PSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7
IGtleVBhdGg6ICdzcycgfSk7Iik7CisgICAgb2JqZWN0U3RvcmVEYXRhID0gZXZhbEFuZExvZygi
b2JqZWN0U3RvcmVEYXRhID0gW1xuIiArIAorIiAgICAgICAgeyBzczogJzIzNy0yMy03NzMyJywg
bmFtZTogJ0JvYicgfSxcbiIgKyAKKworIiAgICAgICAgeyBzczogJzIzNy0yMy03NzMzJywgbmFt
ZTogJ0FubicgfSxcbiIgKworIiAgICAgICAgeyBzczogJzIzNy0yMy03NzM0JywgbmFtZTogJ1Jv
bicgfSxcbiIgKworIiAgICAgICAgeyBzczogJzIzNy0yMy03NzM1JywgbmFtZTogJ1N1ZScgfSxc
biIgKworIiAgICAgICAgeyBzczogJzIzNy0yMy03NzM2JywgbmFtZTogJ0pvZScgfSxcbiIgKwor
CisiICAgICAgICB7IHNzOiAnMjM3LTIzLTc3MzcnLCBuYW1lOiAnUGF0JyB9XG4iICsKKyIgICAg
XTsiKTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBvYmplY3RTdG9yZURhdGEubGVuZ3RoIC0gMTsg
aSsrKSB7CisgICAgICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURh
dGFbaV0pOyIpOworICAgIH0KKworICAgIGNvdW50ID0gZXZhbEFuZExvZygiY291bnQgPSAwOyIp
OworICAgIHNhd0FkZGVkID0gZXZhbEFuZExvZygic2F3QWRkZWQgPSBmYWxzZTsiKTsKKyAgICBz
YXdSZW1vdmVkID0gZXZhbEFuZExvZygic2F3UmVtb3ZlZCA9IGZhbHNlOyIpOworCisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBpdGVyYXRlQ3Vyc29yOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBpdGVyYXRlQ3Vy
c29yKCkKK3sKKyAgICBkZWJ1ZygiaXRlcmF0ZUN1cnNvcigpOiIpOworICAgIGV2YWxBbmRMb2co
ImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gY2hlY2tDdXJzb3JSZXN1bHRz
QW5kU2V0dXBNdXRhdGluZ0N1cnNvcjsiKTsKKyAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJz
b3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAg
aWYgKGN1cnNvci52YWx1ZS5uYW1lID09IG9iamVjdFN0b3JlRGF0YVswXS5uYW1lKSB7CisgICAg
ICAgICAgICBzYXdSZW1vdmVkID0gZXZhbEFuZExvZygic2F3UmVtb3ZlZCA9IHRydWU7Iik7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKGN1cnNvci52YWx1ZS5uYW1lID09IG9iamVjdFN0b3JlRGF0
YVtvYmplY3RTdG9yZURhdGEubGVuZ3RoIC0gMV0ubmFtZSkgeworICAgICAgICAgICAgc2F3QWRk
ZWQgPSBldmFsQW5kTG9nKCJzYXdBZGRlZCA9IHRydWU7Iik7CisgICAgICAgIH0KKyAgICAgICAg
ZXZhbEFuZExvZygiY291bnQrKzsiKTsKKyAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRp
bnVlKCk7Iik7CisgICAgfQorfQorCitmdW5jdGlvbiBjaGVja0N1cnNvclJlc3VsdHNBbmRTZXR1
cE11dGF0aW5nQ3Vyc29yKCkKK3sKKyAgICBkZWJ1ZygiY2hlY2tDdXJzb3JSZXN1bHRzQW5kU2V0
dXBNdXRhdGluZ0N1cnNvcigpOiIpOworICAgIHNob3VsZEJlKCJjb3VudCIsICJvYmplY3RTdG9y
ZURhdGEubGVuZ3RoIC0gMSIpOworICAgIHNob3VsZEJlKCJzYXdBZGRlZCIsICJmYWxzZSIpOwor
ICAgIHNob3VsZEJlKCJzYXdSZW1vdmVkIiwgInRydWUiKTsKKworICAgIGNvdW50ID0gZXZhbEFu
ZExvZygiY291bnQgPSAwOyIpOworICAgIHNhd0FkZGVkID0gZXZhbEFuZExvZygic2F3QWRkZWQg
PSBmYWxzZTsiKTsKKyAgICBzYXdSZW1vdmVkID0gZXZhbEFuZExvZygic2F3UmVtb3ZlZCA9IGZh
bHNlOyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi50cmFuc2Fj
dGlvbignZm9vJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3RvcmUoJ2Zvbycp
Lm9wZW5DdXJzb3IoKTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGl0ZXJhdGVNdXRhdGlu
Z0N1cnNvcjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
K30KKworZnVuY3Rpb24gaXRlcmF0ZU11dGF0aW5nQ3Vyc29yKCkKK3sKKyAgICBkZWJ1ZygiaXRl
cmF0ZU11dGF0aW5nQ3Vyc29yKCk6Iik7CisgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnRy
YW5zYWN0aW9uLm9uY29tcGxldGUgPSBjaGVja011dGF0aW5nQ3Vyc29yUmVzdWx0czsiKTsKKyAg
ICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwor
ICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgaWYgKGN1cnNvci52YWx1ZS5uYW1lID09IG9iamVj
dFN0b3JlRGF0YVswXS5uYW1lKSB7CisgICAgICAgICAgICBzYXdSZW1vdmVkID0gZXZhbEFuZExv
Zygic2F3UmVtb3ZlZCA9IHRydWU7Iik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGN1cnNvci52
YWx1ZS5uYW1lID09IG9iamVjdFN0b3JlRGF0YVtvYmplY3RTdG9yZURhdGEubGVuZ3RoIC0gMV0u
bmFtZSkgeworICAgICAgICAgICAgc2F3QWRkZWQgPSBldmFsQW5kTG9nKCJzYXdBZGRlZCA9IHRy
dWU7Iik7CisgICAgICAgIH0KKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwg
IiciICsgb2JqZWN0U3RvcmVEYXRhW2NvdW50XS5uYW1lICsgIiciKTsKKyAgICAgICAgZXZhbEFu
ZExvZygiY291bnQrKyIpOworCisgICAgICAgIGlmIChjb3VudCA9PSAxKSB7CisgICAgICAgICAg
ICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZXZlbnQudGFyZ2V0LnRy
YW5zYWN0aW9uLm9iamVjdFN0b3JlKCdmb28nKTsiKTsKKyAgICAgICAgICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZGVsZXRlKG9iamVjdFN0b3JlRGF0YVsw
XS5zcyk7Iik7CisgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEZpbmFsRGF0YTsK
KyAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7CisgICAgICAg
IH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIGFkZEZpbmFsRGF0YSgpCit7CisgICAgZGVidWcoImFk
ZEZpbmFsRGF0YSgpOiIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2Jq
ZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtvYmplY3RTdG9yZURhdGEubGVuZ3RoIC0gMV0p
OyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeyBjdXJzb3IuY29udGlu
dWUoKTsgfQorICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBjaGVja011dGF0aW5nQ3Vyc29yUmVzdWx0cygpCit7CisgICAgZGVidWco
ImNoZWNrTXV0YXRpbmdDdXJzb3JSZXN1bHRzKCk6Iik7CisgICAgc2hvdWxkQmUoImNvdW50Iiwg
Im9iamVjdFN0b3JlRGF0YS5sZW5ndGgiKTsKKyAgICBzaG91bGRCZSgic2F3QWRkZWQiLCAidHJ1
ZSIpOworICAgIHNob3VsZEJlKCJzYXdSZW1vdmVkIiwgInRydWUiKTsKKyAgICBmaW5pc2hKU1Rl
c3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2N1cnNv
ci1tdXRhdGlvbi5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVz
b3VyY2VzL2N1cnNvci1tdXRhdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMTU2NmZiZmRiODc5NWRlMzM3
ZDdiOTk2MTQxNjg5NjZjMDMwMjA4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY3Vyc29yLW11dGF0aW9uLmpzCkBAIC0w
LDAgKzEsMTgxIEBACisvLyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9y
Zy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9jdXJzb3JfbXV0YXRp
b24uaHRtbD9mb3JjZT0xCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisvLyAiIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorLy8gICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKworaWYgKHRoaXMu
aW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vcmVz
b3VyY2VzL3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBj
dXJzb3IgbXV0YXRpb24iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9y
UHJlZml4ZXMoKTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBuYW1lID0gJ2N1cnNvci1tdXRhdGlv
bic7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShu
YW1lKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSkiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJn
ZXQucmVzdWx0Iik7CisgICAgICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVy
c2lvbignMScpIik7CisgICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0dXBPYmplY3RT
dG9yZUFuZENyZWF0ZUluZGV4OyAgICAgICAgICAKKyAgICAgICAgfTsKKyAgICB9OworfQorCitm
dW5jdGlvbiBzZXR1cE9iamVjdFN0b3JlQW5kQ3JlYXRlSW5kZXgoKQoreworICAgIGRlYnVnKCIi
KTsKKyAgICBkZWJ1Zygic2V0dXBPYmplY3RTdG9yZUFuZENyZWF0ZUluZGV4KCk6Iik7CisKKyAg
ICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gcmVxdWVzdC5yZXN1bHQiKTsKKworICAgIG9i
amVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9y
ZSgnZm9vJywgeyBrZXlQYXRoOiAnc3MnIH0pIik7CisgICAgaW5kZXggPSBldmFsQW5kTG9nKCJp
bmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCduYW1lJywgJ25hbWUnLCB7IHVuaXF1ZTog
dHJ1ZSB9KSIpOworICAgIG9iamVjdFN0b3JlRGF0YSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3Jl
RGF0YSA9IFtcbiIgKyAKKyAgICAgICAgIC8vIFRvIGJlIHJlbW92ZWQuCisiICAgICAgICB7IHNz
OiAnMjM3LTIzLTc3MzInLCBuYW1lOiAnQm9iJyB9LFxuIiArIAorCisgICAgICAgICAvLyBBbHdh
eXMgcHJlc2VudC4KKyIgICAgICAgIHsgc3M6ICcyMzctMjMtNzczMycsIG5hbWU6ICdBbm4nIH0s
XG4iICsKKyIgICAgICAgIHsgc3M6ICcyMzctMjMtNzczNCcsIG5hbWU6ICdSb24nIH0sXG4iICsK
KyIgICAgICAgIHsgc3M6ICcyMzctMjMtNzczNScsIG5hbWU6ICdTdWUnIH0sXG4iICsKKyIgICAg
ICAgIHsgc3M6ICcyMzctMjMtNzczNicsIG5hbWU6ICdKb2UnIH0sXG4iICsKKworICAgICAgICAg
Ly8gVG8gYmUgYWRkZWQuCisiICAgICAgICB7IHNzOiAnMjM3LTIzLTc3MzcnLCBuYW1lOiAnUGF0
JyB9XG4iICsKKyIgICAgXSIpOworCisgICAgZm9yIChpID0gMDsgaSA8IG9iamVjdFN0b3JlRGF0
YS5sZW5ndGggLSAxOyBpKyspIHsKKyAgICAgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRk
KG9iamVjdFN0b3JlRGF0YVsiICsgaSArICJdKSIpOworICAgIH0KKworICAgIGV2YWxBbmRMb2co
InRyYW5zLm9uY29tcGxldGUgPSBjaGVja0N1cnNvclJlc3VsdHMiKTsKKyAgICBzZXR1cEN1cnNv
cigpOworfQorCitmdW5jdGlvbiBzZXR1cEN1cnNvcigpCit7CisgICAgZGVidWcoIiIpOworICAg
IGRlYnVnKCJzZXR1cEN1cnNvcigpOiIpOworCisgICAgY291bnQgPSBldmFsQW5kTG9nKCJjb3Vu
dCA9IDAiKTsKKyAgICBzYXdBZGRlZCA9IGV2YWxBbmRMb2coInNhd0FkZGVkID0gZmFsc2UiKTsK
KyAgICBzYXdSZW1vdmVkID0gZXZhbEFuZExvZygic2F3UmVtb3ZlZCA9IGZhbHNlIik7CisKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3Io
KSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gaXRlcmF0ZUN1cnNvcjsKK30KKworZnVuY3Rpb24gaXRlcmF0
ZUN1cnNvcigpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJpdGVyYXRlQ3Vyc29yKCk6
Iik7CisgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dCIpOworICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJj
dXJzb3IudmFsdWUubmFtZSIsIG9iamVjdFN0b3JlRGF0YVtjb3VudF0ubmFtZSk7CisgICAgICAg
IGlmIChjdXJzb3IudmFsdWUubmFtZSA9PSBvYmplY3RTdG9yZURhdGFbMF0ubmFtZSkgeworICAg
ICAgICAgICAgc2F3UmVtb3ZlZCA9IGV2YWxBbmRMb2coInNhd1JlbW92ZWQgPSB0cnVlIik7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKGN1cnNvci52YWx1ZS5uYW1lID09IG9iamVjdFN0b3JlRGF0
YVtvYmplY3RTdG9yZURhdGEubGVuZ3RoIC0gMV0ubmFtZSkgeworICAgICAgICAgICAgc2F3QWRk
ZWQgPSBldmFsQW5kTG9nKCJzYXdBZGRlZCA9IHRydWUiKTsKKyAgICAgICAgfQorICAgICAgICBl
dmFsQW5kTG9nKCJjb3VudCsrIik7CisgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51
ZSgpIik7CisgICAgfQorfQorCitmdW5jdGlvbiBjaGVja0N1cnNvclJlc3VsdHMoKQoreworICAg
IGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiY2hlY2tDdXJzb3JSZXN1bHRzKCk6Iik7CisgICAgc2hv
dWxkQmUoImNvdW50IiwgIm9iamVjdFN0b3JlRGF0YS5sZW5ndGggLSAxIik7CisgICAgc2hvdWxk
QmUoInNhd0FkZGVkIiwgImZhbHNlIik7CisgICAgc2hvdWxkQmUoInNhd1JlbW92ZWQiLCAidHJ1
ZSIpOworCisgICAgc2V0dXBNdXRhdGluZ0N1cnNvcigpOworfQorCitmdW5jdGlvbiBzZXR1cE11
dGF0aW5nQ3Vyc29yKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInNldHVwTXV0YXRp
bmdDdXJzb3IoKToiKTsKKyAgIAorICAgIGNvdW50ID0gZXZhbEFuZExvZygiY291bnQgPSAwIik7
CisgICAgc2F3QWRkZWQgPSBldmFsQW5kTG9nKCJzYXdBZGRlZCA9IGZhbHNlIik7CisgICAgc2F3
UmVtb3ZlZCA9IGV2YWxBbmRMb2coInNhd1JlbW92ZWQgPSBmYWxzZSIpOworICAgIGRlYnVnKCJb
b2JqZWN0U3RvcmVEYXRhTmFtZVNvcnQgaXMgYW4gYXJyYXkgb2YgaW5kZXhlcyBpbnRvIG9iamVj
dFN0b3JlRGF0YSBpbiBhbHBoYWJldGljYWwgb3JkZXIgYnkgbmFtZV0iKTsKKyAgICBvYmplY3RT
dG9yZURhdGFOYW1lU29ydCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0ID0g
WyAxLCA0LCA1LCAyLCAzIF0iKTsKKworICAgIGRlYnVnKCIiKTsKKworICAgIHRyYW5zID0gZXZh
bEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignZm9vJywgSURCVHJhbnNhY3Rpb24uUkVB
RF9XUklURSkiKTsKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0g
dHJhbnMub2JqZWN0U3RvcmUoJ2ZvbycpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9wZW5DdXJzb3IoKSIpOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gaXRlcmF0ZU11dGF0aW5nQ3Vyc29yOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9u
Y29tcGxldGUgPSBjaGVja011dGF0aW5nQ3Vyc29yUmVzdWx0cyIpOworfQorCitmdW5jdGlvbiBp
dGVyYXRlTXV0YXRpbmdDdXJzb3IoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiaXRl
cmF0ZU11dGF0aW5nQ3Vyc29yKCk6Iik7CisgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29y
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJjdXJzb3IudmFsdWUubmFtZSIsIG9iamVjdFN0b3JlRGF0YVtv
YmplY3RTdG9yZURhdGFOYW1lU29ydFtjb3VudF1dLm5hbWUpOworICAgICAgICBpZiAoY3Vyc29y
LnZhbHVlLm5hbWUgPT0gb2JqZWN0U3RvcmVEYXRhWzBdLm5hbWUpIHsKKyAgICAgICAgICAgIHNh
d1JlbW92ZWQgPSBldmFsQW5kTG9nKCJzYXdSZW1vdmVkID0gdHJ1ZSIpOworICAgICAgICB9Cisg
ICAgICAgIGlmIChjdXJzb3IudmFsdWUubmFtZSA9PSBvYmplY3RTdG9yZURhdGFbb2JqZWN0U3Rv
cmVEYXRhLmxlbmd0aCAtIDFdLm5hbWUpIHsKKyAgICAgICAgICAgIHNhd0FkZGVkID0gZXZhbEFu
ZExvZygic2F3QWRkZWQgPSB0cnVlIik7CisgICAgICAgIH0KKyAgICAgICAgZXZhbEFuZExvZygi
Y291bnQrKyIpOworCisgICAgICAgIGlmIChjb3VudCA9PSAxKSB7CisgICAgICAgICAgICBkZWJ1
ZygiIik7CisgICAgICAgICAgICBkZWJ1ZygiTXV0YXRpbmcgdGhlIG9iamVjdCBzdG9yZToiKTsK
KworICAgICAgICAgICAgZGVidWcoIlJlbW92aW5nICIgKyBvYmplY3RTdG9yZURhdGFbMF0ubmFt
ZSk7CisgICAgICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0
b3JlLmRlbGV0ZShvYmplY3RTdG9yZURhdGFbMF0uc3MpIik7CisgICAgICAgICAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gYWRkRmluYWxEYXRhOworCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBjdXJzb3IuY29udGludWUoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gYWRk
RmluYWxEYXRhKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImFkZEZpbmFsRGF0YSgp
OiIpOworICAgIGRlYnVnKCJBZGRpbmcgIiArIG9iamVjdFN0b3JlRGF0YVtvYmplY3RTdG9yZURh
dGEubGVuZ3RoIC0gMV0ubmFtZSk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW29iamVjdFN0b3JlRGF0YS5sZW5ndGgg
LSAxXSkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgY3Vyc29yLmNv
bnRpbnVlKCk7CisgICAgfQorfQorCitmdW5jdGlvbiBjaGVja011dGF0aW5nQ3Vyc29yUmVzdWx0
cygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJjaGVja011dGF0aW5nQ3Vyc29yUmVz
dWx0cygpOiIpOworICAgIHNob3VsZEJlKCJjb3VudCIsICJvYmplY3RTdG9yZURhdGEubGVuZ3Ro
IC0gMSIpOworICAgIHNob3VsZEJlKCJzYXdBZGRlZCIsICJ0cnVlIik7CisgICAgc2hvdWxkQmUo
InNhd1JlbW92ZWQiLCAiZmFsc2UiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgp
OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2N1cnNvci11cGRhdGUtdXBkYXRlcy1p
bmRleGVzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJj
ZXMvY3Vyc29yLXVwZGF0ZS11cGRhdGVzLWluZGV4ZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWM3ZDliYjli
YjY2ZWU0ZTM1Mzc4ZTljYWI4YWRmYjkxM2MxYmM5MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2N1cnNvci11cGRhdGUt
dXBkYXRlcy1pbmRleGVzLmpzCkBAIC0wLDAgKzEsMTE0IEBACisvLyBvcmlnaW5hbCB0ZXN0Ogor
Ly8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERC
L3Rlc3QvdGVzdF9jdXJzb3JfdXBkYXRlX3VwZGF0ZXNfaW5kZXhlcy5odG1sP2ZvcmNlPTEKKy8v
IGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Cisg
ICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi9yZXNvdXJjZXMvc2hhcmVkLmpzJyk7
Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQjogbXV0YXRpbmcgcmVjb3JkcyB3aXRo
IGEgci93IGN1cnNvciB1cGRhdGVzIGluZGV4ZXMgb24gdGhvc2UgcmVjb3JkcyIpOworCitmdW5j
dGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9
IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRh
YmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRl
c2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBkYiA9
IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIGZpcnN0VmFsdWUg
PSBldmFsQW5kTG9nKCJmaXJzdFZhbHVlID0gJ2hpJzsiKTsKKyAgICBzZWNvbmRWYWx1ZSA9IGV2
YWxBbmRMb2coInNlY29uZFZhbHVlID0gJ2J5ZSc7Iik7CisgICAgb2JqZWN0U3RvcmVJbmZvID0g
ZXZhbEFuZExvZygib2JqZWN0U3RvcmVJbmZvID0gW1xuIiArCisiICAgICAgICB7IG5hbWU6ICcx
Jywgb3B0aW9uczoge30sIGtleTogMSxcbiIgKworIiAgICAgICAgICBlbnRyeTogeyBkYXRhOiBm
aXJzdFZhbHVlIH0gfSxcbiIgKworIiAgICAgICAgeyBuYW1lOiAnMicsIG9wdGlvbnM6IHsga2V5
UGF0aDogJ2ZvbycgfSxcbiIgKworIiAgICAgICAgICBlbnRyeTogeyBmb286IDEsIGRhdGE6IGZp
cnN0VmFsdWUgfSB9LFxuIiArCisiICAgICAgICB7IG5hbWU6ICczJywgb3B0aW9uczogeyBhdXRv
SW5jcmVtZW50OiB0cnVlIH0sXG4iICsKKyIgICAgICAgICAgZW50cnk6IHsgZGF0YTogZmlyc3RW
YWx1ZSB9IH0sXG4iICsKKyIgICAgICAgIHsgbmFtZTogJzQnLCBvcHRpb25zOiB7IGtleVBhdGg6
ICdmb28nLCBhdXRvSW5jcmVtZW50OiB0cnVlIH0sXG4iICsKKyIgICAgICAgICAgZW50cnk6IHsg
ZGF0YTogZmlyc3RWYWx1ZSB9IH0sXG4iICsKKyIgICAgXTsiKTsKKyAgICBpID0gZXZhbEFuZExv
ZygiaSA9IDA7Iik7CisgICAgc2V0VmVyc2lvbigpOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9u
KCkKK3sKKyAgICBpZiAoaSA8IG9iamVjdFN0b3JlSW5mby5sZW5ndGgpIHsKKyAgICAgICAgaW5m
byA9IGV2YWxBbmRMb2coImluZm8gPSBvYmplY3RTdG9yZUluZm9baV07Iik7CisgICAgICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAg
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0dXBPYmplY3RTdG9yZUFuZENyZWF0ZUluZGV4QW5k
QWRkOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICB9IGVsc2UgeworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9Cit9CisKK2Z1bmN0
aW9uIHNldHVwT2JqZWN0U3RvcmVBbmRDcmVhdGVJbmRleEFuZEFkZCgpCit7CisgICAgZGVidWco
InNldHVwT2JqZWN0U3RvcmVBbmRDcmVhdGVJbmRleCgpOiIpOworICAgIGRlbGV0ZUFsbE9iamVj
dFN0b3JlcyhkYik7CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3Jl
ID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoaW5mby5uYW1lLCBpbmZvLm9wdGlvbnMpOyIpOworCisg
ICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdk
YXRhX2luZGV4JywgJ2RhdGEnLCB7IHVuaXF1ZTogZmFsc2UgfSk7Iik7CisgICAgdW5pcXVlSW5k
ZXggPSBldmFsQW5kTG9nKCJ1bmlxdWVJbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCd1
bmlxdWVfZGF0YV9pbmRleCcsICdkYXRhJywgeyB1bmlxdWU6IHRydWUgfSk7Iik7CisgICAgaWYg
KGluZm8ua2V5KSB7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2Jq
ZWN0U3RvcmUuYWRkKGluZm8uZW50cnksIGluZm8ua2V5KTsiKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChpbmZv
LmVudHJ5KTsiKTsKKyAgICB9CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuQ3Vyc29yOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiBvcGVuQ3Vyc29yKCkKK3sKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVw
ZGF0ZUN1cnNvcjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gdXBkYXRlQ3Vyc29yKCkKK3sKKyAgICBjdXJzb3IgPSBldmFsQW5k
TG9nKCJjdXJzb3IgPSByZXF1ZXN0LnJlc3VsdDsiKTsKKyAgICB2YWx1ZSA9IGV2YWxBbmRMb2co
InZhbHVlID0gY3Vyc29yLnZhbHVlOyIpOworICAgIHZhbHVlLmRhdGEgPSBldmFsQW5kTG9nKCJ2
YWx1ZS5kYXRhID0gc2Vjb25kVmFsdWU7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBjdXJzb3IudXBkYXRlKHZhbHVlKTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGdldEluZGV4MTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gZ2V0SW5kZXgxKCkKK3sKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygicmVxdWVzdCA9IGluZGV4LmdldChzZWNvbmRWYWx1ZSk7Iik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBjaGVja0luZGV4MUFuZEdldEluZGV4MjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2hlY2tJbmRleDFBbmRHZXRJ
bmRleDIoKQoreworICAgIHNob3VsZEJlKCJ2YWx1ZS5kYXRhIiwgImV2ZW50LnRhcmdldC5yZXN1
bHQuZGF0YSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gdW5pcXVlSW5k
ZXguZ2V0KHNlY29uZFZhbHVlKTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNoZWNrSW5k
ZXgyOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBjaGVja0luZGV4MigpCit7CisgICAgc2hvdWxkQmUoInZhbHVlLmRhdGEiLCAi
ZXZlbnQudGFyZ2V0LnJlc3VsdC5kYXRhIik7CisgICAgZXZhbEFuZExvZygiaSsrOyIpOworICAg
IHNldFZlcnNpb24oKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3Vy
Y2VzL2N1cnNvcnMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jl
c291cmNlcy9jdXJzb3JzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxZGUzNzQwYTBjZWEwM2U5MjhiNmFiMjM1
MzZmMWIyNmM2YmFjNDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jdXJzb3JzLmpzCkBAIC0wLDAgKzEsMzg4IEBACisv
LyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3Nv
dXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9jdXJzb3JzLmh0bWw/Zm9yY2U9MQorLy8gbGlj
ZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorLy8gIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKy8vICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLyAiCisKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBp
bXBvcnRTY3JpcHRzKCcuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cycpOworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uL3Jlc291cmNlcy9zaGFyZWQuanMnKTsKK30K
KworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGN1cnNvciBiZWhhdmlvciIpOworCitmdW5j
dGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9
IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRh
YmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRl
c2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRW
ZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHRlc3RHcm91cDE7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IHRlc3RHcm91cDEoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBv
YmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdhdXRvSW5jcmVt
ZW50JywgeyBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVz
dWx0IiwgIm51bGwiKTsKKyAgICAgIHRlc3RHcm91cDIoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9u
IHRlc3RHcm91cDIoKQoreworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ2F1dG9JbmNyZW1lbnRLZXlQYXRoJywgeyBrZXlQYXRoOiAnZm9vJywgYXV0
b0luY3JlbWVudDogdHJ1ZSB9KTsiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24gKGV2ZW50KSB7CisgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJudWxs
Iik7CisgICAgICB0ZXN0R3JvdXAzKCk7CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0R3JvdXAz
KCkKK3sKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdrZXlQYXRoJywgeyBrZXlQYXRoOiAnZm9vJyB9KTsiKTsKKworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJl
c3VsdCIsICJudWxsIik7CisgICAgICB0ZXN0R3JvdXA0KCk7CisgICAgfQorfQorCitmdW5jdGlv
biB0ZXN0R3JvdXA0KCkKK3sKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdmb28nKTsiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24gKGV2ZW50KSB7CisgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJudWxs
Iik7CisgICAgICB0ZXN0R3JvdXA1KCk7CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0R3JvdXA1
KCkKK3sKKyAgICBrZXlzID0gZXZhbEFuZExvZygia2V5cyA9IFsxLCAtMSwgMCwgMTAsIDIwMDAs
ICdxJywgJ3onLCAndHdvJywgJ2InLCAnYSddOyIpOworICAgIHNvcnRlZEtleXMgPSBldmFsQW5k
TG9nKCJzb3J0ZWRLZXlzID0gWy0xLCAwLCAxLCAxMCwgMjAwMCwgJ2EnLCAnYicsICdxJywgJ3R3
bycsICd6J107Iik7CisKKyAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gMDsi
KTsKKworICAgIGZvciAoaSBpbiBrZXlzKSB7CisgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZCgnZm9vJywga2V5c1tpXSk7Iik7CisgICAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgaWYgKCsra2V5SW5kZXggPT0ga2V5
cy5sZW5ndGgpIHsKKyAgICAgICAgICB0ZXN0R3JvdXA2KCk7CisgICAgICAgIH0KKyAgICAgIH07
CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0R3JvdXA2KCkKK3sKKyAgICBrZXlJbmRleCA9IDA7
CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5D
dXJzb3IoKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgeworICAgICAgY3Vy
c29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAg
IGlmIChjdXJzb3IpIHsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAic29ydGVkS2V5
c1trZXlJbmRleF0iKTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgInNv
cnRlZEtleXNba2V5SW5kZXhdIik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAi
J2ZvbyciKTsKKworICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKKyAg
ICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiY3Vyc29yLmNvbnRpbnVlKCk7IiwgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLk5PVF9BTExPV0VEX0VSUiIpOworCisgICAgICAgIHNob3VsZEJlKCJj
dXJzb3Iua2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7CisgICAgICAgIHNob3VsZEJlKCJj
dXJzb3IucHJpbWFyeUtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOworICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLnZhbHVlIiwgIidmb28nIik7CisKKyAgICAgICAgZXZhbEFuZExvZygia2V5
SW5kZXgrKzsiKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBzaG91bGRCZSgia2V5
SW5kZXgiLCAia2V5cy5sZW5ndGgiKTsKKyAgICAgICAgdGVzdEdyb3VwNygpOworICAgICAgfQor
ICAgIH0KK30KKworZnVuY3Rpb24gdGVzdEdyb3VwNygpCit7CisgICAga2V5SW5kZXggPSBldmFs
QW5kTG9nKCJrZXlJbmRleCA9IDQ7Iik7CisKKyAgICByYW5nZSA9IGV2YWxBbmRMb2coInJhbmdl
ID0gSURCS2V5UmFuZ2UuYm91bmQoMjAwMCwgJ3EnKTsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IocmFuZ2UpOyIpOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJj
dXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgICAgaWYgKGN1cnNvcikgeworICAg
ICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOworICAg
ICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAic29ydGVkS2V5c1trZXlJbmRleF0i
KTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZSIsICInZm9vJyIpOworCisgICAgICAg
IGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOworCisgICAgICAgIHNob3VsZEJlKCJj
dXJzb3Iua2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7CisgICAgICAgIHNob3VsZEJlKCJj
dXJzb3IucHJpbWFyeUtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOworICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLnZhbHVlIiwgIidmb28nIik7CisKKyAgICAgICAgZXZhbEFuZExvZygia2V5
SW5kZXgrKzsiKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBzaG91bGRCZSgia2V5
SW5kZXgiLCAiOCIpOworICAgICAgICB0ZXN0R3JvdXA4KCk7CisgICAgICB9CisgICAgfQorfQor
CitmdW5jdGlvbiB0ZXN0R3JvdXA4KCkKK3sKKyAgICBrZXlJbmRleCA9IDA7CisKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgeworICAgICAgY3Vyc29yID0gZXZhbEFu
ZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAgIGlmIChjdXJzb3Ip
IHsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAic29ydGVkS2V5c1trZXlJbmRleF0i
KTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgInNvcnRlZEtleXNba2V5
SW5kZXhdIik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAiJ2ZvbyciKTsKKwor
ICAgICAgICBpZiAoa2V5SW5kZXgpIHsKKyAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29u
dGludWUoKTsiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBldmFsQW5k
TG9nKCJjdXJzb3IuY29udGludWUoJ2InKTsiKTsKKyAgICAgICAgfQorCisgICAgICAgIHNob3Vs
ZEJlKCJjdXJzb3Iua2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7CisgICAgICAgIHNob3Vs
ZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOworICAgICAg
ICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgIidmb28nIik7CisKKyAgICAgICAgZXZhbEFuZExv
Zygia2V5SW5kZXggKz0ga2V5SW5kZXggPyAxOiA2OyIpOworICAgICAgfQorICAgICAgZWxzZSB7
CisgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJrZXlzLmxlbmd0aCIpOworICAgICAgICB0
ZXN0R3JvdXA5KCk7CisgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0R3JvdXA5KCkK
K3sKKyAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gMDsiKTsKKworICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIp
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICBjdXJzb3IgPSBldmFs
QW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgICAgaWYgKGN1cnNv
cikgeworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4
XSIpOworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAic29ydGVkS2V5c1tr
ZXlJbmRleF0iKTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZSIsICInZm9vJyIpOwor
CisgICAgICAgIGlmIChrZXlJbmRleCkgeworICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5j
b250aW51ZSgpOyIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIGV2YWxB
bmRMb2coImN1cnNvci5jb250aW51ZSgxMCk7Iik7CisgICAgICAgIH0KKworICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLmtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOworICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKKyAgICAg
ICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZSIsICInZm9vJyIpOworCisgICAgICAgIGV2YWxBbmRM
b2coImtleUluZGV4ICs9IGtleUluZGV4ID8gMTogMzsiKTsKKyAgICAgIH0KKyAgICAgIGVsc2Ug
eworICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAia2V5cy5sZW5ndGgiKTsKKyAgICAgICAg
dGVzdEdyb3VwMTAoKTsKKyAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDEw
KCkKK3sKKyAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gMDsiKTsKKworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigp
OyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICBjdXJzb3IgPSBl
dmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgICAgaWYgKGN1
cnNvcikgeworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJzb3J0ZWRLZXlzW2tleUlu
ZGV4XSIpOworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAic29ydGVkS2V5
c1trZXlJbmRleF0iKTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZSIsICInZm9vJyIp
OworCisgICAgICAgIGlmIChrZXlJbmRleCkgeworICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNv
ci5jb250aW51ZSgpOyIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIGV2
YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgnYycpOyIpOworICAgICAgICB9CisKKyAgICAgICAg
c2hvdWxkQmUoImN1cnNvci5rZXkiLCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKKyAgICAgICAg
c2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7Cisg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAiJ2ZvbyciKTsKKworICAgICAgICBldmFs
QW5kTG9nKCJrZXlJbmRleCArPSBrZXlJbmRleCA/IDEgOiA3OyIpOworICAgICAgfQorICAgICAg
ZWxzZSB7CisgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJrZXlzLmxlbmd0aCIpOworICAg
ICAgICB0ZXN0R3JvdXAxMSgpOworICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gdGVzdEdy
b3VwMTEoKQoreworICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAwOyIpOwor
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vy
c29yKCk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgIGN1cnNv
ciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICBp
ZiAoY3Vyc29yKSB7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgInNvcnRlZEtleXNb
a2V5SW5kZXhdIik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJzb3J0
ZWRLZXlzW2tleUluZGV4XSIpOworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgIidm
b28nIik7CisKKyAgICAgICAgaWYgKGtleUluZGV4ID09IDQpIHsKKyAgICAgICAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGN1cnNvci51cGRhdGUoJ2JhcicpOyIpOworICAgICAg
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIGV2YWxB
bmRMb2coImtleUluZGV4Kys7Iik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29u
dGludWUoKTsiKTsKKyAgICAgICAgICB9OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7CisgICAgICAgICAgZXZhbEFuZExvZygi
Y3Vyc29yLmNvbnRpbnVlKCk7Iik7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2Ugewor
ICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAia2V5cy5sZW5ndGgiKTsKKyAgICAgICAgdGVz
dEdyb3VwMTIoKTsKKyAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDEyKCkK
K3sKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmdldChz
b3J0ZWRLZXlzWzRdKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHRlc3RHcm91cDEyYjsKK30KKworZnVu
Y3Rpb24gdGVzdEdyb3VwMTJiKCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3Vs
dCIsICInYmFyJyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmpl
Y3RTdG9yZS5wdXQoJ2ZvbycsIHNvcnRlZEtleXNbNF0pOyIpOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdGVz
dEdyb3VwMTM7Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDEzKCkKK3sKKyAgICBrZXlJbmRleCA9
IGV2YWxBbmRMb2coImtleUluZGV4ID0gMDsiKTsKKworICAgIGdvdFJlbW92ZUV2ZW50ID0gZmFs
c2U7CisgICAgcmV0dmFsID0gZmFsc2U7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVx
dWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IobnVsbCwgSURCQ3Vyc29yLk5FWFQpOyIpOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICBjdXJzb3IgPSBldmFsQW5k
TG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgICAgaWYgKGN1cnNvcikg
eworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIp
OworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAic29ydGVkS2V5c1trZXlJ
bmRleF0iKTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZSIsICInZm9vJyIpOworCisg
ICAgICAgIGlmIChrZXlJbmRleCA9PSA0KSB7CisgICAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBjdXJzb3IuZGVsZXRlKCk7Iik7CisgICAgICAgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgc2hvdWxkQmUoImtleUluZGV4Iiwg
IjUiKTsKKyAgICAgICAgICAgIGdvdFJlbW92ZUV2ZW50ID0gZXZhbEFuZExvZygiZ290UmVtb3Zl
RXZlbnQgPSB0cnVlOyIpOworICAgICAgICAgIH07CisgICAgICAgIH0KKworICAgICAgICBldmFs
QW5kTG9nKCJrZXlJbmRleCsrOyIpOworICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGlu
dWUoKTsiKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBzaG91bGRCZSgia2V5SW5k
ZXgiLCAia2V5cy5sZW5ndGgiKTsKKyAgICAgICAgc2hvdWxkQmUoImdvdFJlbW92ZUV2ZW50Iiwg
InRydWUiKTsKKyAgICAgICAgdGVzdEdyb3VwMTQoKTsKKyAgICAgIH0KKyAgICB9Cit9CisKK2Z1
bmN0aW9uIHRlc3RHcm91cDE0KCkKK3sKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IG9iamVjdFN0b3JlLmdldChzb3J0ZWRLZXlzWzRdKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHRl
c3RHcm91cDE0YjsKK30KKworZnVuY3Rpb24gdGVzdEdyb3VwMTRiKCkKK3sKKyAgICBzaG91bGRC
ZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ1bmRlZmluZWQiKTsKKworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKCdmb28nLCBzb3J0ZWRLZXlzWzRd
KTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHRlc3RHcm91cDE1OworfQorCitmdW5jdGlvbiB0ZXN0R3Jv
dXAxNSgpCit7CisgICAga2V5SW5kZXggPSBzb3J0ZWRLZXlzLmxlbmd0aCAtIDE7CisKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IobnVs
bCwgSURCQ3Vyc29yLlBSRVYpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7
CisgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0
OyIpOworICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIs
ICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1h
cnlLZXkiLCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNv
ci52YWx1ZSIsICInZm9vJyIpOworCisgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51
ZSgpOyIpOworCisgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgInNvcnRlZEtleXNba2V5
SW5kZXhdIik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJzb3J0ZWRL
ZXlzW2tleUluZGV4XSIpOworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgIidmb28n
Iik7CisKKyAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgtLTsiKTsKKyAgICAgIH0KKyAgICAg
IGVsc2UgeworICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiLTEiKTsKKyAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICB9CisgICAgfQorfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW96aWxsYS9yZXNvdXJjZXMvZGVsZXRlLXJlc3VsdC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2RlbGV0ZS1yZXN1bHQuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YmY2ZmQyMDIxMzAyYWY1NzdiYjRjODgzZjlhNTMwMGViY2UxMzAxOAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2RlbGV0
ZS1yZXN1bHQuanMKQEAgLTAsMCArMSw2NCBAQAorLy8gb3JpZ2luYWwgdGVzdDoKKy8vIGh0dHA6
Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rl
c3Rfb2RkX3Jlc3VsdF9vcmRlci5odG1sP3Jhdz0xCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRl
c3Q6CisvLyAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorLy8gICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
ICIKKworaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4u
Ly4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2Ny
aXB0cygnLi4vLi4vcmVzb3VyY2VzL3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVz
dCBJbmRleGVkREI6IHJlc3VsdCBwcm9wZXJ0eSBhZnRlciBkZWxldGluZyBleGlzdGluZyBhbmQg
bm9uLWV4aXN0aW5nIHJlY29yZCIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVW
ZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Cisg
ICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9
IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBjcmVhdGVPYmplY3RTdG9yZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY3JlYXRlT2JqZWN0U3RvcmUoKQor
eworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFs
QW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7IGtleVBh
dGg6ICdpZCcsIGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoe30pOyIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZGVsZXRlUmVjb3JkMTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVsZXRlUmVjb3JkMSgpCit7CisgICAgaWQg
PSBldmFsQW5kTG9nKCJpZCA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5kZWxldGUoaWQpOyIpOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZGVsZXRlUmVjb3JkMjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVsZXRlUmVjb3JkMigpCit7
CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAidW5kZWZpbmVkIik7CisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5kZWxldGUoaWQpOyIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZmluYWxDaGVjazsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOworfQorCitmdW5jdGlvbiBmaW5hbENoZWNr
KCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ1bmRlZmluZWQiKTsK
KyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEv
cmVzb3VyY2VzL2V2ZW50LXNvdXJjZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vemlsbGEvcmVzb3VyY2VzL2V2ZW50LXNvdXJjZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YTc5NmM1MTE1
ZjQ3ZjAwOGI5YWZmMDg3OGFlYmRkYzdlZmNiN2VjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvZXZlbnQtc291cmNlLmpz
CkBAIC0wLDAgKzEsNTcgQEAKKy8vIG9yaWdpbmFsIHRlc3Q6CisvLyBodHRwOi8vbXhyLm1vemls
bGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2V2ZW50X3Nv
dXJjZS5odG1sCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisvLyAiIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorLy8gICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKworaWYgKHRoaXMuaW1wb3J0
U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vcmVzb3VyY2Vz
L3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBldmVudC50
YXJnZXQuc291cmNlIGluIHN1Y2Nlc3MgY2FsbGJhY2tzIik7CisKK2Z1bmN0aW9uIHRlc3QoKQor
eworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlv
bi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3Mo
KQoreworICAgIHNvdXJjZSA9IGV2YWxBbmRMb2coInNvdXJjZSA9IGV2ZW50LnRhcmdldC5zb3Vy
Y2U7Iik7CisgICAgc2hvdWxkQmUoInNvdXJjZSIsICJpbmRleGVkREIiKTsKKworICAgIGRiID0g
ZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIHNv
dXJjZSA9IGV2YWxBbmRMb2coInNvdXJjZSA9IGV2ZW50LnRhcmdldC5zb3VyY2U7Iik7CisgICAg
c2hvdWxkQmUoInNvdXJjZSIsICJkYiIpOworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRi
KTsKKworICAgIG9iamVjdFN0b3JlTmFtZSA9ICJPYmplY3RzIjsKKyAgICBvYmplY3RTdG9yZSA9
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3Rv
cmVOYW1lLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoe30pOyIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gYXJlV2VEb25lWWV0OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBhcmVXZURvbmVZZXQoKQoreworICAgIHNvdXJj
ZSA9IGV2YWxBbmRMb2coInNvdXJjZSA9IGV2ZW50LnRhcmdldC5zb3VyY2U7Iik7CisgICAgc2hv
dWxkQmUoInNvdXJjZSIsICJvYmplY3RTdG9yZSIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQor
Cit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvZ2xvYmFsLWRhdGEuanMg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9nbG9iYWwt
ZGF0YS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jMGU5YmFlMTNhZTY1ZWY0NGM4ZTk5NDY1MzU1Y2YxM2I4NGFk
NmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9yZXNvdXJjZXMvZ2xvYmFsLWRhdGEuanMKQEAgLTAsMCArMSw2OSBAQAorLy8gb3JpZ2lu
YWwgdGVzdDoKKy8vIGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9t
L2luZGV4ZWREQi90ZXN0L3Rlc3RfZ2xvYmFsX2RhdGEuaHRtbAorLy8gbGljZW5zZSBvZiBvcmln
aW5hbCB0ZXN0OgorLy8gIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKy8vICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLyAiCisKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRz
KCcuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGlt
cG9ydFNjcmlwdHMoJy4uLy4uL3Jlc291cmNlcy9zaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRp
b24oIlRlc3QgSW5kZXhlZERCJ3Mgb3BlbmluZyBEQiBtb3JlIHRoYW4gb25jZSIpOworCitmdW5j
dGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9
IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRh
YmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRl
c2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYjEgPSBldmFsQW5kTG9nKCJkYjEgPSBldmVudC50YXJn
ZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiMS5z
ZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYjEp
OworCisgICAgb2JqZWN0U3RvcmVOYW1lID0gIk9iamVjdHMiOworICAgIG9iamVjdFN0b3JlT3B0
aW9ucyA9IHsga2V5UGF0aDogJ2lkJywgYXV0b0luY3JlbWVudDogdHJ1ZSB9OworICAgIGV2YWxB
bmRMb2coImRiMS5jcmVhdGVPYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUsIG9iamVjdFN0b3Jl
T3B0aW9ucyk7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4o
bmFtZSwgZGVzY3JpcHRpb24pOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbjJTdWNj
ZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBvcGVuMlN1Y2Nlc3MoKQoreworICAgIGRiMiA9IGV2YWxBbmRMb2coImRiMiA9
IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHNob3VsZEJlVHJ1ZSgiZGIxICE9PSBkYjIi
KTsKKyAgICBzaG91bGRCZSgiZGIxLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjEiKTsKKyAg
ICBzaG91bGRCZSgiZGIxLm9iamVjdFN0b3JlTmFtZXMuaXRlbSgwKSIsICJvYmplY3RTdG9yZU5h
bWUiKTsKKyAgICBzaG91bGRCZSgiZGIyLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjEiKTsK
KyAgICBzaG91bGRCZSgiZGIyLm9iamVjdFN0b3JlTmFtZXMuaXRlbSgwKSIsICJvYmplY3RTdG9y
ZU5hbWUiKTsKKworICAgIG9iamVjdFN0b3JlMSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlMSA9
IGRiMS50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUpLm9iamVjdFN0b3JlKG9iamVjdFN0b3Jl
TmFtZSk7Iik7CisgICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlMS5uYW1lIiwgIm9iamVjdFN0b3Jl
TmFtZSIpOworICAgIHNob3VsZEJlKCJvYmplY3RTdG9yZTEua2V5UGF0aCIsICJvYmplY3RTdG9y
ZU9wdGlvbnMua2V5UGF0aCIpOworCisgICAgb2JqZWN0U3RvcmUyID0gZXZhbEFuZExvZygib2Jq
ZWN0U3RvcmUyID0gZGIyLnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFtZSkub2JqZWN0U3RvcmUo
b2JqZWN0U3RvcmVOYW1lKTsiKTsKKyAgICBzaG91bGRCZVRydWUoIm9iamVjdFN0b3JlMSAhPT0g
b2JqZWN0U3RvcmUyIik7CisgICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlMi5uYW1lIiwgIm9iamVj
dFN0b3JlTmFtZSIpOworICAgIHNob3VsZEJlKCJvYmplY3RTdG9yZTIua2V5UGF0aCIsICJvYmpl
Y3RTdG9yZU9wdGlvbnMua2V5UGF0aCIpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rl
c3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9pbmRleGVzLmpzIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvaW5kZXhlcy5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kZjVlNWFlMDc5Y2I2NmNmNDkxMTA2MTA4OWUyYjRiNjc1YzAyNmQ1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJj
ZXMvaW5kZXhlcy5qcwpAQCAtMCwwICsxLDEwMTEgQEAKKy8vIG9yaWdpbmFsIHRlc3Q6CisvLyBo
dHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVz
dC90ZXN0X2luZGV4ZXMuaHRtbD9mb3JjZT0xCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6
CisvLyAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
Ly8gICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIK
KworaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0
cygnLi4vLi4vcmVzb3VyY2VzL3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJ
bmRleGVkREI6IGl0ZXJhdGluZyB0aHJvdWdoIGluZGV4IGN1cnNvcnMgd2l0aCBrZXlzIGFuZCBr
ZXkgcmFuZ2VzIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZp
eGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlw
dGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5k
ZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJvcGVuU3Vj
Y2VzcygpOiIpOworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7CisKKyAgICBvYmplY3RTdG9yZU5hbWUgPSAiUGVvcGxlIjsKKworICAgIG9iamVjdFN0b3Jl
RGF0YSA9IFsKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczMiIsIHZhbHVlOiB7IG5hbWU6ICJC
b2IiLCBoZWlnaHQ6IDYwLCB3ZWlnaHQ6IDEyMCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIz
LTc3MzMiLCB2YWx1ZTogeyBuYW1lOiAiQW5uIiwgaGVpZ2h0OiA1Miwgd2VpZ2h0OiAxMTAgfSB9
LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzM0IiwgdmFsdWU6IHsgbmFtZTogIlJvbiIsIGhl
aWdodDogNzMsIHdlaWdodDogMTgwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNSIs
IHZhbHVlOiB7IG5hbWU6ICJTdWUiLCBoZWlnaHQ6IDU4LCB3ZWlnaHQ6IDEzMCB9IH0sCisgICAg
ICAgIHsga2V5OiAiMjM3LTIzLTc3MzYiLCB2YWx1ZTogeyBuYW1lOiAiSm9lIiwgaGVpZ2h0OiA2
NSwgd2VpZ2h0OiAxNTAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzM3IiwgdmFsdWU6
IHsgbmFtZTogIlBhdCIsIGhlaWdodDogNjUsIHdlaWdodDogMTAwIH0gfQorICAgIF07CisKKyAg
ICBpbmRleERhdGEgPSBbCisgICAgICAgIHsgbmFtZTogIm5hbWUiLCBrZXlQYXRoOiAibmFtZSIs
IG9wdGlvbnM6IHsgdW5pcXVlOiB0cnVlIH0gfSwKKyAgICAgICAgeyBuYW1lOiAiaGVpZ2h0Iiwg
a2V5UGF0aDogImhlaWdodCIsIG9wdGlvbnM6IHsgfSB9LAorICAgICAgICB7IG5hbWU6ICJ3ZWln
aHQiLCBrZXlQYXRoOiAid2VpZ2h0Iiwgb3B0aW9uczogeyB1bmlxdWU6IGZhbHNlIH0gfQorICAg
IF07CisKKyAgICBvYmplY3RTdG9yZURhdGFOYW1lU29ydCA9IFsKKyAgICAgICAgeyBrZXk6ICIy
MzctMjMtNzczMyIsIHZhbHVlOiB7IG5hbWU6ICJBbm4iLCBoZWlnaHQ6IDUyLCB3ZWlnaHQ6IDEx
MCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzIiLCB2YWx1ZTogeyBuYW1lOiAiQm9i
IiwgaGVpZ2h0OiA2MCwgd2VpZ2h0OiAxMjAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03
NzM2IiwgdmFsdWU6IHsgbmFtZTogIkpvZSIsIGhlaWdodDogNjUsIHdlaWdodDogMTUwIH0gfSwK
KyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNyIsIHZhbHVlOiB7IG5hbWU6ICJQYXQiLCBoZWln
aHQ6IDY1LCB3ZWlnaHQ6IDEwMCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzQiLCB2
YWx1ZTogeyBuYW1lOiAiUm9uIiwgaGVpZ2h0OiA3Mywgd2VpZ2h0OiAxODAgfSB9LAorICAgICAg
ICB7IGtleTogIjIzNy0yMy03NzM1IiwgdmFsdWU6IHsgbmFtZTogIlN1ZSIsIGhlaWdodDogNTgs
IHdlaWdodDogMTMwIH0gfQorICAgIF07CisKKyAgICBvYmplY3RTdG9yZURhdGFXZWlnaHRTb3J0
ID0gWworICAgICAgICB7IGtleTogIjIzNy0yMy03NzM3IiwgdmFsdWU6IHsgbmFtZTogIlBhdCIs
IGhlaWdodDogNjUsIHdlaWdodDogMTAwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzcz
MyIsIHZhbHVlOiB7IG5hbWU6ICJBbm4iLCBoZWlnaHQ6IDUyLCB3ZWlnaHQ6IDExMCB9IH0sCisg
ICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzIiLCB2YWx1ZTogeyBuYW1lOiAiQm9iIiwgaGVpZ2h0
OiA2MCwgd2VpZ2h0OiAxMjAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzM1IiwgdmFs
dWU6IHsgbmFtZTogIlN1ZSIsIGhlaWdodDogNTgsIHdlaWdodDogMTMwIH0gfSwKKyAgICAgICAg
eyBrZXk6ICIyMzctMjMtNzczNiIsIHZhbHVlOiB7IG5hbWU6ICJKb2UiLCBoZWlnaHQ6IDY1LCB3
ZWlnaHQ6IDE1MCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzQiLCB2YWx1ZTogeyBu
YW1lOiAiUm9uIiwgaGVpZ2h0OiA3Mywgd2VpZ2h0OiAxODAgfSB9CisgICAgXTsKKworICAgIG9i
amVjdFN0b3JlRGF0YUhlaWdodFNvcnQgPSBbCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzMi
LCB2YWx1ZTogeyBuYW1lOiAiQW5uIiwgaGVpZ2h0OiA1Miwgd2VpZ2h0OiAxMTAgfSB9LAorICAg
ICAgICB7IGtleTogIjIzNy0yMy03NzM1IiwgdmFsdWU6IHsgbmFtZTogIlN1ZSIsIGhlaWdodDog
NTgsIHdlaWdodDogMTMwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczMiIsIHZhbHVl
OiB7IG5hbWU6ICJCb2IiLCBoZWlnaHQ6IDYwLCB3ZWlnaHQ6IDEyMCB9IH0sCisgICAgICAgIHsg
a2V5OiAiMjM3LTIzLTc3MzYiLCB2YWx1ZTogeyBuYW1lOiAiSm9lIiwgaGVpZ2h0OiA2NSwgd2Vp
Z2h0OiAxNTAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzM3IiwgdmFsdWU6IHsgbmFt
ZTogIlBhdCIsIGhlaWdodDogNjUsIHdlaWdodDogMTAwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIy
MzctMjMtNzczNCIsIHZhbHVlOiB7IG5hbWU6ICJSb24iLCBoZWlnaHQ6IDczLCB3ZWlnaHQ6IDE4
MCB9IH0KKyAgICBdOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5z
ZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVs
YXRlT2JqZWN0U3RvcmU7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQorewor
ICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisgICAgdHJhbnMgPSBldmVudC50YXJnZXQu
cmVzdWx0OworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7Iik7CisKKyAgICBkZWJ1ZygiRmly
c3QsIGFkZCBhbGwgb3VyIGRhdGEgdG8gdGhlIG9iamVjdCBzdG9yZS4iKTsKKyAgICBhZGRlZERh
dGEgPSAwOworICAgIGZvciAoaSBpbiBvYmplY3RTdG9yZURhdGEpIHsKKyAgICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtp
XS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7Iik7CisgICAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgaWYgKCsrYWRkZWREYXRhID09IG9iamVjdFN0b3Jl
RGF0YS5sZW5ndGgpIHsKKyAgICAgICAgICBjcmVhdGVJbmRleGVzKCk7CisgICAgICAgIH0KKyAg
ICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUluZGV4ZXMoKQoreworICAgIGRlYnVn
KCJOb3cgY3JlYXRlIHRoZSBpbmRleGVzLiIpOworICAgIGZvciAoaSBpbiBpbmRleERhdGEpIHsK
KyAgICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KGluZGV4RGF0YVtpXS5u
YW1lLCBpbmRleERhdGFbaV0ua2V5UGF0aCwgaW5kZXhEYXRhW2ldLm9wdGlvbnMpOyIpOworICAg
IH0KKyAgICBzaG91bGRCZSgib2JqZWN0U3RvcmUuaW5kZXhOYW1lcy5sZW5ndGgiLCAiaW5kZXhE
YXRhLmxlbmd0aCIpOworICAgIHRyYW5zLm9uY29tcGxldGUgPSBzZXRWZXJzaW9uQ29tcGxldGU7
Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb25Db21wbGV0ZSgpCit7CisgICAgb2JqZWN0U3RvcmUg
PSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFt
ZSkub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKTsiKTsKKworICAgIC8vIENoZWNrIGdsb2Jh
bCBwcm9wZXJ0aWVzIHRvIG1ha2Ugc3VyZSB0aGV5IGFyZSBjb3JyZWN0LgorICAgIHNob3VsZEJl
KCJvYmplY3RTdG9yZS5pbmRleE5hbWVzLmxlbmd0aCIsICJpbmRleERhdGEubGVuZ3RoIik7Cisg
ICAgZm9yIChpIGluIGluZGV4RGF0YSkgeworICAgICAgICBmb3VuZCA9IGZhbHNlOworICAgICAg
ICBmb3IgKGogPSAwOyBqIDwgb2JqZWN0U3RvcmUuaW5kZXhOYW1lcy5sZW5ndGg7IGorKykgewor
ICAgICAgICAgICAgaWYgKG9iamVjdFN0b3JlLmluZGV4TmFtZXMuaXRlbShqKSA9PSBpbmRleERh
dGFbaV0ubmFtZSkgeworICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBzaG91bGRCZVRy
dWUoImZvdW5kIik7CisgICAgICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBvYmplY3RT
dG9yZS5pbmRleChpbmRleERhdGFbaV0ubmFtZSk7Iik7CisgICAgICAgIHNob3VsZEJlKCJpbmRl
eC5uYW1lIiwgImluZGV4RGF0YVtpXS5uYW1lIik7CisgICAgICAgIHNob3VsZEJlKCJpbmRleC5r
ZXlQYXRoIiwgImluZGV4RGF0YVtpXS5rZXlQYXRoIik7CisgICAgICAgIHNob3VsZEJlKCJpbmRl
eC51bmlxdWUiLCBpbmRleERhdGFbaV0ub3B0aW9ucy51bmlxdWUgPyAidHJ1ZSIgOiAiZmFsc2Ui
KTsKKyAgICB9CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0
b3JlLmluZGV4KCduYW1lJykuZ2V0S2V5KCdCb2InKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNoZWNr
R2V0S2V5OworfQorCitmdW5jdGlvbiBjaGVja0dldEtleSgpCit7CisgICAgc2hvdWxkQmUoImV2
ZW50LnRhcmdldC5yZXN1bHQiLCAiJzIzNy0yMy03NzMyJyIpOworCisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScpLmdldCgnQm9iJyk7
Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBjaGVja0dldDsKK30KKworZnVuY3Rpb24gY2hlY2tHZXQoKQor
eworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0Lm5hbWUiLCAiJ0JvYiciKTsKKyAg
ICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5oZWlnaHQiLCAiNjAiKTsKKyAgICBzaG91
bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC53ZWlnaHQiLCAiMTIwIik7CisKKyAgICBrZXlJbmRl
eCA9IDA7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3Jl
LmluZGV4KCduYW1lJykub3BlbktleUN1cnNvcigpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24gKGV2ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50
LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52
YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAi
b2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOworICAgICAgICAgICAgc2hv
dWxkQmVGYWxzZSgiJ3ZhbHVlJyBpbiBjdXJzb3IiKTsKKworICAgICAgICAgICAgZXZhbEFuZExv
ZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
a2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Cisg
ICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRh
TmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOworICAgICAgICAgICAgc2hvdWxkQmVGYWxzZSgiJ3Zh
bHVlJyBpbiBjdXJzb3IiKTsKKworICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsi
KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBzaG91bGRCZSgia2V5SW5k
ZXgiLCAib2JqZWN0U3RvcmVEYXRhLmxlbmd0aCIpOworICAgICAgICAgIHRlc3RHcm91cDMoKTsK
KyAgICAgICAgfQorICAgIH07Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDMoKQoreworICAgIGtl
eUluZGV4ID0gMDsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0
U3RvcmUuaW5kZXgoJ3dlaWdodCcpLm9wZW5LZXlDdXJzb3IobnVsbCwgSURCQ3Vyc29yLk5FWFQp
OyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgIGN1cnNvciA9
IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICAgIGlm
IChjdXJzb3IpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0
b3JlRGF0YVdlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLndlaWdodCIpOworICAgICAgICAgICAg
c2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YVdlaWdodFNvcnRb
a2V5SW5kZXhdLmtleSIpOworCisgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGlu
dWUoKTsiKTsKKworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3Rv
cmVEYXRhV2VpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7CisgICAgICAgICAgICBz
aG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhV2VpZ2h0U29ydFtr
ZXlJbmRleF0ua2V5Iik7CisKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7
CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzaG91bGRCZSgia2V5SW5k
ZXgiLCAib2JqZWN0U3RvcmVEYXRhLmxlbmd0aCIpOworICAgICAgICAgICAgdGVzdEdyb3VwNCgp
OworICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0R3JvdXA0KCkKK3sKKy8qIHRo
aXMgd2FzIHNwbGl0IG91dCBpbnRvIGEgc2VwYXJhdGUgdGVzdAorICAgIGRlYnVnKCJDaGVjayB0
aGF0IHRoZSBuYW1lIGluZGV4IGVuZm9yY2VzIGl0cyB1bmlxdWUgY29uc3RyYWludC4iKTsKKyAg
ICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIudHJhbnNhY3Rpb24o
b2JqZWN0U3RvcmVOYW1lLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKS5vYmplY3RTdG9yZShv
YmplY3RTdG9yZU5hbWUpOyIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIm9iamVjdFN0
b3JlLmFkZCh7IG5hbWU6ICdCb2InLCBoZWlnaHQ6IDYyLCB3ZWlnaHQ6IDE3MCB9LCAnMjM3LTIz
LTc3MzgnKTsiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uQ09OU1RSQUlOVF9FUlIiKTsKKyovCisK
KyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIudHJhbnNhY3Rp
b24ob2JqZWN0U3RvcmVOYW1lKS5vYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpOyIpOworICAg
IGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSBvYmplY3RTdG9yZURhdGFOYW1lU29y
dC5sZW5ndGggLSAxOyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2Jq
ZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuS2V5Q3Vyc29yKG51bGwsIElEQkN1cnNvci5QUkVW
KTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgeworICAgICAgICBjdXJzb3Ig
PSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgICAgICBp
ZiAoY3Vyc29yKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RT
dG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAgICAgICAgc2hv
dWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUlu
ZGV4XS5rZXkiKTsKKworICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7
Iik7CisKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0
YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgi
Y3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtl
eSIpOworCisgICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleC0tOyIpOworICAgICAgICB9
CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIi0xIik7
CisgICAgICAgICAgICB0ZXN0R3JvdXA1KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0
aW9uIHRlc3RHcm91cDUoKQoreworICAgIGtleUluZGV4ID0gMTsKKyAgICBrZXlSYW5nZSA9IGV2
YWxBbmRMb2coImtleVJhbmdlID0gSURCS2V5UmFuZ2UuYm91bmQoJ0JvYicsICdSb24nKTsiKTsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCdu
YW1lJykub3BlbktleUN1cnNvcihrZXlSYW5nZSk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlv
biAoZXZlbnQpIHsKKyAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICAgICAgc2hv
dWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZh
bHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJv
YmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7CisgICAgICAgICAgICBldmFs
QW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImtl
eUluZGV4Kys7Iik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzaG91
bGRCZSgia2V5SW5kZXgiLCAiNSIpOworICAgICAgICAgICAgdGVzdEdyb3VwNigpOworICAgICAg
ICB9CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0R3JvdXA2KCkKK3sKKyAgICBrZXlJbmRleCA9
IGV2YWxBbmRMb2coImtleUluZGV4ID0gMjsiKTsKKyAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2co
ImtleVJhbmdlID0gSURCS2V5UmFuZ2UuYm91bmQoJ0JvYicsICdSb24nLCB0cnVlKTsiKTsKKwor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25h
bWUnKS5vcGVuS2V5Q3Vyc29yKGtleVJhbmdlKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
IChldmVudCkgeworICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50
YXJnZXQucmVzdWx0OyIpOworICAgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFs
dWUubmFtZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9i
amVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsKKworICAgICAgICAgICAgZXZh
bEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJr
ZXlJbmRleCsrOyIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc2hv
dWxkQmUoImtleUluZGV4IiwgIjUiKTsKKyAgICAgICAgICAgIHRlc3RHcm91cDcoKTsKKyAgICAg
ICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gdGVzdEdyb3VwNygpCit7CisgICAga2V5SW5kZXgg
PSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDE7Iik7CisgICAga2V5UmFuZ2UgPSBldmFsQW5kTG9n
KCJrZXlSYW5nZSA9IElEQktleVJhbmdlLmJvdW5kKCdCb2InLCAnUm9uJywgZmFsc2UsIHRydWUp
OyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5p
bmRleCgnbmFtZScpLm9wZW5LZXlDdXJzb3Ioa2V5UmFuZ2UpOyIpOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9
IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUlu
ZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlL
ZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOworCisgICAgICAg
ICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKKyAgICAgICAgICAgIGV2YWxB
bmRMb2coImtleUluZGV4Kys7Iik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNCIpOworICAgICAgICAgICAgdGVzdEdyb3VwOCgp
OworICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0R3JvdXA4KCkKK3sKKyAgICBr
ZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gMjsiKTsKKyAgICBrZXlSYW5nZSA9IGV2
YWxBbmRMb2coImtleVJhbmdlID0gSURCS2V5UmFuZ2UuYm91bmQoJ0JvYicsICdSb24nLCB0cnVl
LCB0cnVlKTsiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0
U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuS2V5Q3Vyc29yKGtleVJhbmdlKTsiKTsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGZ1bmN0aW9uIChldmVudCkgeworICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJj
dXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgICAgICBpZiAoY3Vyc29yKSB7Cisg
ICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29y
dFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5w
cmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsKKwor
ICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisgICAgICAgICAg
ICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOworICAgICAgICB9CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIjQiKTsKKyAgICAgICAgICAgIHRlc3RH
cm91cDkoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gdGVzdEdyb3VwOSgpCit7
CisgICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDE7Iik7CisgICAga2V5UmFu
Z2UgPSBldmFsQW5kTG9nKCJrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQoJ0JvYicp
OyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5p
bmRleCgnbmFtZScpLm9wZW5LZXlDdXJzb3Ioa2V5UmFuZ2UpOyIpOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9
IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUlu
ZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlL
ZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOworCisgICAgICAg
ICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKKyAgICAgICAgICAgIGV2YWxB
bmRMb2coImtleUluZGV4Kys7Iik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnQubGVuZ3Ro
Iik7CisgICAgICAgICAgICB0ZXN0R3JvdXAxMCgpOworICAgICAgICB9CisgICAgfQorfQorCitm
dW5jdGlvbiB0ZXN0R3JvdXAxMCgpCit7CisgICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJ
bmRleCA9IDI7Iik7CisgICAga2V5UmFuZ2UgPSBldmFsQW5kTG9nKCJrZXlSYW5nZSA9IElEQktl
eVJhbmdlLmxvd2VyQm91bmQoJ0JvYicsIHRydWUpOyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9wZW5LZXlDdXJzb3Io
a2V5UmFuZ2UpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAg
IGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Cisg
ICAgICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5Iiwg
Im9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAg
ICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNv
cnRba2V5SW5kZXhdLmtleSIpOworCisgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29u
dGludWUoKTsiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7CisgICAg
ICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAi
b2JqZWN0U3RvcmVEYXRhTmFtZVNvcnQubGVuZ3RoIik7CisgICAgICAgICAgICB0ZXN0R3JvdXAx
MSgpOworICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0R3JvdXAxMSgpCit7Cisg
ICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDA7Iik7CisgICAga2V5UmFuZ2Ug
PSBldmFsQW5kTG9nKCJrZXlSYW5nZSA9IElEQktleVJhbmdlLnVwcGVyQm91bmQoJ0pvZScpOyIp
OworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRl
eCgnbmFtZScpLm9wZW5LZXlDdXJzb3Ioa2V5UmFuZ2UpOyIpOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVu
Y3Rpb24gKGV2ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2
ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgICAg
IHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4
XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXki
LCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOworCisgICAgICAgICAg
ICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKKyAgICAgICAgICAgIGV2YWxBbmRM
b2coImtleUluZGV4Kys7Iik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
c2hvdWxkQmUoImtleUluZGV4IiwgIjMiKTsKKyAgICAgICAgICB0ZXN0R3JvdXAxMigpOworICAg
ICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0R3JvdXAxMigpCit7CisgICAga2V5SW5k
ZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDA7Iik7CisgICAga2V5UmFuZ2UgPSBldmFsQW5k
TG9nKCJrZXlSYW5nZSA9IElEQktleVJhbmdlLnVwcGVyQm91bmQoJ0pvZScsIHRydWUpOyIpOwor
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgn
bmFtZScpLm9wZW5LZXlDdXJzb3Ioa2V5UmFuZ2UpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24gKGV2ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50
LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52
YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAi
b2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOworCisgICAgICAgICAgICBl
dmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2co
ImtleUluZGV4Kys7Iik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBz
aG91bGRCZSgia2V5SW5kZXgiLCAiMiIpOworICAgICAgICAgICAgdGVzdEdyb3VwMTMoKTsKKyAg
ICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gdGVzdEdyb3VwMTMoKQoreworICAgIGtleUlu
ZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAzOyIpOworICAgIGtleVJhbmdlID0gZXZhbEFu
ZExvZygia2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5vbmx5KCdQYXQnKTsiKTsKKworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVu
S2V5Q3Vyc29yKGtleVJhbmdlKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkg
eworICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVz
dWx0OyIpOworICAgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vy
c29yLmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIp
OworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3Jl
RGF0YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsKKworICAgICAgICAgICAgZXZhbEFuZExvZygi
Y3Vyc29yLmNvbnRpbnVlKCk7Iik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsr
OyIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc2hvdWxkQmUoImtl
eUluZGV4IiwgIjQiKTsKKyAgICAgICAgICAgIHRlc3RHcm91cDE0KCk7CisgICAgICAgIH0KKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDE0KCkKK3sKKyAgICBrZXlJbmRleCA9IGV2YWxB
bmRMb2coImtleUluZGV4ID0gMDsiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuQ3Vyc29yKCk7Iik7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygi
Y3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAgICAgaWYgKGN1cnNvcikgewor
ICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNv
cnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
cHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7Cisg
ICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRh
TmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJj
dXJzb3IudmFsdWUuaGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52
YWx1ZS5oZWlnaHQiKTsKKyAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUp
IHsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIsICJvYmpl
Y3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOworCisg
ICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29y
dFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5w
cmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsKKyAg
ICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUubmFtZSIsICJvYmplY3RTdG9yZURhdGFO
YW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1
cnNvci52YWx1ZS5oZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZh
bHVlLmhlaWdodCIpOworICAgICAgICAgICAgaWYgKCd3ZWlnaHQnIGluIGN1cnNvci52YWx1ZSkg
eworICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVj
dFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKKyAgICAgICAgfQor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJvYmplY3RT
dG9yZURhdGFOYW1lU29ydC5sZW5ndGgiKTsKKyAgICAgICAgICAgIHRlc3RHcm91cDE1KCk7Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDE1KCkKK3sKKyAgICBrZXlJ
bmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gb2JqZWN0U3RvcmVEYXRhTmFtZVNvcnQubGVu
Z3RoIC0gMTsiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0
U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuQ3Vyc29yKG51bGwsIElEQkN1cnNvci5QUkVWKTsiKTsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgeworICAgICAgICBjdXJzb3IgPSBldmFs
QW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgICAgICBpZiAoY3Vy
c29yKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURh
dGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS5r
ZXkiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUubmFtZSIsICJvYmplY3RT
dG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAgICAgICAgc2hv
dWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5
SW5kZXhdLnZhbHVlLmhlaWdodCIpOworICAgICAgICAgICAgaWYgKCd3ZWlnaHQnIGluIGN1cnNv
ci52YWx1ZSkgeworICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0
IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7
Iik7CisKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0
YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgi
Y3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtl
eSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0
b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJ
bmRleF0udmFsdWUuaGVpZ2h0Iik7CisgICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29y
LnZhbHVlKSB7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS53ZWlnaHQi
LCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLndlaWdodCIpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBrZXlJbmRleC0tOworICAgICAgICB9CisgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIi0xIik7CisgICAgICAg
ICAgICB0ZXN0R3JvdXAxNigpOworICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0
R3JvdXAxNigpCit7CisgICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDE7Iik7
CisgICAga2V5UmFuZ2UgPSBldmFsQW5kTG9nKCJrZXlSYW5nZSA9IElEQktleVJhbmdlLmJvdW5k
KCdCb2InLCAnUm9uJyk7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IG9iamVjdFN0b3JlLmluZGV4KCduYW1lJykub3BlbkN1cnNvcihrZXlSYW5nZSk7Iik7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgY3Vyc29yID0gZXZhbEFuZExv
ZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAgICAgaWYgKGN1cnNvcikg
eworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFt
ZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJz
b3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7
CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVE
YXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3IudmFsdWUuaGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4
XS52YWx1ZS5oZWlnaHQiKTsKKyAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFs
dWUpIHsKKyAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0Iiwg
Im9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7
CisKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5h
bWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vy
c29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIp
OworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3Jl
RGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRl
eF0udmFsdWUuaGVpZ2h0Iik7CisgICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZh
bHVlKSB7CisgICAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIs
ICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7CisgICAg
ICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAi
NSIpOworICAgICAgICAgICAgdGVzdEdyb3VwMTcoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwor
ZnVuY3Rpb24gdGVzdEdyb3VwMTcoKQoreworICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5
SW5kZXggPSAyOyIpOworICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJL
ZXlSYW5nZS5ib3VuZCgnQm9iJywgJ1JvbicsIHRydWUpOyIpOworCisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9wZW5DdXJzb3Io
a2V5UmFuZ2UpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAg
IGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Cisg
ICAgICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5Iiwg
Im9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAg
ICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNv
cnRba2V5SW5kZXhdLmtleSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5u
YW1lIiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Cisg
ICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURh
dGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7CisgICAgICAgICAgICBpZiAoJ3dl
aWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7CisgICAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vy
c29yLnZhbHVlLndlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFs
dWUud2VpZ2h0Iik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1
cnNvci5jb250aW51ZSgpOyIpOworCisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIs
ICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAg
ICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVT
b3J0W2tleUluZGV4XS5rZXkiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUu
bmFtZSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOwor
ICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQiLCAib2JqZWN0U3RvcmVE
YXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOworICAgICAgICAgICAgaWYgKCd3
ZWlnaHQnIGluIGN1cnNvci52YWx1ZSkgeworICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoImN1
cnNvci52YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZh
bHVlLndlaWdodCIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBldmFsQW5kTG9nKCJr
ZXlJbmRleCsrOyIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc2hv
dWxkQmUoImtleUluZGV4IiwgIjUiKTsKKyAgICAgICAgICAgIHRlc3RHcm91cDE4KCk7CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDE4KCkKK3sKKyAgICBrZXlJbmRl
eCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gMTsiKTsKKyAgICBrZXlSYW5nZSA9IGV2YWxBbmRM
b2coImtleVJhbmdlID0gSURCS2V5UmFuZ2UuYm91bmQoJ0JvYicsICdSb24nLCBmYWxzZSwgdHJ1
ZSk7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3Jl
LmluZGV4KCduYW1lJykub3BlbkN1cnNvcihrZXlSYW5nZSk7Iik7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICAg
ICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5k
ZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtl
eSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7CisgICAgICAgICAg
ICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRb
a2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFs
dWUuaGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWln
aHQiKTsKKyAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKKyAgICAg
ICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3Jl
RGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisKKyAgICAgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUlu
ZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlL
ZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOworICAgICAgICAg
ICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0
W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZh
bHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUuaGVp
Z2h0Iik7CisgICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7CisgICAg
ICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIsICJvYmplY3RTdG9y
ZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7CisgICAgICAgIH0KKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNCIpOworICAgICAg
ICAgICAgdGVzdEdyb3VwMTkoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gdGVz
dEdyb3VwMTkoKQoreworICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAyOyIp
OworICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5ib3Vu
ZCgnQm9iJywgJ1JvbicsIHRydWUsIHRydWUpOyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9wZW5DdXJzb3Ioa2V5UmFu
Z2UpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgIGN1cnNv
ciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICAg
IGlmIChjdXJzb3IpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVj
dFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBz
aG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5
SW5kZXhdLmtleSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwg
Im9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAg
ICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1l
U29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7CisgICAgICAgICAgICBpZiAoJ3dlaWdodCcg
aW4gY3Vyc29yLnZhbHVlKSB7CisgICAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZh
bHVlLndlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUud2Vp
Z2h0Iik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5j
b250aW51ZSgpOyIpOworCisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmpl
Y3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAgICAgICAg
c2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tl
eUluZGV4XS5rZXkiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUubmFtZSIs
ICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAg
ICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFt
ZVNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOworICAgICAgICAgICAgaWYgKCd3ZWlnaHQn
IGluIGN1cnNvci52YWx1ZSkgeworICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52
YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLndl
aWdodCIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRl
eCsrOyIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc2hvdWxkQmUo
ImtleUluZGV4IiwgIjQiKTsKKyAgICAgICAgICAgIHRlc3RHcm91cDIwKCk7CisgICAgICAgIH0K
KyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDIwKCkKK3sKKyAgICBrZXlJbmRleCA9IGV2
YWxBbmRMb2coImtleUluZGV4ID0gNDsiKTsKKyAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtl
eVJhbmdlID0gSURCS2V5UmFuZ2UuYm91bmQoJ0JvYicsICdSb24nKTsiKTsKKworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVu
Q3Vyc29yKGtleVJhbmdlLCBJREJDdXJzb3IuUFJFVik7Iik7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbiAoZXZlbnQpIHsKKyAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZl
bnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICAgICAg
c2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhd
LnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIs
ICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7CisgICAgICAgICAgICBz
aG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5
SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUu
aGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQi
KTsKKyAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKKyAgICAgICAg
ICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0
YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisKKyAgICAgICAgICAg
IHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4
XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXki
LCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOworICAgICAgICAgICAg
c2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tl
eUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVl
LmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0
Iik7CisgICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7CisgICAgICAg
ICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIsICJvYmplY3RTdG9yZURh
dGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4LS07Iik7CisgICAgICAgIH0KKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiMCIpOworICAgICAgICAg
ICAgdGVzdEdyb3VwMjEoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gdGVzdEdy
b3VwMjEoKQoreworICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAzOyIpOwor
ICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5vbmx5KDY1
KTsiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
aW5kZXgoJ2hlaWdodCcpLm9wZW5LZXlDdXJzb3Ioa2V5UmFuZ2UsIElEQkN1cnNvci5ORVhUKTsi
KTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgeworICAgICAgICBjdXJzb3IgPSBl
dmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgICAgICBpZiAo
Y3Vyc29yKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9y
ZURhdGFIZWlnaHRTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKKyAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tl
eUluZGV4XS5rZXkiKTsKKworICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVl
KCk7Iik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOworICAgICAgICB9
CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIjUiKTsK
KyAgICAgICAgICAgIHRlc3RHcm91cDIyKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0
aW9uIHRlc3RHcm91cDIyKCkKK3sKKyAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4
ID0gMzsiKTsKKyAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtleVJhbmdlID0gSURCS2V5UmFu
Z2Uub25seSg2NSk7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9i
amVjdFN0b3JlLmluZGV4KCdoZWlnaHQnKS5vcGVuS2V5Q3Vyc29yKGtleVJhbmdlLCBJREJDdXJz
b3IuTkVYVF9OT19EVVBMSUNBVEUpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50
KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQ7Iik7CisgICAgICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJj
dXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLmhl
aWdodCIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVj
dFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLmtleSIpOworCisgICAgICAgICAgICBldmFs
QW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImtl
eUluZGV4Kys7Iik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzaG91
bGRCZSgia2V5SW5kZXgiLCAiNCIpOworICAgICAgICAgICAgdGVzdEdyb3VwMjQoKTsKKyAgICAg
ICAgfQorICAgIH0KK30KKworLyogdGhpcyB3YXMgc3BsaXQgb3V0IGludG8gYSBzZXBhcmF0ZSB0
ZXN0CitmdW5jdGlvbiB0ZXN0R3JvdXAyMygpCit7CisgICAga2V5SW5kZXggPSBldmFsQW5kTG9n
KCJrZXlJbmRleCA9IDU7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IG9iamVjdFN0b3JlLmluZGV4KCdoZWlnaHQnKS5vcGVuS2V5Q3Vyc29yKG51bGwsIElEQkN1cnNv
ci5QUkVWX05PX0RVUExJQ0FURSk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQp
IHsKKyAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJl
c3VsdDsiKTsKKyAgICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICAgICAgc2hvdWxkQmUoImN1
cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUuaGVp
Z2h0Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0
U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0ua2V5Iik7CisKKyAgICAgICAgICAgIGV2YWxB
bmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOworICAgICAgICAgICAgaWYgKGtleUluZGV4ID09
IDUpIHsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleC0tOyIpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgtLTsiKTsKKyAgICAgICAg
fQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICItMSIp
OworICAgICAgICAgICAgdGVzdEdyb3VwMjQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKyovCisK
K2Z1bmN0aW9uIHRlc3RHcm91cDI0KCkKK3sKKyAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtl
eUluZGV4ID0gMzsiKTsKKyAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtleVJhbmdlID0gSURC
S2V5UmFuZ2Uub25seSg2NSk7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IG9iamVjdFN0b3JlLmluZGV4KCdoZWlnaHQnKS5vcGVuQ3Vyc29yKGtleVJhbmdlLCBJREJD
dXJzb3IuTkVYVCk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAg
ICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsK
KyAgICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXki
LCAib2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7Cisg
ICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRh
SGVpZ2h0U29ydFtrZXlJbmRleF0ua2V5Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29y
LnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUu
bmFtZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQiLCAib2Jq
ZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7CisgICAgICAg
ICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7CisgICAgICAgICAgICAgICAgc2hv
dWxkQmUoImN1cnNvci52YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtr
ZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGV2
YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOworICAgICAgICAgICAgZXZhbEFuZExvZygi
a2V5SW5kZXgrKzsiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNo
b3VsZEJlKCJrZXlJbmRleCIsICI1Iik7CisgICAgICAgICAgICB0ZXN0R3JvdXAyNSgpOworICAg
ICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0R3JvdXAyNSgpCit7CisgICAga2V5SW5k
ZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDM7Iik7CisgICAga2V5UmFuZ2UgPSBldmFsQW5k
TG9nKCJrZXlSYW5nZSA9IElEQktleVJhbmdlLm9ubHkoNjUpOyIpOworCisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnaGVpZ2h0Jykub3BlbkN1
cnNvcihrZXlSYW5nZSwgSURCQ3Vyc29yLk5FWFRfTk9fRFVQTElDQVRFKTsiKTsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGZ1bmN0aW9uIChldmVudCkgeworICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJj
dXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgICAgICBpZiAoY3Vyc29yKSB7Cisg
ICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFIZWlnaHRT
b3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJz
b3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tleUluZGV4XS5rZXki
KTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUubmFtZSIsICJvYmplY3RTdG9y
ZURhdGFIZWlnaHRTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tl
eUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKKyAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJz
b3IudmFsdWUpIHsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdo
dCIsICJvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVl
KCk7Iik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOworICAgICAgICB9
CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIjQiKTsK
KyAgICAgICAgICAgIHRlc3RHcm91cDI3KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8qIHRo
aXMgd2FzIHNwbGl0IG91dCBpbnRvIGEgc2VwYXJhdGUgdGVzdAorZnVuY3Rpb24gdGVzdEdyb3Vw
MjYoKQoreworICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSA1OyIpOworCisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnaGVp
Z2h0Jykub3BlbkN1cnNvcihudWxsLCBJREJDdXJzb3IuUFJFVl9OT19EVVBMSUNBVEUpOyIpOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxB
bmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICAgIGlmIChjdXJz
b3IpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0
YUhlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOworICAgICAgICAgICAgc2hvdWxk
QmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5k
ZXhdLmtleSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9i
amVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YUhlaWdo
dFNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOworICAgICAgICAgICAgaWYgKCd3ZWlnaHQn
IGluIGN1cnNvci52YWx1ZSkgeworICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFs
dWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLndl
aWdodCIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3Iu
Y29udGludWUoKTsiKTsKKyAgICAgICAgICAgIGlmIChrZXlJbmRleCA9PSA1KSB7CisgICAgICAg
ICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgtLTsiKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4LS07Iik7CisgICAgICAgIH0KKyAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiLTEiKTsKKyAgICAgICAgICAg
IHRlc3RHcm91cDI3KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisqLworCitmdW5jdGlvbiB0ZXN0
R3JvdXAyNygpCit7CisgICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDA7Iik7
CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4
KCduYW1lJykub3BlbktleUN1cnNvcigpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2
ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQ7Iik7CisgICAgICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5u
YW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0
U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOworCisgICAgICAgICAgICBuZXh0S2V5
ID0gZXZhbEFuZExvZygibmV4dEtleSA9ICFrZXlJbmRleCA/ICdQYXQnIDogdW5kZWZpbmVkOyIp
OworICAgICAgICAgICAgaWYgKG5leHRLZXkpIHsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9n
KCJjdXJzb3IuY29udGludWUobmV4dEtleSk7Iik7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURh
dGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS5r
ZXkiKTsKKworICAgICAgICAgICAgaWYgKCFrZXlJbmRleCkgeworICAgICAgICAgICAgICAgIGtl
eUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAzOyIpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsi
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IHNob3VsZEJlKCJrZXlJbmRleCIsICJvYmplY3RTdG9yZURhdGEubGVuZ3RoIik7CisgICAgICAg
ICAgICB0ZXN0R3JvdXAyOCgpOworICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0
R3JvdXAyOCgpCit7CisgICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDA7Iik7
CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4
KCduYW1lJykub3BlbktleUN1cnNvcigpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2
ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQ7Iik7CisgICAgICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5u
YW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0
U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOworCisgICAgICAgICAgICBuZXh0S2V5
ID0gZXZhbEFuZExvZygibmV4dEtleSA9ICFrZXlJbmRleCA/ICdGbG8nIDogdW5kZWZpbmVkOyIp
OworICAgICAgICAgICAgaWYgKG5leHRLZXkpIHsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9n
KCJjdXJzb3IuY29udGludWUobmV4dEtleSk7Iik7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURh
dGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS5r
ZXkiKTsKKworICAgICAgICAgICAga2V5SW5kZXggKz0ga2V5SW5kZXggPyAxIDogMjsKKyAgICAg
ICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJv
YmplY3RTdG9yZURhdGEubGVuZ3RoIik7CisgICAgICAgICAgICB0ZXN0R3JvdXAyOSgpOworICAg
ICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0R3JvdXAyOSgpCit7CisgICAga2V5SW5k
ZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDA7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCduYW1lJykub3BlbkN1cnNvcigpOyIp
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2
YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICAgIGlmIChj
dXJzb3IpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3Jl
RGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhd
LmtleSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVj
dFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBz
aG91bGRCZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtr
ZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7CisgICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vy
c29yLnZhbHVlKSB7CisgICAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndl
aWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG5leHRLZXkgPSBldmFsQW5kTG9nKCJuZXh0
S2V5ID0gIWtleUluZGV4ID8gJ1BhdCcgOiB1bmRlZmluZWQ7Iik7CisgICAgICAgICAgICBpZiAo
bmV4dEtleSkgeworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZShu
ZXh0S2V5KTsiKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZXZhbEFu
ZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4
XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXki
LCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOworICAgICAgICAgICAg
c2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tl
eUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVl
LmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0
Iik7CisgICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7CisgICAgICAg
ICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIsICJvYmplY3RTdG9yZURh
dGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGlmICgha2V5SW5kZXgpIHsKKyAgICAgICAgICAgICAgICBrZXlJbmRleCA9IGV2
YWxBbmRMb2coImtleUluZGV4ID0gMzsiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzaG91bGRCZSgi
a2V5SW5kZXgiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnQubGVuZ3RoIik7CisgICAgICAgICAg
ICB0ZXN0R3JvdXAzMCgpOworICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0R3Jv
dXAzMCgpCit7CisgICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDA7Iik7CisK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCdu
YW1lJykub3BlbkN1cnNvcigpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7
CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1
bHQ7Iik7CisgICAgICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJz
b3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7
CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVE
YXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNv
ci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5u
YW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmpl
Y3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7CisgICAgICAgICAg
ICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7CisgICAgICAgICAgICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJ
bmRleF0udmFsdWUud2VpZ2h0Iik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG5leHRL
ZXkgPSBldmFsQW5kTG9nKCJuZXh0S2V5ID0gIWtleUluZGV4ID8gJ0ZsbycgOiB1bmRlZmluZWQ7
Iik7CisgICAgICAgICAgICBpZiAobmV4dEtleSkgeworICAgICAgICAgICAgICAgIGV2YWxBbmRM
b2coImN1cnNvci5jb250aW51ZShuZXh0S2V5KTsiKTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3Jl
RGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhd
LmtleSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVj
dFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBz
aG91bGRCZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtr
ZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7CisgICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vy
c29yLnZhbHVlKSB7CisgICAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndl
aWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGtleUluZGV4ICs9IGtleUluZGV4ID8gMSA6
IDI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzaG91bGRCZSgia2V5
SW5kZXgiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnQubGVuZ3RoIik7CisgICAgICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordGVzdCgpOwpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvcmVzb3VyY2VzL2tleS1yZXF1aXJlbWVudHMtZGVsZXRlLW51bGwta2V5Lmpz
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMva2V5LXJl
cXVpcmVtZW50cy1kZWxldGUtbnVsbC1rZXkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjlkZGE5MmMyMzExYmM3
MzhlNDA5ZjMxYjUwMDhjOTE1MGJmNWQ4YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2tleS1yZXF1aXJlbWVudHMtZGVs
ZXRlLW51bGwta2V5LmpzCkBAIC0wLDAgKzEsNDIgQEAKKy8vIG9yaWdpbmFsIHRlc3Q6CisvLyBo
dHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVz
dC90ZXN0X2tleV9yZXF1aXJlbWVudHMuaHRtbAorLy8gbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0
OgorLy8gIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
Ky8vICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAi
CisKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8u
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlw
dHMoJy4uLy4uL3Jlc291cmNlcy9zaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3Qg
SW5kZXhlZERCJ3MgYmVoYXZpb3IgZGVsZXRpbmcgZW50cnkgd2l0aCBubyBrZXkiKTsKKworZnVu
Y3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUg
PSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0
YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBk
ZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0
VmVyc2lvbigndmVyc2lvbiAxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0
YWJhc2VBbmRDcmVhdGVPYmplY3RTdG9yZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZUFuZENyZWF0ZU9i
amVjdFN0b3JlKCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworICAgIG9iamVj
dFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgn
YmFyJyk7Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigib2JqZWN0U3RvcmUuZGVsZXRl
KG51bGwpOyIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworICAgIGZpbmlzaEpT
VGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMva2V5
LXJlcXVpcmVtZW50cy1pbmxpbmUtYW5kLXBhc3NlZC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2tleS1yZXF1aXJlbWVudHMtaW5saW5lLWFuZC1w
YXNzZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uM2IyNGVkMjFmNWUwMjA1MmVlMzA5NjdlNDI5MGNlNzYyZmM2
ZTY2YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
emlsbGEvcmVzb3VyY2VzL2tleS1yZXF1aXJlbWVudHMtaW5saW5lLWFuZC1wYXNzZWQuanMKQEAg
LTAsMCArMSw0NCBAQAorLy8gb3JpZ2luYWwgdGVzdDoKKy8vIGh0dHA6Ly9teHIubW96aWxsYS5v
cmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3Rfa2V5X3JlcXVpcmVt
ZW50cy5odG1sCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisvLyAiIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorLy8gICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKworaWYgKHRoaXMuaW1wb3J0
U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vcmVzb3VyY2Vz
L3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBiZWhhdmlv
ciBhZGRpbmcgaW5saW5lIGFuZCBwYXNzZWQga2V5IHNpbXVsdGFuZW91c2x5Iik7CisKK2Z1bmN0
aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0g
c2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFi
YXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVz
Y3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
b3BlblN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOworICAgIGRiID0g
ZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkK
K3sKKyAgICBkZWJ1ZygiY2xlYW5EYXRhYmFzZSgpOiIpOworICAgIGRlbGV0ZUFsbE9iamVjdFN0
b3JlcyhkYik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdiYXonLCB7IGtleVBhdGg6ICdpZCcgfSk7Iik7CisgICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigib2JqZWN0U3RvcmUuYWRkKHtpZDogNX0sIDUpOyIsICJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0
ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMva2V5LXJlcXVpcmVtZW50cy1w
dXQtbm8ta2V5LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNv
dXJjZXMva2V5LXJlcXVpcmVtZW50cy1wdXQtbm8ta2V5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhZjE0N2Qx
ZDU1ZjBlMTc5NWVhMjg0YjRiNzJmMTRhYzNjZjZlNWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9rZXktcmVxdWlyZW1l
bnRzLXB1dC1uby1rZXkuanMKQEAgLTAsMCArMSw0MiBAQAorLy8gb3JpZ2luYWwgdGVzdDoKKy8v
IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90
ZXN0L3Rlc3Rfa2V5X3JlcXVpcmVtZW50cy5odG1sCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRl
c3Q6CisvLyAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorLy8gICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
ICIKKworaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4u
Ly4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2Ny
aXB0cygnLi4vLi4vcmVzb3VyY2VzL3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVz
dCBJbmRleGVkREIncyBiZWhhdmlvciBwdXRpbmcgd2l0aG91dCBrZXkiKTsKKworZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxm
LmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2Ui
OworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlw
dGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVu
U3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lv
bignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBj
bGVhbkRhdGFiYXNlKCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworICAgIG9i
amVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9y
ZSgnYmFyJyk7Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigib2JqZWN0U3RvcmUucHV0
KHt9KTsiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKyAgICBmaW5pc2hKU1Rl
c3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2tleS1y
ZXF1aXJlbWVudHMtcHV0LW51bGwta2V5LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW96aWxsYS9yZXNvdXJjZXMva2V5LXJlcXVpcmVtZW50cy1wdXQtbnVsbC1rZXkuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZGFiNTg4YzNkYTlhMzhkOWY2M2Y2YmYyNWU1ZDk0Y2M1YjA0ZjQwNwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3Vy
Y2VzL2tleS1yZXF1aXJlbWVudHMtcHV0LW51bGwta2V5LmpzCkBAIC0wLDAgKzEsNDIgQEAKKy8v
IG9yaWdpbmFsIHRlc3Q6CisvLyBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291
cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2tleV9yZXF1aXJlbWVudHMuaHRtbAorLy8gbGlj
ZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorLy8gIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKy8vICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLyAiCisKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBp
bXBvcnRTY3JpcHRzKCcuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cycpOworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uL3Jlc291cmNlcy9zaGFyZWQuanMnKTsKK30K
KworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgYmVoYXZpb3IgcHV0KClpbmcgd2l0aCBu
dWxsIGtleSIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhl
cygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRp
b24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4
ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
b3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2co
ImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGNsZWFuRGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRlbGV0ZUFsbE9i
amVjdFN0b3JlcyhkYik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9y
ZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdiYXInKTsiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJvYmplY3RTdG9yZS5wdXQoe30sIG51bGwpOyIsICJJREJEYXRhYmFzZUV4Y2VwdGlv
bi5EQVRBX0VSUiIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9yZXNvdXJjZXMva2V5LXJlcXVpcmVtZW50cy5qcyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2tleS1yZXF1aXJlbWVudHMuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjkyMDg2YTcwYWUwYTlkNzY5N2M3OWM0NDZiNWRhM2YxODE4ODYxOAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVz
b3VyY2VzL2tleS1yZXF1aXJlbWVudHMuanMKQEAgLTAsMCArMSw3NSBAQAorLy8gb3JpZ2luYWwg
dGVzdDoKKy8vIGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2lu
ZGV4ZWREQi90ZXN0L3Rlc3Rfa2V5X3JlcXVpcmVtZW50cy5odG1sCisvLyBsaWNlbnNlIG9mIG9y
aWdpbmFsIHRlc3Q6CisvLyAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgorLy8gICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v
emVyby8xLjAvICIKKworaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlw
dHMoJy4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAg
aW1wb3J0U2NyaXB0cygnLi4vLi4vcmVzb3VyY2VzL3NoYXJlZC5qcycpOworfQorCitkZXNjcmlw
dGlvbigiVGVzdCBJbmRleGVkREIncyBldmVudC50YXJnZXQucmVzdWx0IGFmdGVyIGFkZCgpIGFu
ZCBwdXQoKSIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhl
cygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRp
b24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4
ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
b3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2co
ImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGNsZWFuRGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRlbGV0ZUFsbE9i
amVjdFN0b3JlcyhkYik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9y
ZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7
Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQo
e30pOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdEFkZDsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gcG9zdEFkZCgp
Cit7CisgICAga2V5MSA9IGV2YWxBbmRMb2coImtleTEgPSBldmVudC50YXJnZXQucmVzdWx0OyIp
OworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KHt9
LCBrZXkxKTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RQdXQxOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBwb3N0
UHV0MSgpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAia2V5MSIpOwor
ICAgIGtleTIgPSBldmFsQW5kTG9nKCJrZXkyID0gMTA7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoe30sIGtleTIpOyIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gcG9zdFB1dDI7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHBvc3RQdXQyKCkKK3sKKyAgICBzaG91bGRC
ZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJrZXkyIik7CisgICAga2V5MiA9IGV2YWxBbmRMb2co
ImtleTIgPSAxMDA7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmpl
Y3RTdG9yZS5wdXQoe30sIGtleTIpOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdFB1
dDM7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIHBvc3RQdXQzKCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3Vs
dCIsICJrZXkyIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9vYmplY3QtY3Vyc29ycy5qcyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL29iamVjdC1jdXJzb3JzLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmRkZmM0ZjViZWYwOWEyN2YxM2Y5YWRlMWFhMDM4OTUzMjYyZDhjZjgKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNl
cy9vYmplY3QtY3Vyc29ycy5qcwpAQCAtMCwwICsxLDg2IEBACisvLyBvcmlnaW5hbCB0ZXN0Ogor
Ly8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERC
L3Rlc3QvdGVzdF9vYmplY3RDdXJzb3JzLmh0bWwKKy8vIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVz
dDoKKy8vICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisvLyAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8g
IgorCitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3Jp
cHRzKCcuLi8uLi9yZXNvdXJjZXMvc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0
IEluZGV4ZWREQidzIGluZGV4IGN1cnNvcnMiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAg
cmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhu
YW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7Cisg
ICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkK
K3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworICAgIGF1dG9JbmNyZW1lbnQgPSBl
dmFsQW5kTG9nKCJhdXRvSW5jcmVtZW50ID0gZmFsc2U7Iik7CisgICAgb2JqZWN0U3RvcmUgPSBl
dmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdhJywgeyBrZXlQ
YXRoOiAnaWQnLCBhdXRvSW5jcmVtZW50OiBhdXRvSW5jcmVtZW50IH0pOyIpOworICAgIGluZGV4
ZXMgPSBbCisgICAgICAgIHsgbmFtZTogImEiLCBvcHRpb25zOiB7IH0gfSwKKyAgICAgICAgeyBu
YW1lOiAiYiIsIG9wdGlvbnM6IHsgdW5pcXVlOiB0cnVlIH0gfQorICAgIF07CisgICAgZm9yIChq
IGluIGluZGV4ZXMpIHsKKyAgICAgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuY3JlYXRlSW5k
ZXgoaW5kZXhlc1tqXS5uYW1lLCAnbmFtZScsIGluZGV4ZXNbal0ub3B0aW9ucyk7Iik7CisgICAg
fQorICAgIGRhdGEgPSBldmFsQW5kTG9nKCJkYXRhID0geyBuYW1lOiAnQmVuJywgaWQ6IDEgfTsi
KTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChk
YXRhKTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RBZGQ7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHBvc3RBZGQo
KQoreworICAgIG51bUluZGV4ZXMgPSBpbmRleGVzLmxlbmd0aDsKKyAgICBpbmRleGVzRmluaXNo
ZWQgPSAwOworICAgIGZvciAoaiBpbiBpbmRleGVzKSB7CisgICAgICAgIGluZGV4ID0gZXZhbEFu
ZExvZygiaW5kZXggPSBvYmplY3RTdG9yZS5pbmRleChpbmRleGVzW2pdLm5hbWUpOyIpOworICAg
ICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4Lm9wZW5DdXJzb3IoKTsi
KTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cisg
ICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAg
IHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLm5hbWUiLCAiJ0JlbiciKTsKKyAg
ICAgICAgICAgIGlmICgrK2luZGV4ZXNGaW5pc2hlZCA9PSBudW1JbmRleGVzKSB7CisgICAgICAg
ICAgICAgICAgaWYgKGF1dG9JbmNyZW1lbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgZmluaXNo
SlNUZXN0KCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
c2V0dXBBdXRvSW5jcmVtZW50KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICB9OworICAgIH0KK30KKworZnVuY3Rpb24gc2V0dXBBdXRvSW5jcmVtZW50KCkKK3sK
KyAgICBhdXRvSW5jcmVtZW50ID0gZXZhbEFuZExvZygiYXV0b0luY3JlbWVudCA9IHRydWU7Iik7
CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9i
amVjdFN0b3JlKCdiJywgeyBrZXlQYXRoOiAnaWQnLCBhdXRvSW5jcmVtZW50OiBhdXRvSW5jcmVt
ZW50IH0pOyIpOworICAgIGZvciAoaiBpbiBpbmRleGVzKSB7CisgICAgICAgIGV2YWxBbmRMb2co
Im9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KGluZGV4ZXNbal0ubmFtZSwgJ25hbWUnLCBpbmRleGVz
W2pdLm9wdGlvbnMpOyIpOworICAgIH0KKyAgICBkYXRhID0gZXZhbEFuZExvZygiZGF0YSA9IHsg
bmFtZTogJ0JlbicgfTsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9i
amVjdFN0b3JlLmFkZChkYXRhKTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RBZGQ7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK3Rl
c3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEv
cmVzb3VyY2VzL29iamVjdC1pZGVudGl0eS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvcmVzb3VyY2VzL29iamVjdC1pZGVudGl0eS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNWIz
MzM1ZTIzODQyZDU2ODIyOWQ4MTg5ZWJmMzgyZWI0OWM1MmRmCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvb2JqZWN0LWlk
ZW50aXR5LmpzCkBAIC0wLDAgKzEsNjYgQEAKKy8vIG9yaWdpbmFsIHRlc3Q6CisvLyBodHRwOi8v
bXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0
X29iamVjdF9pZGVudGl0eS5odG1sP2ZvcmNlPTEKKy8vIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVz
dDoKKy8vICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisvLyAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8g
IgorCitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3Jp
cHRzKCcuLi8uLi9yZXNvdXJjZXMvc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0
IEluZGV4ZWREQjogb2JqZWN0IGlkZW50aXR5Iik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAg
IHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRo
bmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQorewor
ICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZU9iamVjdFN0b3JlQW5kSW5kZXg7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNyZWF0
ZU9iamVjdFN0b3JlQW5kSW5kZXgoKQoreworICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygi
dHJhbnNhY3Rpb24gPSBldmVudC50YXJnZXQudHJhbnNhY3Rpb247Iik7CisgICAgZGVsZXRlQWxs
T2JqZWN0U3RvcmVzKGRiKTsKKyAgICBvYmplY3RTdG9yZTEgPSBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZTEgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJyk7Iik7CisgICAgb2JqZWN0U3RvcmUy
ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUyID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ2Zv
bycpOyIpOworICAgIHNob3VsZEJlVHJ1ZSgib2JqZWN0U3RvcmUxID09PSBvYmplY3RTdG9yZTIi
KTsKKyAgICBpbmRleDEgPSBldmFsQW5kTG9nKCJpbmRleDEgPSBvYmplY3RTdG9yZTEuY3JlYXRl
SW5kZXgoJ2JhcicsICdrZXknKTsiKTsKKyAgICBpbmRleDIgPSBldmFsQW5kTG9nKCJpbmRleDIg
PSBvYmplY3RTdG9yZTIuaW5kZXgoJ2JhcicpOyIpOworICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXgx
ID09PSBpbmRleDIiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0g
dGVzdElkZW50aXR5U29tZU1vcmU7Iik7Cit9CisKK2Z1bmN0aW9uIHRlc3RJZGVudGl0eVNvbWVN
b3JlKCkKK3sKKyAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIu
dHJhbnNhY3Rpb24oJ2ZvbycpOyIpOworICAgIG9iamVjdFN0b3JlMyA9IGV2YWxBbmRMb2coIm9i
amVjdFN0b3JlMyA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdmb28nKTsiKTsKKyAgICBvYmpl
Y3RTdG9yZTQgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZTQgPSB0cmFuc2FjdGlvbi5vYmplY3RT
dG9yZSgnZm9vJyk7Iik7CisgICAgc2hvdWxkQmVUcnVlKCJvYmplY3RTdG9yZTMgPT09IG9iamVj
dFN0b3JlNCIpOworCisgICAgc2hvdWxkQmVGYWxzZSgib2JqZWN0U3RvcmUzID09PSBvYmplY3RT
dG9yZTEiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJvYmplY3RTdG9yZTQgPT09IG9iamVjdFN0b3Jl
MiIpOworCisgICAgaW5kZXgzID0gZXZhbEFuZExvZygiaW5kZXgzID0gb2JqZWN0U3RvcmUzLmlu
ZGV4KCdiYXInKTsiKTsKKyAgICBpbmRleDQgPSBldmFsQW5kTG9nKCJpbmRleDQgPSBvYmplY3RT
dG9yZTQuaW5kZXgoJ2JhcicpOyIpOworICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXgzID09PSBpbmRl
eDQiKTsKKworICAgIHNob3VsZEJlRmFsc2UoImluZGV4MyA9PT0gaW5kZXgxIik7CisgICAgc2hv
dWxkQmVGYWxzZSgiaW5kZXg0ID09PSBpbmRleDIiKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOwor
fQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvb2JqZWN0LXN0b3Jl
LWlubGluZS1hdXRvaW5jcmVtZW50LWtleS1hZGRlZC1vbi1wdXQuanMgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9vYmplY3Qtc3RvcmUtaW5saW5lLWF1
dG9pbmNyZW1lbnQta2V5LWFkZGVkLW9uLXB1dC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lN2ZkYTA2ODQ2ZDQ4
ODllM2FkZGIwYzliNjZhMzc1ZGQ3NDg2NzdjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvb2JqZWN0LXN0b3JlLWlubGlu
ZS1hdXRvaW5jcmVtZW50LWtleS1hZGRlZC1vbi1wdXQuanMKQEAgLTAsMCArMSw2NCBAQAorLy8g
b3JpZ2luYWwgdGVzdDoKKy8vIGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3Vy
Y2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3Rfb2JqZWN0U3RvcmVfaW5saW5lX2F1dG9pbmNyZW1l
bnRfa2V5X2FkZGVkX29uX3B1dC5odG1sP2ZvcmNlPTEKKy8vIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwg
dGVzdDoKKy8vICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21h
aW4uCisvLyAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8gIgorCitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4v
Li4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRT
Y3JpcHRzKCcuLi8uLi9yZXNvdXJjZXMvc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJU
ZXN0IEluZGV4ZWREQiBhZGRpbmcgYW4gYXV0b2luY3JlbWVudGVkIGtleSBhbmQgcmV0cmlldmlu
ZyBpdCBzdWNjZXNzZnVsbHkiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVu
ZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAg
IGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBl
dmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBzZXR1cE9iamVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXR1cE9iamVjdFN0b3JlKCkKK3sK
KyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworICAgIHRlc3QgPSBldmFsQW5kTG9nKCJ0
ZXN0ID0ge1xuIiArCisiICAgICAgICBuYW1lOiAnaW5saW5lIGtleTsga2V5IGdlbmVyYXRvcics
XG4iICsKKyIgICAgICAgIGF1dG9JbmNyZW1lbnQ6IHRydWUsXG4iICsKKyIgICAgICAgIHN0b3Jl
ZE9iamVjdDogeyBuYW1lOiAnTGluY29sbicgfSxcbiIgKworIiAgICAgICAga2V5TmFtZTogJ2lk
JyxcbiIgKworIiAgICB9OyIpOworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0
U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSh0ZXN0Lm5hbWUsIHsga2V5UGF0aDogdGVzdC5r
ZXlOYW1lLCBhdXRvSW5jcmVtZW50OiB0ZXN0LmF1dG9JbmNyZW1lbnQgfSk7Iik7CisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQodGVzdC5zdG9yZWRP
YmplY3QpOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkU3VjY2VzczsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gYWRk
U3VjY2VzcygpCit7CisgICAgaWQgPSBldmFsQW5kTG9nKCJpZCA9IGV2ZW50LnRhcmdldC5yZXN1
bHQ7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5n
ZXQoaWQpOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0U3VjY2VzczsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZ2V0
U3VjY2VzcygpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQubmFtZSIsICJ0
ZXN0LnN0b3JlZE9iamVjdC5uYW1lIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1
bHQuaWQiLCAiaWQiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL29iamVjdC1zdG9yZS1yZW1vdmUtdmFsdWVzLmpzIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvb2JqZWN0LXN0
b3JlLXJlbW92ZS12YWx1ZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmEwZGVhNzlmZWZiOGIwMTU3YmVmZWFh
ZmE5NzA5MThlNGYyOTQ3ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL29iamVjdC1zdG9yZS1yZW1vdmUtdmFsdWVzLmpz
CkBAIC0wLDAgKzEsMTIxIEBACisvLyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3pp
bGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9vYmplY3RT
dG9yZV9yZW1vdmVfdmFsdWVzLmh0bWw/Zm9yY2U9MQorLy8gbGljZW5zZSBvZiBvcmlnaW5hbCB0
ZXN0OgorLy8gIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKy8vICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LyAiCisKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8u
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNj
cmlwdHMoJy4uLy4uL3Jlc291cmNlcy9zaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRl
c3QgSW5kZXhlZERCOiBhZGRzLCBnZXRzLCBkZWxldGVzLCBhbmQgcmUtZ2V0cyBhIHJlY29yZCBp
biBhIHZhcmlldHkgb2YgZGlmZmVyZW50IG9iamVjdCBzdG9yZSBjb25maWd1cmF0aW9ucyIpOwor
CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAg
bmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVz
dCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5h
bWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdCIpOworCisgICAgZGF0YSA9IGV2YWxBbmRMb2coImRhdGEgPSBbXG4iICsK
KyIgICAgICAgIHsgbmFtZTogJ2lubGluZSBrZXk7IGtleSBnZW5lcmF0b3InLFxuIiArCisiICAg
ICAgICAgIGF1dG9JbmNyZW1lbnQ6IHRydWUsXG4iICsKKyIgICAgICAgICAgc3RvcmVkT2JqZWN0
OiB7bmFtZTogJ0xpbmNvbG4nfSxcbiIgKworIiAgICAgICAgICBrZXlOYW1lOiAnaWQnLFxuIiAr
CisiICAgICAgICAgIGtleVZhbHVlOiB1bmRlZmluZWQsXG4iICsKKyIgICAgICAgIH0sXG4iICsK
KyIgICAgICAgIHsgbmFtZTogJ2lubGluZSBrZXk7IG5vIGtleSBnZW5lcmF0b3InLFxuIiArCisi
ICAgICAgICAgIGF1dG9JbmNyZW1lbnQ6IGZhbHNlLFxuIiArCisiICAgICAgICAgIHN0b3JlZE9i
amVjdDoge2lkOiAxLCBuYW1lOiAnTGluY29sbid9LFxuIiArCisiICAgICAgICAgIGtleU5hbWU6
ICdpZCcsXG4iICsKKyIgICAgICAgICAga2V5VmFsdWU6IHVuZGVmaW5lZCxcbiIgKworIiAgICAg
ICAgfSxcbiIgKworIiAgICAgICAgeyBuYW1lOiAnb3V0IG9mIGxpbmUga2V5OyBrZXkgZ2VuZXJh
dG9yJyxcbiIgKworIiAgICAgICAgICBhdXRvSW5jcmVtZW50OiB0cnVlLFxuIiArCisiICAgICAg
ICAgIHN0b3JlZE9iamVjdDoge25hbWU6ICdMaW5jb2xuJ30sXG4iICsKKyIgICAgICAgICAga2V5
TmFtZTogdW5kZWZpbmVkLFxuIiArCisiICAgICAgICAgIGtleVZhbHVlOiB1bmRlZmluZWQsXG4i
ICsKKyIgICAgICAgIH0sXG4iICsKKyIgICAgICAgIHsgbmFtZTogJ291dCBvZiBsaW5lIGtleTsg
bm8ga2V5IGdlbmVyYXRvcicsXG4iICsKKyIgICAgICAgICAgYXV0b0luY3JlbWVudDogZmFsc2Us
XG4iICsKKyIgICAgICAgICAgc3RvcmVkT2JqZWN0OiB7bmFtZTogJ0xpbmNvbG4nfSxcbiIgKwor
IiAgICAgICAgICBrZXlOYW1lOiB1bmRlZmluZWQsXG4iICsKKyIgICAgICAgICAga2V5VmFsdWU6
IDEsXG4iICsKKyIgICAgICAgIH1cbiIgKworIiAgICBdOyIpOworCisgICAgaSA9IGV2YWxBbmRM
b2coImkgPSAwOyIpOworICAgIHNldFZlcnNpb24oKTsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lv
bigpCit7CisgICAgaWYgKGkgPCBkYXRhLmxlbmd0aCkgeworICAgICAgICB0ZXN0ID0gZGF0YVtp
XTsKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9u
KCcxJykiKTsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVPYmplY3RTdG9yZTsK
KyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQorfQorCitmdW5jdGlvbiBj
cmVhdGVPYmplY3RTdG9yZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKwor
ICAgIGlmICh0ZXN0LmtleU5hbWUpIHsKKyAgICAgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKHRlc3QubmFtZSwgeyBrZXlQYXRo
OiB0ZXN0LmtleU5hbWUsIGF1dG9JbmNyZW1lbnQ6IHRlc3QuYXV0b0luY3JlbWVudCB9KTsiKTsK
KyAgICB9IGVsc2UgeworICAgICAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0
b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUodGVzdC5uYW1lLCB7IGF1dG9JbmNyZW1lbnQ6IHRl
c3QuYXV0b0luY3JlbWVudCB9KTsiKTsKKyAgICB9CisgICAgaWYgKHRlc3Qua2V5VmFsdWUpIHsK
KyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQo
dGVzdC5zdG9yZWRPYmplY3QsIHRlc3Qua2V5VmFsdWUpOyIpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKHRlc3Qu
c3RvcmVkT2JqZWN0KTsiKTsKKyAgICB9CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRSZWNv
cmQ7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIGdldFJlY29yZCgpCit7CisgICAgaWQgPSBldmFsQW5kTG9nKCJpZCA9IGV2ZW50
LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBv
YmplY3RTdG9yZS5nZXQoaWQpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlUmVjb3JkOworfQor
CitmdW5jdGlvbiBkZWxldGVSZWNvcmQoKQoreworICAgIHNob3VsZEJlKCJ0ZXN0LnN0b3JlZE9i
amVjdC5uYW1lIiwgImV2ZW50LnRhcmdldC5yZXN1bHQubmFtZSIpOworCisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5kZWxldGUoaWQpOyIpOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZ2V0UmVjb3JkQWdhaW47Cit9CisKK2Z1bmN0aW9uIGdldFJlY29yZEFnYWluKCkK
K3sKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmdldChp
ZCk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmaW5hbENoZWNrOworfQorCitmdW5jdGlvbiBmaW5hbENo
ZWNrKCkKK3sKKyAgICBzaG91bGRCZVRydWUoImV2ZW50LnRhcmdldC5yZXN1bHQgPT09IHVuZGVm
aW5lZCIpOworICAgIGkrKzsKKyAgICBzZXRWZXJzaW9uKCk7Cit9CisKK3Rlc3QoKTsKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9vYmplY3RzdG9yZW5hbWVzLmpzIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvb2JqZWN0c3RvcmVuYW1lcy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45NTQ1MmVlZDM4ZjVkNDJhNWQ0NmQ1OTIxNmFkNTQ1NDZiMDhiNzlkCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9y
ZXNvdXJjZXMvb2JqZWN0c3RvcmVuYW1lcy5qcwpAQCAtMCwwICsxLDQ3IEBACisvLyBvcmlnaW5h
bCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20v
aW5kZXhlZERCL3Rlc3QvdGVzdF9nbG9iYWxfZGF0YS5odG1sCisvLyBsaWNlbnNlIG9mIG9yaWdp
bmFsIHRlc3Q6CisvLyAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorLy8gICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvICIKKworaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMo
Jy4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1w
b3J0U2NyaXB0cygnLi4vLi4vcmVzb3VyY2VzL3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlv
bigiVGVzdCBJbmRleGVkREIncyBvYmplY3RTdG9yZU5hbWVzIGFycmF5Iik7CisKK2Z1bmN0aW9u
IHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2Vs
Zi5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNl
IjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3Jp
cHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3Bl
blN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVz
dWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNp
b24oJzEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
Y2xlYW5EYXRhYmFzZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAg
IG9iamVjdFN0b3JlTmFtZSA9ICJhIjsKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9i
amVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lLCB7IGtleVBh
dGg6ICdpZCcsIGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7CisKKyAgICBzaG91bGRCZVRydWUo
IidvYmplY3RTdG9yZU5hbWVzJyBpbiBkYiIpOworICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9y
ZU5hbWVzLmxlbmd0aCIsICIxIik7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMu
aXRlbSgwKSIsICJvYmplY3RTdG9yZU5hbWUiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwor
dGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL29kZC1yZXN1bHQtb3JkZXIu
anMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9vZGQt
cmVzdWx0LW9yZGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZjMjQwZGY3ODhiYTUwYjVjZDA3MjYzYzFhYzdk
YTk2ZmUxMGJmZmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9vZGQtcmVzdWx0LW9yZGVyLmpzCkBAIC0wLDAgKzEsMTE3
IEBACisvLyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxh
Mi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9vZGRfcmVzdWx0X29yZGVyLmh0bWw/
cmF3PTEKKy8vIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBvcnRTY3Jp
cHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi9yZXNvdXJjZXMvc2hh
cmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQjogcmVxdWVzdCByZXN1
bHQgcGVyc2lzdHMgaW4gc2V0VGltZW91dCBjYWxsYmFjayIpOworCitmdW5jdGlvbiB0ZXN0KCkK
K3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRp
b24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNz
KCkKK3sKKyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBkYiA9IGV2YWxBbmRMb2co
ImRiID0gbnVsbDsiKTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICBkYiA9
IGV2YWxBbmRMb2coImRiID0gcmVxdWVzdC5yZXN1bHQ7Iik7CisgICAgICAgIGNoZWNrRGF0YWJh
c2VUeXBlKCk7CisgICAgfSwgMCk7Cit9CisKK2Z1bmN0aW9uIGNoZWNrRGF0YWJhc2VUeXBlKCkK
K3sKKyAgICBkZWJ1ZygiY2hlY2tEYXRhYmFzZVR5cGUoKToiKTsKKyAgICBzaG91bGRCZVRydWUo
ImRiIGluc3RhbmNlb2YgSURCRGF0YWJhc2UiKTsKKyAgICBkYi5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5z
ZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldHVwT2JqZWN0U3Rv
cmU7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIHNldHVwT2JqZWN0U3RvcmUoKQoreworICAgIGRlYnVnKCJzZXR1cE9iamVjdFN0
b3JlKCk6Iik7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKyAgICBvYmplY3RTdG9y
ZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2Zvbycs
IHsga2V5UGF0aDogJ2tleScsIGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7CisgICAgaW5kZXgg
PSBldmFsQW5kTG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdmb28nLCAnaW5k
ZXgnKTsiKTsKKyAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24ub25jb21w
bGV0ZSA9IGFkZFJlY29yZDsiKTsKK30KKworZnVuY3Rpb24gYWRkUmVjb3JkKCkKK3sKKyAgICBk
ZWJ1ZygiYWRkUmVjb3JkKCk6Iik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZSA9IGRiLnRyYW5zYWN0aW9uKCdmb28nLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRF
KS5vYmplY3RTdG9yZSgnZm9vJyk7Iik7CisgICAgZGF0YSA9IGV2YWxBbmRMb2coImRhdGEgPSB7
IGtleTogNSwgaW5kZXg6IDEwIH07Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVl
c3QgPSBvYmplY3RTdG9yZS5hZGQoZGF0YSk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBh
ZGRTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworfQorCitmdW5jdGlvbiBhZGRTdWNjZXNzKCkKK3sKKyAgICBkZWJ1ZygiYWRkU3VjY2Vzcygp
OiIpOworICAgIGtleSA9IGV2YWxBbmRMb2coImtleSA9IG51bGw7Iik7CisgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsKKyAgICAgIGtleSA9IGV2YWxBbmRMb2coImtleSA9IHJlcXVlc3QucmVz
dWx0OyIpOworICAgICAgY2hlY2tBZGRlZEtleSgpOworICAgIH0sIDApOworfQorCitmdW5jdGlv
biBjaGVja0FkZGVkS2V5KCkKK3sKKyAgICBkZWJ1ZygiY2hlY2tBZGRlZEtleSgpOiIpOworICAg
IHNob3VsZEJlKCJrZXkiLCAiZGF0YS5rZXkiKTsKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRM
b2coIm9iamVjdFN0b3JlID0gZGIudHJhbnNhY3Rpb24oJ2ZvbycpLm9iamVjdFN0b3JlKCdmb28n
KTsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmdl
dChkYXRhLmtleSk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRTdWNjZXNzOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biBnZXRTdWNjZXNzKCkKK3sKKyAgICBkZWJ1ZygiZ2V0U3VjY2VzcygpOiIpOworICAgIHJlY29y
ZCA9IGV2YWxBbmRMb2coInJlY29yZCA9IG51bGw7Iik7CisgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsKKyAgICAgIHJlY29yZCA9IGV2YWxBbmRMb2coInJlY29yZCA9IHJlcXVlc3QucmVzdWx0
OyIpOworICAgICAgY2hlY2tSZXRyaWV2ZWRLZXkoKTsKKyAgICB9LCAwKTsKK30KKworZnVuY3Rp
b24gY2hlY2tSZXRyaWV2ZWRLZXkoKQoreworICAgIGRlYnVnKCJjaGVja1JldHJpZXZlZEtleSgp
OiIpOworICAgIHNob3VsZEJlKCJyZWNvcmQua2V5IiwgImRhdGEua2V5Iik7CisgICAgc2hvdWxk
QmUoInJlY29yZC5pbmRleCIsICJkYXRhLmluZGV4Iik7CisgICAgZGVsZXRlUmVjb3JkKCk7Cit9
CisKK2Z1bmN0aW9uIGRlbGV0ZVJlY29yZCgpCit7CisgICAgZGVidWcoImRlbGV0ZVJlY29yZCgp
OiIpOworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi50cmFu
c2FjdGlvbignZm9vJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3RvcmUoJ2Zv
bycpOyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
ZGVsZXRlKGRhdGEua2V5KTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZVN1Y2Nl
c3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIGRlbGV0ZVN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJkZWxldGVTdWNjZXNzKCk6
Iik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL3Jlc291cmNlcy9vcGVuLWRhdGFiYXNlLW51bGwtbmFtZS5qcyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL29wZW4tZGF0YWJhc2UtbnVsbC1uYW1l
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjQ4ZDBjMzMyYzdmODcxYjk2ZTUyNjAzNTgwZTJkYTM4MzRhMWUwZTIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L3Jlc291cmNlcy9vcGVuLWRhdGFiYXNlLW51bGwtbmFtZS5qcwpAQCAtMCwwICsxLDMxIEBACisv
LyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3Nv
dXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9vcGVuX2VtcHR5X2RiLmh0bWw/Zm9yY2U9MQor
Ly8gbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorLy8gIiBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKy8vICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCisKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsK
KyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uL3Jlc291cmNlcy9zaGFyZWQuanMn
KTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCOiBzaG91bGQgTk9UIHRocm93IHdo
ZW4gb3BlbmluZyBhIGRhdGFiYXNlIHdpdGggYSBudWxsIG5hbWUiKTsKKworZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIGRlc2NyaXB0aW9uID0g
Ik15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
b3BlbihudWxsKTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZSgiZGIubmFtZSIsICInbnVsbCciKTsKKyAgICBmaW5p
c2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2Vz
L3B1dC1nZXQtdmFsdWVzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9yZXNvdXJjZXMvcHV0LWdldC12YWx1ZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDg0YzhlNjAxMjc2NzAz
Mjc3NTM1MmUwYTNlNjg2M2NkMzVjZGEyMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL3B1dC1nZXQtdmFsdWVzLmpzCkBA
IC0wLDAgKzEsMTA4IEBACisvLyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxh
Lm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9wdXRfZ2V0X3Zh
bHVlcy5odG1sCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisvLyAiIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorLy8gICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKworaWYgKHRoaXMuaW1wb3J0
U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vcmVzb3VyY2Vz
L3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBwdXR0aW5n
IGFuZCBnZXR0aW5nIHZhbHVlcyBpbiBhbiBvYmplY3Qgc3RvcmUiKTsKKworZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxv
Y2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlv
bikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3Vj
Y2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEn
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5E
YXRhYmFzZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIHRlc3RT
dHJpbmcgPSBldmFsQW5kTG9nKCJ0ZXN0U3RyaW5nID0geyBrZXk6IDAsIHZhbHVlOiAndGVzdFN0
cmluZycgfTsiKTsKKyAgICB0ZXN0SW50ID0gZXZhbEFuZExvZygidGVzdEludCA9IHsga2V5OiAx
LCB2YWx1ZTogMTAwMiB9OyIpOworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0
U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnT2JqZWN0cycsIHsgYXV0b0luY3JlbWVudDog
ZmFsc2UgfSk7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RT
dG9yZS5hZGQodGVzdFN0cmluZy52YWx1ZSwgdGVzdFN0cmluZy5rZXkpOyIpOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gcG9zdEFkZDsKK30KKworZnVuY3Rpb24gcG9zdEFkZCgpCit7CisgICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldC5yZXN1bHQiLCAidGVzdFN0cmluZy5rZXkiKTsKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmdldCh0ZXN0U3RyaW5nLmtleSk7Iik7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBwb3N0R2V0OworfQorCitmdW5jdGlvbiBwb3N0R2V0KCkKK3sKKyAg
ICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ0ZXN0U3RyaW5nLnZhbHVlIik7Cisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQodGVzdElu
dC52YWx1ZSwgdGVzdEludC5rZXkpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdEFkZEludDsKK30K
KworZnVuY3Rpb24gcG9zdEFkZEludCgpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5y
ZXN1bHQiLCAidGVzdEludC5rZXkiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IG9iamVjdFN0b3JlLmdldCh0ZXN0SW50LmtleSk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0
R2V0SW50OworfQorCitmdW5jdGlvbiBwb3N0R2V0SW50KCkKK3sKKyAgICBzaG91bGRCZSgiZXZl
bnQudGFyZ2V0LnJlc3VsdCIsICJ0ZXN0SW50LnZhbHVlIik7CisgICAgb2JqZWN0U3RvcmVBdXRv
SW5jcmVtZW50ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmVBdXRvSW5jcmVtZW50ID0gZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ0F1dG9JbmNyZW1lbnRlZCBPYmplY3RzJywgeyBhdXRvSW5jcmVtZW50
OiB0cnVlIH0pOyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0
U3RvcmVBdXRvSW5jcmVtZW50LmFkZCh0ZXN0U3RyaW5nLnZhbHVlKTsiKTsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IHBvc3RBZGRBdXRvSW5jcmVtZW50OworfQorCitmdW5jdGlvbiBwb3N0QWRkQXV0b0luY3Jl
bWVudCgpCit7CisgICAgdGVzdFN0cmluZy5rZXkgPSBldmFsQW5kTG9nKCJ0ZXN0U3RyaW5nLmtl
eSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBvYmplY3RTdG9yZUF1dG9JbmNyZW1lbnQuZ2V0KHRlc3RTdHJpbmcua2V5KTsiKTsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IHBvc3RHZXRBdXRvSW5jcmVtZW50OworfQorCitmdW5jdGlvbiBwb3N0
R2V0QXV0b0luY3JlbWVudCgpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQi
LCAidGVzdFN0cmluZy52YWx1ZSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gb2JqZWN0U3RvcmVBdXRvSW5jcmVtZW50LmFkZCh0ZXN0SW50LnZhbHVlKTsiKTsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IHBvc3RBZGRJbnRBdXRvSW5jcmVtZW50OworfQorCitmdW5jdGlvbiBwb3N0QWRk
SW50QXV0b0luY3JlbWVudCgpCit7CisgICAgdGVzdEludC5rZXkgPSBldmFsQW5kTG9nKCJ0ZXN0
SW50LmtleSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBvYmplY3RTdG9yZUF1dG9JbmNyZW1lbnQuZ2V0KHRlc3RJbnQua2V5KTsi
KTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RHZXRJbnRBdXRvSW5jcmVtZW50OworfQorCitmdW5jdGlv
biBwb3N0R2V0SW50QXV0b0luY3JlbWVudCgpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdl
dC5yZXN1bHQiLCAidGVzdEludC52YWx1ZSIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0
ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvcmVhZG9ubHktdHJhbnNhY3Rp
b25zLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMv
cmVhZG9ubHktdHJhbnNhY3Rpb25zLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU5MmVkZTc0YmM0NjEyYzE5Mjkw
NDg0YWJiNDgwNjUwNTJkNGIzZmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9yZWFkb25seS10cmFuc2FjdGlvbnMuanMK
QEAgLTAsMCArMSw1OCBAQAorLy8gb3JpZ2luYWwgdGVzdDoKKy8vIGh0dHA6Ly9teHIubW96aWxs
YS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfcmVhZG9ubHlf
dHJhbnNhY3Rpb25zLmh0bWwKKy8vIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhp
cy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi9y
ZXNvdXJjZXMvc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidz
IHJlYWRvbmx5IHRyYW5zYWN0aW9ucyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1v
dmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7
CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBk
YiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQorewor
ICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBvc05hbWUgPSAidGVzdCBzdG9y
ZSI7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKG9zTmFtZSwgeyBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOyIpOworICAgIGV2
ZW50LnRhcmdldC5yZXN1bHQub25jb21wbGV0ZSA9IHNldFZlcnNpb25Db21wbGV0ZTsKK30KKwor
ZnVuY3Rpb24gc2V0VmVyc2lvbkNvbXBsZXRlKCkKK3sKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJkYi50cmFuc2FjdGlvbihbb3NOYW1lXSkub2JqZWN0U3RvcmUob3NOYW1lKS5hZGQoe30p
OyIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5SRUFEX09OTFlfRVJSIik7CisgICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24ob3NOYW1lKS5vYmplY3RTdG9yZShvc05hbWUp
LmFkZCh7fSk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlJFQURfT05MWV9FUlIiKTsKKyAgICBr
ZXkxID0gZXZhbEFuZExvZygia2V5MSA9IDE7Iik7CisgICAga2V5MiA9IGV2YWxBbmRMb2coImtl
eTIgPSAyOyIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKFtv
c05hbWVdKS5vYmplY3RTdG9yZShvc05hbWUpLnB1dCh7fSwga2V5MSk7IiwgIklEQkRhdGFiYXNl
RXhjZXB0aW9uLlJFQURfT05MWV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJk
Yi50cmFuc2FjdGlvbihvc05hbWUpLm9iamVjdFN0b3JlKG9zTmFtZSkucHV0KHt9LCBrZXkyKTsi
LCAiSURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUiIpOworICAgIGV2YWxBbmRFeHBl
Y3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKFtvc05hbWVdKS5vYmplY3RTdG9yZShvc05hbWUp
LnB1dCh7fSwga2V5MSk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlJFQURfT05MWV9FUlIiKTsK
KyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbihvc05hbWUpLm9iamVj
dFN0b3JlKG9zTmFtZSkucHV0KHt9LCBrZXkxKTsiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uUkVB
RF9PTkxZX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9u
KFtvc05hbWVdKS5vYmplY3RTdG9yZShvc05hbWUpLmRlbGV0ZShrZXkxKTsiLCAiSURCRGF0YWJh
c2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24o
ImRiLnRyYW5zYWN0aW9uKG9zTmFtZSkub2JqZWN0U3RvcmUob3NOYW1lKS5kZWxldGUoa2V5Mik7
IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlJFQURfT05MWV9FUlIiKTsKKyAgICBmaW5pc2hKU1Rl
c3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL3JlYWR3
cml0ZS10cmFuc2FjdGlvbnMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL3Jlc291cmNlcy9yZWFkd3JpdGUtdHJhbnNhY3Rpb25zLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyMDk3
NDZhMzljZmI0MGY2NmY2MTcyYTA1ZmExYzhkYjU2YjQ0OTAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9yZWFkd3JpdGUt
dHJhbnNhY3Rpb25zLmpzCkBAIC0wLDAgKzEsMTE0IEBACisvLyBvcmlnaW5hbCB0ZXN0OgorLy8g
aHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rl
c3QvdGVzdF9yZWFkb25seV90cmFuc2FjdGlvbnMuaHRtbAorLy8gbGljZW5zZSBvZiBvcmlnaW5h
bCB0ZXN0OgorLy8gIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KKy8vICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8v
MS4wLyAiCisKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcu
Li8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9y
dFNjcmlwdHMoJy4uLy4uL3Jlc291cmNlcy9zaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24o
IlRlc3QgSW5kZXhlZERCJ3MgcmVhZC93cml0ZSB0cmFuc2FjdGlvbnMiKTsKKworZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxm
LmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2Ui
OworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlw
dGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVu
U3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lv
bignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBj
bGVhbkRhdGFiYXNlKCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAg
b3NOYW1lID0gInRlc3Qgc3RvcmUiOworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2Jq
ZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShvc05hbWUsIHsgYXV0b0luY3JlbWVudDog
dHJ1ZSB9KTsiKTsKKyAgICBldmVudC50YXJnZXQucmVzdWx0Lm9uY29tcGxldGUgPSBzZXRWZXJz
aW9uQ29tcGxldGU7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb25Db21wbGV0ZSgpCit7CisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi50cmFuc2FjdGlvbihbb3NOYW1lXSwg
SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3RvcmUob3NOYW1lKS5hZGQoe30pOyIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdEFkZDsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gcG9zdEFkZCgpCit7Cisg
ICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2RlIiwgIklEQlRyYW5zYWN0
aW9uLlJFQURfV1JJVEUiKTsKKyAgICBrZXkxID0gZXZhbEFuZExvZygia2V5MSA9IGV2ZW50LnRh
cmdldC5yZXN1bHQ7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi50
cmFuc2FjdGlvbihvc05hbWUsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpLm9iamVjdFN0b3Jl
KG9zTmFtZSkuYWRkKHt9KTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RBZGQyOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiBwb3N0QWRkMigpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlv
bi5tb2RlIiwgIklEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUiKTsKKyAgICBrZXkyID0gZXZhbEFu
ZExvZygia2V5MiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBkYi50cmFuc2FjdGlvbihbb3NOYW1lXSwgSURCVHJhbnNhY3Rpb24u
UkVBRF9XUklURSkub2JqZWN0U3RvcmUob3NOYW1lKS5wdXQoe30sIGtleTEpOyIpOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gcG9zdFB1dDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gcG9zdFB1dCgpCit7CisgICAgc2hvdWxk
QmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2RlIiwgIklEQlRyYW5zYWN0aW9uLlJFQURf
V1JJVEUiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnRyYW5zYWN0
aW9uKG9zTmFtZSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3RvcmUob3NOYW1l
KS5wdXQoe30sIGtleTIpOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdFB1dDI7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0
aW9uIHBvc3RQdXQyKCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9u
Lm1vZGUiLCAiSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSIpOworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gZGIudHJhbnNhY3Rpb24oW29zTmFtZV0sIElEQlRyYW5zYWN0aW9u
LlJFQURfV1JJVEUpLm9iamVjdFN0b3JlKG9zTmFtZSkucHV0KHt9LCBrZXkxKTsiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RQdXQzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBwb3N0UHV0MygpCit7CisgICAgc2hv
dWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2RlIiwgIklEQlRyYW5zYWN0aW9uLlJF
QURfV1JJVEUiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnRyYW5z
YWN0aW9uKG9zTmFtZSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3RvcmUob3NO
YW1lKS5wdXQoe30sIGtleTEpOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdFB1dDQ7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIHBvc3RQdXQ0KCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0
aW9uLm1vZGUiLCAiSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSIpOworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIudHJhbnNhY3Rpb24oW29zTmFtZV0sIElEQlRyYW5zYWN0
aW9uLlJFQURfV1JJVEUpLm9iamVjdFN0b3JlKG9zTmFtZSkuZGVsZXRlKGtleTEpOyIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdERlbGV0ZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gcG9zdERlbGV0ZSgpCit7Cisg
ICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2RlIiwgIklEQlRyYW5zYWN0
aW9uLlJFQURfV1JJVEUiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRi
LnRyYW5zYWN0aW9uKG9zTmFtZSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3Rv
cmUob3NOYW1lKS5kZWxldGUoa2V5Mik7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0
RGVsZXRlMjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
K30KKworZnVuY3Rpb24gcG9zdERlbGV0ZTIoKQoreworICAgIHNob3VsZEJlKCJldmVudC50YXJn
ZXQudHJhbnNhY3Rpb24ubW9kZSIsICJJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFIik7CisgICAg
ZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291
cmNlcy9yZWFkeVN0YXRlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9yZXNvdXJjZXMvcmVhZHlTdGF0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNWRmY2UzZTJmYTI2ZWNkZGJl
NGJhYmEwZmFmMDVkYjZlMTBjZGI3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvcmVhZHlTdGF0ZS5qcwpAQCAtMCwwICsx
LDcwIEBACisvLyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3pp
bGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9yZXF1ZXN0X3JlYWR5U3RhdGUu
aHRtbD9mb3JjZT0xCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisvLyAiIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorLy8gICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKworaWYgKHRoaXMuaW1w
b3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vcmVzb3Vy
Y2VzL3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgcmVhZHlT
dGF0ZSBwcm9wZXJ0eSBkdXJpbmcgZGlmZmVyZW50IG9wZXJhdGlvbnMiKTsKKworZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxm
LmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2Ui
OworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlw
dGlvbikiKTsKKyAgICBzaG91bGRCZSgicmVxdWVzdC5yZWFkeVN0YXRlIiwgIklEQlJlcXVlc3Qu
TE9BRElORyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9w
ZW5TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBzaG91bGRC
ZSgicmVxdWVzdC5yZWFkeVN0YXRlIiwgIklEQlJlcXVlc3QuRE9ORSIpOworICAgIGRiID0gZXZh
bEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICBzaG91bGRCZSgicmVx
dWVzdC5yZWFkeVN0YXRlIiwgIklEQlJlcXVlc3QuTE9BRElORyIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gc2V0dXBPYmplY3RTdG9yZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0dXBPYmplY3RTdG9yZSgpCit7Cisg
ICAgZGVidWcoInNldHVwT2JqZWN0U3RvcmUoKToiKTsKKyAgICBzaG91bGRCZSgicmVxdWVzdC5y
ZWFkeVN0YXRlIiwgIklEQlJlcXVlc3QuRE9ORSIpOworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jl
cyhkYik7CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycpOyIpOworICAgIGtleSA9IGV2YWxBbmRMb2coImtleSA9
IDEwOyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
YWRkKHt9LCBrZXkpOyIpOworICAgIHNob3VsZEJlKCJyZXF1ZXN0LnJlYWR5U3RhdGUiLCAiSURC
UmVxdWVzdC5MT0FESU5HIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRSZWNvcmQ7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0
aW9uIGdldFJlY29yZCgpCit7CisgICAgZGVidWcoImdldFJlY29yZCgpOiIpOworICAgIHNob3Vs
ZEJlKCJyZXF1ZXN0LnJlYWR5U3RhdGUiLCAiSURCUmVxdWVzdC5ET05FIik7CisgICAgc2hvdWxk
QmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAia2V5Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5nZXQoa2V5KTsiKTsKKyAgICBzaG91bGRCZSgicmVx
dWVzdC5yZWFkeVN0YXRlIiwgIklEQlJlcXVlc3QuTE9BRElORyIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZmluYWxDaGVjazsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZmluYWxDaGVjaygpCit7CisgICAgZGVidWcoImZp
bmFsQ2hlY2soKToiKTsKKyAgICBzaG91bGRCZSgicmVxdWVzdC5yZWFkeVN0YXRlIiwgIklEQlJl
cXVlc3QuRE9ORSIpOworICAgIHNob3VsZEJlRmFsc2UoImV2ZW50LnRhcmdldC5yZXN1bHQgPT0g
bnVsbCIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW96aWxsYS9yZXNvdXJjZXMvcmVtb3ZlLWluZGV4LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvcmVtb3ZlLWluZGV4LmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFk
Y2M4NDg0YWIyOTZhMWJiOTRmNWE5YjlmNmU0ZjcwNTc1MTI2ZWQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9yZW1vdmUt
aW5kZXguanMKQEAgLTAsMCArMSw1NSBAQAorLy8gb3JpZ2luYWwgdGVzdDoKKy8vIGh0dHA6Ly9t
eHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3Rf
cmVtb3ZlX2luZGV4Lmh0bWwKKy8vIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhp
cy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi9y
ZXNvdXJjZXMvc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidz
IGNyZWF0aW5nIGFuZCBkZWxldGluZyBpbmRleGVzIik7CisKK2Z1bmN0aW9uIHRlc3QoKQorewor
ICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5w
YXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQor
eworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5kRGVsZXRlSW5kZXg7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNyZWF0
ZUFuZERlbGV0ZUluZGV4KCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisg
ICAgb2JqZWN0U3RvcmVOYW1lID0gInRlc3Qgc3RvcmUiOworICAgIG9iamVjdFN0b3JlID0gZXZh
bEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShvYmplY3RTdG9yZU5h
bWUsIHsga2V5UGF0aDogJ2ZvbycgfSk7Iik7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3Jl
TmFtZXMubGVuZ3RoIiwgIjEiKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5p
dGVtKDApIiwgIm9iamVjdFN0b3JlTmFtZSIpOworICAgIHNob3VsZEJlKCJvYmplY3RTdG9yZS5p
bmRleE5hbWVzLmxlbmd0aCIsICIwIik7CisKKyAgICBpbmRleE5hbWUgPSAiTXkgVGVzdCBJbmRl
eCI7CisgICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUlu
ZGV4KGluZGV4TmFtZSwgJ2ZvbycpOyIpOworICAgIHNob3VsZEJlKCJvYmplY3RTdG9yZS5pbmRl
eE5hbWVzLmxlbmd0aCIsICIxIik7CisgICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLmluZGV4TmFt
ZXMuaXRlbSgwKSIsICJpbmRleE5hbWUiKTsKKworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3Jl
LmRlbGV0ZUluZGV4KGluZGV4TmFtZSk7Iik7CisgICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLmlu
ZGV4TmFtZXMubGVuZ3RoIiwgIjAiKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0
KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvcmVtb3ZlLW9iamVjdHN0b3JlLmpz
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvcmVtb3Zl
LW9iamVjdHN0b3JlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3NzBlMDhkZGU4ZGRjZmQ4MmYwZTI0MmUyYzFm
ZWM1MDFkNWMzYWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9yZW1vdmUtb2JqZWN0c3RvcmUuanMKQEAgLTAsMCArMSwx
MDkgQEAKKy8vIG9yaWdpbmFsIHRlc3Q6CisvLyBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemls
bGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X3JlbW92ZV9vYmplY3RTdG9yZS5o
dG1sP2ZvcmNlPTEKKy8vIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBv
cnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi9yZXNvdXJj
ZXMvc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBkZWxldGlu
ZyBhbiBvYmplY3Qgc3RvcmUiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVu
ZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAg
IGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBl
dmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZSgiZGIu
b2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUFuZFBvcHVsYXRl
T2JqZWN0U3RvcmUoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBv
YmplY3RTdG9yZU5hbWUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZU5hbWUgPSAnT2JqZWN0cyc7
Iik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSwgeyBrZXlQYXRoOiAnZm9vJyB9KTsiKTsKKwor
ICAgIGFkZGVkQ291bnQgPSBldmFsQW5kTG9nKCJhZGRlZENvdW50ID0gMDsiKTsKKyAgICBmb3Ig
KGkgPSAwOyBpIDwgMTAwOyBpKyspIHsKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoe2ZvbzogaX0pOyIpOworICAgICAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgaWYgKCsrYWRkZWRDb3VudCA9PSAx
MDApIHsKKyAgICAgICAgICAgICAgICBjaGVja09iamVjdFN0b3JlKCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNoZWNrT2JqZWN0U3RvcmUoKQorewor
ICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIxIik7CisgICAgc2hv
dWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMuaXRlbSgwKSIsICJvYmplY3RTdG9yZU5hbWUiKTsK
KworICAgIHJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcyJyk7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0
U2V0VmVyc2lvbjI7Cit9CisKK2Z1bmN0aW9uIHBvc3RTZXRWZXJzaW9uMigpCit7CisgICAgZXZh
bEFuZExvZygiZGIuZGVsZXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmUubmFtZSk7Iik7CisgICAg
c2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjAiKTsKKworICAgIG9iamVj
dFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShv
YmplY3RTdG9yZU5hbWUsIHsga2V5UGF0aDogJ2ZvbycgfSk7Iik7CisgICAgc2hvdWxkQmUoImRi
Lm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjEiKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0
U3RvcmVOYW1lcy5pdGVtKDApIiwgIm9iamVjdFN0b3JlTmFtZSIpOworCisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFy
Z2V0LnJlc3VsdCIsICJudWxsIik7CisgICAgICAgIGRlbGV0ZVNlY29uZE9iamVjdFN0b3JlKCk7
CisgICAgfQorfQorCitmdW5jdGlvbiBkZWxldGVTZWNvbmRPYmplY3RTdG9yZSgpCit7CisgICAg
ZXZhbEFuZExvZygiZGIuZGVsZXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmUubmFtZSk7Iik7Cisg
ICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjAiKTsKKyAgICBzZXRW
ZXJzaW9uMygpOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uMygpCit7CisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCczJyk7Iik7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBwb3N0U2V0VmVyc2lvbjM7Cit9CisKK2Z1bmN0aW9uIHBvc3RTZXRWZXJzaW9uMygpCit7
CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9i
amVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSwgeyBrZXlQYXRoOiAnZm9vJyB9KTsiKTsKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZCh7Zm9vOidiYXIn
fSk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVUaGlyZE9iamVjdFN0b3JlOworfQorCitmdW5j
dGlvbiBkZWxldGVUaGlyZE9iamVjdFN0b3JlKCkKK3sKKyAgICBldmFsQW5kTG9nKCJkYi5kZWxl
dGVPYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpOyIpOworICAgIGZpbmlzaEpTVGVzdCgpOwor
fQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvdmVyc2lvbmNoYW5n
ZS1hYm9ydC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3Vy
Y2VzL3ZlcnNpb25jaGFuZ2UtYWJvcnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDNlYTJjYzA3MThmZjVjZGUw
ZjlkMGU4MjFmYzE5ZmJhZTI2NGZjOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL3ZlcnNpb25jaGFuZ2UtYWJvcnQuanMK
QEAgLTAsMCArMSw1NyBAQAorLy8gb3JpZ2luYWwgdGVzdDoKKy8vIGh0dHA6Ly9teHIubW96aWxs
YS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3Rfc2V0VmVyc2lv
bl9hYm9ydC5odG1sCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisvLyAiIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorLy8gICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKworaWYgKHRoaXMuaW1w
b3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vcmVzb3Vy
Y2VzL3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBhYm9y
dGluZyBzZXRWZXJzaW9uIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRv
clByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBk
ZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZh
bEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgaW5pdGlhbFZlcnNpb24g
PSBldmFsQW5kTG9nKCJpbml0aWFsVmVyc2lvbiA9IGRiLnZlcnNpb247Iik7CisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcyJykiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQorewor
ICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxB
bmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycpOyIpOworICAg
IHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIxIik7CisKKyAgICBpbmRl
eCA9IGV2YWxBbmRMb2coImluZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ2JhcicsICdi
YXonKTsiKTsKKyAgICBzaG91bGRCZSgib2JqZWN0U3RvcmUuaW5kZXhOYW1lcy5sZW5ndGgiLCAi
MSIpOworCisgICAgZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB1bmV4cGVj
dGVkU3VjY2Vzc0NhbGxiYWNrOworICAgIGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5vbmFib3J0
ID0gcG9zdEFib3J0OworICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5h
Ym9ydCgpOyIpOworfQorCitmdW5jdGlvbiBwb3N0QWJvcnQoKQoreworICAgIHNob3VsZEJlKCJk
Yi52ZXJzaW9uIiwgImluaXRpYWxWZXJzaW9uIik7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0
b3JlTmFtZXMubGVuZ3RoIiwgIjAiKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0
KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvdmVyc2lvbmNoYW5nZS5qcyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL3ZlcnNpb25jaGFu
Z2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzNiNWMyNjExNmQyYmRmNjc1MTUxNDM3OTBjNWRhNzdmMmE2MDgx
YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEvcmVzb3VyY2VzL3ZlcnNpb25jaGFuZ2UuanMKQEAgLTAsMCArMSwxMDEgQEAKKy8vIG9yaWdp
bmFsIHRlc3Q6CisvLyBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2Rv
bS9pbmRleGVkREIvdGVzdC90ZXN0X3NldFZlcnNpb25fZXZlbnRzLmh0bWwKKy8vIGxpY2Vuc2Ug
b2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0
U2NyaXB0cygnLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsK
KyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi9yZXNvdXJjZXMvc2hhcmVkLmpzJyk7Cit9CisKK2Rl
c2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIHRyaWdnZXJpbmcgdmVyc2lvbmNoYW5nZSBldmVu
dCIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwor
CisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAi
TXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5v
cGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1
Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYjEgPSBldmFsQW5kTG9nKCJkYjEg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgdmVyc2lvbkNoYW5nZUV2ZW50Q291bnQgPSBl
dmFsQW5kTG9nKCJ2ZXJzaW9uQ2hhbmdlRXZlbnRDb3VudCA9IDA7Iik7CisgICAgZGVidWcoImRi
MSB3aWxsIGJlIG9wZW4gd2hlbiB3ZSBjYWxsIGRiMi5zZXRWZXJzaW9uLCB3aGljaCB3aWxsIHRy
aWdnZXIgdmVyc2lvbmNoYW5nZSBvbiBkYjEiKTsKKyAgICBkYjEub252ZXJzaW9uY2hhbmdlID0g
ZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldCIsICJkYjEi
KTsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50LnZlcnNpb24iLCAiJzEnIik7CisgICAgICAgIHZl
cnNpb25DaGFuZ2VFdmVudENvdW50Kys7CisgICAgICAgIHNob3VsZEJlKCJ2ZXJzaW9uQ2hhbmdl
RXZlbnRDb3VudCIsICIxIik7CisgICAgICAgIGRlYnVnKCJjbG9zZSBkYjEgbm93IHNvIHZlcnNp
b25jaGFuZ2UgZG9lc24ndCB0cmlnZ2VyIG9uIGRiMSBhZ2FpbiB3aGVuIHdlIGNhbGwgZGIzLnNl
dFZlcnNpb24iKTsKKyAgICAgICAgZXZhbEFuZExvZygiZGIxLmNsb3NlKCk7Iik7CisgICAgfTsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRp
b24pIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczI7Cit9CisKK2Z1bmN0aW9uIG9wZW5T
dWNjZXNzMigpCit7CisgICAgZGIyID0gZXZhbEFuZExvZygiZGIyID0gZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOworICAgIGRlYnVnKCJkYjIgd2lsbCBiZSBvcGVuIHdoZW4gd2UgY2FsbCBkYjMuc2V0
VmVyc2lvbiwgd2hpY2ggd2lsbCB0cmlnZ2VyIHZlcnNpb25jaGFuZ2Ugb24gZGIyIik7CisgICAg
ZGIyLm9udmVyc2lvbmNoYW5nZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIHQgPSBldmVu
dC50YXJnZXQ7CisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAiZGIyIik7CisgICAg
ICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQudmVyc2lvbiIsICInMSciKTsKKyAgICAgICAgc2hv
dWxkQmUoImV2ZW50LnZlcnNpb24iLCAiJzInIik7CisgICAgICAgIHZlcnNpb25DaGFuZ2VFdmVu
dENvdW50Kys7CisgICAgICAgIHNob3VsZEJlKCJ2ZXJzaW9uQ2hhbmdlRXZlbnRDb3VudCIsICIy
Iik7CisgICAgICAgIGRlYnVnKCJkb24ndCBjbG9zZSBkYjIsIHNvIGl0IHdpbGwgYmxvY2sgZGIz
LnNldFZlcnNpb24iKTsKKyAgICB9CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBkYjIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0U2V0VmVyc2lvbjsK
KyAgICByZXF1ZXN0Lm9uYmxvY2tlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIHRlc3RQ
YXNzZWQoImRiMiByZWNlaXZlZCBibG9ja2VkIGV2ZW50Iik7CisgICAgfQorfQorCitmdW5jdGlv
biBwb3N0U2V0VmVyc2lvbigpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQi
LCAiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdl
dC50cmFuc2FjdGlvbi5tb2RlIiwgIklEQlRyYW5zYWN0aW9uLlZFUlNJT05fQ0hBTkdFIik7Cisg
ICAgc2hvdWxkQmUoImRiMi52ZXJzaW9uIiwgIicxJyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbik7Iik7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczM7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzMygp
Cit7CisgICAgZGIzID0gZXZhbEFuZExvZygiZGIzID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiMy5zZXRWZXJzaW9uKCcyJyk7
Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAg
ZGVidWcoInRoaXMgcmVxdWVzdCB3aWxsIGJsb2NrIGJlY2F1c2UgZGIyIGlzIHN0aWxsIG9wZW4i
KTsKKyAgICByZXF1ZXN0Lm9uYmxvY2tlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIHNo
b3VsZEJlKCJldmVudC50YXJnZXQuc291cmNlIiwgImRiMyIpOworICAgICAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0LnNvdXJjZS52ZXJzaW9uIiwgIicxJyIpOworICAgICAgICBzaG91bGRCZSgi
ZXZlbnQudmVyc2lvbiIsICInMiciKTsKKyAgICAgICAgdmVyc2lvbkNoYW5nZUV2ZW50Q291bnQr
KzsKKyAgICAgICAgZGVidWcoImNsb3NlIGRiMiBub3cgc28gb25zdWNjZXNzIHdpbGwgYmUgY2Fs
bGVkIik7CisgICAgICAgIGV2YWxBbmRMb2coImRiMi5jbG9zZSgpOyIpOworICAgIH0KKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RTZXRWZXJzaW9uMjsKK30KKworZnVuY3Rpb24gcG9zdFNl
dFZlcnNpb24yKCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJldmVu
dC50YXJnZXQudHJhbnNhY3Rpb24iKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5z
YWN0aW9uLm1vZGUiLCAiSURCVHJhbnNhY3Rpb24uVkVSU0lPTl9DSEFOR0UiKTsKKyAgICBzaG91
bGRCZSgiZGIzLnZlcnNpb24iLCAiJzInIik7CisgICAgc2hvdWxkQmUoInZlcnNpb25DaGFuZ2VF
dmVudENvdW50IiwgIjMiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvdmVyc2lvbmNoYW5nZS1hYm9ydC5odG1sIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS92ZXJzaW9uY2hhbmdlLWFib3J0Lmh0bWwKaW5kZXgg
NzJkZWRjOGU0ZDdmNGIwMWJlMzkwYzhmNDBhNmNmYjVhYTUzZWIzMi4uODFmY2E3M2VjZWVkNzBj
Y2I2N2I0NmNmY2E0M2ZjNTI0ZWMwZjFlZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS92ZXJzaW9uY2hhbmdlLWFib3J0Lmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS92ZXJzaW9uY2hhbmdlLWFib3J0Lmh0bWwK
QEAgLTEsNjcgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLQotICBvcmlnaW5hbCB0ZXN0
OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIv
dGVzdC90ZXN0X3NldFZlcnNpb25fYWJvcnQuaHRtbAotICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRl
c3Q6Ci0gICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KLSAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8gIgotLS0+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQot
ZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgYWJvcnRpbmcgc2V0VmVyc2lvbiIpOwotCi1m
dW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFt
ZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBE
YXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUs
IGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0
aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFy
Z2V0LnJlc3VsdCIpOwotICAgIGluaXRpYWxWZXJzaW9uID0gZXZhbEFuZExvZygiaW5pdGlhbFZl
cnNpb24gPSBkYi52ZXJzaW9uOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gZGIuc2V0VmVyc2lvbignMicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRh
dGFiYXNlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
fQotCi1mdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKLXsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9y
ZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nKTsiKTsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3Rv
cmVOYW1lcy5sZW5ndGgiLCAiMSIpOwotCi0gICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9
IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdiYXInLCAnYmF6Jyk7Iik7Ci0gICAgc2hvdWxkQmUo
Im9iamVjdFN0b3JlLmluZGV4TmFtZXMubGVuZ3RoIiwgIjEiKTsKLQotICAgIGV2ZW50LnRhcmdl
dC50cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKLSAg
ICBldmVudC50YXJnZXQudHJhbnNhY3Rpb24ub25hYm9ydCA9IHBvc3RBYm9ydDsKLSAgICBldmFs
QW5kTG9nKCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24uYWJvcnQoKTsiKTsKLX0KLQotZnVuY3Rp
b24gcG9zdEFib3J0KCkKLXsKLSAgICBzaG91bGRCZSgiZGIudmVyc2lvbiIsICJpbml0aWFsVmVy
c2lvbiIpOwotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIwIik7
Ci0KLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvdmVyc2lvbmNoYW5nZS1hYm9ydC5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS92ZXJzaW9uY2hhbmdlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL3ZlcnNpb25jaGFuZ2UuaHRtbAppbmRleCBmMDU4ZmQ1ZGIx
MzBiZTkxNWVkOGM4ODE2M2Y1ODc3MTI3MTg5YWE4Li4yZmZmNmIxYTJmMjczMmVmMzUzNDQwODYz
ZWRlNjg5MDZkNjNlNjFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL3ZlcnNpb25jaGFuZ2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL3ZlcnNpb25jaGFuZ2UuaHRtbApAQCAtMSwxMTIgKzEsMTAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPCEtLQotICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEu
b3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X3NldFZlcnNpb25f
ZXZlbnRzLmh0bWwKLSAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgotICAgICIgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCi0gICAgICBodHRwOi8vY3Jl
YXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKLS0tPgogPGh0bWw+CiA8
aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9z
Y3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IElu
ZGV4ZWREQidzIHRyaWdnZXJpbmcgdmVyc2lvbmNoYW5nZSBldmVudCIpOwotCi1mdW5jdGlvbiB0
ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYu
bG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0
aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5T
dWNjZXNzKCkKLXsKLSAgICBkYjEgPSBldmFsQW5kTG9nKCJkYjEgPSBldmVudC50YXJnZXQucmVz
dWx0Iik7Ci0gICAgdmVyc2lvbkNoYW5nZUV2ZW50Q291bnQgPSBldmFsQW5kTG9nKCJ2ZXJzaW9u
Q2hhbmdlRXZlbnRDb3VudCA9IDA7Iik7Ci0gICAgZGVidWcoImRiMSB3aWxsIGJlIG9wZW4gd2hl
biB3ZSBjYWxsIGRiMi5zZXRWZXJzaW9uLCB3aGljaCB3aWxsIHRyaWdnZXIgdmVyc2lvbmNoYW5n
ZSBvbiBkYjEiKTsKLSAgICBkYjEub252ZXJzaW9uY2hhbmdlID0gZnVuY3Rpb24oZXZlbnQpIHsK
LSAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldCIsICJkYjEiKTsKLSAgICAgICAgc2hvdWxk
QmUoImV2ZW50LnZlcnNpb24iLCAiJzEnIik7Ci0gICAgICAgIHZlcnNpb25DaGFuZ2VFdmVudENv
dW50Kys7Ci0gICAgICAgIHNob3VsZEJlKCJ2ZXJzaW9uQ2hhbmdlRXZlbnRDb3VudCIsICIxIik7
Ci0gICAgICAgIGRlYnVnKCJjbG9zZSBkYjEgbm93IHNvIHZlcnNpb25jaGFuZ2UgZG9lc24ndCB0
cmlnZ2VyIG9uIGRiMSBhZ2FpbiB3aGVuIHdlIGNhbGwgZGIzLnNldFZlcnNpb24iKTsKLSAgICAg
ICAgZXZhbEFuZExvZygiZGIxLmNsb3NlKCk7Iik7Ci0gICAgfTsKLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBvcGVuU3VjY2VzczI7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzMigpCi17Ci0gICAg
ZGIyID0gZXZhbEFuZExvZygiZGIyID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIGRlYnVn
KCJkYjIgd2lsbCBiZSBvcGVuIHdoZW4gd2UgY2FsbCBkYjMuc2V0VmVyc2lvbiwgd2hpY2ggd2ls
bCB0cmlnZ2VyIHZlcnNpb25jaGFuZ2Ugb24gZGIyIik7Ci0gICAgZGIyLm9udmVyc2lvbmNoYW5n
ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIHQgPSBldmVudC50YXJnZXQ7Ci0gICAgICAg
IHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAiZGIyIik7Ci0gICAgICAgIHNob3VsZEJlKCJldmVu
dC50YXJnZXQudmVyc2lvbiIsICInMSciKTsKLSAgICAgICAgc2hvdWxkQmUoImV2ZW50LnZlcnNp
b24iLCAiJzInIik7Ci0gICAgICAgIHZlcnNpb25DaGFuZ2VFdmVudENvdW50Kys7Ci0gICAgICAg
IHNob3VsZEJlKCJ2ZXJzaW9uQ2hhbmdlRXZlbnRDb3VudCIsICIyIik7Ci0gICAgICAgIGRlYnVn
KCJkb24ndCBjbG9zZSBkYjIsIHNvIGl0IHdpbGwgYmxvY2sgZGIzLnNldFZlcnNpb24iKTsKLSAg
ICB9Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYjIuc2V0VmVyc2lvbign
MScpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0U2V0VmVyc2lvbjsKLSAgICByZXF1ZXN0Lm9uYmxv
Y2tlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIHRlc3RQYXNzZWQoImRiMiByZWNlaXZl
ZCBibG9ja2VkIGV2ZW50Iik7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBwb3N0U2V0VmVyc2lvbigp
Ci17Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAiZXZlbnQudGFyZ2V0LnRy
YW5zYWN0aW9uIik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2Rl
IiwgIklEQlRyYW5zYWN0aW9uLlZFUlNJT05fQ0hBTkdFIik7Ci0gICAgc2hvdWxkQmUoImRiMi52
ZXJzaW9uIiwgIicxJyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBp
bmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbik7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVu
U3VjY2VzczM7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzMygpCi17Ci0gICAgZGIzID0gZXZh
bEFuZExvZygiZGIzID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygicmVxdWVzdCA9IGRiMy5zZXRWZXJzaW9uKCcyJyk7Iik7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgZGVidWcoInRoaXMgcmVxdWVz
dCB3aWxsIGJsb2NrIGJlY2F1c2UgZGIyIGlzIHN0aWxsIG9wZW4iKTsKLSAgICByZXF1ZXN0Lm9u
YmxvY2tlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50YXJn
ZXQuc291cmNlIiwgImRiMyIpOwotICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnNvdXJj
ZS52ZXJzaW9uIiwgIicxJyIpOwotICAgICAgICBzaG91bGRCZSgiZXZlbnQudmVyc2lvbiIsICIn
MiciKTsKLSAgICAgICAgdmVyc2lvbkNoYW5nZUV2ZW50Q291bnQrKzsKLSAgICAgICAgZGVidWco
ImNsb3NlIGRiMiBub3cgc28gb25zdWNjZXNzIHdpbGwgYmUgY2FsbGVkIik7Ci0gICAgICAgIGV2
YWxBbmRMb2coImRiMi5jbG9zZSgpOyIpOwotICAgIH0KLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IHBvc3RTZXRWZXJzaW9uMjsKLX0KLQotZnVuY3Rpb24gcG9zdFNldFZlcnNpb24yKCkKLXsKLSAg
ICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJldmVudC50YXJnZXQudHJhbnNhY3Rp
b24iKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm1vZGUiLCAiSURC
VHJhbnNhY3Rpb24uVkVSU0lPTl9DSEFOR0UiKTsKLSAgICBzaG91bGRCZSgiZGIzLnZlcnNpb24i
LCAiJzInIik7Ci0gICAgc2hvdWxkQmUoInZlcnNpb25DaGFuZ2VFdmVudENvdW50IiwgIjMiKTsK
LSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy92ZXJzaW9uY2hhbmdlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgog
PC9ib2R5PgogPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tdXRhdGluZy1jdXJzb3IuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L211dGF0aW5nLWN1cnNvci5odG1sCmluZGV4IDM0YjE5YjliYmEyYjhiZDM1N2NjY2ZiNTg4ODdl
ODE5MDM1ODJmNDcuLjQyZWYwMzBjZTNhNTQxYzUyZDM1YTRmNGRlNDAxMmU2NmI0MGFlNzIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL211dGF0aW5nLWN1cnNvci5o
dG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL211dGF0aW5nLWN1cnNvci5o
dG1sCkBAIC00LDEzOCArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+
PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0
IG11dGF0aW5nIGFuIEluZGV4ZWREQidzIG9iamVjdHN0b3JlIGZyb20gYSBjdXJzb3IuIik7Ci0K
LXRlc3QoKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMo
KTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ211dGF0aW5nLWN1
cnNvcicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3Bl
blN1Y2Nlc3MoKQotewotICAgIHZhciBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJzEn
KSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNl
dFZlcnNpb25TdWNjZXNzKCkKLXsKLSAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsK
LSAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJv
cnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gb3Bl
bkZvcndhcmRDdXJzb3I7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAg
dmFyIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnc3RvcmUnKSIpOwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgxLCAx
KS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKLSAgICBldmFsQW5kTG9nKCJv
YmplY3RTdG9yZS5hZGQoMiwgMikub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7
Ci0gICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKDMsIDMpLm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCg0LCA0
KS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKLX0KLQotZnVuY3Rpb24gb3Bl
bkZvcndhcmRDdXJzb3IoKQotewotICAgIGRlYnVnKCJvcGVuRm9yd2FyZEN1cnNvcigpIik7Ci0g
ICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlJ10sIElEQlRyYW5z
YWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9y
dENhbGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBmb3J3YXJkQ3Vyc29yQ29tcGxldGU7
Ci0KLSAgICBzZWxmLm9iamVjdFN0b3JlID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUo
J3N0b3JlJykiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUub3BlbkN1
cnNvcigpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmb3J3YXJkQ3Vyc29yOwotICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHNlbGYuY3Vyc29y
U3RlcHMgPSAwOwotfQotCi1mdW5jdGlvbiBmb3J3YXJkQ3Vyc29yKCkKLXsKLSAgICBkZWJ1Zygi
Zm9yd2FyZEN1cnNvcigpIik7Ci0gICAgc2VsZi5jdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0
OwotCi0gICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkgewotICAgICAgICBzaG91
bGRCZSgiY3Vyc29yU3RlcHMiLCAiNSIpOwotCi0gICAgICAgIC8vIExldCB0aGUgdHJhbnNhY3Rp
b24gZmluaXNoLgotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZGVidWcoKytjdXJzb3JT
dGVwcyk7Ci0gICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAiY3Vyc29yU3RlcHMiKTsKLSAgICBz
aG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgImN1cnNvclN0ZXBzIik7Ci0KLSAgICBpZiAoY3Vyc29y
U3RlcHMgPT0gMSkgewotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0
LnNvdXJjZS5hZGQoNSwgNSkiKTsKLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlv
bigpIHsgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCkiKTsgfQotICAgICAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB9IGVsc2UgewotICAgICAg
ICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKSIpOwotICAgIH0KLX0KLQotZnVuY3Rpb24g
Zm9yd2FyZEN1cnNvckNvbXBsZXRlKCkKLXsKLSAgICBkZWJ1ZygiZm9yd2FyZEN1cnNvckNvbXBs
ZXRlKCkiKTsKLSAgICBvcGVuUmV2ZXJzZUN1cnNvcigpCi19Ci0KLWZ1bmN0aW9uIG9wZW5SZXZl
cnNlQ3Vyc29yKCkKLXsKLSAgICBkZWJ1Zygib3BlblJldmVyc2VDdXJzb3IoKSIpOwotICAgIGV2
YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZSddLCBJREJUcmFuc2FjdGlv
bi5SRUFEX1dSSVRFKSIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxs
YmFjazsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gcmV2ZXJzZUN1cnNvckNvbXBsZXRlOwotCi0g
ICAgc2VsZi5vYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdzdG9y
ZScpIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLm9wZW5DdXJzb3Io
bnVsbCwgSURCQ3Vyc29yLlBSRVYpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSByZXZlcnNl
Q3Vyc29yOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
ICAgIHNlbGYuY3Vyc29yU3RlcHMgPSA2OwotfQotCi1mdW5jdGlvbiByZXZlcnNlQ3Vyc29yKCkK
LXsKLSAgICBkZWJ1ZygicmV2ZXJzZUN1cnNvcigpIik7Ci0gICAgc2VsZi5jdXJzb3IgPSBldmVu
dC50YXJnZXQucmVzdWx0OwotCi0gICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkg
ewotICAgICAgICBzaG91bGRCZSgiY3Vyc29yU3RlcHMiLCAiMCIpOwotCi0gICAgICAgIC8vIExl
dCB0aGUgdHJhbnNhY3Rpb24gZmluaXNoLgotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
ZGVidWcoLS1jdXJzb3JTdGVwcyk7Ci0gICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAiY3Vyc29y
U3RlcHMiKTsKLSAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgImN1cnNvclN0ZXBzIik7Ci0K
LSAgICBpZiAoY3Vyc29yU3RlcHMgPT0gMikgewotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiZXZlbnQudGFyZ2V0LnNvdXJjZS5hZGQoMCwgMCkiKTsKLSAgICAgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbigpIHsgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCkiKTsgfQot
ICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB9
IGVsc2UgewotICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKSIpOwotICAgIH0K
LX0KLQotZnVuY3Rpb24gcmV2ZXJzZUN1cnNvckNvbXBsZXRlKCkKLXsKLSAgICBkZWJ1ZygicmV2
ZXJzZUN1cnNvckNvbXBsZXRlKCkiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi08L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbXV0YXRpbmctY3Vyc29yLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvb2JqZWN0U3RvcmUtcmVxdWlyZWQtYXJndW1lbnRzLmh0bWwgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RTdG9yZS1yZXF1aXJlZC1hcmd1bWVudHMu
aHRtbAppbmRleCA2YTJmOTgxYWEyZTExYzVmNjJiYzgxYjI3YmI4ODZhNGVmNTBjNzA2Li44MTFj
NGUwMzkzZGExYTYxOWQ1ZGRmYjUzNDUzNWFjZGQ2NjhmOGUzIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RTdG9yZS1yZXF1aXJlZC1hcmd1bWVudHMuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RTdG9yZS1yZXF1aXJl
ZC1hcmd1bWVudHMuaHRtbApAQCAtMSw1NCArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+CiA8aHRt
bD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Nj
cmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5k
ZXhlZERCIG9iamVjdCBzdG9yZSByZXF1aXJlZCBhcmd1bWVudHMiKTsKLQotZnVuY3Rpb24gdGVz
dCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxv
Y2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlv
bikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3Vj
Y2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbign
MScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0
b3JlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQot
Ci1mdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKLXsKLSAgICBkZWxldGVB
bGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nKTsiKTsKLSAgICBzaG91bGRUaHJv
dygib2JqZWN0U3RvcmUucHV0KCk7Iik7Ci0gICAgc2hvdWxkVGhyb3coIm9iamVjdFN0b3JlLmFk
ZCgpOyIpOwotICAgIHNob3VsZFRocm93KCJvYmplY3RTdG9yZS5kZWxldGUoKTsiKTsKLSAgICBz
aG91bGRUaHJvdygib2JqZWN0U3RvcmUuZ2V0KCk7Iik7Ci0gICAgc2hvdWxkVGhyb3coIm9iamVj
dFN0b3JlLmNyZWF0ZUluZGV4KCk7Iik7Ci0gICAgc2hvdWxkVGhyb3coIm9iamVjdFN0b3JlLmNy
ZWF0ZUluZGV4KCdmb28nKTsiKTsKLSAgICBzaG91bGRUaHJvdygib2JqZWN0U3RvcmUuaW5kZXgo
KTsiKTsKLSAgICBzaG91bGRUaHJvdygib2JqZWN0U3RvcmUuZGVsZXRlSW5kZXgoKTsiKTsKLSAg
ICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9vYmplY3RTdG9yZS1yZXF1aXJlZC1hcmd1bWVudHMuanMiPjwvc2NyaXB0
PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1hdXRvaW5jcmVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1hdXRvaW5jcmVtZW50Lmh0bWwKaW5kZXgg
NDA1MWZhNGEwOTc1NTI3YzM2ZTc0NGY2YWEyNmViYjAwMzM5ODQ2ZS4uZGJmNjg1OWU1ODM2MzU2
ZGQxZGFhYzNiYjdhMmIyYjMwNjFjMzc4MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYXV0b2luY3JlbWVudC5odG1sCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWF1dG9pbmNyZW1lbnQuaHRtbApAQCAt
NCwyMDAgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0
PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVk
REIncyBJREJPYmplY3RTdG9yZSBhdXRvLWluY3JlbWVudCBmZWF0dXJlLiIpOwotCi1mdW5jdGlv
biB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJpbmRleGVkREIub3Blbignb2JqZWN0c3RvcmUtYXV0b2luY3JlbWVudCcpIik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3Mo
KQotewotICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOwotICAgIHNlbGYuZGIgPSBldmFsQW5k
TG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBzZXRWZXJzaW9uU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQotewotICAg
IGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOwotICAgIHNlbGYudHJhbnMgPSBldmFsQW5k
TG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRy
YW5zICE9PSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxi
YWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBzZXRWZXJzaW9uQ29tcGxldGVkOwotCi0gICAg
ZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIGRlYnVnKCJjcmVhdGVPYmplY3RTdG9y
ZSgpOiIpOwotICAgIHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9i
amVjdFN0b3JlKCdTdG9yZVdpdGhLZXlQYXRoJywge2tleVBhdGg6ICdpZCcsIGF1dG9JbmNyZW1l
bnQ6IHRydWV9KSIpOwotICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdTdG9y
ZVdpdGhBdXRvSW5jcmVtZW50Jywge2F1dG9JbmNyZW1lbnQ6IHRydWV9KSIpOwotICAgIGV2YWxB
bmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdQbGFpbk9sZFN0b3JlJywge2F1dG9JbmNyZW1l
bnQ6IGZhbHNlfSkiKTsKLSAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnU3Rv
cmVXaXRoTG9uZ0tleVBhdGgnLCB7a2V5UGF0aDogJ2EuYi5jLmlkJywgYXV0b0luY3JlbWVudDog
dHJ1ZX0pIik7Ci0gICAgdmFyIHN0b3JlTmFtZXMgPSBldmFsQW5kTG9nKCJzdG9yZU5hbWVzID0g
ZGIub2JqZWN0U3RvcmVOYW1lcyIpOwotCi0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzdG9y
ZS5uYW1lIiwgIlN0b3JlV2l0aEtleVBhdGgiKTsKLSAgICBzaG91bGRCZSgic3RvcmUua2V5UGF0
aCIsICInaWQnIik7Ci0gICAgc2hvdWxkQmUoInN0b3JlTmFtZXMuY29udGFpbnMoJ1N0b3JlV2l0
aEtleVBhdGgnKSIsICJ0cnVlIik7Ci0gICAgc2hvdWxkQmUoInN0b3JlTmFtZXMuY29udGFpbnMo
J1N0b3JlV2l0aEF1dG9JbmNyZW1lbnQnKSIsICJ0cnVlIik7Ci0gICAgc2hvdWxkQmUoInN0b3Jl
TmFtZXMuY29udGFpbnMoJ1BsYWluT2xkU3RvcmUnKSIsICJ0cnVlIik7Ci0gICAgc2hvdWxkQmUo
InN0b3JlTmFtZXMubGVuZ3RoIiwgIjQiKTsKLQotICAgIC8vIExldCB0aGUgc2V0VmVyc2lvbiB0
cmFuc2FjdGlvbiBjb21wbGV0ZS4KLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvbkNvbXBsZXRlZCgp
Ci17Ci0gICAgZGVidWcoInNldFZlcnNpb25Db21wbGV0ZWQoKToiKTsKLQotICAgIHNlbGYudHJh
bnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnU3RvcmVXaXRoS2V5UGF0
aCcsICdTdG9yZVdpdGhBdXRvSW5jcmVtZW50JywgJ1BsYWluT2xkU3RvcmUnXSwgSURCVHJhbnNh
Y3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0
Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IHRlc3RMb25nS2V5UGF0aDsKLQotICAg
IHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdTdG9y
ZVdpdGhLZXlQYXRoJykiKTsKLQotICAgIGRlYnVnKCJJbnNlcnQgaW50byBvYmplY3Qgc3RvcmUg
d2l0aCBhdXRvIGluY3JlbWVudCBhbmQga2V5IHBhdGgsIHdpdGgga2V5IGluIHRoZSBvYmplY3Qu
Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7bmFtZTogJ0plZmZlcnNz
b24nLCBudW1iZXI6ICc3MDEwJywgaWQ6IDN9KSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
YWRkSmVmZmVyc3NvblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGFkZEplZmZlcnNzb25TdWNjZXNzKCkKLXsKLSAg
ICBkZWJ1ZygiYWRkSmVmZmVyc3NvblN1Y2Nlc3MoKToiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQu
dGFyZ2V0LnJlc3VsdCIsICIzIik7Ci0KLSAgICBkZWJ1ZygiSW5zZXJ0IGludG8gb2JqZWN0IHN0
b3JlIHdpdGggYXV0byBpbmNyZW1lbnQgYW5kIGtleSBwYXRoLCB3aXRob3V0IGtleSBpbiB0aGUg
b2JqZWN0LiIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe25hbWU6ICdM
aW5jb2xuJywgbnVtYmVyOiAnNzAxMid9KSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRk
TGluY29sbldpdGhJbmplY3RLZXlTdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBhZGRMaW5jb2xuV2l0aEluamVjdEtl
eVN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJhZGRMaW5jb2xuV2l0aEluamVjdEtleVN1Y2Nlc3Mo
KToiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICI0Iik7Ci0KLSAgICBy
ZXN1bHQgPSBldmFsQW5kTG9nKCJzdG9yZS5nZXQoNCkiKTsKLSAgICByZXN1bHQub25zdWNjZXNz
ID0gZ2V0TGluY29sbkFmdGVySW5qZWN0ZWRLZXlTdWNjZXNzOwotICAgIHJlc3VsdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGdldExpbmNvbG5BZnRl
ckluamVjdGVkS2V5U3VjY2VzcygpCi17Ci0gICAgZGVidWcoImdldExpbmNvbG5BZnRlckluamVj
dGVkS2V5U3VjY2VzcygpOiIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFy
Z2V0LnJlc3VsdC5uYW1lIiwgIkxpbmNvbG4iKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
ImV2ZW50LnRhcmdldC5yZXN1bHQubnVtYmVyIiwgIjcwMTIiKTsKLSAgICBzaG91bGRCZSgiZXZl
bnQudGFyZ2V0LnJlc3VsdC5pZCIsICI0Iik7Ci0KLSAgICBzZWxmLnN0b3JlID0gZXZhbEFuZExv
Zygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnU3RvcmVXaXRoQXV0b0luY3JlbWVudCcpIik7
Ci0gICAgZGVidWcoIkluc2VydCBpbnRvIG9iamVjdCBzdG9yZSB3aXRoIGtleSBnZW4gdXNpbmcg
ZXhwbGljaXQga2V5Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7bmFt
ZTogJ0xpbmNvbG4nLCBudW1iZXI6ICc3MDEyJ30sIDUpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBhZGRMaW5jb2xuV2l0aEV4cGxpY2l0S2V5U3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYWRkTGluY29sbldp
dGhFeHBsaWNpdEtleVN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJhZGRMaW5jb2xuV2l0aEV4cGxp
Y2l0S2V5U3VjY2VzcygpOiIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0Iiwg
IjUiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5nZXQoNSkiKTsKLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldExpbmNvbG5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBnZXRMaW5jb2xuU3Vj
Y2VzcygpCi17Ci0gICAgZGVidWcoImdldExpbmNvbG5TdWNjZXNzKCk6Iik7Ci0gICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0Lm5hbWUiLCAiTGluY29sbiIpOwot
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5udW1iZXIiLCAi
NzAxMiIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLnB1dCh7bmFtZTogJ0Fi
cmFoYW0nLCBudW1iZXI6ICcyMTA3J30pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwdXRB
YnJhaGFtU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLX0KLQotZnVuY3Rpb24gcHV0QWJyYWhhbVN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJw
dXRBYnJhaGFtU3VjY2VzcygpOiIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0
IiwgIjYiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5nZXQoNikiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldEFicmFoYW1TdWNjZXNzOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBnZXRBYnJhaGFt
U3VjY2VzcygpCi17Ci0gICAgZGVidWcoImdldEFicmFoYW1TdWNjZXNzKCk6Iik7Ci0gICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0Lm5hbWUiLCAiQWJyYWhhbSIp
OwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5udW1iZXIi
LCAiMjEwNyIpOwotCi0gICAgc2VsZi5zdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMu
b2JqZWN0U3RvcmUoJ1BsYWluT2xkU3RvcmUnKSIpOwotICAgIGRlYnVnKCJUcnkgYWRkaW5nIHdp
dGggbm8ga2V5IHRvIG9iamVjdCBzdG9yZSB3aXRob3V0IGF1dG8gaW5jcmVtZW50LiIpOwotICAg
IGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmFkZCh7bmFtZTogJ0FkYW0nfSkiLCAiSURC
RGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
c3RvcmUuYWRkKHtuYW1lOiAnQWRhbSd9LCAxKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
YWRkQWRhbVN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGFkZEFkYW1TdWNjZXNzKCkKLXsKLSAgICBkZWJ1ZygiYWRk
QWRhbVN1Y2Nlc3MoKToiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICIx
Iik7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RMb25nS2V5UGF0aCgpCi17Ci0gICAgZGVidWcoInRlc3RM
b25nS2V5UGF0aCgpOiIpOwotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFu
c2FjdGlvbignU3RvcmVXaXRoTG9uZ0tleVBhdGgnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRF
KSIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0
cmFucy5vbmNvbXBsZXRlID0gZmluaXNoSlNUZXN0OwotCi0gICAgc3RvcmUgPSBldmFsQW5kTG9n
KCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdTdG9yZVdpdGhMb25nS2V5UGF0aCcpIik7Ci0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7Zm9vOiAnYmFyJ30pIik7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7Zm9vOiAnYmFyJywgYToge319KSIpOwotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJzdG9yZS5hZGQoe2ZvbzogJ2JhcicsIGE6IHtiOiB7fX19KSIpOwotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJzdG9yZS5hZGQoe2ZvbzogJ2JhcicsIGE6IHtiOiB7Yzoge319fX0pIik7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgY3Vyc29yUmVx
dWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLm9wZW5DdXJzb3IoKSIpOwotICAgIGN1cnNvclJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIGV2YWxBbmRMb2coImV4
cGVjdGVkID0gbnVsbCIpOwotICAgIGV2YWxBbmRMb2coImNvdW50ID0gMCIpOwotICAgIGN1cnNv
clJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewotICAgICAgICBjdXJzb3IgPSBjdXJz
b3JSZXF1ZXN0LnJlc3VsdDsKLSAgICAgICAgaWYgKCFjdXJzb3IpIHsKLSAgICAgICAgICAgIHNo
b3VsZEJlKCJjb3VudCIsICI0Iik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAg
ICAgICAgaWYgKGV4cGVjdGVkID09PSBudWxsKSB7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJl
eHBlY3RlZCA9IGN1cnNvci52YWx1ZS5hLmIuYy5pZCArIDEiKTsKLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuZm9vIiwgIidiYXInIik7Ci0gICAg
ICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmEuYi5jLmlkIiwgImV4cGVjdGVkIik7Ci0g
ICAgICAgICAgICBldmFsQW5kTG9nKCJleHBlY3RlZCA9IGN1cnNvci52YWx1ZS5hLmIuYy5pZCAr
IDEiKTsKLSAgICAgICAgfQotICAgICAgICBjb3VudCsrOwotICAgICAgICBjdXJzb3IuY29udGlu
dWUoKTsKLSAgICB9OwotfQotCi0KLXRlc3QoKTsKLQotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvb2JqZWN0c3RvcmUtYXV0b2luY3JlbWVudC5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL29iamVjdHN0b3JlLWNsZWFyLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9vYmplY3RzdG9yZS1jbGVhci5odG1sCmluZGV4IDY2ZWU1ZGNkMmFlMThhZmIxZDI2YmYy
OWZjMWVlYjAyNjc0MWU1ZTUuLjY4OGEzNThjM2Q5YTUzMWFiZmNhMGM2YWM4NDYwOTRmNjJkNDE0
NWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3Jl
LWNsZWFyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3Rv
cmUtY2xlYXIuaHRtbApAQCAtNCwxMDcgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9z
aGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlw
dGlvbigiVGVzdCBJbmRleGVkREIncyB3ZWJraXRJREJPYmplY3RTdG9yZS5jbGVhcigpLiIpOwot
Ci1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbignb2JqZWN0c3RvcmUtY2xlYXInKSIp
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc3RhcnRTZXRWZXJzaW9uOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzdGFydFNl
dFZlcnNpb24oKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVz
dWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZl
cnNpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9u
IGRlbGV0ZUV4aXN0aW5nKCkKLXsKLSAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVs
bCIpOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIHN0b3JlID0gZXZh
bEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCki
KTsKLQotICAgIHNlbGYuaW5kZXggPSBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnaW5k
ZXhOYW1lJywgJycpIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJzdG9yZS5pbmRleE5hbWVzLmNvbnRh
aW5zKCdpbmRleE5hbWUnKSIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFk
ZCgndmFsdWUnLCAna2V5JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZVNlY29u
ZE9iamVjdFN0b3JlQW5kQWRkVmFsdWU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZVNlY29uZE9iamVjdFN0b3JlQW5k
QWRkVmFsdWUoKQotewotICAgIG90aGVyU3RvcmUgPSBldmFsQW5kTG9nKCJvdGhlclN0b3JlID0g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ290aGVyU3RvcmVOYW1lJywgbnVsbCkiKTsKLQotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJvdGhlclN0b3JlLmFkZCgndmFsdWUnLCAna2V5JykiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFyT2JqZWN0U3RvcmU7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFyT2JqZWN0
U3RvcmUoKQotewotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5jbGVhcigpIik7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhclN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFyU3VjY2Vzcygp
Ci17Ci0gICAgc2hvdWxkQmVVbmRlZmluZWQoImV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5vcGVuQ3Vyc29yKCkiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IG9wZW5DdXJzb3JTdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuQ3Vyc29yU3VjY2Vzcygp
Ci17Ci0gICAgc2hvdWxkQmVOdWxsKCJldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICBpbmRl
eCA9IGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4TmFtZScpIik7Ci0gICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4Lm9wZW5LZXlDdXJzb3IoKSIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gb3BlbktleUN1cnNvclN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5LZXlDdXJzb3JT
dWNjZXNzKCkKLXsKLSAgICBkZWJ1Zygib3BlbktleUN1cnNvclN1Y2Nlc3MoKToiKTsKLSAgICBz
aG91bGRCZU51bGwoImV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICB0cmFucy5vbmNvbXBsZXRl
ID0gc2V0VmVyc2lvbkNvbXBsZXRlOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uQ29tcGxldGUo
KQotewotICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygiZGIudHJhbnNhY3Rpb24oWydvdGhl
clN0b3JlTmFtZSddKSIpOwotICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLSAgICB2YXIgb3RoZXJTdG9yZSA9IGV2YWxBbmRMb2coIm90aGVyU3RvcmUg
PSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnb3RoZXJTdG9yZU5hbWUnKSIpOwotCi0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coIm90aGVyU3RvcmUuZ2V0KCdrZXknKSIpOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZ2V0U3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZ2V0U3VjY2VzcygpCi17Ci0gICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0IiwgInZhbHVlIik7Ci0KLSAgICBm
aW5pc2hKU1Rlc3QoKTsKLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvb2JqZWN0c3RvcmUtY2xlYXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+
CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmpl
Y3RzdG9yZS1jb3VudC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0
c3RvcmUtY291bnQuaHRtbAppbmRleCA1MWUxNDVkZWE3ZmEzY2Y0ZTQ1NGZkM2E3MDcxMDc0YWRj
MTFjMzgyLi5kYTQyM2ZlNGI2N2Q4NWEzMTlkMTllM2Q0Nzg3OTk1YTA4NzY1Yjk0IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jb3VudC5odG1s
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWNvdW50Lmh0
bWwKQEAgLTQsMTQ5ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48
L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3Qg
SW5kZXhlZERCJ3MgSURCT2JqZWN0U3RvcmUuY291bnQoKS4iKTsKLQotZnVuY3Rpb24gdGVzdCgp
Ci17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiaW5kZXhlZERCLm9wZW4oJ29iamVjdHN0b3JlLWNvdW50JykiKTsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGZ1bmN0aW9uKCkgewotICAgICAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOwotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbign
bmV3IHZlcnNpb24nKSIpOwotICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwcmVwYXJlRGF0YWJhc2U7
Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKCkKLXsKLSAgICBkZWJ1Zygi
Iik7Ci0gICAgZGVidWcoInByZXBhcmluZyBkYXRhYmFzZSIpOwotICAgIHNlbGYudHJhbnMgPSBl
dmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRy
dWUoInRyYW5zICE9PSBudWxsIik7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwot
Ci0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdz
dG9yZU5hbWUnLCBudWxsKSIpOwotCi0gICAgZGVidWcoImFkZGluZyAwIC4uLiA5OSIpOwotICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKLSAgICAgICAgcmVxdWVzdCA9IHN0b3Jl
LmFkZChpLCBpKTsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci0gICAgfQotICAgIHRyYW5zLm9uY29tcGxldGUgPSB2ZXJpZnlDb3VudDsKLX0KLQot
ZnVuY3Rpb24gdmVyaWZ5Q291bnQoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygidmVy
aWZ5aW5nIGNvdW50IHdpdGhvdXQgcmFuZ2UiKTsKLSAgICB0cmFucyA9IGV2YWxBbmRMb2coInRy
YW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05M
WSkiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9IG51bGwiKTsKLSAgICB0cmFucy5vbmFi
b3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IHZl
cmlmeUNvdW50V2l0aFJhbmdlOwotCi0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRy
YW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotICAgIHNob3VsZEJlVHJ1ZSgic3RvcmUg
IT0gbnVsbCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdG9yZS5j
b3VudCgpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgIHNob3VsZEJl
VHJ1ZSgidHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXInIik7Ci0gICAgICAgICBzaG91
bGRCZSgicmVxdWVzdC5yZXN1bHQiLCAiMTAwIik7Ci0gICAgICAgICAvLyBsZXQgdGhlIHRyYW5z
YWN0aW9uIGNvbXBsZXRlCi0gICAgfTsKLX0KLQotZnVuY3Rpb24gdmVyaWZ5Q291bnRXaXRoUmFu
Z2UoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygidmVyaWZ5aW5nIGNvdW50IHdpdGgg
cmFuZ2UiKTsKLSAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24o
J3N0b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkiKTsKLSAgICBzaG91bGRCZVRy
dWUoInRyYW5zICE9IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0
Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IHZlcmlmeUNvdW50V2l0aEtleTsKLQot
ICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVO
YW1lJykiKTsKLSAgICBzaG91bGRCZVRydWUoInN0b3JlICE9IG51bGwiKTsKLQotICAgIHZhciB0
ZXN0cyA9IFsKLSAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDk5
LCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogMTAwIH0sCi0gICAgICAgIHsgbG93ZXI6IDAs
IGxvd2VyT3BlbjogdHJ1ZSwgdXBwZXI6IDk5LCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDog
OTkgfSwKLSAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDk5LCB1
cHBlck9wZW46IHRydWUsIGV4cGVjdGVkOiA5OSB9LAotICAgICAgICB7IGxvd2VyOiAwLCBsb3dl
ck9wZW46IHRydWUsIHVwcGVyOiA5OSwgdXBwZXJPcGVuOiB0cnVlLCBleHBlY3RlZDogOTggfSwK
LSAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDEwMCwgdXBwZXJP
cGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDEwMCB9LAotICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9w
ZW46IGZhbHNlLCB1cHBlcjogMTAwLCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogMTAwIH0s
Ci0gICAgICAgIHsgbG93ZXI6IDEwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogMTAwLCB1cHBl
ck9wZW46IGZhbHNlLCBleHBlY3RlZDogOTAgfSwKLSAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJP
cGVuOiBmYWxzZSwgdXBwZXI6IDAsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiAxIH0sCi0g
ICAgICAgIHsgbG93ZXI6IDUwMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDUwMCwgdXBwZXJP
cGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDAgfQotICAgIF07Ci0KLSAgICBmdW5jdGlvbiBuZXh0VGVz
dCgpIHsKLSAgICAgICAgZGVidWcoIiIpOwotICAgICAgICBldmFsQW5kTG9nKCJ0ZXN0ID0gIiAr
IEpTT04uc3RyaW5naWZ5KHRlc3RzLnNoaWZ0KCkpKTsKLSAgICAgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBzdG9yZS5jb3VudChJREJLZXlSYW5nZS5ib3VuZCh0ZXN0Lmxvd2Vy
LCB0ZXN0LnVwcGVyLCB0ZXN0Lmxvd2VyT3BlbiwgdGVzdC51cHBlck9wZW4pKSIpOwotICAgICAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICBzaG91bGRCZVRydWUo
InR5cGVvZiByZXF1ZXN0LnJlc3VsdCA9PSAnbnVtYmVyJyIpOwotICAgICAgICAgICAgIHNob3Vs
ZEJlKCJyZXF1ZXN0LnJlc3VsdCIsIFN0cmluZyh0ZXN0LmV4cGVjdGVkKSk7Ci0KLSAgICAgICAg
ICAgICBpZiAodGVzdHMubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgIG5leHRUZXN0KCk7Ci0g
ICAgICAgICAgICAgfQotICAgICAgICAgICAgIC8vIG90aGVyd2lzZSBsZXQgdGhlIHRyYW5zYWN0
aW9uIGNvbXBsZXRlCi0gICAgICAgIH07Ci0gICAgfQotCi0gICAgbmV4dFRlc3QoKTsKLX0KLQot
ZnVuY3Rpb24gdmVyaWZ5Q291bnRXaXRoS2V5KCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVi
dWcoInZlcmlmeWluZyBjb3VudCB3aXRoIGtleSIpOwotICAgIHRyYW5zID0gZXZhbEFuZExvZygi
dHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9P
TkxZKSIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT0gbnVsbCIpOwotICAgIHRyYW5zLm9u
YWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0g
ZmluaXNoSlNUZXN0OwotCi0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9i
amVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotICAgIHNob3VsZEJlVHJ1ZSgic3RvcmUgIT0gbnVs
bCIpOwotCi0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuY291bnQoTmFOKSIsICJJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRp
b24oInN0b3JlLmNvdW50KHt9KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwot
ICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmNvdW50KC9yZWdleC8pIiwgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0KLSAgICB2YXIgdGVzdHMgPSBbCi0gICAgICAg
IHsga2V5OiAwLCBleHBlY3RlZDogMSB9LAotICAgICAgICB7IGtleTogMTAwLCBleHBlY3RlZDog
MCB9LAotICAgICAgICB7IGtleTogbnVsbCwgZXhwZWN0ZWQ6IDEwMCB9Ci0gICAgXTsKLQotICAg
IGZ1bmN0aW9uIG5leHRUZXN0KCkgewotICAgICAgICBkZWJ1ZygiIik7Ci0gICAgICAgIGV2YWxB
bmRMb2coInRlc3QgPSAiICsgSlNPTi5zdHJpbmdpZnkodGVzdHMuc2hpZnQoKSkpOwotICAgICAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHN0b3JlLmNvdW50KHRlc3Qua2V5KSIp
OwotICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAg
ICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHNob3Vs
ZEJlVHJ1ZSgidHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXInIik7Ci0gICAgICAgICAg
ICBzaG91bGRCZSgicmVxdWVzdC5yZXN1bHQiLCBTdHJpbmcodGVzdC5leHBlY3RlZCkpOwotICAg
ICAgICAgICAgIGlmICh0ZXN0cy5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICAgbmV4dFRlc3Qo
KTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIGxldCB0aGUgdHJh
bnNhY3Rpb24gY29tcGxldGUKLSAgICAgICAgfTsKLSAgICB9Ci0KLSAgICBuZXh0VGVzdCgpOwot
fQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vYmplY3Rz
dG9yZS1jb3VudC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWN1cnNvci5o
dG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY3Vyc29yLmh0
bWwKaW5kZXggY2Q0ZjIyZGNkMDIzZWU5ZmFiMzlkYTBjYjMxYmFkOTkxYjc4MTE1MC4uNTk0MDdj
NGExYTVhODAzMWZiMWM1OWI3MjYzN2Q2ZTkyNWM2ZjQ0MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY3Vyc29yLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY3Vyc29yLmh0bWwKQEAgLTQsMjMx
ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwv
aGVhZD4KIDxib2R5PgotPHNjcmlwdD4gCi0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidz
IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IgKyB0aGUgY3Vyc29yIGl0IHByb2R1Y2VzIGluIGRlcHRo
LiIpOwotIAotLy8gSW4gb3JkZXIgb2YgaG93IGl0IHNob3VsZCBiZSBzb3J0ZWQgYnkgSW5kZXhl
ZERCLgotc2VsZi50ZXN0RGF0YSA9IFsKLSAgICAyLjcxODI4MTgyODQ1OSwKLSAgICAzLAotICAg
IDMuMTQxNTkyNjUsCi0gICAgMTAsCi0gICAgLy8gRklYTUU6IERhdGVzLgotICAgICJBIGJpZ2dl
ciBzdHJpbmciLAotICAgICJUaGUgYmlnZ2VzdCIsCi0gICAgImEgbG93IHN0cmluZyIKLV07Ci0g
Ci1mdW5jdGlvbiBvcGVuRGF0YWJhc2UoKQotewotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIub3Blbignb2JqZWN0c3RvcmUtY3Vyc29yJykiKTsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IHNldFZlcnNpb247Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0gCi1mdW5jdGlvbiBzZXRWZXJzaW9uKCkKLXsKLSAgICBzZWxmLmRiID0g
ZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKLXsKLSAg
ICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQg
PSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLQotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jlcyhk
Yik7Ci0KLSAgICBzZWxmLm9iamVjdFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ3NvbWVPYmplY3RTdG9yZScpIik7Ci0gICAgc2VsZi5uZXh0VG9BZGQgPSAwOwotICAg
IGFkZERhdGEoKTsKLX0KLQotZnVuY3Rpb24gYWRkRGF0YSgpCi17Ci0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnJywgdGVzdERhdGFbbmV4dFRvQWRkXSkiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9ICsrc2VsZi5uZXh0VG9BZGQgPCB0ZXN0RGF0YS5sZW5ndGgg
PyBhZGREYXRhIDogc2NoZWR1bGVUZXN0czsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc2NoZWR1bGVUZXN0cygpCi17Ci0gICAg
ZGVidWcoIlNjaGVkdWxpbmcgdGVzdHMuLi4iKTsKLSAgICBzZWxmLnNjaGVkdWxlZFRlc3RzID0g
W107Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0RGF0YS5sZW5ndGg7ICsraSkgewotICAg
ICAgICAvKiBsZWZ0IGJvdW5kLCBpcyBvcGVuLCByaWdodCBib3VuZCwgaXMgb3BlbiwgYXNjZW5k
aW5nICovCi0gICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIHRydWUsIG51bGwsIG51
bGwsIHRydWVdKTsKLSAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgZmFsc2UsIG51
bGwsIG51bGwsIHRydWVdKTsKLSAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbbnVsbCwg
bnVsbCwgaSwgdHJ1ZSwgdHJ1ZV0pOwotICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtu
dWxsLCBudWxsLCBpLCBmYWxzZSwgdHJ1ZV0pOwotICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNo
aWZ0KFtpLCB0cnVlLCBudWxsLCBudWxsLCBmYWxzZV0pOwotICAgICAgICBzY2hlZHVsZWRUZXN0
cy51bnNoaWZ0KFtpLCBmYWxzZSwgbnVsbCwgbnVsbCwgZmFsc2VdKTsKLSAgICAgICAgc2NoZWR1
bGVkVGVzdHMudW5zaGlmdChbbnVsbCwgbnVsbCwgaSwgdHJ1ZSwgZmFsc2VdKTsKLSAgICAgICAg
c2NoZWR1bGVkVGVzdHMudW5zaGlmdChbbnVsbCwgbnVsbCwgaSwgZmFsc2UsIGZhbHNlXSk7Ci0g
ICAgICAgIGZvciAodmFyIGogPSA2OyBqIDwgdGVzdERhdGEubGVuZ3RoOyArK2opIHsKLSAgICAg
ICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIHRydWUsIGosIHRydWUsIHRydWVdKTsK
LSAgICAgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIHRydWUsIGosIGZhbHNlLCB0
cnVlXSk7Ci0gICAgICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCBmYWxzZSwgaiwg
dHJ1ZSwgdHJ1ZV0pOwotICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgZmFs
c2UsIGosIGZhbHNlLCB0cnVlXSk7Ci0gICAgICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0
KFtpLCB0cnVlLCBqLCB0cnVlLCBmYWxzZV0pOwotICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMu
dW5zaGlmdChbaSwgdHJ1ZSwgaiwgZmFsc2UsIGZhbHNlXSk7Ci0gICAgICAgICAgICBzY2hlZHVs
ZWRUZXN0cy51bnNoaWZ0KFtpLCBmYWxzZSwgaiwgdHJ1ZSwgZmFsc2VdKTsKLSAgICAgICAgICAg
IHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBqLCBmYWxzZSwgZmFsc2VdKTsKLSAg
ICAgICAgfQotICAgIH0KLSAKLSAgICBkZWJ1ZygiUnVubmluZyB0ZXN0cy4uLiIpOwotICAgIHJ1
bk5leHRUZXN0KCk7Ci19Ci0gCi1mdW5jdGlvbiBydW5OZXh0VGVzdCgpCi17Ci0gICAgaWYgKCFz
Y2hlZHVsZWRUZXN0cy5sZW5ndGgpIHsKLSAgICAgICAgdGVzdE51bGxLZXlSYW5nZSgpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotIAotICAgIHZhciB0ZXN0ID0gc2NoZWR1bGVkVGVzdHMucG9w
KCk7Ci0gICAgc2VsZi5sb3dlciA9IHRlc3RbMF07Ci0gICAgc2VsZi5sb3dlcklzT3BlbiA9IHRl
c3RbMV07Ci0gICAgc2VsZi51cHBlciA9IHRlc3RbMl07Ci0gICAgc2VsZi51cHBlcklzT3BlbiA9
IHRlc3RbM107Ci0gICAgc2VsZi5hc2NlbmRpbmcgPSB0ZXN0WzRdOwotCi0gICAgc3RyID0gIk5l
eHQgdGVzdDogIjsKLSAgICBpZiAobG93ZXIgIT09IG51bGwpIHsKLSAgICAgICAgc3RyICs9ICJs
b3dlciAiOwotICAgICAgICBpZiAobG93ZXJJc09wZW4pCi0gICAgICAgICAgICBzdHIgKz0gIm9w
ZW4gIjsKLSAgICAgICAgc3RyICs9ICJib3VuZCBpcyAiICsgbG93ZXIgKyAiOyAiOwotICAgIH0K
LSAgICBpZiAodXBwZXIgIT09IG51bGwpIHsKLSAgICAgICAgc3RyICs9ICJ1cHBlciAiOwotICAg
ICAgICBpZiAodXBwZXJJc09wZW4pCi0gICAgICAgICAgICBzdHIgKz0gIm9wZW4gIjsKLSAgICAg
ICAgc3RyICs9ICJib3VuZCBpcyAiICsgdXBwZXIgKyAiOyAiOwotICAgIH0KLSAgICBpZiAoYXNj
ZW5kaW5nKQotICAgICAgICBzdHIgKz0gInNvcnRlZCBhc2NlbmRpbmcuIjsKLSAgICBlbHNlCi0g
ICAgICAgIHN0ciArPSAic29ydGVkIGRlc2NlbmRpbmcuIjsKLQotICAgIGRlYnVnKCIiKTsKLSAg
ICBkZWJ1ZyhzdHIpOwotIAotICAgIGlmIChhc2NlbmRpbmcpIHsKLSAgICAgICAgaWYgKGxvd2Vy
ICE9PSBudWxsKSB7Ci0gICAgICAgICAgICBpZiAoIWxvd2VySXNPcGVuKQotICAgICAgICAgICAg
ICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IGxvd2VyOwotICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IGxvd2VyKzE7Ci0gICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gMDsKLSAgICB9IGVsc2UgewotICAgICAg
ICBpZiAodXBwZXIgIT09IG51bGwpIHsKLSAgICAgICAgICAgIGlmICghdXBwZXJJc09wZW4pCi0g
ICAgICAgICAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gdXBwZXI7Ci0gICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gdXBwZXItMTsKLSAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSB0ZXN0RGF0YS5sZW5n
dGgtMTsKLSAgICB9Ci0gICAgdGVzdFdpdGhpbkJvdW5kcygpOwotIAotICAgIGlmICh0ZXN0RGF0
YVtsb3dlcl0gPT09IHRlc3REYXRhW3VwcGVyXSAmJiAobG93ZXJJc09wZW4gfHwgdXBwZXJJc09w
ZW4pKSB7Ci0gICAgICAgIGRlYnVnKCJTa2lwcGluZyBpbGxlZ2FsIGtleSByYW5nZS4iKTsKLSAg
ICAgICAgcnVuTmV4dFRlc3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHZhciBr
ZXlSYW5nZTsKLSAgICBpZiAobG93ZXIgIT09IG51bGwgJiYgdXBwZXIgIT09IG51bGwpCi0gICAg
ICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2UuYm91bmQodGVzdERhdGFbbG93ZXJdLCB0ZXN0RGF0
YVt1cHBlcl0sIGxvd2VySXNPcGVuLCB1cHBlcklzT3Blbik7Ci0gICAgZWxzZSBpZiAobG93ZXIg
IT09IG51bGwpCi0gICAgICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2UubG93ZXJCb3VuZCh0ZXN0
RGF0YVtsb3dlcl0sIGxvd2VySXNPcGVuKTsKLSAgICBlbHNlCi0gICAgICAgIGtleVJhbmdlID0g
SURCS2V5UmFuZ2UudXBwZXJCb3VuZCh0ZXN0RGF0YVt1cHBlcl0sIHVwcGVySXNPcGVuKTsKLSAK
LSAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3Ioa2V5UmFuZ2UsIGFzY2Vu
ZGluZyA/IElEQkN1cnNvci5ORVhUIDogSURCQ3Vyc29yLlBSRVYpOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gY3Vyc29ySXRlcmF0aW9uOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiB0ZXN0V2l0aGluQm91bmRzKCkKLXsKLSAg
ICBpZiAoZXhwZWN0ZWRJbmRleCA8IDAgfHwgdGVzdERhdGEubGVuZ3RoIDw9IGV4cGVjdGVkSW5k
ZXgpCi0gICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IG51bGw7Ci0gICAgaWYgKGxvd2VyICE9
PSBudWxsICYmIGV4cGVjdGVkSW5kZXggPCBsb3dlcikKLSAgICAgICAgc2VsZi5leHBlY3RlZElu
ZGV4ID0gbnVsbDsKLSAgICBpZiAodXBwZXIgIT09IG51bGwgJiYgdXBwZXIgPCBleHBlY3RlZElu
ZGV4KQotICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSBudWxsOwotICAgIGlmIChsb3dlciAh
PT0gbnVsbCAmJiBsb3dlcklzT3BlbiAmJiBleHBlY3RlZEluZGV4IDw9IGxvd2VyKQotICAgICAg
ICBzZWxmLmV4cGVjdGVkSW5kZXggPSBudWxsOwotICAgIGlmICh1cHBlciAhPT0gbnVsbCAmJiB1
cHBlcklzT3BlbiAmJiB1cHBlciA8PSBleHBlY3RlZEluZGV4KQotICAgICAgICBzZWxmLmV4cGVj
dGVkSW5kZXggPSBudWxsOwotfQotIAotZnVuY3Rpb24gY3Vyc29ySXRlcmF0aW9uKCkKLXsKLSAg
ICBpZiAoZXhwZWN0ZWRJbmRleCA9PT0gbnVsbCkgewotICAgICAgICBzaG91bGRCZU51bGwoImV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICAgICAgcnVuTmV4dFRlc3QoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9PT0gbnVsbCkgewotICAg
ICAgICB0ZXN0RmFpbGVkKCJldmVudC50YXJnZXQucmVzdWx0IHNob3VsZCBub3QgYmUgbnVsbC4i
KTsKLSAgICAgICAgcnVuTmV4dFRlc3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAKLSAg
ICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAidGVzdERhdGFbIiArIGV4cGVj
dGVkSW5kZXggKyAiXSIpOwotICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IGFzY2VuZGluZyA/IGV4
cGVjdGVkSW5kZXgrMSA6IGV4cGVjdGVkSW5kZXgtMTsKLSAgICB0ZXN0V2l0aGluQm91bmRzKCk7
Ci0KLSAgICBldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCk7Ci19Ci0gCi1zZWxmLm51bGxL
ZXlSYW5nZVN0ZXAgPSAwOwotZnVuY3Rpb24gdGVzdE51bGxLZXlSYW5nZSgpCi17Ci0gICAgc2Vs
Zi5sb3dlciA9IDA7Ci0gICAgc2VsZi5sb3dlcklzT3BlbiA9IGZhbHNlOwotICAgIHNlbGYudXBw
ZXIgPSB0ZXN0RGF0YS5sZW5ndGgtMTsKLSAgICBzZWxmLnVwcGVySXNPcGVuID0gZmFsc2U7Ci0K
LSAgICBzdHIgPSAiTmV4dCB0ZXN0OiBudWxsIGtleSBwYXRoICI7Ci0gICAgaWYgKHNlbGYubnVs
bEtleVJhbmdlU3RlcCA9PSAwKSB7Ci0gICAgICAgIHN0ciArPSAic29ydGVkIGFzY2VuZGluZy4i
OwotICAgICAgICBzZWxmLmFzY2VuZGluZyA9IHRydWU7Ci0gICAgICAgIHNlbGYuZXhwZWN0ZWRJ
bmRleCA9IGxvd2VyOwotICAgICAgICBzZWxmLm51bGxLZXlSYW5nZVN0ZXAgPSAxOwotICAgIH0g
ZWxzZSBpZiAoc2VsZi5udWxsS2V5UmFuZ2VTdGVwID09IDEpIHsKLSAgICAgICAgc3RyICs9ICJz
b3J0ZWQgZGVzY2VuZGluZy4iOwotICAgICAgICBzZWxmLmFzY2VuZGluZyA9IGZhbHNlOwotICAg
ICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSB1cHBlcjsKLSAgICAgICAgc2VsZi5udWxsS2V5UmFu
Z2VTdGVwID0gMjsKLSAgICB9IGVsc2UgewotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZyhzdHIpOwotIAot
ICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcihudWxsLCBhc2NlbmRpbmcg
PyBJREJDdXJzb3IuTkVYVCA6IElEQkN1cnNvci5QUkVWKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGN1cnNvckl0ZXJhdGlvbjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLX0KLSAKLXJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci1vcGVuRGF0YWJhc2Uo
KTsgLy8gVGhlIGZpcnN0IHN0ZXAuCi0gCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvb2JqZWN0c3RvcmUtY3Vyc29yLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3Rv
cmUtcmVtb3Zlb2JqZWN0c3RvcmUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L29iamVjdHN0b3JlLXJlbW92ZW9iamVjdHN0b3JlLmh0bWwKaW5kZXggNTExNDY1MTI2MmQ0ZGY5
ZWRjMjI4NWU3MjU4MTkwZjdmMzE5ZDdjMC4uNDczMTExNDAwYjA4ZjBiZTM5YTVkZDMyZjJiMjgz
M2EyOTM0ZmYwMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2Jq
ZWN0c3RvcmUtcmVtb3Zlb2JqZWN0c3RvcmUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9vYmplY3RzdG9yZS1yZW1vdmVvYmplY3RzdG9yZS5odG1sCkBAIC00LDEwMiAr
NCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hl
YWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIHdl
YmtpdElEQk9iamVjdFN0b3JlLmRlbGV0ZU9iamVjdFN0b3JlKCkuIik7Ci0KLWZ1bmN0aW9uIHRl
c3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImluZGV4ZWREQi5vcGVuKCdvYmplY3RzdG9yZS1yZW1vdmVvYmplY3RzdG9yZScpIik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzdGFydFNldFZlcnNpb247Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHN0YXJ0U2V0
VmVyc2lvbigpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVy
c2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24g
ZGVsZXRlRXhpc3RpbmcoKQotewotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9
IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxs
Iik7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgc3RvcmUgPSBldmFs
QW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIp
OwotCi0gICAgc2VsZi5pbmRleCA9IGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdpbmRl
eE5hbWUnLCAnJykiKTsKLSAgICBzaG91bGRCZVRydWUoInN0b3JlLmluZGV4TmFtZXMuY29udGFp
bnMoJ2luZGV4TmFtZScpIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRk
KCd2YWx1ZScsICdrZXknKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBnZXRWYWx1ZTsKLX0KLQotZnVuY3Rp
b24gZ2V0VmFsdWUoKQotewotICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygiZGIudHJhbnNh
Y3Rpb24oWydzdG9yZU5hbWUnXSkiKTsKLSAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0
cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLQotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJzdG9yZS5nZXQoJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBh
ZGRJbmRleDsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LX0KLQotZnVuY3Rpb24gYWRkSW5kZXgoKQotewotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
ZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ2YWx1ZSIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGRlbGV0ZU9iamVjdFN0b3JlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBkZWxldGVPYmplY3RTdG9yZSgpCi17Ci0gICAg
c2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwot
ICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0g
dW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0KLSAgICBldmFsQW5kTG9nKCJkYi5kZWxldGVPYmpl
Y3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLSAgICBjcmVhdGVPYmplY3RTdG9yZUFnYWluKCk7Ci19
Ci0KLWZ1bmN0aW9uIGNyZWF0ZU9iamVjdFN0b3JlQWdhaW4oKQotewotICAgIGV2YWxBbmRMb2co
ImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOwotICAgIHRyYW5zLm9u
Y29tcGxldGUgPSBnZXRWYWx1ZUFnYWluOwotfQotCi1mdW5jdGlvbiBnZXRWYWx1ZUFnYWluKCkK
LXsKLSAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coImRiLnRyYW5zYWN0aW9uKFsnc3RvcmVO
YW1lJ10pIik7Ci0gICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotICAgIHZhciBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2Jq
ZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3Rv
cmUuZ2V0KCdrZXknKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdmVyaWZ5Tm90Rm91bmQ7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1
bmN0aW9uIHZlcmlmeU5vdEZvdW5kKCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJl
c3VsdCIsICJ1bmRlZmluZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJldmVudC50YXJnZXQuc291
cmNlLmluZGV4TmFtZXMuY29udGFpbnMoJ2luZGV4TmFtZScpIik7Ci0KLSAgICBmaW5pc2hKU1Rl
c3QoKTsKLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
b2JqZWN0c3RvcmUtcmVtb3Zlb2JqZWN0c3RvcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2Jv
ZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9v
ZGQtc3RyaW5ncy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2RkLXN0cmlu
Z3MuaHRtbAppbmRleCBhOGEwNzJhMzQ3MzEwNTEwOTllMDdkZmFhMGRlZDA4OGYwM2IwZDY0Li42
NWEzNjNiZDBkOWYwOTk0NDk0MmIwNTliN2I3NjE1ZTQwZGE3ZmE0IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vZGQtc3RyaW5ncy5odG1sCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29kZC1zdHJpbmdzLmh0bWwKQEAgLTEsMTExICsxLDEwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJl
c291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0Pgot
Ci1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgb2RkIHZhbHVlIGRhdGF0eXBlcyIpOwotCi1m
dW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgdGVz
dERhdGEgPSBbeyBkZXNjcmlwdGlvbjogJ251bGwnLCAgICAgICAgICAgICAgIG5hbWU6ICdcdTAw
MDAnIH0sCi0gICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ2ZhaWh1JywgICAgICAgICAg
ICAgIG5hbWU6ICdcdWQ4MDBcdWRmNDYnIH0sCi0gICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlv
bjogJ3VucGFpcmVkIHN1cnJvZ2F0ZScsIG5hbWU6ICdcdWQ4MDAnIH0sCi0gICAgICAgICAgICAg
ICAgeyBkZXNjcmlwdGlvbjogJ2ZmZmUnLCAgICAgICAgICAgICAgIG5hbWU6ICdcdWZmZmUnIH0s
Ci0gICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ2ZmZmYnLCAgICAgICAgICAgICAgIG5h
bWU6ICdcdWZmZmYnIH0sCi0gICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ2xpbmUgc2Vw
YXJhdG9yJywgICAgIG5hbWU6ICdcdTIwMjgnIH0KLSAgICBdOwotICAgIG5leHRUb09wZW4gPSAw
OwotICAgIG9wZW5OZXh0RGF0YWJhc2UoKTsKLX0KLQotZnVuY3Rpb24gb3Blbk5leHREYXRhYmFz
ZSgpCi17Ci0gICAgZGVidWcoIm9wZW5pbmcgYSBkYXRhYmFzZSBuYW1lZCAiICsgdGVzdERhdGFb
bmV4dFRvT3Blbl0uZGVzY3JpcHRpb24pOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRl
eGVkREIub3Blbih0ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1lLCB0ZXN0RGF0YVtuZXh0VG9PcGVu
XS5kZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotfQotCi1mdW5j
dGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNl
dFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkQUtleTsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24g
YWRkQUtleSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9iamVj
dFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSh0
ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1lKTsiKTsKLSAgICBrZXkgPSBldmFsQW5kTG9nKCJrZXkg
PSB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1lIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoa2V5LCBrZXkpOyIpOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gY2xvc2VEYXRhYmFzZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY2xvc2VEYXRhYmFzZSgpCi17Ci0gICAgZXZh
bEFuZExvZygiZGIuY2xvc2UoKSIpOwotICAgIGRlYnVnKCIiKTsKLSAgICBpZiAoKytuZXh0VG9P
cGVuIDwgdGVzdERhdGEubGVuZ3RoKSB7Ci0gICAgICAgIG9wZW5OZXh0RGF0YWJhc2UoKTsKLSAg
ICB9IGVsc2UgewotICAgICAgICBuZXh0VG9PcGVuID0gMDsKLSAgICAgICAgdmVyaWZ5TmV4dERh
dGFiYXNlKCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB2ZXJpZnlOZXh0RGF0YWJhc2UoKQotewot
ICAgIGRlYnVnKCJyZW9wZW5pbmcgYSBkYXRhYmFzZSBuYW1lZCAiICsgdGVzdERhdGFbbmV4dFRv
T3Blbl0uZGVzY3JpcHRpb24pOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
b3Blbih0ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1lLCB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5kZXNj
cmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzMjsKLX0KLQotZnVuY3Rpb24g
b3BlblN1Y2Nlc3MyKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVy
c2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRBS2V5OwotfQotCi1mdW5jdGlvbiBnZXRB
S2V5KCkKLXsKLSAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOwotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSB0cmFu
cy5vYmplY3RTdG9yZSh0ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1lKTsiKTsKLSAgICBrZXkgPSBl
dmFsQW5kTG9nKCJrZXkgPSB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1lIik7Ci0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBvcGVuQ3Vyc29yU3VjY2VzczsKLX0KLQotZnVuY3Rpb24gb3BlbkN1cnNv
clN1Y2Nlc3MoKQotewotICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRh
cmdldC5yZXN1bHQ7Iik7Ci0gICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAidGVzdERhdGFbbmV4
dFRvT3Blbl0ubmFtZSIpOwotICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAidGVzdERhdGFb
bmV4dFRvT3Blbl0ubmFtZSIpOwotICAgIGlmICgrK25leHRUb09wZW4gPCB0ZXN0RGF0YS5sZW5n
dGgpIHsKLSAgICAgICAgZGVidWcoIiIpOwotICAgICAgICB2ZXJpZnlOZXh0RGF0YWJhc2UoKTsK
LSAgICB9IGVsc2UgewotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9Ci19Ci0KLQotdGVz
dCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb2RkLXN0cmluZ3MuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVuLWNsb3NlLXZlcnNpb24uaHRtbCBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4tY2xvc2UtdmVyc2lvbi5odG1sCmluZGV4IDZjMTRm
ZTEzYmZkNzIwNTYzZTM4YzY5YzAxMjk5NDY1ZTAyMDk2MDkuLjI5ZDNhZjNjZTczYWY5NTdiMzM2
NTY2OTg1MTQ0ODlkZjFiMjllM2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL29wZW4tY2xvc2UtdmVyc2lvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL29wZW4tY2xvc2UtdmVyc2lvbi5odG1sCkBAIC00LDI4OSArNCw3IEBACiA8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4K
LTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IGludGVybGVhdmVkIG9wZW4vY2xvc2Uvc2V0
VmVyc2lvbiBjYWxscyBpbiB2YXJpb3VzIHBlcm11dGF0aW9ucyIpOwotCi1mdW5jdGlvbiBDb25u
ZWN0aW9uKGlkKSB7Ci0gICAgaWQgPSBTdHJpbmcoaWQpOwotICAgIHZhciB0aGF0ID0gdGhpczsK
LSAgICB0aGlzLm9wZW4gPSBmdW5jdGlvbihvcHRzKSB7Ci0gICAgICAgIHNlbGYuc3RlcHMucHVz
aChldmFsQW5kTG9nKCInIiArIGlkICsgIi5vcGVuJyIpKTsKLSAgICAgICAgdmFyIHJlcSA9IGlu
ZGV4ZWREQi5vcGVuKHNlbGYuZGJuYW1lKTsKLSAgICAgICAgcmVxLm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7
Ci0gICAgICAgICAgICB0aGF0LmhhbmRsZSA9IGUudGFyZ2V0LnJlc3VsdDsKLSAgICAgICAgICAg
IHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5vcGVuLm9uc3VjY2Vzcyci
KSk7Ci0gICAgICAgICAgICB0aGF0LmhhbmRsZS5vbnZlcnNpb25jaGFuZ2UgPSBmdW5jdGlvbihl
KSB7Ci0gICAgICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQg
KyAiLm9udmVyc2lvbmNoYW5nZSciKSk7Ci0gICAgICAgICAgICAgICAgaWYgKG9wdHMgJiYgb3B0
cy5vbnZlcnNpb24pIHsgb3B0cy5vbnZlcnNpb24uY2FsbCh0aGF0KTsgfQotICAgICAgICAgICAg
fTsKLSAgICAgICAgICAgIGlmIChvcHRzICYmIG9wdHMub25zdWNjZXNzKSB7IG9wdHMub25zdWNj
ZXNzLmNhbGwodGhhdCk7IH0KLSAgICAgICAgfTsKLSAgICB9OwotCi0gICAgdGhpcy5jbG9zZSA9
IGZ1bmN0aW9uKCkgewotICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBp
ZCArICIuY2xvc2UnIikpOwotICAgICAgICB0aGlzLmhhbmRsZS5jbG9zZSgpOwotICAgIH07Ci0K
LSAgICB0aGlzLnNldFZlcnNpb24gPSBmdW5jdGlvbihvcHRzKSB7Ci0gICAgICAgIHNlbGYuc3Rl
cHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5zZXRWZXJzaW9uJyIpKTsKLSAgICAgICAg
dmFyIHJlcSA9IHRoaXMuaGFuZGxlLnNldFZlcnNpb24oU3RyaW5nKHNlbGYudmVyKyspKTsKLSAg
ICAgICAgcmVxLm9uYWJvcnQgPSBmdW5jdGlvbiAoZSkgewotICAgICAgICAgICAgc2VsZi5zdGVw
cy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLnNldFZlcnNpb24ub25hYm9ydCciKSk7Ci0g
ICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9uYWJvcnQpIHsgb3B0cy5vbmFib3J0LmNhbGwo
dGhhdCk7IH0KLSAgICAgICAgfTsKLSAgICAgICAgcmVxLm9uYmxvY2tlZCA9IGZ1bmN0aW9uIChl
KSB7Ci0gICAgICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIu
c2V0VmVyc2lvbi5vbmJsb2NrZWQnIikpOwotICAgICAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5v
bmJsb2NrZWQpIHsgb3B0cy5vbmJsb2NrZWQuY2FsbCh0aGF0KTsgfQotICAgICAgICB9OwotICAg
ICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAgICAgIHNlbGYuc3Rl
cHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5zZXRWZXJzaW9uLm9uc3VjY2VzcyciKSk7
Ci0gICAgICAgICAgICBpZiAodGhhdC5oYW5kbGUub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucygi
dGVzdC1zdG9yZSIgKyBzZWxmLnZlcikpIHsKLSAgICAgICAgICAgICAgICB0aGF0LmhhbmRsZS5k
ZWxldGVPYmplY3RTdG9yZSgidGVzdC1zdG9yZSIgKyBzZWxmLnZlcik7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICB2YXIgc3RvcmUgPSB0aGF0LmhhbmRsZS5jcmVhdGVPYmplY3RTdG9yZSgi
dGVzdC1zdG9yZSIgKyBzZWxmLnZlcik7Ci0gICAgICAgICAgICB2YXIgY291bnQgPSAwOwotICAg
ICAgICAgICAgZG9fYXN5bmNfcHV0cygpOyAvLyBLZWVwIHRoaXMgdHJhbnNhY3Rpb24gcnVubmlu
ZyBmb3IgYSB3aGlsZQotICAgICAgICAgICAgZnVuY3Rpb24gZG9fYXN5bmNfcHV0cygpIHsKLSAg
ICAgICAgICAgICAgICB2YXIgcmVxID0gc3RvcmUucHV0KGNvdW50LCBjb3VudCk7Ci0gICAgICAg
ICAgICAgICAgcmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAg
ICAgICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKCsrY291bnQgPCAxMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgZG9fYXN5bmNf
cHV0cygpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLnNldFZlcnNpb24u
dHJhbnNhY3Rpb24tY29tcGxldGUnIikpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9w
dHMgJiYgb3B0cy5vbnN1Y2Nlc3MpIHsgb3B0cy5vbnN1Y2Nlc3MuY2FsbCh0aGF0KTsgfQotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfTsKLSAgICAgICAgcmVxLm9uZXJyb3IgPSBmdW5jdGlvbiAoZSkgewotICAgICAgICAg
ICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLnNldFZlcnNpb24ub25l
cnJvciciKSk7Ci0gICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9uZXJyb3IpIHsgb3B0cy5v
bmVycm9yLmNhbGwodGhhdCk7IH0KLSAgICAgICAgfTsKLSAgICB9OwotfQotCi0vLyBydW4gYSBz
ZXJpZXMgb2Ygc3RlcHMgdGhhdCB0YWtlIGEgY29udGludWF0aW9uIGZ1bmN0aW9uCi1mdW5jdGlv
biBydW5TdGVwcyhjb21tYW5kcykgewotICAgIGlmIChjb21tYW5kcy5sZW5ndGgpIHsKLSAgICAg
ICAgdmFyIGNvbW1hbmQgPSBjb21tYW5kcy5zaGlmdCgpOwotICAgICAgICBjb21tYW5kKGZ1bmN0
aW9uKCkgeyBydW5TdGVwcyhjb21tYW5kcyk7IH0pOwotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVz
dCgpIHsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIHRlc3QxKCk7Ci19Ci0KLWZ1
bmN0aW9uIHRlc3QxKCkgewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiVEVTVDogc2V0VmVy
c2lvbiBibG9ja2VkIG9uIG9wZW4gaGFuZGxlcyIpOwotICAgIGV2YWxBbmRMb2coInNlbGYuZGJu
YW1lID0gJ3Rlc3QxJzsgc2VsZi52ZXIgPSAxOyBzZWxmLnN0ZXBzID0gW10iKTsKLSAgICB2YXIg
aDEgPSBuZXcgQ29ubmVjdGlvbigiaDEiKTsKLSAgICB2YXIgaDIgPSBuZXcgQ29ubmVjdGlvbigi
aDIiKTsKLSAgICBydW5TdGVwcyhbZnVuY3Rpb24oZG9OZXh0KSB7IGgxLm9wZW4oe29uc3VjY2Vz
czogZG9OZXh0fSk7IH0sCi0gICAgICAgICBmdW5jdGlvbihkb05leHQpIHsgaDIub3Blbih7b25z
dWNjZXNzOiBkb05leHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9udmVyc2lv
bjogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1
ZygiICAgIGgyIGNsb3NpbmcsIGJ1dCBub3QgaW1tZWRpYXRlbHkiKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGgyLmNsb3NlKCk7
IH0sIDApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fSk7IH0sCi0gICAgICAg
ICBmdW5jdGlvbihkb05leHQpIHsgaDEuc2V0VmVyc2lvbih7b25zdWNjZXNzOiBmaW5pc2hUZXN0
fSk7IH0sCi0gICAgICAgICBdKTsKLSAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgewotICAgICAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNlbGYuc3RlcHMudG9TdHJpbmcoKSIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbImgxLm9wZW4iLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJoMS5vcGVuLm9uc3VjY2VzcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImgyLm9wZW4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5vcGVu
Lm9uc3VjY2VzcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNp
b24iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5vbnZlcnNpb25jaGFuZ2Ui
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLm9uYmxvY2tl
ZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLmNsb3NlIiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbi5vbnN1Y2Nlc3MiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLnRyYW5zYWN0aW9uLWNvbXBs
ZXRlIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udG9TdHJpbmcoKSk7Ci0gICAg
ICAgIHRlc3QyKCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0MigpIHsKLSAgICBkZWJ1Zygi
Iik7Ci0gICAgZGVidWcoIlRFU1Q6IHNldFZlcnNpb24gbm90IGJsb2NrZWQgaWYgaGFuZGxlIGNs
b3NlZCBpbW1lZGlhdGVseSIpOwotICAgIGV2YWxBbmRMb2coInNlbGYuZGJuYW1lID0gJ3Rlc3Qy
Jzsgc2VsZi52ZXIgPSAxOyBzZWxmLnN0ZXBzID0gW10iKTsKLSAgICB2YXIgaDEgPSBuZXcgQ29u
bmVjdGlvbigiaDEiKTsKLSAgICB2YXIgaDIgPSBuZXcgQ29ubmVjdGlvbigiaDIiKTsKLSAgICBy
dW5TdGVwcyhbZnVuY3Rpb24oZG9OZXh0KSB7IGgxLm9wZW4oe29uc3VjY2VzczogZG9OZXh0fSk7
IH0sCi0gICAgICAgICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBoMi5vcGVuKHtvbnN1Y2Nlc3M6
IGRvTmV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9udmVy
c2lvbjogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGVidWcoIiAgICBoMiBjbG9zaW5nIGltbWVkaWF0ZWx5Iik7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaDIuY2xvc2UoKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19KTsgfSwKLSAgICAgICAgICAgICAg
ZnVuY3Rpb24oZG9OZXh0KSB7IGgxLnNldFZlcnNpb24oe29uc3VjY2VzczogZG9OZXh0fSk7IH0s
Ci0gICAgICAgICAgICAgIGZpbmlzaFRlc3QKLSAgICAgICAgICAgICAgXSk7Ci0KLSAgICBmdW5j
dGlvbiBmaW5pc2hUZXN0KCkgewotICAgICAgICBkZWJ1ZygiTk9URTogV2lsbCBGQUlMIHdpdGgg
ZXh0cmEgYm9ndXMgaDEuc2V0VmVyc2lvbi5vbmJsb2NrZWQgc3RlcDsgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMTMwIik7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygic2VsZi5zdGVwcy50b1N0cmluZygpIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFsiaDEub3BlbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLm9w
ZW4ub25zdWNjZXNzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIub3BlbiIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLm9wZW4ub25zdWNjZXNzIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbiIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImgyLm9udmVyc2lvbmNoYW5nZSIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImgyLmNsb3NlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiaDEuc2V0VmVyc2lvbi5vbnN1Y2Nlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJoMS5zZXRWZXJzaW9uLnRyYW5zYWN0aW9uLWNvbXBsZXRlIgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF0udG9TdHJpbmcoKSk7Ci0gICAgICAgIHRlc3QzKCk7Ci0gICAg
fQotfQotCi1mdW5jdGlvbiB0ZXN0MygpIHsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIlRF
U1Q6IG9wZW4gYW5kIHNldFZlcnNpb24gYmxvY2tlZCBpZiBhIFZFUlNJT05fQ0hBTkdFIHRyYW5z
YWN0aW9uIGlzIHJ1bm5pbmcgLSBjbG9zZSB3aGVuIGJsb2NrZWQiKTsKLSAgICBldmFsQW5kTG9n
KCJzZWxmLmRibmFtZSA9ICd0ZXN0Myc7IHNlbGYudmVyID0gMTsgc2VsZi5zdGVwcyA9IFtdIik7
Ci0gICAgdmFyIGgxID0gbmV3IENvbm5lY3Rpb24oImgxIik7Ci0gICAgdmFyIGgyID0gbmV3IENv
bm5lY3Rpb24oImgyIik7Ci0gICAgdmFyIGgzID0gbmV3IENvbm5lY3Rpb24oImgzIik7Ci0gICAg
cnVuU3RlcHMoW2Z1bmN0aW9uKGRvTmV4dCkgeyBoMS5vcGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dH0p
OyB9LAotICAgICAgICAgICAgICBmdW5jdGlvbihkb05leHQpIHsgaDIub3Blbih7b25zdWNjZXNz
OiBkb05leHR9KTsgfSwKLSAgICAgICAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGgxLnNldFZl
cnNpb24oKTsgZG9OZXh0KCk7IH0sCi0gICAgICAgICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBo
Mi5zZXRWZXJzaW9uKHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9uYmxvY2tlZDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoIiAgICBoMiBibG9ja2VkIHNv
IGNsb3NpbmciKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBoMi5jbG9zZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRvTmV4dCgpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0pOyB9LAotICAgICAgICAgICAgICBmdW5jdGlv
bigpIHsgaDMub3Blbih7b25zdWNjZXNzOiBmaW5pc2hUZXN0fSk7fQotICAgICAgICAgICAgICBd
KTsKLQotICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygic2VsZi5zdGVwcy50b1N0cmluZygpIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFsiaDEub3BlbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLm9w
ZW4ub25zdWNjZXNzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIub3BlbiIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLm9wZW4ub25zdWNjZXNzIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbiIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImgyLnNldFZlcnNpb24iLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJoMi5vbnZlcnNpb25jaGFuZ2UiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJoMS5zZXRWZXJzaW9uLm9uYmxvY2tlZCIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImgxLm9udmVyc2lvbmNoYW5nZSIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImgyLnNldFZlcnNpb24ub25ibG9ja2VkIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiaDIuY2xvc2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJo
My5vcGVuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIuc2V0VmVyc2lvbi5v
bmVycm9yIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbi5v
bnN1Y2Nlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9u
LnRyYW5zYWN0aW9uLWNvbXBsZXRlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
aDMub3Blbi5vbnN1Y2Nlc3MiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS50b1N0
cmluZygpKTsKLSAgICAgICAgdGVzdDQoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3Q0KCkg
ewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiVEVTVDogb3BlbiBhbmQgc2V0VmVyc2lvbiBi
bG9ja2VkIGlmIGEgVkVSU0lPTl9DSEFOR0UgdHJhbnNhY3Rpb24gaXMgcnVubmluZyAtIGp1c3Qg
Y2xvc2UiKTsKLSAgICBldmFsQW5kTG9nKCJzZWxmLmRibmFtZSA9ICd0ZXN0NCc7IHNlbGYudmVy
ID0gMTsgc2VsZi5zdGVwcyA9IFtdIik7Ci0gICAgdmFyIGgxID0gbmV3IENvbm5lY3Rpb24oImgx
Iik7Ci0gICAgdmFyIGgyID0gbmV3IENvbm5lY3Rpb24oImgyIik7Ci0gICAgdmFyIGgzID0gbmV3
IENvbm5lY3Rpb24oImgzIik7Ci0gICAgcnVuU3RlcHMoW2Z1bmN0aW9uKGRvTmV4dCkgeyBoMS5v
cGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dH0pOyB9LAotICAgICAgICAgICAgICBmdW5jdGlvbihkb05l
eHQpIHsgaDIub3Blbih7b25zdWNjZXNzOiBkb05leHR9KTsgfSwKLSAgICAgICAgICAgICAgZnVu
Y3Rpb24oZG9OZXh0KSB7IGgxLnNldFZlcnNpb24oKTsgZG9OZXh0KCk7IH0sCi0gICAgICAgICAg
ICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBoMy5vcGVuKHtvbnN1Y2Nlc3M6IGZpbmlzaFRlc3R9KTsg
ZG9OZXh0KCk7IH0sCi0gICAgICAgICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBoMi5jbG9zZSgp
OyB9LAotICAgICAgICAgICAgICBdKTsKLQotICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7Ci0g
ICAgICAgIGRlYnVnKCJOT1RFOiBXaWxsIEZBSUwgd2l0aCBleHRyYSBib2d1cyBoMS5zZXRWZXJz
aW9uLm9uYmxvY2tlZCBzdGVwOyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzExMzAiKTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzZWxmLnN0ZXBzLnRv
U3RyaW5nKCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJoMS5vcGVuIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEub3Blbi5vbnN1Y2Nlc3MiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5vcGVuIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiaDIub3Blbi5vbnN1Y2Nlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJoMS5zZXRWZXJzaW9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
aDMub3BlbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLmNsb3NlIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbi5vbnN1Y2Nlc3MiLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLnRyYW5zYWN0aW9u
LWNvbXBsZXRlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDMub3Blbi5vbnN1
Y2Nlc3MiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS50b1N0cmluZygpKTsKLSAg
ICAgICAgdGVzdDUoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3Q1KCkgewotICAgIGRlYnVn
KCIiKTsKLSAgICBkZWJ1ZygiVEVTVDogb3BlbiBibG9ja2VkIGlmIGEgVkVSU0lPTl9DSEFOR0Ug
dHJhbnNhY3Rpb24gaXMgcnVubmluZyIpOwotICAgIGV2YWxBbmRMb2coInNlbGYuZGJuYW1lID0g
J3Rlc3Q1Jzsgc2VsZi52ZXIgPSAxOyBzZWxmLnN0ZXBzID0gW10iKTsKLSAgICB2YXIgaDEgPSBu
ZXcgQ29ubmVjdGlvbigiaDEiKTsKLSAgICB2YXIgaDIgPSBuZXcgQ29ubmVjdGlvbigiaDIiKTsK
LQotICAgIHJ1blN0ZXBzKFtmdW5jdGlvbihkb05leHQpIHsgaDEub3Blbih7b25zdWNjZXNzOiBk
b05leHR9KTsgfSwKLSAgICAgICAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGgxLnNldFZlcnNp
b24oKTsgZG9OZXh0KCk7IH0sCi0gICAgICAgICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBoMi5v
cGVuKHtvbnN1Y2Nlc3M6IGZpbmlzaFRlc3R9KTsgfQotICAgICAgICAgICAgICBdKTsKLQotICAg
IGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
c2VsZi5zdGVwcy50b1N0cmluZygpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsi
aDEub3BlbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLm9wZW4ub25zdWNj
ZXNzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbiIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLm9wZW4iLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLm9uc3VjY2VzcyIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24udHJhbnNhY3Rpb24tY29tcGxldGUiLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5vcGVuLm9uc3VjY2VzcyIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBdLnRvU3RyaW5nKCkpOwotICAgICAgICB0ZXN0Nigp
OwotICAgIH0KLX0KLQotCi1mdW5jdGlvbiB0ZXN0NigpIHsKLSAgICBkZWJ1ZygiIik7Ci0gICAg
ZGVidWcoIlRFU1Q6IHR3byBzZXRWZXJzaW9ucyBmcm9tIHRoZSBzYW1lIGNvbm5lY3Rpb24iKTsK
LSAgICBldmFsQW5kTG9nKCJzZWxmLmRibmFtZSA9ICd0ZXN0Nic7IHNlbGYudmVyID0gMTsgc2Vs
Zi5zdGVwcyA9IFtdIik7Ci0gICAgdmFyIGgxID0gbmV3IENvbm5lY3Rpb24oImgxIik7Ci0KLSAg
ICBydW5TdGVwcyhbZnVuY3Rpb24oZG9OZXh0KSB7IGgxLm9wZW4oe29uc3VjY2VzczogZG9OZXh0
fSk7IH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICBm
dW5jdGlvbihkb05leHQpIHsgaDEuc2V0VmVyc2lvbih7b25zdWNjZXNzOiBoYWxmRG9uZX0pOyAK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGgxLnNldFZlcnNpb24oe29uc3VjY2Vz
czogaGFsZkRvbmV9KTsgfQotICAgICAgICAgICAgICBdKTsKLQotICAgIHZhciBjb3VudGVyID0g
MDsKLSAgICBmdW5jdGlvbiBoYWxmRG9uZSgpIHsKLSAgICAgICAgY291bnRlcisrOwotICAgICAg
ICBpZiAoY291bnRlciA8IDIpIHsKLSAgICAgICAgICAgIGRlYnVnKCdoYWxmIGRvbmUnKTsKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKLSAgICAgICAgfQotICAg
IH0gIAotCi0gICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKLSAgICAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJzZWxmLnN0ZXBzLnRvU3RyaW5nKCkiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgWyJoMS5vcGVuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEu
b3Blbi5vbnN1Y2Nlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRW
ZXJzaW9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbiIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24ub25zdWNjZXNz
IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbi50cmFuc2Fj
dGlvbi1jb21wbGV0ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZl
cnNpb24ub25zdWNjZXNzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0
VmVyc2lvbi50cmFuc2FjdGlvbi1jb21wbGV0ZSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBdLnRvU3RyaW5nKCkpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9Ci19Ci0K
LXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL29wZW4tY2xvc2Ut
dmVyc2lvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4tY3Vyc29yLmh0bWwgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVuLWN1cnNvci5odG1sCmluZGV4IDcxOGZlMWJi
YmE0NDQxMzk3NGY1YmE1OWRjMjI1ZmQ2Mzk5OTNhOWYuLmU0ZWIxODJiODA1ZDkwYmVlOTUwZmZi
MzJhOWEzNjY0YWRjOWRiNjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL29wZW4tY3Vyc29yLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
b3Blbi1jdXJzb3IuaHRtbApAQCAtNCw5MCArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2Ny
aXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIG9wZW5DdXJzb3IuIik7Ci0KLWZ1bmN0aW9uIGVtcHR5
Q3Vyc29yU3VjY2VzcygpCi17Ci0gICAgZGVidWcoIkVtcHR5IGN1cnNvciBvcGVuZWQgc3VjY2Vz
c2Z1bGx5LiIpCi0gICAgLy8gRklYTUU6IGNoZWNrIHRoYXQgd2UgY2FuIGl0ZXJhdGUgdGhlIGN1
cnNvci4KLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gb3BlbkVtcHR5Q3Vyc29y
KCkKLXsKLSAgICBkZWJ1ZygiT3BlbmluZyBhbiBlbXB0eSBjdXJzb3IuIik7Ci0gICAga2V5UmFu
Z2UgPSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKCJJbmV4aXN0ZW50S2V5Iik7Ci0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLm9wZW5DdXJzb3Ioa2V5UmFuZ2UpIik7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBlbXB0eUN1cnNvclN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGN1cnNvclN1Y2Nl
c3MoKQotewotICAgIGRlYnVnKCJDdXJzb3Igb3BlbmVkIHN1Y2Nlc3NmdWxseS4iKQotICAgIC8v
IEZJWE1FOiBjaGVjayB0aGF0IHdlIGNhbiBpdGVyYXRlIHRoZSBjdXJzb3IuCi0gICAgc2hvdWxk
QmUoImV2ZW50LnRhcmdldC5yZXN1bHQuZGlyZWN0aW9uIiwgIjAiKTsKLSAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAiJ215S2V5JyIpOwotICAgIHNob3VsZEJlKCJldmVu
dC50YXJnZXQucmVzdWx0LnZhbHVlIiwgIidteVZhbHVlJyIpOwotICAgIGRlYnVnKCIiKTsKLSAg
ICB0cnkgewotICAgICAgICBkZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIC5jb250
aW51ZSh7fSkuIik7Ci0gICAgICAgIGV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoe30pOwot
ICAgICAgICB0ZXN0RmFpbGVkKCJObyBleGNlcHRpb24gdGhyb3duIik7Ci0gICAgfSBjYXRjaCAo
ZSkgewotICAgICAgICB0ZXN0UGFzc2VkKCJDYXVnaHQgZXhjZXB0aW9uOiAiICsgZS50b1N0cmlu
ZygpKTsKLSAgICB9Ci0gICAgZGVidWcoIiIpOwotICAgIG9wZW5FbXB0eUN1cnNvcigpOwotfQot
Ci1mdW5jdGlvbiBvcGVuQ3Vyc29yKCkKLXsKLSAgICBkZWJ1ZygiT3BlbmluZyBjdXJzb3IiKTsK
LSAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQoIm15S2V5Iik7Ci0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5zb3VyY2Uub3BlbkN1cnNvcihrZXlSYW5n
ZSkiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvclN1Y2Nlc3M7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldFZl
cnNpb25TdWNjZXNzKCkKLXsKLSAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKLSAg
ICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQg
PSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLQotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jlcyhk
Yik7Ci0KLSAgICB2YXIgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCd0ZXN0JykiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
b2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlJywgJ215S2V5JykiKTsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IG9wZW5DdXJzb3I7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0gCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgdmFyIGRiID0g
ZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gCi0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IHNldFZlcnNpb25TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotIAotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVt
b3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERC
Lm9wZW4oJ29wZW4tY3Vyc29yJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNj
ZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQot
Ci10ZXN0KCk7Ci0KLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL29wZW4tY3Vy
c29yLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi1kdXJpbmctdHJhbnNhY3Rpb24uaHRt
bCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4tZHVyaW5nLXRyYW5zYWN0aW9u
Lmh0bWwKaW5kZXggY2JkZDM1Y2RjNWE2NzQ2MjQwOWQ1ZWJlMmY4MTE0ZjhkNjAxZWFjMC4uY2Q1
ZjhmNmRjMzQ4NjkzN2E5YjRhZjgxN2Y0NDUxMjRhMDhlNTlmNCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi1kdXJpbmctdHJhbnNhY3Rpb24uaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVuLWR1cmluZy10cmFuc2FjdGlvbi5o
dG1sCkBAIC0xLDg3ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFk
PgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgb3Blbmlu
ZyBkYXRhYmFzZSBjb25uZWN0aW9ucyBkdXJpbmcgdHJhbnNhY3Rpb25zIik7Ci0KLWZ1bmN0aW9u
IHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgcHJlcGFyZURhdGFi
YXNlKCk7Ci19Ci0KLWZ1bmN0aW9uIHByZXBhcmVEYXRhYmFzZSgpCi17Ci0gICAgZGVidWcoInBy
ZXBhcmUgZGF0YWJhc2UiKTsKLSAgICBldmFsQW5kTG9nKCJvcGVucmVxMSA9IGluZGV4ZWREQi5v
cGVuKCdkYjEnKSIpOwotICAgIG9wZW5yZXExLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLSAgICBvcGVucmVxMS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZSkgewotICAgICAgICBl
dmFsQW5kTG9nKCJkYmMxID0gb3BlbnJlcTEucmVzdWx0Iik7Ci0gICAgICAgIGV2YWxBbmRMb2co
InNldHZlcnJlcSA9IGRiYzEuc2V0VmVyc2lvbignMS4wJykiKTsKLSAgICAgICAgc2V0dmVycmVx
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgc2V0dmVycmVxLm9u
c3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJkYmMxLmNy
ZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotICAgICAgICAgICAgc2V0dmVycmVxLnJl
c3VsdC5vbmNvbXBsZXRlID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAgICAgICAgICBkZWJ1Zygi
ZGF0YWJhc2UgcHJlcGFyYXRpb24gY29tcGxldGUiKTsKLSAgICAgICAgICAgICAgICBkZWJ1Zygi
Iik7Ci0gICAgICAgICAgICAgICAgc3RhcnRUcmFuc2FjdGlvbigpOwotICAgICAgICAgICAgfTsK
LSAgICAgICAgfTsKLSAgICB9OwotfQotCi1mdW5jdGlvbiBzdGFydFRyYW5zYWN0aW9uKCkKLXsK
LSAgICBkZWJ1Zygic3RhcnRpbmcgdHJhbnNhY3Rpb24iKTsKLSAgICBldmFsQW5kTG9nKCJzdGF0
ZSA9ICdzdGFydGluZyciKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiYzEudHJhbnNhY3Rp
b24oJ3N0b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFu
ZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpLnB1dCgndmFsdWUnLCAna2V5Jyki
KTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJh
bnMub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxl
dGUgPSBmdW5jdGlvbiAoZSkgewotICAgICAgICBkZWJ1ZygidHJhbnNhY3Rpb24gY29tcGxldGUi
KTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzdGF0ZSIsICJvcGVuM2NvbXBsZXRl
Iik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH07Ci0KLSAgICBkZWJ1ZygiIik7Ci0g
ICAgdHJ5T3BlbnMoKTsKLX0KLQotCi1mdW5jdGlvbiB0cnlPcGVucygpCi17Ci0gICAgZGVidWco
InRyeWluZyB0byBvcGVuIHRoZSBzYW1lIGRhdGFiYXNlIik7Ci0gICAgZXZhbEFuZExvZygib3Bl
bnJlcTIgPSBpbmRleGVkREIub3BlbignZGIxJykiKTsKLSAgICBvcGVucmVxMi5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgb3BlbnJlcTIub25zdWNjZXNzID0gZnVuY3Rp
b24gKGUpIHsKLSAgICAgICAgZGVidWcoIm9wZW5yZXEyLm9uc3VjY2VzcyIpOwotICAgICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoInN0YXRlIiwgInN0YXJ0aW5nIik7Ci0gICAgICAgIGV2YWxB
bmRMb2coInN0YXRlID0gJ29wZW4yY29tcGxldGUnIik7Ci0gICAgICAgIGRlYnVnKCIiKTsKLSAg
ICB9Ci0gICAgZGVidWcoIiIpOwotCi0gICAgZGVidWcoInRyeWluZyB0byBvcGVuIGEgZGlmZmVy
ZW50IGRhdGFiYXNlIik7Ci0gICAgZXZhbEFuZExvZygib3BlbnJlcTMgPSBpbmRleGVkREIub3Bl
bignZGIyJykiKTsKLSAgICBvcGVucmVxMy5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci0gICAgb3BlbnJlcTMub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAgZGVi
dWcoIm9wZW5yZXEzLm9uc3VjY2VzcyIpOwotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
InN0YXRlIiwgIm9wZW4yY29tcGxldGUiKTsKLSAgICAgICAgZXZhbEFuZExvZygic3RhdGUgPSAn
b3BlbjNjb21wbGV0ZSciKTsKLSAgICAgICAgZGVidWcoIiIpOwotICAgIH0KLSAgICBkZWJ1Zygi
Iik7Ci19Ci0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL29w
ZW4tZHVyaW5nLXRyYW5zYWN0aW9uLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcHJlZmV0Y2gt
YnVnZml4LTEwODA3MS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcHJlZmV0
Y2gtYnVnZml4LTEwODA3MS5odG1sCmluZGV4IGVkYTI5OTc3YzVlNDQ2ZmNkZTZkZjQ1YTlmNmU1
YTM1ZDA2MGFlMDguLjg0YzdhNjU1N2VjYTJlZWE3YzRlZmQ3MjIyNGUwOTJiNzcwOTc5YzkgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ByZWZldGNoLWJ1Z2ZpeC0x
MDgwNzEuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9wcmVmZXRjaC1i
dWdmaXgtMTA4MDcxLmh0bWwKQEAgLTQsMTIzICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVz
Y3JpcHRpb24oIlRlc3QgZm9yIGNyYnVnLmNvbS8xMDgwNzEiKTsKLQotLy8gSGF2ZSB0byBiZSBh
dCBsZWFzdCA1IGhlcmU6IDEgaW5pdGlhbCwgMyBjb250aW51ZXMgdG8gdHJpZ2dlciBwcmVmZXRj
aCBhbmQgMQotLy8gcG9zdC1hYm9ydCBvdXRzdGFuZGluZyBjb250aW51ZS4KLXZhciBuYW1lcyA9
IFsnQWxwaGEnLCAnQnJhdm8nLCAnQ2hhcmxpZScsICdEZWx0YScsICdFY2hvJ107Ci0KLWZ1bmN0
aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgREJOQU1FID0g
J3ByZWZldGNoLWJ1Z2ZpeC0xMDgwNzEnOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRl
eGVkREIuZGVsZXRlRGF0YWJhc2UoREJOQU1FKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25ibG9ja2VkID0gdW5leHBlY3Rl
ZEJsb2NrZWRDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7
Ci0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihEQk5BTUUpIik7
Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIH07Ci19Ci0KLWZ1bmN0
aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICB2YXIgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJz
aW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9u
U3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJzZXRWZXJz
aW9uU3VjY2VzcygpOiIpOwotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7
Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIHRyYW5z
Lm9uY29tcGxldGUgPSBpdGVyYXRlQW5kRGVsZXRlRmlyc3RFbGVtZW50OwotCi0gICAgdmFyIG9i
amVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9y
ZSgnc3RvcmUnLCB7a2V5UGF0aDogJ2lkJ30pIik7Ci0gICAgcmVzZXRPYmplY3RTdG9yZSgpOwot
fQotCi1mdW5jdGlvbiByZXNldE9iamVjdFN0b3JlKCkKLXsKLSAgICBkZWJ1ZygiXG5yZXNldE9i
amVjdFN0b3JlKCk6Iik7Ci0KLSAgICBvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdz
dG9yZScpOwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmNsZWFyKCkiKTsKLSAgICBmb3Ig
KGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coIm9iamVjdFN0b3JlLmFkZCh7aWQ6ICIgKyBpICsgIiwgbmFtZTogXCIiICsgbmFtZXNb
aV0gKyAiXCJ9KSIpOwotICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLSAgICB9Ci0KLSAgICBkZWJ1ZygiIik7Ci19Ci0KLWZ1bmN0aW9uIGl0ZXJhdGVB
bmREZWxldGVGaXJzdEVsZW1lbnQoKQotewotICAgIGRlYnVnKCJpdGVyYXRlQW5kRGVsZXRlRmly
c3RFbGVtZW50KCk6Iik7Ci0KLSAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9u
KFsnc3RvcmUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICB0cmFucy5vbmFi
b3J0ID0gdHJhbnNhY3Rpb25BYm9ydGVkOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSB1bmV4cGVj
dGVkQ29tcGxldGVDYWxsYmFjazsKLQotICAgIC8vIENyZWF0ZSB0aGUgY3Vyc29yIGFuZCBpdGVy
YXRlIG92ZXIgdGhlIHdob2xlIHRoaW5nLgotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFu
cy5vYmplY3RTdG9yZSgnc3RvcmUnKS5vcGVuQ3Vyc29yKCkiKTsKLSAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1
bmN0aW9uICgpIHsKLSAgICAgICAgdmFyIGN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Ci0g
ICAgICAgIGlmIChjdXJzb3IgPT0gbnVsbCkgewotICAgICAgICAgICAgcmVzZXRPYmplY3RTdG9y
ZSgpOwotICAgICAgICAgICAgcHJlZmV0Y2hBbmRBYm9ydCgpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0KLSAgICAgICAgZGVidWcoY3Vyc29yLnZhbHVlLmlkICsgIjogIiArIGN1
cnNvci52YWx1ZS5uYW1lKTsKLQotICAgICAgICBpZiAoY3Vyc29yLnZhbHVlLmlkID09IDApIHsK
LSAgICAgICAgICAgIC8vIERlbGV0ZSB0aGUgZmlyc3QgZWxlbWVudCB3aGVuIHdlIHNlZSBpdC4K
LSAgICAgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnc3Rv
cmUnKS5kZWxldGUoMCkiKTsKLSAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlv
bigpIHsgY3Vyc29yLmNvbnRpbnVlKCk7IH07Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBjdXJzb3IuY29udGludWUoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24gcHJl
ZmV0Y2hBbmRBYm9ydCgpCi17Ci0gICAgZGVidWcoInByZWZldGNoQW5kQWJvcnQoKToiKTsKLQot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKS5vcGVu
Q3Vyc29yKCkiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgdmFyIGN1
cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Ci0gICAgICAgIGRlYnVnKGN1cnNvci52YWx1ZS5p
ZCArICI6ICIgKyBjdXJzb3IudmFsdWUubmFtZSk7Ci0gICAgICAgIC8vIEhhdmUgdG8gaXRlcmF0
ZSB0byAzIGluIG9yZGVyIHRvIHByZWZldGNoLCBidXQgY2FuJ3QgaXRlcmF0ZSBwYXN0IDMKLSAg
ICAgICAgLy8gc28gdGhhdCB0aGVyZSB3aWxsIGJlIGEgY29udGludWUgcmVtYWluaW5nLgotICAg
ICAgICBpZiAoY3Vyc29yLnZhbHVlLmlkID09IDMpIHsKLSAgICAgICAgICAgIGV2YWxBbmRMb2co
InRyYW5zLmFib3J0KCkiKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGN1cnNvci5j
b250aW51ZSgpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0cmFuc2FjdGlvbkFi
b3J0ZWQoKQotewotICAgIHRlc3RQYXNzZWQoIlRyYW5zYWN0aW9uIGFib3J0ZWQgYXMgZXhwZWN0
ZWQiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvcHJlZmV0Y2gtYnVnZml4LTEwODA3MS5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3F1ZXVlZC1jb21tYW5kcy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcXVldWVkLWNvbW1hbmRzLmh0bWwKaW5kZXggMmM0Yjk5ZmViNTg4NWUxYzE0OTE1
ZGU0NDYzZGQzMWM4ZDhlNDhlNC4uNTc4ZGNkZWEwOGFlNTY5MmEyNzQzZWIwYjQ5YzQ0MjZjYmRm
N2JhMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcXVldWVkLWNv
bW1hbmRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcXVldWVkLWNv
bW1hbmRzLmh0bWwKQEAgLTQsNjggKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFy
ZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlv
bigiVmVyaWZ5IHRoYXQgcXVldWluZyB1cCBzZXZlcmFsIGNvbW1hbmRzIHdvcmtzIChhbmQgdGhl
eSBhbGwgZmlyZSkuIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclBy
ZWZpeGVzKCk7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdxdWV1
ZWQtY29tbWFuZHMnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvbjsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rp
b24gc2V0VmVyc2lvbigpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCdu
ZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVu
Y3Rpb24gZGVsZXRlRXhpc3RpbmcoKQotewotICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2Vzcygp
OiIpOwotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0gICAgdHJhbnMu
b25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0
U3RvcmVzKGRiKTsKLQotICAgIHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLSAgICBzZWxmLmluZGV4T2JqZWN0ID0gZXZhbEFuZExv
Zygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZScsICd4JykiKTsKLQotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgdmVyaWZ5QWRkKDApOyB9Owot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotCi0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlMicsIHk6ICd6enoyJ30sICdr
ZXkyJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeyB2ZXJpZnlBZGQo
MSk7IH07Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0K
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUucHV0KHt4OiAndmFsdTInLCB5OiAnenoy
J30sICdreTInKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7IHZlcmlm
eUFkZCgyKTsgfTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLQotICAgIHNlbGYuYWRkQ291bnQgPSAwOwotfQotCi1mdW5jdGlvbiB2ZXJpZnlBZGQoZXhw
ZWN0ZWQpCi17Ci0gICAgc2hvdWxkQmUoIiIgKyBhZGRDb3VudCsrLCAiIiArIGV4cGVjdGVkKTsK
LQotICAgIGlmIChhZGRDb3VudCA9PSAzKQotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICBp
ZiAoYWRkQ291bnQgPiAzKQotICAgICAgICB0ZXN0RmFpbGVkKCJVbmV4cGVjdGVkIGNhbGwgdG8g
dmVyaWZ5QWRkISIpOwotfQotCi10ZXN0KCk7Ci0KLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3F1ZXVlZC1jb21tYW5kcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4K
IDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3JlYWRv
bmx5LXByb3BlcnRpZXMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3JlYWRv
bmx5LXByb3BlcnRpZXMuaHRtbAppbmRleCBlMmQ3ZGI1NzY4OWE0NDdhY2FlMTYwNGVlNjFiNzMw
MDYyNGFlYjViLi5kNDhiYjAwOGYyZGYxOTU4ZjEyNzY3YzY5ZGM1YWNkNmU2NzM2ZTc4IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZWFkb25seS1wcm9wZXJ0aWVz
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVhZG9ubHktcHJvcGVy
dGllcy5odG1sCkBAIC0xLDU4ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhl
YWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0Pgog
PC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIHJl
YWRvbmx5IHByb3BlcnRpZXMiKTsKLQotZnVuY3Rpb24gc2V0UmVhZG9ubHlQcm9wZXJ0eShwcm9w
ZXJ0eSwgdmFsdWUpCi17Ci0gICAgb2xkVmFsdWUgPSBldmFsKHByb3BlcnR5KTsKLSAgICBkZWJ1
ZygidHJ5aW5nIHRvIHNldCByZWFkb25seSBwcm9wZXJ0eSAiICsgcHJvcGVydHkpOwotICAgIGV2
YWxBbmRMb2cocHJvcGVydHkgKyAiID0gIiArIHZhbHVlKTsKLSAgICBuZXdWYWx1ZSA9IGV2YWwo
cHJvcGVydHkpOwotICAgIGlmIChvbGRWYWx1ZSA9PSBuZXdWYWx1ZSkgewotICAgICAgICB0ZXN0
UGFzc2VkKHByb3BlcnR5ICsgIiBpcyBzdGlsbCAiICsgb2xkVmFsdWUpOwotICAgIH0gZWxzZSB7
Ci0gICAgICAgIHRlc3RGYWlsZWQocHJvcGVydHkgKyAiIHZhbHVlIHdhcyBjaGFuZ2VkIHRvICIg
KyBuZXdWYWx1ZSk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVW
ZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9ICJmb28iOwotICAgIGRlc2NyaXB0aW9uID0g
Ik15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
b3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5T
dWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
fQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9
IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRl
QW5kUG9wdWxhdGVPYmplY3RTdG9yZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9y
ZSgpCi17Ci0gICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGV2ZW50
LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLSAgICBv
YmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ2ZvbycpOyIpOwotICAgIHNldFJlYWRvbmx5UHJvcGVydHkoIm9iamVjdFN0b3JlLnRyYW5z
YWN0aW9uIiwgInRoaXMiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0K
LTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWFkb25seS1wcm9wZXJ0aWVzLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVhZG9ubHkuaHRtbCBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3JlYWRvbmx5Lmh0bWwKaW5kZXggMTQ4ZTVlMGM3OTM2YjkwNWUzNzE4YWRh
NTA3MGM5NDM5YzY2NWM5OS4uMWUxMTYyMDNiNTZlODk5ZDBiNTFkM2I3M2MwZjk1YjRlZWFlYzhh
YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVhZG9ubHkuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZWFkb25seS5odG1sCkBAIC0x
LDExNSArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBz
cmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5
PgotPHNjcmlwdD4KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiByZWFkb25seSBwcm9wZXJ0
aWVzIik7Ci0KLWZ1bmN0aW9uIHNldFJlYWRvbmx5UHJvcGVydHkocHJvcGVydHksIHZhbHVlKQot
ewotICAgIG9sZFZhbHVlID0gZXZhbChwcm9wZXJ0eSk7Ci0gICAgZGVidWcoInRyeWluZyB0byBz
ZXQgcmVhZG9ubHkgcHJvcGVydHkgIiArIHByb3BlcnR5KTsKLSAgICBldmFsQW5kTG9nKHByb3Bl
cnR5ICsgIiA9ICIgKyB2YWx1ZSk7Ci0gICAgbmV3VmFsdWUgPSBldmFsKHByb3BlcnR5KTsKLSAg
ICBpZiAob2xkVmFsdWUgPT0gbmV3VmFsdWUpIHsKLSAgICAgICAgdGVzdFBhc3NlZChwcm9wZXJ0
eSArICIgaXMgc3RpbGwgIiArIG9sZFZhbHVlKTsKLSAgICB9IGVsc2UgewotICAgICAgICB0ZXN0
RmFpbGVkKHByb3BlcnR5ICsgIiB2YWx1ZSB3YXMgY2hhbmdlZCIpOwotICAgIH0KLX0KLQotZnVu
Y3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUg
PSAiZm9vIjsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQot
ewotICAgIHNldFJlYWRvbmx5UHJvcGVydHkoInJlcXVlc3QucmVzdWx0IiwgIkluZmluaXR5Iik7
Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgicmVxdWVzdC5lcnJvckNvZGUiLCAiNjY2Iik7Ci0g
ICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgicmVxdWVzdC5zb3VyY2UiLCAidGhpcyIpOwotICAgIHNl
dFJlYWRvbmx5UHJvcGVydHkoInJlcXVlc3QudHJhbnNhY3Rpb24iLCAidGhpcyIpOwotICAgIHNl
dFJlYWRvbmx5UHJvcGVydHkoInJlcXVlc3QucmVhZHlTdGF0ZSIsICI2NjYiKTsKLQotICAgIGRi
ID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2V0UmVhZG9u
bHlQcm9wZXJ0eSgiZGIubmFtZSIsICInYmFyJyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUFuZFBvcHVsYXRl
T2JqZWN0U3RvcmUoKQotewotICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rp
b24gPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgIHNldFJlYWRvbmx5UHJvcGVydHkoInRy
YW5zYWN0aW9uLm1vZGUiLCAiNjY2Iik7Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgidHJhbnNh
Y3Rpb24uZGIiLCAidGhpcyIpOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQot
ICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnZm9vJyk7Iik7Ci0KLSAgICBzZXRSZWFkb25seVByb3BlcnR5KCJvYmplY3RTdG9y
ZS5uYW1lIiwgIidiYXInIik7Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgib2JqZWN0U3RvcmUu
a2V5UGF0aCIsICInYmFyJyIpOwotLyogZmFpbHMsIHNwbGl0IGludG8gc2VwYXJhdGUgdGVzdAot
ICAgIHNldFJlYWRvbmx5UHJvcGVydHkoIm9iamVjdFN0b3JlLmluZGV4TmFtZXMiLCAiWydiYXIn
XSIpOwotKi8KLS8qIGZhaWxzLCBzcGxpdCBpbnRvIHNlcGFyYXRlIHRlc3QKLSAgICBzZXRSZWFk
b25seVByb3BlcnR5KCJvYmplY3RTdG9yZS50cmFuc2FjdGlvbiIsICJ0aGlzIik7Ci0qLwotCi0g
ICAgcmVzdWx0ID0gZXZhbEFuZExvZygicmVzdWx0ID0gb2JqZWN0U3RvcmUuYWRkKHt9LCAnZmly
c3QnKTsiKTsKLSAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
ICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBhZGRTdWNjZXNzOwotfQotCi1mdW5jdGlvbiBhZGRTdWNj
ZXNzKCkKLXsKLSAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJyZXN1bHQgPSBvYmplY3RTdG9yZS5v
cGVuQ3Vyc29yKCk7Iik7Ci0gICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLSAgICByZXN1bHQub25zdWNjZXNzID0gY2hlY2tDdXJzb3I7Ci19Ci0KLWZ1bmN0aW9u
IGNoZWNrQ3Vyc29yKCkKLXsKLSAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVu
dC50YXJnZXQucmVzdWx0OyIpOwotICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgc2V0UmVhZG9u
bHlQcm9wZXJ0eSgiY3Vyc29yLnNvdXJjZSIsICJ0aGlzIik7Ci0gICAgICAgIHNldFJlYWRvbmx5
UHJvcGVydHkoImN1cnNvci5kaXJlY3Rpb24iLCAiNjY2Iik7Ci0gICAgICAgIHNldFJlYWRvbmx5
UHJvcGVydHkoImN1cnNvci5rZXkiLCAiSW5maW5pdHkiKTsKLSAgICAgICAgc2V0UmVhZG9ubHlQ
cm9wZXJ0eSgiY3Vyc29yLnByaW1hcnlLZXkiLCAiSW5maW5pdHkiKTsKLSAgICB9IGVsc2Ugewot
ICAgICAgICB0ZXN0RmFpbGVkKCJjdXJzb3IgaXMgbnVsbCIpOwotICAgIH0KLQotICAgIGluZGV4
ID0gZXZhbEFuZExvZygiaW5kZXggPSBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgnZmlyc3QnLCAn
Zmlyc3QnKTsiKTsKLSAgICBzZXRSZWFkb25seVByb3BlcnR5KCJpbmRleC5uYW1lIiwgIidiYXIn
Iik7Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgiaW5kZXgub2JqZWN0U3RvcmUiLCAidGhpcyIp
OwotICAgIHNldFJlYWRvbmx5UHJvcGVydHkoImluZGV4LmtleVBhdGgiLCAiJ2JhciciKTsKLSAg
ICBzZXRSZWFkb25seVByb3BlcnR5KCJpbmRleC51bmlxdWUiLCAidHJ1ZSIpOwotCi0gICAga2V5
UmFuZ2UgPSBJREJLZXlSYW5nZS5vbmx5KCJmaXJzdCIpOwotICAgIHNldFJlYWRvbmx5UHJvcGVy
dHkoImtleVJhbmdlLmxvd2VyIiwgIkluZmluaXR5Iik7Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0
eSgia2V5UmFuZ2UudXBwZXIiLCAiSW5maW5pdHkiKTsKLSAgICBzZXRSZWFkb25seVByb3BlcnR5
KCJrZXlSYW5nZS5sb3dlck9wZW4iLCAidHJ1ZSIpOwotICAgIHNldFJlYWRvbmx5UHJvcGVydHko
ImtleVJhbmdlLnVwcGVyT3BlbiIsICJ0cnVlIik7Ci0KLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0K
LQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWFkb25s
eS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3JlcXVlc3QtZXZlbnQtcHJvcGFnYXRpb24uaHRt
bCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3JlcXVlc3QtZXZlbnQtcHJvcGFnYXRp
b24uaHRtbAppbmRleCBmOTFkOGVkNDFjY2Q1NDNmYzQzNGUwZTVmOThjZmJhYWRkMzE0ZWU3Li5i
MTExMWJkMmMzNmM0NmNlNDNiMWE4OWI4ZDk5ODA2YjEwNTg2NzA1IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXF1ZXN0LWV2ZW50LXByb3BhZ2F0aW9uLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVxdWVzdC1ldmVudC1wcm9wYWdh
dGlvbi5odG1sCkBAIC00LDI3MyArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJl
ZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9u
KCJUZXN0IGV2ZW50IHByb3BvZ2F0aW9uIG9uIElEQlJlcXVlc3QuIik7Ci0KLWZ1bmN0aW9uIHRl
c3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImluZGV4ZWREQi5vcGVuKCdyZXF1ZXN0LWV2ZW50LXByb3BhZ2F0aW9uJykiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb247Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb24oKQotewot
ICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZUV4aXN0aW5n
KCkKLXsKLSAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKLSAgICBzZWxmLnRyYW5z
ID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxk
QmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVk
QWJvcnRDYWxsYmFjazsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gc3RhcnRU
ZXN0Iik7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgc3RvcmUgPSBl
dmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxs
KSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6
ICd6enonfSwgJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHN0YXJ0VGVzdCgpCi17Ci0gICAgZGVidWcoIlZlcmlm
eSB0aGF0IGhhbmRsZXIgZmlyZXMgYW5kIHRoYXQgbm90IHByZXZlbnRpbmcgZGVmYXVsdCB3aWxs
IHJlc3VsdCBpbiBhbiBhYm9ydCIpOwotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBk
Yi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIp
OwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSB0cmFuc2FjdGlvbkFib3J0ZWQiKTsK
LSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2Fs
bGJhY2siKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmVycm9yID0gYWxsb3dEZWZhdWx0Iik7
Ci0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9y
ZU5hbWUnKSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1
ZScsIHk6ICd6enonfSwgJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVj
dGVkU3VjY2Vzc0NhbGxiYWNrOwotICAgIGhhbmRsZXJGaXJlZCA9IGZhbHNlOwotfQotCi1mdW5j
dGlvbiBhbGxvd0RlZmF1bHQoKQotewotICAgIHRlc3RQYXNzZWQoIkV2ZW50IGhhbmRsZXIgZmly
ZWQiKTsKLSAgICBkZWJ1ZygiRG9pbmcgbm90aGluZyB0byBwcmV2ZW50IHRoZSBkZWZhdWx0IGFj
dGlvbi4uLiIpOwotICAgIGhhbmRsZXJGaXJlZCA9IHRydWU7Ci19Ci0KLWZ1bmN0aW9uIHRyYW5z
YWN0aW9uQWJvcnRlZCgpCi17Ci0gICAgc2hvdWxkQmVUcnVlKCJoYW5kbGVyRmlyZWQiKTsKLSAg
ICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIlZlcmlmaW5nIGVycm9yIik7Ci0gICAgdHJhbnMgPSBl
dmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIElEQlRyYW5z
YWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMub25hYm9ydCA9IHRy
YW5zYWN0aW9uQWJvcnRlZDIiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0g
dW5leHBlY3RlZEFib3J0Q2FsbGJhY2siKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5hZGRFdmVu
dExpc3RlbmVyKCdlcnJvcicsIGVycm9yQ2FwdHVyZUNhbGxiYWNrLCB0cnVlKSIpOwotICAgIGV2
YWxBbmRMb2coInRyYW5zLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZXJyb3JCdWJibGVDYWxs
YmFjaywgZmFsc2UpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMuYWRkRXZlbnRMaXN0ZW5lcign
c3VjY2VzcycsIHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2ssIHRydWUpIik7Ci0gICAgZXZhbEFu
ZExvZygidHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignc3VjY2VzcycsIHVuZXhwZWN0ZWRTdWNjZXNz
Q2FsbGJhY2ssIGZhbHNlKSIpOwotICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50TGlzdGVuZXIo
J2Vycm9yJywgZGJFcnJvckNhcHR1cmVDYWxsYmFjaywgdHJ1ZSkiKTsKLSAgICBldmFsQW5kTG9n
KCJkYi5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGRiRXJyb3JCdWJibGVDYWxsYmFjaywgZmFs
c2UpIik7Ci0gICAgZXZhbEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignc3VjY2VzcycsIHVu
ZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2ssIHRydWUpIik7Ci0gICAgZXZhbEFuZExvZygiZGIuYWRk
RXZlbnRMaXN0ZW5lcignc3VjY2VzcycsIHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2ssIGZhbHNl
KSIpOwotICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgn
c3RvcmVOYW1lJykiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAn
dmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5l
eHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSBlcnJvckZpcmVk
Q2FsbGJhY2s7Ci0gICAgZGJDYXB0dXJlRmlyZWQgPSBmYWxzZTsKLSAgICBjYXB0dXJlRmlyZWQg
PSBmYWxzZTsKLSAgICByZXF1ZXN0RmlyZWQgPSBmYWxzZTsKLSAgICBidWJibGVGaXJlZCA9IGZh
bHNlOwotICAgIGRiQnViYmxlRmlyZWQgPSBmYWxzZTsKLX0KLQotZnVuY3Rpb24gZGJFcnJvckNh
cHR1cmVDYWxsYmFjaygpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJJbiBJREJEYXRh
YmFzZSBlcnJvciBjYXB0dXJlIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGJDYXB0dXJlRmlyZWQi
KTsKLSAgICBzaG91bGRCZUZhbHNlKCJjYXB0dXJlRmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNl
KCJyZXF1ZXN0RmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJidWJibGVGaXJlZCIpOwotICAg
IHNob3VsZEJlRmFsc2UoImRiQnViYmxlRmlyZWQiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFy
Z2V0IiwgInJlcXVlc3QiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQuY3VycmVudFRhcmdldCIsICJk
YiIpOwotICAgIGRiQ2FwdHVyZUZpcmVkID0gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gZXJyb3JDYXB0
dXJlQ2FsbGJhY2soKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiSW4gSURCVHJhbnNh
Y3Rpb24gZXJyb3IgY2FwdHVyZSIpOwotICAgIHNob3VsZEJlVHJ1ZSgiZGJDYXB0dXJlRmlyZWQi
KTsKLSAgICBzaG91bGRCZUZhbHNlKCJjYXB0dXJlRmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNl
KCJyZXF1ZXN0RmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJidWJibGVGaXJlZCIpOwotICAg
IHNob3VsZEJlRmFsc2UoImRiQnViYmxlRmlyZWQiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFy
Z2V0IiwgInJlcXVlc3QiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQuY3VycmVudFRhcmdldCIsICJ0
cmFucyIpOwotICAgIGNhcHR1cmVGaXJlZCA9IHRydWU7Ci19Ci0KLWZ1bmN0aW9uIGVycm9yRmly
ZWRDYWxsYmFjaygpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJJbiBJREJSZXF1ZXN0
IGhhbmRsZXIiKTsKLSAgICBzaG91bGRCZVRydWUoImRiQ2FwdHVyZUZpcmVkIik7Ci0gICAgc2hv
dWxkQmVUcnVlKCJjYXB0dXJlRmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJyZXF1ZXN0Rmly
ZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJidWJibGVGaXJlZCIpOwotICAgIHNob3VsZEJlRmFs
c2UoImRiQnViYmxlRmlyZWQiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0IiwgInJlcXVl
c3QiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQuY3VycmVudFRhcmdldCIsICJyZXF1ZXN0Iik7Ci0g
ICAgcmVxdWVzdEZpcmVkID0gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gZXJyb3JCdWJibGVDYWxsYmFj
aygpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJJbiBJREJUcmFuc2FjdGlvbiBlcnJv
ciBidWJibGUiKTsKLSAgICBzaG91bGRCZVRydWUoImRiQ2FwdHVyZUZpcmVkIik7Ci0gICAgc2hv
dWxkQmVUcnVlKCJjYXB0dXJlRmlyZWQiKTsKLSAgICBzaG91bGRCZVRydWUoInJlcXVlc3RGaXJl
ZCIpOwotICAgIHNob3VsZEJlRmFsc2UoImJ1YmJsZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxz
ZSgiZGJCdWJibGVGaXJlZCIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAicmVxdWVz
dCIpOwotICAgIHNob3VsZEJlKCJldmVudC5jdXJyZW50VGFyZ2V0IiwgInRyYW5zIik7Ci0gICAg
YnViYmxlRmlyZWQgPSB0cnVlOwotfQotCi1mdW5jdGlvbiBkYkVycm9yQnViYmxlQ2FsbGJhY2so
KQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiSW4gSURCRGF0YWJhc2UgZXJyb3IgYnVi
YmxlIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJkYkNhcHR1cmVGaXJlZCIpOwotICAgIHNob3VsZEJl
VHJ1ZSgiY2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJyZXF1ZXN0RmlyZWQiKTsK
LSAgICBzaG91bGRCZVRydWUoImJ1YmJsZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGJC
dWJibGVGaXJlZCIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAicmVxdWVzdCIpOwot
ICAgIHNob3VsZEJlKCJldmVudC5jdXJyZW50VGFyZ2V0IiwgImRiIik7Ci0gICAgZGJCdWJibGVG
aXJlZCA9IHRydWU7Ci19Ci0KLWZ1bmN0aW9uIHRyYW5zYWN0aW9uQWJvcnRlZDIoKQotewotICAg
IGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiVHJhbnNhY3Rpb24gYWJvcnRlZCIpOwotICAgIHNob3Vs
ZEJlVHJ1ZSgiZGJDYXB0dXJlRmlyZWQiKTsKLSAgICBzaG91bGRCZVRydWUoImNhcHR1cmVGaXJl
ZCIpOwotICAgIHNob3VsZEJlVHJ1ZSgicmVxdWVzdEZpcmVkIik7Ci0gICAgc2hvdWxkQmVUcnVl
KCJidWJibGVGaXJlZCIpOwotICAgIHNob3VsZEJlVHJ1ZSgiZGJCdWJibGVGaXJlZCIpOwotICAg
IGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiVmVyaWZpbmcgc3VjY2Vzcy4iKTsKLSAgICB0cmFucyA9
IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJh
bnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRl
ID0gdHJhbnNhY3Rpb25Db21wbGV0ZSIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQg
PSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLmFkZEV2
ZW50TGlzdGVuZXIoJ3N1Y2Nlc3MnLCBzdWNjZXNzQ2FwdHVyZUNhbGxiYWNrLCB0cnVlKSIpOwot
ICAgIGV2YWxBbmRMb2coInRyYW5zLmFkZEV2ZW50TGlzdGVuZXIoJ3N1Y2Nlc3MnLCBzdWNjZXNz
QnViYmxlQ2FsbGJhY2ssIGZhbHNlKSIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLmFkZEV2ZW50
TGlzdGVuZXIoJ2Vycm9yJywgdW5leHBlY3RlZEVycm9yQ2FsbGJhY2ssIHRydWUpIik7Ci0gICAg
ZXZhbEFuZExvZygidHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjaywgZmFsc2UpIik7Ci0gICAgZXZhbEFuZExvZygiZGIucmVtb3ZlRXZlbnRMaXN0
ZW5lcignZXJyb3InLCBkYkVycm9yQ2FwdHVyZUNhbGxiYWNrLCB0cnVlKSIpOwotICAgIGV2YWxB
bmRMb2coImRiLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZGJFcnJvckJ1YmJsZUNhbGxi
YWNrLCBmYWxzZSkiKTsKLSAgICBldmFsQW5kTG9nKCJkYi5yZW1vdmVFdmVudExpc3RlbmVyKCdz
dWNjZXNzJywgdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjaywgdHJ1ZSkiKTsKLSAgICBldmFsQW5k
TG9nKCJkYi5yZW1vdmVFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgdW5leHBlY3RlZFN1Y2Nlc3ND
YWxsYmFjaywgZmFsc2UpIik7Ci0gICAgZXZhbEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcign
c3VjY2VzcycsIGRiU3VjY2Vzc0NhcHR1cmVDYWxsYmFjaywgdHJ1ZSkiKTsKLSAgICBldmFsQW5k
TG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgZGJTdWNjZXNzQnViYmxlQ2FsbGJh
Y2ssIGZhbHNlKSIpOwotICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9y
JywgdW5leHBlY3RlZEVycm9yQ2FsbGJhY2ssIHRydWUpIik7Ci0gICAgZXZhbEFuZExvZygiZGIu
YWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjaywgZmFsc2Up
Iik7Ci0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdz
dG9yZU5hbWUnKSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2
YWx1ZScsIHk6ICd6enonfSwgJ2tleTInKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc3VjY2Vzc0ZpcmVk
Q2FsbGJhY2s7Ci0gICAgZGJDYXB0dXJlRmlyZWQgPSBmYWxzZTsKLSAgICBjYXB0dXJlRmlyZWQg
PSBmYWxzZTsKLSAgICByZXF1ZXN0RmlyZWQgPSBmYWxzZTsKLSAgICBidWJibGVGaXJlZCA9IGZh
bHNlOwotICAgIGRiQnViYmxlRmlyZWQgPSBmYWxzZTsKLX0KLQotZnVuY3Rpb24gZGJTdWNjZXNz
Q2FwdHVyZUNhbGxiYWNrKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIkluIElEQkRh
dGFiYXNlIHN1Y2Nlc3MgY2FwdHVyZSIpOwotICAgIHNob3VsZEJlRmFsc2UoImRiQ2FwdHVyZUZp
cmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiY2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVG
YWxzZSgicmVxdWVzdEZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiYnViYmxlRmlyZWQiKTsK
LSAgICBzaG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVkIik7Ci0gICAgc2hvdWxkQmUoImV2ZW50
LnRhcmdldCIsICJyZXF1ZXN0Iik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LmN1cnJlbnRUYXJnZXQi
LCAiZGIiKTsKLSAgICBkYkNhcHR1cmVGaXJlZCA9IHRydWU7Ci19Ci0KLWZ1bmN0aW9uIHN1Y2Nl
c3NDYXB0dXJlQ2FsbGJhY2soKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiSW4gSURC
VHJhbnNhY3Rpb24gc3VjY2VzcyBjYXB0dXJlIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJkYkNhcHR1
cmVGaXJlZCIpOwotICAgIHNob3VsZEJlRmFsc2UoImNhcHR1cmVGaXJlZCIpOwotICAgIHNob3Vs
ZEJlRmFsc2UoInJlcXVlc3RGaXJlZCIpOwotICAgIHNob3VsZEJlRmFsc2UoImJ1YmJsZUZpcmVk
Iik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVGaXJlZCIpOwotICAgIHNob3VsZEJlKCJl
dmVudC50YXJnZXQiLCAicmVxdWVzdCIpOwotICAgIHNob3VsZEJlKCJldmVudC5jdXJyZW50VGFy
Z2V0IiwgInRyYW5zIik7Ci0gICAgY2FwdHVyZUZpcmVkID0gdHJ1ZTsKLX0KLQotZnVuY3Rpb24g
c3VjY2Vzc0ZpcmVkQ2FsbGJhY2soKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiSW4g
SURCUmVxdWVzdCBoYW5kbGVyIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJkYkNhcHR1cmVGaXJlZCIp
OwotICAgIHNob3VsZEJlVHJ1ZSgiY2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgi
cmVxdWVzdEZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiYnViYmxlRmlyZWQiKTsKLSAgICBz
aG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVkIik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdl
dCIsICJyZXF1ZXN0Iik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LmN1cnJlbnRUYXJnZXQiLCAicmVx
dWVzdCIpOwotICAgIHJlcXVlc3RGaXJlZCA9IHRydWU7Ci19Ci0KLWZ1bmN0aW9uIHN1Y2Nlc3NC
dWJibGVDYWxsYmFjaygpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJJbiBJREJUcmFu
c2FjdGlvbiBzdWNjZXNzIGJ1YmJsZSIpOwotICAgIHRlc3RGYWlsZWQoIlN1Y2Nlc3MgYnViYmxl
IGNhbGxiYWNrIHNob3VsZCBOT1QgZmlyZSIpOwotICAgIGJ1YmJsZUZpcmVkID0gdHJ1ZTsKLX0K
LQotZnVuY3Rpb24gZGJTdWNjZXNzQnViYmxlQ2FsbGJhY2soKQotewotICAgIGRlYnVnKCIiKTsK
LSAgICBkZWJ1ZygiSW4gSURCRGF0YWJhc2Ugc3VjY2VzcyBidWJibGUiKTsKLSAgICB0ZXN0RmFp
bGVkKCJTdWNjZXNzIGJ1YmJsZSBjYWxsYmFjayBzaG91bGQgTk9UIGZpcmUiKTsKLSAgICBkYkJ1
YmJsZUZpcmVkID0gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gdHJhbnNhY3Rpb25Db21wbGV0ZSgpCi17
Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJUcmFuc2FjdGlvbiBjb21wbGV0ZWQiKTsKLSAg
ICBzaG91bGRCZVRydWUoImRiQ2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJjYXB0
dXJlRmlyZWQiKTsKLSAgICBzaG91bGRCZVRydWUoInJlcXVlc3RGaXJlZCIpOwotICAgIHNob3Vs
ZEJlRmFsc2UoImJ1YmJsZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVGaXJl
ZCIpOwotICAgIGRlYnVnKCIiKTsKLQotICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIHJldHVybjsK
LX0KLQotdGVzdCgpOwotCi0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZXF1
ZXN0LWV2ZW50LXByb3BhZ2F0aW9uLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L2NvbnN0YW50cy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9j
b25zdGFudHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGE1MjljMGJmMTIzYjZhNmNkYmFiYmNiYjViYTgxMTdh
ZDQ3N2FhYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9jb25zdGFudHMuanMKQEAgLTAsMCArMSwzOSBAQAoraWYgKHRoaXMuaW1wb3J0
U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisK
K2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGNvbnN0YW50cy4iKTsKKworZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBzaG91bGRCZSgiSURC
RGF0YWJhc2VFeGNlcHRpb24uVU5LTk9XTl9FUlIiLCAiMSIpOworICAgIHNob3VsZEJlKCJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5OT05fVFJBTlNJRU5UX0VSUiIsICIyIik7CisgICAgc2hvdWxkQmUo
IklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiLCAiMyIpOworICAgIHNob3VsZEJl
KCJJREJEYXRhYmFzZUV4Y2VwdGlvbi5DT05TVFJBSU5UX0VSUiIsICI0Iik7CisgICAgc2hvdWxk
QmUoIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIiwgIjUiKTsKKyAgICBzaG91bGRCZSgi
SURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0FMTE9XRURfRVJSIiwgIjYiKTsKKyAgICBzaG91bGRC
ZSgiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIiwgIjciKTsK
KyAgICBzaG91bGRCZSgiSURCRGF0YWJhc2VFeGNlcHRpb24uQUJPUlRfRVJSIiwgIjgiKTsKKyAg
ICBzaG91bGRCZSgiSURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUiIsICI5Iik7Cisg
ICAgc2hvdWxkQmUoIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRJTUVPVVRfRVJSIiwgIjEwIik7Cisg
ICAgc2hvdWxkQmUoIklEQkRhdGFiYXNlRXhjZXB0aW9uLlFVT1RBX0VSUiIsICIxMSIpOworICAg
IHNob3VsZEJlKCJJREJEYXRhYmFzZUV4Y2VwdGlvbi5WRVJfRVJSIiwgIjEyIik7CisKKyAgICBz
aG91bGRCZSgiSURCUmVxdWVzdC5MT0FESU5HIiwgIjEiKTsKKyAgICBzaG91bGRCZSgiSURCUmVx
dWVzdC5ET05FIiwgIjIiKTsKKworICAgIHNob3VsZEJlKCJJREJDdXJzb3IuTkVYVCIsICIwIik7
CisgICAgc2hvdWxkQmUoIklEQkN1cnNvci5ORVhUX05PX0RVUExJQ0FURSIsICIxIik7CisgICAg
c2hvdWxkQmUoIklEQkN1cnNvci5QUkVWIiwgIjIiKTsKKyAgICBzaG91bGRCZSgiSURCQ3Vyc29y
LlBSRVZfTk9fRFVQTElDQVRFIiwgIjMiKTsKKworICAgIHNob3VsZEJlKCJJREJUcmFuc2FjdGlv
bi5SRUFEX09OTFkiLCAiMCIpOworICAgIHNob3VsZEJlKCJJREJUcmFuc2FjdGlvbi5SRUFEX1dS
SVRFIiwgIjEiKTsKKyAgICBzaG91bGRCZSgiSURCVHJhbnNhY3Rpb24uVkVSU0lPTl9DSEFOR0Ui
LCAiMiIpOworfQorCit0ZXN0KCk7CisKK2ZpbmlzaEpTVGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9jcmVhdGUtYW5kLXJlbW92ZS1vYmplY3Qtc3RvcmUuanMgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3JlYXRlLWFuZC1yZW1vdmUtb2JqZWN0LXN0b3Jl
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjY1MDkyOTQ4YzBkYjE5MzY1Nzg5YzhkY2Y5MzJjMGMyZDgyOTNlZDgK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvY3JlYXRlLWFuZC1yZW1vdmUtb2JqZWN0LXN0b3JlLmpzCkBAIC0wLDAgKzEsNjYgQEAKK2lm
ICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJl
ZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBjcmVhdGUgYW5kIHJl
bW92ZU9iamVjdFN0b3JlIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRv
clByZWZpeGVzKCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdj
cmVhdGUtYW5kLXJlbW92ZS1vYmplY3Qtc3RvcmUnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygib3BlblN1
Y2Nlc3MoKToiKTsKKyAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7CisgICAgdGVzdENyZWF0ZUFuZFJlbW92ZSgpOworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXN1bHQgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB0ZXN0Q3JlYXRlQW5kUmVtb3ZlKCk7Cit9CisKK2Z1
bmN0aW9uIHRlc3RDcmVhdGVBbmRSZW1vdmUoKQoreworICAgIGRlYnVnKCJUcnlpbmcgY3JlYXRl
Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbignZGIuY3JlYXRlT2JqZWN0U3RvcmUoInNv
bWUgb3MiKScsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9FUlIiKTsKKyAgICBk
ZWJ1ZygiVHJ5aW5nIHJlbW92ZSIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oJ2RiLmRl
bGV0ZU9iamVjdFN0b3JlKCJzb21lIG9zIiknLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0FM
TE9XRURfRVJSIik7Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRlbGV0
ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBvcyA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9i
amVjdFN0b3JlKCd0bXAnKSIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLmNyZWF0
ZU9iamVjdFN0b3JlKCd0bXAnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5DT05TVFJBSU5UX0VS
UiIpOworICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25jb21wbGV0ZSA9IHNldFZlcnNpb25Db21w
bGV0ZTsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbkNvbXBsZXRlKCkKK3sKKyAgICB0cmFucyA9
IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWyd0bXAnXSkiKTsKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ3RtcCcpLmdldCgwKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gdHJ5T25jZU1vcmU7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHRyeU9uY2VNb3JlKCkKK3sK
KyAgICBzaG91bGRCZVVuZGVmaW5lZCgiZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgdGVz
dENyZWF0ZUFuZFJlbW92ZSgpOworCisgICAgZGVidWcoIlRyeWluZyBjcmVhdGUgd2l0aCBzdG9y
ZSB0aGF0IGFscmVhZHkgZXhpc3RzIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ3RtcCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9BTExP
V0VEX0VSUiIpOworICAgIGRlYnVnKCJUcnlpbmcgcmVtb3ZlIHdpdGggc3RvcmUgdGhhdCBhbHJl
YWR5IGV4aXN0cyIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLmRlbGV0ZU9iamVj
dFN0b3JlKCd0bXAnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9FUlIiKTsK
KworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL2NyZWF0ZS1vYmplY3Qtc3RvcmUtb3B0aW9ucy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9jcmVhdGUtb2JqZWN0LXN0b3JlLW9wdGlvbnMuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjhjNmE0YzBlM2VmMjBjNDY3Yzg3NWFjYjk3YmYxNTdhZjEyZDE3NAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jcmVhdGUt
b2JqZWN0LXN0b3JlLW9wdGlvbnMuanMKQEAgLTAsMCArMSw4MSBAQAoraWYgKHRoaXMuaW1wb3J0
U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisK
K2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGNyZWF0ZU9iamVjdFN0b3JlJ3MgdmFyaW91
cyBvcHRpb25zIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZp
eGVzKCk7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2NyZWF0
ZS1vYmplY3Qtc3RvcmUtb3B0aW9ucycsICdkZXNjcmlwdGlvbicpIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0g
ZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkK
K3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgZXZhbEFuZExvZygiZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ2EnLCB7a2V5UGF0aDogJ2EnfSkiKTsKKyAgICBldmFsQW5kTG9n
KCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnYicpIik7CisKKyAgICBkZWJ1ZygiZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ2MnLCB7YXV0b0luY3JlbWVudDogdHJ1ZX0pOyIpOworICAgIGRiLmNyZWF0ZU9i
amVjdFN0b3JlKCdjJywge2F1dG9JbmNyZW1lbnQ6IHRydWV9KTsKKyAgICBldmVudC50YXJnZXQu
cmVzdWx0Lm9uY29tcGxldGUgPSBzZXRWZXJzaW9uQ29tcGxldGU7Cit9CisKK2Z1bmN0aW9uIHNl
dFZlcnNpb25Db21wbGV0ZSgpCit7CisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRi
LnRyYW5zYWN0aW9uKFsnYScsICdiJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Cisg
ICAgc2hvdWxkQmUoInRyYW5zLm1vZGUiLCAiSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSIpOwor
CisgICAgcmVxID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2EnKS5wdXQoeydhJzog
MH0pIik7CisgICAgcmVxLm9uc3VjY2VzcyA9IHB1dEI7CisgICAgcmVxLm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKKworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb25DbGFzcygi
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2QnLCAnYmFyJyk7IiwgIlR5cGVFcnJvciIpOworICAgIGV2
YWxBbmRFeHBlY3RFeGNlcHRpb25DbGFzcygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2UnLCBmYWxz
ZSk7IiwgIlR5cGVFcnJvciIpOworfQorCitmdW5jdGlvbiBwdXRCKCkKK3sKKyAgICByZXEgPSBl
dmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYicpLnB1dCh7J2EnOiAwfSwgMCkiKTsgIC8v
IE9PUFMKKyAgICByZXEub25zdWNjZXNzID0gZ2V0QTsKKyAgICByZXEub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBnZXRBKCkKK3sKKyAgICByZXEgPSBl
dmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYScpLmdldCgwKSIpOworICAgIHJlcS5vbnN1
Y2Nlc3MgPSBnZXRCOworICAgIHJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Cit9CisKK2Z1bmN0aW9uIGdldEIoKQoreworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVz
dWx0LmEiLCAie2E6IDB9Iik7CisKKyAgICByZXEgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RT
dG9yZSgnYicpLmdldCgwKSIpOworICAgIHJlcS5vbnN1Y2Nlc3MgPSBjaGVja0I7CisgICAgcmVx
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2hlY2tC
KCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5hIiwgInthOiAwfSIpOwor
CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvY3JlYXRlT2JqZWN0U3RvcmUtbmFtZS1hcmd1bWVudC1yZXF1aXJlZC5qcyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jcmVhdGVPYmplY3RTdG9yZS1uYW1lLWFy
Z3VtZW50LXJlcXVpcmVkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5NTlmYTcyMGUyYzQzYzBiZGE4YTZlNTg5
MjY2NjU4Mjc4ODQzMDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvY3JlYXRlT2JqZWN0U3RvcmUtbmFtZS1hcmd1bWVudC1yZXF1aXJl
ZC5qcwpAQCAtMCwwICsxLDM2IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1w
b3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsK
KyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3Qg
SW5kZXhlZERCIGNyZWF0ZU9iamVjdFN0b3JlIG5hbWUgYXJndW1lbnQgaXMgcmVxdWlyZWQiKTsK
KworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAg
IG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRl
c3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbihu
YW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNz
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
ZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQ
b3B1bGF0ZU9iamVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkK
K3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgc2hvdWxkVGhyb3coImRi
LmNyZWF0ZU9iamVjdFN0b3JlKCk7Iik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3Qo
KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3JlYXRlT2JqZWN0U3RvcmUtbnVsbC1uYW1lLmpz
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2NyZWF0ZU9iamVjdFN0
b3JlLW51bGwtbmFtZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMTU1YTUwMzhkNmUwMGE5NmYyZjg1YmRmY2Q4
YjYzN2FjMjViOWU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL2NyZWF0ZU9iamVjdFN0b3JlLW51bGwtbmFtZS5qcwpAQCAtMCwwICsx
LDM3IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3Jp
cHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGNyZWF0
ZU9iamVjdFN0b3JlIG51bGwgaGFuZGxpbmciKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAg
cmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhu
YW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7Cisg
ICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBj
cmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9y
ZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RT
dG9yZShudWxsKTsiKTsKKyAgICBzaG91bGRCZSgib2JqZWN0U3RvcmUubmFtZSIsICInbnVsbCci
KTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9jdXJzb3ItY29udGludWUuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvY3Vyc29yLWNvbnRpbnVlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0YjBlZjhhNzhmZjQ3ZWM2
M2YwNDU4YzNkZTYwMDJkY2U1NTM5NGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWNvbnRpbnVlLmpzCkBAIC0wLDAgKzEs
MjcwIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3Jp
cHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgSURC
Q3Vyc29yLmNvbnRpbnVlKCkgd2l0aCBhIGtleSBwYXJhbWV0ZXIuIik7CisKK3ZhciBkYXRlID0g
bmV3IERhdGUoKTsKKworLy8gSW4gb3JkZXIgb2YgaG93IGl0IHNob3VsZCBiZSBzb3J0ZWQgYnkg
SW5kZXhlZERCLgorc2VsZi50ZXN0RGF0YSA9IFsKKyAgICAwLAorICAgIDEsCisgICAgMSwKKyAg
ICAzLjE0MTU5LAorICAgIDMuMTQxNTksCisgICAgMTAsCisgICAgMTEsCisgICAgMTIsCisgICAg
MTMsCisgICAgZGF0ZSwKKyAgICBkYXRlLAorICAgIG5ldyBEYXRlKGRhdGUudmFsdWVPZigpICsg
MTAwMCksCisgICAgIkEgYmlnIHN0cmluZyIsCisgICAgIkEgYmlnIHN0cmluZyIsCisgICAgIkEg
Yml0MSIsCisgICAgIkEgYml0MiIsCisgICAgIkEgYml0MyIsCisgICAgInRoZSBCSUdHRVNUIHN0
cmluZyIKK107CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVz
KCk7CisgICAgb3BlbkRhdGFiYXNlKCk7Cit9CisKK2Z1bmN0aW9uIG9wZW5EYXRhYmFzZSgpCit7
CisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2N1cnNvci1jb250aW51
ZScpIik7CisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb247CisgICAgcmVzdWx0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lv
bigpCit7CisgICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dCIpOworCisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNp
b24nKSIpOworICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKKyAgICByZXN1
bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxl
dGVFeGlzdGluZygpCit7CisgICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsK
KyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisKKyAgICBkZWxl
dGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgc2VsZi5vYmplY3RTdG9yZSA9IGV2YWxBbmRM
b2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzb21lT2JqZWN0U3RvcmUnKSIpOworICAgIHNlbGYu
aW5kZXhPYmplY3QgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgnc29tZUlu
ZGV4JywgJ3gnKSIpOworICAgIHNlbGYubmV4dFRvQWRkID0gMDsKKyAgICBhZGREYXRhKCk7Cit9
CisKK2Z1bmN0aW9uIGFkZERhdGEoKQoreworICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coIm9iamVj
dFN0b3JlLmFkZCh7J3gnOiB0ZXN0RGF0YVtuZXh0VG9BZGRdfSwgbmV4dFRvQWRkKSIpOworICAg
IHJlc3VsdC5vbnN1Y2Nlc3MgPSArK3NlbGYubmV4dFRvQWRkIDwgdGVzdERhdGEubGVuZ3RoID8g
YWRkRGF0YSA6IGFzY2VuZGluZ1Rlc3Q7CisgICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gYXNjZW5kaW5nVGVzdCgpCit7CisgICAgZGVi
dWcoIiIpOworICAgIHZhciByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhPYmplY3Qub3Blbktl
eUN1cnNvcihudWxsLCBJREJDdXJzb3IuTkVYVCkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGFzY2VuZGluZ0NhbGxiYWNrOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworICAgIHNlbGYuc3RhZ2UgPSAwOworfQorCitmdW5jdGlvbiBhc2NlbmRpbmdD
YWxsYmFjaygpCisKK3sKKyAgICBpZiAoc2VsZi5zdGFnZSA9PSAwKSB7CisgICAgICAgIHNob3Vs
ZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMCIpOworICAgICAgICBldmFs
QW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKDMuMTQxNTkpIik7CisgICAgfSBl
bHNlIGlmIChzZWxmLnN0YWdlID09IDEpIHsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdl
dC5yZXN1bHQucHJpbWFyeUtleSIsICIzIik7CisgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRh
cmdldC5yZXN1bHQuY29udGludWUoKSIpOworICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSAy
KSB7CisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAi
NCIpOworICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCki
KTsKKyAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gMykgeworICAgICAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjUiKTsKKyAgICAgICAgZXZhbEFuZExv
ZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgxMikiKTsKKyAgICB9IGVsc2UgaWYgKHNl
bGYuc3RhZ2UgPT0gNCkgeworICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5w
cmltYXJ5S2V5IiwgIjciKTsKKyAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3Vs
dC5jb250aW51ZShkYXRlKSIpOworICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSA1KSB7Cisg
ICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiOSIpOwor
ICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKKyAg
ICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gNikgeworICAgICAgICBzaG91bGRCZSgiZXZlbnQu
dGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjEwIik7CisgICAgICAgIGV2YWxBbmRMb2coImV2
ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOworICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFn
ZSA9PSA3KSB7CisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlL
ZXkiLCAiMTEiKTsKKyAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250
aW51ZSgnQSBiaXQxJykiKTsKKyAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gOCkgeworICAg
ICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjE0Iik7Cisg
ICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoJ0EgYml0Mycp
Iik7CisgICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDkpIHsKKyAgICAgICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIxNiIpOworICAgICAgICBldmFsQW5k
TG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCd0aGUgQklHR0VTVCBzdHJpbmcnKSIp
OworICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSAxMCkgeworICAgICAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjE3Iik7CisgICAgICAgIGV2YWxBbmRM
b2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOworICAgIH0gZWxzZSBpZiAoc2Vs
Zi5zdGFnZSA9PSAxMSkgeworICAgICAgICBzaG91bGRCZU51bGwoImV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKKyAgICAgICAgZGVzY2VuZGluZ1Rlc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0g
ZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQoIklsbGVnYWwgc3RhZ2UuIik7CisgICAgfQorICAg
IHNlbGYuc3RhZ2UrKzsKK30KKworZnVuY3Rpb24gZGVzY2VuZGluZ1Rlc3QoKQoreworICAgIGRl
YnVnKCIiKTsKKyAgICB2YXIgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0Lm9wZW5L
ZXlDdXJzb3IobnVsbCwgSURCQ3Vyc29yLlBSRVYpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBkZXNjZW5kaW5nQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisgICAgc2VsZi5zdGFnZSA9IDA7Cit9CisKK2Z1bmN0aW9uIGRlc2NlbmRp
bmdDYWxsYmFjaygpCit7CisgICAgaWYgKHNlbGYuc3RhZ2UgPT0gMCkgeworICAgICAgICBzaG91
bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjE3Iik7CisgICAgICAgIGV2
YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoJ0EgYml0MicpIik7CisgICAg
fSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDEpIHsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRh
cmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIxNSIpOworICAgICAgICBldmFsQW5kTG9nKCJldmVu
dC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKKyAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2Ug
PT0gMikgeworICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5
IiwgIjE0Iik7CisgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGlu
dWUoZGF0ZSkiKTsKKyAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gMykgeworICAgICAgICBz
aG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjEwIik7CisgICAgICAg
IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOworICAgIH0gZWxz
ZSBpZiAoc2VsZi5zdGFnZSA9PSA0KSB7CisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQu
cmVzdWx0LnByaW1hcnlLZXkiLCAiOSIpOworICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJn
ZXQucmVzdWx0LmNvbnRpbnVlKDEpIik7CisgICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDUp
IHsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIy
Iik7CisgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIp
OworICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSA2KSB7CisgICAgICAgIHNob3VsZEJlKCJl
dmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMSIpOworICAgICAgICBldmFsQW5kTG9n
KCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKKyAgICB9IGVsc2UgaWYgKHNlbGYu
c3RhZ2UgPT0gNykgeworICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmlt
YXJ5S2V5IiwgIjAiKTsKKyAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5j
b250aW51ZSgpIik7CisgICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDgpIHsKKyAgICAgICAg
c2hvdWxkQmVOdWxsKCJldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgICAgIGFzY2VuZGluZ0Vy
cm9yVGVzdExlc3NUaGFuKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9IGVsc2UgeworICAgICAg
ICB0ZXN0RmFpbGVkKCJJbGxlZ2FsIHN0YWdlLiIpOworICAgIH0KKyAgICBzZWxmLnN0YWdlKys7
Cit9CisKK2Z1bmN0aW9uIGFzY2VuZGluZ0Vycm9yVGVzdExlc3NUaGFuKCkKK3sKKyAgICBkZWJ1
ZygiIik7CisgICAgdmFyIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5vcGVuS2V5
Q3Vyc29yKG51bGwsIElEQkN1cnNvci5ORVhUKSIpOworICAgIHNlbGYuc3RhZ2UgPSAwOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGlmIChzZWxmLnN0YWdlID09PSAwKSB7
CisgICAgICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5Iiwg
IjAiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGlu
dWUoMy4xNDE1OSkiKTsKKyAgICAgICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDEpIHsKKyAg
ICAgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMyIp
OworICAgICAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZXZlbnQudGFyZ2V0LnJlc3Vs
dC5jb250aW51ZSgxKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworICAgICAg
ICAgICAgYXNjZW5kaW5nRXJyb3JUZXN0RXF1YWwoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgdGVzdEZhaWxlZCgiSWxsZWdhbCBzdGFnZS4iKTsK
KyAgICAgICAgfQorICAgICAgICBzZWxmLnN0YWdlKys7CisgICAgfTsKK30KKworZnVuY3Rpb24g
YXNjZW5kaW5nRXJyb3JUZXN0RXF1YWwoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICB2YXIgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3IobnVsbCwgSURCQ3Vy
c29yLk5FWFQpIik7CisgICAgc2VsZi5zdGFnZSA9IDA7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgaWYgKHNlbGYuc3RhZ2UgPT09IDApIHsKKyAgICAgICAgICAgIHNob3Vs
ZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMCIpOworICAgICAgICAgICAg
ZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgzLjE0MTU5KSIpOworICAg
ICAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gMSkgeworICAgICAgICAgICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIzIik7CisgICAgICAgICAgICBldmFs
QW5kRXhwZWN0RXhjZXB0aW9uKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKDMuMTQxNTkp
IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisgICAgICAgICAgICBkZXNjZW5k
aW5nRXJyb3JUZXN0R3JlYXRlclRoYW4oKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgdGVzdEZhaWxlZCgiSWxsZWdhbCBzdGFnZS4iKTsKKyAgICAg
ICAgfQorICAgICAgICBzZWxmLnN0YWdlKys7CisgICAgfTsKK30KKworZnVuY3Rpb24gZGVzY2Vu
ZGluZ0Vycm9yVGVzdEdyZWF0ZXJUaGFuKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgdmFyIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5vcGVuS2V5Q3Vyc29yKG51bGwsIElEQkN1
cnNvci5QUkVWKSIpOworICAgIHNlbGYuc3RhZ2UgPSAwOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24oKSB7CisgICAgICAgIGlmIChzZWxmLnN0YWdlID09IDApIHsKKyAgICAgICAgICAgIHNob3Vs
ZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMTciKTsKKyAgICAgICAgICAg
IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoJ0EgYml0MicpIik7Cisg
ICAgICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSAxKSB7CisgICAgICAgICAgICBzaG91bGRC
ZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjE1Iik7CisgICAgICAgICAgICBl
dmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCdBIGJp
dDMnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworICAgICAgICAgICAgZGVz
Y2VuZGluZ0Vycm9yVGVzdEVxdWFsKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgIHRlc3RGYWlsZWQoIklsbGVnYWwgc3RhZ2UuIik7CisgICAgICAg
IH0KKyAgICAgICAgc2VsZi5zdGFnZSsrOworICAgIH07Cit9CisKK2Z1bmN0aW9uIGRlc2NlbmRp
bmdFcnJvclRlc3RFcXVhbCgpCit7CisgICAgZGVidWcoIiIpOworICAgIHZhciByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhPYmplY3Qub3BlbktleUN1cnNvcihudWxsLCBJREJDdXJzb3IuUFJF
VikiKTsKKyAgICBzZWxmLnN0YWdlID0gMDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewor
ICAgICAgICBpZiAoc2VsZi5zdGFnZSA9PSAwKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiZXZl
bnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjE3Iik7CisgICAgICAgICAgICBldmFsQW5k
TG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCdBIGJpdDInKSIpOworICAgICAgICB9
IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gMSkgeworICAgICAgICAgICAgc2hvdWxkQmUoImV2ZW50
LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIxNSIpOworICAgICAgICAgICAgZXZhbEFuZExv
ZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgICAgICAgICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgnQSBiaXQyJykiLCAi
SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKyAgICAgICAgICAgIHNlbGYudHJhbnMu
b25jb21wbGV0ZSA9IG9uVHJhbnNhY3Rpb25Db21wbGV0ZTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgdGVzdEZhaWxlZCgiSWxsZWdhbCBzdGFnZS4i
KTsKKyAgICAgICAgfQorICAgICAgICBzZWxmLnN0YWdlKys7CisgICAgfTsKK30KKworZnVuY3Rp
b24gb25UcmFuc2FjdGlvbkNvbXBsZXRlKCkKK3sKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJjdXJzb3IuY29udGludWUoKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9J
TkFDVElWRV9FUlIiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1kZWxl
dGUuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWRl
bGV0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kYjZlMmI5MzU0OGEzYTQ5ZGI1NGIwZDcyMDAxNTg4NGMxMmVi
MzM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL2N1cnNvci1kZWxldGUuanMKQEAgLTAsMCArMSwxMDUgQEAKK2lmICh0aGlzLmltcG9y
dFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQor
CitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBvcGVuQ3Vyc29yLiIpOworCit0ZXN0KCk7
CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdjdXJzb3ItZGVsZXRlJykiKTsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2Vzcygp
Cit7CisgICAgdmFyIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24n
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNl
dFZlcnNpb25TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsK
KyAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJv
cnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gb3Bl
bkN1cnNvcjsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICB2YXIgb2Jq
ZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCd0ZXN0JykiKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ215VmFsdWUxJywg
J215S2V5MScpIik7CisgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlMics
ICdteUtleTInKSIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnbXlWYWx1ZTMn
LCAnbXlLZXkzJykiKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ215VmFsdWU0
JywgJ215S2V5NCcpIik7Cit9CisKK2Z1bmN0aW9uIG9wZW5DdXJzb3IoKQoreworICAgIGRlYnVn
KCJvcGVuQ3Vyc29yMSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24o
Wyd0ZXN0J10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAga2V5UmFuZ2UgPSBJ
REJLZXlSYW5nZS5sb3dlckJvdW5kKCJteUtleTEiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygidHJhbnMub2JqZWN0U3RvcmUoJ3Rlc3QnKS5vcGVuQ3Vyc29yKHtyYW5nZToga2V5UmFuZ2V9
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29yU3VjY2VzczsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBjb3VudGVyID0gMTsKK30K
KworZnVuY3Rpb24gY3Vyc29yU3VjY2VzcygpCit7CisgICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1
bHQgPT0gbnVsbCkgeworICAgICAgICBzaG91bGRCZSgiY291bnRlciIsICI1Iik7CisgICAgICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgndGVzdCcpLm9wZW5DdXJz
b3Ioa2V5UmFuZ2UpIik7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29yRW1wdHk7
CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQu
ZGVsZXRlKCkiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1
bHQudmFsdWUiLCAibXlWYWx1ZSIgKyBjb3VudGVyKyspOworICAgIGV2YWxBbmRMb2coImV2ZW50
LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOworfQorCitmdW5jdGlvbiBjdXJzb3JFbXB0eSgp
Cit7CisgICAgc2hvdWxkQmVOdWxsKCJldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgdHJhbnMu
b25jb21wbGV0ZSA9IGFkZE9iamVjdDsKK30KKworZnVuY3Rpb24gYWRkT2JqZWN0KCkKK3sKKyAg
ICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsndGVzdCddLCBJREJUcmFuc2Fj
dGlvbi5SRUFEX1dSSVRFKSIpOworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0
U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgndGVzdCcpIik7CisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coIm9iamVjdFN0b3JlLmFkZCgnbXlWYWx1ZTEnLCAnbXlLZXkxJykiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IG9wZW5DdXJzb3IyOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuQ3Vyc29yMigpCit7CisgICAg
ZGVidWcoIm9wZW5DdXJzb3IyIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0
b3JlLm9wZW5DdXJzb3Ioa2V5UmFuZ2UpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxl
dGVPYmplY3Q7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZU9iamVjdCgpCit7CisgICAgc2hvdWxkQmVOb25OdWxsKGV2
ZW50LnRhcmdldC5yZXN1bHQpOworICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQu
ZGVsZXRlKCkiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUuZ2V0KCdt
eUtleTEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdmVyaWZ5T2JqZWN0RGVsZXRlZDsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gdmVyaWZ5T2JqZWN0RGVsZXRlZCgpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdl
dC5yZXN1bHQiLCAidW5kZWZpbmVkIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL2N1cnNvci1pbmNvbnNpc3RlbmN5LmpzIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1pbmNvbnNpc3RlbmN5LmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmUwNjc3OWQ3YjVlM2Y5OWRmNmM1ODZlZGMyN2U3NDNiOTgwZWE1YjcKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWlu
Y29uc2lzdGVuY3kuanMKQEAgLTAsMCArMSw4NSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykg
eworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0
aW9uKCJUZXN0IGNvbnNpc3RlbmN5IG9mIEluZGV4ZWREQidzIGN1cnNvciBvYmplY3RzLiIpOwor
Cit0ZXN0KCk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVz
KCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdjdXJzb3ItaW5j
b25zaXN0ZW5jeScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rp
b24gb3BlblN1Y2Nlc3MoKQoreworICAgIHZhciBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNp
b24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb25T
dWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCit7CisgICAgZGVidWcoInNldFZlcnNp
b25TdWNjZXNzKCk6Iik7CisgICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsK
KyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnMu
b25jb21wbGV0ZSA9IG9wZW5CYXNpY0N1cnNvcjsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jl
cyhkYik7CisKKyAgICB2YXIgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdiYXNpY1N0b3JlJykiKTsKKyAgICBldmFsQW5kTG9nKCJv
YmplY3RTdG9yZS5hZGQoJ3NvbWVWYWx1ZTEnLCAnc29tZUtleTEnKS5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2siKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ3Nv
bWVWYWx1ZTInLCAnc29tZUtleTInKS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2si
KTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ3NvbWVWYWx1ZTMnLCAnc29tZUtl
eTMnKS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKKyAgICBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZS5hZGQoJ3NvbWVWYWx1ZTQnLCAnc29tZUtleTQnKS5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKKworfQorCitmdW5jdGlvbiBvcGVuQmFzaWNDdXJzb3Io
KQoreworICAgIGRlYnVnKCJvcGVuQmFzaWNDdXJzb3IoKSIpOworICAgIGV2YWxBbmRMb2coInRy
YW5zID0gZGIudHJhbnNhY3Rpb24oWydiYXNpY1N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURf
V1JJVEUpIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwor
ICAgIHRyYW5zLm9uY29tcGxldGUgPSB0cmFuc2FjdGlvbkNvbXBsZXRlOworCisgICAga2V5UmFu
Z2UgPSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKCJzb21lS2V5MSIpOworICAgIHNlbGYub2JqZWN0
U3RvcmUgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYmFzaWNTdG9yZScpIik7Cisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLm9wZW5DdXJzb3Ioa2V5UmFuZ2Up
Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjaGVja0N1cnNvcjsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBjb3VudGVyID0gMTsKK30KKwor
c3RvcmVkQ3Vyc29yID0gbnVsbDsKK2Z1bmN0aW9uIGNoZWNrQ3Vyc29yKCkKK3sKKyAgICBkZWJ1
ZygiIikKKyAgICBkZWJ1ZygiY2hlY2tDdXJzb3IoKSIpOworICAgIGlmIChldmVudC50YXJnZXQu
cmVzdWx0ID09IG51bGwpIHsKKyAgICAgICAgc2hvdWxkQmUoImNvdW50ZXIiLCAiNSIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChzdG9yZWRDdXJzb3IgPT0gbnVsbCkKKyAgICAg
IHN0b3JlZEN1cnNvciA9IGV2YWxBbmRMb2coInN0b3JlZEN1cnNvciA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKKworICAgIHNob3VsZEJlVHJ1ZSgic3RvcmVkQ3Vyc29yID09PSBldmVudC50YXJn
ZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzdG9yZWRDdXJzb3Iua2V5
IiwgInNvbWVLZXkiICsgY291bnRlcik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVu
dC50YXJnZXQucmVzdWx0LmtleSIsICJzb21lS2V5IiArIGNvdW50ZXIpOworICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygic3RvcmVkQ3Vyc29yLnZhbHVlIiwgInNvbWVWYWx1ZSIgKyBjb3VudGVy
KTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUi
LCAic29tZVZhbHVlIiArIGNvdW50ZXIpOworICAgIGNvdW50ZXIrKzsKKyAgICBldmFsQW5kTG9n
KCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKK30KKworZnVuY3Rpb24gdHJhbnNh
Y3Rpb25Db21wbGV0ZSgpCit7CisgICAgZGVidWcoInRyYW5zYWN0aW9uQ29tcGxldGUoKSIpOwor
ICAgIGZpbmlzaEpTVGVzdCgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItaW5k
ZXgtZGVsZXRlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1
cnNvci1pbmRleC1kZWxldGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmJlZWVhMjNhMTBmZjgzMTZhNDA1NTM5
OTFkMjliZTViYzg2MjcwZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItaW5kZXgtZGVsZXRlLmpzCkBAIC0wLDAgKzEsMTA5
IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRz
KCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mgb3BlbkN1
cnNvci4iKTsKKwordGVzdCgpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5k
b3JQcmVmaXhlcygpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbign
Y3Vyc29yLWluZGV4LWRlbGV0ZScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3Vj
Y2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30K
KworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIHZhciBkYiA9IGV2YWxBbmRMb2coImRi
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRi
LnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNl
dFZlcnNpb25TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCit7CisgICAgZGVidWco
InNldFZlcnNpb25TdWNjZXNzKCk6Iik7CisgICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRy
YW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09
IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Cisg
ICAgdHJhbnMub25jb21wbGV0ZSA9IG9wZW5DdXJzb3I7CisKKyAgICBkZWxldGVBbGxPYmplY3RT
dG9yZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCd0ZXN0JykiKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZS5jcmVhdGVJbmRleCgndGVzdEluZGV4JywgJ3gnKSIpOworCisgICAgZXZhbEFuZExvZygi
b2JqZWN0U3RvcmUuYWRkKHt4OiAxfSwgJ215S2V5MScpIik7CisgICAgZXZhbEFuZExvZygib2Jq
ZWN0U3RvcmUuYWRkKHt4OiAyfSwgJ215S2V5MicpIik7CisgICAgZXZhbEFuZExvZygib2JqZWN0
U3RvcmUuYWRkKHt4OiAzfSwgJ215S2V5MycpIik7CisgICAgZXZhbEFuZExvZygib2JqZWN0U3Rv
cmUuYWRkKHt4OiA0fSwgJ215S2V5NCcpIik7Cit9CisKK2Z1bmN0aW9uIG9wZW5DdXJzb3IoKQor
eworICAgIGRlYnVnKCJvcGVuQ3Vyc29yMSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIu
dHJhbnNhY3Rpb24oWyd0ZXN0J10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAg
a2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKDEpOworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgndGVzdCcpLmluZGV4KCd0ZXN0SW5kZXgnKS5vcGVu
Q3Vyc29yKGtleVJhbmdlKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29yU3VjY2Vz
czsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBj
b3VudGVyID0gMTsKK30KKworZnVuY3Rpb24gY3Vyc29yU3VjY2VzcygpCit7CisgICAgaWYgKGV2
ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkgeworICAgICAgICBzaG91bGRCZSgiY291bnRlciIs
ICI1Iik7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgn
dGVzdCcpLmluZGV4KCd0ZXN0SW5kZXgnKS5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOworICAgICAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvckVtcHR5OworICAgICAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICB2YXIgZGVsZXRlUmVxdWVzdCA9IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuZGVs
ZXRlKCkiKTsKKyAgICBkZWxldGVSZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAiY291bnRlcisr
Iik7CisgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7Cit9
CisKK2Z1bmN0aW9uIGN1cnNvckVtcHR5KCkKK3sKKyAgICBzaG91bGRCZU51bGwoImV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gYWRkT2JqZWN0OworfQorCitm
dW5jdGlvbiBhZGRPYmplY3QoKQoreworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNh
Y3Rpb24oWyd0ZXN0J10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgb2JqZWN0
U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCd0ZXN0
JykiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKHt4OiAxfSwg
J215S2V5MScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuQ3Vyc29yMjsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
b3BlbkN1cnNvcjIoKQoreworICAgIGRlYnVnKCJvcGVuQ3Vyc29yMiIpOworICAgIGV2YWxBbmRM
b2coImluZGV4ID0gZXZlbnQudGFyZ2V0LnNvdXJjZS5pbmRleCgndGVzdEluZGV4JykiKTsKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXgub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZU9iamVjdDsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVsZXRlT2JqZWN0KCkK
K3sKKyAgICBzaG91bGRCZU5vbk51bGwoZXZlbnQudGFyZ2V0LnJlc3VsdCk7CisgICAgZXZhbEFu
ZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5kZWxldGUoKSIpOworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJpbmRleC5nZXQoMSkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHZlcmlmeU9i
amVjdERlbGV0ZWQ7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Cit9CisKK2Z1bmN0aW9uIHZlcmlmeU9iamVjdERlbGV0ZWQoKQoreworICAgIHNob3VsZEJl
KCJldmVudC50YXJnZXQucmVzdWx0IiwgInVuZGVmaW5lZCIpOworICAgIGZpbmlzaEpTVGVzdCgp
OworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3Ita2V5LW9yZGVyLmpzIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1rZXktb3JkZXIuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzVjMjE5OTNmZDcyMGFhZjc1NTA3Njk0MTFlZWFiYjU2ZjRjNDA2NwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJz
b3Ita2V5LW9yZGVyLmpzCkBAIC0wLDAgKzEsMjI1IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRz
KSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3Jp
cHRpb24oIlRlc3QgSW5kZXhlZERCIGtleXMgb3JkZXJpbmcgYW5kIHJlYWRiYWNrIGZyb20gY3Vy
c29ycy4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMo
KTsKKworICAgIHByZXBhcmVEYXRhYmFzZSgpOworfQorCitmdW5jdGlvbiBwcmVwYXJlRGF0YWJh
c2UoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBldmFsQW5kTG9nKCJvcGVucmVxID0gaW5kZXhl
ZERCLm9wZW4oJ2N1cnNvci1rZXktb3JkZXInKSIpOworICAgIG9wZW5yZXEub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIG9wZW5yZXEub25zdWNjZXNzID0gZnVuY3Rpb24o
KSB7CisgICAgICAgIGV2YWxBbmRMb2coImRiID0gb3BlbnJlcS5yZXN1bHQiKTsKKyAgICAgICAg
ZXZhbEFuZExvZygidmVycmVxID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgICAgIHZlcnJl
cS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHZlcnJlcS5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9i
amVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgICAgICAgICB2ZXJyZXEucmVzdWx0Lm9uY29tcGxl
dGUgPSBwb3B1bGF0ZVN0b3JlOworICAgICAgICB9OworICAgIH07Cit9CisKK3NlbGYua2V5cyA9
IFsKKyAgICAiLUluZmluaXR5IiwKKyAgICAiLU51bWJlci5NQVhfVkFMVUUiLAorICAgICItMSIs
CisgICAgIi1OdW1iZXIuTUlOX1ZBTFVFIiwKKyAgICAiMCIsCisgICAgIk51bWJlci5NSU5fVkFM
VUUiLAorICAgICIxIiwKKyAgICAiTnVtYmVyLk1BWF9WQUxVRSIsCisgICAgIkluZmluaXR5IiwK
KworICAgICJuZXcgRGF0ZSgwKSIsCisgICAgIm5ldyBEYXRlKDEwMDApIiwKKyAgICAibmV3IERh
dGUoMTMxNzM5OTkzMTAyMykiLAorCisgICAgIicnIiwKKyAgICAiJ1x4MDAnIiwKKyAgICAiJ2En
IiwKKyAgICAiJ2FhJyIsCisgICAgIidiJyIsCisgICAgIidiYSciLAorCisgICAgIidceEEyJyIs
IC8vIFUrMDBBMiBDRU5UIFNJR04KKyAgICAiJ1x1NkMzNCciLCAvLyBVKzZDMzQgQ0pLIFVOSUZJ
RUQgSURFT0dSQVBIICh3YXRlcikKKyAgICAiJ1x1RDgzNFx1REQxRSciLCAvLyBVKzFEMTFFIE1V
U0lDQUwgU1lNQk9MIEctQ0xFRiAoVVRGLTE2IHN1cnJvZ2F0ZSBwYWlyKQorICAgICInXHVGRkZE
JyIsIC8vIFUrRkZGRCBSRVBMQUNFTUVOVCBDSEFSQUNURVIKKworICAgICJbXSIsCisKKyAgICAi
Wy1JbmZpbml0eV0iLAorICAgICJbLU51bWJlci5NQVhfVkFMVUVdIiwKKyAgICAiWy0xXSIsCisg
ICAgIlstTnVtYmVyLk1JTl9WQUxVRV0iLAorICAgICJbMF0iLAorICAgICJbTnVtYmVyLk1JTl9W
QUxVRV0iLAorICAgICJbMV0iLAorICAgICJbTnVtYmVyLk1BWF9WQUxVRV0iLAorICAgICJbSW5m
aW5pdHldIiwKKworICAgICJbbmV3IERhdGUoMCldIiwKKyAgICAiW25ldyBEYXRlKDEwMDApXSIs
CisgICAgIltuZXcgRGF0ZSgxMzE3Mzk5OTMxMDIzKV0iLAorCisgICAgIlsnJ10iLAorICAgICJb
J1x4MDAnXSIsCisgICAgIlsnYSddIiwKKyAgICAiWydhYSddIiwKKyAgICAiWydiJ10iLAorICAg
ICJbJ2JhJ10iLAorCisgICAgIlsnXHhBMiddIiwgLy8gVSswMEEyIENFTlQgU0lHTgorICAgICJb
J1x1NkMzNCddIiwgLy8gVSs2QzM0IENKSyBVTklGSUVEIElERU9HUkFQSCAod2F0ZXIpCisgICAg
IlsnXHVEODM0XHVERDFFJ10iLCAvLyBVKzFEMTFFIE1VU0lDQUwgU1lNQk9MIEctQ0xFRiAoVVRG
LTE2IHN1cnJvZ2F0ZSBwYWlyKQorICAgICJbJ1x1RkZGRCddIiwgLy8gVStGRkZEIFJFUExBQ0VN
RU5UIENIQVJBQ1RFUgorCisgICAgIltbXV0iLAorCisgICAgIltbXSwgW11dIiwKKyAgICAiW1td
LCBbXSwgW11dIiwKKworICAgICJbW1tdXV0iLAorICAgICJbW1tbXV1dXSIKK107CisKK2Z1bmN0
aW9uIGNvbXBhcmUoYSwgYikKK3sKKyAgICBpZiAodHlwZW9mIGEgIT09IHR5cGVvZiBiKSB7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHR5cGVvZiBhKSB7Cisg
ICAgICAgIGNhc2UgJ3VuZGVmaW5lZCc6IC8vIE5vdCB2YWxpZCBrZXlzLCBidXQgY29tcGFyZSBh
bnl3YXkuCisgICAgICAgIGNhc2UgJ2Jvb2xlYW4nOiAvLyBOb3QgdmFsaWQga2V5cywgYnV0IGNv
bXBhcmUgYW55d2F5LgorICAgICAgICBjYXNlICdzdHJpbmcnOgorICAgICAgICAgICAgcmV0dXJu
IGEgPT09IGI7CisgICAgICAgIGNhc2UgJ251bWJlcic6CisgICAgICAgICAgICBpZiAoYSA9PT0g
YikgeworICAgICAgICAgICAgICAgIHJldHVybiAoYSAhPT0gMCkgfHwgKDEgLyBhID09PSAxIC8g
Yik7IC8vIDAgaXNuJ3QgLTAKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGEgIT09IGEgJiYgYiAhPT0gYjsgLy8gTmFOIGlzIE5hTgorICAgICAgICAgICAgfQor
ICAgICAgICBjYXNlICdvYmplY3QnOgorICAgICAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBEYXRl
ICYmIGIgaW5zdGFuY2VvZiBEYXRlKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICthID09PSAr
YjsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoYSBpbnN0YW5jZW9mIEFycmF5ICYmIGIgaW5zdGFu
Y2VvZiBBcnJheSkgeworICAgICAgICAgICAgICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgp
IHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCFjb21wYXJlKGFbaV0sIGJbaV0pKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAvLyBGb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgdGVzdCwgb3RoZXIgb2Jq
ZWN0cyBkb24ndCBjb3VudAorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworZnVuY3Rpb24gcG9w
dWxhdGVTdG9yZSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJwb3B1bGF0aW5nIHN0
b3JlLi4uIik7CisgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUn
LCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlID0g
dHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7Iik7CisgICAgdHJhbnMub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRD
YWxsYmFjazsKKyAgICB2YXIgY291bnQgPSAwOworICAgIGtleXMuZm9yRWFjaChmdW5jdGlvbihr
ZXkpIHsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCIgKyAoY291bnQrKykgKyAiLCAi
ICsga2V5ICsgIikiKTsKKyAgICB9KTsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gY2hlY2tTdG9y
ZTsKK30KKworZnVuY3Rpb24gY2hlY2tTdG9yZSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRl
YnVnKCJpdGVyYXRpbmcgY3Vyc29yLi4uIik7CisgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50
cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7CisgICAgZXZh
bEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsiKTsKKyAgICB0cmFu
cy5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgdHJhbnMub25hYm9ydCA9
IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIGV2YWxBbmRMb2coImNvdW50ID0gMCIpOwor
ICAgIGN1cnJlcSA9IGV2YWxBbmRMb2coImN1cnJlcSA9IHN0b3JlLm9wZW5DdXJzb3IoKSIpOwor
ICAgIGN1cnJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgY3VycmVx
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAoY3VycmVxLnJlc3VsdCkgewor
ICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yID0gY3VycmVxLnJlc3VsdCIpOworICAgICAg
ICAgICAgc2hvdWxkQmVUcnVlKCJjb21wYXJlKGN1cnNvci5rZXksICIgKyBrZXlzW2NvdW50XSAr
ICIpIik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJnZXRyZXEgPSBzdG9yZS5nZXQoY3Vyc29y
LmtleSkiKTsKKyAgICAgICAgICAgIGdldHJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7CisgICAgICAgICAgICBnZXRyZXEub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJnZXRyZXEucmVzdWx0ID09PSBjb3VudCsrIik7Cisg
ICAgICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7CisgICAgICAgICAgICB9OworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJjb3VudCA9PT0ga2V5cy5sZW5n
dGgiKTsKKyAgICAgICAgICAgIGZpbmlzaFVwKCk7CisgICAgICAgIH0KKyAgICB9OworfQorCitm
dW5jdGlvbiBmaW5pc2hVcCgpCit7CisgICAgdGVzdEtleUNvbXBhcmUoKTsKKyAgICBmaW5pc2hK
U1Rlc3QoKTsKK30KKworZnVuY3Rpb24gdGVzdEtleUNvbXBhcmUoKQoreworICAgIGRlYnVnKCIi
KTsKKyAgICBkZWJ1ZygidmFsaWRhdGUgY29tcGFyZSBmdW5jdGlvbiIpOworICAgIHZhciBjYXNl
cyA9IFsKKyAgICAgICAgInVuZGVmaW5lZCIsCisgICAgICAgICJ0cnVlIiwKKyAgICAgICAgImZh
bHNlIiwKKyAgICAgICAgIjAiLAorICAgICAgICAiLTAiLAorICAgICAgICAiMTIzIiwKKyAgICAg
ICAgIkluZmluaXR5IiwKKyAgICAgICAgIi1JbmZpbml0eSIsCisgICAgICAgICJOYU4iLAorICAg
ICAgICAiJyciLAorICAgICAgICAiJ2FiYyciLAorICAgICAgICAiJ3h5eiciLAorICAgICAgICAi
bmV3IERhdGUoMCkiLAorICAgICAgICAibmV3IERhdGUoMWUzKSIsCisgICAgICAgICJuZXcgRGF0
ZSgxZTkpIiwKKyAgICAgICAgIltdIiwKKyAgICAgICAgIlsxMjNdIiwKKyAgICAgICAgIlsnYWJj
J10iLAorICAgICAgICAiWzEyMywgJ2FiYyddIiwKKyAgICAgICAgIlsnYWJjJywgMTIzXSIsCisg
ICAgICAgICJbW11dIiwKKyAgICAgICAgIltbMTIzXV0iLAorICAgICAgICAiW1snYWJjJ11dIiwK
KyAgICAgICAgIltbMTIzXSwgJ2FiYyddIiwKKyAgICAgICAgIltbMTIzXSwgMTIzXSIKKyAgICBd
OworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYXNlcy5sZW5ndGg7ICsraSkgeworICAgICAg
ICBmb3IgKHZhciBqID0gMDsgaiA8IGNhc2VzLmxlbmd0aDsgKytqKSB7CisgICAgICAgICAgICBp
ZiAoaSA9PT0gaikgeworICAgICAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiY29tcGFyZSgiICsg
Y2FzZXNbaV0gKyAiLCAiICsgY2FzZXNbal0gKyAiKSIpOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBzaG91bGRCZUZhbHNlKCJjb21wYXJlKCIgKyBjYXNlc1tpXSArICIs
ICIgKyBjYXNlc1tqXSArICIpIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9
CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXByaW1hcnkta2V5LW9y
ZGVyLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1w
cmltYXJ5LWtleS1vcmRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTI5MTBjMzZiZDM0YmJkZjg4OWYzNzJj
NjY1NmUyNWZjNDZjZjRhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1wcmltYXJ5LWtleS1vcmRlci5qcwpAQCAtMCwwICsx
LDk4IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3Jp
cHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIHByaW1h
cnkga2V5IG9yZGVyaW5nIGFuZCByZWFkYmFjayBmcm9tIGN1cnNvcnMuIik7CisKK2Z1bmN0aW9u
IHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBwcmVwYXJlRGF0
YWJhc2UoKTsKK30KKworZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKCkKK3sKKyAgICBkZWJ1Zygi
Iik7CisgICAgZXZhbEFuZExvZygib3BlblJlcXVlc3QgPSBpbmRleGVkREIub3BlbignY3Vyc29y
LXByaW1hcnkta2V5LW9yZGVyJykiKTsKKyAgICBvcGVuUmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7CisgICAgb3BlblJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24o
KSB7CisgICAgICAgIGV2YWxBbmRMb2coImRiID0gb3BlblJlcXVlc3QucmVzdWx0Iik7CisgICAg
ICAgIGV2YWxBbmRMb2coInZlcnNpb25DaGFuZ2VSZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScp
Iik7CisgICAgICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICAgICAgdmVyc2lvbkNoYW5nZVJlcXVlc3Qub25zdWNjZXNzID0gZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVj
dFN0b3JlKCdzdG9yZScpIik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3Jl
LmNyZWF0ZUluZGV4KCdpbmRleCcsICdpbmRleEtleScpIik7CisKKyAgICAgICAgICAgIHZlcnNp
b25DaGFuZ2VSZXF1ZXN0LnJlc3VsdC5vbmNvbXBsZXRlID0gcG9wdWxhdGVTdG9yZTsKKyAgICAg
ICAgfTsKKyAgICB9OworfQorCitzZWxmLmtleXMgPSBbCisgICAgIi1JbmZpbml0eSIsCisgICAg
Ii0yIiwKKyAgICAiLTEiLAorICAgICIwIiwKKyAgICAiMSIsCisgICAgIjIiLAorICAgICJJbmZp
bml0eSIsCisKKyAgICAiJzAnIiwKKyAgICAiJzEnIiwKKyAgICAiJzInIiwKKyAgICAiJ0EnIiwK
KyAgICAiJ0InIiwKKyAgICAiJ0MnIiwKKyAgICAiJ2EnIiwKKyAgICAiJ2InIiwKKyAgICAiJ2Mn
IgorXTsKKworZnVuY3Rpb24gcG9wdWxhdGVTdG9yZSgpCit7CisgICAgZGVidWcoIiIpOworICAg
IGRlYnVnKCJwb3B1bGF0aW5nIHN0b3JlLi4uIik7CisgICAgZXZhbEFuZExvZygidHJhbnMgPSBk
Yi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAg
IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7Iik7CisgICAg
dHJhbnMub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRyYW5zLm9uYWJv
cnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB2YXIgY291bnQgPSAwOworICAgIHZh
ciBpbmRleEtleSA9IDA7CisgICAgdmFyIGtleXMgPSBzZWxmLmtleXMuc2xpY2UoKTsKKyAgICBr
ZXlzLnJldmVyc2UoKTsKKyAgICBrZXlzLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7CisgICAgICAg
IHZhciB2YWx1ZSA9IHsgaW5kZXhLZXk6IGluZGV4S2V5LCBjb3VudDogY291bnQrKyB9OworICAg
ICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoIiArIEpTT04uc3RyaW5naWZ5KHZhbHVlKSArICIs
ICIgKyBrZXkgKyAiKSIpOworICAgIH0pOworICAgIHRyYW5zLm9uY29tcGxldGUgPSBjaGVja1N0
b3JlOworfQorCitmdW5jdGlvbiBjaGVja1N0b3JlKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAg
ZGVidWcoIml0ZXJhdGluZyBjdXJzb3IuLi4iKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRi
LnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkiKTsKKyAgICBl
dmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpOyIpOworICAgIGV2
YWxBbmRMb2coImluZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4Jyk7Iik7CisgICAgdHJhbnMub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4
cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICBjdXJzb3JSZXF1ZXN0ID0gZXZhbEFuZExvZygiY3Vy
c29yUmVxdWVzdCA9IGluZGV4Lm9wZW5DdXJzb3IoKSIpOworICAgIGV2YWxBbmRMb2coImNvdW50
ID0gMCIpOworICAgIHZhciBpbmRleEtleSA9IDA7CisgICAgY3Vyc29yUmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgY3Vyc29yUmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKGN1cnNvclJlcXVlc3QucmVzdWx0KSB7CisgICAg
ICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IgPSBjdXJzb3JSZXF1ZXN0LnJlc3VsdCIpOworICAg
ICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCBTdHJpbmcoaW5kZXhLZXkpKTsKKyAgICAg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsIHNlbGYua2V5c1tjb3VudCsrXSk7
CisgICAgICAgICAgICBjdXJzb3IuY29udGludWUoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIHNob3VsZEJlVHJ1ZSgiY291bnQgPT09IGtleXMubGVuZ3RoIik7CisgICAgICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorICAgIH07Cit9CisKK3Rlc3QoKTsKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXJldmVyc2UtYnVnLmpzIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1yZXZlcnNlLWJ1Zy5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jMDhlYWRlYThjODNkZTQ4MmYxMGYwOGQ4ZjAyM2JiZjBmOWMyOTQzCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1yZXZl
cnNlLWJ1Zy5qcwpAQCAtMCwwICsxLDEwMSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewor
ICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9u
KCJUZXN0IEluZGV4ZWREQiBrZXlzIG9yZGVyaW5nIGFuZCByZWFkYmFjayBmcm9tIGN1cnNvcnMu
Iik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisK
KyAgICBwcmVwYXJlRGF0YWJhc2UoKTsKK30KKworZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKCkK
K3sKKyAgICBkZWJ1ZygiIik7CisgICAgZXZhbEFuZExvZygib3BlbnJlcSA9IGluZGV4ZWREQi5v
cGVuKCdjdXJzb3ItcmV2ZXJzZS1idWcnKSIpOworICAgIG9wZW5yZXEub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIG9wZW5yZXEub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7
CisgICAgICAgIGV2YWxBbmRMb2coImRiID0gb3BlbnJlcS5yZXN1bHQiKTsKKyAgICAgICAgZXZh
bEFuZExvZygidmVycmVxID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgICAgIHZlcnJlcS5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHZlcnJlcS5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7
CisgICAgICAgICAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ3N0b3JlJykiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUlu
ZGV4KCdpbmRleCcsICcnKSIpOworICAgICAgICAgICAgdmVycmVxLnJlc3VsdC5vbmNvbXBsZXRl
ID0gcG9wdWxhdGVTdG9yZTsKKyAgICAgICAgfTsKKyAgICB9OworfQorCitmdW5jdGlvbiBwb3B1
bGF0ZVN0b3JlKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInBvcHVsYXRpbmcgc3Rv
cmUuLi4iKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScs
IElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUgPSB0
cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsiKTsKKyAgICB0cmFucy5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENh
bGxiYWNrOworCisgICAgZXZhbEFuZExvZygic3RvcmUucHV0KDEsIDEpIik7CisgICAgZXZhbEFu
ZExvZygic3RvcmUucHV0KDIsIDIpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUucHV0KDMsIDMp
Iik7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHRlc3RDdXJzb3I7Cit9CisKK3ZhciB0ZXN0cyA9
IFsKKyAgICAgICAgICAgICAgICB7dXBwZXJCb3VuZDogNywgb3BlbjogZmFsc2UsIGV4cGVjdGVk
OiAzfSwKKyAgICAgICAgICAgICAgICB7dXBwZXJCb3VuZDogNywgb3BlbjogdHJ1ZSwgIGV4cGVj
dGVkOiAzfSwKKyAgICAgICAgICAgICAgICB7dXBwZXJCb3VuZDogMywgb3BlbjogZmFsc2UsIGV4
cGVjdGVkOiAzfSwKKyAgICAgICAgICAgICAgICB7dXBwZXJCb3VuZDogMywgb3BlbjogdHJ1ZSwg
IGV4cGVjdGVkOiAyfQorICAgICAgICAgICAgXTsKKworZnVuY3Rpb24gdGVzdEN1cnNvcigpCit7
CisgICAgZGVidWcoInRlc3RDdXJzb3IoKSIpOworCisgICAgaWYgKHRlc3RzLmxlbmd0aCA9PT0g
MCkgeworICAgICAgICBkZWJ1ZygiTm8gbW9yZSB0ZXN0cy4iKTsKKyAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB0ZXN0ID0gdGVzdHMuc2hpZnQo
KTsKKworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURC
VHJhbnNhY3Rpb24uUkVBRF9PTkxZKSIpOworICAgIHRyYW5zLm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJh
Y2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHRlc3RDdXJzb3I7CisgICAgZXZhbEFuZExvZygi
c3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsiKTsKKyAgICBldmFsQW5kTG9nKCJp
bmRleCA9IHN0b3JlLmluZGV4KCdpbmRleCcpOyIpOworCisgICAgdmFyIHRlc3RGdW5jdGlvbiA9
IGZ1bmN0aW9uKCkgeworICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7CisgICAgICAgIGlmIChjdXJzb3IgPT09IG51bGwpIHsKKyAgICAgICAgICAgIGRl
YnVnKCJjdXJzb3Igc2hvdWxkIG5vdCBiZSBudWxsIik7CisgICAgICAgICAgICBmYWlsKCk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBzaG91bGRCZSgiY3Vyc29y
LmtleSIsICJ0ZXN0LmV4cGVjdGVkIik7CisgICAgICAgIGlmICgidmFsdWUiIGluIGN1cnNvcikK
KyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAidGVzdC5leHBlY3RlZCIpOwor
ICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAidGVzdC5leHBlY3RlZCIpOwor
CisgICAgICAgIC8vIExldCB0aGUgdHJhbnNhY3Rpb24gZmluaXNoLgorICAgIH0KKworICAgIGRl
YnVnKCJ1cHBlckJvdW5kOiAiICsgdGVzdC51cHBlckJvdW5kICsgIiBvcGVuOiAiICsgdGVzdC5v
cGVuICsgIiBleHBlY3RlZDogIiArIHRlc3QuZXhwZWN0ZWQpOworICAgIHN0b3JlUmVxID0gZXZh
bEFuZExvZygic3RvcmVSZXEgPSBzdG9yZS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91
bmQodGVzdC51cHBlckJvdW5kLCB0ZXN0Lm9wZW4pLCBJREJDdXJzb3IuUFJFVikiKTsKKyAgICBz
dG9yZVJlcS5vbnN1Y2Nlc3MgPSB0ZXN0RnVuY3Rpb247CisKKyAgICBpbmRleFJlcSA9IGV2YWxB
bmRMb2coImluZGV4UmVxID0gaW5kZXgub3BlbkN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5k
KHRlc3QudXBwZXJCb3VuZCwgdGVzdC5vcGVuKSwgSURCQ3Vyc29yLlBSRVYpIik7CisgICAgaW5k
ZXhSZXEub25zdWNjZXNzID0gdGVzdEZ1bmN0aW9uOworCisgICAgaW5kZXhLZXlSZXEgPSBldmFs
QW5kTG9nKCJpbmRleEtleVJlcSA9IGluZGV4Lm9wZW5LZXlDdXJzb3IoSURCS2V5UmFuZ2UudXBw
ZXJCb3VuZCh0ZXN0LnVwcGVyQm91bmQsIHRlc3Qub3BlbiksIElEQkN1cnNvci5QUkVWKSIpOwor
ICAgIGluZGV4S2V5UmVxLm9uc3VjY2VzcyA9IHRlc3RGdW5jdGlvbjsKK30KKwordGVzdCgpOwpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3Itc2tpcC1kZWxldGVkLmpzIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1za2lwLWRlbGV0ZWQuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNjBlNGQ0MWJjNTI0NGE1ZDUzNDhjMWMwMzE0OTQ4MDEzYTUyYjdkNwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJz
b3Itc2tpcC1kZWxldGVkLmpzCkBAIC0wLDAgKzEsMTkzIEBACitpZiAodGhpcy5pbXBvcnRTY3Jp
cHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVz
Y3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgY3Vyc29yIHNraXBzIGRlbGV0ZWQgZW50cmllcy4i
KTsKKwordmFyIG5hbWVzID0gWydBbHBoYScsICdCcmF2bycsICdDaGFybGllJywgJ0RlbHRhJywg
J0VjaG8nLCAnRm94dHJvdCcsICdHb2xmJywKKyAgICAgICAgICAgICAnSG90ZWwnLCAnSW5kaWEn
LCAnSnVsaWV0JywgJ0tpbG8nLCAnTGltYScsICdNaWtlJywgJ05vdmVtYmVyJywKKyAgICAgICAg
ICAgICAnT3NjYXInLCAnUGFwYScsICdRdWViZWMnLCAnUm9tZW8nLCAnU2llcnJhJywgJ1Rhbmdv
JywgJ1VuaWZvcm0nLAorICAgICAgICAgICAgICdWaWN0b3InLCAnV2hpc2tleScsICdYLXJheScs
ICdZYW5rZWUnLCAnWnVsdSddOworCit0ZXN0KCk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAg
IHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4
ZWREQi5vcGVuKCdjdXJzb3Itc2tpcC1kZWxldGVkJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgdmFyIGRiID0gZXZh
bEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb25TdWNjZXNzKCkKK3sK
KyAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKKyAgICBzZWxmLnRyYW5zID0gZXZh
bEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVl
KCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRD
YWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gYmFzaWNDdXJzb3JUZXN0OworCisgICAg
ZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIHZhciBvYmplY3RTdG9yZSA9IGV2YWxB
bmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJywge2tleVBh
dGg6ICdpZCd9KSIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdu
YW1lSW5kZXgnLCAnbmFtZScpIik7CisgICAgcmVzZXRPYmplY3RTdG9yZShmdW5jdGlvbigpIHt9
KTsKK30KKwordmFyIHNpbGVudEVycm9ySGFuZGxlciA9IGZ1bmN0aW9uKCkgeyBldmVudC5wcmV2
ZW50RGVmYXVsdCgpOyB9CisKK2Z1bmN0aW9uIHJlc2V0T2JqZWN0U3RvcmUoY2FsbGJhY2spCit7
CisgICAgZGVidWcoIlxucmVzZXRPYmplY3RTdG9yZSgpOiIpOworICAgIGlmIChjYWxsYmFjayA9
PT0gdW5kZWZpbmVkKQorICAgICAgICBjYWxsYmFjayA9IGZ1bmN0aW9uICgpIHt9OworCisgICAg
dmFyIG9iamVjdFN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykKKyAgICAgICAgb2JqZWN0U3RvcmUuZGVs
ZXRlKGkpLm9uZXJyb3IgPSBzaWxlbnRFcnJvckhhbmRsZXI7CisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykKKyAgICAgICAgb2JqZWN0U3RvcmUuYWRkKHtpZDogaSwg
bmFtZTogbmFtZXNbaV19KS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisKKyAg
ICBkZWJ1ZygiIik7CisgICAgY2FsbGJhY2soKTsKK30KKworZnVuY3Rpb24gY29udGFpbnMoYXJy
LCBvYmopCit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHsKKyAg
ICAgICAgaWYgKGFycltpXSA9PSBvYmopCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2YXIgY3Vyc29yOwordmFyIGRlbGV0ZWQ7Cit2YXIg
c2VlbjsKKworZnVuY3Rpb24gdGVzdEN1cnNvcihkZWxldGVMaXN0LCBjcmVhdGVDdXJzb3JDb21t
YW5kLCBjYWxsYmFjaykKK3sKKyAgICBkZWJ1ZygiXG50ZXN0Q3Vyc29yKCk6Iik7CisgICAgZGVs
ZXRlZCA9IFtdOworICAgIHNlZW4gPSBbXTsKKworICAgIC8vIENyZWF0ZSB0aGUgY3Vyc29yLgor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKGNyZWF0ZUN1cnNvckNvbW1hbmQpOworCisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0ID09
IG51bGwpIHsKKyAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBoYXZlIHNlZW4gZXZlcnkgbm9u
LWRlbGV0ZWQgaXRlbS4KKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZXMubGVu
Z3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAoY29udGFpbnMoZGVsZXRlZCwgaSkpCisg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgaWYgKCFjb250
YWlucyhzZWVuLCBpKSkKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiQ3Vyc29yIGRp
ZCBub3Qgc2VlIGl0ZW0gd2l0aCBpZDogIiArIGkpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAvLyBNYWtlIHN1cmUgd2UgdXNlZCBldmVyeSBydWxlIGluIHxkZWxldGVMaXN0fC4KKyAg
ICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVsZXRlTGlzdC5sZW5ndGg7IGkrKykgewor
ICAgICAgICAgICAgICAgIGlmICghY29udGFpbnMoc2VlbiwgZGVsZXRlTGlzdFtpXS5pZCkpCisg
ICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRlbGV0ZUxpc3QgcnVsZSB3aXRoIGlkOiAi
ICsgZGVsZXRlTGlzdFtpXS5pZCArICIgd2FzIG5ldmVyIHVzZWQuIik7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjdXJzb3IgPSBldmVudC50YXJn
ZXQucmVzdWx0OworICAgICAgICBkZWJ1ZyhldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLmlkICsg
IjogIiArIGV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUubmFtZSk7CisgICAgICAgIHNlZW4ucHVz
aChldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLmlkKTsKKworICAgICAgICAvLyBNYWtlIHN1cmUg
d2UgZG9uJ3Qgc2VlIGFueSBkZWxldGVkIGl0ZW1zLgorICAgICAgICBpZiAoY29udGFpbnMoZGVs
ZXRlZCwgZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS5pZCkpCisgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJDdXJzb3IgaGl0IHByZXZpb3VzbHkgZGVsZXRlZCBlbGVtZW50LiIpOworCisgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgZGVsZXRlTGlzdC5sZW5ndGg7IGkrKykgeworICAgICAgICAg
ICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUuaWQgPT0gZGVsZXRlTGlzdFtpXS5pZCkg
eworICAgICAgICAgICAgICAgIC8vIERlbGV0ZSBvYmplY3RzIHRhcmdldGVkIGJ5IHRoaXMgaWQu
CisgICAgICAgICAgICAgICAgdmFyIHRhcmdldHMgPSBkZWxldGVMaXN0W2ldLnRhcmdldHM7Cisg
ICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB0YXJnZXRzLmxlbmd0aDsgaisrKSB7
CisgICAgICAgICAgICAgICAgICAgIGRlbGV0ZWQucHVzaCh0YXJnZXRzW2pdKTsKKyAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSB0cmFucy5vYmplY3RT
dG9yZSgnc3RvcmUnKS5kZWxldGUoIiArIHRhcmdldHNbal0gKyAiKSIpOworICAgICAgICAgICAg
ICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKGogPT0gdGFyZ2V0cy5sZW5ndGggLSAxKQorICAgICAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgY3Vyc29yLmNvbnRp
bnVlKCk7IH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7CisgICAg
fQorfQorCitmdW5jdGlvbiBiYXNpY0N1cnNvclRlc3QoKQoreworICAgIGRlYnVnKCJiYXNpY0N1
cnNvclRlc3QoKSIpOworCisgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihb
J3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgdHJhbnMub25hYm9y
dCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSB0cmFu
c2FjdGlvbkNvbXBsZXRlOworCisgICAgdmFyIGRlbGV0ZXMgPSBbe2lkOiAxLCB0YXJnZXRzOiBb
MF19LAorICAgICAgICAgICAgICAgICAgIHtpZDogMiwgdGFyZ2V0czogW25hbWVzLmxlbmd0aCAt
IDFdfSwKKyAgICAgICAgICAgICAgICAgICB7aWQ6IDMsIHRhcmdldHM6IFs1LDYsN119LAorICAg
ICAgICAgICAgICAgICAgIHtpZDogMTAsIHRhcmdldHM6IFsxMF19LAorICAgICAgICAgICAgICAg
ICAgIHtpZDogMTIsIHRhcmdldHM6IFsxM119LAorICAgICAgICAgICAgICAgICAgIHtpZDogMTUs
IHRhcmdldHM6IFsxNF19LAorICAgICAgICAgICAgICAgICAgIHtpZDogMjAsIHRhcmdldHM6IFsx
NywxOF19CisgICAgICAgICAgICAgICAgICAgXTsKKworICAgIHRlc3RDdXJzb3IoZGVsZXRlcywg
InRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UubG93ZXJC
b3VuZCgwKSkiLCBmdW5jdGlvbigpIHsgcmVzZXRPYmplY3RTdG9yZShyZXZlcnNlQ3Vyc29yVGVz
dCk7IH0pOworfQorCitmdW5jdGlvbiByZXZlcnNlQ3Vyc29yVGVzdCgpCit7CisgICAgZGVidWco
InJldmVyc2VDdXJzb3JUZXN0KCk6Iik7CisKKyAgICB2YXIgZGVsZXRlcyA9IFt7aWQ6IDI0LCB0
YXJnZXRzOiBbbmFtZXMubGVuZ3RoIC0gMV19LAorICAgICAgICAgICAgICAgICAgIHtpZDogMjMs
IHRhcmdldHM6IFswXX0sCisgICAgICAgICAgICAgICAgICAge2lkOiAyMiwgdGFyZ2V0czogWzIw
LCAxOSwgMThdfSwKKyAgICAgICAgICAgICAgICAgICB7aWQ6IDE1LCB0YXJnZXRzOiBbMTVdfSwK
KyAgICAgICAgICAgICAgICAgICB7aWQ6IDEzLCB0YXJnZXRzOiBbMTJdfSwKKyAgICAgICAgICAg
ICAgICAgICB7aWQ6IDEwLCB0YXJnZXRzOiBbMTFdfSwKKyAgICAgICAgICAgICAgICAgICB7aWQ6
IDUsIHRhcmdldHM6IFs3LDhdfQorICAgICAgICAgICAgICAgICAgIF07CisKKyAgICB0ZXN0Q3Vy
c29yKGRlbGV0ZXMsICJ0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKS5vcGVuQ3Vyc29yKElEQktl
eVJhbmdlLmxvd2VyQm91bmQoMCksIElEQkN1cnNvci5QUkVWKSIsIGZ1bmN0aW9uKCkgeyByZXNl
dE9iamVjdFN0b3JlKGluZGV4Q3Vyc29yVGVzdCk7IH0pOworfQorCitmdW5jdGlvbiBpbmRleEN1
cnNvclRlc3QoKQoreworICAgIGRlYnVnKCJpbmRleEN1cnNvclRlc3QoKToiKTsKKworICAgIHZh
ciBkZWxldGVzID0gW3tpZDogMSwgdGFyZ2V0czogWzBdfSwKKyAgICAgICAgICAgICAgICAgICB7
aWQ6IDIsIHRhcmdldHM6IFtuYW1lcy5sZW5ndGggLSAxXX0sCisgICAgICAgICAgICAgICAgICAg
e2lkOiAzLCB0YXJnZXRzOiBbNSw2LDddfSwKKyAgICAgICAgICAgICAgICAgICB7aWQ6IDEwLCB0
YXJnZXRzOiBbMTBdfSwKKyAgICAgICAgICAgICAgICAgICB7aWQ6IDEyLCB0YXJnZXRzOiBbMTNd
fSwKKyAgICAgICAgICAgICAgICAgICB7aWQ6IDE1LCB0YXJnZXRzOiBbMTRdfSwKKyAgICAgICAg
ICAgICAgICAgICB7aWQ6IDIwLCB0YXJnZXRzOiBbMTcsMThdfQorICAgICAgICAgICAgICAgICAg
IF07CisKKyAgICB0ZXN0Q3Vyc29yKGRlbGV0ZXMsICJ0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUn
KS5pbmRleCgnbmFtZUluZGV4Jykub3BlbkN1cnNvcihJREJLZXlSYW5nZS5sb3dlckJvdW5kKCdB
bHBoYScpKSIsIGZ1bmN0aW9uKCkgeyB9KTsKK30KKworZnVuY3Rpb24gdHJhbnNhY3Rpb25Db21w
bGV0ZSgpCit7CisgICAgZGVidWcoInRyYW5zYWN0aW9uQ29tcGxldGUoKToiKTsKKyAgICBmaW5p
c2hKU1Rlc3QoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXVwZGF0ZS12YWx1
ZS1hcmd1bWVudC1yZXF1aXJlZC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9jdXJzb3ItdXBkYXRlLXZhbHVlLWFyZ3VtZW50LXJlcXVpcmVkLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmExYzI3M2QyYmU4YmVjYTZlMGNhMGU0OWNkNTQ3NmNhNTAwZDc4M2MKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXVw
ZGF0ZS12YWx1ZS1hcmd1bWVudC1yZXF1aXJlZC5qcwpAQCAtMCwwICsxLDczIEBACitpZiAodGhp
cy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMn
KTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGN1cnNvci51cGRhdGUgcmVxdWly
ZWQgYXJndW1lbnRzIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclBy
ZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNj
cmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
aW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFu
ZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gdGVzdEdyb3VwMTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gdGVzdEdyb3VwMSgpCit7CisgICAgZGVsZXRlQWxsT2Jq
ZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ2F1dG9JbmNyZW1lbnQnLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7
CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5D
dXJzb3IoKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgeworICAgICAgdGVz
dEdyb3VwMigpOworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdEdyb3VwMigpCit7CisgICAga2V5
cyA9IGV2YWxBbmRMb2coImtleXMgPSBbMSwgLTEsIDAsIDEwLCAyMDAwLCAncScsICd6JywgJ3R3
bycsICdiJywgJ2EnXTsiKTsKKworICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXgg
PSAwOyIpOworCisgICAgZm9yIChpIGluIGtleXMpIHsKKyAgICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKCdmb28nLCBrZXlzW2ldKTsiKTsKKyAgICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBpZiAoKytrZXlJbmRleCA9
PSBrZXlzLmxlbmd0aCkgeworICAgICAgICAgIHRlc3RHcm91cDMoKTsKKyAgICAgICAgfQorICAg
ICAgfTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDMoKQoreworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRM
b2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICAgIGlmIChjdXJzb3Ip
IHsKKyAgICAgICAgICAgIHNob3VsZFRocm93KCJjdXJzb3IudXBkYXRlKCk7Iik7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJjdXJzb3Igd2FzIG51bGwiKTsKKyAg
ICAgICAgfQorICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9Cit9CisKK3Rlc3QoKTsKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXVwZGF0ZS5qcyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItdXBkYXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjMGQ1
MWIxMjFkYWJlYzNlYWVkZGIyMzE5YTIwMzBjMmYwZGZhZGEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXVwZGF0ZS5qcwpA
QCAtMCwwICsxLDIxNiBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNj
cmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAg
aW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4
ZWREQidzIGN1cnNvciB1cGRhdGUuIik7CisKK3Rlc3QoKTsKKworZnVuY3Rpb24gdGVzdCgpCit7
CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
aW5kZXhlZERCLm9wZW4oJ2N1cnNvci11cGRhdGUnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICB2YXIgZGIgPSBldmFs
QW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQorewor
ICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOworICAgIHNlbGYudHJhbnMgPSBldmFs
QW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUo
InRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENh
bGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSBvcGVuQmFzaWNDdXJzb3I7CisKKyAgICBk
ZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgdmFyIG9iamVjdFN0b3JlID0gZXZhbEFu
ZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnYmFzaWNTdG9yZScpIik7
CisgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlMScsICdteUtleTEnKS5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKKyAgICBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZS5hZGQoJ215VmFsdWUyJywgJ215S2V5MicpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnbXlWYWx1ZTMn
LCAnbXlLZXkzJykub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7CisgICAgZXZh
bEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlNCcsICdteUtleTQnKS5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKKworICAgIHZhciBvYmplY3RTdG9yZSA9IGV2YWxB
bmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2F1dG9JbmNyZW1lbnRT
dG9yZScsIHthdXRvSW5jcmVtZW50OiB0cnVlfSkiKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZS5hZGQoJ2ZvbzEnKS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKKyAg
ICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ2ZvbzInKS5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2siKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ2ZvbzMn
KS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKKyAgICBldmFsQW5kTG9nKCJv
YmplY3RTdG9yZS5hZGQoJ2ZvbzQnKS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2si
KTsKKworICAgIHZhciBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ2tleVBhdGhTdG9yZScsIHtrZXlQYXRoOiAnaWQnfSkiKTsKKyAg
ICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgnbnVtYmVySW5kZXgnLCAnbnVt
YmVyJykiKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoe251bWJlcjogMSwgaWQ6
IDF9KS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKKyAgICBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZS5hZGQoe251bWJlcjogMiwgaWQ6IDJ9KS5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2siKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoe251bWJl
cjogMywgaWQ6IDN9KS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKKyAgICBl
dmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoe251bWJlcjogNCwgaWQ6IDR9KS5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKK30KKworZnVuY3Rpb24gb3BlbkJhc2ljQ3Vyc29y
KCkKK3sKKyAgICBkZWJ1Zygib3BlbkJhc2ljQ3Vyc29yKCkiKTsKKyAgICBldmFsQW5kTG9nKCJ0
cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnYmFzaWNTdG9yZScsICdhdXRvSW5jcmVtZW50U3RvcmUn
LCAna2V5UGF0aFN0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgdHJh
bnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxl
dGUgPSB0cmFuc2FjdGlvbkNvbXBsZXRlOworCisgICAga2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5s
b3dlckJvdW5kKCJteUtleTEiKTsKKyAgICBzZWxmLm9iamVjdFN0b3JlID0gZXZhbEFuZExvZygi
dHJhbnMub2JqZWN0U3RvcmUoJ2Jhc2ljU3RvcmUnKSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gYmFzaWNVcGRhdGVDdXJzb3I7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7CisgICAgY291bnRlciA9IDE7Cit9CisKK2Z1bmN0aW9uIGJhc2lj
VXBkYXRlQ3Vyc29yKCkKK3sKKyAgICBkZWJ1ZygiYmFzaWNVcGRhdGVDdXJzb3IoKSIpOworICAg
IHNob3VsZEJlKCJldmVudC50YXJnZXQuc291cmNlIiwgIm9iamVjdFN0b3JlIik7CisgICAgaWYg
KGV2ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkgeworICAgICAgICBzaG91bGRCZSgiY291bnRl
ciIsICI1Iik7CisgICAgICAgIGNvdW50ZXIgPSAxOworCisgICAgICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYmFzaWNTdG9yZScpLm9wZW5DdXJzb3Ioa2V5UmFu
Z2UpIik7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYmFzaWNDaGVja0N1cnNvcjsKKyAg
ICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0
LnJlc3VsdC51cGRhdGUoJ215VXBkYXRlZFZhbHVlJyArIGNvdW50ZXIrKykiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeyBldmFsQW5kTG9nKCJldmVudC50YXJnZXQuc291
cmNlLmNvbnRpbnVlKCkiKTsgfQorICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBiYXNpY0NoZWNrQ3Vyc29yKCkKK3sKKyAgICBkZWJ1
ZygiYmFzaWNDaGVja0N1cnNvcigpIik7CisgICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0g
bnVsbCkgeworICAgICAgICBzaG91bGRCZSgiY291bnRlciIsICI1Iik7CisgICAgICAgIGNvdW50
ZXIgPSAxOworCisgICAgICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgxKTsK
KyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdhdXRvSW5j
cmVtZW50U3RvcmUnKS5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOworICAgICAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGF1dG9JbmNyZW1lbnRVcGRhdGVDdXJzb3I7CisgICAgICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICJt
eUtleSIgKyBjb3VudGVyKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdl
dC5yZXN1bHQudmFsdWUiLCAibXlVcGRhdGVkVmFsdWUiICsgY291bnRlcisrKTsKKyAgICBldmFs
QW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKK30KKworZnVuY3Rpb24g
YXV0b0luY3JlbWVudFVwZGF0ZUN1cnNvcigpCit7CisgICAgZGVidWcoImF1dG9JbmNyZW1lbnRV
cGRhdGVDdXJzb3IoKSIpOworICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0ID09IG51bGwpIHsK
KyAgICAgICAgc2hvdWxkQmUoImNvdW50ZXIiLCAiNSIpOworICAgICAgICBjb3VudGVyID0gMTsK
KworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2F1dG9J
bmNyZW1lbnRTdG9yZScpLm9wZW5DdXJzb3Ioa2V5UmFuZ2UpIik7CisgICAgICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gYXV0b0luY3JlbWVudENoZWNrQ3Vyc29yOworICAgICAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LnVwZGF0ZSgn
bXlVcGRhdGVkRm9vJyArIGNvdW50ZXIrKykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1
bmN0aW9uKCkgeyBldmFsQW5kTG9nKCJldmVudC50YXJnZXQuc291cmNlLmNvbnRpbnVlKCkiKTsg
fQorICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiBhdXRvSW5jcmVtZW50Q2hlY2tDdXJzb3IoKQoreworICAgIGRlYnVnKCJhdXRvSW5j
cmVtZW50Q2hlY2tDdXJzb3IoKSIpOworICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0ID09IG51
bGwpIHsKKyAgICAgICAgc2hvdWxkQmUoImNvdW50ZXIiLCAiNSIpOworICAgICAgICBjb3VudGVy
ID0gMTsKKworICAgICAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQoMSk7Cisg
ICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgna2V5UGF0aFN0
b3JlJykub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBrZXlQYXRoVXBkYXRlQ3Vyc29yOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNob3VsZEJl
KCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICJjb3VudGVyIik7CisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LnZhbHVlIiwgIm15VXBkYXRlZEZvbyIgKyBj
b3VudGVyKyspOworICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUo
KSIpOworfQorCitmdW5jdGlvbiBrZXlQYXRoVXBkYXRlQ3Vyc29yKCkKK3sKKyAgICBkZWJ1Zygi
a2V5UGF0aFVwZGF0ZUN1cnNvcigpIik7CisgICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0g
bnVsbCkgeworICAgICAgICBzaG91bGRCZSgiY291bnRlciIsICI1Iik7CisgICAgICAgIGNvdW50
ZXIgPSAxOworCisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9y
ZSgna2V5UGF0aFN0b3JlJykub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKKyAgICAgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBrZXlQYXRoQ2hlY2tDdXJzb3I7CisgICAgICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZXZlbnQudGFyZ2V0LnJlc3VsdC51cGRhdGUoe2lk
OiAxMDAgKyBjb3VudGVyLCBudW1iZXI6IDEwMCArIGNvdW50ZXJ9KSIsICJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5EQVRBX0VSUiIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImV2ZW50LnRh
cmdldC5yZXN1bHQudXBkYXRlKHtpZDogY291bnRlciwgbnVtYmVyOiAxMDAgKyBjb3VudGVyKyt9
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7IGV2YWxBbmRMb2coImV2
ZW50LnRhcmdldC5zb3VyY2UuY29udGludWUoKSIpIH07CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGtleVBhdGhDaGVja0N1cnNv
cigpCit7CisgICAgZGVidWcoImtleVBhdGhDaGVja0N1cnNvcigpIik7CisgICAgaWYgKGV2ZW50
LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkgeworICAgICAgICBzaG91bGRCZSgiY291bnRlciIsICI1
Iik7CisgICAgICAgIGNvdW50ZXIgPSAxOworCisgICAgICAgIGtleVJhbmdlID0gSURCS2V5UmFu
Z2UubG93ZXJCb3VuZCgxMDEpOworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnMu
b2JqZWN0U3RvcmUoJ2tleVBhdGhTdG9yZScpLmluZGV4KCdudW1iZXJJbmRleCcpLm9wZW5LZXlD
dXJzb3Ioa2V5UmFuZ2UpIik7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0ga2V5Q3Vyc29y
OworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0
LmtleSIsICJjb3VudGVyIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQudmFs
dWUuaWQiLCAiY291bnRlciIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnZh
bHVlLm51bWJlciIsIChjb3VudGVyICsgMTAwKS50b1N0cmluZygpKTsKKyAgICBjb3VudGVyKys7
CisgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7Cit9CisK
K2Z1bmN0aW9uIGtleUN1cnNvcigpCit7CisgICAgZGVidWcoImtleUN1cnNvcigpIik7CisgICAg
aWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkgeworICAgICAgICBzaG91bGRCZSgiY291
bnRlciIsICI1Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaG91bGRCZSgiZXZl
bnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAiY291bnRlciArIDEwMCIpOworICAgIHNob3VsZEJlKCJl
dmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiY291bnRlciIpOworCisgICAgdHJ5IHsK
KyAgICAgICAgZGVidWcoImV2ZW50LnRhcmdldC5yZXN1bHQudXBkYXRlKHtpZDogY291bnRlciwg
bnVtYmVyOiBjb3VudGVyICsgMjAwfSkiKTsKKyAgICAgICAgZXZlbnQudGFyZ2V0LnJlc3VsdC51
cGRhdGUoe2lkOiBjb3VudGVyLCBudW1iZXI6IGNvdW50ZXIgKyAyMDB9KTsKKyAgICAgICAgdGVz
dEZhaWxlZCgiRXhwZWN0ZWQgZXhjZXB0aW9uLiIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgY29kZSA9IGUuY29kZTsKKyAgICAgICAgc2hvdWxkQmUoImNvZGUiLCAiSURCRGF0YWJhc2VF
eGNlcHRpb24uTk9UX0FMTE9XRURfRVJSIik7CisgICAgfQorCisgICAgY291bnRlcisrOworICAg
IGV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKTsKK30KKworZnVuY3Rpb24gdHJhbnNhY3Rp
b25Db21wbGV0ZSgpCit7CisgICAgZGVidWcoInRyYW5zYWN0aW9uQ29tcGxldGUoKSIpOworICAg
IGZpbmlzaEpTVGVzdCgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kYXRhLWNvcnJ1cHRp
b24uanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGF0YS1jb3Jy
dXB0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQxNTViODM4ZDJhMDdhOWM1Y2U2NGQwM2M1NmRjZjg3ZTI5
YzU4NmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvZGF0YS1jb3JydXB0aW9uLmpzCkBAIC0wLDAgKzEsNjUgQEAKK2lmICh0aGlzLmlt
cG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOwor
fQorCitkZXNjcmlwdGlvbigiVGVzdCB0aGF0IGRhdGEgaW5zZXJ0ZWQgaW50byBJbmRleGVkREIg
ZG9lcyBub3QgZ2V0IGNvcnJ1cHRlZCBvbiBkaXNrLiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sK
KyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIub3BlbignZGF0YS1jb3JydXB0aW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGVidWcoIm9wZW5T
dWNjZXNzKCk6Iik7CisgICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25l
dyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb25TdWNjZXNz
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCit7CisgICAgZGVidWcoInNldFZlcnNpb25TdWNj
ZXNzKCk6Iik7CisgICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFy
Z2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKyAgICB0
cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21w
bGV0ZSA9IGFkZERhdGE7CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAg
ZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Cit9CisKK3Zh
ciB0ZXN0RGF0ZSA9IG5ldyBEYXRlKCdGZWJydWFyeSAyNCwgMTk1NSAxMjowMDowOCcpOworCitm
dW5jdGlvbiBhZGREYXRhKCkKK3sKKyAgICBkZWJ1ZygiYWRkRGF0YSgpOiIpOworICAgIHZhciB0
cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydz
dG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICB2YXIgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVO
YW1lJykuYWRkKHt4OiB0ZXN0RGF0ZX0sICdrZXknKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBn
ZXREYXRhOworfQorCitmdW5jdGlvbiBnZXREYXRhKCkKK3sKKyAgICBkZWJ1ZygiYWRkRGF0YSgp
OiIpOworICAgIHZhciB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIu
dHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKSIpOwor
ICAgIHZhciByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHRyYW5zYWN0aW9uLm9iamVj
dFN0b3JlKCdzdG9yZU5hbWUnKS5nZXQoJ2tleScpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkb0NoZWNr
OworfQorCitmdW5jdGlvbiBkb0NoZWNrKCkKK3sKKyAgICBzaG91bGRCZVRydWUoImV2ZW50LnRh
cmdldC5yZXN1bHQueC50b1N0cmluZygpID09IHRlc3REYXRlLnRvU3RyaW5nKCkiKTsKKyAgICBm
aW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kYXRh
YmFzZS1iYXNpY3MuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
ZGF0YWJhc2UtYmFzaWNzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhNWE3YTczZTE0YWU1NjU3YzFhNWFjNGY1
NDU2OTcwZWQyYWI0OGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvZGF0YWJhc2UtYmFzaWNzLmpzCkBAIC0wLDAgKzEsMTE1IEBACitp
ZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFy
ZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgdGhlIGJhc2ljcyBvZiBJbmRleGVkREIn
cyBJREJEYXRhYmFzZS4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9y
UHJlZml4ZXMoKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbign
ZGF0YWJhc2UtYmFzaWNzJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNz
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNl
dFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZl
cnNpb25TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCit7CisgICAgZGVidWcoInNl
dFZlcnNpb25TdWNjZXNzKCk6Iik7CisgICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5z
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51
bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisKKyAg
ICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgZGVidWcoIlRlc3Rpbmcgc2V0VmVy
c2lvbi4iKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygnZGIuc2V0VmVyc2lvbigidmVyc2lv
biBhIiknKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb25BZ2FpbjsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
c2V0VmVyc2lvbkFnYWluKCkKK3sKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygnZGIuc2V0VmVy
c2lvbigidmVyc2lvbiBiIiknKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZU9iamVj
dFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBjcmVhdGVPYmplY3RTdG9yZSgpCit7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJkYi52ZXJzaW9uIiwgInZlcnNpb24gYiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygiZGIubmFtZSIsICJkYXRhYmFzZS1iYXNpY3MiKTsKKyAgICBzaG91bGRCZSgiZGIub2Jq
ZWN0U3RvcmVOYW1lcyIsICJbXSIpOworICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVz
Lmxlbmd0aCIsICIwIik7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFp
bnMoJycpIiwgImZhbHNlIik7CisgICAgc2hvdWxkQmVOdWxsKCJkYi5vYmplY3RTdG9yZU5hbWVz
WzBdIik7CisgICAgc2hvdWxkQmVOdWxsKCJkYi5vYmplY3RTdG9yZU5hbWVzLml0ZW0oMCkiKTsK
KworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygnZGIuY3JlYXRlT2JqZWN0U3RvcmUoInRl
c3QxMjMiKScpOworICAgIGNoZWNrT2JqZWN0U3RvcmUoKTsKKyAgICBjb21taXRBbmRDb250aW51
ZSgpOworfQorCitmdW5jdGlvbiBjaGVja09iamVjdFN0b3JlKCkKK3sKKyAgICBzaG91bGRCZSgi
ZGIub2JqZWN0U3RvcmVOYW1lcyIsICJbJ3Rlc3QxMjMnXSIpOworICAgIHNob3VsZEJlKCJkYi5v
YmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIxIik7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0
b3JlTmFtZXMuY29udGFpbnMoJycpIiwgImZhbHNlIik7CisgICAgc2hvdWxkQmUoImRiLm9iamVj
dFN0b3JlTmFtZXMuY29udGFpbnMoJ3Rlc3Q0NTYnKSIsICJmYWxzZSIpOworICAgIHNob3VsZEJl
KCJkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCd0ZXN0MTIzJykiLCAidHJ1ZSIpOworfQor
CitmdW5jdGlvbiBjb21taXRBbmRDb250aW51ZSgpCit7CisgICAgc2VsZi5zZXRUaW1lb3V0KHRl
c3RTZXRWZXJzaW9uQWJvcnQsIDApOworfQorCitmdW5jdGlvbiB0ZXN0U2V0VmVyc2lvbkFib3J0
KCkKK3sKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygnZGIuc2V0VmVyc2lvbigidmVyc2lvbiBj
IiknKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFub3RoZXJPYmplY3RTdG9yZTsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gY3JlYXRlQW5vdGhlck9iamVjdFN0b3JlKCkKK3sKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImRiLnZlcnNpb24iLCAidmVyc2lvbiBjIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJkYi5uYW1lIiwgImRhdGFiYXNlLWJhc2ljcyIpOworICAgIGNoZWNrT2JqZWN0U3RvcmUo
KTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygnZGIuY3JlYXRlT2JqZWN0U3RvcmUo
InRlc3Q0NTYiKScpOworICAgIHZhciBzZXRWZXJzaW9uVHJhbnMgPSBldmFsQW5kTG9nKCJzZXRW
ZXJzaW9uVHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJz
ZXRWZXJzaW9uVHJhbnMgIT09IG51bGwiKTsKKyAgICBzZXRWZXJzaW9uVHJhbnMub25jb21wbGV0
ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOworICAgIHNldFZlcnNpb25UcmFucy5vbmFi
b3J0ID0gY2hlY2tNZXRhZGF0YTsKKyAgICBzZXRWZXJzaW9uVHJhbnMuYWJvcnQoKTsKK30KKwor
ZnVuY3Rpb24gY2hlY2tNZXRhZGF0YSgpCit7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJk
Yi52ZXJzaW9uIiwgInZlcnNpb24gYiIpOworICAgIGNoZWNrT2JqZWN0U3RvcmUoKTsKKyAgICB0
ZXN0Q2xvc2UoKTsKK30KKworZnVuY3Rpb24gdGVzdENsb3NlKCkKK3sKKyAgICBldmFsQW5kTG9n
KCJkYi5jbG9zZSgpIik7CisgICAgZGVidWcoIk5vdyB0aGF0IHRoZSBjb25uZWN0aW9uIGlzIGNs
b3NlZCwgdHJhbnNhY3Rpb24gY3JlYXRpb24gc2hvdWxkIGZhaWwiKTsKKyAgICBldmFsQW5kRXhw
ZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbigndGVzdDEyMycpIiwgIklEQkRhdGFiYXNlRXhj
ZXB0aW9uLk5PVF9BTExPV0VEX0VSUiIpOworICAgIGRlYnVnKCJDYWxsIHR3aWNlLCBtYWtlIHN1
cmUgaXQncyBoYXJtbGVzcyIpOworICAgIGV2YWxBbmRMb2coImRiLmNsb3NlKCkiKTsKKyAgICBm
aW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kYXRh
YmFzZS1uYW1lLXVuZGVmaW5lZC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9kYXRhYmFzZS1uYW1lLXVuZGVmaW5lZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjY0OWNjNWNh
NTczNWYzYjQ1Y2U1MmE4MGM3OTZkZThkMmJiYWY3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGFiYXNlLW5hbWUtdW5kZWZpbmVk
LmpzCkBAIC0wLDAgKzEsMTUgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBv
cnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwor
ICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJ
bmRleGVkREIgdW5kZWZpbmVkIGFzIHJlY29yZCB2YWx1ZSIpOworCitmdW5jdGlvbiB0ZXN0KCkK
K3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAgIHNob3VsZFRocm93KCJpbmRleGVk
REIub3BlbigpOyIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL2RhdGFiYXNlLW9kZC1uYW1lcy5qcyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kYXRhYmFzZS1vZGQtbmFtZXMuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Mzk0ZjFlNzZlZTI1MGMyODBjZjE1MTIwOWM5MmYwYTY0MjMyYTc2MwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kYXRhYmFzZS1vZGQt
bmFtZXMuanMKQEAgLTAsMCArMSwzMSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAg
IGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Jyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJU
ZXN0IEluZGV4ZWREQiBvZGQgdmFsdWUgZGF0YXR5cGVzIik7CisKK2Z1bmN0aW9uIHRlc3QoKQor
eworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICB0ZXN0RGF0YSA9IFt7IGRlc2Ny
aXB0aW9uOiAnbnVsbCcsICAgICAgICAgICAgICAgbmFtZTogJ1x1MDAwMCcgfSwKKyAgICAgICAg
ICAgICAgICB7IGRlc2NyaXB0aW9uOiAnZmFpaHUnLCAgICAgICAgICAgICAgbmFtZTogJ1x1ZDgw
MFx1ZGY0NicgfSwKKyAgICAgICAgICAgICAgICB7IGRlc2NyaXB0aW9uOiAndW5wYWlyZWQgc3Vy
cm9nYXRlJywgbmFtZTogJ1x1ZDgwMCcgfSwKKyAgICAgICAgICAgICAgICB7IGRlc2NyaXB0aW9u
OiAnZmZmZScsICAgICAgICAgICAgICAgbmFtZTogJ1x1ZmZmZScgfSwKKyAgICAgICAgICAgICAg
ICB7IGRlc2NyaXB0aW9uOiAnZmZmZicsICAgICAgICAgICAgICAgbmFtZTogJ1x1ZmZmZicgfSwK
KyAgICAgICAgICAgICAgICB7IGRlc2NyaXB0aW9uOiAnbGluZSBzZXBhcmF0b3InLCAgICAgbmFt
ZTogJ1x1MjAyOCcgfQorICAgIF07CisgICAgbmV4dFRvT3BlbiA9IDA7CisgICAgb3Blbk5leHRE
YXRhYmFzZSgpOworfQorCitmdW5jdGlvbiBvcGVuTmV4dERhdGFiYXNlKCkKK3sKKyAgICBkZWJ1
Zygib3BlbmluZyBhIGRhdGFiYXNlIG5hbWVkICIgKyB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5kZXNj
cmlwdGlvbik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKHRlc3RE
YXRhW25leHRUb09wZW5dLm5hbWUsIHRlc3REYXRhW25leHRUb09wZW5dLmRlc2NyaXB0aW9uKSIp
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gKytuZXh0VG9PcGVuIDwgdGVzdERhdGEubGVuZ3RoID8gb3Blbk5l
eHREYXRhYmFzZSA6IGZpbmlzaEpTVGVzdDsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9kYXRhYmFzZS1xdW90YS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9kYXRhYmFzZS1xdW90YS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZTA5MTVmZDAyMjhlOTky
OWZmY2M1NmEzMDhkNjA4NDg5ODYwYWU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGFiYXNlLXF1b3RhLmpzCkBAIC0wLDAgKzEs
OTcgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8u
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlw
dHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdHMgSW5kZXhlZERCJ3MgcXVv
dGEgZW5mb3JjaW5nIG1lY2hhbmlzbS4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVt
b3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERC
Lm9wZW4oJ2RhdGFiYXNlLXF1b3RhJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5T
dWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgc2VsZi5kYiA9IGV2YWxBbmRMb2co
ImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IHNldFZlcnNpb25TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCit7CisgICAgZGVi
dWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7CisgICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2co
InRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMg
IT09IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7
CisgICAgdHJhbnMub25jb21wbGV0ZSA9IGNoZWNrUXVvdGFFbmZvcmNpbmc7CisKKyAgICBkZWxl
dGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkYi52
ZXJzaW9uIiwgIm5ldyB2ZXJzaW9uIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkYi5u
YW1lIiwgImRhdGFiYXNlLXF1b3RhIik7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFt
ZXMiLCAiW10iKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAi
MCIpOworICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCcnKSIsICJm
YWxzZSIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCdkYi5jcmVhdGVPYmplY3RT
dG9yZSgidGVzdDEyMyIpJyk7CisgICAgY2hlY2tPYmplY3RTdG9yZSgpOworfQorCitmdW5jdGlv
biBjaGVja09iamVjdFN0b3JlKCkKK3sKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1l
cyIsICJbJ3Rlc3QxMjMnXSIpOworICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxl
bmd0aCIsICIxIik7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMo
JycpIiwgImZhbHNlIik7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFp
bnMoJ3Rlc3Q0NTYnKSIsICJmYWxzZSIpOworICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5h
bWVzLmNvbnRhaW5zKCd0ZXN0MTIzJykiLCAidHJ1ZSIpOworfQorCitmdW5jdGlvbiBjaGVja1F1
b3RhRW5mb3JjaW5nKCkKK3sKKyAgICB2YXIgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRi
LnRyYW5zYWN0aW9uKFsndGVzdDEyMyddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwor
ICAgIHRyYW5zLm9uYWJvcnQgPSB0ZXN0Q29tcGxldGU7CisgICAgdHJhbnMub25jb21wbGV0ZSA9
IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOworICAgIGRlYnVnKCJDcmVhdGluZyAnZGF0YScg
d2hpY2ggY29udGFpbnMgNjRLIG9mIGRhdGEiKTsKKyAgICBzZWxmLmRhdGEgPSAiWCI7CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCAxNjsgaSsrKQorICAgICAgICBkYXRhICs9IGRhdGE7CisgICAg
c2hvdWxkQmUoImRhdGEubGVuZ3RoIiwgIjY1NTM2Iik7CisgICAgc2VsZi5kYXRhQWRkZWQgPSAw
OworICAgIHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3Jl
KCd0ZXN0MTIzJykiKTsKKyAgICBhZGREYXRhKCk7Cit9CisKK2Z1bmN0aW9uIGFkZERhdGEoKQor
eworICAgIGlmIChkYXRhQWRkZWQgPCA1ICogMTAyNCAqIDEwMjQpIHsKKyAgICAgICAgaWYgKGRh
dGFBZGRlZCA+IDApCisgICAgICAgICAgICBzdG9yZSA9IGV2ZW50LnRhcmdldC5zb3VyY2U7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiYWRkZWQgbW9yZSB0aGFuIHF1b3RhIik7
CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGRh
dGFBZGRlZCArPSA2NTUzNjsKKyAgICByZXF1ZXN0ID0gc3RvcmUuYWRkKHt4OiBkYXRhfSwgZGF0
YUFkZGVkKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZERhdGE7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gbG9nRXJyb3I7Cit9CisKK2Z1bmN0aW9uIGxvZ0Vycm9yKCkKK3sKKyAgICBkZWJ1
ZygiRXJyb3IgZnVuY3Rpb24gY2FsbGVkOiAoIiArIGV2ZW50LnRhcmdldC5lcnJvckNvZGUgKyAi
KSAiICsgZXZlbnQudGFyZ2V0LndlYmtpdEVycm9yTWVzc2FnZSk7CisgICAgZXZhbEFuZExvZygi
ZXZlbnQucHJldmVudERlZmF1bHQoKSIpOworfQorCitmdW5jdGlvbiB0ZXN0Q29tcGxldGUoKQor
eworICAgIHRlc3RQYXNzZWQoIkFkZGluZyBkYXRhIGZhaWxlZCBkdWUgdG8gcXVvdGEgZXJyb3Iu
IERhdGEgYWRkZWQgd2FzIGFib3V0ICIgKyBNYXRoLnJvdW5kKGRhdGFBZGRlZCAvIDEwMjQgLyAx
MDI0KSArICIgTUIiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9kZWxldGUtY2xvc2VkLWRhdGFiYXNlLW9iamVjdC5qcyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kZWxldGUtY2xvc2VkLWRhdGFiYXNl
LW9iamVjdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZDMyOWEyYjdhM2I3MGMwN2UxZmZmOGI2ZDZlYmExOGQy
ODQwM2I4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL2RlbGV0ZS1jbG9zZWQtZGF0YWJhc2Utb2JqZWN0LmpzCkBAIC0wLDAgKzEsNDkg
QEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMo
J3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiRW5zdXJlIHRoYXQgSURCRGF0YWJhc2Ug
b2JqZWN0cyBhcmUgZGVsZXRlZCB3aGVuIHRoZXJlIGFyZSBubyByZXRhaW5pbmcgcGF0aHMgbGVm
dCIpOworCitmdW5jdGlvbiB0ZXN0KCkgeworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Cisg
ICAgb3BlbkRCQ29ubmVjdGlvbigpOworfQorCitmdW5jdGlvbiBvcGVuREJDb25uZWN0aW9uKCkK
K3sKKyAgICBldmFsQW5kTG9nKCJzZWxmLnN0YXRlID0gJ3N0YXJ0aW5nJyIpOworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignZGVsZXRlLWNsb3NlZC1kYXRhYmFzZS1v
YmplY3QnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9w
ZW5TdWNjZXNzKCkKK3sKKyAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJn
ZXQucmVzdWx0Iik7CisKKyAgICAvLyBPcGVuIGEgc2Vjb25kIGNvbm5lY3Rpb24gdG8gdGhlIHNh
bWUgZGF0YWJhc2UuCisgICAgdmFyIHJlcXVlc3QyID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9w
ZW4oJ2RlbGV0ZS1jbG9zZWQtZGF0YWJhc2Utb2JqZWN0JykiKTsKKyAgICByZXF1ZXN0Mi5vbnN1
Y2Nlc3MgPSBvcGVuU3VjY2VzczI7CisgICAgcmVxdWVzdDIub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzczIoKQoreworICAgIGRlYnVn
KCJTZWNvbmQgY29ubmVjdGlvbiBzdWNjZXNzZnVsbHkgZXN0YWJsaXNoZWQuIik7CisgICAgLy8g
QWZ0ZXIgbGVhdmluZyB0aGlzIGZ1bmN0aW9uLCB0aGVyZSBhcmUgbm8gcmVtYWluaW5nIHJlZmVy
ZW5jZXMgdG8gdGhlCisgICAgLy8gc2Vjb25kIGNvbm5lY3Rpb24sIHNvIGl0IHNob3VsZCBnZXQg
ZGVsZXRlZC4KKyAgICBzZXRUaW1lb3V0KHNldFZlcnNpb24sIDIpOworfQorCitmdW5jdGlvbiBz
ZXRWZXJzaW9uKCkKK3sKKyAgICBnYygpOworICAgIGRlYnVnKCJjYWxsaW5nIHNldFZlcnNpb24o
KSAtIGNhbGxiYWNrIHNob3VsZCBydW4gaW1tZWRpYXRlbHkiKTsKKyAgICB2YXIgdmVyc2lvbkNo
YW5nZVJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOwor
ICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICB2ZXJzaW9uQ2hhbmdlUmVxdWVzdC5vbmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tl
ZENhbGxiYWNrOworICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uc3VjY2VzcyA9IGZpbmlzaEpT
VGVzdDsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kZWxldGUtcmFuZ2Uu
anMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGVsZXRlLXJhbmdl
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmE1ZGY3N2YyMzQ3MzY4OTg3ODQ5ZGM2ZTFjNTdkNzg2MmMzMWY2ZTkK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvZGVsZXRlLXJhbmdlLmpzCkBAIC0wLDAgKzEsOTAgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlw
dHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNj
cmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBJREJPYmplY3RTdG9yZS5kZWxldGUoSURCS2V5UmFu
Z2UpIG1ldGhvZC4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJl
Zml4ZXMoKTsKKworICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIuZGVsZXRlRGF0
YWJhc2UoJ2RlbGV0ZS1yYW5nZScpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIub3BlbignZGVsZXRlLXJhbmdl
JykiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
ZXZhbEFuZExvZygiZGIgPSByZXF1ZXN0LnJlc3VsdCIpOworICAgICAgICAgICAgZXZhbEFuZExv
ZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAgICAgICAgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgICAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJ0cmFu
cyA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAgICAgICAgICAgICAgdHJhbnMub25hYm9ydCA9IHVu
ZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworCisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygiZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKworICAgICAgICAgICAgICAgIHRyYW5zLm9u
Y29tcGxldGUgPSBydW5UZXN0czsKKyAgICAgICAgICAgIH07CisgICAgICAgIH07CisgICAgfQor
fQorCitmdW5jdGlvbiBjaGVja0tleXMoZXhwZWN0ZWQsIGNhbGxiYWNrKQoreworICAgIGRlYnVn
KCJnZXR0aW5nIGtleXMgZnJvbSBzdG9yZS4uLiIpOworICAgIGRlYnVnKCJleHBlY3Q6ICIgKyBK
U09OLnN0cmluZ2lmeShleHBlY3RlZCkpOworICAgIHZhciBrZXlzID0gW107CisgICAgcmVxdWVz
dCA9IHN0b3JlLm9wZW5DdXJzb3IoKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgY3Vyc29yID0gcmVxdWVzdC5yZXN1bHQ7CisgICAgICAgIGlmIChjdXJzb3IpIHsKKyAg
ICAgICAgICAgIGtleXMucHVzaChjdXJzb3Iua2V5KTsKKyAgICAgICAgICAgIGN1cnNvci5jb250
aW51ZSgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZGVidWcoImFjdHVhbDogIiAr
IEpTT04uc3RyaW5naWZ5KGtleXMpKTsKKyAgICAgICAgICAgIGlmIChKU09OLnN0cmluZ2lmeShl
eHBlY3RlZCkgPT09IEpTT04uc3RyaW5naWZ5KGtleXMpKSB7CisgICAgICAgICAgICAgICAgdGVz
dFBhc3NlZCgiTWF0Y2ghIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoIkRvbid0IG1hdGNoISIpOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfTsKK30KKwordmFyIHRlc3RzID0gWworICAgIHsgbG93ZXI6IDMsIHVwcGVyOiA4LCBsb3dl
ck9wZW46IGZhbHNlLCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogWzEsIDIsIDksIDEwXX0s
CisgICAgeyBsb3dlcjogMywgdXBwZXI6IDgsIGxvd2VyT3BlbjogdHJ1ZSwgdXBwZXJPcGVuOiBm
YWxzZSwgZXhwZWN0ZWQ6IFsxLCAyLCAzLCA5LCAxMF19LAorICAgIHsgbG93ZXI6IDMsIHVwcGVy
OiA4LCBsb3dlck9wZW46IGZhbHNlLCB1cHBlck9wZW46IHRydWUsIGV4cGVjdGVkOiBbMSwgMiwg
OCwgOSwgMTBdfSwKKyAgICB7IGxvd2VyOiAzLCB1cHBlcjogOCwgbG93ZXJPcGVuOiB0cnVlLCB1
cHBlck9wZW46IHRydWUsIGV4cGVjdGVkOiBbMSwgMiwgMywgOCwgOSwgMTBdfQorXTsKKworZnVu
Y3Rpb24gcnVuVGVzdHMoKQoreworICAgIGZ1bmN0aW9uIG5leHRUZXN0KCkgeworICAgICAgICB2
YXIgdGVzdCA9IHRlc3RzLnNoaWZ0KCk7CisgICAgICAgIGlmICh0ZXN0KSB7CisgICAgICAgICAg
ICBkZWJ1ZygiIik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0
aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgICAgICAgICBl
dmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgICAg
ICAgICBmb3IgKGkgPSAxOyBpIDw9IDEwOyArK2kpIHsKKyAgICAgICAgICAgICAgICBldmFsQW5k
TG9nKCJzdG9yZS5wdXQoIiArIGkgKyAiLCIgKyBpICsgIikiKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLmRlbGV0ZShJREJLZXlSYW5nZS5ib3VuZCgiICsK
KyAgICAgICAgICAgICAgICB0ZXN0Lmxvd2VyICsgIiwgIiArCisgICAgICAgICAgICAgICAgdGVz
dC51cHBlciArICIsICIgKworICAgICAgICAgICAgICAgIHRlc3QubG93ZXJPcGVuICsgIiwgIiAr
CisgICAgICAgICAgICAgICAgdGVzdC51cHBlck9wZW4gKyAiKSkiKTsKKyAgICAgICAgICAgIGNo
ZWNrS2V5cyh0ZXN0LmV4cGVjdGVkLCBuZXh0VGVzdCk7CisgICAgICAgICAgICB0cmFucy5vbmFi
b3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgICAgICAgICB0cmFucy5vbmNvbXBs
ZXRlID0gbmV4dFRlc3Q7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICBuZXh0VGVz
dCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RlbGV0ZUluZGV4Lmpz
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RlbGV0ZUluZGV4Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRjYjViZWRjNjAwODIzY2U5YmY5YzNiYWE0ZTg2ZjdhZmQxMTcyZTkKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
ZGVsZXRlSW5kZXguanMKQEAgLTAsMCArMSw1MCBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykg
eworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0
aW9uKCJUZXN0IEluZGV4ZWREQiBkZWxldGVJbmRleCBtZXRob2QiKTsKKworZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCLm9wZW4oJ2RlbGV0ZUluZGV4JykiKTsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFs
QW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSB0d2lkZGxlSW5kZXhlczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gdHdpZGRsZUluZGV4ZXMoKQoreworICAgIHRy
YW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBldmVudC50YXJnZXQucmVzdWx0
OyIpOworICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAg
dHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHBvc3RUd2lkZGxpbmc7CisgICAgZGVsZXRlQWxsT2Jq
ZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3Rv
cmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJyk7Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigib2JqZWN0U3RvcmUuZGVsZXRlSW5kZXgoJ2ZpcnN0JykiLCAiSURCRGF0YWJhc2VF
eGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOworICAgIHNob3VsZFRocm93KCJvYmplY3RTdG9yZS5k
ZWxldGVJbmRleCgpIik7IC8vIFR5cGVFcnJvcjogbm90IGVub3VnaCBhcmd1bWVudHMuCisgICAg
aW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdmaXJz
dCcsICdmaXJzdCcpOyIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIm9iamVjdFN0b3Jl
LmRlbGV0ZUluZGV4KCdGSVJTVCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9F
UlIiKTsKKyAgICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRl
SW5kZXgoJ3NlY29uZCcsICdzZWNvbmQnKTsiKTsKKyAgICByZXR1cm5WYWx1ZSA9IGV2YWxBbmRM
b2coInJldHVyblZhbHVlID0gb2JqZWN0U3RvcmUuZGVsZXRlSW5kZXgoJ2ZpcnN0Jyk7Iik7Cisg
ICAgc2hvdWxkQmUoInJldHVyblZhbHVlIiwgInVuZGVmaW5lZCIpOworfQorCitmdW5jdGlvbiBw
b3N0VHdpZGRsaW5nKCkKK3sKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi5jcmVhdGVP
YmplY3RTdG9yZSgnYmFyJyk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9BTExPV0VEX0VS
UiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIm9iamVjdFN0b3JlLmRlbGV0ZUluZGV4
KCdzZWNvbmQnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9F
UlIiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9kZWxldGVPYmplY3RTdG9yZS1uYW1lLWFyZ3VtZW50LXJlcXVpcmVkLmpzIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RlbGV0ZU9iamVjdFN0b3JlLW5h
bWUtYXJndW1lbnQtcmVxdWlyZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjYwOTJhMTM1ODkyNzY2YzZmMjIx
ZTI1ZTVkZWE5MmVkYzIyM2MyNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kZWxldGVPYmplY3RTdG9yZS1uYW1lLWFyZ3VtZW50LXJl
cXVpcmVkLmpzCkBAIC0wLDAgKzEsMzYgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAg
ICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigi
VGVzdCBJbmRleGVkREIgZGVsZXRlT2JqZWN0U3RvcmUgcmVxdWlyZWQgYXJndW1lbnQiKTsKKwor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5h
bWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3Qg
RGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1l
LCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIu
c2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1
bGF0ZU9iamVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKK3sK
KyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgc2hvdWxkVGhyb3coImRiLmRl
bGV0ZU9iamVjdFN0b3JlKCk7Iik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGVsZXRlT2JqZWN0U3RvcmUtbnVsbC1uYW1lLmpzIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RlbGV0ZU9iamVjdFN0b3Jl
LW51bGwtbmFtZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNGE4MzM1YWI3MWQ0NWZkMWUzNDZhOWM3NmE5ZTJj
MDI1ZWMxZDRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL2RlbGV0ZU9iamVjdFN0b3JlLW51bGwtbmFtZS5qcwpAQCAtMCwwICsxLDM3
IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRz
KCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGRlbGV0ZU9i
amVjdFN0b3JlIHJlcXVpcmVkIGFyZ3VtZW50Iik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAg
IHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRo
bmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQorewor
ICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZTsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
Y3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3Rv
cmVzKGRiKTsKKworICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdudWxsJyk7
Iik7CisgICAgZXZhbEFuZExvZygiZGIuZGVsZXRlT2JqZWN0U3RvcmUobnVsbCk7Iik7CisgICAg
ZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZHVw
bGljYXRlcy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kdXBs
aWNhdGVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxMzNhZThkMWM0ZDk1ZTc1YzM3Yzk3NTcxNGFkZmM5YWUy
Zjc2M2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvZHVwbGljYXRlcy5qcwpAQCAtMCwwICsxLDE2NiBAQAoraWYgKHRoaXMuaW1wb3J0
U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisK
K2Rlc2NyaXB0aW9uKCJWZXJpZnkgdGhhdCB5b3UgY2FuIHB1dCB0aGUgc2FtZSBkYXRhIGluIDIg
ZGlmZmVyZW50IGRhdGFiYXNlcyB3aXRob3V0IHVuaXF1ZW5lc3MgY29uc3RyYWludHMgZmlyaW5n
LiIpOworCit0ZXN0Q291bnQgPSAwOworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgaWYgKHRlc3RD
b3VudCsrID09IDApCisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Bl
bignZHVwbGljYXRlcy0xJykiKTsKKyAgICBlbHNlCisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJpbmRleGVkREIub3BlbignZHVwbGljYXRlcy0yJykiKTsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IHNldFZlcnNpb247CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb24oKQoreworICAgIGRiID0gZXZhbEFu
ZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZGVsZXRlRXhpc3Rpbmc7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKK3sKKyAgICBkZWJ1
Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKKyAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygi
dHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAh
PT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsK
KworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBzZWxmLnN0b3JlID0gZXZh
bEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7CisgICAg
c2VsZi5pbmRleE9iamVjdCA9IGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleE5h
bWUnLCAneCcpIik7CisgICAgYWRkRGF0YSgpOworfQorCitmdW5jdGlvbiBhZGREYXRhKCkKK3sK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6
J30sICdrZXknKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkTW9yZTsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gYWRk
TW9yZSgpCit7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5zb3VyY2Uu
YWRkKHt4OiAndmFsdWUyJywgeTogJ3p6ejInfSwgJ2tleTInKSIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZ2V0RGF0YTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gZ2V0RGF0YSgpCit7CisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImluZGV4T2JqZWN0LmdldEtleSgndmFsdWUnKSIpOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZ2V0T2JqZWN0RGF0YTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZ2V0T2JqZWN0RGF0YSgpCit7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0IiwgImtleSIpOworCisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0LmdldCgndmFsdWUnKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZ2V0RGF0YUZhaWw7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGdldERhdGFGYWlsKCkKK3sKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQueCIsICJ2YWx1ZSIpOwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC55IiwgInp6eiIp
OworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0LmdldEtleSgnZG9lcyBu
b3QgZXhpc3QnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0T2JqZWN0RGF0YUZhaWw7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIGdldE9iamVjdERhdGFGYWlsKCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0
LnJlc3VsdCIsICJ1bmRlZmluZWQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRl
eE9iamVjdC5nZXQoJ2RvZXMgbm90IGV4aXN0JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IG9wZW5LZXlDdXJzb3I7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5LZXlDdXJzb3IoKQoreworICAgIHNob3VsZEJlKCJl
dmVudC50YXJnZXQucmVzdWx0IiwgInVuZGVmaW5lZCIpOworCisgICAgc2VsZi5yZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhPYmplY3Qub3BlbktleUN1cnNvcigpIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBjdXJzb3IxQ29udGludWU7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGN1cnNvcjFDb250aW51ZSgpCit7Cisg
ICAgc2hvdWxkQmVGYWxzZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCA9PT0gbnVsbCIpOworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAidmFsdWUiKTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtl
eSIsICJrZXkiKTsKKworICAgIC8vIFdlIHJlLXVzZSB0aGUgbGFzdCByZXF1ZXN0IG9iamVjdC4K
KyAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKKyAgICBz
ZWxmLnJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29yMUNvbnRpbnVlMjsKK30KKworZnVuY3Rpb24g
Y3Vyc29yMUNvbnRpbnVlMigpCit7CisgICAgc2hvdWxkQmVGYWxzZSgiZXZlbnQudGFyZ2V0LnJl
c3VsdCA9PT0gbnVsbCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0
LnJlc3VsdC5rZXkiLCAidmFsdWUyIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVu
dC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAia2V5MiIpOworCisgICAgLy8gV2UgcmUtdXNl
IHRoZSBsYXN0IHJlcXVlc3Qgb2JqZWN0LgorICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5y
ZXN1bHQuY29udGludWUoKSIpOworICAgIHNlbGYucmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuT2Jq
ZWN0Q3Vyc29yOworfQorCitmdW5jdGlvbiBvcGVuT2JqZWN0Q3Vyc29yKCkKK3sKKyAgICBzaG91
bGRCZVRydWUoImV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwiKTsKKworICAgIHNlbGYucmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0Lm9wZW5DdXJzb3IoKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gY3Vyc29yMkNvbnRpbnVlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjdXJzb3IyQ29udGludWUoKQor
eworICAgIHNob3VsZEJlRmFsc2UoImV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwiKTsKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgInZhbHVl
Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LnZhbHVl
LngiLCAidmFsdWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5y
ZXN1bHQudmFsdWUueSIsICJ6enoiKTsKKworICAgIC8vIFdlIHJlLXVzZSB0aGUgbGFzdCByZXF1
ZXN0IG9iamVjdC4KKyAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVl
KCkiKTsKKyAgICBzZWxmLnJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29yMkNvbnRpbnVlMjsKK30K
KworZnVuY3Rpb24gY3Vyc29yMkNvbnRpbnVlMigpCit7CisgICAgc2hvdWxkQmVGYWxzZSgiZXZl
bnQudGFyZ2V0LnJlc3VsdCA9PT0gbnVsbCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
ZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAidmFsdWUyIik7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLngiLCAidmFsdWUyIik7ICAgIAorICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS55IiwgInp6
ejIiKTsKKworICAgIC8vIFdlIHJlLXVzZSB0aGUgbGFzdCByZXF1ZXN0IG9iamVjdC4KKyAgICBl
dmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKKyAgICBzZWxmLnJl
cXVlc3Qub25zdWNjZXNzID0gbGFzdDsKK30KKworZnVuY3Rpb24gbGFzdCgpCit7CisgICAgc2hv
dWxkQmVUcnVlKCJldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsIik7CisKKyAgICBpZiAodGVz
dENvdW50ID09IDEpCisgICAgICAgIHRlc3QoKTsKKyAgICBlbHNlCisgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworfQorCityZW1vdmVWZW5kb3JQcmVmaXhlcygpOwordGVzdCgpOwpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9lcnJvci1jYXVzZXMtYWJvcnQtYnktZGVmYXVsdC5qcyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9lcnJvci1jYXVzZXMtYWJvcnQtYnktZGVm
YXVsdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mZDNhN2NkZjQxNzU1OWIzY2YzODI3YTBhNzg3ZjQzZjI2NWRl
M2I1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL2Vycm9yLWNhdXNlcy1hYm9ydC1ieS1kZWZhdWx0LmpzCkBAIC0wLDAgKzEsMTAxIEBA
CitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdz
aGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlZlcmlmeSB0aGF0IGEgdHJhbnNhY3Rpb24g
d2l0aCBhbiBlcnJvciBhYm9ydHMgdW5sZXNzIHByZXZlbnREZWZhdWx0KCkgaXMgY2FsbGVkLiIp
OworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignZXJyb3ItY2F1c2VzLWFib3J0
LWJ5LWRlZmF1bHQnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvbjsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rp
b24gc2V0VmVyc2lvbigpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCdu
ZXcgdmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gZGVsZXRlRXhpc3RpbmcoKQoreworICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2Vzcygp
OiIpOworICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMu
b25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIGV2YWxBbmRMb2coInRyYW5z
Lm9uY29tcGxldGUgPSBhZGREYXRhIik7CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIp
OworCisgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51
bGwpIik7Cit9CisKK2Z1bmN0aW9uIGFkZERhdGEoKQoreworICAgIHRyYW5zID0gZXZhbEFuZExv
ZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5S
RUFEX1dSSVRFKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVk
QWJvcnRDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSB0cmFu
c2FjdGlvbkNvbXBsZXRlZCIpOworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFu
cy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
c3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gYWRkTW9yZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gYWRkTW9yZSgpCit7CisgICAgCisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5zb3VyY2UuYWRkKHt4OiAndmFsdWUnLCB5OiAn
enp6J30sICdrZXknKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nl
c3NDYWxsYmFjazsKKyAgICByZXF1ZXN0LmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIiwgcHJldmVu
dFRoZURlZmF1bHQpOworfQorCitmdW5jdGlvbiBwcmV2ZW50VGhlRGVmYXVsdCgpCit7CisgICAg
ZXZhbEFuZExvZygiZXZlbnQucHJldmVudERlZmF1bHQoKSIpOworfQorCitmdW5jdGlvbiB0cmFu
c2FjdGlvbkNvbXBsZXRlZCgpCit7CisgICAgdGVzdFBhc3NlZCgiVHJhbnNhY3Rpb24gY29tcGxl
dGVkIik7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCIiKTsKKyAgICB0cmFucyA9IGV2YWxB
bmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rp
b24uUkVBRF9XUklURSkiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmFib3J0ID0gdHJhbnNh
Y3Rpb25BYm9ydGVkMSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSB1bmV4
cGVjdGVkQ29tcGxldGVDYWxsYmFjayIpOworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUg
PSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSBhbGxvd0RlZmF1bHQ7Cit9CisKK2Z1bmN0aW9uIGFsbG93RGVmYXVsdCgpCit7
CisgICAgZGVidWcoIkRvaW5nIG5vdGhpbmcgdG8gcHJldmVudCB0aGUgZGVmYXVsdCBhY3Rpb24u
Li4iKTsKK30KKworZnVuY3Rpb24gdHJhbnNhY3Rpb25BYm9ydGVkMSgpCit7CisgICAgdGVzdFBh
c3NlZCgiVHJhbnNhY3Rpb24gYWJvcnRlZCIpOworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygi
Iik7CisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3Rv
cmVOYW1lJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgZXZhbEFuZExvZygi
dHJhbnMub25hYm9ydCA9IHRyYW5zYWN0aW9uQWJvcnRlZDIiKTsKKyAgICBldmFsQW5kTG9nKCJ0
cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2siKTsKKyAgICBzdG9y
ZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6
eid9LCAna2V5JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNz
Q2FsbGJhY2s7CisgICAgZGVidWcoIk9taXR0aW5nIGFuIG9uZXJyb3IgaGFuZGxlciIpOworfQor
CitmdW5jdGlvbiB0cmFuc2FjdGlvbkFib3J0ZWQyKCkKK3sKKyAgICB0ZXN0UGFzc2VkKCJUcmFu
c2FjdGlvbiBhYm9ydGVkIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvZXhjZXB0aW9uLWluLWV2ZW50LWFib3J0cy5qcyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9leGNlcHRpb24taW4tZXZlbnQtYWJv
cnRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjliMDU4NmZiYTBhMjgzZTllZTVlMzQ2YjU5MDc1MGY0ZDAwMTc3
ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvZXhjZXB0aW9uLWluLWV2ZW50LWFib3J0cy5qcwpAQCAtMCwwICsxLDEyMSBAQAoraWYg
KHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVk
LmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IGV4Y2VwdGlvbnMgaW4gSURCUmVxdWVzdCBo
YW5kbGVycyBjYXVzZSBhYm9ydHMuIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92
ZVZlbmRvclByZWZpeGVzKCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5v
cGVuKCdleGNlcHRpb24taW4tZXZlbnQtYWJvcnRzJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IHNldFZlcnNpb247CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb24oKQoreworICAgIGRiID0gZXZhbEFuZExv
ZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZGVsZXRlRXhpc3Rpbmc7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKK3sKKyAgICBkZWJ1Zygi
c2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKKyAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJh
bnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0g
bnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAg
ICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gc3RhcnRUZXN0Iik7CisKKyAgICBkZWxl
dGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIHN0YXJ0VGVzdCgpCit7CisgICAgZGVidWcoIiIpOworICAgIHRyYW5zID0gZXZhbEFu
ZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlv
bi5SRUFEX1dSSVRFKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSB0cmFuc2Fj
dGlvbkFib3J0ZWQxIik7CisgICAgZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IHVuZXhw
ZWN0ZWRDb21wbGV0ZUNhbGxiYWNrIik7CisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9
IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZTInLCB5OiAnenp6Mid9LCAna2V5MicpIik7CisgICAg
dHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignc3VjY2VzcycsIGNhdXNlRXhjZXB0aW9uLCB0cnVlKTsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gY2F1c2VFeGNlcHRpb24oKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBldmFsQW5kTG9n
KCJldmVudC5wcmV2ZW50RGVmYXVsdCgpIik7CisgICAgZGVidWcoIlRocm93aW5nIik7CisgICAg
dGhyb3cgInRoaXMgZXhjZXB0aW9uIGlzIGV4cGVjdGVkIjsKK30KKworZnVuY3Rpb24gdHJhbnNh
Y3Rpb25BYm9ydGVkMSgpCit7CisgICAgZGVidWcoIiIpOworICAgIHNob3VsZEhhdmVIYWRFcnJv
cigidGhpcyBleGNlcHRpb24gaXMgZXhwZWN0ZWQiKTsKKyAgICB0ZXN0UGFzc2VkKCJUaGUgdHJh
bnNhY3Rpb24gd2FzIGFib3J0ZWQuIik7CisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9
IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUp
Iik7CisgICAgZXZhbEFuZExvZygidHJhbnMub25hYm9ydCA9IHRyYW5zYWN0aW9uQWJvcnRlZDIi
KTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRl
Q2FsbGJhY2siKTsKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0
U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFk
ZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAna2V5JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7CisgICAgZGIub25lcnJvciA9IGNhdXNlRXhj
ZXB0aW9uOworfQorCitmdW5jdGlvbiB0cmFuc2FjdGlvbkFib3J0ZWQyKCkKK3sKKyAgICBkZWJ1
ZygiIik7CisgICAgc2hvdWxkSGF2ZUhhZEVycm9yKCJ0aGlzIGV4Y2VwdGlvbiBpcyBleHBlY3Rl
ZCIpOworICAgIHRlc3RQYXNzZWQoIlRoZSB0cmFuc2FjdGlvbiB3YXMgYWJvcnRlZC4iKTsKKyAg
ICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUn
XSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5v
bmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2siKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFu
cy5vbmNvbXBsZXRlID0gdHJhbnNhY3Rpb25Db21wbGV0ZWQxIik7CisgICAgc3RvcmUgPSBldmFs
QW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZTMnLCB5OiAnenp6Myd9LCAn
a2V5MycpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0aHJvd0FuZENhdGNoOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIGRiLm9uZXJyb3Ig
PSBudWxsOworfQorCitmdW5jdGlvbiB0aHJvd0FuZENhdGNoKCkKK3sKKyAgICBkZWJ1ZygiIik7
CisgICAgZXZhbEFuZExvZygiZXZlbnQucHJldmVudERlZmF1bHQoKSIpOworICAgIGRlYnVnKCJU
aHJvd2luZyB3aXRoaW4gYSB0cnkgYmxvY2siKTsKKyAgICB0cnkgeworICAgICAgICB0aHJvdyAi
QUhISCI7CisgICAgfSBjYXRjaCAoZSkgeworICAgIH0KK30KKworZnVuY3Rpb24gdHJhbnNhY3Rp
b25Db21wbGV0ZWQxKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgdGVzdFBhc3NlZCgiVGhlIHRy
YW5zYWN0aW9uIGNvbXBsZXRlZC4iKTsKKyAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0g
ZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSki
KTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJh
Y2siKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gdHJhbnNhY3Rpb25Db21w
bGV0ZWQyIik7CisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0
b3JlKCdzdG9yZU5hbWUnKSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQo
e3g6ICd2YWx1ZTQnLCB5OiAnenp6NCd9LCAna2V5NCcpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbigpIHsgdGVzdFBhc3NlZCgia2V5NCBhZGRlZCIpOyB9CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHRyYW5z
YWN0aW9uQ29tcGxldGVkMigpCit7CisgICAgZGVidWcoIiIpOworICAgIHRlc3RQYXNzZWQoIlRo
ZSB0cmFuc2FjdGlvbiBjb21wbGV0ZWQuIik7CisgICAgZGVidWcoIiIpOworICAgIGZpbmlzaEpT
VGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ZhY3RvcnktYmFz
aWNzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ZhY3Rvcnkt
YmFzaWNzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwMDdjZmE3MjNlODliZDVjOWViNDdjYzg4NWRiZDlhZGZm
YmY3MDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvZmFjdG9yeS1iYXNpY3MuanMKQEAgLTAsMCArMSw4MiBAQAoraWYgKHRoaXMuaW1w
b3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9
CisKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoZSBiYXNpY3Mgb2YgSW5kZXhlZERCJ3MgSURCRmFjdG9y
eS4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsK
KworICAgIHNob3VsZEJlVHJ1ZSgidHlwZW9mIGluZGV4ZWREQi5vcGVuID09PSAnZnVuY3Rpb24n
Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2YgaW5kZXhlZERCLmNtcCA9PT0gJ2Z1bmN0aW9u
JyIpOworICAgIHNob3VsZEJlVHJ1ZSgidHlwZW9mIGluZGV4ZWREQi5nZXREYXRhYmFzZU5hbWVz
ID09PSAnZnVuY3Rpb24nIik7CisKKyAgICBzaG91bGRCZVRydWUoInR5cGVvZiBpbmRleGVkREIu
ZGVsZXRlRGF0YWJhc2UgPT09ICdmdW5jdGlvbiciKTsKKworICAgIG5hbWUgPSAnc3RvcmFnZS9p
bmRleGVkZGIvZmFjdG9yeS1iYXNpY3MnOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0
YWJhc2UiOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5nZXREYXRhYmFz
ZU5hbWVzKCkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldERhdGFiYXNlTmFtZXNTdWNj
ZXNzMTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30K
KworZnVuY3Rpb24gZ2V0RGF0YWJhc2VOYW1lc1N1Y2Nlc3MxKCkKK3sKKyAgICB2YXIgZGF0YWJh
c2VOYW1lczsKKyAgICBldmFsQW5kTG9nKCJkYXRhYmFzZU5hbWVzID0gZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOworICAgIHNob3VsZEJlRmFsc2UoImRhdGFiYXNlTmFtZXMuY29udGFpbnMoJyIgKyBu
YW1lICsgIicpIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGF0YWJhc2VOYW1lcy5jb250YWlucygn
REFUQUJBU0UgVEhBVCBET0VTIE5PVCBFWElTVCcpIik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGV2YWxB
bmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY2xvc2UoKSIpOworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJpbmRleGVkREIuZ2V0RGF0YWJhc2VOYW1lcygpIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBnZXREYXRhYmFzZU5hbWVzU3VjY2VzczI7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGdldERhdGFiYXNlTmFtZXNT
dWNjZXNzMigpCit7CisgICAgdmFyIGRhdGFiYXNlTmFtZXM7CisgICAgZXZhbEFuZExvZygiZGF0
YWJhc2VOYW1lcyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoImRh
dGFiYXNlTmFtZXMuY29udGFpbnMoJyIgKyBuYW1lICsgIicpIik7CisgICAgc2hvdWxkQmVGYWxz
ZSgiZGF0YWJhc2VOYW1lcy5jb250YWlucygnREFUQUJBU0UgVEhBVCBET0VTIE5PVCBFWElTVCcp
Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNl
KCciICsgbmFtZSArICInKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlRGF0YWJh
c2VTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworfQorCitmdW5jdGlvbiBkZWxldGVEYXRhYmFzZVN1Y2Nlc3MoKQoreworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleGVkREIuZ2V0RGF0YWJhc2VOYW1lcygpIik7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBnZXREYXRhYmFzZU5hbWVzU3VjY2VzczM7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGdldERhdGFiYXNl
TmFtZXNTdWNjZXNzMygpCit7CisgICAgdmFyIGRhdGFiYXNlTmFtZXM7CisgICAgZXZhbEFuZExv
ZygiZGF0YWJhc2VOYW1lcyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZUZh
bHNlKCJkYXRhYmFzZU5hbWVzLmNvbnRhaW5zKCciICsgbmFtZSArICInKSIpOworICAgIHNob3Vs
ZEJlRmFsc2UoImRhdGFiYXNlTmFtZXMuY29udGFpbnMoJ0RBVEFCQVNFIFRIQVQgRE9FUyBOT1Qg
RVhJU1QnKSIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVE
YXRhYmFzZSgnREFUQUJBU0UgVEhBVCBET0VTIE5PVCBFWElTVCcpIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBkZWxldGVEYXRhYmFzZVN1Y2Nlc3MyOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxldGVEYXRhYmFzZVN1
Y2Nlc3MyKCkKK3sKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9mYWN0b3J5LWNtcC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9mYWN0b3J5LWNtcC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNDI2NzZhYzI0YjI5YzA4
OGMwNmRiYzIxMmUzMjdjMDJhMTczZTc1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ZhY3RvcnktY21wLmpzCkBAIC0wLDAgKzEsMTQx
IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRz
KCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGtleSBjb21w
YXJpc29uIHVzaW5nIElEQkZhY3RvcnkuY21wKCkuIik7CisKK2Z1bmN0aW9uIHRlc3QoKQorewor
ICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBzaG91bGRCZVRydWUoInR5cGVvZiBp
bmRleGVkREIuY21wID09PSAnZnVuY3Rpb24nIik7CisKKyAgICB0ZXN0VmFsaWRLZXlzKCk7Cisg
ICAgdGVzdEludmFsaWRLZXlzKCk7CisgICAgdGVzdElkZW50aWNhbEtleXMoKTsKKyAgICBmaW5p
c2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gdGVzdFZhbGlkS2V5cygpCit7CisgICAgZGVidWco
IiIpOworICAgIGRlYnVnKCJjb21wYXJlIHZhbGlkIGtleXMiKTsKKworICAgIHZhciBrZXlzID0g
WworICAgICAgICAiLUluZmluaXR5IiwKKyAgICAgICAgIi1OdW1iZXIuTUFYX1ZBTFVFIiwKKyAg
ICAgICAgIi0xIiwKKyAgICAgICAgIi1OdW1iZXIuTUlOX1ZBTFVFIiwKKyAgICAgICAgIjAiLAor
ICAgICAgICAiTnVtYmVyLk1JTl9WQUxVRSIsCisgICAgICAgICIxIiwKKyAgICAgICAgIk51bWJl
ci5NQVhfVkFMVUUiLAorICAgICAgICAiSW5maW5pdHkiLAorCisgICAgICAgICJuZXcgRGF0ZSgw
KSIsCisgICAgICAgICJuZXcgRGF0ZSgxMDAwKSIsCisgICAgICAgICJuZXcgRGF0ZSgxMzE3Mzk5
OTMxMDIzKSIsCisgICAgICAgIAorICAgICAgICAiJyciLAorICAgICAgICAiJ1x4MDAnIiwKKyAg
ICAgICAgIidhJyIsCisgICAgICAgICInYWEnIiwKKyAgICAgICAgIidiJyIsCisgICAgICAgICIn
YmEnIiwKKworICAgICAgICAiJ1x4QTInIiwgLy8gVSswMEEyIENFTlQgU0lHTgorICAgICAgICAi
J1x1NkMzNCciLCAvLyBVKzZDMzQgQ0pLIFVOSUZJRUQgSURFT0dSQVBIICh3YXRlcikKKyAgICAg
ICAgIidcdUQ4MzRcdUREMUUnIiwgLy8gVSsxRDExRSBNVVNJQ0FMIFNZTUJPTCBHLUNMRUYgKFVU
Ri0xNiBzdXJyb2dhdGUgcGFpcikKKyAgICAgICAgIidcdUZGRkQnIiwgLy8gVStGRkZEIFJFUExB
Q0VNRU5UIENIQVJBQ1RFUgorCisgICAgICAgICJbXSIsCisKKyAgICAgICAgIlstSW5maW5pdHld
IiwKKyAgICAgICAgIlstTnVtYmVyLk1BWF9WQUxVRV0iLAorICAgICAgICAiWy0xXSIsCisgICAg
ICAgICJbLU51bWJlci5NSU5fVkFMVUVdIiwKKyAgICAgICAgIlswXSIsCisgICAgICAgICJbTnVt
YmVyLk1JTl9WQUxVRV0iLAorICAgICAgICAiWzFdIiwKKyAgICAgICAgIltOdW1iZXIuTUFYX1ZB
TFVFXSIsCisgICAgICAgICJbSW5maW5pdHldIiwKKworICAgICAgICAiW25ldyBEYXRlKDApXSIs
CisgICAgICAgICJbbmV3IERhdGUoMTAwMCldIiwKKyAgICAgICAgIltuZXcgRGF0ZSgxMzE3Mzk5
OTMxMDIzKV0iLAorICAgICAgICAKKyAgICAgICAgIlsnJ10iLAorICAgICAgICAiWydceDAwJ10i
LAorICAgICAgICAiWydhJ10iLAorICAgICAgICAiWydhYSddIiwKKyAgICAgICAgIlsnYiddIiwK
KyAgICAgICAgIlsnYmEnXSIsCisKKyAgICAgICAgIlsnXHhBMiddIiwgLy8gVSswMEEyIENFTlQg
U0lHTgorICAgICAgICAiWydcdTZDMzQnXSIsIC8vIFUrNkMzNCBDSksgVU5JRklFRCBJREVPR1JB
UEggKHdhdGVyKQorICAgICAgICAiWydcdUQ4MzRcdUREMUUnXSIsIC8vIFUrMUQxMUUgTVVTSUNB
TCBTWU1CT0wgRy1DTEVGIChVVEYtMTYgc3Vycm9nYXRlIHBhaXIpCisgICAgICAgICJbJ1x1RkZG
RCddIiwgLy8gVStGRkZEIFJFUExBQ0VNRU5UIENIQVJBQ1RFUgorCisgICAgICAgICJbW11dIiwK
KyAgICAgICAgCisgICAgICAgICJbW10sIFtdXSIsCisgICAgICAgICJbW10sIFtdLCBbXV0iLAor
CisgICAgICAgICJbW1tdXV0iLAorICAgICAgICAiW1tbW11dXV0iCisgICAgXTsKKworICAgIHZh
ciBpLCBrZXkxLCBrZXkyOworICAgIGZvciAoaSA9IDA7IGkgPCBrZXlzLmxlbmd0aCAtIDE7IGkg
Kz0gMSkgeworICAgICAgICBrZXkxID0ga2V5c1tpXTsKKyAgICAgICAga2V5MiA9IGtleXNbaSAr
IDFdOworICAgICAgICBzaG91bGRCZVRydWUoImluZGV4ZWREQi5jbXAoIiArIGtleTEgKyAiLCIg
KyBrZXkyICsgIikgPT09IC0xIik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXhlZERCLmNt
cCgiICsga2V5MiArICIsIiArIGtleTEgKyAiKSA9PT0gMSIpOworICAgICAgICBzaG91bGRCZVRy
dWUoImluZGV4ZWREQi5jbXAoIiArIGtleTEgKyAiLCIgKyBrZXkxICsgIikgPT09IDAiKTsKKyAg
ICAgICAgc2hvdWxkQmVUcnVlKCJpbmRleGVkREIuY21wKCIgKyBrZXkyICsgIiwiICsga2V5MiAr
ICIpID09PSAwIik7CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0SW52YWxpZEtleXMoKQorewor
ICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiY29tcGFyZSBpbnZhbGlkIGtleXMiKTsKKworICAg
IHZhciBpbnZhbGlkS2V5cyA9IFsKKyAgICAgICAgInZvaWQgMCIsIC8vIHVuZGVmaW5lZAorICAg
ICAgICAidHJ1ZSIsCisgICAgICAgICJmYWxzZSIsCisgICAgICAgICJOYU4iLAorICAgICAgICAi
bmV3IERhdGUoTmFOKSIsCisgICAgICAgICJudWxsIiwKKyAgICAgICAgInt9IiwKKyAgICAgICAg
ImZ1bmN0aW9uICgpIHt9IiwKKyAgICAgICAgIi9yZWdleC8iLAorICAgICAgICAic2VsZiIsCisg
ICAgICAgICJzZWxmLmRvY3VtZW50IiwKKyAgICAgICAgInNlbGYuZG9jdW1lbnQuYm9keSIKKyAg
ICBdOworCisgICAgdmFyIGksIGtleTEsIGtleTI7CisgICAgZm9yIChpID0gMDsgaSA8IGludmFs
aWRLZXlzLmxlbmd0aCAtIDE7IGkgKz0gMSkgeworICAgICAgICBrZXkxID0gaW52YWxpZEtleXNb
aV07CisgICAgICAgIGtleTIgPSBpbnZhbGlkS2V5c1tpICsgMV07CisgICAgICAgIGV2YWxBbmRF
eHBlY3RFeGNlcHRpb24oImluZGV4ZWREQi5jbXAoIiArIGtleTEgKyAiLCAiICsga2V5MiArICIp
IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisgICAgICAgIGV2YWxBbmRFeHBl
Y3RFeGNlcHRpb24oImluZGV4ZWREQi5jbXAoIiArIGtleTIgKyAiLCAiICsga2V5MSArICIpIiwg
IklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisgICAgICAgIGV2YWxBbmRFeHBlY3RF
eGNlcHRpb24oImluZGV4ZWREQi5jbXAoIiArIGtleTEgKyAiLCAndmFsaWQnKSIsICJJREJEYXRh
YmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJpbmRleGVkREIuY21wKCd2YWxpZCcsICIgKyBrZXkxICsgIikiLCAiSURCRGF0YWJhc2VFeGNl
cHRpb24uREFUQV9FUlIiKTsKKyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXhl
ZERCLmNtcCgiICsga2V5MiArICIsICd2YWxpZCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRB
VEFfRVJSIik7CisgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4ZWREQi5jbXAo
J3ZhbGlkJywgIiArIGtleTIgKyAiKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIp
OworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdElkZW50aWNhbEtleXMoKQoreworICAgIGRlYnVn
KCIiKTsKKyAgICBkZWJ1ZygiY29tcGFyZSBpZGVudGljYWwga2V5cyIpOworCisgICAgc2hvdWxk
QmVUcnVlKCJpbmRleGVkREIuY21wKDAsIC0wKSA9PT0gMCIpOworfQorCit0ZXN0KCk7ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL2ZhY3RvcnktZGVsZXRlZGF0YWJhc2UtaW50ZXJhY3Rpb25zLmpz
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ZhY3RvcnktZGVsZXRl
ZGF0YWJhc2UtaW50ZXJhY3Rpb25zLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU5ZDliNzk0M2RlYTVmM2U2Njli
NTRlODJmMzU3ZDk2YjI4NGZiMGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZmFjdG9yeS1kZWxldGVkYXRhYmFzZS1pbnRlcmFjdGlv
bnMuanMKQEAgLTAsMCArMSwxODYgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBp
bXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycp
OworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVz
dCB0aGUgZGVsZXRlRGF0YWJhc2UgY2FsbCBhbmQgaXRzIGludGVyYWN0aW9uIHdpdGggb3Blbi9z
ZXRWZXJzaW9uIik7CisKK2Z1bmN0aW9uIENvbm5lY3Rpb24oaWQpIHsKKyAgICBpZCA9IFN0cmlu
ZyhpZCk7CisgICAgdmFyIHRoYXQgPSB0aGlzOworICAgIHRoaXMub3BlbiA9IGZ1bmN0aW9uKG9w
dHMpIHsKKyAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLm9w
ZW4nIikpOworICAgICAgICB2YXIgcmVxID0gaW5kZXhlZERCLm9wZW4oc2VsZi5kYm5hbWUpOwor
ICAgICAgICByZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICBy
ZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgICAgIHRoYXQuaGFuZGxlID0g
ZS50YXJnZXQucmVzdWx0OworICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2co
IiciICsgaWQgKyAiLm9wZW4ub25zdWNjZXNzJyIpKTsKKyAgICAgICAgICAgIHRoYXQuaGFuZGxl
Lm9udmVyc2lvbmNoYW5nZSA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgICAgICBzZWxmLnN0
ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIub252ZXJzaW9uY2hhbmdlJyIpKTsKKyAg
ICAgICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9udmVyc2lvbikgeyBvcHRzLm9udmVyc2lv
bi5jYWxsKHRoYXQpOyB9CisgICAgICAgICAgICB9OworICAgICAgICAgICAgaWYgKG9wdHMgJiYg
b3B0cy5vbnN1Y2Nlc3MpIHsgb3B0cy5vbnN1Y2Nlc3MuY2FsbCh0aGF0KTsgfQorICAgICAgICB9
OworICAgIH07CisKKyAgICB0aGlzLmNsb3NlID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHNlbGYu
c3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5jbG9zZSciKSk7CisgICAgICAgIHRo
aXMuaGFuZGxlLmNsb3NlKCk7CisgICAgfTsKKworICAgIHRoaXMuc2V0VmVyc2lvbiA9IGZ1bmN0
aW9uKG9wdHMpIHsKKyAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQg
KyAiLnNldFZlcnNpb24nIikpOworICAgICAgICB2YXIgcmVxID0gdGhpcy5oYW5kbGUuc2V0VmVy
c2lvbihTdHJpbmcoc2VsZi52ZXIrKykpOworICAgICAgICByZXEub25hYm9ydCA9IGZ1bmN0aW9u
IChlKSB7CisgICAgICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCAr
ICIuc2V0VmVyc2lvbi5vbmFib3J0JyIpKTsKKyAgICAgICAgICAgIGlmIChvcHRzICYmIG9wdHMu
b25hYm9ydCkgeyBvcHRzLm9uYWJvcnQuY2FsbCh0aGF0KTsgfQorICAgICAgICB9OworICAgICAg
ICByZXEub25ibG9ja2VkID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgICAgIHNlbGYuc3RlcHMu
cHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5zZXRWZXJzaW9uLm9uYmxvY2tlZCciKSk7Cisg
ICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9uYmxvY2tlZCkgeyBvcHRzLm9uYmxvY2tlZC5j
YWxsKHRoYXQpOyB9CisgICAgICAgIH07CisgICAgICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlv
biAoZSkgeworICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQg
KyAiLnNldFZlcnNpb24ub25zdWNjZXNzJyIpKTsKKyAgICAgICAgICAgIGlmICh0aGF0LmhhbmRs
ZS5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCJ0ZXN0LXN0b3JlIiArIHNlbGYudmVyKSkgewor
ICAgICAgICAgICAgICAgIHRoYXQuaGFuZGxlLmRlbGV0ZU9iamVjdFN0b3JlKCJ0ZXN0LXN0b3Jl
IiArIHNlbGYudmVyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhciBzdG9yZSA9IHRo
YXQuaGFuZGxlLmNyZWF0ZU9iamVjdFN0b3JlKCJ0ZXN0LXN0b3JlIiArIHNlbGYudmVyKTsKKyAg
ICAgICAgICAgIHZhciBjb3VudCA9IDA7CisgICAgICAgICAgICBkb19hc3luY19wdXRzKCk7IC8v
IEtlZXAgdGhpcyB0cmFuc2FjdGlvbiBydW5uaW5nIGZvciBhIHdoaWxlCisgICAgICAgICAgICBm
dW5jdGlvbiBkb19hc3luY19wdXRzKCkgeworICAgICAgICAgICAgICAgIHZhciByZXEgPSBzdG9y
ZS5wdXQoY291bnQsIGNvdW50KTsKKyAgICAgICAgICAgICAgICByZXEub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICAgICAgICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbiAoZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoKytjb3VudCA8IDEwKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBkb19hc3luY19wdXRzKCk7CisgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFu
ZExvZygiJyIgKyBpZCArICIuc2V0VmVyc2lvbi50cmFuc2FjdGlvbi1jb21wbGV0ZSciKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9uc3VjY2VzcykgeyBvcHRz
Lm9uc3VjY2Vzcy5jYWxsKHRoYXQpOyB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB9OworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgICAgICByZXEub25lcnJv
ciA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExv
ZygiJyIgKyBpZCArICIuc2V0VmVyc2lvbi5vbmVycm9yJyIpKTsKKyAgICAgICAgICAgIGlmIChv
cHRzICYmIG9wdHMub25lcnJvcikgeyBvcHRzLm9uZXJyb3IuY2FsbCh0aGF0KTsgfQorICAgICAg
ICB9OworICAgIH07Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZURhdGFiYXNlKGlkLCBuYW1lLCBvcHRz
KSB7CisgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIidkZWxldGVEYXRhYmFzZSgiICsg
aWQgKyAiKSciKSk7CisgICAgdmFyIHJlcSA9IGluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShuYW1l
KTsKKyAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgc2VsZi5zdGVw
cy5wdXNoKGV2YWxBbmRMb2coIidkZWxldGVEYXRhYmFzZSgiICsgaWQgKyAiKS5vbnN1Y2Nlc3Mn
IikpOworICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9uc3VjY2VzcykgeyBvcHRzLm9uc3VjY2Vz
cy5jYWxsKG51bGwpOyB9CisgICAgfTsKKyAgICByZXEub25lcnJvciA9IGZ1bmN0aW9uIChlKSB7
CisgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInZGVsZXRlRGF0YWJhc2UoIiAr
IGlkICsgIikub25lcnJvciciKSk7CisgICAgICAgIGlmIChvcHRzICYmIG9wdHMub25lcnJvcikg
eyBvcHRzLm9uZXJyb3IuY2FsbChudWxsKTsgfQorICAgIH07CisgICAgcmVxLm9uYmxvY2tlZCA9
IGZ1bmN0aW9uIChlKSB7CisgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInZGVs
ZXRlRGF0YWJhc2UoIiArIGlkICsgIikub25ibG9ja2VkJyIpKTsKKyAgICAgICAgaWYgKG9wdHMg
JiYgb3B0cy5vbmJsb2NrZWQpIHsgb3B0cy5vbmJsb2NrZWQuY2FsbChudWxsKTsgfQorICAgIH07
Cit9CisKKy8vIHJ1biBhIHNlcmllcyBvZiBzdGVwcyB0aGF0IHRha2UgYSBjb250aW51YXRpb24g
ZnVuY3Rpb24KK2Z1bmN0aW9uIHJ1blN0ZXBzKGNvbW1hbmRzKSB7CisgICAgaWYgKGNvbW1hbmRz
Lmxlbmd0aCkgeworICAgICAgICB2YXIgY29tbWFuZCA9IGNvbW1hbmRzLnNoaWZ0KCk7CisgICAg
ICAgIGNvbW1hbmQoZnVuY3Rpb24oKSB7IHJ1blN0ZXBzKGNvbW1hbmRzKTsgfSk7CisgICAgfQor
fQorCitmdW5jdGlvbiB0ZXN0KCkgeworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAg
dGVzdDEoKTsKK30KKworZnVuY3Rpb24gdGVzdDEoKSB7CisgICAgZGVidWcoIiIpOworICAgIGRl
YnVnKCJURVNUOiBkZWxldGVEYXRhYmFzZSBibG9ja2VkIG9uIG9wZW4gaGFuZGxlcyIpOworICAg
IGV2YWxBbmRMb2coInNlbGYuZGJuYW1lID0gJ3Rlc3QxJzsgc2VsZi52ZXIgPSAxOyBzZWxmLnN0
ZXBzID0gW10iKTsKKyAgICB2YXIgaCA9IG5ldyBDb25uZWN0aW9uKCJoIik7CisgICAgcnVuU3Rl
cHMoW2Z1bmN0aW9uKGRvTmV4dCkgeyBoLm9wZW4oe29uc3VjY2VzczogZG9OZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBvbnZlcnNpb246IGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoIiAgICBoIGNsb3NpbmcsIGJ1dCBu
b3QgaW1tZWRpYXRlbHkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IGguY2xvc2UoKTsgfSwgMCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH19KTsgfSwKKyAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGRlbGV0
ZURhdGFiYXNlKCIiLCBzZWxmLmRibmFtZSwgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
b25zdWNjZXNzOiBmaW5pc2hUZXN0fSk7IH0sCisgICAgICAgIF0pOworICAgIGZ1bmN0aW9uIGZp
bmlzaFRlc3QoKSB7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic2VsZi5zdGVwcy50
b1N0cmluZygpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiaC5vcGVuIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaC5vcGVuLm9uc3VjY2VzcyIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImRlbGV0ZURhdGFiYXNlKCkiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJoLm9udmVyc2lvbmNoYW5nZSIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImRlbGV0ZURhdGFiYXNlKCkub25ibG9ja2VkIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiaC5jbG9zZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImRlbGV0ZURhdGFiYXNlKCkub25zdWNjZXNzIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0udG9TdHJpbmcoKSk7CisgICAgICAgIHRlc3QyKCk7CisgICAgfQorfQorCitm
dW5jdGlvbiB0ZXN0MigpIHsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRFU1Q6IGRlbGV0
ZURhdGFiYXNlIG5vdCBibG9ja2VkIHdoZW4gaGFuZGxlcyBjbG9zZSBpbW1lZGlhdGVseSIpOwor
ICAgIGV2YWxBbmRMb2coInNlbGYuZGJuYW1lID0gJ3Rlc3QyJzsgc2VsZi52ZXIgPSAxOyBzZWxm
LnN0ZXBzID0gW10iKTsKKyAgICB2YXIgaCA9IG5ldyBDb25uZWN0aW9uKCJoIik7CisgICAgcnVu
U3RlcHMoW2Z1bmN0aW9uKGRvTmV4dCkgeyBoLm9wZW4oe29uc3VjY2VzczogZG9OZXh0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb252ZXJzaW9uOiBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1
ZygiICAgIGggY2xvc2luZyBpbW1lZGlhdGVseSIpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGguY2xvc2UoKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH19KTsgfSwKKyAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGRl
bGV0ZURhdGFiYXNlKCIiLCBzZWxmLmRibmFtZSwgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb25zdWNjZXNzOiBmaW5pc2hUZXN0fSk7IH0sCisgICAgICAgIF0pOworICAgIGZ1bmN0aW9u
IGZpbmlzaFRlc3QoKSB7CisgICAgICAgIGRlYnVnKCJOT1RFOiBXaWxsIEZBSUwgd2l0aCBleHRy
YSBib2d1cyBkZWxldGVEYXRhYmFzZSgpLm9uYmxvY2tlZCBzdGVwOyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzExMzAiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJzZWxmLnN0ZXBzLnRvU3RyaW5nKCkiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgWyJoLm9wZW4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoLm9wZW4u
b25zdWNjZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVsZXRlRGF0YWJh
c2UoKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgub252ZXJzaW9uY2hhbmdl
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaC5jbG9zZSIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImRlbGV0ZURhdGFiYXNlKCkub25zdWNjZXNzIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF0udG9TdHJpbmcoKSk7CisgICAgICAgIHRlc3QzKCk7
CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0MygpIHsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVi
dWcoIlRFU1Q6IGRlbGV0ZURhdGFiYXNlIGlzIGRlbGF5ZWQgaWYgYSBWRVJTSU9OX0NIQU5HRSB0
cmFuc2FjdGlvbiBpcyBydW5uaW5nIik7CisgICAgZXZhbEFuZExvZygic2VsZi5kYm5hbWUgPSAn
dGVzdDMnOyBzZWxmLnZlciA9IDE7IHNlbGYuc3RlcHMgPSBbXSIpOworICAgIHZhciBoID0gbmV3
IENvbm5lY3Rpb24oImgiKTsKKyAgICBydW5TdGVwcyhbZnVuY3Rpb24oZG9OZXh0KSB7IGgub3Bl
bih7b25zdWNjZXNzOiBkb05leHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9u
dmVyc2lvbjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkZWJ1ZygiICAgIGggY2xvc2luZywgYnV0IG5vdCBpbW1lZGlhdGVseSIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgaC5jbG9z
ZSgpOyB9LCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0pOyB9LAorICAg
ICAgICAgICAgICBmdW5jdGlvbihkb05leHQpIHsgaC5zZXRWZXJzaW9uKCk7IGRvTmV4dCgpOyB9
LAorICAgICAgICAgICAgICBmdW5jdGlvbihkb05leHQpIHsgZGVsZXRlRGF0YWJhc2UoIiIsIHNl
bGYuZGJuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7b25zdWNjZXNzOiBm
aW5pc2hUZXN0fSk7IH0sCisgICAgICAgICAgICAgIF0pOworCisgICAgZnVuY3Rpb24gZmluaXNo
VGVzdCgpIHsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzZWxmLnN0ZXBzLnRvU3Ry
aW5nKCkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJoLm9wZW4iLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJoLm9wZW4ub25zdWNjZXNzIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiaC5zZXRWZXJzaW9uIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiZGVsZXRlRGF0YWJhc2UoKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImguc2V0VmVyc2lvbi5vbnN1Y2Nlc3MiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJoLnNldFZlcnNpb24udHJhbnNhY3Rpb24tY29tcGxldGUiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJoLm9udmVyc2lvbmNoYW5nZSIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImRlbGV0ZURhdGFiYXNlKCkub25ibG9ja2VkIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiaC5jbG9zZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImRlbGV0ZURhdGFiYXNlKCkub25zdWNjZXNzIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0udG9TdHJpbmcoKSk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0K
K30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9mYWN0b3J5LWRlbGV0ZWRhdGFi
YXNlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ZhY3Rvcnkt
ZGVsZXRlZGF0YWJhc2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDZmYTU2MjI5YTc0MjY2NmVhOWZiMDUxNmE4
YWNiNzI0MTE1MGY5OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9mYWN0b3J5LWRlbGV0ZWRhdGFiYXNlLmpzCkBAIC0wLDAgKzEsOTEg
QEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMo
J3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyB3ZWJraXRJ
bmRleGVkREIuZGVsZXRlRGF0YWJhc2UoKS4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAg
cmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhl
ZERCLm9wZW4oJ2RhdGFiYXNlLXRvLWRlbGV0ZScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBzdGFydFNldFZlcnNpb247CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0U2V0VmVyc2lvbigpCit7CisgICAgZGIgPSBl
dmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVsZXRlRXhpc3RpbmcoKQoreworICAg
IHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsK
KyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisKKyAgICBzdG9yZSA9IGV2YWxB
bmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7
CisKKyAgICBzZWxmLmluZGV4ID0gZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4
TmFtZScsICcnKSIpOworICAgIHNob3VsZEJlVHJ1ZSgic3RvcmUuaW5kZXhOYW1lcy5jb250YWlu
cygnaW5kZXhOYW1lJykiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQo
J3ZhbHVlJywgJ2tleScpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IGdldFZhbHVlOworfQorCitmdW5jdGlv
biBnZXRWYWx1ZSgpCit7CisgICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJkYi50cmFuc2Fj
dGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICB0cmFu
c2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgdmFyIHN0b3Jl
ID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1l
JykiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5nZXQoJ2tleScpIik7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRJbmRleDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gYWRkSW5kZXgoKQoreworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ2YWx1ZSIpOwor
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJyki
KTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZURhdGFiYXNlOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxldGVE
YXRhYmFzZSgpCit7CisgICAgZGIub252ZXJzaW9uY2hhbmdlID0gZnVuY3Rpb24oKSB7IGRiLmNs
b3NlKCk7IH0KKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5k
ZWxldGVEYXRhYmFzZSgnZGF0YWJhc2UtdG8tZGVsZXRlJykiKTsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IHJlb3BlbkRhdGFiYXNlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiByZW9wZW5EYXRhYmFzZSgpCit7CisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdkYXRhYmFzZS10by1kZWxldGUnKSIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc3RhcnRTZXRWZXJzaW9uQWdhaW47CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHN0
YXJ0U2V0VmVyc2lvbkFnYWluKCkKK3sKKyAgICByZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJz
aW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB2ZXJpZnlOb3RG
b3VuZDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30K
KworZnVuY3Rpb24gdmVyaWZ5Tm90Rm91bmQoKQoreworICAgIHNob3VsZEJlKCJkYi5vYmplY3RT
dG9yZU5hbWVzLmxlbmd0aCIsICIwIik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVz
dCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbmRleC1jb3VudC5qcyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbmRleC1jb3VudC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
YjBlNGVmMDk4NDUwMTlmN2UxZmRmYWQ3ZDQ2YzZhYmFiYjQ2YTdmCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4LWNvdW50Lmpz
CkBAIC0wLDAgKzEsMTU0IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0
U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAg
ICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5k
ZXhlZERCJ3MgSURCSW5kZXguY291bnQoKS4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAg
cmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhl
ZERCLm9wZW4oJ2luZGV4LWNvdW50JykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewor
ICAgICAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAg
ICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIp
OworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwcmVwYXJlRGF0YWJhc2U7CisgICAgfTsKK30KKwor
ZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWco
InByZXBhcmluZyBkYXRhYmFzZSIpOworICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFu
cyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBu
dWxsIik7CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgc3RvcmUgPSBl
dmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxs
KSIpOworCisgICAgc2VsZi5pbmRleCA9IGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdp
bmRleE5hbWUnLCAnJykiKTsKKyAgICBzaG91bGRCZVRydWUoInN0b3JlLmluZGV4TmFtZXMuY29u
dGFpbnMoJ2luZGV4TmFtZScpIik7CisKKyAgICBkZWJ1ZygiYWRkaW5nIDAgLi4uIDk5Iik7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICByZXF1ZXN0ID0gc3Rv
cmUuYWRkKGksIGkpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKKyAgICB9CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHZlcmlmeUNvdW50OworfQor
CitmdW5jdGlvbiB2ZXJpZnlDb3VudCgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ2
ZXJpZnlpbmcgY291bnQgd2l0aG91dCByYW5nZSIpOworICAgIHRyYW5zID0gZXZhbEFuZExvZygi
dHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9P
TkxZKSIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT0gbnVsbCIpOworICAgIHRyYW5zLm9u
YWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0g
dmVyaWZ5Q291bnRXaXRoUmFuZ2U7CisKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0g
dHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgc2hvdWxkQmVUcnVlKCJzdG9y
ZSAhPSBudWxsIik7CisgICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmluZGV4
KCdpbmRleE5hbWUnKSIpOworICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXggIT0gbnVsbCIpOworCisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleC5jb3VudCgpIik7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgIHNob3VsZEJlVHJ1ZSgidHlwZW9mIHJl
cXVlc3QucmVzdWx0ID09ICdudW1iZXInIik7CisgICAgICAgICBzaG91bGRCZSgicmVxdWVzdC5y
ZXN1bHQiLCAiMTAwIik7CisgICAgICAgICAvLyBsZXQgdGhlIHRyYW5zYWN0aW9uIGNvbXBsZXRl
CisgICAgfTsKK30KKworZnVuY3Rpb24gdmVyaWZ5Q291bnRXaXRoUmFuZ2UoKQoreworICAgIGRl
YnVnKCIiKTsKKyAgICBkZWJ1ZygidmVyaWZ5aW5nIGNvdW50IHdpdGggcmFuZ2UiKTsKKyAgICB0
cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlTmFtZScsIElE
QlRyYW5zYWN0aW9uLlJFQURfT05MWSkiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9IG51
bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAg
dHJhbnMub25jb21wbGV0ZSA9IHZlcmlmeUNvdW50V2l0aEtleTsKKworICAgIHN0b3JlID0gZXZh
bEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICBz
aG91bGRCZVRydWUoInN0b3JlICE9IG51bGwiKTsKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coImlu
ZGV4ID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpLmluZGV4KCdpbmRleE5hbWUnKSIp
OworICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXggIT0gbnVsbCIpOworCisgICAgdmFyIHRlc3RzID0g
WworICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogOTksIHVwcGVy
T3BlbjogZmFsc2UsIGV4cGVjdGVkOiAxMDAgfSwKKyAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJP
cGVuOiB0cnVlLCB1cHBlcjogOTksIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiA5OSB9LAor
ICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogOTksIHVwcGVyT3Bl
bjogdHJ1ZSwgZXhwZWN0ZWQ6IDk5IH0sCisgICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3Blbjog
dHJ1ZSwgdXBwZXI6IDk5LCB1cHBlck9wZW46IHRydWUsIGV4cGVjdGVkOiA5OCB9LAorICAgICAg
ICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogMTAwLCB1cHBlck9wZW46IGZh
bHNlLCBleHBlY3RlZDogMTAwIH0sCisgICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogZmFs
c2UsIHVwcGVyOiAxMDAsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiAxMDAgfSwKKyAgICAg
ICAgeyBsb3dlcjogMTAsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiAxMDAsIHVwcGVyT3Blbjog
ZmFsc2UsIGV4cGVjdGVkOiA5MCB9LAorICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IGZh
bHNlLCB1cHBlcjogMCwgdXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDEgfSwKKyAgICAgICAg
eyBsb3dlcjogNTAwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogNTAwLCB1cHBlck9wZW46IGZh
bHNlLCBleHBlY3RlZDogMCB9CisgICAgXTsKKworICAgIGZ1bmN0aW9uIG5leHRUZXN0KCkgewor
ICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgIGV2YWxBbmRMb2coInRlc3QgPSAiICsgSlNPTi5z
dHJpbmdpZnkodGVzdHMuc2hpZnQoKSkpOworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IGluZGV4LmNvdW50KElEQktleVJhbmdlLmJvdW5kKHRlc3QubG93ZXIsIHRlc3Qu
dXBwZXIsIHRlc3QubG93ZXJPcGVuLCB0ZXN0LnVwcGVyT3BlbikpIik7CisgICAgICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgidHlwZW9m
IHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXInIik7CisgICAgICAgICAgICAgc2hvdWxkQmUoInJl
cXVlc3QucmVzdWx0IiwgU3RyaW5nKHRlc3QuZXhwZWN0ZWQpKTsKKworICAgICAgICAgICAgIGlm
ICh0ZXN0cy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgbmV4dFRlc3QoKTsKKyAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIGxldCB0aGUgdHJhbnNhY3Rpb24gY29t
cGxldGUKKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBuZXh0VGVzdCgpOworfQorCitmdW5jdGlv
biB2ZXJpZnlDb3VudFdpdGhLZXkoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidmVy
aWZ5aW5nIGNvdW50IHdpdGgga2V5Iik7CisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9
IGRiLnRyYW5zYWN0aW9uKCdzdG9yZU5hbWUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7
CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9
IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSBmaW5pc2hK
U1Rlc3Q7CisKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3Rv
cmUoJ3N0b3JlTmFtZScpIik7CisgICAgc2hvdWxkQmVUcnVlKCJzdG9yZSAhPSBudWxsIik7Cisg
ICAgc3RvcmUgPSBldmFsQW5kTG9nKCJpbmRleCA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5h
bWUnKS5pbmRleCgnaW5kZXhOYW1lJykiKTsKKyAgICBzaG91bGRCZVRydWUoImluZGV4ICE9IG51
bGwiKTsKKworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4LmNvdW50KE5hTikiLCAi
SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJpbmRleC5jb3VudCh7fSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsK
KyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJpbmRleC5jb3VudCgvcmVnZXgvKSIsICJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworCisgICAgdmFyIHRlc3RzID0gWworICAgICAg
ICB7IGtleTogMCwgZXhwZWN0ZWQ6IDEgfSwKKyAgICAgICAgeyBrZXk6IDEwMCwgZXhwZWN0ZWQ6
IDAgfSwKKyAgICAgICAgeyBrZXk6IG51bGwsIGV4cGVjdGVkOiAxMDAgfQorICAgIF07CisKKyAg
ICBmdW5jdGlvbiBuZXh0VGVzdCgpIHsKKyAgICAgICAgZGVidWcoIiIpOworICAgICAgICBldmFs
QW5kTG9nKCJ0ZXN0ID0gIiArIEpTT04uc3RyaW5naWZ5KHRlc3RzLnNoaWZ0KCkpKTsKKyAgICAg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleC5jb3VudCh0ZXN0LmtleSki
KTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cisg
ICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgc2hv
dWxkQmVUcnVlKCJ0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251bWJlciciKTsKKyAgICAgICAg
ICAgICBzaG91bGRCZSgicmVxdWVzdC5yZXN1bHQiLCBTdHJpbmcodGVzdC5leHBlY3RlZCkpOwor
CisgICAgICAgICAgICAgaWYgKHRlc3RzLmxlbmd0aCkgeworICAgICAgICAgICAgICAgICBuZXh0
VGVzdCgpOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAvLyBvdGhlcndpc2UgbGV0IHRo
ZSB0cmFuc2FjdGlvbiBjb21wbGV0ZQorICAgICAgICB9OworICAgIH0KKworICAgIG5leHRUZXN0
KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW5kZXgtY3Vyc29yLmpz
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4LWN1cnNvci5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jOTg4ZWJjMThjNDZlODg4MWM0ZjE1MDMzOGY3MjdiZjQ4NzUyNGY3Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L2luZGV4LWN1cnNvci5qcwpAQCAtMCwwICsxLDI0OSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0
cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2Ny
aXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIHdlYmtpdElEQkluZGV4Lm9wZW5DdXJzb3IgKyB0aGUg
Y3Vyc29yIGl0IHByb2R1Y2VzIGluIGRlcHRoLiIpOworCisvLyBJbiBvcmRlciBvZiBob3cgaXQg
c2hvdWxkIGJlIHNvcnRlZCBieSBJbmRleGVkREIuCitzZWxmLnRlc3REYXRhID0gWworICAgIDEs
CisgICAgMSwKKyAgICAzLjE0MTU5LAorICAgIDMuMTQxNTksCisgICAgMTAsCisgICAgLy8gRklY
TUU6IERhdGVzLgorICAgICJBIGJpZyBzdHJpbmciLAorICAgICJ0aGUgQklHRVNUIHN0cmluZyIs
CisgICAgInRoZSBCSUdFU1Qgc3RyaW5nIgorXTsKKworZnVuY3Rpb24gb3BlbkRhdGFiYXNlKCkK
K3sKKyAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignaW5kZXgtY3Vyc29y
JykiKTsKKyAgICByZXN1bHQub25zdWNjZXNzID0gc2V0VmVyc2lvbjsKKyAgICByZXN1bHQub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9u
KCkKK3sKKyAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7CisKKyAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lv
bicpIik7CisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4aXN0aW5nOworICAgIHJlc3Vs
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0
ZUV4aXN0aW5nKCkKK3sKKyAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwor
ICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKworICAgIGRlbGV0
ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBzZWxmLm9iamVjdFN0b3JlID0gZXZhbEFuZExv
ZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3NvbWVPYmplY3RTdG9yZScpIik7CisgICAgc2VsZi5p
bmRleE9iamVjdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdzb21lSW5k
ZXgnLCAneCcpIik7CisgICAgc2VsZi5uZXh0VG9BZGQgPSAwOworICAgIGFkZERhdGEoKTsKK30K
KworZnVuY3Rpb24gYWRkRGF0YSgpCit7CisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygib2JqZWN0
U3RvcmUuYWRkKHsneCc6IHRlc3REYXRhW25leHRUb0FkZF19LCBuZXh0VG9BZGQpIik7CisgICAg
cmVzdWx0Lm9uc3VjY2VzcyA9ICsrc2VsZi5uZXh0VG9BZGQgPCB0ZXN0RGF0YS5sZW5ndGggPyBh
ZGREYXRhIDogc2NoZWR1bGVUZXN0czsKKyAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzY2hlZHVsZVRlc3RzKCkKK3sKKyAgICBkZWJ1
ZygiU2NoZWR1bGluZyB0ZXN0cy4uLiIpOworICAgIHNlbGYuc2NoZWR1bGVkVGVzdHMgPSBbXTsK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRlc3REYXRhLmxlbmd0aDsgKytpKSB7CisgICAgICAg
IC8qIGxlZnQgYm91bmQsIGlzIG9wZW4sIHJpZ2h0IGJvdW5kLCBpcyBvcGVuLCBhc2NlbmRpbmcg
Ki8KKyAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwgbnVsbCwgbnVsbCwg
dHJ1ZV0pOworICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCBmYWxzZSwgbnVsbCwg
bnVsbCwgdHJ1ZV0pOworICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtudWxsLCBudWxs
LCBpLCB0cnVlLCB0cnVlXSk7CisgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW251bGws
IG51bGwsIGksIGZhbHNlLCB0cnVlXSk7CisgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQo
W2ksIHRydWUsIG51bGwsIG51bGwsIGZhbHNlXSk7CisgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVu
c2hpZnQoW2ksIGZhbHNlLCBudWxsLCBudWxsLCBmYWxzZV0pOworICAgICAgICBzY2hlZHVsZWRU
ZXN0cy51bnNoaWZ0KFtudWxsLCBudWxsLCBpLCB0cnVlLCBmYWxzZV0pOworICAgICAgICBzY2hl
ZHVsZWRUZXN0cy51bnNoaWZ0KFtudWxsLCBudWxsLCBpLCBmYWxzZSwgZmFsc2VdKTsKKyAgICAg
ICAgZm9yICh2YXIgaiA9IDY7IGogPCB0ZXN0RGF0YS5sZW5ndGg7ICsraikgeworICAgICAgICAg
ICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwgaiwgdHJ1ZSwgdHJ1ZV0pOworICAg
ICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwgaiwgZmFsc2UsIHRydWVd
KTsKKyAgICAgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBqLCB0cnVl
LCB0cnVlXSk7CisgICAgICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCBmYWxzZSwg
aiwgZmFsc2UsIHRydWVdKTsKKyAgICAgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ks
IHRydWUsIGosIHRydWUsIGZhbHNlXSk7CisgICAgICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNo
aWZ0KFtpLCB0cnVlLCBqLCBmYWxzZSwgZmFsc2VdKTsKKyAgICAgICAgICAgIHNjaGVkdWxlZFRl
c3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBqLCB0cnVlLCBmYWxzZV0pOworICAgICAgICAgICAgc2No
ZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgZmFsc2UsIGosIGZhbHNlLCBmYWxzZV0pOworICAgICAg
ICB9CisgICAgfQorCisgICAgZGVidWcoIlJ1bm5pbmcgdGVzdHMuLi4iKTsKKyAgICBydW5OZXh0
VGVzdCgpOworfQorCitmdW5jdGlvbiBydW5OZXh0VGVzdCgpCit7CisgICAgaWYgKCFzY2hlZHVs
ZWRUZXN0cy5sZW5ndGgpIHsKKyAgICAgICAgdGVzdE51bGxLZXlSYW5nZSgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgdmFyIHRlc3QgPSBzY2hlZHVsZWRUZXN0cy5wb3AoKTsKKyAg
ICBzZWxmLmxvd2VyID0gdGVzdFswXTsKKyAgICBzZWxmLmxvd2VySXNPcGVuID0gdGVzdFsxXTsK
KyAgICBzZWxmLnVwcGVyID0gdGVzdFsyXTsKKyAgICBzZWxmLnVwcGVySXNPcGVuID0gdGVzdFsz
XTsKKyAgICBzZWxmLmFzY2VuZGluZyA9IHRlc3RbNF07CisKKyAgICBzdHIgPSAiTmV4dCB0ZXN0
OiAiOworICAgIGlmIChsb3dlciAhPT0gbnVsbCkgeworICAgICAgICBzdHIgKz0gImxvd2VyICI7
CisgICAgICAgIGlmIChsb3dlcklzT3BlbikKKyAgICAgICAgICAgIHN0ciArPSAib3BlbiAiOwor
ICAgICAgICBzdHIgKz0gImJvdW5kIGlzICIgKyBsb3dlciArICI7ICI7CisgICAgfQorICAgIGlm
ICh1cHBlciAhPT0gbnVsbCkgeworICAgICAgICBzdHIgKz0gInVwcGVyICI7CisgICAgICAgIGlm
ICh1cHBlcklzT3BlbikKKyAgICAgICAgICAgIHN0ciArPSAib3BlbiAiOworICAgICAgICBzdHIg
Kz0gImJvdW5kIGlzICIgKyB1cHBlciArICI7ICI7CisgICAgfQorICAgIGlmIChhc2NlbmRpbmcp
CisgICAgICAgIHN0ciArPSAic29ydGVkIGFzY2VuZGluZy4iOworICAgIGVsc2UKKyAgICAgICAg
c3RyICs9ICJzb3J0ZWQgZGVzY2VuZGluZy4iOworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVn
KHN0cik7CisKKyAgICAvLyBXb3JrIGFyb3VuZCBmb3IgZHVwbGljYXRlIHZhbHVlcy4KKyAgICBp
ZiAodXBwZXIgIT09IG51bGwpIHsKKyAgICAgICAgaWYgKHVwcGVySXNPcGVuKSB7CisgICAgICAg
ICAgICB3aGlsZSAodXBwZXIgPiAwICYmIHRlc3REYXRhW3VwcGVyXSA9PT0gdGVzdERhdGFbdXBw
ZXIgLSAxXSkKKyAgICAgICAgICAgICAgICAtLXNlbGYudXBwZXI7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICB3aGlsZSAodXBwZXIgPCB0ZXN0RGF0YS5sZW5ndGggLSAxICYmIHRlc3RE
YXRhW3VwcGVyXSA9PT0gdGVzdERhdGFbdXBwZXIgKyAxXSkKKyAgICAgICAgICAgICAgICArK3Nl
bGYudXBwZXI7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGxvd2VyICE9PSBudWxsKSB7Cisg
ICAgICAgIGlmIChsb3dlcklzT3BlbikgeworICAgICAgICAgICAgd2hpbGUgKGxvd2VyIDwgdGVz
dERhdGEubGVuZ3RoIC0gMSAmJiB0ZXN0RGF0YVtsb3dlcl0gPT09IHRlc3REYXRhW2xvd2VyICsg
MV0pCisgICAgICAgICAgICAgICAgKytzZWxmLmxvd2VyOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgd2hpbGUgKGxvd2VyID4gMCAmJiB0ZXN0RGF0YVtsb3dlcl0gPT09IHRlc3REYXRh
W2xvd2VyIC0gMV0pCisgICAgICAgICAgICAgICAgLS1zZWxmLmxvd2VyOworICAgICAgICB9Cisg
ICAgfQorCisgICAgaWYgKGFzY2VuZGluZykgeworICAgICAgICBpZiAobG93ZXIgIT09IG51bGwp
IHsKKyAgICAgICAgICAgIGlmICghbG93ZXJJc09wZW4pCisgICAgICAgICAgICAgICAgc2VsZi5l
eHBlY3RlZEluZGV4ID0gbG93ZXI7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
c2VsZi5leHBlY3RlZEluZGV4ID0gbG93ZXIgKyAxOworICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IDA7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHVw
cGVyICE9PSBudWxsKSB7CisgICAgICAgICAgICBpZiAoIXVwcGVySXNPcGVuKQorICAgICAgICAg
ICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IHVwcGVyOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IHVwcGVyIC0gMTsKKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSB0ZXN0RGF0YS5sZW5ndGggLSAx
OworICAgIH0KKyAgICB0ZXN0V2l0aGluQm91bmRzKCk7CisKKyAgICBpZiAodGVzdERhdGFbbG93
ZXJdID09PSB0ZXN0RGF0YVt1cHBlcl0gJiYgKGxvd2VySXNPcGVuIHx8IHVwcGVySXNPcGVuKSkg
eworICAgICAgICBkZWJ1ZygiU2tpcHBpbmcgaWxsZWdhbCBrZXkgcmFuZ2UuIik7CisgICAgICAg
IHJ1bk5leHRUZXN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2YXIga2V5UmFu
Z2U7CisgICAgaWYgKGxvd2VyICE9PSBudWxsICYmIHVwcGVyICE9PSBudWxsKQorICAgICAgICBr
ZXlSYW5nZSA9IElEQktleVJhbmdlLmJvdW5kKHRlc3REYXRhW2xvd2VyXSwgdGVzdERhdGFbdXBw
ZXJdLCBsb3dlcklzT3BlbiwgdXBwZXJJc09wZW4pOworICAgIGVsc2UgaWYgKGxvd2VyICE9PSBu
dWxsKQorICAgICAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQodGVzdERhdGFb
bG93ZXJdLCBsb3dlcklzT3Blbik7CisgICAgZWxzZQorICAgICAgICBrZXlSYW5nZSA9IElEQktl
eVJhbmdlLnVwcGVyQm91bmQodGVzdERhdGFbdXBwZXJdLCB1cHBlcklzT3Blbik7CisKKyAgICB2
YXIgcmVxdWVzdCA9IGluZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3Ioa2V5UmFuZ2UsIGFzY2VuZGlu
ZyA/IElEQkN1cnNvci5ORVhUIDogSURCQ3Vyc29yLlBSRVYpOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gY3Vyc29ySXRlcmF0aW9uOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiB0ZXN0V2l0aGluQm91bmRzKCkKK3sKKyAgICBp
ZiAoZXhwZWN0ZWRJbmRleCA8IDAgfHwgdGVzdERhdGEubGVuZ3RoIDw9IGV4cGVjdGVkSW5kZXgp
CisgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IG51bGw7CisgICAgaWYgKGxvd2VyICE9PSBu
dWxsICYmIGV4cGVjdGVkSW5kZXggPCBsb3dlcikKKyAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4
ID0gbnVsbDsKKyAgICBpZiAodXBwZXIgIT09IG51bGwgJiYgdXBwZXIgPCBleHBlY3RlZEluZGV4
KQorICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSBudWxsOworICAgIGlmIChsb3dlciAhPT0g
bnVsbCAmJiBsb3dlcklzT3BlbiAmJiBleHBlY3RlZEluZGV4IDw9IGxvd2VyKQorICAgICAgICBz
ZWxmLmV4cGVjdGVkSW5kZXggPSBudWxsOworICAgIGlmICh1cHBlciAhPT0gbnVsbCAmJiB1cHBl
cklzT3BlbiAmJiB1cHBlciA8PSBleHBlY3RlZEluZGV4KQorICAgICAgICBzZWxmLmV4cGVjdGVk
SW5kZXggPSBudWxsOworfQorCitmdW5jdGlvbiBjdXJzb3JJdGVyYXRpb24oKQoreworICAgIGlm
IChleHBlY3RlZEluZGV4ID09PSBudWxsKSB7CisgICAgICAgIHNob3VsZEJlTnVsbCgiZXZlbnQu
dGFyZ2V0LnJlc3VsdCIpOworICAgICAgICBydW5OZXh0VGVzdCgpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsKSB7CisgICAgICAg
IHRlc3RGYWlsZWQoImV2ZW50LnRhcmdldC5yZXN1bHQgc2hvdWxkIG5vdCBiZSBudWxsLiIpOwor
ICAgICAgICBydW5OZXh0VGVzdCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2hv
dWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICJleHBlY3RlZEluZGV4Iik7
CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgInRlc3REYXRhWyIgKyBl
eHBlY3RlZEluZGV4ICsgIl0iKTsKKyAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSBhc2NlbmRpbmcg
PyBleHBlY3RlZEluZGV4ICsgMSA6IGV4cGVjdGVkSW5kZXggLSAxOworICAgIHRlc3RXaXRoaW5C
b3VuZHMoKTsKKworICAgIGV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKTsKK30KKworc2Vs
Zi5udWxsS2V5UmFuZ2VTdGVwID0gMDsKK2Z1bmN0aW9uIHRlc3ROdWxsS2V5UmFuZ2UoKQorewor
ICAgIHNlbGYubG93ZXIgPSAwOworICAgIHNlbGYubG93ZXJJc09wZW4gPSBmYWxzZTsKKyAgICBz
ZWxmLnVwcGVyID0gdGVzdERhdGEubGVuZ3RoLTE7CisgICAgc2VsZi51cHBlcklzT3BlbiA9IGZh
bHNlOworCisgICAgc3RyID0gIk5leHQgdGVzdDogbnVsbCBrZXkgcGF0aCAiOworICAgIGlmIChz
ZWxmLm51bGxLZXlSYW5nZVN0ZXAgPT0gMCkgeworICAgICAgICBzdHIgKz0gInNvcnRlZCBhc2Nl
bmRpbmcuIjsKKyAgICAgICAgc2VsZi5hc2NlbmRpbmcgPSB0cnVlOworICAgICAgICBzZWxmLmV4
cGVjdGVkSW5kZXggPSBsb3dlcjsKKyAgICAgICAgc2VsZi5udWxsS2V5UmFuZ2VTdGVwID0gMTsK
KyAgICB9IGVsc2UgaWYgKHNlbGYubnVsbEtleVJhbmdlU3RlcCA9PSAxKSB7CisgICAgICAgIHN0
ciArPSAic29ydGVkIGRlc2NlbmRpbmcuIjsKKyAgICAgICAgc2VsZi5hc2NlbmRpbmcgPSBmYWxz
ZTsKKyAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gdXBwZXI7CisgICAgICAgIHNlbGYubnVs
bEtleVJhbmdlU3RlcCA9IDI7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoc3Ry
KTsKKworICAgIHZhciByZXF1ZXN0ID0gaW5kZXhPYmplY3Qub3BlbktleUN1cnNvcihudWxsLCBh
c2NlbmRpbmcgPyBJREJDdXJzb3IuTkVYVCA6IElEQkN1cnNvci5QUkVWKTsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGN1cnNvckl0ZXJhdGlvbjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKK29wZW5E
YXRhYmFzZSgpOyAvLyBUaGUgZmlyc3Qgc3RlcC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbmRleC1nZXQta2V5LWFyZ3VtZW50LXJlcXVpcmVk
LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4LWdldC1r
ZXktYXJndW1lbnQtcmVxdWlyZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTNkMzg3MGVlZTlmNGViYTkwMTU2
OGVmMDk3YjMwZGZkZWM5Yjk3YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbmRleC1nZXQta2V5LWFyZ3VtZW50LXJlcXVpcmVkLmpz
CkBAIC0wLDAgKzEsMzkgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRT
Y3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAg
IGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRl
eGVkREIgaW5kZXggLmdldCgpIHJlcXVpcmVkIGFyZ3VtZW50Iik7CisKK2Z1bmN0aW9uIHRlc3Qo
KQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2Nh
dGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24p
Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nl
c3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEn
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9y
ZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKwor
ZnVuY3Rpb24gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSgpCit7CisgICAgZGVsZXRlQWxs
T2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0
U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJywgeyBrZXlQYXRoOiAnaWQnLCBhdXRv
SW5jcmVtZW50OiB0cnVlIH0pOyIpOworICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBv
YmplY3RTdG9yZS5jcmVhdGVJbmRleCgnZmlyc3QnLCAnZmlyc3QnKTsiKTsKKyAgICBzaG91bGRU
aHJvdygiaW5kZXguZ2V0KCk7Iik7CisgICAgc2hvdWxkVGhyb3coImluZGV4LmdldEtleSgpOyIp
OworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL2luZGV4LW11bHRpZW50cnkuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvaW5kZXgtbXVsdGllbnRyeS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wM2NkZDhhOTE1OWVmMTll
MTlhNzY3MjBhY2Y5NmU2MDdiMTc5M2QxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4LW11bHRpZW50cnkuanMKQEAgLTAsMCAr
MSwxNDAgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcu
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNj
cmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBmZWF0dXJlcyBvZiBJ
bmRleGVkREIncyBtdWx0aUVudHJ5IGluZGljZXMuIik7CisKK2Z1bmN0aW9uIHRlc3QoKQorewor
ICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
aW5kZXhlZERCLm9wZW4oJ2luZGV4LW11bHRpRW50cnknKSIpOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVu
Y3Rpb24oKSB7CisgICAgICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVz
dWx0Iik7CisKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJzEn
KSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwcmVwYXJlRGF0YWJhc2U7CisgICAgfTsKK30K
KworZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVi
dWcoIkNyZWF0aW5nIGVtcHR5IHN0b3JlcyBhbmQgaW5kZXhlcyIpOworICAgIHZhciB0cmFucyA9
IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJl
VHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFi
b3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IGFkZERhdGE7CisKKyAgICBkZWxl
dGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUu
Y3JlYXRlSW5kZXgoJ2luZGV4JywgJ3gnLCB7bXVsdGlFbnRyeTogdHJ1ZX0pIik7CisKKyAgICBz
dG9yZTIgPSBldmFsQW5kTG9nKCJzdG9yZTIgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUt
dW5pcXVlJykiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZTIuY3JlYXRlSW5kZXgoJ2luZGV4LXVu
aXF1ZScsICd4Jywge211bHRpRW50cnk6IHRydWUsIHVuaXF1ZTogdHJ1ZX0pIik7Cit9CisKK2Z1
bmN0aW9uIGFkZERhdGEoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiUG9wdWxhdGlu
ZyBzdG9yZXMgKGFuZCBpbmRleGVzKSIpOworICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygi
dHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJF
QURfV1JJVEUpIik7CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENh
bGxiYWNrOworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbigpIHsgdmVyaWZ5
SW5kZXhlcygnaW5kZXgnLCB2ZXJpZnlVbmlxdWVDb25zdHJhaW50KTsgfTsKKworICAgIGRlYnVn
KCJGaXJzdCB0cnkgc29tZSBrZXlzIHRoYXQgYXJlbid0IHdoYXQgd2UncmUgZXhwZWN0aW5nIik7
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9y
ZScpLnB1dCh7eDogWzcsIDgsIDldLCB5OiAnYSd9LCAnZm9vJykiKTsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBkZWJ1ZygiTm93IG92ZXJ3cml0
ZSB0aGVtIHdpdGggd2hhdCB3ZSdyZSBleHBlY3RpbmciKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KHt4OiBbMSwgMiwgM10s
IHk6ICdhJ30sICdmb28nKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RT
dG9yZSgnc3RvcmUnKS5wdXQoe3g6IFs0LCA1LCA2XSwgeTogJ2InfSwgJ2JhcicpIik7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IHZlcmlmeUluZGV4ZXMoaW5kZXhOYW1lLCBjYWxsYmFjaykKK3sKKyAgICBkZWJ1ZygiIik7Cisg
ICAgZGVidWcoIlZlcmlmeWluZyBpbmRleDogIiArIGluZGV4TmFtZSk7CisgICAgdHJhbnNhY3Rp
b24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUnXSwg
SURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKSIpOworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1
bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gY2Fs
bGJhY2s7CisKKyAgICBleHBlY3RlZCA9IFsKKyAgICAgICAgeyBrZXk6IDEsIHByaW1hcnlLZXk6
ICdmb28nLCB5OiAnYScgfSwKKyAgICAgICAgeyBrZXk6IDIsIHByaW1hcnlLZXk6ICdmb28nLCB5
OiAnYScgfSwKKyAgICAgICAgeyBrZXk6IDMsIHByaW1hcnlLZXk6ICdmb28nLCB5OiAnYScgfSwK
KyAgICAgICAgeyBrZXk6IDQsIHByaW1hcnlLZXk6ICdiYXInLCB5OiAnYicgfSwKKyAgICAgICAg
eyBrZXk6IDUsIHByaW1hcnlLZXk6ICdiYXInLCB5OiAnYicgfSwKKyAgICAgICAgeyBrZXk6IDYs
IHByaW1hcnlLZXk6ICdiYXInLCB5OiAnYicgfSwKKyAgICBdOworCisgICAgdmFyIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKS5pbmRleCgnIiAr
IGluZGV4TmFtZSArICInKS5vcGVuQ3Vyc29yKCkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KGV2ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKKyAgICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICAgICAgZXggPSBl
eHBlY3RlZC5zaGlmdCgpOworICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJleCAhPSBudWxsIik7
CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsIFN0cmluZyhleC5rZXkpKTsKKyAg
ICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY3Vyc29yLnByaW1hcnlLZXkiLCBleC5w
cmltYXJ5S2V5KTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY3Vyc29yLnZh
bHVlLnkiLCBleC55KTsKKyAgICAgICAgICAgIGN1cnNvci5jb250aW51ZSgpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJleHBlY3RlZC5sZW5ndGggPT09IDAi
KTsKKyAgICAgICAgfQorICAgIH07Cit9CisKK2Z1bmN0aW9uIHZlcmlmeVVuaXF1ZUNvbnN0cmFp
bnQoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVmVyaWZ5aW5nIHVuaXF1ZSBjb25z
dHJhaW50IG9uIG11bHRpRW50cnkgaW5kZXgiKTsKKyAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRM
b2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZS11bmlxdWUnXSwgSURCVHJh
bnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rp
b24gKCkgeworICAgICAgICBkZWJ1ZygiVHJhbnNhY3Rpb24gYWJvcnRlZCBhcyBleHBlY3RlZCIp
OworICAgICAgICBjcmVhdGVJbmRleE9uU3RvcmVXaXRoRGF0YSgpOworICAgIH07CisgICAgdHJh
bnNhY3Rpb24ub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOworCisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZS11bmlx
dWUnKS5wdXQoe3g6IFsxLCAyLCAzXSwgeTogJ2EnfSwgJ2ZvbycpIik7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgZGVidWcoInN1Y2Nlc3MhIik7CisgICAgICAgIGRlYnVn
KCJSZXBsYWNlIGFuIGV4aXN0aW5nIHJlY29yZCAtIHRoaXMgc2hvdWxkIHdvcmsiKTsKKyAgICAg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZS11
bmlxdWUnKS5wdXQoe3g6IFsxLCAyLCA3XSwgeTogJ2EnfSwgJ2ZvbycpIik7CisgICAgICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZGVidWcoInN1Y2Nlc3MhIik7
CisgICAgICAgICAgICBkZWJ1ZygiVGhpcyBzaG91bGQgZmFpbCB0aGUgdW5pcXVlbmVzcyBjb25z
dHJhaW50IG9uIHRoZSBpbmRleCwgYW5kIGZhaWw6Iik7CisgICAgICAgICAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlLXVuaXF1ZScpLnB1dCh7
eDogWzUsIDJdLCB5OiAnYyd9LCAnc2hvdWxkIGZhaWwnKSIpOworICAgICAgICAgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOworICAgICAgICAgICAgcmVx
dWVzdC5vbmVycm9yID0gZnVuY3Rpb24oKSB7IGRlYnVnKCJSZXF1ZXN0IGZhaWxlZCwgYXMgZXhw
ZWN0ZWQiKTsgfTsKKyAgICAgICAgfTsKKyAgICB9OworfQorCitmdW5jdGlvbiBjcmVhdGVJbmRl
eE9uU3RvcmVXaXRoRGF0YSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJDcmVhdGUg
YW4gaW5kZXggb24gYSBwb3B1bGF0ZWQgc3RvcmUiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJkYi5zZXRWZXJzaW9uKCcyJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewor
CisgICAgICAgIHZhciB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOworICAgICAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgICAg
IHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICAgICAgdHJhbnMu
b25jb21wbGV0ZSA9IGZ1bmN0aW9uKCkgeyB2ZXJpZnlJbmRleGVzKCdpbmRleC1uZXcnLCBmaW5p
c2hKU1Rlc3QpOyB9OworCisgICAgICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFu
cy5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5jcmVh
dGVJbmRleCgnaW5kZXgtbmV3JywgJ3gnLCB7bXVsdGlFbnRyeTogdHJ1ZX0pIik7CisgICAgfTsK
K30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbmRleC1wb3B1bGF0aW9uLmpz
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4LXBvcHVsYXRp
b24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYTk5NzI4NjY2ZmQ2ZDQyZGYwOWRiODE2Mzc0ZGU3OTNlMGExYTVj
ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9pbmRleC1wb3B1bGF0aW9uLmpzCkBAIC0wLDAgKzEsOTEgQEAKK2lmICh0aGlzLmltcG9y
dFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQor
CitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgaW5kZXggcG9wdWxhdGlvbi4iKTsKKworZnVu
Y3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoJ2luZGV4LXBvcHVsYXRp
b24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlU3VjY2VzczsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVs
ZXRlU3VjY2VzcygpCit7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVu
KCdpbmRleC1wb3B1bGF0aW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRvU2V0VmVy
c2lvbjE7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIGRvU2V0VmVyc2lvbjEoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1
ZygiZG9TZXRWZXJzaW9uMSgpOiIpOworICAgIHNlbGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBz
ZXRWZXJzaW9uMTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbjEoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBk
ZWJ1Zygic2V0VmVyc2lvbjEoKToiKTsKKyAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRy
YW5zYWN0aW9uID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhw
ZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5j
cmVhdGVPYmplY3RTdG9yZSgnc3RvcmUxJykiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQo
e2RhdGE6ICdhJywgaW5kZXhLZXk6IDEwfSwgMSkiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZS5w
dXQoe2RhdGE6ICdiJywgaW5kZXhLZXk6IDIwfSwgMikiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9y
ZS5wdXQoe2RhdGE6ICdjJywgaW5kZXhLZXk6IDEwfSwgMykiKTsKKyAgICBldmFsQW5kTG9nKCJz
dG9yZS5wdXQoe2RhdGE6ICdkJywgaW5kZXhLZXk6IDIwfSwgNCkiKTsKKyAgICBldmFsQW5kTG9n
KCJpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleDEnLCAnaW5kZXhLZXknKSIpOworICAg
IHNob3VsZEJlVHJ1ZSgiaW5kZXggaW5zdGFuY2VvZiBJREJJbmRleCIpOworICAgIHNob3VsZEJl
RmFsc2UoImluZGV4LnVuaXF1ZSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gaW5kZXguY291bnQoSURCS2V5UmFuZ2UuYm91bmQoLUluZmluaXR5LCBJbmZpbml0eSkpIik7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgIHNob3VsZEJlKCJyZXF1ZXN0
LnJlc3VsdCIsICI0Iik7CisgICAgfTsKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZG9T
ZXRWZXJzaW9uMjsKK30KKworZnVuY3Rpb24gZG9TZXRWZXJzaW9uMigpIHsKKyAgICBkZWJ1Zygi
Iik7CisgICAgZGVidWcoImRvU2V0VmVyc2lvbjIoKToiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMicpIik7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uMjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbjIoKQoreworICAgIGRl
YnVnKCIiKTsKKyAgICBkZWJ1Zygic2V0VmVyc2lvbjIoKToiKTsKKyAgICB0cmFuc2FjdGlvbjIg
PSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAgdHJhbnNh
Y3Rpb24yLm9uYWJvcnQgPSBzZXRWZXJzaW9uMkFib3J0OworICAgIHRyYW5zYWN0aW9uMi5vbmNv
bXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7CisgICAgc3RvcmUgPSBldmFsQW5k
TG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTInKSIpOworICAgIGV2YWxB
bmRMb2coInN0b3JlLnB1dCh7ZGF0YTogJ2EnLCBpbmRleEtleTogMTB9LCAxKSIpOworICAgIGV2
YWxBbmRMb2coInN0b3JlLnB1dCh7ZGF0YTogJ2InLCBpbmRleEtleTogMjB9LCAyKSIpOworICAg
IGV2YWxBbmRMb2coInN0b3JlLnB1dCh7ZGF0YTogJ2MnLCBpbmRleEtleTogMTB9LCAzKSIpOwor
ICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCh7ZGF0YTogJ2QnLCBpbmRleEtleTogMjB9LCA0KSIp
OworICAgIGV2YWxBbmRMb2coImluZGV4MiA9IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleDInLCAn
aW5kZXhLZXknLCB7IHVuaXF1ZTogdHJ1ZSB9KSIpOworICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXgy
IGluc3RhbmNlb2YgSURCSW5kZXgiKTsKKyAgICBzaG91bGRCZVRydWUoImluZGV4Mi51bmlxdWUi
KTsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbjJBYm9ydCgpCit7CisgICAgZGVidWcoIiIpOwor
ICAgIGRlYnVnKCJzZXRWZXJzaW9uMkFib3J0KCk6Iik7CisgICAgc2hvdWxkQmUoImRiLm9iamVj
dFN0b3JlTmFtZXMubGVuZ3RoIiwgIjEiKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVO
YW1lc1swXSIsICInc3RvcmUxJyIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4LXVuaXF1ZS5qcyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbmRleC11bmlxdWUuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWRi
ODViNjllNDgwODU0MWMwYjRhOWMyNjZmNzY3MGViNjhmYWU0YgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbmRleC11bmlxdWUuanMK
QEAgLTAsMCArMSwxMzYgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRT
Y3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAg
IGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBmZWF0
dXJlcyBvZiBJbmRleGVkREIncyB1bmlxdWUgaW5kaWNlcy4iKTsKKworZnVuY3Rpb24gdGVzdCgp
Cit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiaW5kZXhlZERCLm9wZW4oJ2luZGV4LXVuaXF1ZScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBzZXRWZXJzaW9uOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRM
b2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGRlbGV0ZUV4aXN0aW5nOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxldGVFeGlzdGluZygpCit7CisgICAgZGVidWco
ImRlbGV0ZUV4aXN0aW5nKCk6Iik7CisgICAgdmFyIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVs
bCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0
cmFucy5vbmNvbXBsZXRlID0gc2V0VmVyc2lvbkNvbXBsZXRlZDsKKworICAgIGRlbGV0ZUFsbE9i
amVjdFN0b3JlcyhkYik7CisKKyAgICBzZWxmLnN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICBzZWxmLmluZGV4T2JqZWN0ID0gZXZhbEFuZExv
Zygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4JywgJ3gnLCB7dW5pcXVlOiB0cnVlfSkiKTsKKwor
ICAgIC8vIExldCBzZXRWZXJzaW9uIHRyYW5zYWN0aW9uIGNvbXBsZXRlLgorfQorCitmdW5jdGlv
biBzZXRWZXJzaW9uQ29tcGxldGVkKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvbkNvbXBsZXRl
ZCgpOiIpOworICAgIHNlbGYudHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9
IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsK
KworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3Rv
cmUnKS5wdXQoe3g6IDF9LCAnZm9vJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZE1vcmVEYXRhOwor
fQorCitmdW5jdGlvbiBhZGRNb3JlRGF0YSgpCit7CisgICAgZGVidWcoImFkZE1vcmVEYXRhKCk6
Iik7CisKKyAgICAvLyBUaGUgeCB2YWx1ZSB2aW9sYXRlcyB0aGUgdW5pcXVlbmVzcyBjb25zdHJh
aW50IG9mIHRoZSBpbmRleC4KKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24u
b2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KHt4OiAxfSwgJ2JhcicpIik7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gYWRkTW9yZURhdGFGYWlsZWQ7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4
cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOworfQorCitmdW5jdGlvbiBhZGRNb3JlRGF0YUZhaWxlZCgp
Cit7CisgICAgZGVidWcoImFkZE1vcmVEYXRhRmFpbGVkKCk6Iik7CisKKyAgICAvLyBEb24ndCBh
Ym9ydCB0aGUgdHJhbnNhY3Rpb24uCisgICAgZXZhbEFuZExvZygiZXZlbnQucHJldmVudERlZmF1
bHQoKSIpOworCisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5lcnJvckNvZGUiLCAiSURCRGF0
YWJhc2VFeGNlcHRpb24uQ09OU1RSQUlOVF9FUlIiKTsKKworICAgIC8vIFVwZGF0ZSB0aGUgJ2Zv
bycgZW50cnkgaW4gb2JqZWN0IHN0b3JlLCBjaGFuZ2luZyB0aGUgdmFsdWUgb2YgeC4KKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0
KHt4OiAwfSwgJ2ZvbycpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjaGFuZ2VEYXRhU3VjY2VzczsKK30K
KworZnVuY3Rpb24gY2hhbmdlRGF0YVN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJjaGFuZ2VEYXRh
U3VjY2VzcygpOiIpOworCisgICAgLy8gQW4gaW5kZXggY3Vyc29yIHN0YXJ0aW5nIGF0IDEgc2hv
dWxkIG5vdCBmaW5kIGFueXRoaW5nLgorICAgIHZhciByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJh
bnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykuaW5kZXgoJ2luZGV4Jykub3BlbkN1cnNvcihJ
REJLZXlSYW5nZS5sb3dlckJvdW5kKDEpKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Vy
c29yU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gY3Vyc29yU3VjY2VzcygpCit7CisgICAgZGVidWcoImN1cnNvclN1
Y2Nlc3MoKToiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJudWxsIik7
CisKKyAgICAvLyBBIGtleSBjdXJzb3Igc3RhcnRpbmcgYXQgMSBzaG91bGQgbm90IGZpbmQgYW55
dGhpbmcuCisgICAgdmFyIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RT
dG9yZSgnc3RvcmUnKS5pbmRleCgnaW5kZXgnKS5vcGVuS2V5Q3Vyc29yKElEQktleVJhbmdlLmxv
d2VyQm91bmQoMSkpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBrZXlDdXJzb3JTdWNjZXNz
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiBrZXlDdXJzb3JTdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygia2V5Q3Vyc29yU3VjY2Vz
cygpOiIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIm51bGwiKTsKKwor
ICAgIC8vIE5vdyB3ZSBzaG91bGQgYmUgYWJsZSB0byBhZGQgYSB2YWx1ZSB3aXRoIHg6IDEuCisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScp
LnB1dCh7eDogMX0sICdiYXInKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkTW9yZURhdGFTdWNjZXM7
Cit9CisKK2Z1bmN0aW9uIGFkZE1vcmVEYXRhU3VjY2VzKCkKK3sKKyAgICBkZWJ1ZygiYWRkTW9y
ZURhdGFTdWNjZXMoKToiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlv
bi5vYmplY3RTdG9yZSgnc3RvcmUnKS5kZWxldGUoJ2JhcicpIik7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBk
ZWxldGVTdWNjZXNzOworfQorCitmdW5jdGlvbiBkZWxldGVTdWNjZXNzKCkKK3sKKyAgICBkZWJ1
ZygiZGVsZXRlU3VjY2VzcygpOiIpOworCisgICAgLy8gTm93IHdlIHNob3VsZCBiZSBhYmxlIHRv
IGFkZCBhIHZhbHVlIHdpdGggeDogMSBhZ2Fpbi4KKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
dHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KHt4OiAxfSwgJ2JheicpIik7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBmaW5hbEFkZFN1Y2Nlc3M7Cit9CisKK2Z1bmN0aW9uIGZpbmFsQWRkU3Vj
Y2VzcygpIHsKKyAgICBkZWJ1ZygiZmluYWxBZGRTdWNjZXNzKCk6Iik7CisKKyAgICAvLyBBbiBv
dmVyd3JpdGUgc2hvdWxkIGJlIG9rLgorICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2Fj
dGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKS5wdXQoe3g6IDF9LCAnYmF6JykiKTsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGZpbmlzaEpTVGVzdDsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9pbnZhbGlkLWtleXMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvaW52YWxpZC1rZXlzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2YzE3NTc2NzQwYjNkNTdmOTk2MzBlZTJh
NzAzODYwNTY1NGE2ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvaW52YWxpZC1rZXlzLmpzCkBAIC0wLDAgKzEsNjQgQEAKK2lmICh0
aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5q
cycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgaW52YWxpZCBrZXlzIik7CisK
K2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBu
YW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0
IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFt
ZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50
YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRi
LnNldFZlcnNpb24oJzEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdGVzdEdyb3VwMTsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gdGVzdEdyb3VwMSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKwor
ICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2Zvbycp
OyIpOworICAgIHRlc3RJbnZhbGlkS2V5cygpOworfQorCitmdW5jdGlvbiB0ZXN0SW52YWxpZEtl
eXMoKQoreworICAgIHZhciBpbnZhbGlkS2V5cyA9IFsKKyAgICAgICAgInZvaWQgMCIsIC8vIFVu
ZGVmaW5lZAorICAgICAgICAibnVsbCIsIC8vIE51bGwKKyAgICAgICAgIihmdW5jdGlvbigpIHsg
cmV0dXJuIGFyZ3VtZW50czsgfSgpKSIsIC8vIEFyZ3VtZW50cworICAgICAgICAidHJ1ZSIsIC8v
IEJvb2xlYW4KKyAgICAgICAgImZhbHNlIiwgLy8gQm9vbGVhbgorICAgICAgICAibmV3IEVycm9y
IiwgLy8gRXJyb3IKKyAgICAgICAgImZ1bmN0aW9uICgpIHt9IiwgLy8gRnVuY3Rpb24KKyAgICAg
ICAgIkpTT04iLCAvLyBKU09OCisgICAgICAgICJNYXRoIiwgLy8gTWF0aAorICAgICAgICAiTmFO
IiwgLy8gTnVtYmVyIChzcGVjaWFsIGNhc2UpCisgICAgICAgICJuZXcgRGF0ZShOYU4pIiwgLy8g
RGF0ZSAoc3BlY2lhbCBjYXNlKQorICAgICAgICAie30iLCAvLyBPYmplY3QKKyAgICAgICAgIi9y
ZWdleC8iLCAvLyBSZWdFeHAKKyAgICAgICAgInNlbGYiLCAvLyBnbG9iYWwKKyAgICAgICAgInNl
bGYuZG9jdW1lbnQiLCAvLyBIVE1MRG9jdW1lbnQKKyAgICAgICAgInNlbGYuZG9jdW1lbnQuYm9k
eSIgLy8gSFRNTEJvZHlFbGVtZW50CisgICAgXTsKKworICAgIGludmFsaWRLZXlzLmZvckVhY2go
ZnVuY3Rpb24oa2V5KSB7CisgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5wdXQoJ3ZhbHVlJywgIiArIGtleSArICIpIiwgIklEQkRhdGFiYXNlRXhj
ZXB0aW9uLkRBVEFfRVJSIik7CisgICAgfSk7CisgICAgCisgICAgZmluaXNoSlNUZXN0KCk7Cit9
CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5LWdlbmVyYXRvci5qcyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXktZ2VuZXJhdG9yLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjIxYjE3NTE4Y2UxMWIwNjFlMWM1ZmY4ZjkwYzBiY2NiZjExNmJiOWQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5
LWdlbmVyYXRvci5qcwpAQCAtMCwwICsxLDIwNiBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykg
eworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0
aW9uKCJUZXN0IEluZGV4ZWREQidzIGtleSBnZW5lcmF0b3IgYmVoYXZpb3IuIik7CisKK2Z1bmN0
aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBydW5UZXN0
cygpOworfQorCit2YXIgdGVzdHMgPSBbXTsKK2Z1bmN0aW9uIGRlZmluZVRlc3QoZGVzY3JpcHRp
b24sIHZlcmNoYW5nZSwgb3B0aW9uYWwpIHsKKyAgdGVzdHMucHVzaCgKKyAgICB7CisgICAgICBk
ZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sCisgICAgICB2ZXJjaGFuZ2U6IHZlcmNoYW5nZSwKKyAg
ICAgIG9wdGlvbmFsOiBvcHRpb25hbAorICAgIH0KKyAgKTsKK30KKworZnVuY3Rpb24gcnVuVGVz
dHMoKSB7CisKKyAgICBmdW5jdGlvbiBuZXh0VGVzdCgpIHsKKyAgICAgICAgaWYgKCF0ZXN0cy5s
ZW5ndGgpIHsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgdmFyIHRlc3QgPSB0ZXN0cy5zaGlmdCgpOworICAgICAg
ICBkZWJ1ZygiIik7CisgICAgICAgIGRlYnVnKHRlc3QuZGVzY3JpcHRpb24pOworCisgICAgICAg
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoJ2tleS1nZW5l
cmF0b3InKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oJ2tleS1nZW5lcmF0b3In
KSIpOworICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgICAgICBldmFsQW5kTG9nKCJkYiA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAgICAgICAg
ICAgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAgICAg
ICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAg
ICAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgICAgICBldmFsQW5kTG9nKCJ0cmFucyA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAgICAg
ICAgICAgICAgICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdC52ZXJjaGFuZ2UoZGIsIHRyYW5zKTsKKyAgICAgICAgICAg
ICAgICAgICAgdHJhbnMub25jb21wbGV0ZSA9IGZ1bmN0aW9uICgpIHsKKworICAgICAgICAgICAg
ICAgICAgICAgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBldmFsQW5kTG9nKCJkYi5jbG9zZSgpIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbmV4dFRlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHRlc3Qub3B0aW9uYWwpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0Lm9wdGlvbmFsKGRiLCBmaW5pc2hUZXN0KTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoVGVzdCgp
OworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9OworICAg
ICAgICAgICAgICAgIH07CisgICAgICAgICAgICB9OworICAgICAgICB9OworICAgIH0KKworICAg
IG5leHRUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIGNoZWNrKHN0b3JlLCBrZXksIGV4cGVjdGVkKSB7
CisgICAgc2VsZi5zdG9yZSA9IHN0b3JlOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gc3RvcmUuZ2V0KCIgKyBKU09OLnN0cmluZ2lmeShrZXkpICsgIikiKTsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgIHNlbGYuZXhwZWN0ZWQgPSBleHBlY3RlZDsK
KyAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KGV2ZW50LnRhcmdldC5yZXN1bHQpID09PSBKU09O
LnN0cmluZ2lmeShleHBlY3RlZCkpIHsKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkdvdCAiICsg
SlNPTi5zdHJpbmdpZnkoZXZlbnQudGFyZ2V0LnJlc3VsdCkgKyAiIGZvciBrZXk6ICIgKyBKU09O
LnN0cmluZ2lmeShrZXkpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRlc3RGYWls
ZWQoIkdvdCAiICsgSlNPTi5zdHJpbmdpZnkoZXZlbnQudGFyZ2V0LnJlc3VsdCkgKyAiIGZvciBr
ZXk6ICIgKyBKU09OLnN0cmluZ2lmeShrZXkpICsKKyAgICAgICAgICAgICAgICAiIGV4cGVjdGVk
OiAiICsgSlNPTi5zdHJpbmdpZnkoZXhwZWN0ZWQpKTsKKyAgICAgICAgfQorICAgIH07Cit9CisK
K2RlZmluZVRlc3QoCisgICAgJ1ZlcmlmeSB0aGF0IGVhY2ggb2JqZWN0IHN0b3JlIGhhcyBhbiBp
bmRlcGVuZGVudCBrZXkgZ2VuZXJhdG9yLicsCisgICAgZnVuY3Rpb24gKGRiLCB0cmFucykgewor
ICAgICAgICBldmFsQW5kTG9nKCJzdG9yZTEgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUx
JywgeyBhdXRvSW5jcmVtZW50OiB0cnVlIH0pIik7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3Jl
MS5wdXQoJ2EnKSIpOworICAgICAgICBjaGVjayhzdG9yZTEsIDEsICdhJyk7CisgICAgICAgIGV2
YWxBbmRMb2coInN0b3JlMiA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTInLCB7IGF1dG9J
bmNyZW1lbnQ6IHRydWUgfSkiKTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUyLnB1dCgnYScp
Iik7CisgICAgICAgIGNoZWNrKHN0b3JlMiwgMSwgJ2EnKTsKKyAgICAgICAgZXZhbEFuZExvZygi
c3RvcmUxLnB1dCgnYicpIik7CisgICAgICAgIGNoZWNrKHN0b3JlMSwgMiwgJ2InKTsKKyAgICAg
ICAgZXZhbEFuZExvZygic3RvcmUyLnB1dCgnYicpIik7CisgICAgICAgIGNoZWNrKHN0b3JlMiwg
MiwgJ2InKTsKKyAgICB9CispOworCitkZWZpbmVUZXN0KAorICAgICdWZXJpZnkgdGhhdCB0aGUg
a2V5IGdlbmVyYXRvciBpcyBub3QgdXBkYXRlZCBpZiBpbnNlcnRpb24gZmFpbHMnLAorICAgIGZ1
bmN0aW9uIChkYiwgdHJhbnMpIHsKKyAgICAgICAgdHJhbnMub25lcnJvciA9IGZ1bmN0aW9uKGUp
IHsgZS5wcmV2ZW50RGVmYXVsdCgpIH07CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlID0gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlMScsIHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9KSIpOwor
ICAgICAgICBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleDEnLCAn
aXgnLCB7IHVuaXF1ZTogdHJ1ZSB9KSIpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQo
eyBpeDogJ2EnfSkiKTsKKyAgICAgICAgY2hlY2soc3RvcmUsIDEsIHtpeDogJ2EnfSk7CisgICAg
ICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCh7IGl4OiAnYSd9KSIpOworICAgICAgICBldmFsQW5k
TG9nKCJzdG9yZS5wdXQoeyBpeDogJ2InfSkiKTsKKyAgICAgICAgY2hlY2soc3RvcmUsIDIsIHtp
eDogJ2InfSk7CisgICAgfQorKTsKKworZGVmaW5lVGVzdCgKKyAgICAnVmVyaWZ5IHRoYXQgdGhl
IGtleSBnZW5lcmF0b3IgaXMgbm90IGFmZmVjdGVkIGJ5IGl0ZW0gcmVtb3ZhbCAoZGVsZXRlIG9y
IGNsZWFyKS4nLAorICAgIGZ1bmN0aW9uIChkYiwgdHJhbnMpIHsKKyAgICAgICAgZXZhbEFuZExv
Zygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUxJywgeyBhdXRvSW5jcmVtZW50
OiB0cnVlIH0pIik7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgnYScpIik7CisgICAg
ICAgIGNoZWNrKHN0b3JlLCAxLCAnYScpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5kZWxl
dGUoMSkiKTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdiJykiKTsKKyAgICAgICAg
Y2hlY2soc3RvcmUsIDIsICdiJyk7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLmNsZWFyKCki
KTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdjJykiKTsKKyAgICAgICAgY2hlY2so
c3RvcmUsIDMsICdjJyk7CisgICAgICAgIC8vIEZJWE1FOiBJREJPYmplY3RTdG9yZS5kZWxldGUo
SURCS2V5UmFuZ2UpIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQgaW4gQ2hyb21pdW0uCisgICAgICAg
IC8vIGh0dHA6Ly9jcmJ1Zy5jb20vMTAxMzg0CisgICAgICAgIC8vZXZhbEFuZExvZygic3RvcmUu
ZGVsZXRlKElEQktleVJhbmdlLmxvd2VyQm91bmQoMCkpIik7CisgICAgICAgIGV2YWxBbmRMb2co
InN0b3JlLnB1dCgnZCcpIik7CisgICAgICAgIGNoZWNrKHN0b3JlLCA0LCAnZCcpOworICAgIH0K
Kyk7CisKK2RlZmluZVRlc3QoCisgICAgJ1ZlcmlmeSB0aGF0IHRoZSBrZXkgZ2VuZXJhdG9yIGlz
IG9ubHkgc2V0IGlmIGFuZCBvbmx5IGlmIGEgbnVtZXJpYyBrZXkgZ3JlYXRlciB0aGFuIHRoZSBs
YXN0IGdlbmVyYXRlZCBrZXkgaXMgdXNlZC4nLAorICAgIGZ1bmN0aW9uIChkYiwgdHJhbnMpIHsK
KyAgICAgICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUx
JywgeyBhdXRvSW5jcmVtZW50OiB0cnVlIH0pIik7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3Jl
LnB1dCgnYScpIik7CisgICAgICAgIGNoZWNrKHN0b3JlLCAxLCAnYScpOworICAgICAgICBldmFs
QW5kTG9nKCJzdG9yZS5wdXQoJ2InLCAzKSIpOworICAgICAgICBjaGVjayhzdG9yZSwgMywgJ2In
KTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdjJykiKTsKKyAgICAgICAgY2hlY2so
c3RvcmUsIDQsICdjJyk7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgnZCcsIC0xMCki
KTsKKyAgICAgICAgY2hlY2soc3RvcmUsIC0xMCwgJ2QnKTsKKyAgICAgICAgZXZhbEFuZExvZygi
c3RvcmUucHV0KCdlJykiKTsKKyAgICAgICAgY2hlY2soc3RvcmUsIDUsICdlJyk7CisgICAgICAg
IGV2YWxBbmRMb2coInN0b3JlLnB1dCgnZicsIDYuMDAwMDEpIik7CisgICAgICAgIGNoZWNrKHN0
b3JlLCA2LjAwMDAxLCAnZicpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2cnKSIp
OworICAgICAgICBjaGVjayhzdG9yZSwgNywgJ2cnKTsKKyAgICAgICAgZXZhbEFuZExvZygic3Rv
cmUucHV0KCdmJywgOC45OTk5KSIpOworICAgICAgICBjaGVjayhzdG9yZSwgOC45OTk5LCAnZicp
OworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2cnKSIpOworICAgICAgICBjaGVjayhz
dG9yZSwgOSwgJ2cnKTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdoJywgJ2Zvbycp
Iik7CisgICAgICAgIGNoZWNrKHN0b3JlLCAnZm9vJywgJ2gnKTsKKyAgICAgICAgZXZhbEFuZExv
Zygic3RvcmUucHV0KCdpJykiKTsKKyAgICAgICAgY2hlY2soc3RvcmUsIDEwLCAnaScpOworICAg
ICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2onLCBbMTAwMF0pIik7CisgICAgICAgIGNoZWNr
KHN0b3JlLCBbMTAwMF0sICdqJyk7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgnaycp
Iik7CisgICAgICAgIGNoZWNrKHN0b3JlLCAxMSwgJ2snKTsKKworICAgICAgICAvLyBGSVhNRTog
UmVwZWF0IHRoaXMgdGVzdCwgYnV0IHdpdGggYSBrZXlQYXRoIGFuZCBpbmxpbmUga2V5LgorICAg
IH0KKyk7CisKK2RlZmluZVRlc3QoCisgICAgJ1ZlcmlmeSB0aGF0IGFib3J0aW5nIGEgdHJhbnNh
Y3Rpb24gcmVzZXRzIHRoZSBrZXkgZ2VuZXJhdG9yIHN0YXRlLicsCisgICAgZnVuY3Rpb24gKGRi
LCB0cmFucykgeworICAgICAgICBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnLCB7IGF1dG9J
bmNyZW1lbnQ6IHRydWUgfSk7CisgICAgfSwKKworICAgIGZ1bmN0aW9uIChkYiwgY2FsbGJhY2sp
IHsKKyAgICAgICAgZXZhbEFuZExvZygidHJhbnMxID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZSdd
LCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9y
ZV90MSA9IHRyYW5zMS5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgICAgICBldmFsQW5kTG9n
KCJzdG9yZV90MS5wdXQoJ2EnKSIpOworICAgICAgICBjaGVjayhzdG9yZV90MSwgMSwgJ2EnKTsK
KyAgICAgICAgZXZhbEFuZExvZygic3RvcmVfdDEucHV0KCdiJykiKTsKKyAgICAgICAgY2hlY2so
c3RvcmVfdDEsIDIsICdiJyk7CisKKyAgICAgICAgLy8gU2NoZWR1bGUgdGhlIGFib3J0IGFzIGEg
dGFzayAobm90IHJ1biBpdCBzeW5jaHJvbm91c2x5KQorICAgICAgICBzdG9yZV90MS5nZXQoMCku
b25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgZGVidWcoJ2Fib3J0aW5nLi4u
Jyk7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJ0cmFuczEuYWJvcnQoKSIpOworICAgICAgICAg
ICAgdHJhbnMxLm9uYWJvcnQgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgZGVidWco
J2Fib3J0ZWQhJyk7CisKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJ0cmFuczIgPSBkYi50
cmFuc2FjdGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAg
ICAgICAgICAgICAgZXZhbEFuZExvZygic3RvcmVfdDIgPSB0cmFuczIub2JqZWN0U3RvcmUoJ3N0
b3JlJykiKTsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJzdG9yZV90Mi5wdXQoJ2MnKSIp
OworICAgICAgICAgICAgICAgIGNoZWNrKHN0b3JlX3QyLCAxLCAnYycpOworICAgICAgICAgICAg
ICAgIGV2YWxBbmRMb2coInN0b3JlX3QyLnB1dCgnZCcpIik7CisgICAgICAgICAgICAgICAgY2hl
Y2soc3RvcmVfdDIsIDIsICdkJyk7CisKKyAgICAgICAgICAgICAgICB0cmFuczIub25jb21wbGV0
ZSA9IGNhbGxiYWNrOworICAgICAgICAgICAgfTsKKyAgICAgICAgfTsKKyAgICB9CispOworCit0
ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleS1zb3J0LW9yZGVyLWFjcm9zcy10eXBl
cy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXktc29ydC1v
cmRlci1hY3Jvc3MtdHlwZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2M3ZmY4ZTQ3MGZlMWYwMmRlODEyZmY5
ZjUxZmY3YjA2NTI2ZDkxNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9rZXktc29ydC1vcmRlci1hY3Jvc3MtdHlwZXMuanMKQEAgLTAs
MCArMSw4NSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMo
Jy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0
U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBr
ZXkgY29tcGFyaXNvbiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQ
cmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVz
Y3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxB
bmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGFkZEtleTE7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIGFkZEtleTEoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0
b3JlcyhkYik7CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVj
dFN0b3JlKCdmb28nKTsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9i
amVjdFN0b3JlLmFkZChbXSwgSW5maW5pdHkpOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
YWRkS2V5MjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
K30KKworZnVuY3Rpb24gYWRkS2V5MigpCit7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoW10sIC1JbmZpbml0eSk7Iik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBhZGRLZXkzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBhZGRLZXkzKCkKK3sKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChbXSwgMS4wKTsiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGFkZEtleTQ7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGFkZEtleTQoKQoreworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKFtdLCAnJyk7Iik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRLZXk1OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBhZGRLZXk1KCkKK3sKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChbXSwgJzEuMCcpOyIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbkFDdXJzb3I7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5BQ3Vyc29y
KCkKK3sKKyAgICBrZXlJbmRleCA9IDA7CisgICAgc29ydGVkS2V5cyA9IGV2YWxBbmRMb2coInNv
cnRlZEtleSA9IFstSW5maW5pdHksIDEuMCwgSW5maW5pdHksICcnLCAnMS4wJ107Iik7CisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7
Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgY3Vyc29yID0g
ZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAgICAgaWYg
KGN1cnNvcikgeworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAic29ydGVkS2V5
c1trZXlJbmRleF0iKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgp
OyIpOworICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKKyAgICAgICAgfQor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9Cisg
ICAgfQorfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleS1zb3J0LW9yZGVy
LWRhdGUuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5LXNv
cnQtb3JkZXItZGF0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMWZmZjM3MjlkMThkNTcxZTVmZmJmN2Y3NzI4
NGYyN2I5NmU2ODQ1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL2tleS1zb3J0LW9yZGVyLWRhdGUuanMKQEAgLTAsMCArMSw4MiBAQAor
aWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hh
cmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBrZXkgY29tcGFyaXNv
biIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwor
CisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAi
TXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5v
cGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1
Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVl
c3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEtl
eTE7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIGFkZEtleTEoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisK
KyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28n
KTsiKTsKKyAgICBkYXRlMSA9IGV2YWxBbmRMb2coImRhdGUxID0gbmV3IERhdGUoMTAwMCk7Iik7
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoW10s
IGRhdGUxKTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEtleTI7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGFkZEtl
eTIoKQoreworICAgIGRhdGUwID0gZXZhbEFuZExvZygiZGF0ZTAgPSBuZXcgRGF0ZSgwKTsiKTsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChbXSwg
ZGF0ZTApOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkS2V5MzsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gYWRkS2V5
MygpCit7CisgICAgZGF0ZTMgPSBldmFsQW5kTG9nKCJkYXRlMyA9IG5ldyBEYXRlKDMwMDApOyIp
OworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKFtd
LCBkYXRlMyk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRLZXk0OworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBhZGRL
ZXk0KCkKK3sKKyAgICBkYXRlMiA9IGV2YWxBbmRMb2coImRhdGUyID0gbmV3IERhdGUoMjAwMCk7
Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQo
W10sIGRhdGUyKTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5BQ3Vyc29yOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biBvcGVuQUN1cnNvcigpCit7CisgICAga2V5SW5kZXggPSAwOworICAgIHNvcnRlZEtleXMgPSBl
dmFsQW5kTG9nKCJzb3J0ZWRLZXlzID0gW2RhdGUwLnRvU3RyaW5nKCksIGRhdGUxLnRvU3RyaW5n
KCksIGRhdGUyLnRvU3RyaW5nKCksIGRhdGUzLnRvU3RyaW5nKCldOyIpOworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRM
b2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICAgIGlmIChjdXJzb3Ip
IHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5LnRvU3RyaW5nKCkiLCAic29ydGVk
S2V5c1trZXlJbmRleF0iKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51
ZSgpOyIpOworICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKKyAgICAgICAg
fQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9
CisgICAgfQorfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleS10eXBlLWFy
cmF5LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleS10eXBl
LWFycmF5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViNjAzODEyZGQzNjMyZGMyY2QwNDI0ODI2Y2U1MjBkY2Zi
OGI5ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMva2V5LXR5cGUtYXJyYXkuanMKQEAgLTAsMCArMSwxOTcgQEAKK2lmICh0aGlzLmlt
cG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOwor
fQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIga2V5IHR5cGVzIik7CisKK2Z1bmN0aW9u
IHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBldmFsQW5kTG9n
KCJJREJUcmFuc2FjdGlvbiA9IHNlbGYuSURCVHJhbnNhY3Rpb24gfHwgc2VsZi5JREJUcmFuc2Fj
dGlvbjsiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJJREJUcmFuc2FjdGlvbiA9PSBudWxsIik7CisK
KyAgICBldmFsQW5kTG9nKCJJREJEYXRhYmFzZUV4Y2VwdGlvbiA9IHNlbGYuSURCRGF0YWJhc2VF
eGNlcHRpb24gfHwgc2VsZi5JREJEYXRhYmFzZUV4Y2VwdGlvbjsiKTsKKyAgICBzaG91bGRCZUZh
bHNlKCJJREJEYXRhYmFzZUV4Y2VwdGlvbiA9PSBudWxsIik7CisKKyAgICBuYW1lID0gc2VsZi5s
b2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsK
KyAgICBvcGVucmVxID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRp
b24pIik7CisgICAgb3BlbnJlcS5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICBvcGVucmVx
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1
Y2Nlc3MoKQoreworICAgIGV2YWxBbmRMb2coImRiID0gb3BlbnJlcS5yZXN1bHQiKTsKKyAgICBz
ZXR2ZXJyZXEgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Cisg
ICAgc2V0dmVycmVxLm9uc3VjY2VzcyA9IHNldFZlcnNpb25TdWNjZXNzOworICAgIHNldHZlcnJl
cS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZl
cnNpb25TdWNjZXNzKCkKK3sKKyAgICBkZWJ1ZygicHJlcGFyaW5nIGRhdGFiYXNlIik7CisgICAg
dHJhbnMgPSBzZXR2ZXJyZXEucmVzdWx0OworICAgIHRyYW5zLm9uY29tcGxldGUgPSB0ZXN0VmFs
aWRBcnJheUtleXM7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKyAgICBvYmplY3RT
dG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpOyIpOworICAg
IGRlYnVnKCIiKTsKK30KKworZnVuY3Rpb24gdGVzdFZhbGlkQXJyYXlLZXlzKCkKK3sKKyAgICBl
dmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9u
LlJFQURfV1JJVEUpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9y
ZSgnc3RvcmUnKSIpOworICAgIGRlYnVnKCIiKTsKKworICAgIGV2YWxBbmRMb2coImxvbmdfYXJy
YXkgPSBbXTsgZm9yIChpID0gMDsgaSA8IDEwMDA7ICsraSkgeyBsb25nX2FycmF5LnB1c2goJ2Fi
YycsIDEyMywgbmV3IERhdGUoMCksIFtdKTsgfSIpOworICAgIGRlYnVnKCIiKTsKKworICAgIGRl
YnVnKCJhcnJheSB0aGF0IGNvbnRhaW5zIG5vbi1udW1lcmljIHNlbGYtcmVmZXJlbmNlIik7Cisg
ICAgZXZhbEFuZExvZygic2VsZl9yZWZlcnJlbnRpYWxfYXJyYXkgPSBbXTsgc2VsZl9yZWZlcnJl
bnRpYWxfYXJyYXkuc2VsZiA9IHNlbGZfcmVmZXJyZW50aWFsX2FycmF5OyIpOworICAgIGRlYnVn
KCIiKTsKKworICAgIHZhciBuID0gMCwgY2FzZXMgPSBbCisgICAgICAgICJbXSIsCisKKyAgICAg
ICAgIlstSW5maW5pdHldIiwKKyAgICAgICAgIlstTnVtYmVyLk1BWF9WQUxVRV0iLAorICAgICAg
ICAiWy0xXSIsCisgICAgICAgICJbLU51bWJlci5NSU5fVkFMVUVdIiwKKyAgICAgICAgIlswXSIs
CisgICAgICAgICJbTnVtYmVyLk1JTl9WQUxVRV0iLAorICAgICAgICAiWzFdIiwKKyAgICAgICAg
IltOdW1iZXIuTUFYX1ZBTFVFXSIsCisgICAgICAgICJbSW5maW5pdHldIiwKKworICAgICAgICAi
WzEsMiwzXSIsCisKKyAgICAgICAgIltuZXcgRGF0ZSgwKV0iLAorICAgICAgICAiW25ldyBEYXRl
KCcyNTI1LTAxLTAxVDAwOjAwOjAwWicpXSIsCisKKyAgICAgICAgIltuZXcgRGF0ZSgwKSwgbmV3
IERhdGUoJzI1MjUtMDEtMDFUMDA6MDA6MDBaJyldIiwKKworICAgICAgICAiWycnXSIsCisgICAg
ICAgICJbJ1x4MDAnXSIsCisgICAgICAgICJbJ2FiYzEyMyddIiwKKworICAgICAgICAiWydhYmMn
LCAxMjNdIiwKKworICAgICAgICAiW1tdXSIsCisKKyAgICAgICAgIltbXSwgW11dIiwKKyAgICAg
ICAgIltbXSwgW10sIFtdXSIsCisKKyAgICAgICAgIltbW11dXSIsCisgICAgICAgICJbW1tbXV1d
XSIsCisKKyAgICAgICAgIlsxMjMsICdhYmMnLCBuZXcgRGF0ZSgwKSwgW11dIiwKKyAgICAgICAg
IltbMTIzLCAnYWJjJywgbmV3IERhdGUoMCksIFtdXSwgWzQ1NiwgJ2RlZicsIG5ldyBEYXRlKDk5
OSksIFtbXV1dXSIsCisKKyAgICAgICAgImxvbmdfYXJyYXkiLAorICAgICAgICAic2VsZl9yZWZl
cnJlbnRpYWxfYXJyYXkiCisgICAgXTsKKworICAgIGZ1bmN0aW9uIHRlc3RBcnJheVB1dEdldCh2
YWx1ZSwga2V5LCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGRlYnVnKCJ0ZXN0aW5nIGFycmF5
IGtleTogIiArIGtleSk7CisgICAgICAgIHB1dHJlcSA9IGV2YWxBbmRMb2coInN0b3JlLnB1dCgn
IiArIHZhbHVlICsgIicsICIgKyBrZXkgKyAiKTsiKTsKKyAgICAgICAgcHV0cmVxLm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcHV0cmVxLm9uc3VjY2VzcyA9IGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgZ2V0cmVxID0gZXZhbEFuZExvZygic3RvcmUuZ2V0KCIg
KyBrZXkgKyAiKTsiKTsKKyAgICAgICAgICAgIGdldHJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisgICAgICAgICAgICBnZXRyZXEub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJnZXRyZXEucmVzdWx0Iiwg
dmFsdWUpOworICAgICAgICAgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgICAgICAgICBjYWxs
YmFjaygpOworICAgICAgICAgICAgfTsKKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBuZXh0VGVzdCgpCisgICAgeworICAgICAgICB2YXIgdGVzdGNhc2UgPSBjYXNlcy5zaGlmdCgp
OworICAgICAgICBpZiAodGVzdGNhc2UpIHsKKyAgICAgICAgICAgIHRlc3RBcnJheVB1dEdldCgi
dmFsdWUiICsgKCsrbiksIHRlc3RjYXNlLCBuZXh0VGVzdCk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBuZXh0VGVzdCgpOworCisgICAgdHJhbnMub25jb21wbGV0ZSA9IHRlc3RJbnZhbGlkQXJy
YXlLZXlzOworfQorCitmdW5jdGlvbiB0ZXN0SW52YWxpZEFycmF5S2V5cygpCit7CisgICAgZXZh
bEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5S
RUFEX1dSSVRFKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUo
J3N0b3JlJykiKTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICBkZWJ1ZygiYXJyYXkgdGhhdCBjb250
YWlucyBpdHNlbGY6IGFycmF5ID0gWyBhcnJheSBdIik7CisgICAgZXZhbEFuZExvZygiY3ljbGlj
X2FycmF5ID0gW107IGN5Y2xpY19hcnJheS5wdXNoKGN5Y2xpY19hcnJheSkiKTsKKyAgICBzaG91
bGRUaHJvdygiSlNPTi5zdHJpbmdpZnkoY3ljbGljX2FycmF5KSIpOworCisgICAgZGVidWcoImFy
cmF5IHRoYXQgY29udGFpbnMgaXRzZWxmLCBvbmUgbGV2ZWwgZG93bjogYXJyYXkgPSBbIFsgYXJy
YXkgXSBdIik7CisgICAgZXZhbEFuZExvZygiY3ljbGljX2FycmF5MiA9IFtdOyBjeWNsaWNfYXJy
YXkyLnB1c2goW2N5Y2xpY19hcnJheTJdKSIpOworICAgIHNob3VsZFRocm93KCJKU09OLnN0cmlu
Z2lmeShjeWNsaWNfYXJyYXkyKSIpOworCisgICAgZGVidWcoImFycmF5IHRoYXQgY29udGFpbnMg
aXRzZWxmLCBub3QgYXMgZmlyc3QgZWxlbWVudDogYXJyYXkgPSBbMSwgJ2InLCBbXSwgYXJyYXld
Iik7CisgICAgZXZhbEFuZExvZygiY3ljbGljX2FycmF5MyA9IFsxLCAnYicsIFtdXTsgY3ljbGlj
X2FycmF5My5wdXNoKGN5Y2xpY19hcnJheTMpIik7CisgICAgc2hvdWxkVGhyb3coIkpTT04uc3Ry
aW5naWZ5KGN5Y2xpY19hcnJheTMpIik7CisgICAgZGVidWcoIiIpOworCisgICAgZGVidWcoImFy
cmF5IHRoYXQgY29udGFpbnMgYXJyYXkgdGhhdCBjb250YWlucyBpdHNlbGYiKTsKKyAgICBldmFs
QW5kTG9nKCJjeWNsaWNfYXJyYXk0ID0gW2N5Y2xpY19hcnJheV07Iik7CisgICAgc2hvdWxkVGhy
b3coIkpTT04uc3RyaW5naWZ5KGN5Y2xpY19hcnJheTQpIik7CisgICAgZGVidWcoIiIpOworCisg
ICAgdmFyIGludmFsaWRLZXlzID0gWworICAgICAgICAiWyB2b2lkIDAgXSIsIC8vIHVuZGVmaW5l
ZAorICAgICAgICAiWyB0cnVlIF0iLAorICAgICAgICAiWyBmYWxzZSBdIiwKKyAgICAgICAgIlsg
TmFOIF0iLAorICAgICAgICAiWyBudWxsIF0iLAorICAgICAgICAiWyB7fSBdIiwKKyAgICAgICAg
IlsgZnVuY3Rpb24gKCkge30gXSIsCisgICAgICAgICJbIC9yZWdleC8gXSIsCisgICAgICAgICJb
IHNlbGYgXSIsCisgICAgICAgICJbIHNlbGYuZG9jdW1lbnQgXSIsCisgICAgICAgICJbIHNlbGYu
ZG9jdW1lbnQuYm9keSBdIiwKKyAgICAgICAgImN5Y2xpY19hcnJheSIsCisgICAgICAgICJjeWNs
aWNfYXJyYXkyIiwKKyAgICAgICAgImN5Y2xpY19hcnJheTMiLAorICAgICAgICAiY3ljbGljX2Fy
cmF5NCIsCisgICAgICAgICJBcnJheSgxMDAwKSIgLy8gc3BhcnNlCisgICAgXTsKKworICAgIGlu
dmFsaWRLZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeworICAgICAgICBkZWJ1ZygidGVzdGlu
ZyBpbnZhbGlkIGFycmF5IGtleTogIiArIGtleSk7CisgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oInN0b3JlLnB1dCgndmFsdWUnLCAiICsga2V5ICsgIik7IiwgIklEQkRhdGFiYXNlRXhj
ZXB0aW9uLkRBVEFfRVJSIik7CisgICAgICAgIGRlYnVnKCIiKTsKKyAgICB9KTsKKworICAgIHRl
c3REZXB0aExpbWl0cygpOworfQorCitmdW5jdGlvbiBtYWtlQXJyYXlPZkRlcHRoKG4pCit7Cisg
ICAgdmFyIGFycmF5ID0gW107CisgICAgd2hpbGUgKC0tbikgeworICAgICAgICBhcnJheSA9IFth
cnJheV07CisgICAgfQorICAgIHJldHVybiBhcnJheTsKK30KKworZnVuY3Rpb24gdGVzdERlcHRo
TGltaXRzKCkKK3sKKyAgICBzaG91bGRCZSgiaW5kZXhlZERCLmNtcChtYWtlQXJyYXlPZkRlcHRo
KDI1KSwgMCkiLCAiMSIpOworICAgIHNob3VsZEJlKCJpbmRleGVkREIuY21wKG1ha2VBcnJheU9m
RGVwdGgoMjUwKSwgMCkiLCAiMSIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4
ZWREQi5jbXAobWFrZUFycmF5T2ZEZXB0aCgyNTAwKSwgMCkiLCAiSURCRGF0YWJhc2VFeGNlcHRp
b24uREFUQV9FUlIiKTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30K
KwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXktdHlwZS1pbmZpbml0eS5qcyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXktdHlwZS1pbmZpbml0
eS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kMzM3NmUxMDY3NzMyMDY0NmQ4OGRjOWRhNWQ1ODRiZWNlMmY3MDMw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL2tleS10eXBlLWluZmluaXR5LmpzCkBAIC0wLDAgKzEsNTIgQEAKK2lmICh0aGlzLmltcG9y
dFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQor
CitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIga2V5IHR5cGVzIik7CisKK2Z1bmN0aW9uIHRl
c3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5s
b2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRp
b24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1
Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24o
JzEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdGVzdEdyb3VwMTsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gdGVzdEdy
b3VwMSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0
b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycpOyIpOworICAgIGRl
YnVnKCJ0ZXN0IGtleSBhcyBpbmZpbml0eSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKFtdLCBJbmZpbml0eSk7Iik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSB0ZXN0R3JvdXAyOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiB0ZXN0R3JvdXAyKCkKK3sKKyAgICBkZWJ1Zygi
dGVzdCBrZXkgYXMgbmVnYXRpdmUgaW5maW5pdHkiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChbXSwgLUluZmluaXR5KTsiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IHRlc3RHcm91cDM7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDMoKQoreworICAgIGZp
bmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleXBh
dGgtYmFzaWNzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tl
eXBhdGgtYmFzaWNzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNjNzgxN2JiNmQwNmMwMDQ3NjkwOTBmY2VhNjg4
Yzc5NWE4NTQ4Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMva2V5cGF0aC1iYXNpY3MuanMKQEAgLTAsMCArMSw5MSBAQAoraWYgKHRo
aXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpz
Jyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IGZvciB2YWxpZCBhbmQgaW52YWxpZCBrZXlwYXRo
cyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwor
ICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15
IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Bl
bihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNj
ZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0ZXN0VmFs
aWRLZXlQYXRoczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gdGVzdFZhbGlkS2V5UGF0aHMoKQoreworICAgIGRlbGV0ZUFsbE9i
amVjdFN0b3JlcyhkYik7CisKKyAgICB0ZXN0S2V5UGF0aHMgPSBbbnVsbCwgdW5kZWZpbmVkLCAn
J107CisgICAgdGVzdEtleVBhdGhzLmZvckVhY2goZnVuY3Rpb24gKGtleVBhdGgpIHsKKyAgICAg
ICAgZ2xvYmFsS2V5UGF0aCA9IGtleVBhdGg7CisgICAgICAgIGRlYnVnKCJnbG9iYWxLZXlQYXRo
ID0gJyIgKyBnbG9iYWxLZXlQYXRoICsgIiciKTsKKyAgICAgICAgZXZhbEFuZExvZygiZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDogZ2xvYmFsS2V5UGF0aH0pIik7CisgICAg
ICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisgICAgfSk7CisKKyAgICB0ZXN0S2V5UGF0
aHMgPSBbJ2ZvbycsICdmb28uYmFyLmJheiddOworICAgIHRlc3RLZXlQYXRocy5mb3JFYWNoKGZ1
bmN0aW9uIChrZXlQYXRoKSB7CisgICAgICAgIGdsb2JhbEtleVBhdGggPSBrZXlQYXRoOworICAg
ICAgICBkZWJ1ZygiZ2xvYmFsS2V5UGF0aCA9ICciICsgZ2xvYmFsS2V5UGF0aCArICInIik7Cisg
ICAgICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCduYW1lJywge2tleVBhdGg6
IGdsb2JhbEtleVBhdGh9KSIpOworICAgICAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwor
ICAgIH0pOworCisgICAgdGVzdEtleVBhdGhzID0gW251bGwsIHVuZGVmaW5lZCwgJycsICdmb28n
LCAnZm9vLmJhci5iYXonXTsKKyAgICB0ZXN0S2V5UGF0aHMuZm9yRWFjaChmdW5jdGlvbiAoa2V5
UGF0aCkgeworICAgICAgICBnbG9iYWxLZXlQYXRoID0ga2V5UGF0aDsKKyAgICAgICAgZGVidWco
Imdsb2JhbEtleVBhdGggPSAnIiArIGdsb2JhbEtleVBhdGggKyAiJyIpOworICAgICAgICBzdG9y
ZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScp
Iik7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCduYW1lJywgZ2xvYmFs
S2V5UGF0aCkiKTsKKyAgICAgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKyAgICB9KTsK
KworICAgIHRlc3RJbnZhbGlkS2V5UGF0aHMoKTsKK30KKworZnVuY3Rpb24gdGVzdEludmFsaWRL
ZXlQYXRocygpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIHRlc3RL
ZXlQYXRocyA9IFsnW10nLCAnWyJmb28iXScsICdbImZvbyIsICJiYXIiXScsICdbIiIsICIiXScs
ICdbMS4wLCAyLjBdJywgJ1tbImZvbyJdXScsICdbImZvbyIsIFsiYmFyIl1dJ107CisgICAgdGVz
dEtleVBhdGhzLmZvckVhY2goZnVuY3Rpb24gKGtleVBhdGgpIHsKKyAgICAgICAgZ2xvYmFsS2V5
UGF0aCA9IGtleVBhdGg7CisgICAgICAgIGRlYnVnKCJnbG9iYWxLZXlQYXRoID0gJyIgKyBnbG9i
YWxLZXlQYXRoICsgIiciKTsKKyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDogZ2xvYmFsS2V5UGF0aH0pIiwgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLk5PTl9UUkFOU0lFTlRfRVJSIik7CisgICAgICAgIGRlbGV0ZUFsbE9i
amVjdFN0b3JlcyhkYik7CisgICAgfSk7CisKKyAgICB0ZXN0S2V5UGF0aHMgPSBbJyAnLCAnZm9v
ICcsICdmb28gYmFyJywgJ2Zvby4gYmFyJywgJ2ZvbyAuYmFyJywgJ2Zvby4uYmFyJywgJytmb28n
LCAnZm9vJSddOworICAgIHRlc3RLZXlQYXRocy5mb3JFYWNoKGZ1bmN0aW9uIChrZXlQYXRoKSB7
CisgICAgICAgIGdsb2JhbEtleVBhdGggPSBrZXlQYXRoOworICAgICAgICBkZWJ1ZygiZ2xvYmFs
S2V5UGF0aCA9ICciICsgZ2xvYmFsS2V5UGF0aCArICInIik7CisgICAgICAgIGV2YWxBbmRFeHBl
Y3RFeGNlcHRpb24oImRiLmNyZWF0ZU9iamVjdFN0b3JlKCduYW1lJywge2tleVBhdGg6IGdsb2Jh
bEtleVBhdGh9KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT05fVFJBTlNJRU5UX0VSUiIpOwor
ICAgICAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworICAgIH0pOworCisgICAgdGVzdEtl
eVBhdGhzID0gWycgJywgJ2ZvbyAnLCAnZm9vIGJhcicsICdmb28uIGJhcicsICdmb28gLmJhcics
ICdmb28uLmJhcicsICcrZm9vJywgJ2ZvbyUnXTsKKyAgICB0ZXN0S2V5UGF0aHMuZm9yRWFjaChm
dW5jdGlvbiAoa2V5UGF0aCkgeworICAgICAgICBnbG9iYWxLZXlQYXRoID0ga2V5UGF0aDsKKyAg
ICAgICAgZGVidWcoImdsb2JhbEtleVBhdGggPSAnIiArIGdsb2JhbEtleVBhdGggKyAiJyIpOwor
ICAgICAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUo
J3N0b3JlTmFtZScpIik7CisgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmNy
ZWF0ZUluZGV4KCduYW1lJywgZ2xvYmFsS2V5UGF0aCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24u
Tk9OX1RSQU5TSUVOVF9FUlIiKTsKKyAgICAgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsK
KyAgICB9KTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL2tleXBhdGgtZWRnZXMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMva2V5cGF0aC1lZGdlcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYmYxMWJiNmRjZTI3
NjQ3MTEwNWI4M2UxY2Q0OTQxMjJmYzhiNTAxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleXBhdGgtZWRnZXMuanMKQEAgLTAsMCAr
MSwxMTAgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcu
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNj
cmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIga2V5
UGF0aCBlZGdlIGNhc2VzIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRv
clByZWZpeGVzKCk7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0
ZURhdGFiYXNlKCdrZXlwYXRoLWVkZ2VzJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdrZXlwYXRo
LWVkZ2VzJykiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgfTsK
K30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1
Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFy
Z2V0LnJlc3VsdCIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0
VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgIHRy
YW5zYWN0aW9uID0gcmVxdWVzdC5yZXN1bHQ7CisgICAgICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQg
PSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICAgICAgZXZhbEFuZExvZygiZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ3N0b3JlLXdpdGgtcGF0aCcsIHtrZXlQYXRoOiAnZm9vJ30pIik7CisgICAg
ICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZS13aXRoLXBhdGgtYW5k
LWdlbmVyYXRvcicsIHtrZXlQYXRoOiAnZm9vJywgYXV0b0luY3JlbWVudDogdHJ1ZX0pIik7Cisg
ICAgICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB0ZXN0S2V5UGF0aHM7CisgICAgfTsKK30K
KworZnVuY3Rpb24gdGVzdEtleVBhdGhzKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWco
InRlc3RLZXlQYXRocygpOiIpOworCisgICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFu
c2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUtd2l0aC1wYXRoJ10sIElEQlRyYW5zYWN0
aW9uLlJFQURfV1JJVEUpIik7CisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5z
YWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZS13aXRoLXBhdGgnKSIpOworCisgICAgZGVidWcoIiIp
OworICAgIGRlYnVnKCJLZXkgcGF0aCBkb2Vzbid0IHJlc29sdmUgdG8gYSB2YWx1ZTsgc2hvdWxk
IHlpZWxkIG51bGwsIHNob3VsZCB0aHJvdyBEQVRBX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RF
eGNlcHRpb24oInN0b3JlLnB1dChudWxsKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VS
UiIpOworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJLZXkgcGF0aCBkb2Vzbid0IHJlc29s
dmUgdG8gYSB2YWx1ZTsgc2hvdWxkIHlpZWxkIG51bGwsIHNob3VsZCB0aHJvdyBEQVRBX0VSUiIp
OworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLnB1dCh7fSkiLCAiSURCRGF0YWJh
c2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiS2V5
IHBhdGggcmVzb2x2ZXMgdG8gYSB2YWx1ZSB0aGF0IGlzIGludmFsaWQga2V5OyBzaG91bGQgeWll
bGQgJ2ludmFsaWQnIGtleSwgc2hvdWxkIHRocm93IERBVEFfRVJSIik7CisgICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KHtmb286IG51bGx9KSIsICJJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5EQVRBX0VSUiIpOworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJLZXkgcGF0aCBy
ZXNvbHZlcyB0byBhIHZhbHVlIHRoYXQgaXMgdmFsaWQga2V5OyBzaG91bGQgeWllbGQgJ3N0cmlu
Zycga2V5LCBzaG91bGQgc3VjY2VlZCIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9y
ZS5wdXQoe2ZvbzogJ3pvbyd9KSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAg
ICAgICB0ZXN0UGFzc2VkKCJzdG9yZS5wdXQgc3VjY2VlZGVkIik7CisgICAgfTsKKworICAgIHRy
YW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFuc2Fj
dGlvbi5vbmNvbXBsZXRlID0gdGVzdEtleVBhdGhzQW5kR2VuZXJhdG9yOworfQorCitmdW5jdGlv
biB0ZXN0S2V5UGF0aHNBbmRHZW5lcmF0b3IoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1
ZygidGVzdEtleVBhdGhzQW5kR2VuZXJhdG9yKCk6Iik7CisKKyAgICB0cmFuc2FjdGlvbiA9IGV2
YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZS13aXRoLXBhdGgt
YW5kLWdlbmVyYXRvciddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIHN0b3Jl
ID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUtd2l0
aC1wYXRoLWFuZC1nZW5lcmF0b3InKSIpOworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJL
ZXkgcGF0aCBkb2Vzbid0IHJlc29sdmUgdG8gYSB2YWx1ZTsgc2hvdWxkIHlpZWxkIG51bGwgYnV0
IGluc2VydGlvbiB3b3VsZCBmYWlsLCBzbyBwdXQgcmVxdWVzdCBzaG91bGQgcmFpc2UgZXhjZXB0
aW9uIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KG51bGwpIiwgIklE
QkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVi
dWcoIktleSBwYXRoIGRvZXNuJ3QgcmVzb2x2ZSB0byBhIHZhbHVlOyBzaG91bGQgeWllbGQgbnVs
bCBidXQgaW5zZXJ0aW9uIHdvdWxkIGZhaWwsIHNvIHB1dCByZXF1ZXN0IHNob3VsZCByYWlzZSBl
eGNlcHRpb24iKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5wdXQoJ3N0cmlu
ZycpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICBkZWJ1ZygiIik7
CisgICAgZGVidWcoIktleSBwYXRoIGRvZXNuJ3QgcmVzb2x2ZSB0byBhIHZhbHVlOyBzaG91bGQg
eWllbGQgbnVsbCwga2V5IHNob3VsZCBiZSBnZW5lcmF0ZWQsIHB1dCByZXF1ZXN0IHNob3VsZCBz
dWNjZWVkIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLnB1dCh7fSkiKTsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgic3RvcmUucHV0
IHN1Y2NlZWRlZCIpOworCisgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgZGVidWcoIktleSBw
YXRoIHJlc29sdmVzIHRvIGEgdmFsdWUgdGhhdCBpcyBpbnZhbGlkIGtleTsgc2hvdWxkIHlpZWxk
ICdpbnZhbGlkJyBrZXksIHNob3VsZCB0aHJvdyBEQVRBX0VSUiIpOworICAgICAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5wdXQoe2ZvbzogbnVsbH0pIiwgIklEQkRhdGFiYXNlRXhj
ZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICAgICAgZGVidWcoIiIpOworICAgICAgICBkZWJ1Zygi
S2V5IHBhdGggcmVzb2x2ZXMgdG8gYSB2YWx1ZSB0aGF0IGlzIHZhbGlkIGtleTsgc2hvdWxkIHlp
ZWxkICdzdHJpbmcnIGtleSwgc2hvdWxkIHN1Y2NlZWQiKTsKKyAgICAgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInN0b3JlLnB1dCh7Zm9vOiAnem9vJ30pIik7CisgICAgICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoInN0b3JlLnB1dCBzdWNj
ZWVkZWQiKTsKKworICAgICAgICB9OworICAgIH07CisKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0
ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9
IGZpbmlzaEpTVGVzdDsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXlw
YXRoLWZldGNoLWtleS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9rZXlwYXRoLWZldGNoLWtleS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDIzMzUzYzMzNjQ0MTQwYmFmYzc2
YmM0Nzk3YWFlYzQxZTVhM2Q3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleXBhdGgtZmV0Y2gta2V5LmpzCkBAIC0wLDAgKzEsODIg
QEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMo
J3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIga2V5UGF0aHMi
KTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKwor
ICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15
IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Bl
bihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNj
ZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisKKyAgICB0ZXN0RGF0YSA9IFt7IG5hbWU6ICJzaW1w
bGUgaWRlbnRpZmllciIsCisgICAgICAgICAgICAgICAgICB2YWx1ZToge2lkOjEwfSwKKyAgICAg
ICAgICAgICAgICAgIGtleVBhdGg6ICJpZCIsCisgICAgICAgICAgICAgICAgICBrZXk6IDEwIH0s
CisgICAgICAgICAgICAgICAgeyBuYW1lOiAic2ltcGxlIGlkZW50aWZpZXJzIiwKKyAgICAgICAg
ICAgICAgICAgIHZhbHVlOiB7aWQxOjEwLCBpZDI6MjB9LAorICAgICAgICAgICAgICAgICAga2V5
UGF0aDogImlkMSIsCisgICAgICAgICAgICAgICAgICBrZXk6IDEwIH0sCisgICAgICAgICAgICAg
ICAgeyBuYW1lOiAibmVzdGVkIGlkZW50aWZpZXJzIiwKKyAgICAgICAgICAgICAgICAgIHZhbHVl
OiB7b3V0ZXI6e2lubmVyOjEwfX0sCisgICAgICAgICAgICAgICAgICBrZXlQYXRoOiAib3V0ZXIu
aW5uZXIiLAorICAgICAgICAgICAgICAgICAga2V5OiAxMCB9LAorICAgICAgICAgICAgICAgIHsg
bmFtZTogIm5lc3RlZCBpZGVudGlmaWVycyB3aXRoIGRpc3RyYWN0aW9ucyIsCisgICAgICAgICAg
ICAgICAgICB2YWx1ZToge291dGVyOntpbm5lcjoxMH0sIGlubmVyOntvdXRlcjoyMH19LAorICAg
ICAgICAgICAgICAgICAga2V5UGF0aDogIm91dGVyLmlubmVyIiwKKyAgICAgICAgICAgICAgICAg
IGtleTogMTAgfSwKKyAgICBdOworICAgIG5leHRUb09wZW4gPSAwOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZTsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY3JlYXRlQW5kUG9w
dWxhdGVPYmplY3RTdG9yZSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0aW5n
ICIgKyB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1lKTsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0
b3JlcyhkYik7CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUodGVzdERhdGFbbmV4dFRvT3Blbl0ubmFtZSwge2tleVBhdGg6
IHRlc3REYXRhW25leHRUb09wZW5dLmtleVBhdGh9KTsiKTsKKyAgICByZXN1bHQgPSBldmFsQW5k
TG9nKCJyZXN1bHQgPSBvYmplY3RTdG9yZS5hZGQodGVzdERhdGFbbmV4dFRvT3Blbl0udmFsdWUp
OyIpOworICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAg
cmVzdWx0Lm9uc3VjY2VzcyA9IG9wZW5DdXJzb3I7Cit9CisKK2Z1bmN0aW9uIG9wZW5DdXJzb3Io
KQoreworICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coInJlc3VsdCA9IG9iamVjdFN0b3JlLm9wZW5D
dXJzb3IoKTsiKTsKKyAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBjaGVja0N1cnNvcjsKK30KKworZnVuY3Rpb24gY2hl
Y2tDdXJzb3IoKQoreworICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRh
cmdldC5yZXN1bHQ7Iik7CisgICAgaWYgKGN1cnNvcikgeworICAgICAgICBzaG91bGRCZSgiY3Vy
c29yLmtleSIsICJ0ZXN0RGF0YVtuZXh0VG9PcGVuXS5rZXkiKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICB0ZXN0RmFpbGVkKCJjdXJzb3IgaXMgbnVsbCIpOworICAgIH0KKyAgICBpZiAoKytuZXh0
VG9PcGVuIDwgdGVzdERhdGEubGVuZ3RoKSB7CisgICAgICAgIGNyZWF0ZUFuZFBvcHVsYXRlT2Jq
ZWN0U3RvcmUoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9
Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5cmFuZ2UtcmVxdWlyZWQt
YXJndW1lbnRzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tl
eXJhbmdlLXJlcXVpcmVkLWFyZ3VtZW50cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MTMyMDk5MDI1YmY1N2Y1
N2VmOWViZGNkZDQ4ZDM3MGMwYmVmZjdiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleXJhbmdlLXJlcXVpcmVkLWFyZ3VtZW50cy5q
cwpAQCAtMCwwICsxLDIxIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0
U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAg
ICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5k
ZXhlZERCIGtleXJhbmdlIHJlcXVpcmVkIGFyZ3VtZW50cyIpOworCitmdW5jdGlvbiB0ZXN0KCkK
K3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgc2hvdWxkVGhyb3coIklEQktl
eVJhbmdlLm9ubHkoKTsiKTsKKyAgICBzaG91bGRUaHJvdygiSURCS2V5UmFuZ2UubG93ZXJCb3Vu
ZCgpOyIpOworICAgIHNob3VsZFRocm93KCJJREJLZXlSYW5nZS51cHBlckJvdW5kKCk7Iik7Cisg
ICAgc2hvdWxkVGhyb3coIklEQktleVJhbmdlLmJvdW5kKDEpOyIpOworICAgIHNob3VsZFRocm93
KCJJREJLZXlSYW5nZS5ib3VuZCgpOyIpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rl
c3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5cmFuZ2UuanMgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5cmFuZ2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzJmNWY2
NTY2ZDYxODFjOTA4YTM0NzAyMTZiOGYzMDk0NTVjZTdmNAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXlyYW5nZS5qcwpAQCAtMCww
ICsxLDE4NyBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMo
Jy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0
U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidz
IEtleVJhbmdlLiIpOworCitmdW5jdGlvbiBjaGVja1NpbmdsZUtleVJhbmdlKHZhbHVlKQorewor
ICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygiSURCS2V5UmFuZ2Uub25seSgiICsgdmFsdWUgKyAi
KSIpOworICAgIHNob3VsZEJlKCJrZXlSYW5nZS5sb3dlciIsICIiICsgdmFsdWUpOworICAgIHNo
b3VsZEJlKCJrZXlSYW5nZS51cHBlciIsICIiICsgdmFsdWUpOworICAgIHNob3VsZEJlRmFsc2Uo
ImtleVJhbmdlLmxvd2VyT3BlbiIpOworICAgIHNob3VsZEJlRmFsc2UoImtleVJhbmdlLnVwcGVy
T3BlbiIpOworfQorCitmdW5jdGlvbiBjaGVja0xvd2VyQm91bmRLZXlSYW5nZSh2YWx1ZSwgb3Bl
bikKK3sKKyAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coIklEQktleVJhbmdlLmxvd2VyQm91bmQo
IiArIHZhbHVlICsgIiwiICsgb3BlbiArICIpIik7CisgICAgc2hvdWxkQmUoImtleVJhbmdlLmxv
d2VyIiwgIiIgKyB2YWx1ZSk7CisgICAgaWYgKG9wZW4gPT09IHVuZGVmaW5lZCkKKyAgICAgICAg
b3BlbiA9IGZhbHNlOworICAgIHNob3VsZEJlKCJrZXlSYW5nZS5sb3dlck9wZW4iLCAiIiArIG9w
ZW4pOworICAgIHNob3VsZEJlTnVsbCgia2V5UmFuZ2UudXBwZXIiKTsKKyAgICBzaG91bGRCZUZh
bHNlKCJrZXlSYW5nZS51cHBlck9wZW4iKTsKK30KKworZnVuY3Rpb24gY2hlY2tVcHBlckJvdW5k
S2V5UmFuZ2UodmFsdWUsIG9wZW4pCit7CisgICAga2V5UmFuZ2UgPSBldmFsQW5kTG9nKCJJREJL
ZXlSYW5nZS51cHBlckJvdW5kKCIgKyB2YWx1ZSArICIsIiArIG9wZW4gKyAiKSIpOworICAgIHNo
b3VsZEJlKCJrZXlSYW5nZS51cHBlciIsICIiICsgdmFsdWUpOworICAgIGlmIChvcGVuID09PSB1
bmRlZmluZWQpCisgICAgICAgIG9wZW4gPSBmYWxzZTsKKyAgICBzaG91bGRCZSgia2V5UmFuZ2Uu
dXBwZXJPcGVuIiwgIiIgKyBvcGVuKTsKKyAgICBzaG91bGRCZU51bGwoImtleVJhbmdlLmxvd2Vy
Iik7CisgICAgc2hvdWxkQmVGYWxzZSgia2V5UmFuZ2UubG93ZXJPcGVuIik7Cit9CisKK2Z1bmN0
aW9uIGNoZWNrQm91bmRLZXlSYW5nZShsb3dlciwgdXBwZXIsIGxvd2VyT3BlbiwgdXBwZXJPcGVu
KQoreworICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygiSURCS2V5UmFuZ2UuYm91bmQoIiArIGxv
d2VyICsgIiwiICsgdXBwZXIgKyAiLCAiICsgbG93ZXJPcGVuICsgIiwgIiArIHVwcGVyT3BlbiAr
ICIpIik7CisgICAgc2hvdWxkQmUoImtleVJhbmdlLmxvd2VyIiwgIiIgKyBsb3dlcik7CisgICAg
c2hvdWxkQmUoImtleVJhbmdlLnVwcGVyIiwgIiIgKyB1cHBlcik7CisgICAgaWYgKGxvd2VyT3Bl
biA9PT0gdW5kZWZpbmVkKQorICAgICAgICBsb3dlck9wZW4gPSBmYWxzZTsKKyAgICBpZiAodXBw
ZXJPcGVuID09PSB1bmRlZmluZWQpCisgICAgICAgIHVwcGVyT3BlbiA9IGZhbHNlOworICAgIHNo
b3VsZEJlKCJrZXlSYW5nZS5sb3dlck9wZW4iLCAiIiArIGxvd2VyT3Blbik7CisgICAgc2hvdWxk
QmUoImtleVJhbmdlLnVwcGVyT3BlbiIsICIiICsgdXBwZXJPcGVuKTsKK30KKworZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBzaG91bGRCZUZhbHNl
KCInbG93ZXInIGluIElEQktleVJhbmdlIik7CisgICAgc2hvdWxkQmVGYWxzZSgiJ3VwcGVyJyBp
biBJREJLZXlSYW5nZSIpOworICAgIHNob3VsZEJlRmFsc2UoIidsb3dlck9wZW4nIGluIElEQktl
eVJhbmdlIik7CisgICAgc2hvdWxkQmVGYWxzZSgiJ3VwcGVyT3BlbicgaW4gSURCS2V5UmFuZ2Ui
KTsKKyAgICBzaG91bGRCZVRydWUoIidvbmx5JyBpbiBJREJLZXlSYW5nZSIpOworICAgIHNob3Vs
ZEJlVHJ1ZSgiJ2xvd2VyQm91bmQnIGluIElEQktleVJhbmdlIik7CisgICAgc2hvdWxkQmVUcnVl
KCIndXBwZXJCb3VuZCcgaW4gSURCS2V5UmFuZ2UiKTsKKyAgICBzaG91bGRCZVRydWUoIidib3Vu
ZCcgaW4gSURCS2V5UmFuZ2UiKTsKKworICAgIGRlYnVnKCIiKTsKKworICAgIHZhciBpbnN0YW5j
ZSA9IGV2YWxBbmRMb2coImluc3RhbmNlID0gSURCS2V5UmFuZ2Uub25seSgxKSIpOworICAgIHNo
b3VsZEJlVHJ1ZSgiJ2xvd2VyJyBpbiBpbnN0YW5jZSIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ3Vw
cGVyJyBpbiBpbnN0YW5jZSIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ2xvd2VyT3BlbicgaW4gaW5z
dGFuY2UiKTsKKyAgICBzaG91bGRCZVRydWUoIid1cHBlck9wZW4nIGluIGluc3RhbmNlIik7Cisg
ICAgc2hvdWxkQmVGYWxzZSgiJ29ubHknIGluIGluc3RhbmNlIik7CisgICAgc2hvdWxkQmVGYWxz
ZSgiJ2xvd2VyQm91bmQnIGluIGluc3RhbmNlIik7CisgICAgc2hvdWxkQmVGYWxzZSgiJ3VwcGVy
Qm91bmQnIGluIGluc3RhbmNlIik7CisgICAgc2hvdWxkQmVGYWxzZSgiJ2JvdW5kJyBpbiBpbnN0
YW5jZSIpOworCisgICAgZGVidWcoIiIpOworCisgICAgY2hlY2tTaW5nbGVLZXlSYW5nZSgxKTsK
KyAgICBjaGVja1NpbmdsZUtleVJhbmdlKDMuMTQpOworICAgIGNoZWNrU2luZ2xlS2V5UmFuZ2Uo
IidhJyIpOworCisgICAgY2hlY2tMb3dlckJvdW5kS2V5UmFuZ2UoMTAsIHRydWUpOworICAgIGNo
ZWNrTG93ZXJCb3VuZEtleVJhbmdlKDExLCBmYWxzZSk7CisgICAgY2hlY2tMb3dlckJvdW5kS2V5
UmFuZ2UoMTIpOworICAgIGNoZWNrTG93ZXJCb3VuZEtleVJhbmdlKDEwLjEsIHRydWUpOworICAg
IGNoZWNrTG93ZXJCb3VuZEtleVJhbmdlKDExLjIsIGZhbHNlKTsKKyAgICBjaGVja0xvd2VyQm91
bmRLZXlSYW5nZSgxMi4zKTsKKyAgICBjaGVja0xvd2VyQm91bmRLZXlSYW5nZSgiJ2FhJyIsIHRy
dWUpOworICAgIGNoZWNrTG93ZXJCb3VuZEtleVJhbmdlKCInYWInIiwgZmFsc2UpOworICAgIGNo
ZWNrTG93ZXJCb3VuZEtleVJhbmdlKCInYWMnIik7CisKKyAgICBjaGVja1VwcGVyQm91bmRLZXlS
YW5nZSgyMCwgdHJ1ZSk7CisgICAgY2hlY2tVcHBlckJvdW5kS2V5UmFuZ2UoMjEsIGZhbHNlKTsK
KyAgICBjaGVja1VwcGVyQm91bmRLZXlSYW5nZSgyMik7CisgICAgY2hlY2tVcHBlckJvdW5kS2V5
UmFuZ2UoMjAuMiwgdHJ1ZSk7CisgICAgY2hlY2tVcHBlckJvdW5kS2V5UmFuZ2UoMjEuMywgZmFs
c2UpOworICAgIGNoZWNrVXBwZXJCb3VuZEtleVJhbmdlKDIyLjQpOworICAgIGNoZWNrVXBwZXJC
b3VuZEtleVJhbmdlKCInYmEnIiwgdHJ1ZSk7CisgICAgY2hlY2tVcHBlckJvdW5kS2V5UmFuZ2Uo
IidiYiciLCBmYWxzZSk7CisgICAgY2hlY2tVcHBlckJvdW5kS2V5UmFuZ2UoIidiYyciKTsKKwor
ICAgIGNoZWNrQm91bmRLZXlSYW5nZSgzMCwgNDApOworICAgIGNoZWNrQm91bmRLZXlSYW5nZSgz
MSwgNDEsIGZhbHNlLCBmYWxzZSk7CisgICAgY2hlY2tCb3VuZEtleVJhbmdlKDMyLCA0MiwgZmFs
c2UsIHRydWUpOworICAgIGNoZWNrQm91bmRLZXlSYW5nZSgzMywgNDMsIHRydWUsIGZhbHNlKTsK
KyAgICBjaGVja0JvdW5kS2V5UmFuZ2UoMzQsIDQ0LCB0cnVlLCB0cnVlKTsKKworICAgIGNoZWNr
Qm91bmRLZXlSYW5nZSgzMC4xLCA0MC4yKTsKKyAgICBjaGVja0JvdW5kS2V5UmFuZ2UoMzEuMywg
NDEuNCwgZmFsc2UsIGZhbHNlKTsKKyAgICBjaGVja0JvdW5kS2V5UmFuZ2UoMzIuNSwgNDIuNiwg
ZmFsc2UsIHRydWUpOworICAgIGNoZWNrQm91bmRLZXlSYW5nZSgzMy43LCA0My44LCB0cnVlLCBm
YWxzZSk7CisgICAgY2hlY2tCb3VuZEtleVJhbmdlKDM0LjksIDQ0LjAsIHRydWUsIHRydWUpOwor
CisgICAgY2hlY2tCb3VuZEtleVJhbmdlKCInYWFhJyIsICInYWJhJyIsIGZhbHNlLCBmYWxzZSk7
CisgICAgY2hlY2tCb3VuZEtleVJhbmdlKCInYWFiJyIsICInYWJiJyIpOworICAgIGNoZWNrQm91
bmRLZXlSYW5nZSgiJ2FhYyciLCAiJ2FiYyciLCBmYWxzZSwgZmFsc2UpOworICAgIGNoZWNrQm91
bmRLZXlSYW5nZSgiJ2FhZCciLCAiJ2FiZCciLCBmYWxzZSwgdHJ1ZSk7CisgICAgY2hlY2tCb3Vu
ZEtleVJhbmdlKCInYWFlJyIsICInYWJlJyIsIHRydWUsIGZhbHNlKTsKKyAgICBjaGVja0JvdW5k
S2V5UmFuZ2UoIidhYWYnIiwgIidhYmYnIiwgdHJ1ZSwgdHJ1ZSk7CisKKyAgICB0cnkgeworICAg
ICAgICBkZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIG9ubHkoe30pIik7CisgICAg
ICAgIElEQktleVJhbmdlLm9ubHkoe30pOworICAgICAgICB0ZXN0RmFpbGVkKCJObyBleGNlcHRp
b24gdGhyb3duIik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICB0ZXN0UGFzc2VkKCJDYXVn
aHQgZXhjZXB0aW9uOiAiICsgZS50b1N0cmluZygpKTsKKyAgICB9CisKKyAgICB0cnkgeworICAg
ICAgICBkZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIHVwcGVyQm91bmQoe30pIik7
CisgICAgICAgIElEQktleVJhbmdlLnVwcGVyQm91bmQoe30pOworICAgICAgICB0ZXN0RmFpbGVk
KCJObyBleGNlcHRpb24gdGhyb3duIik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICB0ZXN0
UGFzc2VkKCJDYXVnaHQgZXhjZXB0aW9uOiAiICsgZS50b1N0cmluZygpKTsKKyAgICB9CisKKyAg
ICB0cnkgeworICAgICAgICBkZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIGxvd2Vy
Qm91bmQoe30pIik7CisgICAgICAgIElEQktleVJhbmdlLmxvd2VyQm91bmQoe30pOworICAgICAg
ICB0ZXN0RmFpbGVkKCJObyBleGNlcHRpb24gdGhyb3duIik7CisgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICB0ZXN0UGFzc2VkKCJDYXVnaHQgZXhjZXB0aW9uOiAiICsgZS50b1N0cmluZygpKTsK
KyAgICB9CisKKyAgICB0cnkgeworICAgICAgICBkZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtl
eSBpbnRvIGJvdW5kKG51bGwsIHt9KSIpOworICAgICAgICBJREJLZXlSYW5nZS5ib3VuZChudWxs
LCB7fSk7CisgICAgICAgIHRlc3RGYWlsZWQoIk5vIGV4Y2VwdGlvbiB0aHJvd24iKTsKKyAgICB9
IGNhdGNoIChlKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkNhdWdodCBleGNlcHRpb246ICIgKyBl
LnRvU3RyaW5nKCkpOworICAgIH0KKworICAgIHRyeSB7CisgICAgICAgIGRlYnVnKCJQYXNzaW5n
IGFuIGludmFsaWQga2V5IGludG8gYm91bmQoe30sbnVsbCkiKTsKKyAgICAgICAgSURCS2V5UmFu
Z2UuYm91bmQoe30sIG51bGwpOworICAgICAgICB0ZXN0RmFpbGVkKCJObyBleGNlcHRpb24gdGhy
b3duIik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICB0ZXN0UGFzc2VkKCJDYXVnaHQgZXhj
ZXB0aW9uOiAiICsgZS50b1N0cmluZygpKTsKKyAgICB9CisKKyAgICB0cnkgeworICAgICAgICBk
ZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIGJvdW5kKHt9LCB7fSkiKTsKKyAgICAg
ICAgSURCS2V5UmFuZ2UuYm91bmQoe30sIHt9KTsKKyAgICAgICAgdGVzdEZhaWxlZCgiTm8gZXhj
ZXB0aW9uIHRocm93biIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgi
Q2F1Z2h0IGV4Y2VwdGlvbjogIiArIGUudG9TdHJpbmcoKSk7CisgICAgfQorCisgICAgZGVidWco
Ikxvd2VyIGtleSBncmVhdGVyIHRoYW4gaGlnaGVyIGtleSwgYm91bmQoNCwgMykiKTsKKyAgICBl
dmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJJREJLZXlSYW5nZS5ib3VuZCg0LCAzKSIsICJJREJEYXRh
YmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworCisgICAgZGVidWcoIkVxdWFsIGtleXMsIGVpdGhl
ciBvZiB0aGUgYm91bmRzIGlzIG9wZW4sIGJvdW5kKDQsIDQsIHRydWUsIGZhbHNlKSIpOworICAg
IGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIklEQktleVJhbmdlLmJvdW5kKDQsIDQsIHRydWUsIGZh
bHNlKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworCisgICAgZGVidWcoIkVx
dWFsIGtleXMsIGVpdGhlciBvZiB0aGUgYm91bmRzIGlzIG9wZW4sIGJvdW5kKDQsIDQsIGZhbHNl
LCB0cnVlKSIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIklEQktleVJhbmdlLmJvdW5k
KDQsIDQsIGZhbHNlLCB0cnVlKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwor
CisgICAgZGVidWcoIkVxdWFsIGtleXMsIGVpdGhlciBvZiB0aGUgYm91bmRzIGlzIG9wZW4sIGJv
dW5kKDQsIDQsIHRydWUsIHRydWUpIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiSURC
S2V5UmFuZ2UuYm91bmQoNCwgNCwgdHJ1ZSwgdHJ1ZSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24u
REFUQV9FUlIiKTsKKworICAgIGRlYnVnKCJFcXVhbCBrZXlzLCBub25lIG9mIHRoZSBib3VuZHMg
aXMgb3BlbiwgYm91bmQoNCwgNCwgZmFsc2UsIGZhbHNlKSIpOworICAgIElEQktleVJhbmdlLmJv
dW5kKDQsIDQsIGZhbHNlLCBmYWxzZSk7Cit9CisKK3Rlc3QoKTsKKworZmluaXNoSlNUZXN0KCk7
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2xpc3Qtb3JkZXJpbmcuanMgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvbGlzdC1vcmRlcmluZy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
MzU5OGZkNzIzNTg2MGVkYTc4YjJmMTcxZWUxNGRiMGMwYzFhY2NmCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2xpc3Qtb3JkZXJpbmcu
anMKQEAgLTAsMCArMSw4NCBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9y
dFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Cisg
ICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IHN0
cmluZyBsaXN0IG9yZGVyaW5nIGluIEluZGV4ZWREQi4iKTsKKwordmFyIGV4cGVjdGVkX29yZGVy
ID0gWworICAiIiwKKyAgIlx4MDAiLCAvLyAnTlVMTCcgKFUrMDAwMCkKKyAgIjAiLAorICAiMSIs
CisgICJBIiwKKyAgIkIiLAorICAiYSIsCisgICJiIiwKKyAgIlx4N0YiLCAvLyAnREVMRVRFJyAo
VSswMDdGKQorICAiXHhDMCIsIC8vICdMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggR1JBVkUn
IChVKzAwQzApCisgICJceEMxIiwgLy8gJ0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBBQ1VU
RScgKFUrMDBDMSkKKyAgIlx4RTAiLCAvLyAnTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBHUkFW
RScgKFUrMDBFMCkKKyAgIlx4RTEiLCAvLyAnTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBBQ1VU
RScgKFUrMDBFMSkKKyAgIlx4RkYiLCAvLyAnTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBESUFF
UkVTSVMnIChVKzAwRkYpCisgICJcdTAxMDAiLCAvLyAnTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBX
SVRIIE1BQ1JPTicgKFUrMDEwMCkKKyAgIlx1MTAwMCIsIC8vICdNWUFOTUFSIExFVFRFUiBLQScg
KFUrMTAwMCkKKyAgIlx1RDgzNFx1REQxRSIsIC8vICdNVVNJQ0FMIFNZTUJPTCBHLUNMRUYnIChV
KzFEMTFFKSwgVVRGLTE2IHN1cnJvZ2F0ZSBwYWlycworICAiXHVGRkZEIiAvLyAnUkVQTEFDRU1F
TlQgQ0hBUkFDVEVSJyAoVStGRkZEKQorXTsKK3ZhciBpLCB0bXAsIHBlcm11dGVkX29yZGVyID0g
ZXhwZWN0ZWRfb3JkZXIuc2xpY2UoKTsgcGVybXV0ZWRfb3JkZXIucmV2ZXJzZSgpOworZm9yIChp
ID0gMDsgaSA8IHBlcm11dGVkX29yZGVyLmxlbmd0aCAtIDI7IGkgKz0gMikgeworICAgIHRtcCA9
IHBlcm11dGVkX29yZGVyW2ldOworICAgIHBlcm11dGVkX29yZGVyW2ldID0gcGVybXV0ZWRfb3Jk
ZXJbaSArIDFdOworICAgIHBlcm11dGVkX29yZGVyW2kgKyAxXSA9IHRtcDsKK30KKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBkZWJ1ZygiY2hl
Y2sgdGhhdCB0aGUgZXhwZWN0ZWQgb3JkZXIgaXMgdGhlIGNhbm9uaWNhbCBKUyBzb3J0IG9yZGVy
OiIpOworICAgIGV2YWxBbmRMb2coInNvcnRlZF9vcmRlciA9IGV4cGVjdGVkX29yZGVyLnNsaWNl
KCk7IHNvcnRlZF9vcmRlci5zb3J0KCkiKTsKKyAgICBzaG91bGRCZVRydWUoImFyZUFycmF5c0Vx
dWFsKHNvcnRlZF9vcmRlciwgZXhwZWN0ZWRfb3JkZXIpIik7CisgICAgdGVzdFN0b3Jlc0FuZElu
ZGV4ZXMoKTsKK30KKworZnVuY3Rpb24gdGVzdFN0b3Jlc0FuZEluZGV4ZXMoKQoreworICAgIGRl
YnVnKCIiKTsKKyAgICBkZWJ1ZygidGVzdFN0b3Jlc0FuZEluZGV4ZXMoKToiKTsKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCdsaXN0LW9yZGVyaW5n
JykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdsaXN0LW9yZGVyaW5nJykiKTsKKyAgICAgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgZXZhbEFuZExvZygiZGIgPSBy
ZXF1ZXN0LnJlc3VsdCIpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkYi52
ZXJzaW9uIiwgIiIpOworICAgICAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZl
cnNpb24oJzEnKSIpOworICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUp
IHsKKyAgICAgICAgICAgICAgICB0cmFucyA9IHJlcXVlc3QucmVzdWx0OworCisgICAgICAgICAg
ICAgICAgZGVidWcoIiIpOworICAgICAgICAgICAgICAgIGRlYnVnKCJPYmplY3Qgc3RvcmVzOiIp
OworICAgICAgICAgICAgICAgIHBlcm11dGVkX29yZGVyLmZvckVhY2goZnVuY3Rpb24gKG5hbWUp
IHsKKyAgICAgICAgICAgICAgICAgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUo
IiArIEpTT04uc3RyaW5naWZ5KG5hbWUpICsiKSIpOworICAgICAgICAgICAgICAgIH0pOworCisg
ICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJhcmVBcnJheXNFcXVhbChkYi5vYmplY3RTdG9y
ZU5hbWVzLCBleHBlY3RlZF9vcmRlcikiKTsKKworICAgICAgICAgICAgICAgIGRlYnVnKCIiKTsK
KyAgICAgICAgICAgICAgICBkZWJ1ZygiSW5kZXhlczoiKTsKKyAgICAgICAgICAgICAgICBzdG9y
ZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsK
KyAgICAgICAgICAgICAgICBwZXJtdXRlZF9vcmRlci5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7
CisgICAgICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCIgKyBK
U09OLnN0cmluZ2lmeShuYW1lKSArIiwgJ2tleVBhdGgnKSIpOworICAgICAgICAgICAgICAgIH0p
OworCisgICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJhcmVBcnJheXNFcXVhbChzdG9yZS5p
bmRleE5hbWVzLCBleHBlY3RlZF9vcmRlcikiKTsKKworICAgICAgICAgICAgICAgIHRyYW5zLm9u
Y29tcGxldGUgPSBmaW5pc2hKU1Rlc3Q7CisgICAgICAgICAgICB9OworICAgICAgICB9OworICAg
IH07Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvbXV0YXRpbmctY3Vyc29y
LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL211dGF0aW5nLWN1
cnNvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yN2Q2MWY2Y2M0MGIwNjYwODBhZjExZGU2NTFmMTgzMTE2N2Zh
MGNkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL211dGF0aW5nLWN1cnNvci5qcwpAQCAtMCwwICsxLDEzMiBAQAoraWYgKHRoaXMuaW1w
b3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9
CisKK2Rlc2NyaXB0aW9uKCJUZXN0IG11dGF0aW5nIGFuIEluZGV4ZWREQidzIG9iamVjdHN0b3Jl
IGZyb20gYSBjdXJzb3IuIik7CisKK3Rlc3QoKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAg
cmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhl
ZERCLm9wZW4oJ211dGF0aW5nLWN1cnNvcicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBv
cGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIHZhciBkYiA9IGV2YWxBbmRM
b2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImRiLnNldFZlcnNpb24oJzEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVy
c2lvblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb25TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygic2V0
VmVyc2lvblN1Y2Nlc3MoKToiKTsKKyAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVs
bCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0
cmFucy5vbmNvbXBsZXRlID0gb3BlbkZvcndhcmRDdXJzb3I7CisKKyAgICBkZWxldGVBbGxPYmpl
Y3RTdG9yZXMoZGIpOworCisgICAgdmFyIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0
U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgIGV2YWxBbmRMb2co
Im9iamVjdFN0b3JlLmFkZCgxLCAxKS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2si
KTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoMiwgMikub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrIik7CisgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKDMs
IDMpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2co
Im9iamVjdFN0b3JlLmFkZCg0LCA0KS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2si
KTsKK30KKworZnVuY3Rpb24gb3BlbkZvcndhcmRDdXJzb3IoKQoreworICAgIGRlYnVnKCJvcGVu
Rm9yd2FyZEN1cnNvcigpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlv
bihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgdHJhbnMub25h
Ym9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSBm
b3J3YXJkQ3Vyc29yQ29tcGxldGU7CisKKyAgICBzZWxmLm9iamVjdFN0b3JlID0gZXZhbEFuZExv
ZygidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
Zygib2JqZWN0U3RvcmUub3BlbkN1cnNvcigpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
b3J3YXJkQ3Vyc29yOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworICAgIHNlbGYuY3Vyc29yU3RlcHMgPSAwOworfQorCitmdW5jdGlvbiBmb3J3YXJkQ3Vy
c29yKCkKK3sKKyAgICBkZWJ1ZygiZm9yd2FyZEN1cnNvcigpIik7CisgICAgc2VsZi5jdXJzb3Ig
PSBldmVudC50YXJnZXQucmVzdWx0OworCisgICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0g
bnVsbCkgeworICAgICAgICBzaG91bGRCZSgiY3Vyc29yU3RlcHMiLCAiNSIpOworCisgICAgICAg
IC8vIExldCB0aGUgdHJhbnNhY3Rpb24gZmluaXNoLgorICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgZGVidWcoKytjdXJzb3JTdGVwcyk7CisgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAi
Y3Vyc29yU3RlcHMiKTsKKyAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgImN1cnNvclN0ZXBz
Iik7CisKKyAgICBpZiAoY3Vyc29yU3RlcHMgPT0gMSkgeworICAgICAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiZXZlbnQudGFyZ2V0LnNvdXJjZS5hZGQoNSwgNSkiKTsKKyAgICAgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCki
KTsgfQorICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICB9IGVsc2UgeworICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKSIpOwor
ICAgIH0KK30KKworZnVuY3Rpb24gZm9yd2FyZEN1cnNvckNvbXBsZXRlKCkKK3sKKyAgICBkZWJ1
ZygiZm9yd2FyZEN1cnNvckNvbXBsZXRlKCkiKTsKKyAgICBvcGVuUmV2ZXJzZUN1cnNvcigpCit9
CisKK2Z1bmN0aW9uIG9wZW5SZXZlcnNlQ3Vyc29yKCkKK3sKKyAgICBkZWJ1Zygib3BlblJldmVy
c2VDdXJzb3IoKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydz
dG9yZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIHRyYW5zLm9uYWJvcnQg
PSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gcmV2ZXJz
ZUN1cnNvckNvbXBsZXRlOworCisgICAgc2VsZi5vYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coInRy
YW5zLm9iamVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIm9i
amVjdFN0b3JlLm9wZW5DdXJzb3IobnVsbCwgSURCQ3Vyc29yLlBSRVYpIik7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSByZXZlcnNlQ3Vyc29yOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHNlbGYuY3Vyc29yU3RlcHMgPSA2OworfQorCitmdW5j
dGlvbiByZXZlcnNlQ3Vyc29yKCkKK3sKKyAgICBkZWJ1ZygicmV2ZXJzZUN1cnNvcigpIik7Cisg
ICAgc2VsZi5jdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OworCisgICAgaWYgKGV2ZW50LnRh
cmdldC5yZXN1bHQgPT0gbnVsbCkgeworICAgICAgICBzaG91bGRCZSgiY3Vyc29yU3RlcHMiLCAi
MCIpOworCisgICAgICAgIC8vIExldCB0aGUgdHJhbnNhY3Rpb24gZmluaXNoLgorICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgZGVidWcoLS1jdXJzb3JTdGVwcyk7CisgICAgc2hvdWxkQmUo
ImN1cnNvci5rZXkiLCAiY3Vyc29yU3RlcHMiKTsKKyAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVl
IiwgImN1cnNvclN0ZXBzIik7CisKKyAgICBpZiAoY3Vyc29yU3RlcHMgPT0gMikgeworICAgICAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnNvdXJjZS5hZGQoMCwgMCkiKTsK
KyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgZXZhbEFuZExvZygiY3Vy
c29yLmNvbnRpbnVlKCkiKTsgfQorICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKKyAgICB9IGVsc2UgeworICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3Iu
Y29udGludWUoKSIpOworICAgIH0KK30KKworZnVuY3Rpb24gcmV2ZXJzZUN1cnNvckNvbXBsZXRl
KCkKK3sKKyAgICBkZWJ1ZygicmV2ZXJzZUN1cnNvckNvbXBsZXRlKCkiKTsKKyAgICBmaW5pc2hK
U1Rlc3QoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0U3RvcmUtcmVxdWlyZWQt
YXJndW1lbnRzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29i
amVjdFN0b3JlLXJlcXVpcmVkLWFyZ3VtZW50cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZGY4YjcwNWM4Mjlh
ZWRjNjY5YWIxYWI1MjU2MTJhODZiNjA5OTYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdFN0b3JlLXJlcXVpcmVkLWFyZ3Vt
ZW50cy5qcwpAQCAtMCwwICsxLDQ0IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAg
aW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMn
KTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRl
c3QgSW5kZXhlZERCIG9iamVjdCBzdG9yZSByZXF1aXJlZCBhcmd1bWVudHMiKTsKKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBz
ZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJh
c2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNj
cmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBv
cGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVy
c2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9i
amVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworfQorCitmdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKK3sKKyAgICBk
ZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nKTsiKTsKKyAgICBzaG91
bGRUaHJvdygib2JqZWN0U3RvcmUucHV0KCk7Iik7CisgICAgc2hvdWxkVGhyb3coIm9iamVjdFN0
b3JlLmFkZCgpOyIpOworICAgIHNob3VsZFRocm93KCJvYmplY3RTdG9yZS5kZWxldGUoKTsiKTsK
KyAgICBzaG91bGRUaHJvdygib2JqZWN0U3RvcmUuZ2V0KCk7Iik7CisgICAgc2hvdWxkVGhyb3co
Im9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCk7Iik7CisgICAgc2hvdWxkVGhyb3coIm9iamVjdFN0
b3JlLmNyZWF0ZUluZGV4KCdmb28nKTsiKTsKKyAgICBzaG91bGRUaHJvdygib2JqZWN0U3RvcmUu
aW5kZXgoKTsiKTsKKyAgICBzaG91bGRUaHJvdygib2JqZWN0U3RvcmUuZGVsZXRlSW5kZXgoKTsi
KTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9vYmplY3RzdG9yZS1hdXRvaW5jcmVtZW50LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3JlLWF1dG9pbmNyZW1lbnQuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGIxYjQ5YTMxM2RjZDEwZTM3ZmY2Y2Q3N2JlZmViOGIwNDZjNWRiOQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vYmplY3RzdG9y
ZS1hdXRvaW5jcmVtZW50LmpzCkBAIC0wLDAgKzEsMTkzIEBACitpZiAodGhpcy5pbXBvcnRTY3Jp
cHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVz
Y3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgSURCT2JqZWN0U3RvcmUgYXV0by1pbmNyZW1lbnQg
ZmVhdHVyZS4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4
ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ29iamVjdHN0
b3JlLWF1dG9pbmNyZW1lbnQnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nl
c3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsK
KyAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZl
cnNpb25TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKKyAg
ICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQg
PSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gc2V0VmVy
c2lvbkNvbXBsZXRlZDsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBk
ZWJ1ZygiY3JlYXRlT2JqZWN0U3RvcmUoKToiKTsKKyAgICBzZWxmLnN0b3JlID0gZXZhbEFuZExv
Zygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnU3RvcmVXaXRoS2V5UGF0aCcsIHtrZXlQ
YXRoOiAnaWQnLCBhdXRvSW5jcmVtZW50OiB0cnVlfSkiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5j
cmVhdGVPYmplY3RTdG9yZSgnU3RvcmVXaXRoQXV0b0luY3JlbWVudCcsIHthdXRvSW5jcmVtZW50
OiB0cnVlfSkiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnUGxhaW5P
bGRTdG9yZScsIHthdXRvSW5jcmVtZW50OiBmYWxzZX0pIik7CisgICAgZXZhbEFuZExvZygiZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ1N0b3JlV2l0aExvbmdLZXlQYXRoJywge2tleVBhdGg6ICdhLmIu
Yy5pZCcsIGF1dG9JbmNyZW1lbnQ6IHRydWV9KSIpOworICAgIHZhciBzdG9yZU5hbWVzID0gZXZh
bEFuZExvZygic3RvcmVOYW1lcyA9IGRiLm9iamVjdFN0b3JlTmFtZXMiKTsKKworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygic3RvcmUubmFtZSIsICJTdG9yZVdpdGhLZXlQYXRoIik7CisgICAg
c2hvdWxkQmUoInN0b3JlLmtleVBhdGgiLCAiJ2lkJyIpOworICAgIHNob3VsZEJlKCJzdG9yZU5h
bWVzLmNvbnRhaW5zKCdTdG9yZVdpdGhLZXlQYXRoJykiLCAidHJ1ZSIpOworICAgIHNob3VsZEJl
KCJzdG9yZU5hbWVzLmNvbnRhaW5zKCdTdG9yZVdpdGhBdXRvSW5jcmVtZW50JykiLCAidHJ1ZSIp
OworICAgIHNob3VsZEJlKCJzdG9yZU5hbWVzLmNvbnRhaW5zKCdQbGFpbk9sZFN0b3JlJykiLCAi
dHJ1ZSIpOworICAgIHNob3VsZEJlKCJzdG9yZU5hbWVzLmxlbmd0aCIsICI0Iik7CisKKyAgICAv
LyBMZXQgdGhlIHNldFZlcnNpb24gdHJhbnNhY3Rpb24gY29tcGxldGUuCit9CisKK2Z1bmN0aW9u
IHNldFZlcnNpb25Db21wbGV0ZWQoKQoreworICAgIGRlYnVnKCJzZXRWZXJzaW9uQ29tcGxldGVk
KCk6Iik7CisKKyAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2Fj
dGlvbihbJ1N0b3JlV2l0aEtleVBhdGgnLCAnU3RvcmVXaXRoQXV0b0luY3JlbWVudCcsICdQbGFp
bk9sZFN0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgdHJhbnMub25h
Ym9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSB0
ZXN0TG9uZ0tleVBhdGg7CisKKyAgICBzZWxmLnN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0
cmFucy5vYmplY3RTdG9yZSgnU3RvcmVXaXRoS2V5UGF0aCcpIik7CisKKyAgICBkZWJ1ZygiSW5z
ZXJ0IGludG8gb2JqZWN0IHN0b3JlIHdpdGggYXV0byBpbmNyZW1lbnQgYW5kIGtleSBwYXRoLCB3
aXRoIGtleSBpbiB0aGUgb2JqZWN0LiIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9y
ZS5hZGQoe25hbWU6ICdKZWZmZXJzc29uJywgbnVtYmVyOiAnNzAxMCcsIGlkOiAzfSkiKTsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEplZmZlcnNzb25TdWNjZXNzOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBhZGRKZWZm
ZXJzc29uU3VjY2VzcygpCit7CisgICAgZGVidWcoImFkZEplZmZlcnNzb25TdWNjZXNzKCk6Iik7
CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAiMyIpOworCisgICAgZGVidWco
Ikluc2VydCBpbnRvIG9iamVjdCBzdG9yZSB3aXRoIGF1dG8gaW5jcmVtZW50IGFuZCBrZXkgcGF0
aCwgd2l0aG91dCBrZXkgaW4gdGhlIG9iamVjdC4iKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
Zygic3RvcmUuYWRkKHtuYW1lOiAnTGluY29sbicsIG51bWJlcjogJzcwMTInfSkiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZExpbmNvbG5XaXRoSW5qZWN0S2V5U3VjY2VzczsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
YWRkTGluY29sbldpdGhJbmplY3RLZXlTdWNjZXNzKCkKK3sKKyAgICBkZWJ1ZygiYWRkTGluY29s
bldpdGhJbmplY3RLZXlTdWNjZXNzKCk6Iik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5y
ZXN1bHQiLCAiNCIpOworCisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygic3RvcmUuZ2V0KDQpIik7
CisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGdldExpbmNvbG5BZnRlckluamVjdGVkS2V5U3VjY2Vz
czsKKyAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiBnZXRMaW5jb2xuQWZ0ZXJJbmplY3RlZEtleVN1Y2Nlc3MoKQoreworICAgIGRlYnVn
KCJnZXRMaW5jb2xuQWZ0ZXJJbmplY3RlZEtleVN1Y2Nlc3MoKToiKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQubmFtZSIsICJMaW5jb2xuIik7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0Lm51bWJlciIsICI3MDEy
Iik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQuaWQiLCAiNCIpOworCisgICAg
c2VsZi5zdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ1N0b3Jl
V2l0aEF1dG9JbmNyZW1lbnQnKSIpOworICAgIGRlYnVnKCJJbnNlcnQgaW50byBvYmplY3Qgc3Rv
cmUgd2l0aCBrZXkgZ2VuIHVzaW5nIGV4cGxpY2l0IGtleSIpOworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJzdG9yZS5hZGQoe25hbWU6ICdMaW5jb2xuJywgbnVtYmVyOiAnNzAxMid9LCA1KSIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkTGluY29sbldpdGhFeHBsaWNpdEtleVN1Y2Nl
c3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIGFkZExpbmNvbG5XaXRoRXhwbGljaXRLZXlTdWNjZXNzKCkKK3sKKyAgICBkZWJ1
ZygiYWRkTGluY29sbldpdGhFeHBsaWNpdEtleVN1Y2Nlc3MoKToiKTsKKyAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0LnJlc3VsdCIsICI1Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
c3RvcmUuZ2V0KDUpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRMaW5jb2xuU3VjY2Vz
czsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKwor
ZnVuY3Rpb24gZ2V0TGluY29sblN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJnZXRMaW5jb2xuU3Vj
Y2VzcygpOiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3Vs
dC5uYW1lIiwgIkxpbmNvbG4iKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRh
cmdldC5yZXN1bHQubnVtYmVyIiwgIjcwMTIiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJzdG9yZS5wdXQoe25hbWU6ICdBYnJhaGFtJywgbnVtYmVyOiAnMjEwNyd9KSIpOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gcHV0QWJyYWhhbVN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHB1dEFicmFoYW1TdWNj
ZXNzKCkKK3sKKyAgICBkZWJ1ZygicHV0QWJyYWhhbVN1Y2Nlc3MoKToiKTsKKyAgICBzaG91bGRC
ZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICI2Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
Zygic3RvcmUuZ2V0KDYpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRBYnJhaGFtU3Vj
Y2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30K
KworZnVuY3Rpb24gZ2V0QWJyYWhhbVN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJnZXRBYnJhaGFt
U3VjY2VzcygpOiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJl
c3VsdC5uYW1lIiwgIkFicmFoYW0iKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50
LnRhcmdldC5yZXN1bHQubnVtYmVyIiwgIjIxMDciKTsKKworICAgIHNlbGYuc3RvcmUgPSBldmFs
QW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdQbGFpbk9sZFN0b3JlJykiKTsKKyAg
ICBkZWJ1ZygiVHJ5IGFkZGluZyB3aXRoIG5vIGtleSB0byBvYmplY3Qgc3RvcmUgd2l0aG91dCBh
dXRvIGluY3JlbWVudC4iKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5hZGQo
e25hbWU6ICdBZGFtJ30pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7bmFtZTogJ0FkYW0nfSwgMSkiKTsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEFkYW1TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBhZGRBZGFtU3VjY2Vz
cygpCit7CisgICAgZGVidWcoImFkZEFkYW1TdWNjZXNzKCk6Iik7CisgICAgc2hvdWxkQmUoImV2
ZW50LnRhcmdldC5yZXN1bHQiLCAiMSIpOworfQorCitmdW5jdGlvbiB0ZXN0TG9uZ0tleVBhdGgo
KQoreworICAgIGRlYnVnKCJ0ZXN0TG9uZ0tleVBhdGgoKToiKTsKKyAgICB0cmFucyA9IGV2YWxB
bmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ1N0b3JlV2l0aExvbmdLZXlQYXRoJywgSURC
VHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3Rl
ZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IGZpbmlzaEpTVGVzdDsKKwor
ICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnU3RvcmVX
aXRoTG9uZ0tleVBhdGgnKSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQo
e2ZvbzogJ2Jhcid9KSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe2ZvbzogJ2Jhcics
IGE6IHt9fSkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHtmb286ICdiYXInLCBhOiB7
Yjoge319fSkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHtmb286ICdiYXInLCBhOiB7
Yjoge2M6IHt9fX19KSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworICAgIGN1cnNvclJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5vcGVuQ3Vyc29y
KCkiKTsKKyAgICBjdXJzb3JSZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICBldmFsQW5kTG9nKCJleHBlY3RlZCA9IG51bGwiKTsKKyAgICBldmFsQW5kTG9nKCJj
b3VudCA9IDAiKTsKKyAgICBjdXJzb3JSZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgY3Vyc29yID0gY3Vyc29yUmVxdWVzdC5yZXN1bHQ7CisgICAgICAgIGlmICghY3Vy
c29yKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiY291bnQiLCAiNCIpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChleHBlY3RlZCA9PT0gbnVsbCkgeworICAg
ICAgICAgICAgZXZhbEFuZExvZygiZXhwZWN0ZWQgPSBjdXJzb3IudmFsdWUuYS5iLmMuaWQgKyAx
Iik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVl
LmZvbyIsICInYmFyJyIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5hLmIu
Yy5pZCIsICJleHBlY3RlZCIpOworICAgICAgICAgICAgZXZhbEFuZExvZygiZXhwZWN0ZWQgPSBj
dXJzb3IudmFsdWUuYS5iLmMuaWQgKyAxIik7CisgICAgICAgIH0KKyAgICAgICAgY291bnQrKzsK
KyAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7CisgICAgfTsKK30KKwordGVzdCgpOwpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9vYmplY3RzdG9yZS1jbGVhci5qcyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vYmplY3RzdG9yZS1jbGVhci5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
OTQ3YzZjNzI0MWU3YTI0NTk2ZGVmZmJlNWJlYmUyNDg2YjNhYjRhCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3JlLWNs
ZWFyLmpzCkBAIC0wLDAgKzEsMTAyIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAg
aW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMn
KTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRl
c3QgSW5kZXhlZERCJ3Mgd2Via2l0SURCT2JqZWN0U3RvcmUuY2xlYXIoKS4iKTsKKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ29iamVjdHN0b3JlLWNsZWFyJykiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IHN0YXJ0U2V0VmVyc2lvbjsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc3RhcnRTZXRWZXJzaW9u
KCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwor
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJyki
KTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4aXN0aW5nOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxldGVF
eGlzdGluZygpCit7CisgICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKwor
ICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2co
InN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7CisKKyAg
ICBzZWxmLmluZGV4ID0gZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZScs
ICcnKSIpOworICAgIHNob3VsZEJlVHJ1ZSgic3RvcmUuaW5kZXhOYW1lcy5jb250YWlucygnaW5k
ZXhOYW1lJykiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoJ3ZhbHVl
JywgJ2tleScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVTZWNvbmRPYmplY3RT
dG9yZUFuZEFkZFZhbHVlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBjcmVhdGVTZWNvbmRPYmplY3RTdG9yZUFuZEFkZFZhbHVl
KCkKK3sKKyAgICBvdGhlclN0b3JlID0gZXZhbEFuZExvZygib3RoZXJTdG9yZSA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdvdGhlclN0b3JlTmFtZScsIG51bGwpIik7CisKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygib3RoZXJTdG9yZS5hZGQoJ3ZhbHVlJywgJ2tleScpIik7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBjbGVhck9iamVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVhck9iamVjdFN0b3JlKCkK
K3sKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuY2xlYXIoKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gY2xlYXJTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVhclN1Y2Nlc3MoKQoreworICAg
IHNob3VsZEJlVW5kZWZpbmVkKCJldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygic3RvcmUub3BlbkN1cnNvcigpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBvcGVuQ3Vyc29yU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlbkN1cnNvclN1Y2Nlc3MoKQoreworICAg
IHNob3VsZEJlTnVsbCgiZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgaW5kZXggPSBldmFs
QW5kTG9nKCJpbmRleCA9IHN0b3JlLmluZGV4KCdpbmRleE5hbWUnKSIpOworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleC5vcGVuS2V5Q3Vyc29yKCkiKTsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IG9wZW5LZXlDdXJzb3JTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuS2V5Q3Vyc29yU3VjY2Vzcygp
Cit7CisgICAgZGVidWcoIm9wZW5LZXlDdXJzb3JTdWNjZXNzKCk6Iik7CisgICAgc2hvdWxkQmVO
dWxsKCJldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHNldFZl
cnNpb25Db21wbGV0ZTsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbkNvbXBsZXRlKCkKK3sKKyAg
ICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coImRiLnRyYW5zYWN0aW9uKFsnb3RoZXJTdG9yZU5h
bWUnXSkiKTsKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgdmFyIG90aGVyU3RvcmUgPSBldmFsQW5kTG9nKCJvdGhlclN0b3JlID0gdHJhbnNh
Y3Rpb24ub2JqZWN0U3RvcmUoJ290aGVyU3RvcmVOYW1lJykiKTsKKworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJvdGhlclN0b3JlLmdldCgna2V5JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGdldFN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIGdldFN1Y2Nlc3MoKQoreworICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ2YWx1ZSIpOworCisgICAgZmluaXNoSlNU
ZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3RvcmUt
Y291bnQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0
c3RvcmUtY291bnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjlkYWUxNzY1NjQxNjgzYTUwZDk2YmNiMTUxMGMy
ODVmMjM5NTJmOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9vYmplY3RzdG9yZS1jb3VudC5qcwpAQCAtMCwwICsxLDE0NCBAQAoraWYg
KHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVk
LmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIElEQk9iamVjdFN0b3Jl
LmNvdW50KCkuIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZp
eGVzKCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdvYmplY3Rz
dG9yZS1jb3VudCcpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZGIg
PSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICAgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICAgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gcHJlcGFyZURhdGFiYXNlOworICAgIH07Cit9CisKK2Z1bmN0aW9uIHBy
ZXBhcmVEYXRhYmFzZSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJwcmVwYXJpbmcg
ZGF0YWJhc2UiKTsKKyAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50
YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworCisg
ICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIHN0b3JlID0gZXZhbEFuZExvZygi
c3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKKworICAg
IGRlYnVnKCJhZGRpbmcgMCAuLi4gOTkiKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsg
KytpKSB7CisgICAgICAgIHJlcXVlc3QgPSBzdG9yZS5hZGQoaSwgaSk7CisgICAgICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIH0KKyAgICB0cmFucy5v
bmNvbXBsZXRlID0gdmVyaWZ5Q291bnQ7Cit9CisKK2Z1bmN0aW9uIHZlcmlmeUNvdW50KCkKK3sK
KyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInZlcmlmeWluZyBjb3VudCB3aXRob3V0IHJhbmdl
Iik7CisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9y
ZU5hbWUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7CisgICAgc2hvdWxkQmVUcnVlKCJ0
cmFucyAhPSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxi
YWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSB2ZXJpZnlDb3VudFdpdGhSYW5nZTsKKworICAg
IHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1l
JykiKTsKKyAgICBzaG91bGRCZVRydWUoInN0b3JlICE9IG51bGwiKTsKKworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gc3RvcmUuY291bnQoKSIpOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgICBzaG91bGRCZVRydWUoInR5cGVvZiByZXF1ZXN0LnJlc3Vs
dCA9PSAnbnVtYmVyJyIpOworICAgICAgICAgc2hvdWxkQmUoInJlcXVlc3QucmVzdWx0IiwgIjEw
MCIpOworICAgICAgICAgLy8gbGV0IHRoZSB0cmFuc2FjdGlvbiBjb21wbGV0ZQorICAgIH07Cit9
CisKK2Z1bmN0aW9uIHZlcmlmeUNvdW50V2l0aFJhbmdlKCkKK3sKKyAgICBkZWJ1ZygiIik7Cisg
ICAgZGVidWcoInZlcmlmeWluZyBjb3VudCB3aXRoIHJhbmdlIik7CisgICAgdHJhbnMgPSBldmFs
QW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZU5hbWUnLCBJREJUcmFuc2FjdGlv
bi5SRUFEX09OTFkpIik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPSBudWxsIik7CisgICAg
dHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zLm9uY29t
cGxldGUgPSB2ZXJpZnlDb3VudFdpdGhLZXk7CisKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0
b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgc2hvdWxkQmVUcnVl
KCJzdG9yZSAhPSBudWxsIik7CisKKyAgICB2YXIgdGVzdHMgPSBbCisgICAgICAgIHsgbG93ZXI6
IDAsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiA5OSwgdXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0
ZWQ6IDEwMCB9LAorICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IHRydWUsIHVwcGVyOiA5
OSwgdXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDk5IH0sCisgICAgICAgIHsgbG93ZXI6IDAs
IGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiA5OSwgdXBwZXJPcGVuOiB0cnVlLCBleHBlY3RlZDog
OTkgfSwKKyAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiB0cnVlLCB1cHBlcjogOTksIHVw
cGVyT3BlbjogdHJ1ZSwgZXhwZWN0ZWQ6IDk4IH0sCisgICAgICAgIHsgbG93ZXI6IDAsIGxvd2Vy
T3BlbjogZmFsc2UsIHVwcGVyOiAxMDAsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiAxMDAg
fSwKKyAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDEwMCwgdXBw
ZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDEwMCB9LAorICAgICAgICB7IGxvd2VyOiAxMCwgbG93
ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDEwMCwgdXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDkw
IH0sCisgICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiAwLCB1cHBl
ck9wZW46IGZhbHNlLCBleHBlY3RlZDogMSB9LAorICAgICAgICB7IGxvd2VyOiA1MDAsIGxvd2Vy
T3BlbjogZmFsc2UsIHVwcGVyOiA1MDAsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiAwIH0K
KyAgICBdOworCisgICAgZnVuY3Rpb24gbmV4dFRlc3QoKSB7CisgICAgICAgIGRlYnVnKCIiKTsK
KyAgICAgICAgZXZhbEFuZExvZygidGVzdCA9ICIgKyBKU09OLnN0cmluZ2lmeSh0ZXN0cy5zaGlm
dCgpKSk7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gc3RvcmUuY291
bnQoSURCS2V5UmFuZ2UuYm91bmQodGVzdC5sb3dlciwgdGVzdC51cHBlciwgdGVzdC5sb3dlck9w
ZW4sIHRlc3QudXBwZXJPcGVuKSkiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0g
J251bWJlciciKTsKKyAgICAgICAgICAgICBzaG91bGRCZSgicmVxdWVzdC5yZXN1bHQiLCBTdHJp
bmcodGVzdC5leHBlY3RlZCkpOworCisgICAgICAgICAgICAgaWYgKHRlc3RzLmxlbmd0aCkgewor
ICAgICAgICAgICAgICAgICBuZXh0VGVzdCgpOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAvLyBvdGhlcndpc2UgbGV0IHRoZSB0cmFuc2FjdGlvbiBjb21wbGV0ZQorICAgICAgICB9Owor
ICAgIH0KKworICAgIG5leHRUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHZlcmlmeUNvdW50V2l0aEtl
eSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ2ZXJpZnlpbmcgY291bnQgd2l0aCBr
ZXkiKTsKKyAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0
b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkiKTsKKyAgICBzaG91bGRCZVRydWUo
InRyYW5zICE9IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2Fs
bGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IGZpbmlzaEpTVGVzdDsKKworICAgIHN0b3Jl
ID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsK
KyAgICBzaG91bGRCZVRydWUoInN0b3JlICE9IG51bGwiKTsKKworICAgIGV2YWxBbmRFeHBlY3RF
eGNlcHRpb24oInN0b3JlLmNvdW50KE5hTikiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9F
UlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5jb3VudCh7fSkiLCAiSURC
RGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJzdG9yZS5jb3VudCgvcmVnZXgvKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIp
OworCisgICAgdmFyIHRlc3RzID0gWworICAgICAgICB7IGtleTogMCwgZXhwZWN0ZWQ6IDEgfSwK
KyAgICAgICAgeyBrZXk6IDEwMCwgZXhwZWN0ZWQ6IDAgfSwKKyAgICAgICAgeyBrZXk6IG51bGws
IGV4cGVjdGVkOiAxMDAgfQorICAgIF07CisKKyAgICBmdW5jdGlvbiBuZXh0VGVzdCgpIHsKKyAg
ICAgICAgZGVidWcoIiIpOworICAgICAgICBldmFsQW5kTG9nKCJ0ZXN0ID0gIiArIEpTT04uc3Ry
aW5naWZ5KHRlc3RzLnNoaWZ0KCkpKTsKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBzdG9yZS5jb3VudCh0ZXN0LmtleSkiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBzaG91bGRCZVRydWUoInR5cGVvZiByZXF1ZXN0LnJl
c3VsdCA9PSAnbnVtYmVyJyIpOworICAgICAgICAgICAgc2hvdWxkQmUoInJlcXVlc3QucmVzdWx0
IiwgU3RyaW5nKHRlc3QuZXhwZWN0ZWQpKTsKKyAgICAgICAgICAgICBpZiAodGVzdHMubGVuZ3Ro
KSB7CisgICAgICAgICAgICAgICAgIG5leHRUZXN0KCk7CisgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgIC8vIG90aGVyd2lzZSBsZXQgdGhlIHRyYW5zYWN0aW9uIGNvbXBsZXRlCisgICAgICAg
IH07CisgICAgfQorCisgICAgbmV4dFRlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9vYmplY3RzdG9yZS1jdXJzb3IuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3RvcmUtY3Vyc29yLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyYzAy
YWM2MWE2MzRmYTNjY2ZlNGFkMjRlMDQxYTk4NzQ2YWIyOGEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3RvcmUtY3Vyc29y
LmpzCkBAIC0wLDAgKzEsMjI2IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1w
b3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsK
KyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3Qg
SW5kZXhlZERCJ3Mgb2JqZWN0U3RvcmUub3BlbkN1cnNvciArIHRoZSBjdXJzb3IgaXQgcHJvZHVj
ZXMgaW4gZGVwdGguIik7CisKKy8vIEluIG9yZGVyIG9mIGhvdyBpdCBzaG91bGQgYmUgc29ydGVk
IGJ5IEluZGV4ZWREQi4KK3NlbGYudGVzdERhdGEgPSBbCisgICAgMi43MTgyODE4Mjg0NTksCisg
ICAgMywKKyAgICAzLjE0MTU5MjY1LAorICAgIDEwLAorICAgIC8vIEZJWE1FOiBEYXRlcy4KKyAg
ICAiQSBiaWdnZXIgc3RyaW5nIiwKKyAgICAiVGhlIGJpZ2dlc3QiLAorICAgICJhIGxvdyBzdHJp
bmciCitdOworCitmdW5jdGlvbiBvcGVuRGF0YWJhc2UoKQoreworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJpbmRleGVkREIub3Blbignb2JqZWN0c3RvcmUtY3Vyc29yJykiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb247CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb24oKQoreworICAgIHNl
bGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVsZXRlRXhpc3Rpbmco
KQoreworICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMu
b25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworCisgICAgZGVsZXRlQWxsT2JqZWN0
U3RvcmVzKGRiKTsKKworICAgIHNlbGYub2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVh
dGVPYmplY3RTdG9yZSgnc29tZU9iamVjdFN0b3JlJykiKTsKKyAgICBzZWxmLm5leHRUb0FkZCA9
IDA7CisgICAgYWRkRGF0YSgpOworfQorCitmdW5jdGlvbiBhZGREYXRhKCkKK3sKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCcnLCB0ZXN0RGF0YVtuZXh0VG9BZGRd
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gKytzZWxmLm5leHRUb0FkZCA8IHRlc3REYXRh
Lmxlbmd0aCA/IGFkZERhdGEgOiBzY2hlZHVsZVRlc3RzOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzY2hlZHVsZVRlc3RzKCkK
K3sKKyAgICBkZWJ1ZygiU2NoZWR1bGluZyB0ZXN0cy4uLiIpOworICAgIHNlbGYuc2NoZWR1bGVk
VGVzdHMgPSBbXTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRlc3REYXRhLmxlbmd0aDsgKytp
KSB7CisgICAgICAgIC8qIGxlZnQgYm91bmQsIGlzIG9wZW4sIHJpZ2h0IGJvdW5kLCBpcyBvcGVu
LCBhc2NlbmRpbmcgKi8KKyAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwg
bnVsbCwgbnVsbCwgdHJ1ZV0pOworICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCBm
YWxzZSwgbnVsbCwgbnVsbCwgdHJ1ZV0pOworICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0
KFtudWxsLCBudWxsLCBpLCB0cnVlLCB0cnVlXSk7CisgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVu
c2hpZnQoW251bGwsIG51bGwsIGksIGZhbHNlLCB0cnVlXSk7CisgICAgICAgIHNjaGVkdWxlZFRl
c3RzLnVuc2hpZnQoW2ksIHRydWUsIG51bGwsIG51bGwsIGZhbHNlXSk7CisgICAgICAgIHNjaGVk
dWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBudWxsLCBudWxsLCBmYWxzZV0pOworICAgICAg
ICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtudWxsLCBudWxsLCBpLCB0cnVlLCBmYWxzZV0pOwor
ICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtudWxsLCBudWxsLCBpLCBmYWxzZSwgZmFs
c2VdKTsKKyAgICAgICAgZm9yICh2YXIgaiA9IDY7IGogPCB0ZXN0RGF0YS5sZW5ndGg7ICsraikg
eworICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwgaiwgdHJ1ZSwg
dHJ1ZV0pOworICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwgaiwg
ZmFsc2UsIHRydWVdKTsKKyAgICAgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZh
bHNlLCBqLCB0cnVlLCB0cnVlXSk7CisgICAgICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0
KFtpLCBmYWxzZSwgaiwgZmFsc2UsIHRydWVdKTsKKyAgICAgICAgICAgIHNjaGVkdWxlZFRlc3Rz
LnVuc2hpZnQoW2ksIHRydWUsIGosIHRydWUsIGZhbHNlXSk7CisgICAgICAgICAgICBzY2hlZHVs
ZWRUZXN0cy51bnNoaWZ0KFtpLCB0cnVlLCBqLCBmYWxzZSwgZmFsc2VdKTsKKyAgICAgICAgICAg
IHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBqLCB0cnVlLCBmYWxzZV0pOworICAg
ICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgZmFsc2UsIGosIGZhbHNlLCBmYWxz
ZV0pOworICAgICAgICB9CisgICAgfQorCisgICAgZGVidWcoIlJ1bm5pbmcgdGVzdHMuLi4iKTsK
KyAgICBydW5OZXh0VGVzdCgpOworfQorCitmdW5jdGlvbiBydW5OZXh0VGVzdCgpCit7CisgICAg
aWYgKCFzY2hlZHVsZWRUZXN0cy5sZW5ndGgpIHsKKyAgICAgICAgdGVzdE51bGxLZXlSYW5nZSgp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdmFyIHRlc3QgPSBzY2hlZHVsZWRUZXN0
cy5wb3AoKTsKKyAgICBzZWxmLmxvd2VyID0gdGVzdFswXTsKKyAgICBzZWxmLmxvd2VySXNPcGVu
ID0gdGVzdFsxXTsKKyAgICBzZWxmLnVwcGVyID0gdGVzdFsyXTsKKyAgICBzZWxmLnVwcGVySXNP
cGVuID0gdGVzdFszXTsKKyAgICBzZWxmLmFzY2VuZGluZyA9IHRlc3RbNF07CisKKyAgICBzdHIg
PSAiTmV4dCB0ZXN0OiAiOworICAgIGlmIChsb3dlciAhPT0gbnVsbCkgeworICAgICAgICBzdHIg
Kz0gImxvd2VyICI7CisgICAgICAgIGlmIChsb3dlcklzT3BlbikKKyAgICAgICAgICAgIHN0ciAr
PSAib3BlbiAiOworICAgICAgICBzdHIgKz0gImJvdW5kIGlzICIgKyBsb3dlciArICI7ICI7Cisg
ICAgfQorICAgIGlmICh1cHBlciAhPT0gbnVsbCkgeworICAgICAgICBzdHIgKz0gInVwcGVyICI7
CisgICAgICAgIGlmICh1cHBlcklzT3BlbikKKyAgICAgICAgICAgIHN0ciArPSAib3BlbiAiOwor
ICAgICAgICBzdHIgKz0gImJvdW5kIGlzICIgKyB1cHBlciArICI7ICI7CisgICAgfQorICAgIGlm
IChhc2NlbmRpbmcpCisgICAgICAgIHN0ciArPSAic29ydGVkIGFzY2VuZGluZy4iOworICAgIGVs
c2UKKyAgICAgICAgc3RyICs9ICJzb3J0ZWQgZGVzY2VuZGluZy4iOworCisgICAgZGVidWcoIiIp
OworICAgIGRlYnVnKHN0cik7CisKKyAgICBpZiAoYXNjZW5kaW5nKSB7CisgICAgICAgIGlmIChs
b3dlciAhPT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKCFsb3dlcklzT3BlbikKKyAgICAgICAg
ICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSBsb3dlcjsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSBsb3dlcisxOworICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IDA7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgaWYgKHVwcGVyICE9PSBudWxsKSB7CisgICAgICAgICAgICBpZiAoIXVwcGVySXNPcGVu
KQorICAgICAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IHVwcGVyOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IHVwcGVyLTE7Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gdGVzdERhdGEu
bGVuZ3RoLTE7CisgICAgfQorICAgIHRlc3RXaXRoaW5Cb3VuZHMoKTsKKworICAgIGlmICh0ZXN0
RGF0YVtsb3dlcl0gPT09IHRlc3REYXRhW3VwcGVyXSAmJiAobG93ZXJJc09wZW4gfHwgdXBwZXJJ
c09wZW4pKSB7CisgICAgICAgIGRlYnVnKCJTa2lwcGluZyBpbGxlZ2FsIGtleSByYW5nZS4iKTsK
KyAgICAgICAgcnVuTmV4dFRlc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZh
ciBrZXlSYW5nZTsKKyAgICBpZiAobG93ZXIgIT09IG51bGwgJiYgdXBwZXIgIT09IG51bGwpCisg
ICAgICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2UuYm91bmQodGVzdERhdGFbbG93ZXJdLCB0ZXN0
RGF0YVt1cHBlcl0sIGxvd2VySXNPcGVuLCB1cHBlcklzT3Blbik7CisgICAgZWxzZSBpZiAobG93
ZXIgIT09IG51bGwpCisgICAgICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2UubG93ZXJCb3VuZCh0
ZXN0RGF0YVtsb3dlcl0sIGxvd2VySXNPcGVuKTsKKyAgICBlbHNlCisgICAgICAgIGtleVJhbmdl
ID0gSURCS2V5UmFuZ2UudXBwZXJCb3VuZCh0ZXN0RGF0YVt1cHBlcl0sIHVwcGVySXNPcGVuKTsK
KworICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcihrZXlSYW5nZSwgYXNj
ZW5kaW5nID8gSURCQ3Vyc29yLk5FWFQgOiBJREJDdXJzb3IuUFJFVik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBjdXJzb3JJdGVyYXRpb247CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHRlc3RXaXRoaW5Cb3VuZHMoKQorewor
ICAgIGlmIChleHBlY3RlZEluZGV4IDwgMCB8fCB0ZXN0RGF0YS5sZW5ndGggPD0gZXhwZWN0ZWRJ
bmRleCkKKyAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gbnVsbDsKKyAgICBpZiAobG93ZXIg
IT09IG51bGwgJiYgZXhwZWN0ZWRJbmRleCA8IGxvd2VyKQorICAgICAgICBzZWxmLmV4cGVjdGVk
SW5kZXggPSBudWxsOworICAgIGlmICh1cHBlciAhPT0gbnVsbCAmJiB1cHBlciA8IGV4cGVjdGVk
SW5kZXgpCisgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IG51bGw7CisgICAgaWYgKGxvd2Vy
ICE9PSBudWxsICYmIGxvd2VySXNPcGVuICYmIGV4cGVjdGVkSW5kZXggPD0gbG93ZXIpCisgICAg
ICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IG51bGw7CisgICAgaWYgKHVwcGVyICE9PSBudWxsICYm
IHVwcGVySXNPcGVuICYmIHVwcGVyIDw9IGV4cGVjdGVkSW5kZXgpCisgICAgICAgIHNlbGYuZXhw
ZWN0ZWRJbmRleCA9IG51bGw7Cit9CisKK2Z1bmN0aW9uIGN1cnNvckl0ZXJhdGlvbigpCit7Cisg
ICAgaWYgKGV4cGVjdGVkSW5kZXggPT09IG51bGwpIHsKKyAgICAgICAgc2hvdWxkQmVOdWxsKCJl
dmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwpIHsKKyAg
ICAgICAgdGVzdEZhaWxlZCgiZXZlbnQudGFyZ2V0LnJlc3VsdCBzaG91bGQgbm90IGJlIG51bGwu
Iik7CisgICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAidGVzdERhdGFbIiArIGV4cGVj
dGVkSW5kZXggKyAiXSIpOworICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IGFzY2VuZGluZyA/IGV4
cGVjdGVkSW5kZXgrMSA6IGV4cGVjdGVkSW5kZXgtMTsKKyAgICB0ZXN0V2l0aGluQm91bmRzKCk7
CisKKyAgICBldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCk7Cit9CisKK3NlbGYubnVsbEtl
eVJhbmdlU3RlcCA9IDA7CitmdW5jdGlvbiB0ZXN0TnVsbEtleVJhbmdlKCkKK3sKKyAgICBzZWxm
Lmxvd2VyID0gMDsKKyAgICBzZWxmLmxvd2VySXNPcGVuID0gZmFsc2U7CisgICAgc2VsZi51cHBl
ciA9IHRlc3REYXRhLmxlbmd0aC0xOworICAgIHNlbGYudXBwZXJJc09wZW4gPSBmYWxzZTsKKwor
ICAgIHN0ciA9ICJOZXh0IHRlc3Q6IG51bGwga2V5IHBhdGggIjsKKyAgICBpZiAoc2VsZi5udWxs
S2V5UmFuZ2VTdGVwID09IDApIHsKKyAgICAgICAgc3RyICs9ICJzb3J0ZWQgYXNjZW5kaW5nLiI7
CisgICAgICAgIHNlbGYuYXNjZW5kaW5nID0gdHJ1ZTsKKyAgICAgICAgc2VsZi5leHBlY3RlZElu
ZGV4ID0gbG93ZXI7CisgICAgICAgIHNlbGYubnVsbEtleVJhbmdlU3RlcCA9IDE7CisgICAgfSBl
bHNlIGlmIChzZWxmLm51bGxLZXlSYW5nZVN0ZXAgPT0gMSkgeworICAgICAgICBzdHIgKz0gInNv
cnRlZCBkZXNjZW5kaW5nLiI7CisgICAgICAgIHNlbGYuYXNjZW5kaW5nID0gZmFsc2U7CisgICAg
ICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IHVwcGVyOworICAgICAgICBzZWxmLm51bGxLZXlSYW5n
ZVN0ZXAgPSAyOworICAgIH0gZWxzZSB7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKHN0cik7CisKKyAg
ICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IobnVsbCwgYXNjZW5kaW5nID8g
SURCQ3Vyc29yLk5FWFQgOiBJREJDdXJzb3IuUFJFVik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBjdXJzb3JJdGVyYXRpb247CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK3JlbW92ZVZlbmRvclByZWZpeGVzKCk7CitvcGVuRGF0YWJhc2UoKTsg
Ly8gVGhlIGZpcnN0IHN0ZXAuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3RvcmUtcmVtb3Zlb2JqZWN0c3RvcmUuanMgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3RvcmUtcmVtb3Zlb2JqZWN0
c3RvcmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uODM5ODQ3NTAxNmJkMTE1YTlmM2VmMjMwYTBjYmI4M2NjMmQy
MGMxZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9vYmplY3RzdG9yZS1yZW1vdmVvYmplY3RzdG9yZS5qcwpAQCAtMCwwICsxLDk3IEBA
CitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdz
aGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mgd2Via2l0SURC
T2JqZWN0U3RvcmUuZGVsZXRlT2JqZWN0U3RvcmUoKS4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7
CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
aW5kZXhlZERCLm9wZW4oJ29iamVjdHN0b3JlLXJlbW92ZW9iamVjdHN0b3JlJykiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IHN0YXJ0U2V0VmVyc2lvbjsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc3RhcnRTZXRWZXJzaW9u
KCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwor
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJyki
KTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4aXN0aW5nOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxldGVF
eGlzdGluZygpCit7CisgICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKwor
ICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2co
InN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7CisKKyAg
ICBzZWxmLmluZGV4ID0gZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZScs
ICcnKSIpOworICAgIHNob3VsZEJlVHJ1ZSgic3RvcmUuaW5kZXhOYW1lcy5jb250YWlucygnaW5k
ZXhOYW1lJykiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoJ3ZhbHVl
JywgJ2tleScpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IGdldFZhbHVlOworfQorCitmdW5jdGlvbiBnZXRW
YWx1ZSgpCit7CisgICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJkYi50cmFuc2FjdGlvbihb
J3N0b3JlTmFtZSddKSIpOworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0
aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInN0b3JlLmdldCgna2V5JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEluZGV4
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiBhZGRJbmRleCgpCit7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50
YXJnZXQucmVzdWx0IiwgInZhbHVlIik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIu
c2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVs
ZXRlT2JqZWN0U3RvcmU7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZU9iamVjdFN0b3JlKCkKK3sKKyAgICBzZWxmLnRy
YW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hv
dWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVj
dGVkQWJvcnRDYWxsYmFjazsKKworICAgIGV2YWxBbmRMb2coImRiLmRlbGV0ZU9iamVjdFN0b3Jl
KCdzdG9yZU5hbWUnKSIpOworICAgIGNyZWF0ZU9iamVjdFN0b3JlQWdhaW4oKTsKK30KKworZnVu
Y3Rpb24gY3JlYXRlT2JqZWN0U3RvcmVBZ2FpbigpCit7CisgICAgZXZhbEFuZExvZygiZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7CisgICAgdHJhbnMub25jb21wbGV0
ZSA9IGdldFZhbHVlQWdhaW47Cit9CisKK2Z1bmN0aW9uIGdldFZhbHVlQWdhaW4oKQoreworICAg
IHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygiZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSki
KTsKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cisg
ICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9y
ZSgnc3RvcmVOYW1lJykiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5nZXQo
J2tleScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB2ZXJpZnlOb3RGb3VuZDsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
dmVyaWZ5Tm90Rm91bmQoKQoreworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0Iiwg
InVuZGVmaW5lZCIpOworICAgIHNob3VsZEJlRmFsc2UoImV2ZW50LnRhcmdldC5zb3VyY2UuaW5k
ZXhOYW1lcy5jb250YWlucygnaW5kZXhOYW1lJykiKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOwor
fQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29kZC1zdHJpbmdzLmpzIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29kZC1zdHJpbmdzLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQzMWM1MGVmZmJiZmFlMmI2NDdjNmU0MTdlMjM5NWFkZDI0OWUyNDgKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2RkLXN0
cmluZ3MuanMKQEAgLTAsMCArMSwxMDEgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAg
ICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigi
VGVzdCBJbmRleGVkREIgb2RkIHZhbHVlIGRhdGF0eXBlcyIpOworCitmdW5jdGlvbiB0ZXN0KCkK
K3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgdGVzdERhdGEgPSBbeyBkZXNj
cmlwdGlvbjogJ251bGwnLCAgICAgICAgICAgICAgIG5hbWU6ICdcdTAwMDAnIH0sCisgICAgICAg
ICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ2ZhaWh1JywgICAgICAgICAgICAgIG5hbWU6ICdcdWQ4
MDBcdWRmNDYnIH0sCisgICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ3VucGFpcmVkIHN1
cnJvZ2F0ZScsIG5hbWU6ICdcdWQ4MDAnIH0sCisgICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlv
bjogJ2ZmZmUnLCAgICAgICAgICAgICAgIG5hbWU6ICdcdWZmZmUnIH0sCisgICAgICAgICAgICAg
ICAgeyBkZXNjcmlwdGlvbjogJ2ZmZmYnLCAgICAgICAgICAgICAgIG5hbWU6ICdcdWZmZmYnIH0s
CisgICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ2xpbmUgc2VwYXJhdG9yJywgICAgIG5h
bWU6ICdcdTIwMjgnIH0KKyAgICBdOworICAgIG5leHRUb09wZW4gPSAwOworICAgIG9wZW5OZXh0
RGF0YWJhc2UoKTsKK30KKworZnVuY3Rpb24gb3Blbk5leHREYXRhYmFzZSgpCit7CisgICAgZGVi
dWcoIm9wZW5pbmcgYSBkYXRhYmFzZSBuYW1lZCAiICsgdGVzdERhdGFbbmV4dFRvT3Blbl0uZGVz
Y3JpcHRpb24pOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbih0ZXN0
RGF0YVtuZXh0VG9PcGVuXS5uYW1lLCB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5kZXNjcmlwdGlvbiki
KTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2Vz
cygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkQUtleTsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gYWRkQUtleSgpCit7Cisg
ICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFu
ZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSh0ZXN0RGF0YVtuZXh0VG9P
cGVuXS5uYW1lKTsiKTsKKyAgICBrZXkgPSBldmFsQW5kTG9nKCJrZXkgPSB0ZXN0RGF0YVtuZXh0
VG9PcGVuXS5uYW1lIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmpl
Y3RTdG9yZS5hZGQoa2V5LCBrZXkpOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xvc2VE
YXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
K30KKworZnVuY3Rpb24gY2xvc2VEYXRhYmFzZSgpCit7CisgICAgZXZhbEFuZExvZygiZGIuY2xv
c2UoKSIpOworICAgIGRlYnVnKCIiKTsKKyAgICBpZiAoKytuZXh0VG9PcGVuIDwgdGVzdERhdGEu
bGVuZ3RoKSB7CisgICAgICAgIG9wZW5OZXh0RGF0YWJhc2UoKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBuZXh0VG9PcGVuID0gMDsKKyAgICAgICAgdmVyaWZ5TmV4dERhdGFiYXNlKCk7CisgICAg
fQorfQorCitmdW5jdGlvbiB2ZXJpZnlOZXh0RGF0YWJhc2UoKQoreworICAgIGRlYnVnKCJyZW9w
ZW5pbmcgYSBkYXRhYmFzZSBuYW1lZCAiICsgdGVzdERhdGFbbmV4dFRvT3Blbl0uZGVzY3JpcHRp
b24pOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbih0ZXN0RGF0YVtu
ZXh0VG9PcGVuXS5uYW1lLCB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5kZXNjcmlwdGlvbikiKTsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzMjsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MyKCkK
K3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBnZXRBS2V5OworfQorCitmdW5jdGlvbiBnZXRBS2V5KCkKK3sKKyAgICB0
cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIG9i
amVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSh0
ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1lKTsiKTsKKyAgICBrZXkgPSBldmFsQW5kTG9nKCJrZXkg
PSB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1lIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBv
cGVuQ3Vyc29yU3VjY2VzczsKK30KKworZnVuY3Rpb24gb3BlbkN1cnNvclN1Y2Nlc3MoKQorewor
ICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7
CisgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAidGVzdERhdGFbbmV4dFRvT3Blbl0ubmFtZSIp
OworICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAidGVzdERhdGFbbmV4dFRvT3Blbl0ubmFt
ZSIpOworICAgIGlmICgrK25leHRUb09wZW4gPCB0ZXN0RGF0YS5sZW5ndGgpIHsKKyAgICAgICAg
ZGVidWcoIiIpOworICAgICAgICB2ZXJpZnlOZXh0RGF0YWJhc2UoKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvb3Blbi1jbG9zZS12ZXJzaW9uLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL29wZW4tY2xvc2UtdmVyc2lvbi5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMjNl
MWQ4YjkyOTUyZjgyZjg1ZDU5ZGEyYTMyNWUwMWExMTEzMzNiCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4tY2xvc2UtdmVyc2lv
bi5qcwpAQCAtMCwwICsxLDI4MyBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGlt
cG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7
CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0
IGludGVybGVhdmVkIG9wZW4vY2xvc2Uvc2V0VmVyc2lvbiBjYWxscyBpbiB2YXJpb3VzIHBlcm11
dGF0aW9ucyIpOworCitmdW5jdGlvbiBDb25uZWN0aW9uKGlkKSB7CisgICAgaWQgPSBTdHJpbmco
aWQpOworICAgIHZhciB0aGF0ID0gdGhpczsKKyAgICB0aGlzLm9wZW4gPSBmdW5jdGlvbihvcHRz
KSB7CisgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5vcGVu
JyIpKTsKKyAgICAgICAgdmFyIHJlcSA9IGluZGV4ZWREQi5vcGVuKHNlbGYuZGJuYW1lKTsKKyAg
ICAgICAgcmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVx
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgICAgICB0aGF0LmhhbmRsZSA9IGUu
dGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCIn
IiArIGlkICsgIi5vcGVuLm9uc3VjY2VzcyciKSk7CisgICAgICAgICAgICB0aGF0LmhhbmRsZS5v
bnZlcnNpb25jaGFuZ2UgPSBmdW5jdGlvbihlKSB7CisgICAgICAgICAgICAgICAgc2VsZi5zdGVw
cy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLm9udmVyc2lvbmNoYW5nZSciKSk7CisgICAg
ICAgICAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5vbnZlcnNpb24pIHsgb3B0cy5vbnZlcnNpb24u
Y2FsbCh0aGF0KTsgfQorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGlmIChvcHRzICYmIG9w
dHMub25zdWNjZXNzKSB7IG9wdHMub25zdWNjZXNzLmNhbGwodGhhdCk7IH0KKyAgICAgICAgfTsK
KyAgICB9OworCisgICAgdGhpcy5jbG9zZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICBzZWxmLnN0
ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIuY2xvc2UnIikpOworICAgICAgICB0aGlz
LmhhbmRsZS5jbG9zZSgpOworICAgIH07CisKKyAgICB0aGlzLnNldFZlcnNpb24gPSBmdW5jdGlv
bihvcHRzKSB7CisgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsg
Ii5zZXRWZXJzaW9uJyIpKTsKKyAgICAgICAgdmFyIHJlcSA9IHRoaXMuaGFuZGxlLnNldFZlcnNp
b24oU3RyaW5nKHNlbGYudmVyKyspKTsKKyAgICAgICAgcmVxLm9uYWJvcnQgPSBmdW5jdGlvbiAo
ZSkgeworICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAi
LnNldFZlcnNpb24ub25hYm9ydCciKSk7CisgICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9u
YWJvcnQpIHsgb3B0cy5vbmFib3J0LmNhbGwodGhhdCk7IH0KKyAgICAgICAgfTsKKyAgICAgICAg
cmVxLm9uYmxvY2tlZCA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgICAgICBzZWxmLnN0ZXBzLnB1
c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIuc2V0VmVyc2lvbi5vbmJsb2NrZWQnIikpOworICAg
ICAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5vbmJsb2NrZWQpIHsgb3B0cy5vbmJsb2NrZWQuY2Fs
bCh0aGF0KTsgfQorICAgICAgICB9OworICAgICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24g
KGUpIHsKKyAgICAgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsg
Ii5zZXRWZXJzaW9uLm9uc3VjY2VzcyciKSk7CisgICAgICAgICAgICBpZiAodGhhdC5oYW5kbGUu
b2JqZWN0U3RvcmVOYW1lcy5jb250YWlucygidGVzdC1zdG9yZSIgKyBzZWxmLnZlcikpIHsKKyAg
ICAgICAgICAgICAgICB0aGF0LmhhbmRsZS5kZWxldGVPYmplY3RTdG9yZSgidGVzdC1zdG9yZSIg
KyBzZWxmLnZlcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2YXIgc3RvcmUgPSB0aGF0
LmhhbmRsZS5jcmVhdGVPYmplY3RTdG9yZSgidGVzdC1zdG9yZSIgKyBzZWxmLnZlcik7CisgICAg
ICAgICAgICB2YXIgY291bnQgPSAwOworICAgICAgICAgICAgZG9fYXN5bmNfcHV0cygpOyAvLyBL
ZWVwIHRoaXMgdHJhbnNhY3Rpb24gcnVubmluZyBmb3IgYSB3aGlsZQorICAgICAgICAgICAgZnVu
Y3Rpb24gZG9fYXN5bmNfcHV0cygpIHsKKyAgICAgICAgICAgICAgICB2YXIgcmVxID0gc3RvcmUu
cHV0KGNvdW50LCBjb3VudCk7CisgICAgICAgICAgICAgICAgcmVxLm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgICAgICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rp
b24gKGUpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCsrY291bnQgPCAxMCkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgZG9fYXN5bmNfcHV0cygpOworICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRM
b2coIiciICsgaWQgKyAiLnNldFZlcnNpb24udHJhbnNhY3Rpb24tY29tcGxldGUnIikpOworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5vbnN1Y2Nlc3MpIHsgb3B0cy5v
bnN1Y2Nlc3MuY2FsbCh0aGF0KTsgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgfTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgcmVxLm9uZXJyb3Ig
PSBmdW5jdGlvbiAoZSkgeworICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2co
IiciICsgaWQgKyAiLnNldFZlcnNpb24ub25lcnJvciciKSk7CisgICAgICAgICAgICBpZiAob3B0
cyAmJiBvcHRzLm9uZXJyb3IpIHsgb3B0cy5vbmVycm9yLmNhbGwodGhhdCk7IH0KKyAgICAgICAg
fTsKKyAgICB9OworfQorCisvLyBydW4gYSBzZXJpZXMgb2Ygc3RlcHMgdGhhdCB0YWtlIGEgY29u
dGludWF0aW9uIGZ1bmN0aW9uCitmdW5jdGlvbiBydW5TdGVwcyhjb21tYW5kcykgeworICAgIGlm
IChjb21tYW5kcy5sZW5ndGgpIHsKKyAgICAgICAgdmFyIGNvbW1hbmQgPSBjb21tYW5kcy5zaGlm
dCgpOworICAgICAgICBjb21tYW5kKGZ1bmN0aW9uKCkgeyBydW5TdGVwcyhjb21tYW5kcyk7IH0p
OworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhl
cygpOworICAgIHRlc3QxKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QxKCkgeworICAgIGRlYnVnKCIi
KTsKKyAgICBkZWJ1ZygiVEVTVDogc2V0VmVyc2lvbiBibG9ja2VkIG9uIG9wZW4gaGFuZGxlcyIp
OworICAgIGV2YWxBbmRMb2coInNlbGYuZGJuYW1lID0gJ3Rlc3QxJzsgc2VsZi52ZXIgPSAxOyBz
ZWxmLnN0ZXBzID0gW10iKTsKKyAgICB2YXIgaDEgPSBuZXcgQ29ubmVjdGlvbigiaDEiKTsKKyAg
ICB2YXIgaDIgPSBuZXcgQ29ubmVjdGlvbigiaDIiKTsKKyAgICBydW5TdGVwcyhbZnVuY3Rpb24o
ZG9OZXh0KSB7IGgxLm9wZW4oe29uc3VjY2VzczogZG9OZXh0fSk7IH0sCisgICAgICAgICBmdW5j
dGlvbihkb05leHQpIHsgaDIub3Blbih7b25zdWNjZXNzOiBkb05leHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9udmVyc2lvbjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiICAgIGgyIGNsb3NpbmcsIGJ1dCBub3QgaW1t
ZWRpYXRlbHkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IGgyLmNsb3NlKCk7IH0sIDApOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9fSk7IH0sCisgICAgICAgICBmdW5jdGlvbihkb05leHQpIHsgaDEuc2V0VmVy
c2lvbih7b25zdWNjZXNzOiBmaW5pc2hUZXN0fSk7IH0sCisgICAgICAgICBdKTsKKyAgICBmdW5j
dGlvbiBmaW5pc2hUZXN0KCkgeworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNlbGYu
c3RlcHMudG9TdHJpbmcoKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImgxLm9w
ZW4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5vcGVuLm9uc3VjY2VzcyIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLm9wZW4iLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJoMi5vcGVuLm9uc3VjY2VzcyIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJoMi5vbnZlcnNpb25jaGFuZ2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJoMS5zZXRWZXJzaW9uLm9uYmxvY2tlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImgyLmNsb3NlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0
VmVyc2lvbi5vbnN1Y2Nlc3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5z
ZXRWZXJzaW9uLnRyYW5zYWN0aW9uLWNvbXBsZXRlIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF0udG9TdHJpbmcoKSk7CisgICAgICAgIHRlc3QyKCk7CisgICAgfQorfQorCitmdW5j
dGlvbiB0ZXN0MigpIHsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRFU1Q6IHNldFZlcnNp
b24gbm90IGJsb2NrZWQgaWYgaGFuZGxlIGNsb3NlZCBpbW1lZGlhdGVseSIpOworICAgIGV2YWxB
bmRMb2coInNlbGYuZGJuYW1lID0gJ3Rlc3QyJzsgc2VsZi52ZXIgPSAxOyBzZWxmLnN0ZXBzID0g
W10iKTsKKyAgICB2YXIgaDEgPSBuZXcgQ29ubmVjdGlvbigiaDEiKTsKKyAgICB2YXIgaDIgPSBu
ZXcgQ29ubmVjdGlvbigiaDIiKTsKKyAgICBydW5TdGVwcyhbZnVuY3Rpb24oZG9OZXh0KSB7IGgx
Lm9wZW4oe29uc3VjY2VzczogZG9OZXh0fSk7IH0sCisgICAgICAgICAgICAgIGZ1bmN0aW9uKGRv
TmV4dCkgeyBoMi5vcGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9udmVyc2lvbjogZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoIiAgICBoMiBjbG9zaW5n
IGltbWVkaWF0ZWx5Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaDIuY2xvc2UoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH19KTsgfSwKKyAgICAgICAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGgxLnNldFZlcnNp
b24oe29uc3VjY2VzczogZG9OZXh0fSk7IH0sCisgICAgICAgICAgICAgIGZpbmlzaFRlc3QKKyAg
ICAgICAgICAgICAgXSk7CisKKyAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgeworICAgICAgICBk
ZWJ1ZygiTk9URTogV2lsbCBGQUlMIHdpdGggZXh0cmEgYm9ndXMgaDEuc2V0VmVyc2lvbi5vbmJs
b2NrZWQgc3RlcDsgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMTMw
Iik7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic2VsZi5zdGVwcy50b1N0cmluZygp
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiaDEub3BlbiIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImgxLm9wZW4ub25zdWNjZXNzIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiaDIub3BlbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImgyLm9wZW4ub25zdWNjZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
aDEuc2V0VmVyc2lvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLm9udmVy
c2lvbmNoYW5nZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLmNsb3NlIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbi5vbnN1Y2Nlc3Mi
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLnRyYW5zYWN0
aW9uLWNvbXBsZXRlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udG9TdHJpbmco
KSk7CisgICAgICAgIHRlc3QzKCk7CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0MygpIHsKKyAg
ICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRFU1Q6IG9wZW4gYW5kIHNldFZlcnNpb24gYmxvY2tl
ZCBpZiBhIFZFUlNJT05fQ0hBTkdFIHRyYW5zYWN0aW9uIGlzIHJ1bm5pbmcgLSBjbG9zZSB3aGVu
IGJsb2NrZWQiKTsKKyAgICBldmFsQW5kTG9nKCJzZWxmLmRibmFtZSA9ICd0ZXN0Myc7IHNlbGYu
dmVyID0gMTsgc2VsZi5zdGVwcyA9IFtdIik7CisgICAgdmFyIGgxID0gbmV3IENvbm5lY3Rpb24o
ImgxIik7CisgICAgdmFyIGgyID0gbmV3IENvbm5lY3Rpb24oImgyIik7CisgICAgdmFyIGgzID0g
bmV3IENvbm5lY3Rpb24oImgzIik7CisgICAgcnVuU3RlcHMoW2Z1bmN0aW9uKGRvTmV4dCkgeyBo
MS5vcGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dH0pOyB9LAorICAgICAgICAgICAgICBmdW5jdGlvbihk
b05leHQpIHsgaDIub3Blbih7b25zdWNjZXNzOiBkb05leHR9KTsgfSwKKyAgICAgICAgICAgICAg
ZnVuY3Rpb24oZG9OZXh0KSB7IGgxLnNldFZlcnNpb24oKTsgZG9OZXh0KCk7IH0sCisgICAgICAg
ICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBoMi5zZXRWZXJzaW9uKHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uYmxvY2tlZDogZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGVidWcoIiAgICBoMiBibG9ja2VkIHNvIGNsb3NpbmciKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoMi5jbG9zZSgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvTmV4dCgp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0p
OyB9LAorICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgaDMub3Blbih7b25zdWNjZXNzOiBmaW5p
c2hUZXN0fSk7fQorICAgICAgICAgICAgICBdKTsKKworICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3Qo
KSB7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic2VsZi5zdGVwcy50b1N0cmluZygp
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiaDEub3BlbiIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImgxLm9wZW4ub25zdWNjZXNzIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiaDIub3BlbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImgyLm9wZW4ub25zdWNjZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
aDEuc2V0VmVyc2lvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLnNldFZl
cnNpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5vbnZlcnNpb25jaGFu
Z2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLm9uYmxv
Y2tlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLm9udmVyc2lvbmNoYW5n
ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLnNldFZlcnNpb24ub25ibG9j
a2VkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIuY2xvc2UiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJoMy5vcGVuIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiaDIuc2V0VmVyc2lvbi5vbmVycm9yIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiaDEuc2V0VmVyc2lvbi5vbnN1Y2Nlc3MiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLnRyYW5zYWN0aW9uLWNvbXBsZXRlIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiaDMub3Blbi5vbnN1Y2Nlc3MiCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXS50b1N0cmluZygpKTsKKyAgICAgICAgdGVzdDQoKTsKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIHRlc3Q0KCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygi
VEVTVDogb3BlbiBhbmQgc2V0VmVyc2lvbiBibG9ja2VkIGlmIGEgVkVSU0lPTl9DSEFOR0UgdHJh
bnNhY3Rpb24gaXMgcnVubmluZyAtIGp1c3QgY2xvc2UiKTsKKyAgICBldmFsQW5kTG9nKCJzZWxm
LmRibmFtZSA9ICd0ZXN0NCc7IHNlbGYudmVyID0gMTsgc2VsZi5zdGVwcyA9IFtdIik7CisgICAg
dmFyIGgxID0gbmV3IENvbm5lY3Rpb24oImgxIik7CisgICAgdmFyIGgyID0gbmV3IENvbm5lY3Rp
b24oImgyIik7CisgICAgdmFyIGgzID0gbmV3IENvbm5lY3Rpb24oImgzIik7CisgICAgcnVuU3Rl
cHMoW2Z1bmN0aW9uKGRvTmV4dCkgeyBoMS5vcGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dH0pOyB9LAor
ICAgICAgICAgICAgICBmdW5jdGlvbihkb05leHQpIHsgaDIub3Blbih7b25zdWNjZXNzOiBkb05l
eHR9KTsgfSwKKyAgICAgICAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGgxLnNldFZlcnNpb24o
KTsgZG9OZXh0KCk7IH0sCisgICAgICAgICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBoMy5vcGVu
KHtvbnN1Y2Nlc3M6IGZpbmlzaFRlc3R9KTsgZG9OZXh0KCk7IH0sCisgICAgICAgICAgICAgIGZ1
bmN0aW9uKGRvTmV4dCkgeyBoMi5jbG9zZSgpOyB9LAorICAgICAgICAgICAgICBdKTsKKworICAg
IGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgICAgIGRlYnVnKCJOT1RFOiBXaWxsIEZBSUwg
d2l0aCBleHRyYSBib2d1cyBoMS5zZXRWZXJzaW9uLm9uYmxvY2tlZCBzdGVwOyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzExMzAiKTsKKyAgICAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJzZWxmLnN0ZXBzLnRvU3RyaW5nKCkiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgWyJoMS5vcGVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
aDEub3Blbi5vbnN1Y2Nlc3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5v
cGVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIub3Blbi5vbnN1Y2Nlc3Mi
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiaDMub3BlbiIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImgyLmNsb3NlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
aDEuc2V0VmVyc2lvbi5vbnN1Y2Nlc3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJoMS5zZXRWZXJzaW9uLnRyYW5zYWN0aW9uLWNvbXBsZXRlIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiaDMub3Blbi5vbnN1Y2Nlc3MiCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXS50b1N0cmluZygpKTsKKyAgICAgICAgdGVzdDUoKTsKKyAgICB9Cit9CisKK2Z1
bmN0aW9uIHRlc3Q1KCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVEVTVDogb3BlbiBi
bG9ja2VkIGlmIGEgVkVSU0lPTl9DSEFOR0UgdHJhbnNhY3Rpb24gaXMgcnVubmluZyIpOworICAg
IGV2YWxBbmRMb2coInNlbGYuZGJuYW1lID0gJ3Rlc3Q1Jzsgc2VsZi52ZXIgPSAxOyBzZWxmLnN0
ZXBzID0gW10iKTsKKyAgICB2YXIgaDEgPSBuZXcgQ29ubmVjdGlvbigiaDEiKTsKKyAgICB2YXIg
aDIgPSBuZXcgQ29ubmVjdGlvbigiaDIiKTsKKworICAgIHJ1blN0ZXBzKFtmdW5jdGlvbihkb05l
eHQpIHsgaDEub3Blbih7b25zdWNjZXNzOiBkb05leHR9KTsgfSwKKyAgICAgICAgICAgICAgZnVu
Y3Rpb24oZG9OZXh0KSB7IGgxLnNldFZlcnNpb24oKTsgZG9OZXh0KCk7IH0sCisgICAgICAgICAg
ICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBoMi5vcGVuKHtvbnN1Y2Nlc3M6IGZpbmlzaFRlc3R9KTsg
fQorICAgICAgICAgICAgICBdKTsKKworICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAg
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic2VsZi5zdGVwcy50b1N0cmluZygpIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFsiaDEub3BlbiIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImgxLm9wZW4ub25zdWNjZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiaDEuc2V0VmVyc2lvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImgyLm9wZW4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9u
Lm9uc3VjY2VzcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNp
b24udHJhbnNhY3Rpb24tY29tcGxldGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJoMi5vcGVuLm9uc3VjY2VzcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnRv
U3RyaW5nKCkpOworICAgICAgICB0ZXN0NigpOworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdDYo
KSB7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJURVNUOiB0d28gc2V0VmVyc2lvbnMgZnJv
bSB0aGUgc2FtZSBjb25uZWN0aW9uIik7CisgICAgZXZhbEFuZExvZygic2VsZi5kYm5hbWUgPSAn
dGVzdDYnOyBzZWxmLnZlciA9IDE7IHNlbGYuc3RlcHMgPSBbXSIpOworICAgIHZhciBoMSA9IG5l
dyBDb25uZWN0aW9uKCJoMSIpOworCisgICAgcnVuU3RlcHMoW2Z1bmN0aW9uKGRvTmV4dCkgeyBo
MS5vcGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dH0pOyB9LCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGgxLnNldFZlcnNpb24o
e29uc3VjY2VzczogaGFsZkRvbmV9KTsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBoMS5zZXRWZXJzaW9uKHtvbnN1Y2Nlc3M6IGhhbGZEb25lfSk7IH0KKyAgICAgICAgICAgICAg
XSk7CisKKyAgICB2YXIgY291bnRlciA9IDA7CisgICAgZnVuY3Rpb24gaGFsZkRvbmUoKSB7Cisg
ICAgICAgIGNvdW50ZXIrKzsKKyAgICAgICAgaWYgKGNvdW50ZXIgPCAyKSB7CisgICAgICAgICAg
ICBkZWJ1ZygnaGFsZiBkb25lJyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmaW5p
c2hUZXN0KCk7CisgICAgICAgIH0KKyAgICB9ICAKKworICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3Qo
KSB7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic2VsZi5zdGVwcy50b1N0cmluZygp
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiaDEub3BlbiIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImgxLm9wZW4ub25zdWNjZXNzIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbiIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImgxLnNldFZlcnNpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJoMS5zZXRWZXJzaW9uLm9uc3VjY2VzcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImgxLnNldFZlcnNpb24udHJhbnNhY3Rpb24tY29tcGxldGUiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLm9uc3VjY2VzcyIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24udHJhbnNhY3Rpb24tY29tcGxldGUiCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS50b1N0cmluZygpKTsKKyAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgfQorfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L29wZW4tY3Vyc29yLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L29wZW4tY3Vyc29yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlmOWRjM2I2Yjc5NWJmMGVkOWU5MzY0ZjdhYmY4
OGNkMGU2Y2I4N2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvb3Blbi1jdXJzb3IuanMKQEAgLTAsMCArMSw4NCBAQAoraWYgKHRoaXMu
aW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7
Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIG9wZW5DdXJzb3IuIik7CisKK2Z1
bmN0aW9uIGVtcHR5Q3Vyc29yU3VjY2VzcygpCit7CisgICAgZGVidWcoIkVtcHR5IGN1cnNvciBv
cGVuZWQgc3VjY2Vzc2Z1bGx5LiIpCisgICAgLy8gRklYTUU6IGNoZWNrIHRoYXQgd2UgY2FuIGl0
ZXJhdGUgdGhlIGN1cnNvci4KKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gb3Bl
bkVtcHR5Q3Vyc29yKCkKK3sKKyAgICBkZWJ1ZygiT3BlbmluZyBhbiBlbXB0eSBjdXJzb3IuIik7
CisgICAga2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKCJJbmV4aXN0ZW50S2V5Iik7
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLm9wZW5DdXJzb3Ioa2V5UmFu
Z2UpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBlbXB0eUN1cnNvclN1Y2Nlc3M7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IGN1cnNvclN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJDdXJzb3Igb3BlbmVkIHN1Y2Nlc3NmdWxs
eS4iKQorICAgIC8vIEZJWE1FOiBjaGVjayB0aGF0IHdlIGNhbiBpdGVyYXRlIHRoZSBjdXJzb3Iu
CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQuZGlyZWN0aW9uIiwgIjAiKTsKKyAg
ICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAiJ215S2V5JyIpOworICAgIHNo
b3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnZhbHVlIiwgIidteVZhbHVlJyIpOworICAgIGRl
YnVnKCIiKTsKKyAgICB0cnkgeworICAgICAgICBkZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtl
eSBpbnRvIC5jb250aW51ZSh7fSkuIik7CisgICAgICAgIGV2ZW50LnRhcmdldC5yZXN1bHQuY29u
dGludWUoe30pOworICAgICAgICB0ZXN0RmFpbGVkKCJObyBleGNlcHRpb24gdGhyb3duIik7Cisg
ICAgfSBjYXRjaCAoZSkgeworICAgICAgICB0ZXN0UGFzc2VkKCJDYXVnaHQgZXhjZXB0aW9uOiAi
ICsgZS50b1N0cmluZygpKTsKKyAgICB9CisgICAgZGVidWcoIiIpOworICAgIG9wZW5FbXB0eUN1
cnNvcigpOworfQorCitmdW5jdGlvbiBvcGVuQ3Vyc29yKCkKK3sKKyAgICBkZWJ1ZygiT3Blbmlu
ZyBjdXJzb3IiKTsKKyAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQoIm15S2V5
Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5zb3VyY2Uub3BlbkN1
cnNvcihrZXlSYW5nZSkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvclN1Y2Nlc3M7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIHNldFZlcnNpb25TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nl
c3MoKToiKTsKKyAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJn
ZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRy
YW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKworICAgIGRlbGV0ZUFsbE9i
amVjdFN0b3JlcyhkYik7CisKKyAgICB2YXIgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCd0ZXN0JykiKTsKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlJywgJ215S2V5JykiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5DdXJzb3I7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAg
ICB2YXIgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7
CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
aW5kZXhlZERCLm9wZW4oJ29wZW4tY3Vyc29yJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4tZHVyaW5nLXRy
YW5zYWN0aW9uLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29w
ZW4tZHVyaW5nLXRyYW5zYWN0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUzYzE5ZDdkOWYwNGFiMTM2NDUw
YjczMTI2ZWI3MDBlMjMzYjUwMjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb3Blbi1kdXJpbmctdHJhbnNhY3Rpb24uanMKQEAgLTAs
MCArMSw3NyBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMo
Jy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0
U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBv
cGVuaW5nIGRhdGFiYXNlIGNvbm5lY3Rpb25zIGR1cmluZyB0cmFuc2FjdGlvbnMiKTsKKworZnVu
Y3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBwcmVwYXJl
RGF0YWJhc2UoKTsKK30KKworZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKCkKK3sKKyAgICBkZWJ1
ZygicHJlcGFyZSBkYXRhYmFzZSIpOworICAgIGV2YWxBbmRMb2coIm9wZW5yZXExID0gaW5kZXhl
ZERCLm9wZW4oJ2RiMScpIik7CisgICAgb3BlbnJlcTEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworICAgIG9wZW5yZXExLm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7CisgICAg
ICAgIGV2YWxBbmRMb2coImRiYzEgPSBvcGVucmVxMS5yZXN1bHQiKTsKKyAgICAgICAgZXZhbEFu
ZExvZygic2V0dmVycmVxID0gZGJjMS5zZXRWZXJzaW9uKCcxLjAnKSIpOworICAgICAgICBzZXR2
ZXJyZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICBzZXR2ZXJy
ZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImRi
YzEuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgICAgICAgICBzZXR2ZXJy
ZXEucmVzdWx0Lm9uY29tcGxldGUgPSBmdW5jdGlvbiAoZSkgeworICAgICAgICAgICAgICAgIGRl
YnVnKCJkYXRhYmFzZSBwcmVwYXJhdGlvbiBjb21wbGV0ZSIpOworICAgICAgICAgICAgICAgIGRl
YnVnKCIiKTsKKyAgICAgICAgICAgICAgICBzdGFydFRyYW5zYWN0aW9uKCk7CisgICAgICAgICAg
ICB9OworICAgICAgICB9OworICAgIH07Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VHJhbnNhY3Rpb24o
KQoreworICAgIGRlYnVnKCJzdGFydGluZyB0cmFuc2FjdGlvbiIpOworICAgIGV2YWxBbmRMb2co
InN0YXRlID0gJ3N0YXJ0aW5nJyIpOworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGJjMS50cmFu
c2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICBl
dmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykucHV0KCd2YWx1ZScsICdr
ZXknKSIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAg
ICB0cmFucy5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgdHJhbnMub25j
b21wbGV0ZSA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgIGRlYnVnKCJ0cmFuc2FjdGlvbiBjb21w
bGV0ZSIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInN0YXRlIiwgIm9wZW4zY29t
cGxldGUiKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfTsKKworICAgIGRlYnVnKCIi
KTsKKyAgICB0cnlPcGVucygpOworfQorCitmdW5jdGlvbiB0cnlPcGVucygpCit7CisgICAgZGVi
dWcoInRyeWluZyB0byBvcGVuIHRoZSBzYW1lIGRhdGFiYXNlIik7CisgICAgZXZhbEFuZExvZygi
b3BlbnJlcTIgPSBpbmRleGVkREIub3BlbignZGIxJykiKTsKKyAgICBvcGVucmVxMi5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgb3BlbnJlcTIub25zdWNjZXNzID0gZnVu
Y3Rpb24gKGUpIHsKKyAgICAgICAgZGVidWcoIm9wZW5yZXEyLm9uc3VjY2VzcyIpOworICAgICAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInN0YXRlIiwgInN0YXJ0aW5nIik7CisgICAgICAgIGV2
YWxBbmRMb2coInN0YXRlID0gJ29wZW4yY29tcGxldGUnIik7CisgICAgICAgIGRlYnVnKCIiKTsK
KyAgICB9CisgICAgZGVidWcoIiIpOworCisgICAgZGVidWcoInRyeWluZyB0byBvcGVuIGEgZGlm
ZmVyZW50IGRhdGFiYXNlIik7CisgICAgZXZhbEFuZExvZygib3BlbnJlcTMgPSBpbmRleGVkREIu
b3BlbignZGIyJykiKTsKKyAgICBvcGVucmVxMy5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7CisgICAgb3BlbnJlcTMub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAg
ZGVidWcoIm9wZW5yZXEzLm9uc3VjY2VzcyIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoInN0YXRlIiwgIm9wZW4yY29tcGxldGUiKTsKKyAgICAgICAgZXZhbEFuZExvZygic3RhdGUg
PSAnb3BlbjNjb21wbGV0ZSciKTsKKyAgICAgICAgZGVidWcoIiIpOworICAgIH0KKyAgICBkZWJ1
ZygiIik7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvcHJlZmV0Y2gtYnVn
Zml4LTEwODA3MS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9w
cmVmZXRjaC1idWdmaXgtMTA4MDcxLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmMTQxNjdhMWRlNGE1NGI1NGJj
ZDNiM2VkMmZiNDY5OWM5ZjFjMDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvcHJlZmV0Y2gtYnVnZml4LTEwODA3MS5qcwpAQCAtMCww
ICsxLDExOCBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMo
Jy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0
U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IGZvciBjcmJ1Zy5j
b20vMTA4MDcxIik7CisKKy8vIEhhdmUgdG8gYmUgYXQgbGVhc3QgNSBoZXJlOiAxIGluaXRpYWws
IDMgY29udGludWVzIHRvIHRyaWdnZXIgcHJlZmV0Y2ggYW5kIDEKKy8vIHBvc3QtYWJvcnQgb3V0
c3RhbmRpbmcgY29udGludWUuCit2YXIgbmFtZXMgPSBbJ0FscGhhJywgJ0JyYXZvJywgJ0NoYXJs
aWUnLCAnRGVsdGEnLCAnRWNobyddOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVW
ZW5kb3JQcmVmaXhlcygpOworICAgIERCTkFNRSA9ICdwcmVmZXRjaC1idWdmaXgtMTA4MDcxJzsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKERCTkFN
RSkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICByZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZSkgeworICAgICAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCLm9wZW4oREJOQU1FKSIpOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IG9wZW5TdWNjZXNzOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICB9OworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAg
dmFyIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb25T
dWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKKyAgICBzZWxm
LnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAg
c2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4
cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gaXRlcmF0ZUFuZERl
bGV0ZUZpcnN0RWxlbWVudDsKKworICAgIHZhciBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9i
amVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJywge2tleVBhdGg6ICdpZCd9
KSIpOworICAgIHJlc2V0T2JqZWN0U3RvcmUoKTsKK30KKworZnVuY3Rpb24gcmVzZXRPYmplY3RT
dG9yZSgpCit7CisgICAgZGVidWcoIlxucmVzZXRPYmplY3RTdG9yZSgpOiIpOworCisgICAgb2Jq
ZWN0U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsKKyAgICBldmFsQW5kTG9nKCJv
YmplY3RTdG9yZS5jbGVhcigpIik7CisgICAgZm9yIChpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsg
aSsrKSB7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoe2lk
OiAiICsgaSArICIsIG5hbWU6IFwiIiArIG5hbWVzW2ldICsgIlwifSkiKTsKKyAgICAgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgfQorCisgICAgZGVi
dWcoIiIpOworfQorCitmdW5jdGlvbiBpdGVyYXRlQW5kRGVsZXRlRmlyc3RFbGVtZW50KCkKK3sK
KyAgICBkZWJ1ZygiaXRlcmF0ZUFuZERlbGV0ZUZpcnN0RWxlbWVudCgpOiIpOworCisgICAgZXZh
bEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9u
LlJFQURfV1JJVEUpIik7CisgICAgdHJhbnMub25hYm9ydCA9IHRyYW5zYWN0aW9uQWJvcnRlZDsK
KyAgICB0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7CisKKyAg
ICAvLyBDcmVhdGUgdGhlIGN1cnNvciBhbmQgaXRlcmF0ZSBvdmVyIHRoZSB3aG9sZSB0aGluZy4K
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykub3Bl
bkN1cnNvcigpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgIHZhciBj
dXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgICAgICBpZiAoY3Vyc29yID09IG51bGwp
IHsKKyAgICAgICAgICAgIHJlc2V0T2JqZWN0U3RvcmUoKTsKKyAgICAgICAgICAgIHByZWZldGNo
QW5kQWJvcnQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGRl
YnVnKGN1cnNvci52YWx1ZS5pZCArICI6ICIgKyBjdXJzb3IudmFsdWUubmFtZSk7CisKKyAgICAg
ICAgaWYgKGN1cnNvci52YWx1ZS5pZCA9PSAwKSB7CisgICAgICAgICAgICAvLyBEZWxldGUgdGhl
IGZpcnN0IGVsZW1lbnQgd2hlbiB3ZSBzZWUgaXQuCisgICAgICAgICAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykuZGVsZXRlKDApIik7CisgICAgICAg
ICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAg
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7IGN1cnNvci5jb250aW51ZSgpOyB9
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIHByZWZldGNoQW5kQWJvcnQoKQoreworICAgIGRl
YnVnKCJwcmVmZXRjaEFuZEFib3J0KCk6Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
dHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykub3BlbkN1cnNvcigpIik7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbiAoKSB7CisgICAgICAgIHZhciBjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0
OworICAgICAgICBkZWJ1ZyhjdXJzb3IudmFsdWUuaWQgKyAiOiAiICsgY3Vyc29yLnZhbHVlLm5h
bWUpOworICAgICAgICAvLyBIYXZlIHRvIGl0ZXJhdGUgdG8gMyBpbiBvcmRlciB0byBwcmVmZXRj
aCwgYnV0IGNhbid0IGl0ZXJhdGUgcGFzdCAzCisgICAgICAgIC8vIHNvIHRoYXQgdGhlcmUgd2ls
bCBiZSBhIGNvbnRpbnVlIHJlbWFpbmluZy4KKyAgICAgICAgaWYgKGN1cnNvci52YWx1ZS5pZCA9
PSAzKSB7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJ0cmFucy5hYm9ydCgpIik7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBjdXJzb3IuY29udGludWUoKTsKKyAgICAgICAgfQorICAg
IH0KK30KKworZnVuY3Rpb24gdHJhbnNhY3Rpb25BYm9ydGVkKCkKK3sKKyAgICB0ZXN0UGFzc2Vk
KCJUcmFuc2FjdGlvbiBhYm9ydGVkIGFzIGV4cGVjdGVkIik7CisgICAgZmluaXNoSlNUZXN0KCk7
Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvcXVldWVkLWNvbW1hbmRzLmpz
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3F1ZXVlZC1jb21tYW5k
cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xMDBiZmQ1YTE2Y2VjZTEwNDc1MjEyNjdmNmEyYTk5MzE5YjQ4MmIy
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL3F1ZXVlZC1jb21tYW5kcy5qcwpAQCAtMCwwICsxLDYyIEBACitpZiAodGhpcy5pbXBvcnRT
Y3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKwor
ZGVzY3JpcHRpb24oIlZlcmlmeSB0aGF0IHF1ZXVpbmcgdXAgc2V2ZXJhbCBjb21tYW5kcyB3b3Jr
cyAoYW5kIHRoZXkgYWxsIGZpcmUpLiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1v
dmVWZW5kb3JQcmVmaXhlcygpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
b3BlbigncXVldWVkLWNvbW1hbmRzJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZl
cnNpb247CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIHNldFZlcnNpb24oKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBl
dmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0
VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRl
RXhpc3Rpbmc7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lv
blN1Y2Nlc3MoKToiKTsKKyAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwor
ICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKworICAgIGRlbGV0
ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBzZWxmLnN0b3JlID0gZXZhbEFuZExvZygiZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgc2VsZi5pbmRleE9iamVjdCA9
IGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleE5hbWUnLCAneCcpIik7CisKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30s
ICdrZXknKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7IHZlcmlmeUFk
ZCgwKTsgfTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZTInLCB5OiAn
enp6Mid9LCAna2V5MicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsg
dmVyaWZ5QWRkKDEpOyB9OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLnB1dCh7eDogJ3ZhbHUy
JywgeTogJ3p6Mid9LCAna3kyJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KCkgeyB2ZXJpZnlBZGQoMik7IH07CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisKKyAgICBzZWxmLmFkZENvdW50ID0gMDsKK30KKworZnVuY3Rpb24gdmVy
aWZ5QWRkKGV4cGVjdGVkKQoreworICAgIHNob3VsZEJlKCIiICsgYWRkQ291bnQrKywgIiIgKyBl
eHBlY3RlZCk7CisKKyAgICBpZiAoYWRkQ291bnQgPT0gMykKKyAgICAgICAgZmluaXNoSlNUZXN0
KCk7CisgICAgaWYgKGFkZENvdW50ID4gMykKKyAgICAgICAgdGVzdEZhaWxlZCgiVW5leHBlY3Rl
ZCBjYWxsIHRvIHZlcmlmeUFkZCEiKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9yZWFkb25seS1wcm9wZXJ0aWVzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL3JlYWRvbmx5LXByb3BlcnRpZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzI1YzA0MWIw
MTgxOWMxNDZlMmI2M2ExNjY5YWQzOThkNzdhYjJjNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9yZWFkb25seS1wcm9wZXJ0aWVzLmpz
CkBAIC0wLDAgKzEsNDkgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRT
Y3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAg
IGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRl
eGVkREIgcmVhZG9ubHkgcHJvcGVydGllcyIpOworCitmdW5jdGlvbiBzZXRSZWFkb25seVByb3Bl
cnR5KHByb3BlcnR5LCB2YWx1ZSkKK3sKKyAgICBvbGRWYWx1ZSA9IGV2YWwocHJvcGVydHkpOwor
ICAgIGRlYnVnKCJ0cnlpbmcgdG8gc2V0IHJlYWRvbmx5IHByb3BlcnR5ICIgKyBwcm9wZXJ0eSk7
CisgICAgZXZhbEFuZExvZyhwcm9wZXJ0eSArICIgPSAiICsgdmFsdWUpOworICAgIG5ld1ZhbHVl
ID0gZXZhbChwcm9wZXJ0eSk7CisgICAgaWYgKG9sZFZhbHVlID09IG5ld1ZhbHVlKSB7CisgICAg
ICAgIHRlc3RQYXNzZWQocHJvcGVydHkgKyAiIGlzIHN0aWxsICIgKyBvbGRWYWx1ZSk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZChwcm9wZXJ0eSArICIgdmFsdWUgd2FzIGNoYW5n
ZWQgdG8gIiArIG5ld1ZhbHVlKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAg
IHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gImZvbyI7CisgICAgZGVzY3Jp
cHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImlu
ZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRM
b2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9i
amVjdFN0b3JlKCkKK3sKKyAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9u
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIp
OworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVP
YmplY3RTdG9yZSgnZm9vJyk7Iik7CisgICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgib2JqZWN0U3Rv
cmUudHJhbnNhY3Rpb24iLCAidGhpcyIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0
KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3JlYWRvbmx5LmpzIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3JlYWRvbmx5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2ZDMxY2Y4
ODkyZGIxNGNhMzY5ODBhYWY4Y2QzMWZmYTVmOWNmMmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvcmVhZG9ubHkuanMKQEAgLTAsMCAr
MSwxMDYgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcu
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNj
cmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgcmVh
ZG9ubHkgcHJvcGVydGllcyIpOworCitmdW5jdGlvbiBzZXRSZWFkb25seVByb3BlcnR5KHByb3Bl
cnR5LCB2YWx1ZSkKK3sKKyAgICBvbGRWYWx1ZSA9IGV2YWwocHJvcGVydHkpOworICAgIGRlYnVn
KCJ0cnlpbmcgdG8gc2V0IHJlYWRvbmx5IHByb3BlcnR5ICIgKyBwcm9wZXJ0eSk7CisgICAgZXZh
bEFuZExvZyhwcm9wZXJ0eSArICIgPSAiICsgdmFsdWUpOworICAgIG5ld1ZhbHVlID0gZXZhbChw
cm9wZXJ0eSk7CisgICAgaWYgKG9sZFZhbHVlID09IG5ld1ZhbHVlKSB7CisgICAgICAgIHRlc3RQ
YXNzZWQocHJvcGVydHkgKyAiIGlzIHN0aWxsICIgKyBvbGRWYWx1ZSk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgdGVzdEZhaWxlZChwcm9wZXJ0eSArICIgdmFsdWUgd2FzIGNoYW5nZWQiKTsKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7
CisKKyAgICBuYW1lID0gImZvbyI7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFz
ZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2Ny
aXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9w
ZW5TdWNjZXNzKCkKK3sKKyAgICBzZXRSZWFkb25seVByb3BlcnR5KCJyZXF1ZXN0LnJlc3VsdCIs
ICJJbmZpbml0eSIpOworICAgIHNldFJlYWRvbmx5UHJvcGVydHkoInJlcXVlc3QuZXJyb3JDb2Rl
IiwgIjY2NiIpOworICAgIHNldFJlYWRvbmx5UHJvcGVydHkoInJlcXVlc3Quc291cmNlIiwgInRo
aXMiKTsKKyAgICBzZXRSZWFkb25seVByb3BlcnR5KCJyZXF1ZXN0LnRyYW5zYWN0aW9uIiwgInRo
aXMiKTsKKyAgICBzZXRSZWFkb25seVByb3BlcnR5KCJyZXF1ZXN0LnJlYWR5U3RhdGUiLCAiNjY2
Iik7CisKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwor
ICAgIHNldFJlYWRvbmx5UHJvcGVydHkoImRiLm5hbWUiLCAiJ2JhciciKTsKKworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjcmVh
dGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKK3sKKyAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRM
b2coInRyYW5zYWN0aW9uID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICBzZXRSZWFkb25s
eVByb3BlcnR5KCJ0cmFuc2FjdGlvbi5tb2RlIiwgIjY2NiIpOworICAgIHNldFJlYWRvbmx5UHJv
cGVydHkoInRyYW5zYWN0aW9uLmRiIiwgInRoaXMiKTsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0
b3JlcyhkYik7CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycpOyIpOworCisgICAgc2V0UmVhZG9ubHlQcm9wZXJ0
eSgib2JqZWN0U3RvcmUubmFtZSIsICInYmFyJyIpOworICAgIHNldFJlYWRvbmx5UHJvcGVydHko
Im9iamVjdFN0b3JlLmtleVBhdGgiLCAiJ2JhciciKTsKKy8qIGZhaWxzLCBzcGxpdCBpbnRvIHNl
cGFyYXRlIHRlc3QKKyAgICBzZXRSZWFkb25seVByb3BlcnR5KCJvYmplY3RTdG9yZS5pbmRleE5h
bWVzIiwgIlsnYmFyJ10iKTsKKyovCisvKiBmYWlscywgc3BsaXQgaW50byBzZXBhcmF0ZSB0ZXN0
CisgICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgib2JqZWN0U3RvcmUudHJhbnNhY3Rpb24iLCAidGhp
cyIpOworKi8KKworICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coInJlc3VsdCA9IG9iamVjdFN0b3Jl
LmFkZCh7fSwgJ2ZpcnN0Jyk7Iik7CisgICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICByZXN1bHQub25zdWNjZXNzID0gYWRkU3VjY2VzczsKK30KKworZnVu
Y3Rpb24gYWRkU3VjY2VzcygpCit7CisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygicmVzdWx0ID0g
b2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOworICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGNoZWNrQ3Vyc29yOwor
fQorCitmdW5jdGlvbiBjaGVja0N1cnNvcigpCit7CisgICAgY3Vyc29yID0gZXZhbEFuZExvZygi
Y3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICBpZiAoY3Vyc29yKSB7CisgICAg
ICAgIHNldFJlYWRvbmx5UHJvcGVydHkoImN1cnNvci5zb3VyY2UiLCAidGhpcyIpOworICAgICAg
ICBzZXRSZWFkb25seVByb3BlcnR5KCJjdXJzb3IuZGlyZWN0aW9uIiwgIjY2NiIpOworICAgICAg
ICBzZXRSZWFkb25seVByb3BlcnR5KCJjdXJzb3Iua2V5IiwgIkluZmluaXR5Iik7CisgICAgICAg
IHNldFJlYWRvbmx5UHJvcGVydHkoImN1cnNvci5wcmltYXJ5S2V5IiwgIkluZmluaXR5Iik7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiY3Vyc29yIGlzIG51bGwiKTsKKyAgICB9
CisKKyAgICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5k
ZXgoJ2ZpcnN0JywgJ2ZpcnN0Jyk7Iik7CisgICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgiaW5kZXgu
bmFtZSIsICInYmFyJyIpOworICAgIHNldFJlYWRvbmx5UHJvcGVydHkoImluZGV4Lm9iamVjdFN0
b3JlIiwgInRoaXMiKTsKKyAgICBzZXRSZWFkb25seVByb3BlcnR5KCJpbmRleC5rZXlQYXRoIiwg
IidiYXInIik7CisgICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgiaW5kZXgudW5pcXVlIiwgInRydWUi
KTsKKworICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2Uub25seSgiZmlyc3QiKTsKKyAgICBzZXRS
ZWFkb25seVByb3BlcnR5KCJrZXlSYW5nZS5sb3dlciIsICJJbmZpbml0eSIpOworICAgIHNldFJl
YWRvbmx5UHJvcGVydHkoImtleVJhbmdlLnVwcGVyIiwgIkluZmluaXR5Iik7CisgICAgc2V0UmVh
ZG9ubHlQcm9wZXJ0eSgia2V5UmFuZ2UubG93ZXJPcGVuIiwgInRydWUiKTsKKyAgICBzZXRSZWFk
b25seVByb3BlcnR5KCJrZXlSYW5nZS51cHBlck9wZW4iLCAidHJ1ZSIpOworCisgICAgZmluaXNo
SlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvcmVxdWVzdC1l
dmVudC1wcm9wYWdhdGlvbi5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9yZXF1ZXN0LWV2ZW50LXByb3BhZ2F0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5NjcyMzVlMjBi
ZmRmOGY2MGYwMDQyYmFhNzgxNjdiYjFjYzUyNzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvcmVxdWVzdC1ldmVudC1wcm9wYWdhdGlv
bi5qcwpAQCAtMCwwICsxLDI2NyBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGlt
cG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7
CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0
IGV2ZW50IHByb3BvZ2F0aW9uIG9uIElEQlJlcXVlc3QuIik7CisKK2Z1bmN0aW9uIHRlc3QoKQor
eworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImluZGV4ZWREQi5vcGVuKCdyZXF1ZXN0LWV2ZW50LXByb3BhZ2F0aW9uJykiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb247CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb24oKQoreworICAgIGRi
ID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKK3sK
KyAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKKyAgICBzZWxmLnRyYW5zID0gZXZh
bEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVl
KCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRD
YWxsYmFjazsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gc3RhcnRUZXN0Iik7
CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgc3RvcmUgPSBldmFsQW5k
TG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOwor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enon
fSwgJ2tleScpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgpCit7CisgICAgZGVidWcoIlZlcmlmeSB0aGF0
IGhhbmRsZXIgZmlyZXMgYW5kIHRoYXQgbm90IHByZXZlbnRpbmcgZGVmYXVsdCB3aWxsIHJlc3Vs
dCBpbiBhbiBhYm9ydCIpOworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFu
c2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAg
IGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSB0cmFuc2FjdGlvbkFib3J0ZWQiKTsKKyAgICBl
dmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2si
KTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmVycm9yID0gYWxsb3dEZWZhdWx0Iik7CisgICAg
c3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUn
KSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6
ICd6enonfSwgJ2tleScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3Vj
Y2Vzc0NhbGxiYWNrOworICAgIGhhbmRsZXJGaXJlZCA9IGZhbHNlOworfQorCitmdW5jdGlvbiBh
bGxvd0RlZmF1bHQoKQoreworICAgIHRlc3RQYXNzZWQoIkV2ZW50IGhhbmRsZXIgZmlyZWQiKTsK
KyAgICBkZWJ1ZygiRG9pbmcgbm90aGluZyB0byBwcmV2ZW50IHRoZSBkZWZhdWx0IGFjdGlvbi4u
LiIpOworICAgIGhhbmRsZXJGaXJlZCA9IHRydWU7Cit9CisKK2Z1bmN0aW9uIHRyYW5zYWN0aW9u
QWJvcnRlZCgpCit7CisgICAgc2hvdWxkQmVUcnVlKCJoYW5kbGVyRmlyZWQiKTsKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoIlZlcmlmaW5nIGVycm9yIik7CisgICAgdHJhbnMgPSBldmFsQW5k
TG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIElEQlRyYW5zYWN0aW9u
LlJFQURfV1JJVEUpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMub25hYm9ydCA9IHRyYW5zYWN0
aW9uQWJvcnRlZDIiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gdW5leHBl
Y3RlZEFib3J0Q2FsbGJhY2siKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5hZGRFdmVudExpc3Rl
bmVyKCdlcnJvcicsIGVycm9yQ2FwdHVyZUNhbGxiYWNrLCB0cnVlKSIpOworICAgIGV2YWxBbmRM
b2coInRyYW5zLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZXJyb3JCdWJibGVDYWxsYmFjaywg
ZmFsc2UpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignc3VjY2Vz
cycsIHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2ssIHRydWUpIik7CisgICAgZXZhbEFuZExvZygi
dHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignc3VjY2VzcycsIHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJh
Y2ssIGZhbHNlKSIpOworICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9y
JywgZGJFcnJvckNhcHR1cmVDYWxsYmFjaywgdHJ1ZSkiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5h
ZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGRiRXJyb3JCdWJibGVDYWxsYmFjaywgZmFsc2UpIik7
CisgICAgZXZhbEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignc3VjY2VzcycsIHVuZXhwZWN0
ZWRTdWNjZXNzQ2FsbGJhY2ssIHRydWUpIik7CisgICAgZXZhbEFuZExvZygiZGIuYWRkRXZlbnRM
aXN0ZW5lcignc3VjY2VzcycsIHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2ssIGZhbHNlKSIpOwor
ICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVO
YW1lJykiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWUn
LCB5OiAnenp6J30sICdrZXknKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3Rl
ZFN1Y2Nlc3NDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBlcnJvckZpcmVkQ2FsbGJh
Y2s7CisgICAgZGJDYXB0dXJlRmlyZWQgPSBmYWxzZTsKKyAgICBjYXB0dXJlRmlyZWQgPSBmYWxz
ZTsKKyAgICByZXF1ZXN0RmlyZWQgPSBmYWxzZTsKKyAgICBidWJibGVGaXJlZCA9IGZhbHNlOwor
ICAgIGRiQnViYmxlRmlyZWQgPSBmYWxzZTsKK30KKworZnVuY3Rpb24gZGJFcnJvckNhcHR1cmVD
YWxsYmFjaygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJJbiBJREJEYXRhYmFzZSBl
cnJvciBjYXB0dXJlIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGJDYXB0dXJlRmlyZWQiKTsKKyAg
ICBzaG91bGRCZUZhbHNlKCJjYXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJyZXF1
ZXN0RmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJidWJibGVGaXJlZCIpOworICAgIHNob3Vs
ZEJlRmFsc2UoImRiQnViYmxlRmlyZWQiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0Iiwg
InJlcXVlc3QiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQuY3VycmVudFRhcmdldCIsICJkYiIpOwor
ICAgIGRiQ2FwdHVyZUZpcmVkID0gdHJ1ZTsKK30KKworZnVuY3Rpb24gZXJyb3JDYXB0dXJlQ2Fs
bGJhY2soKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiSW4gSURCVHJhbnNhY3Rpb24g
ZXJyb3IgY2FwdHVyZSIpOworICAgIHNob3VsZEJlVHJ1ZSgiZGJDYXB0dXJlRmlyZWQiKTsKKyAg
ICBzaG91bGRCZUZhbHNlKCJjYXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJyZXF1
ZXN0RmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJidWJibGVGaXJlZCIpOworICAgIHNob3Vs
ZEJlRmFsc2UoImRiQnViYmxlRmlyZWQiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0Iiwg
InJlcXVlc3QiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQuY3VycmVudFRhcmdldCIsICJ0cmFucyIp
OworICAgIGNhcHR1cmVGaXJlZCA9IHRydWU7Cit9CisKK2Z1bmN0aW9uIGVycm9yRmlyZWRDYWxs
YmFjaygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJJbiBJREJSZXF1ZXN0IGhhbmRs
ZXIiKTsKKyAgICBzaG91bGRCZVRydWUoImRiQ2FwdHVyZUZpcmVkIik7CisgICAgc2hvdWxkQmVU
cnVlKCJjYXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJyZXF1ZXN0RmlyZWQiKTsK
KyAgICBzaG91bGRCZUZhbHNlKCJidWJibGVGaXJlZCIpOworICAgIHNob3VsZEJlRmFsc2UoImRi
QnViYmxlRmlyZWQiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0IiwgInJlcXVlc3QiKTsK
KyAgICBzaG91bGRCZSgiZXZlbnQuY3VycmVudFRhcmdldCIsICJyZXF1ZXN0Iik7CisgICAgcmVx
dWVzdEZpcmVkID0gdHJ1ZTsKK30KKworZnVuY3Rpb24gZXJyb3JCdWJibGVDYWxsYmFjaygpCit7
CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJJbiBJREJUcmFuc2FjdGlvbiBlcnJvciBidWJi
bGUiKTsKKyAgICBzaG91bGRCZVRydWUoImRiQ2FwdHVyZUZpcmVkIik7CisgICAgc2hvdWxkQmVU
cnVlKCJjYXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRCZVRydWUoInJlcXVlc3RGaXJlZCIpOwor
ICAgIHNob3VsZEJlRmFsc2UoImJ1YmJsZUZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGJC
dWJibGVGaXJlZCIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAicmVxdWVzdCIpOwor
ICAgIHNob3VsZEJlKCJldmVudC5jdXJyZW50VGFyZ2V0IiwgInRyYW5zIik7CisgICAgYnViYmxl
RmlyZWQgPSB0cnVlOworfQorCitmdW5jdGlvbiBkYkVycm9yQnViYmxlQ2FsbGJhY2soKQorewor
ICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiSW4gSURCRGF0YWJhc2UgZXJyb3IgYnViYmxlIik7
CisgICAgc2hvdWxkQmVUcnVlKCJkYkNhcHR1cmVGaXJlZCIpOworICAgIHNob3VsZEJlVHJ1ZSgi
Y2FwdHVyZUZpcmVkIik7CisgICAgc2hvdWxkQmVUcnVlKCJyZXF1ZXN0RmlyZWQiKTsKKyAgICBz
aG91bGRCZVRydWUoImJ1YmJsZUZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVG
aXJlZCIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAicmVxdWVzdCIpOworICAgIHNo
b3VsZEJlKCJldmVudC5jdXJyZW50VGFyZ2V0IiwgImRiIik7CisgICAgZGJCdWJibGVGaXJlZCA9
IHRydWU7Cit9CisKK2Z1bmN0aW9uIHRyYW5zYWN0aW9uQWJvcnRlZDIoKQoreworICAgIGRlYnVn
KCIiKTsKKyAgICBkZWJ1ZygiVHJhbnNhY3Rpb24gYWJvcnRlZCIpOworICAgIHNob3VsZEJlVHJ1
ZSgiZGJDYXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRCZVRydWUoImNhcHR1cmVGaXJlZCIpOwor
ICAgIHNob3VsZEJlVHJ1ZSgicmVxdWVzdEZpcmVkIik7CisgICAgc2hvdWxkQmVUcnVlKCJidWJi
bGVGaXJlZCIpOworICAgIHNob3VsZEJlVHJ1ZSgiZGJCdWJibGVGaXJlZCIpOworICAgIGRlYnVn
KCIiKTsKKyAgICBkZWJ1ZygiVmVyaWZpbmcgc3VjY2Vzcy4iKTsKKyAgICB0cmFucyA9IGV2YWxB
bmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rp
b24uUkVBRF9XUklURSkiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gdHJh
bnNhY3Rpb25Db21wbGV0ZSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSB1bmV4
cGVjdGVkQWJvcnRDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLmFkZEV2ZW50TGlz
dGVuZXIoJ3N1Y2Nlc3MnLCBzdWNjZXNzQ2FwdHVyZUNhbGxiYWNrLCB0cnVlKSIpOworICAgIGV2
YWxBbmRMb2coInRyYW5zLmFkZEV2ZW50TGlzdGVuZXIoJ3N1Y2Nlc3MnLCBzdWNjZXNzQnViYmxl
Q2FsbGJhY2ssIGZhbHNlKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLmFkZEV2ZW50TGlzdGVu
ZXIoJ2Vycm9yJywgdW5leHBlY3RlZEVycm9yQ2FsbGJhY2ssIHRydWUpIik7CisgICAgZXZhbEFu
ZExvZygidHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjaywgZmFsc2UpIik7CisgICAgZXZhbEFuZExvZygiZGIucmVtb3ZlRXZlbnRMaXN0ZW5lcign
ZXJyb3InLCBkYkVycm9yQ2FwdHVyZUNhbGxiYWNrLCB0cnVlKSIpOworICAgIGV2YWxBbmRMb2co
ImRiLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZGJFcnJvckJ1YmJsZUNhbGxiYWNrLCBm
YWxzZSkiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5yZW1vdmVFdmVudExpc3RlbmVyKCdzdWNjZXNz
JywgdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjaywgdHJ1ZSkiKTsKKyAgICBldmFsQW5kTG9nKCJk
Yi5yZW1vdmVFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFj
aywgZmFsc2UpIik7CisgICAgZXZhbEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignc3VjY2Vz
cycsIGRiU3VjY2Vzc0NhcHR1cmVDYWxsYmFjaywgdHJ1ZSkiKTsKKyAgICBldmFsQW5kTG9nKCJk
Yi5hZGRFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgZGJTdWNjZXNzQnViYmxlQ2FsbGJhY2ssIGZh
bHNlKSIpOworICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2ssIHRydWUpIik7CisgICAgZXZhbEFuZExvZygiZGIuYWRkRXZl
bnRMaXN0ZW5lcignZXJyb3InLCB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjaywgZmFsc2UpIik7Cisg
ICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5h
bWUnKSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScs
IHk6ICd6enonfSwgJ2tleTInKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc3VjY2Vzc0ZpcmVkQ2FsbGJh
Y2s7CisgICAgZGJDYXB0dXJlRmlyZWQgPSBmYWxzZTsKKyAgICBjYXB0dXJlRmlyZWQgPSBmYWxz
ZTsKKyAgICByZXF1ZXN0RmlyZWQgPSBmYWxzZTsKKyAgICBidWJibGVGaXJlZCA9IGZhbHNlOwor
ICAgIGRiQnViYmxlRmlyZWQgPSBmYWxzZTsKK30KKworZnVuY3Rpb24gZGJTdWNjZXNzQ2FwdHVy
ZUNhbGxiYWNrKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIkluIElEQkRhdGFiYXNl
IHN1Y2Nlc3MgY2FwdHVyZSIpOworICAgIHNob3VsZEJlRmFsc2UoImRiQ2FwdHVyZUZpcmVkIik7
CisgICAgc2hvdWxkQmVGYWxzZSgiY2FwdHVyZUZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgi
cmVxdWVzdEZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiYnViYmxlRmlyZWQiKTsKKyAgICBz
aG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVkIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdl
dCIsICJyZXF1ZXN0Iik7CisgICAgc2hvdWxkQmUoImV2ZW50LmN1cnJlbnRUYXJnZXQiLCAiZGIi
KTsKKyAgICBkYkNhcHR1cmVGaXJlZCA9IHRydWU7Cit9CisKK2Z1bmN0aW9uIHN1Y2Nlc3NDYXB0
dXJlQ2FsbGJhY2soKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiSW4gSURCVHJhbnNh
Y3Rpb24gc3VjY2VzcyBjYXB0dXJlIik7CisgICAgc2hvdWxkQmVUcnVlKCJkYkNhcHR1cmVGaXJl
ZCIpOworICAgIHNob3VsZEJlRmFsc2UoImNhcHR1cmVGaXJlZCIpOworICAgIHNob3VsZEJlRmFs
c2UoInJlcXVlc3RGaXJlZCIpOworICAgIHNob3VsZEJlRmFsc2UoImJ1YmJsZUZpcmVkIik7Cisg
ICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVGaXJlZCIpOworICAgIHNob3VsZEJlKCJldmVudC50
YXJnZXQiLCAicmVxdWVzdCIpOworICAgIHNob3VsZEJlKCJldmVudC5jdXJyZW50VGFyZ2V0Iiwg
InRyYW5zIik7CisgICAgY2FwdHVyZUZpcmVkID0gdHJ1ZTsKK30KKworZnVuY3Rpb24gc3VjY2Vz
c0ZpcmVkQ2FsbGJhY2soKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiSW4gSURCUmVx
dWVzdCBoYW5kbGVyIik7CisgICAgc2hvdWxkQmVUcnVlKCJkYkNhcHR1cmVGaXJlZCIpOworICAg
IHNob3VsZEJlVHJ1ZSgiY2FwdHVyZUZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgicmVxdWVz
dEZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiYnViYmxlRmlyZWQiKTsKKyAgICBzaG91bGRC
ZUZhbHNlKCJkYkJ1YmJsZUZpcmVkIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldCIsICJy
ZXF1ZXN0Iik7CisgICAgc2hvdWxkQmUoImV2ZW50LmN1cnJlbnRUYXJnZXQiLCAicmVxdWVzdCIp
OworICAgIHJlcXVlc3RGaXJlZCA9IHRydWU7Cit9CisKK2Z1bmN0aW9uIHN1Y2Nlc3NCdWJibGVD
YWxsYmFjaygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJJbiBJREJUcmFuc2FjdGlv
biBzdWNjZXNzIGJ1YmJsZSIpOworICAgIHRlc3RGYWlsZWQoIlN1Y2Nlc3MgYnViYmxlIGNhbGxi
YWNrIHNob3VsZCBOT1QgZmlyZSIpOworICAgIGJ1YmJsZUZpcmVkID0gdHJ1ZTsKK30KKworZnVu
Y3Rpb24gZGJTdWNjZXNzQnViYmxlQ2FsbGJhY2soKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBk
ZWJ1ZygiSW4gSURCRGF0YWJhc2Ugc3VjY2VzcyBidWJibGUiKTsKKyAgICB0ZXN0RmFpbGVkKCJT
dWNjZXNzIGJ1YmJsZSBjYWxsYmFjayBzaG91bGQgTk9UIGZpcmUiKTsKKyAgICBkYkJ1YmJsZUZp
cmVkID0gdHJ1ZTsKK30KKworZnVuY3Rpb24gdHJhbnNhY3Rpb25Db21wbGV0ZSgpCit7CisgICAg
ZGVidWcoIiIpOworICAgIGRlYnVnKCJUcmFuc2FjdGlvbiBjb21wbGV0ZWQiKTsKKyAgICBzaG91
bGRCZVRydWUoImRiQ2FwdHVyZUZpcmVkIik7CisgICAgc2hvdWxkQmVUcnVlKCJjYXB0dXJlRmly
ZWQiKTsKKyAgICBzaG91bGRCZVRydWUoInJlcXVlc3RGaXJlZCIpOworICAgIHNob3VsZEJlRmFs
c2UoImJ1YmJsZUZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVGaXJlZCIpOwor
ICAgIGRlYnVnKCIiKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworICAgIHJldHVybjsKK30KKwor
dGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zZXRWZXJzaW9uLW51bGwuanMgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2V0VmVyc2lvbi1udWxsLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmE4OGEzYzc1ZjYyYzQ2ZTRhMmMzNzg4ZTgwMjFjM2UzOWYzY2QzZWQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2V0
VmVyc2lvbi1udWxsLmpzCkBAIC0wLDAgKzEsMzUgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMp
IHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlw
dGlvbigiVGVzdCBJbmRleGVkREIgd2l0aCBudWxsIHZlcnNpb24gc3RyaW5nIik7CisKK2Z1bmN0
aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0g
c2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFi
YXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVz
Y3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
b3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbihudWxs
KTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RTZXRWZXJzaW9uOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBwb3N0
U2V0VmVyc2lvbigpCit7CisgICAgc2hvdWxkQmUoImRiLnZlcnNpb24iLCAiJ251bGwnIik7Cisg
ICAgZmluaXNoSlNUZXN0KCk7Cit9CisKKwordGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NldFZlcnNpb24tdW5kZWZpbmVkLmpzIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NldFZlcnNpb24tdW5kZWZp
bmVkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA3ODMzNmUzODg0MzQwZjgzMWE3NTdjNmM2MDkwYmMzNWQzMmE0
MTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvc2V0VmVyc2lvbi11bmRlZmluZWQuanMKQEAgLTAsMCArMSwyOCBAQAoraWYgKHRoaXMu
aW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7
Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiB2ZXJzaW9uIHN0cmluZyBpcyByZXF1
aXJlZCIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygp
OworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24g
PSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWRE
Qi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3Bl
blN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRi
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgc2hvdWxkVGhyb3coImRiLnNldFZlcnNp
b24oKTsiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworCit0ZXN0KCk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2V0X3ZlcnNpb25fYmxv
Y2tlZC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zZXRfdmVy
c2lvbl9ibG9ja2VkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzM2ViN2M5OTg4MjQ2MmI0NjZiMTA4ZWZlODRm
NGU3NzJlNGYwNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvc2V0X3ZlcnNpb25fYmxvY2tlZC5qcwpAQCAtMCwwICsxLDU1IEBACitp
ZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFy
ZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIkFuIG9wZW4gY29ubmVjdGlvbiBibG9ja3MgYSBz
ZXBhcmF0ZSBjb25uZWN0aW9uJ3Mgc2V0VmVyc2lvbiBjYWxsIik7CisKK2Nvbm5lY3Rpb25zID0g
W10KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAg
b3BlbkRCQ29ubmVjdGlvbigpOworfQorCitmdW5jdGlvbiBvcGVuREJDb25uZWN0aW9uKCkKK3sK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3NldC12ZXJzaW9uLWJs
b2NrZWQnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9w
ZW5TdWNjZXNzKCkKK3sKKyAgICBjb25uZWN0aW9uID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAg
ICBjb25uZWN0aW9ucy5wdXNoKGNvbm5lY3Rpb24pOworICAgIG9yaWdpbmFsX3ZlcnNpb24gPSBj
b25uZWN0aW9uLnZlcnNpb247CisgICAgaWYgKGNvbm5lY3Rpb25zLmxlbmd0aCA8IDIpCisgICAg
ICAgIG9wZW5EQkNvbm5lY3Rpb24oKTsKKyAgICBlbHNlIHsKKyAgICAgICAgdmFyIHZlcnNpb25D
aGFuZ2VSZXF1ZXN0ID0gZXZhbEFuZExvZygiY29ubmVjdGlvbnNbMF0uc2V0VmVyc2lvbigndmVy
c2lvbiAxJykiKTsKKyAgICAgICAgdmVyc2lvbkNoYW5nZVJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICB2ZXJzaW9uQ2hhbmdlUmVxdWVzdC5vbnN1Y2Nl
c3MgPSBpblNldFZlcnNpb247CisgICAgICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uYmxvY2tl
ZCA9IGJsb2NrZWQ7CisgICAgfQorfQorCitzZWVuX2Jsb2NrZWRfZXZlbnQgPSBmYWxzZTsKK2Z1
bmN0aW9uIGJsb2NrZWQoKQoreworICAgIGV2YWxBbmRMb2coInNlZW5fYmxvY2tlZF9ldmVudCA9
IHRydWUiKTsKKyAgICBibG9ja2VkX2V2ZW50ID0gZXZlbnQ7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJibG9ja2VkX2V2ZW50LnZlcnNpb24iLCAidmVyc2lvbiAxIik7CisgICAgc2hvdWxk
RXZhbHVhdGVUbygiYmxvY2tlZF9ldmVudC50YXJnZXQucmVhZHlTdGF0ZSIsIDEpOworICAgIGV2
YWxBbmRMb2coImNvbm5lY3Rpb25zWzFdLmNsb3NlKCkiKTsKK30KKworZnVuY3Rpb24gaW5TZXRW
ZXJzaW9uKCkKK3sKKyAgICBkZWJ1ZygiaW4gc2V0VmVyc2lvbi5vbnN1Y2Nlc3MiKTsKKyAgICBz
aG91bGRCZVRydWUoInNlZW5fYmxvY2tlZF9ldmVudCIpOworICAgIGRlbGV0ZUFsbE9iamVjdFN0
b3Jlcyhjb25uZWN0aW9uc1swXSk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zZXRf
dmVyc2lvbl9xdWV1ZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9zZXRfdmVyc2lvbl9xdWV1ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYWEzNDVkNDM3YzY4NThiYWRhMzc2
MmQ5OTY2MWZlZDExYjY1YzYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NldF92ZXJzaW9uX3F1ZXVlLmpzCkBAIC0wLDAgKzEsMTIy
IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRz
KCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIjQgb3BlbiBjb25uZWN0aW9ucyB0cnkg
dG8gc2V0VmVyc2lvbiBhdCB0aGUgc2FtZSB0aW1lLiAgMyBjb25uZWN0aW9ucyBldmVudHVhbGx5
IGNsb3NlLCBhbGxvd2luZyAxIHNldFZlcnNpb24gY2FsbCB0byBwcm9jZWVkLiIpOworCitjb25u
ZWN0aW9ucyA9IFtdCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhl
cygpOworCisgICAgb3BlbkRCQ29ubmVjdGlvbigpOworfQorCitmdW5jdGlvbiBvcGVuREJDb25u
ZWN0aW9uKCkKK3sKKyAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbignc2V0
LXZlcnNpb24tcXVldWUnKSIpOworICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsK
KyAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgY29ubmVjdGlvbiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQ7CisgICAgY29ubmVjdGlvbi5vbnZlcnNpb25jaGFuZ2UgPSBnZW5lcmF0ZVZlcnNpb25DaGFu
Z2VIYW5kbGVyKCk7CisgICAgY29ubmVjdGlvbnMucHVzaChjb25uZWN0aW9uKTsKKyAgICBpZiAo
Y29ubmVjdGlvbnMubGVuZ3RoIDwgNCkKKyAgICAgICAgb3BlbkRCQ29ubmVjdGlvbigpOworICAg
IGVsc2UgeworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiY29ubmVjdGlvbnNbMF0uc2V0
VmVyc2lvbigndmVyc2lvbiAwJykiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rp
b24oZXZlbnQpeyBjb25uZWN0aW9uRXJyb3IoZXZlbnQsIDApIH07CisgICAgICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5v
bmJsb2NrZWQgPSBibG9ja2VkMDsKKyAgICAgICAgcmVxdWVzdDEgPSBldmFsQW5kTG9nKCJjb25u
ZWN0aW9uc1sxXS5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgICAgICByZXF1ZXN0MS5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3QxLm9uc3Vj
Y2VzcyA9IGluU2V0VmVyc2lvbjE7CisgICAgICAgIHJlcXVlc3QxLm9uYmxvY2tlZCA9IGJsb2Nr
ZWQxOworICAgICAgICByZXF1ZXN0MiA9IGV2YWxBbmRMb2coImNvbm5lY3Rpb25zWzJdLnNldFZl
cnNpb24oJ3ZlcnNpb24gMicpIik7CisgICAgICAgIHJlcXVlc3QyLm9uZXJyb3IgPSBmdW5jdGlv
bihldmVudCl7IGNvbm5lY3Rpb25FcnJvcihldmVudCwgMikgfTsKKyAgICAgICAgcmVxdWVzdDIu
b25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdDIu
b25ibG9ja2VkID0gYmxvY2tlZDI7CisgICAgICAgIHJlcXVlc3QzID0gZXZhbEFuZExvZygiY29u
bmVjdGlvbnNbM10uc2V0VmVyc2lvbigndmVyc2lvbiAzJykiKTsKKyAgICAgICAgcmVxdWVzdDMu
b25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KXsgY29ubmVjdGlvbkVycm9yKGV2ZW50LCAzKSB9Owor
ICAgICAgICByZXF1ZXN0My5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOwor
ICAgICAgICByZXF1ZXN0My5vbmJsb2NrZWQgPSBibG9ja2VkMzsKKyAgICAgICAgZGVidWcoIiIp
OworICAgIH0KK30KKworZnVuY3Rpb24gZ2VuZXJhdGVWZXJzaW9uQ2hhbmdlSGFuZGxlcigpCit7
CisgICAgdmFyIGNvbm5lY3Rpb25OdW0gPSBjb25uZWN0aW9ucy5sZW5ndGg7CisgICAgcmV0dXJu
IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJldmVudC52ZXJz
aW9uLmxlbmd0aCA+IDAiKTsKKyAgICAgICAgZGVidWcoImNvbm5lY3Rpb25bIiArIGNvbm5lY3Rp
b25OdW0gKyAiXSByZWNlaXZlZCB2ZXJzaW9uQ2hhbmdlRXZlbnQ6ICIgKyBldmVudC52ZXJzaW9u
KTsKKyAgICB9Cit9CisKK2Jsb2NrZWQwZmlyZWQgPSBmYWxzZTsKK2Jsb2NrZWQyZmlyZWQgPSBm
YWxzZTsKK2Z1bmN0aW9uIGJsb2NrZWQwKGV2ZW50KQoreworICAgIGRlYnVnKCIiKTsKKyAgICB0
ZXN0UGFzc2VkKCJjb25uZWN0aW9uWzBdIGdvdCBibG9ja2VkIGV2ZW50Iik7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJldmVudC52ZXJzaW9uIiwgInZlcnNpb24gMCIpOworICAgIGRlYnVn
KCJDbG9zZSB0aGUgY29ubmVjdGlvbiB0aGF0IHJlY2VpdmVkIHRoZSBibG9jayBldmVudDoiKTsK
KyAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uc1swXS5jbG9zZSgpIik7CisgICAgZGVidWcoIkNs
b3NlIGFub3RoZXIgY29ubmVjdGlvbiBhcyB3ZWxsLCB0byB0ZXN0IDQuNy40LW5vdGU6Iik7Cisg
ICAgZXZhbEFuZExvZygiY29ubmVjdGlvbnNbM10uY2xvc2UoKSIpOworICAgIGV2YWxBbmRMb2co
ImJsb2NrZWQwZmlyZWQgPSB0cnVlIik7CisgICAgZGVidWcoIiIpOworfQorCitmdW5jdGlvbiBi
bG9ja2VkMShldmVudCkKK3sKKyAgICBkZWJ1ZygiIikKKyAgICB0ZXN0UGFzc2VkKCJjb25uZWN0
aW9uWzFdIGdvdCBibG9ja2VkIGV2ZW50Iik7CisgICAgZGVidWcoIkVuc3VyZSB0aGF0IHRoaXMg
YmxvY2tlZCBldmVudCBpcyBpbiBvcmRlcjoiKTsKKyAgICBzaG91bGRCZVRydWUoImJsb2NrZWQw
ZmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJibG9ja2VkMmZpcmVkIik7CisgICAgZGVidWco
IiIpCit9CisKK2Z1bmN0aW9uIGJsb2NrZWQyKGV2ZW50KQoreworICAgIGRlYnVnKCIiKQorICAg
IHRlc3RQYXNzZWQoImNvbm5lY3Rpb25bMl0gZ290IGJsb2NrZWQgZXZlbnQiKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnZlcnNpb24iLCAidmVyc2lvbiAyIik7CisgICAgZXZh
bEFuZExvZygiY29ubmVjdGlvbnNbMl0uY2xvc2UoKSIpOworICAgIGV2YWxBbmRMb2coImJsb2Nr
ZWQyZmlyZWQgPSB0cnVlIik7CisgICAgZGVidWcoIiIpCit9CisKK2Z1bmN0aW9uIGJsb2NrZWQz
KGV2ZW50KQoreworICAgIGRlYnVnKCIiKQorICAgIHRlc3RQYXNzZWQoImNvbm5lY3Rpb25bM10g
Z290IGJsb2NrZWQgZXZlbnQiKTsKKyAgICBkZWJ1ZygiTm90ZTogVGhpcyBtZWFucyB0aGF0IGEg
Y29ubmVjdGlvbiBjYW4gcmVjZWl2ZSBhIGJsb2NrZWQgZXZlbnQgYWZ0ZXIgaXRzIGNsb3NlKCkg
bWV0aG9kIGhhcyBiZWVuIGNhbGxlZC4gIFNwZWMgaXMgc2lsZW50IG9uIHRoZSBpc3N1ZSBhbmQg
dGhpcyBpcyBlYXNpZXN0IHRvIGltcGxlbWVudC4iKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoImV2ZW50LnZlcnNpb24iLCAidmVyc2lvbiAzIik7Cit9CisKK2Z1bmN0aW9uIGNvbm5lY3Rp
b25FcnJvcihldmVudCwgY29ubmVjdGlvbklkKQoreworICAgIGRlYnVnKCIiKQorICAgIHRlc3RQ
YXNzZWQoImNvbm5lY3Rpb25bIiArIGNvbm5lY3Rpb25JZCArICJdIGdvdCBlcnJvciBldmVudCIp
OworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuZXJyb3JDb2RlIiwgIklEQkRhdGFiYXNlRXhj
ZXB0aW9uLkFCT1JUX0VSUiIpCisgICAgaWYgKCd3ZWJraXRFcnJvck1lc3NhZ2UnIGluIGV2ZW50
LnRhcmdldCkgeworICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LndlYmtpdEVycm9yTWVz
c2FnZS5sZW5ndGggPiAwIiwgInRydWUiKTsKKyAgICAgICAgZGVidWcoZXZlbnQudGFyZ2V0Lndl
YmtpdEVycm9yTWVzc2FnZSk7CisgICAgfQorfQorCitmdW5jdGlvbiBpblNldFZlcnNpb24xKGV2
ZW50KQoreworICAgIGRlYnVnKCIiKQorICAgIHRlc3RQYXNzZWQoImNvbm5lY3Rpb25bMV0gZ290
IGludG8gU2V0VmVyc2lvbiIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNh
Y3Rpb24tYWJvcnQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
dHJhbnNhY3Rpb24tYWJvcnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTg2OGU4NzllM2M0NDk0NmM5ZDkxMWJj
ZThiZTY5NjAyMDczMzc2MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1hYm9ydC5qcwpAQCAtMCwwICsxLDkwIEBA
CitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdz
aGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgdHJhbnNhY3Rpb24gYWJvcnRzIHNl
bmQgdGhlIHByb3BlciBvbmFib3J0IG1lc3NhZ2VzLi4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7
CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJpbmRleGVkREIub3BlbignbmFtZScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRW
ZXJzaW9uOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBzZXRWZXJzaW9uKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNl
dFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0
ZUV4aXN0aW5nOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworfQorCitmdW5jdGlvbiBkZWxldGVFeGlzdGluZygpCit7CisgICAgZGVidWcoInNldFZlcnNp
b25TdWNjZXNzKCk6Iik7CisgICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsK
KyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgZXZhbEFu
ZExvZygidHJhbnMub25jb21wbGV0ZSA9IHN0YXJ0VGVzdCIpOworCisgICAgZGVsZXRlQWxsT2Jq
ZWN0U3RvcmVzKGRiKTsKKworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVh
dGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBz
dGFydFRlc3QoKQoreworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2Fj
dGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIGV2
YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSB0cmFuc2FjdGlvbkFib3J0ZWQiKTsKKyAgICBldmFs
QW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2siKTsK
KyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3Jl
TmFtZScpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVl
MicsIHk6ICd6enoyJ30sICdrZXkyJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmaXJzdEFk
ZDsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7Cisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlMycsIHk6ICd6enoz
J30sICdrZXkzJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBzZWNvbmRBZGQ7CisgICAgdHJh
bnMuYWJvcnQoKTsKKworICAgIGZpcnN0RXJyb3IgPSBmYWxzZTsKKyAgICBzZWNvbmRFcnJvciA9
IGZhbHNlOworICAgIGFib3J0RmlyZWQgPSBmYWxzZTsKK30KKworZnVuY3Rpb24gZmlyc3RBZGQo
KQoreworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuZXJyb3JDb2RlIiwgIklEQkRhdGFiYXNl
RXhjZXB0aW9uLkFCT1JUX0VSUiIpOworICAgIHNob3VsZEJlRmFsc2UoImZpcnN0RXJyb3IiKTsK
KyAgICBzaG91bGRCZUZhbHNlKCJzZWNvbmRFcnJvciIpOworICAgIHNob3VsZEJlRmFsc2UoImFi
b3J0RmlyZWQiKTsKKyAgICBmaXJzdEVycm9yID0gdHJ1ZTsKKworICAgIGV2YWxBbmRFeHBlY3RF
eGNlcHRpb24oInN0b3JlLmFkZCh7eDogJ3ZhbHVlNCcsIHk6ICd6eno0J30sICdrZXk0JykiLCAi
SURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7Cit9CisKK2Z1
bmN0aW9uIHNlY29uZEFkZCgpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5lcnJvckNv
ZGUiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uQUJPUlRfRVJSIik7CisgICAgc2hvdWxkQmVUcnVl
KCJmaXJzdEVycm9yIik7CisgICAgc2hvdWxkQmVGYWxzZSgic2Vjb25kRXJyb3IiKTsKKyAgICBz
aG91bGRCZUZhbHNlKCJhYm9ydEZpcmVkIik7CisgICAgc2Vjb25kRXJyb3IgPSB0cnVlOworfQor
CitmdW5jdGlvbiB0cmFuc2FjdGlvbkFib3J0ZWQoKQoreworICAgIHNob3VsZEJlVHJ1ZSgiZmly
c3RFcnJvciIpOworICAgIHNob3VsZEJlVHJ1ZSgic2Vjb25kRXJyb3IiKTsKKyAgICBzaG91bGRC
ZUZhbHNlKCJhYm9ydEZpcmVkIik7CisgICAgYWJvcnRGaXJlZCA9IHRydWU7CisKKyAgICBldmFs
QW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZTUnLCB5OiAnenp6NSd9LCAn
a2V5NScpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIp
OworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL3RyYW5zYWN0aW9uLWFmdGVyLWNsb3NlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWFmdGVyLWNsb3NlLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2
MGY2ZGJkNWI5YzlhZWFiYjRhNTBmMjQ1YjQxYWQ3OTM1YWZlNzcKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tYWZ0
ZXItY2xvc2UuanMKQEAgLTAsMCArMSw4MSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewor
ICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9u
KCJUZXN0IGNsb3NpbmcgYSBkYXRhYmFzZSBjb25uZWN0aW9uIGluIEluZGV4ZWREQi4iKTsKKwor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndHJhbnNhY3Rpb24tYWZ0ZXItY2xv
c2UnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5T
dWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBzZWxmLmRiID0g
ZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gaW5TZXRWZXJzaW9uOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBpblNldFZlcnNpb24oKQorewor
ICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBldmVudC50YXJnZXQucmVzdWx0
Lm9uY29tcGxldGUgPSBydW5GaXJzdFJlZ3VsYXJUcmFuc2FjdGlvbjsKKyAgICBldmVudC50YXJn
ZXQucmVzdWx0Lm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICBzdG9yZSA9
IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHN0b3JlLnB1dCgneCcsICd5JykiKTsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9uUHV0U3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb25QdXRTdWNjZXNz
KCkKK3sKKyAgICB0ZXN0UGFzc2VkKCJQdXQgc3VjY2VzcyIpCit9CisKK2Z1bmN0aW9uIHJ1bkZp
cnN0UmVndWxhclRyYW5zYWN0aW9uKCkKK3sKKyAgICBkZWJ1ZygicnVubmluZyBmaXJzdCB0cmFu
c2FjdGlvbiIpCisgICAgY3VycmVudFRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygiY3VycmVudFRy
YW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZSddLCBJREJUcmFuc2FjdGlvbi5SRUFE
X1dSSVRFKSIpOworICAgIGN1cnJlbnRUcmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFi
b3J0Q2FsbGJhY2s7CisgICAgY3VycmVudFRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmaXJzdFRy
YW5zYWN0aW9uQ29tcGxldGU7CisgICAgb2JqZWN0U3RvcmUgPSBjdXJyZW50VHJhbnNhY3Rpb24u
b2JqZWN0U3RvcmUoJ3N0b3JlJyk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0
b3JlLnB1dCgnYScsICdiJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZmlyc3RUcmFuc2FjdGlvbkNvbXBsZXRlKCkKK3sK
KyAgICBldmFsQW5kTG9nKCJkYi5jbG9zZSgpIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlv
bigiZGIudHJhbnNhY3Rpb24oWydzdG9yZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIs
ICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9FUlIiKTsKKworICAgIGRlYnVnKCIi
KQorICAgIGRlYnVnKCJ2ZXJpZnkgdGhhdCB3ZSBjYW4gcmVvcGVuIHRoZSBkYiBhZnRlciBjYWxs
aW5nIGNsb3NlIikKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3Ry
YW5zYWN0aW9uLWFmdGVyLWNsb3NlJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9uU2Vj
b25kT3BlbgorICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBvblNlY29uZE9wZW4oKSB7CisgICAgc2Vjb25kX2RiID0gZXZhbEFuZExv
Zygic2Vjb25kX2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIGN1cnJlbnRUcmFuc2Fj
dGlvbiA9IGV2YWxBbmRMb2coImN1cnJlbnRUcmFuc2FjdGlvbiA9IHNlY29uZF9kYi50cmFuc2Fj
dGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgc3RvcmUg
PSBjdXJyZW50VHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJyk7CisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdG9yZS5wdXQoJzEnLCAnMicpIik7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBvbkZpbmFsUHV0U3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBjdXJyZW50VHJhbnNhY3Rpb24ub25jb21wbGV0
ZSA9IGZpbmlzaEpTVGVzdDsKKyAgICBjdXJyZW50VHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhw
ZWN0ZWRBYm9ydENhbGxiYWNrOworfQorCitmdW5jdGlvbiBvbkZpbmFsUHV0U3VjY2VzcygpIHsK
KyAgICB0ZXN0UGFzc2VkKCJmaW5hbCBwdXQgc3VjY2VzcyIpOworfQorCit0ZXN0KCk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rp
b24tYW5kLW9iamVjdHN0b3JlLWNhbGxzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWFuZC1vYmplY3RzdG9yZS1jYWxscy5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40YWM2MWQ4MzJiOTdmMzNjYTZmMDI2MjlkYjQ4YWMxM2UyMzc2MjI2Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0
aW9uLWFuZC1vYmplY3RzdG9yZS1jYWxscy5qcwpAQCAtMCwwICsxLDEyNCBAQAoraWYgKHRoaXMu
aW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7
Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIHRyYW5zYWN0aW9uIGFuZCBvYmpl
Y3RTdG9yZSBjYWxscyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQ
cmVmaXhlcygpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCd0
cmFuc2FjdGlvbi1hbmQtb2JqZWN0c3RvcmUtY2FsbHMnLCAnZGVzY3JpcHRpb24nKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sK
KyAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Cisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlc3VsdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24g
MScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVh
bkRhdGFiYXNlKCkKK3sKKyAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFy
Z2V0LnJlc3VsdCIpOworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBldmFs
QW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnYScpIik7CisgICAgZXZhbEFuZExvZygiZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ2InKSIpOworICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVj
dFN0b3JlKCdzdG9yZScpLmNyZWF0ZUluZGV4KCdpbmRleCcsICdzb21lX3BhdGgnKSIpOworICAg
IGV2YWxBbmRMb2coInRyYW5zLmFkZEV2ZW50TGlzdGVuZXIoJ2NvbXBsZXRlJywgY3JlYXRlZCwg
dHJ1ZSkiKTsKKyAgICBkZWJ1ZygiIik7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZWQoKQoreworICAg
IHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ2EnXSkiKTsKKyAg
ICBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYScpIik7CisgICAgZXZhbEFuZEV4cGVj
dEV4Y2VwdGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ2InKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlv
bi5OT1RfRk9VTkRfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigidHJhbnMub2Jq
ZWN0U3RvcmUoJ3gnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7Cisg
ICAgZGVidWcoIiIpOworCisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5z
YWN0aW9uKFsnYSddKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdhJyki
KTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0cmFucy5vYmplY3RTdG9yZSgnYicpIiwg
IklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0
RXhjZXB0aW9uKCJ0cmFucy5vYmplY3RTdG9yZSgneCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9u
Lk5PVF9GT1VORF9FUlIiKTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICB0cmFucyA9IGV2YWxBbmRM
b2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydiJ10pIik7CisgICAgZXZhbEFuZExvZygidHJh
bnMub2JqZWN0U3RvcmUoJ2InKSIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInRyYW5z
Lm9iamVjdFN0b3JlKCdhJykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIp
OworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInRyYW5zLm9iamVjdFN0b3JlKCd4JykiLCAi
SURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOworICAgIGRlYnVnKCIiKTsKKwor
ICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ2EnLCAnYidd
KSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdhJykiKTsKKyAgICBldmFs
QW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYicpIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2Vw
dGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ3gnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1Rf
Rk9VTkRfRVJSIik7CisgICAgZGVidWcoIiIpOworCisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0
cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnYicsICdhJ10pIik7CisgICAgZXZhbEFuZExvZygidHJh
bnMub2JqZWN0U3RvcmUoJ2EnKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3Jl
KCdiJykiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0cmFucy5vYmplY3RTdG9yZSgn
eCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKKyAgICBkZWJ1Zygi
Iik7CisKKyAgICBkZWJ1ZygiUGFzc2luZyBhIHN0cmluZyBhcyB0aGUgZmlyc3QgYXJndW1lbnQg
aXMgYSBzaG9ydGN1dCBmb3IganVzdCBvbmUgb2JqZWN0IHN0b3JlOiIpOworICAgIHRyYW5zID0g
ZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignYScpIik7CisgICAgZXZhbEFuZExv
ZygidHJhbnMub2JqZWN0U3RvcmUoJ2EnKSIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24o
InRyYW5zLm9iamVjdFN0b3JlKCdiJykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5E
X0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInRyYW5zLm9iamVjdFN0b3JlKCd4
JykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOworICAgIGRlYnVnKCIi
KTsKKworICAgIHNob3VsZFRocm93KCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCkiKTsKKyAgICBk
ZWJ1ZygiIik7CisKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbihb
J3gnXSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOworICAgIGV2YWxB
bmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKFsneCddKSIsICJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIu
dHJhbnNhY3Rpb24oWydhJywgJ3gnXSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5E
X0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKFsneCcs
ICd4J10pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKKyAgICBldmFs
QW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbihbJ2EnLCAneCcsICdiJ10pIiwgIklE
QkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKKyAgICBkZWJ1ZygiIik7CisKKyAg
ICBkZWJ1ZygiRXhjZXB0aW9uIHRocm93biB3aGVuIG5vIHN0b3JlcyBzcGVjaWZpZWQ6Iik7Cisg
ICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oW10pIiwgIkRPTUV4Y2Vw
dGlvbi5JTlZBTElEX0FDQ0VTU19FUlIiKTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICBkZWJ1Zygi
e30gY29lcmNlcyB0byBhIHN0cmluZyAtIHNvIG5vIG1hdGNoLCBidXQgbm90IGEgdHlwZSBlcnJv
cjoiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbih7fSkiLCAi
SURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RF
eGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKHttb2RlOjB9KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlv
bi5OT1RfRk9VTkRfRVJSIik7CisgICAgZGVidWcoIiIpOworCisgICAgZGVidWcoIk92ZXJyaWRp
bmcgdGhlIGRlZmF1bHQgc3RyaW5nIGNvZXJjaW9uIG1ha2VzIHRoZXNlIHdvcms6Iik7CisgICAg
ZXZhbEFuZExvZygiZGIudHJhbnNhY3Rpb24oe3RvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuICdh
Jzt9fSkiKTsKKyAgICBldmFsQW5kTG9nKCJkYi50cmFuc2FjdGlvbihbe3RvU3RyaW5nOmZ1bmN0
aW9uKCl7cmV0dXJuICdhJzt9fV0pIik7CisgICAgZGVidWcoIi4uLiBidXQgeW91IHN0aWxsIG5l
ZWQgdG8gc3BlY2lmeSBhIHJlYWwgc3RvcmU6Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlv
bigiZGIudHJhbnNhY3Rpb24oW3t0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiAneCc7fX1dKSIs
ICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7CisgICAgZXZhbEFuZEV4cGVj
dEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oW3t0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiAn
eCc7fX1dKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7CisgICAgZGVi
dWcoIiIpOworCisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9u
KFsnc3RvcmUnXSkiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9IG51bGwiKTsKKyAgICB0
cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSBhZnRl
ckNvbXBsZXRlOworICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0
b3JlJykiKTsKKyAgICBzaG91bGRCZVRydWUoInN0b3JlICE9IG51bGwiKTsKKyAgICBldmFsQW5k
TG9nKCJzdG9yZS5nZXQoJ3NvbWVfa2V5JykiKTsKK30KKworZnVuY3Rpb24gYWZ0ZXJDb21wbGV0
ZSgpCit7CisgICAgZGVidWcoInRyYW5zYWN0aW9uIGNvbXBsZXRlLCBlbnN1cmluZyBtZXRob2Rz
IGZhaWwiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9IG51bGwiKTsKKyAgICBzaG91bGRC
ZVRydWUoInN0b3JlICE9IG51bGwiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0cmFu
cy5vYmplY3RTdG9yZSgnc3RvcmUnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dF
RF9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5pbmRleCgnaW5kZXgn
KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9FUlIiKTsKKworICAgIGZpbmlz
aEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0
aW9uLWJhc2ljcy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90
cmFuc2FjdGlvbi1iYXNpY3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWI1ZGRjNmRiZGQ4MTkwODcxOTM3MjU0
MmZiMzg5ZWU1MjZjMmVjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1iYXNpY3MuanMKQEAgLTAsMCArMSwyODYg
QEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMo
J3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgdHJhbnNhY3Rp
b24gYmFzaWNzLiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVm
aXhlcygpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCd0cmFu
c2FjdGlvbi1iYXNpY3MnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAg
ICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEn
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5E
YXRhYmFzZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiLCBjaGVja01ldGFkYXRh
RW1wdHkpOworICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25jb21wbGV0ZSA9IHRlc3RTZXRWZXJz
aW9uQWJvcnQxOworfQorCitmdW5jdGlvbiB0ZXN0U2V0VmVyc2lvbkFib3J0MSgpCit7CisgICAg
Y2hlY2tNZXRhZGF0YUVtcHR5KCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBzdGFydFNldFZlcnNpb24oJ3ZlcnNpb24gZmFpbCcpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBhZGRSZW1vdmVJREJPYmplY3RzOworfQorCitmdW5jdGlvbiBhZGRSZW1vdmVJREJPYmpl
Y3RzKCkKK3sKKyAgICBkZWJ1ZygiYWRkUmVtb3ZlSURCT2JqZWN0cygpOiIpOworICAgIHZhciB0
cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNo
b3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKyAgICB0cmFucy5hZGRFdmVudExpc3RlbmVy
KCdhYm9ydCcsIHRlc3RTZXRWZXJzaW9uQWJvcnQyLCB0cnVlKTsKKyAgICB0cmFucy5vbmNvbXBs
ZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7CisKKyAgICB2YXIgc3RvcmUgPSBldmFs
QW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZUZhaWwnLCBudWxsKSIp
OworICAgIHZhciBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgo
J2luZGV4RmFpbCcsICd4JykiKTsKKworICAgIGV2YWxBbmRMb2coImRiLmRlbGV0ZU9iamVjdFN0
b3JlKCdzdG9yZUZhaWwnKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlLmRlbGV0ZUluZGV4KCdp
bmRleEZhaWwnKSIpOworCisgICAgdHJhbnMuYWJvcnQoKTsKK30KKworZnVuY3Rpb24gdGVzdFNl
dFZlcnNpb25BYm9ydDIoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidGVzdFNldFZl
cnNpb25BYm9ydDIoKToiKTsKKyAgICBjaGVja01ldGFkYXRhRW1wdHkoKTsKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHN0YXJ0U2V0VmVyc2lvbigndmVyc2lvbiBmYWlsJyki
KTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZFJlbW92ZUFkZElEQk9iamVjdHM7Cit9CisK
K2Z1bmN0aW9uIGFkZFJlbW92ZUFkZElEQk9iamVjdHMoKQoreworICAgIGRlYnVnKCJhZGRSZW1v
dmVBZGRJREJPYmplY3RzKCk6Iik7CisgICAgdmFyIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVs
bCIpOworICAgIHRyYW5zLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgdGVzdFNldFZlcnNpb25B
Ym9ydDMsIGZhbHNlKTsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRl
Q2FsbGJhY2s7CisKKyAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdzdG9yZUZhaWwnLCBudWxsKSIpOworICAgIHZhciBpbmRleCA9IGV2YWxB
bmRMb2coImluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4RmFpbCcsICd4JykiKTsKKwor
ICAgIGV2YWxBbmRMb2coImRiLmRlbGV0ZU9iamVjdFN0b3JlKCdzdG9yZUZhaWwnKSIpOworICAg
IGV2YWxBbmRMb2coInN0b3JlLmRlbGV0ZUluZGV4KCdpbmRleEZhaWwnKSIpOworCisgICAgdmFy
IHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVG
YWlsJywgbnVsbCkiKTsKKyAgICB2YXIgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3Jl
LmNyZWF0ZUluZGV4KCdpbmRleEZhaWwnLCAneCcpIik7CisKKyAgICB0cmFucy5hYm9ydCgpOwor
fQorCitmdW5jdGlvbiB0ZXN0U2V0VmVyc2lvbkFib3J0MygpCit7CisgICAgZGVidWcoIiIpOwor
ICAgIGRlYnVnKCJ0ZXN0U2V0VmVyc2lvbkFib3J0MygpOiIpOworICAgIHNob3VsZEJlRmFsc2Uo
ImV2ZW50LmNhbmNlbGFibGUiKTsKKyAgICBjaGVja01ldGFkYXRhRW1wdHkoKTsKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHN0YXJ0U2V0VmVyc2lvbigndmVyc2lvbiBmYWls
JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZElEQk9iamVjdHM7Cit9CisKK2Z1bmN0
aW9uIGFkZElEQk9iamVjdHMoKQoreworICAgIGRlYnVnKCJhZGRJREJPYmplY3RzKCk6Iik7Cisg
ICAgc2hvdWxkQmVGYWxzZSgiZXZlbnQuY2FuY2VsYWJsZSIpOworICAgIHZhciB0cmFucyA9IGV2
YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1
ZSgidHJhbnMgIT09IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdGVzdEluYWN0aXZlQWJv
cnRlZFRyYW5zYWN0aW9uOworICAgIHRyYW5zLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQ29tcGxl
dGVDYWxsYmFjazsKKworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVP
YmplY3RTdG9yZSgnc3RvcmVGYWlsJywgbnVsbCkiKTsKKyAgICBpbmRleCA9IGV2YWxBbmRMb2co
ImluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4RmFpbCcsICd4JykiKTsKKworICAgIHRy
YW5zLmFib3J0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RJbmFjdGl2ZUFib3J0ZWRUcmFuc2FjdGlv
bigpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0SW5hY3RpdmVBYm9ydGVkVHJh
bnNhY3Rpb24oKToiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJpbmRleC5vcGVuQ3Vy
c29yKCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7
CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXgub3BlbktleUN1cnNvcigpIiwgIklE
QkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOworICAgIGV2YWxB
bmRFeHBlY3RFeGNlcHRpb24oImluZGV4LmdldCgwKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5U
UkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJp
bmRleC5nZXRLZXkoMCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJ
VkVfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXguY291bnQoKSIsICJJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsKKworICAgIGV2
YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLnB1dCgwLCAwKSIsICJJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJzdG9yZS5hZGQoMCwgMCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05f
SU5BQ1RJVkVfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuZGVsZXRl
KDApIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOwor
ICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmNsZWFyKCkiLCAiSURCRGF0YWJhc2VF
eGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigic3RvcmUuZ2V0KDApIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9O
X0lOQUNUSVZFX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLm9wZW5D
dXJzb3IoKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIi
KTsKKworICAgIHRlc3RTZXRWZXJzaW9uQWJvcnQ0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTZXRW
ZXJzaW9uQWJvcnQ0KCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInRlc3RTZXRWZXJz
aW9uQWJvcnQ0KCk6Iik7CisgICAgY2hlY2tNZXRhZGF0YUVtcHR5KCk7CisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdGFydFNldFZlcnNpb24oJ3ZlcnNpb24gZmFpbCcpIik7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRJREJPYmplY3RzQW5kQ29tbWl0OworfQorCitm
dW5jdGlvbiBhZGRJREJPYmplY3RzQW5kQ29tbWl0KCkKK3sKKyAgICBkZWJ1ZygiYWRkSURCT2Jq
ZWN0c0FuZENvbW1pdCgpOiIpOworICAgIHZhciB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwi
KTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisKKyAgICBz
dG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlRmFp
bCcsIG51bGwpIik7CisgICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmNyZWF0
ZUluZGV4KCdpbmRleEZhaWwnLCAneCcpIik7CisKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gdGVz
dEluYWN0aXZlQ29tcGxldGVkVHJhbnNhY3Rpb247Cit9CisKK2Z1bmN0aW9uIHRlc3RJbmFjdGl2
ZUNvbXBsZXRlZFRyYW5zYWN0aW9uKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInRl
c3RJbmFjdGl2ZUNvbXBsZXRlZFRyYW5zYWN0aW9uKCk6Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigiaW5kZXgub3BlbkN1cnNvcigpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5T
QUNUSU9OX0lOQUNUSVZFX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4
Lm9wZW5LZXlDdXJzb3IoKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFD
VElWRV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJpbmRleC5nZXQoMCkiLCAi
SURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7CisgICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXguZ2V0S2V5KDApIiwgIklEQkRhdGFiYXNlRXhjZXB0
aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRp
b24oImluZGV4LmNvdW50KCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5B
Q1RJVkVfRVJSIik7CisKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5wdXQoMCwg
MCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7Cisg
ICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuYWRkKDAsIDApIiwgIklEQkRhdGFiYXNl
RXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RF
eGNlcHRpb24oInN0b3JlLmRlbGV0ZSgwKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FD
VElPTl9JTkFDVElWRV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5j
bGVhcigpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIp
OworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmdldCgwKSIsICJJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0
RXhjZXB0aW9uKCJzdG9yZS5vcGVuQ3Vyc29yKCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJB
TlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7CisKKyAgICB0ZXN0U2V0VmVyc2lvbkFib3J0NSgpOwor
fQorCitmdW5jdGlvbiB0ZXN0U2V0VmVyc2lvbkFib3J0NSgpCit7CisgICAgZGVidWcoIiIpOwor
ICAgIGRlYnVnKCJ0ZXN0U2V0VmVyc2lvbkFib3J0NSgpOiIpOworICAgIGNoZWNrTWV0YWRhdGFF
eGlzdGluZ09iamVjdFN0b3JlKCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBzdGFydFNldFZlcnNpb24oJ3ZlcnNpb24gZmFpbCcpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSByZW1vdmVJREJPYmplY3RzOworfQorCitmdW5jdGlvbiByZW1vdmVJREJPYmplY3RzKCkK
K3sKKyAgICBkZWJ1ZygicmVtb3ZlSURCT2JqZWN0cygpOiIpOworICAgIHZhciB0cmFucyA9IGV2
YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1
ZSgidHJhbnMgIT09IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdGVzdFNldFZlcnNpb25B
Ym9ydDY7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNr
OworCisgICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9y
ZSgnc3RvcmVGYWlsJykiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZS5kZWxldGVJbmRleCgnaW5k
ZXhGYWlsJykiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5kZWxldGVPYmplY3RTdG9yZSgnc3RvcmVG
YWlsJykiKTsKKworICAgIHRyYW5zLmFib3J0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTZXRWZXJz
aW9uQWJvcnQ2KCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInRlc3RTZXRWZXJzaW9u
QWJvcnQ2KCk6Iik7CisgICAgY2hlY2tNZXRhZGF0YUV4aXN0aW5nT2JqZWN0U3RvcmUoKTsKKyAg
ICBzZXROZXdWZXJzaW9uKCk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0U2V0VmVyc2lvbih2ZXJzaW9u
TmFtZSkKK3sKKyAgICByZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbih2ZXJzaW9uTmFtZSk7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmV0dXJuIHJl
cXVlc3Q7Cit9CisKK2Z1bmN0aW9uIGNoZWNrTWV0YWRhdGFFbXB0eSgpCit7CisgICAgc2hvdWxk
QmUoInNlbGYuZGIub2JqZWN0U3RvcmVOYW1lcyIsICJbXSIpOworICAgIHNob3VsZEJlKCJzZWxm
LmRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjAiKTsKKyAgICBzaG91bGRCZSgic2VsZi5k
Yi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCdzdG9yZUZhaWwnKSIsICJmYWxzZSIpOworfQor
CitmdW5jdGlvbiBjaGVja01ldGFkYXRhRXhpc3RpbmdPYmplY3RTdG9yZSgpCit7CisgICAgc2hv
dWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMiLCAiWydzdG9yZUZhaWwnXSIpOworICAgIHNob3Vs
ZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIxIik7CisgICAgc2hvdWxkQmUoImRi
Lm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJ3N0b3JlRmFpbCcpIiwgInRydWUiKTsKK30KKwor
ZnVuY3Rpb24gc2V0TmV3VmVyc2lvbigpCit7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRi
LnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNl
dFZlcnNpb25TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCit7CisgICAgZGVidWco
IiIpOworICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOworICAgIHNlbGYudHJhbnMg
PSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRC
ZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRB
Ym9ydENhbGxiYWNrOworICAgIHRyYW5zLmFkZEV2ZW50TGlzdGVuZXIoJ2NvbXBsZXRlJywgY29t
cGxldGVDYWxsYmFjaywgZmFsc2UpOworICAgIHNlbGYuY29tcGxldGVFdmVudEZpcmVkID0gZmFs
c2U7CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgZXZhbEFuZExvZygi
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7Cit9CisKK2Z1bmN0aW9u
IGNvbXBsZXRlQ2FsbGJhY2soKQoreworICAgIHNob3VsZEJlRmFsc2UoImV2ZW50LmNhbmNlbGFi
bGUiKTsKKyAgICB0ZXN0UGFzc2VkKCJjb21wbGV0ZSBldmVudCBmaXJlZCIpOworICAgIHRyYW5z
YWN0aW9uID0gZXZhbEFuZExvZygiZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSkiKTsKKyAg
ICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gYWJvcnRDYWxsYmFjazsKKyAgICB2YXIgc3RvcmUgPSBl
dmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIp
OworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3RvcmUubmFtZSIsICJzdG9yZU5hbWUiKTsK
K30KKworZnVuY3Rpb24gYWJvcnRDYWxsYmFjaygpCit7CisgICAgdGVzdFBhc3NlZCgiYWJvcnQg
ZXZlbnQgZmlyZWQiKTsKKyAgICB0ZXN0RE9NU3RyaW5nTGlzdCgpOworfQorCitmdW5jdGlvbiB0
ZXN0RE9NU3RyaW5nTGlzdCgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJWZXJpZnlp
bmcgRE9NU3RyaW5nTGlzdCB3b3JrcyBhcyBhcmd1bWVudCBmb3IgSURCRGF0YWJhc2UudHJhbnNh
Y3Rpb24oKSIpOworICAgIGRlYnVnKCJkYi5vYmplY3RTdG9yZU5hbWVzIGlzICIgKyBkYi5vYmpl
Y3RTdG9yZU5hbWVzKTsKKyAgICBkZWJ1ZygiLi4uIHdoaWNoIGNvbnRhaW5zOiAiICsgSlNPTi5z
dHJpbmdpZnkoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZGIub2JqZWN0U3RvcmVOYW1lcykp
KTsKKyAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKGRiLm9iamVj
dFN0b3JlTmFtZXMpIik7CisgICAgdGVzdFBhc3NlZCgibm8gZXhjZXB0aW9uIHRocm93biIpOwor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGg7ICsraSkg
eworICAgICAgc2hvdWxkQmVUcnVlKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgiICsgSlNPTi5z
dHJpbmdpZnkoZGIub2JqZWN0U3RvcmVOYW1lc1tpXSkgKyAiKSAhPSBudWxsIik7CisgICAgfQor
ICAgIHRlc3RQYXNzZWQoImFsbCBzdG9yZXMgcHJlc2VudCBpbiB0cmFuc2FjdGlvbiIpOworICAg
IHRlc3RJbnZhbGlkTW9kZSgpOworfQorCitmdW5jdGlvbiB0ZXN0SW52YWxpZE1vZGUoKQorewor
ICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVmVyaWZ5IHRoYXQgc3BlY2lmeWluZyBhbiBpbnZh
bGlkIG1vZGUgcmFpc2VzIGFuIGV4Y2VwdGlvbiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRp
b24oImRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIDMpIiwgIklEQkRhdGFiYXNlRXhjZXB0
aW9uLk5PTl9UUkFOU0lFTlRfRVJSIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3Qo
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90
cmFuc2FjdGlvbi1jcmFzaC1vbi1hYm9ydC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1jcmFzaC1vbi1hYm9ydC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
MzNlYjA0YmVkMTRjNDJkNDgwNjc0OTc0OWE5NjZlNWY4NGVjMzVlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWNy
YXNoLW9uLWFib3J0LmpzCkBAIC0wLDAgKzEsMzkgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMp
IHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlw
dGlvbigiVGVzdCBJbmRleGVkREIgdHJhbnNhY3Rpb24gZG9lcyBub3QgY3Jhc2ggb24gYWJvcnQu
Iik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0aW9uLWNy
YXNoLW9uLWFib3J0JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7CisgICAg
ZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignMS4wJykiKTsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IHNldFZlcnNpb25TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCit7Cisg
ICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycpIik7CisgICAgZXZlbnQu
dGFyZ2V0LnJlc3VsdC5vbmNvbXBsZXRlID0gc2V0VmVyc2lvbkNvbXBsZXRlOworfQorCitmdW5j
dGlvbiBzZXRWZXJzaW9uQ29tcGxldGUoKQoreworICAgIGV2YWxBbmRMb2coImRiLnRyYW5zYWN0
aW9uKCdmb28nKSIpOworICAgIGV2YWxBbmRMb2coInNlbGYuZ2MoKSIpOworICAgIGZpbmlzaEpT
VGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9u
LWV2ZW50LXByb3BhZ2F0aW9uLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL3RyYW5zYWN0aW9uLWV2ZW50LXByb3BhZ2F0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZkNWM2
MWFiZTVjZDFjZDdmYWQ2OGY5MzNmOTA2YjU5OWVlZmI1ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tZXZlbnQt
cHJvcGFnYXRpb24uanMKQEAgLTAsMCArMSwxNDQgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMp
IHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlw
dGlvbigiVGVzdCBldmVudCBwcm9wb2dhdGlvbiBvbiBJREJUcmFuc2FjdGlvbi4iKTsKKworZnVu
Y3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0aW9uLWV2ZW50LXByb3BhZ2F0
aW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb247CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZl
cnNpb24oKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNp
b24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRl
bGV0ZUV4aXN0aW5nKCkKK3sKKyAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBl
dmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIp
OworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICBldmFs
QW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gc3RhcnRUZXN0Iik7CisKKyAgICBkZWxldGVBbGxP
YmplY3RTdG9yZXMoZGIpOworCisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IHN0YXJ0VGVzdCgpCit7CisgICAgZGVidWcoIlZlcmlmaW5nIGFib3J0Iik7CisgICAgdHJhbnMg
PSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIElEQlRy
YW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMub25hYm9ydCA9
IGFib3J0RmlyZWRDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUg
PSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50
TGlzdGVuZXIoJ2Fib3J0JywgZGJBYm9ydENhcHR1cmVDYWxsYmFjaywgdHJ1ZSkiKTsKKyAgICBl
dmFsQW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIGRiQWJvcnRCdWJibGVDYWxs
YmFjaywgZmFsc2UpIik7CisgICAgZXZhbEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignY29t
cGxldGUnLCB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjaywgdHJ1ZSkiKTsKKyAgICBldmFsQW5k
TG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdjb21wbGV0ZScsIHVuZXhwZWN0ZWRDb21wbGV0ZUNh
bGxiYWNrLCBmYWxzZSkiKTsKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMu
b2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUuYWRkKHt4
OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOworICAgIGRiQ2FwdHVyZUZpcmVkID0gZmFs
c2U7CisgICAgYWJvcnRGaXJlZCA9IGZhbHNlOworICAgIGRiQnViYmxlRmlyZWQxID0gZmFsc2U7
Cit9CisKK2Z1bmN0aW9uIGRiQWJvcnRDYXB0dXJlQ2FsbGJhY2soKQoreworICAgIGRlYnVnKCIi
KTsKKyAgICBkZWJ1ZygiSW4gSURCRGF0YWJhc2UgYWJvcnQgY2FwdHVyZSIpOworICAgIHNob3Vs
ZEJlRmFsc2UoImRiQ2FwdHVyZUZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiYWJvcnRGaXJl
ZCIpOworICAgIHNob3VsZEJlRmFsc2UoImRiQnViYmxlRmlyZWQxIik7CisgICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldCIsICJ0cmFucyIpOworICAgIHNob3VsZEJlKCJldmVudC5jdXJyZW50VGFy
Z2V0IiwgImRiIik7CisgICAgZGJDYXB0dXJlRmlyZWQgPSB0cnVlOworfQorCitmdW5jdGlvbiBh
Ym9ydEZpcmVkQ2FsbGJhY2soKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiSW4gYWJv
cnQgaGFuZGxlciIpOworICAgIHNob3VsZEJlVHJ1ZSgiZGJDYXB0dXJlRmlyZWQiKTsKKyAgICBz
aG91bGRCZUZhbHNlKCJhYm9ydEZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVG
aXJlZDEiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0IiwgInRyYW5zIik7CisgICAgc2hv
dWxkQmUoImV2ZW50LmN1cnJlbnRUYXJnZXQiLCAidHJhbnMiKTsKKyAgICBhYm9ydEZpcmVkID0g
dHJ1ZTsKK30KKworZnVuY3Rpb24gZGJBYm9ydEJ1YmJsZUNhbGxiYWNrKCkKK3sKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoIkluIElEQkRhdGFiYXNlIGVycm9yIGJ1YmJsZSIpOworICAgIHNo
b3VsZEJlVHJ1ZSgiZGJDYXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRCZVRydWUoImFib3J0Rmly
ZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVkMSIpOworICAgIHNob3VsZEJl
KCJldmVudC50YXJnZXQiLCAidHJhbnMiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQuY3VycmVudFRh
cmdldCIsICJkYiIpOworICAgIGRiQnViYmxlRmlyZWQxID0gdHJ1ZTsKKyAgICBkZWJ1ZygiIik7
CisgICAgZGVidWcoIlZlcmlmaW5nIHN1Y2Nlc3MuIik7CisgICAgdHJhbnMgPSBldmFsQW5kTG9n
KCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIElEQlRyYW5zYWN0aW9uLlJF
QURfV1JJVEUpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IGNvbXBsZXRl
RmlyZWRDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSB1bmV4cGVj
dGVkQWJvcnRDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coImRiLnJlbW92ZUV2ZW50TGlzdGVu
ZXIoJ2Fib3J0JywgZGJBYm9ydENhcHR1cmVDYWxsYmFjaywgdHJ1ZSkiKTsKKyAgICBldmFsQW5k
TG9nKCJkYi5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIGRiQWJvcnRCdWJibGVDYWxsYmFj
aywgZmFsc2UpIik7CisgICAgZXZhbEFuZExvZygiZGIucmVtb3ZlRXZlbnRMaXN0ZW5lcignY29t
cGxldGUnLCB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjaywgdHJ1ZSkiKTsKKyAgICBldmFsQW5k
TG9nKCJkYi5yZW1vdmVFdmVudExpc3RlbmVyKCdjb21wbGV0ZScsIHVuZXhwZWN0ZWRDb21wbGV0
ZUNhbGxiYWNrLCBmYWxzZSkiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVy
KCdjb21wbGV0ZScsIGRiQ29tcGxldGVDYXB0dXJlQ2FsbGJhY2ssIHRydWUpIik7CisgICAgZXZh
bEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignY29tcGxldGUnLCBkYkNvbXBsZXRlQnViYmxl
Q2FsbGJhY2ssIGZhbHNlKSIpOworICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50TGlzdGVuZXIo
J2Fib3J0JywgdW5leHBlY3RlZEFib3J0Q2FsbGJhY2ssIHRydWUpIik7CisgICAgZXZhbEFuZExv
ZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjaywg
ZmFsc2UpIik7CisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0
b3JlKCdzdG9yZU5hbWUnKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVl
JywgeTogJ3p6eid9LCAna2V5MicpIik7CisgICAgZGJDYXB0dXJlRmlyZWQgPSBmYWxzZTsKKyAg
ICBjb21wbGV0ZUZpcmVkID0gZmFsc2U7CisgICAgZGJCdWJibGVGaXJlZDIgPSBmYWxzZTsKK30K
KworZnVuY3Rpb24gZGJDb21wbGV0ZUNhcHR1cmVDYWxsYmFjaygpCit7CisgICAgZGVidWcoIiIp
OworICAgIGRlYnVnKCJJbiBJREJEYXRhYmFzZSBjb21wbGV0ZSBjYXB0dXJlIik7CisgICAgc2hv
dWxkQmVGYWxzZSgiZGJDYXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJjb21wbGV0
ZUZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVGaXJlZDIiKTsKKyAgICBzaG91
bGRCZSgiZXZlbnQudGFyZ2V0IiwgInRyYW5zIik7CisgICAgc2hvdWxkQmUoImV2ZW50LmN1cnJl
bnRUYXJnZXQiLCAiZGIiKTsKKyAgICBkYkNhcHR1cmVGaXJlZCA9IHRydWU7Cit9CisKK2Z1bmN0
aW9uIGNvbXBsZXRlRmlyZWRDYWxsYmFjaygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVn
KCJJbiBJREJSZXF1ZXN0IGhhbmRsZXIiKTsKKyAgICBzaG91bGRCZVRydWUoImRiQ2FwdHVyZUZp
cmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiY29tcGxldGVGaXJlZCIpOworICAgIHNob3VsZEJl
RmFsc2UoImRiQnViYmxlRmlyZWQyIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldCIsICJ0
cmFucyIpOworICAgIHNob3VsZEJlKCJldmVudC5jdXJyZW50VGFyZ2V0IiwgInRyYW5zIik7Cisg
ICAgY29tcGxldGVGaXJlZCA9IHRydWU7CisgICAgZGVidWcoIiIpOworICAgIGZpbmlzaEpTVGVz
dCgpOworfQorCitmdW5jdGlvbiBkYkNvbXBsZXRlQnViYmxlQ2FsbGJhY2soKQoreworICAgIGRl
YnVnKCIiKTsKKyAgICBkZWJ1ZygiSW4gSURCRGF0YWJhc2UgY29tcGxldGUgYnViYmxlIik7Cisg
ICAgdGVzdEZhaWxlZCgiQ29tcGxldGUgYnViYmxlIGNhbGxiYWNrIHNob3VsZCBOT1QgZmlyZSIp
OworICAgIGRiQnViYmxlRmlyZWQyID0gdHJ1ZTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy90cmFuc2FjdGlvbi1yZWFkLW9ubHkuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tcmVhZC1vbmx5LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQ5NDNhMzFjZmQ3YjVhYTBjNzE3ZGExM2Q3YWZkMDlmMTBhMzliYWQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24t
cmVhZC1vbmx5LmpzCkBAIC0wLDAgKzEsNTggQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsK
KyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlv
bigiVGVzdCByZWFkLW9ubHkgdHJhbnNhY3Rpb25zIGluIEluZGV4ZWREQi4iKTsKKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndHJhbnNhY3Rpb24tcmVhZC1vbmx5JykiKTsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2Vzcygp
Cit7CisgICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7CisgICAgc2VsZi5kYiA9IGV2YWxBbmRM
b2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXN1bHQgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7CisgICAgZGVs
ZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25jb21w
bGV0ZSA9IHNldFZlcnNpb25Eb25lOworICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25hYm9ydCA9
IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUg
PSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgIGV2YWxBbmRMb2coInN0b3Jl
LnB1dCgneCcsICd5JykiKTsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbkRvbmUoKQoreworICAg
IHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnKSIpOwor
ICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpLnB1
dCgnYScsICdiJykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUiIpOworCisg
ICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScpIik7
CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyku
ZGVsZXRlKCd4JykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUiIpOworCisg
ICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScpIik7
CisgICAgY3VyID0gZXZhbEFuZExvZygiY3VyID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyku
b3BlbkN1cnNvcigpIik7CisgICAgY3VyLm9uc3VjY2VzcyA9IGdvdEN1cnNvcjsKKyAgICBjdXIu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBnb3RDdXJz
b3IoKQoreworICAgIHNob3VsZEJlRmFsc2UoIiFldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZXZlbnQudGFyZ2V0LnJlc3VsdC5kZWxldGUoKSIsICJJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5SRUFEX09OTFlfRVJSIik7CisKKyAgICBmaW5pc2hKU1Rlc3Qo
KTsKK30KKwordGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLXJvbGxiYWNrLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLXJvbGxiYWNrLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjBkODQ4MzNhYjYwOWYzMjQ1NTlhNWFlNDU3NjRiYzhhNjZhNDUxMDMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24t
cm9sbGJhY2suanMKQEAgLTAsMCArMSw5MSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewor
ICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9u
KCJUZXN0IEluZGV4ZWREQiB0cmFuc2FjdGlvbiByb2xsYmFjay4iKTsKKworZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJpbmRleGVkREIub3BlbigndHJhbnNhY3Rpb24tcm9sbGJhY2snKSIpOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAg
ICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVl
c3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7CisgICAgZGVidWcoImNs
ZWFuRGF0YWJhc2UoKToiKTsKKyAgICBzZWxmLnRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJh
bnNhY3Rpb24gPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgdHJhbnNhY3Rpb24ub25hYm9y
dCA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUg
PSBzZXRWZXJzaW9uQ29tcGxldGU7CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwor
ICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdteU9iamVjdFN0b3JlJykiKTsK
KyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMSIpOworfQorCitm
dW5jdGlvbiBzZXRWZXJzaW9uQ29tcGxldGUoKQoreworICAgIGRlYnVnKCJzZXRWZXJzaW9uQ29t
cGxldGUoKToiKTsKKworICAgIHNlbGYudHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2Fj
dGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnbXlPYmplY3RTdG9yZSddLCBJREJUcmFuc2FjdGlvbi5S
RUFEX1dSSVRFKSIpOworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSBhYm9ydENhbGxiYWNrOwor
ICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjazsK
KworICAgIHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVj
dFN0b3JlKCdteU9iamVjdFN0b3JlJykiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3Rv
cmUuYWRkKCdyb2xsYmFja1ZhbHVlJywgJ3JvbGxiYWNrS2V5MTIzJykiKTsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGFkZFN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGFkZFN1Y2Nlc3MoKQoreworICAgIGRlYnVn
KCJhZGRTdWNjZXNzKCk6Iik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAi
J3JvbGxiYWNrS2V5MTIzJyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLm9w
ZW5DdXJzb3IoKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbkN1cnNvclN1Y2Nlc3M7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIG9wZW5DdXJzb3JTdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygib3BlbkN1cnNvclN1Y2Nl
c3MoKToiKTsKKyAgICBzZWxmLmN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKKworICAgIHRyYW5zYWN0aW9uLmFib3J0KCk7Cit9CisKK2Z1bmN0aW9u
IGFib3J0Q2FsbGJhY2soKQoreworICAgIGRlYnVnKCJhYm9ydENhbGxiYWNrKCk6Iik7CisgICAg
ZGVidWcoJ1RyYW5zYWN0aW9uIHdhcyBhYm9ydGVkLicpOworCisgICAgc2VsZi50cmFuc2FjdGlv
biA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydteU9iamVjdFN0
b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQUQpIik7CisgICAgc2VsZi5zdG9yZSA9IGV2YWxBbmRM
b2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ215T2JqZWN0U3RvcmUnKSIpOwor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5nZXQoJ3JvbGxiYWNrS2V5MTIzJykiKTsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGdldFN1Y2Nlc3M7Cit9CisKK2Z1bmN0aW9uIGdldFN1Y2Nlc3MoKQor
eworICAgIGRlYnVnKCJnZXRTdWNjZXNzKCk6Iik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdl
dC5yZXN1bHQiLCAidW5kZWZpbmVkIik7CisKKyAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwg
Iidyb2xsYmFja1ZhbHVlJyIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLXN0b3JlTmFtZXMtcmVxdWlyZWQuanMg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tc3Rv
cmVOYW1lcy1yZXF1aXJlZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNWEzZWQxMmFhYzhhODA0OWI5ODg3NzQw
OTVkNWJlMmU1YTY0MmVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLXN0b3JlTmFtZXMtcmVxdWlyZWQuanMKQEAg
LTAsMCArMSwzNiBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlw
dHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1w
b3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWRE
QjogdHJhbnNhY3Rpb24gc3RvcmVOYW1lcyByZXF1aXJlZCBhcmd1bWVudHMiKTsKKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBz
ZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJh
c2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNj
cmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBv
cGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVy
c2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9i
amVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworfQorCitmdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKK3sKKyAgICBk
ZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgc2hvdWxkVGhyb3coImRiLnRyYW5zYWN0
aW9uKCk7Iik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvdHdvLXZlcnNpb24tY2hhbmdlcy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy90d28tdmVyc2lvbi1jaGFuZ2VzLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2
NmU1MTRlNjUyNWQxZTg2MjBjYzdiOWNkOGNmNzIzMjEzNDA3M2YKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHdvLXZlcnNpb24tY2hh
bmdlcy5qcwpAQCAtMCwwICsxLDEwNiBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAg
IGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Jyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJU
ZXN0IGJlaGF2aW9yIHdoZW4gdGhlIHNhbWUgY29ubmVjdGlvbiBjYWxscyBzZXRWZXJzaW9uIHR3
aWNlIik7CisKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsK
KworICAgIHNob3VsZEJlRmFsc2UoImluZGV4ZWREQiA9PSBudWxsIik7CisgICAgc2hvdWxkQmVG
YWxzZSgiSURCVHJhbnNhY3Rpb24gPT0gbnVsbCIpOworICAgIG9wZW5EQkNvbm5lY3Rpb24oKTsK
K30KKworZnVuY3Rpb24gb3BlbkRCQ29ubmVjdGlvbigpCit7CisgICAgZXZhbEFuZExvZygic2Vs
Zi5zdGF0ZSA9ICdzdGFydGluZyciKTsKKyAgICB2YXIgcmVxdWVzdCA9IGV2YWxBbmRMb2coImlu
ZGV4ZWREQi5vcGVuKCd0d28tdmVyc2lvbnMtb25lLWNvbm5lY3Rpb24nKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBz
ZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgZXZh
bEFuZExvZygic2VsZi5zdGF0ZSA9IDAiKTsKKworICAgIHZhciB2ZXJzaW9uQ2hhbmdlUmVxdWVz
dDEgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHZlcnNp
b25DaGFuZ2VSZXF1ZXN0MS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAg
dmVyc2lvbkNoYW5nZVJlcXVlc3QxLm9uc3VjY2VzcyA9IGluU2V0VmVyc2lvbjE7CisKKyAgICAv
LyBhbmQgY29uY3VycmVudGx5Li4uCisKKyAgICB2YXIgdmVyc2lvbkNoYW5nZVJlcXVlc3QyID0g
ZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbigndmVyc2lvbiAyJykiKTsKKyAgICB2ZXJzaW9uQ2hh
bmdlUmVxdWVzdDIub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHZlcnNp
b25DaGFuZ2VSZXF1ZXN0Mi5vbnN1Y2Nlc3MgPSBpblNldFZlcnNpb24yOworfQorCitmdW5jdGlv
biBpblNldFZlcnNpb24xKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvbigpICMxIGNhbGxiYWNr
Iik7CisgICAgdHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgIGV2YWxBbmRMb2coInNl
bGYuc3RvcmUxID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Rlc3Qtc3RvcmUxJykiKTsKKyAgICBz
aG91bGRCZSgiKytzZWxmLnN0YXRlIiwgIjEiKTsKKyAgICB2YXIgcmVxID0gZXZhbEFuZExvZygi
c2VsZi5zdG9yZTEucHV0KCdhYWEnLCAxMTEpIik7CisgICAgcmVxLm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKKyAg
ICAgICAgc2hvdWxkQmUoIisrc2VsZi5zdGF0ZSIsICIyIik7CisgICAgICAgIGhhbGZ3YXlEb25l
KCk7CisgICAgfTsKK30KKworZnVuY3Rpb24gaW5TZXRWZXJzaW9uMigpCit7CisgICAgZGVidWco
InNldFZlcnNpb24oKSAjMiBjYWxsYmFjayIpOworICAgIHRyYW5zID0gZXZlbnQudGFyZ2V0LnJl
c3VsdDsKKyAgICBzaG91bGRCZSgiKytzZWxmLnN0YXRlIiwgIjQiKTsKKyAgICBldmFsQW5kTG9n
KCJzZWxmLnN0b3JlMiA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCd0ZXN0LXN0b3JlMicpIik7CisK
KyAgICB2YXIgcmVxID0gZXZhbEFuZExvZygic2VsZi5zdG9yZTIucHV0KCdiYmInLCAyMjIpIik7
CisgICAgcmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXEub25z
dWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgc2hvdWxkQmUoIisrc2VsZi5zdGF0ZSIs
ICI1Iik7CisgICAgICAgIGhhbGZ3YXlEb25lKCk7CisgICAgfTsKK30KKwordmFyIGNvdW50ZXIg
PSAwOworZnVuY3Rpb24gaGFsZndheURvbmUoKSAKK3sKKyAgICBjb3VudGVyICs9IDE7CisgICAg
aWYgKGNvdW50ZXIgPCAyKSB7CisgICAgICAgIHNob3VsZEJlKCIrK3NlbGYuc3RhdGUiLCAiMyIp
OworICAgICAgICBkZWJ1ZygiaGFsZndheSB0aGVyZS4uLiIgKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBzaG91bGRCZSgiKytzZWxmLnN0YXRlIiwgIjYiKTsKKyAgICAgICAgY2hlY2tSZXN1bHRz
KCk7CisgICAgfQorfQorCitmdW5jdGlvbiBjaGVja1Jlc3VsdHMoKSB7CisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJzZWxmLmRiLnZlcnNpb24iLCAidmVyc2lvbiAyIik7CisgICAgdHJhbnMu
b25jb21wbGV0ZSA9IHNldFZlcnNpb25Db21wbGV0ZTsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lv
bkNvbXBsZXRlKCkKK3sKKyAgICB0cmFucyA9IGV2YWxBbmRMb2coInNlbGYudHJhbnMgPSBkYi50
cmFuc2FjdGlvbihbJ3Rlc3Qtc3RvcmUxJywgJ3Rlc3Qtc3RvcmUyJ10pIik7CisgICAgc3RvcmUg
PSBldmFsQW5kTG9nKCJzZWxmLnN0b3JlID0gc2VsZi50cmFucy5vYmplY3RTdG9yZSgndGVzdC1z
dG9yZTEnKSIpOworICAgIHJlcSA9IGV2YWxBbmRMb2coInNlbGYucmVxID0gc2VsZi5zdG9yZS5n
ZXQoMTExKSIpOworICAgIHJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cisg
ICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJhYWEiKTsKKworICAgICAgICBzdG9yZSA9
IGV2YWxBbmRMb2coInNlbGYuc3RvcmUgPSBzZWxmLnRyYW5zLm9iamVjdFN0b3JlKCd0ZXN0LXN0
b3JlMicpIik7CisgICAgICAgIHJlcSA9IGV2YWxBbmRMb2coInNlbGYucmVxID0gc2VsZi5zdG9y
ZS5nZXQoMjIyKSIpOworICAgICAgICByZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworICAgICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJiYmIiKTsKKyAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9OworICAgIH07Cit9CisKK3Rlc3Qo
KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdmFsdWUtdW5kZWZpbmVkLmpzIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3ZhbHVlLXVuZGVmaW5lZC5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iOTcwMzNjNzg3Y2ZkYWI2NTVkMzdjMTY2MTM1Y2Y4ZDcxZDcwYjRlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3ZhbHVlLXVu
ZGVmaW5lZC5qcwpAQCAtMCwwICsxLDY2IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Cisg
ICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24o
IlRlc3QgSW5kZXhlZERCIHVuZGVmaW5lZCBhcyByZWNvcmQgdmFsdWUiKTsKKworZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxm
LmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2Ui
OworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlw
dGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVu
U3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lv
bignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9iamVj
dFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKK3sKKyAgICBkZWxl
dGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJv
YmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nKTsiKTsKKyAgICByZXN1bHQg
PSBldmFsQW5kTG9nKCJyZXN1bHQgPSBvYmplY3RTdG9yZS5hZGQodW5kZWZpbmVkLCBJbmZpbml0
eSk7Iik7CisgICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICByZXN1bHQub25zdWNjZXNzID0gZ2V0VmFsdWU7Cit9CisKK2Z1bmN0aW9uIGdldFZhbHVlKCkK
K3sKKyAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJyZXN1bHQgPSBvYmplY3RTdG9yZS5nZXQoSW5m
aW5pdHkpOyIpOworICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGNoZWNrVmFsdWU7Cit9CisKK2Z1bmN0aW9uIGNoZWNr
VmFsdWUoKQoreworICAgIHZhbHVlID0gZXZhbEFuZExvZygidmFsdWUgPSBldmVudC50YXJnZXQu
cmVzdWx0OyIpOworICAgIHNob3VsZEJlKCJ2YWx1ZSIsICJ1bmRlZmluZWQiKTsKKyAgICByZXN1
bHQgPSBldmFsQW5kTG9nKCJyZXN1bHQgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7Cisg
ICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXN1bHQu
b25zdWNjZXNzID0gY2hlY2tDdXJzb3I7Cit9CisKK2Z1bmN0aW9uIGNoZWNrQ3Vyc29yKCkKK3sK
KyAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIp
OworICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAiSW5m
aW5pdHkiKTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZSIsICJ1bmRlZmluZWQiKTsK
KyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0RmFpbGVkKCJjdXJzb3IgaXMgbnVsbCIpOworICAg
IH0KKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy92YWx1ZXMtb2RkLXR5cGVzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL3ZhbHVlcy1vZGQtdHlwZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2FlMTE1YmNkZWIwYmY2
ZmYyNjVkOTFhYTk5NDRlNTY4YjU2ZjRkNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy92YWx1ZXMtb2RkLXR5cGVzLmpzCkBAIC0wLDAg
KzEsNzggQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcu
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNj
cmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgb2Rk
IHZhbHVlIGRhdGF0eXBlcyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5k
b3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAg
ZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2
YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGFkZEtleTE7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGFkZEtleTEoKQoreworICAgIGRlbGV0ZUFsbE9iamVj
dFN0b3JlcyhkYik7CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9i
amVjdFN0b3JlKCdmb28nLCB7YXV0b0luY3JlbWVudDogdHJ1ZX0pOyIpOworCisgICAgY2FudmFz
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7CisgICAgY29udGV4dCA9IGNhbnZh
cy5nZXRDb250ZXh0KCcyZCcpOworICAgIGltYWdlZGF0YSA9IGNvbnRleHQuY3JlYXRlSW1hZ2VE
YXRhKDEsIDEpOworICAgIHZhbGlkVHlwZXMgPSBbeyBkZXNjcmlwdGlvbjogJ3JlZ2V4cCcsICAg
IHZhbHVlOiBuZXcgUmVnRXhwKCdcXFxcJykgfSwKKyAgICAgICAgICAgICAgICAgIHsgZGVzY3Jp
cHRpb246ICdkYXRlJywgICAgICB2YWx1ZTogbmV3IERhdGUoMCkgfSwKKyAgICAgICAgICAgICAg
ICAgIHsgZGVzY3JpcHRpb246ICdvYmplY3QnLCAgICB2YWx1ZTogbmV3IE9iamVjdCgpIH0sCisg
ICAgICAgICAgICAgICAgICB7IGRlc2NyaXB0aW9uOiAnaW1hZ2VkYXRhJywgdmFsdWU6IGltYWdl
ZGF0YSB9LAorICAgIF07CisgICAgbmV4dFRvQWRkID0gMDsKKyAgICBhZGREYXRhKCk7Cit9CisK
K2Z1bmN0aW9uIGFkZERhdGEoKQoreworICAgIGRlYnVnKCJhZGRpbmcgIiArIHZhbGlkVHlwZXNb
bmV4dFRvQWRkXS5kZXNjcmlwdGlvbiArICIgdmFsdWUiKTsKKyAgICByZXN1bHQgPSBldmFsQW5k
TG9nKCJvYmplY3RTdG9yZS5hZGQodmFsaWRUeXBlc1tuZXh0VG9BZGRdLnZhbHVlKSIpOworICAg
IHJlc3VsdC5vbnN1Y2Nlc3MgPSArK25leHRUb0FkZCA8IHZhbGlkVHlwZXMubGVuZ3RoID8gYWRk
RGF0YSA6IG9wZW5BQ3Vyc29yOworICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5BQ3Vyc29yKCkKK3sKKyAgICB2YWx1ZUluZGV4
ID0gMDsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLm9w
ZW5DdXJzb3IoKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgeworICAgICAg
ICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwor
ICAgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVl
LnRvU3RyaW5nKCkiLCAidmFsaWRUeXBlc1t2YWx1ZUluZGV4XS52YWx1ZS50b1N0cmluZygpIik7
CisgICAgICAgICAgICBpZiAodmFsdWVJbmRleCA9PSAxKSB7CisgICAgICAgICAgICAgICAgc2hv
dWxkQmUoImN1cnNvci52YWx1ZS50b1VUQ1N0cmluZygpIiwgIidUaHUsIDAxIEphbiAxOTcwIDAw
OjAwOjAwIEdNVCciKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh2YWx1ZUluZGV4
ID09IDMpIHsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndpZHRoIiwg
IjEiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250
aW51ZSgpOyIpOworICAgICAgICAgICAgZXZhbEFuZExvZygidmFsdWVJbmRleCsrOyIpOworICAg
ICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdmVyc2lv
bi1jaGFuZ2UtYWJvcnQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvdmVyc2lvbi1jaGFuZ2UtYWJvcnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGI0NDcxNzJmYmU4MGYxY2Ux
ZGUyODNhMzVmZGNkYzE4MDQ1MGQ5MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy92ZXJzaW9uLWNoYW5nZS1hYm9ydC5qcwpAQCAtMCww
ICsxLDg5IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygn
Li4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRT
Y3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIkVuc3VyZSB0aGF0IGFib3J0
ZWQgVkVSU0lPTl9DSEFOR0UgdHJhbnNhY3Rpb25zIGFyZSBjb21wbGV0ZWx5IHJvbGxlZCBiYWNr
Iik7CisKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAg
ICBvcGVuREJDb25uZWN0aW9uKCk7Cit9CisKK2Z1bmN0aW9uIG9wZW5EQkNvbm5lY3Rpb24oKQor
eworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndmVyc2lvbi1jaGFu
Z2UtYWJvcnQnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IG9wZW5TdWNjZXNzKCkKK3sKKyAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50
YXJnZXQucmVzdWx0Iik7CisgICAgZGVidWcoIiIpOworCisgICAgZXZhbEFuZExvZygidmNyZXEg
PSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHZjcmVxLm9uc3VjY2VzcyA9IGlu
U2V0VmVyc2lvbjE7CisgICAgdmNyZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworfQorCitmdW5jdGlvbiBpblNldFZlcnNpb24xKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lv
bjEoKSBjYWxsYmFjayIpOworICAgIHNob3VsZEJlVHJ1ZSgidmNyZXEucmVzdWx0IGluc3RhbmNl
b2YgSURCVHJhbnNhY3Rpb24iKTsKKyAgICB0cmFucyA9IHZjcmVxLnJlc3VsdDsKKyAgICB0cmFu
cy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSBzZXRWZXJz
aW9uMUNvbXBsZXRlOworCisgICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RT
dG9yZSgnc3RvcmUxJykiKTsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbjFDb21wbGV0ZSgpCit7
CisgICAgZGVidWcoInNldFZlcnNpb24xIGNvbXBsZXRlIik7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJkYi52ZXJzaW9uIiwgInZlcnNpb24gMSIpOworICAgIGRlYnVnKCIiKTsKKworICAg
IGV2YWxBbmRMb2coInZjcmVxID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAyJykiKTsKKyAgICB2
Y3JlcS5vbnN1Y2Nlc3MgPSBpblNldFZlcnNpb24yOworICAgIHZjcmVxLm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gaW5TZXRWZXJzaW9uMigpCit7Cisg
ICAgZGVidWcoInNldFZlcnNpb24yKCkgY2FsbGJhY2siKTsKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImRiLnZlcnNpb24iLCAidmVyc2lvbiAyIik7CisgICAgc2hvdWxkQmVUcnVlKCJ2Y3Jl
cS5yZXN1bHQgaW5zdGFuY2VvZiBJREJUcmFuc2FjdGlvbiIpOworICAgIHRyYW5zID0gdmNyZXEu
cmVzdWx0OworICAgIHRyYW5zLm9uYWJvcnQgPSBzZXRWZXJzaW9uMkFib3J0OworICAgIHRyYW5z
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRl
ID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7CisKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9
IGRiLmRlbGV0ZU9iamVjdFN0b3JlKCdzdG9yZTEnKSIpOworICAgIGV2YWxBbmRMb2coInN0b3Jl
ID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlMicpIik7CisKKyAgICAvLyBFbnN1cmUgdGhl
IHRlc3QgaGFybmVzcyBlcnJvciBoYW5kbGVyIGlzIG5vdCBpbnZva2VkLgorICAgIHNlbGYub3Jp
Z2luYWxXaW5kb3dPbkVycm9yID0gc2VsZi5vbmVycm9yOworICAgIHNlbGYub25lcnJvciA9IG51
bGw7CisKKyAgICBkZWJ1ZygicmFpc2luZyBleGNlcHRpb24iKTsKKyAgICB0aHJvdyBuZXcgRXJy
b3IoIlRoaXMgc2hvdWxkICpOT1QqIGJlIGNhdWdodCEiKTsKK30KKworZnVuY3Rpb24gc2V0VmVy
c2lvbjJBYm9ydCgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJzZXRWZXJzaW9uMkFi
b3J0KCkgY2FsbGJhY2siKTsKKworICAgIC8vIFJlc3RvcmUgdGVzdCBoYXJuZXNzIGVycm9yIGhh
bmRsZXIuCisgICAgc2VsZi5vbmVycm9yID0gc2VsZi5vcmlnaW5hbFdpbmRvd09uRXJyb3I7CisK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLnZlcnNpb24iLCAidmVyc2lvbiAxIik7Cisg
ICAgc2hvdWxkQmVUcnVlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCdzdG9yZTEnKSIp
OworICAgIHNob3VsZEJlRmFsc2UoImRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJ3N0b3Jl
MicpIik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy92ZXJzaW9uLWNoYW5nZS1leGNsdXNpdmUuanMgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdmVyc2lvbi1jaGFuZ2UtZXhjbHVzaXZlLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjgxYWE1OGE4ODMyOTVlNDcxMjdkNmE5MzE2NGJiY2VkODM5YjA5MWEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdmVyc2lv
bi1jaGFuZ2UtZXhjbHVzaXZlLmpzCkBAIC0wLDAgKzEsNzAgQEAKK2lmICh0aGlzLmltcG9ydFNj
cmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitk
ZXNjcmlwdGlvbigiRW5zdXJlIFZFUlNJT05fQ0hBTkdFIHRyYW5zYWN0aW9uIGRvZXNuJ3QgcnVu
IGNvbmN1cnJlbnRseSB3aXRoIG90aGVyIHRyYW5zYWN0aW9ucyIpOworCitmdW5jdGlvbiB0ZXN0
KCkgeworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgb3BlbkRCQ29ubmVjdGlvbigp
OworfQorCitmdW5jdGlvbiBvcGVuREJDb25uZWN0aW9uKCkKK3sKKyAgICBldmFsQW5kTG9nKCJz
ZWxmLnN0YXRlID0gJ3N0YXJ0aW5nJyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRl
eGVkREIub3BlbigndmVyc2lvbi1jaGFuZ2UtZXhjbHVzaXZlJykiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgc2VsZi5k
YiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgZGVidWco
ImNhbGxpbmcgc2V0VmVyc2lvbigpIC0gY2FsbGJhY2sgc2hvdWxkIHJ1biBpbW1lZGlhdGVseSIp
OworICAgIHZhciB2ZXJzaW9uQ2hhbmdlUmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNp
b24oJ3ZlcnNpb24gMScpIik7CisgICAgdmVyc2lvbkNoYW5nZVJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGluU2V0VmVyc2lvbjsKKworICAgIC8vIGFuZCBjb25jdXJyZW50bHkuLi4KKworICAgIGRl
YnVnKCJjYWxsaW5nIG9wZW4oKSAtIGNhbGxiYWNrIHNob3VsZCB3YWl0IHVudGlsIFZFUlNJT05f
Q0hBTkdFIHRyYW5zYWN0aW9uIGlzIGNvbXBsZXRlIik7CisgICAgdmFyIG9wZW5SZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3ZlcnNpb24tY2hhbmdlLWV4Y2x1c2l2ZScpIik7
CisgICAgb3BlblJlcXVlc3Qub25zdWNjZXNzID0gb3BlbkFnYWluU3VjY2VzczsKKyAgICBvcGVu
UmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IGluU2V0VmVyc2lvbigpCit7CisgICAgZGVidWcoInNldFZlcnNpb24oKSBjYWxsYmFjayIpOwor
ICAgIGRlYnVnKCJzdGFydGluZyB3b3JrIGluIFZFUlNJT05fQ0hBTkdFIHRyYW5zYWN0aW9uIik7
CisgICAgZXZhbEFuZExvZygic2VsZi5zdGF0ZSA9ICdWRVJTSU9OX0NIQU5HRSBzdGFydGVkJyIp
OworCisgICAgc2VsZi5zdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ3Rlc3Qtc3RvcmUnKSIpOworICAgIHNlbGYuY291bnQgPSAwOworICAgIGRvX2FzeW5j
X3B1dHMoKTsKKworICAgIGZ1bmN0aW9uIGRvX2FzeW5jX3B1dHMoKSB7CisgICAgICAgIHZhciBy
ZXEgPSBldmFsQW5kTG9nKCJzdG9yZS5wdXQoIiArIGNvdW50ICsgIiwgIiArIGNvdW50ICsgIiki
KTsKKyAgICAgICAgcmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAg
ICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgICAgICBkZWJ1ZygiaW4g
cHV0J3Mgb25zdWNjZXNzIik7CisgICAgICAgICAgICBpZiAoKytzZWxmLmNvdW50IDwgMTApIHsK
KyAgICAgICAgICAgICAgICBkb19hc3luY19wdXRzKCk7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGRlYnVnKCJlbmRpbmcgd29yayBpbiBWRVJTSU9OX0NIQU5HRSB0cmFu
c2FjdGlvbiIpOworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coInNlbGYuc3RhdGUgPSAnVkVS
U0lPTl9DSEFOR0UgZmluaXNoZWQnIik7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAg
fQorfQorCitmdW5jdGlvbiBvcGVuQWdhaW5TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygib3Blbigp
IGNhbGxiYWNrIC0gdGhpcyBzaG91bGQgYXBwZWFyIGFmdGVyIFZFUlNJT05fQ0hBTkdFIHRyYW5z
YWN0aW9uIGVuZHMiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNlbGYuc3RhdGUiLCAi
VkVSU0lPTl9DSEFOR0UgZmluaXNoZWQiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVz
dCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy92ZXJzaW9uY2hhbmdlcmVxdWVzdC1hY3RpdmVk
b21vYmplY3QuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdmVy
c2lvbmNoYW5nZXJlcXVlc3QtYWN0aXZlZG9tb2JqZWN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1YWFiNDE0
YTUwMmE4MTQzYzMzYzZjYmFkMTE0NTgyNTg2OWNjZTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdmVyc2lvbmNoYW5nZXJlcXVlc3Qt
YWN0aXZlZG9tb2JqZWN0LmpzCkBAIC0wLDAgKzEsNjcgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlw
dHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNj
cmlwdGlvbigiRW5zdXJlIHRoYXQgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Qgb2JqZWN0cyBhcmUg
bm90IEdDJ2QgaWYgdGhleSBoYXZlIHBlbmRpbmcgZXZlbnRzIik7CisKK2Z1bmN0aW9uIHRlc3Qo
KSB7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBl
dmFsQW5kTG9nKCJzZWxmLmRibmFtZSA9ICd2ZXJzaW9uY2hhbmdlcmVxdWVzdC1hY3RpdmVkb21v
YmplY3QnIik7CisKKyAgICB0ZXN0RGVsZXRlRGF0YWJhc2UoKTsKK30KKworZnVuY3Rpb24gdGVz
dERlbGV0ZURhdGFiYXNlKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInRlc3REZWxl
dGVEYXRhYmFzZSgpOiIpOworICAgIC8vIE5PVEU6IGRlbGV0ZVJlcXVlc3QgaXMgbG9jYWwgdmFy
aWFibGUgc28gaXQgaXMgbm90IGNhcHR1cmVkIGluIGdsb2JhbCBzY29wZS4KKyAgICB2YXIgZGVs
ZXRlUmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShzZWxmLmRi
bmFtZSkiKTsKKyAgICBkZWxldGVSZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKKyAgICBkZWxldGVSZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9ja2VkQ2Fs
bGJhY2s7CisgICAgZGVsZXRlUmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgZGVsZXRl
U3VjY2VzcygpOyB9OworICAgIGRlbGV0ZVJlcXVlc3QgPSBudWxsOworICAgIGlmIChzZWxmLmdj
KSB7CisgICAgICAgIGV2YWxBbmRMb2coInNlbGYuZ2MoKSIpOworICAgIH0KK30KKworZnVuY3Rp
b24gZGVsZXRlU3VjY2VzcygpCit7CisgICAgdGVzdFBhc3NlZCgiZGVsZXRlRGF0YWJhc2UncyBJ
REJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5vbnN1Y2Nlc3MgZXZlbnQgZmlyZWQiKTsKKyAgICB0ZXN0
U2V0VmVyc2lvbigpOworfQorCitmdW5jdGlvbiB0ZXN0U2V0VmVyc2lvbigpCit7CisgICAgZGVi
dWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0U2V0VmVyc2lvbigpOiIpOworCisgICAgLy8gTk9URTog
VGhpcyBpcyBqdXN0IGFuIElEQlJlcXVlc3QsIGl0IGNhbiBiZSBnbG9iYWwuCisgICAgZXZhbEFu
ZExvZygib3BlblJlcXVlc3QgPSBpbmRleGVkREIub3BlbihzZWxmLmRibmFtZSkiKTsKKyAgICBv
cGVuUmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgb3BlblJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICBldmFsQW5kTG9nKCJkYiA9
IG9wZW5SZXF1ZXN0LnJlc3VsdCIpOworCisgICAgICAgIC8vIE5PVEU6IHZlcnNpb25SZXF1ZXN0
IGlzIGxvY2FsIHZhcmlhYmxlIHNvIGl0IGlzIG5vdCBjYXB0dXJlZCBpbiBnbG9iYWwgc2NvcGUu
CisgICAgICAgIHZhciB2ZXJzaW9uUmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24o
JzEnKSIpOworICAgICAgICB2ZXJzaW9uUmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7CisgICAgICAgIHZlcnNpb25SZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRC
bG9ja2VkQ2FsbGJhY2s7CisgICAgICAgIHZlcnNpb25SZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0
aW9uKCkgeyB2ZXJzaW9uU3VjY2VzcygpOyB9OworICAgICAgICB2ZXJzaW9uUmVxdWVzdCA9IG51
bGw7CisgICAgICAgIGlmIChzZWxmLmdjKSB7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJzZWxm
LmdjKCkiKTsKKyAgICAgICAgfQorICAgIH07Cit9CisKK2Z1bmN0aW9uIHZlcnNpb25TdWNjZXNz
KCkKK3sKKyAgICB0ZXN0UGFzc2VkKCJzZXRWZXJzaW9uJ3MgSURCVmVyc2lvbkNoYW5nZVJlcXVl
c3Qub25zdWNjZXNzIGV2ZW50IGZpcmVkIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rl
c3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRWZXJzaW9uLW51bGwuaHRtbCBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3NldFZlcnNpb24tbnVsbC5odG1sCmluZGV4IGNiMmJjNmVlMWFlZDQ2
OGM3ZDk3MjRhYmE5N2E4ZDkyYmZjMDI0MmMuLmRmM2YzZDA4NzAyZGM1OTU1YjA5YjJlMTJhYjY5
ZGFjYzRiMGM2MTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Nl
dFZlcnNpb24tbnVsbC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Nl
dFZlcnNpb24tbnVsbC5odG1sCkBAIC0xLDQ0ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4gCi08
aHRtbD4gCis8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4gCi08c2NyaXB0IHNyYz0icmVzb3VyY2VzL3No
YXJlZC5qcyI+PC9zY3JpcHQ+IAotPC9oZWFkPiAKLTxib2R5PiAKLTxzY3JpcHQ+IAotIAotZGVz
Y3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIHdpdGggbnVsbCB2ZXJzaW9uIHN0cmluZyIpOwotIAot
ZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAKLSAgICBu
YW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0
IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFt
ZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLSAKLWZ1
bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdCIpOwotIAotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJz
aW9uKG51bGwpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdFNldFZlcnNpb247Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0
aW9uIHBvc3RTZXRWZXJzaW9uKCkKLXsKLSAgICBzaG91bGRCZSgiZGIudmVyc2lvbiIsICInbnVs
bCciKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLSAKLSAKLXRlc3QoKTsKLSAKLTwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zZXRWZXJzaW9uLW51bGwuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+IAorPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0VmVyc2lvbi11bmRlZmluZWQuaHRt
bCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldFZlcnNpb24tdW5kZWZpbmVkLmh0
bWwKaW5kZXggYmVkYzFlMDViNTQxMDFkYmEzZjgxODc2Yzc0Zjg0Nzc3Yjg5ODc3YS4uYWU2MGYx
YzVlOTM4NDdhMDRhMjM3Y2QzZmIzMjkyOWNmZGY1NWM4ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0VmVyc2lvbi11bmRlZmluZWQuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRWZXJzaW9uLXVuZGVmaW5lZC5odG1sCkBAIC0x
LDM3ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4gCi08aHRtbD4gCis8aHRtbD4KIDxoZWFkPgot
PHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4gCi08c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+IAotPC9o
ZWFkPiAKLTxib2R5PiAKLTxzY3JpcHQ+IAotIAotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERC
IHZlcnNpb24gc3RyaW5nIGlzIHJlcXVpcmVkIik7Ci0gCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAg
ICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotIAotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBh
dGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotIAotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQot
ewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gCi0g
ICAgc2hvdWxkVGhyb3coImRiLnNldFZlcnNpb24oKTsiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsK
LX0KLSAKLSAKLXRlc3QoKTsKLSAKLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9zZXRWZXJzaW9uLXVuZGVmaW5lZC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwv
Ym9keT4gCis8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9ibG9ja2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9ibG9ja2VkLmh0bWwKaW5kZXggYzI0NGQ0MzJjZmJkNDkx
NDZkYWMxMWEwYzMzMWViMDU5YTczNGU1Mi4uNDA4ZTZmYTI5N2JiN2NkMjg3ODViYjA2NTJiYjk2
MmFkOWVjMDkwNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0
X3ZlcnNpb25fYmxvY2tlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3NldF92ZXJzaW9uX2Jsb2NrZWQuaHRtbApAQCAtMSw2NCArMSwxMCBAQAotPGh0bWw+DQotPGhl
YWQ+DQotPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4NCi08c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+
DQotPC9oZWFkPg0KLTxib2R5Pg0KLTxzY3JpcHQ+DQotDQotZGVzY3JpcHRpb24oIkFuIG9wZW4g
Y29ubmVjdGlvbiBibG9ja3MgYSBzZXBhcmF0ZSBjb25uZWN0aW9uJ3Mgc2V0VmVyc2lvbiBjYWxs
Iik7DQotDQotY29ubmVjdGlvbnMgPSBbXQ0KLWZ1bmN0aW9uIHRlc3QoKQ0KLXsNCi0gICAgcmVt
b3ZlVmVuZG9yUHJlZml4ZXMoKTsNCi0gICAgb3BlbkRCQ29ubmVjdGlvbigpOw0KLX0NCi0NCi1m
dW5jdGlvbiBvcGVuREJDb25uZWN0aW9uKCkNCi17DQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJpbmRleGVkREIub3Blbignc2V0LXZlcnNpb24tYmxvY2tlZCcpIik7DQotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7DQotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOw0KLX0NCi0NCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpDQotew0KLSAg
ICBjb25uZWN0aW9uID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsNCi0gICAgY29ubmVjdGlvbnMucHVz
aChjb25uZWN0aW9uKTsNCi0gICAgb3JpZ2luYWxfdmVyc2lvbiA9IGNvbm5lY3Rpb24udmVyc2lv
bjsNCi0gICAgaWYgKGNvbm5lY3Rpb25zLmxlbmd0aCA8IDIpDQotICAgICAgICBvcGVuREJDb25u
ZWN0aW9uKCk7DQotICAgIGVsc2Ugew0KLSAgICAgICAgdmFyIHZlcnNpb25DaGFuZ2VSZXF1ZXN0
ID0gZXZhbEFuZExvZygiY29ubmVjdGlvbnNbMF0uc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsN
Ci0gICAgICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsNCi0gICAgICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uc3VjY2VzcyA9IGluU2V0
VmVyc2lvbjsNCi0gICAgICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uYmxvY2tlZCA9IGJsb2Nr
ZWQ7DQotICAgIH0NCi19DQotDQotc2Vlbl9ibG9ja2VkX2V2ZW50ID0gZmFsc2U7DQotZnVuY3Rp
b24gYmxvY2tlZCgpDQotew0KLSAgICBldmFsQW5kTG9nKCJzZWVuX2Jsb2NrZWRfZXZlbnQgPSB0
cnVlIik7DQotICAgIGJsb2NrZWRfZXZlbnQgPSBldmVudDsNCi0gICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJibG9ja2VkX2V2ZW50LnZlcnNpb24iLCAidmVyc2lvbiAxIik7DQotICAgIHNob3Vs
ZEV2YWx1YXRlVG8oImJsb2NrZWRfZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUiLCAxKTsNCi0gICAg
ZXZhbEFuZExvZygiY29ubmVjdGlvbnNbMV0uY2xvc2UoKSIpOw0KLX0NCi0NCi1mdW5jdGlvbiBp
blNldFZlcnNpb24oKQ0KLXsNCi0gICAgZGVidWcoImluIHNldFZlcnNpb24ub25zdWNjZXNzIik7
DQotICAgIHNob3VsZEJlVHJ1ZSgic2Vlbl9ibG9ja2VkX2V2ZW50Iik7DQotICAgIGRlbGV0ZUFs
bE9iamVjdFN0b3Jlcyhjb25uZWN0aW9uc1swXSk7DQotICAgIGZpbmlzaEpTVGVzdCgpOw0KLX0N
Ci0NCi0NCi10ZXN0KCk7DQotDQotPC9zY3JpcHQ+DQotPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+DQotPC9ib2R5Pg0KLTwvaHRt
bD4NCis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVk
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9z
ZXRfdmVyc2lvbl9ibG9ja2VkLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNpb25f
cXVldWUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJzaW9uX3F1
ZXVlLmh0bWwKaW5kZXggNGVhYmVjNmE5NWU4MGQ2OWQyODBhN2NkOTVkYmMyMTIyZjg4MTc0Ni4u
YzE2Y2RkNzFjMDdiYzUyMDYwNzhhMzEzNGU5MDgxMWJkNzJkY2VmMSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNpb25fcXVldWUuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9xdWV1ZS5odG1sCkBAIC0x
LDEzMSArMSwxMCBAQAotPGh0bWw+DQotPGhlYWQ+DQotPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4NCi08c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+DQotPC9oZWFkPg0KLTxib2R5Pg0KLTxzY3JpcHQ+
DQotDQotZGVzY3JpcHRpb24oIjQgb3BlbiBjb25uZWN0aW9ucyB0cnkgdG8gc2V0VmVyc2lvbiBh
dCB0aGUgc2FtZSB0aW1lLiAgMyBjb25uZWN0aW9ucyBldmVudHVhbGx5IGNsb3NlLCBhbGxvd2lu
ZyAxIHNldFZlcnNpb24gY2FsbCB0byBwcm9jZWVkLiIpOw0KLQ0KLWNvbm5lY3Rpb25zID0gW10N
Ci1mdW5jdGlvbiB0ZXN0KCkNCi17DQotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7DQotDQot
ICAgIG9wZW5EQkNvbm5lY3Rpb24oKTsNCi19DQotDQotZnVuY3Rpb24gb3BlbkRCQ29ubmVjdGlv
bigpDQotew0KLSAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbignc2V0LXZl
cnNpb24tcXVldWUnKSIpOw0KLSAgICByZXN1bHQub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7DQot
ICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQotfQ0KLQ0KLWZ1
bmN0aW9uIG9wZW5TdWNjZXNzKCkNCi17DQotICAgIGNvbm5lY3Rpb24gPSBldmVudC50YXJnZXQu
cmVzdWx0Ow0KLSAgICBjb25uZWN0aW9uLm9udmVyc2lvbmNoYW5nZSA9IGdlbmVyYXRlVmVyc2lv
bkNoYW5nZUhhbmRsZXIoKTsNCi0gICAgY29ubmVjdGlvbnMucHVzaChjb25uZWN0aW9uKTsNCi0g
ICAgaWYgKGNvbm5lY3Rpb25zLmxlbmd0aCA8IDQpDQotICAgICAgICBvcGVuREJDb25uZWN0aW9u
KCk7DQotICAgIGVsc2Ugew0KLSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImNvbm5lY3Rp
b25zWzBdLnNldFZlcnNpb24oJ3ZlcnNpb24gMCcpIik7DQotICAgICAgICByZXF1ZXN0Lm9uZXJy
b3IgPSBmdW5jdGlvbihldmVudCl7IGNvbm5lY3Rpb25FcnJvcihldmVudCwgMCkgfTsNCi0gICAg
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsNCi0gICAg
ICAgIHJlcXVlc3Qub25ibG9ja2VkID0gYmxvY2tlZDA7DQotICAgICAgICByZXF1ZXN0MSA9IGV2
YWxBbmRMb2coImNvbm5lY3Rpb25zWzFdLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7DQotICAg
ICAgICByZXF1ZXN0MS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQotICAgICAg
ICByZXF1ZXN0MS5vbnN1Y2Nlc3MgPSBpblNldFZlcnNpb24xOw0KLSAgICAgICAgcmVxdWVzdDEu
b25ibG9ja2VkID0gYmxvY2tlZDE7DQotICAgICAgICByZXF1ZXN0MiA9IGV2YWxBbmRMb2coImNv
bm5lY3Rpb25zWzJdLnNldFZlcnNpb24oJ3ZlcnNpb24gMicpIik7DQotICAgICAgICByZXF1ZXN0
Mi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpeyBjb25uZWN0aW9uRXJyb3IoZXZlbnQsIDIpIH07
DQotICAgICAgICByZXF1ZXN0Mi5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNr
Ow0KLSAgICAgICAgcmVxdWVzdDIub25ibG9ja2VkID0gYmxvY2tlZDI7DQotICAgICAgICByZXF1
ZXN0MyA9IGV2YWxBbmRMb2coImNvbm5lY3Rpb25zWzNdLnNldFZlcnNpb24oJ3ZlcnNpb24gMycp
Iik7DQotICAgICAgICByZXF1ZXN0My5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpeyBjb25uZWN0
aW9uRXJyb3IoZXZlbnQsIDMpIH07DQotICAgICAgICByZXF1ZXN0My5vbnN1Y2Nlc3MgPSB1bmV4
cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOw0KLSAgICAgICAgcmVxdWVzdDMub25ibG9ja2VkID0gYmxv
Y2tlZDM7DQotICAgICAgICBkZWJ1ZygiIik7DQotICAgIH0NCi19DQotDQotZnVuY3Rpb24gZ2Vu
ZXJhdGVWZXJzaW9uQ2hhbmdlSGFuZGxlcigpDQotew0KLSAgICB2YXIgY29ubmVjdGlvbk51bSA9
IGNvbm5lY3Rpb25zLmxlbmd0aDsNCi0gICAgcmV0dXJuIGZ1bmN0aW9uKGV2ZW50KQ0KLSAgICB7
DQotICAgICAgICBzaG91bGRCZVRydWUoImV2ZW50LnZlcnNpb24ubGVuZ3RoID4gMCIpOw0KLSAg
ICAgICAgZGVidWcoImNvbm5lY3Rpb25bIiArIGNvbm5lY3Rpb25OdW0gKyAiXSByZWNlaXZlZCB2
ZXJzaW9uQ2hhbmdlRXZlbnQ6ICIgKyBldmVudC52ZXJzaW9uKTsNCi0gICAgfQ0KLX0NCi0NCi1i
bG9ja2VkMGZpcmVkID0gZmFsc2U7DQotYmxvY2tlZDJmaXJlZCA9IGZhbHNlOw0KLWZ1bmN0aW9u
IGJsb2NrZWQwKGV2ZW50KQ0KLXsNCi0gICAgZGVidWcoIiIpOw0KLSAgICB0ZXN0UGFzc2VkKCJj
b25uZWN0aW9uWzBdIGdvdCBibG9ja2VkIGV2ZW50Iik7DQotICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygiZXZlbnQudmVyc2lvbiIsICJ2ZXJzaW9uIDAiKTsNCi0gICAgZGVidWcoIkNsb3NlIHRo
ZSBjb25uZWN0aW9uIHRoYXQgcmVjZWl2ZWQgdGhlIGJsb2NrIGV2ZW50OiIpOw0KLSAgICBldmFs
QW5kTG9nKCJjb25uZWN0aW9uc1swXS5jbG9zZSgpIik7DQotICAgIGRlYnVnKCJDbG9zZSBhbm90
aGVyIGNvbm5lY3Rpb24gYXMgd2VsbCwgdG8gdGVzdCA0LjcuNC1ub3RlOiIpOw0KLSAgICBldmFs
QW5kTG9nKCJjb25uZWN0aW9uc1szXS5jbG9zZSgpIik7DQotICAgIGV2YWxBbmRMb2coImJsb2Nr
ZWQwZmlyZWQgPSB0cnVlIik7DQotICAgIGRlYnVnKCIiKTsNCi19DQotDQotZnVuY3Rpb24gYmxv
Y2tlZDEoZXZlbnQpDQotew0KLSAgICBkZWJ1ZygiIikNCi0gICAgdGVzdFBhc3NlZCgiY29ubmVj
dGlvblsxXSBnb3QgYmxvY2tlZCBldmVudCIpOw0KLSAgICBkZWJ1ZygiRW5zdXJlIHRoYXQgdGhp
cyBibG9ja2VkIGV2ZW50IGlzIGluIG9yZGVyOiIpOw0KLSAgICBzaG91bGRCZVRydWUoImJsb2Nr
ZWQwZmlyZWQiKTsNCi0gICAgc2hvdWxkQmVGYWxzZSgiYmxvY2tlZDJmaXJlZCIpOw0KLSAgICBk
ZWJ1ZygiIikNCi19DQotDQotZnVuY3Rpb24gYmxvY2tlZDIoZXZlbnQpDQotew0KLSAgICBkZWJ1
ZygiIikNCi0gICAgdGVzdFBhc3NlZCgiY29ubmVjdGlvblsyXSBnb3QgYmxvY2tlZCBldmVudCIp
Ow0KLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnZlcnNpb24iLCAidmVyc2lvbiAy
Iik7DQotICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb25zWzJdLmNsb3NlKCkiKTsNCi0gICAgZXZh
bEFuZExvZygiYmxvY2tlZDJmaXJlZCA9IHRydWUiKTsNCi0gICAgZGVidWcoIiIpDQotfQ0KLQ0K
LWZ1bmN0aW9uIGJsb2NrZWQzKGV2ZW50KQ0KLXsNCi0gICAgZGVidWcoIiIpDQotICAgIHRlc3RQ
YXNzZWQoImNvbm5lY3Rpb25bM10gZ290IGJsb2NrZWQgZXZlbnQiKTsNCi0gICAgZGVidWcoIk5v
dGU6IFRoaXMgbWVhbnMgdGhhdCBhIGNvbm5lY3Rpb24gY2FuIHJlY2VpdmUgYSBibG9ja2VkIGV2
ZW50IGFmdGVyIGl0cyBjbG9zZSgpIG1ldGhvZCBoYXMgYmVlbiBjYWxsZWQuICBTcGVjIGlzIHNp
bGVudCBvbiB0aGUgaXNzdWUgYW5kIHRoaXMgaXMgZWFzaWVzdCB0byBpbXBsZW1lbnQuIik7DQot
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudmVyc2lvbiIsICJ2ZXJzaW9uIDMiKTsN
Ci19DQotDQotZnVuY3Rpb24gY29ubmVjdGlvbkVycm9yKGV2ZW50LCBjb25uZWN0aW9uSWQpDQot
ew0KLSAgICBkZWJ1ZygiIikNCi0gICAgdGVzdFBhc3NlZCgiY29ubmVjdGlvblsiICsgY29ubmVj
dGlvbklkICsgIl0gZ290IGVycm9yIGV2ZW50Iik7DQotICAgIHNob3VsZEJlKCJldmVudC50YXJn
ZXQuZXJyb3JDb2RlIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkFCT1JUX0VSUiIpDQotICAgIGlm
ICgnd2Via2l0RXJyb3JNZXNzYWdlJyBpbiBldmVudC50YXJnZXQpIHsNCi0gICAgICAgIHNob3Vs
ZEJlKCJldmVudC50YXJnZXQud2Via2l0RXJyb3JNZXNzYWdlLmxlbmd0aCA+IDAiLCAidHJ1ZSIp
Ow0KLSAgICAgICAgZGVidWcoZXZlbnQudGFyZ2V0LndlYmtpdEVycm9yTWVzc2FnZSk7DQotICAg
IH0NCi19DQotDQotZnVuY3Rpb24gaW5TZXRWZXJzaW9uMShldmVudCkNCi17DQotICAgIGRlYnVn
KCIiKQ0KLSAgICB0ZXN0UGFzc2VkKCJjb25uZWN0aW9uWzFdIGdvdCBpbnRvIFNldFZlcnNpb24i
KTsNCi0gICAgZmluaXNoSlNUZXN0KCk7DQotfQ0KLQ0KLQ0KLXRlc3QoKTsNCi0NCi08L3Njcmlw
dD4NCi08c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4NCi08L2JvZHk+DQotPC9odG1sPg0KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NldF92ZXJzaW9uX3F1ZXVlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQuaHRtbCBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFib3J0Lmh0bWwKaW5kZXggMzQxMGY0NjNhMjAzMTg5
NjUzM2I0YTQ2OTljNjdhZDM1ODE1N2VkZC4uMWJhY2I1ZmI3OGNhNTIzMjM0ZGZlZGZkY2IzY2Iy
YTM3MGU5YmMzZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJh
bnNhY3Rpb24tYWJvcnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90
cmFuc2FjdGlvbi1hYm9ydC5odG1sCkBAIC00LDk2ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQot
ZGVzY3JpcHRpb24oIlRlc3QgdHJhbnNhY3Rpb24gYWJvcnRzIHNlbmQgdGhlIHByb3BlciBvbmFi
b3J0IG1lc3NhZ2VzLi4iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9y
UHJlZml4ZXMoKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbign
bmFtZScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uOwotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRW
ZXJzaW9uKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJz
aW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4aXN0aW5nOwotICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBk
ZWxldGVFeGlzdGluZygpCi17Ci0gICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7Ci0g
ICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIp
OwotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0
ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgZXZhbEFuZExvZygidHJhbnMub25jb21w
bGV0ZSA9IHN0YXJ0VGVzdCIpOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQot
ICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3Rv
cmVOYW1lJywgbnVsbCkiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHt4
OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzdGFydFRlc3QoKQotewotICAg
IHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSdd
LCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9u
YWJvcnQgPSB0cmFuc2FjdGlvbkFib3J0ZWQiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNv
bXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2siKTsKLSAgICBzdG9yZSA9IGV2YWxB
bmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlMicsIHk6ICd6enoyJ30sICdr
ZXkyJykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmaXJzdEFkZDsKLSAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlMycsIHk6ICd6enozJ30sICdrZXkzJykiKTsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSBzZWNvbmRBZGQ7Ci0gICAgdHJhbnMuYWJvcnQoKTsKLQotICAg
IGZpcnN0RXJyb3IgPSBmYWxzZTsKLSAgICBzZWNvbmRFcnJvciA9IGZhbHNlOwotICAgIGFib3J0
RmlyZWQgPSBmYWxzZTsKLX0KLQotZnVuY3Rpb24gZmlyc3RBZGQoKQotewotICAgIHNob3VsZEJl
KCJldmVudC50YXJnZXQuZXJyb3JDb2RlIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkFCT1JUX0VS
UiIpOwotICAgIHNob3VsZEJlRmFsc2UoImZpcnN0RXJyb3IiKTsKLSAgICBzaG91bGRCZUZhbHNl
KCJzZWNvbmRFcnJvciIpOwotICAgIHNob3VsZEJlRmFsc2UoImFib3J0RmlyZWQiKTsKLSAgICBm
aXJzdEVycm9yID0gdHJ1ZTsKLQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmFk
ZCh7eDogJ3ZhbHVlNCcsIHk6ICd6eno0J30sICdrZXk0JykiLCAiSURCRGF0YWJhc2VFeGNlcHRp
b24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7Ci19Ci0KLWZ1bmN0aW9uIHNlY29uZEFkZCgp
Ci17Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5lcnJvckNvZGUiLCAiSURCRGF0YWJhc2VF
eGNlcHRpb24uQUJPUlRfRVJSIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJmaXJzdEVycm9yIik7Ci0g
ICAgc2hvdWxkQmVGYWxzZSgic2Vjb25kRXJyb3IiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJhYm9y
dEZpcmVkIik7Ci0gICAgc2Vjb25kRXJyb3IgPSB0cnVlOwotfQotCi1mdW5jdGlvbiB0cmFuc2Fj
dGlvbkFib3J0ZWQoKQotewotICAgIHNob3VsZEJlVHJ1ZSgiZmlyc3RFcnJvciIpOwotICAgIHNo
b3VsZEJlVHJ1ZSgic2Vjb25kRXJyb3IiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJhYm9ydEZpcmVk
Iik7Ci0gICAgYWJvcnRGaXJlZCA9IHRydWU7Ci0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJzdG9yZS5hZGQoe3g6ICd2YWx1ZTUnLCB5OiAnenp6NSd9LCAna2V5NScpIiwgIklEQkRhdGFi
YXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOwotICAgIGZpbmlzaEpTVGVz
dCgpOwotfQotCi10ZXN0KCk7Ci0KLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3RyYW5zYWN0aW9uLWFib3J0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24t
YWZ0ZXItY2xvc2UuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0
aW9uLWFmdGVyLWNsb3NlLmh0bWwKaW5kZXggZjgyN2VhNzI2NWZjYTcyNzE3YzFhZWUzMzFhMTk0
NTUxYmUxZTBkZS4uM2E0MTYxNGNjMGZjN2VhMTA2OWQ0OTg1YjdhMzEyOTNmZTkyNTI1MCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWZ0ZXIt
Y2xvc2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlv
bi1hZnRlci1jbG9zZS5odG1sCkBAIC0xLDkwICsxLDEwIEBACi08aHRtbD4NCi08aGVhZD4NCi08
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0Pg0KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4NCi08L2hl
YWQ+DQotPGJvZHk+DQotPHNjcmlwdD4NCi0NCi1kZXNjcmlwdGlvbigiVGVzdCBjbG9zaW5nIGEg
ZGF0YWJhc2UgY29ubmVjdGlvbiBpbiBJbmRleGVkREIuIik7DQotDQotZnVuY3Rpb24gdGVzdCgp
DQotew0KLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOw0KLQ0KLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0aW9uLWFmdGVyLWNsb3NlJykiKTsNCi0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsNCi0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQotfQ0KLQ0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNz
KCkNCi17DQotICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOw0KLSAgICBzZWxmLmRiID0gZXZh
bEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7DQotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsNCi0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBpblNldFZlcnNpb247DQotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOw0KLX0NCi0NCi1mdW5jdGlvbiBpblNldFZlcnNpb24oKQ0K
LXsNCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsNCi0NCi0gICAgZXZlbnQudGFyZ2V0
LnJlc3VsdC5vbmNvbXBsZXRlID0gcnVuRmlyc3RSZWd1bGFyVHJhbnNhY3Rpb247DQotICAgIGV2
ZW50LnRhcmdldC5yZXN1bHQub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOw0KLSAg
ICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3Jl
JykiKTsNCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdG9yZS5wdXQoJ3gn
LCAneScpIik7DQotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb25QdXRTdWNjZXNzOw0KLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsNCi19DQotDQotZnVuY3Rp
b24gb25QdXRTdWNjZXNzKCkNCi17DQotICAgIHRlc3RQYXNzZWQoIlB1dCBzdWNjZXNzIikNCi19
DQotDQotZnVuY3Rpb24gcnVuRmlyc3RSZWd1bGFyVHJhbnNhY3Rpb24oKQ0KLXsNCi0gICAgZGVi
dWcoInJ1bm5pbmcgZmlyc3QgdHJhbnNhY3Rpb24iKQ0KLSAgICBjdXJyZW50VHJhbnNhY3Rpb24g
PSBldmFsQW5kTG9nKCJjdXJyZW50VHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ3N0b3Jl
J10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7DQotICAgIGN1cnJlbnRUcmFuc2FjdGlv
bi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7DQotICAgIGN1cnJlbnRUcmFuc2Fj
dGlvbi5vbmNvbXBsZXRlID0gZmlyc3RUcmFuc2FjdGlvbkNvbXBsZXRlOw0KLSAgICBvYmplY3RT
dG9yZSA9IGN1cnJlbnRUcmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKTsNCi0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLnB1dCgnYScsICdiJykiKTsNCi0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQotfQ0KLQ0KLWZ1bmN0aW9u
IGZpcnN0VHJhbnNhY3Rpb25Db21wbGV0ZSgpDQotew0KLSAgICBldmFsQW5kTG9nKCJkYi5jbG9z
ZSgpIik7DQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKFsnc3Rv
cmUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24u
Tk9UX0FMTE9XRURfRVJSIik7DQotDQotICAgIGRlYnVnKCIiKQ0KLSAgICBkZWJ1ZygidmVyaWZ5
IHRoYXQgd2UgY2FuIHJlb3BlbiB0aGUgZGIgYWZ0ZXIgY2FsbGluZyBjbG9zZSIpDQotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndHJhbnNhY3Rpb24tYWZ0ZXItY2xv
c2UnKSIpOw0KLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9uU2Vjb25kT3Blbg0KLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsNCi19DQotDQotZnVuY3Rpb24g
b25TZWNvbmRPcGVuKCkgew0KLSAgICBzZWNvbmRfZGIgPSBldmFsQW5kTG9nKCJzZWNvbmRfZGIg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7DQotICAgIGN1cnJlbnRUcmFuc2FjdGlvbiA9IGV2YWxB
bmRMb2coImN1cnJlbnRUcmFuc2FjdGlvbiA9IHNlY29uZF9kYi50cmFuc2FjdGlvbihbJ3N0b3Jl
J10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7DQotICAgIHN0b3JlID0gY3VycmVudFRy
YW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpOw0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygicmVxdWVzdCA9IHN0b3JlLnB1dCgnMScsICcyJykiKTsNCi0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBvbkZpbmFsUHV0U3VjY2VzczsNCi0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7DQotICAgIGN1cnJlbnRUcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZmlu
aXNoSlNUZXN0Ow0KLSAgICBjdXJyZW50VHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRB
Ym9ydENhbGxiYWNrOw0KLX0NCi0NCi1mdW5jdGlvbiBvbkZpbmFsUHV0U3VjY2VzcygpIHsNCi0g
ICAgdGVzdFBhc3NlZCgiZmluYWwgcHV0IHN1Y2Nlc3MiKTsNCi19DQotDQotDQotdGVzdCgpOw0K
LQ0KLTwvc2NyaXB0Pg0KLTxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pg0KLTwvYm9keT4NCi08L2h0bWw+DQorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdHJhbnNhY3Rpb24tYWZ0ZXIt
Y2xvc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hbmQtb2JqZWN0c3Rv
cmUtY2FsbHMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9u
LWFuZC1vYmplY3RzdG9yZS1jYWxscy5odG1sCmluZGV4IDZhZmJjMzU5ZjYyNWQ5ZmM4ZTQ1OTEy
YmZkNjBhNWViNDRkYzIwNjUuLjFhMGI1ZWY5OGJkZTI2ZjQwZGJiODgwMTQ1NzM4YjEyNDZmNWJj
ZWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9u
LWFuZC1vYmplY3RzdG9yZS1jYWxscy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3RyYW5zYWN0aW9uLWFuZC1vYmplY3RzdG9yZS1jYWxscy5odG1sCkBAIC00LDEyOSAr
NCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hl
YWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIHRy
YW5zYWN0aW9uIGFuZCBvYmplY3RTdG9yZSBjYWxscyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsK
LSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImluZGV4ZWREQi5vcGVuKCd0cmFuc2FjdGlvbi1hbmQtb2JqZWN0c3RvcmUtY2FsbHMnLCAnZGVz
Y3JpcHRpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9u
IG9wZW5TdWNjZXNzKCkKLXsKLSAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50
YXJnZXQucmVzdWx0Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlc3VsdCA9IGRiLnNl
dFZlcnNpb24oJ3ZlcnNpb24gMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRh
dGFiYXNlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
fQotCi1mdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKLXsKLSAgICB0cmFucyA9IGV2YWxBbmRMb2co
InRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jl
cyhkYik7Ci0KLSAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnYScpIik7Ci0g
ICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2InKSIpOwotICAgIGV2YWxBbmRM
b2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpLmNyZWF0ZUluZGV4KCdpbmRleCcsICdz
b21lX3BhdGgnKSIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLmFkZEV2ZW50TGlzdGVuZXIoJ2Nv
bXBsZXRlJywgY3JlYXRlZCwgdHJ1ZSkiKTsKLSAgICBkZWJ1ZygiIik7Ci19Ci0KLWZ1bmN0aW9u
IGNyZWF0ZWQoKQotewotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2Fj
dGlvbihbJ2EnXSkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYScpIik7
Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ2InKSIsICJJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ3gnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5O
T1RfRk9VTkRfRVJSIik7Ci0gICAgZGVidWcoIiIpOwotCi0gICAgdHJhbnMgPSBldmFsQW5kTG9n
KCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnYSddKSIpOwotICAgIGV2YWxBbmRMb2coInRyYW5z
Lm9iamVjdFN0b3JlKCdhJykiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0cmFucy5v
YmplY3RTdG9yZSgnYicpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsK
LSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0cmFucy5vYmplY3RTdG9yZSgneCcpIiwgIklE
QkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKLSAgICBkZWJ1ZygiIik7Ci0KLSAg
ICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydiJ10pIik7Ci0g
ICAgZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2InKSIpOwotICAgIGV2YWxBbmRFeHBl
Y3RFeGNlcHRpb24oInRyYW5zLm9iamVjdFN0b3JlKCdhJykiLCAiSURCRGF0YWJhc2VFeGNlcHRp
b24uTk9UX0ZPVU5EX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInRyYW5zLm9i
amVjdFN0b3JlKCd4JykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOwot
ICAgIGRlYnVnKCIiKTsKLQotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFu
c2FjdGlvbihbJ2EnLCAnYiddKSIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3Jl
KCdhJykiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYicpIik7Ci0gICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ3gnKSIsICJJREJEYXRh
YmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7Ci0gICAgZGVidWcoIiIpOwotCi0gICAgdHJh
bnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnYicsICdhJ10pIik7Ci0g
ICAgZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2EnKSIpOwotICAgIGV2YWxBbmRMb2co
InRyYW5zLm9iamVjdFN0b3JlKCdiJykiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0
cmFucy5vYmplY3RTdG9yZSgneCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9F
UlIiKTsKLSAgICBkZWJ1ZygiIik7Ci0KLSAgICBkZWJ1ZygiUGFzc2luZyBhIHN0cmluZyBhcyB0
aGUgZmlyc3QgYXJndW1lbnQgaXMgYSBzaG9ydGN1dCBmb3IganVzdCBvbmUgb2JqZWN0IHN0b3Jl
OiIpOwotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignYScp
Iik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2EnKSIpOwotICAgIGV2YWxB
bmRFeHBlY3RFeGNlcHRpb24oInRyYW5zLm9iamVjdFN0b3JlKCdiJykiLCAiSURCRGF0YWJhc2VF
eGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInRy
YW5zLm9iamVjdFN0b3JlKCd4JykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VS
UiIpOwotICAgIGRlYnVnKCIiKTsKLQotICAgIHNob3VsZFRocm93KCJ0cmFucyA9IGRiLnRyYW5z
YWN0aW9uKCkiKTsKLSAgICBkZWJ1ZygiIik7Ci0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJkYi50cmFuc2FjdGlvbihbJ3gnXSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5E
X0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKFsneCdd
KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7Ci0gICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oWydhJywgJ3gnXSkiLCAiSURCRGF0YWJhc2VF
eGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRi
LnRyYW5zYWN0aW9uKFsneCcsICd4J10pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VO
RF9FUlIiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbihbJ2En
LCAneCcsICdiJ10pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKLSAg
ICBkZWJ1ZygiIik7Ci0KLSAgICBkZWJ1ZygiRXhjZXB0aW9uIHRocm93biB3aGVuIG5vIHN0b3Jl
cyBzcGVjaWZpZWQ6Iik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rp
b24oW10pIiwgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19FUlIiKTsKLSAgICBkZWJ1Zygi
Iik7Ci0KLSAgICBkZWJ1Zygie30gY29lcmNlcyB0byBhIHN0cmluZyAtIHNvIG5vIG1hdGNoLCBi
dXQgbm90IGEgdHlwZSBlcnJvcjoiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50
cmFuc2FjdGlvbih7fSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOwot
ICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKHttb2RlOjB9KSIsICJJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7Ci0gICAgZGVidWcoIiIpOwotCi0g
ICAgZGVidWcoIk92ZXJyaWRpbmcgdGhlIGRlZmF1bHQgc3RyaW5nIGNvZXJjaW9uIG1ha2VzIHRo
ZXNlIHdvcms6Iik7Ci0gICAgZXZhbEFuZExvZygiZGIudHJhbnNhY3Rpb24oe3RvU3RyaW5nOmZ1
bmN0aW9uKCl7cmV0dXJuICdhJzt9fSkiKTsKLSAgICBldmFsQW5kTG9nKCJkYi50cmFuc2FjdGlv
bihbe3RvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuICdhJzt9fV0pIik7Ci0gICAgZGVidWcoIi4u
LiBidXQgeW91IHN0aWxsIG5lZWQgdG8gc3BlY2lmeSBhIHJlYWwgc3RvcmU6Iik7Ci0gICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oW3t0b1N0cmluZzpmdW5jdGlvbigp
e3JldHVybiAneCc7fX1dKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7
Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oW3t0b1N0cmluZzpm
dW5jdGlvbigpe3JldHVybiAneCc7fX1dKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9V
TkRfRVJSIik7Ci0gICAgZGVidWcoIiIpOwotCi0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFu
cyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUnXSkiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5z
ICE9IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7
Ci0gICAgdHJhbnMub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHRyYW5z
Lm9uY29tcGxldGUgPSBhZnRlckNvbXBsZXRlOwotICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJh
bnMub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKLSAgICBzaG91bGRCZVRydWUoInN0b3JlICE9IG51
bGwiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZS5nZXQoJ3NvbWVfa2V5JykiKTsKLX0KLQotZnVu
Y3Rpb24gYWZ0ZXJDb21wbGV0ZSgpCi17Ci0gICAgZGVidWcoInRyYW5zYWN0aW9uIGNvbXBsZXRl
LCBlbnN1cmluZyBtZXRob2RzIGZhaWwiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9IG51
bGwiKTsKLSAgICBzaG91bGRCZVRydWUoInN0b3JlICE9IG51bGwiKTsKLSAgICBldmFsQW5kRXhw
ZWN0RXhjZXB0aW9uKCJ0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKSIsICJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5OT1RfQUxMT1dFRF9FUlIiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJz
dG9yZS5pbmRleCgnaW5kZXgnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9F
UlIiKTsKLQotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy90cmFuc2FjdGlvbi1hbmQtb2JqZWN0c3RvcmUtY2FsbHMu
anMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1iYXNpY3MuaHRtbCBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy5odG1sCmluZGV4IGYx
YjNiMTZhOWE3YTRjNmM2MTNiNDU0ZmZlMzgzMDI1ZTI0MjBmOWIuLmQ1YTdkMjNiY2UxMTUzZDM3
N2VkMDIzZTkxN2ZkMTFhMGI2YWJlYjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy5odG1sCkBAIC0xLDI5NCArMSwxMCBAQAot
PGh0bWw+DQotPGhlYWQ+DQotPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4NCi08c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5q
cyI+PC9zY3JpcHQ+DQotPC9oZWFkPg0KLTxib2R5Pg0KLTxzY3JpcHQ+DQotDQotZGVzY3JpcHRp
b24oIlRlc3QgSW5kZXhlZERCIHRyYW5zYWN0aW9uIGJhc2ljcy4iKTsNCi0NCi1mdW5jdGlvbiB0
ZXN0KCkNCi17DQotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7DQotDQotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndHJhbnNhY3Rpb24tYmFzaWNzJykiKTsNCi0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsNCi0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQotfQ0KLQ0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNz
KCkNCi17DQotICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOw0KLSAgICBzZWxmLmRiID0gZXZh
bEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7DQotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsNCi0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOw0KLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsNCi19DQotDQotZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgp
DQotew0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIsIGNoZWNrTWV0YWRhdGFFbXB0eSk7
DQotICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25jb21wbGV0ZSA9IHRlc3RTZXRWZXJzaW9uQWJv
cnQxOw0KLX0NCi0NCi1mdW5jdGlvbiB0ZXN0U2V0VmVyc2lvbkFib3J0MSgpDQotew0KLSAgICBj
aGVja01ldGFkYXRhRW1wdHkoKTsNCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBzdGFydFNldFZlcnNpb24oJ3ZlcnNpb24gZmFpbCcpIik7DQotICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gYWRkUmVtb3ZlSURCT2JqZWN0czsNCi19DQotDQotZnVuY3Rpb24gYWRkUmVtb3ZlSURC
T2JqZWN0cygpDQotew0KLSAgICBkZWJ1ZygiYWRkUmVtb3ZlSURCT2JqZWN0cygpOiIpOw0KLSAg
ICB2YXIgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsN
Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOw0KLSAgICB0cmFucy5hZGRFdmVu
dExpc3RlbmVyKCdhYm9ydCcsIHRlc3RTZXRWZXJzaW9uQWJvcnQyLCB0cnVlKTsNCi0gICAgdHJh
bnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOw0KLQ0KLSAgICB2YXIg
c3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZUZh
aWwnLCBudWxsKSIpOw0KLSAgICB2YXIgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3Jl
LmNyZWF0ZUluZGV4KCdpbmRleEZhaWwnLCAneCcpIik7DQotDQotICAgIGV2YWxBbmRMb2coImRi
LmRlbGV0ZU9iamVjdFN0b3JlKCdzdG9yZUZhaWwnKSIpOw0KLSAgICBldmFsQW5kTG9nKCJzdG9y
ZS5kZWxldGVJbmRleCgnaW5kZXhGYWlsJykiKTsNCi0NCi0gICAgdHJhbnMuYWJvcnQoKTsNCi19
DQotDQotZnVuY3Rpb24gdGVzdFNldFZlcnNpb25BYm9ydDIoKQ0KLXsNCi0gICAgZGVidWcoIiIp
Ow0KLSAgICBkZWJ1ZygidGVzdFNldFZlcnNpb25BYm9ydDIoKToiKTsNCi0gICAgY2hlY2tNZXRh
ZGF0YUVtcHR5KCk7DQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gc3RhcnRT
ZXRWZXJzaW9uKCd2ZXJzaW9uIGZhaWwnKSIpOw0KLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFk
ZFJlbW92ZUFkZElEQk9iamVjdHM7DQotfQ0KLQ0KLWZ1bmN0aW9uIGFkZFJlbW92ZUFkZElEQk9i
amVjdHMoKQ0KLXsNCi0gICAgZGVidWcoImFkZFJlbW92ZUFkZElEQk9iamVjdHMoKToiKTsNCi0g
ICAgdmFyIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
DQotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsNCi0gICAgdHJhbnMuYWRkRXZl
bnRMaXN0ZW5lcignYWJvcnQnLCB0ZXN0U2V0VmVyc2lvbkFib3J0MywgZmFsc2UpOw0KLSAgICB0
cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7DQotDQotICAgIHZh
ciBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3Jl
RmFpbCcsIG51bGwpIik7DQotICAgIHZhciBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gc3Rv
cmUuY3JlYXRlSW5kZXgoJ2luZGV4RmFpbCcsICd4JykiKTsNCi0NCi0gICAgZXZhbEFuZExvZygi
ZGIuZGVsZXRlT2JqZWN0U3RvcmUoJ3N0b3JlRmFpbCcpIik7DQotICAgIGV2YWxBbmRMb2coInN0
b3JlLmRlbGV0ZUluZGV4KCdpbmRleEZhaWwnKSIpOw0KLQ0KLSAgICB2YXIgc3RvcmUgPSBldmFs
QW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZUZhaWwnLCBudWxsKSIp
Ow0KLSAgICB2YXIgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4
KCdpbmRleEZhaWwnLCAneCcpIik7DQotDQotICAgIHRyYW5zLmFib3J0KCk7DQotfQ0KLQ0KLWZ1
bmN0aW9uIHRlc3RTZXRWZXJzaW9uQWJvcnQzKCkNCi17DQotICAgIGRlYnVnKCIiKTsNCi0gICAg
ZGVidWcoInRlc3RTZXRWZXJzaW9uQWJvcnQzKCk6Iik7DQotICAgIHNob3VsZEJlRmFsc2UoImV2
ZW50LmNhbmNlbGFibGUiKTsNCi0gICAgY2hlY2tNZXRhZGF0YUVtcHR5KCk7DQotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gc3RhcnRTZXRWZXJzaW9uKCd2ZXJzaW9uIGZhaWwn
KSIpOw0KLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZElEQk9iamVjdHM7DQotfQ0KLQ0KLWZ1
bmN0aW9uIGFkZElEQk9iamVjdHMoKQ0KLXsNCi0gICAgZGVidWcoImFkZElEQk9iamVjdHMoKToi
KTsNCi0gICAgc2hvdWxkQmVGYWxzZSgiZXZlbnQuY2FuY2VsYWJsZSIpOw0KLSAgICB2YXIgdHJh
bnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsNCi0gICAgc2hv
dWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOw0KLSAgICB0cmFucy5vbmFib3J0ID0gdGVzdElu
YWN0aXZlQWJvcnRlZFRyYW5zYWN0aW9uOw0KLSAgICB0cmFucy5vbmNvbXBsZXRlID0gdW5leHBl
Y3RlZENvbXBsZXRlQ2FsbGJhY2s7DQotDQotICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUg
PSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVGYWlsJywgbnVsbCkiKTsNCi0gICAgaW5kZXgg
PSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleEZhaWwnLCAneCcp
Iik7DQotDQotICAgIHRyYW5zLmFib3J0KCk7DQotfQ0KLQ0KLWZ1bmN0aW9uIHRlc3RJbmFjdGl2
ZUFib3J0ZWRUcmFuc2FjdGlvbigpDQotew0KLSAgICBkZWJ1ZygiIik7DQotICAgIGRlYnVnKCJ0
ZXN0SW5hY3RpdmVBYm9ydGVkVHJhbnNhY3Rpb24oKToiKTsNCi0gICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigiaW5kZXgub3BlbkN1cnNvcigpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5T
QUNUSU9OX0lOQUNUSVZFX0VSUiIpOw0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJpbmRl
eC5vcGVuS2V5Q3Vyc29yKCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5B
Q1RJVkVfRVJSIik7DQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4LmdldCgwKSIs
ICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsNCi0gICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXguZ2V0S2V5KDApIiwgIklEQkRhdGFiYXNlRXhj
ZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOw0KLSAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJpbmRleC5jb3VudCgpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9O
X0lOQUNUSVZFX0VSUiIpOw0KLQ0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5w
dXQoMCwgMCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJS
Iik7DQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmFkZCgwLCAwKSIsICJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsNCi0gICAgZXZhbEFu
ZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuZGVsZXRlKDApIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9u
LlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOw0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJzdG9yZS5jbGVhcigpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNU
SVZFX0VSUiIpOw0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5nZXQoMCkiLCAi
SURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7DQotICAgIGV2
YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLm9wZW5DdXJzb3IoKSIsICJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsNCi0NCi0gICAgdGVzdFNldFZlcnNp
b25BYm9ydDQoKTsNCi19DQotDQotZnVuY3Rpb24gdGVzdFNldFZlcnNpb25BYm9ydDQoKQ0KLXsN
Ci0gICAgZGVidWcoIiIpOw0KLSAgICBkZWJ1ZygidGVzdFNldFZlcnNpb25BYm9ydDQoKToiKTsN
Ci0gICAgY2hlY2tNZXRhZGF0YUVtcHR5KCk7DQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gc3RhcnRTZXRWZXJzaW9uKCd2ZXJzaW9uIGZhaWwnKSIpOw0KLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGFkZElEQk9iamVjdHNBbmRDb21taXQ7DQotfQ0KLQ0KLWZ1bmN0aW9uIGFk
ZElEQk9iamVjdHNBbmRDb21taXQoKQ0KLXsNCi0gICAgZGVidWcoImFkZElEQk9iamVjdHNBbmRD
b21taXQoKToiKTsNCi0gICAgdmFyIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50
YXJnZXQucmVzdWx0Iik7DQotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsNCi0g
ICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOw0KLQ0KLSAgICBzdG9y
ZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlRmFpbCcs
IG51bGwpIik7DQotICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5jcmVhdGVJ
bmRleCgnaW5kZXhGYWlsJywgJ3gnKSIpOw0KLQ0KLSAgICB0cmFucy5vbmNvbXBsZXRlID0gdGVz
dEluYWN0aXZlQ29tcGxldGVkVHJhbnNhY3Rpb247DQotfQ0KLQ0KLWZ1bmN0aW9uIHRlc3RJbmFj
dGl2ZUNvbXBsZXRlZFRyYW5zYWN0aW9uKCkNCi17DQotICAgIGRlYnVnKCIiKTsNCi0gICAgZGVi
dWcoInRlc3RJbmFjdGl2ZUNvbXBsZXRlZFRyYW5zYWN0aW9uKCk6Iik7DQotICAgIGV2YWxBbmRF
eHBlY3RFeGNlcHRpb24oImluZGV4Lm9wZW5DdXJzb3IoKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlv
bi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsNCi0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlv
bigiaW5kZXgub3BlbktleUN1cnNvcigpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNU
SU9OX0lOQUNUSVZFX0VSUiIpOw0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJpbmRleC5n
ZXQoMCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7
DQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4LmdldEtleSgwKSIsICJJREJEYXRh
YmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsNCi0gICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigiaW5kZXguY291bnQoKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFO
U0FDVElPTl9JTkFDVElWRV9FUlIiKTsNCi0NCi0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigi
c3RvcmUucHV0KDAsIDApIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNU
SVZFX0VSUiIpOw0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5hZGQoMCwgMCki
LCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7DQotICAg
IGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmRlbGV0ZSgwKSIsICJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsNCi0gICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigic3RvcmUuY2xlYXIoKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElP
Tl9JTkFDVElWRV9FUlIiKTsNCi0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuZ2V0
KDApIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOw0K
LSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5vcGVuQ3Vyc29yKCkiLCAiSURCRGF0
YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7DQotDQotICAgIHRlc3RT
ZXRWZXJzaW9uQWJvcnQ1KCk7DQotfQ0KLQ0KLWZ1bmN0aW9uIHRlc3RTZXRWZXJzaW9uQWJvcnQ1
KCkNCi17DQotICAgIGRlYnVnKCIiKTsNCi0gICAgZGVidWcoInRlc3RTZXRWZXJzaW9uQWJvcnQ1
KCk6Iik7DQotICAgIGNoZWNrTWV0YWRhdGFFeGlzdGluZ09iamVjdFN0b3JlKCk7DQotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gc3RhcnRTZXRWZXJzaW9uKCd2ZXJzaW9uIGZh
aWwnKSIpOw0KLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHJlbW92ZUlEQk9iamVjdHM7DQotfQ0K
LQ0KLWZ1bmN0aW9uIHJlbW92ZUlEQk9iamVjdHMoKQ0KLXsNCi0gICAgZGVidWcoInJlbW92ZUlE
Qk9iamVjdHMoKToiKTsNCi0gICAgdmFyIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7DQotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsN
Ci0gICAgdHJhbnMub25hYm9ydCA9IHRlc3RTZXRWZXJzaW9uQWJvcnQ2Ow0KLSAgICB0cmFucy5v
bmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7DQotDQotICAgIHZhciBzdG9y
ZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlRmFpbCcpIik7
DQotICAgIGV2YWxBbmRMb2coInN0b3JlLmRlbGV0ZUluZGV4KCdpbmRleEZhaWwnKSIpOw0KLSAg
ICBldmFsQW5kTG9nKCJkYi5kZWxldGVPYmplY3RTdG9yZSgnc3RvcmVGYWlsJykiKTsNCi0NCi0g
ICAgdHJhbnMuYWJvcnQoKTsNCi19DQotDQotZnVuY3Rpb24gdGVzdFNldFZlcnNpb25BYm9ydDYo
KQ0KLXsNCi0gICAgZGVidWcoIiIpOw0KLSAgICBkZWJ1ZygidGVzdFNldFZlcnNpb25BYm9ydDYo
KToiKTsNCi0gICAgY2hlY2tNZXRhZGF0YUV4aXN0aW5nT2JqZWN0U3RvcmUoKTsNCi0gICAgc2V0
TmV3VmVyc2lvbigpOw0KLX0NCi0NCi1mdW5jdGlvbiBzdGFydFNldFZlcnNpb24odmVyc2lvbk5h
bWUpDQotew0KLSAgICByZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbih2ZXJzaW9uTmFtZSk7DQotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOw0KLSAgICByZXR1cm4g
cmVxdWVzdDsNCi19DQotDQotZnVuY3Rpb24gY2hlY2tNZXRhZGF0YUVtcHR5KCkNCi17DQotICAg
IHNob3VsZEJlKCJzZWxmLmRiLm9iamVjdFN0b3JlTmFtZXMiLCAiW10iKTsNCi0gICAgc2hvdWxk
QmUoInNlbGYuZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMCIpOw0KLSAgICBzaG91bGRC
ZSgic2VsZi5kYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCdzdG9yZUZhaWwnKSIsICJmYWxz
ZSIpOw0KLX0NCi0NCi1mdW5jdGlvbiBjaGVja01ldGFkYXRhRXhpc3RpbmdPYmplY3RTdG9yZSgp
DQotew0KLSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcyIsICJbJ3N0b3JlRmFpbCdd
Iik7DQotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIxIik7DQot
ICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCdzdG9yZUZhaWwnKSIs
ICJ0cnVlIik7DQotfQ0KLQ0KLWZ1bmN0aW9uIHNldE5ld1ZlcnNpb24oKQ0KLXsNCi0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsNCi0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsNCi0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQotfQ0KLQ0KLWZ1bmN0aW9uIHNldFZlcnNp
b25TdWNjZXNzKCkNCi17DQotICAgIGRlYnVnKCIiKTsNCi0gICAgZGVidWcoInNldFZlcnNpb25T
dWNjZXNzKCk6Iik7DQotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsNCi0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOw0K
LSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7DQotICAgIHRyYW5z
LmFkZEV2ZW50TGlzdGVuZXIoJ2NvbXBsZXRlJywgY29tcGxldGVDYWxsYmFjaywgZmFsc2UpOw0K
LSAgICBzZWxmLmNvbXBsZXRlRXZlbnRGaXJlZCA9IGZhbHNlOw0KLQ0KLSAgICBkZWxldGVBbGxP
YmplY3RTdG9yZXMoZGIpOw0KLQ0KLSAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9y
ZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsNCi19DQotDQotZnVuY3Rpb24gY29tcGxldGVDYWxsYmFj
aygpDQotew0KLSAgICBzaG91bGRCZUZhbHNlKCJldmVudC5jYW5jZWxhYmxlIik7DQotICAgIHRl
c3RQYXNzZWQoImNvbXBsZXRlIGV2ZW50IGZpcmVkIik7DQotICAgIHRyYW5zYWN0aW9uID0gZXZh
bEFuZExvZygiZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSkiKTsNCi0gICAgdHJhbnNhY3Rp
b24ub25hYm9ydCA9IGFib3J0Q2FsbGJhY2s7DQotICAgIHZhciBzdG9yZSA9IGV2YWxBbmRMb2co
InN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7DQotICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygic3RvcmUubmFtZSIsICJzdG9yZU5hbWUiKTsNCi19DQotDQot
ZnVuY3Rpb24gYWJvcnRDYWxsYmFjaygpDQotew0KLSAgICB0ZXN0UGFzc2VkKCJhYm9ydCBldmVu
dCBmaXJlZCIpOw0KLSAgICB0ZXN0RE9NU3RyaW5nTGlzdCgpOw0KLX0NCi0NCi1mdW5jdGlvbiB0
ZXN0RE9NU3RyaW5nTGlzdCgpDQotew0KLSAgICBkZWJ1ZygiIik7DQotICAgIGRlYnVnKCJWZXJp
ZnlpbmcgRE9NU3RyaW5nTGlzdCB3b3JrcyBhcyBhcmd1bWVudCBmb3IgSURCRGF0YWJhc2UudHJh
bnNhY3Rpb24oKSIpOw0KLSAgICBkZWJ1ZygiZGIub2JqZWN0U3RvcmVOYW1lcyBpcyAiICsgZGIu
b2JqZWN0U3RvcmVOYW1lcyk7DQotICAgIGRlYnVnKCIuLi4gd2hpY2ggY29udGFpbnM6ICIgKyBK
U09OLnN0cmluZ2lmeShBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChkYi5vYmplY3RTdG9yZU5h
bWVzKSkpOw0KLSAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKGRi
Lm9iamVjdFN0b3JlTmFtZXMpIik7DQotICAgIHRlc3RQYXNzZWQoIm5vIGV4Y2VwdGlvbiB0aHJv
d24iKTsNCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0
aDsgKytpKSB7DQotICAgICAgc2hvdWxkQmVUcnVlKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgi
ICsgSlNPTi5zdHJpbmdpZnkoZGIub2JqZWN0U3RvcmVOYW1lc1tpXSkgKyAiKSAhPSBudWxsIik7
DQotICAgIH0NCi0gICAgdGVzdFBhc3NlZCgiYWxsIHN0b3JlcyBwcmVzZW50IGluIHRyYW5zYWN0
aW9uIik7DQotICAgIHRlc3RJbnZhbGlkTW9kZSgpOw0KLX0NCi0NCi1mdW5jdGlvbiB0ZXN0SW52
YWxpZE1vZGUoKQ0KLXsNCi0gICAgZGVidWcoIiIpOw0KLSAgICBkZWJ1ZygiVmVyaWZ5IHRoYXQg
c3BlY2lmeWluZyBhbiBpbnZhbGlkIG1vZGUgcmFpc2VzIGFuIGV4Y2VwdGlvbiIpOw0KLSAgICBl
dmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCAzKSIs
ICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT05fVFJBTlNJRU5UX0VSUiIpOw0KLSAgICBmaW5pc2hK
U1Rlc3QoKTsNCi19DQotDQotdGVzdCgpOw0KLQ0KLTwvc2NyaXB0Pg0KLTxzY3JpcHQgc3JjPSIu
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pg0KLTwvYm9k
eT4NCi08L2h0bWw+DQorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvdHJhbnNhY3Rpb24tYmFzaWNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJh
bnNhY3Rpb24tY3Jhc2gtb24tYWJvcnQuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3RyYW5zYWN0aW9uLWNyYXNoLW9uLWFib3J0Lmh0bWwKaW5kZXggZDc5MzcyMWQ3MzYyYmZk
NzlhMjU1MzZhMzEyYTYzNWJjZWIxZTI5Mi4uMTE1OWQyOTQyMDdjZWI0ZTk2ZTM1MGMwMjdkYmQx
Y2E5YWQ1NTI2YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJh
bnNhY3Rpb24tY3Jhc2gtb24tYWJvcnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi90cmFuc2FjdGlvbi1jcmFzaC1vbi1hYm9ydC5odG1sCkBAIC00LDQ1ICs0LDcgQEAK
IDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxi
b2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIHRyYW5zYWN0aW9u
IGRvZXMgbm90IGNyYXNoIG9uIGFib3J0LiIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICBy
ZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4
ZWREQi5vcGVuKCd0cmFuc2FjdGlvbi1jcmFzaC1vbi1hYm9ydCcpIik7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRlYnVn
KCJvcGVuU3VjY2VzcygpOiIpOwotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJn
ZXQucmVzdWx0Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJzEu
MCcpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24g
c2V0VmVyc2lvblN1Y2Nlc3MoKQotewotICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0
b3JlKCdmb28nKSIpOwotICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25jb21wbGV0ZSA9IHNldFZl
cnNpb25Db21wbGV0ZTsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvbkNvbXBsZXRlKCkKLXsKLSAg
ICBldmFsQW5kTG9nKCJkYi50cmFuc2FjdGlvbignZm9vJykiKTsKLSAgICBldmFsQW5kTG9nKCJz
ZWxmLmdjKCkiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90cmFuc2FjdGlvbi1jcmFzaC1vbi1hYm9ydC5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWV2ZW50LXByb3BhZ2F0aW9uLmh0
bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1ldmVudC1wcm9w
YWdhdGlvbi5odG1sCmluZGV4IDg5NTI4YThjMTY5ZTQ0MzkyZTk0MWEyYjk4NDVhN2Q3YjViZTQ1
OTcuLmYwM2VhMzE3MmFkMmY3Yjc4MjMwM2JjMzZmNThhZDUxZmZiZWNjMzQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWV2ZW50LXByb3BhZ2F0
aW9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24t
ZXZlbnQtcHJvcGFnYXRpb24uaHRtbApAQCAtNCwxNTAgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJl
c291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0Pgot
Ci1kZXNjcmlwdGlvbigiVGVzdCBldmVudCBwcm9wb2dhdGlvbiBvbiBJREJUcmFuc2FjdGlvbi4i
KTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0aW9uLWV2ZW50
LXByb3BhZ2F0aW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb247Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0
aW9uIHNldFZlcnNpb24oKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJn
ZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbign
bmV3IHZlcnNpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1
bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKLXsKLSAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygi
dHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAh
PT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsK
LSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gc3RhcnRUZXN0Iik7Ci0KLSAgICBk
ZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9y
ZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOwotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleScp
Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0K
LWZ1bmN0aW9uIHN0YXJ0VGVzdCgpCi17Ci0gICAgZGVidWcoIlZlcmlmaW5nIGFib3J0Iik7Ci0g
ICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1l
J10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMu
b25hYm9ydCA9IGFib3J0RmlyZWRDYWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9u
Y29tcGxldGUgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2coImRi
LmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgZGJBYm9ydENhcHR1cmVDYWxsYmFjaywgdHJ1ZSki
KTsKLSAgICBldmFsQW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIGRiQWJvcnRC
dWJibGVDYWxsYmFjaywgZmFsc2UpIik7Ci0gICAgZXZhbEFuZExvZygiZGIuYWRkRXZlbnRMaXN0
ZW5lcignY29tcGxldGUnLCB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjaywgdHJ1ZSkiKTsKLSAg
ICBldmFsQW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdjb21wbGV0ZScsIHVuZXhwZWN0ZWRD
b21wbGV0ZUNhbGxiYWNrLCBmYWxzZSkiKTsKLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3Jl
ID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0gICAgZXZhbEFuZExvZygic3Rv
cmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOwotICAgIGRiQ2FwdHVyZUZp
cmVkID0gZmFsc2U7Ci0gICAgYWJvcnRGaXJlZCA9IGZhbHNlOwotICAgIGRiQnViYmxlRmlyZWQx
ID0gZmFsc2U7Ci19Ci0KLWZ1bmN0aW9uIGRiQWJvcnRDYXB0dXJlQ2FsbGJhY2soKQotewotICAg
IGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiSW4gSURCRGF0YWJhc2UgYWJvcnQgY2FwdHVyZSIpOwot
ICAgIHNob3VsZEJlRmFsc2UoImRiQ2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgi
YWJvcnRGaXJlZCIpOwotICAgIHNob3VsZEJlRmFsc2UoImRiQnViYmxlRmlyZWQxIik7Ci0gICAg
c2hvdWxkQmUoImV2ZW50LnRhcmdldCIsICJ0cmFucyIpOwotICAgIHNob3VsZEJlKCJldmVudC5j
dXJyZW50VGFyZ2V0IiwgImRiIik7Ci0gICAgZGJDYXB0dXJlRmlyZWQgPSB0cnVlOwotfQotCi1m
dW5jdGlvbiBhYm9ydEZpcmVkQ2FsbGJhY2soKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1
ZygiSW4gYWJvcnQgaGFuZGxlciIpOwotICAgIHNob3VsZEJlVHJ1ZSgiZGJDYXB0dXJlRmlyZWQi
KTsKLSAgICBzaG91bGRCZUZhbHNlKCJhYm9ydEZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgi
ZGJCdWJibGVGaXJlZDEiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0IiwgInRyYW5zIik7
Ci0gICAgc2hvdWxkQmUoImV2ZW50LmN1cnJlbnRUYXJnZXQiLCAidHJhbnMiKTsKLSAgICBhYm9y
dEZpcmVkID0gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gZGJBYm9ydEJ1YmJsZUNhbGxiYWNrKCkKLXsK
LSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIkluIElEQkRhdGFiYXNlIGVycm9yIGJ1YmJsZSIp
OwotICAgIHNob3VsZEJlVHJ1ZSgiZGJDYXB0dXJlRmlyZWQiKTsKLSAgICBzaG91bGRCZVRydWUo
ImFib3J0RmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVkMSIpOwotICAg
IHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAidHJhbnMiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQu
Y3VycmVudFRhcmdldCIsICJkYiIpOwotICAgIGRiQnViYmxlRmlyZWQxID0gdHJ1ZTsKLSAgICBk
ZWJ1ZygiIik7Ci0gICAgZGVidWcoIlZlcmlmaW5nIHN1Y2Nlc3MuIik7Ci0gICAgdHJhbnMgPSBl
dmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIElEQlRyYW5z
YWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9
IGNvbXBsZXRlRmlyZWRDYWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQg
PSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2coImRiLnJlbW92ZUV2
ZW50TGlzdGVuZXIoJ2Fib3J0JywgZGJBYm9ydENhcHR1cmVDYWxsYmFjaywgdHJ1ZSkiKTsKLSAg
ICBldmFsQW5kTG9nKCJkYi5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIGRiQWJvcnRCdWJi
bGVDYWxsYmFjaywgZmFsc2UpIik7Ci0gICAgZXZhbEFuZExvZygiZGIucmVtb3ZlRXZlbnRMaXN0
ZW5lcignY29tcGxldGUnLCB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjaywgdHJ1ZSkiKTsKLSAg
ICBldmFsQW5kTG9nKCJkYi5yZW1vdmVFdmVudExpc3RlbmVyKCdjb21wbGV0ZScsIHVuZXhwZWN0
ZWRDb21wbGV0ZUNhbGxiYWNrLCBmYWxzZSkiKTsKLSAgICBldmFsQW5kTG9nKCJkYi5hZGRFdmVu
dExpc3RlbmVyKCdjb21wbGV0ZScsIGRiQ29tcGxldGVDYXB0dXJlQ2FsbGJhY2ssIHRydWUpIik7
Ci0gICAgZXZhbEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignY29tcGxldGUnLCBkYkNvbXBs
ZXRlQnViYmxlQ2FsbGJhY2ssIGZhbHNlKSIpOwotICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50
TGlzdGVuZXIoJ2Fib3J0JywgdW5leHBlY3RlZEFib3J0Q2FsbGJhY2ssIHRydWUpIik7Ci0gICAg
ZXZhbEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCB1bmV4cGVjdGVkQWJvcnRD
YWxsYmFjaywgZmFsc2UpIik7Ci0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5z
Lm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotICAgIGV2YWxBbmRMb2coInN0b3JlLmFkZCh7
eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAna2V5MicpIik7Ci0gICAgZGJDYXB0dXJlRmlyZWQgPSBm
YWxzZTsKLSAgICBjb21wbGV0ZUZpcmVkID0gZmFsc2U7Ci0gICAgZGJCdWJibGVGaXJlZDIgPSBm
YWxzZTsKLX0KLQotZnVuY3Rpb24gZGJDb21wbGV0ZUNhcHR1cmVDYWxsYmFjaygpCi17Ci0gICAg
ZGVidWcoIiIpOwotICAgIGRlYnVnKCJJbiBJREJEYXRhYmFzZSBjb21wbGV0ZSBjYXB0dXJlIik7
Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGJDYXB0dXJlRmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNl
KCJjb21wbGV0ZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVGaXJlZDIiKTsK
LSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0IiwgInRyYW5zIik7Ci0gICAgc2hvdWxkQmUoImV2
ZW50LmN1cnJlbnRUYXJnZXQiLCAiZGIiKTsKLSAgICBkYkNhcHR1cmVGaXJlZCA9IHRydWU7Ci19
Ci0KLWZ1bmN0aW9uIGNvbXBsZXRlRmlyZWRDYWxsYmFjaygpCi17Ci0gICAgZGVidWcoIiIpOwot
ICAgIGRlYnVnKCJJbiBJREJSZXF1ZXN0IGhhbmRsZXIiKTsKLSAgICBzaG91bGRCZVRydWUoImRi
Q2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiY29tcGxldGVGaXJlZCIpOwotICAg
IHNob3VsZEJlRmFsc2UoImRiQnViYmxlRmlyZWQyIik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRh
cmdldCIsICJ0cmFucyIpOwotICAgIHNob3VsZEJlKCJldmVudC5jdXJyZW50VGFyZ2V0IiwgInRy
YW5zIik7Ci0gICAgY29tcGxldGVGaXJlZCA9IHRydWU7Ci0gICAgZGVidWcoIiIpOwotICAgIGZp
bmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBkYkNvbXBsZXRlQnViYmxlQ2FsbGJhY2soKQot
ewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiSW4gSURCRGF0YWJhc2UgY29tcGxldGUgYnVi
YmxlIik7Ci0gICAgdGVzdEZhaWxlZCgiQ29tcGxldGUgYnViYmxlIGNhbGxiYWNrIHNob3VsZCBO
T1QgZmlyZSIpOwotICAgIGRiQnViYmxlRmlyZWQyID0gdHJ1ZTsKLX0KLQotdGVzdCgpOwotCi0K
LTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90cmFuc2FjdGlvbi1ldmVudC1wcm9w
YWdhdGlvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXJlYWQtb25seS5o
dG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tcmVhZC1vbmx5
Lmh0bWwKaW5kZXggNDk1Y2JjMWMyYjRiNzRjOWMzNTI1OWFkM2FhMzczYmU4MzIxMDNlOS4uYTkw
Y2M3YTE2NmNjYWE3NDQ4ZmQ1M2QwZGI0ZjYxNDRlMmY4ZDYwMyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tcmVhZC1vbmx5Lmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tcmVhZC1vbmx5Lmh0bWwK
QEAgLTEsNjcgKzEsMTAgQEAKLTxodG1sPg0KLTxoZWFkPg0KLTxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+DQotPHNjcmlwdCBzcmM9
InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0Pg0KLTwvaGVhZD4NCi08Ym9keT4NCi08c2Ny
aXB0Pg0KLQ0KLWRlc2NyaXB0aW9uKCJUZXN0IHJlYWQtb25seSB0cmFuc2FjdGlvbnMgaW4gSW5k
ZXhlZERCLiIpOw0KLQ0KLWZ1bmN0aW9uIHRlc3QoKQ0KLXsNCi0gICAgcmVtb3ZlVmVuZG9yUHJl
Zml4ZXMoKTsNCi0NCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCd0
cmFuc2FjdGlvbi1yZWFkLW9ubHknKSIpOw0KLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5T
dWNjZXNzOw0KLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsN
Ci19DQotDQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQ0KLXsNCi0gICAgZGVidWcoIm9wZW5TdWNj
ZXNzKCk6Iik7DQotICAgIHNlbGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsNCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlc3VsdCA9IGRiLnNldFZlcnNp
b24oJ3ZlcnNpb24gMScpIik7DQotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFz
ZTsNCi0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQotfQ0K
LQ0KLWZ1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQ0KLXsNCi0gICAgZGVsZXRlQWxsT2JqZWN0U3Rv
cmVzKGRiKTsNCi0NCi0gICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5vbmNvbXBsZXRlID0gc2V0VmVy
c2lvbkRvbmU7DQotICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25hYm9ydCA9IHVuZXhwZWN0ZWRB
Ym9ydENhbGxiYWNrOw0KLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsNCi0gICAgZXZhbEFuZExvZygic3RvcmUucHV0KCd4Jywg
J3knKSIpOw0KLX0NCi0NCi1mdW5jdGlvbiBzZXRWZXJzaW9uRG9uZSgpDQotew0KLSAgICB0cmFu
cyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJykiKTsNCi0gICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KCdh
JywgJ2InKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5SRUFEX09OTFlfRVJSIik7DQotDQotICAg
IHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnKSIpOw0K
LSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKS5k
ZWxldGUoJ3gnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5SRUFEX09OTFlfRVJSIik7DQotDQot
ICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnKSIp
Ow0KLSAgICBjdXIgPSBldmFsQW5kTG9nKCJjdXIgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUn
KS5vcGVuQ3Vyc29yKCkiKTsNCi0gICAgY3VyLm9uc3VjY2VzcyA9IGdvdEN1cnNvcjsNCi0gICAg
Y3VyLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsNCi19DQotDQotZnVuY3Rpb24g
Z290Q3Vyc29yKCkNCi17DQotICAgIHNob3VsZEJlRmFsc2UoIiFldmVudC50YXJnZXQucmVzdWx0
Iik7DQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImV2ZW50LnRhcmdldC5yZXN1bHQuZGVs
ZXRlKCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUiIpOw0KLQ0KLSAgICBm
aW5pc2hKU1Rlc3QoKTsNCi19DQotDQotDQotdGVzdCgpOw0KLQ0KLTwvc2NyaXB0Pg0KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
Pg0KLTwvYm9keT4NCi08L2h0bWw+DQorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvdHJhbnNhY3Rpb24tcmVhZC1vbmx5LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvdHJhbnNhY3Rpb24tcm9sbGJhY2suaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3RyYW5zYWN0aW9uLXJvbGxiYWNrLmh0bWwKaW5kZXggOGEyNzM4OTA0NzM5Y2E1
ZTEyNjQ2ZDY1MGIxNWMxZTk2YTNkMGM3NS4uN2RiZDgwNGFjNjU5NGUyNmRlNDNmMzU3MmIzOTFi
MmYzOTBiMWI3NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJh
bnNhY3Rpb24tcm9sbGJhY2suaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi90cmFuc2FjdGlvbi1yb2xsYmFjay5odG1sCkBAIC00LDk3ICs0LDcgQEAKIDxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlw
dD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIHRyYW5zYWN0aW9uIHJvbGxiYWNrLiIp
OwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCd0cmFuc2FjdGlvbi1yb2xs
YmFjaycpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3Bl
blN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOwotICAgIHNlbGYuZGIg
PSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkK
LXsKLSAgICBkZWJ1ZygiY2xlYW5EYXRhYmFzZSgpOiIpOwotICAgIHNlbGYudHJhbnNhY3Rpb24g
PSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICB0
cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgdHJhbnNh
Y3Rpb24ub25jb21wbGV0ZSA9IHNldFZlcnNpb25Db21wbGV0ZTsKLQotICAgIGRlbGV0ZUFsbE9i
amVjdFN0b3JlcyhkYik7Ci0gICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ215
T2JqZWN0U3RvcmUnKSIpOwotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0
aCIsICIxIik7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb25Db21wbGV0ZSgpCi17Ci0gICAgZGVi
dWcoInNldFZlcnNpb25Db21wbGV0ZSgpOiIpOwotCi0gICAgc2VsZi50cmFuc2FjdGlvbiA9IGV2
YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydteU9iamVjdFN0b3JlJ10s
IElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9
IGFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRD
b21wbGV0ZUNhbGxiYWNrOwotCi0gICAgc2VsZi5zdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0g
dHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ215T2JqZWN0U3RvcmUnKSIpOwotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoJ3JvbGxiYWNrVmFsdWUnLCAncm9sbGJhY2tLZXkxMjMn
KSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYWRkU3VjY2Vz
cygpCi17Ci0gICAgZGVidWcoImFkZFN1Y2Nlc3MoKToiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQu
dGFyZ2V0LnJlc3VsdCIsICIncm9sbGJhY2tLZXkxMjMnIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygic3RvcmUub3BlbkN1cnNvcigpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBv
cGVuQ3Vyc29yU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlbkN1cnNvclN1Y2Nlc3MoKQotewotICAgIGRlYnVn
KCJvcGVuQ3Vyc29yU3VjY2VzcygpOiIpOwotICAgIHNlbGYuY3Vyc29yID0gZXZhbEFuZExvZygi
Y3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgdHJhbnNhY3Rpb24uYWJvcnQo
KTsKLX0KLQotZnVuY3Rpb24gYWJvcnRDYWxsYmFjaygpCi17Ci0gICAgZGVidWcoImFib3J0Q2Fs
bGJhY2soKToiKTsKLSAgICBkZWJ1ZygnVHJhbnNhY3Rpb24gd2FzIGFib3J0ZWQuJyk7Ci0KLSAg
ICBzZWxmLnRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2Fj
dGlvbihbJ215T2JqZWN0U3RvcmUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRCkiKTsKLSAgICBzZWxm
LnN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnbXlP
YmplY3RTdG9yZScpIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmdldCgncm9s
bGJhY2tLZXkxMjMnKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0U3VjY2VzczsKLX0KLQotZnVuY3Rp
b24gZ2V0U3VjY2VzcygpCi17Ci0gICAgZGVidWcoImdldFN1Y2Nlc3MoKToiKTsKLSAgICBzaG91
bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ1bmRlZmluZWQiKTsKLQotICAgIHNob3VsZEJl
KCJjdXJzb3IudmFsdWUiLCAiJ3JvbGxiYWNrVmFsdWUnIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7
Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdHJh
bnNhY3Rpb24tcm9sbGJhY2suanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1z
dG9yZU5hbWVzLXJlcXVpcmVkLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90
cmFuc2FjdGlvbi1zdG9yZU5hbWVzLXJlcXVpcmVkLmh0bWwKaW5kZXggZTczZTg2OTI4ZWYxOGMy
YzQ5NjA2ZGViNmY5OTU4NTBiZGRiZDhmNC4uYjJhY2NjMzc2NmZhZGZjM2QzYjIxODcyMDIyZjQ5
ODE4ZWU4NzhiZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJh
bnNhY3Rpb24tc3RvcmVOYW1lcy1yZXF1aXJlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXN0b3JlTmFtZXMtcmVxdWlyZWQuaHRtbApAQCAtMSw0
NiArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9
Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5Pgot
PHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCOiB0cmFuc2FjdGlvbiBzdG9y
ZU5hbWVzIHJlcXVpcmVkIGFyZ3VtZW50cyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICBy
ZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5h
bWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAg
ICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNy
ZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jl
cyhkYik7Ci0KLSAgICBzaG91bGRUaHJvdygiZGIudHJhbnNhY3Rpb24oKTsiKTsKLSAgICBmaW5p
c2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy90cmFuc2FjdGlvbi1zdG9yZU5hbWVzLXJlcXVpcmVkLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvdHdvLXZlcnNpb24tY2hhbmdlcy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvdHdvLXZlcnNpb24tY2hhbmdlcy5odG1sCmluZGV4IDlhMWZmYWYxYWVhODQ0MjRl
ZTFhNGE5OGUzMDMzNzM2MzA5YmE2MzAuLmM1NjkwOWE0ZjRiMzkxOWJhYjc0ZDE2NDA1ZTg4ZWM3
Y2QyNmM3MzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3R3by12
ZXJzaW9uLWNoYW5nZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90
d28tdmVyc2lvbi1jaGFuZ2VzLmh0bWwKQEAgLTQsMTE0ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4K
LQotZGVzY3JpcHRpb24oIlRlc3QgYmVoYXZpb3Igd2hlbiB0aGUgc2FtZSBjb25uZWN0aW9uIGNh
bGxzIHNldFZlcnNpb24gdHdpY2UiKTsKLQotCi1mdW5jdGlvbiB0ZXN0KCkgewotICAgIHJlbW92
ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBzaG91bGRCZUZhbHNlKCJpbmRleGVkREIgPT0gbnVs
bCIpOwotICAgIHNob3VsZEJlRmFsc2UoIklEQlRyYW5zYWN0aW9uID09IG51bGwiKTsKLSAgICBv
cGVuREJDb25uZWN0aW9uKCk7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5EQkNvbm5lY3Rpb24oKQotewot
ICAgIGV2YWxBbmRMb2coInNlbGYuc3RhdGUgPSAnc3RhcnRpbmcnIik7Ci0gICAgdmFyIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndHdvLXZlcnNpb25zLW9uZS1jb25uZWN0
aW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVu
U3VjY2VzcygpCi17Ci0gICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOwotICAgIGV2YWxBbmRMb2coInNlbGYuc3RhdGUgPSAwIik7Ci0KLSAgICB2YXIg
dmVyc2lvbkNoYW5nZVJlcXVlc3QxID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbigndmVyc2lv
biAxJykiKTsKLSAgICB2ZXJzaW9uQ2hhbmdlUmVxdWVzdDEub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0MS5vbnN1Y2Nlc3MgPSBpblNl
dFZlcnNpb24xOwotCi0gICAgLy8gYW5kIGNvbmN1cnJlbnRseS4uLgotCi0gICAgdmFyIHZlcnNp
b25DaGFuZ2VSZXF1ZXN0MiA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMicp
Iik7Ci0gICAgdmVyc2lvbkNoYW5nZVJlcXVlc3QyLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLSAgICB2ZXJzaW9uQ2hhbmdlUmVxdWVzdDIub25zdWNjZXNzID0gaW5TZXRWZXJz
aW9uMjsKLX0KLQotZnVuY3Rpb24gaW5TZXRWZXJzaW9uMSgpCi17Ci0gICAgZGVidWcoInNldFZl
cnNpb24oKSAjMSBjYWxsYmFjayIpOwotICAgIHRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsK
LSAgICBldmFsQW5kTG9nKCJzZWxmLnN0b3JlMSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCd0ZXN0
LXN0b3JlMScpIik7Ci0gICAgc2hvdWxkQmUoIisrc2VsZi5zdGF0ZSIsICIxIik7Ci0gICAgdmFy
IHJlcSA9IGV2YWxBbmRMb2coInNlbGYuc3RvcmUxLnB1dCgnYWFhJywgMTExKSIpOwotICAgIHJl
cS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxLm9uc3VjY2VzcyA9
IGZ1bmN0aW9uIChlKSB7Ci0gICAgICAgIHNob3VsZEJlKCIrK3NlbGYuc3RhdGUiLCAiMiIpOwot
ICAgICAgICBoYWxmd2F5RG9uZSgpOwotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIGluU2V0VmVyc2lv
bjIoKQotewotICAgIGRlYnVnKCJzZXRWZXJzaW9uKCkgIzIgY2FsbGJhY2siKTsKLSAgICB0cmFu
cyA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Ci0gICAgc2hvdWxkQmUoIisrc2VsZi5zdGF0ZSIsICI0
Iik7Ci0gICAgZXZhbEFuZExvZygic2VsZi5zdG9yZTIgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgn
dGVzdC1zdG9yZTInKSIpOwotCi0KLSAgICB2YXIgcmVxID0gZXZhbEFuZExvZygic2VsZi5zdG9y
ZTIucHV0KCdiYmInLCAyMjIpIik7Ci0gICAgcmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLSAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAgc2hv
dWxkQmUoIisrc2VsZi5zdGF0ZSIsICI1Iik7Ci0gICAgICAgIGhhbGZ3YXlEb25lKCk7Ci0gICAg
fTsKLX0KLQotdmFyIGNvdW50ZXIgPSAwOwotZnVuY3Rpb24gaGFsZndheURvbmUoKSAKLXsKLSAg
ICBjb3VudGVyICs9IDE7Ci0gICAgaWYgKGNvdW50ZXIgPCAyKSB7Ci0gICAgICAgIHNob3VsZEJl
KCIrK3NlbGYuc3RhdGUiLCAiMyIpOwotICAgICAgICBkZWJ1ZygiaGFsZndheSB0aGVyZS4uLiIg
KTsKLSAgICB9IGVsc2UgewotICAgICAgICBzaG91bGRCZSgiKytzZWxmLnN0YXRlIiwgIjYiKTsK
LSAgICAgICAgY2hlY2tSZXN1bHRzKCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBjaGVja1Jlc3Vs
dHMoKSB7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzZWxmLmRiLnZlcnNpb24iLCAidmVy
c2lvbiAyIik7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IHNldFZlcnNpb25Db21wbGV0ZTsKLX0K
LQotZnVuY3Rpb24gc2V0VmVyc2lvbkNvbXBsZXRlKCkKLXsKLSAgICB0cmFucyA9IGV2YWxBbmRM
b2coInNlbGYudHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3Rlc3Qtc3RvcmUxJywgJ3Rlc3Qtc3Rv
cmUyJ10pIik7Ci0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzZWxmLnN0b3JlID0gc2VsZi50cmFu
cy5vYmplY3RTdG9yZSgndGVzdC1zdG9yZTEnKSIpOwotICAgIHJlcSA9IGV2YWxBbmRMb2coInNl
bGYucmVxID0gc2VsZi5zdG9yZS5nZXQoMTExKSIpOwotICAgIHJlcS5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7Ci0g
ICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJhYWEi
KTsKLQotICAgICAgICBzdG9yZSA9IGV2YWxBbmRMb2coInNlbGYuc3RvcmUgPSBzZWxmLnRyYW5z
Lm9iamVjdFN0b3JlKCd0ZXN0LXN0b3JlMicpIik7Ci0gICAgICAgIHJlcSA9IGV2YWxBbmRMb2co
InNlbGYucmVxID0gc2VsZi5zdG9yZS5nZXQoMjIyKSIpOwotICAgICAgICByZXEub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rp
b24gKGUpIHsKLSAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0
LnJlc3VsdCIsICJiYmIiKTsKLSAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgICAgICB9
OwotICAgIH07Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvdHdvLXZlcnNpb24tY2hhbmdlcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4K
IDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ZhbHVl
LXVuZGVmaW5lZC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmFsdWUtdW5k
ZWZpbmVkLmh0bWwKaW5kZXggNjcwMWYwNmE5NTFiYTkwOTFhOTdhMmQ3ZDUyNTc4ZTI2NjJhMGQ4
MS4uMzkzYWI0NDU4MGY4NWE0MWJkMDcxYzliZWYzZDYwY2YwMGQ3YjNkZiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmFsdWUtdW5kZWZpbmVkLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmFsdWUtdW5kZWZpbmVkLmh0bWwKQEAgLTEs
NzYgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3Jj
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4K
LTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiB1bmRlZmluZWQgYXMgcmVj
b3JkIHZhbHVlIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZp
eGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlw
dGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5k
ZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExv
ZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY3JlYXRlQW5kUG9wdWxhdGVP
YmplY3RTdG9yZSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9i
amVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9y
ZSgnZm9vJyk7Iik7Ci0gICAgcmVzdWx0ID0gZXZhbEFuZExvZygicmVzdWx0ID0gb2JqZWN0U3Rv
cmUuYWRkKHVuZGVmaW5lZCwgSW5maW5pdHkpOyIpOwotICAgIHJlc3VsdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGdldFZhbHVlOwot
fQotCi1mdW5jdGlvbiBnZXRWYWx1ZSgpCi17Ci0gICAgcmVzdWx0ID0gZXZhbEFuZExvZygicmVz
dWx0ID0gb2JqZWN0U3RvcmUuZ2V0KEluZmluaXR5KTsiKTsKLSAgICByZXN1bHQub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBjaGVja1Zh
bHVlOwotfQotCi1mdW5jdGlvbiBjaGVja1ZhbHVlKCkKLXsKLSAgICB2YWx1ZSA9IGV2YWxBbmRM
b2coInZhbHVlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICBzaG91bGRCZSgidmFsdWUi
LCAidW5kZWZpbmVkIik7Ci0gICAgcmVzdWx0ID0gZXZhbEFuZExvZygicmVzdWx0ID0gb2JqZWN0
U3RvcmUub3BlbkN1cnNvcigpOyIpOwotICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci0gICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGNoZWNrQ3Vyc29yOwotfQotCi1m
dW5jdGlvbiBjaGVja0N1cnNvcigpCi17Ci0gICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29y
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICBpZiAoY3Vyc29yKSB7Ci0gICAgICAgIHNo
b3VsZEJlKCJjdXJzb3Iua2V5IiwgIkluZmluaXR5Iik7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJz
b3IudmFsdWUiLCAidW5kZWZpbmVkIik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdGVzdEZhaWxl
ZCgiY3Vyc29yIGlzIG51bGwiKTsKLSAgICB9Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQot
dGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdmFsdWUtdW5kZWZp
bmVkLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmFsdWVzLW9kZC10eXBlcy5odG1sIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmFsdWVzLW9kZC10eXBlcy5odG1sCmluZGV4IDJj
ODYzZjM4YWZjMjEzOTM0ZTk5ODQ5NzE3MGEwYzA3NTNmMDJjYzIuLjg0OGFjN2M5ZTg5ZDRmYTJl
Y2ZmYzJiOGMyNmNhMWExNDYyNzdiZGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3ZhbHVlcy1vZGQtdHlwZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi92YWx1ZXMtb2RkLXR5cGVzLmh0bWwKQEAgLTEsODggKzEsMTAgQEAKLTwhRE9D
VFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2Ny
aXB0aW9uKCJUZXN0IEluZGV4ZWREQiBvZGQgdmFsdWUgZGF0YXR5cGVzIik7Ci0KLWZ1bmN0aW9u
IHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2Vs
Zi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNl
IjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3Jp
cHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3Bl
blN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVz
dWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNp
b24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkS2V5MTsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYWRkS2V5
MSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9iamVjdFN0b3Jl
ID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycsIHthdXRvSW5jcmVtZW50
OiB0cnVlfSk7Iik7Ci0KLSAgICBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52
YXMnKTsKLSAgICBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7Ci0gICAgaW1hZ2Vk
YXRhID0gY29udGV4dC5jcmVhdGVJbWFnZURhdGEoMSwgMSk7Ci0gICAgdmFsaWRUeXBlcyA9IFt7
IGRlc2NyaXB0aW9uOiAncmVnZXhwJywgICAgdmFsdWU6IG5ldyBSZWdFeHAoJ1xcXFwnKSB9LAot
ICAgICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ2RhdGUnLCAgICAgIHZhbHVlOiBuZXcg
RGF0ZSgwKSB9LAotICAgICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ29iamVjdCcsICAg
IHZhbHVlOiBuZXcgT2JqZWN0KCkgfSwKLSAgICAgICAgICAgICAgICAgIHsgZGVzY3JpcHRpb246
ICdpbWFnZWRhdGEnLCB2YWx1ZTogaW1hZ2VkYXRhIH0sCi0gICAgXTsKLSAgICBuZXh0VG9BZGQg
PSAwOwotICAgIGFkZERhdGEoKTsKLX0KLQotZnVuY3Rpb24gYWRkRGF0YSgpCi17Ci0gICAgZGVi
dWcoImFkZGluZyAiICsgdmFsaWRUeXBlc1tuZXh0VG9BZGRdLmRlc2NyaXB0aW9uICsgIiB2YWx1
ZSIpOwotICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCh2YWxpZFR5cGVz
W25leHRUb0FkZF0udmFsdWUpIik7Ci0gICAgcmVzdWx0Lm9uc3VjY2VzcyA9ICsrbmV4dFRvQWRk
IDwgdmFsaWRUeXBlcy5sZW5ndGggPyBhZGREYXRhIDogb3BlbkFDdXJzb3I7Ci0gICAgcmVzdWx0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlbkFD
dXJzb3IoKQotewotICAgIHZhbHVlSW5kZXggPSAwOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9
IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUudG9TdHJpbmcoKSIsICJ2YWxpZFR5cGVzW3ZhbHVl
SW5kZXhdLnZhbHVlLnRvU3RyaW5nKCkiKTsKLSAgICAgICAgICAgIGlmICh2YWx1ZUluZGV4ID09
IDEpIHsKLSAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLnRvVVRDU3RyaW5n
KCkiLCAiJ1RodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDAgR01UJyIpOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgaWYgKHZhbHVlSW5kZXggPT0gMykgewotICAgICAgICAgICAgICAgIHNob3Vs
ZEJlKCJjdXJzb3IudmFsdWUud2lkdGgiLCAiMSIpOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7Ci0gICAgICAgICAgICBldmFsQW5k
TG9nKCJ2YWx1ZUluZGV4Kys7Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotCi10ZXN0KCk7Ci0K
LTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy92YWx1ZXMtb2RkLXR5cGVzLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1jaGFuZ2UtYWJvcnQtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1jaGFuZ2UtYWJvcnQtZXhwZWN0
ZWQudHh0CmluZGV4IDMxNWQ0ZDU3Y2U4NWIxYzlmZTU4OWJiOGU3YzExMGQ5NTU3MmMwMDUuLjMx
ZWJkNjEzYWJlNjdmNDRhZjA3YjM4NTJlMmY5NDIxMjA3NmIwMmIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWFib3J0LWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9uLWNoYW5nZS1hYm9y
dC1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBACi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNzY6
IFVuY2F1Z2h0IEVycm9yOiBUaGlzIHNob3VsZCAqTk9UKiBiZSBjYXVnaHQhCitDT05TT0xFIE1F
U1NBR0U6IGxpbmUgNzE6IFVuY2F1Z2h0IEVycm9yOiBUaGlzIHNob3VsZCAqTk9UKiBiZSBjYXVn
aHQhCiBFbnN1cmUgdGhhdCBhYm9ydGVkIFZFUlNJT05fQ0hBTkdFIHRyYW5zYWN0aW9ucyBhcmUg
Y29tcGxldGVseSByb2xsZWQgYmFjawogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9uLWNoYW5nZS1hYm9y
dC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1jaGFuZ2UtYWJv
cnQuaHRtbAppbmRleCBjZGM5YWNhMGUzMTgxNzExMTM4MDg0MWIyMzU1NDQwZmE1YjJlMjE0Li41
N2RlMDA5MGE1NmQ1OTU1NmFiNDliOTlkNTJmODQ1MWY5YzNjMmVhIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9uLWNoYW5nZS1hYm9ydC5odG1sCisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWFib3J0Lmh0bWwK
QEAgLTEsOTkgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3Jp
cHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8
Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJFbnN1cmUgdGhhdCBhYm9ydGVkIFZFUlNJ
T05fQ0hBTkdFIHRyYW5zYWN0aW9ucyBhcmUgY29tcGxldGVseSByb2xsZWQgYmFjayIpOwotCi0K
LWZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICBvcGVu
REJDb25uZWN0aW9uKCk7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5EQkNvbm5lY3Rpb24oKQotewotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndmVyc2lvbi1jaGFuZ2UtYWJv
cnQnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5T
dWNjZXNzKCkKLXsKLSAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7Ci0gICAgZGVidWcoIiIpOwotCi0gICAgZXZhbEFuZExvZygidmNyZXEgPSBkYi5z
ZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOwotICAgIHZjcmVxLm9uc3VjY2VzcyA9IGluU2V0VmVy
c2lvbjE7Ci0gICAgdmNyZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQot
Ci1mdW5jdGlvbiBpblNldFZlcnNpb24xKCkKLXsKLSAgICBkZWJ1Zygic2V0VmVyc2lvbjEoKSBj
YWxsYmFjayIpOwotICAgIHNob3VsZEJlVHJ1ZSgidmNyZXEucmVzdWx0IGluc3RhbmNlb2YgSURC
VHJhbnNhY3Rpb24iKTsKLSAgICB0cmFucyA9IHZjcmVxLnJlc3VsdDsKLSAgICB0cmFucy5vbmFi
b3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBzZXRWZXJzaW9uMUNv
bXBsZXRlOwotCi0gICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgn
c3RvcmUxJykiKTsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvbjFDb21wbGV0ZSgpCi17Ci0gICAg
ZGVidWcoInNldFZlcnNpb24xIGNvbXBsZXRlIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJkYi52ZXJzaW9uIiwgInZlcnNpb24gMSIpOwotICAgIGRlYnVnKCIiKTsKLQotICAgIGV2YWxB
bmRMb2coInZjcmVxID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAyJykiKTsKLSAgICB2Y3JlcS5v
bnN1Y2Nlc3MgPSBpblNldFZlcnNpb24yOwotICAgIHZjcmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gaW5TZXRWZXJzaW9uMigpCi17Ci0gICAgZGVi
dWcoInNldFZlcnNpb24yKCkgY2FsbGJhY2siKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
ImRiLnZlcnNpb24iLCAidmVyc2lvbiAyIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ2Y3JlcS5yZXN1
bHQgaW5zdGFuY2VvZiBJREJUcmFuc2FjdGlvbiIpOwotICAgIHRyYW5zID0gdmNyZXEucmVzdWx0
OwotICAgIHRyYW5zLm9uYWJvcnQgPSBzZXRWZXJzaW9uMkFib3J0OwotICAgIHRyYW5zLm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gdW5l
eHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7Ci0KLSAgICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmRl
bGV0ZU9iamVjdFN0b3JlKCdzdG9yZTEnKSIpOwotICAgIGV2YWxBbmRMb2coInN0b3JlID0gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlMicpIik7Ci0KLSAgICAvLyBFbnN1cmUgdGhlIHRlc3Qg
aGFybmVzcyBlcnJvciBoYW5kbGVyIGlzIG5vdCBpbnZva2VkLgotICAgIHNlbGYub3JpZ2luYWxX
aW5kb3dPbkVycm9yID0gc2VsZi5vbmVycm9yOwotICAgIHNlbGYub25lcnJvciA9IG51bGw7Ci0K
LSAgICBkZWJ1ZygicmFpc2luZyBleGNlcHRpb24iKTsKLSAgICB0aHJvdyBuZXcgRXJyb3IoIlRo
aXMgc2hvdWxkICpOT1QqIGJlIGNhdWdodCEiKTsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvbjJB
Ym9ydCgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJzZXRWZXJzaW9uMkFib3J0KCkg
Y2FsbGJhY2siKTsKLQotICAgIC8vIFJlc3RvcmUgdGVzdCBoYXJuZXNzIGVycm9yIGhhbmRsZXIu
Ci0gICAgc2VsZi5vbmVycm9yID0gc2VsZi5vcmlnaW5hbFdpbmRvd09uRXJyb3I7Ci0KLSAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLnZlcnNpb24iLCAidmVyc2lvbiAxIik7Ci0gICAgc2hv
dWxkQmVUcnVlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCdzdG9yZTEnKSIpOwotICAg
IHNob3VsZEJlRmFsc2UoImRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJ3N0b3JlMicpIik7
Ci0KLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvdmVyc2lvbi1jaGFuZ2UtYWJvcnQuanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi92ZXJzaW9uLWNoYW5nZS1leGNsdXNpdmUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWV4Y2x1c2l2ZS5odG1sCmluZGV4IDQ5NDk2ZGVi
MjRhYjk4N2QxM2E2ODE0MTRiNmVlNThjM2Y5ZWU1MzIuLjRhMGU0NjJhNjdhYjlhMTI4MzEwMWM3
NmY4NjQ2Nzg5ODU1NGQ5ZmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3ZlcnNpb24tY2hhbmdlLWV4Y2x1c2l2ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWV4Y2x1c2l2ZS5odG1sCkBAIC00LDc3ICs0LDcg
QEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4K
IDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIkVuc3VyZSBWRVJTSU9OX0NIQU5HRSB0
cmFuc2FjdGlvbiBkb2Vzbid0IHJ1biBjb25jdXJyZW50bHkgd2l0aCBvdGhlciB0cmFuc2FjdGlv
bnMiKTsKLQotCi1mdW5jdGlvbiB0ZXN0KCkgewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7
Ci0gICAgb3BlbkRCQ29ubmVjdGlvbigpOwotfQotCi1mdW5jdGlvbiBvcGVuREJDb25uZWN0aW9u
KCkKLXsKLSAgICBldmFsQW5kTG9nKCJzZWxmLnN0YXRlID0gJ3N0YXJ0aW5nJyIpOwotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndmVyc2lvbi1jaGFuZ2UtZXhjbHVz
aXZlJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVu
U3VjY2VzcygpCi17Ci0gICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOwotCi0gICAgZGVidWcoImNhbGxpbmcgc2V0VmVyc2lvbigpIC0gY2FsbGJhY2sg
c2hvdWxkIHJ1biBpbW1lZGlhdGVseSIpOwotICAgIHZhciB2ZXJzaW9uQ2hhbmdlUmVxdWVzdCA9
IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7Ci0gICAgdmVyc2lvbkNo
YW5nZVJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHZlcnNp
b25DaGFuZ2VSZXF1ZXN0Lm9uc3VjY2VzcyA9IGluU2V0VmVyc2lvbjsKLQotICAgIC8vIGFuZCBj
b25jdXJyZW50bHkuLi4KLQotICAgIGRlYnVnKCJjYWxsaW5nIG9wZW4oKSAtIGNhbGxiYWNrIHNo
b3VsZCB3YWl0IHVudGlsIFZFUlNJT05fQ0hBTkdFIHRyYW5zYWN0aW9uIGlzIGNvbXBsZXRlIik7
Ci0gICAgdmFyIG9wZW5SZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3ZlcnNp
b24tY2hhbmdlLWV4Y2x1c2l2ZScpIik7Ci0gICAgb3BlblJlcXVlc3Qub25zdWNjZXNzID0gb3Bl
bkFnYWluU3VjY2VzczsKLSAgICBvcGVuUmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGluU2V0VmVyc2lvbigpCi17Ci0gICAgZGVidWcoInNl
dFZlcnNpb24oKSBjYWxsYmFjayIpOwotICAgIGRlYnVnKCJzdGFydGluZyB3b3JrIGluIFZFUlNJ
T05fQ0hBTkdFIHRyYW5zYWN0aW9uIik7Ci0gICAgZXZhbEFuZExvZygic2VsZi5zdGF0ZSA9ICdW
RVJTSU9OX0NIQU5HRSBzdGFydGVkJyIpOwotCi0gICAgc2VsZi5zdG9yZSA9IGV2YWxBbmRMb2co
InN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Rlc3Qtc3RvcmUnKSIpOwotICAgIHNlbGYu
Y291bnQgPSAwOwotICAgIGRvX2FzeW5jX3B1dHMoKTsKLQotICAgIGZ1bmN0aW9uIGRvX2FzeW5j
X3B1dHMoKSB7Ci0gICAgICAgIHZhciByZXEgPSBldmFsQW5kTG9nKCJzdG9yZS5wdXQoIiArIGNv
dW50ICsgIiwgIiArIGNvdW50ICsgIikiKTsKLSAgICAgICAgcmVxLm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7
Ci0gICAgICAgICAgICBkZWJ1ZygiaW4gcHV0J3Mgb25zdWNjZXNzIik7Ci0gICAgICAgICAgICBp
ZiAoKytzZWxmLmNvdW50IDwgMTApIHsKLSAgICAgICAgICAgICAgICBkb19hc3luY19wdXRzKCk7
Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGRlYnVnKCJlbmRpbmcgd29y
ayBpbiBWRVJTSU9OX0NIQU5HRSB0cmFuc2FjdGlvbiIpOwotICAgICAgICAgICAgICAgIGV2YWxB
bmRMb2coInNlbGYuc3RhdGUgPSAnVkVSU0lPTl9DSEFOR0UgZmluaXNoZWQnIik7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH07Ci0gICAgfQotfQotCi1mdW5jdGlvbiBvcGVuQWdhaW5TdWNjZXNz
KCkKLXsKLSAgICBkZWJ1Zygib3BlbigpIGNhbGxiYWNrIC0gdGhpcyBzaG91bGQgYXBwZWFyIGFm
dGVyIFZFUlNJT05fQ0hBTkdFIHRyYW5zYWN0aW9uIGVuZHMiKTsKLSAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoInNlbGYuc3RhdGUiLCAiVkVSU0lPTl9DSEFOR0UgZmluaXNoZWQiKTsKLSAgICBm
aW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy92ZXJzaW9uLWNoYW5nZS1leGNsdXNpdmUuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi92ZXJzaW9uY2hhbmdlcmVxdWVzdC1hY3RpdmVkb21vYmplY3QuaHRtbCBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb25jaGFuZ2VyZXF1ZXN0LWFjdGl2ZWRvbW9iamVj
dC5odG1sCmluZGV4IDlhN2MzNTBkYjUyYmNkYjBlM2NhNDA4ZDM4YmM4NmNmOGZhNzUxNGQuLjU0
NzQ1ZDcwMTZiMDU2OTc0ODdmZmEwODgwMjNmNTVmZGE2YjM1NjcgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb25jaGFuZ2VyZXF1ZXN0LWFjdGl2ZWRvbW9i
amVjdC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb25jaGFu
Z2VyZXF1ZXN0LWFjdGl2ZWRvbW9iamVjdC5odG1sCkBAIC0xLDc2ICsxLDEwIEBACi08IURPQ1RZ
UEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9z
aGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlw
dGlvbigiRW5zdXJlIHRoYXQgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Qgb2JqZWN0cyBhcmUgbm90
IEdDJ2QgaWYgdGhleSBoYXZlIHBlbmRpbmcgZXZlbnRzIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKSB7
Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIGRlYnVnKCIiKTsKLSAgICBldmFs
QW5kTG9nKCJzZWxmLmRibmFtZSA9ICd2ZXJzaW9uY2hhbmdlcmVxdWVzdC1hY3RpdmVkb21vYmpl
Y3QnIik7Ci0KLSAgICB0ZXN0RGVsZXRlRGF0YWJhc2UoKTsKLX0KLQotZnVuY3Rpb24gdGVzdERl
bGV0ZURhdGFiYXNlKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInRlc3REZWxldGVE
YXRhYmFzZSgpOiIpOwotICAgIC8vIE5PVEU6IGRlbGV0ZVJlcXVlc3QgaXMgbG9jYWwgdmFyaWFi
bGUgc28gaXQgaXMgbm90IGNhcHR1cmVkIGluIGdsb2JhbCBzY29wZS4KLSAgICB2YXIgZGVsZXRl
UmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShzZWxmLmRibmFt
ZSkiKTsKLSAgICBkZWxldGVSZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLSAgICBkZWxldGVSZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9ja2VkQ2FsbGJh
Y2s7Ci0gICAgZGVsZXRlUmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgZGVsZXRlU3Vj
Y2VzcygpOyB9OwotICAgIGRlbGV0ZVJlcXVlc3QgPSBudWxsOwotICAgIGlmIChzZWxmLmdjKSB7
Ci0gICAgICAgIGV2YWxBbmRMb2coInNlbGYuZ2MoKSIpOwotICAgIH0KLX0KLQotZnVuY3Rpb24g
ZGVsZXRlU3VjY2VzcygpCi17Ci0gICAgdGVzdFBhc3NlZCgiZGVsZXRlRGF0YWJhc2UncyBJREJW
ZXJzaW9uQ2hhbmdlUmVxdWVzdC5vbnN1Y2Nlc3MgZXZlbnQgZmlyZWQiKTsKLSAgICB0ZXN0U2V0
VmVyc2lvbigpOwotfQotCi1mdW5jdGlvbiB0ZXN0U2V0VmVyc2lvbigpCi17Ci0gICAgZGVidWco
IiIpOwotICAgIGRlYnVnKCJ0ZXN0U2V0VmVyc2lvbigpOiIpOwotCi0gICAgLy8gTk9URTogVGhp
cyBpcyBqdXN0IGFuIElEQlJlcXVlc3QsIGl0IGNhbiBiZSBnbG9iYWwuCi0gICAgZXZhbEFuZExv
Zygib3BlblJlcXVlc3QgPSBpbmRleGVkREIub3BlbihzZWxmLmRibmFtZSkiKTsKLSAgICBvcGVu
UmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgb3BlblJlcXVl
c3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewotICAgICAgICBldmFsQW5kTG9nKCJkYiA9IG9w
ZW5SZXF1ZXN0LnJlc3VsdCIpOwotCi0gICAgICAgIC8vIE5PVEU6IHZlcnNpb25SZXF1ZXN0IGlz
IGxvY2FsIHZhcmlhYmxlIHNvIGl0IGlzIG5vdCBjYXB0dXJlZCBpbiBnbG9iYWwgc2NvcGUuCi0g
ICAgICAgIHZhciB2ZXJzaW9uUmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJzEn
KSIpOwotICAgICAgICB2ZXJzaW9uUmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci0gICAgICAgIHZlcnNpb25SZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9j
a2VkQ2FsbGJhY2s7Ci0gICAgICAgIHZlcnNpb25SZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KCkgeyB2ZXJzaW9uU3VjY2VzcygpOyB9OwotICAgICAgICB2ZXJzaW9uUmVxdWVzdCA9IG51bGw7
Ci0gICAgICAgIGlmIChzZWxmLmdjKSB7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJzZWxmLmdj
KCkiKTsKLSAgICAgICAgfQotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIHZlcnNpb25TdWNjZXNzKCkK
LXsKLSAgICB0ZXN0UGFzc2VkKCJzZXRWZXJzaW9uJ3MgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Qu
b25zdWNjZXNzIGV2ZW50IGZpcmVkIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXRlc3Qo
KTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3ZlcnNpb25jaGFuZ2VyZXF1
ZXN0LWFjdGl2ZWRvbW9iamVjdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRt
bD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133931</attachid>
            <date>2012-03-26 16:49:24 -0700</date>
            <delta_ts>2012-03-26 20:51:27 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-81440-20120326164922.patch</filename>
            <type>text/plain</type>
            <size>962385</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMTUyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjYyZWYwZjY2YmFjMzM5NTE3Yjdk
ODBlNWM5ZTdlOGUzMTZkYzg0My4uYzg3ZjFhMjUwZGY0NDU4MjU2MzA2MDg0ZWJhYTExOWIzYWRk
OWY4YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTAzLTIzICBEYXZpZCBHcm9nYW4gIDxk
Z3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBFeHRyYWN0IGxvZ2ljIG9mIGluZGV4ZWRk
YiBodG1sIGxheW91dCB0ZXN0cyBpbnRvIGpzIGZpbGVzIHRoYXQgY2FuCisgICAgICAgIGJlIHJ1
biBmcm9tIGVpdGhlciBhIHdvcmtlciBvciBhIHdpbmRvdy4KKworICAgICAgICBUaGUgdHdvIGNo
YW5nZWQgLWV4cGVjdGVkLnR4dCBmaWxlcyBhcmUganVzdCBmb3IgbGluZSBudW1iZXJzIGluIEpT
CisgICAgICAgIGVycm9yIG1lc3NhZ2VzLgorCisgICAgICAgIFNraXBwZWQgd2VyZToKKyAgICAg
ICAgLSB0cmFuc2FjdGlvbi1hYm9ydC13aXRoLWpzLXJlY3Vyc2lvbi5odG1sCisgICAgICAgIC0g
dHJhbnNhY3Rpb24tYWJvcnQtd2l0aC1qcy1yZWN1cnNpb24tY3Jvc3MtZnJhbWUuaHRtbAorICAg
ICAgICAtIG5vYmxvYnMuaHRtbAorICAgICAgICAtIHN0cnVjdHVyZWQtY2xvbmUuaHRtbAorICAg
ICAgICAtIHR1dG9yaWFsLmh0bWwKKyAgICAgICAgVGhlIGZpcnN0IGZvdXIgc2ltdWxhdGUgbW91
c2UgZXZlbnRzIGFuZCB0aGUgbGFzdCBpc24ndCByZWFsbHkgYSB0ZXN0LgorICAgICAgICBzdHJ1
Y3R1cmVkLWNsb25lLmh0bWwgd2lsbCBiZSByZWZhY3RvcmVkIGZvciB3b3JrZXIgY29tcGF0aWJp
bGl0eSBpbiBhCisgICAgICAgIGZ1dHVyZSBwYXRjaC4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE0NDAKKworICAgICAgICBSZXZpZXdlZCBieSBU
b255IENoYW5nLgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY29uc3RhbnRzLmh0bWw6
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlLWFuZC1yZW1vdmUtb2JqZWN0LXN0
b3JlLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlLW9iamVjdC1zdG9y
ZS1vcHRpb25zLmh0bWw6CisgICAgICAgIC4uLiBldmVyeSBodG1sIGZpbGUgaW4gc3RvcmFnZS9p
bmRleGVkZGIgZXhjZXB0IHRoZSBvbmVzIGxpc3RlZCBhYm92ZQorCisgICAgICAgICogc3RvcmFn
ZS9pbmRleGVkZGIvZXhjZXB0aW9uLWluLWV2ZW50LWFib3J0cy1leHBlY3RlZC50eHQ6CisgICAg
ICAgIGxpbmUgbnVtYmVyIGluIGphdmFzY3JpcHQgZXJyb3IgbWVzc2FnZSBjaGFuZ2VkCisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1jaGFuZ2UtYWJvcnQtZXhwZWN0ZWQudHh0
OgorICAgICAgICBsaW5lIG51bWJlciBpbiBqYXZhc2NyaXB0IGVycm9yIG1lc3NhZ2UgY2hhbmdl
ZAorCiAyMDEyLTAzLTI2ICBPamFuIFZhZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgVGhlIGNzczMvc2VsZWN0b3JzMy94bWwgdGVzdHMgYXJlIGZsYWt5IG9uIExlb3BhcmQgYXMg
d2VsbC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2NvbnN0YW50
cy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY29uc3RhbnRzLmh0bWwKaW5k
ZXggZmU4YWNhYjM4MTk1Y2RjYmQ3OTIwODg3YTBiZjBjNGRhNzJiNGM0MS4uZDdmMGYxNDRkZmU3
YmE3OGE2NDI0YjFlMGE3NTMzOTJmMGRiY2ZiMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvY29uc3RhbnRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvY29uc3RhbnRzLmh0bWwKQEAgLTQsNDQgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJl
c291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0Pgot
Ci1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBjb25zdGFudHMuIik7Ci0KLWZ1bmN0aW9u
IHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgc2hvdWxkQmUoIklE
QkRhdGFiYXNlRXhjZXB0aW9uLlVOS05PV05fRVJSIiwgIjEiKTsKLSAgICBzaG91bGRCZSgiSURC
RGF0YWJhc2VFeGNlcHRpb24uTk9OX1RSQU5TSUVOVF9FUlIiLCAiMiIpOwotICAgIHNob3VsZEJl
KCJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIiwgIjMiKTsKLSAgICBzaG91bGRC
ZSgiSURCRGF0YWJhc2VFeGNlcHRpb24uQ09OU1RSQUlOVF9FUlIiLCAiNCIpOwotICAgIHNob3Vs
ZEJlKCJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIsICI1Iik7Ci0gICAgc2hvdWxkQmUo
IklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9BTExPV0VEX0VSUiIsICI2Iik7Ci0gICAgc2hvdWxk
QmUoIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIsICI3Iik7
Ci0gICAgc2hvdWxkQmUoIklEQkRhdGFiYXNlRXhjZXB0aW9uLkFCT1JUX0VSUiIsICI4Iik7Ci0g
ICAgc2hvdWxkQmUoIklEQkRhdGFiYXNlRXhjZXB0aW9uLlJFQURfT05MWV9FUlIiLCAiOSIpOwot
ICAgIHNob3VsZEJlKCJJREJEYXRhYmFzZUV4Y2VwdGlvbi5USU1FT1VUX0VSUiIsICIxMCIpOwot
ICAgIHNob3VsZEJlKCJJREJEYXRhYmFzZUV4Y2VwdGlvbi5RVU9UQV9FUlIiLCAiMTEiKTsKLSAg
ICBzaG91bGRCZSgiSURCRGF0YWJhc2VFeGNlcHRpb24uVkVSX0VSUiIsICIxMiIpOwotCi0gICAg
c2hvdWxkQmUoIklEQlJlcXVlc3QuTE9BRElORyIsICIxIik7Ci0gICAgc2hvdWxkQmUoIklEQlJl
cXVlc3QuRE9ORSIsICIyIik7Ci0KLSAgICBzaG91bGRCZSgiSURCQ3Vyc29yLk5FWFQiLCAiMCIp
OwotICAgIHNob3VsZEJlKCJJREJDdXJzb3IuTkVYVF9OT19EVVBMSUNBVEUiLCAiMSIpOwotICAg
IHNob3VsZEJlKCJJREJDdXJzb3IuUFJFViIsICIyIik7Ci0gICAgc2hvdWxkQmUoIklEQkN1cnNv
ci5QUkVWX05PX0RVUExJQ0FURSIsICIzIik7Ci0KLSAgICBzaG91bGRCZSgiSURCVHJhbnNhY3Rp
b24uUkVBRF9PTkxZIiwgIjAiKTsKLSAgICBzaG91bGRCZSgiSURCVHJhbnNhY3Rpb24uUkVBRF9X
UklURSIsICIxIik7Ci0gICAgc2hvdWxkQmUoIklEQlRyYW5zYWN0aW9uLlZFUlNJT05fQ0hBTkdF
IiwgIjIiKTsKLX0KLQotdGVzdCgpOwotCi1maW5pc2hKU1Rlc3QoKTsKLQotPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NvbnN0YW50cy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwv
Ym9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2NyZWF0ZS1hbmQtcmVtb3ZlLW9iamVjdC1zdG9yZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvY3JlYXRlLWFuZC1yZW1vdmUtb2JqZWN0LXN0b3JlLmh0bWwKaW5kZXggNzE2
OTVjMGQ1NzhkZGVjZmJjYTY1YmI1YTI2ZTBiZGI2Zjc0ODczZS4uN2M4OWY1ZTk5YzZiNjg0NDM0
N2Q0NmJhZTU3M2I4NDA5Yzc0NWFiZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvY3JlYXRlLWFuZC1yZW1vdmUtb2JqZWN0LXN0b3JlLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlLWFuZC1yZW1vdmUtb2JqZWN0LXN0b3JlLmh0
bWwKQEAgLTQsNzIgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwv
c2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJ
bmRleGVkREIncyBjcmVhdGUgYW5kIHJlbW92ZU9iamVjdFN0b3JlIik7Ci0KLWZ1bmN0aW9uIHRl
c3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImluZGV4ZWREQi5vcGVuKCdjcmVhdGUtYW5kLXJlbW92ZS1vYmplY3Qtc3RvcmUnKSIp
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNz
KCkKLXsKLSAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKLSAgICBzZWxmLmRiID0gZXZhbEFu
ZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgdGVzdENyZWF0ZUFuZFJlbW92
ZSgpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXN1bHQgPSBkYi5zZXRWZXJzaW9uKCd2
ZXJzaW9uIDEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB0ZXN0Q3Jl
YXRlQW5kUmVtb3ZlKCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RDcmVhdGVBbmRSZW1vdmUoKQotewot
ICAgIGRlYnVnKCJUcnlpbmcgY3JlYXRlIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbign
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoInNvbWUgb3MiKScsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5O
T1RfQUxMT1dFRF9FUlIiKTsKLSAgICBkZWJ1ZygiVHJ5aW5nIHJlbW92ZSIpOwotICAgIGV2YWxB
bmRFeHBlY3RFeGNlcHRpb24oJ2RiLmRlbGV0ZU9iamVjdFN0b3JlKCJzb21lIG9zIiknLCAiSURC
RGF0YWJhc2VFeGNlcHRpb24uTk9UX0FMTE9XRURfRVJSIik7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFu
RGF0YWJhc2UoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBvcyA9
IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCd0bXAnKSIpOwotICAgIGV2YWxBbmRF
eHBlY3RFeGNlcHRpb24oImRiLmNyZWF0ZU9iamVjdFN0b3JlKCd0bXAnKSIsICJJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5DT05TVFJBSU5UX0VSUiIpOwotICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25j
b21wbGV0ZSA9IHNldFZlcnNpb25Db21wbGV0ZTsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvbkNv
bXBsZXRlKCkKLXsKLSAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rp
b24oWyd0bXAnXSkiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3Rv
cmUoJ3RtcCcpLmdldCgwKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdHJ5T25jZU1vcmU7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1
bmN0aW9uIHRyeU9uY2VNb3JlKCkKLXsKLSAgICBzaG91bGRCZVVuZGVmaW5lZCgiZXZlbnQudGFy
Z2V0LnJlc3VsdCIpOwotCi0gICAgdGVzdENyZWF0ZUFuZFJlbW92ZSgpOwotCi0gICAgZGVidWco
IlRyeWluZyBjcmVhdGUgd2l0aCBzdG9yZSB0aGF0IGFscmVhZHkgZXhpc3RzIik7Ci0gICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3RtcCcpIiwgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLk5PVF9BTExPV0VEX0VSUiIpOwotICAgIGRlYnVnKCJUcnlpbmcgcmVt
b3ZlIHdpdGggc3RvcmUgdGhhdCBhbHJlYWR5IGV4aXN0cyIpOwotICAgIGV2YWxBbmRFeHBlY3RF
eGNlcHRpb24oImRiLmRlbGV0ZU9iamVjdFN0b3JlKCd0bXAnKSIsICJJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5OT1RfQUxMT1dFRF9FUlIiKTsKLQotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRl
c3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NyZWF0ZS1hbmQtcmVt
b3ZlLW9iamVjdC1zdG9yZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZS1vYmplY3Qt
c3RvcmUtb3B0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRl
LW9iamVjdC1zdG9yZS1vcHRpb25zLmh0bWwKaW5kZXggZGRhYjBmMmM4YWQ4OWQyYjY5YTYyZjM2
MDk1YzE2YTA5YTZiN2MzNS4uNzdjMzMzYWJlOWRhYzY5NzAxZTZkMTAyYjg1ZjVkYzFmZTcxYWFl
OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlLW9iamVj
dC1zdG9yZS1vcHRpb25zLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
Y3JlYXRlLW9iamVjdC1zdG9yZS1vcHRpb25zLmh0bWwKQEAgLTQsODcgKzQsNyBAQAogPHNjcmlw
dCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08
c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBjcmVhdGVPYmplY3RTdG9y
ZSdzIHZhcmlvdXMgb3B0aW9ucyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVW
ZW5kb3JQcmVmaXhlcygpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5v
cGVuKCdjcmVhdGUtb2JqZWN0LXN0b3JlLW9wdGlvbnMnLCAnZGVzY3JpcHRpb24nKSIpOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsK
LSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEn
KSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY2xlYW5E
YXRhYmFzZSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIGV2YWxB
bmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdhJywge2tleVBhdGg6ICdhJ30pIik7Ci0gICAg
ZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2InKSIpOwotCi0gICAgZGVidWcoImRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdjJywge2F1dG9JbmNyZW1lbnQ6IHRydWV9KTsiKTsKLSAgICBk
Yi5jcmVhdGVPYmplY3RTdG9yZSgnYycsIHthdXRvSW5jcmVtZW50OiB0cnVlfSk7Ci0gICAgZXZl
bnQudGFyZ2V0LnJlc3VsdC5vbmNvbXBsZXRlID0gc2V0VmVyc2lvbkNvbXBsZXRlOwotfQotCi1m
dW5jdGlvbiBzZXRWZXJzaW9uQ29tcGxldGUoKQotewotICAgIHRyYW5zID0gZXZhbEFuZExvZygi
dHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ2EnLCAnYiddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dS
SVRFKSIpOwotICAgIHNob3VsZEJlKCJ0cmFucy5tb2RlIiwgIklEQlRyYW5zYWN0aW9uLlJFQURf
V1JJVEUiKTsKLQotICAgIHJlcSA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdhJyku
cHV0KHsnYSc6IDB9KSIpOwotICAgIHJlcS5vbnN1Y2Nlc3MgPSBwdXRCOwotICAgIHJlcS5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uQ2xhc3MoImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdkJywgJ2JhcicpOyIsICJUeXBlRXJyb3Ii
KTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uQ2xhc3MoImRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdlJywgZmFsc2UpOyIsICJUeXBlRXJyb3IiKTsKLX0KLQotZnVuY3Rpb24gcHV0QigpCi17Ci0g
ICAgcmVxID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2InKS5wdXQoeydhJzogMH0s
IDApIik7ICAvLyBPT1BTCi0gICAgcmVxLm9uc3VjY2VzcyA9IGdldEE7Ci0gICAgcmVxLm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZ2V0QSgpCi17Ci0g
ICAgcmVxID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2EnKS5nZXQoMCkiKTsKLSAg
ICByZXEub25zdWNjZXNzID0gZ2V0QjsKLSAgICByZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBnZXRCKCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQu
dGFyZ2V0LnJlc3VsdC5hIiwgInthOiAwfSIpOwotCi0gICAgcmVxID0gZXZhbEFuZExvZygidHJh
bnMub2JqZWN0U3RvcmUoJ2InKS5nZXQoMCkiKTsKLSAgICByZXEub25zdWNjZXNzID0gY2hlY2tC
OwotICAgIHJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0
aW9uIGNoZWNrQigpCi17Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQuYSIsICJ7
YTogMH0iKTsKLQotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NyZWF0ZS1vYmplY3Qtc3RvcmUtb3B0aW9ucy5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZU9iamVjdFN0b3JlLW5hbWUtYXJndW1lbnQt
cmVxdWlyZWQuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZU9iamVj
dFN0b3JlLW5hbWUtYXJndW1lbnQtcmVxdWlyZWQuaHRtbAppbmRleCAyNzJmYzQzMDlhY2NkNTY0
ZjJiZmM3ZmQxMWRiOTZjNzE2ZTI2ZThjLi5lZThmYThlNzdkMjRkZWY4ODBlNzE2ZTZkOTYxZTg3
OTQ0MzAxYjU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jcmVh
dGVPYmplY3RTdG9yZS1uYW1lLWFyZ3VtZW50LXJlcXVpcmVkLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlT2JqZWN0U3RvcmUtbmFtZS1hcmd1bWVudC1yZXF1
aXJlZC5odG1sCkBAIC0xLDQ2ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhl
YWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0Pgog
PC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIg
Y3JlYXRlT2JqZWN0U3RvcmUgbmFtZSBhcmd1bWVudCBpcyByZXF1aXJlZCIpOwotCi1mdW5jdGlv
biB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNl
bGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFz
ZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2Ny
aXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9w
ZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJz
aW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2Jq
ZWN0U3RvcmU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQotewotICAgIGRl
bGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBzaG91bGRUaHJvdygiZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoKTsiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jcmVhdGVPYmplY3RTdG9yZS1uYW1lLWFy
Z3VtZW50LXJlcXVpcmVkLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlT2JqZWN0U3Rv
cmUtbnVsbC1uYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jcmVhdGVP
YmplY3RTdG9yZS1udWxsLW5hbWUuaHRtbAppbmRleCA0YjI1ZTE0NGE4ODA1MDgwMmJlMjVmOGEx
YWM3YWNhYzBjMDEwOWU5Li5iMmFhOGEzMDgxYTEwMGNkNTExYzE1ZTVkZmNlMTIxNTc5MTc3Y2Zj
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jcmVhdGVPYmplY3RT
dG9yZS1udWxsLW5hbWUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9j
cmVhdGVPYmplY3RTdG9yZS1udWxsLW5hbWUuaHRtbApAQCAtMSw0NyArMSwxMCBAQAotPCFET0NU
WVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
c2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3Jp
cHRpb24oIlRlc3QgSW5kZXhlZERCIGNyZWF0ZU9iamVjdFN0b3JlIG51bGwgaGFuZGxpbmciKTsK
LQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAg
IG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRl
c3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbihu
YW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNz
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1m
dW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
ZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQ
b3B1bGF0ZU9iamVjdFN0b3JlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkK
LXsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBl
dmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZShudWxsKTsiKTsKLSAgICBzaG91bGRCZSgi
b2JqZWN0U3RvcmUubmFtZSIsICInbnVsbCciKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQot
Ci10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jcmVhdGVPYmpl
Y3RTdG9yZS1udWxsLW5hbWUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItY29udGlu
dWUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1jb250aW51ZS5o
dG1sCmluZGV4IDcxMmNkMmIzOWQ2MmRhMjc5M2FmZTY2MjMwMTU2Y2NlMTMxMDc1MWMuLjA2YmY3
MTU4YTczOTMxYzQwYTkyN2JmMTA3YmVkN2JkZTJmMTAwZjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1jb250aW51ZS5odG1sCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1jb250aW51ZS5odG1sCkBAIC00LDI3NSArNCw3
IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+
CiA8Ym9keT4KLTxzY3JpcHQ+IAotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBJREJD
dXJzb3IuY29udGludWUoKSB3aXRoIGEga2V5IHBhcmFtZXRlci4iKTsKLQotdmFyIGRhdGUgPSBu
ZXcgRGF0ZSgpOwotCi0vLyBJbiBvcmRlciBvZiBob3cgaXQgc2hvdWxkIGJlIHNvcnRlZCBieSBJ
bmRleGVkREIuCi1zZWxmLnRlc3REYXRhID0gWwotICAgIDAsCi0gICAgMSwKLSAgICAxLAotICAg
IDMuMTQxNTksCi0gICAgMy4xNDE1OSwKLSAgICAxMCwKLSAgICAxMSwKLSAgICAxMiwKLSAgICAx
MywKLSAgICBkYXRlLAotICAgIGRhdGUsCi0gICAgbmV3IERhdGUoZGF0ZS52YWx1ZU9mKCkgKyAx
MDAwKSwKLSAgICAiQSBiaWcgc3RyaW5nIiwKLSAgICAiQSBiaWcgc3RyaW5nIiwKLSAgICAiQSBi
aXQxIiwKLSAgICAiQSBiaXQyIiwKLSAgICAiQSBiaXQzIiwKLSAgICAidGhlIEJJR0dFU1Qgc3Ry
aW5nIgotXTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMo
KTsKLSAgICBvcGVuRGF0YWJhc2UoKTsKLX0KLQotZnVuY3Rpb24gb3BlbkRhdGFiYXNlKCkKLXsK
LSAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignY3Vyc29yLWNvbnRpbnVl
JykiKTsKLSAgICByZXN1bHQub25zdWNjZXNzID0gc2V0VmVyc2lvbjsKLSAgICByZXN1bHQub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotIAotZnVuY3Rpb24gc2V0VmVyc2lv
bigpCi17Ci0gICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dCIpOwotCi0gICAgcmVzdWx0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNp
b24nKSIpOwotICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKLSAgICByZXN1
bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBkZWxl
dGVFeGlzdGluZygpCi17Ci0gICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsK
LSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0KLSAgICBkZWxl
dGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgc2VsZi5vYmplY3RTdG9yZSA9IGV2YWxBbmRM
b2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzb21lT2JqZWN0U3RvcmUnKSIpOwotICAgIHNlbGYu
aW5kZXhPYmplY3QgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgnc29tZUlu
ZGV4JywgJ3gnKSIpOwotICAgIHNlbGYubmV4dFRvQWRkID0gMDsKLSAgICBhZGREYXRhKCk7Ci19
Ci0KLWZ1bmN0aW9uIGFkZERhdGEoKQotewotICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coIm9iamVj
dFN0b3JlLmFkZCh7J3gnOiB0ZXN0RGF0YVtuZXh0VG9BZGRdfSwgbmV4dFRvQWRkKSIpOwotICAg
IHJlc3VsdC5vbnN1Y2Nlc3MgPSArK3NlbGYubmV4dFRvQWRkIDwgdGVzdERhdGEubGVuZ3RoID8g
YWRkRGF0YSA6IGFzY2VuZGluZ1Rlc3Q7Ci0gICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYXNjZW5kaW5nVGVzdCgpCi17Ci0gICAgZGVi
dWcoIiIpOwotICAgIHZhciByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhPYmplY3Qub3Blbktl
eUN1cnNvcihudWxsLCBJREJDdXJzb3IuTkVYVCkiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGFzY2VuZGluZ0NhbGxiYWNrOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotICAgIHNlbGYuc3RhZ2UgPSAwOwotfQotCi1mdW5jdGlvbiBhc2NlbmRpbmdD
YWxsYmFjaygpCi0KLXsKLSAgICBpZiAoc2VsZi5zdGFnZSA9PSAwKSB7Ci0gICAgICAgIHNob3Vs
ZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMCIpOwotICAgICAgICBldmFs
QW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKDMuMTQxNTkpIik7Ci0gICAgfSBl
bHNlIGlmIChzZWxmLnN0YWdlID09IDEpIHsKLSAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdl
dC5yZXN1bHQucHJpbWFyeUtleSIsICIzIik7Ci0gICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRh
cmdldC5yZXN1bHQuY29udGludWUoKSIpOwotICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSAy
KSB7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAi
NCIpOwotICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCki
KTsKLSAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gMykgewotICAgICAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjUiKTsKLSAgICAgICAgZXZhbEFuZExv
ZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgxMikiKTsKLSAgICB9IGVsc2UgaWYgKHNl
bGYuc3RhZ2UgPT0gNCkgewotICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5w
cmltYXJ5S2V5IiwgIjciKTsKLSAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3Vs
dC5jb250aW51ZShkYXRlKSIpOwotICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSA1KSB7Ci0g
ICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiOSIpOwot
ICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKLSAg
ICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gNikgewotICAgICAgICBzaG91bGRCZSgiZXZlbnQu
dGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjEwIik7Ci0gICAgICAgIGV2YWxBbmRMb2coImV2
ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOwotICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFn
ZSA9PSA3KSB7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlL
ZXkiLCAiMTEiKTsKLSAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250
aW51ZSgnQSBiaXQxJykiKTsKLSAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gOCkgewotICAg
ICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjE0Iik7Ci0g
ICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoJ0EgYml0Mycp
Iik7Ci0gICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDkpIHsKLSAgICAgICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIxNiIpOwotICAgICAgICBldmFsQW5k
TG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCd0aGUgQklHR0VTVCBzdHJpbmcnKSIp
OwotICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSAxMCkgewotICAgICAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjE3Iik7Ci0gICAgICAgIGV2YWxBbmRM
b2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOwotICAgIH0gZWxzZSBpZiAoc2Vs
Zi5zdGFnZSA9PSAxMSkgewotICAgICAgICBzaG91bGRCZU51bGwoImV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKLSAgICAgICAgZGVzY2VuZGluZ1Rlc3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0g
ZWxzZSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIklsbGVnYWwgc3RhZ2UuIik7Ci0gICAgfQotICAg
IHNlbGYuc3RhZ2UrKzsKLX0KLQotZnVuY3Rpb24gZGVzY2VuZGluZ1Rlc3QoKQotewotICAgIGRl
YnVnKCIiKTsKLSAgICB2YXIgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0Lm9wZW5L
ZXlDdXJzb3IobnVsbCwgSURCQ3Vyc29yLlBSRVYpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBkZXNjZW5kaW5nQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci0gICAgc2VsZi5zdGFnZSA9IDA7Ci19Ci0KLWZ1bmN0aW9uIGRlc2NlbmRp
bmdDYWxsYmFjaygpCi17Ci0gICAgaWYgKHNlbGYuc3RhZ2UgPT0gMCkgewotICAgICAgICBzaG91
bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjE3Iik7Ci0gICAgICAgIGV2
YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoJ0EgYml0MicpIik7Ci0gICAg
fSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDEpIHsKLSAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRh
cmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIxNSIpOwotICAgICAgICBldmFsQW5kTG9nKCJldmVu
dC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKLSAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2Ug
PT0gMikgewotICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5
IiwgIjE0Iik7Ci0gICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGlu
dWUoZGF0ZSkiKTsKLSAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gMykgewotICAgICAgICBz
aG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjEwIik7Ci0gICAgICAg
IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOwotICAgIH0gZWxz
ZSBpZiAoc2VsZi5zdGFnZSA9PSA0KSB7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQu
cmVzdWx0LnByaW1hcnlLZXkiLCAiOSIpOwotICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJn
ZXQucmVzdWx0LmNvbnRpbnVlKDEpIik7Ci0gICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDUp
IHsKLSAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIy
Iik7Ci0gICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIp
OwotICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSA2KSB7Ci0gICAgICAgIHNob3VsZEJlKCJl
dmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMSIpOwotICAgICAgICBldmFsQW5kTG9n
KCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKLSAgICB9IGVsc2UgaWYgKHNlbGYu
c3RhZ2UgPT0gNykgewotICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmlt
YXJ5S2V5IiwgIjAiKTsKLSAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5j
b250aW51ZSgpIik7Ci0gICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDgpIHsKLSAgICAgICAg
c2hvdWxkQmVOdWxsKCJldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgICAgIGFzY2VuZGluZ0Vy
cm9yVGVzdExlc3NUaGFuKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9IGVsc2UgewotICAgICAg
ICB0ZXN0RmFpbGVkKCJJbGxlZ2FsIHN0YWdlLiIpOwotICAgIH0KLSAgICBzZWxmLnN0YWdlKys7
Ci19Ci0KLWZ1bmN0aW9uIGFzY2VuZGluZ0Vycm9yVGVzdExlc3NUaGFuKCkKLXsKLSAgICBkZWJ1
ZygiIik7Ci0gICAgdmFyIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5vcGVuS2V5
Q3Vyc29yKG51bGwsIElEQkN1cnNvci5ORVhUKSIpOwotICAgIHNlbGYuc3RhZ2UgPSAwOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmIChzZWxmLnN0YWdlID09PSAwKSB7
Ci0gICAgICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5Iiwg
IjAiKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGlu
dWUoMy4xNDE1OSkiKTsKLSAgICAgICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDEpIHsKLSAg
ICAgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMyIp
OwotICAgICAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZXZlbnQudGFyZ2V0LnJlc3Vs
dC5jb250aW51ZSgxKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotICAgICAg
ICAgICAgYXNjZW5kaW5nRXJyb3JUZXN0RXF1YWwoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgdGVzdEZhaWxlZCgiSWxsZWdhbCBzdGFnZS4iKTsK
LSAgICAgICAgfQotICAgICAgICBzZWxmLnN0YWdlKys7Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24g
YXNjZW5kaW5nRXJyb3JUZXN0RXF1YWwoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICB2YXIgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3IobnVsbCwgSURCQ3Vy
c29yLk5FWFQpIik7Ci0gICAgc2VsZi5zdGFnZSA9IDA7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlv
bigpIHsKLSAgICAgICAgaWYgKHNlbGYuc3RhZ2UgPT09IDApIHsKLSAgICAgICAgICAgIHNob3Vs
ZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMCIpOwotICAgICAgICAgICAg
ZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgzLjE0MTU5KSIpOwotICAg
ICAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gMSkgewotICAgICAgICAgICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIzIik7Ci0gICAgICAgICAgICBldmFs
QW5kRXhwZWN0RXhjZXB0aW9uKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKDMuMTQxNTkp
IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0gICAgICAgICAgICBkZXNjZW5k
aW5nRXJyb3JUZXN0R3JlYXRlclRoYW4oKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgdGVzdEZhaWxlZCgiSWxsZWdhbCBzdGFnZS4iKTsKLSAgICAg
ICAgfQotICAgICAgICBzZWxmLnN0YWdlKys7Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24gZGVzY2Vu
ZGluZ0Vycm9yVGVzdEdyZWF0ZXJUaGFuKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgdmFyIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5vcGVuS2V5Q3Vyc29yKG51bGwsIElEQkN1
cnNvci5QUkVWKSIpOwotICAgIHNlbGYuc3RhZ2UgPSAwOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24oKSB7Ci0gICAgICAgIGlmIChzZWxmLnN0YWdlID09IDApIHsKLSAgICAgICAgICAgIHNob3Vs
ZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMTciKTsKLSAgICAgICAgICAg
IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoJ0EgYml0MicpIik7Ci0g
ICAgICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSAxKSB7Ci0gICAgICAgICAgICBzaG91bGRC
ZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjE1Iik7Ci0gICAgICAgICAgICBl
dmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCdBIGJp
dDMnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotICAgICAgICAgICAgZGVz
Y2VuZGluZ0Vycm9yVGVzdEVxdWFsKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgIHRlc3RGYWlsZWQoIklsbGVnYWwgc3RhZ2UuIik7Ci0gICAgICAg
IH0KLSAgICAgICAgc2VsZi5zdGFnZSsrOwotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIGRlc2NlbmRp
bmdFcnJvclRlc3RFcXVhbCgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIHZhciByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhPYmplY3Qub3BlbktleUN1cnNvcihudWxsLCBJREJDdXJzb3IuUFJF
VikiKTsKLSAgICBzZWxmLnN0YWdlID0gMDsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewot
ICAgICAgICBpZiAoc2VsZi5zdGFnZSA9PSAwKSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgiZXZl
bnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjE3Iik7Ci0gICAgICAgICAgICBldmFsQW5k
TG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCdBIGJpdDInKSIpOwotICAgICAgICB9
IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gMSkgewotICAgICAgICAgICAgc2hvdWxkQmUoImV2ZW50
LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIxNSIpOwotICAgICAgICAgICAgZXZhbEFuZExv
ZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgICAgICAgICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgnQSBiaXQyJykiLCAi
SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLSAgICAgICAgICAgIHNlbGYudHJhbnMu
b25jb21wbGV0ZSA9IG9uVHJhbnNhY3Rpb25Db21wbGV0ZTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgdGVzdEZhaWxlZCgiSWxsZWdhbCBzdGFnZS4i
KTsKLSAgICAgICAgfQotICAgICAgICBzZWxmLnN0YWdlKys7Ci0gICAgfTsKLX0KLQotZnVuY3Rp
b24gb25UcmFuc2FjdGlvbkNvbXBsZXRlKCkKLXsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJjdXJzb3IuY29udGludWUoKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9J
TkFDVElWRV9FUlIiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotdGVzdCgpOwotIAotPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2N1cnNvci1jb250aW51ZS5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1kZWxldGUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2N1cnNvci1kZWxldGUuaHRtbAppbmRleCBkNzQwNzNhYjdmOWFjMTljYjcwMjdh
ZWY3YTJiYzFhYjNhZTA2YjNjLi5lYmQ2YjdmN2MzNTNhODRiMDg1YTdmNDE2YjZiNmE4ODFjZjAz
ZDQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItZGVs
ZXRlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWRlbGV0
ZS5odG1sCkBAIC00LDExMSArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5q
cyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJU
ZXN0IEluZGV4ZWREQidzIG9wZW5DdXJzb3IuIik7Ci0KLXRlc3QoKTsKLQotZnVuY3Rpb24gdGVz
dCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCLm9wZW4oJ2N1cnNvci1kZWxldGUnKSIpOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICB2YXIgZGIg
PSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3Mo
KQotewotICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOwotICAgIHNlbGYudHJhbnMg
PSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRC
ZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRB
Ym9ydENhbGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBvcGVuQ3Vyc29yOwotCi0gICAg
ZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIHZhciBvYmplY3RTdG9yZSA9IGV2YWxB
bmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Rlc3QnKSIpOwotICAg
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnbXlWYWx1ZTEnLCAnbXlLZXkxJykiKTsKLSAg
ICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ215VmFsdWUyJywgJ215S2V5MicpIik7Ci0g
ICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlMycsICdteUtleTMnKSIpOwot
ICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnbXlWYWx1ZTQnLCAnbXlLZXk0JykiKTsK
LX0KLQotZnVuY3Rpb24gb3BlbkN1cnNvcigpCi17Ci0gICAgZGVidWcoIm9wZW5DdXJzb3IxIik7
Ci0gICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3Rlc3QnXSwgSURCVHJh
bnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2Vy
Qm91bmQoIm15S2V5MSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RT
dG9yZSgndGVzdCcpLm9wZW5DdXJzb3Ioe3JhbmdlOiBrZXlSYW5nZX0pIik7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBjdXJzb3JTdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIGNvdW50ZXIgPSAxOwotfQotCi1mdW5jdGlvbiBjdXJz
b3JTdWNjZXNzKCkKLXsKLSAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBudWxsKSB7Ci0g
ICAgICAgIHNob3VsZEJlKCJjb3VudGVyIiwgIjUiKTsKLSAgICAgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCd0ZXN0Jykub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsK
LSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3JFbXB0eTsKLSAgICAgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5kZWxldGUoKSIpOwotICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZSIsICJteVZh
bHVlIiArIGNvdW50ZXIrKyk7Ci0gICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5j
b250aW51ZSgpIik7Ci19Ci0KLWZ1bmN0aW9uIGN1cnNvckVtcHR5KCkKLXsKLSAgICBzaG91bGRC
ZU51bGwoImV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gYWRk
T2JqZWN0OwotfQotCi1mdW5jdGlvbiBhZGRPYmplY3QoKQotewotICAgIGV2YWxBbmRMb2coInRy
YW5zID0gZGIudHJhbnNhY3Rpb24oWyd0ZXN0J10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUp
Iik7Ci0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IHRyYW5zLm9i
amVjdFN0b3JlKCd0ZXN0JykiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0U3Rv
cmUuYWRkKCdteVZhbHVlMScsICdteUtleTEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
b3BlbkN1cnNvcjI7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5DdXJzb3IyKCkKLXsKLSAgICBkZWJ1Zygib3BlbkN1cnNv
cjIiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUub3BlbkN1cnNvcihr
ZXlSYW5nZSkiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZU9iamVjdDsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24g
ZGVsZXRlT2JqZWN0KCkKLXsKLSAgICBzaG91bGRCZU5vbk51bGwoZXZlbnQudGFyZ2V0LnJlc3Vs
dCk7Ci0gICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5kZWxldGUoKSIpOwotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5nZXQoJ215S2V5MScpIik7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSB2ZXJpZnlPYmplY3REZWxldGVkOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiB2ZXJpZnlPYmpl
Y3REZWxldGVkKCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ1bmRl
ZmluZWQiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi08L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvY3Vyc29yLWRlbGV0ZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0i
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9k
eT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1
cnNvci1pbmNvbnNpc3RlbmN5Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9j
dXJzb3ItaW5jb25zaXN0ZW5jeS5odG1sCmluZGV4IGE0ODU3NmM4MGM5NjRlZDg5N2YyYWRkZjY0
YjNlNmRiNGNlODUzZTYuLmYyY2VhMGIxYWQ3M2YxNGQyNmM1ZTFiYTQ1N2M3ZmUwYWM1OTBiZmEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1pbmNvbnNp
c3RlbmN5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWlu
Y29uc2lzdGVuY3kuaHRtbApAQCAtNCw5MSArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2Ny
aXB0aW9uKCJUZXN0IGNvbnNpc3RlbmN5IG9mIEluZGV4ZWREQidzIGN1cnNvciBvYmplY3RzLiIp
OwotCi10ZXN0KCk7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZp
eGVzKCk7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdjdXJzb3It
aW5jb25zaXN0ZW5jeScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVu
Y3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIHZhciBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZl
cnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNp
b25TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCi17Ci0gICAgZGVidWcoInNldFZl
cnNpb25TdWNjZXNzKCk6Iik7Ci0gICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwi
KTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJh
bnMub25jb21wbGV0ZSA9IG9wZW5CYXNpY0N1cnNvcjsKLQotICAgIGRlbGV0ZUFsbE9iamVjdFN0
b3JlcyhkYik7Ci0KLSAgICB2YXIgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9y
ZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdiYXNpY1N0b3JlJykiKTsKLSAgICBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZS5hZGQoJ3NvbWVWYWx1ZTEnLCAnc29tZUtleTEnKS5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKLSAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQo
J3NvbWVWYWx1ZTInLCAnc29tZUtleTInKS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2siKTsKLSAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ3NvbWVWYWx1ZTMnLCAnc29t
ZUtleTMnKS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKLSAgICBldmFsQW5k
TG9nKCJvYmplY3RTdG9yZS5hZGQoJ3NvbWVWYWx1ZTQnLCAnc29tZUtleTQnKS5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKLQotfQotCi1mdW5jdGlvbiBvcGVuQmFzaWNDdXJz
b3IoKQotewotICAgIGRlYnVnKCJvcGVuQmFzaWNDdXJzb3IoKSIpOwotICAgIGV2YWxBbmRMb2co
InRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydiYXNpY1N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJF
QURfV1JJVEUpIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNr
OwotICAgIHRyYW5zLm9uY29tcGxldGUgPSB0cmFuc2FjdGlvbkNvbXBsZXRlOwotCi0gICAga2V5
UmFuZ2UgPSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKCJzb21lS2V5MSIpOwotICAgIHNlbGYub2Jq
ZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYmFzaWNTdG9yZScpIik7
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLm9wZW5DdXJzb3Ioa2V5UmFu
Z2UpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjaGVja0N1cnNvcjsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICBjb3VudGVyID0gMTsKLX0K
LQotc3RvcmVkQ3Vyc29yID0gbnVsbDsKLWZ1bmN0aW9uIGNoZWNrQ3Vyc29yKCkKLXsKLSAgICBk
ZWJ1ZygiIikKLSAgICBkZWJ1ZygiY2hlY2tDdXJzb3IoKSIpOwotICAgIGlmIChldmVudC50YXJn
ZXQucmVzdWx0ID09IG51bGwpIHsKLSAgICAgICAgc2hvdWxkQmUoImNvdW50ZXIiLCAiNSIpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChzdG9yZWRDdXJzb3IgPT0gbnVsbCkKLSAg
ICAgIHN0b3JlZEN1cnNvciA9IGV2YWxBbmRMb2coInN0b3JlZEN1cnNvciA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKLQotICAgIHNob3VsZEJlVHJ1ZSgic3RvcmVkQ3Vyc29yID09PSBldmVudC50
YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzdG9yZWRDdXJzb3Iu
a2V5IiwgInNvbWVLZXkiICsgY291bnRlcik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJl
dmVudC50YXJnZXQucmVzdWx0LmtleSIsICJzb21lS2V5IiArIGNvdW50ZXIpOwotICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygic3RvcmVkQ3Vyc29yLnZhbHVlIiwgInNvbWVWYWx1ZSIgKyBjb3Vu
dGVyKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQudmFs
dWUiLCAic29tZVZhbHVlIiArIGNvdW50ZXIpOwotICAgIGNvdW50ZXIrKzsKLSAgICBldmFsQW5k
TG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKLX0KLQotZnVuY3Rpb24gdHJh
bnNhY3Rpb25Db21wbGV0ZSgpCi17Ci0gICAgZGVidWcoInRyYW5zYWN0aW9uQ29tcGxldGUoKSIp
OwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9jdXJzb3ItaW5jb25zaXN0ZW5jeS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0i
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9k
eT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1
cnNvci1pbmRleC1kZWxldGUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1
cnNvci1pbmRleC1kZWxldGUuaHRtbAppbmRleCAxYzYzMDA3M2Y1NzMxOWJhNTdkMTczYWE3NDJi
NzkyOGMxMmY1OWFjLi5hZGNhNzhlYzk0YTI0ZTVmODBiZjg4NWRkMTEyZWE3NzQxN2Y0OTQ4IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItaW5kZXgtZGVs
ZXRlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWluZGV4
LWRlbGV0ZS5odG1sCkBAIC00LDExNSArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3No
YXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0
aW9uKCJUZXN0IEluZGV4ZWREQidzIG9wZW5DdXJzb3IuIik7Ci0KLXRlc3QoKTsKLQotZnVuY3Rp
b24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2N1cnNvci1pbmRleC1kZWxldGUnKSIpOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsK
LSAgICB2YXIgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc2V0VmVy
c2lvblN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOwotICAg
IHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsK
LSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9ydCA9
IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBvcGVuQ3Vy
c29yOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9iamVjdFN0b3Jl
ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgndGVzdCcp
Iik7Ci0gICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ3Rlc3RJbmRleCcs
ICd4JykiKTsKLQotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCh7eDogMX0sICdteUtl
eTEnKSIpOwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCh7eDogMn0sICdteUtleTIn
KSIpOwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCh7eDogM30sICdteUtleTMnKSIp
OwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCh7eDogNH0sICdteUtleTQnKSIpOwot
fQotCi1mdW5jdGlvbiBvcGVuQ3Vyc29yKCkKLXsKLSAgICBkZWJ1Zygib3BlbkN1cnNvcjEiKTsK
LSAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsndGVzdCddLCBJREJUcmFu
c2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2UubG93ZXJC
b3VuZCgxKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ3Rl
c3QnKS5pbmRleCgndGVzdEluZGV4Jykub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvclN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgY291bnRlciA9IDE7Ci19Ci0KLWZ1bmN0aW9uIGN1
cnNvclN1Y2Nlc3MoKQotewotICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0ID09IG51bGwpIHsK
LSAgICAgICAgc2hvdWxkQmUoImNvdW50ZXIiLCAiNSIpOwotICAgICAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ3Rlc3QnKS5pbmRleCgndGVzdEluZGV4Jykub3Bl
bkN1cnNvcihrZXlSYW5nZSkiKTsKLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3JF
bXB0eTsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgdmFyIGRlbGV0ZVJlcXVlc3QgPSBldmFsQW5k
TG9nKCJldmVudC50YXJnZXQucmVzdWx0LmRlbGV0ZSgpIik7Ci0gICAgZGVsZXRlUmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRh
cmdldC5yZXN1bHQua2V5IiwgImNvdW50ZXIrKyIpOwotICAgIGV2YWxBbmRMb2coImV2ZW50LnRh
cmdldC5yZXN1bHQuY29udGludWUoKSIpOwotfQotCi1mdW5jdGlvbiBjdXJzb3JFbXB0eSgpCi17
Ci0gICAgc2hvdWxkQmVOdWxsKCJldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgdHJhbnMub25j
b21wbGV0ZSA9IGFkZE9iamVjdDsKLX0KLQotZnVuY3Rpb24gYWRkT2JqZWN0KCkKLXsKLSAgICBl
dmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsndGVzdCddLCBJREJUcmFuc2FjdGlv
bi5SRUFEX1dSSVRFKSIpOwotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3Rv
cmUgPSB0cmFucy5vYmplY3RTdG9yZSgndGVzdCcpIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coIm9iamVjdFN0b3JlLmFkZCh7eDogMX0sICdteUtleTEnKSIpOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gb3BlbkN1cnNvcjI7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5DdXJzb3IyKCkKLXsKLSAgICBkZWJ1Zygi
b3BlbkN1cnNvcjIiKTsKLSAgICBldmFsQW5kTG9nKCJpbmRleCA9IGV2ZW50LnRhcmdldC5zb3Vy
Y2UuaW5kZXgoJ3Rlc3RJbmRleCcpIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4
Lm9wZW5DdXJzb3Ioa2V5UmFuZ2UpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVP
YmplY3Q7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19
Ci0KLWZ1bmN0aW9uIGRlbGV0ZU9iamVjdCgpCi17Ci0gICAgc2hvdWxkQmVOb25OdWxsKGV2ZW50
LnRhcmdldC5yZXN1bHQpOwotICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuZGVs
ZXRlKCkiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXguZ2V0KDEpIik7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSB2ZXJpZnlPYmplY3REZWxldGVkOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiB2ZXJpZnlPYmpl
Y3REZWxldGVkKCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ1bmRl
ZmluZWQiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi08L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvY3Vyc29yLWluZGV4LWRlbGV0ZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
IDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2N1cnNvci1rZXktb3JkZXIuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2N1cnNvci1rZXktb3JkZXIuaHRtbAppbmRleCAzYTExZTY5MjliOWM0YmM5Y2RiM2MzYWIyMTJh
NzBjNjI5ZGE3MDA4Li40MDMwOWRlNDY4M2U2NjY3OGRjMjcwZjY2NzI5NjRlNzMwNTNkYjU2IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3Ita2V5LW9yZGVy
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWtleS1vcmRl
ci5odG1sCkBAIC00LDIzMCArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5q
cyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJU
ZXN0IEluZGV4ZWREQiBrZXlzIG9yZGVyaW5nIGFuZCByZWFkYmFjayBmcm9tIGN1cnNvcnMuIik7
Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAg
ICBwcmVwYXJlRGF0YWJhc2UoKTsKLX0KLQotZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKCkKLXsK
LSAgICBkZWJ1ZygiIik7Ci0gICAgZXZhbEFuZExvZygib3BlbnJlcSA9IGluZGV4ZWREQi5vcGVu
KCdjdXJzb3Ita2V5LW9yZGVyJykiKTsKLSAgICBvcGVucmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLSAgICBvcGVucmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAg
ICAgICBldmFsQW5kTG9nKCJkYiA9IG9wZW5yZXEucmVzdWx0Iik7Ci0gICAgICAgIGV2YWxBbmRM
b2coInZlcnJlcSA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgICAgICB2ZXJyZXEub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICB2ZXJyZXEub25zdWNjZXNzID0g
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9y
ZSgnc3RvcmUnKSIpOwotICAgICAgICAgICAgdmVycmVxLnJlc3VsdC5vbmNvbXBsZXRlID0gcG9w
dWxhdGVTdG9yZTsKLSAgICAgICAgfTsKLSAgICB9OwotfQotCi1zZWxmLmtleXMgPSBbCi0gICAg
Ii1JbmZpbml0eSIsCi0gICAgIi1OdW1iZXIuTUFYX1ZBTFVFIiwKLSAgICAiLTEiLAotICAgICIt
TnVtYmVyLk1JTl9WQUxVRSIsCi0gICAgIjAiLAotICAgICJOdW1iZXIuTUlOX1ZBTFVFIiwKLSAg
ICAiMSIsCi0gICAgIk51bWJlci5NQVhfVkFMVUUiLAotICAgICJJbmZpbml0eSIsCi0KLSAgICAi
bmV3IERhdGUoMCkiLAotICAgICJuZXcgRGF0ZSgxMDAwKSIsCi0gICAgIm5ldyBEYXRlKDEzMTcz
OTk5MzEwMjMpIiwKLQotICAgICInJyIsCi0gICAgIidceDAwJyIsCi0gICAgIidhJyIsCi0gICAg
IidhYSciLAotICAgICInYiciLAotICAgICInYmEnIiwKLQotICAgICInXHhBMiciLCAvLyBVKzAw
QTIgQ0VOVCBTSUdOCi0gICAgIidcdTZDMzQnIiwgLy8gVSs2QzM0IENKSyBVTklGSUVEIElERU9H
UkFQSCAod2F0ZXIpCi0gICAgIidcdUQ4MzRcdUREMUUnIiwgLy8gVSsxRDExRSBNVVNJQ0FMIFNZ
TUJPTCBHLUNMRUYgKFVURi0xNiBzdXJyb2dhdGUgcGFpcikKLSAgICAiJ1x1RkZGRCciLCAvLyBV
K0ZGRkQgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSCi0KLSAgICAiW10iLAotCi0gICAgIlstSW5maW5p
dHldIiwKLSAgICAiWy1OdW1iZXIuTUFYX1ZBTFVFXSIsCi0gICAgIlstMV0iLAotICAgICJbLU51
bWJlci5NSU5fVkFMVUVdIiwKLSAgICAiWzBdIiwKLSAgICAiW051bWJlci5NSU5fVkFMVUVdIiwK
LSAgICAiWzFdIiwKLSAgICAiW051bWJlci5NQVhfVkFMVUVdIiwKLSAgICAiW0luZmluaXR5XSIs
Ci0KLSAgICAiW25ldyBEYXRlKDApXSIsCi0gICAgIltuZXcgRGF0ZSgxMDAwKV0iLAotICAgICJb
bmV3IERhdGUoMTMxNzM5OTkzMTAyMyldIiwKLQotICAgICJbJyddIiwKLSAgICAiWydceDAwJ10i
LAotICAgICJbJ2EnXSIsCi0gICAgIlsnYWEnXSIsCi0gICAgIlsnYiddIiwKLSAgICAiWydiYSdd
IiwKLQotICAgICJbJ1x4QTInXSIsIC8vIFUrMDBBMiBDRU5UIFNJR04KLSAgICAiWydcdTZDMzQn
XSIsIC8vIFUrNkMzNCBDSksgVU5JRklFRCBJREVPR1JBUEggKHdhdGVyKQotICAgICJbJ1x1RDgz
NFx1REQxRSddIiwgLy8gVSsxRDExRSBNVVNJQ0FMIFNZTUJPTCBHLUNMRUYgKFVURi0xNiBzdXJy
b2dhdGUgcGFpcikKLSAgICAiWydcdUZGRkQnXSIsIC8vIFUrRkZGRCBSRVBMQUNFTUVOVCBDSEFS
QUNURVIKLQotICAgICJbW11dIiwKLQotICAgICJbW10sIFtdXSIsCi0gICAgIltbXSwgW10sIFtd
XSIsCi0KLSAgICAiW1tbXV1dIiwKLSAgICAiW1tbW11dXV0iCi1dOwotCi1mdW5jdGlvbiBjb21w
YXJlKGEsIGIpCi17Ci0gICAgaWYgKHR5cGVvZiBhICE9PSB0eXBlb2YgYikgewotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgc3dpdGNoICh0eXBlb2YgYSkgewotICAgICAgICBj
YXNlICd1bmRlZmluZWQnOiAvLyBOb3QgdmFsaWQga2V5cywgYnV0IGNvbXBhcmUgYW55d2F5Lgot
ICAgICAgICBjYXNlICdib29sZWFuJzogLy8gTm90IHZhbGlkIGtleXMsIGJ1dCBjb21wYXJlIGFu
eXdheS4KLSAgICAgICAgY2FzZSAnc3RyaW5nJzoKLSAgICAgICAgICAgIHJldHVybiBhID09PSBi
OwotICAgICAgICBjYXNlICdudW1iZXInOgotICAgICAgICAgICAgaWYgKGEgPT09IGIpIHsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gKGEgIT09IDApIHx8ICgxIC8gYSA9PT0gMSAvIGIpOyAvLyAw
IGlzbid0IC0wCi0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHJldHVybiBh
ICE9PSBhICYmIGIgIT09IGI7IC8vIE5hTiBpcyBOYU4KLSAgICAgICAgICAgIH0KLSAgICAgICAg
Y2FzZSAnb2JqZWN0JzoKLSAgICAgICAgICAgIGlmIChhIGluc3RhbmNlb2YgRGF0ZSAmJiBiIGlu
c3RhbmNlb2YgRGF0ZSkgewotICAgICAgICAgICAgICAgIHJldHVybiArYSA9PT0gK2I7Ci0gICAg
ICAgICAgICB9IGVsc2UgaWYgKGEgaW5zdGFuY2VvZiBBcnJheSAmJiBiIGluc3RhbmNlb2YgQXJy
YXkpIHsKLSAgICAgICAgICAgICAgICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmICghY29tcGFyZShhW2ldLCBiW2ldKSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgLy8gRm9yIHRoZSBwdXJwb3NlcyBvZiB0aGlzIHRlc3QsIG90aGVyIG9iamVjdHMgZG9u
J3QgY291bnQKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHBvcHVsYXRlU3Rv
cmUoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygicG9wdWxhdGluZyBzdG9yZS4uLiIp
OwotICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJh
bnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9i
amVjdFN0b3JlKCdzdG9yZScpOyIpOwotICAgIHRyYW5zLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7
Ci0gICAgdmFyIGNvdW50ID0gMDsKLSAgICBrZXlzLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7Ci0g
ICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgiICsgKGNvdW50KyspICsgIiwgIiArIGtleSAr
ICIpIik7Ci0gICAgfSk7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IGNoZWNrU3RvcmU7Ci19Ci0K
LWZ1bmN0aW9uIGNoZWNrU3RvcmUoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiaXRl
cmF0aW5nIGN1cnNvci4uLiIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rp
b24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKSIpOwotICAgIGV2YWxBbmRMb2co
InN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7Iik7Ci0gICAgdHJhbnMub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVj
dGVkQWJvcnRDYWxsYmFjazsKLSAgICBldmFsQW5kTG9nKCJjb3VudCA9IDAiKTsKLSAgICBjdXJy
ZXEgPSBldmFsQW5kTG9nKCJjdXJyZXEgPSBzdG9yZS5vcGVuQ3Vyc29yKCkiKTsKLSAgICBjdXJy
ZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIGN1cnJlcS5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKGN1cnJlcS5yZXN1bHQpIHsKLSAgICAgICAg
ICAgIGV2YWxBbmRMb2coImN1cnNvciA9IGN1cnJlcS5yZXN1bHQiKTsKLSAgICAgICAgICAgIHNo
b3VsZEJlVHJ1ZSgiY29tcGFyZShjdXJzb3Iua2V5LCAiICsga2V5c1tjb3VudF0gKyAiKSIpOwot
ICAgICAgICAgICAgZXZhbEFuZExvZygiZ2V0cmVxID0gc3RvcmUuZ2V0KGN1cnNvci5rZXkpIik7
Ci0gICAgICAgICAgICBnZXRyZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
ICAgICAgICAgICAgZ2V0cmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
ICAgIHNob3VsZEJlVHJ1ZSgiZ2V0cmVxLnJlc3VsdCA9PT0gY291bnQrKyIpOwotICAgICAgICAg
ICAgICAgIGN1cnNvci5jb250aW51ZSgpOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiY291bnQgPT09IGtleXMubGVuZ3RoIik7Ci0g
ICAgICAgICAgICBmaW5pc2hVcCgpOwotICAgICAgICB9Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24g
ZmluaXNoVXAoKQotewotICAgIHRlc3RLZXlDb21wYXJlKCk7Ci0gICAgZmluaXNoSlNUZXN0KCk7
Ci19Ci0KLWZ1bmN0aW9uIHRlc3RLZXlDb21wYXJlKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAg
ZGVidWcoInZhbGlkYXRlIGNvbXBhcmUgZnVuY3Rpb24iKTsKLSAgICB2YXIgY2FzZXMgPSBbCi0g
ICAgICAgICJ1bmRlZmluZWQiLAotICAgICAgICAidHJ1ZSIsCi0gICAgICAgICJmYWxzZSIsCi0g
ICAgICAgICIwIiwKLSAgICAgICAgIi0wIiwKLSAgICAgICAgIjEyMyIsCi0gICAgICAgICJJbmZp
bml0eSIsCi0gICAgICAgICItSW5maW5pdHkiLAotICAgICAgICAiTmFOIiwKLSAgICAgICAgIicn
IiwKLSAgICAgICAgIidhYmMnIiwKLSAgICAgICAgIid4eXonIiwKLSAgICAgICAgIm5ldyBEYXRl
KDApIiwKLSAgICAgICAgIm5ldyBEYXRlKDFlMykiLAotICAgICAgICAibmV3IERhdGUoMWU5KSIs
Ci0gICAgICAgICJbXSIsCi0gICAgICAgICJbMTIzXSIsCi0gICAgICAgICJbJ2FiYyddIiwKLSAg
ICAgICAgIlsxMjMsICdhYmMnXSIsCi0gICAgICAgICJbJ2FiYycsIDEyM10iLAotICAgICAgICAi
W1tdXSIsCi0gICAgICAgICJbWzEyM11dIiwKLSAgICAgICAgIltbJ2FiYyddXSIsCi0gICAgICAg
ICJbWzEyM10sICdhYmMnXSIsCi0gICAgICAgICJbWzEyM10sIDEyM10iCi0gICAgXTsKLQotICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgY2FzZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgZm9yICh2
YXIgaiA9IDA7IGogPCBjYXNlcy5sZW5ndGg7ICsraikgewotICAgICAgICAgICAgaWYgKGkgPT09
IGopIHsKLSAgICAgICAgICAgICAgICBzaG91bGRCZVRydWUoImNvbXBhcmUoIiArIGNhc2VzW2ld
ICsgIiwgIiArIGNhc2VzW2pdICsgIikiKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgc2hvdWxkQmVGYWxzZSgiY29tcGFyZSgiICsgY2FzZXNbaV0gKyAiLCAiICsgY2Fz
ZXNbal0gKyAiKSIpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi10ZXN0
KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jdXJzb3Ita2V5LW9yZGVy
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXByaW1hcnkta2V5LW9yZGVyLmh0bWwg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItcHJpbWFyeS1rZXktb3JkZXIu
aHRtbAppbmRleCBhN2MzNWU3OWI5MjlhNDUzZDRhM2E4MjYxM2RlODhlMjQxYzNhZmFlLi4zZjE5
M2FiYjRjZWIyZmUxMWZlMTUzMGIxYmE3MTliOGM4YWFlMGVlIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItcHJpbWFyeS1rZXktb3JkZXIuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItcHJpbWFyeS1rZXktb3JkZXIu
aHRtbApAQCAtMSwxMDggKzEsMTAgQEAKIDxodG1sPgogPGhlYWQ+Ci08bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4K
IDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hl
YWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBwcmlt
YXJ5IGtleSBvcmRlcmluZyBhbmQgcmVhZGJhY2sgZnJvbSBjdXJzb3JzLiIpOwotCi1mdW5jdGlv
biB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgcHJlcGFyZURh
dGFiYXNlKCk7Ci19Ci0KLWZ1bmN0aW9uIHByZXBhcmVEYXRhYmFzZSgpCi17Ci0gICAgZGVidWco
IiIpOwotICAgIGV2YWxBbmRMb2coIm9wZW5SZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oJ2N1cnNv
ci1wcmltYXJ5LWtleS1vcmRlcicpIik7Ci0gICAgb3BlblJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIG9wZW5SZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KCkgewotICAgICAgICBldmFsQW5kTG9nKCJkYiA9IG9wZW5SZXF1ZXN0LnJlc3VsdCIpOwotICAg
ICAgICBldmFsQW5kTG9nKCJ2ZXJzaW9uQ2hhbmdlUmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEn
KSIpOwotICAgICAgICB2ZXJzaW9uQ2hhbmdlUmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci0gICAgICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1
bmN0aW9uKCkgewotICAgICAgICAgICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnc3RvcmUnKSIpOwotICAgICAgICAgICAgZXZhbEFuZExvZygiaW5kZXggPSBzdG9y
ZS5jcmVhdGVJbmRleCgnaW5kZXgnLCAnaW5kZXhLZXknKSIpOwotCi0gICAgICAgICAgICB2ZXJz
aW9uQ2hhbmdlUmVxdWVzdC5yZXN1bHQub25jb21wbGV0ZSA9IHBvcHVsYXRlU3RvcmU7Ci0gICAg
ICAgIH07Ci0gICAgfTsKLX0KLQotc2VsZi5rZXlzID0gWwotICAgICItSW5maW5pdHkiLAotICAg
ICItMiIsCi0gICAgIi0xIiwKLSAgICAiMCIsCi0gICAgIjEiLAotICAgICIyIiwKLSAgICAiSW5m
aW5pdHkiLAotCi0gICAgIicwJyIsCi0gICAgIicxJyIsCi0gICAgIicyJyIsCi0gICAgIidBJyIs
Ci0gICAgIidCJyIsCi0gICAgIidDJyIsCi0gICAgIidhJyIsCi0gICAgIidiJyIsCi0gICAgIidj
JyIKLV07Ci0KLQotZnVuY3Rpb24gcG9wdWxhdGVTdG9yZSgpCi17Ci0gICAgZGVidWcoIiIpOwot
ICAgIGRlYnVnKCJwb3B1bGF0aW5nIHN0b3JlLi4uIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMg
PSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwot
ICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7Iik7Ci0g
ICAgdHJhbnMub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHRyYW5zLm9u
YWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB2YXIgY291bnQgPSAwOwotICAg
IHZhciBpbmRleEtleSA9IDA7Ci0gICAgdmFyIGtleXMgPSBzZWxmLmtleXMuc2xpY2UoKTsKLSAg
ICBrZXlzLnJldmVyc2UoKTsKLSAgICBrZXlzLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7Ci0gICAg
ICAgIHZhciB2YWx1ZSA9IHsgaW5kZXhLZXk6IGluZGV4S2V5LCBjb3VudDogY291bnQrKyB9Owot
ICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoIiArIEpTT04uc3RyaW5naWZ5KHZhbHVlKSAr
ICIsICIgKyBrZXkgKyAiKSIpOwotICAgIH0pOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBjaGVj
a1N0b3JlOwotfQotCi1mdW5jdGlvbiBjaGVja1N0b3JlKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0g
ICAgZGVidWcoIml0ZXJhdGluZyBjdXJzb3IuLi4iKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucyA9
IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkiKTsKLSAg
ICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpOyIpOwotICAg
IGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4Jyk7Iik7Ci0gICAgdHJhbnMu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1
bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICBjdXJzb3JSZXF1ZXN0ID0gZXZhbEFuZExvZygi
Y3Vyc29yUmVxdWVzdCA9IGluZGV4Lm9wZW5DdXJzb3IoKSIpOwotICAgIGV2YWxBbmRMb2coImNv
dW50ID0gMCIpOwotICAgIHZhciBpbmRleEtleSA9IDA7Ci0gICAgY3Vyc29yUmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgY3Vyc29yUmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKGN1cnNvclJlcXVlc3QucmVzdWx0KSB7Ci0g
ICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IgPSBjdXJzb3JSZXF1ZXN0LnJlc3VsdCIpOwot
ICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCBTdHJpbmcoaW5kZXhLZXkpKTsKLSAg
ICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsIHNlbGYua2V5c1tjb3VudCsr
XSk7Ci0gICAgICAgICAgICBjdXJzb3IuY29udGludWUoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiY291bnQgPT09IGtleXMubGVuZ3RoIik7Ci0gICAgICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAgICAgfQotICAgIH07Ci19Ci0KLXRlc3QoKTsKLQot
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2N1cnNvci1wcmltYXJ5LWtleS1vcmRl
ci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1yZXZlcnNlLWJ1Zy5odG1sIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXJldmVyc2UtYnVnLmh0bWwKaW5kZXgg
MWE2NjFjNDZlMDA4MjNkOTYxZjU3NWU3OTUxMDU5NTI3YzU1ZjcwMy4uZWJlZjU5Mzg4MDk0NzZh
NDA2MGEzYWZkNTE0YTA0ZDA3YzJlYzNjMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvY3Vyc29yLXJldmVyc2UtYnVnLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvY3Vyc29yLXJldmVyc2UtYnVnLmh0bWwKQEAgLTQsMTA3ICs0LDcgQEAK
IDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxi
b2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGtleXMgb3JkZXJp
bmcgYW5kIHJlYWRiYWNrIGZyb20gY3Vyc29ycy4iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0g
ICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIHByZXBhcmVEYXRhYmFzZSgpOwotfQot
Ci1mdW5jdGlvbiBwcmVwYXJlRGF0YWJhc2UoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBldmFs
QW5kTG9nKCJvcGVucmVxID0gaW5kZXhlZERCLm9wZW4oJ2N1cnNvci1yZXZlcnNlLWJ1ZycpIik7
Ci0gICAgb3BlbnJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgb3Bl
bnJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgZXZhbEFuZExvZygiZGIgPSBv
cGVucmVxLnJlc3VsdCIpOwotICAgICAgICBldmFsQW5kTG9nKCJ2ZXJyZXEgPSBkYi5zZXRWZXJz
aW9uKCcxJykiKTsKLSAgICAgICAgdmVycmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLSAgICAgICAgdmVycmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAgICAg
ICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLSAgICAgICAgICAgIHN0b3JlID0gZXZhbEFu
ZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOwotICAgICAgICAg
ICAgZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4JywgJycpIik7Ci0gICAgICAg
ICAgICB2ZXJyZXEucmVzdWx0Lm9uY29tcGxldGUgPSBwb3B1bGF0ZVN0b3JlOwotICAgICAgICB9
OwotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIHBvcHVsYXRlU3RvcmUoKQotewotICAgIGRlYnVnKCIi
KTsKLSAgICBkZWJ1ZygicG9wdWxhdGluZyBzdG9yZS4uLiIpOwotICAgIGV2YWxBbmRMb2coInRy
YW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSki
KTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpOyIp
OwotICAgIHRyYW5zLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB0cmFu
cy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0KLSAgICBldmFsQW5kTG9nKCJz
dG9yZS5wdXQoMSwgMSkiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoMiwgMikiKTsKLSAg
ICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoMywgMykiKTsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0g
dGVzdEN1cnNvcjsKLX0KLQotdmFyIHRlc3RzID0gWwotICAgICAgICAgICAgICAgIHt1cHBlckJv
dW5kOiA3LCBvcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDN9LAotICAgICAgICAgICAgICAgIHt1cHBl
ckJvdW5kOiA3LCBvcGVuOiB0cnVlLCAgZXhwZWN0ZWQ6IDN9LAotICAgICAgICAgICAgICAgIHt1
cHBlckJvdW5kOiAzLCBvcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDN9LAotICAgICAgICAgICAgICAg
IHt1cHBlckJvdW5kOiAzLCBvcGVuOiB0cnVlLCAgZXhwZWN0ZWQ6IDJ9Ci0gICAgICAgICAgICBd
OwotCi1mdW5jdGlvbiB0ZXN0Q3Vyc29yKCkKLXsKLSAgICBkZWJ1ZygidGVzdEN1cnNvcigpIik7
Ci0KLSAgICBpZiAodGVzdHMubGVuZ3RoID09PSAwKSB7Ci0gICAgICAgIGRlYnVnKCJObyBtb3Jl
IHRlc3RzLiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIHRlc3QgPSB0ZXN0cy5zaGlmdCgpOwotCi0gICAgZXZhbEFuZExvZygidHJhbnMg
PSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7Ci0g
ICAgdHJhbnMub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHRyYW5zLm9u
YWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0g
dGVzdEN1cnNvcjsKLSAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdz
dG9yZScpOyIpOwotICAgIGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4Jyk7
Iik7Ci0KLSAgICB2YXIgdGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGV2YWxB
bmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICAgICAgaWYgKGN1cnNv
ciA9PT0gbnVsbCkgewotICAgICAgICAgICAgZGVidWcoImN1cnNvciBzaG91bGQgbm90IGJlIG51
bGwiKTsKLSAgICAgICAgICAgIGZhaWwoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotCi0gICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgInRlc3QuZXhwZWN0ZWQiKTsKLSAg
ICAgICAgaWYgKCJ2YWx1ZSIgaW4gY3Vyc29yKQotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNv
ci52YWx1ZSIsICJ0ZXN0LmV4cGVjdGVkIik7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJp
bWFyeUtleSIsICJ0ZXN0LmV4cGVjdGVkIik7Ci0KLSAgICAgICAgLy8gTGV0IHRoZSB0cmFuc2Fj
dGlvbiBmaW5pc2guCi0gICAgfQotCi0gICAgZGVidWcoInVwcGVyQm91bmQ6ICIgKyB0ZXN0LnVw
cGVyQm91bmQgKyAiIG9wZW46ICIgKyB0ZXN0Lm9wZW4gKyAiIGV4cGVjdGVkOiAiICsgdGVzdC5l
eHBlY3RlZCk7Ci0gICAgc3RvcmVSZXEgPSBldmFsQW5kTG9nKCJzdG9yZVJlcSA9IHN0b3JlLm9w
ZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3VuZCh0ZXN0LnVwcGVyQm91bmQsIHRlc3Qub3Bl
biksIElEQkN1cnNvci5QUkVWKSIpOwotICAgIHN0b3JlUmVxLm9uc3VjY2VzcyA9IHRlc3RGdW5j
dGlvbjsKLQotICAgIGluZGV4UmVxID0gZXZhbEFuZExvZygiaW5kZXhSZXEgPSBpbmRleC5vcGVu
Q3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQodGVzdC51cHBlckJvdW5kLCB0ZXN0Lm9wZW4p
LCBJREJDdXJzb3IuUFJFVikiKTsKLSAgICBpbmRleFJlcS5vbnN1Y2Nlc3MgPSB0ZXN0RnVuY3Rp
b247Ci0KLSAgICBpbmRleEtleVJlcSA9IGV2YWxBbmRMb2coImluZGV4S2V5UmVxID0gaW5kZXgu
b3BlbktleUN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKHRlc3QudXBwZXJCb3VuZCwgdGVz
dC5vcGVuKSwgSURCQ3Vyc29yLlBSRVYpIik7Ci0gICAgaW5kZXhLZXlSZXEub25zdWNjZXNzID0g
dGVzdEZ1bmN0aW9uOwotfQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9jdXJzb3ItcmV2ZXJzZS1idWcuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+
CiA8L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1
cnNvci1za2lwLWRlbGV0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1
cnNvci1za2lwLWRlbGV0ZWQuaHRtbAppbmRleCA1MWFjZDM0ZDY0NWViZGUxMzZiNzIyYjQwMmNl
ZjkzZThhZmU2MjgyLi5hMGNkYmJjYWIxZTgzYjNlOTk3ZWI1MWExMzMxZGNkOWUyOTY5MTQyIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3Itc2tpcC1kZWxl
dGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXNraXAt
ZGVsZXRlZC5odG1sCkBAIC00LDIwMCArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3No
YXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0
aW9uKCJUZXN0IEluZGV4ZWREQidzIGN1cnNvciBza2lwcyBkZWxldGVkIGVudHJpZXMuIik7Ci0K
LXZhciBuYW1lcyA9IFsnQWxwaGEnLCAnQnJhdm8nLCAnQ2hhcmxpZScsICdEZWx0YScsICdFY2hv
JywgJ0ZveHRyb3QnLCAnR29sZicsCi0gICAgICAgICAgICAgJ0hvdGVsJywgJ0luZGlhJywgJ0p1
bGlldCcsICdLaWxvJywgJ0xpbWEnLCAnTWlrZScsICdOb3ZlbWJlcicsCi0gICAgICAgICAgICAg
J09zY2FyJywgJ1BhcGEnLCAnUXVlYmVjJywgJ1JvbWVvJywgJ1NpZXJyYScsICdUYW5nbycsICdV
bmlmb3JtJywKLSAgICAgICAgICAgICAnVmljdG9yJywgJ1doaXNrZXknLCAnWC1yYXknLCAnWWFu
a2VlJywgJ1p1bHUnXTsKLQotdGVzdCgpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1v
dmVWZW5kb3JQcmVmaXhlcygpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
b3BlbignY3Vyc29yLXNraXAtZGVsZXRlZCcpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBv
cGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIHZhciBkYiA9IGV2YWxBbmRM
b2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IHNldFZlcnNpb25TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCi17Ci0gICAg
ZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7Ci0gICAgc2VsZi50cmFucyA9IGV2YWxBbmRM
b2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJh
bnMgIT09IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJh
Y2s7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IGJhc2ljQ3Vyc29yVGVzdDsKLQotICAgIGRlbGV0
ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICB2YXIgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScsIHtrZXlQYXRoOiAn
aWQnfSkiKTsKLSAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgnbmFtZUlu
ZGV4JywgJ25hbWUnKSIpOwotICAgIHJlc2V0T2JqZWN0U3RvcmUoZnVuY3Rpb24oKSB7fSk7Ci19
Ci0KLXZhciBzaWxlbnRFcnJvckhhbmRsZXIgPSBmdW5jdGlvbigpIHsgZXZlbnQucHJldmVudERl
ZmF1bHQoKTsgfQotCi1mdW5jdGlvbiByZXNldE9iamVjdFN0b3JlKGNhbGxiYWNrKQotewotICAg
IGRlYnVnKCJcbnJlc2V0T2JqZWN0U3RvcmUoKToiKTsKLSAgICBpZiAoY2FsbGJhY2sgPT09IHVu
ZGVmaW5lZCkKLSAgICAgICAgY2FsbGJhY2sgPSBmdW5jdGlvbiAoKSB7fTsKLQotICAgIHZhciBv
YmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpOwotICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspCi0gICAgICAgIG9iamVjdFN0b3JlLmRlbGV0ZShp
KS5vbmVycm9yID0gc2lsZW50RXJyb3JIYW5kbGVyOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
bmFtZXMubGVuZ3RoOyBpKyspCi0gICAgICAgIG9iamVjdFN0b3JlLmFkZCh7aWQ6IGksIG5hbWU6
IG5hbWVzW2ldfSkub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotCi0gICAgZGVi
dWcoIiIpOwotICAgIGNhbGxiYWNrKCk7Ci19Ci0KLWZ1bmN0aW9uIGNvbnRhaW5zKGFyciwgb2Jq
KQotewotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAg
IGlmIChhcnJbaV0gPT0gb2JqKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAg
IHJldHVybiBmYWxzZTsKLX0KLQotdmFyIGN1cnNvcjsKLXZhciBkZWxldGVkOwotdmFyIHNlZW47
Ci0KLWZ1bmN0aW9uIHRlc3RDdXJzb3IoZGVsZXRlTGlzdCwgY3JlYXRlQ3Vyc29yQ29tbWFuZCwg
Y2FsbGJhY2spCi17Ci0gICAgZGVidWcoIlxudGVzdEN1cnNvcigpOiIpOwotICAgIGRlbGV0ZWQg
PSBbXTsKLSAgICBzZWVuID0gW107Ci0KLSAgICAvLyBDcmVhdGUgdGhlIGN1cnNvci4KLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZyhjcmVhdGVDdXJzb3JDb21tYW5kKTsKLQotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZnVuY3Rpb24gKCkgewotICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBudWxs
KSB7Ci0gICAgICAgICAgICAvLyBNYWtlIHN1cmUgd2UgaGF2ZSBzZWVuIGV2ZXJ5IG5vbi1kZWxl
dGVkIGl0ZW0uCi0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsg
aSsrKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnRhaW5zKGRlbGV0ZWQsIGkpKQotICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgICAgIGlmICghY29udGFpbnMo
c2VlbiwgaSkpCi0gICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkN1cnNvciBkaWQgbm90
IHNlZSBpdGVtIHdpdGggaWQ6ICIgKyBpKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
Ly8gTWFrZSBzdXJlIHdlIHVzZWQgZXZlcnkgcnVsZSBpbiB8ZGVsZXRlTGlzdHwuCi0gICAgICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0ZUxpc3QubGVuZ3RoOyBpKyspIHsKLSAgICAg
ICAgICAgICAgICBpZiAoIWNvbnRhaW5zKHNlZW4sIGRlbGV0ZUxpc3RbaV0uaWQpKQotICAgICAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkZWxldGVMaXN0IHJ1bGUgd2l0aCBpZDogIiArIGRl
bGV0ZUxpc3RbaV0uaWQgKyAiIHdhcyBuZXZlciB1c2VkLiIpOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICBkZWJ1ZygiIik7Ci0gICAgICAgICAgICBjYWxsYmFjaygpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJl
c3VsdDsKLSAgICAgICAgZGVidWcoZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS5pZCArICI6ICIg
KyBldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLm5hbWUpOwotICAgICAgICBzZWVuLnB1c2goZXZl
bnQudGFyZ2V0LnJlc3VsdC52YWx1ZS5pZCk7Ci0KLSAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGRv
bid0IHNlZSBhbnkgZGVsZXRlZCBpdGVtcy4KLSAgICAgICAgaWYgKGNvbnRhaW5zKGRlbGV0ZWQs
IGV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUuaWQpKQotICAgICAgICAgICAgdGVzdEZhaWxlZCgi
Q3Vyc29yIGhpdCBwcmV2aW91c2x5IGRlbGV0ZWQgZWxlbWVudC4iKTsKLQotICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGRlbGV0ZUxpc3QubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIGlm
IChldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLmlkID09IGRlbGV0ZUxpc3RbaV0uaWQpIHsKLSAg
ICAgICAgICAgICAgICAvLyBEZWxldGUgb2JqZWN0cyB0YXJnZXRlZCBieSB0aGlzIGlkLgotICAg
ICAgICAgICAgICAgIHZhciB0YXJnZXRzID0gZGVsZXRlTGlzdFtpXS50YXJnZXRzOwotICAgICAg
ICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdGFyZ2V0cy5sZW5ndGg7IGorKykgewotICAg
ICAgICAgICAgICAgICAgICBkZWxldGVkLnB1c2godGFyZ2V0c1tqXSk7Ci0gICAgICAgICAgICAg
ICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gdHJhbnMub2JqZWN0U3RvcmUo
J3N0b3JlJykuZGVsZXRlKCIgKyB0YXJnZXRzW2pdICsgIikiKTsKLSAgICAgICAgICAgICAgICAg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChqID09IHRhcmdldHMubGVuZ3RoIC0gMSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7IGN1cnNvci5jb250aW51ZSgp
OyB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGN1cnNvci5jb250aW51ZSgpOwotICAgIH0KLX0K
LQotZnVuY3Rpb24gYmFzaWNDdXJzb3JUZXN0KCkKLXsKLSAgICBkZWJ1ZygiYmFzaWNDdXJzb3JU
ZXN0KCkiKTsKLQotICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9y
ZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1
bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gdHJhbnNhY3Rp
b25Db21wbGV0ZTsKLQotICAgIHZhciBkZWxldGVzID0gW3tpZDogMSwgdGFyZ2V0czogWzBdfSwK
LSAgICAgICAgICAgICAgICAgICB7aWQ6IDIsIHRhcmdldHM6IFtuYW1lcy5sZW5ndGggLSAxXX0s
Ci0gICAgICAgICAgICAgICAgICAge2lkOiAzLCB0YXJnZXRzOiBbNSw2LDddfSwKLSAgICAgICAg
ICAgICAgICAgICB7aWQ6IDEwLCB0YXJnZXRzOiBbMTBdfSwKLSAgICAgICAgICAgICAgICAgICB7
aWQ6IDEyLCB0YXJnZXRzOiBbMTNdfSwKLSAgICAgICAgICAgICAgICAgICB7aWQ6IDE1LCB0YXJn
ZXRzOiBbMTRdfSwKLSAgICAgICAgICAgICAgICAgICB7aWQ6IDIwLCB0YXJnZXRzOiBbMTcsMThd
fQotICAgICAgICAgICAgICAgICAgIF07Ci0KLSAgICB0ZXN0Q3Vyc29yKGRlbGV0ZXMsICJ0cmFu
cy5vYmplY3RTdG9yZSgnc3RvcmUnKS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLmxvd2VyQm91bmQo
MCkpIiwgZnVuY3Rpb24oKSB7IHJlc2V0T2JqZWN0U3RvcmUocmV2ZXJzZUN1cnNvclRlc3QpOyB9
KTsKLX0KLQotZnVuY3Rpb24gcmV2ZXJzZUN1cnNvclRlc3QoKQotewotICAgIGRlYnVnKCJyZXZl
cnNlQ3Vyc29yVGVzdCgpOiIpOwotCi0gICAgdmFyIGRlbGV0ZXMgPSBbe2lkOiAyNCwgdGFyZ2V0
czogW25hbWVzLmxlbmd0aCAtIDFdfSwKLSAgICAgICAgICAgICAgICAgICB7aWQ6IDIzLCB0YXJn
ZXRzOiBbMF19LAotICAgICAgICAgICAgICAgICAgIHtpZDogMjIsIHRhcmdldHM6IFsyMCwgMTks
IDE4XX0sCi0gICAgICAgICAgICAgICAgICAge2lkOiAxNSwgdGFyZ2V0czogWzE1XX0sCi0gICAg
ICAgICAgICAgICAgICAge2lkOiAxMywgdGFyZ2V0czogWzEyXX0sCi0gICAgICAgICAgICAgICAg
ICAge2lkOiAxMCwgdGFyZ2V0czogWzExXX0sCi0gICAgICAgICAgICAgICAgICAge2lkOiA1LCB0
YXJnZXRzOiBbNyw4XX0KLSAgICAgICAgICAgICAgICAgICBdOwotCi0KLSAgICB0ZXN0Q3Vyc29y
KGRlbGV0ZXMsICJ0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKS5vcGVuQ3Vyc29yKElEQktleVJh
bmdlLmxvd2VyQm91bmQoMCksIElEQkN1cnNvci5QUkVWKSIsIGZ1bmN0aW9uKCkgeyByZXNldE9i
amVjdFN0b3JlKGluZGV4Q3Vyc29yVGVzdCk7IH0pOwotfQotCi1mdW5jdGlvbiBpbmRleEN1cnNv
clRlc3QoKQotewotICAgIGRlYnVnKCJpbmRleEN1cnNvclRlc3QoKToiKTsKLQotICAgIHZhciBk
ZWxldGVzID0gW3tpZDogMSwgdGFyZ2V0czogWzBdfSwKLSAgICAgICAgICAgICAgICAgICB7aWQ6
IDIsIHRhcmdldHM6IFtuYW1lcy5sZW5ndGggLSAxXX0sCi0gICAgICAgICAgICAgICAgICAge2lk
OiAzLCB0YXJnZXRzOiBbNSw2LDddfSwKLSAgICAgICAgICAgICAgICAgICB7aWQ6IDEwLCB0YXJn
ZXRzOiBbMTBdfSwKLSAgICAgICAgICAgICAgICAgICB7aWQ6IDEyLCB0YXJnZXRzOiBbMTNdfSwK
LSAgICAgICAgICAgICAgICAgICB7aWQ6IDE1LCB0YXJnZXRzOiBbMTRdfSwKLSAgICAgICAgICAg
ICAgICAgICB7aWQ6IDIwLCB0YXJnZXRzOiBbMTcsMThdfQotICAgICAgICAgICAgICAgICAgIF07
Ci0KLSAgICB0ZXN0Q3Vyc29yKGRlbGV0ZXMsICJ0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKS5p
bmRleCgnbmFtZUluZGV4Jykub3BlbkN1cnNvcihJREJLZXlSYW5nZS5sb3dlckJvdW5kKCdBbHBo
YScpKSIsIGZ1bmN0aW9uKCkgeyB9KTsKLX0KLQotZnVuY3Rpb24gdHJhbnNhY3Rpb25Db21wbGV0
ZSgpCi17Ci0gICAgZGVidWcoInRyYW5zYWN0aW9uQ29tcGxldGUoKToiKTsKLSAgICBmaW5pc2hK
U1Rlc3QoKTsKLX0KLQotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY3Vyc29y
LXNraXAtZGVsZXRlZC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci11cGRhdGUtdmFs
dWUtYXJndW1lbnQtcmVxdWlyZWQuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2N1cnNvci11cGRhdGUtdmFsdWUtYXJndW1lbnQtcmVxdWlyZWQuaHRtbAppbmRleCBjM2ZkYzdl
YzhhYWJjYTFmMGJjYjQ2Yzc0ZmQyOWY3ZTlmN2Q3MjNlLi42ODU5YzdjZGY2NGNmZDJlMTFmOTA5
YWJiYzY5YjFhMTVhZWQ3NDYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9jdXJzb3ItdXBkYXRlLXZhbHVlLWFyZ3VtZW50LXJlcXVpcmVkLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXVwZGF0ZS12YWx1ZS1hcmd1bWVudC1y
ZXF1aXJlZC5odG1sCkBAIC0xLDg0ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KIDxodG1sPgog
PGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0
PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVk
REIgY3Vyc29yLnVwZGF0ZSByZXF1aXJlZCBhcmd1bWVudHMiKTsKLQotZnVuY3Rpb24gdGVzdCgp
Ci17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0
aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbiki
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2Vz
cygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsK
LQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScp
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0ZXN0R3JvdXAxOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXAx
KCkKLXsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUg
PSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnYXV0b0luY3JlbWVudCcsIHsgYXV0
b0luY3JlbWVudDogdHJ1ZSB9KTsiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24gKGV2ZW50KSB7Ci0gICAgICB0ZXN0R3JvdXAyKCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0
ZXN0R3JvdXAyKCkKLXsKLSAgICBrZXlzID0gZXZhbEFuZExvZygia2V5cyA9IFsxLCAtMSwgMCwg
MTAsIDIwMDAsICdxJywgJ3onLCAndHdvJywgJ2InLCAnYSddOyIpOwotCi0gICAga2V5SW5kZXgg
PSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDA7Iik7Ci0KLSAgICBmb3IgKGkgaW4ga2V5cykgewot
ICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoJ2Zv
bycsIGtleXNbaV0pOyIpOwotICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci0gICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0g
ICAgICAgIGlmICgrK2tleUluZGV4ID09IGtleXMubGVuZ3RoKSB7Ci0gICAgICAgICAgdGVzdEdy
b3VwMygpOwotICAgICAgICB9Ci0gICAgICB9OwotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdEdy
b3VwMygpCi17Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9y
ZS5vcGVuQ3Vyc29yKCk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAg
ICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsi
KTsKLSAgICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICAgICAgc2hvdWxkVGhyb3coImN1cnNv
ci51cGRhdGUoKTsiKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImN1cnNvciB3YXMgbnVsbCIpOwotICAgICAgICB9Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwot
ICAgIH0KLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9jdXJzb3ItdXBkYXRlLXZhbHVlLWFyZ3VtZW50LXJlcXVpcmVkLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgogPC9ib2R5PgogPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9jdXJzb3ItdXBkYXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9jdXJzb3ItdXBkYXRlLmh0bWwKaW5kZXggOTY1NGM2MjUwZjgxMGYxNTAxNDViMmQ4Njk3
MGI3MTQ2NmU2MzE3ZC4uYTQ2YTcwZDQ3MGY0YzBkNTAxY2MyYmVhZDNiZmFhZDdiOGMyNzNlYyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXVwZGF0ZS5o
dG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci11cGRhdGUuaHRt
bApAQCAtNCwyMjIgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwv
c2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJ
bmRleGVkREIncyBjdXJzb3IgdXBkYXRlLiIpOwotCi10ZXN0KCk7Ci0KLWZ1bmN0aW9uIHRlc3Qo
KQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImluZGV4ZWREQi5vcGVuKCdjdXJzb3ItdXBkYXRlJykiKTsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgdmFyIGRiID0g
ZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb25TdWNjZXNzKCkK
LXsKLSAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKLSAgICBzZWxmLnRyYW5zID0g
ZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVU
cnVlKCJ0cmFucyAhPT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJv
cnRDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gb3BlbkJhc2ljQ3Vyc29yOwotCi0g
ICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIHZhciBvYmplY3RTdG9yZSA9IGV2
YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2Jhc2ljU3RvcmUn
KSIpOwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnbXlWYWx1ZTEnLCAnbXlLZXkx
Jykub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7Ci0gICAgZXZhbEFuZExvZygi
b2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlMicsICdteUtleTInKS5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2siKTsKLSAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ215VmFs
dWUzJywgJ215S2V5MycpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOwotICAg
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnbXlWYWx1ZTQnLCAnbXlLZXk0Jykub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7Ci0KLSAgICB2YXIgb2JqZWN0U3RvcmUgPSBl
dmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdhdXRvSW5jcmVt
ZW50U3RvcmUnLCB7YXV0b0luY3JlbWVudDogdHJ1ZX0pIik7Ci0gICAgZXZhbEFuZExvZygib2Jq
ZWN0U3RvcmUuYWRkKCdmb28xJykub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7
Ci0gICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCdmb28yJykub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrIik7Ci0gICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCdm
b28zJykub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7Ci0gICAgZXZhbEFuZExv
Zygib2JqZWN0U3RvcmUuYWRkKCdmb280Jykub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrIik7Ci0KLSAgICB2YXIgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdrZXlQYXRoU3RvcmUnLCB7a2V5UGF0aDogJ2lkJ30pIik7
Ci0gICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ251bWJlckluZGV4Jywg
J251bWJlcicpIik7Ci0gICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKHtudW1iZXI6IDEs
IGlkOiAxfSkub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7Ci0gICAgZXZhbEFu
ZExvZygib2JqZWN0U3RvcmUuYWRkKHtudW1iZXI6IDIsIGlkOiAyfSkub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrIik7Ci0gICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKHtu
dW1iZXI6IDMsIGlkOiAzfSkub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7Ci0g
ICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKHtudW1iZXI6IDQsIGlkOiA0fSkub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5CYXNpY0N1
cnNvcigpCi17Ci0gICAgZGVidWcoIm9wZW5CYXNpY0N1cnNvcigpIik7Ci0gICAgZXZhbEFuZExv
ZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ2Jhc2ljU3RvcmUnLCAnYXV0b0luY3JlbWVudFN0
b3JlJywgJ2tleVBhdGhTdG9yZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAg
IHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5vbmNv
bXBsZXRlID0gdHJhbnNhY3Rpb25Db21wbGV0ZTsKLQotICAgIGtleVJhbmdlID0gSURCS2V5UmFu
Z2UubG93ZXJCb3VuZCgibXlLZXkxIik7Ci0gICAgc2VsZi5vYmplY3RTdG9yZSA9IGV2YWxBbmRM
b2coInRyYW5zLm9iamVjdFN0b3JlKCdiYXNpY1N0b3JlJykiKTsKLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygib2JqZWN0U3RvcmUub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGJhc2ljVXBkYXRlQ3Vyc29yOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIGNvdW50ZXIgPSAxOwotfQotCi1mdW5jdGlvbiBi
YXNpY1VwZGF0ZUN1cnNvcigpCi17Ci0gICAgZGVidWcoImJhc2ljVXBkYXRlQ3Vyc29yKCkiKTsK
LSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnNvdXJjZSIsICJvYmplY3RTdG9yZSIpOwotICAg
IGlmIChldmVudC50YXJnZXQucmVzdWx0ID09IG51bGwpIHsKLSAgICAgICAgc2hvdWxkQmUoImNv
dW50ZXIiLCAiNSIpOwotICAgICAgICBjb3VudGVyID0gMTsKLQotICAgICAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2Jhc2ljU3RvcmUnKS5vcGVuQ3Vyc29yKGtl
eVJhbmdlKSIpOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGJhc2ljQ2hlY2tDdXJzb3I7
Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImV2ZW50LnRh
cmdldC5yZXN1bHQudXBkYXRlKCdteVVwZGF0ZWRWYWx1ZScgKyBjb3VudGVyKyspIik7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0
LnNvdXJjZS5jb250aW51ZSgpIik7IH0KLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYmFzaWNDaGVja0N1cnNvcigpCi17Ci0gICAg
ZGVidWcoImJhc2ljQ2hlY2tDdXJzb3IoKSIpOwotICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0
ID09IG51bGwpIHsKLSAgICAgICAgc2hvdWxkQmUoImNvdW50ZXIiLCAiNSIpOwotICAgICAgICBj
b3VudGVyID0gMTsKLQotICAgICAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQo
MSk7Ci0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYXV0
b0luY3JlbWVudFN0b3JlJykub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKLSAgICAgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBhdXRvSW5jcmVtZW50VXBkYXRlQ3Vyc29yOwotICAgICAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXki
LCAibXlLZXkiICsgY291bnRlcik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50
YXJnZXQucmVzdWx0LnZhbHVlIiwgIm15VXBkYXRlZFZhbHVlIiArIGNvdW50ZXIrKyk7Ci0gICAg
ZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7Ci19Ci0KLWZ1bmN0
aW9uIGF1dG9JbmNyZW1lbnRVcGRhdGVDdXJzb3IoKQotewotICAgIGRlYnVnKCJhdXRvSW5jcmVt
ZW50VXBkYXRlQ3Vyc29yKCkiKTsKLSAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9PSBudWxs
KSB7Ci0gICAgICAgIHNob3VsZEJlKCJjb3VudGVyIiwgIjUiKTsKLSAgICAgICAgY291bnRlciA9
IDE7Ci0KLSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdh
dXRvSW5jcmVtZW50U3RvcmUnKS5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOwotICAgICAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGF1dG9JbmNyZW1lbnRDaGVja0N1cnNvcjsKLSAgICAgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC51cGRh
dGUoJ215VXBkYXRlZEZvbycgKyBjb3VudGVyKyspIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbigpIHsgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnNvdXJjZS5jb250aW51ZSgp
Iik7IH0KLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0K
LQotZnVuY3Rpb24gYXV0b0luY3JlbWVudENoZWNrQ3Vyc29yKCkKLXsKLSAgICBkZWJ1ZygiYXV0
b0luY3JlbWVudENoZWNrQ3Vyc29yKCkiKTsKLSAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9
PSBudWxsKSB7Ci0gICAgICAgIHNob3VsZEJlKCJjb3VudGVyIiwgIjUiKTsKLSAgICAgICAgY291
bnRlciA9IDE7Ci0KLSAgICAgICAga2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKDEp
OwotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2tleVBh
dGhTdG9yZScpLm9wZW5DdXJzb3Ioa2V5UmFuZ2UpIik7Ci0gICAgICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0ga2V5UGF0aFVwZGF0ZUN1cnNvcjsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBzaG91
bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAiY291bnRlciIpOwotICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZSIsICJteVVwZGF0ZWRGb28i
ICsgY291bnRlcisrKTsKLSAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRp
bnVlKCkiKTsKLX0KLQotZnVuY3Rpb24ga2V5UGF0aFVwZGF0ZUN1cnNvcigpCi17Ci0gICAgZGVi
dWcoImtleVBhdGhVcGRhdGVDdXJzb3IoKSIpOwotICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0
ID09IG51bGwpIHsKLSAgICAgICAgc2hvdWxkQmUoImNvdW50ZXIiLCAiNSIpOwotICAgICAgICBj
b3VudGVyID0gMTsKLQotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0
U3RvcmUoJ2tleVBhdGhTdG9yZScpLm9wZW5DdXJzb3Ioa2V5UmFuZ2UpIik7Ci0gICAgICAgIHJl
cXVlc3Qub25zdWNjZXNzID0ga2V5UGF0aENoZWNrQ3Vyc29yOwotICAgICAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImV2ZW50LnRhcmdldC5yZXN1bHQudXBkYXRl
KHtpZDogMTAwICsgY291bnRlciwgbnVtYmVyOiAxMDAgKyBjb3VudGVyfSkiLCAiSURCRGF0YWJh
c2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJldmVu
dC50YXJnZXQucmVzdWx0LnVwZGF0ZSh7aWQ6IGNvdW50ZXIsIG51bWJlcjogMTAwICsgY291bnRl
cisrfSkiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeyBldmFsQW5kTG9n
KCJldmVudC50YXJnZXQuc291cmNlLmNvbnRpbnVlKCkiKSB9OwotICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBrZXlQYXRoQ2hlY2tD
dXJzb3IoKQotewotICAgIGRlYnVnKCJrZXlQYXRoQ2hlY2tDdXJzb3IoKSIpOwotICAgIGlmIChl
dmVudC50YXJnZXQucmVzdWx0ID09IG51bGwpIHsKLSAgICAgICAgc2hvdWxkQmUoImNvdW50ZXIi
LCAiNSIpOwotICAgICAgICBjb3VudGVyID0gMTsKLQotICAgICAgICBrZXlSYW5nZSA9IElEQktl
eVJhbmdlLmxvd2VyQm91bmQoMTAxKTsKLSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRy
YW5zLm9iamVjdFN0b3JlKCdrZXlQYXRoU3RvcmUnKS5pbmRleCgnbnVtYmVySW5kZXgnKS5vcGVu
S2V5Q3Vyc29yKGtleVJhbmdlKSIpOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGtleUN1
cnNvcjsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJl
c3VsdC5rZXkiLCAiY291bnRlciIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0
LnZhbHVlLmlkIiwgImNvdW50ZXIiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3Vs
dC52YWx1ZS5udW1iZXIiLCAoY291bnRlciArIDEwMCkudG9TdHJpbmcoKSk7Ci0gICAgY291bnRl
cisrOwotICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOwot
fQotCi1mdW5jdGlvbiBrZXlDdXJzb3IoKQotewotICAgIGRlYnVnKCJrZXlDdXJzb3IoKSIpOwot
ICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0ID09IG51bGwpIHsKLSAgICAgICAgc2hvdWxkQmUo
ImNvdW50ZXIiLCAiNSIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgImNvdW50ZXIgKyAxMDAiKTsKLSAgICBzaG91bGRC
ZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgImNvdW50ZXIiKTsKLQotICAgIHRy
eSB7Ci0gICAgICAgIGRlYnVnKCJldmVudC50YXJnZXQucmVzdWx0LnVwZGF0ZSh7aWQ6IGNvdW50
ZXIsIG51bWJlcjogY291bnRlciArIDIwMH0pIik7Ci0gICAgICAgIGV2ZW50LnRhcmdldC5yZXN1
bHQudXBkYXRlKHtpZDogY291bnRlciwgbnVtYmVyOiBjb3VudGVyICsgMjAwfSk7Ci0gICAgICAg
IHRlc3RGYWlsZWQoIkV4cGVjdGVkIGV4Y2VwdGlvbi4iKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0g
ICAgICAgIGNvZGUgPSBlLmNvZGU7Ci0gICAgICAgIHNob3VsZEJlKCJjb2RlIiwgIklEQkRhdGFi
YXNlRXhjZXB0aW9uLk5PVF9BTExPV0VEX0VSUiIpOwotICAgIH0KLQotICAgIGNvdW50ZXIrKzsK
LSAgICBldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCk7Ci19Ci0KLWZ1bmN0aW9uIHRyYW5z
YWN0aW9uQ29tcGxldGUoKQotewotICAgIGRlYnVnKCJ0cmFuc2FjdGlvbkNvbXBsZXRlKCkiKTsK
LSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvY3Vyc29yLXVwZGF0ZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGEtY29ycnVw
dGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YS1jb3JydXB0aW9u
Lmh0bWwKaW5kZXggNWM2MjJlN2M3ODQyZTcyMjY1ZmVkMDJiNzU3ZTA4NTE1NGYwZjBmMi4uOTU5
N2M1YjM1MzVmYmNmZmQ5NWQ3NzFjOWE4NzlmYjg5NjkxYjE4ZSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YS1jb3JydXB0aW9uLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YS1jb3JydXB0aW9uLmh0bWwKQEAgLTQsNzEgKzQs
NyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFk
PgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCB0aGF0IGRhdGEgaW5zZXJ0
ZWQgaW50byBJbmRleGVkREIgZG9lcyBub3QgZ2V0IGNvcnJ1cHRlZCBvbiBkaXNrLiIpOwotCi1m
dW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignZGF0YS1jb3JydXB0aW9uJykiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17
Ci0gICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7Ci0gICAgc2VsZi5kYiA9IGV2YWxBbmRMb2co
ImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IHNldFZlcnNpb25TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCi17Ci0gICAgZGVi
dWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7Ci0gICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2co
InRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMg
IT09IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7
Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IGFkZERhdGE7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RT
dG9yZXMoZGIpOwotCi0gICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3Jl
TmFtZScpIik7Ci19Ci0KLXZhciB0ZXN0RGF0ZSA9IG5ldyBEYXRlKCdGZWJydWFyeSAyNCwgMTk1
NSAxMjowMDowOCcpOwotCi1mdW5jdGlvbiBhZGREYXRhKCkKLXsKLSAgICBkZWJ1ZygiYWRkRGF0
YSgpOiIpOwotICAgIHZhciB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0g
ZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSki
KTsKLSAgICB2YXIgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSB0cmFuc2FjdGlvbi5v
YmplY3RTdG9yZSgnc3RvcmVOYW1lJykuYWRkKHt4OiB0ZXN0RGF0ZX0sICdrZXknKSIpOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHRyYW5zYWN0
aW9uLm9uY29tcGxldGUgPSBnZXREYXRhOwotfQotCi1mdW5jdGlvbiBnZXREYXRhKCkKLXsKLSAg
ICBkZWJ1ZygiYWRkRGF0YSgpOiIpOwotICAgIHZhciB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2co
InRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rp
b24uUkVBRF9PTkxZKSIpOwotICAgIHZhciByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKS5nZXQoJ2tleScpIik7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBkb0NoZWNrOwotfQotCi1mdW5jdGlvbiBkb0NoZWNrKCkKLXsKLSAgICBzaG91
bGRCZVRydWUoImV2ZW50LnRhcmdldC5yZXN1bHQueC50b1N0cmluZygpID09IHRlc3REYXRlLnRv
U3RyaW5nKCkiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotdGVzdCgpOwotCi0KLTwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9kYXRhLWNvcnJ1cHRpb24uanMiPjwvc2NyaXB0
PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1iYXNpY3MuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2RhdGFiYXNlLWJhc2ljcy5odG1sCmluZGV4IDcxZTVlNTY4NGY0ZjE0OWQxYmQ4
MGJiMTM4ZDcxY2ZmZTlhMGY5ZDkuLjEwZWNiMDU0NGUyNjlmMTE3MTM3ZmY5Nzc2ODUwMWIxMzE5
NWI5NDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNl
LWJhc2ljcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNl
LWJhc2ljcy5odG1sCkBAIC00LDEyMSArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3No
YXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0
aW9uKCJUZXN0IHRoZSBiYXNpY3Mgb2YgSW5kZXhlZERCJ3MgSURCRGF0YWJhc2UuIik7Ci0KLWZ1
bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2RhdGFiYXNlLWJhc2ljcycpIik7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQot
ewotICAgIHNlbGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsK
LQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicp
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc2V0
VmVyc2lvblN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOwot
ICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9y
dCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVz
KGRiKTsKLQotICAgIGRlYnVnKCJUZXN0aW5nIHNldFZlcnNpb24uIik7Ci0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coJ2RiLnNldFZlcnNpb24oInZlcnNpb24gYSIpJyk7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBzZXRWZXJzaW9uQWdhaW47Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb25BZ2FpbigpCi17Ci0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coJ2RiLnNldFZlcnNpb24oInZlcnNpb24gYiIpJyk7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVPYmplY3RTdG9yZTsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY3JlYXRlT2Jq
ZWN0U3RvcmUoKQotewotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGIudmVyc2lvbiIsICJ2
ZXJzaW9uIGIiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLm5hbWUiLCAiZGF0YWJh
c2UtYmFzaWNzIik7Ci0gICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMiLCAiW10iKTsK
LSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMCIpOwotICAgIHNo
b3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCcnKSIsICJmYWxzZSIpOwotICAg
IHNob3VsZEJlTnVsbCgiZGIub2JqZWN0U3RvcmVOYW1lc1swXSIpOwotICAgIHNob3VsZEJlTnVs
bCgiZGIub2JqZWN0U3RvcmVOYW1lcy5pdGVtKDApIik7Ci0KLSAgICBvYmplY3RTdG9yZSA9IGV2
YWxBbmRMb2coJ2RiLmNyZWF0ZU9iamVjdFN0b3JlKCJ0ZXN0MTIzIiknKTsKLSAgICBjaGVja09i
amVjdFN0b3JlKCk7Ci0gICAgY29tbWl0QW5kQ29udGludWUoKTsKLX0KLQotZnVuY3Rpb24gY2hl
Y2tPYmplY3RTdG9yZSgpCi17Ci0gICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMiLCAi
Wyd0ZXN0MTIzJ10iKTsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgi
LCAiMSIpOwotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCcnKSIs
ICJmYWxzZSIpOwotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCd0
ZXN0NDU2JykiLCAiZmFsc2UiKTsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5j
b250YWlucygndGVzdDEyMycpIiwgInRydWUiKTsKLX0KLQotZnVuY3Rpb24gY29tbWl0QW5kQ29u
dGludWUoKQotewotICAgIHNlbGYuc2V0VGltZW91dCh0ZXN0U2V0VmVyc2lvbkFib3J0LCAwKTsK
LX0KLQotZnVuY3Rpb24gdGVzdFNldFZlcnNpb25BYm9ydCgpCi17Ci0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coJ2RiLnNldFZlcnNpb24oInZlcnNpb24gYyIpJyk7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBjcmVhdGVBbm90aGVyT2JqZWN0U3RvcmU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUFub3RoZXJPYmpl
Y3RTdG9yZSgpCi17Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkYi52ZXJzaW9uIiwgInZl
cnNpb24gYyIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGIubmFtZSIsICJkYXRhYmFz
ZS1iYXNpY3MiKTsKLSAgICBjaGVja09iamVjdFN0b3JlKCk7Ci0KLSAgICBvYmplY3RTdG9yZSA9
IGV2YWxBbmRMb2coJ2RiLmNyZWF0ZU9iamVjdFN0b3JlKCJ0ZXN0NDU2IiknKTsKLSAgICB2YXIg
c2V0VmVyc2lvblRyYW5zID0gZXZhbEFuZExvZygic2V0VmVyc2lvblRyYW5zID0gZXZlbnQudGFy
Z2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgic2V0VmVyc2lvblRyYW5zICE9PSBudWxs
Iik7Ci0gICAgc2V0VmVyc2lvblRyYW5zLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQ29tcGxldGVD
YWxsYmFjazsKLSAgICBzZXRWZXJzaW9uVHJhbnMub25hYm9ydCA9IGNoZWNrTWV0YWRhdGE7Ci0g
ICAgc2V0VmVyc2lvblRyYW5zLmFib3J0KCk7Ci19Ci0KLWZ1bmN0aW9uIGNoZWNrTWV0YWRhdGEo
KQotewotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGIudmVyc2lvbiIsICJ2ZXJzaW9uIGIi
KTsKLSAgICBjaGVja09iamVjdFN0b3JlKCk7Ci0gICAgdGVzdENsb3NlKCk7Ci19Ci0KLWZ1bmN0
aW9uIHRlc3RDbG9zZSgpCi17Ci0gICAgZXZhbEFuZExvZygiZGIuY2xvc2UoKSIpOwotICAgIGRl
YnVnKCJOb3cgdGhhdCB0aGUgY29ubmVjdGlvbiBpcyBjbG9zZWQsIHRyYW5zYWN0aW9uIGNyZWF0
aW9uIHNob3VsZCBmYWlsIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNh
Y3Rpb24oJ3Rlc3QxMjMnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9FUlIi
KTsKLSAgICBkZWJ1ZygiQ2FsbCB0d2ljZSwgbWFrZSBzdXJlIGl0J3MgaGFybWxlc3MiKTsKLSAg
ICBldmFsQW5kTG9nKCJkYi5jbG9zZSgpIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXRl
c3QoKTsKLQotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZGF0YWJhc2UtYmFz
aWNzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtbmFtZS11bmRlZmluZWQuaHRt
bCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLW5hbWUtdW5kZWZpbmVk
Lmh0bWwKaW5kZXggNzgwMDI4NmQ5ZjFjMTAzNjUxMDUyYmMwMzIwNzc4NWNkMmM0YTEwNS4uYjZm
OTE0NDVlM2YyMTY3YTBkOGEyZDU1NjI5Yjg1ZDkwNjQ4YThkZSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtbmFtZS11bmRlZmluZWQuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1uYW1lLXVuZGVmaW5lZC5o
dG1sCkBAIC0xLDI1ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFk
PgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgdW5kZWZp
bmVkIGFzIHJlY29yZCB2YWx1ZSIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVW
ZW5kb3JQcmVmaXhlcygpOwotICAgIHNob3VsZFRocm93KCJpbmRleGVkREIub3BlbigpOyIpOwot
ICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2RhdGFiYXNlLW5hbWUtdW5kZWZpbmVkLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvZGF0YWJhc2Utb2RkLW5hbWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9kYXRhYmFzZS1vZGQtbmFtZXMuaHRtbAppbmRleCBmMzMxMjkyZjM1YTlkY2QzNDll
MTljNTVjNDFhYTQxYTRjZjM5MWIzLi4xM2VlZDllOTc3YzlkNmNhN2JmODAxMzEzNDY3NmM0YjJi
MTk5ZjA1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFz
ZS1vZGQtbmFtZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRh
YmFzZS1vZGQtbmFtZXMuaHRtbApAQCAtMSw0MSArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+CiA8
aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48
L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3Qg
SW5kZXhlZERCIG9kZCB2YWx1ZSBkYXRhdHlwZXMiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0g
ICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIHRlc3REYXRhID0gW3sgZGVzY3JpcHRp
b246ICdudWxsJywgICAgICAgICAgICAgICBuYW1lOiAnXHUwMDAwJyB9LAotICAgICAgICAgICAg
ICAgIHsgZGVzY3JpcHRpb246ICdmYWlodScsICAgICAgICAgICAgICBuYW1lOiAnXHVkODAwXHVk
ZjQ2JyB9LAotICAgICAgICAgICAgICAgIHsgZGVzY3JpcHRpb246ICd1bnBhaXJlZCBzdXJyb2dh
dGUnLCBuYW1lOiAnXHVkODAwJyB9LAotICAgICAgICAgICAgICAgIHsgZGVzY3JpcHRpb246ICdm
ZmZlJywgICAgICAgICAgICAgICBuYW1lOiAnXHVmZmZlJyB9LAotICAgICAgICAgICAgICAgIHsg
ZGVzY3JpcHRpb246ICdmZmZmJywgICAgICAgICAgICAgICBuYW1lOiAnXHVmZmZmJyB9LAotICAg
ICAgICAgICAgICAgIHsgZGVzY3JpcHRpb246ICdsaW5lIHNlcGFyYXRvcicsICAgICBuYW1lOiAn
XHUyMDI4JyB9Ci0gICAgXTsKLSAgICBuZXh0VG9PcGVuID0gMDsKLSAgICBvcGVuTmV4dERhdGFi
YXNlKCk7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5OZXh0RGF0YWJhc2UoKQotewotICAgIGRlYnVnKCJv
cGVuaW5nIGEgZGF0YWJhc2UgbmFtZWQgIiArIHRlc3REYXRhW25leHRUb09wZW5dLmRlc2NyaXB0
aW9uKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4odGVzdERhdGFb
bmV4dFRvT3Blbl0ubmFtZSwgdGVzdERhdGFbbmV4dFRvT3Blbl0uZGVzY3JpcHRpb24pIik7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSArK25leHRUb09wZW4gPCB0ZXN0RGF0YS5sZW5ndGggPyBvcGVuTmV4dERh
dGFiYXNlIDogZmluaXNoSlNUZXN0OwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2RhdGFiYXNlLW9kZC1uYW1lcy5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2RhdGFiYXNlLXF1b3RhLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9kYXRhYmFzZS1xdW90YS5odG1sCmluZGV4IDMzNzY4OTI0ZjU3Y2I1OTBiYjAyMGJlMjQ1NjY3
N2ExOWFiMzEwNTIuLmRmNjM3NmVmZGI4YjVhYWZiMjg4NGZmMDUzY2E5NDEyMGNmZmQ0YzYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLXF1b3RhLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtcXVvdGEuaHRt
bApAQCAtNCwxMDMgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwv
c2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdHMg
SW5kZXhlZERCJ3MgcXVvdGEgZW5mb3JjaW5nIG1lY2hhbmlzbS4iKTsKLQotZnVuY3Rpb24gdGVz
dCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCLm9wZW4oJ2RhdGFiYXNlLXF1b3RhJykiKTsKLSAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgc2VsZi5k
YiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb25TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2Vz
cygpCi17Ci0gICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7Ci0gICAgc2VsZi50cmFu
cyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3Vs
ZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3Rl
ZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IGNoZWNrUXVvdGFFbmZvcmNp
bmc7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJkYi52ZXJzaW9uIiwgIm5ldyB2ZXJzaW9uIik7Ci0gICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJkYi5uYW1lIiwgImRhdGFiYXNlLXF1b3RhIik7Ci0gICAgc2hvdWxkQmUoImRi
Lm9iamVjdFN0b3JlTmFtZXMiLCAiW10iKTsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVO
YW1lcy5sZW5ndGgiLCAiMCIpOwotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmNv
bnRhaW5zKCcnKSIsICJmYWxzZSIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCdk
Yi5jcmVhdGVPYmplY3RTdG9yZSgidGVzdDEyMyIpJyk7Ci0gICAgY2hlY2tPYmplY3RTdG9yZSgp
OwotfQotCi1mdW5jdGlvbiBjaGVja09iamVjdFN0b3JlKCkKLXsKLSAgICBzaG91bGRCZSgiZGIu
b2JqZWN0U3RvcmVOYW1lcyIsICJbJ3Rlc3QxMjMnXSIpOwotICAgIHNob3VsZEJlKCJkYi5vYmpl
Y3RTdG9yZU5hbWVzLmxlbmd0aCIsICIxIik7Ci0gICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3Jl
TmFtZXMuY29udGFpbnMoJycpIiwgImZhbHNlIik7Ci0gICAgc2hvdWxkQmUoImRiLm9iamVjdFN0
b3JlTmFtZXMuY29udGFpbnMoJ3Rlc3Q0NTYnKSIsICJmYWxzZSIpOwotICAgIHNob3VsZEJlKCJk
Yi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCd0ZXN0MTIzJykiLCAidHJ1ZSIpOwotfQotCi1m
dW5jdGlvbiBjaGVja1F1b3RhRW5mb3JjaW5nKCkKLXsKLSAgICB2YXIgdHJhbnMgPSBldmFsQW5k
TG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsndGVzdDEyMyddLCBJREJUcmFuc2FjdGlvbi5S
RUFEX1dSSVRFKSIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB0ZXN0Q29tcGxldGU7Ci0gICAgdHJh
bnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOwotICAgIGRlYnVnKCJD
cmVhdGluZyAnZGF0YScgd2hpY2ggY29udGFpbnMgNjRLIG9mIGRhdGEiKTsKLSAgICBzZWxmLmRh
dGEgPSAiWCI7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNjsgaSsrKQotICAgICAgICBkYXRh
ICs9IGRhdGE7Ci0gICAgc2hvdWxkQmUoImRhdGEubGVuZ3RoIiwgIjY1NTM2Iik7Ci0gICAgc2Vs
Zi5kYXRhQWRkZWQgPSAwOwotICAgIHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRy
YW5zLm9iamVjdFN0b3JlKCd0ZXN0MTIzJykiKTsKLSAgICBhZGREYXRhKCk7Ci19Ci0KLWZ1bmN0
aW9uIGFkZERhdGEoKQotewotICAgIGlmIChkYXRhQWRkZWQgPCA1ICogMTAyNCAqIDEwMjQpIHsK
LSAgICAgICAgaWYgKGRhdGFBZGRlZCA+IDApCi0gICAgICAgICAgICBzdG9yZSA9IGV2ZW50LnRh
cmdldC5zb3VyY2U7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiYWRkZWQgbW9y
ZSB0aGFuIHF1b3RhIik7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGRhdGFBZGRlZCArPSA2NTUzNjsKLSAgICByZXF1ZXN0ID0gc3RvcmUuYWRk
KHt4OiBkYXRhfSwgZGF0YUFkZGVkKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZERhdGE7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gbG9nRXJyb3I7Ci19Ci0KLWZ1bmN0aW9uIGxvZ0Vycm9y
KCkKLXsKLSAgICBkZWJ1ZygiRXJyb3IgZnVuY3Rpb24gY2FsbGVkOiAoIiArIGV2ZW50LnRhcmdl
dC5lcnJvckNvZGUgKyAiKSAiICsgZXZlbnQudGFyZ2V0LndlYmtpdEVycm9yTWVzc2FnZSk7Ci0g
ICAgZXZhbEFuZExvZygiZXZlbnQucHJldmVudERlZmF1bHQoKSIpOwotfQotCi1mdW5jdGlvbiB0
ZXN0Q29tcGxldGUoKQotewotICAgIHRlc3RQYXNzZWQoIkFkZGluZyBkYXRhIGZhaWxlZCBkdWUg
dG8gcXVvdGEgZXJyb3IuIERhdGEgYWRkZWQgd2FzIGFib3V0ICIgKyBNYXRoLnJvdW5kKGRhdGFB
ZGRlZCAvIDEwMjQgLyAxMDI0KSArICIgTUIiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQot
dGVzdCgpOwotCi0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9kYXRhYmFzZS1x
dW90YS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZS1jbG9zZWQtZGF0YWJhc2Utb2Jq
ZWN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGUtY2xvc2VkLWRh
dGFiYXNlLW9iamVjdC5odG1sCmluZGV4IDRhYjUwZDIwODI5NTUwMTcxZGE4YTFhZGFmZjVkZDdk
NzI1NjVkYzIuLjdmZGY1OGUxZDNmOGIyMTc0YTczMjQ3ODhjNjhjYWY2Nzg0OTdkZTcgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZS1jbG9zZWQtZGF0YWJh
c2Utb2JqZWN0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRl
LWNsb3NlZC1kYXRhYmFzZS1vYmplY3QuaHRtbApAQCAtNCw1NiArNCw3IEBACiA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3Jp
cHQ+Ci0KLWRlc2NyaXB0aW9uKCJFbnN1cmUgdGhhdCBJREJEYXRhYmFzZSBvYmplY3RzIGFyZSBk
ZWxldGVkIHdoZW4gdGhlcmUgYXJlIG5vIHJldGFpbmluZyBwYXRocyBsZWZ0Iik7Ci0KLQotZnVu
Y3Rpb24gdGVzdCgpIHsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIG9wZW5EQkNv
bm5lY3Rpb24oKTsKLX0KLQotZnVuY3Rpb24gb3BlbkRCQ29ubmVjdGlvbigpCi17Ci0gICAgZXZh
bEFuZExvZygic2VsZi5zdGF0ZSA9ICdzdGFydGluZyciKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCLm9wZW4oJ2RlbGV0ZS1jbG9zZWQtZGF0YWJhc2Utb2JqZWN0JykiKTsK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2Vzcygp
Ci17Ci0gICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIp
OwotCi0gICAgLy8gT3BlbiBhIHNlY29uZCBjb25uZWN0aW9uIHRvIHRoZSBzYW1lIGRhdGFiYXNl
LgotICAgIHZhciByZXF1ZXN0MiA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdkZWxldGUt
Y2xvc2VkLWRhdGFiYXNlLW9iamVjdCcpIik7Ci0gICAgcmVxdWVzdDIub25zdWNjZXNzID0gb3Bl
blN1Y2Nlc3MyOwotICAgIHJlcXVlc3QyLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MyKCkKLXsKLSAgICBkZWJ1ZygiU2Vjb25kIGNv
bm5lY3Rpb24gc3VjY2Vzc2Z1bGx5IGVzdGFibGlzaGVkLiIpOwotICAgIC8vIEFmdGVyIGxlYXZp
bmcgdGhpcyBmdW5jdGlvbiwgdGhlcmUgYXJlIG5vIHJlbWFpbmluZyByZWZlcmVuY2VzIHRvIHRo
ZQotICAgIC8vIHNlY29uZCBjb25uZWN0aW9uLCBzbyBpdCBzaG91bGQgZ2V0IGRlbGV0ZWQuCi0g
ICAgc2V0VGltZW91dChzZXRWZXJzaW9uLCAyKTsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvbigp
Ci17Ci0gICAgZ2MoKTsKLSAgICBkZWJ1ZygiY2FsbGluZyBzZXRWZXJzaW9uKCkgLSBjYWxsYmFj
ayBzaG91bGQgcnVuIGltbWVkaWF0ZWx5Iik7Ci0gICAgdmFyIHZlcnNpb25DaGFuZ2VSZXF1ZXN0
ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsKLSAgICB2ZXJzaW9u
Q2hhbmdlUmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgdmVy
c2lvbkNoYW5nZVJlcXVlc3Qub25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2NrZWRDYWxsYmFjazsK
LSAgICB2ZXJzaW9uQ2hhbmdlUmVxdWVzdC5vbnN1Y2Nlc3MgPSBmaW5pc2hKU1Rlc3Q7Ci19Ci0K
LQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZGVsZXRlLWNs
b3NlZC1kYXRhYmFzZS1vYmplY3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGUtcmFu
Z2UuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZS1yYW5nZS5odG1s
CmluZGV4IDRmYTJmMjMxMDE3ZDFmZDgxMTJiZDYwMTgxNjc5MjhjM2MxNTRlYmEuLmM4MDA0MTE4
ZGRkNTVjOGMxOWFlNzg1MzY5MzBiNDdjY2I3MDcyMWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZS1yYW5nZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZS1yYW5nZS5odG1sCkBAIC00LDk1ICs0LDcgQEAKIDxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5Pgot
PHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgSURCT2JqZWN0U3RvcmUu
ZGVsZXRlKElEQktleVJhbmdlKSBtZXRob2QuIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAg
IHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5k
ZXhlZERCLmRlbGV0ZURhdGFiYXNlKCdkZWxldGUtcmFuZ2UnKSIpOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24gKCkgewotICAgICAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9w
ZW4oJ2RlbGV0ZS1yYW5nZScpIik7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgp
IHsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImRiID0gcmVxdWVzdC5yZXN1bHQiKTsKLSAgICAg
ICAgICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICAg
ICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAg
ICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAg
ZXZhbEFuZExvZygidHJhbnMgPSByZXF1ZXN0LnJlc3VsdCIpOwotICAgICAgICAgICAgICAgIHRy
YW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLQotICAgICAgICAgICAgICAg
IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7Ci0KLSAgICAgICAg
ICAgICAgICB0cmFucy5vbmNvbXBsZXRlID0gcnVuVGVzdHM7Ci0gICAgICAgICAgICB9OwotICAg
ICAgICB9OwotICAgIH0KLX0KLQotZnVuY3Rpb24gY2hlY2tLZXlzKGV4cGVjdGVkLCBjYWxsYmFj
aykKLXsKLSAgICBkZWJ1ZygiZ2V0dGluZyBrZXlzIGZyb20gc3RvcmUuLi4iKTsKLSAgICBkZWJ1
ZygiZXhwZWN0OiAiICsgSlNPTi5zdHJpbmdpZnkoZXhwZWN0ZWQpKTsKLSAgICB2YXIga2V5cyA9
IFtdOwotICAgIHJlcXVlc3QgPSBzdG9yZS5vcGVuQ3Vyc29yKCk7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbiAoKSB7Ci0gICAgICAgIGN1cnNvciA9IHJlcXVlc3QucmVzdWx0OwotICAgICAgICBp
ZiAoY3Vyc29yKSB7Ci0gICAgICAgICAgICBrZXlzLnB1c2goY3Vyc29yLmtleSk7Ci0gICAgICAg
ICAgICBjdXJzb3IuY29udGludWUoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGRl
YnVnKCJhY3R1YWw6ICIgKyBKU09OLnN0cmluZ2lmeShrZXlzKSk7Ci0gICAgICAgICAgICBpZiAo
SlNPTi5zdHJpbmdpZnkoZXhwZWN0ZWQpID09PSBKU09OLnN0cmluZ2lmeShrZXlzKSkgewotICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoIk1hdGNoISIpOwotICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJEb24ndCBtYXRjaCEiKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgIH07Ci19Ci0KLXZhciB0ZXN0cyA9IFsKLSAgICB7IGxvd2VyOiAz
LCB1cHBlcjogOCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6
IFsxLCAyLCA5LCAxMF19LAotICAgIHsgbG93ZXI6IDMsIHVwcGVyOiA4LCBsb3dlck9wZW46IHRy
dWUsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiBbMSwgMiwgMywgOSwgMTBdfSwKLSAgICB7
IGxvd2VyOiAzLCB1cHBlcjogOCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXJPcGVuOiB0cnVlLCBl
eHBlY3RlZDogWzEsIDIsIDgsIDksIDEwXX0sCi0gICAgeyBsb3dlcjogMywgdXBwZXI6IDgsIGxv
d2VyT3BlbjogdHJ1ZSwgdXBwZXJPcGVuOiB0cnVlLCBleHBlY3RlZDogWzEsIDIsIDMsIDgsIDks
IDEwXX0KLV07Ci0KLWZ1bmN0aW9uIHJ1blRlc3RzKCkKLXsKLSAgICBmdW5jdGlvbiBuZXh0VGVz
dCgpIHsKLSAgICAgICAgdmFyIHRlc3QgPSB0ZXN0cy5zaGlmdCgpOwotICAgICAgICBpZiAodGVz
dCkgewotICAgICAgICAgICAgZGVidWcoIiIpOwotICAgICAgICAgICAgZXZhbEFuZExvZygidHJh
bnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIp
OwotICAgICAgICAgICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3Rv
cmUnKSIpOwotICAgICAgICAgICAgZm9yIChpID0gMTsgaSA8PSAxMDsgKytpKSB7Ci0gICAgICAg
ICAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCIgKyBpICsgIiwiICsgaSArICIpIik7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5kZWxldGUoSURCS2V5
UmFuZ2UuYm91bmQoIiArCi0gICAgICAgICAgICAgICAgdGVzdC5sb3dlciArICIsICIgKwotICAg
ICAgICAgICAgICAgIHRlc3QudXBwZXIgKyAiLCAiICsKLSAgICAgICAgICAgICAgICB0ZXN0Lmxv
d2VyT3BlbiArICIsICIgKwotICAgICAgICAgICAgICAgIHRlc3QudXBwZXJPcGVuICsgIikpIik7
Ci0gICAgICAgICAgICBjaGVja0tleXModGVzdC5leHBlY3RlZCwgbmV4dFRlc3QpOwotICAgICAg
ICAgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgICAgICAg
ICAgdHJhbnMub25jb21wbGV0ZSA9IG5leHRUZXN0OwotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgbmV4dFRlc3QoKTsKLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvZGVsZXRlLXJhbmdlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIu
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5
PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGVs
ZXRlSW5kZXguaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZUluZGV4
Lmh0bWwKaW5kZXggNGU3NjFmZWU2YTBmY2MzMzkxYWIyNzJiOTkyNzQ5MmYxMjYxZTI3My4uYjJj
YTQ0MzVlNWUzZjFkMjU4Y2MxYjRjNjlkMzFhODNjNGFkZjBkNCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlSW5kZXguaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVJbmRleC5odG1sCkBAIC0xLDU5ICsxLDEwIEBACi08
IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291
cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1k
ZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgZGVsZXRlSW5kZXggbWV0aG9kIik7Ci0KLWZ1bmN0
aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdkZWxldGVJbmRleCcpIik7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRi
ID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gdHdpZGRsZUluZGV4ZXM7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHR3aWRkbGVJbmRleGVzKCkKLXsK
LSAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZXZlbnQudGFyZ2V0
LnJlc3VsdDsiKTsKLSAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci0gICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNr
OwotICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBwb3N0VHdpZGRsaW5nOwotICAgIGRlbGV0
ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9i
amVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycpOyIpOwotICAgIGV2YWxBbmRF
eHBlY3RFeGNlcHRpb24oIm9iamVjdFN0b3JlLmRlbGV0ZUluZGV4KCdmaXJzdCcpIiwgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKLSAgICBzaG91bGRUaHJvdygib2JqZWN0
U3RvcmUuZGVsZXRlSW5kZXgoKSIpOyAvLyBUeXBlRXJyb3I6IG5vdCBlbm91Z2ggYXJndW1lbnRz
LgotICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBvYmplY3RTdG9yZS5jcmVhdGVJbmRl
eCgnZmlyc3QnLCAnZmlyc3QnKTsiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJvYmpl
Y3RTdG9yZS5kZWxldGVJbmRleCgnRklSU1QnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1Rf
Rk9VTkRfRVJSIik7Ci0gICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IG9iamVjdFN0b3Jl
LmNyZWF0ZUluZGV4KCdzZWNvbmQnLCAnc2Vjb25kJyk7Iik7Ci0gICAgcmV0dXJuVmFsdWUgPSBl
dmFsQW5kTG9nKCJyZXR1cm5WYWx1ZSA9IG9iamVjdFN0b3JlLmRlbGV0ZUluZGV4KCdmaXJzdCcp
OyIpOwotICAgIHNob3VsZEJlKCJyZXR1cm5WYWx1ZSIsICJ1bmRlZmluZWQiKTsKLX0KLQotZnVu
Y3Rpb24gcG9zdFR3aWRkbGluZygpCi17Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ2JhcicpOyIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxM
T1dFRF9FUlIiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJvYmplY3RTdG9yZS5kZWxl
dGVJbmRleCgnc2Vjb25kJykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5B
Q1RJVkVfRVJSIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXRlc3QoKTsKLQotPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RlbGV0ZUluZGV4LmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvZGVsZXRlT2JqZWN0U3RvcmUtbmFtZS1hcmd1bWVudC1yZXF1aXJlZC5odG1sIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlT2JqZWN0U3RvcmUtbmFtZS1hcmd1
bWVudC1yZXF1aXJlZC5odG1sCmluZGV4IGRlMjk2NjNlMWJmYjg4M2ZlNWFlYmZlNmY2MzQxMTYw
ZTk3YjFjYzYuLjE3YTg5ZWRhZGY2NzU0NWIxM2RmYzIwZTliNzlmNzM2MDkwYjg5ZjggMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZU9iamVjdFN0b3JlLW5h
bWUtYXJndW1lbnQtcmVxdWlyZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9kZWxldGVPYmplY3RTdG9yZS1uYW1lLWFyZ3VtZW50LXJlcXVpcmVkLmh0bWwKQEAgLTEs
NDYgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3Jj
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4K
LTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBkZWxldGVPYmplY3RTdG9y
ZSByZXF1aXJlZCBhcmd1bWVudCIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVW
ZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0g
ICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9
IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUFu
ZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7
Ci0KLSAgICBzaG91bGRUaHJvdygiZGIuZGVsZXRlT2JqZWN0U3RvcmUoKTsiKTsKLSAgICBmaW5p
c2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9kZWxldGVPYmplY3RTdG9yZS1uYW1lLWFyZ3VtZW50LXJlcXVpcmVkLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlT2JqZWN0U3RvcmUtbnVsbC1uYW1lLmh0bWwgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVPYmplY3RTdG9yZS1udWxsLW5hbWUuaHRt
bAppbmRleCBjMzZkYmRiNmQ3MzdjM2Q4NjlhYjg5MGJmNGZiNmRkZjFjOTVjZTY4Li4yZjhlNzBi
YzAwY2MxMjVlMWUzNTcwZmMxM2JlZDFkMTUzZjkyN2Q4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVPYmplY3RTdG9yZS1udWxsLW5hbWUuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVPYmplY3RTdG9yZS1udWxsLW5h
bWUuaHRtbApAQCAtMSw0NyArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFk
PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwv
aGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGRl
bGV0ZU9iamVjdFN0b3JlIHJlcXVpcmVkIGFyZ3VtZW50Iik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQot
ewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlv
bi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3Mo
KQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0K
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIp
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZTsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVu
Y3Rpb24gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSgpCi17Ci0gICAgZGVsZXRlQWxsT2Jq
ZWN0U3RvcmVzKGRiKTsKLQotICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdu
dWxsJyk7Iik7Ci0gICAgZXZhbEFuZExvZygiZGIuZGVsZXRlT2JqZWN0U3RvcmUobnVsbCk7Iik7
Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvZGVsZXRlT2JqZWN0U3RvcmUtbnVsbC1uYW1lLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvZHVwbGljYXRlcy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvZHVwbGljYXRlcy5odG1sCmluZGV4IDBkODJiM2M5MDM5NWUwYWE3NzM5NjcwZjJiMzZk
OTIyMTAxYjgzOTEuLjVlOTQ5ZGQ4YzI4YWI4YzYyNDcwOTc2YjYyM2E0YWUzMTZjYTkyYjggMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2R1cGxpY2F0ZXMuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kdXBsaWNhdGVzLmh0bWwKQEAgLTQs
MTcyICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4K
IDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlZlcmlmeSB0aGF0IHlv
dSBjYW4gcHV0IHRoZSBzYW1lIGRhdGEgaW4gMiBkaWZmZXJlbnQgZGF0YWJhc2VzIHdpdGhvdXQg
dW5pcXVlbmVzcyBjb25zdHJhaW50cyBmaXJpbmcuIik7Ci0KLXRlc3RDb3VudCA9IDA7Ci1mdW5j
dGlvbiB0ZXN0KCkKLXsKLSAgICBpZiAodGVzdENvdW50KysgPT0gMCkKLSAgICAgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdkdXBsaWNhdGVzLTEnKSIpOwotICAgIGVs
c2UKLSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdkdXBsaWNh
dGVzLTInKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvbjsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc2V0
VmVyc2lvbigpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVy
c2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24g
ZGVsZXRlRXhpc3RpbmcoKQotewotICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOwot
ICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9y
dCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVz
KGRiKTsKLQotICAgIHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9y
ZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKLSAgICBzZWxmLmluZGV4T2JqZWN0ID0gZXZhbEFuZExv
Zygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZScsICd4JykiKTsKLSAgICBhZGREYXRhKCk7
Ci19Ci0KLWZ1bmN0aW9uIGFkZERhdGEoKQotewotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJz
dG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBhZGRNb3JlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBhZGRNb3JlKCkKLXsKLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiZXZlbnQudGFyZ2V0LnNvdXJjZS5hZGQoe3g6ICd2YWx1ZTInLCB5OiAnenp6Mid9
LCAna2V5MicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXREYXRhOwotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBnZXRE
YXRhKCkKLXsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhPYmplY3QuZ2V0S2V5KCd2
YWx1ZScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRPYmplY3REYXRhOwotICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBn
ZXRPYmplY3REYXRhKCkKLXsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdl
dC5yZXN1bHQiLCAia2V5Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhPYmpl
Y3QuZ2V0KCd2YWx1ZScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXREYXRhRmFpbDsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVu
Y3Rpb24gZ2V0RGF0YUZhaWwoKQotewotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQu
dGFyZ2V0LnJlc3VsdC54IiwgInZhbHVlIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJl
dmVudC50YXJnZXQucmVzdWx0LnkiLCAienp6Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiaW5kZXhPYmplY3QuZ2V0S2V5KCdkb2VzIG5vdCBleGlzdCcpIik7Ci0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBnZXRPYmplY3REYXRhRmFpbDsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZ2V0T2JqZWN0RGF0YUZhaWwoKQot
ewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgInVuZGVmaW5lZCIpOwotCi0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0LmdldCgnZG9lcyBub3QgZXhpc3Qn
KSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbktleUN1cnNvcjsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3Blbktl
eUN1cnNvcigpCi17Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAidW5kZWZp
bmVkIik7Ci0KLSAgICBzZWxmLnJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5vcGVu
S2V5Q3Vyc29yKCkiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvcjFDb250aW51ZTsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVu
Y3Rpb24gY3Vyc29yMUNvbnRpbnVlKCkKLXsKLSAgICBzaG91bGRCZUZhbHNlKCJldmVudC50YXJn
ZXQucmVzdWx0ID09PSBudWxsIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50
YXJnZXQucmVzdWx0LmtleSIsICJ2YWx1ZSIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
ZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgImtleSIpOwotCi0gICAgLy8gV2UgcmUt
dXNlIHRoZSBsYXN0IHJlcXVlc3Qgb2JqZWN0LgotICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdl
dC5yZXN1bHQuY29udGludWUoKSIpOwotICAgIHNlbGYucmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJz
b3IxQ29udGludWUyOwotfQotCi1mdW5jdGlvbiBjdXJzb3IxQ29udGludWUyKCkKLXsKLSAgICBz
aG91bGRCZUZhbHNlKCJldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsIik7Ci0gICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICJ2YWx1ZTIiKTsKLSAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIs
ICJrZXkyIik7Ci0KLSAgICAvLyBXZSByZS11c2UgdGhlIGxhc3QgcmVxdWVzdCBvYmplY3QuCi0g
ICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7Ci0gICAgc2Vs
Zi5yZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5PYmplY3RDdXJzb3I7Ci19Ci0KLWZ1bmN0aW9uIG9w
ZW5PYmplY3RDdXJzb3IoKQotewotICAgIHNob3VsZEJlVHJ1ZSgiZXZlbnQudGFyZ2V0LnJlc3Vs
dCA9PT0gbnVsbCIpOwotCi0gICAgc2VsZi5yZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhPYmpl
Y3Qub3BlbkN1cnNvcigpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3IyQ29udGlu
dWU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0K
LWZ1bmN0aW9uIGN1cnNvcjJDb250aW51ZSgpCi17Ci0gICAgc2hvdWxkQmVGYWxzZSgiZXZlbnQu
dGFyZ2V0LnJlc3VsdCA9PT0gbnVsbCIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZl
bnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAidmFsdWUiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUueCIsICJ2YWx1ZSIpOwotICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS55IiwgInp6eiIpOwotCi0g
ICAgLy8gV2UgcmUtdXNlIHRoZSBsYXN0IHJlcXVlc3Qgb2JqZWN0LgotICAgIGV2YWxBbmRMb2co
ImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOwotICAgIHNlbGYucmVxdWVzdC5vbnN1
Y2Nlc3MgPSBjdXJzb3IyQ29udGludWUyOwotfQotCi1mdW5jdGlvbiBjdXJzb3IyQ29udGludWUy
KCkKLXsKLSAgICBzaG91bGRCZUZhbHNlKCJldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsIik7
Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICJ2
YWx1ZTIiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQu
dmFsdWUueCIsICJ2YWx1ZTIiKTsgICAgCi0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVu
dC50YXJnZXQucmVzdWx0LnZhbHVlLnkiLCAienp6MiIpOwotCi0gICAgLy8gV2UgcmUtdXNlIHRo
ZSBsYXN0IHJlcXVlc3Qgb2JqZWN0LgotICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1
bHQuY29udGludWUoKSIpOwotICAgIHNlbGYucmVxdWVzdC5vbnN1Y2Nlc3MgPSBsYXN0OwotfQot
Ci1mdW5jdGlvbiBsYXN0KCkKLXsKLSAgICBzaG91bGRCZVRydWUoImV2ZW50LnRhcmdldC5yZXN1
bHQgPT09IG51bGwiKTsKLQotICAgIGlmICh0ZXN0Q291bnQgPT0gMSkKLSAgICAgICAgdGVzdCgp
OwotICAgIGVsc2UKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXJlbW92ZVZlbmRvclBy
ZWZpeGVzKCk7Ci10ZXN0KCk7Ci0KLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2R1cGxpY2F0ZXMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9lcnJvci1jYXVzZXMtYWJvcnQt
YnktZGVmYXVsdC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZXJyb3ItY2F1
c2VzLWFib3J0LWJ5LWRlZmF1bHQuaHRtbAppbmRleCAwZGE4MGIxMTFhNmYyNmUxMTg2MDc2NzBh
MDdiNGZiOGEyYWI5MDRjLi5mYTc0ZDEyNTI3MDUxZjcxN2NhNGFmMjRiNWMyNzA1MzUwNzIxNjBm
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9lcnJvci1jYXVzZXMt
YWJvcnQtYnktZGVmYXVsdC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2Vycm9yLWNhdXNlcy1hYm9ydC1ieS1kZWZhdWx0Lmh0bWwKQEAgLTQsMTA3ICs0LDcgQEAKIDxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5
PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlZlcmlmeSB0aGF0IGEgdHJhbnNhY3Rpb24gd2l0
aCBhbiBlcnJvciBhYm9ydHMgdW5sZXNzIHByZXZlbnREZWZhdWx0KCkgaXMgY2FsbGVkLiIpOwot
Ci1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignZXJyb3ItY2F1c2VzLWFib3J0LWJ5
LWRlZmF1bHQnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvbjsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24g
c2V0VmVyc2lvbigpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcg
dmVyc2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rp
b24gZGVsZXRlRXhpc3RpbmcoKQotewotICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIp
OwotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0gICAgdHJhbnMub25h
Ym9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9u
Y29tcGxldGUgPSBhZGREYXRhIik7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwot
Ci0gICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwp
Iik7Ci19Ci0KLWZ1bmN0aW9uIGFkZERhdGEoKQotewotICAgIHRyYW5zID0gZXZhbEFuZExvZygi
dHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFE
X1dSSVRFKSIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJv
cnRDYWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSB0cmFuc2Fj
dGlvbkNvbXBsZXRlZCIpOwotICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5v
YmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3Rv
cmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gYWRkTW9yZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYWRkTW9yZSgpCi17Ci0gICAgCi0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5zb3VyY2UuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6
J30sICdrZXknKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3ND
YWxsYmFjazsKLSAgICByZXF1ZXN0LmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIiwgcHJldmVudFRo
ZURlZmF1bHQpOwotfQotCi1mdW5jdGlvbiBwcmV2ZW50VGhlRGVmYXVsdCgpCi17Ci0gICAgZXZh
bEFuZExvZygiZXZlbnQucHJldmVudERlZmF1bHQoKSIpOwotfQotCi1mdW5jdGlvbiB0cmFuc2Fj
dGlvbkNvbXBsZXRlZCgpCi17Ci0gICAgdGVzdFBhc3NlZCgiVHJhbnNhY3Rpb24gY29tcGxldGVk
Iik7Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCIiKTsKLSAgICB0cmFucyA9IGV2YWxBbmRM
b2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rpb24u
UkVBRF9XUklURSkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmFib3J0ID0gdHJhbnNhY3Rp
b25BYm9ydGVkMSIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSB1bmV4cGVj
dGVkQ29tcGxldGVDYWxsYmFjayIpOwotICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0
cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
Zygic3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSBhbGxvd0RlZmF1bHQ7Ci19Ci0KLWZ1bmN0aW9uIGFsbG93RGVmYXVsdCgpCi17Ci0g
ICAgZGVidWcoIkRvaW5nIG5vdGhpbmcgdG8gcHJldmVudCB0aGUgZGVmYXVsdCBhY3Rpb24uLi4i
KTsKLX0KLQotZnVuY3Rpb24gdHJhbnNhY3Rpb25BYm9ydGVkMSgpCi17Ci0gICAgdGVzdFBhc3Nl
ZCgiVHJhbnNhY3Rpb24gYWJvcnRlZCIpOwotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiIik7
Ci0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVO
YW1lJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFuZExvZygidHJh
bnMub25hYm9ydCA9IHRyYW5zYWN0aW9uQWJvcnRlZDIiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFu
cy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2siKTsKLSAgICBzdG9yZSA9
IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9
LCAna2V5JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2Fs
bGJhY2s7Ci0gICAgZGVidWcoIk9taXR0aW5nIGFuIG9uZXJyb3IgaGFuZGxlciIpOwotfQotCi1m
dW5jdGlvbiB0cmFuc2FjdGlvbkFib3J0ZWQyKCkKLXsKLSAgICB0ZXN0UGFzc2VkKCJUcmFuc2Fj
dGlvbiBhYm9ydGVkIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXRlc3QoKTsKLQotCi08
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZXJyb3ItY2F1c2VzLWFib3J0LWJ5LWRl
ZmF1bHQuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9leGNlcHRpb24taW4tZXZlbnQtYWJvcnRz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2V4Y2VwdGlvbi1p
bi1ldmVudC1hYm9ydHMtZXhwZWN0ZWQudHh0CmluZGV4IDdkMWUyZDJhNzQ5YzU0NWI4OWUzYjA3
Njg0OGQ4Y2Q5OTNlOWY2ZjMuLmEwYTk2MDE0YWMxZDQ1MWZkNDYzYzg5YmM2YWZkYzY2MGZmOGQz
N2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2V4Y2VwdGlvbi1p
bi1ldmVudC1hYm9ydHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2V4Y2VwdGlvbi1pbi1ldmVudC1hYm9ydHMtZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEs
NSBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDYwOiBVbmNhdWdodCB0aGlzIGV4Y2VwdGlvbiBp
cyBleHBlY3RlZAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDYwOiBVbmNhdWdodCB0aGlzIGV4Y2Vw
dGlvbiBpcyBleHBlY3RlZAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDU3OiBVbmNhdWdodCB0aGlz
IGV4Y2VwdGlvbiBpcyBleHBlY3RlZAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDU3OiBVbmNhdWdo
dCB0aGlzIGV4Y2VwdGlvbiBpcyBleHBlY3RlZAogVGVzdCBleGNlcHRpb25zIGluIElEQlJlcXVl
c3QgaGFuZGxlcnMgY2F1c2UgYWJvcnRzLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9leGNlcHRpb24taW4tZXZl
bnQtYWJvcnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9leGNlcHRpb24t
aW4tZXZlbnQtYWJvcnRzLmh0bWwKaW5kZXggMDQzY2ZhY2U4ZmMyYTA5MjFiZDg2ZTNhMTQ0MGZk
ZjZmNzMwZDMxNy4uOGNkYmQ2OTY2MTMxNzcwZDM1Y2VkNzMyODFjMDBhNGE0MWI4Y2U1OSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZXhjZXB0aW9uLWluLWV2ZW50
LWFib3J0cy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2V4Y2VwdGlv
bi1pbi1ldmVudC1hYm9ydHMuaHRtbApAQCAtNCwxMjcgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJl
c291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0Pgot
Ci1kZXNjcmlwdGlvbigiVGVzdCBleGNlcHRpb25zIGluIElEQlJlcXVlc3QgaGFuZGxlcnMgY2F1
c2UgYWJvcnRzLiIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVm
aXhlcygpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignZXhjZXB0
aW9uLWluLWV2ZW50LWFib3J0cycpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJz
aW9uOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQot
Ci1mdW5jdGlvbiBzZXRWZXJzaW9uKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZl
cnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4
aXN0aW5nOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
fQotCi1mdW5jdGlvbiBkZWxldGVFeGlzdGluZygpCi17Ci0gICAgZGVidWcoInNldFZlcnNpb25T
dWNjZXNzKCk6Iik7Ci0gICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKLSAg
ICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgZXZhbEFuZExv
ZygidHJhbnMub25jb21wbGV0ZSA9IHN0YXJ0VGVzdCIpOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0
U3RvcmVzKGRiKTsKLQotICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVP
YmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
Zygic3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOwotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzdGFy
dFRlc3QoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5z
ID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklU
RSkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmFib3J0ID0gdHJhbnNhY3Rpb25BYm9ydGVk
MSIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQ29tcGxl
dGVDYWxsYmFjayIpOwotICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmpl
Y3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUu
YWRkKHt4OiAndmFsdWUyJywgeTogJ3p6ejInfSwgJ2tleTInKSIpOwotICAgIHRyYW5zLmFkZEV2
ZW50TGlzdGVuZXIoJ3N1Y2Nlc3MnLCBjYXVzZUV4Y2VwdGlvbiwgdHJ1ZSk7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNhdXNl
RXhjZXB0aW9uKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZXZhbEFuZExvZygiZXZlbnQucHJl
dmVudERlZmF1bHQoKSIpOwotICAgIGRlYnVnKCJUaHJvd2luZyIpOwotICAgIHRocm93ICJ0aGlz
IGV4Y2VwdGlvbiBpcyBleHBlY3RlZCI7Ci19Ci0KLWZ1bmN0aW9uIHRyYW5zYWN0aW9uQWJvcnRl
ZDEoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBzaG91bGRIYXZlSGFkRXJyb3IoInRoaXMgZXhj
ZXB0aW9uIGlzIGV4cGVjdGVkIik7Ci0gICAgdGVzdFBhc3NlZCgiVGhlIHRyYW5zYWN0aW9uIHdh
cyBhYm9ydGVkLiIpOwotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2Fj
dGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIGV2
YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSB0cmFuc2FjdGlvbkFib3J0ZWQyIik7Ci0gICAgZXZh
bEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrIik7
Ci0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9y
ZU5hbWUnKSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1
ZScsIHk6ICd6enonfSwgJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVj
dGVkU3VjY2Vzc0NhbGxiYWNrOwotICAgIGRiLm9uZXJyb3IgPSBjYXVzZUV4Y2VwdGlvbjsKLX0K
LQotZnVuY3Rpb24gdHJhbnNhY3Rpb25BYm9ydGVkMigpCi17Ci0gICAgZGVidWcoIiIpOwotICAg
IHNob3VsZEhhdmVIYWRFcnJvcigidGhpcyBleGNlcHRpb24gaXMgZXhwZWN0ZWQiKTsKLSAgICB0
ZXN0UGFzc2VkKCJUaGUgdHJhbnNhY3Rpb24gd2FzIGFib3J0ZWQuIik7Ci0gICAgdHJhbnMgPSBl
dmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIElEQlRyYW5z
YWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMub25hYm9ydCA9IHVu
ZXhwZWN0ZWRBYm9ydENhbGxiYWNrIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0
ZSA9IHRyYW5zYWN0aW9uQ29tcGxldGVkMSIpOwotICAgIHN0b3JlID0gZXZhbEFuZExvZygic3Rv
cmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWUzJywgeTogJ3p6ejMnfSwgJ2tleTMnKSIpOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdGhyb3dBbmRDYXRjaDsKLSAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICBkYi5vbmVycm9yID0gbnVsbDsKLX0K
LQotZnVuY3Rpb24gdGhyb3dBbmRDYXRjaCgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGV2YWxB
bmRMb2coImV2ZW50LnByZXZlbnREZWZhdWx0KCkiKTsKLSAgICBkZWJ1ZygiVGhyb3dpbmcgd2l0
aGluIGEgdHJ5IGJsb2NrIik7Ci0gICAgdHJ5IHsKLSAgICAgICAgdGhyb3cgIkFISEgiOwotICAg
IH0gY2F0Y2ggKGUpIHsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRyYW5zYWN0aW9uQ29tcGxldGVk
MSgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIHRlc3RQYXNzZWQoIlRoZSB0cmFuc2FjdGlvbiBj
b21wbGV0ZWQuIik7Ci0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0
aW9uKFsnc3RvcmVOYW1lJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZh
bEFuZExvZygidHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrIik7Ci0gICAg
ZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IHRyYW5zYWN0aW9uQ29tcGxldGVkMiIpOwot
ICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVO
YW1lJykiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWU0
JywgeTogJ3p6ejQnfSwgJ2tleTQnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24oKSB7IHRlc3RQYXNzZWQoImtleTQgYWRkZWQiKTsgfQotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiB0cmFuc2FjdGlvbkNvbXBs
ZXRlZDIoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICB0ZXN0UGFzc2VkKCJUaGUgdHJhbnNhY3Rp
b24gY29tcGxldGVkLiIpOwotICAgIGRlYnVnKCIiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0K
LQotdGVzdCgpOwotCi0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9leGNlcHRp
b24taW4tZXZlbnQtYWJvcnRzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZmFjdG9yeS1iYXNp
Y3MuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ZhY3RvcnktYmFzaWNzLmh0
bWwKaW5kZXggZDQ0Y2FiMjUyOTZhZmM1NWRiNmFjZjU3NzRhYjJhNzU3OTA3MzFiZC4uMmI3MWQ2
Y2Q2MmNkZWNlMTUwOGU3MjJiZmQyYjk1OWM3M2U2NDc0MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvZmFjdG9yeS1iYXNpY3MuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9mYWN0b3J5LWJhc2ljcy5odG1sCkBAIC00LDg4ICs0LDcgQEAK
IDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxi
b2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgdGhlIGJhc2ljcyBvZiBJbmRleGVk
REIncyBJREJGYWN0b3J5LiIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5k
b3JQcmVmaXhlcygpOwotCi0gICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2YgaW5kZXhlZERCLm9wZW4g
PT09ICdmdW5jdGlvbiciKTsKLSAgICBzaG91bGRCZVRydWUoInR5cGVvZiBpbmRleGVkREIuY21w
ID09PSAnZnVuY3Rpb24nIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2YgaW5kZXhlZERCLmdl
dERhdGFiYXNlTmFtZXMgPT09ICdmdW5jdGlvbiciKTsKLQotICAgIHNob3VsZEJlVHJ1ZSgidHlw
ZW9mIGluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSA9PT0gJ2Z1bmN0aW9uJyIpOwotCi0gICAgbmFt
ZSA9ICdzdG9yYWdlL2luZGV4ZWRkYi9mYWN0b3J5LWJhc2ljcyc7Ci0gICAgZGVzY3JpcHRpb24g
PSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhl
ZERCLmdldERhdGFiYXNlTmFtZXMoKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0RGF0
YWJhc2VOYW1lc1N1Y2Nlc3MxOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBnZXREYXRhYmFzZU5hbWVzU3VjY2VzczEoKQotewot
ICAgIHZhciBkYXRhYmFzZU5hbWVzOwotICAgIGV2YWxBbmRMb2coImRhdGFiYXNlTmFtZXMgPSBl
dmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGF0YWJhc2VOYW1lcy5j
b250YWlucygnIiArIG5hbWUgKyAiJykiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJkYXRhYmFzZU5h
bWVzLmNvbnRhaW5zKCdEQVRBQkFTRSBUSEFUIERPRVMgTk9UIEVYSVNUJykiKTsKLQotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2Vzcygp
Ci17Ci0gICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jbG9zZSgpIik7Ci0gICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5nZXREYXRhYmFzZU5hbWVzKCkiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldERhdGFiYXNlTmFtZXNTdWNjZXNzMjsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZ2V0
RGF0YWJhc2VOYW1lc1N1Y2Nlc3MyKCkKLXsKLSAgICB2YXIgZGF0YWJhc2VOYW1lczsKLSAgICBl
dmFsQW5kTG9nKCJkYXRhYmFzZU5hbWVzID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNo
b3VsZEJlVHJ1ZSgiZGF0YWJhc2VOYW1lcy5jb250YWlucygnIiArIG5hbWUgKyAiJykiKTsKLSAg
ICBzaG91bGRCZUZhbHNlKCJkYXRhYmFzZU5hbWVzLmNvbnRhaW5zKCdEQVRBQkFTRSBUSEFUIERP
RVMgTk9UIEVYSVNUJykiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
ZGVsZXRlRGF0YWJhc2UoJyIgKyBuYW1lICsgIicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBkZWxldGVEYXRhYmFzZVN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZURhdGFiYXNlU3VjY2VzcygpCi17
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5nZXREYXRhYmFzZU5hbWVzKCki
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldERhdGFiYXNlTmFtZXNTdWNjZXNzMzsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rp
b24gZ2V0RGF0YWJhc2VOYW1lc1N1Y2Nlc3MzKCkKLXsKLSAgICB2YXIgZGF0YWJhc2VOYW1lczsK
LSAgICBldmFsQW5kTG9nKCJkYXRhYmFzZU5hbWVzID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwot
ICAgIHNob3VsZEJlRmFsc2UoImRhdGFiYXNlTmFtZXMuY29udGFpbnMoJyIgKyBuYW1lICsgIicp
Iik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGF0YWJhc2VOYW1lcy5jb250YWlucygnREFUQUJBU0Ug
VEhBVCBET0VTIE5PVCBFWElTVCcpIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5k
ZXhlZERCLmRlbGV0ZURhdGFiYXNlKCdEQVRBQkFTRSBUSEFUIERPRVMgTk9UIEVYSVNUJykiKTsK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZURhdGFiYXNlU3VjY2VzczI7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGRl
bGV0ZURhdGFiYXNlU3VjY2VzczIoKQotewotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi10ZXN0
KCk7Ci0KLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZhY3RvcnktYmFzaWNz
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZmFjdG9yeS1jbXAuaHRtbCBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2ZhY3RvcnktY21wLmh0bWwKaW5kZXggZjcyODUzM2IzODE0YzE1
OTM0ODQ4MGIyYWExZjI2ZWU2MDdhYWU3MS4uNDJmMGFjNjJiZTcyYTA3MTQ3NTM1NGRkNjFhMWM2
NDI1ZWViNTQ2ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZmFj
dG9yeS1jbXAuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9mYWN0b3J5
LWNtcC5odG1sCkBAIC00LDE0NyArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJl
ZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9u
KCJUZXN0IEluZGV4ZWREQiBrZXkgY29tcGFyaXNvbiB1c2luZyBJREJGYWN0b3J5LmNtcCgpLiIp
OwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0g
ICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2YgaW5kZXhlZERCLmNtcCA9PT0gJ2Z1bmN0aW9uJyIpOwot
Ci0gICAgdGVzdFZhbGlkS2V5cygpOwotICAgIHRlc3RJbnZhbGlkS2V5cygpOwotICAgIHRlc3RJ
ZGVudGljYWxLZXlzKCk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RW
YWxpZEtleXMoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiY29tcGFyZSB2YWxpZCBr
ZXlzIik7Ci0KLSAgICB2YXIga2V5cyA9IFsKLSAgICAgICAgIi1JbmZpbml0eSIsCi0gICAgICAg
ICItTnVtYmVyLk1BWF9WQUxVRSIsCi0gICAgICAgICItMSIsCi0gICAgICAgICItTnVtYmVyLk1J
Tl9WQUxVRSIsCi0gICAgICAgICIwIiwKLSAgICAgICAgIk51bWJlci5NSU5fVkFMVUUiLAotICAg
ICAgICAiMSIsCi0gICAgICAgICJOdW1iZXIuTUFYX1ZBTFVFIiwKLSAgICAgICAgIkluZmluaXR5
IiwKLSAKLSAgICAgICAgIm5ldyBEYXRlKDApIiwKLSAgICAgICAgIm5ldyBEYXRlKDEwMDApIiwK
LSAgICAgICAgIm5ldyBEYXRlKDEzMTczOTk5MzEwMjMpIiwKLSAgICAgICAgCi0gICAgICAgICIn
JyIsCi0gICAgICAgICInXHgwMCciLAotICAgICAgICAiJ2EnIiwKLSAgICAgICAgIidhYSciLAot
ICAgICAgICAiJ2InIiwKLSAgICAgICAgIidiYSciLAotCi0gICAgICAgICInXHhBMiciLCAvLyBV
KzAwQTIgQ0VOVCBTSUdOCi0gICAgICAgICInXHU2QzM0JyIsIC8vIFUrNkMzNCBDSksgVU5JRklF
RCBJREVPR1JBUEggKHdhdGVyKQotICAgICAgICAiJ1x1RDgzNFx1REQxRSciLCAvLyBVKzFEMTFF
IE1VU0lDQUwgU1lNQk9MIEctQ0xFRiAoVVRGLTE2IHN1cnJvZ2F0ZSBwYWlyKQotICAgICAgICAi
J1x1RkZGRCciLCAvLyBVK0ZGRkQgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSCi0KLSAgICAgICAgIltd
IiwKLQotICAgICAgICAiWy1JbmZpbml0eV0iLAotICAgICAgICAiWy1OdW1iZXIuTUFYX1ZBTFVF
XSIsCi0gICAgICAgICJbLTFdIiwKLSAgICAgICAgIlstTnVtYmVyLk1JTl9WQUxVRV0iLAotICAg
ICAgICAiWzBdIiwKLSAgICAgICAgIltOdW1iZXIuTUlOX1ZBTFVFXSIsCi0gICAgICAgICJbMV0i
LAotICAgICAgICAiW051bWJlci5NQVhfVkFMVUVdIiwKLSAgICAgICAgIltJbmZpbml0eV0iLAot
IAotICAgICAgICAiW25ldyBEYXRlKDApXSIsCi0gICAgICAgICJbbmV3IERhdGUoMTAwMCldIiwK
LSAgICAgICAgIltuZXcgRGF0ZSgxMzE3Mzk5OTMxMDIzKV0iLAotICAgICAgICAKLSAgICAgICAg
IlsnJ10iLAotICAgICAgICAiWydceDAwJ10iLAotICAgICAgICAiWydhJ10iLAotICAgICAgICAi
WydhYSddIiwKLSAgICAgICAgIlsnYiddIiwKLSAgICAgICAgIlsnYmEnXSIsCi0KLSAgICAgICAg
IlsnXHhBMiddIiwgLy8gVSswMEEyIENFTlQgU0lHTgotICAgICAgICAiWydcdTZDMzQnXSIsIC8v
IFUrNkMzNCBDSksgVU5JRklFRCBJREVPR1JBUEggKHdhdGVyKQotICAgICAgICAiWydcdUQ4MzRc
dUREMUUnXSIsIC8vIFUrMUQxMUUgTVVTSUNBTCBTWU1CT0wgRy1DTEVGIChVVEYtMTYgc3Vycm9n
YXRlIHBhaXIpCi0gICAgICAgICJbJ1x1RkZGRCddIiwgLy8gVStGRkZEIFJFUExBQ0VNRU5UIENI
QVJBQ1RFUgotCi0gICAgICAgICJbW11dIiwKLSAgICAgICAgCi0gICAgICAgICJbW10sIFtdXSIs
Ci0gICAgICAgICJbW10sIFtdLCBbXV0iLAotCi0gICAgICAgICJbW1tdXV0iLAotICAgICAgICAi
W1tbW11dXV0iCi0gICAgXTsKLQotICAgIHZhciBpLCBrZXkxLCBrZXkyOwotICAgIGZvciAoaSA9
IDA7IGkgPCBrZXlzLmxlbmd0aCAtIDE7IGkgKz0gMSkgewotICAgICAgICBrZXkxID0ga2V5c1tp
XTsKLSAgICAgICAga2V5MiA9IGtleXNbaSArIDFdOwotICAgICAgICBzaG91bGRCZVRydWUoImlu
ZGV4ZWREQi5jbXAoIiArIGtleTEgKyAiLCIgKyBrZXkyICsgIikgPT09IC0xIik7Ci0gICAgICAg
IHNob3VsZEJlVHJ1ZSgiaW5kZXhlZERCLmNtcCgiICsga2V5MiArICIsIiArIGtleTEgKyAiKSA9
PT0gMSIpOwotICAgICAgICBzaG91bGRCZVRydWUoImluZGV4ZWREQi5jbXAoIiArIGtleTEgKyAi
LCIgKyBrZXkxICsgIikgPT09IDAiKTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJpbmRleGVkREIu
Y21wKCIgKyBrZXkyICsgIiwiICsga2V5MiArICIpID09PSAwIik7Ci0gICAgfQotfQotCi1mdW5j
dGlvbiB0ZXN0SW52YWxpZEtleXMoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiY29t
cGFyZSBpbnZhbGlkIGtleXMiKTsKLQotICAgIHZhciBpbnZhbGlkS2V5cyA9IFsKLSAgICAgICAg
InZvaWQgMCIsIC8vIHVuZGVmaW5lZAotICAgICAgICAidHJ1ZSIsCi0gICAgICAgICJmYWxzZSIs
Ci0gICAgICAgICJOYU4iLAotICAgICAgICAibmV3IERhdGUoTmFOKSIsCi0gICAgICAgICJudWxs
IiwKLSAgICAgICAgInt9IiwKLSAgICAgICAgImZ1bmN0aW9uICgpIHt9IiwKLSAgICAgICAgIi9y
ZWdleC8iLAotICAgICAgICAic2VsZiIsCi0gICAgICAgICJzZWxmLmRvY3VtZW50IiwKLSAgICAg
ICAgInNlbGYuZG9jdW1lbnQuYm9keSIKLSAgICBdOwotCi0gICAgdmFyIGksIGtleTEsIGtleTI7
Ci0gICAgZm9yIChpID0gMDsgaSA8IGludmFsaWRLZXlzLmxlbmd0aCAtIDE7IGkgKz0gMSkgewot
ICAgICAgICBrZXkxID0gaW52YWxpZEtleXNbaV07Ci0gICAgICAgIGtleTIgPSBpbnZhbGlkS2V5
c1tpICsgMV07Ci0gICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4ZWREQi5jbXAo
IiArIGtleTEgKyAiLCAiICsga2V5MiArICIpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFf
RVJSIik7Ci0gICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4ZWREQi5jbXAoIiAr
IGtleTIgKyAiLCAiICsga2V5MSArICIpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJS
Iik7Ci0gICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4ZWREQi5jbXAoIiArIGtl
eTEgKyAiLCAndmFsaWQnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotICAg
ICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJpbmRleGVkREIuY21wKCd2YWxpZCcsICIgKyBr
ZXkxICsgIikiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLSAgICAgICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXhlZERCLmNtcCgiICsga2V5MiArICIsICd2YWxpZCcp
IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0gICAgICAgIGV2YWxBbmRFeHBl
Y3RFeGNlcHRpb24oImluZGV4ZWREQi5jbXAoJ3ZhbGlkJywgIiArIGtleTIgKyAiKSIsICJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdElk
ZW50aWNhbEtleXMoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiY29tcGFyZSBpZGVu
dGljYWwga2V5cyIpOwotCi0gICAgc2hvdWxkQmVUcnVlKCJpbmRleGVkREIuY21wKDAsIC0wKSA9
PT0gMCIpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL2ZhY3RvcnktY21wLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZmFjdG9yeS1kZWxldGVk
YXRhYmFzZS1pbnRlcmFjdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2ZhY3RvcnktZGVsZXRlZGF0YWJhc2UtaW50ZXJhY3Rpb25zLmh0bWwKaW5kZXggZTVjMGRjNjFi
ZjZjYjBkMzU1YzEyMmU5YzA3OWQxZTBhZWY4YzlhNS4uZjBlZjQ3OGRjZGRmNGNjOWM1Y2YzNjA0
ZDc5OGMwMTE4OWFjMTE2YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvZmFjdG9yeS1kZWxldGVkYXRhYmFzZS1pbnRlcmFjdGlvbnMuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9mYWN0b3J5LWRlbGV0ZWRhdGFiYXNlLWludGVyYWN0aW9u
cy5odG1sCkBAIC00LDE5MSArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5q
cyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJU
ZXN0IHRoZSBkZWxldGVEYXRhYmFzZSBjYWxsIGFuZCBpdHMgaW50ZXJhY3Rpb24gd2l0aCBvcGVu
L3NldFZlcnNpb24iKTsKLQotZnVuY3Rpb24gQ29ubmVjdGlvbihpZCkgewotICAgIGlkID0gU3Ry
aW5nKGlkKTsKLSAgICB2YXIgdGhhdCA9IHRoaXM7Ci0gICAgdGhpcy5vcGVuID0gZnVuY3Rpb24o
b3B0cykgewotICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIu
b3BlbiciKSk7Ci0gICAgICAgIHZhciByZXEgPSBpbmRleGVkREIub3BlbihzZWxmLmRibmFtZSk7
Ci0gICAgICAgIHJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAg
IHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZSkgewotICAgICAgICAgICAgdGhhdC5oYW5kbGUg
PSBlLnRhcmdldC5yZXN1bHQ7Ci0gICAgICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExv
ZygiJyIgKyBpZCArICIub3Blbi5vbnN1Y2Nlc3MnIikpOwotICAgICAgICAgICAgdGhhdC5oYW5k
bGUub252ZXJzaW9uY2hhbmdlID0gZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgIHNlbGYu
c3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5vbnZlcnNpb25jaGFuZ2UnIikpOwot
ICAgICAgICAgICAgICAgIGlmIChvcHRzICYmIG9wdHMub252ZXJzaW9uKSB7IG9wdHMub252ZXJz
aW9uLmNhbGwodGhhdCk7IH0KLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBpZiAob3B0cyAm
JiBvcHRzLm9uc3VjY2VzcykgeyBvcHRzLm9uc3VjY2Vzcy5jYWxsKHRoYXQpOyB9Ci0gICAgICAg
IH07Ci0gICAgfTsKLQotICAgIHRoaXMuY2xvc2UgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgc2Vs
Zi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLmNsb3NlJyIpKTsKLSAgICAgICAg
dGhpcy5oYW5kbGUuY2xvc2UoKTsKLSAgICB9OwotCi0gICAgdGhpcy5zZXRWZXJzaW9uID0gZnVu
Y3Rpb24ob3B0cykgewotICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBp
ZCArICIuc2V0VmVyc2lvbiciKSk7Ci0gICAgICAgIHZhciByZXEgPSB0aGlzLmhhbmRsZS5zZXRW
ZXJzaW9uKFN0cmluZyhzZWxmLnZlcisrKSk7Ci0gICAgICAgIHJlcS5vbmFib3J0ID0gZnVuY3Rp
b24gKGUpIHsKLSAgICAgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlk
ICsgIi5zZXRWZXJzaW9uLm9uYWJvcnQnIikpOwotICAgICAgICAgICAgaWYgKG9wdHMgJiYgb3B0
cy5vbmFib3J0KSB7IG9wdHMub25hYm9ydC5jYWxsKHRoYXQpOyB9Ci0gICAgICAgIH07Ci0gICAg
ICAgIHJlcS5vbmJsb2NrZWQgPSBmdW5jdGlvbiAoZSkgewotICAgICAgICAgICAgc2VsZi5zdGVw
cy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLnNldFZlcnNpb24ub25ibG9ja2VkJyIpKTsK
LSAgICAgICAgICAgIGlmIChvcHRzICYmIG9wdHMub25ibG9ja2VkKSB7IG9wdHMub25ibG9ja2Vk
LmNhbGwodGhhdCk7IH0KLSAgICAgICAgfTsKLSAgICAgICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0
aW9uIChlKSB7Ci0gICAgICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBp
ZCArICIuc2V0VmVyc2lvbi5vbnN1Y2Nlc3MnIikpOwotICAgICAgICAgICAgaWYgKHRoYXQuaGFu
ZGxlLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoInRlc3Qtc3RvcmUiICsgc2VsZi52ZXIpKSB7
Ci0gICAgICAgICAgICAgICAgdGhhdC5oYW5kbGUuZGVsZXRlT2JqZWN0U3RvcmUoInRlc3Qtc3Rv
cmUiICsgc2VsZi52ZXIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdmFyIHN0b3JlID0g
dGhhdC5oYW5kbGUuY3JlYXRlT2JqZWN0U3RvcmUoInRlc3Qtc3RvcmUiICsgc2VsZi52ZXIpOwot
ICAgICAgICAgICAgdmFyIGNvdW50ID0gMDsKLSAgICAgICAgICAgIGRvX2FzeW5jX3B1dHMoKTsg
Ly8gS2VlcCB0aGlzIHRyYW5zYWN0aW9uIHJ1bm5pbmcgZm9yIGEgd2hpbGUKLSAgICAgICAgICAg
IGZ1bmN0aW9uIGRvX2FzeW5jX3B1dHMoKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHJlcSA9IHN0
b3JlLnB1dChjb3VudCwgY291bnQpOwotICAgICAgICAgICAgICAgIHJlcS5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgICAgICAgICAgcmVxLm9uc3VjY2VzcyA9IGZ1
bmN0aW9uIChlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgrK2NvdW50IDwgMTApIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGRvX2FzeW5jX3B1dHMoKTsKLSAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFs
QW5kTG9nKCInIiArIGlkICsgIi5zZXRWZXJzaW9uLnRyYW5zYWN0aW9uLWNvbXBsZXRlJyIpKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRzICYmIG9wdHMub25zdWNjZXNzKSB7IG9w
dHMub25zdWNjZXNzLmNhbGwodGhhdCk7IH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIH07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0gICAgICAgIHJlcS5vbmVy
cm9yID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5k
TG9nKCInIiArIGlkICsgIi5zZXRWZXJzaW9uLm9uZXJyb3InIikpOwotICAgICAgICAgICAgaWYg
KG9wdHMgJiYgb3B0cy5vbmVycm9yKSB7IG9wdHMub25lcnJvci5jYWxsKHRoYXQpOyB9Ci0gICAg
ICAgIH07Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24gZGVsZXRlRGF0YWJhc2UoaWQsIG5hbWUsIG9w
dHMpIHsKLSAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJ2RlbGV0ZURhdGFiYXNlKCIg
KyBpZCArICIpJyIpKTsKLSAgICB2YXIgcmVxID0gaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKG5h
bWUpOwotICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZSkgewotICAgICAgICBzZWxmLnN0
ZXBzLnB1c2goZXZhbEFuZExvZygiJ2RlbGV0ZURhdGFiYXNlKCIgKyBpZCArICIpLm9uc3VjY2Vz
cyciKSk7Ci0gICAgICAgIGlmIChvcHRzICYmIG9wdHMub25zdWNjZXNzKSB7IG9wdHMub25zdWNj
ZXNzLmNhbGwobnVsbCk7IH0KLSAgICB9OwotICAgIHJlcS5vbmVycm9yID0gZnVuY3Rpb24gKGUp
IHsKLSAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIidkZWxldGVEYXRhYmFzZSgi
ICsgaWQgKyAiKS5vbmVycm9yJyIpKTsKLSAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5vbmVycm9y
KSB7IG9wdHMub25lcnJvci5jYWxsKG51bGwpOyB9Ci0gICAgfTsKLSAgICByZXEub25ibG9ja2Vk
ID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIidk
ZWxldGVEYXRhYmFzZSgiICsgaWQgKyAiKS5vbmJsb2NrZWQnIikpOwotICAgICAgICBpZiAob3B0
cyAmJiBvcHRzLm9uYmxvY2tlZCkgeyBvcHRzLm9uYmxvY2tlZC5jYWxsKG51bGwpOyB9Ci0gICAg
fTsKLX0KLQotLy8gcnVuIGEgc2VyaWVzIG9mIHN0ZXBzIHRoYXQgdGFrZSBhIGNvbnRpbnVhdGlv
biBmdW5jdGlvbgotZnVuY3Rpb24gcnVuU3RlcHMoY29tbWFuZHMpIHsKLSAgICBpZiAoY29tbWFu
ZHMubGVuZ3RoKSB7Ci0gICAgICAgIHZhciBjb21tYW5kID0gY29tbWFuZHMuc2hpZnQoKTsKLSAg
ICAgICAgY29tbWFuZChmdW5jdGlvbigpIHsgcnVuU3RlcHMoY29tbWFuZHMpOyB9KTsKLSAgICB9
Ci19Ci0KLWZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAg
ICB0ZXN0MSgpOwotfQotCi1mdW5jdGlvbiB0ZXN0MSgpIHsKLSAgICBkZWJ1ZygiIik7Ci0gICAg
ZGVidWcoIlRFU1Q6IGRlbGV0ZURhdGFiYXNlIGJsb2NrZWQgb24gb3BlbiBoYW5kbGVzIik7Ci0g
ICAgZXZhbEFuZExvZygic2VsZi5kYm5hbWUgPSAndGVzdDEnOyBzZWxmLnZlciA9IDE7IHNlbGYu
c3RlcHMgPSBbXSIpOwotICAgIHZhciBoID0gbmV3IENvbm5lY3Rpb24oImgiKTsKLSAgICBydW5T
dGVwcyhbZnVuY3Rpb24oZG9OZXh0KSB7IGgub3Blbih7b25zdWNjZXNzOiBkb05leHQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9udmVyc2lvbjogZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiICAgIGggY2xvc2luZywgYnV0
IG5vdCBpbW1lZGlhdGVseSIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgaC5jbG9zZSgpOyB9LCAwKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfX0pOyB9LAotICAgICAgICBmdW5jdGlvbihkb05leHQpIHsgZGVs
ZXRlRGF0YWJhc2UoIiIsIHNlbGYuZGJuYW1lLCB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICBvbnN1Y2Nlc3M6IGZpbmlzaFRlc3R9KTsgfSwKLSAgICAgICAgXSk7Ci0gICAgZnVuY3Rpb24g
ZmluaXNoVGVzdCgpIHsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzZWxmLnN0ZXBz
LnRvU3RyaW5nKCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJoLm9wZW4iLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoLm9wZW4ub25zdWNjZXNzIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVsZXRlRGF0YWJhc2UoKSIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImgub252ZXJzaW9uY2hhbmdlIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiZGVsZXRlRGF0YWJhc2UoKS5vbmJsb2NrZWQiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJoLmNsb3NlIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiZGVsZXRlRGF0YWJhc2UoKS5vbnN1Y2Nlc3MiCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXS50b1N0cmluZygpKTsKLSAgICAgICAgdGVzdDIoKTsKLSAgICB9Ci19Ci0K
LWZ1bmN0aW9uIHRlc3QyKCkgewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiVEVTVDogZGVs
ZXRlRGF0YWJhc2Ugbm90IGJsb2NrZWQgd2hlbiBoYW5kbGVzIGNsb3NlIGltbWVkaWF0ZWx5Iik7
Ci0gICAgZXZhbEFuZExvZygic2VsZi5kYm5hbWUgPSAndGVzdDInOyBzZWxmLnZlciA9IDE7IHNl
bGYuc3RlcHMgPSBbXSIpOwotICAgIHZhciBoID0gbmV3IENvbm5lY3Rpb24oImgiKTsKLSAgICBy
dW5TdGVwcyhbZnVuY3Rpb24oZG9OZXh0KSB7IGgub3Blbih7b25zdWNjZXNzOiBkb05leHQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbnZlcnNpb246IGZ1bmN0
aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
YnVnKCIgICAgaCBjbG9zaW5nIGltbWVkaWF0ZWx5Iik7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaC5jbG9zZSgpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfX0pOyB9LAotICAgICAgICBmdW5jdGlvbihkb05leHQpIHsg
ZGVsZXRlRGF0YWJhc2UoIiIsIHNlbGYuZGJuYW1lLCB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICBvbnN1Y2Nlc3M6IGZpbmlzaFRlc3R9KTsgfSwKLSAgICAgICAgXSk7Ci0gICAgZnVuY3Rp
b24gZmluaXNoVGVzdCgpIHsKLSAgICAgICAgZGVidWcoIk5PVEU6IFdpbGwgRkFJTCB3aXRoIGV4
dHJhIGJvZ3VzIGRlbGV0ZURhdGFiYXNlKCkub25ibG9ja2VkIHN0ZXA7IGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTEzMCIpOwotICAgICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoInNlbGYuc3RlcHMudG9TdHJpbmcoKSIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbImgub3BlbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgub3Bl
bi5vbnN1Y2Nlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWxldGVEYXRh
YmFzZSgpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaC5vbnZlcnNpb25jaGFu
Z2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoLmNsb3NlIiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiZGVsZXRlRGF0YWJhc2UoKS5vbnN1Y2Nlc3MiCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXS50b1N0cmluZygpKTsKLSAgICAgICAgdGVzdDMo
KTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3QzKCkgewotICAgIGRlYnVnKCIiKTsKLSAgICBk
ZWJ1ZygiVEVTVDogZGVsZXRlRGF0YWJhc2UgaXMgZGVsYXllZCBpZiBhIFZFUlNJT05fQ0hBTkdF
IHRyYW5zYWN0aW9uIGlzIHJ1bm5pbmciKTsKLSAgICBldmFsQW5kTG9nKCJzZWxmLmRibmFtZSA9
ICd0ZXN0Myc7IHNlbGYudmVyID0gMTsgc2VsZi5zdGVwcyA9IFtdIik7Ci0gICAgdmFyIGggPSBu
ZXcgQ29ubmVjdGlvbigiaCIpOwotICAgIHJ1blN0ZXBzKFtmdW5jdGlvbihkb05leHQpIHsgaC5v
cGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b252ZXJzaW9uOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRlYnVnKCIgICAgaCBjbG9zaW5nLCBidXQgbm90IGltbWVkaWF0ZWx5Iik7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBoLmNs
b3NlKCk7IH0sIDApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fSk7IH0sCi0g
ICAgICAgICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBoLnNldFZlcnNpb24oKTsgZG9OZXh0KCk7
IH0sCi0gICAgICAgICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBkZWxldGVEYXRhYmFzZSgiIiwg
c2VsZi5kYm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtvbnN1Y2Nlc3M6
IGZpbmlzaFRlc3R9KTsgfSwKLSAgICAgICAgICAgICAgXSk7Ci0KLSAgICBmdW5jdGlvbiBmaW5p
c2hUZXN0KCkgewotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNlbGYuc3RlcHMudG9T
dHJpbmcoKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImgub3BlbiIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImgub3Blbi5vbnN1Y2Nlc3MiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJoLnNldFZlcnNpb24iLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJkZWxldGVEYXRhYmFzZSgpIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiaC5zZXRWZXJzaW9uLm9uc3VjY2VzcyIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImguc2V0VmVyc2lvbi50cmFuc2FjdGlvbi1jb21wbGV0ZSIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImgub252ZXJzaW9uY2hhbmdlIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiZGVsZXRlRGF0YWJhc2UoKS5vbmJsb2NrZWQiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJoLmNsb3NlIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiZGVsZXRlRGF0YWJhc2UoKS5vbnN1Y2Nlc3MiCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXS50b1N0cmluZygpKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAg
fQotfQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9mYWN0
b3J5LWRlbGV0ZWRhdGFiYXNlLWludGVyYWN0aW9ucy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwv
Ym9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2ZhY3RvcnktZGVsZXRlZGF0YWJhc2UuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2ZhY3RvcnktZGVsZXRlZGF0YWJhc2UuaHRtbAppbmRleCAzZDMzMjNjNDkyODI2MWRjZDk0
YzQyNmNiNDgwNTA1YTQ2ZWNhZDExLi5kMGM4MjZiZmM1YjhjMjQ5NTRjOGQwZWFiOGU5YjNkMGY3
ZjIxNjVjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9mYWN0b3J5
LWRlbGV0ZWRhdGFiYXNlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
ZmFjdG9yeS1kZWxldGVkYXRhYmFzZS5odG1sCkBAIC00LDk1ICs0LDcgQEAKIDxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlw
dD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mgd2Via2l0SW5kZXhlZERCLmRlbGV0
ZURhdGFiYXNlKCkuIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclBy
ZWZpeGVzKCk7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdkYXRh
YmFzZS10by1kZWxldGUnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc3RhcnRTZXRWZXJz
aW9uOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQot
Ci1mdW5jdGlvbiBzdGFydFNldFZlcnNpb24oKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIu
c2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVs
ZXRlRXhpc3Rpbmc7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKLXsKLSAgICBzZWxmLnRyYW5zID0g
ZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVU
cnVlKCJ0cmFucyAhPT0gbnVsbCIpOwotCi0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOwotCi0gICAgc2VsZi5p
bmRleCA9IGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleE5hbWUnLCAnJykiKTsK
LSAgICBzaG91bGRCZVRydWUoInN0b3JlLmluZGV4TmFtZXMuY29udGFpbnMoJ2luZGV4TmFtZScp
Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKCd2YWx1ZScsICdrZXkn
KSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAg
IHRyYW5zLm9uY29tcGxldGUgPSBnZXRWYWx1ZTsKLX0KLQotZnVuY3Rpb24gZ2V0VmFsdWUoKQot
ewotICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygiZGIudHJhbnNhY3Rpb24oJ3N0b3JlTmFt
ZScsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgdHJhbnNhY3Rpb24ub25hYm9y
dCA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHZhciBzdG9yZSA9IGV2YWxBbmRMb2co
InN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0KLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuZ2V0KCdrZXknKSIpOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gYWRkSW5kZXg7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGFkZEluZGV4KCkKLXsKLSAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAidmFsdWUiKTsKLQotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBkZWxldGVEYXRhYmFzZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZGVsZXRlRGF0YWJhc2UoKQotewot
ICAgIGRiLm9udmVyc2lvbmNoYW5nZSA9IGZ1bmN0aW9uKCkgeyBkYi5jbG9zZSgpOyB9Ci0gICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIuZGVsZXRlRGF0YWJhc2Uo
J2RhdGFiYXNlLXRvLWRlbGV0ZScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSByZW9wZW5E
YXRhYmFzZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LX0KLQotZnVuY3Rpb24gcmVvcGVuRGF0YWJhc2UoKQotewotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJpbmRleGVkREIub3BlbignZGF0YWJhc2UtdG8tZGVsZXRlJykiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IHN0YXJ0U2V0VmVyc2lvbkFnYWluOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzdGFydFNldFZlcnNpb25B
Z2FpbigpCi17Ci0gICAgcmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNp
b24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdmVyaWZ5Tm90Rm91bmQ7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHZl
cmlmeU5vdEZvdW5kKCkKLXsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5n
dGgiLCAiMCIpOwotCi0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXRlc3QoKTsKLTwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9mYWN0b3J5LWRlbGV0ZWRhdGFiYXNlLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtY291bnQuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2luZGV4LWNvdW50Lmh0bWwKaW5kZXggZjMyYWUxMzZhZTZmNTQ3MDY3OTE2OGU4
MmFlNmQ1MjdlMDJiNDg2Yy4uZjgwMTE4ZTBjZjJkZGM5MGE3NmExNzlkMmRjODBjMTczYTQ4NzNh
YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtY291bnQu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1jb3VudC5odG1s
CkBAIC00LDE1OSArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9z
Y3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IElu
ZGV4ZWREQidzIElEQkluZGV4LmNvdW50KCkuIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAg
IHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4
ZWREQi5vcGVuKCdpbmRleC1jb3VudCcpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsK
LSAgICAgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAg
ICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJyki
KTsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0g
ICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcHJlcGFyZURhdGFiYXNlOwotICAgIH07Ci19Ci0K
LWZ1bmN0aW9uIHByZXBhcmVEYXRhYmFzZSgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVn
KCJwcmVwYXJpbmcgZGF0YWJhc2UiKTsKLSAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJh
bnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0g
bnVsbCIpOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIHN0b3JlID0g
ZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVs
bCkiKTsKLQotICAgIHNlbGYuaW5kZXggPSBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgn
aW5kZXhOYW1lJywgJycpIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJzdG9yZS5pbmRleE5hbWVzLmNv
bnRhaW5zKCdpbmRleE5hbWUnKSIpOwotCi0gICAgZGVidWcoImFkZGluZyAwIC4uLiA5OSIpOwot
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKLSAgICAgICAgcmVxdWVzdCA9IHN0
b3JlLmFkZChpLCBpKTsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci0gICAgfQotICAgIHRyYW5zLm9uY29tcGxldGUgPSB2ZXJpZnlDb3VudDsKLX0K
LQotZnVuY3Rpb24gdmVyaWZ5Q291bnQoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1Zygi
dmVyaWZ5aW5nIGNvdW50IHdpdGhvdXQgcmFuZ2UiKTsKLSAgICB0cmFucyA9IGV2YWxBbmRMb2co
InRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURf
T05MWSkiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9IG51bGwiKTsKLSAgICB0cmFucy5v
bmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9
IHZlcmlmeUNvdW50V2l0aFJhbmdlOwotCi0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9
IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotICAgIHNob3VsZEJlVHJ1ZSgic3Rv
cmUgIT0gbnVsbCIpOwotICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5pbmRl
eCgnaW5kZXhOYW1lJykiKTsKLSAgICBzaG91bGRCZVRydWUoImluZGV4ICE9IG51bGwiKTsKLQot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXguY291bnQoKSIpOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICBzaG91bGRCZVRydWUoInR5cGVvZiBy
ZXF1ZXN0LnJlc3VsdCA9PSAnbnVtYmVyJyIpOwotICAgICAgICAgc2hvdWxkQmUoInJlcXVlc3Qu
cmVzdWx0IiwgIjEwMCIpOwotICAgICAgICAgLy8gbGV0IHRoZSB0cmFuc2FjdGlvbiBjb21wbGV0
ZQotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIHZlcmlmeUNvdW50V2l0aFJhbmdlKCkKLXsKLSAgICBk
ZWJ1ZygiIik7Ci0gICAgZGVidWcoInZlcmlmeWluZyBjb3VudCB3aXRoIHJhbmdlIik7Ci0gICAg
dHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZU5hbWUnLCBJ
REJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPSBu
dWxsIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAg
IHRyYW5zLm9uY29tcGxldGUgPSB2ZXJpZnlDb3VudFdpdGhLZXk7Ci0KLSAgICBzdG9yZSA9IGV2
YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0gICAg
c2hvdWxkQmVUcnVlKCJzdG9yZSAhPSBudWxsIik7Ci0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJp
bmRleCA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKS5pbmRleCgnaW5kZXhOYW1lJyki
KTsKLSAgICBzaG91bGRCZVRydWUoImluZGV4ICE9IG51bGwiKTsKLQotICAgIHZhciB0ZXN0cyA9
IFsKLSAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDk5LCB1cHBl
ck9wZW46IGZhbHNlLCBleHBlY3RlZDogMTAwIH0sCi0gICAgICAgIHsgbG93ZXI6IDAsIGxvd2Vy
T3BlbjogdHJ1ZSwgdXBwZXI6IDk5LCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogOTkgfSwK
LSAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDk5LCB1cHBlck9w
ZW46IHRydWUsIGV4cGVjdGVkOiA5OSB9LAotICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9wZW46
IHRydWUsIHVwcGVyOiA5OSwgdXBwZXJPcGVuOiB0cnVlLCBleHBlY3RlZDogOTggfSwKLSAgICAg
ICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDEwMCwgdXBwZXJPcGVuOiBm
YWxzZSwgZXhwZWN0ZWQ6IDEwMCB9LAotICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IGZh
bHNlLCB1cHBlcjogMTAwLCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogMTAwIH0sCi0gICAg
ICAgIHsgbG93ZXI6IDEwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogMTAwLCB1cHBlck9wZW46
IGZhbHNlLCBleHBlY3RlZDogOTAgfSwKLSAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiBm
YWxzZSwgdXBwZXI6IDAsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiAxIH0sCi0gICAgICAg
IHsgbG93ZXI6IDUwMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDUwMCwgdXBwZXJPcGVuOiBm
YWxzZSwgZXhwZWN0ZWQ6IDAgfQotICAgIF07Ci0KLSAgICBmdW5jdGlvbiBuZXh0VGVzdCgpIHsK
LSAgICAgICAgZGVidWcoIiIpOwotICAgICAgICBldmFsQW5kTG9nKCJ0ZXN0ID0gIiArIEpTT04u
c3RyaW5naWZ5KHRlc3RzLnNoaWZ0KCkpKTsKLSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBpbmRleC5jb3VudChJREJLZXlSYW5nZS5ib3VuZCh0ZXN0Lmxvd2VyLCB0ZXN0
LnVwcGVyLCB0ZXN0Lmxvd2VyT3BlbiwgdGVzdC51cHBlck9wZW4pKSIpOwotICAgICAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICBzaG91bGRCZVRydWUoInR5cGVv
ZiByZXF1ZXN0LnJlc3VsdCA9PSAnbnVtYmVyJyIpOwotICAgICAgICAgICAgIHNob3VsZEJlKCJy
ZXF1ZXN0LnJlc3VsdCIsIFN0cmluZyh0ZXN0LmV4cGVjdGVkKSk7Ci0KLSAgICAgICAgICAgICBp
ZiAodGVzdHMubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgIG5leHRUZXN0KCk7Ci0gICAgICAg
ICAgICAgfQotICAgICAgICAgICAgIC8vIG90aGVyd2lzZSBsZXQgdGhlIHRyYW5zYWN0aW9uIGNv
bXBsZXRlCi0gICAgICAgIH07Ci0gICAgfQotCi0gICAgbmV4dFRlc3QoKTsKLX0KLQotZnVuY3Rp
b24gdmVyaWZ5Q291bnRXaXRoS2V5KCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInZl
cmlmeWluZyBjb3VudCB3aXRoIGtleSIpOwotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMg
PSBkYi50cmFuc2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKSIp
OwotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQg
PSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gZmluaXNo
SlNUZXN0OwotCi0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0
b3JlKCdzdG9yZU5hbWUnKSIpOwotICAgIHNob3VsZEJlVHJ1ZSgic3RvcmUgIT0gbnVsbCIpOwot
ICAgIHN0b3JlID0gZXZhbEFuZExvZygiaW5kZXggPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVO
YW1lJykuaW5kZXgoJ2luZGV4TmFtZScpIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJpbmRleCAhPSBu
dWxsIik7Ci0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJpbmRleC5jb3VudChOYU4pIiwg
IklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2Vw
dGlvbigiaW5kZXguY291bnQoe30pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7
Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXguY291bnQoL3JlZ2V4LykiLCAiSURC
RGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLQotICAgIHZhciB0ZXN0cyA9IFsKLSAgICAg
ICAgeyBrZXk6IDAsIGV4cGVjdGVkOiAxIH0sCi0gICAgICAgIHsga2V5OiAxMDAsIGV4cGVjdGVk
OiAwIH0sCi0gICAgICAgIHsga2V5OiBudWxsLCBleHBlY3RlZDogMTAwIH0KLSAgICBdOwotCi0g
ICAgZnVuY3Rpb24gbmV4dFRlc3QoKSB7Ci0gICAgICAgIGRlYnVnKCIiKTsKLSAgICAgICAgZXZh
bEFuZExvZygidGVzdCA9ICIgKyBKU09OLnN0cmluZ2lmeSh0ZXN0cy5zaGlmdCgpKSk7Ci0gICAg
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXguY291bnQodGVzdC5rZXkp
Iik7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
ICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgIHNo
b3VsZEJlVHJ1ZSgidHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXInIik7Ci0gICAgICAg
ICAgICAgc2hvdWxkQmUoInJlcXVlc3QucmVzdWx0IiwgU3RyaW5nKHRlc3QuZXhwZWN0ZWQpKTsK
LQotICAgICAgICAgICAgIGlmICh0ZXN0cy5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICAgbmV4
dFRlc3QoKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIGxldCB0
aGUgdHJhbnNhY3Rpb24gY29tcGxldGUKLSAgICAgICAgfTsKLSAgICB9Ci0KLSAgICBuZXh0VGVz
dCgpOwotfQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9p
bmRleC1jb3VudC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWN1cnNvci5odG1sIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtY3Vyc29yLmh0bWwKaW5kZXggMzBh
MTYwNzMwOWE4Yzc1NWM3OGRhMzNhY2RmNzFiODk4YWQ2ZTJiMy4uYzlkOTQ0NDY5Nzc2OTIzMzdi
YWI4MjNkYTY3YTFhNzliMTZkOWY1NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvaW5kZXgtY3Vyc29yLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvaW5kZXgtY3Vyc29yLmh0bWwKQEAgLTQsMjU0ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4g
Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIHdlYmtpdElEQkluZGV4Lm9wZW5DdXJz
b3IgKyB0aGUgY3Vyc29yIGl0IHByb2R1Y2VzIGluIGRlcHRoLiIpOwotIAotLy8gSW4gb3JkZXIg
b2YgaG93IGl0IHNob3VsZCBiZSBzb3J0ZWQgYnkgSW5kZXhlZERCLgotc2VsZi50ZXN0RGF0YSA9
IFsKLSAgICAxLAotICAgIDEsCi0gICAgMy4xNDE1OSwKLSAgICAzLjE0MTU5LAotICAgIDEwLAot
ICAgIC8vIEZJWE1FOiBEYXRlcy4KLSAgICAiQSBiaWcgc3RyaW5nIiwKLSAgICAidGhlIEJJR0VT
VCBzdHJpbmciLAotICAgICJ0aGUgQklHRVNUIHN0cmluZyIKLV07Ci0gCi1mdW5jdGlvbiBvcGVu
RGF0YWJhc2UoKQotewotICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdp
bmRleC1jdXJzb3InKSIpOwotICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uOwotICAg
IHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0gCi1mdW5jdGlv
biBzZXRWZXJzaW9uKCkKLXsKLSAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50
YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9u
KCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4aXN0aW5n
OwotICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1
bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKLXsKLSAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygi
dHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAh
PT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsK
LQotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBzZWxmLm9iamVjdFN0b3Jl
ID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3NvbWVPYmplY3RTdG9yZScpIik7
Ci0gICAgc2VsZi5pbmRleE9iamVjdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmNyZWF0ZUlu
ZGV4KCdzb21lSW5kZXgnLCAneCcpIik7Ci0gICAgc2VsZi5uZXh0VG9BZGQgPSAwOwotICAgIGFk
ZERhdGEoKTsKLX0KLQotZnVuY3Rpb24gYWRkRGF0YSgpCi17Ci0gICAgcmVzdWx0ID0gZXZhbEFu
ZExvZygib2JqZWN0U3RvcmUuYWRkKHsneCc6IHRlc3REYXRhW25leHRUb0FkZF19LCBuZXh0VG9B
ZGQpIik7Ci0gICAgcmVzdWx0Lm9uc3VjY2VzcyA9ICsrc2VsZi5uZXh0VG9BZGQgPCB0ZXN0RGF0
YS5sZW5ndGggPyBhZGREYXRhIDogc2NoZWR1bGVUZXN0czsKLSAgICByZXN1bHQub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzY2hlZHVsZVRlc3RzKCkK
LXsKLSAgICBkZWJ1ZygiU2NoZWR1bGluZyB0ZXN0cy4uLiIpOwotICAgIHNlbGYuc2NoZWR1bGVk
VGVzdHMgPSBbXTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRlc3REYXRhLmxlbmd0aDsgKytp
KSB7Ci0gICAgICAgIC8qIGxlZnQgYm91bmQsIGlzIG9wZW4sIHJpZ2h0IGJvdW5kLCBpcyBvcGVu
LCBhc2NlbmRpbmcgKi8KLSAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwg
bnVsbCwgbnVsbCwgdHJ1ZV0pOwotICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCBm
YWxzZSwgbnVsbCwgbnVsbCwgdHJ1ZV0pOwotICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0
KFtudWxsLCBudWxsLCBpLCB0cnVlLCB0cnVlXSk7Ci0gICAgICAgIHNjaGVkdWxlZFRlc3RzLnVu
c2hpZnQoW251bGwsIG51bGwsIGksIGZhbHNlLCB0cnVlXSk7Ci0gICAgICAgIHNjaGVkdWxlZFRl
c3RzLnVuc2hpZnQoW2ksIHRydWUsIG51bGwsIG51bGwsIGZhbHNlXSk7Ci0gICAgICAgIHNjaGVk
dWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBudWxsLCBudWxsLCBmYWxzZV0pOwotICAgICAg
ICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtudWxsLCBudWxsLCBpLCB0cnVlLCBmYWxzZV0pOwot
ICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtudWxsLCBudWxsLCBpLCBmYWxzZSwgZmFs
c2VdKTsKLSAgICAgICAgZm9yICh2YXIgaiA9IDY7IGogPCB0ZXN0RGF0YS5sZW5ndGg7ICsraikg
ewotICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwgaiwgdHJ1ZSwg
dHJ1ZV0pOwotICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwgaiwg
ZmFsc2UsIHRydWVdKTsKLSAgICAgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZh
bHNlLCBqLCB0cnVlLCB0cnVlXSk7Ci0gICAgICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0
KFtpLCBmYWxzZSwgaiwgZmFsc2UsIHRydWVdKTsKLSAgICAgICAgICAgIHNjaGVkdWxlZFRlc3Rz
LnVuc2hpZnQoW2ksIHRydWUsIGosIHRydWUsIGZhbHNlXSk7Ci0gICAgICAgICAgICBzY2hlZHVs
ZWRUZXN0cy51bnNoaWZ0KFtpLCB0cnVlLCBqLCBmYWxzZSwgZmFsc2VdKTsKLSAgICAgICAgICAg
IHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBqLCB0cnVlLCBmYWxzZV0pOwotICAg
ICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgZmFsc2UsIGosIGZhbHNlLCBmYWxz
ZV0pOwotICAgICAgICB9Ci0gICAgfQotIAotICAgIGRlYnVnKCJSdW5uaW5nIHRlc3RzLi4uIik7
Ci0gICAgcnVuTmV4dFRlc3QoKTsKLX0KLSAKLWZ1bmN0aW9uIHJ1bk5leHRUZXN0KCkKLXsKLSAg
ICBpZiAoIXNjaGVkdWxlZFRlc3RzLmxlbmd0aCkgewotICAgICAgICB0ZXN0TnVsbEtleVJhbmdl
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gCi0gICAgdmFyIHRlc3QgPSBzY2hlZHVsZWRU
ZXN0cy5wb3AoKTsKLSAgICBzZWxmLmxvd2VyID0gdGVzdFswXTsKLSAgICBzZWxmLmxvd2VySXNP
cGVuID0gdGVzdFsxXTsKLSAgICBzZWxmLnVwcGVyID0gdGVzdFsyXTsKLSAgICBzZWxmLnVwcGVy
SXNPcGVuID0gdGVzdFszXTsKLSAgICBzZWxmLmFzY2VuZGluZyA9IHRlc3RbNF07Ci0KLSAgICBz
dHIgPSAiTmV4dCB0ZXN0OiAiOwotICAgIGlmIChsb3dlciAhPT0gbnVsbCkgewotICAgICAgICBz
dHIgKz0gImxvd2VyICI7Ci0gICAgICAgIGlmIChsb3dlcklzT3BlbikKLSAgICAgICAgICAgIHN0
ciArPSAib3BlbiAiOwotICAgICAgICBzdHIgKz0gImJvdW5kIGlzICIgKyBsb3dlciArICI7ICI7
Ci0gICAgfQotICAgIGlmICh1cHBlciAhPT0gbnVsbCkgewotICAgICAgICBzdHIgKz0gInVwcGVy
ICI7Ci0gICAgICAgIGlmICh1cHBlcklzT3BlbikKLSAgICAgICAgICAgIHN0ciArPSAib3BlbiAi
OwotICAgICAgICBzdHIgKz0gImJvdW5kIGlzICIgKyB1cHBlciArICI7ICI7Ci0gICAgfQotICAg
IGlmIChhc2NlbmRpbmcpCi0gICAgICAgIHN0ciArPSAic29ydGVkIGFzY2VuZGluZy4iOwotICAg
IGVsc2UKLSAgICAgICAgc3RyICs9ICJzb3J0ZWQgZGVzY2VuZGluZy4iOwotCi0gICAgZGVidWco
IiIpOwotICAgIGRlYnVnKHN0cik7Ci0KLSAgICAvLyBXb3JrIGFyb3VuZCBmb3IgZHVwbGljYXRl
IHZhbHVlcy4KLSAgICBpZiAodXBwZXIgIT09IG51bGwpIHsKLSAgICAgICAgaWYgKHVwcGVySXNP
cGVuKSB7Ci0gICAgICAgICAgICB3aGlsZSAodXBwZXIgPiAwICYmIHRlc3REYXRhW3VwcGVyXSA9
PT0gdGVzdERhdGFbdXBwZXIgLSAxXSkKLSAgICAgICAgICAgICAgICAtLXNlbGYudXBwZXI7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB3aGlsZSAodXBwZXIgPCB0ZXN0RGF0YS5sZW5n
dGggLSAxICYmIHRlc3REYXRhW3VwcGVyXSA9PT0gdGVzdERhdGFbdXBwZXIgKyAxXSkKLSAgICAg
ICAgICAgICAgICArK3NlbGYudXBwZXI7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKGxvd2Vy
ICE9PSBudWxsKSB7Ci0gICAgICAgIGlmIChsb3dlcklzT3BlbikgewotICAgICAgICAgICAgd2hp
bGUgKGxvd2VyIDwgdGVzdERhdGEubGVuZ3RoIC0gMSAmJiB0ZXN0RGF0YVtsb3dlcl0gPT09IHRl
c3REYXRhW2xvd2VyICsgMV0pCi0gICAgICAgICAgICAgICAgKytzZWxmLmxvd2VyOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgd2hpbGUgKGxvd2VyID4gMCAmJiB0ZXN0RGF0YVtsb3dl
cl0gPT09IHRlc3REYXRhW2xvd2VyIC0gMV0pCi0gICAgICAgICAgICAgICAgLS1zZWxmLmxvd2Vy
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGFzY2VuZGluZykgewotICAgICAgICBpZiAo
bG93ZXIgIT09IG51bGwpIHsKLSAgICAgICAgICAgIGlmICghbG93ZXJJc09wZW4pCi0gICAgICAg
ICAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gbG93ZXI7Ci0gICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gbG93ZXIgKyAxOwotICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IDA7Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgaWYgKHVwcGVyICE9PSBudWxsKSB7Ci0gICAgICAgICAgICBpZiAoIXVwcGVySXNP
cGVuKQotICAgICAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IHVwcGVyOwotICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IHVwcGVyIC0g
MTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSB0ZXN0
RGF0YS5sZW5ndGggLSAxOwotICAgIH0KLSAgICB0ZXN0V2l0aGluQm91bmRzKCk7Ci0gCi0gICAg
aWYgKHRlc3REYXRhW2xvd2VyXSA9PT0gdGVzdERhdGFbdXBwZXJdICYmIChsb3dlcklzT3BlbiB8
fCB1cHBlcklzT3BlbikpIHsKLSAgICAgICAgZGVidWcoIlNraXBwaW5nIGlsbGVnYWwga2V5IHJh
bmdlLiIpOwotICAgICAgICBydW5OZXh0VGVzdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgdmFyIGtleVJhbmdlOwotICAgIGlmIChsb3dlciAhPT0gbnVsbCAmJiB1cHBlciAhPT0g
bnVsbCkKLSAgICAgICAga2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5ib3VuZCh0ZXN0RGF0YVtsb3dl
cl0sIHRlc3REYXRhW3VwcGVyXSwgbG93ZXJJc09wZW4sIHVwcGVySXNPcGVuKTsKLSAgICBlbHNl
IGlmIChsb3dlciAhPT0gbnVsbCkKLSAgICAgICAga2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5sb3dl
ckJvdW5kKHRlc3REYXRhW2xvd2VyXSwgbG93ZXJJc09wZW4pOwotICAgIGVsc2UKLSAgICAgICAg
a2V5UmFuZ2UgPSBJREJLZXlSYW5nZS51cHBlckJvdW5kKHRlc3REYXRhW3VwcGVyXSwgdXBwZXJJ
c09wZW4pOwotIAotICAgIHZhciByZXF1ZXN0ID0gaW5kZXhPYmplY3Qub3BlbktleUN1cnNvcihr
ZXlSYW5nZSwgYXNjZW5kaW5nID8gSURCQ3Vyc29yLk5FWFQgOiBJREJDdXJzb3IuUFJFVik7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3JJdGVyYXRpb247Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RXaXRoaW5C
b3VuZHMoKQotewotICAgIGlmIChleHBlY3RlZEluZGV4IDwgMCB8fCB0ZXN0RGF0YS5sZW5ndGgg
PD0gZXhwZWN0ZWRJbmRleCkKLSAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gbnVsbDsKLSAg
ICBpZiAobG93ZXIgIT09IG51bGwgJiYgZXhwZWN0ZWRJbmRleCA8IGxvd2VyKQotICAgICAgICBz
ZWxmLmV4cGVjdGVkSW5kZXggPSBudWxsOwotICAgIGlmICh1cHBlciAhPT0gbnVsbCAmJiB1cHBl
ciA8IGV4cGVjdGVkSW5kZXgpCi0gICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IG51bGw7Ci0g
ICAgaWYgKGxvd2VyICE9PSBudWxsICYmIGxvd2VySXNPcGVuICYmIGV4cGVjdGVkSW5kZXggPD0g
bG93ZXIpCi0gICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IG51bGw7Ci0gICAgaWYgKHVwcGVy
ICE9PSBudWxsICYmIHVwcGVySXNPcGVuICYmIHVwcGVyIDw9IGV4cGVjdGVkSW5kZXgpCi0gICAg
ICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IG51bGw7Ci19Ci0gCi1mdW5jdGlvbiBjdXJzb3JJdGVy
YXRpb24oKQotewotICAgIGlmIChleHBlY3RlZEluZGV4ID09PSBudWxsKSB7Ci0gICAgICAgIHNo
b3VsZEJlTnVsbCgiZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgICAgICBydW5OZXh0VGVzdCgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0ID09
PSBudWxsKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoImV2ZW50LnRhcmdldC5yZXN1bHQgc2hvdWxk
IG5vdCBiZSBudWxsLiIpOwotICAgICAgICBydW5OZXh0VGVzdCgpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotIAotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXki
LCAiZXhwZWN0ZWRJbmRleCIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0Lmtl
eSIsICJ0ZXN0RGF0YVsiICsgZXhwZWN0ZWRJbmRleCArICJdIik7Ci0gICAgc2VsZi5leHBlY3Rl
ZEluZGV4ID0gYXNjZW5kaW5nID8gZXhwZWN0ZWRJbmRleCArIDEgOiBleHBlY3RlZEluZGV4IC0g
MTsKLSAgICB0ZXN0V2l0aGluQm91bmRzKCk7Ci0KLSAgICBldmVudC50YXJnZXQucmVzdWx0LmNv
bnRpbnVlKCk7Ci19Ci0gCi1zZWxmLm51bGxLZXlSYW5nZVN0ZXAgPSAwOwotZnVuY3Rpb24gdGVz
dE51bGxLZXlSYW5nZSgpCi17Ci0gICAgc2VsZi5sb3dlciA9IDA7Ci0gICAgc2VsZi5sb3dlcklz
T3BlbiA9IGZhbHNlOwotICAgIHNlbGYudXBwZXIgPSB0ZXN0RGF0YS5sZW5ndGgtMTsKLSAgICBz
ZWxmLnVwcGVySXNPcGVuID0gZmFsc2U7Ci0KLSAgICBzdHIgPSAiTmV4dCB0ZXN0OiBudWxsIGtl
eSBwYXRoICI7Ci0gICAgaWYgKHNlbGYubnVsbEtleVJhbmdlU3RlcCA9PSAwKSB7Ci0gICAgICAg
IHN0ciArPSAic29ydGVkIGFzY2VuZGluZy4iOwotICAgICAgICBzZWxmLmFzY2VuZGluZyA9IHRy
dWU7Ci0gICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IGxvd2VyOwotICAgICAgICBzZWxmLm51
bGxLZXlSYW5nZVN0ZXAgPSAxOwotICAgIH0gZWxzZSBpZiAoc2VsZi5udWxsS2V5UmFuZ2VTdGVw
ID09IDEpIHsKLSAgICAgICAgc3RyICs9ICJzb3J0ZWQgZGVzY2VuZGluZy4iOwotICAgICAgICBz
ZWxmLmFzY2VuZGluZyA9IGZhbHNlOwotICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSB1cHBl
cjsKLSAgICAgICAgc2VsZi5udWxsS2V5UmFuZ2VTdGVwID0gMjsKLSAgICB9IGVsc2UgewotICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGRlYnVn
KCIiKTsKLSAgICBkZWJ1ZyhzdHIpOwotIAotICAgIHZhciByZXF1ZXN0ID0gaW5kZXhPYmplY3Qu
b3BlbktleUN1cnNvcihudWxsLCBhc2NlbmRpbmcgPyBJREJDdXJzb3IuTkVYVCA6IElEQkN1cnNv
ci5QUkVWKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvckl0ZXJhdGlvbjsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLSAKLXJlbW92ZVZl
bmRvclByZWZpeGVzKCk7Ci1vcGVuRGF0YWJhc2UoKTsgLy8gVGhlIGZpcnN0IHN0ZXAuCi0gCi08
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaW5kZXgtY3Vyc29yLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvaW5kZXgtZ2V0LWtleS1hcmd1bWVudC1yZXF1aXJlZC5odG1sIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtZ2V0LWtleS1hcmd1bWVudC1yZXF1aXJl
ZC5odG1sCmluZGV4IDNiOWVhMWQ2NWM3Y2YwNzkzMjIxMGE2ZTI1ZTM0YTdhNmViY2YyM2EuLmRk
YjdjZTM3MTZlNmM4ZmFkZjdkNTE4YjRkMzcwZjIyM2ZhNTc0M2MgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWdldC1rZXktYXJndW1lbnQtcmVxdWlyZWQu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1nZXQta2V5LWFy
Z3VtZW50LXJlcXVpcmVkLmh0bWwKQEAgLTEsNDkgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgog
PGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+
PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0
IEluZGV4ZWREQiBpbmRleCAuZ2V0KCkgcmVxdWlyZWQgYXJndW1lbnQiKTsKLQotZnVuY3Rpb24g
dGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxm
LmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2Ui
OwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlw
dGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVu
U3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lv
bignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9iamVj
dFN0b3JlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
fQotCi1mdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKLXsKLSAgICBkZWxl
dGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJv
YmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7IGtleVBhdGg6ICdpZCcs
IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7Ci0gICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRl
eCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdmaXJzdCcsICdmaXJzdCcpOyIpOwotICAgIHNo
b3VsZFRocm93KCJpbmRleC5nZXQoKTsiKTsKLSAgICBzaG91bGRUaHJvdygiaW5kZXguZ2V0S2V5
KCk7Iik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaW5kZXgtZ2V0LWtleS1hcmd1bWVudC1yZXF1aXJlZC5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LW11bHRpZW50cnkuaHRtbCBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LW11bHRpZW50cnkuaHRtbAppbmRleCA1Yzc1OTlm
MGM1MDJmN2U2N2RmNDkyZDg0MjVkMjVhODAwMGRhMDg1Li5mOGIyZGY1OWY2YjNlODc5YjdjMTA2
YjNmNTQ3OTg2N2JiNGNkZWYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9pbmRleC1tdWx0aWVudHJ5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvaW5kZXgtbXVsdGllbnRyeS5odG1sCkBAIC00LDE0NiArNCw3IEBACiA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3Jp
cHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IGZlYXR1cmVzIG9mIEluZGV4ZWREQidzIG11bHRpRW50
cnkgaW5kaWNlcy4iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJl
Zml4ZXMoKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignaW5k
ZXgtbXVsdGlFbnRyeScpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAg
ZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgICAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IHByZXBhcmVEYXRhYmFzZTsKLSAgICB9OwotfQotCi1mdW5jdGlvbiBwcmVwYXJl
RGF0YWJhc2UoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiQ3JlYXRpbmcgZW1wdHkg
c3RvcmVzIGFuZCBpbmRleGVzIik7Ci0gICAgdmFyIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVs
bCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0
cmFucy5vbmNvbXBsZXRlID0gYWRkRGF0YTsKLQotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jlcyhk
Yik7Ci0KLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ3N0b3JlJykiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXgn
LCAneCcsIHttdWx0aUVudHJ5OiB0cnVlfSkiKTsKLQotICAgIHN0b3JlMiA9IGV2YWxBbmRMb2co
InN0b3JlMiA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZS11bmlxdWUnKSIpOwotICAgIGV2
YWxBbmRMb2coInN0b3JlMi5jcmVhdGVJbmRleCgnaW5kZXgtdW5pcXVlJywgJ3gnLCB7bXVsdGlF
bnRyeTogdHJ1ZSwgdW5pcXVlOiB0cnVlfSkiKTsKLX0KLQotZnVuY3Rpb24gYWRkRGF0YSgpCi17
Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJQb3B1bGF0aW5nIHN0b3JlcyAoYW5kIGluZGV4
ZXMpIik7Ci0gICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRy
YW5zYWN0aW9uKFsnc3RvcmUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICB0
cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnNh
Y3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKCkgeyB2ZXJpZnlJbmRleGVzKCdpbmRleCcsIHZl
cmlmeVVuaXF1ZUNvbnN0cmFpbnQpOyB9OwotCi0gICAgZGVidWcoIkZpcnN0IHRyeSBzb21lIGtl
eXMgdGhhdCBhcmVuJ3Qgd2hhdCB3ZSdyZSBleHBlY3RpbmciKTsKLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KHt4OiBbNywgOCwg
OV0sIHk6ICdhJ30sICdmb28nKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotICAgIGRlYnVnKCJOb3cgb3ZlcndyaXRlIHRoZW0gd2l0aCB3aGF0IHdl
J3JlIGV4cGVjdGluZyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5v
YmplY3RTdG9yZSgnc3RvcmUnKS5wdXQoe3g6IFsxLCAyLCAzXSwgeTogJ2EnfSwgJ2ZvbycpIik7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLnB1dCh7
eDogWzQsIDUsIDZdLCB5OiAnYid9LCAnYmFyJykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gdmVyaWZ5SW5kZXhlcyhpbmRl
eE5hbWUsIGNhbGxiYWNrKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiVmVyaWZ5aW5n
IGluZGV4OiAiICsgaW5kZXhOYW1lKTsKLSAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRy
YW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZSddLCBJREJUcmFuc2FjdGlvbi5SRUFE
X09OTFkpIik7Ci0gICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxi
YWNrOwotICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBjYWxsYmFjazsKLQotICAgIGV4cGVj
dGVkID0gWwotICAgICAgICB7IGtleTogMSwgcHJpbWFyeUtleTogJ2ZvbycsIHk6ICdhJyB9LAot
ICAgICAgICB7IGtleTogMiwgcHJpbWFyeUtleTogJ2ZvbycsIHk6ICdhJyB9LAotICAgICAgICB7
IGtleTogMywgcHJpbWFyeUtleTogJ2ZvbycsIHk6ICdhJyB9LAotICAgICAgICB7IGtleTogNCwg
cHJpbWFyeUtleTogJ2JhcicsIHk6ICdiJyB9LAotICAgICAgICB7IGtleTogNSwgcHJpbWFyeUtl
eTogJ2JhcicsIHk6ICdiJyB9LAotICAgICAgICB7IGtleTogNiwgcHJpbWFyeUtleTogJ2Jhcics
IHk6ICdiJyB9LAotICAgIF07Ci0KLSAgICB2YXIgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5z
YWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLmluZGV4KCciICsgaW5kZXhOYW1lICsgIicpLm9w
ZW5DdXJzb3IoKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAg
Y3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAg
ICAgICBpZiAoY3Vyc29yKSB7Ci0gICAgICAgICAgICBleCA9IGV4cGVjdGVkLnNoaWZ0KCk7Ci0g
ICAgICAgICAgICBzaG91bGRCZVRydWUoImV4ICE9IG51bGwiKTsKLSAgICAgICAgICAgIHNob3Vs
ZEJlKCJjdXJzb3Iua2V5IiwgU3RyaW5nKGV4LmtleSkpOwotICAgICAgICAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJjdXJzb3IucHJpbWFyeUtleSIsIGV4LnByaW1hcnlLZXkpOwotICAgICAg
ICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjdXJzb3IudmFsdWUueSIsIGV4LnkpOwotICAg
ICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBzaG91bGRCZVRydWUoImV4cGVjdGVkLmxlbmd0aCA9PT0gMCIpOwotICAgICAgICB9Ci0gICAg
fTsKLX0KLQotZnVuY3Rpb24gdmVyaWZ5VW5pcXVlQ29uc3RyYWludCgpCi17Ci0gICAgZGVidWco
IiIpOwotICAgIGRlYnVnKCJWZXJpZnlpbmcgdW5pcXVlIGNvbnN0cmFpbnQgb24gbXVsdGlFbnRy
eSBpbmRleCIpOwotICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBk
Yi50cmFuc2FjdGlvbihbJ3N0b3JlLXVuaXF1ZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRF
KSIpOwotICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIGRl
YnVnKCJUcmFuc2FjdGlvbiBhYm9ydGVkIGFzIGV4cGVjdGVkIik7Ci0gICAgICAgIGNyZWF0ZUlu
ZGV4T25TdG9yZVdpdGhEYXRhKCk7Ci0gICAgfTsKLSAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRl
ID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlLXVuaXF1ZScpLnB1dCh7eDogWzEsIDIs
IDNdLCB5OiAnYSd9LCAnZm9vJykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAg
ICAgICBkZWJ1Zygic3VjY2VzcyEiKTsKLSAgICAgICAgZGVidWcoIlJlcGxhY2UgYW4gZXhpc3Rp
bmcgcmVjb3JkIC0gdGhpcyBzaG91bGQgd29yayIpOwotICAgICAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlLXVuaXF1ZScpLnB1dCh7eDogWzEs
IDIsIDddLCB5OiAnYSd9LCAnZm9vJykiKTsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICBkZWJ1Zygic3VjY2VzcyEiKTsKLSAgICAgICAgICAgIGRlYnVn
KCJUaGlzIHNob3VsZCBmYWlsIHRoZSB1bmlxdWVuZXNzIGNvbnN0cmFpbnQgb24gdGhlIGluZGV4
LCBhbmQgZmFpbDoiKTsKLSAgICAgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2Fj
dGlvbi5vYmplY3RTdG9yZSgnc3RvcmUtdW5pcXVlJykucHV0KHt4OiBbNSwgMl0sIHk6ICdjJ30s
ICdzaG91bGQgZmFpbCcpIik7Ci0gICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVuZXhw
ZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7Ci0gICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5j
dGlvbigpIHsgZGVidWcoIlJlcXVlc3QgZmFpbGVkLCBhcyBleHBlY3RlZCIpOyB9OwotICAgICAg
ICB9OwotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUluZGV4T25TdG9yZVdpdGhEYXRhKCkK
LXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIkNyZWF0ZSBhbiBpbmRleCBvbiBhIHBvcHVs
YXRlZCBzdG9yZSIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24o
JzInKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Ci0KLSAgICAgICAgdmFyIHRyYW5z
ID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgICAgIHNo
b3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKLSAgICAgICAgdHJhbnMub25hYm9ydCA9IHVu
ZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgICAgICB0cmFucy5vbmNvbXBsZXRlID0gZnVuY3Rp
b24oKSB7IHZlcmlmeUluZGV4ZXMoJ2luZGV4LW5ldycsIGZpbmlzaEpTVGVzdCk7IH07Ci0KLSAg
ICAgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9y
ZScpIik7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleC1uZXcn
LCAneCcsIHttdWx0aUVudHJ5OiB0cnVlfSkiKTsKLSAgICB9OwotfQotCi10ZXN0KCk7Ci0KLTwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9pbmRleC1tdWx0aWVudHJ5LmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1wb3B1bGF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9pbmRleC1wb3B1bGF0aW9uLmh0bWwKaW5kZXggMWNiMjg1YjNhNjJi
NWQwZDVmZjhhNGQyYWQxNzk1ZGE4MzI5ZjI2NC4uNDlmMzgzZTAwY2U2YTAzODQzZGFkYzFiOWIx
MTgyNzMzNDQ1ZjU1ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
aW5kZXgtcG9wdWxhdGlvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2luZGV4LXBvcHVsYXRpb24uaHRtbApAQCAtNCw5NiArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0K
LWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBpbmRleCBwb3B1bGF0aW9uLiIpOwotCi1mdW5j
dGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgnaW5kZXgtcG9wdWxhdGlv
bicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVTdWNjZXNzOwotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBkZWxl
dGVTdWNjZXNzKCkKLXsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4o
J2luZGV4LXBvcHVsYXRpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZG9TZXRWZXJz
aW9uMTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0K
LQotZnVuY3Rpb24gZG9TZXRWZXJzaW9uMSgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVn
KCJkb1NldFZlcnNpb24xKCk6Iik7Ci0gICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
ZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNl
dFZlcnNpb24xOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uMSgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRl
YnVnKCJzZXRWZXJzaW9uMSgpOiIpOwotICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJh
bnNhY3Rpb24gPSByZXF1ZXN0LnJlc3VsdCIpOwotICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBl
Y3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTEnKSIpOwotICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCh7
ZGF0YTogJ2EnLCBpbmRleEtleTogMTB9LCAxKSIpOwotICAgIGV2YWxBbmRMb2coInN0b3JlLnB1
dCh7ZGF0YTogJ2InLCBpbmRleEtleTogMjB9LCAyKSIpOwotICAgIGV2YWxBbmRMb2coInN0b3Jl
LnB1dCh7ZGF0YTogJ2MnLCBpbmRleEtleTogMTB9LCAzKSIpOwotICAgIGV2YWxBbmRMb2coInN0
b3JlLnB1dCh7ZGF0YTogJ2QnLCBpbmRleEtleTogMjB9LCA0KSIpOwotICAgIGV2YWxBbmRMb2co
ImluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4MScsICdpbmRleEtleScpIik7Ci0gICAg
c2hvdWxkQmVUcnVlKCJpbmRleCBpbnN0YW5jZW9mIElEQkluZGV4Iik7Ci0gICAgc2hvdWxkQmVG
YWxzZSgiaW5kZXgudW5pcXVlIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBpbmRleC5jb3VudChJREJLZXlSYW5nZS5ib3VuZCgtSW5maW5pdHksIEluZmluaXR5KSkiKTsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgc2hvdWxkQmUoInJlcXVlc3Qu
cmVzdWx0IiwgIjQiKTsKLSAgICB9OwotICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBkb1Nl
dFZlcnNpb24yOwotfQotCi1mdW5jdGlvbiBkb1NldFZlcnNpb24yKCkgewotICAgIGRlYnVnKCIi
KTsKLSAgICBkZWJ1ZygiZG9TZXRWZXJzaW9uMigpOiIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAyJykiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IHNldFZlcnNpb24yOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uMigpCi17Ci0gICAgZGVi
dWcoIiIpOwotICAgIGRlYnVnKCJzZXRWZXJzaW9uMigpOiIpOwotICAgIHRyYW5zYWN0aW9uMiA9
IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gcmVxdWVzdC5yZXN1bHQiKTsKLSAgICB0cmFuc2Fj
dGlvbjIub25hYm9ydCA9IHNldFZlcnNpb24yQWJvcnQ7Ci0gICAgdHJhbnNhY3Rpb24yLm9uY29t
cGxldGUgPSB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjazsKLSAgICBzdG9yZSA9IGV2YWxBbmRM
b2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlMicpIik7Ci0gICAgZXZhbEFu
ZExvZygic3RvcmUucHV0KHtkYXRhOiAnYScsIGluZGV4S2V5OiAxMH0sIDEpIik7Ci0gICAgZXZh
bEFuZExvZygic3RvcmUucHV0KHtkYXRhOiAnYicsIGluZGV4S2V5OiAyMH0sIDIpIik7Ci0gICAg
ZXZhbEFuZExvZygic3RvcmUucHV0KHtkYXRhOiAnYycsIGluZGV4S2V5OiAxMH0sIDMpIik7Ci0g
ICAgZXZhbEFuZExvZygic3RvcmUucHV0KHtkYXRhOiAnZCcsIGluZGV4S2V5OiAyMH0sIDQpIik7
Ci0gICAgZXZhbEFuZExvZygiaW5kZXgyID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4MicsICdp
bmRleEtleScsIHsgdW5pcXVlOiB0cnVlIH0pIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJpbmRleDIg
aW5zdGFuY2VvZiBJREJJbmRleCIpOwotICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXgyLnVuaXF1ZSIp
OwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uMkFib3J0KCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0g
ICAgZGVidWcoInNldFZlcnNpb24yQWJvcnQoKToiKTsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0
U3RvcmVOYW1lcy5sZW5ndGgiLCAiMSIpOwotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5h
bWVzWzBdIiwgIidzdG9yZTEnIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXRlc3QoKTsK
LQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2luZGV4LXBvcHVsYXRpb24uanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC11bmlxdWUuaHRtbCBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2luZGV4LXVuaXF1ZS5odG1sCmluZGV4IDVhNTQ0M2M1OWU4YWJmMDJl
M2M4ZjVjZmUyOTI2ZDc5MmNjOGM2YTUuLmM2NjM4ZGY2YTA2YmYzYzRiMmY0YmE4Mjc4MGZhZDA0
YmQ4ZWIzODcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4
LXVuaXF1ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LXVu
aXF1ZS5odG1sCkBAIC00LDE0MyArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJl
ZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9u
KCJUZXN0IGZlYXR1cmVzIG9mIEluZGV4ZWREQidzIHVuaXF1ZSBpbmRpY2VzLiIpOwotCi1mdW5j
dGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignaW5kZXgtdW5pcXVlJykiKTsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb247Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb24oKQotewotICAgIGRi
ID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKLXsK
LSAgICBkZWJ1ZygiZGVsZXRlRXhpc3RpbmcoKToiKTsKLSAgICB2YXIgdHJhbnMgPSBldmFsQW5k
TG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRy
YW5zICE9PSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxi
YWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBzZXRWZXJzaW9uQ29tcGxldGVkOwotCi0gICAg
ZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIHNlbGYuc3RvcmUgPSBldmFsQW5kTG9n
KCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOwotICAgIHNlbGYuaW5kZXhPYmplY3Qg
PSBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXgnLCAneCcsIHt1bmlxdWU6IHRy
dWV9KSIpOwotCi0gICAgLy8gTGV0IHNldFZlcnNpb24gdHJhbnNhY3Rpb24gY29tcGxldGUuCi19
Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb25Db21wbGV0ZWQoKQotewotICAgIGRlYnVnKCJzZXRWZXJz
aW9uQ29tcGxldGVkKCk6Iik7Ci0gICAgc2VsZi50cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRy
YW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZSddLCBJREJUcmFuc2FjdGlvbi5SRUFE
X1dSSVRFKSIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVj
dFN0b3JlKCdzdG9yZScpLnB1dCh7eDogMX0sICdmb28nKSIpOwotICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRk
TW9yZURhdGE7Ci19Ci0KLWZ1bmN0aW9uIGFkZE1vcmVEYXRhKCkKLXsKLSAgICBkZWJ1ZygiYWRk
TW9yZURhdGEoKToiKTsKLQotICAgIC8vIFRoZSB4IHZhbHVlIHZpb2xhdGVzIHRoZSB1bmlxdWVu
ZXNzIGNvbnN0cmFpbnQgb2YgdGhlIGluZGV4LgotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0
cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKS5wdXQoe3g6IDF9LCAnYmFyJykiKTsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSBhZGRNb3JlRGF0YUZhaWxlZDsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGFkZE1vcmVE
YXRhRmFpbGVkKCkKLXsKLSAgICBkZWJ1ZygiYWRkTW9yZURhdGFGYWlsZWQoKToiKTsKLQotICAg
IC8vIERvbid0IGFib3J0IHRoZSB0cmFuc2FjdGlvbi4KLSAgICBldmFsQW5kTG9nKCJldmVudC5w
cmV2ZW50RGVmYXVsdCgpIik7Ci0KLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LmVycm9yQ29k
ZSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5DT05TVFJBSU5UX0VSUiIpOwotCi0gICAgLy8gVXBk
YXRlIHRoZSAnZm9vJyBlbnRyeSBpbiBvYmplY3Qgc3RvcmUsIGNoYW5naW5nIHRoZSB2YWx1ZSBv
ZiB4LgotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgn
c3RvcmUnKS5wdXQoe3g6IDB9LCAnZm9vJykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNoYW5nZURhdGFT
dWNjZXNzOwotfQotCi1mdW5jdGlvbiBjaGFuZ2VEYXRhU3VjY2VzcygpCi17Ci0gICAgZGVidWco
ImNoYW5nZURhdGFTdWNjZXNzKCk6Iik7Ci0KLSAgICAvLyBBbiBpbmRleCBjdXJzb3Igc3RhcnRp
bmcgYXQgMSBzaG91bGQgbm90IGZpbmQgYW55dGhpbmcuCi0gICAgdmFyIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKS5pbmRleCgnaW5kZXgnKS5v
cGVuQ3Vyc29yKElEQktleVJhbmdlLmxvd2VyQm91bmQoMSkpIik7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBjdXJzb3JTdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjdXJzb3JTdWNjZXNzKCkKLXsKLSAgICBkZWJ1
ZygiY3Vyc29yU3VjY2VzcygpOiIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0
IiwgIm51bGwiKTsKLQotICAgIC8vIEEga2V5IGN1cnNvciBzdGFydGluZyBhdCAxIHNob3VsZCBu
b3QgZmluZCBhbnl0aGluZy4KLSAgICB2YXIgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0
aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLmluZGV4KCdpbmRleCcpLm9wZW5LZXlDdXJzb3IoSURC
S2V5UmFuZ2UubG93ZXJCb3VuZCgxKSkiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGtleUN1
cnNvclN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIGtleUN1cnNvclN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJrZXlD
dXJzb3JTdWNjZXNzKCk6Iik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAi
bnVsbCIpOwotCi0gICAgLy8gTm93IHdlIHNob3VsZCBiZSBhYmxlIHRvIGFkZCBhIHZhbHVlIHdp
dGggeDogMS4KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3Rv
cmUoJ3N0b3JlJykucHV0KHt4OiAxfSwgJ2JhcicpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRNb3Jl
RGF0YVN1Y2NlczsKLX0KLQotZnVuY3Rpb24gYWRkTW9yZURhdGFTdWNjZXMoKQotewotICAgIGRl
YnVnKCJhZGRNb3JlRGF0YVN1Y2NlcygpOiIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLmRlbGV0ZSgnYmFyJykiKTsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGRlbGV0ZVN1Y2Nlc3M7Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZVN1Y2Nlc3MoKQot
ewotICAgIGRlYnVnKCJkZWxldGVTdWNjZXNzKCk6Iik7Ci0KLSAgICAvLyBOb3cgd2Ugc2hvdWxk
IGJlIGFibGUgdG8gYWRkIGEgdmFsdWUgd2l0aCB4OiAxIGFnYWluLgotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKS5wdXQoe3g6IDF9LCAn
YmF6JykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZpbmFsQWRkU3VjY2VzczsKLX0KLQotZnVuY3Rpb24g
ZmluYWxBZGRTdWNjZXNzKCkgewotICAgIGRlYnVnKCJmaW5hbEFkZFN1Y2Nlc3MoKToiKTsKLQot
ICAgIC8vIEFuIG92ZXJ3cml0ZSBzaG91bGQgYmUgb2suCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLnB1dCh7eDogMX0sICdiYXonKSIp
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZmluaXNoSlNUZXN0OwotfQotCi10ZXN0KCk7Ci0KLQotPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2luZGV4LXVuaXF1ZS5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvaW52YWxpZC1rZXlzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9pbnZhbGlkLWtleXMuaHRtbAppbmRleCBmZjkxNWUwOTZlYjk3MTRiYjUyZTMzZjZiMTk3
YzE1MzhmMGEwMjE1Li5lMzVhYjE4ZmM2MzYwNThkNmJmYWVhNmQ3YjkwNDRlYzNmNTQwZmY0IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnZhbGlkLWtleXMuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnZhbGlkLWtleXMuaHRtbApA
QCAtMSw3NCArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlw
dCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxi
b2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGludmFsaWQga2V5
cyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwot
Ci0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAi
TXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5v
cGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1
Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19
Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVl
c3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHRlc3RH
cm91cDE7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19
Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDEoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jlcyhk
Yik7Ci0KLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdmb28nKTsiKTsKLSAgICB0ZXN0SW52YWxpZEtleXMoKTsKLX0KLQotZnVuY3Rpb24gdGVzdElu
dmFsaWRLZXlzKCkKLXsKLSAgICB2YXIgaW52YWxpZEtleXMgPSBbCi0gICAgICAgICJ2b2lkIDAi
LCAvLyBVbmRlZmluZWQKLSAgICAgICAgIm51bGwiLCAvLyBOdWxsCi0gICAgICAgICIoZnVuY3Rp
b24oKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSkiLCAvLyBBcmd1bWVudHMKLSAgICAgICAgInRy
dWUiLCAvLyBCb29sZWFuCi0gICAgICAgICJmYWxzZSIsIC8vIEJvb2xlYW4KLSAgICAgICAgIm5l
dyBFcnJvciIsIC8vIEVycm9yCi0gICAgICAgICJmdW5jdGlvbiAoKSB7fSIsIC8vIEZ1bmN0aW9u
Ci0gICAgICAgICJKU09OIiwgLy8gSlNPTgotICAgICAgICAiTWF0aCIsIC8vIE1hdGgKLSAgICAg
ICAgIk5hTiIsIC8vIE51bWJlciAoc3BlY2lhbCBjYXNlKQotICAgICAgICAibmV3IERhdGUoTmFO
KSIsIC8vIERhdGUgKHNwZWNpYWwgY2FzZSkKLSAgICAgICAgInt9IiwgLy8gT2JqZWN0Ci0gICAg
ICAgICIvcmVnZXgvIiwgLy8gUmVnRXhwCi0gICAgICAgICJzZWxmIiwgLy8gZ2xvYmFsCi0gICAg
ICAgICJzZWxmLmRvY3VtZW50IiwgLy8gSFRNTERvY3VtZW50Ci0gICAgICAgICJzZWxmLmRvY3Vt
ZW50LmJvZHkiIC8vIEhUTUxCb2R5RWxlbWVudAotICAgIF07Ci0KLSAgICBpbnZhbGlkS2V5cy5m
b3JFYWNoKGZ1bmN0aW9uKGtleSkgewotICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJy
ZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCd2YWx1ZScsICIgKyBrZXkgKyAiKSIsICJJREJEYXRh
YmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotICAgIH0pOwotICAgIAotICAgIGZpbmlzaEpTVGVz
dCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2ludmFsaWQta2V5cy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleS1nZW5lcmF0b3IuaHRt
bCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleS1nZW5lcmF0b3IuaHRtbAppbmRl
eCBhN2IwN2ZmYWQ5MWE3ZGJlYmM0ZmFkZGFhOGNhOGYyNDY3MmY4N2YxLi44NDlkNGYyMTkyNmM5
NThiZDQ4ZDBiZmQxOGYyMGRhNzUyYzRkZjk4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9rZXktZ2VuZXJhdG9yLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIva2V5LWdlbmVyYXRvci5odG1sCkBAIC00LDIxMiArNCw3IEBACiA8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxz
Y3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGtleSBnZW5lcmF0b3IgYmVo
YXZpb3IuIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVz
KCk7Ci0KLSAgICBydW5UZXN0cygpOwotfQotCi12YXIgdGVzdHMgPSBbXTsKLWZ1bmN0aW9uIGRl
ZmluZVRlc3QoZGVzY3JpcHRpb24sIHZlcmNoYW5nZSwgb3B0aW9uYWwpIHsKLSAgdGVzdHMucHVz
aCgKLSAgICB7Ci0gICAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sCi0gICAgICB2ZXJjaGFu
Z2U6IHZlcmNoYW5nZSwKLSAgICAgIG9wdGlvbmFsOiBvcHRpb25hbAotICAgIH0KLSAgKTsKLX0K
LQotCi1mdW5jdGlvbiBydW5UZXN0cygpIHsKLQotICAgIGZ1bmN0aW9uIG5leHRUZXN0KCkgewot
ICAgICAgICBpZiAoIXRlc3RzLmxlbmd0aCkgewotICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgdGVzdCA9IHRl
c3RzLnNoaWZ0KCk7Ci0gICAgICAgIGRlYnVnKCIiKTsKLSAgICAgICAgZGVidWcodGVzdC5kZXNj
cmlwdGlvbik7Ci0KLSAgICAgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5kZWxl
dGVEYXRhYmFzZSgna2V5LWdlbmVyYXRvcicpIik7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1
bmN0aW9uICgpIHsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIu
b3Blbigna2V5LWdlbmVyYXRvcicpIik7Ci0gICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImRiID0gcmVxdWVzdC5y
ZXN1bHQiKTsKLSAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVy
c2lvbignMScpIik7Ci0gICAgICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coInRyYW5zID0gcmVxdWVz
dC5yZXN1bHQiKTsKLSAgICAgICAgICAgICAgICAgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0
ZWRBYm9ydENhbGxiYWNrOwotICAgICAgICAgICAgICAgICAgICB0ZXN0LnZlcmNoYW5nZShkYiwg
dHJhbnMpOwotICAgICAgICAgICAgICAgICAgICB0cmFucy5vbmNvbXBsZXRlID0gZnVuY3Rpb24g
KCkgewotCi0gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImRiLmNsb3NlKCkiKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0VGVzdCgpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGVzdC5vcHRpb25hbCkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Qub3B0aW9uYWwoZGIsIGZpbmlzaFRlc3Qp
OwotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmaW5pc2hUZXN0KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIH07Ci0gICAg
ICAgIH07Ci0gICAgfQotCi0gICAgbmV4dFRlc3QoKTsKLX0KLQotZnVuY3Rpb24gY2hlY2soc3Rv
cmUsIGtleSwgZXhwZWN0ZWQpIHsKLSAgICBzZWxmLnN0b3JlID0gc3RvcmU7Ci0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdG9yZS5nZXQoIiArIEpTT04uc3RyaW5naWZ5KGtl
eSkgKyAiKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAgc2VsZi5l
eHBlY3RlZCA9IGV4cGVjdGVkOwotICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkoZXZlbnQudGFy
Z2V0LnJlc3VsdCkgPT09IEpTT04uc3RyaW5naWZ5KGV4cGVjdGVkKSkgewotICAgICAgICAgICAg
dGVzdFBhc3NlZCgiR290ICIgKyBKU09OLnN0cmluZ2lmeShldmVudC50YXJnZXQucmVzdWx0KSAr
ICIgZm9yIGtleTogIiArIEpTT04uc3RyaW5naWZ5KGtleSkpOwotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiR290ICIgKyBKU09OLnN0cmluZ2lmeShldmVudC50YXJn
ZXQucmVzdWx0KSArICIgZm9yIGtleTogIiArIEpTT04uc3RyaW5naWZ5KGtleSkgKwotICAgICAg
ICAgICAgICAgICIgZXhwZWN0ZWQ6ICIgKyBKU09OLnN0cmluZ2lmeShleHBlY3RlZCkpOwotICAg
ICAgICB9Ci0gICAgfTsKLX0KLQotZGVmaW5lVGVzdCgKLSAgICAnVmVyaWZ5IHRoYXQgZWFjaCBv
YmplY3Qgc3RvcmUgaGFzIGFuIGluZGVwZW5kZW50IGtleSBnZW5lcmF0b3IuJywKLSAgICBmdW5j
dGlvbiAoZGIsIHRyYW5zKSB7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlMSA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdzdG9yZTEnLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSkiKTsKLSAgICAg
ICAgZXZhbEFuZExvZygic3RvcmUxLnB1dCgnYScpIik7Ci0gICAgICAgIGNoZWNrKHN0b3JlMSwg
MSwgJ2EnKTsKLSAgICAgICAgZXZhbEFuZExvZygic3RvcmUyID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ3N0b3JlMicsIHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9KSIpOwotICAgICAgICBldmFsQW5k
TG9nKCJzdG9yZTIucHV0KCdhJykiKTsKLSAgICAgICAgY2hlY2soc3RvcmUyLCAxLCAnYScpOwot
ICAgICAgICBldmFsQW5kTG9nKCJzdG9yZTEucHV0KCdiJykiKTsKLSAgICAgICAgY2hlY2soc3Rv
cmUxLCAyLCAnYicpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZTIucHV0KCdiJykiKTsKLSAg
ICAgICAgY2hlY2soc3RvcmUyLCAyLCAnYicpOwotICAgIH0KLSk7Ci0KLWRlZmluZVRlc3QoCi0g
ICAgJ1ZlcmlmeSB0aGF0IHRoZSBrZXkgZ2VuZXJhdG9yIGlzIG5vdCB1cGRhdGVkIGlmIGluc2Vy
dGlvbiBmYWlscycsCi0gICAgZnVuY3Rpb24gKGRiLCB0cmFucykgewotICAgICAgICB0cmFucy5v
bmVycm9yID0gZnVuY3Rpb24oZSkgeyBlLnByZXZlbnREZWZhdWx0KCkgfTsKLSAgICAgICAgZXZh
bEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUxJywgeyBhdXRvSW5j
cmVtZW50OiB0cnVlIH0pIik7Ci0gICAgICAgIGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuY3Jl
YXRlSW5kZXgoJ2luZGV4MScsICdpeCcsIHsgdW5pcXVlOiB0cnVlIH0pIik7Ci0gICAgICAgIGV2
YWxBbmRMb2coInN0b3JlLnB1dCh7IGl4OiAnYSd9KSIpOwotICAgICAgICBjaGVjayhzdG9yZSwg
MSwge2l4OiAnYSd9KTsKLSAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KHsgaXg6ICdhJ30p
Iik7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCh7IGl4OiAnYid9KSIpOwotICAgICAg
ICBjaGVjayhzdG9yZSwgMiwge2l4OiAnYid9KTsKLSAgICB9Ci0pOwotCi1kZWZpbmVUZXN0KAot
ICAgICdWZXJpZnkgdGhhdCB0aGUga2V5IGdlbmVyYXRvciBpcyBub3QgYWZmZWN0ZWQgYnkgaXRl
bSByZW1vdmFsIChkZWxldGUgb3IgY2xlYXIpLicsCi0gICAgZnVuY3Rpb24gKGRiLCB0cmFucykg
ewotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9y
ZTEnLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSkiKTsKLSAgICAgICAgZXZhbEFuZExvZygic3Rv
cmUucHV0KCdhJykiKTsKLSAgICAgICAgY2hlY2soc3RvcmUsIDEsICdhJyk7Ci0gICAgICAgIGV2
YWxBbmRMb2coInN0b3JlLmRlbGV0ZSgxKSIpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5w
dXQoJ2InKSIpOwotICAgICAgICBjaGVjayhzdG9yZSwgMiwgJ2InKTsKLSAgICAgICAgZXZhbEFu
ZExvZygic3RvcmUuY2xlYXIoKSIpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2Mn
KSIpOwotICAgICAgICBjaGVjayhzdG9yZSwgMywgJ2MnKTsKLSAgICAgICAgLy8gRklYTUU6IElE
Qk9iamVjdFN0b3JlLmRlbGV0ZShJREJLZXlSYW5nZSkgaXMgbm90IHlldCBpbXBsZW1lbnRlZCBp
biBDaHJvbWl1bS4KLSAgICAgICAgLy8gaHR0cDovL2NyYnVnLmNvbS8xMDEzODQKLSAgICAgICAg
Ly9ldmFsQW5kTG9nKCJzdG9yZS5kZWxldGUoSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgwKSkiKTsK
LSAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdkJykiKTsKLSAgICAgICAgY2hlY2soc3Rv
cmUsIDQsICdkJyk7Ci0gICAgfQotKTsKLQotZGVmaW5lVGVzdCgKLSAgICAnVmVyaWZ5IHRoYXQg
dGhlIGtleSBnZW5lcmF0b3IgaXMgb25seSBzZXQgaWYgYW5kIG9ubHkgaWYgYSBudW1lcmljIGtl
eSBncmVhdGVyIHRoYW4gdGhlIGxhc3QgZ2VuZXJhdGVkIGtleSBpcyB1c2VkLicsCi0gICAgZnVu
Y3Rpb24gKGRiLCB0cmFucykgewotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdzdG9yZTEnLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSkiKTsKLSAgICAg
ICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdhJykiKTsKLSAgICAgICAgY2hlY2soc3RvcmUsIDEs
ICdhJyk7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgnYicsIDMpIik7Ci0gICAgICAg
IGNoZWNrKHN0b3JlLCAzLCAnYicpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2Mn
KSIpOwotICAgICAgICBjaGVjayhzdG9yZSwgNCwgJ2MnKTsKLSAgICAgICAgZXZhbEFuZExvZygi
c3RvcmUucHV0KCdkJywgLTEwKSIpOwotICAgICAgICBjaGVjayhzdG9yZSwgLTEwLCAnZCcpOwot
ICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2UnKSIpOwotICAgICAgICBjaGVjayhzdG9y
ZSwgNSwgJ2UnKTsKLSAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdmJywgNi4wMDAwMSki
KTsKLSAgICAgICAgY2hlY2soc3RvcmUsIDYuMDAwMDEsICdmJyk7Ci0gICAgICAgIGV2YWxBbmRM
b2coInN0b3JlLnB1dCgnZycpIik7Ci0gICAgICAgIGNoZWNrKHN0b3JlLCA3LCAnZycpOwotICAg
ICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2YnLCA4Ljk5OTkpIik7Ci0gICAgICAgIGNoZWNr
KHN0b3JlLCA4Ljk5OTksICdmJyk7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgnZycp
Iik7Ci0gICAgICAgIGNoZWNrKHN0b3JlLCA5LCAnZycpOwotICAgICAgICBldmFsQW5kTG9nKCJz
dG9yZS5wdXQoJ2gnLCAnZm9vJykiKTsKLSAgICAgICAgY2hlY2soc3RvcmUsICdmb28nLCAnaCcp
OwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2knKSIpOwotICAgICAgICBjaGVjayhz
dG9yZSwgMTAsICdpJyk7Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgnaicsIFsxMDAw
XSkiKTsKLSAgICAgICAgY2hlY2soc3RvcmUsIFsxMDAwXSwgJ2onKTsKLSAgICAgICAgZXZhbEFu
ZExvZygic3RvcmUucHV0KCdrJykiKTsKLSAgICAgICAgY2hlY2soc3RvcmUsIDExLCAnaycpOwot
Ci0gICAgICAgIC8vIEZJWE1FOiBSZXBlYXQgdGhpcyB0ZXN0LCBidXQgd2l0aCBhIGtleVBhdGgg
YW5kIGlubGluZSBrZXkuCi0gICAgfQotKTsKLQotZGVmaW5lVGVzdCgKLSAgICAnVmVyaWZ5IHRo
YXQgYWJvcnRpbmcgYSB0cmFuc2FjdGlvbiByZXNldHMgdGhlIGtleSBnZW5lcmF0b3Igc3RhdGUu
JywKLSAgICBmdW5jdGlvbiAoZGIsIHRyYW5zKSB7Ci0gICAgICAgIGRiLmNyZWF0ZU9iamVjdFN0
b3JlKCdzdG9yZScsIHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9KTsKLSAgICB9LAotCi0gICAgZnVu
Y3Rpb24gKGRiLCBjYWxsYmFjaykgewotICAgICAgICBldmFsQW5kTG9nKCJ0cmFuczEgPSBkYi50
cmFuc2FjdGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAg
ICAgIGV2YWxBbmRMb2coInN0b3JlX3QxID0gdHJhbnMxLm9iamVjdFN0b3JlKCdzdG9yZScpIik7
Ci0gICAgICAgIGV2YWxBbmRMb2coInN0b3JlX3QxLnB1dCgnYScpIik7Ci0gICAgICAgIGNoZWNr
KHN0b3JlX3QxLCAxLCAnYScpOwotICAgICAgICBldmFsQW5kTG9nKCJzdG9yZV90MS5wdXQoJ2In
KSIpOwotICAgICAgICBjaGVjayhzdG9yZV90MSwgMiwgJ2InKTsKLQotICAgICAgICAvLyBTY2hl
ZHVsZSB0aGUgYWJvcnQgYXMgYSB0YXNrIChub3QgcnVuIGl0IHN5bmNocm9ub3VzbHkpCi0gICAg
ICAgIHN0b3JlX3QxLmdldCgwKS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAg
ICBkZWJ1ZygnYWJvcnRpbmcuLi4nKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coInRyYW5zMS5h
Ym9ydCgpIik7Ci0gICAgICAgICAgICB0cmFuczEub25hYm9ydCA9IGZ1bmN0aW9uICgpIHsKLSAg
ICAgICAgICAgICAgICBkZWJ1ZygnYWJvcnRlZCEnKTsKLQotICAgICAgICAgICAgICAgIGV2YWxB
bmRMb2coInRyYW5zMiA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUnXSwgSURCVHJhbnNhY3Rpb24u
UkVBRF9XUklURSkiKTsKLSAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJzdG9yZV90MiA9IHRy
YW5zMi5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOwotICAgICAgICAgICAgICAgIGV2YWxBbmRMb2co
InN0b3JlX3QyLnB1dCgnYycpIik7Ci0gICAgICAgICAgICAgICAgY2hlY2soc3RvcmVfdDIsIDEs
ICdjJyk7Ci0gICAgICAgICAgICAgICAgZXZhbEFuZExvZygic3RvcmVfdDIucHV0KCdkJykiKTsK
LSAgICAgICAgICAgICAgICBjaGVjayhzdG9yZV90MiwgMiwgJ2QnKTsKLQotICAgICAgICAgICAg
ICAgIHRyYW5zMi5vbmNvbXBsZXRlID0gY2FsbGJhY2s7Ci0gICAgICAgICAgICB9OwotICAgICAg
ICB9OwotICAgIH0KLSk7Ci0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2tleS1nZW5lcmF0b3IuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXktc29ydC1v
cmRlci1hY3Jvc3MtdHlwZXMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tl
eS1zb3J0LW9yZGVyLWFjcm9zcy10eXBlcy5odG1sCmluZGV4IDBhMjQyNDNjMjRjZjIwMWY5Mjk0
YTgwOThkNmQwMTRjMmM0ZWY4NmMuLjY0M2Y3ZGNmODA4NTYwMzc4OWI5ODkxNDE3NjVjMmEwNmM0
MTM4MGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleS1zb3J0
LW9yZGVyLWFjcm9zcy10eXBlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2tleS1zb3J0LW9yZGVyLWFjcm9zcy10eXBlcy5odG1sCkBAIC0xLDk1ICsxLDEwIEBACi08
IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291
cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1k
ZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIga2V5IGNvbXBhcmlzb24iKTsKLQotZnVuY3Rpb24g
dGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxm
LmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2Ui
OwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlw
dGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVu
U3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lv
bignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRLZXkxOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBhZGRLZXkx
KCkKLXsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUg
PSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJyk7Iik7Ci0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoW10sIEluZmluaXR5KTsi
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEtleTI7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGFkZEtleTIoKQotewot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKFtdLCAt
SW5maW5pdHkpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkS2V5MzsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYWRk
S2V5MygpCi17Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9y
ZS5hZGQoW10sIDEuMCk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRLZXk0OwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlv
biBhZGRLZXk0KCkKLXsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVj
dFN0b3JlLmFkZChbXSwgJycpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkS2V5NTsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVu
Y3Rpb24gYWRkS2V5NSgpCi17Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBv
YmplY3RTdG9yZS5hZGQoW10sICcxLjAnKTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9w
ZW5BQ3Vyc29yOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotfQotCi1mdW5jdGlvbiBvcGVuQUN1cnNvcigpCi17Ci0gICAga2V5SW5kZXggPSAwOwotICAg
IHNvcnRlZEtleXMgPSBldmFsQW5kTG9nKCJzb3J0ZWRLZXkgPSBbLUluZmluaXR5LCAxLjAsIElu
ZmluaXR5LCAnJywgJzEuMCddOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24g
KGV2ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRh
cmdldC5yZXN1bHQ7Iik7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgICAgIHNob3Vs
ZEJlKCJjdXJzb3Iua2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7Ci0gICAgICAgICAgICBl
dmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2co
ImtleUluZGV4Kys7Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9rZXktc29ydC1vcmRlci1hY3Jvc3MtdHlwZXMu
anMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXktc29ydC1vcmRlci1kYXRlLmh0bWwgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXktc29ydC1vcmRlci1kYXRlLmh0bWwKaW5kZXgg
NWQ3MDJkMGJhYWU5YThlNTZjNmVhN2Q4OThjZjg0MjdiYWY0YWMxNi4uMmYwZTRlYzZmNmRkNjdl
YzY2M2JkMzM3MTY3Yjg5M2E4M2UyY2IzMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIva2V5LXNvcnQtb3JkZXItZGF0ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2tleS1zb3J0LW9yZGVyLWRhdGUuaHRtbApAQCAtMSw5MiArMSwxMCBA
QAotPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4K
LQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGtleSBjb21wYXJpc29uIik7Ci0KLWZ1bmN0
aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0g
c2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFi
YXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVz
Y3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24g
b3BlblN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZl
cnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkS2V5MTsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYWRk
S2V5MSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9iamVjdFN0
b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycpOyIpOwotICAgIGRh
dGUxID0gZXZhbEFuZExvZygiZGF0ZTEgPSBuZXcgRGF0ZSgxMDAwKTsiKTsKLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChbXSwgZGF0ZTEpOyIpOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkS2V5MjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYWRkS2V5MigpCi17Ci0gICAg
ZGF0ZTAgPSBldmFsQW5kTG9nKCJkYXRlMCA9IG5ldyBEYXRlKDApOyIpOwotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKFtdLCBkYXRlMCk7Iik7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRLZXkzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBhZGRLZXkzKCkKLXsKLSAgICBk
YXRlMyA9IGV2YWxBbmRMb2coImRhdGUzID0gbmV3IERhdGUoMzAwMCk7Iik7Ci0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoW10sIGRhdGUzKTsiKTsK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEtleTQ7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGFkZEtleTQoKQotewotICAg
IGRhdGUyID0gZXZhbEFuZExvZygiZGF0ZTIgPSBuZXcgRGF0ZSgyMDAwKTsiKTsKLSAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChbXSwgZGF0ZTIpOyIp
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbkFDdXJzb3I7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5BQ3Vyc29y
KCkKLXsKLSAgICBrZXlJbmRleCA9IDA7Ci0gICAgc29ydGVkS2V5cyA9IGV2YWxBbmRMb2coInNv
cnRlZEtleXMgPSBbZGF0ZTAudG9TdHJpbmcoKSwgZGF0ZTEudG9TdHJpbmcoKSwgZGF0ZTIudG9T
dHJpbmcoKSwgZGF0ZTMudG9TdHJpbmcoKV07Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICAg
ICAgc2hvdWxkQmUoImN1cnNvci5rZXkudG9TdHJpbmcoKSIsICJzb3J0ZWRLZXlzW2tleUluZGV4
XSIpOwotICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7Ci0gICAg
ICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOwotICAgICAgICB9Ci0gICAgICAgIGVs
c2UgewotICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0K
LQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMva2V5LXNvcnQt
b3JkZXItZGF0ZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleS10eXBlLWFycmF5Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXktdHlwZS1hcnJheS5odG1sCmluZGV4
IGI3MTVmMDNiMzJjNzlhYzBmYzE4N2IwZDc0MzBhZTYwYWRhMmQ2ZTIuLmFiNTBkMWExNGZiNGI5
NWUzMGViMzdhMjVkZmY4Yzg2OTQyZjMwMzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL2tleS10eXBlLWFycmF5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIva2V5LXR5cGUtYXJyYXkuaHRtbApAQCAtMSwyMDggKzEsMTAgQEAKLTwhRE9D
VFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2Ny
aXB0aW9uKCJUZXN0IEluZGV4ZWREQiBrZXkgdHlwZXMiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17
Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIGV2YWxBbmRMb2coIklEQlRyYW5z
YWN0aW9uID0gc2VsZi5JREJUcmFuc2FjdGlvbiB8fCBzZWxmLklEQlRyYW5zYWN0aW9uOyIpOwot
ICAgIHNob3VsZEJlRmFsc2UoIklEQlRyYW5zYWN0aW9uID09IG51bGwiKTsKLQotICAgIGV2YWxB
bmRMb2coIklEQkRhdGFiYXNlRXhjZXB0aW9uID0gc2VsZi5JREJEYXRhYmFzZUV4Y2VwdGlvbiB8
fCBzZWxmLklEQkRhdGFiYXNlRXhjZXB0aW9uOyIpOwotICAgIHNob3VsZEJlRmFsc2UoIklEQkRh
dGFiYXNlRXhjZXB0aW9uID09IG51bGwiKTsKLQotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24u
cGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgb3Bl
bnJlcSA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwot
ICAgIG9wZW5yZXEub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgb3BlbnJlcS5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkK
LXsKLSAgICBldmFsQW5kTG9nKCJkYiA9IG9wZW5yZXEucmVzdWx0Iik7Ci0gICAgc2V0dmVycmVx
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHNldHZl
cnJlcS5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsKLSAgICBzZXR2ZXJyZXEub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uU3Vj
Y2VzcygpCi17Ci0gICAgZGVidWcoInByZXBhcmluZyBkYXRhYmFzZSIpOwotICAgIHRyYW5zID0g
c2V0dmVycmVxLnJlc3VsdDsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gdGVzdFZhbGlkQXJyYXlL
ZXlzOwotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0gICAgb2JqZWN0U3RvcmUgPSBl
dmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKTsiKTsKLSAgICBkZWJ1Zygi
Iik7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RWYWxpZEFycmF5S2V5cygpCi17Ci0gICAgZXZhbEFuZExv
ZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dS
SVRFKSIpOwotICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3Jl
JykiKTsKLSAgICBkZWJ1ZygiIik7Ci0KLSAgICBldmFsQW5kTG9nKCJsb25nX2FycmF5ID0gW107
IGZvciAoaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsgbG9uZ19hcnJheS5wdXNoKCdhYmMnLCAxMjMs
IG5ldyBEYXRlKDApLCBbXSk7IH0iKTsKLSAgICBkZWJ1ZygiIik7Ci0KLSAgICBkZWJ1ZygiYXJy
YXkgdGhhdCBjb250YWlucyBub24tbnVtZXJpYyBzZWxmLXJlZmVyZW5jZSIpOwotICAgIGV2YWxB
bmRMb2coInNlbGZfcmVmZXJyZW50aWFsX2FycmF5ID0gW107IHNlbGZfcmVmZXJyZW50aWFsX2Fy
cmF5LnNlbGYgPSBzZWxmX3JlZmVycmVudGlhbF9hcnJheTsiKTsKLSAgICBkZWJ1ZygiIik7Ci0K
LSAgICB2YXIgbiA9IDAsIGNhc2VzID0gWwotICAgICAgICAiW10iLAotCi0gICAgICAgICJbLUlu
ZmluaXR5XSIsCi0gICAgICAgICJbLU51bWJlci5NQVhfVkFMVUVdIiwKLSAgICAgICAgIlstMV0i
LAotICAgICAgICAiWy1OdW1iZXIuTUlOX1ZBTFVFXSIsCi0gICAgICAgICJbMF0iLAotICAgICAg
ICAiW051bWJlci5NSU5fVkFMVUVdIiwKLSAgICAgICAgIlsxXSIsCi0gICAgICAgICJbTnVtYmVy
Lk1BWF9WQUxVRV0iLAotICAgICAgICAiW0luZmluaXR5XSIsCi0KLSAgICAgICAgIlsxLDIsM10i
LAotCi0gICAgICAgICJbbmV3IERhdGUoMCldIiwKLSAgICAgICAgIltuZXcgRGF0ZSgnMjUyNS0w
MS0wMVQwMDowMDowMFonKV0iLAotCi0gICAgICAgICJbbmV3IERhdGUoMCksIG5ldyBEYXRlKCcy
NTI1LTAxLTAxVDAwOjAwOjAwWicpXSIsCi0KLSAgICAgICAgIlsnJ10iLAotICAgICAgICAiWydc
eDAwJ10iLAotICAgICAgICAiWydhYmMxMjMnXSIsCi0KLSAgICAgICAgIlsnYWJjJywgMTIzXSIs
Ci0KLSAgICAgICAgIltbXV0iLAotCi0gICAgICAgICJbW10sIFtdXSIsCi0gICAgICAgICJbW10s
IFtdLCBbXV0iLAotCi0gICAgICAgICJbW1tdXV0iLAotICAgICAgICAiW1tbW11dXV0iLAotCi0g
ICAgICAgICJbMTIzLCAnYWJjJywgbmV3IERhdGUoMCksIFtdXSIsCi0gICAgICAgICJbWzEyMywg
J2FiYycsIG5ldyBEYXRlKDApLCBbXV0sIFs0NTYsICdkZWYnLCBuZXcgRGF0ZSg5OTkpLCBbW11d
XV0iLAotCi0gICAgICAgICJsb25nX2FycmF5IiwKLSAgICAgICAgInNlbGZfcmVmZXJyZW50aWFs
X2FycmF5IgotICAgIF07Ci0KLSAgICBmdW5jdGlvbiB0ZXN0QXJyYXlQdXRHZXQodmFsdWUsIGtl
eSwgY2FsbGJhY2spCi0gICAgewotICAgICAgICBkZWJ1ZygidGVzdGluZyBhcnJheSBrZXk6ICIg
KyBrZXkpOwotICAgICAgICBwdXRyZXEgPSBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJyIgKyB2YWx1
ZSArICInLCAiICsga2V5ICsgIik7Iik7Ci0gICAgICAgIHB1dHJlcS5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgIHB1dHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigp
IHsKLSAgICAgICAgICAgIGdldHJlcSA9IGV2YWxBbmRMb2coInN0b3JlLmdldCgiICsga2V5ICsg
Iik7Iik7Ci0gICAgICAgICAgICBnZXRyZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotICAgICAgICAgICAgZ2V0cmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewotICAgICAg
ICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZ2V0cmVxLnJlc3VsdCIsIHZhbHVlKTsK
LSAgICAgICAgICAgICAgICBkZWJ1ZygiIik7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2soKTsK
LSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gbmV4dFRl
c3QoKQotICAgIHsKLSAgICAgICAgdmFyIHRlc3RjYXNlID0gY2FzZXMuc2hpZnQoKTsKLSAgICAg
ICAgaWYgKHRlc3RjYXNlKSB7Ci0gICAgICAgICAgICB0ZXN0QXJyYXlQdXRHZXQoInZhbHVlIiAr
ICgrK24pLCB0ZXN0Y2FzZSwgbmV4dFRlc3QpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbmV4
dFRlc3QoKTsKLQotICAgIHRyYW5zLm9uY29tcGxldGUgPSB0ZXN0SW52YWxpZEFycmF5S2V5czsK
LX0KLQotCi1mdW5jdGlvbiB0ZXN0SW52YWxpZEFycmF5S2V5cygpCi17Ci0gICAgZXZhbEFuZExv
ZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dS
SVRFKSIpOwotICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3Jl
JykiKTsKLSAgICBkZWJ1ZygiIik7Ci0KLSAgICBkZWJ1ZygiYXJyYXkgdGhhdCBjb250YWlucyBp
dHNlbGY6IGFycmF5ID0gWyBhcnJheSBdIik7Ci0gICAgZXZhbEFuZExvZygiY3ljbGljX2FycmF5
ID0gW107IGN5Y2xpY19hcnJheS5wdXNoKGN5Y2xpY19hcnJheSkiKTsKLSAgICBzaG91bGRUaHJv
dygiSlNPTi5zdHJpbmdpZnkoY3ljbGljX2FycmF5KSIpOwotCi0gICAgZGVidWcoImFycmF5IHRo
YXQgY29udGFpbnMgaXRzZWxmLCBvbmUgbGV2ZWwgZG93bjogYXJyYXkgPSBbIFsgYXJyYXkgXSBd
Iik7Ci0gICAgZXZhbEFuZExvZygiY3ljbGljX2FycmF5MiA9IFtdOyBjeWNsaWNfYXJyYXkyLnB1
c2goW2N5Y2xpY19hcnJheTJdKSIpOwotICAgIHNob3VsZFRocm93KCJKU09OLnN0cmluZ2lmeShj
eWNsaWNfYXJyYXkyKSIpOwotCi0gICAgZGVidWcoImFycmF5IHRoYXQgY29udGFpbnMgaXRzZWxm
LCBub3QgYXMgZmlyc3QgZWxlbWVudDogYXJyYXkgPSBbMSwgJ2InLCBbXSwgYXJyYXldIik7Ci0g
ICAgZXZhbEFuZExvZygiY3ljbGljX2FycmF5MyA9IFsxLCAnYicsIFtdXTsgY3ljbGljX2FycmF5
My5wdXNoKGN5Y2xpY19hcnJheTMpIik7Ci0gICAgc2hvdWxkVGhyb3coIkpTT04uc3RyaW5naWZ5
KGN5Y2xpY19hcnJheTMpIik7Ci0gICAgZGVidWcoIiIpOwotCi0gICAgZGVidWcoImFycmF5IHRo
YXQgY29udGFpbnMgYXJyYXkgdGhhdCBjb250YWlucyBpdHNlbGYiKTsKLSAgICBldmFsQW5kTG9n
KCJjeWNsaWNfYXJyYXk0ID0gW2N5Y2xpY19hcnJheV07Iik7Ci0gICAgc2hvdWxkVGhyb3coIkpT
T04uc3RyaW5naWZ5KGN5Y2xpY19hcnJheTQpIik7Ci0gICAgZGVidWcoIiIpOwotCi0gICAgdmFy
IGludmFsaWRLZXlzID0gWwotICAgICAgICAiWyB2b2lkIDAgXSIsIC8vIHVuZGVmaW5lZAotICAg
ICAgICAiWyB0cnVlIF0iLAotICAgICAgICAiWyBmYWxzZSBdIiwKLSAgICAgICAgIlsgTmFOIF0i
LAotICAgICAgICAiWyBudWxsIF0iLAotICAgICAgICAiWyB7fSBdIiwKLSAgICAgICAgIlsgZnVu
Y3Rpb24gKCkge30gXSIsCi0gICAgICAgICJbIC9yZWdleC8gXSIsCi0gICAgICAgICJbIHNlbGYg
XSIsCi0gICAgICAgICJbIHNlbGYuZG9jdW1lbnQgXSIsCi0gICAgICAgICJbIHNlbGYuZG9jdW1l
bnQuYm9keSBdIiwKLSAgICAgICAgImN5Y2xpY19hcnJheSIsCi0gICAgICAgICJjeWNsaWNfYXJy
YXkyIiwKLSAgICAgICAgImN5Y2xpY19hcnJheTMiLAotICAgICAgICAiY3ljbGljX2FycmF5NCIs
Ci0gICAgICAgICJBcnJheSgxMDAwKSIgLy8gc3BhcnNlCi0gICAgXTsKLQotICAgIGludmFsaWRL
ZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSkgewotICAgICAgICBkZWJ1ZygidGVzdGluZyBpbnZh
bGlkIGFycmF5IGtleTogIiArIGtleSk7Ci0gICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24o
InN0b3JlLnB1dCgndmFsdWUnLCAiICsga2V5ICsgIik7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9u
LkRBVEFfRVJSIik7Ci0gICAgICAgIGRlYnVnKCIiKTsKLSAgICB9KTsKLQotICAgIHRlc3REZXB0
aExpbWl0cygpOwotfQotCi1mdW5jdGlvbiBtYWtlQXJyYXlPZkRlcHRoKG4pCi17Ci0gICAgdmFy
IGFycmF5ID0gW107Ci0gICAgd2hpbGUgKC0tbikgewotICAgICAgICBhcnJheSA9IFthcnJheV07
Ci0gICAgfQotICAgIHJldHVybiBhcnJheTsKLX0KLQotZnVuY3Rpb24gdGVzdERlcHRoTGltaXRz
KCkKLXsKLSAgICBzaG91bGRCZSgiaW5kZXhlZERCLmNtcChtYWtlQXJyYXlPZkRlcHRoKDI1KSwg
MCkiLCAiMSIpOwotICAgIHNob3VsZEJlKCJpbmRleGVkREIuY21wKG1ha2VBcnJheU9mRGVwdGgo
MjUwKSwgMCkiLCAiMSIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4ZWREQi5j
bXAobWFrZUFycmF5T2ZEZXB0aCgyNTAwKSwgMCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFU
QV9FUlIiKTsKLSAgICBkZWJ1ZygiIik7Ci0KLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotdGVz
dCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMva2V5LXR5cGUtYXJyYXku
anMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXktdHlwZS1pbmZpbml0eS5odG1sIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5LXR5cGUtaW5maW5pdHkuaHRtbAppbmRleCBkMzk2
NGI4OGNhZWFlZDU3MTk2MmFjNjI3MTg0ZjYxY2NhY2ZiM2NjLi4wNTA3NWFjMTY5ZjlkODY5YWFi
NDg1MzczZmRiM2Y4NjQyYTE1MmRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9rZXktdHlwZS1pbmZpbml0eS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2tleS10eXBlLWluZmluaXR5Lmh0bWwKQEAgLTEsNjIgKzEsMTAgQEAKLTwhRE9D
VFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2Ny
aXB0aW9uKCJUZXN0IEluZGV4ZWREQiBrZXkgdHlwZXMiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17
Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9u
LnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2Vzcygp
Ci17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0ZXN0R3JvdXAxOwotICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXAxKCkK
LXsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBl
dmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJyk7Iik7Ci0gICAgZGVidWcoInRl
c3Qga2V5IGFzIGluZmluaXR5Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5hZGQoW10sIEluZmluaXR5KTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IHRlc3RHcm91cDI7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDIoKQotewotICAgIGRlYnVnKCJ0ZXN0IGtl
eSBhcyBuZWdhdGl2ZSBpbmZpbml0eSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKFtdLCAtSW5maW5pdHkpOyIpOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gdGVzdEdyb3VwMzsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gdGVzdEdyb3VwMygpCi17Ci0gICAgZmluaXNoSlNU
ZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMva2V5LXR5cGUtaW5maW5pdHkuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWJh
c2ljcy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1iYXNpY3Mu
aHRtbAppbmRleCBhNjZkMmNkODdkYzJlYTM4MTA1YTZiNTI5ZDM0MTZkMTc2YWE5YzMzLi43MDRj
Y2M5MmM1NDRkZTIyZTViMTkyZjRjZjg3NTMzYjliNjQxYjc4IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWJhc2ljcy5odG1sCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtYmFzaWNzLmh0bWwKQEAgLTEsMTAxICsxLDEw
IEBACi08IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0
PgotCi1kZXNjcmlwdGlvbigiVGVzdCBmb3IgdmFsaWQgYW5kIGludmFsaWQga2V5cGF0aHMiKTsK
LQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICBu
YW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0
IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFt
ZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVu
Y3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50
YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRi
LnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdGVzdFZhbGlkS2V5
UGF0aHM7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19
Ci0KLWZ1bmN0aW9uIHRlc3RWYWxpZEtleVBhdGhzKCkKLXsKLSAgICBkZWxldGVBbGxPYmplY3RT
dG9yZXMoZGIpOwotCi0gICAgdGVzdEtleVBhdGhzID0gW251bGwsIHVuZGVmaW5lZCwgJyddOwot
ICAgIHRlc3RLZXlQYXRocy5mb3JFYWNoKGZ1bmN0aW9uIChrZXlQYXRoKSB7Ci0gICAgICAgIGds
b2JhbEtleVBhdGggPSBrZXlQYXRoOwotICAgICAgICBkZWJ1ZygiZ2xvYmFsS2V5UGF0aCA9ICci
ICsgZ2xvYmFsS2V5UGF0aCArICInIik7Ci0gICAgICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9i
amVjdFN0b3JlKCduYW1lJywge2tleVBhdGg6IGdsb2JhbEtleVBhdGh9KSIpOwotICAgICAgICBk
ZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotICAgIH0pOwotCi0gICAgdGVzdEtleVBhdGhzID0g
Wydmb28nLCAnZm9vLmJhci5iYXonXTsKLSAgICB0ZXN0S2V5UGF0aHMuZm9yRWFjaChmdW5jdGlv
biAoa2V5UGF0aCkgewotICAgICAgICBnbG9iYWxLZXlQYXRoID0ga2V5UGF0aDsKLSAgICAgICAg
ZGVidWcoImdsb2JhbEtleVBhdGggPSAnIiArIGdsb2JhbEtleVBhdGggKyAiJyIpOwotICAgICAg
ICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScsIHtrZXlQYXRoOiBnbG9i
YWxLZXlQYXRofSkiKTsKLSAgICAgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLSAgICB9
KTsKLQotICAgIHRlc3RLZXlQYXRocyA9IFtudWxsLCB1bmRlZmluZWQsICcnLCAnZm9vJywgJ2Zv
by5iYXIuYmF6J107Ci0gICAgdGVzdEtleVBhdGhzLmZvckVhY2goZnVuY3Rpb24gKGtleVBhdGgp
IHsKLSAgICAgICAgZ2xvYmFsS2V5UGF0aCA9IGtleVBhdGg7Ci0gICAgICAgIGRlYnVnKCJnbG9i
YWxLZXlQYXRoID0gJyIgKyBnbG9iYWxLZXlQYXRoICsgIiciKTsKLSAgICAgICAgc3RvcmUgPSBl
dmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwot
ICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnbmFtZScsIGdsb2JhbEtleVBh
dGgpIik7Ci0gICAgICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0gICAgfSk7Ci0KLSAg
ICB0ZXN0SW52YWxpZEtleVBhdGhzKCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RJbnZhbGlkS2V5UGF0
aHMoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICB0ZXN0S2V5UGF0
aHMgPSBbJ1tdJywgJ1siZm9vIl0nLCAnWyJmb28iLCAiYmFyIl0nLCAnWyIiLCAiIl0nLCAnWzEu
MCwgMi4wXScsICdbWyJmb28iXV0nLCAnWyJmb28iLCBbImJhciJdXSddOwotICAgIHRlc3RLZXlQ
YXRocy5mb3JFYWNoKGZ1bmN0aW9uIChrZXlQYXRoKSB7Ci0gICAgICAgIGdsb2JhbEtleVBhdGgg
PSBrZXlQYXRoOwotICAgICAgICBkZWJ1ZygiZ2xvYmFsS2V5UGF0aCA9ICciICsgZ2xvYmFsS2V5
UGF0aCArICInIik7Ci0gICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLmNyZWF0ZU9i
amVjdFN0b3JlKCduYW1lJywge2tleVBhdGg6IGdsb2JhbEtleVBhdGh9KSIsICJJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5OT05fVFJBTlNJRU5UX0VSUiIpOwotICAgICAgICBkZWxldGVBbGxPYmplY3RT
dG9yZXMoZGIpOwotICAgIH0pOwotCi0gICAgdGVzdEtleVBhdGhzID0gWycgJywgJ2ZvbyAnLCAn
Zm9vIGJhcicsICdmb28uIGJhcicsICdmb28gLmJhcicsICdmb28uLmJhcicsICcrZm9vJywgJ2Zv
byUnXTsKLSAgICB0ZXN0S2V5UGF0aHMuZm9yRWFjaChmdW5jdGlvbiAoa2V5UGF0aCkgewotICAg
ICAgICBnbG9iYWxLZXlQYXRoID0ga2V5UGF0aDsKLSAgICAgICAgZGVidWcoImdsb2JhbEtleVBh
dGggPSAnIiArIGdsb2JhbEtleVBhdGggKyAiJyIpOwotICAgICAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScsIHtrZXlQYXRoOiBnbG9iYWxLZXlQ
YXRofSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9OX1RSQU5TSUVOVF9FUlIiKTsKLSAgICAg
ICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLSAgICB9KTsKLQotICAgIHRlc3RLZXlQYXRo
cyA9IFsnICcsICdmb28gJywgJ2ZvbyBiYXInLCAnZm9vLiBiYXInLCAnZm9vIC5iYXInLCAnZm9v
Li5iYXInLCAnK2ZvbycsICdmb28lJ107Ci0gICAgdGVzdEtleVBhdGhzLmZvckVhY2goZnVuY3Rp
b24gKGtleVBhdGgpIHsKLSAgICAgICAgZ2xvYmFsS2V5UGF0aCA9IGtleVBhdGg7Ci0gICAgICAg
IGRlYnVnKCJnbG9iYWxLZXlQYXRoID0gJyIgKyBnbG9iYWxLZXlQYXRoICsgIiciKTsKLSAgICAg
ICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9y
ZU5hbWUnKSIpOwotICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5jcmVhdGVJ
bmRleCgnbmFtZScsIGdsb2JhbEtleVBhdGgpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PTl9U
UkFOU0lFTlRfRVJSIik7Ci0gICAgICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0gICAg
fSk7Ci0KLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9rZXlwYXRoLWJhc2ljcy5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2tleXBhdGgtZWRnZXMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2tleXBhdGgtZWRnZXMuaHRtbAppbmRleCA0NjhmNDAyYjFhNzVkZDc4OGNiMGZmMDc0YmUwNDI2
ZmMwNGNhMWUxLi5mZjlkYWRkMjQ0OGQ1YzMyNWI5M2RlYWIzYTc4OGEyOTZlMjQ1ZTIwIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWVkZ2VzLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1lZGdlcy5odG1sCkBA
IC0xLDExOSArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlw
dCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxi
b2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGtleVBhdGggZWRn
ZSBjYXNlcyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhl
cygpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFz
ZSgna2V5cGF0aC1lZGdlcycpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7Ci0gICAg
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbigna2V5cGF0aC1lZGdlcycp
Iik7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
ICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIH07Ci19Ci0KLWZ1
bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIm9wZW5T
dWNjZXNzKCk6Iik7Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24o
JzEnKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewotICAgICAgICB0cmFuc2FjdGlv
biA9IHJlcXVlc3QucmVzdWx0OwotICAgICAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBl
Y3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0
b3JlKCdzdG9yZS13aXRoLXBhdGgnLCB7a2V5UGF0aDogJ2Zvbyd9KSIpOwotICAgICAgICBldmFs
QW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUtd2l0aC1wYXRoLWFuZC1nZW5lcmF0
b3InLCB7a2V5UGF0aDogJ2ZvbycsIGF1dG9JbmNyZW1lbnQ6IHRydWV9KSIpOwotICAgICAgICB0
cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gdGVzdEtleVBhdGhzOwotICAgIH07Ci19Ci0KLWZ1bmN0
aW9uIHRlc3RLZXlQYXRocygpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJ0ZXN0S2V5
UGF0aHMoKToiKTsKLQotICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24g
PSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlLXdpdGgtcGF0aCddLCBJREJUcmFuc2FjdGlvbi5SRUFE
X1dSSVRFKSIpOwotICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5v
YmplY3RTdG9yZSgnc3RvcmUtd2l0aC1wYXRoJykiKTsKLQotICAgIGRlYnVnKCIiKTsKLSAgICBk
ZWJ1ZygiS2V5IHBhdGggZG9lc24ndCByZXNvbHZlIHRvIGEgdmFsdWU7IHNob3VsZCB5aWVsZCBu
dWxsLCBzaG91bGQgdGhyb3cgREFUQV9FUlIiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJzdG9yZS5wdXQobnVsbCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLQot
ICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiS2V5IHBhdGggZG9lc24ndCByZXNvbHZlIHRvIGEg
dmFsdWU7IHNob3VsZCB5aWVsZCBudWxsLCBzaG91bGQgdGhyb3cgREFUQV9FUlIiKTsKLSAgICBl
dmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5wdXQoe30pIiwgIklEQkRhdGFiYXNlRXhjZXB0
aW9uLkRBVEFfRVJSIik7Ci0KLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIktleSBwYXRoIHJl
c29sdmVzIHRvIGEgdmFsdWUgdGhhdCBpcyBpbnZhbGlkIGtleTsgc2hvdWxkIHlpZWxkICdpbnZh
bGlkJyBrZXksIHNob3VsZCB0aHJvdyBEQVRBX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oInN0b3JlLnB1dCh7Zm9vOiBudWxsfSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFU
QV9FUlIiKTsKLQotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiS2V5IHBhdGggcmVzb2x2ZXMg
dG8gYSB2YWx1ZSB0aGF0IGlzIHZhbGlkIGtleTsgc2hvdWxkIHlpZWxkICdzdHJpbmcnIGtleSwg
c2hvdWxkIHN1Y2NlZWQiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUucHV0KHtm
b286ICd6b28nfSkiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgdGVz
dFBhc3NlZCgic3RvcmUucHV0IHN1Y2NlZWRlZCIpOwotICAgIH07Ci0KLSAgICB0cmFuc2FjdGlv
bi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnNhY3Rpb24ub25j
b21wbGV0ZSA9IHRlc3RLZXlQYXRoc0FuZEdlbmVyYXRvcjsKLX0KLQotZnVuY3Rpb24gdGVzdEtl
eVBhdGhzQW5kR2VuZXJhdG9yKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInRlc3RL
ZXlQYXRoc0FuZEdlbmVyYXRvcigpOiIpOwotCi0gICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9n
KCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUtd2l0aC1wYXRoLWFuZC1nZW5l
cmF0b3InXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICBzdG9yZSA9IGV2YWxB
bmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlLXdpdGgtcGF0aC1h
bmQtZ2VuZXJhdG9yJykiKTsKLQotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiS2V5IHBhdGgg
ZG9lc24ndCByZXNvbHZlIHRvIGEgdmFsdWU7IHNob3VsZCB5aWVsZCBudWxsIGJ1dCBpbnNlcnRp
b24gd291bGQgZmFpbCwgc28gcHV0IHJlcXVlc3Qgc2hvdWxkIHJhaXNlIGV4Y2VwdGlvbiIpOwot
ICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLnB1dChudWxsKSIsICJJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotCi0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJLZXkg
cGF0aCBkb2Vzbid0IHJlc29sdmUgdG8gYSB2YWx1ZTsgc2hvdWxkIHlpZWxkIG51bGwgYnV0IGlu
c2VydGlvbiB3b3VsZCBmYWlsLCBzbyBwdXQgcmVxdWVzdCBzaG91bGQgcmFpc2UgZXhjZXB0aW9u
Iik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KCdzdHJpbmcnKSIsICJJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotCi0gICAgZGVidWcoIiIpOwotICAgIGRl
YnVnKCJLZXkgcGF0aCBkb2Vzbid0IHJlc29sdmUgdG8gYSB2YWx1ZTsgc2hvdWxkIHlpZWxkIG51
bGwsIGtleSBzaG91bGQgYmUgZ2VuZXJhdGVkLCBwdXQgcmVxdWVzdCBzaG91bGQgc3VjY2VlZCIp
OwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5wdXQoe30pIik7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHRlc3RQYXNzZWQoInN0b3JlLnB1dCBzdWNjZWVk
ZWQiKTsKLQotICAgICAgICBkZWJ1ZygiIik7Ci0gICAgICAgIGRlYnVnKCJLZXkgcGF0aCByZXNv
bHZlcyB0byBhIHZhbHVlIHRoYXQgaXMgaW52YWxpZCBrZXk7IHNob3VsZCB5aWVsZCAnaW52YWxp
ZCcga2V5LCBzaG91bGQgdGhyb3cgREFUQV9FUlIiKTsKLSAgICAgICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigic3RvcmUucHV0KHtmb286IG51bGx9KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5E
QVRBX0VSUiIpOwotCi0gICAgICAgIGRlYnVnKCIiKTsKLSAgICAgICAgZGVidWcoIktleSBwYXRo
IHJlc29sdmVzIHRvIGEgdmFsdWUgdGhhdCBpcyB2YWxpZCBrZXk7IHNob3VsZCB5aWVsZCAnc3Ry
aW5nJyBrZXksIHNob3VsZCBzdWNjZWVkIik7Ci0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJzdG9yZS5wdXQoe2ZvbzogJ3pvbyd9KSIpOwotICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbiAoKSB7Ci0gICAgICAgICAgICB0ZXN0UGFzc2VkKCJzdG9yZS5wdXQgc3VjY2VlZGVkIik7
Ci0KLSAgICAgICAgfTsKLSAgICB9OwotCi0gICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhw
ZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmaW5pc2hK
U1Rlc3Q7Ci19Ci0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2tleXBhdGgtZWRnZXMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWZldGNoLWtl
eS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1mZXRjaC1rZXku
aHRtbAppbmRleCBjMmM0YTQ4MjNjNTk3YjAyZTQwNGU4YTlkNjM2MmI2MDdhNGQ3MmZlLi5jOGM4
MDhlM2I2MzU0Y2RkZTY4MDQ0ZmUxM2Q1MzcwNDQ5ZjVkNDNjIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWZldGNoLWtleS5odG1sCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtZmV0Y2gta2V5Lmh0bWwKQEAgLTEsOTIg
KzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIu
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxz
Y3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBrZXlQYXRocyIpOwotCi1mdW5j
dGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9
IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRh
YmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRl
c2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9u
IG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRW
ZXJzaW9uKCcxJykiKTsKLQotICAgIHRlc3REYXRhID0gW3sgbmFtZTogInNpbXBsZSBpZGVudGlm
aWVyIiwKLSAgICAgICAgICAgICAgICAgIHZhbHVlOiB7aWQ6MTB9LAotICAgICAgICAgICAgICAg
ICAga2V5UGF0aDogImlkIiwKLSAgICAgICAgICAgICAgICAgIGtleTogMTAgfSwKLSAgICAgICAg
ICAgICAgICB7IG5hbWU6ICJzaW1wbGUgaWRlbnRpZmllcnMiLAotICAgICAgICAgICAgICAgICAg
dmFsdWU6IHtpZDE6MTAsIGlkMjoyMH0sCi0gICAgICAgICAgICAgICAgICBrZXlQYXRoOiAiaWQx
IiwKLSAgICAgICAgICAgICAgICAgIGtleTogMTAgfSwKLSAgICAgICAgICAgICAgICB7IG5hbWU6
ICJuZXN0ZWQgaWRlbnRpZmllcnMiLAotICAgICAgICAgICAgICAgICAgdmFsdWU6IHtvdXRlcjp7
aW5uZXI6MTB9fSwKLSAgICAgICAgICAgICAgICAgIGtleVBhdGg6ICJvdXRlci5pbm5lciIsCi0g
ICAgICAgICAgICAgICAgICBrZXk6IDEwIH0sCi0gICAgICAgICAgICAgICAgeyBuYW1lOiAibmVz
dGVkIGlkZW50aWZpZXJzIHdpdGggZGlzdHJhY3Rpb25zIiwKLSAgICAgICAgICAgICAgICAgIHZh
bHVlOiB7b3V0ZXI6e2lubmVyOjEwfSwgaW5uZXI6e291dGVyOjIwfX0sCi0gICAgICAgICAgICAg
ICAgICBrZXlQYXRoOiAib3V0ZXIuaW5uZXIiLAotICAgICAgICAgICAgICAgICAga2V5OiAxMCB9
LAotICAgIF07Ci0gICAgbmV4dFRvT3BlbiA9IDA7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBj
cmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVj
dFN0b3JlKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInRlc3RpbmcgIiArIHRlc3RE
YXRhW25leHRUb09wZW5dLm5hbWUpOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsK
LQotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVP
YmplY3RTdG9yZSh0ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1lLCB7a2V5UGF0aDogdGVzdERhdGFb
bmV4dFRvT3Blbl0ua2V5UGF0aH0pOyIpOwotICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coInJlc3Vs
dCA9IG9iamVjdFN0b3JlLmFkZCh0ZXN0RGF0YVtuZXh0VG9PcGVuXS52YWx1ZSk7Iik7Ci0gICAg
cmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXN1bHQub25z
dWNjZXNzID0gb3BlbkN1cnNvcjsKLX0KLQotZnVuY3Rpb24gb3BlbkN1cnNvcigpCi17Ci0gICAg
cmVzdWx0ID0gZXZhbEFuZExvZygicmVzdWx0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIp
OwotICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVz
dWx0Lm9uc3VjY2VzcyA9IGNoZWNrQ3Vyc29yOwotfQotCi1mdW5jdGlvbiBjaGVja0N1cnNvcigp
Ci17Ci0gICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dDsiKTsKLSAgICBpZiAoY3Vyc29yKSB7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5Iiwg
InRlc3REYXRhW25leHRUb09wZW5dLmtleSIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHRlc3RG
YWlsZWQoImN1cnNvciBpcyBudWxsIik7Ci0gICAgfQotICAgIGlmICgrK25leHRUb09wZW4gPCB0
ZXN0RGF0YS5sZW5ndGgpIHsKLSAgICAgICAgY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSgp
OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0KLX0KLQotCi10
ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9rZXlwYXRoLWZldGNo
LWtleS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleXJhbmdlLXJlcXVpcmVkLWFyZ3VtZW50
cy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cmFuZ2UtcmVxdWlyZWQt
YXJndW1lbnRzLmh0bWwKaW5kZXggODgxNWZmNDQ0MWZlNzQ1MTZiMDc4YjA0NzlmYzkwNzdlZmNm
MTYxOC4uMDViOTk3YWYxNDNmYmM4ZDE2ZjViMDYyNWZhMmI2YTUxOTM0NjZhNCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cmFuZ2UtcmVxdWlyZWQtYXJndW1l
bnRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIva2V5cmFuZ2UtcmVx
dWlyZWQtYXJndW1lbnRzLmh0bWwKQEAgLTEsMzEgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgog
PGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+
PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0
IEluZGV4ZWREQiBrZXlyYW5nZSByZXF1aXJlZCBhcmd1bWVudHMiKTsKLQotZnVuY3Rpb24gdGVz
dCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIHNob3VsZFRocm93KCJJ
REJLZXlSYW5nZS5vbmx5KCk7Iik7Ci0gICAgc2hvdWxkVGhyb3coIklEQktleVJhbmdlLmxvd2Vy
Qm91bmQoKTsiKTsKLSAgICBzaG91bGRUaHJvdygiSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgpOyIp
OwotICAgIHNob3VsZFRocm93KCJJREJLZXlSYW5nZS5ib3VuZCgxKTsiKTsKLSAgICBzaG91bGRU
aHJvdygiSURCS2V5UmFuZ2UuYm91bmQoKTsiKTsKLQotICAgIGZpbmlzaEpTVGVzdCgpOwotfQot
Ci0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2tleXJhbmdl
LXJlcXVpcmVkLWFyZ3VtZW50cy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2tleXJhbmdlLmh0
bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9rZXlyYW5nZS5odG1sCmluZGV4IDYz
OGQ1ZjM4YTY3OTQyMDQ3OGYzOGM2ODhhYmJiZWQxODU5NTQwOTUuLjlmZGMxY2JlZjEzN2I0NjBl
MDVmMTEyM2ZjZWYzZTJjMGY1Nzg4ZjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2tleXJhbmdlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIva2V5cmFuZ2UuaHRtbApAQCAtNCwxOTIgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNl
cy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNj
cmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBLZXlSYW5nZS4iKTsKLQotZnVuY3Rpb24gY2hlY2tT
aW5nbGVLZXlSYW5nZSh2YWx1ZSkKLXsKLSAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coIklEQktl
eVJhbmdlLm9ubHkoIiArIHZhbHVlICsgIikiKTsKLSAgICBzaG91bGRCZSgia2V5UmFuZ2UubG93
ZXIiLCAiIiArIHZhbHVlKTsKLSAgICBzaG91bGRCZSgia2V5UmFuZ2UudXBwZXIiLCAiIiArIHZh
bHVlKTsKLSAgICBzaG91bGRCZUZhbHNlKCJrZXlSYW5nZS5sb3dlck9wZW4iKTsKLSAgICBzaG91
bGRCZUZhbHNlKCJrZXlSYW5nZS51cHBlck9wZW4iKTsKLX0KLQotZnVuY3Rpb24gY2hlY2tMb3dl
ckJvdW5kS2V5UmFuZ2UodmFsdWUsIG9wZW4pCi17Ci0gICAga2V5UmFuZ2UgPSBldmFsQW5kTG9n
KCJJREJLZXlSYW5nZS5sb3dlckJvdW5kKCIgKyB2YWx1ZSArICIsIiArIG9wZW4gKyAiKSIpOwot
ICAgIHNob3VsZEJlKCJrZXlSYW5nZS5sb3dlciIsICIiICsgdmFsdWUpOwotICAgIGlmIChvcGVu
ID09PSB1bmRlZmluZWQpCi0gICAgICAgIG9wZW4gPSBmYWxzZTsKLSAgICBzaG91bGRCZSgia2V5
UmFuZ2UubG93ZXJPcGVuIiwgIiIgKyBvcGVuKTsKLSAgICBzaG91bGRCZU51bGwoImtleVJhbmdl
LnVwcGVyIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgia2V5UmFuZ2UudXBwZXJPcGVuIik7Ci19Ci0K
LWZ1bmN0aW9uIGNoZWNrVXBwZXJCb3VuZEtleVJhbmdlKHZhbHVlLCBvcGVuKQotewotICAgIGtl
eVJhbmdlID0gZXZhbEFuZExvZygiSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgiICsgdmFsdWUgKyAi
LCIgKyBvcGVuICsgIikiKTsKLSAgICBzaG91bGRCZSgia2V5UmFuZ2UudXBwZXIiLCAiIiArIHZh
bHVlKTsKLSAgICBpZiAob3BlbiA9PT0gdW5kZWZpbmVkKQotICAgICAgICBvcGVuID0gZmFsc2U7
Ci0gICAgc2hvdWxkQmUoImtleVJhbmdlLnVwcGVyT3BlbiIsICIiICsgb3Blbik7Ci0gICAgc2hv
dWxkQmVOdWxsKCJrZXlSYW5nZS5sb3dlciIpOwotICAgIHNob3VsZEJlRmFsc2UoImtleVJhbmdl
Lmxvd2VyT3BlbiIpOwotfQotCi1mdW5jdGlvbiBjaGVja0JvdW5kS2V5UmFuZ2UobG93ZXIsIHVw
cGVyLCBsb3dlck9wZW4sIHVwcGVyT3BlbikKLXsKLSAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2co
IklEQktleVJhbmdlLmJvdW5kKCIgKyBsb3dlciArICIsIiArIHVwcGVyICsgIiwgIiArIGxvd2Vy
T3BlbiArICIsICIgKyB1cHBlck9wZW4gKyAiKSIpOwotICAgIHNob3VsZEJlKCJrZXlSYW5nZS5s
b3dlciIsICIiICsgbG93ZXIpOwotICAgIHNob3VsZEJlKCJrZXlSYW5nZS51cHBlciIsICIiICsg
dXBwZXIpOwotICAgIGlmIChsb3dlck9wZW4gPT09IHVuZGVmaW5lZCkKLSAgICAgICAgbG93ZXJP
cGVuID0gZmFsc2U7Ci0gICAgaWYgKHVwcGVyT3BlbiA9PT0gdW5kZWZpbmVkKQotICAgICAgICB1
cHBlck9wZW4gPSBmYWxzZTsKLSAgICBzaG91bGRCZSgia2V5UmFuZ2UubG93ZXJPcGVuIiwgIiIg
KyBsb3dlck9wZW4pOwotICAgIHNob3VsZEJlKCJrZXlSYW5nZS51cHBlck9wZW4iLCAiIiArIHVw
cGVyT3Blbik7Ci19Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZp
eGVzKCk7Ci0gICAgc2hvdWxkQmVGYWxzZSgiJ2xvd2VyJyBpbiBJREJLZXlSYW5nZSIpOwotICAg
IHNob3VsZEJlRmFsc2UoIid1cHBlcicgaW4gSURCS2V5UmFuZ2UiKTsKLSAgICBzaG91bGRCZUZh
bHNlKCInbG93ZXJPcGVuJyBpbiBJREJLZXlSYW5nZSIpOwotICAgIHNob3VsZEJlRmFsc2UoIid1
cHBlck9wZW4nIGluIElEQktleVJhbmdlIik7Ci0gICAgc2hvdWxkQmVUcnVlKCInb25seScgaW4g
SURCS2V5UmFuZ2UiKTsKLSAgICBzaG91bGRCZVRydWUoIidsb3dlckJvdW5kJyBpbiBJREJLZXlS
YW5nZSIpOwotICAgIHNob3VsZEJlVHJ1ZSgiJ3VwcGVyQm91bmQnIGluIElEQktleVJhbmdlIik7
Ci0gICAgc2hvdWxkQmVUcnVlKCInYm91bmQnIGluIElEQktleVJhbmdlIik7Ci0KLSAgICBkZWJ1
ZygiIik7Ci0KLSAgICB2YXIgaW5zdGFuY2UgPSBldmFsQW5kTG9nKCJpbnN0YW5jZSA9IElEQktl
eVJhbmdlLm9ubHkoMSkiKTsKLSAgICBzaG91bGRCZVRydWUoIidsb3dlcicgaW4gaW5zdGFuY2Ui
KTsKLSAgICBzaG91bGRCZVRydWUoIid1cHBlcicgaW4gaW5zdGFuY2UiKTsKLSAgICBzaG91bGRC
ZVRydWUoIidsb3dlck9wZW4nIGluIGluc3RhbmNlIik7Ci0gICAgc2hvdWxkQmVUcnVlKCIndXBw
ZXJPcGVuJyBpbiBpbnN0YW5jZSIpOwotICAgIHNob3VsZEJlRmFsc2UoIidvbmx5JyBpbiBpbnN0
YW5jZSIpOwotICAgIHNob3VsZEJlRmFsc2UoIidsb3dlckJvdW5kJyBpbiBpbnN0YW5jZSIpOwot
ICAgIHNob3VsZEJlRmFsc2UoIid1cHBlckJvdW5kJyBpbiBpbnN0YW5jZSIpOwotICAgIHNob3Vs
ZEJlRmFsc2UoIidib3VuZCcgaW4gaW5zdGFuY2UiKTsKLQotICAgIGRlYnVnKCIiKTsKLQotICAg
IGNoZWNrU2luZ2xlS2V5UmFuZ2UoMSk7Ci0gICAgY2hlY2tTaW5nbGVLZXlSYW5nZSgzLjE0KTsK
LSAgICBjaGVja1NpbmdsZUtleVJhbmdlKCInYSciKTsKLQotICAgIGNoZWNrTG93ZXJCb3VuZEtl
eVJhbmdlKDEwLCB0cnVlKTsKLSAgICBjaGVja0xvd2VyQm91bmRLZXlSYW5nZSgxMSwgZmFsc2Up
OwotICAgIGNoZWNrTG93ZXJCb3VuZEtleVJhbmdlKDEyKTsKLSAgICBjaGVja0xvd2VyQm91bmRL
ZXlSYW5nZSgxMC4xLCB0cnVlKTsKLSAgICBjaGVja0xvd2VyQm91bmRLZXlSYW5nZSgxMS4yLCBm
YWxzZSk7Ci0gICAgY2hlY2tMb3dlckJvdW5kS2V5UmFuZ2UoMTIuMyk7Ci0gICAgY2hlY2tMb3dl
ckJvdW5kS2V5UmFuZ2UoIidhYSciLCB0cnVlKTsKLSAgICBjaGVja0xvd2VyQm91bmRLZXlSYW5n
ZSgiJ2FiJyIsIGZhbHNlKTsKLSAgICBjaGVja0xvd2VyQm91bmRLZXlSYW5nZSgiJ2FjJyIpOwot
Ci0gICAgY2hlY2tVcHBlckJvdW5kS2V5UmFuZ2UoMjAsIHRydWUpOwotICAgIGNoZWNrVXBwZXJC
b3VuZEtleVJhbmdlKDIxLCBmYWxzZSk7Ci0gICAgY2hlY2tVcHBlckJvdW5kS2V5UmFuZ2UoMjIp
OwotICAgIGNoZWNrVXBwZXJCb3VuZEtleVJhbmdlKDIwLjIsIHRydWUpOwotICAgIGNoZWNrVXBw
ZXJCb3VuZEtleVJhbmdlKDIxLjMsIGZhbHNlKTsKLSAgICBjaGVja1VwcGVyQm91bmRLZXlSYW5n
ZSgyMi40KTsKLSAgICBjaGVja1VwcGVyQm91bmRLZXlSYW5nZSgiJ2JhJyIsIHRydWUpOwotICAg
IGNoZWNrVXBwZXJCb3VuZEtleVJhbmdlKCInYmInIiwgZmFsc2UpOwotICAgIGNoZWNrVXBwZXJC
b3VuZEtleVJhbmdlKCInYmMnIik7Ci0KLSAgICBjaGVja0JvdW5kS2V5UmFuZ2UoMzAsIDQwKTsK
LSAgICBjaGVja0JvdW5kS2V5UmFuZ2UoMzEsIDQxLCBmYWxzZSwgZmFsc2UpOwotICAgIGNoZWNr
Qm91bmRLZXlSYW5nZSgzMiwgNDIsIGZhbHNlLCB0cnVlKTsKLSAgICBjaGVja0JvdW5kS2V5UmFu
Z2UoMzMsIDQzLCB0cnVlLCBmYWxzZSk7Ci0gICAgY2hlY2tCb3VuZEtleVJhbmdlKDM0LCA0NCwg
dHJ1ZSwgdHJ1ZSk7Ci0KLSAgICBjaGVja0JvdW5kS2V5UmFuZ2UoMzAuMSwgNDAuMik7Ci0gICAg
Y2hlY2tCb3VuZEtleVJhbmdlKDMxLjMsIDQxLjQsIGZhbHNlLCBmYWxzZSk7Ci0gICAgY2hlY2tC
b3VuZEtleVJhbmdlKDMyLjUsIDQyLjYsIGZhbHNlLCB0cnVlKTsKLSAgICBjaGVja0JvdW5kS2V5
UmFuZ2UoMzMuNywgNDMuOCwgdHJ1ZSwgZmFsc2UpOwotICAgIGNoZWNrQm91bmRLZXlSYW5nZSgz
NC45LCA0NC4wLCB0cnVlLCB0cnVlKTsKLQotICAgIGNoZWNrQm91bmRLZXlSYW5nZSgiJ2FhYSci
LCAiJ2FiYSciLCBmYWxzZSwgZmFsc2UpOwotICAgIGNoZWNrQm91bmRLZXlSYW5nZSgiJ2FhYici
LCAiJ2FiYiciKTsKLSAgICBjaGVja0JvdW5kS2V5UmFuZ2UoIidhYWMnIiwgIidhYmMnIiwgZmFs
c2UsIGZhbHNlKTsKLSAgICBjaGVja0JvdW5kS2V5UmFuZ2UoIidhYWQnIiwgIidhYmQnIiwgZmFs
c2UsIHRydWUpOwotICAgIGNoZWNrQm91bmRLZXlSYW5nZSgiJ2FhZSciLCAiJ2FiZSciLCB0cnVl
LCBmYWxzZSk7Ci0gICAgY2hlY2tCb3VuZEtleVJhbmdlKCInYWFmJyIsICInYWJmJyIsIHRydWUs
IHRydWUpOwotCi0gICAgdHJ5IHsKLSAgICAgICAgZGVidWcoIlBhc3NpbmcgYW4gaW52YWxpZCBr
ZXkgaW50byBvbmx5KHt9KSIpOwotICAgICAgICBJREJLZXlSYW5nZS5vbmx5KHt9KTsKLSAgICAg
ICAgdGVzdEZhaWxlZCgiTm8gZXhjZXB0aW9uIHRocm93biIpOwotICAgIH0gY2F0Y2ggKGUpIHsK
LSAgICAgICAgdGVzdFBhc3NlZCgiQ2F1Z2h0IGV4Y2VwdGlvbjogIiArIGUudG9TdHJpbmcoKSk7
Ci0gICAgfQotCi0gICAgdHJ5IHsKLSAgICAgICAgZGVidWcoIlBhc3NpbmcgYW4gaW52YWxpZCBr
ZXkgaW50byB1cHBlckJvdW5kKHt9KSIpOwotICAgICAgICBJREJLZXlSYW5nZS51cHBlckJvdW5k
KHt9KTsKLSAgICAgICAgdGVzdEZhaWxlZCgiTm8gZXhjZXB0aW9uIHRocm93biIpOwotICAgIH0g
Y2F0Y2ggKGUpIHsKLSAgICAgICAgdGVzdFBhc3NlZCgiQ2F1Z2h0IGV4Y2VwdGlvbjogIiArIGUu
dG9TdHJpbmcoKSk7Ci0gICAgfQotIAotICAgIHRyeSB7Ci0gICAgICAgIGRlYnVnKCJQYXNzaW5n
IGFuIGludmFsaWQga2V5IGludG8gbG93ZXJCb3VuZCh7fSkiKTsKLSAgICAgICAgSURCS2V5UmFu
Z2UubG93ZXJCb3VuZCh7fSk7Ci0gICAgICAgIHRlc3RGYWlsZWQoIk5vIGV4Y2VwdGlvbiB0aHJv
d24iKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIHRlc3RQYXNzZWQoIkNhdWdodCBleGNl
cHRpb246ICIgKyBlLnRvU3RyaW5nKCkpOwotICAgIH0KLQotICAgIHRyeSB7Ci0gICAgICAgIGRl
YnVnKCJQYXNzaW5nIGFuIGludmFsaWQga2V5IGludG8gYm91bmQobnVsbCwge30pIik7Ci0gICAg
ICAgIElEQktleVJhbmdlLmJvdW5kKG51bGwsIHt9KTsKLSAgICAgICAgdGVzdEZhaWxlZCgiTm8g
ZXhjZXB0aW9uIHRocm93biIpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgdGVzdFBhc3Nl
ZCgiQ2F1Z2h0IGV4Y2VwdGlvbjogIiArIGUudG9TdHJpbmcoKSk7Ci0gICAgfQotCi0gICAgdHJ5
IHsKLSAgICAgICAgZGVidWcoIlBhc3NpbmcgYW4gaW52YWxpZCBrZXkgaW50byBib3VuZCh7fSxu
dWxsKSIpOwotICAgICAgICBJREJLZXlSYW5nZS5ib3VuZCh7fSwgbnVsbCk7Ci0gICAgICAgIHRl
c3RGYWlsZWQoIk5vIGV4Y2VwdGlvbiB0aHJvd24iKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAg
ICAgIHRlc3RQYXNzZWQoIkNhdWdodCBleGNlcHRpb246ICIgKyBlLnRvU3RyaW5nKCkpOwotICAg
IH0KLQotICAgIHRyeSB7Ci0gICAgICAgIGRlYnVnKCJQYXNzaW5nIGFuIGludmFsaWQga2V5IGlu
dG8gYm91bmQoe30sIHt9KSIpOwotICAgICAgICBJREJLZXlSYW5nZS5ib3VuZCh7fSwge30pOwot
ICAgICAgICB0ZXN0RmFpbGVkKCJObyBleGNlcHRpb24gdGhyb3duIik7Ci0gICAgfSBjYXRjaCAo
ZSkgewotICAgICAgICB0ZXN0UGFzc2VkKCJDYXVnaHQgZXhjZXB0aW9uOiAiICsgZS50b1N0cmlu
ZygpKTsKLSAgICB9Ci0KLSAgICBkZWJ1ZygiTG93ZXIga2V5IGdyZWF0ZXIgdGhhbiBoaWdoZXIg
a2V5LCBib3VuZCg0LCAzKSIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIklEQktleVJh
bmdlLmJvdW5kKDQsIDMpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0KLSAg
ICBkZWJ1ZygiRXF1YWwga2V5cywgZWl0aGVyIG9mIHRoZSBib3VuZHMgaXMgb3BlbiwgYm91bmQo
NCwgNCwgdHJ1ZSwgZmFsc2UpIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiSURCS2V5
UmFuZ2UuYm91bmQoNCwgNCwgdHJ1ZSwgZmFsc2UpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRB
VEFfRVJSIik7Ci0KLSAgICBkZWJ1ZygiRXF1YWwga2V5cywgZWl0aGVyIG9mIHRoZSBib3VuZHMg
aXMgb3BlbiwgYm91bmQoNCwgNCwgZmFsc2UsIHRydWUpIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigiSURCS2V5UmFuZ2UuYm91bmQoNCwgNCwgZmFsc2UsIHRydWUpIiwgIklEQkRhdGFi
YXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0KLSAgICBkZWJ1ZygiRXF1YWwga2V5cywgZWl0aGVy
IG9mIHRoZSBib3VuZHMgaXMgb3BlbiwgYm91bmQoNCwgNCwgdHJ1ZSwgdHJ1ZSkiKTsKLSAgICBl
dmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJJREJLZXlSYW5nZS5ib3VuZCg0LCA0LCB0cnVlLCB0cnVl
KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotCi0gICAgZGVidWcoIkVxdWFs
IGtleXMsIG5vbmUgb2YgdGhlIGJvdW5kcyBpcyBvcGVuLCBib3VuZCg0LCA0LCBmYWxzZSwgZmFs
c2UpIik7Ci0gICAgSURCS2V5UmFuZ2UuYm91bmQoNCwgNCwgZmFsc2UsIGZhbHNlKTsKLX0KLQot
dGVzdCgpOwotCi1maW5pc2hKU1Rlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2tleXJhbmdlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbGlzdC1vcmRlcmluZy5o
dG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbGlzdC1vcmRlcmluZy5odG1sCmlu
ZGV4IDA3NDEyZjViNTNjYzQxNmUwOTlkYzIyZTk5MzFlZjE4ZjVmODAzZmUuLmI5ZDliMzU5MTk1
MzRiODZlMDVkZmY5NDJmZjZmODVlMzM2M2E1NTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2xpc3Qtb3JkZXJpbmcuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9saXN0LW9yZGVyaW5nLmh0bWwKQEAgLTQsOTIgKzQsNyBAQAogPHNjcmlw
dCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08
aW5wdXQgdHlwZT0iZmlsZSIgaWQ9ImZpbGVJbnB1dCIgbXVsdGlwbGU+PC9pbnB1dD4KLTxzY3Jp
cHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IHN0cmluZyBsaXN0IG9yZGVyaW5nIGluIEluZGV4ZWRE
Qi4iKTsKLQotdmFyIGV4cGVjdGVkX29yZGVyID0gWwotICAiIiwKLSAgIlx4MDAiLCAvLyAnTlVM
TCcgKFUrMDAwMCkKLSAgIjAiLAotICAiMSIsCi0gICJBIiwKLSAgIkIiLAotICAiYSIsCi0gICJi
IiwKLSAgIlx4N0YiLCAvLyAnREVMRVRFJyAoVSswMDdGKQotICAiXHhDMCIsIC8vICdMQVRJTiBD
QVBJVEFMIExFVFRFUiBBIFdJVEggR1JBVkUnIChVKzAwQzApCi0gICJceEMxIiwgLy8gJ0xBVElO
IENBUElUQUwgTEVUVEVSIEEgV0lUSCBBQ1VURScgKFUrMDBDMSkKLSAgIlx4RTAiLCAvLyAnTEFU
SU4gU01BTEwgTEVUVEVSIEEgV0lUSCBHUkFWRScgKFUrMDBFMCkKLSAgIlx4RTEiLCAvLyAnTEFU
SU4gU01BTEwgTEVUVEVSIEEgV0lUSCBBQ1VURScgKFUrMDBFMSkKLSAgIlx4RkYiLCAvLyAnTEFU
SU4gU01BTEwgTEVUVEVSIFkgV0lUSCBESUFFUkVTSVMnIChVKzAwRkYpCi0gICJcdTAxMDAiLCAv
LyAnTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIE1BQ1JPTicgKFUrMDEwMCkKLSAgIlx1MTAw
MCIsIC8vICdNWUFOTUFSIExFVFRFUiBLQScgKFUrMTAwMCkKLSAgIlx1RDgzNFx1REQxRSIsIC8v
ICdNVVNJQ0FMIFNZTUJPTCBHLUNMRUYnIChVKzFEMTFFKSwgVVRGLTE2IHN1cnJvZ2F0ZSBwYWly
cwotICAiXHVGRkZEIiAvLyAnUkVQTEFDRU1FTlQgQ0hBUkFDVEVSJyAoVStGRkZEKQotXTsKLXZh
ciBpLCB0bXAsIHBlcm11dGVkX29yZGVyID0gZXhwZWN0ZWRfb3JkZXIuc2xpY2UoKTsgcGVybXV0
ZWRfb3JkZXIucmV2ZXJzZSgpOwotZm9yIChpID0gMDsgaSA8IHBlcm11dGVkX29yZGVyLmxlbmd0
aCAtIDI7IGkgKz0gMikgewotICAgIHRtcCA9IHBlcm11dGVkX29yZGVyW2ldOwotICAgIHBlcm11
dGVkX29yZGVyW2ldID0gcGVybXV0ZWRfb3JkZXJbaSArIDFdOwotICAgIHBlcm11dGVkX29yZGVy
W2kgKyAxXSA9IHRtcDsKLX0KLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9y
UHJlZml4ZXMoKTsKLSAgICBkZWJ1ZygiY2hlY2sgdGhhdCB0aGUgZXhwZWN0ZWQgb3JkZXIgaXMg
dGhlIGNhbm9uaWNhbCBKUyBzb3J0IG9yZGVyOiIpOwotICAgIGV2YWxBbmRMb2coInNvcnRlZF9v
cmRlciA9IGV4cGVjdGVkX29yZGVyLnNsaWNlKCk7IHNvcnRlZF9vcmRlci5zb3J0KCkiKTsKLSAg
ICBzaG91bGRCZVRydWUoImFyZUFycmF5c0VxdWFsKHNvcnRlZF9vcmRlciwgZXhwZWN0ZWRfb3Jk
ZXIpIik7Ci0gICAgdGVzdFN0b3Jlc0FuZEluZGV4ZXMoKTsKLX0KLQotCi0KLWZ1bmN0aW9uIHRl
c3RTdG9yZXNBbmRJbmRleGVzKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInRlc3RT
dG9yZXNBbmRJbmRleGVzKCk6Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWRE
Qi5kZWxldGVEYXRhYmFzZSgnbGlzdC1vcmRlcmluZycpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbihlKSB7Ci0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbign
bGlzdC1vcmRlcmluZycpIik7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpIHsK
LSAgICAgICAgICAgIGV2YWxBbmRMb2coImRiID0gcmVxdWVzdC5yZXN1bHQiKTsKLSAgICAgICAg
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGIudmVyc2lvbiIsICIiKTsKLSAgICAgICAgICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICAgICAgICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICAgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgdHJhbnMg
PSByZXF1ZXN0LnJlc3VsdDsKLQotICAgICAgICAgICAgICAgIGRlYnVnKCIiKTsKLSAgICAgICAg
ICAgICAgICBkZWJ1ZygiT2JqZWN0IHN0b3JlczoiKTsKLSAgICAgICAgICAgICAgICBwZXJtdXRl
ZF9vcmRlci5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7Ci0gICAgICAgICAgICAgICAgICAgIGV2
YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCIgKyBKU09OLnN0cmluZ2lmeShuYW1lKSAr
IikiKTsKLSAgICAgICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgICAgIHNob3VsZEJlVHJ1
ZSgiYXJlQXJyYXlzRXF1YWwoZGIub2JqZWN0U3RvcmVOYW1lcywgZXhwZWN0ZWRfb3JkZXIpIik7
Ci0KLSAgICAgICAgICAgICAgICBkZWJ1ZygiIik7Ci0gICAgICAgICAgICAgICAgZGVidWcoIklu
ZGV4ZXM6Iik7Ci0gICAgICAgICAgICAgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7Ci0gICAgICAgICAgICAgICAgcGVybXV0ZWRf
b3JkZXIuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkgewotICAgICAgICAgICAgICAgICAgICBldmFs
QW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgiICsgSlNPTi5zdHJpbmdpZnkobmFtZSkgKyIsICdr
ZXlQYXRoJykiKTsKLSAgICAgICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgICAgIHNob3Vs
ZEJlVHJ1ZSgiYXJlQXJyYXlzRXF1YWwoc3RvcmUuaW5kZXhOYW1lcywgZXhwZWN0ZWRfb3JkZXIp
Iik7Ci0KLSAgICAgICAgICAgICAgICB0cmFucy5vbmNvbXBsZXRlID0gZmluaXNoSlNUZXN0Owot
ICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICB9OwotfQotCi10ZXN0KCk7Ci0KLTwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9saXN0LW9yZGVyaW5nLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9hZGQtdHdpY2UtZmFpbHVyZS5odG1sIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9hZGQtdHdpY2UtZmFpbHVyZS5odG1sCmluZGV4IGNk
ZDIxMmJjMzFiNWVjNGUzZDQ2ZmEzMzliNzhlOGNhMjcwOWFkYTcuLmNjMzkxM2RhZmIyYjhkNTkx
YTA1MmI4ZjU3NDgwM2FmOWUxMDU1MjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvYWRkLXR3aWNlLWZhaWx1cmUuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2FkZC10d2ljZS1mYWlsdXJlLmh0bWwKQEAgLTEs
NzAgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLQotICBvcmlnaW5hbCB0ZXN0OiBodHRw
Oi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90
ZXN0X2FkZF90d2ljZV9mYWlsdXJlLmh0bWwKLSAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0Ogot
ICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCi0g
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIK
LS0tPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2Ny
aXB0aW9uKCJUZXN0IEluZGV4ZWREQiBiZWhhdmlvciBhZGRpbmcgdGhlIHNhbWUgcHJvcGVydHkg
dHdpY2UiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMo
KTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9u
ID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVk
REIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9w
ZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJk
YiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBj
bGVhbkRhdGFiYXNlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotfQotCi1mdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKLXsKLSAgICBkZWxldGVBbGxPYmpl
Y3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9y
ZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nKTsiKTsKLSAgICBrZXkgPSBldmFsQW5kTG9n
KCJrZXkgPSAxMCIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0
U3RvcmUuYWRkKHt9LCBrZXkpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkRmlyc3RT
dWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
fQotCi1mdW5jdGlvbiBhZGRGaXJzdFN1Y2Nlc3MoKQotewotICAgIHNob3VsZEJlKCJyZXF1ZXN0
LnJlc3VsdCIsICJrZXkiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9i
amVjdFN0b3JlLmFkZCh7fSwga2V5KTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVuZXhw
ZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gYWRkU2Vjb25kRXhw
ZWN0ZWRFcnJvcjsKLX0KLQotZnVuY3Rpb24gYWRkU2Vjb25kRXhwZWN0ZWRFcnJvcigpCi17Ci0g
ICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5lcnJvckNvZGUiLCAiSURCRGF0YWJhc2VFeGNlcHRp
b24uQ09OU1RSQUlOVF9FUlIiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7
Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9hZGQtdHdpY2UtZmFpbHVyZS5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9hdXRvaW5jcmVtZW50LWluZGV4
ZXMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvYXV0b2luY3Jl
bWVudC1pbmRleGVzLmh0bWwKaW5kZXggMDlmZmVmYWRmY2ZjY2Y3YTFkNjU4NzYxZDg1YjU4Mzll
ODFiZjE3MC4uZDcyOWRlODdjZjg4OTJmZjk3YTE1ZmQyMGE1ZGE2MzliZGMzM2U0MCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9hdXRvaW5jcmVtZW50
LWluZGV4ZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L2F1dG9pbmNyZW1lbnQtaW5kZXhlcy5odG1sCkBAIC0xLDEwMCArMSwxMCBAQAotPCFET0NUWVBF
IGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96
aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfYXV0b0luY3JlbWVudF9pbmRl
eGVzLmh0bWw/Zm9yY2U9MQotICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Ci0gICAgIiBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KLSAgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgotLS0+CiA8aHRt
bD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpz
Ij48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRl
c3QgSW5kZXhlZERCIGluZGV4ZXMgYWdhaW5zdCBhdXRvaW5jcmVtZW50aW5nIGtleXMiKTsKLQot
ZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5h
bWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3Qg
RGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1l
LCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5j
dGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIu
c2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXR1cE9iamVjdFN0
b3JlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQot
Ci1mdW5jdGlvbiBzZXR1cE9iamVjdFN0b3JlKCkKLXsKLSAgICB0cmFucyA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQ7Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9iamVjdFN0
b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9v
JywgeyBrZXlQYXRoOiAnaWQnLCBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOyIpOwotICAgIGV2YWxB
bmRMb2coIm9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdmaXJzdCcsICdmaXJzdCcpOyIpOwotICAg
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdzZWNvbmQnLCAnc2Vjb25kJyk7
Iik7Ci0gICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ3RoaXJkJywgJ3Ro
aXJkJyk7Iik7Ci0gICAgZGF0YSA9IGV2YWxBbmRMb2coImRhdGEgPSB7IGZpcnN0OiAnZm9vJywg
c2Vjb25kOiAnZm9vJywgdGhpcmQ6ICdmb28nIH07Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoZGF0YSk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBzZXR1cEluZGV4ZXM7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldHVwSW5kZXhlcygpCi17Ci0gICAga2V5ID0g
ZXZhbEFuZExvZygia2V5ID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICBzaG91bGRCZUZh
bHNlKCJrZXkgPT0gbnVsbCIpOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBzZXRWZXJzaW9uQ29t
cGxldGU7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb25Db21wbGV0ZSgpCi17Ci0gICAgb2JqZWN0
U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLnRyYW5zYWN0aW9uKCdmb28nKS5v
YmplY3RTdG9yZSgnZm9vJyk7Iik7Ci0gICAgZmlyc3QgPSBldmFsQW5kTG9nKCJmaXJzdCA9IG9i
amVjdFN0b3JlLmluZGV4KCdmaXJzdCcpOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gZmlyc3QuZ2V0KCdmb28nKTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNo
ZWNrRmlyc3RJbmRleEFuZFByZXBhcmVTZWNvbmQ7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNoZWNrRmlyc3RJbmRleEFuZFBy
ZXBhcmVTZWNvbmQoKQotewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LmlkIiwg
ImtleSIpOwotICAgIHNlY29uZCA9IGV2YWxBbmRMb2coInNlY29uZCA9IG9iamVjdFN0b3JlLmlu
ZGV4KCdzZWNvbmQnKTsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHNl
Y29uZC5nZXQoJ2ZvbycpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2hlY2tTZWNvbmRJ
bmRleEFuZFByZXBhcmVUaGlyZDsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY2hlY2tTZWNvbmRJbmRleEFuZFByZXBhcmVUaGly
ZCgpCi17Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQuaWQiLCAia2V5Iik7Ci0g
ICAgdGhpcmQgPSBldmFsQW5kTG9nKCJ0aGlyZCA9IG9iamVjdFN0b3JlLmluZGV4KCd0aGlyZCcp
OyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gdGhpcmQuZ2V0KCdmb28n
KTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNoZWNrVGhpcmRJbmRleDsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY2hl
Y2tUaGlyZEluZGV4KCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5pZCIs
ICJrZXkiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9hdXRvaW5jcmVtZW50LWluZGV4ZXMuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvYmFkLWtleXBhdGguaHRtbCBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvYmFkLWtleXBhdGguaHRtbAppbmRleCAxMWVl
MDZkNDFjZWI2YmNjOGVmYjY3ZmZlMDI2ODU5MWVmZDdjYWY2Li4wYWU0OTIxMDkwZTNkZWQ1Yjdh
Yjg4MTM1MjAzZWUxOGNiMWMzOTY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL2JhZC1rZXlwYXRoLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9iYWQta2V5cGF0aC5odG1sCkBAIC0xLDYxICsxLDEwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTwhLS0KLSAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxh
Lm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9iYWRfa2V5cGF0
aC5odG1sCi0gIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgotICAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+
CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0
PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVk
REIgYWRkaW5nIHByb3BlcnR5IHdpdGggaW52YWxpZCBrZXlwYXRoIik7Ci0KLWZ1bmN0aW9uIHRl
c3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5s
b2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsK
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRp
b24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1
Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24o
JzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY2xl
YW5EYXRhYmFzZSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9i
amVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9y
ZSgnZm9vJywgeyBrZXlQYXRoOiAna2V5UGF0aCcgfSk7Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoeyBrZXlQYXRoOiAnZm9vJyB9KTsiKTsK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEZpcnN0U3VjY2VzczsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYWRkRmlyc3RT
dWNjZXNzKCkKLXsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJyZXF1ZXN0ID0gb2JqZWN0
U3RvcmUuYWRkKHt9KTsiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLSAgICBm
aW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9iYWQta2V5cGF0aC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4K
IDwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9jbGVhci5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9j
bGVhci5odG1sCmluZGV4IDI3OTMyODU0ZmU2Mjg5MDM1NGNlZTBkNWI4NGQ5OGY5YmNmM2I3MDQu
LjYwZDkzY2QwNGI2Njc4NzQ0MjM4YWViZmI3ZjQ1MzliOTQxZjZkMjUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY2xlYXIuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NsZWFyLmh0bWwKQEAgLTEsNzEgKzEs
MTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLQotICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhy
Lm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2Ns
ZWFyLmh0bWwKLSAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgotICAgICIgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCi0gICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKLS0tPgogPGh0bWw+CiA8aGVh
ZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3Jp
cHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4
ZWREQidzIGNsZWFyaW5nIGFuIG9iamVjdCBzdG9yZSIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsK
LSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24u
cGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkK
LXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFuRGF0YWJh
c2UoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBvYmplY3RTdG9y
ZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2Zvbycs
IHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9KTsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZCh7fSk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5vbmNvbXBs
ZXRlID0gY2xlYXI7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFyKCkKLXsKLSAgICBldmFsQW5kRXhwZWN0
RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbignZm9vJykub2JqZWN0U3RvcmUoJ2ZvbycpLmNsZWFy
KCk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlJFQURfT05MWV9FUlIiKTsKLSAgICBldmFsQW5k
TG9nKCJkYi50cmFuc2FjdGlvbignZm9vJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2Jq
ZWN0U3RvcmUoJ2ZvbycpLmNsZWFyKCk7Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBkYi50cmFuc2FjdGlvbignZm9vJykub2JqZWN0U3RvcmUoJ2ZvbycpLm9wZW5DdXJz
b3IoKTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFyZVdlQ2xlYXJZZXQ7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGFy
ZVdlQ2xlYXJZZXQoKQotewotICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IHJlcXVl
c3QucmVzdWx0OyIpOwotICAgIHNob3VsZEJlKCJjdXJzb3IiLCAibnVsbCIpOwotICAgIGZpbmlz
aEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2NsZWFyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgot
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0
ZS1pbmRleC11bmlxdWUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEvY3JlYXRlLWluZGV4LXVuaXF1ZS5odG1sCmluZGV4IDBlNjQxMTNkYjVhZGM0ZmZmYzQzYjQ0
ZDYxYzU0NDZjMGU5Y2FjYTEuLmMxOWEyZjU1ZTMzMzVkMzMyOTA2MTEyNmRmOGRhODZmMzFlZmI5
NmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3Jl
YXRlLWluZGV4LXVuaXF1ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vemlsbGEvY3JlYXRlLWluZGV4LXVuaXF1ZS5odG1sCkBAIC0xLDcyICsxLDEwIEBACi08IURP
Q1RZUEUgaHRtbD4KLTwhLS0KLSAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxhLm9y
Zy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9jcmVhdGVfaW5kZXgu
aHRtbAotICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Ci0gICAgIiBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KLSAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgotLS0+CiA8aHRtbD4KIDxoZWFkPgog
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4K
IDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERC
J3MgY3JlYXRpbmcgdW5pcXVlIGluZGV4IGFuZCB1cGRhdGluZyBpbmRleE5hbWVzIik7Ci0KLWZ1
bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1l
ID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERh
dGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwg
ZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rp
b24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJn
ZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNl
dFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5kVmVyaWZ5
SW5kZXg7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19
Ci0KLWZ1bmN0aW9uIGNyZWF0ZUFuZFZlcmlmeUluZGV4KCkKLXsKLSAgICBkZWxldGVBbGxPYmpl
Y3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9y
ZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdhJywgeyBrZXlQYXRoOiAnaWQnLCBhdXRvSW5jcmVt
ZW50OiB0cnVlIH0pOyIpOwotCi0gICAgaW5kZXhOYW1lID0gIjEiOwotICAgIGluZGV4S2V5UGF0
aCA9ICJ1bmlxdWVfdmFsdWUiOwotICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBvYmpl
Y3RTdG9yZS5jcmVhdGVJbmRleChpbmRleE5hbWUsIGluZGV4S2V5UGF0aCwgeyB1bmlxdWU6IHRy
dWUgfSk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkNPTlNUUkFJTlRfRVJSIik7Ci0gICAgc2hv
dWxkQmUoImluZGV4Lm5hbWUiLCAiaW5kZXhOYW1lIik7Ci0gICAgc2hvdWxkQmUoImluZGV4Lmtl
eVBhdGgiLCAiaW5kZXhLZXlQYXRoIik7Ci0gICAgc2hvdWxkQmUoImluZGV4LnVuaXF1ZSIsICJ0
cnVlIik7Ci0gICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLmluZGV4TmFtZXMubGVuZ3RoIiwgIjEi
KTsKLQotICAgIGZvdW5kTmV3bHlDcmVhdGVkSW5kZXggPSBmYWxzZTsKLSAgICBmb3IgKHZhciBr
ID0gMDsgayA8IG9iamVjdFN0b3JlLmluZGV4TmFtZXMubGVuZ3RoOyBrKyspIHsKLSAgICAgICAg
aWYgKG9iamVjdFN0b3JlLmluZGV4TmFtZXMuaXRlbShrKSA9PSBpbmRleE5hbWUpIHsKLSAgICAg
ICAgICAgIGZvdW5kTmV3bHlDcmVhdGVkSW5kZXggPSB0cnVlOwotICAgICAgICB9Ci0gICAgfQot
ICAgIHNob3VsZEJlVHJ1ZSgiZm91bmROZXdseUNyZWF0ZWRJbmRleCIpOwotICAgIHNob3VsZEJl
KCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24uZGIiLCAiZGIiKTsKLSAgICBzaG91bGRCZSgiZXZl
bnQudGFyZ2V0LnRyYW5zYWN0aW9uLnJlYWR5U3RhdGUiLCAiSURCVHJhbnNhY3Rpb24uTE9BRElO
RyIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24ubW9kZSIsICJJREJU
cmFuc2FjdGlvbi5WRVJTSU9OX0NIQU5HRSIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0K
LXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NyZWF0ZS1pbmRl
eC11bmlxdWUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3JlYXRlLWlu
ZGV4LXdpdGgtaW50ZWdlci1rZXlzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL2NyZWF0ZS1pbmRleC13aXRoLWludGVnZXIta2V5cy5odG1sCmluZGV4IGJkZDhj
YmFiNmE4NjQwOWMwNzQzYjJlMTY3MmU0Zjg2ZDJjOTRhMzUuLjc3MWIzZDhlYzFjNWQxZDU0OGM2
OTg2MmI3YjExN2Y1MWI4YjVlODUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL21vemlsbGEvY3JlYXRlLWluZGV4LXdpdGgtaW50ZWdlci1rZXlzLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtaW5kZXgtd2l0aC1p
bnRlZ2VyLWtleXMuaHRtbApAQCAtMSw2NyArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0t
Ci0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3Vy
Y2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfY3JlYXRlX2luZGV4X3dpdGhfaW50ZWdlcl9rZXlz
Lmh0bWw/Zm9yY2U9MQotICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Ci0gICAgIiBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KLSAgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgotLS0+CiA8aHRtbD4K
IDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48
L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3Qg
SW5kZXhlZERCJ3MgY3JlYXRpbmcgaW5kZXggd2l0aCBpbnRlZ2VyIGtleXMiKTsKLQotZnVuY3Rp
b24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBz
ZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJh
c2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNj
cmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBv
cGVuU3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVy
c2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXR1cE9iamVjdFN0b3JlQW5k
Q3JlYXRlSW5kZXg7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIHNldHVwT2JqZWN0U3RvcmVBbmRDcmVhdGVJbmRleCgpCi17Ci0g
ICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9iamVjdFN0b3JlID0gZXZhbEFu
ZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJywgeyBrZXlQYXRo
OiAnaWQnIH0pOyIpOwotICAgIGRhdGEgPSBldmFsQW5kTG9nKCJkYXRhID0geyBpZDogMTYsIG51
bTogNDIgfTsiKTsKLSAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoZGF0YSk7Iik7Ci0g
ICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdm
b28nLCAnbnVtJyk7Iik7Ci0gICAgcmVzdWx0ID0gZXZhbEFuZExvZygicmVzdWx0ID0gaW5kZXgu
b3BlbktleUN1cnNvcigpOyIpOwotICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSB2ZXJpZnlLZXlDdXJz
b3I7Ci0gICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQot
ZnVuY3Rpb24gdmVyaWZ5S2V5Q3Vyc29yKCkKLXsKLSAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJj
dXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgIHNob3VsZEJlRmFsc2UoImN1cnNv
ciA9PSBudWxsIik7Ci0gICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAiZGF0YS5udW0iKTsKLSAg
ICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAiZGF0YS5pZCIpOwotICAgIGZpbmlzaEpT
VGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL2NyZWF0ZS1pbmRleC13aXRoLWludGVnZXIta2V5cy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KIDwvYm9keT4KIDwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW96aWxsYS9jcmVhdGUtb2JqZWN0c3RvcmUtYmFzaWNzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1vYmplY3RzdG9yZS1iYXNpY3Mu
aHRtbAppbmRleCAwMGI4NDQzM2JmMmQ3M2JmYTk0ZWU0OTZmYjhhZjE3NjMxYTJmZGZkLi5mM2Qx
NDExMzg4M2UzMjlhNjIzZTI4NmRkOWM1YmMxNGQyYzBiMjI3IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1vYmplY3RzdG9yZS1iYXNpY3Mu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1v
YmplY3RzdG9yZS1iYXNpY3MuaHRtbApAQCAtMSw3NyArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIu
MC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfY3JlYXRlX29iamVjdFN0b3JlLmh0bWwK
LSAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgotICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCi0gICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKLS0tPgogPGh0bWw+CiA8aGVhZD4KIDxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hl
YWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGNy
ZWF0aW5nIG9iamVjdCBzdG9yZSBhbmQgdXBkYXRpbmcgcHJvcGVydGllcyIpOwotCi1mdW5jdGlv
biB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNl
bGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFz
ZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2Ny
aXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9w
ZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJz
aW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9u
IGNsZWFuRGF0YWJhc2UoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAg
ICBvYmplY3RTdG9yZUluZm8gPSBbCi0gICAgICAgIHsgbmFtZTogIjEiLCBvcHRpb25zOiB7IGF1
dG9JbmNyZW1lbnQ6IHRydWUgfSB9LAotICAgICAgICB7IG5hbWU6ICIyIiwgb3B0aW9uczogeyBh
dXRvSW5jcmVtZW50OiBmYWxzZSB9IH0sCi0gICAgICAgIHsgbmFtZTogIjMiLCBvcHRpb25zOiB7
IGtleVBhdGg6ICIiIH0gfSwKLSAgICAgICAgeyBuYW1lOiAiNCIsIG9wdGlvbnM6IHsga2V5UGF0
aDogIiIsIGF1dG9JbmNyZW1lbnQ6IHRydWUgfSB9LAotICAgICAgICB7IG5hbWU6ICI1Iiwgb3B0
aW9uczogeyBrZXlQYXRoOiAiIiwgYXV0b0luY3JlbWVudDogZmFsc2UgfSB9LAotICAgICAgICB7
IG5hbWU6ICI2Iiwgb3B0aW9uczogeyBrZXlQYXRoOiAiZm9vIiB9IH0sCi0gICAgICAgIHsgbmFt
ZTogIjciLCBvcHRpb25zOiB7IGtleVBhdGg6ICJmb28iLCBhdXRvSW5jcmVtZW50OiBmYWxzZSB9
IH0sCi0gICAgICAgIHsgbmFtZTogIjgiLCBvcHRpb25zOiB7IGtleVBhdGg6ICJmb28iLCBhdXRv
SW5jcmVtZW50OiB0cnVlIH0gfQotICAgIF07Ci0KLSAgICBmb3IgKHZhciBpbmRleCBpbiBvYmpl
Y3RTdG9yZUluZm8pIHsKLSAgICAgICAgaW5kZXggPSBwYXJzZUludChpbmRleCk7Ci0gICAgICAg
IGluZm8gPSBvYmplY3RTdG9yZUluZm9baW5kZXhdOwotICAgICAgICBvYmplY3RTdG9yZSA9IGV2
YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoaW5mby5uYW1lLCBp
bmZvLm9wdGlvbnMpOyIpOwotICAgICAgICBzaG91bGRCZSgib2JqZWN0U3RvcmUubmFtZSIsICJp
bmZvLm5hbWUiKTsKLSAgICAgICAgaWYgKGluZm8ub3B0aW9ucyAmJiBpbmZvLm9wdGlvbnMua2V5
UGF0aCkgewotICAgICAgICAgICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLmtleVBhdGgiLCAiaW5m
by5vcHRpb25zLmtleVBhdGgiKTsKLSAgICAgICAgfQotICAgICAgICBzaG91bGRCZSgib2JqZWN0
U3RvcmUuaW5kZXhOYW1lcy5sZW5ndGgiLCAiMCIpOwotICAgICAgICBzaG91bGRCZSgiZXZlbnQu
dGFyZ2V0LnRyYW5zYWN0aW9uLmRiIiwgImRiIik7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50
YXJnZXQudHJhbnNhY3Rpb24ucmVhZHlTdGF0ZSIsICJJREJUcmFuc2FjdGlvbi5MT0FESU5HIik7
Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24ubW9kZSIsICJJREJU
cmFuc2FjdGlvbi5WRVJTSU9OX0NIQU5HRSIpOwotICAgIH0KLQotICAgIGZpbmlzaEpTVGVzdCgp
OwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2Ny
ZWF0ZS1vYmplY3RzdG9yZS1iYXNpY3MuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+
CiA8L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
emlsbGEvY3JlYXRlLW9iamVjdHN0b3JlLW51bGwtbmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtb2JqZWN0c3RvcmUtbnVsbC1uYW1lLmh0bWwK
aW5kZXggNDMzNmNiYmYxZTQxMTQ3OTdhNGNkOGNkYjczYzlmM2YxNzYzZGIxMC4uOWFmYWM3MDY3
YmYwNjUwM2JhZDgyMTlhOTI5MTJjZDFmMWE4YjYyOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtb2JqZWN0c3RvcmUtbnVsbC1uYW1lLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtb2Jq
ZWN0c3RvcmUtbnVsbC1uYW1lLmh0bWwKQEAgLTEsNTUgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1s
PgotPCEtLQotICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEy
LjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2NyZWF0ZV9vYmplY3RTdG9yZS5odG1s
Ci0gIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgotICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+CiA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9o
ZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBj
cmVhdGluZyBvYmplY3Qgc3RvcmUgd2l0aCBudWxsIG5hbWUiKTsKLQotZnVuY3Rpb24gdGVzdCgp
Ci17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0
aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbiki
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2Vz
cygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsK
LQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScp
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjbGVhbkRh
dGFiYXNlKCkKLXsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0
U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKG51
bGwpOyIpOwotICAgIHNob3VsZEJlKCJvYmplY3RTdG9yZS5uYW1lIiwgIidudWxsJyIpOwotCi0g
ICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvY3JlYXRlLW9iamVjdHN0b3JlLW51bGwtbmFtZS5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jdXJzb3ItbXV0YXRpb24tb2JqZWN0c3RvcmUtb25s
eS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jdXJzb3ItbXV0
YXRpb24tb2JqZWN0c3RvcmUtb25seS5odG1sCmluZGV4IGRlOGQxM2NiYWYzM2JkMTQ4YThlNDZm
YzdjOTYyY2RmMWFmOTQwMDguLmViNGQwZWM2Y2QxYTU5OTY3YTVkYjkzZGU0NDE5N2M2Y2RjYWFk
NTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3Vy
c29yLW11dGF0aW9uLW9iamVjdHN0b3JlLW9ubHkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL2N1cnNvci1tdXRhdGlvbi1vYmplY3RzdG9yZS1vbmx5Lmh0
bWwKQEAgLTEsMTUxICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KLTwhLS0KLSAgb3JpZ2luYWwg
dGVzdDogaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhl
ZERCL3Rlc3QvdGVzdF9jdXJzb3JfbXV0YXRpb24uaHRtbD9mb3JjZT0xCi0gIGxpY2Vuc2Ugb2Yg
b3JpZ2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgotICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08
c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBjdXJzb3IgbXV0YXRpb24g
ZHVyaW5nIG9iamVjdCBzdG9yZSBjdXJzb3IgaXRlcmF0aW9uIik7Ci0KLWZ1bmN0aW9uIHRlc3Qo
KQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2Nh
dGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24p
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nl
c3MoKQotewotICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOwotICAgIGRiID0gZXZhbEFuZExv
ZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gc2V0dXBPYmplY3RTdG9yZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc2V0dXBPYmplY3RTdG9yZSgpCi17Ci0gICAgZGVi
dWcoInNldHVwT2JqZWN0U3RvcmUoKToiKTsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIp
OwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdmb28nLCB7IGtleVBhdGg6ICdzcycgfSk7Iik7Ci0gICAgb2JqZWN0U3Rv
cmVEYXRhID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmVEYXRhID0gW1xuIiArIAotIiAgICAgICAg
eyBzczogJzIzNy0yMy03NzMyJywgbmFtZTogJ0JvYicgfSxcbiIgKyAKLQotIiAgICAgICAgeyBz
czogJzIzNy0yMy03NzMzJywgbmFtZTogJ0FubicgfSxcbiIgKwotIiAgICAgICAgeyBzczogJzIz
Ny0yMy03NzM0JywgbmFtZTogJ1JvbicgfSxcbiIgKwotIiAgICAgICAgeyBzczogJzIzNy0yMy03
NzM1JywgbmFtZTogJ1N1ZScgfSxcbiIgKwotIiAgICAgICAgeyBzczogJzIzNy0yMy03NzM2Jywg
bmFtZTogJ0pvZScgfSxcbiIgKwotCi0iICAgICAgICB7IHNzOiAnMjM3LTIzLTc3MzcnLCBuYW1l
OiAnUGF0JyB9XG4iICsKLSIgICAgXTsiKTsKLQotICAgIGZvciAoaSA9IDA7IGkgPCBvYmplY3RT
dG9yZURhdGEubGVuZ3RoIC0gMTsgaSsrKSB7Ci0gICAgICAgIGV2YWxBbmRMb2coIm9iamVjdFN0
b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0pOyIpOwotICAgIH0KLQotICAgIGNvdW50ID0gZXZh
bEFuZExvZygiY291bnQgPSAwOyIpOwotICAgIHNhd0FkZGVkID0gZXZhbEFuZExvZygic2F3QWRk
ZWQgPSBmYWxzZTsiKTsKLSAgICBzYXdSZW1vdmVkID0gZXZhbEFuZExvZygic2F3UmVtb3ZlZCA9
IGZhbHNlOyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RT
dG9yZS5vcGVuQ3Vyc29yKCk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBpdGVyYXRlQ3Vy
c29yOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQot
Ci1mdW5jdGlvbiBpdGVyYXRlQ3Vyc29yKCkKLXsKLSAgICBkZWJ1ZygiaXRlcmF0ZUN1cnNvcigp
OiIpOwotICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5vbmNvbXBsZXRl
ID0gY2hlY2tDdXJzb3JSZXN1bHRzQW5kU2V0dXBNdXRhdGluZ0N1cnNvcjsiKTsKLSAgICBjdXJz
b3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgIGlm
IChjdXJzb3IpIHsKLSAgICAgICAgaWYgKGN1cnNvci52YWx1ZS5uYW1lID09IG9iamVjdFN0b3Jl
RGF0YVswXS5uYW1lKSB7Ci0gICAgICAgICAgICBzYXdSZW1vdmVkID0gZXZhbEFuZExvZygic2F3
UmVtb3ZlZCA9IHRydWU7Iik7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGN1cnNvci52YWx1ZS5u
YW1lID09IG9iamVjdFN0b3JlRGF0YVtvYmplY3RTdG9yZURhdGEubGVuZ3RoIC0gMV0ubmFtZSkg
ewotICAgICAgICAgICAgc2F3QWRkZWQgPSBldmFsQW5kTG9nKCJzYXdBZGRlZCA9IHRydWU7Iik7
Ci0gICAgICAgIH0KLSAgICAgICAgZXZhbEFuZExvZygiY291bnQrKzsiKTsKLSAgICAgICAgZXZh
bEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBjaGVj
a0N1cnNvclJlc3VsdHNBbmRTZXR1cE11dGF0aW5nQ3Vyc29yKCkKLXsKLSAgICBkZWJ1ZygiY2hl
Y2tDdXJzb3JSZXN1bHRzQW5kU2V0dXBNdXRhdGluZ0N1cnNvcigpOiIpOwotICAgIHNob3VsZEJl
KCJjb3VudCIsICJvYmplY3RTdG9yZURhdGEubGVuZ3RoIC0gMSIpOwotICAgIHNob3VsZEJlKCJz
YXdBZGRlZCIsICJmYWxzZSIpOwotICAgIHNob3VsZEJlKCJzYXdSZW1vdmVkIiwgInRydWUiKTsK
LQotICAgIGNvdW50ID0gZXZhbEFuZExvZygiY291bnQgPSAwOyIpOwotICAgIHNhd0FkZGVkID0g
ZXZhbEFuZExvZygic2F3QWRkZWQgPSBmYWxzZTsiKTsKLSAgICBzYXdSZW1vdmVkID0gZXZhbEFu
ZExvZygic2F3UmVtb3ZlZCA9IGZhbHNlOyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBkYi50cmFuc2FjdGlvbignZm9vJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklU
RSkub2JqZWN0U3RvcmUoJ2ZvbycpLm9wZW5DdXJzb3IoKTsiKTsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGl0ZXJhdGVNdXRhdGluZ0N1cnNvcjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gaXRlcmF0ZU11dGF0aW5nQ3Vyc29y
KCkKLXsKLSAgICBkZWJ1ZygiaXRlcmF0ZU11dGF0aW5nQ3Vyc29yKCk6Iik7Ci0gICAgZXZhbEFu
ZExvZygiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBjaGVja011dGF0aW5n
Q3Vyc29yUmVzdWx0czsiKTsKLSAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVu
dC50YXJnZXQucmVzdWx0OyIpOwotICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgaWYgKGN1cnNv
ci52YWx1ZS5uYW1lID09IG9iamVjdFN0b3JlRGF0YVswXS5uYW1lKSB7Ci0gICAgICAgICAgICBz
YXdSZW1vdmVkID0gZXZhbEFuZExvZygic2F3UmVtb3ZlZCA9IHRydWU7Iik7Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKGN1cnNvci52YWx1ZS5uYW1lID09IG9iamVjdFN0b3JlRGF0YVtvYmplY3RT
dG9yZURhdGEubGVuZ3RoIC0gMV0ubmFtZSkgewotICAgICAgICAgICAgc2F3QWRkZWQgPSBldmFs
QW5kTG9nKCJzYXdBZGRlZCA9IHRydWU7Iik7Ci0gICAgICAgIH0KLSAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci52YWx1ZS5uYW1lIiwgIiciICsgb2JqZWN0U3RvcmVEYXRhW2NvdW50XS5uYW1lICsg
IiciKTsKLSAgICAgICAgZXZhbEFuZExvZygiY291bnQrKyIpOwotCi0gICAgICAgIGlmIChjb3Vu
dCA9PSAxKSB7Ci0gICAgICAgICAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0
b3JlID0gZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdmb28nKTsiKTsKLSAg
ICAgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZGVs
ZXRlKG9iamVjdFN0b3JlRGF0YVswXS5zcyk7Iik7Ci0gICAgICAgICAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGFkZEZpbmFsRGF0YTsKLSAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgY3Vyc29y
LmNvbnRpbnVlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGFkZEZpbmFsRGF0
YSgpCi17Ci0gICAgZGVidWcoImFkZEZpbmFsRGF0YSgpOiIpOwotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtvYmplY3RT
dG9yZURhdGEubGVuZ3RoIC0gMV0pOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24gKCkgeyBjdXJzb3IuY29udGludWUoKTsgfQotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjaGVja011dGF0aW5nQ3Vyc29yUmVz
dWx0cygpCi17Ci0gICAgZGVidWcoImNoZWNrTXV0YXRpbmdDdXJzb3JSZXN1bHRzKCk6Iik7Ci0g
ICAgc2hvdWxkQmUoImNvdW50IiwgIm9iamVjdFN0b3JlRGF0YS5sZW5ndGgiKTsKLSAgICBzaG91
bGRCZSgic2F3QWRkZWQiLCAidHJ1ZSIpOwotICAgIHNob3VsZEJlKCJzYXdSZW1vdmVkIiwgInRy
dWUiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9jdXJzb3ItbXV0YXRpb24tb2JqZWN0c3RvcmUtb25seS5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3Vyc29yLW11dGF0aW9uLmh0bWwg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2N1cnNvci1tdXRhdGlvbi5o
dG1sCmluZGV4IDBiZDU0ZWNmNDRjNGEwMmQxYTFmNzc2Y2E0YjJhZjc2ZGNiMzYwYjIuLmM4MDE5
M2I3ZDQwOWQ5MWViYTQ4YjY4MTE0YzE1ZWNiNTcwNWRhMDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3Vyc29yLW11dGF0aW9uLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jdXJzb3ItbXV0YXRpb24uaHRt
bApAQCAtMSwxOTEgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLQotICBvcmlnaW5hbCB0
ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVk
REIvdGVzdC90ZXN0X2N1cnNvcl9tdXRhdGlvbi5odG1sP2ZvcmNlPTEKLSAgbGljZW5zZSBvZiBv
cmlnaW5hbCB0ZXN0OgotICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCi0gICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvICIKLS0tPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxz
Y3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGN1cnNvciBtdXRhdGlvbiIp
OwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0g
ICAgZGVidWcoIiIpOwotICAgIG5hbWUgPSAnY3Vyc29yLW11dGF0aW9uJzsKLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKG5hbWUpIik7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRl
eGVkREIub3BlbihuYW1lKSIpOwotICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7
Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAg
ICAgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAg
ICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAg
ICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXR1cE9iamVjdFN0b3JlQW5kQ3JlYXRlSW5k
ZXg7ICAgICAgICAgIAotICAgICAgICB9OwotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIHNldHVwT2Jq
ZWN0U3RvcmVBbmRDcmVhdGVJbmRleCgpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJz
ZXR1cE9iamVjdFN0b3JlQW5kQ3JlYXRlSW5kZXgoKToiKTsKLQotICAgIHRyYW5zID0gZXZhbEFu
ZExvZygidHJhbnMgPSByZXF1ZXN0LnJlc3VsdCIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFs
QW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7IGtleVBh
dGg6ICdzcycgfSkiKTsKLSAgICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gb2JqZWN0U3Rv
cmUuY3JlYXRlSW5kZXgoJ25hbWUnLCAnbmFtZScsIHsgdW5pcXVlOiB0cnVlIH0pIik7Ci0gICAg
b2JqZWN0U3RvcmVEYXRhID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmVEYXRhID0gW1xuIiArIAot
ICAgICAgICAgLy8gVG8gYmUgcmVtb3ZlZC4KLSIgICAgICAgIHsgc3M6ICcyMzctMjMtNzczMics
IG5hbWU6ICdCb2InIH0sXG4iICsgCi0KLSAgICAgICAgIC8vIEFsd2F5cyBwcmVzZW50LgotIiAg
ICAgICAgeyBzczogJzIzNy0yMy03NzMzJywgbmFtZTogJ0FubicgfSxcbiIgKwotIiAgICAgICAg
eyBzczogJzIzNy0yMy03NzM0JywgbmFtZTogJ1JvbicgfSxcbiIgKwotIiAgICAgICAgeyBzczog
JzIzNy0yMy03NzM1JywgbmFtZTogJ1N1ZScgfSxcbiIgKwotIiAgICAgICAgeyBzczogJzIzNy0y
My03NzM2JywgbmFtZTogJ0pvZScgfSxcbiIgKwotCi0gICAgICAgICAvLyBUbyBiZSBhZGRlZC4K
LSIgICAgICAgIHsgc3M6ICcyMzctMjMtNzczNycsIG5hbWU6ICdQYXQnIH1cbiIgKwotIiAgICBd
Iik7Ci0KLSAgICBmb3IgKGkgPSAwOyBpIDwgb2JqZWN0U3RvcmVEYXRhLmxlbmd0aCAtIDE7IGkr
KykgewotICAgICAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRh
WyIgKyBpICsgIl0pIik7Ci0gICAgfQotCi0gICAgZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0
ZSA9IGNoZWNrQ3Vyc29yUmVzdWx0cyIpOwotICAgIHNldHVwQ3Vyc29yKCk7Ci19Ci0KLWZ1bmN0
aW9uIHNldHVwQ3Vyc29yKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInNldHVwQ3Vy
c29yKCk6Iik7Ci0KLSAgICBjb3VudCA9IGV2YWxBbmRMb2coImNvdW50ID0gMCIpOwotICAgIHNh
d0FkZGVkID0gZXZhbEFuZExvZygic2F3QWRkZWQgPSBmYWxzZSIpOwotICAgIHNhd1JlbW92ZWQg
PSBldmFsQW5kTG9nKCJzYXdSZW1vdmVkID0gZmFsc2UiKTsKLQotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpIik7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBpdGVyYXRlQ3Vyc29yOwotfQotCi1mdW5jdGlvbiBpdGVyYXRlQ3Vyc29yKCkKLXsKLSAg
ICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIml0ZXJhdGVDdXJzb3IoKToiKTsKLSAgICBjdXJzb3Ig
PSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgaWYgKGN1
cnNvcikgewotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImN1cnNvci52YWx1ZS5uYW1l
Iiwgb2JqZWN0U3RvcmVEYXRhW2NvdW50XS5uYW1lKTsKLSAgICAgICAgaWYgKGN1cnNvci52YWx1
ZS5uYW1lID09IG9iamVjdFN0b3JlRGF0YVswXS5uYW1lKSB7Ci0gICAgICAgICAgICBzYXdSZW1v
dmVkID0gZXZhbEFuZExvZygic2F3UmVtb3ZlZCA9IHRydWUiKTsKLSAgICAgICAgfQotICAgICAg
ICBpZiAoY3Vyc29yLnZhbHVlLm5hbWUgPT0gb2JqZWN0U3RvcmVEYXRhW29iamVjdFN0b3JlRGF0
YS5sZW5ndGggLSAxXS5uYW1lKSB7Ci0gICAgICAgICAgICBzYXdBZGRlZCA9IGV2YWxBbmRMb2co
InNhd0FkZGVkID0gdHJ1ZSIpOwotICAgICAgICB9Ci0gICAgICAgIGV2YWxBbmRMb2coImNvdW50
KysiKTsKLSAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCkiKTsKLSAgICB9Ci19
Ci0KLWZ1bmN0aW9uIGNoZWNrQ3Vyc29yUmVzdWx0cygpCi17Ci0gICAgZGVidWcoIiIpOwotICAg
IGRlYnVnKCJjaGVja0N1cnNvclJlc3VsdHMoKToiKTsKLSAgICBzaG91bGRCZSgiY291bnQiLCAi
b2JqZWN0U3RvcmVEYXRhLmxlbmd0aCAtIDEiKTsKLSAgICBzaG91bGRCZSgic2F3QWRkZWQiLCAi
ZmFsc2UiKTsKLSAgICBzaG91bGRCZSgic2F3UmVtb3ZlZCIsICJ0cnVlIik7Ci0KLSAgICBzZXR1
cE11dGF0aW5nQ3Vyc29yKCk7Ci19Ci0KLWZ1bmN0aW9uIHNldHVwTXV0YXRpbmdDdXJzb3IoKQot
ewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1Zygic2V0dXBNdXRhdGluZ0N1cnNvcigpOiIpOwot
ICAgCi0gICAgY291bnQgPSBldmFsQW5kTG9nKCJjb3VudCA9IDAiKTsKLSAgICBzYXdBZGRlZCA9
IGV2YWxBbmRMb2coInNhd0FkZGVkID0gZmFsc2UiKTsKLSAgICBzYXdSZW1vdmVkID0gZXZhbEFu
ZExvZygic2F3UmVtb3ZlZCA9IGZhbHNlIik7Ci0gICAgZGVidWcoIltvYmplY3RTdG9yZURhdGFO
YW1lU29ydCBpcyBhbiBhcnJheSBvZiBpbmRleGVzIGludG8gb2JqZWN0U3RvcmVEYXRhIGluIGFs
cGhhYmV0aWNhbCBvcmRlciBieSBuYW1lXSIpOwotICAgIG9iamVjdFN0b3JlRGF0YU5hbWVTb3J0
ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnQgPSBbIDEsIDQsIDUsIDIsIDMg
XSIpOwotCi0gICAgZGVidWcoIiIpOwotCi0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9
IGRiLnRyYW5zYWN0aW9uKCdmb28nLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAg
IG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSB0cmFucy5vYmplY3RTdG9y
ZSgnZm9vJykiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0
b3JlLmluZGV4KCduYW1lJykub3BlbkN1cnNvcigpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBpdGVyYXRl
TXV0YXRpbmdDdXJzb3I7Ci0gICAgZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IGNoZWNr
TXV0YXRpbmdDdXJzb3JSZXN1bHRzIik7Ci19Ci0KLWZ1bmN0aW9uIGl0ZXJhdGVNdXRhdGluZ0N1
cnNvcigpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJpdGVyYXRlTXV0YXRpbmdDdXJz
b3IoKToiKTsKLSAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7Ci0gICAgaWYgKGN1cnNvcikgewotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoImN1cnNvci52YWx1ZS5uYW1lIiwgb2JqZWN0U3RvcmVEYXRhW29iamVjdFN0b3JlRGF0YU5h
bWVTb3J0W2NvdW50XV0ubmFtZSk7Ci0gICAgICAgIGlmIChjdXJzb3IudmFsdWUubmFtZSA9PSBv
YmplY3RTdG9yZURhdGFbMF0ubmFtZSkgewotICAgICAgICAgICAgc2F3UmVtb3ZlZCA9IGV2YWxB
bmRMb2coInNhd1JlbW92ZWQgPSB0cnVlIik7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGN1cnNv
ci52YWx1ZS5uYW1lID09IG9iamVjdFN0b3JlRGF0YVtvYmplY3RTdG9yZURhdGEubGVuZ3RoIC0g
MV0ubmFtZSkgewotICAgICAgICAgICAgc2F3QWRkZWQgPSBldmFsQW5kTG9nKCJzYXdBZGRlZCA9
IHRydWUiKTsKLSAgICAgICAgfQotICAgICAgICBldmFsQW5kTG9nKCJjb3VudCsrIik7Ci0KLSAg
ICAgICAgaWYgKGNvdW50ID09IDEpIHsKLSAgICAgICAgICAgIGRlYnVnKCIiKTsKLSAgICAgICAg
ICAgIGRlYnVnKCJNdXRhdGluZyB0aGUgb2JqZWN0IHN0b3JlOiIpOwotCi0gICAgICAgICAgICBk
ZWJ1ZygiUmVtb3ZpbmcgIiArIG9iamVjdFN0b3JlRGF0YVswXS5uYW1lKTsKLSAgICAgICAgICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZGVsZXRlKG9iamVj
dFN0b3JlRGF0YVswXS5zcykiKTsKLSAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRG
aW5hbERhdGE7Ci0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGN1cnNvci5jb250aW51
ZSgpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1mdW5jdGlvbiBhZGRGaW5hbERhdGEoKQotewot
ICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiYWRkRmluYWxEYXRhKCk6Iik7Ci0gICAgZGVidWco
IkFkZGluZyAiICsgb2JqZWN0U3RvcmVEYXRhW29iamVjdFN0b3JlRGF0YS5sZW5ndGggLSAxXS5u
YW1lKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFk
ZChvYmplY3RTdG9yZURhdGFbb2JqZWN0U3RvcmVEYXRhLmxlbmd0aCAtIDFdKSIpOwotICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZnVuY3Rpb24gKCkgewotICAgICAgICBjdXJzb3IuY29udGludWUoKTsKLSAgICB9
Ci19Ci0KLWZ1bmN0aW9uIGNoZWNrTXV0YXRpbmdDdXJzb3JSZXN1bHRzKCkKLXsKLSAgICBkZWJ1
ZygiIik7Ci0gICAgZGVidWcoImNoZWNrTXV0YXRpbmdDdXJzb3JSZXN1bHRzKCk6Iik7Ci0gICAg
c2hvdWxkQmUoImNvdW50IiwgIm9iamVjdFN0b3JlRGF0YS5sZW5ndGggLSAxIik7Ci0gICAgc2hv
dWxkQmUoInNhd0FkZGVkIiwgInRydWUiKTsKLSAgICBzaG91bGRCZSgic2F3UmVtb3ZlZCIsICJm
YWxzZSIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9jdXJzb3ItbXV0YXRpb24uanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vemlsbGEvY3Vyc29yLXVwZGF0ZS11cGRhdGVzLWluZGV4ZXMuaHRtbCBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3Vyc29yLXVwZGF0ZS11cGRh
dGVzLWluZGV4ZXMuaHRtbAppbmRleCBiODlhZjY1OWNmMzhmMzdhYjU3ZWRmMWJiNmVkMjhkOTNj
YzM0YjQ3Li44Yzk5ZmY4NGQzZmM4ODk1YzYzMzQzMmI2ZjM2MjIxN2U0Mjg1YzQwIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2N1cnNvci11cGRhdGUt
dXBkYXRlcy1pbmRleGVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW96aWxsYS9jdXJzb3ItdXBkYXRlLXVwZGF0ZXMtaW5kZXhlcy5odG1sCkBAIC0xLDEyNSArMSwx
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIu
bW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfY3Vy
c29yX3VwZGF0ZV91cGRhdGVzX2luZGV4ZXMuaHRtbD9mb3JjZT0xCi0gIGxpY2Vuc2Ugb2Ygb3Jp
Z2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgotICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2Ny
aXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREI6IG11dGF0aW5nIHJlY29yZHMgd2l0
aCBhIHIvdyBjdXJzb3IgdXBkYXRlcyBpbmRleGVzIG9uIHRob3NlIHJlY29yZHMiKTsKLQotZnVu
Y3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUg
PSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0
YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBk
ZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlv
biBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7Ci0gICAgZGIg
PSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBmaXJzdFZhbHVl
ID0gZXZhbEFuZExvZygiZmlyc3RWYWx1ZSA9ICdoaSc7Iik7Ci0gICAgc2Vjb25kVmFsdWUgPSBl
dmFsQW5kTG9nKCJzZWNvbmRWYWx1ZSA9ICdieWUnOyIpOwotICAgIG9iamVjdFN0b3JlSW5mbyA9
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlSW5mbyA9IFtcbiIgKwotIiAgICAgICAgeyBuYW1lOiAn
MScsIG9wdGlvbnM6IHt9LCBrZXk6IDEsXG4iICsKLSIgICAgICAgICAgZW50cnk6IHsgZGF0YTog
Zmlyc3RWYWx1ZSB9IH0sXG4iICsKLSIgICAgICAgIHsgbmFtZTogJzInLCBvcHRpb25zOiB7IGtl
eVBhdGg6ICdmb28nIH0sXG4iICsKLSIgICAgICAgICAgZW50cnk6IHsgZm9vOiAxLCBkYXRhOiBm
aXJzdFZhbHVlIH0gfSxcbiIgKwotIiAgICAgICAgeyBuYW1lOiAnMycsIG9wdGlvbnM6IHsgYXV0
b0luY3JlbWVudDogdHJ1ZSB9LFxuIiArCi0iICAgICAgICAgIGVudHJ5OiB7IGRhdGE6IGZpcnN0
VmFsdWUgfSB9LFxuIiArCi0iICAgICAgICB7IG5hbWU6ICc0Jywgb3B0aW9uczogeyBrZXlQYXRo
OiAnZm9vJywgYXV0b0luY3JlbWVudDogdHJ1ZSB9LFxuIiArCi0iICAgICAgICAgIGVudHJ5OiB7
IGRhdGE6IGZpcnN0VmFsdWUgfSB9LFxuIiArCi0iICAgIF07Iik7Ci0gICAgaSA9IGV2YWxBbmRM
b2coImkgPSAwOyIpOwotICAgIHNldFZlcnNpb24oKTsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lv
bigpCi17Ci0gICAgaWYgKGkgPCBvYmplY3RTdG9yZUluZm8ubGVuZ3RoKSB7Ci0gICAgICAgIGlu
Zm8gPSBldmFsQW5kTG9nKCJpbmZvID0gb2JqZWN0U3RvcmVJbmZvW2ldOyIpOwotICAgICAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAg
ICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldHVwT2JqZWN0U3RvcmVBbmRDcmVhdGVJbmRleEFu
ZEFkZDsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfQotfQotCi1mdW5j
dGlvbiBzZXR1cE9iamVjdFN0b3JlQW5kQ3JlYXRlSW5kZXhBbmRBZGQoKQotewotICAgIGRlYnVn
KCJzZXR1cE9iamVjdFN0b3JlQW5kQ3JlYXRlSW5kZXgoKToiKTsKLSAgICBkZWxldGVBbGxPYmpl
Y3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9y
ZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKGluZm8ubmFtZSwgaW5mby5vcHRpb25zKTsiKTsKLQot
ICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgn
ZGF0YV9pbmRleCcsICdkYXRhJywgeyB1bmlxdWU6IGZhbHNlIH0pOyIpOwotICAgIHVuaXF1ZUlu
ZGV4ID0gZXZhbEFuZExvZygidW5pcXVlSW5kZXggPSBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgn
dW5pcXVlX2RhdGFfaW5kZXgnLCAnZGF0YScsIHsgdW5pcXVlOiB0cnVlIH0pOyIpOwotICAgIGlm
IChpbmZvLmtleSkgewotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9i
amVjdFN0b3JlLmFkZChpbmZvLmVudHJ5LCBpbmZvLmtleSk7Iik7Ci0gICAgfSBlbHNlIHsKLSAg
ICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoaW5m
by5lbnRyeSk7Iik7Ci0gICAgfQotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbkN1cnNvcjsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVu
Y3Rpb24gb3BlbkN1cnNvcigpCi17Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB1
cGRhdGVDdXJzb3I7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIHVwZGF0ZUN1cnNvcigpCi17Ci0gICAgY3Vyc29yID0gZXZhbEFu
ZExvZygiY3Vyc29yID0gcmVxdWVzdC5yZXN1bHQ7Iik7Ci0gICAgdmFsdWUgPSBldmFsQW5kTG9n
KCJ2YWx1ZSA9IGN1cnNvci52YWx1ZTsiKTsKLSAgICB2YWx1ZS5kYXRhID0gZXZhbEFuZExvZygi
dmFsdWUuZGF0YSA9IHNlY29uZFZhbHVlOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gY3Vyc29yLnVwZGF0ZSh2YWx1ZSk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBnZXRJbmRleDE7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIGdldEluZGV4MSgpCi17Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBpbmRleC5nZXQoc2Vjb25kVmFsdWUpOyIpOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gY2hlY2tJbmRleDFBbmRHZXRJbmRleDI7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNoZWNrSW5kZXgxQW5kR2V0
SW5kZXgyKCkKLXsKLSAgICBzaG91bGRCZSgidmFsdWUuZGF0YSIsICJldmVudC50YXJnZXQucmVz
dWx0LmRhdGEiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHVuaXF1ZUlu
ZGV4LmdldChzZWNvbmRWYWx1ZSk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjaGVja0lu
ZGV4MjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0K
LQotZnVuY3Rpb24gY2hlY2tJbmRleDIoKQotewotICAgIHNob3VsZEJlKCJ2YWx1ZS5kYXRhIiwg
ImV2ZW50LnRhcmdldC5yZXN1bHQuZGF0YSIpOwotICAgIGV2YWxBbmRMb2coImkrKzsiKTsKLSAg
ICBzZXRWZXJzaW9uKCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvY3Vyc29yLXVwZGF0ZS11cGRhdGVzLWluZGV4ZXMuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3Vyc29ycy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9jdXJzb3JzLmh0bWwKaW5kZXggY2EzZDcyZmVhMzVmNWYwMDIw
OGY2YjcwYjJiODcwMDBkOWRlNDEyMC4uY2VkZWQ5YmU5ODhlNTY4ODBhYWI2MzZiMTE3YjFhZDUz
NmFhN2FhZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9jdXJzb3JzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9jdXJzb3JzLmh0bWwKQEAgLTEsMzk5ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KLTwhLS0K
LSAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJj
ZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9jdXJzb3JzLmh0bWw/Zm9yY2U9MQotICBsaWNlbnNl
IG9mIG9yaWdpbmFsIHRlc3Q6Ci0gICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KLSAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8gIgotLS0+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5
PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGN1cnNvciBiZWhhdmlv
ciIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwot
Ci0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAi
TXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5v
cGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1
Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19
Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVl
c3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHRlc3RH
cm91cDE7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19
Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDEoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jlcyhk
Yik7Ci0KLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdhdXRvSW5jcmVtZW50JywgeyBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOyIpOwotCi0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgIHNob3VsZEJlKCJldmVu
dC50YXJnZXQucmVzdWx0IiwgIm51bGwiKTsKLSAgICAgIHRlc3RHcm91cDIoKTsKLSAgICB9Ci19
Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDIoKQotewotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExv
ZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2F1dG9JbmNyZW1lbnRLZXlQYXRoJywgeyBrZXlQYXRo
OiAnZm9vJywgYXV0b0luY3JlbWVudDogdHJ1ZSB9KTsiKTsKLQotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOwotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJl
c3VsdCIsICJudWxsIik7Ci0gICAgICB0ZXN0R3JvdXAzKCk7Ci0gICAgfQotfQotCi1mdW5jdGlv
biB0ZXN0R3JvdXAzKCkKLXsKLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdrZXlQYXRoJywgeyBrZXlQYXRoOiAnZm9vJyB9KTsiKTsKLQotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIp
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICBzaG91bGRCZSgiZXZl
bnQudGFyZ2V0LnJlc3VsdCIsICJudWxsIik7Ci0gICAgICB0ZXN0R3JvdXA0KCk7Ci0gICAgfQot
fQotCi1mdW5jdGlvbiB0ZXN0R3JvdXA0KCkKLXsKLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRM
b2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nKTsiKTsKLQotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOwotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJl
c3VsdCIsICJudWxsIik7Ci0gICAgICB0ZXN0R3JvdXA1KCk7Ci0gICAgfQotfQotCi1mdW5jdGlv
biB0ZXN0R3JvdXA1KCkKLXsKLSAgICBrZXlzID0gZXZhbEFuZExvZygia2V5cyA9IFsxLCAtMSwg
MCwgMTAsIDIwMDAsICdxJywgJ3onLCAndHdvJywgJ2InLCAnYSddOyIpOwotICAgIHNvcnRlZEtl
eXMgPSBldmFsQW5kTG9nKCJzb3J0ZWRLZXlzID0gWy0xLCAwLCAxLCAxMCwgMjAwMCwgJ2EnLCAn
YicsICdxJywgJ3R3bycsICd6J107Iik7Ci0KLSAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtl
eUluZGV4ID0gMDsiKTsKLQotICAgIGZvciAoaSBpbiBrZXlzKSB7Ci0gICAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZCgnZm9vJywga2V5c1tpXSk7Iik7
Ci0gICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgaWYgKCsra2V5
SW5kZXggPT0ga2V5cy5sZW5ndGgpIHsKLSAgICAgICAgICB0ZXN0R3JvdXA2KCk7Ci0gICAgICAg
IH0KLSAgICAgIH07Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXA2KCkKLXsKLSAgICBr
ZXlJbmRleCA9IDA7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVj
dFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkg
ewotICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dDsiKTsKLSAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXki
LCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmlt
YXJ5S2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJz
b3IudmFsdWUiLCAiJ2ZvbyciKTsKLQotICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGlu
dWUoKTsiKTsKLSAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiY3Vyc29yLmNvbnRpbnVl
KCk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9BTExPV0VEX0VSUiIpOwotCi0gICAgICAg
IHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7Ci0gICAgICAg
IHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOwot
ICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgIidmb28nIik7Ci0KLSAgICAgICAgZXZh
bEFuZExvZygia2V5SW5kZXgrKzsiKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICBz
aG91bGRCZSgia2V5SW5kZXgiLCAia2V5cy5sZW5ndGgiKTsKLSAgICAgICAgdGVzdEdyb3VwNygp
OwotICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdEdyb3VwNygpCi17Ci0gICAga2V5
SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDQ7Iik7Ci0KLSAgICByYW5nZSA9IGV2YWxB
bmRMb2coInJhbmdlID0gSURCS2V5UmFuZ2UuYm91bmQoMjAwMCwgJ3EnKTsiKTsKLSAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IocmFuZ2Up
OyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICBjdXJzb3IgPSBl
dmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgICAgaWYgKGN1
cnNvcikgewotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJzb3J0ZWRLZXlzW2tleUlu
ZGV4XSIpOwotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAic29ydGVkS2V5
c1trZXlJbmRleF0iKTsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZSIsICInZm9vJyIp
OwotCi0gICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOwotCi0gICAgICAg
IHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7Ci0gICAgICAg
IHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOwot
ICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgIidmb28nIik7Ci0KLSAgICAgICAgZXZh
bEFuZExvZygia2V5SW5kZXgrKzsiKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICBz
aG91bGRCZSgia2V5SW5kZXgiLCAiOCIpOwotICAgICAgICB0ZXN0R3JvdXA4KCk7Ci0gICAgICB9
Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXA4KCkKLXsKLSAgICBrZXlJbmRleCA9IDA7
Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5D
dXJzb3IoKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewotICAgICAgY3Vy
c29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAg
IGlmIChjdXJzb3IpIHsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAic29ydGVkS2V5
c1trZXlJbmRleF0iKTsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgInNv
cnRlZEtleXNba2V5SW5kZXhdIik7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAi
J2ZvbyciKTsKLQotICAgICAgICBpZiAoa2V5SW5kZXgpIHsKLSAgICAgICAgICBldmFsQW5kTG9n
KCJjdXJzb3IuY29udGludWUoKTsiKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoJ2InKTsiKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7Ci0g
ICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4
XSIpOwotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgIidmb28nIik7Ci0KLSAgICAg
ICAgZXZhbEFuZExvZygia2V5SW5kZXggKz0ga2V5SW5kZXggPyAxOiA2OyIpOwotICAgICAgfQot
ICAgICAgZWxzZSB7Ci0gICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJrZXlzLmxlbmd0aCIp
OwotICAgICAgICB0ZXN0R3JvdXA5KCk7Ci0gICAgICB9Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0
ZXN0R3JvdXA5KCkKLXsKLSAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gMDsi
KTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3Bl
bkN1cnNvcigpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICBj
dXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAg
ICAgaWYgKGN1cnNvcikgewotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJzb3J0ZWRL
ZXlzW2tleUluZGV4XSIpOwotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAi
c29ydGVkS2V5c1trZXlJbmRleF0iKTsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZSIs
ICInZm9vJyIpOwotCi0gICAgICAgIGlmIChrZXlJbmRleCkgewotICAgICAgICAgIGV2YWxBbmRM
b2coImN1cnNvci5jb250aW51ZSgpOyIpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAg
ICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgxMCk7Iik7Ci0gICAgICAgIH0KLQot
ICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOwot
ICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAic29ydGVkS2V5c1trZXlJbmRl
eF0iKTsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZSIsICInZm9vJyIpOwotCi0gICAg
ICAgIGV2YWxBbmRMb2coImtleUluZGV4ICs9IGtleUluZGV4ID8gMTogMzsiKTsKLSAgICAgIH0K
LSAgICAgIGVsc2UgewotICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAia2V5cy5sZW5ndGgi
KTsKLSAgICAgICAgdGVzdEdyb3VwMTAoKTsKLSAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9u
IHRlc3RHcm91cDEwKCkKLXsKLSAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0g
MDsiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
b3BlbkN1cnNvcigpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAg
ICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwot
ICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJzb3J0
ZWRLZXlzW2tleUluZGV4XSIpOwotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXki
LCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1
ZSIsICInZm9vJyIpOwotCi0gICAgICAgIGlmIChrZXlJbmRleCkgewotICAgICAgICAgIGV2YWxB
bmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2Ugewot
ICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgnYycpOyIpOwotICAgICAgICB9
Ci0KLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAic29ydGVkS2V5c1trZXlJbmRleF0i
KTsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgInNvcnRlZEtleXNba2V5
SW5kZXhdIik7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAiJ2ZvbyciKTsKLQot
ICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCArPSBrZXlJbmRleCA/IDEgOiA3OyIpOwotICAg
ICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJrZXlzLmxl
bmd0aCIpOwotICAgICAgICB0ZXN0R3JvdXAxMSgpOwotICAgICAgfQotICAgIH0KLX0KLQotZnVu
Y3Rpb24gdGVzdEdyb3VwMTEoKQotewotICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5k
ZXggPSAwOyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RT
dG9yZS5vcGVuQ3Vyc29yKCk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsK
LSAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7
Iik7Ci0gICAgICBpZiAoY3Vyc29yKSB7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5Iiwg
InNvcnRlZEtleXNba2V5SW5kZXhdIik7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFy
eUtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOwotICAgICAgICBzaG91bGRCZSgiY3Vyc29y
LnZhbHVlIiwgIidmb28nIik7Ci0KLSAgICAgICAgaWYgKGtleUluZGV4ID09IDQpIHsKLSAgICAg
ICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGN1cnNvci51cGRhdGUoJ2Jhcicp
OyIpOwotICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAg
ICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7Ci0gICAgICAgICAgICBldmFsQW5kTG9n
KCJjdXJzb3IuY29udGludWUoKTsiKTsKLSAgICAgICAgICB9OwotICAgICAgICB9Ci0gICAgICAg
IGVsc2UgewotICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7Ci0gICAgICAgICAg
ZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAg
ICAgIGVsc2UgewotICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAia2V5cy5sZW5ndGgiKTsK
LSAgICAgICAgdGVzdEdyb3VwMTIoKTsKLSAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRl
c3RHcm91cDEyKCkKLXsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVj
dFN0b3JlLmdldChzb3J0ZWRLZXlzWzRdKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHRlc3RHcm91cDEy
YjsKLX0KLQotZnVuY3Rpb24gdGVzdEdyb3VwMTJiKCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQu
dGFyZ2V0LnJlc3VsdCIsICInYmFyJyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoJ2ZvbycsIHNvcnRlZEtleXNbNF0pOyIpOwotICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gdGVzdEdyb3VwMTM7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDEzKCkKLXsKLSAg
ICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gMDsiKTsKLQotICAgIGdvdFJlbW92
ZUV2ZW50ID0gZmFsc2U7Ci0gICAgcmV0dmFsID0gZmFsc2U7Ci0KLSAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IobnVsbCwgSURCQ3Vyc29y
Lk5FWFQpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICBjdXJz
b3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgICAg
aWYgKGN1cnNvcikgewotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJzb3J0ZWRLZXlz
W2tleUluZGV4XSIpOwotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAic29y
dGVkS2V5c1trZXlJbmRleF0iKTsKLSAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZSIsICIn
Zm9vJyIpOwotCi0gICAgICAgIGlmIChrZXlJbmRleCA9PSA0KSB7Ci0gICAgICAgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBjdXJzb3IuZGVsZXRlKCk7Iik7Ci0gICAgICAgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgICAgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICAgICAgc2hvdWxkQmUo
ImtleUluZGV4IiwgIjUiKTsKLSAgICAgICAgICAgIGdvdFJlbW92ZUV2ZW50ID0gZXZhbEFuZExv
ZygiZ290UmVtb3ZlRXZlbnQgPSB0cnVlOyIpOwotICAgICAgICAgIH07Ci0gICAgICAgIH0KLQot
ICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOwotICAgICAgICBldmFsQW5kTG9nKCJj
dXJzb3IuY29udGludWUoKTsiKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICBzaG91
bGRCZSgia2V5SW5kZXgiLCAia2V5cy5sZW5ndGgiKTsKLSAgICAgICAgc2hvdWxkQmUoImdvdFJl
bW92ZUV2ZW50IiwgInRydWUiKTsKLSAgICAgICAgdGVzdEdyb3VwMTQoKTsKLSAgICAgIH0KLSAg
ICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDE0KCkKLXsKLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmdldChzb3J0ZWRLZXlzWzRdKTsiKTsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IHRlc3RHcm91cDE0YjsKLX0KLQotZnVuY3Rpb24gdGVzdEdyb3VwMTRiKCkKLXsK
LSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ1bmRlZmluZWQiKTsKLQotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKCdmb28nLCBz
b3J0ZWRLZXlzWzRdKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHRlc3RHcm91cDE1OwotfQotCi1mdW5j
dGlvbiB0ZXN0R3JvdXAxNSgpCi17Ci0gICAga2V5SW5kZXggPSBzb3J0ZWRLZXlzLmxlbmd0aCAt
IDE7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLm9w
ZW5DdXJzb3IobnVsbCwgSURCQ3Vyc29yLlBSRVYpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24gKGV2ZW50KSB7Ci0gICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50
YXJnZXQucmVzdWx0OyIpOwotICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICBzaG91bGRCZSgi
Y3Vyc29yLmtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOwotICAgICAgICBzaG91bGRCZSgi
Y3Vyc29yLnByaW1hcnlLZXkiLCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKLSAgICAgICAgc2hv
dWxkQmUoImN1cnNvci52YWx1ZSIsICInZm9vJyIpOwotCi0gICAgICAgIGV2YWxBbmRMb2coImN1
cnNvci5jb250aW51ZSgpOyIpOwotCi0gICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgInNv
cnRlZEtleXNba2V5SW5kZXhdIik7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtl
eSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOwotICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZh
bHVlIiwgIidmb28nIik7Ci0KLSAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgtLTsiKTsKLSAg
ICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiLTEiKTsK
LSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgICB9Ci0gICAgfQotfQotCi0KLXRlc3QoKTsK
LQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2N1cnNvcnMuanMiPjwvc2NyaXB0
PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvZGVsZXRlLXJlc3VsdC5odG1sIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9kZWxldGUtcmVzdWx0Lmh0bWwKaW5kZXggMTBm
NDZiYzg1MDRiMDNjMjcyM2RmNGUzNjNkMGZkOTQwMWYzZWVkNy4uZjdlYjUyNmNlNTU5YmQ4OWE5
NTg4ZTAxOTgxYWJjNjA2OTM0NTllYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW96aWxsYS9kZWxldGUtcmVzdWx0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9kZWxldGUtcmVzdWx0Lmh0bWwKQEAgLTEsNzMgKzEsMTAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLQotICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1v
emlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X29kZF9y
ZXN1bHRfb3JkZXIuaHRtbD9yYXc9MQotICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Ci0gICAg
IiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KLSAgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgotLS0+
CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hh
cmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRp
b24oIlRlc3QgSW5kZXhlZERCOiByZXN1bHQgcHJvcGVydHkgYWZ0ZXIgZGVsZXRpbmcgZXhpc3Rp
bmcgYW5kIG5vbi1leGlzdGluZyByZWNvcmQiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAg
cmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhu
YW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0g
ICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gY3JlYXRlT2JqZWN0U3RvcmU7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZU9iamVjdFN0
b3JlKCkKLXsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotICAgIG9iamVjdFN0b3Jl
ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJywg
eyBrZXlQYXRoOiAnaWQnLCBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOyIpOwotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKHt9KTsiKTsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZVJlY29yZDE7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZVJlY29yZDEoKQotewot
ICAgIGlkID0gZXZhbEFuZExvZygiaWQgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZGVsZXRlKGlkKTsiKTsK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZVJlY29yZDI7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZVJlY29y
ZDIoKQotewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgInVuZGVmaW5lZCIp
OwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZGVsZXRl
KGlkKTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZpbmFsQ2hlY2s7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZmlu
YWxDaGVjaygpCi17Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAidW5kZWZp
bmVkIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RlbGV0ZS1yZXN1bHQuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL2V2ZW50LXNvdXJjZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW96aWxsYS9ldmVudC1zb3VyY2UuaHRtbAppbmRleCAzN2MxMmU1MGY2NTBhNjZl
NWE5NmQyMzM4MTM5OGRkMWFkYTUyYWZmLi5kYjIxYmFhNjk5NGQ2YTNhYjRkOTFlYWJlYjFiYmE3
MmQxY2FlMGU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL2V2ZW50LXNvdXJjZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vemlsbGEvZXZlbnQtc291cmNlLmh0bWwKQEAgLTEsNjggKzEsMTAgQEAKLTwhRE9DVFlQRSBo
dG1sPgotPCEtLQotICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemls
bGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2V2ZW50X3NvdXJjZS5odG1sCi0g
IGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgotICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFk
PgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBldmVu
dC50YXJnZXQuc291cmNlIGluIHN1Y2Nlc3MgY2FsbGJhY2tzIik7Ci0KLWZ1bmN0aW9uIHRlc3Qo
KQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2Nh
dGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24p
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nl
c3MoKQotewotICAgIHNvdXJjZSA9IGV2YWxBbmRMb2coInNvdXJjZSA9IGV2ZW50LnRhcmdldC5z
b3VyY2U7Iik7Ci0gICAgc2hvdWxkQmUoInNvdXJjZSIsICJpbmRleGVkREIiKTsKLQotICAgIGRi
ID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQotewotICAg
IHNvdXJjZSA9IGV2YWxBbmRMb2coInNvdXJjZSA9IGV2ZW50LnRhcmdldC5zb3VyY2U7Iik7Ci0g
ICAgc2hvdWxkQmUoInNvdXJjZSIsICJkYiIpOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVz
KGRiKTsKLQotICAgIG9iamVjdFN0b3JlTmFtZSA9ICJPYmplY3RzIjsKLSAgICBvYmplY3RTdG9y
ZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0
U3RvcmVOYW1lLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7Ci0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoe30pOyIpOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gYXJlV2VEb25lWWV0OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBhcmVXZURvbmVZZXQoKQotewotICAgIHNv
dXJjZSA9IGV2YWxBbmRMb2coInNvdXJjZSA9IGV2ZW50LnRhcmdldC5zb3VyY2U7Iik7Ci0gICAg
c2hvdWxkQmUoInNvdXJjZSIsICJvYmplY3RTdG9yZSIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwot
fQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2V2ZW50
LXNvdXJjZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KLQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9nbG9iYWwtZGF0
YS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9nbG9iYWwtZGF0
YS5odG1sCmluZGV4IGNkZTA2OTY1NmY2OWViZmQ5MTNkMzZlYzRjYTkwMjczYTI0MGQyNGUuLmEy
YjA2NzNkZGIxMzViZjdhMjUxYzcyMzkxMmQ2NjJkNjRjMDdjMWQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvZ2xvYmFsLWRhdGEuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2dsb2JhbC1kYXRhLmh0bWwKQEAg
LTEsODAgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLQotICBvcmlnaW5hbCB0ZXN0OiBo
dHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVz
dC90ZXN0X2dsb2JhbF9kYXRhLmh0bWwKLSAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgotICAg
ICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCi0gICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKLS0t
PgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3No
YXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0
aW9uKCJUZXN0IEluZGV4ZWREQidzIG9wZW5pbmcgREIgbW9yZSB0aGFuIG9uY2UiKTsKLQotZnVu
Y3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUg
PSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0
YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBk
ZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlv
biBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIxID0gZXZhbEFuZExvZygiZGIxID0gZXZlbnQudGFy
Z2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYjEu
c2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNl
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1m
dW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKLXsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIx
KTsKLQotICAgIG9iamVjdFN0b3JlTmFtZSA9ICJPYmplY3RzIjsKLSAgICBvYmplY3RTdG9yZU9w
dGlvbnMgPSB7IGtleVBhdGg6ICdpZCcsIGF1dG9JbmNyZW1lbnQ6IHRydWUgfTsKLSAgICBldmFs
QW5kTG9nKCJkYjEuY3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lLCBvYmplY3RTdG9y
ZU9wdGlvbnMpOyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVu
KG5hbWUsIGRlc2NyaXB0aW9uKTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW4yU3Vj
Y2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0K
LQotZnVuY3Rpb24gb3BlbjJTdWNjZXNzKCkKLXsKLSAgICBkYjIgPSBldmFsQW5kTG9nKCJkYjIg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICBzaG91bGRCZVRydWUoImRiMSAhPT0gZGIy
Iik7Ci0gICAgc2hvdWxkQmUoImRiMS5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIxIik7Ci0g
ICAgc2hvdWxkQmUoImRiMS5vYmplY3RTdG9yZU5hbWVzLml0ZW0oMCkiLCAib2JqZWN0U3RvcmVO
YW1lIik7Ci0gICAgc2hvdWxkQmUoImRiMi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIxIik7
Ci0gICAgc2hvdWxkQmUoImRiMi5vYmplY3RTdG9yZU5hbWVzLml0ZW0oMCkiLCAib2JqZWN0U3Rv
cmVOYW1lIik7Ci0KLSAgICBvYmplY3RTdG9yZTEgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZTEg
PSBkYjEudHJhbnNhY3Rpb24ob2JqZWN0U3RvcmVOYW1lKS5vYmplY3RTdG9yZShvYmplY3RTdG9y
ZU5hbWUpOyIpOwotICAgIHNob3VsZEJlKCJvYmplY3RTdG9yZTEubmFtZSIsICJvYmplY3RTdG9y
ZU5hbWUiKTsKLSAgICBzaG91bGRCZSgib2JqZWN0U3RvcmUxLmtleVBhdGgiLCAib2JqZWN0U3Rv
cmVPcHRpb25zLmtleVBhdGgiKTsKLQotICAgIG9iamVjdFN0b3JlMiA9IGV2YWxBbmRMb2coIm9i
amVjdFN0b3JlMiA9IGRiMi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUpLm9iamVjdFN0b3Jl
KG9iamVjdFN0b3JlTmFtZSk7Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJvYmplY3RTdG9yZTEgIT09
IG9iamVjdFN0b3JlMiIpOwotICAgIHNob3VsZEJlKCJvYmplY3RTdG9yZTIubmFtZSIsICJvYmpl
Y3RTdG9yZU5hbWUiKTsKLSAgICBzaG91bGRCZSgib2JqZWN0U3RvcmUyLmtleVBhdGgiLCAib2Jq
ZWN0U3RvcmVPcHRpb25zLmtleVBhdGgiKTsKLQotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0K
LXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2dsb2JhbC1kYXRh
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgotCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2luZGV4ZXMuaHRtbCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvaW5kZXhlcy5odG1sCmluZGV4IDRm
YjdlMTI0YzViMTA5NmE0NjdjZDgxNTE3NDVlZDBlMDFkNWJlNzQuLjhiNmM2ZGNmYjM0MWQxYmFh
OGFkMWMxOTgxMjZlMzQ5MzI2ZDAzZjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvaW5kZXhlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvaW5kZXhlcy5odG1sCkBAIC0xLDEwMjIgKzEsMTAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPCEtLQotICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3Jn
L21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2luZGV4ZXMuaHRtbD9m
b3JjZT0xCi0gIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgotICAgICAgaHR0cDovL2NyZWF0aXZl
Y29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+
CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0
PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVk
REI6IGl0ZXJhdGluZyB0aHJvdWdoIGluZGV4IGN1cnNvcnMgd2l0aCBrZXlzIGFuZCBrZXkgcmFu
Z2VzIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7
Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9
ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERC
Lm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVu
U3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJvcGVuU3VjY2Vzcygp
OiIpOwotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0K
LSAgICBvYmplY3RTdG9yZU5hbWUgPSAiUGVvcGxlIjsKLQotICAgIG9iamVjdFN0b3JlRGF0YSA9
IFsKLSAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczMiIsIHZhbHVlOiB7IG5hbWU6ICJCb2IiLCBo
ZWlnaHQ6IDYwLCB3ZWlnaHQ6IDEyMCB9IH0sCi0gICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzMi
LCB2YWx1ZTogeyBuYW1lOiAiQW5uIiwgaGVpZ2h0OiA1Miwgd2VpZ2h0OiAxMTAgfSB9LAotICAg
ICAgICB7IGtleTogIjIzNy0yMy03NzM0IiwgdmFsdWU6IHsgbmFtZTogIlJvbiIsIGhlaWdodDog
NzMsIHdlaWdodDogMTgwIH0gfSwKLSAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNSIsIHZhbHVl
OiB7IG5hbWU6ICJTdWUiLCBoZWlnaHQ6IDU4LCB3ZWlnaHQ6IDEzMCB9IH0sCi0gICAgICAgIHsg
a2V5OiAiMjM3LTIzLTc3MzYiLCB2YWx1ZTogeyBuYW1lOiAiSm9lIiwgaGVpZ2h0OiA2NSwgd2Vp
Z2h0OiAxNTAgfSB9LAotICAgICAgICB7IGtleTogIjIzNy0yMy03NzM3IiwgdmFsdWU6IHsgbmFt
ZTogIlBhdCIsIGhlaWdodDogNjUsIHdlaWdodDogMTAwIH0gfQotICAgIF07Ci0KLSAgICBpbmRl
eERhdGEgPSBbCi0gICAgICAgIHsgbmFtZTogIm5hbWUiLCBrZXlQYXRoOiAibmFtZSIsIG9wdGlv
bnM6IHsgdW5pcXVlOiB0cnVlIH0gfSwKLSAgICAgICAgeyBuYW1lOiAiaGVpZ2h0Iiwga2V5UGF0
aDogImhlaWdodCIsIG9wdGlvbnM6IHsgfSB9LAotICAgICAgICB7IG5hbWU6ICJ3ZWlnaHQiLCBr
ZXlQYXRoOiAid2VpZ2h0Iiwgb3B0aW9uczogeyB1bmlxdWU6IGZhbHNlIH0gfQotICAgIF07Ci0K
LSAgICBvYmplY3RTdG9yZURhdGFOYW1lU29ydCA9IFsKLSAgICAgICAgeyBrZXk6ICIyMzctMjMt
NzczMyIsIHZhbHVlOiB7IG5hbWU6ICJBbm4iLCBoZWlnaHQ6IDUyLCB3ZWlnaHQ6IDExMCB9IH0s
Ci0gICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzIiLCB2YWx1ZTogeyBuYW1lOiAiQm9iIiwgaGVp
Z2h0OiA2MCwgd2VpZ2h0OiAxMjAgfSB9LAotICAgICAgICB7IGtleTogIjIzNy0yMy03NzM2Iiwg
dmFsdWU6IHsgbmFtZTogIkpvZSIsIGhlaWdodDogNjUsIHdlaWdodDogMTUwIH0gfSwKLSAgICAg
ICAgeyBrZXk6ICIyMzctMjMtNzczNyIsIHZhbHVlOiB7IG5hbWU6ICJQYXQiLCBoZWlnaHQ6IDY1
LCB3ZWlnaHQ6IDEwMCB9IH0sCi0gICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzQiLCB2YWx1ZTog
eyBuYW1lOiAiUm9uIiwgaGVpZ2h0OiA3Mywgd2VpZ2h0OiAxODAgfSB9LAotICAgICAgICB7IGtl
eTogIjIzNy0yMy03NzM1IiwgdmFsdWU6IHsgbmFtZTogIlN1ZSIsIGhlaWdodDogNTgsIHdlaWdo
dDogMTMwIH0gfQotICAgIF07Ci0KLSAgICBvYmplY3RTdG9yZURhdGFXZWlnaHRTb3J0ID0gWwot
ICAgICAgICB7IGtleTogIjIzNy0yMy03NzM3IiwgdmFsdWU6IHsgbmFtZTogIlBhdCIsIGhlaWdo
dDogNjUsIHdlaWdodDogMTAwIH0gfSwKLSAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczMyIsIHZh
bHVlOiB7IG5hbWU6ICJBbm4iLCBoZWlnaHQ6IDUyLCB3ZWlnaHQ6IDExMCB9IH0sCi0gICAgICAg
IHsga2V5OiAiMjM3LTIzLTc3MzIiLCB2YWx1ZTogeyBuYW1lOiAiQm9iIiwgaGVpZ2h0OiA2MCwg
d2VpZ2h0OiAxMjAgfSB9LAotICAgICAgICB7IGtleTogIjIzNy0yMy03NzM1IiwgdmFsdWU6IHsg
bmFtZTogIlN1ZSIsIGhlaWdodDogNTgsIHdlaWdodDogMTMwIH0gfSwKLSAgICAgICAgeyBrZXk6
ICIyMzctMjMtNzczNiIsIHZhbHVlOiB7IG5hbWU6ICJKb2UiLCBoZWlnaHQ6IDY1LCB3ZWlnaHQ6
IDE1MCB9IH0sCi0gICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzQiLCB2YWx1ZTogeyBuYW1lOiAi
Um9uIiwgaGVpZ2h0OiA3Mywgd2VpZ2h0OiAxODAgfSB9Ci0gICAgXTsKLQotICAgIG9iamVjdFN0
b3JlRGF0YUhlaWdodFNvcnQgPSBbCi0gICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzMiLCB2YWx1
ZTogeyBuYW1lOiAiQW5uIiwgaGVpZ2h0OiA1Miwgd2VpZ2h0OiAxMTAgfSB9LAotICAgICAgICB7
IGtleTogIjIzNy0yMy03NzM1IiwgdmFsdWU6IHsgbmFtZTogIlN1ZSIsIGhlaWdodDogNTgsIHdl
aWdodDogMTMwIH0gfSwKLSAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczMiIsIHZhbHVlOiB7IG5h
bWU6ICJCb2IiLCBoZWlnaHQ6IDYwLCB3ZWlnaHQ6IDEyMCB9IH0sCi0gICAgICAgIHsga2V5OiAi
MjM3LTIzLTc3MzYiLCB2YWx1ZTogeyBuYW1lOiAiSm9lIiwgaGVpZ2h0OiA2NSwgd2VpZ2h0OiAx
NTAgfSB9LAotICAgICAgICB7IGtleTogIjIzNy0yMy03NzM3IiwgdmFsdWU6IHsgbmFtZTogIlBh
dCIsIGhlaWdodDogNjUsIHdlaWdodDogMTAwIH0gfSwKLSAgICAgICAgeyBrZXk6ICIyMzctMjMt
NzczNCIsIHZhbHVlOiB7IG5hbWU6ICJSb24iLCBoZWlnaHQ6IDczLCB3ZWlnaHQ6IDE4MCB9IH0K
LSAgICBdOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJz
aW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2Jq
ZWN0U3RvcmU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQotewotICAgIGRl
bGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0gICAgdHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0
OwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7Iik7Ci0KLSAgICBkZWJ1ZygiRmlyc3QsIGFk
ZCBhbGwgb3VyIGRhdGEgdG8gdGhlIG9iamVjdCBzdG9yZS4iKTsKLSAgICBhZGRlZERhdGEgPSAw
OwotICAgIGZvciAoaSBpbiBvYmplY3RTdG9yZURhdGEpIHsKLSAgICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1
ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7Iik7Ci0gICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24oZXZlbnQpIHsKLSAgICAgICAgaWYgKCsrYWRkZWREYXRhID09IG9iamVjdFN0b3JlRGF0YS5s
ZW5ndGgpIHsKLSAgICAgICAgICBjcmVhdGVJbmRleGVzKCk7Ci0gICAgICAgIH0KLSAgICAgIH0K
LSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUluZGV4ZXMoKQotewotICAgIGRlYnVnKCJOb3cg
Y3JlYXRlIHRoZSBpbmRleGVzLiIpOwotICAgIGZvciAoaSBpbiBpbmRleERhdGEpIHsKLSAgICAg
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KGluZGV4RGF0YVtpXS5uYW1lLCBp
bmRleERhdGFbaV0ua2V5UGF0aCwgaW5kZXhEYXRhW2ldLm9wdGlvbnMpOyIpOwotICAgIH0KLSAg
ICBzaG91bGRCZSgib2JqZWN0U3RvcmUuaW5kZXhOYW1lcy5sZW5ndGgiLCAiaW5kZXhEYXRhLmxl
bmd0aCIpOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBzZXRWZXJzaW9uQ29tcGxldGU7Ci19Ci0K
LWZ1bmN0aW9uIHNldFZlcnNpb25Db21wbGV0ZSgpCi17Ci0gICAgb2JqZWN0U3RvcmUgPSBldmFs
QW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFtZSkub2Jq
ZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKTsiKTsKLQotICAgIC8vIENoZWNrIGdsb2JhbCBwcm9w
ZXJ0aWVzIHRvIG1ha2Ugc3VyZSB0aGV5IGFyZSBjb3JyZWN0LgotICAgIHNob3VsZEJlKCJvYmpl
Y3RTdG9yZS5pbmRleE5hbWVzLmxlbmd0aCIsICJpbmRleERhdGEubGVuZ3RoIik7Ci0gICAgZm9y
IChpIGluIGluZGV4RGF0YSkgewotICAgICAgICBmb3VuZCA9IGZhbHNlOwotICAgICAgICBmb3Ig
KGogPSAwOyBqIDwgb2JqZWN0U3RvcmUuaW5kZXhOYW1lcy5sZW5ndGg7IGorKykgewotICAgICAg
ICAgICAgaWYgKG9iamVjdFN0b3JlLmluZGV4TmFtZXMuaXRlbShqKSA9PSBpbmRleERhdGFbaV0u
bmFtZSkgewotICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBzaG91bGRCZVRydWUoImZv
dW5kIik7Ci0gICAgICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBvYmplY3RTdG9yZS5p
bmRleChpbmRleERhdGFbaV0ubmFtZSk7Iik7Ci0gICAgICAgIHNob3VsZEJlKCJpbmRleC5uYW1l
IiwgImluZGV4RGF0YVtpXS5uYW1lIik7Ci0gICAgICAgIHNob3VsZEJlKCJpbmRleC5rZXlQYXRo
IiwgImluZGV4RGF0YVtpXS5rZXlQYXRoIik7Ci0gICAgICAgIHNob3VsZEJlKCJpbmRleC51bmlx
dWUiLCBpbmRleERhdGFbaV0ub3B0aW9ucy51bmlxdWUgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAg
ICB9Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmlu
ZGV4KCduYW1lJykuZ2V0S2V5KCdCb2InKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNoZWNrR2V0S2V5
OwotfQotCi1mdW5jdGlvbiBjaGVja0dldEtleSgpCi17Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRh
cmdldC5yZXN1bHQiLCAiJzIzNy0yMy03NzMyJyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScpLmdldCgnQm9iJyk7Iik7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBjaGVja0dldDsKLX0KLQotZnVuY3Rpb24gY2hlY2tHZXQoKQotewotICAg
IHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0Lm5hbWUiLCAiJ0JvYiciKTsKLSAgICBzaG91
bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5oZWlnaHQiLCAiNjAiKTsKLSAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0LnJlc3VsdC53ZWlnaHQiLCAiMTIwIik7Ci0KLSAgICBrZXlJbmRleCA9IDA7
Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4
KCduYW1lJykub3BlbktleUN1cnNvcigpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2
ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQ7Iik7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5u
YW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0
U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotICAgICAgICAgICAgc2hvdWxkQmVG
YWxzZSgiJ3ZhbHVlJyBpbiBjdXJzb3IiKTsKLQotICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vy
c29yLmNvbnRpbnVlKCk7Iik7Ci0KLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5Iiwg
Im9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAg
ICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNv
cnRba2V5SW5kZXhdLmtleSIpOwotICAgICAgICAgICAgc2hvdWxkQmVGYWxzZSgiJ3ZhbHVlJyBp
biBjdXJzb3IiKTsKLQotICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKLSAg
ICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAi
b2JqZWN0U3RvcmVEYXRhLmxlbmd0aCIpOwotICAgICAgICAgIHRlc3RHcm91cDMoKTsKLSAgICAg
ICAgfQotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDMoKQotewotICAgIGtleUluZGV4
ID0gMDsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
aW5kZXgoJ3dlaWdodCcpLm9wZW5LZXlDdXJzb3IobnVsbCwgSURCQ3Vyc29yLk5FWFQpOyIpOwot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2YWxB
bmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICAgIGlmIChjdXJz
b3IpIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0
YVdlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLndlaWdodCIpOwotICAgICAgICAgICAgc2hvdWxk
QmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YVdlaWdodFNvcnRba2V5SW5k
ZXhdLmtleSIpOwotCi0gICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsi
KTsKLQotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRh
V2VpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7Ci0gICAgICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhV2VpZ2h0U29ydFtrZXlJbmRl
eF0ua2V5Iik7Ci0KLSAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7Ci0gICAg
ICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAi
b2JqZWN0U3RvcmVEYXRhLmxlbmd0aCIpOwotICAgICAgICAgICAgdGVzdEdyb3VwNCgpOwotICAg
ICAgICB9Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXA0KCkKLXsKLS8qIHRoaXMgd2Fz
IHNwbGl0IG91dCBpbnRvIGEgc2VwYXJhdGUgdGVzdAotICAgIGRlYnVnKCJDaGVjayB0aGF0IHRo
ZSBuYW1lIGluZGV4IGVuZm9yY2VzIGl0cyB1bmlxdWUgY29uc3RyYWludC4iKTsKLSAgICBvYmpl
Y3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIudHJhbnNhY3Rpb24ob2JqZWN0
U3RvcmVOYW1lLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKS5vYmplY3RTdG9yZShvYmplY3RT
dG9yZU5hbWUpOyIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIm9iamVjdFN0b3JlLmFk
ZCh7IG5hbWU6ICdCb2InLCBoZWlnaHQ6IDYyLCB3ZWlnaHQ6IDE3MCB9LCAnMjM3LTIzLTc3Mzgn
KTsiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uQ09OU1RSQUlOVF9FUlIiKTsKLSovCi0KLSAgICBv
YmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIudHJhbnNhY3Rpb24ob2Jq
ZWN0U3RvcmVOYW1lKS5vYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpOyIpOwotICAgIGtleUlu
ZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSBvYmplY3RTdG9yZURhdGFOYW1lU29ydC5sZW5n
dGggLSAxOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3Rv
cmUuaW5kZXgoJ25hbWUnKS5vcGVuS2V5Q3Vyc29yKG51bGwsIElEQkN1cnNvci5QUkVWKTsiKTsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewotICAgICAgICBjdXJzb3IgPSBldmFs
QW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgICAgICBpZiAoY3Vy
c29yKSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURh
dGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOwotICAgICAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS5r
ZXkiKTsKLQotICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7Ci0K
LSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVT
b3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29y
LnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwot
Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleC0tOyIpOwotICAgICAgICB9Ci0gICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIi0xIik7Ci0gICAg
ICAgICAgICB0ZXN0R3JvdXA1KCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRl
c3RHcm91cDUoKQotewotICAgIGtleUluZGV4ID0gMTsKLSAgICBrZXlSYW5nZSA9IGV2YWxBbmRM
b2coImtleVJhbmdlID0gSURCS2V5UmFuZ2UuYm91bmQoJ0JvYicsICdSb24nKTsiKTsKLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCduYW1lJyku
b3BlbktleUN1cnNvcihrZXlSYW5nZSk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZl
bnQpIHsKLSAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0
LnJlc3VsdDsiKTsKLSAgICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5h
bWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RT
dG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7Ci0gICAgICAgICAgICBldmFsQW5kTG9n
KCJjdXJzb3IuY29udGludWUoKTsiKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4
Kys7Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgi
a2V5SW5kZXgiLCAiNSIpOwotICAgICAgICAgICAgdGVzdEdyb3VwNigpOwotICAgICAgICB9Ci0g
ICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXA2KCkKLXsKLSAgICBrZXlJbmRleCA9IGV2YWxB
bmRMb2coImtleUluZGV4ID0gMjsiKTsKLSAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtleVJh
bmdlID0gSURCS2V5UmFuZ2UuYm91bmQoJ0JvYicsICdSb24nLCB0cnVlKTsiKTsKLQotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5v
cGVuS2V5Q3Vyc29yKGtleVJhbmdlKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVu
dCkgewotICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQu
cmVzdWx0OyIpOwotICAgICAgICBpZiAoY3Vyc29yKSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgi
Y3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFt
ZSIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0
b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsKLQotICAgICAgICAgICAgZXZhbEFuZExv
ZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRl
eCsrOyIpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgc2hvdWxkQmUo
ImtleUluZGV4IiwgIjUiKTsKLSAgICAgICAgICAgIHRlc3RHcm91cDcoKTsKLSAgICAgICAgfQot
ICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdEdyb3VwNygpCi17Ci0gICAga2V5SW5kZXggPSBldmFs
QW5kTG9nKCJrZXlJbmRleCA9IDE7Iik7Ci0gICAga2V5UmFuZ2UgPSBldmFsQW5kTG9nKCJrZXlS
YW5nZSA9IElEQktleVJhbmdlLmJvdW5kKCdCb2InLCAnUm9uJywgZmFsc2UsIHRydWUpOyIpOwot
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgn
bmFtZScpLm9wZW5LZXlDdXJzb3Ioa2V5UmFuZ2UpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24gKGV2ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50
LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52
YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAi
b2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotCi0gICAgICAgICAgICBl
dmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2co
ImtleUluZGV4Kys7Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBz
aG91bGRCZSgia2V5SW5kZXgiLCAiNCIpOwotICAgICAgICAgICAgdGVzdEdyb3VwOCgpOwotICAg
ICAgICB9Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXA4KCkKLXsKLSAgICBrZXlJbmRl
eCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gMjsiKTsKLSAgICBrZXlSYW5nZSA9IGV2YWxBbmRM
b2coImtleVJhbmdlID0gSURCS2V5UmFuZ2UuYm91bmQoJ0JvYicsICdSb24nLCB0cnVlLCB0cnVl
KTsiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
aW5kZXgoJ25hbWUnKS5vcGVuS2V5Q3Vyc29yKGtleVJhbmdlKTsiKTsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGZ1bmN0aW9uIChldmVudCkgewotICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3Ig
PSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgICAgICBpZiAoY3Vyc29yKSB7Ci0gICAgICAg
ICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJ
bmRleF0udmFsdWUubmFtZSIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5
S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsKLQotICAgICAg
ICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7Ci0gICAgICAgICAgICBldmFs
QW5kTG9nKCJrZXlJbmRleCsrOyIpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIjQiKTsKLSAgICAgICAgICAgIHRlc3RHcm91cDko
KTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdEdyb3VwOSgpCi17Ci0gICAg
a2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDE7Iik7Ci0gICAga2V5UmFuZ2UgPSBl
dmFsQW5kTG9nKCJrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQoJ0JvYicpOyIpOwot
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgn
bmFtZScpLm9wZW5LZXlDdXJzb3Ioa2V5UmFuZ2UpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24gKGV2ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50
LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52
YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAi
b2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotCi0gICAgICAgICAgICBl
dmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2co
ImtleUluZGV4Kys7Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBz
aG91bGRCZSgia2V5SW5kZXgiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnQubGVuZ3RoIik7Ci0g
ICAgICAgICAgICB0ZXN0R3JvdXAxMCgpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1mdW5jdGlv
biB0ZXN0R3JvdXAxMCgpCi17Ci0gICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9
IDI7Iik7Ci0gICAga2V5UmFuZ2UgPSBldmFsQW5kTG9nKCJrZXlSYW5nZSA9IElEQktleVJhbmdl
Lmxvd2VyQm91bmQoJ0JvYicsIHRydWUpOyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9wZW5LZXlDdXJzb3Ioa2V5UmFu
Z2UpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICAgIGN1cnNv
ciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICAg
IGlmIChjdXJzb3IpIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVj
dFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBz
aG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5
SW5kZXhdLmtleSIpOwotCi0gICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUo
KTsiKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7Ci0gICAgICAgIH0K
LSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAib2JqZWN0
U3RvcmVEYXRhTmFtZVNvcnQubGVuZ3RoIik7Ci0gICAgICAgICAgICB0ZXN0R3JvdXAxMSgpOwot
ICAgICAgICB9Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXAxMSgpCi17Ci0gICAga2V5
SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDA7Iik7Ci0gICAga2V5UmFuZ2UgPSBldmFs
QW5kTG9nKCJrZXlSYW5nZSA9IElEQktleVJhbmdlLnVwcGVyQm91bmQoJ0pvZScpOyIpOwotCi0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFt
ZScpLm9wZW5LZXlDdXJzb3Ioa2V5UmFuZ2UpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24g
KGV2ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRh
cmdldC5yZXN1bHQ7Iik7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgICAgIHNob3Vs
ZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1
ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2Jq
ZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotCi0gICAgICAgICAgICBldmFs
QW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImtl
eUluZGV4Kys7Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgc2hvdWxk
QmUoImtleUluZGV4IiwgIjMiKTsKLSAgICAgICAgICB0ZXN0R3JvdXAxMigpOwotICAgICAgICB9
Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXAxMigpCi17Ci0gICAga2V5SW5kZXggPSBl
dmFsQW5kTG9nKCJrZXlJbmRleCA9IDA7Iik7Ci0gICAga2V5UmFuZ2UgPSBldmFsQW5kTG9nKCJr
ZXlSYW5nZSA9IElEQktleVJhbmdlLnVwcGVyQm91bmQoJ0pvZScsIHRydWUpOyIpOwotCi0gICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScp
Lm9wZW5LZXlDdXJzb3Ioa2V5UmFuZ2UpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2
ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQ7Iik7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5u
YW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0
U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotCi0gICAgICAgICAgICBldmFsQW5k
TG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUlu
ZGV4Kys7Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBzaG91bGRC
ZSgia2V5SW5kZXgiLCAiMiIpOwotICAgICAgICAgICAgdGVzdEdyb3VwMTMoKTsKLSAgICAgICAg
fQotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdEdyb3VwMTMoKQotewotICAgIGtleUluZGV4ID0g
ZXZhbEFuZExvZygia2V5SW5kZXggPSAzOyIpOwotICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygi
a2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5vbmx5KCdQYXQnKTsiKTsKLQotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuS2V5Q3Vy
c29yKGtleVJhbmdlKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewotICAg
ICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIp
OwotICAgICAgICBpZiAoY3Vyc29yKSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtl
eSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOwotICAg
ICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5h
bWVTb3J0W2tleUluZGV4XS5rZXkiKTsKLQotICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29y
LmNvbnRpbnVlKCk7Iik7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOwot
ICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgc2hvdWxkQmUoImtleUluZGV4
IiwgIjQiKTsKLSAgICAgICAgICAgIHRlc3RHcm91cDE0KCk7Ci0gICAgICAgIH0KLSAgICB9Ci19
Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDE0KCkKLXsKLSAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2co
ImtleUluZGV4ID0gMDsiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
b2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuQ3Vyc29yKCk7Iik7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29y
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgICAgaWYgKGN1cnNvcikgewotICAgICAg
ICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5
SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFy
eUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7Ci0gICAgICAg
ICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNv
cnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
dmFsdWUuaGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5o
ZWlnaHQiKTsKLSAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKLSAg
ICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIsICJvYmplY3RTdG9y
ZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOwotCi0gICAgICAg
ICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJ
bmRleF0udmFsdWUubmFtZSIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5
S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsKLSAgICAgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUubmFtZSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29y
dFtrZXlJbmRleF0udmFsdWUubmFtZSIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52
YWx1ZS5oZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLmhl
aWdodCIpOwotICAgICAgICAgICAgaWYgKCd3ZWlnaHQnIGluIGN1cnNvci52YWx1ZSkgewotICAg
ICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3Jl
RGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKLSAgICAgICAgfQotICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJvYmplY3RTdG9yZURh
dGFOYW1lU29ydC5sZW5ndGgiKTsKLSAgICAgICAgICAgIHRlc3RHcm91cDE1KCk7Ci0gICAgICAg
IH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDE1KCkKLXsKLSAgICBrZXlJbmRleCA9
IGV2YWxBbmRMb2coImtleUluZGV4ID0gb2JqZWN0U3RvcmVEYXRhTmFtZVNvcnQubGVuZ3RoIC0g
MTsiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
aW5kZXgoJ25hbWUnKS5vcGVuQ3Vyc29yKG51bGwsIElEQkN1cnNvci5QUkVWKTsiKTsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewotICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9n
KCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgICAgICBpZiAoY3Vyc29yKSB7
Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1l
U29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNv
ci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsK
LSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUubmFtZSIsICJvYmplY3RTdG9yZURh
dGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOwotICAgICAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci52YWx1ZS5oZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhd
LnZhbHVlLmhlaWdodCIpOwotICAgICAgICAgICAgaWYgKCd3ZWlnaHQnIGluIGN1cnNvci52YWx1
ZSkgewotICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9i
amVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7Ci0K
LSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVT
b3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29y
LnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwot
ICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0
YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgi
Y3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0u
dmFsdWUuaGVpZ2h0Iik7Ci0gICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVl
KSB7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS53ZWlnaHQiLCAib2Jq
ZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLndlaWdodCIpOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICBrZXlJbmRleC0tOwotICAgICAgICB9Ci0gICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIi0xIik7Ci0gICAgICAgICAgICB0
ZXN0R3JvdXAxNigpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXAx
NigpCi17Ci0gICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDE7Iik7Ci0gICAg
a2V5UmFuZ2UgPSBldmFsQW5kTG9nKCJrZXlSYW5nZSA9IElEQktleVJhbmdlLmJvdW5kKCdCb2In
LCAnUm9uJyk7Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVj
dFN0b3JlLmluZGV4KCduYW1lJykub3BlbkN1cnNvcihrZXlSYW5nZSk7Iik7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vy
c29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgICAgaWYgKGN1cnNvcikgewotICAg
ICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRb
a2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJp
bWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7Ci0gICAg
ICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFt
ZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJz
b3IudmFsdWUuaGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1
ZS5oZWlnaHQiKTsKLSAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsK
LSAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVj
dFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7Ci0KLSAg
ICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0
W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnBy
aW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotICAg
ICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0YU5h
bWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vy
c29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFs
dWUuaGVpZ2h0Iik7Ci0gICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7
Ci0gICAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIsICJvYmpl
Y3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7Ci0gICAgICAgIH0K
LSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNSIpOwot
ICAgICAgICAgICAgdGVzdEdyb3VwMTcoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rp
b24gdGVzdEdyb3VwMTcoKQotewotICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXgg
PSAyOyIpOwotICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlSYW5n
ZS5ib3VuZCgnQm9iJywgJ1JvbicsIHRydWUpOyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9wZW5DdXJzb3Ioa2V5UmFu
Z2UpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICAgIGN1cnNv
ciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICAg
IGlmIChjdXJzb3IpIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVj
dFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBz
aG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5
SW5kZXhdLmtleSIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwg
Im9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAg
ICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1l
U29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7Ci0gICAgICAgICAgICBpZiAoJ3dlaWdodCcg
aW4gY3Vyc29yLnZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZh
bHVlLndlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUud2Vp
Z2h0Iik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5j
b250aW51ZSgpOyIpOwotCi0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmpl
Y3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOwotICAgICAgICAgICAg
c2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tl
eUluZGV4XS5rZXkiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUubmFtZSIs
ICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOwotICAgICAg
ICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFt
ZVNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOwotICAgICAgICAgICAgaWYgKCd3ZWlnaHQn
IGluIGN1cnNvci52YWx1ZSkgewotICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52
YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLndl
aWdodCIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRl
eCsrOyIpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgc2hvdWxkQmUo
ImtleUluZGV4IiwgIjUiKTsKLSAgICAgICAgICAgIHRlc3RHcm91cDE4KCk7Ci0gICAgICAgIH0K
LSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDE4KCkKLXsKLSAgICBrZXlJbmRleCA9IGV2
YWxBbmRMb2coImtleUluZGV4ID0gMTsiKTsKLSAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtl
eVJhbmdlID0gSURCS2V5UmFuZ2UuYm91bmQoJ0JvYicsICdSb24nLCBmYWxzZSwgdHJ1ZSk7Iik7
Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4
KCduYW1lJykub3BlbkN1cnNvcihrZXlSYW5nZSk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlv
biAoZXZlbnQpIHsKLSAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICAgICAgc2hv
dWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZh
bHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJv
YmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7Ci0gICAgICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5k
ZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVp
Z2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsK
LSAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKLSAgICAgICAgICAg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5h
bWVTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7Ci0KLSAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52
YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAi
b2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotICAgICAgICAgICAgc2hv
dWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUlu
ZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmhl
aWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7
Ci0gICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7Ci0gICAgICAgICAg
ICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIsICJvYmplY3RTdG9yZURhdGFO
YW1lU29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNCIpOwotICAgICAgICAgICAg
dGVzdEdyb3VwMTkoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdEdyb3Vw
MTkoKQotewotICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAyOyIpOwotICAg
IGtleVJhbmdlID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5ib3VuZCgnQm9i
JywgJ1JvbicsIHRydWUsIHRydWUpOyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9wZW5DdXJzb3Ioa2V5UmFuZ2UpOyIp
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2
YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICAgIGlmIChj
dXJzb3IpIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3Jl
RGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhd
LmtleSIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVj
dFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBz
aG91bGRCZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtr
ZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7Ci0gICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vy
c29yLnZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndl
aWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51
ZSgpOyIpOwotCi0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9y
ZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOwotICAgICAgICAgICAgc2hvdWxk
QmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4
XS5rZXkiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUubmFtZSIsICJvYmpl
Y3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOwotICAgICAgICAgICAg
c2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRb
a2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOwotICAgICAgICAgICAgaWYgKCd3ZWlnaHQnIGluIGN1
cnNvci52YWx1ZSkgewotICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS53
ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLndlaWdodCIp
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIp
OwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgc2hvdWxkQmUoImtleUlu
ZGV4IiwgIjQiKTsKLSAgICAgICAgICAgIHRlc3RHcm91cDIwKCk7Ci0gICAgICAgIH0KLSAgICB9
Ci19Ci0KLWZ1bmN0aW9uIHRlc3RHcm91cDIwKCkKLXsKLSAgICBrZXlJbmRleCA9IGV2YWxBbmRM
b2coImtleUluZGV4ID0gNDsiKTsKLSAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtleVJhbmdl
ID0gSURCS2V5UmFuZ2UuYm91bmQoJ0JvYicsICdSb24nKTsiKTsKLQotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuQ3Vyc29y
KGtleVJhbmdlLCBJREJDdXJzb3IuUFJFVik7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAo
ZXZlbnQpIHsKLSAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFy
Z2V0LnJlc3VsdDsiKTsKLSAgICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICAgICAgc2hvdWxk
QmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVl
Lm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmpl
Y3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7Ci0gICAgICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhd
LnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0
IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKLSAg
ICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKLSAgICAgICAgICAgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVT
b3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7Ci0KLSAgICAgICAgICAgIHNob3Vs
ZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1
ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2Jq
ZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotICAgICAgICAgICAgc2hvdWxk
QmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4
XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmhlaWdo
dCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7Ci0g
ICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7Ci0gICAgICAgICAgICAg
ICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1l
U29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIGV2YWxBbmRMb2coImtleUluZGV4LS07Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiMCIpOwotICAgICAgICAgICAgdGVz
dEdyb3VwMjEoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdEdyb3VwMjEo
KQotewotICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAzOyIpOwotICAgIGtl
eVJhbmdlID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5vbmx5KDY1KTsiKTsK
LQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgo
J2hlaWdodCcpLm9wZW5LZXlDdXJzb3Ioa2V5UmFuZ2UsIElEQkN1cnNvci5ORVhUKTsiKTsKLSAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewotICAgICAgICBjdXJzb3IgPSBldmFsQW5k
TG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgICAgICBpZiAoY3Vyc29y
KSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFI
ZWlnaHRTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKLSAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tleUluZGV4
XS5rZXkiKTsKLQotICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7
Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOwotICAgICAgICB9Ci0gICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIjUiKTsKLSAgICAg
ICAgICAgIHRlc3RHcm91cDIyKCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRl
c3RHcm91cDIyKCkKLXsKLSAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gMzsi
KTsKLSAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtleVJhbmdlID0gSURCS2V5UmFuZ2Uub25s
eSg2NSk7Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0
b3JlLmluZGV4KCdoZWlnaHQnKS5vcGVuS2V5Q3Vyc29yKGtleVJhbmdlLCBJREJDdXJzb3IuTkVY
VF9OT19EVVBMSUNBVEUpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0g
ICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7
Iik7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
a2V5IiwgIm9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIp
OwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3Jl
RGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLmtleSIpOwotCi0gICAgICAgICAgICBldmFsQW5kTG9n
KCJjdXJzb3IuY29udGludWUoKTsiKTsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4
Kys7Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgi
a2V5SW5kZXgiLCAiNCIpOwotICAgICAgICAgICAgdGVzdEdyb3VwMjQoKTsKLSAgICAgICAgfQot
ICAgIH0KLX0KLQotLyogdGhpcyB3YXMgc3BsaXQgb3V0IGludG8gYSBzZXBhcmF0ZSB0ZXN0Ci1m
dW5jdGlvbiB0ZXN0R3JvdXAyMygpCi17Ci0gICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJ
bmRleCA9IDU7Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVj
dFN0b3JlLmluZGV4KCdoZWlnaHQnKS5vcGVuS2V5Q3Vyc29yKG51bGwsIElEQkN1cnNvci5QUkVW
X05PX0RVUExJQ0FURSk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAg
ICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsi
KTsKLSAgICAgICAgaWYgKGN1cnNvcikgewotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5r
ZXkiLCAib2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7
Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVE
YXRhSGVpZ2h0U29ydFtrZXlJbmRleF0ua2V5Iik7Ci0KLSAgICAgICAgICAgIGV2YWxBbmRMb2co
ImN1cnNvci5jb250aW51ZSgpOyIpOwotICAgICAgICAgICAgaWYgKGtleUluZGV4ID09IDUpIHsK
LSAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleC0tOyIpOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgtLTsiKTsKLSAgICAgICAgfQotICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICItMSIpOwotICAg
ICAgICAgICAgdGVzdEdyb3VwMjQoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLSovCi0KLWZ1bmN0
aW9uIHRlc3RHcm91cDI0KCkKLXsKLSAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4
ID0gMzsiKTsKLSAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtleVJhbmdlID0gSURCS2V5UmFu
Z2Uub25seSg2NSk7Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9i
amVjdFN0b3JlLmluZGV4KCdoZWlnaHQnKS5vcGVuQ3Vyc29yKGtleVJhbmdlLCBJREJDdXJzb3Iu
TkVYVCk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgICAgY3Vy
c29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICAg
ICAgaWYgKGN1cnNvcikgewotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2Jq
ZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7Ci0gICAgICAg
ICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhSGVpZ2h0
U29ydFtrZXlJbmRleF0ua2V5Iik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVl
Lm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIp
OwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQiLCAib2JqZWN0U3Rv
cmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7Ci0gICAgICAgICAgICBp
ZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci52YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRl
eF0udmFsdWUud2VpZ2h0Iik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGV2YWxBbmRM
b2coImN1cnNvci5jb250aW51ZSgpOyIpOwotICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5k
ZXgrKzsiKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHNob3VsZEJl
KCJrZXlJbmRleCIsICI1Iik7Ci0gICAgICAgICAgICB0ZXN0R3JvdXAyNSgpOwotICAgICAgICB9
Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXAyNSgpCi17Ci0gICAga2V5SW5kZXggPSBl
dmFsQW5kTG9nKCJrZXlJbmRleCA9IDM7Iik7Ci0gICAga2V5UmFuZ2UgPSBldmFsQW5kTG9nKCJr
ZXlSYW5nZSA9IElEQktleVJhbmdlLm9ubHkoNjUpOyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnaGVpZ2h0Jykub3BlbkN1cnNvcihr
ZXlSYW5nZSwgSURCQ3Vyc29yLk5FWFRfTk9fRFVQTElDQVRFKTsiKTsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGZ1bmN0aW9uIChldmVudCkgewotICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3Ig
PSBldmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgICAgICBpZiAoY3Vyc29yKSB7Ci0gICAgICAg
ICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tl
eUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJp
bWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tleUluZGV4XS5rZXkiKTsKLSAg
ICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUubmFtZSIsICJvYmplY3RTdG9yZURhdGFI
ZWlnaHRTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgi
Y3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tleUluZGV4
XS52YWx1ZS5oZWlnaHQiKTsKLSAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFs
dWUpIHsKLSAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIsICJv
YmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7
Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOwotICAgICAgICB9Ci0gICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIjQiKTsKLSAgICAg
ICAgICAgIHRlc3RHcm91cDI3KCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLS8qIHRoaXMgd2Fz
IHNwbGl0IG91dCBpbnRvIGEgc2VwYXJhdGUgdGVzdAotZnVuY3Rpb24gdGVzdEdyb3VwMjYoKQot
ewotICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSA1OyIpOwotCi0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnaGVpZ2h0Jyku
b3BlbkN1cnNvcihudWxsLCBJREJDdXJzb3IuUFJFVl9OT19EVVBMSUNBVEUpOyIpOwotICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2co
ImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsK
LSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YUhlaWdo
dFNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1
cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLmtl
eSIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0
b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKLSAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRb
a2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOwotICAgICAgICAgICAgaWYgKCd3ZWlnaHQnIGluIGN1
cnNvci52YWx1ZSkgewotICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2Vp
Z2h0IiwgIm9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLndlaWdodCIp
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGlu
dWUoKTsiKTsKLSAgICAgICAgICAgIGlmIChrZXlJbmRleCA9PSA1KSB7Ci0gICAgICAgICAgICAg
ICAgZXZhbEFuZExvZygia2V5SW5kZXgtLTsiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGV2YWxBbmRMb2coImtleUluZGV4LS07Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiLTEiKTsKLSAgICAgICAgICAgIHRlc3RH
cm91cDI3KCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0qLwotCi1mdW5jdGlvbiB0ZXN0R3JvdXAy
NygpCi17Ci0gICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDA7Iik7Ci0KLSAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCduYW1l
Jykub3BlbktleUN1cnNvcigpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7
Ci0gICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1
bHQ7Iik7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJz
b3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7
Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVE
YXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotCi0gICAgICAgICAgICBuZXh0S2V5ID0gZXZh
bEFuZExvZygibmV4dEtleSA9ICFrZXlJbmRleCA/ICdQYXQnIDogdW5kZWZpbmVkOyIpOwotICAg
ICAgICAgICAgaWYgKG5leHRLZXkpIHsKLSAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJz
b3IuY29udGludWUobmV4dEtleSk7Iik7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOwotICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1l
U29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNv
ci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsK
LQotICAgICAgICAgICAgaWYgKCFrZXlJbmRleCkgewotICAgICAgICAgICAgICAgIGtleUluZGV4
ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAzOyIpOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHNob3Vs
ZEJlKCJrZXlJbmRleCIsICJvYmplY3RTdG9yZURhdGEubGVuZ3RoIik7Ci0gICAgICAgICAgICB0
ZXN0R3JvdXAyOCgpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXAy
OCgpCi17Ci0gICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDA7Iik7Ci0KLSAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCduYW1l
Jykub3BlbktleUN1cnNvcigpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7
Ci0gICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1
bHQ7Iik7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJz
b3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7
Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVE
YXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotCi0gICAgICAgICAgICBuZXh0S2V5ID0gZXZh
bEFuZExvZygibmV4dEtleSA9ICFrZXlJbmRleCA/ICdGbG8nIDogdW5kZWZpbmVkOyIpOwotICAg
ICAgICAgICAgaWYgKG5leHRLZXkpIHsKLSAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJz
b3IuY29udGludWUobmV4dEtleSk7Iik7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOwotICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1l
U29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNv
ci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsK
LQotICAgICAgICAgICAga2V5SW5kZXggKz0ga2V5SW5kZXggPyAxIDogMjsKLSAgICAgICAgfQot
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJvYmplY3RT
dG9yZURhdGEubGVuZ3RoIik7Ci0gICAgICAgICAgICB0ZXN0R3JvdXAyOSgpOwotICAgICAgICB9
Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXAyOSgpCi17Ci0gICAga2V5SW5kZXggPSBl
dmFsQW5kTG9nKCJrZXlJbmRleCA9IDA7Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCduYW1lJykub3BlbkN1cnNvcigpOyIpOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2YWxBbmRM
b2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICAgIGlmIChjdXJzb3Ip
IHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5h
bWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vy
c29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIp
OwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3Jl
RGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRl
eF0udmFsdWUuaGVpZ2h0Iik7Ci0gICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZh
bHVlKSB7Ci0gICAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIs
ICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIG5leHRLZXkgPSBldmFsQW5kTG9nKCJuZXh0S2V5ID0g
IWtleUluZGV4ID8gJ1BhdCcgOiB1bmRlZmluZWQ7Iik7Ci0gICAgICAgICAgICBpZiAobmV4dEtl
eSkgewotICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZShuZXh0S2V5
KTsiKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZXZhbEFuZExvZygi
Y3Vyc29yLmNvbnRpbnVlKCk7Iik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHNob3Vs
ZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1
ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2Jq
ZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwotICAgICAgICAgICAgc2hvdWxk
QmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4
XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmhlaWdo
dCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7Ci0g
ICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7Ci0gICAgICAgICAgICAg
ICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1l
U29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIGlmICgha2V5SW5kZXgpIHsKLSAgICAgICAgICAgICAgICBrZXlJbmRleCA9IGV2YWxBbmRM
b2coImtleUluZGV4ID0gMzsiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgia2V5SW5k
ZXgiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnQubGVuZ3RoIik7Ci0gICAgICAgICAgICB0ZXN0
R3JvdXAzMCgpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0R3JvdXAzMCgp
Ci17Ci0gICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDA7Iik7Ci0KLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCduYW1lJyku
b3BlbkN1cnNvcigpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Ci0gICAg
ICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7
Ci0gICAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5
IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAg
ICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFt
ZVNvcnRba2V5SW5kZXhdLmtleSIpOwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1
ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7
Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9y
ZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7Ci0gICAgICAgICAgICBpZiAo
J3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgICBzaG91bGRCZSgi
Y3Vyc29yLnZhbHVlLndlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0u
dmFsdWUud2VpZ2h0Iik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIG5leHRLZXkgPSBl
dmFsQW5kTG9nKCJuZXh0S2V5ID0gIWtleUluZGV4ID8gJ0ZsbycgOiB1bmRlZmluZWQ7Iik7Ci0g
ICAgICAgICAgICBpZiAobmV4dEtleSkgewotICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImN1
cnNvci5jb250aW51ZShuZXh0S2V5KTsiKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5h
bWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRCZSgiY3Vy
c29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIp
OwotICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3Jl
RGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7Ci0gICAgICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRl
eF0udmFsdWUuaGVpZ2h0Iik7Ci0gICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZh
bHVlKSB7Ci0gICAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIs
ICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIGtleUluZGV4ICs9IGtleUluZGV4ID8gMSA6IDI7Ci0g
ICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgi
LCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnQubGVuZ3RoIik7Ci0gICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9pbmRleGVzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgog
PC9ib2R5PgogPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMtZGVsZXRlLW51bGwta2V5Lmh0bWwgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMtZGVsZXRl
LW51bGwta2V5Lmh0bWwKaW5kZXggZTkwMDg4NzI4OTA1YTQ4YzJhNmRkN2NhNWUyOWJkMTAwNDA3
NDI5YS4uY2Y2Njc1ZmE3NGY3MTY5OTI2OTA3MDllN2Y3Mzk4OGRlZjM0YjcyYyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWlyZW1lbnRz
LWRlbGV0ZS1udWxsLWtleS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vemlsbGEva2V5LXJlcXVpcmVtZW50cy1kZWxldGUtbnVsbC1rZXkuaHRtbApAQCAtMSw1MyAr
MSwxMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9t
eHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3Rf
a2V5X3JlcXVpcmVtZW50cy5odG1sCi0gIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKLSAgICAi
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgotICAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCi0tLT4K
IDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFy
ZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlv
bigiVGVzdCBJbmRleGVkREIncyBiZWhhdmlvciBkZWxldGluZyBlbnRyeSB3aXRoIG5vIGtleSIp
OwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0g
ICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkg
VGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVu
KG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nl
c3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0K
LWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
Y2xlYW5EYXRhYmFzZUFuZENyZWF0ZU9iamVjdFN0b3JlOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjbGVhbkRhdGFiYXNlQW5k
Q3JlYXRlT2JqZWN0U3RvcmUoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0g
ICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVj
dFN0b3JlKCdiYXInKTsiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJvYmplY3RTdG9y
ZS5kZWxldGUobnVsbCk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0gICAg
ZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMva2V5LXJlcXVpcmVtZW50cy1kZWxldGUtbnVsbC1rZXkuanMiPjwvc2NyaXB0
PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEva2V5LXJlcXVpcmVtZW50cy1pbmxpbmUtYW5kLXBh
c3NlZC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVx
dWlyZW1lbnRzLWlubGluZS1hbmQtcGFzc2VkLmh0bWwKaW5kZXggZGMzNWU1ODEyMDI5NzRmNzBi
YTRjZmY1YzA4NDY3MmZhNGJhYzY1Mi4uYjlkYjNiNzA5MWZiMGZmYjBjZTIyZGFlMDU0MDdiNzM2
ZmI0NThlMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9rZXktcmVxdWlyZW1lbnRzLWlubGluZS1hbmQtcGFzc2VkLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWlyZW1lbnRzLWlubGluZS1hbmQt
cGFzc2VkLmh0bWwKQEAgLTEsNTQgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLQotICBv
cmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2Rv
bS9pbmRleGVkREIvdGVzdC90ZXN0X2tleV9yZXF1aXJlbWVudHMuaHRtbAotICBsaWNlbnNlIG9m
IG9yaWdpbmFsIHRlc3Q6Ci0gICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KLSAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8gIgotLS0+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5Pgot
PHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgYmVoYXZpb3IgYWRkaW5n
IGlubGluZSBhbmQgcGFzc2VkIGtleSBzaW11bHRhbmVvdXNseSIpOwotCi1mdW5jdGlvbiB0ZXN0
KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9j
YXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9u
KSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNj
ZXNzKCkKLXsKLSAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKLSAgICBkYiA9IGV2YWxBbmRM
b2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCi17Ci0gICAg
ZGVidWcoImNsZWFuRGF0YWJhc2UoKToiKTsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIp
OwotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVP
YmplY3RTdG9yZSgnYmF6JywgeyBrZXlQYXRoOiAnaWQnIH0pOyIpOwotICAgIGV2YWxBbmRFeHBl
Y3RFeGNlcHRpb24oIm9iamVjdFN0b3JlLmFkZCh7aWQ6IDV9LCA1KTsiLCAiSURCRGF0YWJhc2VF
eGNlcHRpb24uREFUQV9FUlIiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7
Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9rZXktcmVxdWlyZW1lbnRzLWlu
bGluZS1hbmQtcGFzc2VkLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXkt
cmVxdWlyZW1lbnRzLXB1dC1uby1rZXkuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEva2V5LXJlcXVpcmVtZW50cy1wdXQtbm8ta2V5Lmh0bWwKaW5kZXggNTVkZjA4
YTNhODY5ODc5NmQwOWRiOTc4ZjVlM2EwN2YzNjE2OGZkZS4uNmQ0ZTA1NjBiMzhiMmY2N2RjNjNk
ZGE1NGE0NWY3NTU1NDU5MmNlMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9rZXktcmVxdWlyZW1lbnRzLXB1dC1uby1rZXkuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMtcHV0LW5v
LWtleS5odG1sCkBAIC0xLDUzICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KLTwhLS0KLSAgb3Jp
Z2luYWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20v
aW5kZXhlZERCL3Rlc3QvdGVzdF9rZXlfcmVxdWlyZW1lbnRzLmh0bWwKLSAgbGljZW5zZSBvZiBv
cmlnaW5hbCB0ZXN0OgotICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1
YmxpYyBEb21haW4uCi0gICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21h
aW4vemVyby8xLjAvICIKLS0tPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxz
Y3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGJlaGF2aW9yIHB1dGluZyB3
aXRob3V0IGtleSIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVm
aXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3Jp
cHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImlu
ZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRM
b2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGNsZWFuRGF0YWJhc2U7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQotewotICAgIGRlbGV0ZUFs
bE9iamVjdFN0b3JlcyhkYik7Ci0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdiYXInKTsiKTsKLSAgICBldmFsQW5kRXhwZWN0
RXhjZXB0aW9uKCJvYmplY3RTdG9yZS5wdXQoe30pOyIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5E
QVRBX0VSUiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2tleS1yZXF1aXJlbWVudHMtcHV0LW5vLWtleS5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWlyZW1lbnRzLXB1
dC1udWxsLWtleS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9r
ZXktcmVxdWlyZW1lbnRzLXB1dC1udWxsLWtleS5odG1sCmluZGV4IGI0ZTI5ZGEzNzk0YjQ2ZmY5
MWViNjVkOGUyYjc2Mzk3ZmJkZjcxZDQuLjcwYzkyNDE5NjA3ZDNkN2YxZmIyMDA0OGNiOWYwMDNk
MjU1MzYxOTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEva2V5LXJlcXVpcmVtZW50cy1wdXQtbnVsbC1rZXkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMtcHV0LW51bGwta2V5Lmh0
bWwKQEAgLTEsNTMgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLQotICBvcmlnaW5hbCB0
ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVk
REIvdGVzdC90ZXN0X2tleV9yZXF1aXJlbWVudHMuaHRtbAotICBsaWNlbnNlIG9mIG9yaWdpbmFs
IHRlc3Q6Ci0gICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERv
bWFpbi4KLSAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJv
LzEuMC8gIgotLS0+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4K
LQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgYmVoYXZpb3IgcHV0KClpbmcgd2l0aCBu
dWxsIGtleSIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhl
cygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRp
b24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4
ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
b3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2co
ImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGNsZWFuRGF0YWJhc2U7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQotewotICAgIGRlbGV0ZUFsbE9i
amVjdFN0b3JlcyhkYik7Ci0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9y
ZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdiYXInKTsiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJvYmplY3RTdG9yZS5wdXQoe30sIG51bGwpOyIsICJJREJEYXRhYmFzZUV4Y2VwdGlv
bi5EQVRBX0VSUiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2tleS1yZXF1aXJlbWVudHMtcHV0LW51bGwt
a2V5LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgotCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVu
dHMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEva2V5LXJlcXVp
cmVtZW50cy5odG1sCmluZGV4IDgzMWYyMzUyODMwYzdmYjU0NWM0YTUxOTkwOWVhM2M3NWY4MGQ4
ZTQuLmMzMjRmZjUxNGQwZTVlZjkyMjY5Njg1OGZkZWIxNjRkODM1YjlhMWMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEva2V5LXJlcXVpcmVtZW50cy5o
dG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEva2V5LXJlcXVp
cmVtZW50cy5odG1sCkBAIC0xLDg2ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KLTwhLS0KLSAg
b3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9k
b20vaW5kZXhlZERCL3Rlc3QvdGVzdF9rZXlfcmVxdWlyZW1lbnRzLmh0bWwKLSAgbGljZW5zZSBv
ZiBvcmlnaW5hbCB0ZXN0OgotICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCi0gICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNk
b21haW4vemVyby8xLjAvICIKLS0tPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4K
LTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGV2ZW50LnRhcmdldC5y
ZXN1bHQgYWZ0ZXIgYWRkKCkgYW5kIHB1dCgpIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAg
IHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRo
bmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewot
ICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgp
Ci17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLSAgICBvYmplY3RTdG9yZSA9IGV2
YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycsIHsgYXV0
b0luY3JlbWVudDogdHJ1ZSB9KTsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IG9iamVjdFN0b3JlLmFkZCh7fSk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0
QWRkOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQot
Ci1mdW5jdGlvbiBwb3N0QWRkKCkKLXsKLSAgICBrZXkxID0gZXZhbEFuZExvZygia2V5MSA9IGV2
ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5wdXQoe30sIGtleTEpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
cG9zdFB1dDE7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci19Ci0KLWZ1bmN0aW9uIHBvc3RQdXQxKCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0
LnJlc3VsdCIsICJrZXkxIik7Ci0gICAga2V5MiA9IGV2YWxBbmRMb2coImtleTIgPSAxMDsiKTsK
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCh7fSwg
a2V5Mik7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0UHV0MjsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gcG9zdFB1
dDIoKQotewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgImtleTIiKTsKLSAg
ICBrZXkyID0gZXZhbEFuZExvZygia2V5MiA9IDEwMDsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCh7fSwga2V5Mik7Iik7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBwb3N0UHV0MzsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gcG9zdFB1dDMoKQotewotICAgIHNob3VsZEJl
KCJldmVudC50YXJnZXQucmVzdWx0IiwgImtleTIiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0K
LQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9rZXktcmVx
dWlyZW1lbnRzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgotCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29iamVjdC1j
dXJzb3JzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29iamVj
dC1jdXJzb3JzLmh0bWwKaW5kZXggMTAyYWEwYTQxNDAwMzkxYmE5ZjI2ZDZiMWYyODQ3NWM5NDUx
YTM2NS4uYTE0NzFlODY5ZWI1M2I2YzIwZmZiN2U0YzhlMTA5OTVjZTEyZDcwOCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9vYmplY3QtY3Vyc29ycy5o
dG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0LWN1
cnNvcnMuaHRtbApAQCAtMSw5NyArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9y
aWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9t
L2luZGV4ZWREQi90ZXN0L3Rlc3Rfb2JqZWN0Q3Vyc29ycy5odG1sCi0gIGxpY2Vuc2Ugb2Ygb3Jp
Z2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJs
aWMgRG9tYWluLgotICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWlu
L3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2Ny
aXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBpbmRleCBjdXJzb3JzIik7Ci0K
LWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBu
YW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0
IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFt
ZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsK
LSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVu
Y3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50
YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRi
LnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFz
ZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQot
ZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRi
KTsKLSAgICBhdXRvSW5jcmVtZW50ID0gZXZhbEFuZExvZygiYXV0b0luY3JlbWVudCA9IGZhbHNl
OyIpOwotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVh
dGVPYmplY3RTdG9yZSgnYScsIHsga2V5UGF0aDogJ2lkJywgYXV0b0luY3JlbWVudDogYXV0b0lu
Y3JlbWVudCB9KTsiKTsKLSAgICBpbmRleGVzID0gWwotICAgICAgICB7IG5hbWU6ICJhIiwgb3B0
aW9uczogeyB9IH0sCi0gICAgICAgIHsgbmFtZTogImIiLCBvcHRpb25zOiB7IHVuaXF1ZTogdHJ1
ZSB9IH0KLSAgICBdOwotICAgIGZvciAoaiBpbiBpbmRleGVzKSB7Ci0gICAgICAgIGV2YWxBbmRM
b2coIm9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KGluZGV4ZXNbal0ubmFtZSwgJ25hbWUnLCBpbmRl
eGVzW2pdLm9wdGlvbnMpOyIpOwotICAgIH0KLSAgICBkYXRhID0gZXZhbEFuZExvZygiZGF0YSA9
IHsgbmFtZTogJ0JlbicsIGlkOiAxIH07Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoZGF0YSk7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBwb3N0QWRkOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotfQotCi1mdW5jdGlvbiBwb3N0QWRkKCkKLXsKLSAgICBudW1JbmRleGVzID0gaW5kZXhlcy5s
ZW5ndGg7Ci0gICAgaW5kZXhlc0ZpbmlzaGVkID0gMDsKLSAgICBmb3IgKGogaW4gaW5kZXhlcykg
ewotICAgICAgICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gb2JqZWN0U3RvcmUuaW5kZXgo
aW5kZXhlc1tqXS5uYW1lKTsiKTsKLSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVl
c3QgPSBpbmRleC5vcGVuQ3Vyc29yKCk7Iik7Ci0gICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0
aW9uKGV2ZW50KSB7Ci0gICAgICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC52
YWx1ZS5uYW1lIiwgIidCZW4nIik7Ci0gICAgICAgICAgICBpZiAoKytpbmRleGVzRmluaXNoZWQg
PT0gbnVtSW5kZXhlcykgewotICAgICAgICAgICAgICAgIGlmIChhdXRvSW5jcmVtZW50KSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgICAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgICAgIHNldHVwQXV0b0luY3JlbWVudCgpOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9u
IHNldHVwQXV0b0luY3JlbWVudCgpCi17Ci0gICAgYXV0b0luY3JlbWVudCA9IGV2YWxBbmRMb2co
ImF1dG9JbmNyZW1lbnQgPSB0cnVlOyIpOwotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygi
b2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnYicsIHsga2V5UGF0aDogJ2lkJywg
YXV0b0luY3JlbWVudDogYXV0b0luY3JlbWVudCB9KTsiKTsKLSAgICBmb3IgKGogaW4gaW5kZXhl
cykgewotICAgICAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5jcmVhdGVJbmRleChpbmRleGVz
W2pdLm5hbWUsICduYW1lJywgaW5kZXhlc1tqXS5vcHRpb25zKTsiKTsKLSAgICB9Ci0gICAgZGF0
YSA9IGV2YWxBbmRMb2coImRhdGEgPSB7IG5hbWU6ICdCZW4nIH07Iik7Ci0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoZGF0YSk7Iik7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBwb3N0QWRkOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL29iamVjdC1jdXJzb3JzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9i
b2R5PgogPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL29iamVjdC1pZGVudGl0eS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9vYmplY3QtaWRlbnRpdHkuaHRtbAppbmRleCBlNDEyNDk2MTE4NTA0ZDg4
YTYyMDIxMzBlZmIxNzNjY2I3MThlMjQ3Li5kMTBiZTlkNzY0NTY3ZTI1ZWRkYmY5YzM3YzI4Yjgz
Zjk5YjU3MjljIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL29iamVjdC1pZGVudGl0eS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvb2JqZWN0LWlkZW50aXR5Lmh0bWwKQEAgLTEsNzYgKzEsMTAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPCEtLQotICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3Jn
L21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X29iamVjdF9pZGVudGl0
eS5odG1sP2ZvcmNlPTEKLSAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgotICAgICIgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCi0gICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKLS0tPgogPGh0bWw+
CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+
PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0
IEluZGV4ZWREQjogb2JqZWN0IGlkZW50aXR5Iik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAg
IHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRo
bmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewot
ICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZU9iamVjdFN0b3JlQW5kSW5kZXg7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0
ZU9iamVjdFN0b3JlQW5kSW5kZXgoKQotewotICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygi
dHJhbnNhY3Rpb24gPSBldmVudC50YXJnZXQudHJhbnNhY3Rpb247Iik7Ci0gICAgZGVsZXRlQWxs
T2JqZWN0U3RvcmVzKGRiKTsKLSAgICBvYmplY3RTdG9yZTEgPSBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZTEgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJyk7Iik7Ci0gICAgb2JqZWN0U3RvcmUy
ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUyID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ2Zv
bycpOyIpOwotICAgIHNob3VsZEJlVHJ1ZSgib2JqZWN0U3RvcmUxID09PSBvYmplY3RTdG9yZTIi
KTsKLSAgICBpbmRleDEgPSBldmFsQW5kTG9nKCJpbmRleDEgPSBvYmplY3RTdG9yZTEuY3JlYXRl
SW5kZXgoJ2JhcicsICdrZXknKTsiKTsKLSAgICBpbmRleDIgPSBldmFsQW5kTG9nKCJpbmRleDIg
PSBvYmplY3RTdG9yZTIuaW5kZXgoJ2JhcicpOyIpOwotICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXgx
ID09PSBpbmRleDIiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0g
dGVzdElkZW50aXR5U29tZU1vcmU7Iik7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RJZGVudGl0eVNvbWVN
b3JlKCkKLXsKLSAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIu
dHJhbnNhY3Rpb24oJ2ZvbycpOyIpOwotICAgIG9iamVjdFN0b3JlMyA9IGV2YWxBbmRMb2coIm9i
amVjdFN0b3JlMyA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdmb28nKTsiKTsKLSAgICBvYmpl
Y3RTdG9yZTQgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZTQgPSB0cmFuc2FjdGlvbi5vYmplY3RT
dG9yZSgnZm9vJyk7Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJvYmplY3RTdG9yZTMgPT09IG9iamVj
dFN0b3JlNCIpOwotCi0gICAgc2hvdWxkQmVGYWxzZSgib2JqZWN0U3RvcmUzID09PSBvYmplY3RT
dG9yZTEiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJvYmplY3RTdG9yZTQgPT09IG9iamVjdFN0b3Jl
MiIpOwotCi0gICAgaW5kZXgzID0gZXZhbEFuZExvZygiaW5kZXgzID0gb2JqZWN0U3RvcmUzLmlu
ZGV4KCdiYXInKTsiKTsKLSAgICBpbmRleDQgPSBldmFsQW5kTG9nKCJpbmRleDQgPSBvYmplY3RT
dG9yZTQuaW5kZXgoJ2JhcicpOyIpOwotICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXgzID09PSBpbmRl
eDQiKTsKLQotICAgIHNob3VsZEJlRmFsc2UoImluZGV4MyA9PT0gaW5kZXgxIik7Ci0gICAgc2hv
dWxkQmVGYWxzZSgiaW5kZXg0ID09PSBpbmRleDIiKTsKLQotICAgIGZpbmlzaEpTVGVzdCgpOwot
fQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vYmplY3Qt
aWRlbnRpdHkuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0LXN0
b3JlLWlubGluZS1hdXRvaW5jcmVtZW50LWtleS1hZGRlZC1vbi1wdXQuaHRtbCBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0LXN0b3JlLWlubGluZS1hdXRvaW5j
cmVtZW50LWtleS1hZGRlZC1vbi1wdXQuaHRtbAppbmRleCAzNWQ5ZjMzNTdkMTc3OGM5YWJlODg1
YThhOThhODAzY2EyMGIzOTQ5Li45MjAxMWI2MzFkMGY3MmMwOTI1YjA0NWUwZTY3ZDhhMDI1OTVh
YTMzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29i
amVjdC1zdG9yZS1pbmxpbmUtYXV0b2luY3JlbWVudC1rZXktYWRkZWQtb24tcHV0Lmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9vYmplY3Qtc3RvcmUtaW5s
aW5lLWF1dG9pbmNyZW1lbnQta2V5LWFkZGVkLW9uLXB1dC5odG1sCkBAIC0xLDc1ICsxLDEwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTwhLS0KLSAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3pp
bGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9vYmplY3RT
dG9yZV9pbmxpbmVfYXV0b2luY3JlbWVudF9rZXlfYWRkZWRfb25fcHV0Lmh0bWw/Zm9yY2U9MQot
ICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Ci0gICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KLSAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgotLS0+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVh
ZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGFkZGlu
ZyBhbiBhdXRvaW5jcmVtZW50ZWQga2V5IGFuZCByZXRyaWV2aW5nIGl0IHN1Y2Nlc3NmdWxseSIp
OwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0g
ICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkg
VGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVu
KG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nl
c3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0K
LWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldHVwT2Jq
ZWN0U3RvcmU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci19Ci0KLWZ1bmN0aW9uIHNldHVwT2JqZWN0U3RvcmUoKQotewotICAgIGRlbGV0ZUFsbE9iamVj
dFN0b3JlcyhkYik7Ci0gICAgdGVzdCA9IGV2YWxBbmRMb2coInRlc3QgPSB7XG4iICsKLSIgICAg
ICAgIG5hbWU6ICdpbmxpbmUga2V5OyBrZXkgZ2VuZXJhdG9yJyxcbiIgKwotIiAgICAgICAgYXV0
b0luY3JlbWVudDogdHJ1ZSxcbiIgKwotIiAgICAgICAgc3RvcmVkT2JqZWN0OiB7IG5hbWU6ICdM
aW5jb2xuJyB9LFxuIiArCi0iICAgICAgICBrZXlOYW1lOiAnaWQnLFxuIiArCi0iICAgIH07Iik7
Ci0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9i
amVjdFN0b3JlKHRlc3QubmFtZSwgeyBrZXlQYXRoOiB0ZXN0LmtleU5hbWUsIGF1dG9JbmNyZW1l
bnQ6IHRlc3QuYXV0b0luY3JlbWVudCB9KTsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZCh0ZXN0LnN0b3JlZE9iamVjdCk7Iik7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBhZGRTdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBhZGRTdWNjZXNzKCkKLXsKLSAgICBp
ZCA9IGV2YWxBbmRMb2coImlkID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmdldChpZCk7Iik7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBnZXRTdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBnZXRTdWNjZXNzKCkKLXsKLSAgICBz
aG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5uYW1lIiwgInRlc3Quc3RvcmVkT2JqZWN0Lm5h
bWUiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5pZCIsICJpZCIpOwotICAg
IGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL29iamVjdC1zdG9yZS1pbmxpbmUtYXV0b2luY3JlbWVudC1rZXktYWRkZWQt
b24tcHV0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgotCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29iamVjdC1zdG9y
ZS1yZW1vdmUtdmFsdWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL29iamVjdC1zdG9yZS1yZW1vdmUtdmFsdWVzLmh0bWwKaW5kZXggYzA5MTRiYmRjMWFlNjRk
NGZlNTU3ZmEzMTM3MGViMzQwMGQyZmM2Mi4uZDhjNGU5NTdlNmI0NjRlN2M2YWNkZTYwZWYyMDg2
ZTQ0NTMzYmU2NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9vYmplY3Qtc3RvcmUtcmVtb3ZlLXZhbHVlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0LXN0b3JlLXJlbW92ZS12YWx1ZXMuaHRtbApA
QCAtMSwxMzIgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLQotICBvcmlnaW5hbCB0ZXN0
OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIv
dGVzdC90ZXN0X29iamVjdFN0b3JlX3JlbW92ZV92YWx1ZXMuaHRtbD9mb3JjZT0xCi0gIGxpY2Vu
c2Ugb2Ygb3JpZ2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRv
IHRoZSBQdWJsaWMgRG9tYWluLgotICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJv
ZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREI6IGFkZHMsIGdldHMs
IGRlbGV0ZXMsIGFuZCByZS1nZXRzIGEgcmVjb3JkIGluIGEgdmFyaWV0eSBvZiBkaWZmZXJlbnQg
b2JqZWN0IHN0b3JlIGNvbmZpZ3VyYXRpb25zIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAg
IHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRo
bmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewot
ICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICBk
YXRhID0gZXZhbEFuZExvZygiZGF0YSA9IFtcbiIgKwotIiAgICAgICAgeyBuYW1lOiAnaW5saW5l
IGtleTsga2V5IGdlbmVyYXRvcicsXG4iICsKLSIgICAgICAgICAgYXV0b0luY3JlbWVudDogdHJ1
ZSxcbiIgKwotIiAgICAgICAgICBzdG9yZWRPYmplY3Q6IHtuYW1lOiAnTGluY29sbid9LFxuIiAr
Ci0iICAgICAgICAgIGtleU5hbWU6ICdpZCcsXG4iICsKLSIgICAgICAgICAga2V5VmFsdWU6IHVu
ZGVmaW5lZCxcbiIgKwotIiAgICAgICAgfSxcbiIgKwotIiAgICAgICAgeyBuYW1lOiAnaW5saW5l
IGtleTsgbm8ga2V5IGdlbmVyYXRvcicsXG4iICsKLSIgICAgICAgICAgYXV0b0luY3JlbWVudDog
ZmFsc2UsXG4iICsKLSIgICAgICAgICAgc3RvcmVkT2JqZWN0OiB7aWQ6IDEsIG5hbWU6ICdMaW5j
b2xuJ30sXG4iICsKLSIgICAgICAgICAga2V5TmFtZTogJ2lkJyxcbiIgKwotIiAgICAgICAgICBr
ZXlWYWx1ZTogdW5kZWZpbmVkLFxuIiArCi0iICAgICAgICB9LFxuIiArCi0iICAgICAgICB7IG5h
bWU6ICdvdXQgb2YgbGluZSBrZXk7IGtleSBnZW5lcmF0b3InLFxuIiArCi0iICAgICAgICAgIGF1
dG9JbmNyZW1lbnQ6IHRydWUsXG4iICsKLSIgICAgICAgICAgc3RvcmVkT2JqZWN0OiB7bmFtZTog
J0xpbmNvbG4nfSxcbiIgKwotIiAgICAgICAgICBrZXlOYW1lOiB1bmRlZmluZWQsXG4iICsKLSIg
ICAgICAgICAga2V5VmFsdWU6IHVuZGVmaW5lZCxcbiIgKwotIiAgICAgICAgfSxcbiIgKwotIiAg
ICAgICAgeyBuYW1lOiAnb3V0IG9mIGxpbmUga2V5OyBubyBrZXkgZ2VuZXJhdG9yJyxcbiIgKwot
IiAgICAgICAgICBhdXRvSW5jcmVtZW50OiBmYWxzZSxcbiIgKwotIiAgICAgICAgICBzdG9yZWRP
YmplY3Q6IHtuYW1lOiAnTGluY29sbid9LFxuIiArCi0iICAgICAgICAgIGtleU5hbWU6IHVuZGVm
aW5lZCxcbiIgKwotIiAgICAgICAgICBrZXlWYWx1ZTogMSxcbiIgKwotIiAgICAgICAgfVxuIiAr
Ci0iICAgIF07Iik7Ci0KLSAgICBpID0gZXZhbEFuZExvZygiaSA9IDA7Iik7Ci0gICAgc2V0VmVy
c2lvbigpOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uKCkKLXsKLSAgICBpZiAoaSA8IGRhdGEu
bGVuZ3RoKSB7Ci0gICAgICAgIHRlc3QgPSBkYXRhW2ldOwotICAgICAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgICAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGNyZWF0ZU9iamVjdFN0b3JlOwotICAgICAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB9IGVsc2UgewotICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZU9iamVjdFN0b3JlKCkKLXsKLSAg
ICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgaWYgKHRlc3Qua2V5TmFtZSkgewot
ICAgICAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRl
T2JqZWN0U3RvcmUodGVzdC5uYW1lLCB7IGtleVBhdGg6IHRlc3Qua2V5TmFtZSwgYXV0b0luY3Jl
bWVudDogdGVzdC5hdXRvSW5jcmVtZW50IH0pOyIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIG9i
amVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9y
ZSh0ZXN0Lm5hbWUsIHsgYXV0b0luY3JlbWVudDogdGVzdC5hdXRvSW5jcmVtZW50IH0pOyIpOwot
ICAgIH0KLSAgICBpZiAodGVzdC5rZXlWYWx1ZSkgewotICAgICAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZCh0ZXN0LnN0b3JlZE9iamVjdCwgdGVzdC5r
ZXlWYWx1ZSk7Iik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQodGVzdC5zdG9yZWRPYmplY3QpOyIpOwotICAgIH0K
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldFJlY29yZDsKLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZ2V0UmVjb3JkKCkKLXsK
LSAgICBpZCA9IGV2YWxBbmRMb2coImlkID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmdldChpZCk7Iik7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBkZWxldGVSZWNvcmQ7Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZVJlY29yZCgp
Ci17Ci0gICAgc2hvdWxkQmUoInRlc3Quc3RvcmVkT2JqZWN0Lm5hbWUiLCAiZXZlbnQudGFyZ2V0
LnJlc3VsdC5uYW1lIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9i
amVjdFN0b3JlLmRlbGV0ZShpZCk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRSZWNvcmRBZ2FpbjsK
LX0KLQotZnVuY3Rpb24gZ2V0UmVjb3JkQWdhaW4oKQotewotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KGlkKTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZp
bmFsQ2hlY2s7Ci19Ci0KLWZ1bmN0aW9uIGZpbmFsQ2hlY2soKQotewotICAgIHNob3VsZEJlVHJ1
ZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCA9PT0gdW5kZWZpbmVkIik7Ci0gICAgaSsrOwotICAgIHNl
dFZlcnNpb24oKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9vYmplY3Qtc3RvcmUtcmVtb3ZlLXZhbHVlcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KIDwvYm9keT4KIDwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW96aWxsYS9vYmplY3RzdG9yZW5hbWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL29iamVjdHN0b3JlbmFtZXMuaHRtbAppbmRleCBlZTU4YzI1
MmVkNjdjYWVmNmEyNDUyODBjZDM5OTEzNjU3NjBkOGM3Li4zOTQ5NDk0NGI4OTFhMDNmNDllYzI1
MTA5NmFlZjdlMWRmYmQzNzY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL29iamVjdHN0b3JlbmFtZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL29iamVjdHN0b3JlbmFtZXMuaHRtbApAQCAtMSw1OCArMSwx
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIu
bW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfZ2xv
YmFsX2RhdGEuaHRtbAotICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Ci0gICAgIiBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KLSAgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgotLS0+CiA8aHRtbD4K
IDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48
L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3Qg
SW5kZXhlZERCJ3Mgb2JqZWN0U3RvcmVOYW1lcyBhcnJheSIpOwotCi1mdW5jdGlvbiB0ZXN0KCkK
LXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRp
b24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIp
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNz
KCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwot
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJyki
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFuRGF0
YWJhc2UoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAgICBvYmplY3RT
dG9yZU5hbWUgPSAiYSI7Ci0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9y
ZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSwgeyBrZXlQYXRoOiAnaWQn
LCBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOyIpOwotCi0gICAgc2hvdWxkQmVUcnVlKCInb2JqZWN0
U3RvcmVOYW1lcycgaW4gZGIiKTsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5s
ZW5ndGgiLCAiMSIpOwotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLml0ZW0oMCki
LCAib2JqZWN0U3RvcmVOYW1lIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgp
OwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb2JqZWN0c3RvcmVuYW1lcy5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9vZGQtcmVzdWx0LW9yZGVyLmh0
bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29kZC1yZXN1bHQtb3Jk
ZXIuaHRtbAppbmRleCBjZTcxNTYzZTAwOTFmMGJmOWNhZDU3MDVjN2NlYzEzNjE5NjE1ZmM4Li43
Nzc5N2RmYzVmMjNlMTRlYjQzNTg2M2I4ZGVmMzAyODE5ZmQ2M2JmIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29kZC1yZXN1bHQtb3JkZXIuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29kZC1yZXN1bHQtb3Jk
ZXIuaHRtbApAQCAtMSwxMjcgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLQotICBvcmln
aW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9p
bmRleGVkREIvdGVzdC90ZXN0X29kZF9yZXN1bHRfb3JkZXIuaHRtbD9yYXc9MQotICBsaWNlbnNl
IG9mIG9yaWdpbmFsIHRlc3Q6Ci0gICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KLSAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8gIgotLS0+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5
PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCOiByZXF1ZXN0IHJlc3Vs
dCBwZXJzaXN0cyBpbiBzZXRUaW1lb3V0IGNhbGxiYWNrIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQot
ewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlv
bi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3Mo
KQotewotICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOwotICAgIGRiID0gZXZhbEFuZExvZygi
ZGIgPSBudWxsOyIpOwotICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGRiID0g
ZXZhbEFuZExvZygiZGIgPSByZXF1ZXN0LnJlc3VsdDsiKTsKLSAgICAgICAgY2hlY2tEYXRhYmFz
ZVR5cGUoKTsKLSAgICB9LCAwKTsKLX0KLQotZnVuY3Rpb24gY2hlY2tEYXRhYmFzZVR5cGUoKQot
ewotICAgIGRlYnVnKCJjaGVja0RhdGFiYXNlVHlwZSgpOiIpOwotICAgIHNob3VsZEJlVHJ1ZSgi
ZGIgaW5zdGFuY2VvZiBJREJEYXRhYmFzZSIpOwotICAgIGRiLm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNl
dFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0dXBPYmplY3RTdG9y
ZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQot
ZnVuY3Rpb24gc2V0dXBPYmplY3RTdG9yZSgpCi17Ci0gICAgZGVidWcoInNldHVwT2JqZWN0U3Rv
cmUoKToiKTsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotICAgIG9iamVjdFN0b3Jl
ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJywg
eyBrZXlQYXRoOiAna2V5JywgYXV0b0luY3JlbWVudDogdHJ1ZSB9KTsiKTsKLSAgICBpbmRleCA9
IGV2YWxBbmRMb2coImluZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ2ZvbycsICdpbmRl
eCcpOyIpOwotICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5vbmNvbXBs
ZXRlID0gYWRkUmVjb3JkOyIpOwotfQotCi1mdW5jdGlvbiBhZGRSZWNvcmQoKQotewotICAgIGRl
YnVnKCJhZGRSZWNvcmQoKToiKTsKLSAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVj
dFN0b3JlID0gZGIudHJhbnNhY3Rpb24oJ2ZvbycsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUp
Lm9iamVjdFN0b3JlKCdmb28nKTsiKTsKLSAgICBkYXRhID0gZXZhbEFuZExvZygiZGF0YSA9IHsg
a2V5OiA1LCBpbmRleDogMTAgfTsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IG9iamVjdFN0b3JlLmFkZChkYXRhKTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFk
ZFN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci19Ci0KLWZ1bmN0aW9uIGFkZFN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJhZGRTdWNjZXNzKCk6
Iik7Ci0gICAga2V5ID0gZXZhbEFuZExvZygia2V5ID0gbnVsbDsiKTsKLSAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgewotICAgICAga2V5ID0gZXZhbEFuZExvZygia2V5ID0gcmVxdWVzdC5yZXN1
bHQ7Iik7Ci0gICAgICBjaGVja0FkZGVkS2V5KCk7Ci0gICAgfSwgMCk7Ci19Ci0KLWZ1bmN0aW9u
IGNoZWNrQWRkZWRLZXkoKQotewotICAgIGRlYnVnKCJjaGVja0FkZGVkS2V5KCk6Iik7Ci0gICAg
c2hvdWxkQmUoImtleSIsICJkYXRhLmtleSIpOwotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExv
Zygib2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbignZm9vJykub2JqZWN0U3RvcmUoJ2Zvbycp
OyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0
KGRhdGEua2V5KTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldFN1Y2Nlc3M7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9u
IGdldFN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJnZXRTdWNjZXNzKCk6Iik7Ci0gICAgcmVjb3Jk
ID0gZXZhbEFuZExvZygicmVjb3JkID0gbnVsbDsiKTsKLSAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgewotICAgICAgcmVjb3JkID0gZXZhbEFuZExvZygicmVjb3JkID0gcmVxdWVzdC5yZXN1bHQ7
Iik7Ci0gICAgICBjaGVja1JldHJpZXZlZEtleSgpOwotICAgIH0sIDApOwotfQotCi1mdW5jdGlv
biBjaGVja1JldHJpZXZlZEtleSgpCi17Ci0gICAgZGVidWcoImNoZWNrUmV0cmlldmVkS2V5KCk6
Iik7Ci0gICAgc2hvdWxkQmUoInJlY29yZC5rZXkiLCAiZGF0YS5rZXkiKTsKLSAgICBzaG91bGRC
ZSgicmVjb3JkLmluZGV4IiwgImRhdGEuaW5kZXgiKTsKLSAgICBkZWxldGVSZWNvcmQoKTsKLX0K
LQotZnVuY3Rpb24gZGVsZXRlUmVjb3JkKCkKLXsKLSAgICBkZWJ1ZygiZGVsZXRlUmVjb3JkKCk6
Iik7Ci0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLnRyYW5z
YWN0aW9uKCdmb28nLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKS5vYmplY3RTdG9yZSgnZm9v
Jyk7Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5k
ZWxldGUoZGF0YS5rZXkpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlU3VjY2Vz
czsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQot
ZnVuY3Rpb24gZGVsZXRlU3VjY2VzcygpCi17Ci0gICAgZGVidWcoImRlbGV0ZVN1Y2Nlc3MoKToi
KTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9vZGQtcmVzdWx0LW9yZGVyLmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW96aWxsYS9vcGVuLWRhdGFiYXNlLW51bGwtbmFtZS5odG1sIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9vcGVuLWRhdGFiYXNlLW51bGwtbmFtZS5odG1s
CmluZGV4IDkwOTg0MGRiYzNjNGEyNThjYTI1OTcwYjVmY2UyYzA2ZWNmNjk4NGMuLjhkMjdlODNi
YTYzZjIyY2JmMjBmMmMwYWQ2OGExMjYyODE5NmUzOTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb3Blbi1kYXRhYmFzZS1udWxsLW5hbWUuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29wZW4tZGF0YWJhc2Ut
bnVsbC1uYW1lLmh0bWwKQEAgLTEsNDIgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLQot
ICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNl
L2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X29wZW5fZW1wdHlfZGIuaHRtbD9mb3JjZT0xCi0gIGxp
Y2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVk
IHRvIHRoZSBQdWJsaWMgRG9tYWluLgotICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgog
PGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREI6IHNob3VsZCBO
T1QgdGhyb3cgd2hlbiBvcGVuaW5nIGEgZGF0YWJhc2Ugd2l0aCBhIG51bGwgbmFtZSIpOwotCi1m
dW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgZGVz
Y3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImluZGV4ZWREQi5vcGVuKG51bGwpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1
Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19
Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNob3VsZEJlKCJkYi5uYW1lIiwgIidudWxsJyIp
OwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL29wZW4tZGF0YWJhc2UtbnVsbC1uYW1lLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3B1dC1nZXQtdmFsdWVzLmh0bWwgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3B1dC1nZXQtdmFsdWVzLmh0bWwKaW5kZXggMGNh
ZmJhMzJjNGM0ZTg2NmVkMGZhMmI4Y2UxOTcyMWFjYjY5YTE0Mi4uNTg3MDBmNmJmOWI2ZDMwYTZl
ZDM1YzQ4MjFiMzkwZmQ0OTYxNzEzOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW96aWxsYS9wdXQtZ2V0LXZhbHVlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcHV0LWdldC12YWx1ZXMuaHRtbApAQCAtMSwxMTkgKzEs
MTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLQotICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhy
Lm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X3B1
dF9nZXRfdmFsdWVzLmh0bWwKLSAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgotICAgICIgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCi0gICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKLS0tPgogPGh0
bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5q
cyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJU
ZXN0IEluZGV4ZWREQidzIHB1dHRpbmcgYW5kIGdldHRpbmcgdmFsdWVzIGluIGFuIG9iamVjdCBz
dG9yZSIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygp
OwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24g
PSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWRE
Qi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3Bl
blN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRi
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVh
bkRhdGFiYXNlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotfQotCi1mdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKLXsKLSAgICBkZWxldGVBbGxPYmplY3RT
dG9yZXMoZGIpOwotCi0gICAgdGVzdFN0cmluZyA9IGV2YWxBbmRMb2coInRlc3RTdHJpbmcgPSB7
IGtleTogMCwgdmFsdWU6ICd0ZXN0U3RyaW5nJyB9OyIpOwotICAgIHRlc3RJbnQgPSBldmFsQW5k
TG9nKCJ0ZXN0SW50ID0geyBrZXk6IDEsIHZhbHVlOiAxMDAyIH07Iik7Ci0gICAgb2JqZWN0U3Rv
cmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdPYmpl
Y3RzJywgeyBhdXRvSW5jcmVtZW50OiBmYWxzZSB9KTsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZCh0ZXN0U3RyaW5nLnZhbHVlLCB0ZXN0U3Ry
aW5nLmtleSk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0QWRkOwotfQotCi1mdW5jdGlvbiBwb3N0
QWRkKCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ0ZXN0U3RyaW5n
LmtleSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
Z2V0KHRlc3RTdHJpbmcua2V5KTsiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RHZXQ7Ci19Ci0KLWZ1
bmN0aW9uIHBvc3RHZXQoKQotewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0Iiwg
InRlc3RTdHJpbmcudmFsdWUiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IG9iamVjdFN0b3JlLmFkZCh0ZXN0SW50LnZhbHVlLCB0ZXN0SW50LmtleSk7Iik7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBwb3N0QWRkSW50OwotfQotCi1mdW5jdGlvbiBwb3N0QWRkSW50KCkKLXsKLSAgICBz
aG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ0ZXN0SW50LmtleSIpOwotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KHRlc3RJbnQua2V5KTsi
KTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RHZXRJbnQ7Ci19Ci0KLWZ1bmN0aW9uIHBvc3RHZXRJbnQo
KQotewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgInRlc3RJbnQudmFsdWUi
KTsKLSAgICBvYmplY3RTdG9yZUF1dG9JbmNyZW1lbnQgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9y
ZUF1dG9JbmNyZW1lbnQgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnQXV0b0luY3JlbWVudGVkIE9i
amVjdHMnLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZUF1dG9JbmNyZW1lbnQuYWRkKHRlc3RTdHJpbmcu
dmFsdWUpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdEFkZEF1dG9JbmNyZW1lbnQ7Ci19Ci0KLWZ1
bmN0aW9uIHBvc3RBZGRBdXRvSW5jcmVtZW50KCkKLXsKLSAgICB0ZXN0U3RyaW5nLmtleSA9IGV2
YWxBbmRMb2coInRlc3RTdHJpbmcua2V5ID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlQXV0b0luY3JlbWVudC5n
ZXQodGVzdFN0cmluZy5rZXkpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdEdldEF1dG9JbmNyZW1l
bnQ7Ci19Ci0KLWZ1bmN0aW9uIHBvc3RHZXRBdXRvSW5jcmVtZW50KCkKLXsKLSAgICBzaG91bGRC
ZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ0ZXN0U3RyaW5nLnZhbHVlIik7Ci0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZUF1dG9JbmNyZW1lbnQuYWRkKHRl
c3RJbnQudmFsdWUpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdEFkZEludEF1dG9JbmNyZW1lbnQ7
Ci19Ci0KLWZ1bmN0aW9uIHBvc3RBZGRJbnRBdXRvSW5jcmVtZW50KCkKLXsKLSAgICB0ZXN0SW50
LmtleSA9IGV2YWxBbmRMb2coInRlc3RJbnQua2V5ID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsK
LSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlQXV0b0luY3Jl
bWVudC5nZXQodGVzdEludC5rZXkpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdEdldEludEF1dG9J
bmNyZW1lbnQ7Ci19Ci0KLWZ1bmN0aW9uIHBvc3RHZXRJbnRBdXRvSW5jcmVtZW50KCkKLXsKLSAg
ICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ0ZXN0SW50LnZhbHVlIik7Ci0gICAg
ZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvcHV0LWdldC12YWx1ZXMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2Jv
ZHk+CiA8L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vemlsbGEvcmVhZG9ubHktdHJhbnNhY3Rpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL3JlYWRvbmx5LXRyYW5zYWN0aW9ucy5odG1sCmluZGV4IDQ2NDE5
YmIzZGIzYjM3ZTkzZmRmZWQ0MjQ3YTBjOGMwNDMxOWNmNjMuLjIzYzhmYzA2NTVmMWQzMTJhYjlm
ZTQzOWY0YzVmY2EzYmViOTczMjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL21vemlsbGEvcmVhZG9ubHktdHJhbnNhY3Rpb25zLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZWFkb25seS10cmFuc2FjdGlvbnMuaHRtbApA
QCAtMSw2OSArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi0gIG9yaWdpbmFsIHRlc3Q6
IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90
ZXN0L3Rlc3RfcmVhZG9ubHlfdHJhbnNhY3Rpb25zLmh0bWwKLSAgbGljZW5zZSBvZiBvcmlnaW5h
bCB0ZXN0OgotICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBE
b21haW4uCi0gICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVy
by8xLjAvICIKLS0tPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+
Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIHJlYWRvbmx5IHRyYW5zYWN0aW9ucyIp
OwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0g
ICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkg
VGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVu
KG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nl
c3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0K
LWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0
YWJhc2U7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19
Ci0KLWZ1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jl
cyhkYik7Ci0KLSAgICBvc05hbWUgPSAidGVzdCBzdG9yZSI7Ci0gICAgb2JqZWN0U3RvcmUgPSBl
dmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKG9zTmFtZSwgeyBh
dXRvSW5jcmVtZW50OiB0cnVlIH0pOyIpOwotICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25jb21w
bGV0ZSA9IHNldFZlcnNpb25Db21wbGV0ZTsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvbkNvbXBs
ZXRlKCkKLXsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbihbb3NO
YW1lXSkub2JqZWN0U3RvcmUob3NOYW1lKS5hZGQoe30pOyIsICJJREJEYXRhYmFzZUV4Y2VwdGlv
bi5SRUFEX09OTFlfRVJSIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNh
Y3Rpb24ob3NOYW1lKS5vYmplY3RTdG9yZShvc05hbWUpLmFkZCh7fSk7IiwgIklEQkRhdGFiYXNl
RXhjZXB0aW9uLlJFQURfT05MWV9FUlIiKTsKLSAgICBrZXkxID0gZXZhbEFuZExvZygia2V5MSA9
IDE7Iik7Ci0gICAga2V5MiA9IGV2YWxBbmRMb2coImtleTIgPSAyOyIpOwotICAgIGV2YWxBbmRF
eHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKFtvc05hbWVdKS5vYmplY3RTdG9yZShvc05h
bWUpLnB1dCh7fSwga2V5MSk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlJFQURfT05MWV9FUlIi
KTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbihvc05hbWUpLm9i
amVjdFN0b3JlKG9zTmFtZSkucHV0KHt9LCBrZXkyKTsiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24u
UkVBRF9PTkxZX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0
aW9uKFtvc05hbWVdKS5vYmplY3RTdG9yZShvc05hbWUpLnB1dCh7fSwga2V5MSk7IiwgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLlJFQURfT05MWV9FUlIiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJkYi50cmFuc2FjdGlvbihvc05hbWUpLm9iamVjdFN0b3JlKG9zTmFtZSkucHV0KHt9LCBr
ZXkxKTsiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUiIpOwotICAgIGV2YWxB
bmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKFtvc05hbWVdKS5vYmplY3RTdG9yZShv
c05hbWUpLmRlbGV0ZShrZXkxKTsiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VS
UiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKG9zTmFtZSku
b2JqZWN0U3RvcmUob3NOYW1lKS5kZWxldGUoa2V5Mik7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9u
LlJFQURfT05MWV9FUlIiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0K
LTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWFkb25seS10cmFuc2FjdGlvbnMu
anMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVhZHdyaXRlLXRyYW5zYWN0
aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZWFkd3Jp
dGUtdHJhbnNhY3Rpb25zLmh0bWwKaW5kZXggYjBjMDQyYzIxYWMzZDgzZDVhODdjZjUzNTRhY2Nh
MmE0OTRkMWNmZC4uN2ZmZjUwOGU4M2NmOTYxMDJhZmM2ZmFhYWE1MTZlMWRhNTQ3OGU1NCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZWFkd3JpdGUt
dHJhbnNhY3Rpb25zLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9yZWFkd3JpdGUtdHJhbnNhY3Rpb25zLmh0bWwKQEAgLTEsMTI1ICsxLDEwIEBACi08IURP
Q1RZUEUgaHRtbD4KLTwhLS0KLSAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxhLm9y
Zy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9yZWFkb25seV90cmFu
c2FjdGlvbnMuaHRtbAotICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Ci0gICAgIiBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KLSAgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgotLS0+CiA8aHRtbD4K
IDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48
L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3Qg
SW5kZXhlZERCJ3MgcmVhZC93cml0ZSB0cmFuc2FjdGlvbnMiKTsKLQotZnVuY3Rpb24gdGVzdCgp
Ci17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0
aW9uLnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbiki
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2Vz
cygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsK
LQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScp
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjbGVhbkRh
dGFiYXNlKCkKLXsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgb3NOYW1l
ID0gInRlc3Qgc3RvcmUiOwotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3Rv
cmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShvc05hbWUsIHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9
KTsiKTsKLSAgICBldmVudC50YXJnZXQucmVzdWx0Lm9uY29tcGxldGUgPSBzZXRWZXJzaW9uQ29t
cGxldGU7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb25Db21wbGV0ZSgpCi17Ci0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi50cmFuc2FjdGlvbihbb3NOYW1lXSwgSURCVHJh
bnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3RvcmUob3NOYW1lKS5hZGQoe30pOyIpOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdEFkZDsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gcG9zdEFkZCgpCi17Ci0gICAgc2hv
dWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2RlIiwgIklEQlRyYW5zYWN0aW9uLlJF
QURfV1JJVEUiKTsKLSAgICBrZXkxID0gZXZhbEFuZExvZygia2V5MSA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQ7Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi50cmFuc2Fj
dGlvbihvc05hbWUsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpLm9iamVjdFN0b3JlKG9zTmFt
ZSkuYWRkKHt9KTsiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RBZGQyOwotICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBw
b3N0QWRkMigpCi17Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2Rl
IiwgIklEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUiKTsKLSAgICBrZXkyID0gZXZhbEFuZExvZygi
a2V5MiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBkYi50cmFuc2FjdGlvbihbb3NOYW1lXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9X
UklURSkub2JqZWN0U3RvcmUob3NOYW1lKS5wdXQoe30sIGtleTEpOyIpOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gcG9zdFB1dDsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gcG9zdFB1dCgpCi17Ci0gICAgc2hvdWxkQmUoImV2
ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2RlIiwgIklEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUi
KTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnRyYW5zYWN0aW9uKG9z
TmFtZSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3RvcmUob3NOYW1lKS5wdXQo
e30sIGtleTIpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdFB1dDI7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHBv
c3RQdXQyKCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm1vZGUi
LCAiSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gZGIudHJhbnNhY3Rpb24oW29zTmFtZV0sIElEQlRyYW5zYWN0aW9uLlJFQURf
V1JJVEUpLm9iamVjdFN0b3JlKG9zTmFtZSkucHV0KHt9LCBrZXkxKTsiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IHBvc3RQdXQzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBwb3N0UHV0MygpCi17Ci0gICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2RlIiwgIklEQlRyYW5zYWN0aW9uLlJFQURfV1JJ
VEUiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnRyYW5zYWN0aW9u
KG9zTmFtZSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3RvcmUob3NOYW1lKS5w
dXQoe30sIGtleTEpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdFB1dDQ7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9u
IHBvc3RQdXQ0KCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm1v
ZGUiLCAiSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gZGIudHJhbnNhY3Rpb24oW29zTmFtZV0sIElEQlRyYW5zYWN0aW9uLlJF
QURfV1JJVEUpLm9iamVjdFN0b3JlKG9zTmFtZSkuZGVsZXRlKGtleTEpOyIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gcG9zdERlbGV0ZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gcG9zdERlbGV0ZSgpCi17Ci0gICAgc2hv
dWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2RlIiwgIklEQlRyYW5zYWN0aW9uLlJF
QURfV1JJVEUiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnRyYW5z
YWN0aW9uKG9zTmFtZSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3RvcmUob3NO
YW1lKS5kZWxldGUoa2V5Mik7Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0RGVsZXRl
MjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQot
ZnVuY3Rpb24gcG9zdERlbGV0ZTIoKQotewotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQudHJh
bnNhY3Rpb24ubW9kZSIsICJJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFIik7Ci0gICAgZmluaXNo
SlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvcmVhZHdyaXRlLXRyYW5zYWN0aW9ucy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwv
Ym9keT4KIDwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW96aWxsYS9yZWFkeVN0YXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL3JlYWR5U3RhdGUuaHRtbAppbmRleCA4ZDEwYTRiYWRlZDk0OTlkYzMzZjMyNzNl
YWIwZDc2YzU3YmM0ZWU2Li41YzIyYTNmZTM0Y2EyY2JjOWQwYjJkYTNkNDRhMTc5YTliMWE2MTAz
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3JlYWR5
U3RhdGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jl
YWR5U3RhdGUuaHRtbApAQCAtMSw4MSArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi0g
IG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2Uv
ZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfcmVxdWVzdF9yZWFkeVN0YXRlLmh0bWw/Zm9yY2U9MQot
ICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Ci0gICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KLSAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgotLS0+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVh
ZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIHJlYWR5
U3RhdGUgcHJvcGVydHkgZHVyaW5nIGRpZmZlcmVudCBvcGVyYXRpb25zIik7Ci0KLWZ1bmN0aW9u
IHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2Vs
Zi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNl
IjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3Jp
cHRpb24pIik7Ci0gICAgc2hvdWxkQmUoInJlcXVlc3QucmVhZHlTdGF0ZSIsICJJREJSZXF1ZXN0
LkxPQURJTkciKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBv
cGVuU3VjY2VzcygpCi17Ci0gICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7Ci0gICAgc2hvdWxk
QmUoInJlcXVlc3QucmVhZHlTdGF0ZSIsICJJREJSZXF1ZXN0LkRPTkUiKTsKLSAgICBkYiA9IGV2
YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgc2hvdWxkQmUoInJl
cXVlc3QucmVhZHlTdGF0ZSIsICJJREJSZXF1ZXN0LkxPQURJTkciKTsKLSAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IHNldHVwT2JqZWN0U3RvcmU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldHVwT2JqZWN0U3RvcmUoKQotewot
ICAgIGRlYnVnKCJzZXR1cE9iamVjdFN0b3JlKCk6Iik7Ci0gICAgc2hvdWxkQmUoInJlcXVlc3Qu
cmVhZHlTdGF0ZSIsICJJREJSZXF1ZXN0LkRPTkUiKTsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9y
ZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nKTsiKTsKLSAgICBrZXkgPSBldmFsQW5kTG9nKCJrZXkg
PSAxMDsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3Jl
LmFkZCh7fSwga2V5KTsiKTsKLSAgICBzaG91bGRCZSgicmVxdWVzdC5yZWFkeVN0YXRlIiwgIklE
QlJlcXVlc3QuTE9BRElORyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0UmVjb3JkOwot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5j
dGlvbiBnZXRSZWNvcmQoKQotewotICAgIGRlYnVnKCJnZXRSZWNvcmQoKToiKTsKLSAgICBzaG91
bGRCZSgicmVxdWVzdC5yZWFkeVN0YXRlIiwgIklEQlJlcXVlc3QuRE9ORSIpOwotICAgIHNob3Vs
ZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgImtleSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KGtleSk7Iik7Ci0gICAgc2hvdWxkQmUoInJl
cXVlc3QucmVhZHlTdGF0ZSIsICJJREJSZXF1ZXN0LkxPQURJTkciKTsKLSAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGZpbmFsQ2hlY2s7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGZpbmFsQ2hlY2soKQotewotICAgIGRlYnVnKCJm
aW5hbENoZWNrKCk6Iik7Ci0gICAgc2hvdWxkQmUoInJlcXVlc3QucmVhZHlTdGF0ZSIsICJJREJS
ZXF1ZXN0LkRPTkUiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJldmVudC50YXJnZXQucmVzdWx0ID09
IG51bGwiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWFkeVN0YXRlLmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgogPC9ib2R5PgogPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL3JlbW92ZS1pbmRleC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9yZW1vdmUtaW5kZXguaHRtbAppbmRleCBkYTU1Mzk2MGY3Mzhj
OTBhNThkMzE0ODhlYmFmYmY4OGRkODRmMzA0Li4wZTIwYTcxZGIwM2Y5OTUyNDE1NjEwZjZkYjk2
ODlmYWRlYzIxZmM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL3JlbW92ZS1pbmRleC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvcmVtb3ZlLWluZGV4Lmh0bWwKQEAgLTEsNjYgKzEsMTAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPCEtLQotICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21v
emlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X3JlbW92ZV9pbmRleC5odG1s
Ci0gIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKLSAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVk
aWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgotICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9u
cy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCi0tLT4KIDxodG1sPgogPGhlYWQ+CiA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9o
ZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBj
cmVhdGluZyBhbmQgZGVsZXRpbmcgaW5kZXhlcyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAg
ICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0
aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsK
LSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZERlbGV0ZUluZGV4OwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjcmVhdGVB
bmREZWxldGVJbmRleCgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAg
IG9iamVjdFN0b3JlTmFtZSA9ICJ0ZXN0IHN0b3JlIjsKLSAgICBvYmplY3RTdG9yZSA9IGV2YWxB
bmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1l
LCB7IGtleVBhdGg6ICdmb28nIH0pOyIpOwotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5h
bWVzLmxlbmd0aCIsICIxIik7Ci0gICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMuaXRl
bSgwKSIsICJvYmplY3RTdG9yZU5hbWUiKTsKLSAgICBzaG91bGRCZSgib2JqZWN0U3RvcmUuaW5k
ZXhOYW1lcy5sZW5ndGgiLCAiMCIpOwotCi0gICAgaW5kZXhOYW1lID0gIk15IFRlc3QgSW5kZXgi
OwotICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBvYmplY3RTdG9yZS5jcmVhdGVJbmRl
eChpbmRleE5hbWUsICdmb28nKTsiKTsKLSAgICBzaG91bGRCZSgib2JqZWN0U3RvcmUuaW5kZXhO
YW1lcy5sZW5ndGgiLCAiMSIpOwotICAgIHNob3VsZEJlKCJvYmplY3RTdG9yZS5pbmRleE5hbWVz
Lml0ZW0oMCkiLCAiaW5kZXhOYW1lIik7Ci0KLSAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5k
ZWxldGVJbmRleChpbmRleE5hbWUpOyIpOwotICAgIHNob3VsZEJlKCJvYmplY3RTdG9yZS5pbmRl
eE5hbWVzLmxlbmd0aCIsICIwIik7Ci0KLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0
KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZW1vdmUtaW5kZXguanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVtb3ZlLW9iamVjdHN0b3JlLmh0
bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3JlbW92ZS1vYmplY3Rz
dG9yZS5odG1sCmluZGV4IGYwNjYxYzU0NzVhYjE2MTRmMDU4ODlhMTM2NDM2MWI2OGI4OTJmZGQu
LjkyYjc2NTE0YmMyMjhmMGJmN2FlN2ZiYzVlMWE4MzE2MWYwNDQ5ODMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVtb3ZlLW9iamVjdHN0b3JlLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZW1vdmUtb2Jq
ZWN0c3RvcmUuaHRtbApAQCAtMSwxMjAgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLQot
ICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNl
L2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X3JlbW92ZV9vYmplY3RTdG9yZS5odG1sP2ZvcmNlPTEK
LSAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgotICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCi0gICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKLS0tPgogPGh0bWw+CiA8aGVhZD4KIDxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hl
YWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBkZWxl
dGluZyBhbiBvYmplY3Qgc3RvcmUiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3Zl
VmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwot
ICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIg
PSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZSgi
ZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUFuZFBvcHVs
YXRlT2JqZWN0U3RvcmUoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0KLSAg
ICBvYmplY3RTdG9yZU5hbWUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZU5hbWUgPSAnT2JqZWN0
cyc7Iik7Ci0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNy
ZWF0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSwgeyBrZXlQYXRoOiAnZm9vJyB9KTsiKTsK
LQotICAgIGFkZGVkQ291bnQgPSBldmFsQW5kTG9nKCJhZGRlZENvdW50ID0gMDsiKTsKLSAgICBm
b3IgKGkgPSAwOyBpIDwgMTAwOyBpKyspIHsKLSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoe2ZvbzogaX0pOyIpOwotICAgICAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICAgICAgaWYgKCsrYWRkZWRDb3VudCA9
PSAxMDApIHsKLSAgICAgICAgICAgICAgICBjaGVja09iamVjdFN0b3JlKCk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGNoZWNrT2JqZWN0U3RvcmUoKQot
ewotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIxIik7Ci0gICAg
c2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMuaXRlbSgwKSIsICJvYmplY3RTdG9yZU5hbWUi
KTsKLQotICAgIHJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcyJyk7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBw
b3N0U2V0VmVyc2lvbjI7Ci19Ci0KLWZ1bmN0aW9uIHBvc3RTZXRWZXJzaW9uMigpCi17Ci0gICAg
ZXZhbEFuZExvZygiZGIuZGVsZXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmUubmFtZSk7Iik7Ci0g
ICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjAiKTsKLQotICAgIG9i
amVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9y
ZShvYmplY3RTdG9yZU5hbWUsIHsga2V5UGF0aDogJ2ZvbycgfSk7Iik7Ci0gICAgc2hvdWxkQmUo
ImRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjEiKTsKLSAgICBzaG91bGRCZSgiZGIub2Jq
ZWN0U3RvcmVOYW1lcy5pdGVtKDApIiwgIm9iamVjdFN0b3JlTmFtZSIpOwotCi0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBzaG91bGRCZSgiZXZlbnQu
dGFyZ2V0LnJlc3VsdCIsICJudWxsIik7Ci0gICAgICAgIGRlbGV0ZVNlY29uZE9iamVjdFN0b3Jl
KCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBkZWxldGVTZWNvbmRPYmplY3RTdG9yZSgpCi17Ci0g
ICAgZXZhbEFuZExvZygiZGIuZGVsZXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmUubmFtZSk7Iik7
Ci0gICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjAiKTsKLSAgICBz
ZXRWZXJzaW9uMygpOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uMygpCi17Ci0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCczJyk7Iik7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBwb3N0U2V0VmVyc2lvbjM7Ci19Ci0KLWZ1bmN0aW9uIHBvc3RTZXRWZXJzaW9uMygp
Ci17Ci0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSwgeyBrZXlQYXRoOiAnZm9vJyB9KTsiKTsKLSAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZCh7Zm9vOidi
YXInfSk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVUaGlyZE9iamVjdFN0b3JlOwotfQotCi1m
dW5jdGlvbiBkZWxldGVUaGlyZE9iamVjdFN0b3JlKCkKLXsKLSAgICBldmFsQW5kTG9nKCJkYi5k
ZWxldGVPYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpOyIpOwotICAgIGZpbmlzaEpTVGVzdCgp
OwotfQotCi0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Jl
bW92ZS1vYmplY3RzdG9yZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRt
bD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9y
ZXNvdXJjZXMvYWRkLXR3aWNlLWZhaWx1cmUuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9hZGQtdHdpY2UtZmFpbHVyZS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
YWVmMzkyOWYxOGY1NWNmODg2NjI4MWU5MWViYjQ1NmZlNjUwY2E3Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvYWRkLXR3
aWNlLWZhaWx1cmUuanMKQEAgLTAsMCArMSw1OSBAQAorLy8gb3JpZ2luYWwgdGVzdDoKKy8vIGh0
dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0
L3Rlc3RfYWRkX3R3aWNlX2ZhaWx1cmUuaHRtbAorLy8gbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0
OgorLy8gIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
Ky8vICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAi
CisKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8u
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlw
dHMoJy4uLy4uL3Jlc291cmNlcy9zaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3Qg
SW5kZXhlZERCIGJlaGF2aW9yIGFkZGluZyB0aGUgc2FtZSBwcm9wZXJ0eSB0d2ljZSIpOworCitm
dW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFt
ZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBE
YXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUs
IGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0
aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFy
Z2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5z
ZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7
CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ2ZvbycpOyIpOworICAgIGtleSA9IGV2YWxBbmRMb2coImtleSA9IDEwIik7
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoe30s
IGtleSk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRGaXJzdFN1Y2Nlc3M7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IGFkZEZpcnN0U3VjY2VzcygpCit7CisgICAgc2hvdWxkQmUoInJlcXVlc3QucmVzdWx0IiwgImtl
eSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRk
KHt9LCBrZXkpOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3ND
YWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBhZGRTZWNvbmRFeHBlY3RlZEVycm9yOwor
fQorCitmdW5jdGlvbiBhZGRTZWNvbmRFeHBlY3RlZEVycm9yKCkKK3sKKyAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0LmVycm9yQ29kZSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5DT05TVFJBSU5U
X0VSUiIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW96aWxsYS9yZXNvdXJjZXMvYXV0b2luY3JlbWVudC1pbmRleGVzLmpzIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvYXV0b2luY3JlbWVudC1pbmRleGVz
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjAyMTJmMDliYTNmMzMyZTNmMTAxZTJlNmY5ODc1MGEwNzI4ZTQxYzAK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L3Jlc291cmNlcy9hdXRvaW5jcmVtZW50LWluZGV4ZXMuanMKQEAgLTAsMCArMSw4OSBAQAorLy8g
b3JpZ2luYWwgdGVzdDoKKy8vIGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3Vy
Y2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfYXV0b0luY3JlbWVudF9pbmRleGVzLmh0bWw/Zm9y
Y2U9MQorLy8gbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorLy8gIiBBbnkgY29weXJpZ2h0IGlz
IGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKy8vICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCisKK2lmICh0aGlzLmltcG9ydFNjcmlw
dHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uL3Jlc291cmNlcy9zaGFy
ZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGluZGV4ZXMgYWdhaW5z
dCBhdXRvaW5jcmVtZW50aW5nIGtleXMiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVt
b3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1l
OworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAg
ZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBzZXR1cE9iamVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXR1cE9iamVjdFN0b3Jl
KCkKK3sKKyAgICB0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgZGVsZXRlQWxsT2Jq
ZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3Rv
cmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJywgeyBrZXlQYXRoOiAnaWQnLCBhdXRvSW5j
cmVtZW50OiB0cnVlIH0pOyIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmNyZWF0ZUlu
ZGV4KCdmaXJzdCcsICdmaXJzdCcpOyIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmNy
ZWF0ZUluZGV4KCdzZWNvbmQnLCAnc2Vjb25kJyk7Iik7CisgICAgZXZhbEFuZExvZygib2JqZWN0
U3RvcmUuY3JlYXRlSW5kZXgoJ3RoaXJkJywgJ3RoaXJkJyk7Iik7CisgICAgZGF0YSA9IGV2YWxB
bmRMb2coImRhdGEgPSB7IGZpcnN0OiAnZm9vJywgc2Vjb25kOiAnZm9vJywgdGhpcmQ6ICdmb28n
IH07Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5h
ZGQoZGF0YSk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXR1cEluZGV4ZXM7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IHNldHVwSW5kZXhlcygpCit7CisgICAga2V5ID0gZXZhbEFuZExvZygia2V5ID0gZXZlbnQudGFy
Z2V0LnJlc3VsdDsiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJrZXkgPT0gbnVsbCIpOworICAgIHRy
YW5zLm9uY29tcGxldGUgPSBzZXRWZXJzaW9uQ29tcGxldGU7Cit9CisKK2Z1bmN0aW9uIHNldFZl
cnNpb25Db21wbGV0ZSgpCit7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZSA9IGRiLnRyYW5zYWN0aW9uKCdmb28nKS5vYmplY3RTdG9yZSgnZm9vJyk7Iik7CisgICAg
Zmlyc3QgPSBldmFsQW5kTG9nKCJmaXJzdCA9IG9iamVjdFN0b3JlLmluZGV4KCdmaXJzdCcpOyIp
OworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZmlyc3QuZ2V0KCdmb28nKTsi
KTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNoZWNrRmlyc3RJbmRleEFuZFByZXBhcmVTZWNv
bmQ7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIGNoZWNrRmlyc3RJbmRleEFuZFByZXBhcmVTZWNvbmQoKQoreworICAgIHNob3Vs
ZEJlKCJldmVudC50YXJnZXQucmVzdWx0LmlkIiwgImtleSIpOworICAgIHNlY29uZCA9IGV2YWxB
bmRMb2coInNlY29uZCA9IG9iamVjdFN0b3JlLmluZGV4KCdzZWNvbmQnKTsiKTsKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHNlY29uZC5nZXQoJ2ZvbycpOyIpOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gY2hlY2tTZWNvbmRJbmRleEFuZFByZXBhcmVUaGlyZDsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
Y2hlY2tTZWNvbmRJbmRleEFuZFByZXBhcmVUaGlyZCgpCit7CisgICAgc2hvdWxkQmUoImV2ZW50
LnRhcmdldC5yZXN1bHQuaWQiLCAia2V5Iik7CisgICAgdGhpcmQgPSBldmFsQW5kTG9nKCJ0aGly
ZCA9IG9iamVjdFN0b3JlLmluZGV4KCd0aGlyZCcpOyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gdGhpcmQuZ2V0KCdmb28nKTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGNoZWNrVGhpcmRJbmRleDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2hlY2tUaGlyZEluZGV4KCkKK3sKKyAgICBzaG91
bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5pZCIsICJrZXkiKTsKKyAgICBmaW5pc2hKU1Rlc3Qo
KTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2JhZC1rZXlw
YXRoLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMv
YmFkLWtleXBhdGguanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGEwNjUwZjkwZjZkZWZhMmY0NWE4ODc0YjYyNTli
MmFmNmJiNTgzMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvcmVzb3VyY2VzL2JhZC1rZXlwYXRoLmpzCkBAIC0wLDAgKzEsNTAgQEAKKy8v
IG9yaWdpbmFsIHRlc3Q6CisvLyBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291
cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2JhZF9rZXlwYXRoLmh0bWwKKy8vIGxpY2Vuc2Ug
b2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhl
IFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2Rv
bWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0
U2NyaXB0cygnLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsK
KyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi9yZXNvdXJjZXMvc2hhcmVkLmpzJyk7Cit9CisKK2Rl
c2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBhZGRpbmcgcHJvcGVydHkgd2l0aCBpbnZhbGlkIGtl
eXBhdGgiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMo
KTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9u
ID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVk
REIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9w
ZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJk
YiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBj
bGVhbkRhdGFiYXNlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworfQorCitmdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKK3sKKyAgICBkZWxldGVBbGxPYmpl
Y3RTdG9yZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9y
ZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7IGtleVBhdGg6ICdrZXlQYXRoJyB9KTsi
KTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZCh7
IGtleVBhdGg6ICdmb28nIH0pOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkRmlyc3RT
dWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBhZGRGaXJzdFN1Y2Nlc3MoKQoreworICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoe30pOyIsICJJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5EQVRBX0VSUiIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY2xlYXIuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jbGVhci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNDIzMGI0
Y2M0NTMzMjIwMGY1NmM0NTI5MjUzYTRhYzBlYmI2NzE0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY2xlYXIuanMKQEAg
LTAsMCArMSw2MCBAQAorLy8gb3JpZ2luYWwgdGVzdDoKKy8vIGh0dHA6Ly9teHIubW96aWxsYS5v
cmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfY2xlYXIuaHRtbAor
Ly8gbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorLy8gIiBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKy8vICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCisKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsK
KyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uL3Jlc291cmNlcy9zaGFyZWQuanMn
KTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgY2xlYXJpbmcgYW4gb2JqZWN0
IHN0b3JlIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVz
KCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlv
biA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhl
ZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBv
cGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygi
ZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
Y2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7CisgICAgZGVsZXRlQWxsT2Jq
ZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3Rv
cmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJywgeyBhdXRvSW5jcmVtZW50OiB0cnVlIH0p
OyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRk
KHt9KTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICBldmVudC50YXJnZXQucmVzdWx0Lm9uY29tcGxldGUgPSBjbGVhcjsKK30KKworZnVuY3Rp
b24gY2xlYXIoKQoreworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9u
KCdmb28nKS5vYmplY3RTdG9yZSgnZm9vJykuY2xlYXIoKTsiLCAiSURCRGF0YWJhc2VFeGNlcHRp
b24uUkVBRF9PTkxZX0VSUiIpOworICAgIGV2YWxBbmRMb2coImRiLnRyYW5zYWN0aW9uKCdmb28n
LCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKS5vYmplY3RTdG9yZSgnZm9vJykuY2xlYXIoKTsi
KTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnRyYW5zYWN0aW9uKCdm
b28nKS5vYmplY3RTdG9yZSgnZm9vJykub3BlbkN1cnNvcigpOyIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gYXJlV2VDbGVhcllldDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gYXJlV2VDbGVhcllldCgpCit7CisgICAgY3Vy
c29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gcmVxdWVzdC5yZXN1bHQ7Iik7CisgICAgc2hvdWxk
QmUoImN1cnNvciIsICJudWxsIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jcmVhdGUtaW5kZXgtdW5pcXVlLmpzIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY3JlYXRlLWlu
ZGV4LXVuaXF1ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOGM2Y2Y3NmMwYzMzZGI3Nzc4MTNiYmNlMjM0YzU3
ZWE2YzM3OTdhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW96aWxsYS9yZXNvdXJjZXMvY3JlYXRlLWluZGV4LXVuaXF1ZS5qcwpAQCAtMCwwICsxLDYx
IEBACisvLyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxh
Mi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9jcmVhdGVfaW5kZXguaHRtbAorLy8g
bGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorLy8gIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRl
ZCB0byB0aGUgUHVibGljIERvbWFpbi4KKy8vICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLyAiCisKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAg
ICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uL3Jlc291cmNlcy9zaGFyZWQuanMnKTsK
K30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgY3JlYXRpbmcgdW5pcXVlIGluZGV4
IGFuZCB1cGRhdGluZyBpbmRleE5hbWVzIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJl
bW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFt
ZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAg
IGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5kVmVyaWZ5SW5kZXg7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUFuZFZl
cmlmeUluZGV4KCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgb2Jq
ZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdhJywgeyBrZXlQYXRoOiAnaWQnLCBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOyIpOworCisgICAg
aW5kZXhOYW1lID0gIjEiOworICAgIGluZGV4S2V5UGF0aCA9ICJ1bmlxdWVfdmFsdWUiOworICAg
IGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBvYmplY3RTdG9yZS5jcmVhdGVJbmRleChpbmRl
eE5hbWUsIGluZGV4S2V5UGF0aCwgeyB1bmlxdWU6IHRydWUgfSk7IiwgIklEQkRhdGFiYXNlRXhj
ZXB0aW9uLkNPTlNUUkFJTlRfRVJSIik7CisgICAgc2hvdWxkQmUoImluZGV4Lm5hbWUiLCAiaW5k
ZXhOYW1lIik7CisgICAgc2hvdWxkQmUoImluZGV4LmtleVBhdGgiLCAiaW5kZXhLZXlQYXRoIik7
CisgICAgc2hvdWxkQmUoImluZGV4LnVuaXF1ZSIsICJ0cnVlIik7CisgICAgc2hvdWxkQmUoIm9i
amVjdFN0b3JlLmluZGV4TmFtZXMubGVuZ3RoIiwgIjEiKTsKKworICAgIGZvdW5kTmV3bHlDcmVh
dGVkSW5kZXggPSBmYWxzZTsKKyAgICBmb3IgKHZhciBrID0gMDsgayA8IG9iamVjdFN0b3JlLmlu
ZGV4TmFtZXMubGVuZ3RoOyBrKyspIHsKKyAgICAgICAgaWYgKG9iamVjdFN0b3JlLmluZGV4TmFt
ZXMuaXRlbShrKSA9PSBpbmRleE5hbWUpIHsKKyAgICAgICAgICAgIGZvdW5kTmV3bHlDcmVhdGVk
SW5kZXggPSB0cnVlOworICAgICAgICB9CisgICAgfQorICAgIHNob3VsZEJlVHJ1ZSgiZm91bmRO
ZXdseUNyZWF0ZWRJbmRleCIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQudHJhbnNhY3Rp
b24uZGIiLCAiZGIiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLnJl
YWR5U3RhdGUiLCAiSURCVHJhbnNhY3Rpb24uTE9BRElORyIpOworICAgIHNob3VsZEJlKCJldmVu
dC50YXJnZXQudHJhbnNhY3Rpb24ubW9kZSIsICJJREJUcmFuc2FjdGlvbi5WRVJTSU9OX0NIQU5H
RSIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9yZXNvdXJjZXMvY3JlYXRlLWluZGV4LXdpdGgtaW50ZWdlci1rZXlzLmpzIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY3JlYXRlLWluZGV4LXdp
dGgtaW50ZWdlci1rZXlzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0M2U0YzVjOGZhODgxMGIyODkzNTZlMWZl
YWYwMzRmZDRkYjg3ODkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jcmVhdGUtaW5kZXgtd2l0aC1pbnRlZ2VyLWtleXMu
anMKQEAgLTAsMCArMSw1NiBAQAorLy8gb3JpZ2luYWwgdGVzdDoKKy8vIGh0dHA6Ly9teHIubW96
aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfY3JlYXRl
X2luZGV4X3dpdGhfaW50ZWdlcl9rZXlzLmh0bWw/Zm9yY2U9MQorLy8gbGljZW5zZSBvZiBvcmln
aW5hbCB0ZXN0OgorLy8gIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKy8vICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLyAiCisKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRz
KCcuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGlt
cG9ydFNjcmlwdHMoJy4uLy4uL3Jlc291cmNlcy9zaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRp
b24oIlRlc3QgSW5kZXhlZERCJ3MgY3JlYXRpbmcgaW5kZXggd2l0aCBpbnRlZ2VyIGtleXMiKTsK
KworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAg
IG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRl
c3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbihu
YW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNz
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
ZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXR1cE9iamVj
dFN0b3JlQW5kQ3JlYXRlSW5kZXg7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldHVwT2JqZWN0U3RvcmVBbmRDcmVhdGVJbmRl
eCgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3Jl
ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJywg
eyBrZXlQYXRoOiAnaWQnIH0pOyIpOworICAgIGRhdGEgPSBldmFsQW5kTG9nKCJkYXRhID0geyBp
ZDogMTYsIG51bTogNDIgfTsiKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoZGF0
YSk7Iik7CisgICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0
ZUluZGV4KCdmb28nLCAnbnVtJyk7Iik7CisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygicmVzdWx0
ID0gaW5kZXgub3BlbktleUN1cnNvcigpOyIpOworICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSB2ZXJp
ZnlLZXlDdXJzb3I7CisgICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gdmVyaWZ5S2V5Q3Vyc29yKCkKK3sKKyAgICBjdXJzb3IgPSBldmFs
QW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgIHNob3VsZEJlRmFs
c2UoImN1cnNvciA9PSBudWxsIik7CisgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAiZGF0YS5u
dW0iKTsKKyAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAiZGF0YS5pZCIpOworICAg
IGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNv
dXJjZXMvY3JlYXRlLW9iamVjdHN0b3JlLWJhc2ljcy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2NyZWF0ZS1vYmplY3RzdG9yZS1iYXNpY3MuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjczMTZiMmU0ZTg0NTBlMzVkMGVhNjk1NWNmYjQ3YTQ3NmI4ZGFkMAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVz
b3VyY2VzL2NyZWF0ZS1vYmplY3RzdG9yZS1iYXNpY3MuanMKQEAgLTAsMCArMSw2NiBAQAorLy8g
b3JpZ2luYWwgdGVzdDoKKy8vIGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3Vy
Y2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfY3JlYXRlX29iamVjdFN0b3JlLmh0bWwKKy8vIGxp
Y2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAg
aW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi9yZXNvdXJjZXMvc2hhcmVkLmpzJyk7Cit9
CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGNyZWF0aW5nIG9iamVjdCBzdG9yZSBh
bmQgdXBkYXRpbmcgcHJvcGVydGllcyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1v
dmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7
CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBk
YiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQorewor
ICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBvYmplY3RTdG9yZUluZm8gPSBb
CisgICAgICAgIHsgbmFtZTogIjEiLCBvcHRpb25zOiB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSB9
LAorICAgICAgICB7IG5hbWU6ICIyIiwgb3B0aW9uczogeyBhdXRvSW5jcmVtZW50OiBmYWxzZSB9
IH0sCisgICAgICAgIHsgbmFtZTogIjMiLCBvcHRpb25zOiB7IGtleVBhdGg6ICIiIH0gfSwKKyAg
ICAgICAgeyBuYW1lOiAiNCIsIG9wdGlvbnM6IHsga2V5UGF0aDogIiIsIGF1dG9JbmNyZW1lbnQ6
IHRydWUgfSB9LAorICAgICAgICB7IG5hbWU6ICI1Iiwgb3B0aW9uczogeyBrZXlQYXRoOiAiIiwg
YXV0b0luY3JlbWVudDogZmFsc2UgfSB9LAorICAgICAgICB7IG5hbWU6ICI2Iiwgb3B0aW9uczog
eyBrZXlQYXRoOiAiZm9vIiB9IH0sCisgICAgICAgIHsgbmFtZTogIjciLCBvcHRpb25zOiB7IGtl
eVBhdGg6ICJmb28iLCBhdXRvSW5jcmVtZW50OiBmYWxzZSB9IH0sCisgICAgICAgIHsgbmFtZTog
IjgiLCBvcHRpb25zOiB7IGtleVBhdGg6ICJmb28iLCBhdXRvSW5jcmVtZW50OiB0cnVlIH0gfQor
ICAgIF07CisKKyAgICBmb3IgKHZhciBpbmRleCBpbiBvYmplY3RTdG9yZUluZm8pIHsKKyAgICAg
ICAgaW5kZXggPSBwYXJzZUludChpbmRleCk7CisgICAgICAgIGluZm8gPSBvYmplY3RTdG9yZUlu
Zm9baW5kZXhdOworICAgICAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3Jl
ID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoaW5mby5uYW1lLCBpbmZvLm9wdGlvbnMpOyIpOworICAg
ICAgICBzaG91bGRCZSgib2JqZWN0U3RvcmUubmFtZSIsICJpbmZvLm5hbWUiKTsKKyAgICAgICAg
aWYgKGluZm8ub3B0aW9ucyAmJiBpbmZvLm9wdGlvbnMua2V5UGF0aCkgeworICAgICAgICAgICAg
c2hvdWxkQmUoIm9iamVjdFN0b3JlLmtleVBhdGgiLCAiaW5mby5vcHRpb25zLmtleVBhdGgiKTsK
KyAgICAgICAgfQorICAgICAgICBzaG91bGRCZSgib2JqZWN0U3RvcmUuaW5kZXhOYW1lcy5sZW5n
dGgiLCAiMCIpOworICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLmRi
IiwgImRiIik7CisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24ucmVh
ZHlTdGF0ZSIsICJJREJUcmFuc2FjdGlvbi5MT0FESU5HIik7CisgICAgICAgIHNob3VsZEJlKCJl
dmVudC50YXJnZXQudHJhbnNhY3Rpb24ubW9kZSIsICJJREJUcmFuc2FjdGlvbi5WRVJTSU9OX0NI
QU5HRSIpOworICAgIH0KKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY3JlYXRlLW9iamVjdHN0b3JlLW51bGwtbmFtZS5q
cyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2NyZWF0
ZS1vYmplY3RzdG9yZS1udWxsLW5hbWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2MyNjY5MGVmNWM0MzczMzM3
ODg5MmVkOTRlYjQ0Y2EyMDQ4MDE3NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2NyZWF0ZS1vYmplY3RzdG9yZS1udWxs
LW5hbWUuanMKQEAgLTAsMCArMSw0NCBAQAorLy8gb3JpZ2luYWwgdGVzdDoKKy8vIGh0dHA6Ly9t
eHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3Rf
Y3JlYXRlX29iamVjdFN0b3JlLmh0bWwKKy8vIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKy8v
ICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisvLyAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorCitp
ZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCcu
Li8uLi9yZXNvdXJjZXMvc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4
ZWREQidzIGNyZWF0aW5nIG9iamVjdCBzdG9yZSB3aXRoIG51bGwgbmFtZSIpOworCitmdW5jdGlv
biB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNl
bGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFz
ZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2Ny
aXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9w
ZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJz
aW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAg
ICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0
U3RvcmUobnVsbCk7Iik7CisgICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLm5hbWUiLCAiJ251bGwn
Iik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
emlsbGEvcmVzb3VyY2VzL2N1cnNvci1tdXRhdGlvbi1vYmplY3RzdG9yZS1vbmx5LmpzIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY3Vyc29yLW11dGF0
aW9uLW9iamVjdHN0b3JlLW9ubHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjc3ZWVjYzg1NmJlMGEwYjkyYzZl
OGFmZTRjODQxYTRmNDE4MzYzNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2N1cnNvci1tdXRhdGlvbi1vYmplY3RzdG9y
ZS1vbmx5LmpzCkBAIC0wLDAgKzEsMTQxIEBACisvLyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDov
L214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVz
dF9jdXJzb3JfbXV0YXRpb24uaHRtbD9mb3JjZT0xCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRl
c3Q6CisvLyAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorLy8gICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
ICIKKworaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4u
Ly4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2Ny
aXB0cygnLi4vLi4vcmVzb3VyY2VzL3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVz
dCBJbmRleGVkREIncyBjdXJzb3IgbXV0YXRpb24gZHVyaW5nIG9iamVjdCBzdG9yZSBjdXJzb3Ig
aXRlcmF0aW9uIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZp
eGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlw
dGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5k
ZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJvcGVuU3Vj
Y2VzcygpOiIpOworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24o
JzEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0dXBPYmplY3RTdG9yZTsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
c2V0dXBPYmplY3RTdG9yZSgpCit7CisgICAgZGVidWcoInNldHVwT2JqZWN0U3RvcmUoKToiKTsK
KyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFs
QW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7IGtleVBh
dGg6ICdzcycgfSk7Iik7CisgICAgb2JqZWN0U3RvcmVEYXRhID0gZXZhbEFuZExvZygib2JqZWN0
U3RvcmVEYXRhID0gW1xuIiArIAorIiAgICAgICAgeyBzczogJzIzNy0yMy03NzMyJywgbmFtZTog
J0JvYicgfSxcbiIgKyAKKworIiAgICAgICAgeyBzczogJzIzNy0yMy03NzMzJywgbmFtZTogJ0Fu
bicgfSxcbiIgKworIiAgICAgICAgeyBzczogJzIzNy0yMy03NzM0JywgbmFtZTogJ1JvbicgfSxc
biIgKworIiAgICAgICAgeyBzczogJzIzNy0yMy03NzM1JywgbmFtZTogJ1N1ZScgfSxcbiIgKwor
IiAgICAgICAgeyBzczogJzIzNy0yMy03NzM2JywgbmFtZTogJ0pvZScgfSxcbiIgKworCisiICAg
ICAgICB7IHNzOiAnMjM3LTIzLTc3MzcnLCBuYW1lOiAnUGF0JyB9XG4iICsKKyIgICAgXTsiKTsK
KworICAgIGZvciAoaSA9IDA7IGkgPCBvYmplY3RTdG9yZURhdGEubGVuZ3RoIC0gMTsgaSsrKSB7
CisgICAgICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9yZURhdGFbaV0p
OyIpOworICAgIH0KKworICAgIGNvdW50ID0gZXZhbEFuZExvZygiY291bnQgPSAwOyIpOworICAg
IHNhd0FkZGVkID0gZXZhbEFuZExvZygic2F3QWRkZWQgPSBmYWxzZTsiKTsKKyAgICBzYXdSZW1v
dmVkID0gZXZhbEFuZExvZygic2F3UmVtb3ZlZCA9IGZhbHNlOyIpOworCisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBpdGVyYXRlQ3Vyc29yOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBpdGVyYXRlQ3Vyc29yKCkK
K3sKKyAgICBkZWJ1ZygiaXRlcmF0ZUN1cnNvcigpOiIpOworICAgIGV2YWxBbmRMb2coImV2ZW50
LnRhcmdldC50cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gY2hlY2tDdXJzb3JSZXN1bHRzQW5kU2V0
dXBNdXRhdGluZ0N1cnNvcjsiKTsKKyAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBl
dmVudC50YXJnZXQucmVzdWx0OyIpOworICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgaWYgKGN1
cnNvci52YWx1ZS5uYW1lID09IG9iamVjdFN0b3JlRGF0YVswXS5uYW1lKSB7CisgICAgICAgICAg
ICBzYXdSZW1vdmVkID0gZXZhbEFuZExvZygic2F3UmVtb3ZlZCA9IHRydWU7Iik7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKGN1cnNvci52YWx1ZS5uYW1lID09IG9iamVjdFN0b3JlRGF0YVtvYmpl
Y3RTdG9yZURhdGEubGVuZ3RoIC0gMV0ubmFtZSkgeworICAgICAgICAgICAgc2F3QWRkZWQgPSBl
dmFsQW5kTG9nKCJzYXdBZGRlZCA9IHRydWU7Iik7CisgICAgICAgIH0KKyAgICAgICAgZXZhbEFu
ZExvZygiY291bnQrKzsiKTsKKyAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7
Iik7CisgICAgfQorfQorCitmdW5jdGlvbiBjaGVja0N1cnNvclJlc3VsdHNBbmRTZXR1cE11dGF0
aW5nQ3Vyc29yKCkKK3sKKyAgICBkZWJ1ZygiY2hlY2tDdXJzb3JSZXN1bHRzQW5kU2V0dXBNdXRh
dGluZ0N1cnNvcigpOiIpOworICAgIHNob3VsZEJlKCJjb3VudCIsICJvYmplY3RTdG9yZURhdGEu
bGVuZ3RoIC0gMSIpOworICAgIHNob3VsZEJlKCJzYXdBZGRlZCIsICJmYWxzZSIpOworICAgIHNo
b3VsZEJlKCJzYXdSZW1vdmVkIiwgInRydWUiKTsKKworICAgIGNvdW50ID0gZXZhbEFuZExvZygi
Y291bnQgPSAwOyIpOworICAgIHNhd0FkZGVkID0gZXZhbEFuZExvZygic2F3QWRkZWQgPSBmYWxz
ZTsiKTsKKyAgICBzYXdSZW1vdmVkID0gZXZhbEFuZExvZygic2F3UmVtb3ZlZCA9IGZhbHNlOyIp
OworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi50cmFuc2FjdGlvbign
Zm9vJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3RvcmUoJ2ZvbycpLm9wZW5D
dXJzb3IoKTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGl0ZXJhdGVNdXRhdGluZ0N1cnNv
cjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKwor
ZnVuY3Rpb24gaXRlcmF0ZU11dGF0aW5nQ3Vyc29yKCkKK3sKKyAgICBkZWJ1ZygiaXRlcmF0ZU11
dGF0aW5nQ3Vyc29yKCk6Iik7CisgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnRyYW5zYWN0
aW9uLm9uY29tcGxldGUgPSBjaGVja011dGF0aW5nQ3Vyc29yUmVzdWx0czsiKTsKKyAgICBjdXJz
b3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgIGlm
IChjdXJzb3IpIHsKKyAgICAgICAgaWYgKGN1cnNvci52YWx1ZS5uYW1lID09IG9iamVjdFN0b3Jl
RGF0YVswXS5uYW1lKSB7CisgICAgICAgICAgICBzYXdSZW1vdmVkID0gZXZhbEFuZExvZygic2F3
UmVtb3ZlZCA9IHRydWU7Iik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGN1cnNvci52YWx1ZS5u
YW1lID09IG9iamVjdFN0b3JlRGF0YVtvYmplY3RTdG9yZURhdGEubGVuZ3RoIC0gMV0ubmFtZSkg
eworICAgICAgICAgICAgc2F3QWRkZWQgPSBldmFsQW5kTG9nKCJzYXdBZGRlZCA9IHRydWU7Iik7
CisgICAgICAgIH0KKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIiciICsg
b2JqZWN0U3RvcmVEYXRhW2NvdW50XS5uYW1lICsgIiciKTsKKyAgICAgICAgZXZhbEFuZExvZygi
Y291bnQrKyIpOworCisgICAgICAgIGlmIChjb3VudCA9PSAxKSB7CisgICAgICAgICAgICBvYmpl
Y3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZXZlbnQudGFyZ2V0LnRyYW5zYWN0
aW9uLm9iamVjdFN0b3JlKCdmb28nKTsiKTsKKyAgICAgICAgICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZGVsZXRlKG9iamVjdFN0b3JlRGF0YVswXS5zcyk7
Iik7CisgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEZpbmFsRGF0YTsKKyAgICAg
ICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7CisgICAgICAgIH0KKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIGFkZEZpbmFsRGF0YSgpCit7CisgICAgZGVidWcoImFkZEZpbmFs
RGF0YSgpOiIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3Rv
cmUuYWRkKG9iamVjdFN0b3JlRGF0YVtvYmplY3RTdG9yZURhdGEubGVuZ3RoIC0gMV0pOyIpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeyBjdXJzb3IuY29udGludWUoKTsg
fQorICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiBjaGVja011dGF0aW5nQ3Vyc29yUmVzdWx0cygpCit7CisgICAgZGVidWcoImNoZWNr
TXV0YXRpbmdDdXJzb3JSZXN1bHRzKCk6Iik7CisgICAgc2hvdWxkQmUoImNvdW50IiwgIm9iamVj
dFN0b3JlRGF0YS5sZW5ndGgiKTsKKyAgICBzaG91bGRCZSgic2F3QWRkZWQiLCAidHJ1ZSIpOwor
ICAgIHNob3VsZEJlKCJzYXdSZW1vdmVkIiwgInRydWUiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsK
K30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2N1cnNvci1tdXRh
dGlvbi5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2Vz
L2N1cnNvci1tdXRhdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMTU2NmZiZmRiODc5NWRlMzM3ZDdiOTk2
MTQxNjg5NjZjMDMwMjA4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY3Vyc29yLW11dGF0aW9uLmpzCkBAIC0wLDAgKzEs
MTgxIEBACisvLyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3pp
bGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9jdXJzb3JfbXV0YXRpb24uaHRt
bD9mb3JjZT0xCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisvLyAiIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorLy8gICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKworaWYgKHRoaXMuaW1wb3J0
U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vcmVzb3VyY2Vz
L3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBjdXJzb3Ig
bXV0YXRpb24iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4
ZXMoKTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBuYW1lID0gJ2N1cnNvci1tdXRhdGlvbic7Cisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShuYW1lKSIp
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSkiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVz
dWx0Iik7CisgICAgICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbign
MScpIik7CisgICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKKyAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0dXBPYmplY3RTdG9yZUFu
ZENyZWF0ZUluZGV4OyAgICAgICAgICAKKyAgICAgICAgfTsKKyAgICB9OworfQorCitmdW5jdGlv
biBzZXR1cE9iamVjdFN0b3JlQW5kQ3JlYXRlSW5kZXgoKQoreworICAgIGRlYnVnKCIiKTsKKyAg
ICBkZWJ1Zygic2V0dXBPYmplY3RTdG9yZUFuZENyZWF0ZUluZGV4KCk6Iik7CisKKyAgICB0cmFu
cyA9IGV2YWxBbmRMb2coInRyYW5zID0gcmVxdWVzdC5yZXN1bHQiKTsKKworICAgIG9iamVjdFN0
b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9v
JywgeyBrZXlQYXRoOiAnc3MnIH0pIik7CisgICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9
IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCduYW1lJywgJ25hbWUnLCB7IHVuaXF1ZTogdHJ1ZSB9
KSIpOworICAgIG9iamVjdFN0b3JlRGF0YSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlRGF0YSA9
IFtcbiIgKyAKKyAgICAgICAgIC8vIFRvIGJlIHJlbW92ZWQuCisiICAgICAgICB7IHNzOiAnMjM3
LTIzLTc3MzInLCBuYW1lOiAnQm9iJyB9LFxuIiArIAorCisgICAgICAgICAvLyBBbHdheXMgcHJl
c2VudC4KKyIgICAgICAgIHsgc3M6ICcyMzctMjMtNzczMycsIG5hbWU6ICdBbm4nIH0sXG4iICsK
KyIgICAgICAgIHsgc3M6ICcyMzctMjMtNzczNCcsIG5hbWU6ICdSb24nIH0sXG4iICsKKyIgICAg
ICAgIHsgc3M6ICcyMzctMjMtNzczNScsIG5hbWU6ICdTdWUnIH0sXG4iICsKKyIgICAgICAgIHsg
c3M6ICcyMzctMjMtNzczNicsIG5hbWU6ICdKb2UnIH0sXG4iICsKKworICAgICAgICAgLy8gVG8g
YmUgYWRkZWQuCisiICAgICAgICB7IHNzOiAnMjM3LTIzLTc3MzcnLCBuYW1lOiAnUGF0JyB9XG4i
ICsKKyIgICAgXSIpOworCisgICAgZm9yIChpID0gMDsgaSA8IG9iamVjdFN0b3JlRGF0YS5sZW5n
dGggLSAxOyBpKyspIHsKKyAgICAgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKG9iamVj
dFN0b3JlRGF0YVsiICsgaSArICJdKSIpOworICAgIH0KKworICAgIGV2YWxBbmRMb2coInRyYW5z
Lm9uY29tcGxldGUgPSBjaGVja0N1cnNvclJlc3VsdHMiKTsKKyAgICBzZXR1cEN1cnNvcigpOwor
fQorCitmdW5jdGlvbiBzZXR1cEN1cnNvcigpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVn
KCJzZXR1cEN1cnNvcigpOiIpOworCisgICAgY291bnQgPSBldmFsQW5kTG9nKCJjb3VudCA9IDAi
KTsKKyAgICBzYXdBZGRlZCA9IGV2YWxBbmRMb2coInNhd0FkZGVkID0gZmFsc2UiKTsKKyAgICBz
YXdSZW1vdmVkID0gZXZhbEFuZExvZygic2F3UmVtb3ZlZCA9IGZhbHNlIik7CisKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKSIpOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gaXRlcmF0ZUN1cnNvcjsKK30KKworZnVuY3Rpb24gaXRlcmF0ZUN1cnNv
cigpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJpdGVyYXRlQ3Vyc29yKCk6Iik7Cisg
ICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwor
ICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjdXJzb3Iu
dmFsdWUubmFtZSIsIG9iamVjdFN0b3JlRGF0YVtjb3VudF0ubmFtZSk7CisgICAgICAgIGlmIChj
dXJzb3IudmFsdWUubmFtZSA9PSBvYmplY3RTdG9yZURhdGFbMF0ubmFtZSkgeworICAgICAgICAg
ICAgc2F3UmVtb3ZlZCA9IGV2YWxBbmRMb2coInNhd1JlbW92ZWQgPSB0cnVlIik7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKGN1cnNvci52YWx1ZS5uYW1lID09IG9iamVjdFN0b3JlRGF0YVtvYmpl
Y3RTdG9yZURhdGEubGVuZ3RoIC0gMV0ubmFtZSkgeworICAgICAgICAgICAgc2F3QWRkZWQgPSBl
dmFsQW5kTG9nKCJzYXdBZGRlZCA9IHRydWUiKTsKKyAgICAgICAgfQorICAgICAgICBldmFsQW5k
TG9nKCJjb3VudCsrIik7CisgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpIik7
CisgICAgfQorfQorCitmdW5jdGlvbiBjaGVja0N1cnNvclJlc3VsdHMoKQoreworICAgIGRlYnVn
KCIiKTsKKyAgICBkZWJ1ZygiY2hlY2tDdXJzb3JSZXN1bHRzKCk6Iik7CisgICAgc2hvdWxkQmUo
ImNvdW50IiwgIm9iamVjdFN0b3JlRGF0YS5sZW5ndGggLSAxIik7CisgICAgc2hvdWxkQmUoInNh
d0FkZGVkIiwgImZhbHNlIik7CisgICAgc2hvdWxkQmUoInNhd1JlbW92ZWQiLCAidHJ1ZSIpOwor
CisgICAgc2V0dXBNdXRhdGluZ0N1cnNvcigpOworfQorCitmdW5jdGlvbiBzZXR1cE11dGF0aW5n
Q3Vyc29yKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInNldHVwTXV0YXRpbmdDdXJz
b3IoKToiKTsKKyAgIAorICAgIGNvdW50ID0gZXZhbEFuZExvZygiY291bnQgPSAwIik7CisgICAg
c2F3QWRkZWQgPSBldmFsQW5kTG9nKCJzYXdBZGRlZCA9IGZhbHNlIik7CisgICAgc2F3UmVtb3Zl
ZCA9IGV2YWxBbmRMb2coInNhd1JlbW92ZWQgPSBmYWxzZSIpOworICAgIGRlYnVnKCJbb2JqZWN0
U3RvcmVEYXRhTmFtZVNvcnQgaXMgYW4gYXJyYXkgb2YgaW5kZXhlcyBpbnRvIG9iamVjdFN0b3Jl
RGF0YSBpbiBhbHBoYWJldGljYWwgb3JkZXIgYnkgbmFtZV0iKTsKKyAgICBvYmplY3RTdG9yZURh
dGFOYW1lU29ydCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0ID0gWyAxLCA0
LCA1LCAyLCAzIF0iKTsKKworICAgIGRlYnVnKCIiKTsKKworICAgIHRyYW5zID0gZXZhbEFuZExv
ZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignZm9vJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklU
RSkiKTsKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gdHJhbnMu
b2JqZWN0U3RvcmUoJ2ZvbycpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9wZW5DdXJzb3IoKSIpOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gaXRlcmF0ZU11dGF0aW5nQ3Vyc29yOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxl
dGUgPSBjaGVja011dGF0aW5nQ3Vyc29yUmVzdWx0cyIpOworfQorCitmdW5jdGlvbiBpdGVyYXRl
TXV0YXRpbmdDdXJzb3IoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiaXRlcmF0ZU11
dGF0aW5nQ3Vyc29yKCk6Iik7CisgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOworICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJjdXJzb3IudmFsdWUubmFtZSIsIG9iamVjdFN0b3JlRGF0YVtvYmplY3RT
dG9yZURhdGFOYW1lU29ydFtjb3VudF1dLm5hbWUpOworICAgICAgICBpZiAoY3Vyc29yLnZhbHVl
Lm5hbWUgPT0gb2JqZWN0U3RvcmVEYXRhWzBdLm5hbWUpIHsKKyAgICAgICAgICAgIHNhd1JlbW92
ZWQgPSBldmFsQW5kTG9nKCJzYXdSZW1vdmVkID0gdHJ1ZSIpOworICAgICAgICB9CisgICAgICAg
IGlmIChjdXJzb3IudmFsdWUubmFtZSA9PSBvYmplY3RTdG9yZURhdGFbb2JqZWN0U3RvcmVEYXRh
Lmxlbmd0aCAtIDFdLm5hbWUpIHsKKyAgICAgICAgICAgIHNhd0FkZGVkID0gZXZhbEFuZExvZygi
c2F3QWRkZWQgPSB0cnVlIik7CisgICAgICAgIH0KKyAgICAgICAgZXZhbEFuZExvZygiY291bnQr
KyIpOworCisgICAgICAgIGlmIChjb3VudCA9PSAxKSB7CisgICAgICAgICAgICBkZWJ1ZygiIik7
CisgICAgICAgICAgICBkZWJ1ZygiTXV0YXRpbmcgdGhlIG9iamVjdCBzdG9yZToiKTsKKworICAg
ICAgICAgICAgZGVidWcoIlJlbW92aW5nICIgKyBvYmplY3RTdG9yZURhdGFbMF0ubmFtZSk7Cisg
ICAgICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmRl
bGV0ZShvYmplY3RTdG9yZURhdGFbMF0uc3MpIik7CisgICAgICAgICAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gYWRkRmluYWxEYXRhOworCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjdXJz
b3IuY29udGludWUoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gYWRkRmluYWxE
YXRhKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImFkZEZpbmFsRGF0YSgpOiIpOwor
ICAgIGRlYnVnKCJBZGRpbmcgIiArIG9iamVjdFN0b3JlRGF0YVtvYmplY3RTdG9yZURhdGEubGVu
Z3RoIC0gMV0ubmFtZSk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmpl
Y3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW29iamVjdFN0b3JlRGF0YS5sZW5ndGggLSAxXSki
KTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgY3Vyc29yLmNvbnRpbnVl
KCk7CisgICAgfQorfQorCitmdW5jdGlvbiBjaGVja011dGF0aW5nQ3Vyc29yUmVzdWx0cygpCit7
CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJjaGVja011dGF0aW5nQ3Vyc29yUmVzdWx0cygp
OiIpOworICAgIHNob3VsZEJlKCJjb3VudCIsICJvYmplY3RTdG9yZURhdGEubGVuZ3RoIC0gMSIp
OworICAgIHNob3VsZEJlKCJzYXdBZGRlZCIsICJ0cnVlIik7CisgICAgc2hvdWxkQmUoInNhd1Jl
bW92ZWQiLCAiZmFsc2UiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2N1cnNvci11cGRhdGUtdXBkYXRlcy1pbmRleGVz
LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY3Vy
c29yLXVwZGF0ZS11cGRhdGVzLWluZGV4ZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWM3ZDliYjliYjY2ZWU0
ZTM1Mzc4ZTljYWI4YWRmYjkxM2MxYmM5MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2N1cnNvci11cGRhdGUtdXBkYXRl
cy1pbmRleGVzLmpzCkBAIC0wLDAgKzEsMTE0IEBACisvLyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0
cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3Qv
dGVzdF9jdXJzb3JfdXBkYXRlX3VwZGF0ZXNfaW5kZXhlcy5odG1sP2ZvcmNlPTEKKy8vIGxpY2Vu
c2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1w
b3J0U2NyaXB0cygnLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMn
KTsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi9yZXNvdXJjZXMvc2hhcmVkLmpzJyk7Cit9CisK
K2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQjogbXV0YXRpbmcgcmVjb3JkcyB3aXRoIGEgci93
IGN1cnNvciB1cGRhdGVzIGluZGV4ZXMgb24gdGhvc2UgcmVjb3JkcyIpOworCitmdW5jdGlvbiB0
ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYu
bG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0
aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5T
dWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBkYiA9IGV2YWxB
bmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIGZpcnN0VmFsdWUgPSBldmFs
QW5kTG9nKCJmaXJzdFZhbHVlID0gJ2hpJzsiKTsKKyAgICBzZWNvbmRWYWx1ZSA9IGV2YWxBbmRM
b2coInNlY29uZFZhbHVlID0gJ2J5ZSc7Iik7CisgICAgb2JqZWN0U3RvcmVJbmZvID0gZXZhbEFu
ZExvZygib2JqZWN0U3RvcmVJbmZvID0gW1xuIiArCisiICAgICAgICB7IG5hbWU6ICcxJywgb3B0
aW9uczoge30sIGtleTogMSxcbiIgKworIiAgICAgICAgICBlbnRyeTogeyBkYXRhOiBmaXJzdFZh
bHVlIH0gfSxcbiIgKworIiAgICAgICAgeyBuYW1lOiAnMicsIG9wdGlvbnM6IHsga2V5UGF0aDog
J2ZvbycgfSxcbiIgKworIiAgICAgICAgICBlbnRyeTogeyBmb286IDEsIGRhdGE6IGZpcnN0VmFs
dWUgfSB9LFxuIiArCisiICAgICAgICB7IG5hbWU6ICczJywgb3B0aW9uczogeyBhdXRvSW5jcmVt
ZW50OiB0cnVlIH0sXG4iICsKKyIgICAgICAgICAgZW50cnk6IHsgZGF0YTogZmlyc3RWYWx1ZSB9
IH0sXG4iICsKKyIgICAgICAgIHsgbmFtZTogJzQnLCBvcHRpb25zOiB7IGtleVBhdGg6ICdmb28n
LCBhdXRvSW5jcmVtZW50OiB0cnVlIH0sXG4iICsKKyIgICAgICAgICAgZW50cnk6IHsgZGF0YTog
Zmlyc3RWYWx1ZSB9IH0sXG4iICsKKyIgICAgXTsiKTsKKyAgICBpID0gZXZhbEFuZExvZygiaSA9
IDA7Iik7CisgICAgc2V0VmVyc2lvbigpOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uKCkKK3sK
KyAgICBpZiAoaSA8IG9iamVjdFN0b3JlSW5mby5sZW5ndGgpIHsKKyAgICAgICAgaW5mbyA9IGV2
YWxBbmRMb2coImluZm8gPSBvYmplY3RTdG9yZUluZm9baV07Iik7CisgICAgICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gc2V0dXBPYmplY3RTdG9yZUFuZENyZWF0ZUluZGV4QW5kQWRkOwor
ICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB9
IGVsc2UgeworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHNl
dHVwT2JqZWN0U3RvcmVBbmRDcmVhdGVJbmRleEFuZEFkZCgpCit7CisgICAgZGVidWcoInNldHVw
T2JqZWN0U3RvcmVBbmRDcmVhdGVJbmRleCgpOiIpOworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jl
cyhkYik7CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoaW5mby5uYW1lLCBpbmZvLm9wdGlvbnMpOyIpOworCisgICAgaW5k
ZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdkYXRhX2lu
ZGV4JywgJ2RhdGEnLCB7IHVuaXF1ZTogZmFsc2UgfSk7Iik7CisgICAgdW5pcXVlSW5kZXggPSBl
dmFsQW5kTG9nKCJ1bmlxdWVJbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCd1bmlxdWVf
ZGF0YV9pbmRleCcsICdkYXRhJywgeyB1bmlxdWU6IHRydWUgfSk7Iik7CisgICAgaWYgKGluZm8u
a2V5KSB7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3Rv
cmUuYWRkKGluZm8uZW50cnksIGluZm8ua2V5KTsiKTsKKyAgICB9IGVsc2UgeworICAgICAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChpbmZvLmVudHJ5
KTsiKTsKKyAgICB9CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuQ3Vyc29yOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBv
cGVuQ3Vyc29yKCkKK3sKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVj
dFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVwZGF0ZUN1
cnNvcjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30K
KworZnVuY3Rpb24gdXBkYXRlQ3Vyc29yKCkKK3sKKyAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJj
dXJzb3IgPSByZXF1ZXN0LnJlc3VsdDsiKTsKKyAgICB2YWx1ZSA9IGV2YWxBbmRMb2coInZhbHVl
ID0gY3Vyc29yLnZhbHVlOyIpOworICAgIHZhbHVlLmRhdGEgPSBldmFsQW5kTG9nKCJ2YWx1ZS5k
YXRhID0gc2Vjb25kVmFsdWU7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBjdXJzb3IudXBkYXRlKHZhbHVlKTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldElu
ZGV4MTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30K
KworZnVuY3Rpb24gZ2V0SW5kZXgxKCkKK3sKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVx
dWVzdCA9IGluZGV4LmdldChzZWNvbmRWYWx1ZSk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBjaGVja0luZGV4MUFuZEdldEluZGV4MjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2hlY2tJbmRleDFBbmRHZXRJbmRleDIo
KQoreworICAgIHNob3VsZEJlKCJ2YWx1ZS5kYXRhIiwgImV2ZW50LnRhcmdldC5yZXN1bHQuZGF0
YSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gdW5pcXVlSW5kZXguZ2V0
KHNlY29uZFZhbHVlKTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNoZWNrSW5kZXgyOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiBjaGVja0luZGV4MigpCit7CisgICAgc2hvdWxkQmUoInZhbHVlLmRhdGEiLCAiZXZlbnQu
dGFyZ2V0LnJlc3VsdC5kYXRhIik7CisgICAgZXZhbEFuZExvZygiaSsrOyIpOworICAgIHNldFZl
cnNpb24oKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2N1
cnNvcnMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNl
cy9jdXJzb3JzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxZGUzNzQwYTBjZWEwM2U5MjhiNmFiMjM1MzZmMWIy
NmM2YmFjNDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL3Jlc291cmNlcy9jdXJzb3JzLmpzCkBAIC0wLDAgKzEsMzg4IEBACisvLyBvcmln
aW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9k
b20vaW5kZXhlZERCL3Rlc3QvdGVzdF9jdXJzb3JzLmh0bWw/Zm9yY2U9MQorLy8gbGljZW5zZSBv
ZiBvcmlnaW5hbCB0ZXN0OgorLy8gIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKy8vICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLyAiCisKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRT
Y3JpcHRzKCcuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwor
ICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uL3Jlc291cmNlcy9zaGFyZWQuanMnKTsKK30KKworZGVz
Y3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGN1cnNvciBiZWhhdmlvciIpOworCitmdW5jdGlvbiB0
ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYu
bG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0
aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5T
dWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9u
KCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHRlc3RHcm91cDE7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHRlc3RH
cm91cDEoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBvYmplY3RT
dG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdhdXRvSW5jcmVtZW50Jywg
eyBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0Iiwg
Im51bGwiKTsKKyAgICAgIHRlc3RHcm91cDIoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RH
cm91cDIoKQoreworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ2F1dG9JbmNyZW1lbnRLZXlQYXRoJywgeyBrZXlQYXRoOiAnZm9vJywgYXV0b0luY3Jl
bWVudDogdHJ1ZSB9KTsiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
b2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2
ZW50KSB7CisgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJudWxsIik7Cisg
ICAgICB0ZXN0R3JvdXAzKCk7CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0R3JvdXAzKCkKK3sK
KyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdrZXlQ
YXRoJywgeyBrZXlQYXRoOiAnZm9vJyB9KTsiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIs
ICJudWxsIik7CisgICAgICB0ZXN0R3JvdXA0KCk7CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0
R3JvdXA0KCkKK3sKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVj
dFN0b3JlKCdmb28nKTsiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
b2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2
ZW50KSB7CisgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJudWxsIik7Cisg
ICAgICB0ZXN0R3JvdXA1KCk7CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0R3JvdXA1KCkKK3sK
KyAgICBrZXlzID0gZXZhbEFuZExvZygia2V5cyA9IFsxLCAtMSwgMCwgMTAsIDIwMDAsICdxJywg
J3onLCAndHdvJywgJ2InLCAnYSddOyIpOworICAgIHNvcnRlZEtleXMgPSBldmFsQW5kTG9nKCJz
b3J0ZWRLZXlzID0gWy0xLCAwLCAxLCAxMCwgMjAwMCwgJ2EnLCAnYicsICdxJywgJ3R3bycsICd6
J107Iik7CisKKyAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gMDsiKTsKKwor
ICAgIGZvciAoaSBpbiBrZXlzKSB7CisgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IG9iamVjdFN0b3JlLmFkZCgnZm9vJywga2V5c1tpXSk7Iik7CisgICAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgaWYgKCsra2V5SW5kZXggPT0ga2V5cy5sZW5n
dGgpIHsKKyAgICAgICAgICB0ZXN0R3JvdXA2KCk7CisgICAgICAgIH0KKyAgICAgIH07CisgICAg
fQorfQorCitmdW5jdGlvbiB0ZXN0R3JvdXA2KCkKK3sKKyAgICBrZXlJbmRleCA9IDA7CisKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3Io
KTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgeworICAgICAgY3Vyc29yID0g
ZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAgIGlmIChj
dXJzb3IpIHsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAic29ydGVkS2V5c1trZXlJ
bmRleF0iKTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgInNvcnRlZEtl
eXNba2V5SW5kZXhdIik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAiJ2Zvbyci
KTsKKworICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKKyAgICAgICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiY3Vyc29yLmNvbnRpbnVlKCk7IiwgIklEQkRhdGFiYXNl
RXhjZXB0aW9uLk5PVF9BTExPV0VEX0VSUiIpOworCisgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
a2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
cHJpbWFyeUtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOworICAgICAgICBzaG91bGRCZSgi
Y3Vyc29yLnZhbHVlIiwgIidmb28nIik7CisKKyAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgr
KzsiKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgi
LCAia2V5cy5sZW5ndGgiKTsKKyAgICAgICAgdGVzdEdyb3VwNygpOworICAgICAgfQorICAgIH0K
K30KKworZnVuY3Rpb24gdGVzdEdyb3VwNygpCit7CisgICAga2V5SW5kZXggPSBldmFsQW5kTG9n
KCJrZXlJbmRleCA9IDQ7Iik7CisKKyAgICByYW5nZSA9IGV2YWxBbmRMb2coInJhbmdlID0gSURC
S2V5UmFuZ2UuYm91bmQoMjAwMCwgJ3EnKTsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IocmFuZ2UpOyIpOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3Ig
PSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICBz
aG91bGRCZSgiY3Vyc29yLmtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOworICAgICAgICBz
aG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKKyAg
ICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZSIsICInZm9vJyIpOworCisgICAgICAgIGV2YWxB
bmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOworCisgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
a2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
cHJpbWFyeUtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOworICAgICAgICBzaG91bGRCZSgi
Y3Vyc29yLnZhbHVlIiwgIidmb28nIik7CisKKyAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgr
KzsiKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgi
LCAiOCIpOworICAgICAgICB0ZXN0R3JvdXA4KCk7CisgICAgICB9CisgICAgfQorfQorCitmdW5j
dGlvbiB0ZXN0R3JvdXA4KCkKK3sKKyAgICBrZXlJbmRleCA9IDA7CisKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoKTsiKTsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgeworICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygi
Y3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAgIGlmIChjdXJzb3IpIHsKKyAg
ICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKKyAg
ICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhd
Iik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAiJ2ZvbyciKTsKKworICAgICAg
ICBpZiAoa2V5SW5kZXgpIHsKKyAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUo
KTsiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBldmFsQW5kTG9nKCJj
dXJzb3IuY29udGludWUoJ2InKTsiKTsKKyAgICAgICAgfQorCisgICAgICAgIHNob3VsZEJlKCJj
dXJzb3Iua2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7CisgICAgICAgIHNob3VsZEJlKCJj
dXJzb3IucHJpbWFyeUtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOworICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLnZhbHVlIiwgIidmb28nIik7CisKKyAgICAgICAgZXZhbEFuZExvZygia2V5
SW5kZXggKz0ga2V5SW5kZXggPyAxOiA2OyIpOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAg
ICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJrZXlzLmxlbmd0aCIpOworICAgICAgICB0ZXN0R3Jv
dXA5KCk7CisgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0R3JvdXA5KCkKK3sKKyAg
ICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gMDsiKTsKKworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICBjdXJzb3IgPSBldmFsQW5kTG9n
KCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgICAgaWYgKGN1cnNvcikgewor
ICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOwor
ICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAic29ydGVkS2V5c1trZXlJbmRl
eF0iKTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZSIsICInZm9vJyIpOworCisgICAg
ICAgIGlmIChrZXlJbmRleCkgeworICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51
ZSgpOyIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIGV2YWxBbmRMb2co
ImN1cnNvci5jb250aW51ZSgxMCk7Iik7CisgICAgICAgIH0KKworICAgICAgICBzaG91bGRCZSgi
Y3Vyc29yLmtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOworICAgICAgICBzaG91bGRCZSgi
Y3Vyc29yLnByaW1hcnlLZXkiLCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKKyAgICAgICAgc2hv
dWxkQmUoImN1cnNvci52YWx1ZSIsICInZm9vJyIpOworCisgICAgICAgIGV2YWxBbmRMb2coImtl
eUluZGV4ICs9IGtleUluZGV4ID8gMTogMzsiKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAg
ICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAia2V5cy5sZW5ndGgiKTsKKyAgICAgICAgdGVzdEdy
b3VwMTAoKTsKKyAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDEwKCkKK3sK
KyAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gMDsiKTsKKworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICBjdXJzb3IgPSBldmFsQW5k
TG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgICAgaWYgKGN1cnNvcikg
eworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIp
OworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAic29ydGVkS2V5c1trZXlJ
bmRleF0iKTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZSIsICInZm9vJyIpOworCisg
ICAgICAgIGlmIChrZXlJbmRleCkgeworICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250
aW51ZSgpOyIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIGV2YWxBbmRM
b2coImN1cnNvci5jb250aW51ZSgnYycpOyIpOworICAgICAgICB9CisKKyAgICAgICAgc2hvdWxk
QmUoImN1cnNvci5rZXkiLCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKKyAgICAgICAgc2hvdWxk
QmUoImN1cnNvci5wcmltYXJ5S2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhdIik7CisgICAgICAg
IHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAiJ2ZvbyciKTsKKworICAgICAgICBldmFsQW5kTG9n
KCJrZXlJbmRleCArPSBrZXlJbmRleCA/IDEgOiA3OyIpOworICAgICAgfQorICAgICAgZWxzZSB7
CisgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJrZXlzLmxlbmd0aCIpOworICAgICAgICB0
ZXN0R3JvdXAxMSgpOworICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gdGVzdEdyb3VwMTEo
KQoreworICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAwOyIpOworCisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7
Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgIGN1cnNvciA9IGV2
YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICBpZiAoY3Vy
c29yKSB7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgInNvcnRlZEtleXNba2V5SW5k
ZXhdIik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJzb3J0ZWRLZXlz
W2tleUluZGV4XSIpOworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgIidmb28nIik7
CisKKyAgICAgICAgaWYgKGtleUluZGV4ID09IDQpIHsKKyAgICAgICAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygicmVxdWVzdCA9IGN1cnNvci51cGRhdGUoJ2JhcicpOyIpOworICAgICAgICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2co
ImtleUluZGV4Kys7Iik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUo
KTsiKTsKKyAgICAgICAgICB9OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAg
IGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7CisgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29y
LmNvbnRpbnVlKCk7Iik7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAg
ICBzaG91bGRCZSgia2V5SW5kZXgiLCAia2V5cy5sZW5ndGgiKTsKKyAgICAgICAgdGVzdEdyb3Vw
MTIoKTsKKyAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDEyKCkKK3sKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmdldChzb3J0ZWRL
ZXlzWzRdKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHRlc3RHcm91cDEyYjsKK30KKworZnVuY3Rpb24g
dGVzdEdyb3VwMTJiKCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICIn
YmFyJyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9y
ZS5wdXQoJ2ZvbycsIHNvcnRlZEtleXNbNF0pOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdGVzdEdyb3Vw
MTM7Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDEzKCkKK3sKKyAgICBrZXlJbmRleCA9IGV2YWxB
bmRMb2coImtleUluZGV4ID0gMDsiKTsKKworICAgIGdvdFJlbW92ZUV2ZW50ID0gZmFsc2U7Cisg
ICAgcmV0dmFsID0gZmFsc2U7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IobnVsbCwgSURCQ3Vyc29yLk5FWFQpOyIpOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJj
dXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgICAgaWYgKGN1cnNvcikgeworICAg
ICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJzb3J0ZWRLZXlzW2tleUluZGV4XSIpOworICAg
ICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAic29ydGVkS2V5c1trZXlJbmRleF0i
KTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZSIsICInZm9vJyIpOworCisgICAgICAg
IGlmIChrZXlJbmRleCA9PSA0KSB7CisgICAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBjdXJzb3IuZGVsZXRlKCk7Iik7CisgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIjUiKTsK
KyAgICAgICAgICAgIGdvdFJlbW92ZUV2ZW50ID0gZXZhbEFuZExvZygiZ290UmVtb3ZlRXZlbnQg
PSB0cnVlOyIpOworICAgICAgICAgIH07CisgICAgICAgIH0KKworICAgICAgICBldmFsQW5kTG9n
KCJrZXlJbmRleCsrOyIpOworICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsi
KTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAi
a2V5cy5sZW5ndGgiKTsKKyAgICAgICAgc2hvdWxkQmUoImdvdFJlbW92ZUV2ZW50IiwgInRydWUi
KTsKKyAgICAgICAgdGVzdEdyb3VwMTQoKTsKKyAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9u
IHRlc3RHcm91cDE0KCkKK3sKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9i
amVjdFN0b3JlLmdldChzb3J0ZWRLZXlzWzRdKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHRlc3RHcm91
cDE0YjsKK30KKworZnVuY3Rpb24gdGVzdEdyb3VwMTRiKCkKK3sKKyAgICBzaG91bGRCZSgiZXZl
bnQudGFyZ2V0LnJlc3VsdCIsICJ1bmRlZmluZWQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKCdmb28nLCBzb3J0ZWRLZXlzWzRdKTsiKTsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IHRlc3RHcm91cDE1OworfQorCitmdW5jdGlvbiB0ZXN0R3JvdXAxNSgp
Cit7CisgICAga2V5SW5kZXggPSBzb3J0ZWRLZXlzLmxlbmd0aCAtIDE7CisKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IobnVsbCwgSURC
Q3Vyc29yLlBSRVYpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAg
ICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwor
ICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJzb3J0
ZWRLZXlzW2tleUluZGV4XSIpOworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXki
LCAic29ydGVkS2V5c1trZXlJbmRleF0iKTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1
ZSIsICInZm9vJyIpOworCisgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIp
OworCisgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgInNvcnRlZEtleXNba2V5SW5kZXhd
Iik7CisgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJzb3J0ZWRLZXlzW2tl
eUluZGV4XSIpOworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgIidmb28nIik7CisK
KyAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgtLTsiKTsKKyAgICAgIH0KKyAgICAgIGVsc2Ug
eworICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiLTEiKTsKKyAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICB9CisgICAgfQorfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9yZXNvdXJjZXMvZGVsZXRlLXJlc3VsdC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvcmVzb3VyY2VzL2RlbGV0ZS1yZXN1bHQuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmY2ZmQy
MDIxMzAyYWY1NzdiYjRjODgzZjlhNTMwMGViY2UxMzAxOAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2RlbGV0ZS1yZXN1
bHQuanMKQEAgLTAsMCArMSw2NCBAQAorLy8gb3JpZ2luYWwgdGVzdDoKKy8vIGh0dHA6Ly9teHIu
bW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3Rfb2Rk
X3Jlc3VsdF9vcmRlci5odG1sP3Jhdz0xCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Cisv
LyAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorLy8g
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKwor
aWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygn
Li4vLi4vcmVzb3VyY2VzL3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRl
eGVkREI6IHJlc3VsdCBwcm9wZXJ0eSBhZnRlciBkZWxldGluZyBleGlzdGluZyBhbmQgbm9uLWV4
aXN0aW5nIHJlY29yZCIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQ
cmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVz
Y3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxB
bmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBjcmVhdGVPYmplY3RTdG9yZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY3JlYXRlT2JqZWN0U3RvcmUoKQoreworICAg
IGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7IGtleVBhdGg6ICdp
ZCcsIGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoe30pOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZGVsZXRlUmVjb3JkMTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVsZXRlUmVjb3JkMSgpCit7CisgICAgaWQgPSBldmFs
QW5kTG9nKCJpZCA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5kZWxldGUoaWQpOyIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZGVsZXRlUmVjb3JkMjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVsZXRlUmVjb3JkMigpCit7CisgICAg
c2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAidW5kZWZpbmVkIik7CisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5kZWxldGUoaWQpOyIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZmluYWxDaGVjazsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOworfQorCitmdW5jdGlvbiBmaW5hbENoZWNrKCkKK3sK
KyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ1bmRlZmluZWQiKTsKKyAgICBm
aW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3Vy
Y2VzL2V2ZW50LXNvdXJjZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEvcmVzb3VyY2VzL2V2ZW50LXNvdXJjZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YTc5NmM1MTE1ZjQ3ZjAw
OGI5YWZmMDg3OGFlYmRkYzdlZmNiN2VjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvZXZlbnQtc291cmNlLmpzCkBAIC0w
LDAgKzEsNTcgQEAKKy8vIG9yaWdpbmFsIHRlc3Q6CisvLyBodHRwOi8vbXhyLm1vemlsbGEub3Jn
L21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2V2ZW50X3NvdXJjZS5o
dG1sCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisvLyAiIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorLy8gICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKworaWYgKHRoaXMuaW1wb3J0U2NyaXB0
cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vcmVzb3VyY2VzL3NoYXJl
ZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBldmVudC50YXJnZXQu
c291cmNlIGluIHN1Y2Nlc3MgY2FsbGJhY2tzIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAg
IHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRo
bmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQorewor
ICAgIHNvdXJjZSA9IGV2YWxBbmRMb2coInNvdXJjZSA9IGV2ZW50LnRhcmdldC5zb3VyY2U7Iik7
CisgICAgc2hvdWxkQmUoInNvdXJjZSIsICJpbmRleGVkREIiKTsKKworICAgIGRiID0gZXZhbEFu
ZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGNsZWFuRGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIHNvdXJjZSA9
IGV2YWxBbmRMb2coInNvdXJjZSA9IGV2ZW50LnRhcmdldC5zb3VyY2U7Iik7CisgICAgc2hvdWxk
QmUoInNvdXJjZSIsICJkYiIpOworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKwor
ICAgIG9iamVjdFN0b3JlTmFtZSA9ICJPYmplY3RzIjsKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxB
bmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1l
LCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoe30pOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gYXJlV2VEb25lWWV0OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBhcmVXZURvbmVZZXQoKQoreworICAgIHNvdXJjZSA9IGV2
YWxBbmRMb2coInNvdXJjZSA9IGV2ZW50LnRhcmdldC5zb3VyY2U7Iik7CisgICAgc2hvdWxkQmUo
InNvdXJjZSIsICJvYmplY3RTdG9yZSIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0
KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvZ2xvYmFsLWRhdGEuanMgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9nbG9iYWwtZGF0YS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jMGU5YmFlMTNhZTY1ZWY0NGM4ZTk5NDY1MzU1Y2YxM2I4NGFkNmQ3Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9y
ZXNvdXJjZXMvZ2xvYmFsLWRhdGEuanMKQEAgLTAsMCArMSw2OSBAQAorLy8gb3JpZ2luYWwgdGVz
dDoKKy8vIGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4
ZWREQi90ZXN0L3Rlc3RfZ2xvYmFsX2RhdGEuaHRtbAorLy8gbGljZW5zZSBvZiBvcmlnaW5hbCB0
ZXN0OgorLy8gIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKy8vICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LyAiCisKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8u
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNj
cmlwdHMoJy4uLy4uL3Jlc291cmNlcy9zaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRl
c3QgSW5kZXhlZERCJ3Mgb3BlbmluZyBEQiBtb3JlIHRoYW4gb25jZSIpOworCitmdW5jdGlvbiB0
ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYu
bG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0
aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5T
dWNjZXNzKCkKK3sKKyAgICBkYjEgPSBldmFsQW5kTG9nKCJkYjEgPSBldmVudC50YXJnZXQucmVz
dWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiMS5zZXRWZXJz
aW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYjEpOworCisg
ICAgb2JqZWN0U3RvcmVOYW1lID0gIk9iamVjdHMiOworICAgIG9iamVjdFN0b3JlT3B0aW9ucyA9
IHsga2V5UGF0aDogJ2lkJywgYXV0b0luY3JlbWVudDogdHJ1ZSB9OworICAgIGV2YWxBbmRMb2co
ImRiMS5jcmVhdGVPYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUsIG9iamVjdFN0b3JlT3B0aW9u
cyk7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwg
ZGVzY3JpcHRpb24pOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbjJTdWNjZXNzOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiBvcGVuMlN1Y2Nlc3MoKQoreworICAgIGRiMiA9IGV2YWxBbmRMb2coImRiMiA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHNob3VsZEJlVHJ1ZSgiZGIxICE9PSBkYjIiKTsKKyAg
ICBzaG91bGRCZSgiZGIxLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjEiKTsKKyAgICBzaG91
bGRCZSgiZGIxLm9iamVjdFN0b3JlTmFtZXMuaXRlbSgwKSIsICJvYmplY3RTdG9yZU5hbWUiKTsK
KyAgICBzaG91bGRCZSgiZGIyLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjEiKTsKKyAgICBz
aG91bGRCZSgiZGIyLm9iamVjdFN0b3JlTmFtZXMuaXRlbSgwKSIsICJvYmplY3RTdG9yZU5hbWUi
KTsKKworICAgIG9iamVjdFN0b3JlMSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlMSA9IGRiMS50
cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUpLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7
Iik7CisgICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlMS5uYW1lIiwgIm9iamVjdFN0b3JlTmFtZSIp
OworICAgIHNob3VsZEJlKCJvYmplY3RTdG9yZTEua2V5UGF0aCIsICJvYmplY3RTdG9yZU9wdGlv
bnMua2V5UGF0aCIpOworCisgICAgb2JqZWN0U3RvcmUyID0gZXZhbEFuZExvZygib2JqZWN0U3Rv
cmUyID0gZGIyLnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFtZSkub2JqZWN0U3RvcmUob2JqZWN0
U3RvcmVOYW1lKTsiKTsKKyAgICBzaG91bGRCZVRydWUoIm9iamVjdFN0b3JlMSAhPT0gb2JqZWN0
U3RvcmUyIik7CisgICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlMi5uYW1lIiwgIm9iamVjdFN0b3Jl
TmFtZSIpOworICAgIHNob3VsZEJlKCJvYmplY3RTdG9yZTIua2V5UGF0aCIsICJvYmplY3RTdG9y
ZU9wdGlvbnMua2V5UGF0aCIpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9pbmRleGVzLmpzIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvaW5kZXhlcy5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kZjVlNWFlMDc5Y2I2NmNmNDkxMTA2MTA4OWUyYjRiNjc1YzAyNmQ1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvaW5k
ZXhlcy5qcwpAQCAtMCwwICsxLDEwMTEgQEAKKy8vIG9yaWdpbmFsIHRlc3Q6CisvLyBodHRwOi8v
bXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0
X2luZGV4ZXMuaHRtbD9mb3JjZT0xCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisvLyAi
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorLy8gICBo
dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKworaWYg
KHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnLi4v
Li4vcmVzb3VyY2VzL3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVk
REI6IGl0ZXJhdGluZyB0aHJvdWdoIGluZGV4IGN1cnNvcnMgd2l0aCBrZXlzIGFuZCBrZXkgcmFu
Z2VzIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7
CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9
ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERC
Lm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVu
U3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
K30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJvcGVuU3VjY2Vzcygp
OiIpOworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisK
KyAgICBvYmplY3RTdG9yZU5hbWUgPSAiUGVvcGxlIjsKKworICAgIG9iamVjdFN0b3JlRGF0YSA9
IFsKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczMiIsIHZhbHVlOiB7IG5hbWU6ICJCb2IiLCBo
ZWlnaHQ6IDYwLCB3ZWlnaHQ6IDEyMCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzMi
LCB2YWx1ZTogeyBuYW1lOiAiQW5uIiwgaGVpZ2h0OiA1Miwgd2VpZ2h0OiAxMTAgfSB9LAorICAg
ICAgICB7IGtleTogIjIzNy0yMy03NzM0IiwgdmFsdWU6IHsgbmFtZTogIlJvbiIsIGhlaWdodDog
NzMsIHdlaWdodDogMTgwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNSIsIHZhbHVl
OiB7IG5hbWU6ICJTdWUiLCBoZWlnaHQ6IDU4LCB3ZWlnaHQ6IDEzMCB9IH0sCisgICAgICAgIHsg
a2V5OiAiMjM3LTIzLTc3MzYiLCB2YWx1ZTogeyBuYW1lOiAiSm9lIiwgaGVpZ2h0OiA2NSwgd2Vp
Z2h0OiAxNTAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzM3IiwgdmFsdWU6IHsgbmFt
ZTogIlBhdCIsIGhlaWdodDogNjUsIHdlaWdodDogMTAwIH0gfQorICAgIF07CisKKyAgICBpbmRl
eERhdGEgPSBbCisgICAgICAgIHsgbmFtZTogIm5hbWUiLCBrZXlQYXRoOiAibmFtZSIsIG9wdGlv
bnM6IHsgdW5pcXVlOiB0cnVlIH0gfSwKKyAgICAgICAgeyBuYW1lOiAiaGVpZ2h0Iiwga2V5UGF0
aDogImhlaWdodCIsIG9wdGlvbnM6IHsgfSB9LAorICAgICAgICB7IG5hbWU6ICJ3ZWlnaHQiLCBr
ZXlQYXRoOiAid2VpZ2h0Iiwgb3B0aW9uczogeyB1bmlxdWU6IGZhbHNlIH0gfQorICAgIF07CisK
KyAgICBvYmplY3RTdG9yZURhdGFOYW1lU29ydCA9IFsKKyAgICAgICAgeyBrZXk6ICIyMzctMjMt
NzczMyIsIHZhbHVlOiB7IG5hbWU6ICJBbm4iLCBoZWlnaHQ6IDUyLCB3ZWlnaHQ6IDExMCB9IH0s
CisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzIiLCB2YWx1ZTogeyBuYW1lOiAiQm9iIiwgaGVp
Z2h0OiA2MCwgd2VpZ2h0OiAxMjAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzM2Iiwg
dmFsdWU6IHsgbmFtZTogIkpvZSIsIGhlaWdodDogNjUsIHdlaWdodDogMTUwIH0gfSwKKyAgICAg
ICAgeyBrZXk6ICIyMzctMjMtNzczNyIsIHZhbHVlOiB7IG5hbWU6ICJQYXQiLCBoZWlnaHQ6IDY1
LCB3ZWlnaHQ6IDEwMCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzQiLCB2YWx1ZTog
eyBuYW1lOiAiUm9uIiwgaGVpZ2h0OiA3Mywgd2VpZ2h0OiAxODAgfSB9LAorICAgICAgICB7IGtl
eTogIjIzNy0yMy03NzM1IiwgdmFsdWU6IHsgbmFtZTogIlN1ZSIsIGhlaWdodDogNTgsIHdlaWdo
dDogMTMwIH0gfQorICAgIF07CisKKyAgICBvYmplY3RTdG9yZURhdGFXZWlnaHRTb3J0ID0gWwor
ICAgICAgICB7IGtleTogIjIzNy0yMy03NzM3IiwgdmFsdWU6IHsgbmFtZTogIlBhdCIsIGhlaWdo
dDogNjUsIHdlaWdodDogMTAwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczMyIsIHZh
bHVlOiB7IG5hbWU6ICJBbm4iLCBoZWlnaHQ6IDUyLCB3ZWlnaHQ6IDExMCB9IH0sCisgICAgICAg
IHsga2V5OiAiMjM3LTIzLTc3MzIiLCB2YWx1ZTogeyBuYW1lOiAiQm9iIiwgaGVpZ2h0OiA2MCwg
d2VpZ2h0OiAxMjAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzM1IiwgdmFsdWU6IHsg
bmFtZTogIlN1ZSIsIGhlaWdodDogNTgsIHdlaWdodDogMTMwIH0gfSwKKyAgICAgICAgeyBrZXk6
ICIyMzctMjMtNzczNiIsIHZhbHVlOiB7IG5hbWU6ICJKb2UiLCBoZWlnaHQ6IDY1LCB3ZWlnaHQ6
IDE1MCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzQiLCB2YWx1ZTogeyBuYW1lOiAi
Um9uIiwgaGVpZ2h0OiA3Mywgd2VpZ2h0OiAxODAgfSB9CisgICAgXTsKKworICAgIG9iamVjdFN0
b3JlRGF0YUhlaWdodFNvcnQgPSBbCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzMiLCB2YWx1
ZTogeyBuYW1lOiAiQW5uIiwgaGVpZ2h0OiA1Miwgd2VpZ2h0OiAxMTAgfSB9LAorICAgICAgICB7
IGtleTogIjIzNy0yMy03NzM1IiwgdmFsdWU6IHsgbmFtZTogIlN1ZSIsIGhlaWdodDogNTgsIHdl
aWdodDogMTMwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczMiIsIHZhbHVlOiB7IG5h
bWU6ICJCb2IiLCBoZWlnaHQ6IDYwLCB3ZWlnaHQ6IDEyMCB9IH0sCisgICAgICAgIHsga2V5OiAi
MjM3LTIzLTc3MzYiLCB2YWx1ZTogeyBuYW1lOiAiSm9lIiwgaGVpZ2h0OiA2NSwgd2VpZ2h0OiAx
NTAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzM3IiwgdmFsdWU6IHsgbmFtZTogIlBh
dCIsIGhlaWdodDogNjUsIHdlaWdodDogMTAwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMt
NzczNCIsIHZhbHVlOiB7IG5hbWU6ICJSb24iLCBoZWlnaHQ6IDczLCB3ZWlnaHQ6IDE4MCB9IH0K
KyAgICBdOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJz
aW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2Jq
ZWN0U3RvcmU7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQoreworICAgIGRl
bGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisgICAgdHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0
OworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7Iik7CisKKyAgICBkZWJ1ZygiRmlyc3QsIGFk
ZCBhbGwgb3VyIGRhdGEgdG8gdGhlIG9iamVjdCBzdG9yZS4iKTsKKyAgICBhZGRlZERhdGEgPSAw
OworICAgIGZvciAoaSBpbiBvYmplY3RTdG9yZURhdGEpIHsKKyAgICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1
ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7Iik7CisgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24oZXZlbnQpIHsKKyAgICAgICAgaWYgKCsrYWRkZWREYXRhID09IG9iamVjdFN0b3JlRGF0YS5s
ZW5ndGgpIHsKKyAgICAgICAgICBjcmVhdGVJbmRleGVzKCk7CisgICAgICAgIH0KKyAgICAgIH0K
KyAgICB9Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUluZGV4ZXMoKQoreworICAgIGRlYnVnKCJOb3cg
Y3JlYXRlIHRoZSBpbmRleGVzLiIpOworICAgIGZvciAoaSBpbiBpbmRleERhdGEpIHsKKyAgICAg
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KGluZGV4RGF0YVtpXS5uYW1lLCBp
bmRleERhdGFbaV0ua2V5UGF0aCwgaW5kZXhEYXRhW2ldLm9wdGlvbnMpOyIpOworICAgIH0KKyAg
ICBzaG91bGRCZSgib2JqZWN0U3RvcmUuaW5kZXhOYW1lcy5sZW5ndGgiLCAiaW5kZXhEYXRhLmxl
bmd0aCIpOworICAgIHRyYW5zLm9uY29tcGxldGUgPSBzZXRWZXJzaW9uQ29tcGxldGU7Cit9CisK
K2Z1bmN0aW9uIHNldFZlcnNpb25Db21wbGV0ZSgpCit7CisgICAgb2JqZWN0U3RvcmUgPSBldmFs
QW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFtZSkub2Jq
ZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKTsiKTsKKworICAgIC8vIENoZWNrIGdsb2JhbCBwcm9w
ZXJ0aWVzIHRvIG1ha2Ugc3VyZSB0aGV5IGFyZSBjb3JyZWN0LgorICAgIHNob3VsZEJlKCJvYmpl
Y3RTdG9yZS5pbmRleE5hbWVzLmxlbmd0aCIsICJpbmRleERhdGEubGVuZ3RoIik7CisgICAgZm9y
IChpIGluIGluZGV4RGF0YSkgeworICAgICAgICBmb3VuZCA9IGZhbHNlOworICAgICAgICBmb3Ig
KGogPSAwOyBqIDwgb2JqZWN0U3RvcmUuaW5kZXhOYW1lcy5sZW5ndGg7IGorKykgeworICAgICAg
ICAgICAgaWYgKG9iamVjdFN0b3JlLmluZGV4TmFtZXMuaXRlbShqKSA9PSBpbmRleERhdGFbaV0u
bmFtZSkgeworICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBzaG91bGRCZVRydWUoImZv
dW5kIik7CisgICAgICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBvYmplY3RTdG9yZS5p
bmRleChpbmRleERhdGFbaV0ubmFtZSk7Iik7CisgICAgICAgIHNob3VsZEJlKCJpbmRleC5uYW1l
IiwgImluZGV4RGF0YVtpXS5uYW1lIik7CisgICAgICAgIHNob3VsZEJlKCJpbmRleC5rZXlQYXRo
IiwgImluZGV4RGF0YVtpXS5rZXlQYXRoIik7CisgICAgICAgIHNob3VsZEJlKCJpbmRleC51bmlx
dWUiLCBpbmRleERhdGFbaV0ub3B0aW9ucy51bmlxdWUgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKyAg
ICB9CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmlu
ZGV4KCduYW1lJykuZ2V0S2V5KCdCb2InKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNoZWNrR2V0S2V5
OworfQorCitmdW5jdGlvbiBjaGVja0dldEtleSgpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRh
cmdldC5yZXN1bHQiLCAiJzIzNy0yMy03NzMyJyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScpLmdldCgnQm9iJyk7Iik7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBjaGVja0dldDsKK30KKworZnVuY3Rpb24gY2hlY2tHZXQoKQoreworICAg
IHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0Lm5hbWUiLCAiJ0JvYiciKTsKKyAgICBzaG91
bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5oZWlnaHQiLCAiNjAiKTsKKyAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0LnJlc3VsdC53ZWlnaHQiLCAiMTIwIik7CisKKyAgICBrZXlJbmRleCA9IDA7
CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4
KCduYW1lJykub3BlbktleUN1cnNvcigpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2
ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQ7Iik7CisgICAgICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5u
YW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0
U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOworICAgICAgICAgICAgc2hvdWxkQmVG
YWxzZSgiJ3ZhbHVlJyBpbiBjdXJzb3IiKTsKKworICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vy
c29yLmNvbnRpbnVlKCk7Iik7CisKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5Iiwg
Im9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAg
ICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNv
cnRba2V5SW5kZXhdLmtleSIpOworICAgICAgICAgICAgc2hvdWxkQmVGYWxzZSgiJ3ZhbHVlJyBp
biBjdXJzb3IiKTsKKworICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKKyAg
ICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAi
b2JqZWN0U3RvcmVEYXRhLmxlbmd0aCIpOworICAgICAgICAgIHRlc3RHcm91cDMoKTsKKyAgICAg
ICAgfQorICAgIH07Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDMoKQoreworICAgIGtleUluZGV4
ID0gMDsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
aW5kZXgoJ3dlaWdodCcpLm9wZW5LZXlDdXJzb3IobnVsbCwgSURCQ3Vyc29yLk5FWFQpOyIpOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxB
bmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICAgIGlmIChjdXJz
b3IpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0
YVdlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLndlaWdodCIpOworICAgICAgICAgICAgc2hvdWxk
QmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YVdlaWdodFNvcnRba2V5SW5k
ZXhdLmtleSIpOworCisgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsi
KTsKKworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRh
V2VpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7CisgICAgICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhV2VpZ2h0U29ydFtrZXlJbmRl
eF0ua2V5Iik7CisKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7CisgICAg
ICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAi
b2JqZWN0U3RvcmVEYXRhLmxlbmd0aCIpOworICAgICAgICAgICAgdGVzdEdyb3VwNCgpOworICAg
ICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0R3JvdXA0KCkKK3sKKy8qIHRoaXMgd2Fz
IHNwbGl0IG91dCBpbnRvIGEgc2VwYXJhdGUgdGVzdAorICAgIGRlYnVnKCJDaGVjayB0aGF0IHRo
ZSBuYW1lIGluZGV4IGVuZm9yY2VzIGl0cyB1bmlxdWUgY29uc3RyYWludC4iKTsKKyAgICBvYmpl
Y3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIudHJhbnNhY3Rpb24ob2JqZWN0
U3RvcmVOYW1lLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKS5vYmplY3RTdG9yZShvYmplY3RT
dG9yZU5hbWUpOyIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIm9iamVjdFN0b3JlLmFk
ZCh7IG5hbWU6ICdCb2InLCBoZWlnaHQ6IDYyLCB3ZWlnaHQ6IDE3MCB9LCAnMjM3LTIzLTc3Mzgn
KTsiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uQ09OU1RSQUlOVF9FUlIiKTsKKyovCisKKyAgICBv
YmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIudHJhbnNhY3Rpb24ob2Jq
ZWN0U3RvcmVOYW1lKS5vYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpOyIpOworICAgIGtleUlu
ZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSBvYmplY3RTdG9yZURhdGFOYW1lU29ydC5sZW5n
dGggLSAxOyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3Rv
cmUuaW5kZXgoJ25hbWUnKS5vcGVuS2V5Q3Vyc29yKG51bGwsIElEQkN1cnNvci5QUkVWKTsiKTsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgeworICAgICAgICBjdXJzb3IgPSBldmFs
QW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgICAgICBpZiAoY3Vy
c29yKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURh
dGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS5r
ZXkiKTsKKworICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisK
KyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVT
b3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29y
LnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwor
CisgICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleC0tOyIpOworICAgICAgICB9CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIi0xIik7CisgICAg
ICAgICAgICB0ZXN0R3JvdXA1KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRl
c3RHcm91cDUoKQoreworICAgIGtleUluZGV4ID0gMTsKKyAgICBrZXlSYW5nZSA9IGV2YWxBbmRM
b2coImtleVJhbmdlID0gSURCS2V5UmFuZ2UuYm91bmQoJ0JvYicsICdSb24nKTsiKTsKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCduYW1lJyku
b3BlbktleUN1cnNvcihrZXlSYW5nZSk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZl
bnQpIHsKKyAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0
LnJlc3VsdDsiKTsKKyAgICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5h
bWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RT
dG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7CisgICAgICAgICAgICBldmFsQW5kTG9n
KCJjdXJzb3IuY29udGludWUoKTsiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4
Kys7Iik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzaG91bGRCZSgi
a2V5SW5kZXgiLCAiNSIpOworICAgICAgICAgICAgdGVzdEdyb3VwNigpOworICAgICAgICB9Cisg
ICAgfQorfQorCitmdW5jdGlvbiB0ZXN0R3JvdXA2KCkKK3sKKyAgICBrZXlJbmRleCA9IGV2YWxB
bmRMb2coImtleUluZGV4ID0gMjsiKTsKKyAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtleVJh
bmdlID0gSURCS2V5UmFuZ2UuYm91bmQoJ0JvYicsICdSb24nLCB0cnVlKTsiKTsKKworICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5v
cGVuS2V5Q3Vyc29yKGtleVJhbmdlKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVu
dCkgeworICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQu
cmVzdWx0OyIpOworICAgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgICAgICBzaG91bGRCZSgi
Y3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFt
ZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0
b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsKKworICAgICAgICAgICAgZXZhbEFuZExv
ZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRl
eCsrOyIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc2hvdWxkQmUo
ImtleUluZGV4IiwgIjUiKTsKKyAgICAgICAgICAgIHRlc3RHcm91cDcoKTsKKyAgICAgICAgfQor
ICAgIH0KK30KKworZnVuY3Rpb24gdGVzdEdyb3VwNygpCit7CisgICAga2V5SW5kZXggPSBldmFs
QW5kTG9nKCJrZXlJbmRleCA9IDE7Iik7CisgICAga2V5UmFuZ2UgPSBldmFsQW5kTG9nKCJrZXlS
YW5nZSA9IElEQktleVJhbmdlLmJvdW5kKCdCb2InLCAnUm9uJywgZmFsc2UsIHRydWUpOyIpOwor
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgn
bmFtZScpLm9wZW5LZXlDdXJzb3Ioa2V5UmFuZ2UpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24gKGV2ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50
LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52
YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAi
b2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOworCisgICAgICAgICAgICBl
dmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2co
ImtleUluZGV4Kys7Iik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBz
aG91bGRCZSgia2V5SW5kZXgiLCAiNCIpOworICAgICAgICAgICAgdGVzdEdyb3VwOCgpOworICAg
ICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0R3JvdXA4KCkKK3sKKyAgICBrZXlJbmRl
eCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gMjsiKTsKKyAgICBrZXlSYW5nZSA9IGV2YWxBbmRM
b2coImtleVJhbmdlID0gSURCS2V5UmFuZ2UuYm91bmQoJ0JvYicsICdSb24nLCB0cnVlLCB0cnVl
KTsiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
aW5kZXgoJ25hbWUnKS5vcGVuS2V5Q3Vyc29yKGtleVJhbmdlKTsiKTsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGZ1bmN0aW9uIChldmVudCkgeworICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3Ig
PSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAg
ICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJ
bmRleF0udmFsdWUubmFtZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5
S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsKKworICAgICAg
ICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisgICAgICAgICAgICBldmFs
QW5kTG9nKCJrZXlJbmRleCsrOyIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIjQiKTsKKyAgICAgICAgICAgIHRlc3RHcm91cDko
KTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gdGVzdEdyb3VwOSgpCit7CisgICAg
a2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDE7Iik7CisgICAga2V5UmFuZ2UgPSBl
dmFsQW5kTG9nKCJrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQoJ0JvYicpOyIpOwor
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgn
bmFtZScpLm9wZW5LZXlDdXJzb3Ioa2V5UmFuZ2UpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24gKGV2ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50
LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52
YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAi
b2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOworCisgICAgICAgICAgICBl
dmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2co
ImtleUluZGV4Kys7Iik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBz
aG91bGRCZSgia2V5SW5kZXgiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnQubGVuZ3RoIik7Cisg
ICAgICAgICAgICB0ZXN0R3JvdXAxMCgpOworICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlv
biB0ZXN0R3JvdXAxMCgpCit7CisgICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9
IDI7Iik7CisgICAga2V5UmFuZ2UgPSBldmFsQW5kTG9nKCJrZXlSYW5nZSA9IElEQktleVJhbmdl
Lmxvd2VyQm91bmQoJ0JvYicsIHRydWUpOyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9wZW5LZXlDdXJzb3Ioa2V5UmFu
Z2UpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgIGN1cnNv
ciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICAg
IGlmIChjdXJzb3IpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVj
dFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBz
aG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5
SW5kZXhdLmtleSIpOworCisgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUo
KTsiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7CisgICAgICAgIH0K
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAib2JqZWN0
U3RvcmVEYXRhTmFtZVNvcnQubGVuZ3RoIik7CisgICAgICAgICAgICB0ZXN0R3JvdXAxMSgpOwor
ICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0R3JvdXAxMSgpCit7CisgICAga2V5
SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDA7Iik7CisgICAga2V5UmFuZ2UgPSBldmFs
QW5kTG9nKCJrZXlSYW5nZSA9IElEQktleVJhbmdlLnVwcGVyQm91bmQoJ0pvZScpOyIpOworCisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFt
ZScpLm9wZW5LZXlDdXJzb3Ioa2V5UmFuZ2UpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24g
KGV2ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRh
cmdldC5yZXN1bHQ7Iik7CisgICAgICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgICAgIHNob3Vs
ZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1
ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2Jq
ZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOworCisgICAgICAgICAgICBldmFs
QW5kTG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImtl
eUluZGV4Kys7Iik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgc2hvdWxk
QmUoImtleUluZGV4IiwgIjMiKTsKKyAgICAgICAgICB0ZXN0R3JvdXAxMigpOworICAgICAgICB9
CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0R3JvdXAxMigpCit7CisgICAga2V5SW5kZXggPSBl
dmFsQW5kTG9nKCJrZXlJbmRleCA9IDA7Iik7CisgICAga2V5UmFuZ2UgPSBldmFsQW5kTG9nKCJr
ZXlSYW5nZSA9IElEQktleVJhbmdlLnVwcGVyQm91bmQoJ0pvZScsIHRydWUpOyIpOworCisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScp
Lm9wZW5LZXlDdXJzb3Ioa2V5UmFuZ2UpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2
ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQ7Iik7CisgICAgICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5u
YW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0
U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOworCisgICAgICAgICAgICBldmFsQW5k
TG9nKCJjdXJzb3IuY29udGludWUoKTsiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUlu
ZGV4Kys7Iik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzaG91bGRC
ZSgia2V5SW5kZXgiLCAiMiIpOworICAgICAgICAgICAgdGVzdEdyb3VwMTMoKTsKKyAgICAgICAg
fQorICAgIH0KK30KKworZnVuY3Rpb24gdGVzdEdyb3VwMTMoKQoreworICAgIGtleUluZGV4ID0g
ZXZhbEFuZExvZygia2V5SW5kZXggPSAzOyIpOworICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygi
a2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5vbmx5KCdQYXQnKTsiKTsKKworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuS2V5Q3Vy
c29yKGtleVJhbmdlKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgeworICAg
ICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIp
OworICAgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtl
eSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAg
ICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5h
bWVTb3J0W2tleUluZGV4XS5rZXkiKTsKKworICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29y
LmNvbnRpbnVlKCk7Iik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOwor
ICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc2hvdWxkQmUoImtleUluZGV4
IiwgIjQiKTsKKyAgICAgICAgICAgIHRlc3RHcm91cDE0KCk7CisgICAgICAgIH0KKyAgICB9Cit9
CisKK2Z1bmN0aW9uIHRlc3RHcm91cDE0KCkKK3sKKyAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2co
ImtleUluZGV4ID0gMDsiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
b2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuQ3Vyc29yKCk7Iik7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29y
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAgICAgaWYgKGN1cnNvcikgeworICAgICAg
ICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5
SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFy
eUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7CisgICAgICAg
ICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNv
cnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
dmFsdWUuaGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5o
ZWlnaHQiKTsKKyAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKKyAg
ICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIsICJvYmplY3RTdG9y
ZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOworCisgICAgICAg
ICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJ
bmRleF0udmFsdWUubmFtZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5
S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUubmFtZSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29y
dFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52
YWx1ZS5oZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLmhl
aWdodCIpOworICAgICAgICAgICAgaWYgKCd3ZWlnaHQnIGluIGN1cnNvci52YWx1ZSkgeworICAg
ICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3Jl
RGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKKyAgICAgICAgfQorICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJvYmplY3RTdG9yZURh
dGFOYW1lU29ydC5sZW5ndGgiKTsKKyAgICAgICAgICAgIHRlc3RHcm91cDE1KCk7CisgICAgICAg
IH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDE1KCkKK3sKKyAgICBrZXlJbmRleCA9
IGV2YWxBbmRMb2coImtleUluZGV4ID0gb2JqZWN0U3RvcmVEYXRhTmFtZVNvcnQubGVuZ3RoIC0g
MTsiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
aW5kZXgoJ25hbWUnKS5vcGVuQ3Vyc29yKG51bGwsIElEQkN1cnNvci5QUkVWKTsiKTsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgeworICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9n
KCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgICAgICBpZiAoY3Vyc29yKSB7
CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1l
U29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNv
ci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsK
KyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUubmFtZSIsICJvYmplY3RTdG9yZURh
dGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci52YWx1ZS5oZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhd
LnZhbHVlLmhlaWdodCIpOworICAgICAgICAgICAgaWYgKCd3ZWlnaHQnIGluIGN1cnNvci52YWx1
ZSkgeworICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9i
amVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisK
KyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVT
b3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29y
LnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOwor
ICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0
YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgi
Y3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0u
dmFsdWUuaGVpZ2h0Iik7CisgICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVl
KSB7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS53ZWlnaHQiLCAib2Jq
ZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLndlaWdodCIpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBrZXlJbmRleC0tOworICAgICAgICB9CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIi0xIik7CisgICAgICAgICAgICB0
ZXN0R3JvdXAxNigpOworICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0R3JvdXAx
NigpCit7CisgICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDE7Iik7CisgICAg
a2V5UmFuZ2UgPSBldmFsQW5kTG9nKCJrZXlSYW5nZSA9IElEQktleVJhbmdlLmJvdW5kKCdCb2In
LCAnUm9uJyk7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVj
dFN0b3JlLmluZGV4KCduYW1lJykub3BlbkN1cnNvcihrZXlSYW5nZSk7Iik7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vy
c29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAgICAgaWYgKGN1cnNvcikgeworICAg
ICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRb
a2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJp
bWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7CisgICAg
ICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFt
ZVNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJz
b3IudmFsdWUuaGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1
ZS5oZWlnaHQiKTsKKyAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsK
KyAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVj
dFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisKKyAg
ICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0
W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnBy
aW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOworICAg
ICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0YU5h
bWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vy
c29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFs
dWUuaGVpZ2h0Iik7CisgICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7
CisgICAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIsICJvYmpl
Y3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7CisgICAgICAgIH0K
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNSIpOwor
ICAgICAgICAgICAgdGVzdEdyb3VwMTcoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rp
b24gdGVzdEdyb3VwMTcoKQoreworICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXgg
PSAyOyIpOworICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlSYW5n
ZS5ib3VuZCgnQm9iJywgJ1JvbicsIHRydWUpOyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9wZW5DdXJzb3Ioa2V5UmFu
Z2UpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgIGN1cnNv
ciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICAg
IGlmIChjdXJzb3IpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVj
dFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBz
aG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5
SW5kZXhdLmtleSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwg
Im9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAg
ICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1l
U29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7CisgICAgICAgICAgICBpZiAoJ3dlaWdodCcg
aW4gY3Vyc29yLnZhbHVlKSB7CisgICAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZh
bHVlLndlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUud2Vp
Z2h0Iik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5j
b250aW51ZSgpOyIpOworCisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmpl
Y3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAgICAgICAg
c2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tl
eUluZGV4XS5rZXkiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUubmFtZSIs
ICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAg
ICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFt
ZVNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOworICAgICAgICAgICAgaWYgKCd3ZWlnaHQn
IGluIGN1cnNvci52YWx1ZSkgeworICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52
YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLndl
aWdodCIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRl
eCsrOyIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc2hvdWxkQmUo
ImtleUluZGV4IiwgIjUiKTsKKyAgICAgICAgICAgIHRlc3RHcm91cDE4KCk7CisgICAgICAgIH0K
KyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDE4KCkKK3sKKyAgICBrZXlJbmRleCA9IGV2
YWxBbmRMb2coImtleUluZGV4ID0gMTsiKTsKKyAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtl
eVJhbmdlID0gSURCS2V5UmFuZ2UuYm91bmQoJ0JvYicsICdSb24nLCBmYWxzZSwgdHJ1ZSk7Iik7
CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4
KCduYW1lJykub3BlbkN1cnNvcihrZXlSYW5nZSk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlv
biAoZXZlbnQpIHsKKyAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICAgICAgc2hv
dWxkQmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZh
bHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJv
YmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7CisgICAgICAgICAgICBzaG91
bGRCZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5k
ZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVp
Z2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsK
KyAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKKyAgICAgICAgICAg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5h
bWVTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisKKyAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52
YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAi
b2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOworICAgICAgICAgICAgc2hv
dWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUlu
ZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmhl
aWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7
CisgICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7CisgICAgICAgICAg
ICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIsICJvYmplY3RTdG9yZURhdGFO
YW1lU29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7CisgICAgICAgIH0KKyAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiNCIpOworICAgICAgICAgICAg
dGVzdEdyb3VwMTkoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gdGVzdEdyb3Vw
MTkoKQoreworICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAyOyIpOworICAg
IGtleVJhbmdlID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5ib3VuZCgnQm9i
JywgJ1JvbicsIHRydWUsIHRydWUpOyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnbmFtZScpLm9wZW5DdXJzb3Ioa2V5UmFuZ2UpOyIp
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2
YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICAgIGlmIChj
dXJzb3IpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3Jl
RGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhd
LmtleSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVj
dFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBz
aG91bGRCZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtr
ZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7CisgICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vy
c29yLnZhbHVlKSB7CisgICAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndl
aWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51
ZSgpOyIpOworCisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9y
ZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAgICAgICAgc2hvdWxk
QmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4
XS5rZXkiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUubmFtZSIsICJvYmpl
Y3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAgICAgICAg
c2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRb
a2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOworICAgICAgICAgICAgaWYgKCd3ZWlnaHQnIGluIGN1
cnNvci52YWx1ZSkgeworICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS53
ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVlLndlaWdodCIp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIp
OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc2hvdWxkQmUoImtleUlu
ZGV4IiwgIjQiKTsKKyAgICAgICAgICAgIHRlc3RHcm91cDIwKCk7CisgICAgICAgIH0KKyAgICB9
Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDIwKCkKK3sKKyAgICBrZXlJbmRleCA9IGV2YWxBbmRM
b2coImtleUluZGV4ID0gNDsiKTsKKyAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtleVJhbmdl
ID0gSURCS2V5UmFuZ2UuYm91bmQoJ0JvYicsICdSb24nKTsiKTsKKworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoJ25hbWUnKS5vcGVuQ3Vyc29y
KGtleVJhbmdlLCBJREJDdXJzb3IuUFJFVik7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAo
ZXZlbnQpIHsKKyAgICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFy
Z2V0LnJlc3VsdDsiKTsKKyAgICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICAgICAgc2hvdWxk
QmUoImN1cnNvci5rZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLnZhbHVl
Lm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmpl
Y3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0ua2V5Iik7CisgICAgICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLnZhbHVlLm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhd
LnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0
IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKKyAg
ICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFsdWUpIHsKKyAgICAgICAgICAgICAg
ICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2VpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVT
b3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisKKyAgICAgICAgICAgIHNob3Vs
ZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1
ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2Jq
ZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOworICAgICAgICAgICAgc2hvdWxk
QmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4
XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmhlaWdo
dCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7Cisg
ICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7CisgICAgICAgICAgICAg
ICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1l
U29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGV2YWxBbmRMb2coImtleUluZGV4LS07Iik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiMCIpOworICAgICAgICAgICAgdGVz
dEdyb3VwMjEoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gdGVzdEdyb3VwMjEo
KQoreworICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAzOyIpOworICAgIGtl
eVJhbmdlID0gZXZhbEFuZExvZygia2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5vbmx5KDY1KTsiKTsK
KworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgo
J2hlaWdodCcpLm9wZW5LZXlDdXJzb3Ioa2V5UmFuZ2UsIElEQkN1cnNvci5ORVhUKTsiKTsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgeworICAgICAgICBjdXJzb3IgPSBldmFsQW5k
TG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgICAgICBpZiAoY3Vyc29y
KSB7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFI
ZWlnaHRTb3J0W2tleUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKKyAgICAgICAgICAgIHNob3VsZEJl
KCJjdXJzb3IucHJpbWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tleUluZGV4
XS5rZXkiKTsKKworICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7
CisgICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOworICAgICAgICB9CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIjUiKTsKKyAgICAg
ICAgICAgIHRlc3RHcm91cDIyKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRl
c3RHcm91cDIyKCkKK3sKKyAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4ID0gMzsi
KTsKKyAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtleVJhbmdlID0gSURCS2V5UmFuZ2Uub25s
eSg2NSk7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0
b3JlLmluZGV4KCdoZWlnaHQnKS5vcGVuS2V5Q3Vyc29yKGtleVJhbmdlLCBJREJDdXJzb3IuTkVY
VF9OT19EVVBMSUNBVEUpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7Cisg
ICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7
Iik7CisgICAgICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iu
a2V5IiwgIm9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIp
OworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3Jl
RGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLmtleSIpOworCisgICAgICAgICAgICBldmFsQW5kTG9n
KCJjdXJzb3IuY29udGludWUoKTsiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4
Kys7Iik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzaG91bGRCZSgi
a2V5SW5kZXgiLCAiNCIpOworICAgICAgICAgICAgdGVzdEdyb3VwMjQoKTsKKyAgICAgICAgfQor
ICAgIH0KK30KKworLyogdGhpcyB3YXMgc3BsaXQgb3V0IGludG8gYSBzZXBhcmF0ZSB0ZXN0Citm
dW5jdGlvbiB0ZXN0R3JvdXAyMygpCit7CisgICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJ
bmRleCA9IDU7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVj
dFN0b3JlLmluZGV4KCdoZWlnaHQnKS5vcGVuS2V5Q3Vyc29yKG51bGwsIElEQkN1cnNvci5QUkVW
X05PX0RVUExJQ0FURSk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAg
ICAgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsi
KTsKKyAgICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5r
ZXkiLCAib2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7
CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVE
YXRhSGVpZ2h0U29ydFtrZXlJbmRleF0ua2V5Iik7CisKKyAgICAgICAgICAgIGV2YWxBbmRMb2co
ImN1cnNvci5jb250aW51ZSgpOyIpOworICAgICAgICAgICAgaWYgKGtleUluZGV4ID09IDUpIHsK
KyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleC0tOyIpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgtLTsiKTsKKyAgICAgICAgfQorICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICItMSIpOworICAg
ICAgICAgICAgdGVzdEdyb3VwMjQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKyovCisKK2Z1bmN0
aW9uIHRlc3RHcm91cDI0KCkKK3sKKyAgICBrZXlJbmRleCA9IGV2YWxBbmRMb2coImtleUluZGV4
ID0gMzsiKTsKKyAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coImtleVJhbmdlID0gSURCS2V5UmFu
Z2Uub25seSg2NSk7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9i
amVjdFN0b3JlLmluZGV4KCdoZWlnaHQnKS5vcGVuQ3Vyc29yKGtleVJhbmdlLCBJREJDdXJzb3Iu
TkVYVCk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgY3Vy
c29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAg
ICAgaWYgKGN1cnNvcikgeworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAib2Jq
ZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7CisgICAgICAg
ICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhSGVpZ2h0
U29ydFtrZXlJbmRleF0ua2V5Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVl
Lm5hbWUiLCAib2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIp
OworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5oZWlnaHQiLCAib2JqZWN0U3Rv
cmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7CisgICAgICAgICAgICBp
ZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci52YWx1ZS53ZWlnaHQiLCAib2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtrZXlJbmRl
eF0udmFsdWUud2VpZ2h0Iik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGV2YWxBbmRM
b2coImN1cnNvci5jb250aW51ZSgpOyIpOworICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5k
ZXgrKzsiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNob3VsZEJl
KCJrZXlJbmRleCIsICI1Iik7CisgICAgICAgICAgICB0ZXN0R3JvdXAyNSgpOworICAgICAgICB9
CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0R3JvdXAyNSgpCit7CisgICAga2V5SW5kZXggPSBl
dmFsQW5kTG9nKCJrZXlJbmRleCA9IDM7Iik7CisgICAga2V5UmFuZ2UgPSBldmFsQW5kTG9nKCJr
ZXlSYW5nZSA9IElEQktleVJhbmdlLm9ubHkoNjUpOyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnaGVpZ2h0Jykub3BlbkN1cnNvcihr
ZXlSYW5nZSwgSURCQ3Vyc29yLk5FWFRfTk9fRFVQTElDQVRFKTsiKTsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGZ1bmN0aW9uIChldmVudCkgeworICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3Ig
PSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgICAgICBpZiAoY3Vyc29yKSB7CisgICAgICAg
ICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tl
eUluZGV4XS52YWx1ZS5oZWlnaHQiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IucHJp
bWFyeUtleSIsICJvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tleUluZGV4XS5rZXkiKTsKKyAg
ICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUubmFtZSIsICJvYmplY3RTdG9yZURhdGFI
ZWlnaHRTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgi
Y3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tleUluZGV4
XS52YWx1ZS5oZWlnaHQiKTsKKyAgICAgICAgICAgIGlmICgnd2VpZ2h0JyBpbiBjdXJzb3IudmFs
dWUpIHsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIsICJv
YmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W2tleUluZGV4XS52YWx1ZS53ZWlnaHQiKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7
CisgICAgICAgICAgICBldmFsQW5kTG9nKCJrZXlJbmRleCsrOyIpOworICAgICAgICB9CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgc2hvdWxkQmUoImtleUluZGV4IiwgIjQiKTsKKyAgICAg
ICAgICAgIHRlc3RHcm91cDI3KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8qIHRoaXMgd2Fz
IHNwbGl0IG91dCBpbnRvIGEgc2VwYXJhdGUgdGVzdAorZnVuY3Rpb24gdGVzdEdyb3VwMjYoKQor
eworICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSA1OyIpOworCisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgnaGVpZ2h0Jyku
b3BlbkN1cnNvcihudWxsLCBJREJDdXJzb3IuUFJFVl9OT19EVVBMSUNBVEUpOyIpOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2co
ImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICAgIGlmIChjdXJzb3IpIHsK
KyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YUhlaWdo
dFNvcnRba2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1
cnNvci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLmtl
eSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0
b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLm5hbWUiKTsKKyAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3IudmFsdWUuaGVpZ2h0IiwgIm9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRb
a2V5SW5kZXhdLnZhbHVlLmhlaWdodCIpOworICAgICAgICAgICAgaWYgKCd3ZWlnaHQnIGluIGN1
cnNvci52YWx1ZSkgeworICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUud2Vp
Z2h0IiwgIm9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRba2V5SW5kZXhdLnZhbHVlLndlaWdodCIp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGlu
dWUoKTsiKTsKKyAgICAgICAgICAgIGlmIChrZXlJbmRleCA9PSA1KSB7CisgICAgICAgICAgICAg
ICAgZXZhbEFuZExvZygia2V5SW5kZXgtLTsiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGV2YWxBbmRMb2coImtleUluZGV4LS07Iik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgiLCAiLTEiKTsKKyAgICAgICAgICAgIHRlc3RH
cm91cDI3KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisqLworCitmdW5jdGlvbiB0ZXN0R3JvdXAy
NygpCit7CisgICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDA7Iik7CisKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCduYW1l
Jykub3BlbktleUN1cnNvcigpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7
CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1
bHQ7Iik7CisgICAgICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJz
b3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7
CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVE
YXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOworCisgICAgICAgICAgICBuZXh0S2V5ID0gZXZh
bEFuZExvZygibmV4dEtleSA9ICFrZXlJbmRleCA/ICdQYXQnIDogdW5kZWZpbmVkOyIpOworICAg
ICAgICAgICAgaWYgKG5leHRLZXkpIHsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJz
b3IuY29udGludWUobmV4dEtleSk7Iik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1l
U29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNv
ci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsK
KworICAgICAgICAgICAgaWYgKCFrZXlJbmRleCkgeworICAgICAgICAgICAgICAgIGtleUluZGV4
ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAzOyIpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNob3Vs
ZEJlKCJrZXlJbmRleCIsICJvYmplY3RTdG9yZURhdGEubGVuZ3RoIik7CisgICAgICAgICAgICB0
ZXN0R3JvdXAyOCgpOworICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0R3JvdXAy
OCgpCit7CisgICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDA7Iik7CisKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCduYW1l
Jykub3BlbktleUN1cnNvcigpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7
CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1
bHQ7Iik7CisgICAgICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJz
b3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7
CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVE
YXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOworCisgICAgICAgICAgICBuZXh0S2V5ID0gZXZh
bEFuZExvZygibmV4dEtleSA9ICFrZXlJbmRleCA/ICdGbG8nIDogdW5kZWZpbmVkOyIpOworICAg
ICAgICAgICAgaWYgKG5leHRLZXkpIHsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJz
b3IuY29udGludWUobmV4dEtleSk7Iik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJvYmplY3RTdG9yZURhdGFOYW1l
U29ydFtrZXlJbmRleF0udmFsdWUubmFtZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNv
ci5wcmltYXJ5S2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS5rZXkiKTsK
KworICAgICAgICAgICAga2V5SW5kZXggKz0ga2V5SW5kZXggPyAxIDogMjsKKyAgICAgICAgfQor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJrZXlJbmRleCIsICJvYmplY3RT
dG9yZURhdGEubGVuZ3RoIik7CisgICAgICAgICAgICB0ZXN0R3JvdXAyOSgpOworICAgICAgICB9
CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0R3JvdXAyOSgpCit7CisgICAga2V5SW5kZXggPSBl
dmFsQW5kTG9nKCJrZXlJbmRleCA9IDA7Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCduYW1lJykub3BlbkN1cnNvcigpOyIpOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRM
b2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICAgIGlmIChjdXJzb3Ip
IHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5h
bWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vy
c29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIp
OworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3Jl
RGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRl
eF0udmFsdWUuaGVpZ2h0Iik7CisgICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZh
bHVlKSB7CisgICAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIs
ICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIG5leHRLZXkgPSBldmFsQW5kTG9nKCJuZXh0S2V5ID0g
IWtleUluZGV4ID8gJ1BhdCcgOiB1bmRlZmluZWQ7Iik7CisgICAgICAgICAgICBpZiAobmV4dEtl
eSkgeworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZShuZXh0S2V5
KTsiKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygi
Y3Vyc29yLmNvbnRpbnVlKCk7Iik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNob3Vs
ZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1
ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2Jq
ZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIpOworICAgICAgICAgICAgc2hvdWxk
QmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4
XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmhlaWdo
dCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7Cisg
ICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7CisgICAgICAgICAgICAg
ICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1l
U29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGlmICgha2V5SW5kZXgpIHsKKyAgICAgICAgICAgICAgICBrZXlJbmRleCA9IGV2YWxBbmRM
b2coImtleUluZGV4ID0gMzsiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImtleUluZGV4Kys7Iik7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzaG91bGRCZSgia2V5SW5k
ZXgiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnQubGVuZ3RoIik7CisgICAgICAgICAgICB0ZXN0
R3JvdXAzMCgpOworICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0R3JvdXAzMCgp
Cit7CisgICAga2V5SW5kZXggPSBldmFsQW5kTG9nKCJrZXlJbmRleCA9IDA7Iik7CisKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCduYW1lJyku
b3BlbkN1cnNvcigpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAg
ICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7
CisgICAgICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5
IiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAg
ICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFt
ZVNvcnRba2V5SW5kZXhdLmtleSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1
ZS5uYW1lIiwgIm9iamVjdFN0b3JlRGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7
CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9y
ZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUuaGVpZ2h0Iik7CisgICAgICAgICAgICBpZiAo
J3dlaWdodCcgaW4gY3Vyc29yLnZhbHVlKSB7CisgICAgICAgICAgICAgICAgICBzaG91bGRCZSgi
Y3Vyc29yLnZhbHVlLndlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0u
dmFsdWUud2VpZ2h0Iik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG5leHRLZXkgPSBl
dmFsQW5kTG9nKCJuZXh0S2V5ID0gIWtleUluZGV4ID8gJ0ZsbycgOiB1bmRlZmluZWQ7Iik7Cisg
ICAgICAgICAgICBpZiAobmV4dEtleSkgeworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImN1
cnNvci5jb250aW51ZShuZXh0S2V5KTsiKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgIm9iamVjdFN0b3JlRGF0YU5h
bWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vy
c29yLnByaW1hcnlLZXkiLCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnRba2V5SW5kZXhdLmtleSIp
OworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5uYW1lIiwgIm9iamVjdFN0b3Jl
RGF0YU5hbWVTb3J0W2tleUluZGV4XS52YWx1ZS5uYW1lIik7CisgICAgICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLnZhbHVlLmhlaWdodCIsICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRl
eF0udmFsdWUuaGVpZ2h0Iik7CisgICAgICAgICAgICBpZiAoJ3dlaWdodCcgaW4gY3Vyc29yLnZh
bHVlKSB7CisgICAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndlaWdodCIs
ICJvYmplY3RTdG9yZURhdGFOYW1lU29ydFtrZXlJbmRleF0udmFsdWUud2VpZ2h0Iik7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGtleUluZGV4ICs9IGtleUluZGV4ID8gMSA6IDI7Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzaG91bGRCZSgia2V5SW5kZXgi
LCAib2JqZWN0U3RvcmVEYXRhTmFtZVNvcnQubGVuZ3RoIik7CisgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
emlsbGEvcmVzb3VyY2VzL2tleS1yZXF1aXJlbWVudHMtZGVsZXRlLW51bGwta2V5LmpzIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMva2V5LXJlcXVpcmVt
ZW50cy1kZWxldGUtbnVsbC1rZXkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjlkZGE5MmMyMzExYmM3MzhlNDA5
ZjMxYjUwMDhjOTE1MGJmNWQ4YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2tleS1yZXF1aXJlbWVudHMtZGVsZXRlLW51
bGwta2V5LmpzCkBAIC0wLDAgKzEsNDIgQEAKKy8vIG9yaWdpbmFsIHRlc3Q6CisvLyBodHRwOi8v
bXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0
X2tleV9yZXF1aXJlbWVudHMuaHRtbAorLy8gbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorLy8g
IiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKy8vICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCisKK2lm
ICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJy4u
Ly4uL3Jlc291cmNlcy9zaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhl
ZERCJ3MgYmVoYXZpb3IgZGVsZXRpbmcgZW50cnkgd2l0aCBubyBrZXkiKTsKKworZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxm
LmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2Ui
OworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlw
dGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVu
U3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lv
bigndmVyc2lvbiAxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2VB
bmRDcmVhdGVPYmplY3RTdG9yZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZUFuZENyZWF0ZU9iamVjdFN0
b3JlKCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworICAgIG9iamVjdFN0b3Jl
ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnYmFyJyk7
Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigib2JqZWN0U3RvcmUuZGVsZXRlKG51bGwp
OyIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworICAgIGZpbmlzaEpTVGVzdCgp
OworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMva2V5LXJlcXVp
cmVtZW50cy1pbmxpbmUtYW5kLXBhc3NlZC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvcmVzb3VyY2VzL2tleS1yZXF1aXJlbWVudHMtaW5saW5lLWFuZC1wYXNzZWQu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uM2IyNGVkMjFmNWUwMjA1MmVlMzA5NjdlNDI5MGNlNzYyZmM2ZTY2Ywot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEv
cmVzb3VyY2VzL2tleS1yZXF1aXJlbWVudHMtaW5saW5lLWFuZC1wYXNzZWQuanMKQEAgLTAsMCAr
MSw0NCBAQAorLy8gb3JpZ2luYWwgdGVzdDoKKy8vIGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96
aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3Rfa2V5X3JlcXVpcmVtZW50cy5o
dG1sCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisvLyAiIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorLy8gICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKworaWYgKHRoaXMuaW1wb3J0U2NyaXB0
cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vcmVzb3VyY2VzL3NoYXJl
ZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBiZWhhdmlvciBhZGRp
bmcgaW5saW5lIGFuZCBwYXNzZWQga2V5IHNpbXVsdGFuZW91c2x5Iik7CisKK2Z1bmN0aW9uIHRl
c3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5s
b2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRp
b24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1
Y2Nlc3MoKQoreworICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOworICAgIGRiID0gZXZhbEFu
ZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKK3sKKyAg
ICBkZWJ1ZygiY2xlYW5EYXRhYmFzZSgpOiIpOworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jlcyhk
Yik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdiYXonLCB7IGtleVBhdGg6ICdpZCcgfSk7Iik7CisgICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigib2JqZWN0U3RvcmUuYWRkKHtpZDogNX0sIDUpOyIsICJJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMva2V5LXJlcXVpcmVtZW50cy1wdXQtbm8t
a2V5LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMv
a2V5LXJlcXVpcmVtZW50cy1wdXQtbm8ta2V5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhZjE0N2QxZDU1ZjBl
MTc5NWVhMjg0YjRiNzJmMTRhYzNjZjZlNWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9rZXktcmVxdWlyZW1lbnRzLXB1
dC1uby1rZXkuanMKQEAgLTAsMCArMSw0MiBAQAorLy8gb3JpZ2luYWwgdGVzdDoKKy8vIGh0dHA6
Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rl
c3Rfa2V5X3JlcXVpcmVtZW50cy5odG1sCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Cisv
LyAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorLy8g
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKwor
aWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygn
Li4vLi4vcmVzb3VyY2VzL3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRl
eGVkREIncyBiZWhhdmlvciBwdXRpbmcgd2l0aG91dCBrZXkiKTsKKworZnVuY3Rpb24gdGVzdCgp
Cit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0
aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbiki
KTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2Vz
cygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsK
KworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScp
Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVhbkRh
dGFiYXNlKCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworICAgIG9iamVjdFN0
b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnYmFy
Jyk7Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigib2JqZWN0U3RvcmUucHV0KHt9KTsi
LCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsK
K30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2tleS1yZXF1aXJl
bWVudHMtcHV0LW51bGwta2V5LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9yZXNvdXJjZXMva2V5LXJlcXVpcmVtZW50cy1wdXQtbnVsbC1rZXkuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZGFiNTg4YzNkYTlhMzhkOWY2M2Y2YmYyNWU1ZDk0Y2M1YjA0ZjQwNwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2tl
eS1yZXF1aXJlbWVudHMtcHV0LW51bGwta2V5LmpzCkBAIC0wLDAgKzEsNDIgQEAKKy8vIG9yaWdp
bmFsIHRlc3Q6CisvLyBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2Rv
bS9pbmRleGVkREIvdGVzdC90ZXN0X2tleV9yZXF1aXJlbWVudHMuaHRtbAorLy8gbGljZW5zZSBv
ZiBvcmlnaW5hbCB0ZXN0OgorLy8gIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUg
UHVibGljIERvbWFpbi4KKy8vICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLyAiCisKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRT
Y3JpcHRzKCcuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwor
ICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uL3Jlc291cmNlcy9zaGFyZWQuanMnKTsKK30KKworZGVz
Y3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgYmVoYXZpb3IgcHV0KClpbmcgd2l0aCBudWxsIGtl
eSIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwor
CisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAi
TXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5v
cGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1
Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVl
c3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFu
RGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0
b3JlcyhkYik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdiYXInKTsiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJvYmplY3RTdG9yZS5wdXQoe30sIG51bGwpOyIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRB
X0VSUiIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW96aWxsYS9yZXNvdXJjZXMva2V5LXJlcXVpcmVtZW50cy5qcyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2tleS1yZXF1aXJlbWVudHMuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjkyMDg2YTcwYWUwYTlkNzY5N2M3OWM0NDZiNWRhM2YxODE4ODYxOAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2Vz
L2tleS1yZXF1aXJlbWVudHMuanMKQEAgLTAsMCArMSw3NSBAQAorLy8gb3JpZ2luYWwgdGVzdDoK
Ky8vIGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWRE
Qi90ZXN0L3Rlc3Rfa2V5X3JlcXVpcmVtZW50cy5odG1sCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFs
IHRlc3Q6CisvLyAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9t
YWluLgorLy8gICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8x
LjAvICIKKworaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4u
Ly4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0
U2NyaXB0cygnLi4vLi4vcmVzb3VyY2VzL3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigi
VGVzdCBJbmRleGVkREIncyBldmVudC50YXJnZXQucmVzdWx0IGFmdGVyIGFkZCgpIGFuZCBwdXQo
KSIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwor
CisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAi
TXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5v
cGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1
Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVl
c3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFu
RGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0
b3JlcyhkYik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7Cisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoe30pOyIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdEFkZDsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gcG9zdEFkZCgpCit7Cisg
ICAga2V5MSA9IGV2YWxBbmRMb2coImtleTEgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KHt9LCBrZXkx
KTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RQdXQxOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBwb3N0UHV0MSgp
Cit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAia2V5MSIpOworICAgIGtl
eTIgPSBldmFsQW5kTG9nKCJrZXkyID0gMTA7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoe30sIGtleTIpOyIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gcG9zdFB1dDI7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHBvc3RQdXQyKCkKK3sKKyAgICBzaG91bGRCZSgiZXZl
bnQudGFyZ2V0LnJlc3VsdCIsICJrZXkyIik7CisgICAga2V5MiA9IGV2YWxBbmRMb2coImtleTIg
PSAxMDA7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9y
ZS5wdXQoe30sIGtleTIpOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdFB1dDM7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0
aW9uIHBvc3RQdXQzKCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJr
ZXkyIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL3Jlc291cmNlcy9vYmplY3QtY3Vyc29ycy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL29iamVjdC1jdXJzb3JzLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmRkZmM0ZjViZWYwOWEyN2YxM2Y5YWRlMWFhMDM4OTUzMjYyZDhjZjgKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9vYmpl
Y3QtY3Vyc29ycy5qcwpAQCAtMCwwICsxLDg2IEBACisvLyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0
cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3Qv
dGVzdF9vYmplY3RDdXJzb3JzLmh0bWwKKy8vIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKy8v
ICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisvLyAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorCitp
ZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCcu
Li8uLi9yZXNvdXJjZXMvc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4
ZWREQidzIGluZGV4IGN1cnNvcnMiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3Zl
VmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwor
ICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIg
PSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKK3sKKyAg
ICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworICAgIGF1dG9JbmNyZW1lbnQgPSBldmFsQW5k
TG9nKCJhdXRvSW5jcmVtZW50ID0gZmFsc2U7Iik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5k
TG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdhJywgeyBrZXlQYXRoOiAn
aWQnLCBhdXRvSW5jcmVtZW50OiBhdXRvSW5jcmVtZW50IH0pOyIpOworICAgIGluZGV4ZXMgPSBb
CisgICAgICAgIHsgbmFtZTogImEiLCBvcHRpb25zOiB7IH0gfSwKKyAgICAgICAgeyBuYW1lOiAi
YiIsIG9wdGlvbnM6IHsgdW5pcXVlOiB0cnVlIH0gfQorICAgIF07CisgICAgZm9yIChqIGluIGlu
ZGV4ZXMpIHsKKyAgICAgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoaW5k
ZXhlc1tqXS5uYW1lLCAnbmFtZScsIGluZGV4ZXNbal0ub3B0aW9ucyk7Iik7CisgICAgfQorICAg
IGRhdGEgPSBldmFsQW5kTG9nKCJkYXRhID0geyBuYW1lOiAnQmVuJywgaWQ6IDEgfTsiKTsKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChkYXRhKTsi
KTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RBZGQ7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHBvc3RBZGQoKQorewor
ICAgIG51bUluZGV4ZXMgPSBpbmRleGVzLmxlbmd0aDsKKyAgICBpbmRleGVzRmluaXNoZWQgPSAw
OworICAgIGZvciAoaiBpbiBpbmRleGVzKSB7CisgICAgICAgIGluZGV4ID0gZXZhbEFuZExvZygi
aW5kZXggPSBvYmplY3RTdG9yZS5pbmRleChpbmRleGVzW2pdLm5hbWUpOyIpOworICAgICAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4Lm9wZW5DdXJzb3IoKTsiKTsKKyAg
ICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIHNob3Vs
ZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLm5hbWUiLCAiJ0JlbiciKTsKKyAgICAgICAg
ICAgIGlmICgrK2luZGV4ZXNGaW5pc2hlZCA9PSBudW1JbmRleGVzKSB7CisgICAgICAgICAgICAg
ICAgaWYgKGF1dG9JbmNyZW1lbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0
KCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc2V0dXBB
dXRvSW5jcmVtZW50KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICB9OworICAgIH0KK30KKworZnVuY3Rpb24gc2V0dXBBdXRvSW5jcmVtZW50KCkKK3sKKyAgICBh
dXRvSW5jcmVtZW50ID0gZXZhbEFuZExvZygiYXV0b0luY3JlbWVudCA9IHRydWU7Iik7CisgICAg
b2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0
b3JlKCdiJywgeyBrZXlQYXRoOiAnaWQnLCBhdXRvSW5jcmVtZW50OiBhdXRvSW5jcmVtZW50IH0p
OyIpOworICAgIGZvciAoaiBpbiBpbmRleGVzKSB7CisgICAgICAgIGV2YWxBbmRMb2coIm9iamVj
dFN0b3JlLmNyZWF0ZUluZGV4KGluZGV4ZXNbal0ubmFtZSwgJ25hbWUnLCBpbmRleGVzW2pdLm9w
dGlvbnMpOyIpOworICAgIH0KKyAgICBkYXRhID0gZXZhbEFuZExvZygiZGF0YSA9IHsgbmFtZTog
J0JlbicgfTsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0
b3JlLmFkZChkYXRhKTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RBZGQ7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK3Rlc3QoKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3Vy
Y2VzL29iamVjdC1pZGVudGl0eS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
emlsbGEvcmVzb3VyY2VzL29iamVjdC1pZGVudGl0eS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNWIzMzM1ZTIz
ODQyZDU2ODIyOWQ4MTg5ZWJmMzgyZWI0OWM1MmRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvb2JqZWN0LWlkZW50aXR5
LmpzCkBAIC0wLDAgKzEsNjYgQEAKKy8vIG9yaWdpbmFsIHRlc3Q6CisvLyBodHRwOi8vbXhyLm1v
emlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X29iamVj
dF9pZGVudGl0eS5odG1sP2ZvcmNlPTEKKy8vIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKy8v
ICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisvLyAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorCitp
ZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCcu
Li8uLi9yZXNvdXJjZXMvc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4
ZWREQjogb2JqZWN0IGlkZW50aXR5Iik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92
ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsK
KyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRi
ID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGNyZWF0ZU9iamVjdFN0b3JlQW5kSW5kZXg7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZU9iamVj
dFN0b3JlQW5kSW5kZXgoKQoreworICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNh
Y3Rpb24gPSBldmVudC50YXJnZXQudHJhbnNhY3Rpb247Iik7CisgICAgZGVsZXRlQWxsT2JqZWN0
U3RvcmVzKGRiKTsKKyAgICBvYmplY3RTdG9yZTEgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZTEg
PSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJyk7Iik7CisgICAgb2JqZWN0U3RvcmUyID0gZXZh
bEFuZExvZygib2JqZWN0U3RvcmUyID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ2ZvbycpOyIp
OworICAgIHNob3VsZEJlVHJ1ZSgib2JqZWN0U3RvcmUxID09PSBvYmplY3RTdG9yZTIiKTsKKyAg
ICBpbmRleDEgPSBldmFsQW5kTG9nKCJpbmRleDEgPSBvYmplY3RTdG9yZTEuY3JlYXRlSW5kZXgo
J2JhcicsICdrZXknKTsiKTsKKyAgICBpbmRleDIgPSBldmFsQW5kTG9nKCJpbmRleDIgPSBvYmpl
Y3RTdG9yZTIuaW5kZXgoJ2JhcicpOyIpOworICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXgxID09PSBp
bmRleDIiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gdGVzdElk
ZW50aXR5U29tZU1vcmU7Iik7Cit9CisKK2Z1bmN0aW9uIHRlc3RJZGVudGl0eVNvbWVNb3JlKCkK
K3sKKyAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNh
Y3Rpb24oJ2ZvbycpOyIpOworICAgIG9iamVjdFN0b3JlMyA9IGV2YWxBbmRMb2coIm9iamVjdFN0
b3JlMyA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdmb28nKTsiKTsKKyAgICBvYmplY3RTdG9y
ZTQgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZTQgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgn
Zm9vJyk7Iik7CisgICAgc2hvdWxkQmVUcnVlKCJvYmplY3RTdG9yZTMgPT09IG9iamVjdFN0b3Jl
NCIpOworCisgICAgc2hvdWxkQmVGYWxzZSgib2JqZWN0U3RvcmUzID09PSBvYmplY3RTdG9yZTEi
KTsKKyAgICBzaG91bGRCZUZhbHNlKCJvYmplY3RTdG9yZTQgPT09IG9iamVjdFN0b3JlMiIpOwor
CisgICAgaW5kZXgzID0gZXZhbEFuZExvZygiaW5kZXgzID0gb2JqZWN0U3RvcmUzLmluZGV4KCdi
YXInKTsiKTsKKyAgICBpbmRleDQgPSBldmFsQW5kTG9nKCJpbmRleDQgPSBvYmplY3RTdG9yZTQu
aW5kZXgoJ2JhcicpOyIpOworICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXgzID09PSBpbmRleDQiKTsK
KworICAgIHNob3VsZEJlRmFsc2UoImluZGV4MyA9PT0gaW5kZXgxIik7CisgICAgc2hvdWxkQmVG
YWxzZSgiaW5kZXg0ID09PSBpbmRleDIiKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0
ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvb2JqZWN0LXN0b3JlLWlubGlu
ZS1hdXRvaW5jcmVtZW50LWtleS1hZGRlZC1vbi1wdXQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9vYmplY3Qtc3RvcmUtaW5saW5lLWF1dG9pbmNy
ZW1lbnQta2V5LWFkZGVkLW9uLXB1dC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lN2ZkYTA2ODQ2ZDQ4ODllM2Fk
ZGIwYzliNjZhMzc1ZGQ3NDg2NzdjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvb2JqZWN0LXN0b3JlLWlubGluZS1hdXRv
aW5jcmVtZW50LWtleS1hZGRlZC1vbi1wdXQuanMKQEAgLTAsMCArMSw2NCBAQAorLy8gb3JpZ2lu
YWwgdGVzdDoKKy8vIGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9t
L2luZGV4ZWREQi90ZXN0L3Rlc3Rfb2JqZWN0U3RvcmVfaW5saW5lX2F1dG9pbmNyZW1lbnRfa2V5
X2FkZGVkX29uX3B1dC5odG1sP2ZvcmNlPTEKKy8vIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoK
Ky8vICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisv
LyAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgor
CitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRz
KCcuLi8uLi9yZXNvdXJjZXMvc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IElu
ZGV4ZWREQiBhZGRpbmcgYW4gYXV0b2luY3JlbWVudGVkIGtleSBhbmQgcmV0cmlldmluZyBpdCBz
dWNjZXNzZnVsbHkiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJl
Zml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2Ny
aXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5k
TG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBzZXR1cE9iamVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXR1cE9iamVjdFN0b3JlKCkKK3sKKyAgICBk
ZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworICAgIHRlc3QgPSBldmFsQW5kTG9nKCJ0ZXN0ID0g
e1xuIiArCisiICAgICAgICBuYW1lOiAnaW5saW5lIGtleTsga2V5IGdlbmVyYXRvcicsXG4iICsK
KyIgICAgICAgIGF1dG9JbmNyZW1lbnQ6IHRydWUsXG4iICsKKyIgICAgICAgIHN0b3JlZE9iamVj
dDogeyBuYW1lOiAnTGluY29sbicgfSxcbiIgKworIiAgICAgICAga2V5TmFtZTogJ2lkJyxcbiIg
KworIiAgICB9OyIpOworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUg
PSBkYi5jcmVhdGVPYmplY3RTdG9yZSh0ZXN0Lm5hbWUsIHsga2V5UGF0aDogdGVzdC5rZXlOYW1l
LCBhdXRvSW5jcmVtZW50OiB0ZXN0LmF1dG9JbmNyZW1lbnQgfSk7Iik7CisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQodGVzdC5zdG9yZWRPYmplY3Qp
OyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gYWRkU3VjY2Vz
cygpCit7CisgICAgaWQgPSBldmFsQW5kTG9nKCJpZCA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5nZXQoaWQp
OyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0U3VjY2VzczsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZ2V0U3VjY2Vz
cygpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQubmFtZSIsICJ0ZXN0LnN0
b3JlZE9iamVjdC5uYW1lIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQuaWQi
LCAiaWQiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vemlsbGEvcmVzb3VyY2VzL29iamVjdC1zdG9yZS1yZW1vdmUtdmFsdWVzLmpzIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvb2JqZWN0LXN0b3JlLXJl
bW92ZS12YWx1ZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmEwZGVhNzlmZWZiOGIwMTU3YmVmZWFhZmE5NzA5
MThlNGYyOTQ3ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvcmVzb3VyY2VzL29iamVjdC1zdG9yZS1yZW1vdmUtdmFsdWVzLmpzCkBAIC0w
LDAgKzEsMTIxIEBACisvLyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9y
Zy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9vYmplY3RTdG9yZV9y
ZW1vdmVfdmFsdWVzLmh0bWw/Zm9yY2U9MQorLy8gbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0Ogor
Ly8gIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKy8v
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCisK
K2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMo
Jy4uLy4uL3Jlc291cmNlcy9zaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5k
ZXhlZERCOiBhZGRzLCBnZXRzLCBkZWxldGVzLCBhbmQgcmUtZ2V0cyBhIHJlY29yZCBpbiBhIHZh
cmlldHkgb2YgZGlmZmVyZW50IG9iamVjdCBzdG9yZSBjb25maWd1cmF0aW9ucyIpOworCitmdW5j
dGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9
IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRh
YmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRl
c2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOworCisgICAgZGF0YSA9IGV2YWxBbmRMb2coImRhdGEgPSBbXG4iICsKKyIgICAg
ICAgIHsgbmFtZTogJ2lubGluZSBrZXk7IGtleSBnZW5lcmF0b3InLFxuIiArCisiICAgICAgICAg
IGF1dG9JbmNyZW1lbnQ6IHRydWUsXG4iICsKKyIgICAgICAgICAgc3RvcmVkT2JqZWN0OiB7bmFt
ZTogJ0xpbmNvbG4nfSxcbiIgKworIiAgICAgICAgICBrZXlOYW1lOiAnaWQnLFxuIiArCisiICAg
ICAgICAgIGtleVZhbHVlOiB1bmRlZmluZWQsXG4iICsKKyIgICAgICAgIH0sXG4iICsKKyIgICAg
ICAgIHsgbmFtZTogJ2lubGluZSBrZXk7IG5vIGtleSBnZW5lcmF0b3InLFxuIiArCisiICAgICAg
ICAgIGF1dG9JbmNyZW1lbnQ6IGZhbHNlLFxuIiArCisiICAgICAgICAgIHN0b3JlZE9iamVjdDog
e2lkOiAxLCBuYW1lOiAnTGluY29sbid9LFxuIiArCisiICAgICAgICAgIGtleU5hbWU6ICdpZCcs
XG4iICsKKyIgICAgICAgICAga2V5VmFsdWU6IHVuZGVmaW5lZCxcbiIgKworIiAgICAgICAgfSxc
biIgKworIiAgICAgICAgeyBuYW1lOiAnb3V0IG9mIGxpbmUga2V5OyBrZXkgZ2VuZXJhdG9yJyxc
biIgKworIiAgICAgICAgICBhdXRvSW5jcmVtZW50OiB0cnVlLFxuIiArCisiICAgICAgICAgIHN0
b3JlZE9iamVjdDoge25hbWU6ICdMaW5jb2xuJ30sXG4iICsKKyIgICAgICAgICAga2V5TmFtZTog
dW5kZWZpbmVkLFxuIiArCisiICAgICAgICAgIGtleVZhbHVlOiB1bmRlZmluZWQsXG4iICsKKyIg
ICAgICAgIH0sXG4iICsKKyIgICAgICAgIHsgbmFtZTogJ291dCBvZiBsaW5lIGtleTsgbm8ga2V5
IGdlbmVyYXRvcicsXG4iICsKKyIgICAgICAgICAgYXV0b0luY3JlbWVudDogZmFsc2UsXG4iICsK
KyIgICAgICAgICAgc3RvcmVkT2JqZWN0OiB7bmFtZTogJ0xpbmNvbG4nfSxcbiIgKworIiAgICAg
ICAgICBrZXlOYW1lOiB1bmRlZmluZWQsXG4iICsKKyIgICAgICAgICAga2V5VmFsdWU6IDEsXG4i
ICsKKyIgICAgICAgIH1cbiIgKworIiAgICBdOyIpOworCisgICAgaSA9IGV2YWxBbmRMb2coImkg
PSAwOyIpOworICAgIHNldFZlcnNpb24oKTsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbigpCit7
CisgICAgaWYgKGkgPCBkYXRhLmxlbmd0aCkgeworICAgICAgICB0ZXN0ID0gZGF0YVtpXTsKKyAg
ICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJyki
KTsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVPYmplY3RTdG9yZTsKKyAgICAg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQorfQorCitmdW5jdGlvbiBjcmVhdGVP
YmplY3RTdG9yZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIGlm
ICh0ZXN0LmtleU5hbWUpIHsKKyAgICAgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKHRlc3QubmFtZSwgeyBrZXlQYXRoOiB0ZXN0
LmtleU5hbWUsIGF1dG9JbmNyZW1lbnQ6IHRlc3QuYXV0b0luY3JlbWVudCB9KTsiKTsKKyAgICB9
IGVsc2UgeworICAgICAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUodGVzdC5uYW1lLCB7IGF1dG9JbmNyZW1lbnQ6IHRlc3QuYXV0
b0luY3JlbWVudCB9KTsiKTsKKyAgICB9CisgICAgaWYgKHRlc3Qua2V5VmFsdWUpIHsKKyAgICAg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQodGVzdC5z
dG9yZWRPYmplY3QsIHRlc3Qua2V5VmFsdWUpOyIpOworICAgIH0gZWxzZSB7CisgICAgICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKHRlc3Quc3RvcmVk
T2JqZWN0KTsiKTsKKyAgICB9CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRSZWNvcmQ7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0
aW9uIGdldFJlY29yZCgpCit7CisgICAgaWQgPSBldmFsQW5kTG9nKCJpZCA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQ7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RT
dG9yZS5nZXQoaWQpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlUmVjb3JkOworfQorCitmdW5j
dGlvbiBkZWxldGVSZWNvcmQoKQoreworICAgIHNob3VsZEJlKCJ0ZXN0LnN0b3JlZE9iamVjdC5u
YW1lIiwgImV2ZW50LnRhcmdldC5yZXN1bHQubmFtZSIpOworCisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5kZWxldGUoaWQpOyIpOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZ2V0UmVjb3JkQWdhaW47Cit9CisKK2Z1bmN0aW9uIGdldFJlY29yZEFnYWluKCkKK3sKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmdldChpZCk7Iik7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmaW5hbENoZWNrOworfQorCitmdW5jdGlvbiBmaW5hbENoZWNrKCkK
K3sKKyAgICBzaG91bGRCZVRydWUoImV2ZW50LnRhcmdldC5yZXN1bHQgPT09IHVuZGVmaW5lZCIp
OworICAgIGkrKzsKKyAgICBzZXRWZXJzaW9uKCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL3Jlc291cmNlcy9vYmplY3RzdG9yZW5hbWVzLmpzIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvb2JqZWN0c3RvcmVuYW1lcy5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45NTQ1MmVlZDM4ZjVkNDJhNWQ0NmQ1OTIxNmFkNTQ1NDZiMDhiNzlkCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJj
ZXMvb2JqZWN0c3RvcmVuYW1lcy5qcwpAQCAtMCwwICsxLDQ3IEBACisvLyBvcmlnaW5hbCB0ZXN0
OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhl
ZERCL3Rlc3QvdGVzdF9nbG9iYWxfZGF0YS5odG1sCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRl
c3Q6CisvLyAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorLy8gICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
ICIKKworaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4u
Ly4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2Ny
aXB0cygnLi4vLi4vcmVzb3VyY2VzL3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVz
dCBJbmRleGVkREIncyBvYmplY3RTdG9yZU5hbWVzIGFycmF5Iik7CisKK2Z1bmN0aW9uIHRlc3Qo
KQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2Nh
dGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24p
Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nl
c3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEn
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5E
YXRhYmFzZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVj
dFN0b3JlTmFtZSA9ICJhIjsKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0
b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lLCB7IGtleVBhdGg6ICdp
ZCcsIGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7CisKKyAgICBzaG91bGRCZVRydWUoIidvYmpl
Y3RTdG9yZU5hbWVzJyBpbiBkYiIpOworICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVz
Lmxlbmd0aCIsICIxIik7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMuaXRlbSgw
KSIsICJvYmplY3RTdG9yZU5hbWUiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgp
OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL29kZC1yZXN1bHQtb3JkZXIuanMgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9vZGQtcmVzdWx0
LW9yZGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZjMjQwZGY3ODhiYTUwYjVjZDA3MjYzYzFhYzdkYTk2ZmUx
MGJmZmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL3Jlc291cmNlcy9vZGQtcmVzdWx0LW9yZGVyLmpzCkBAIC0wLDAgKzEsMTE3IEBACisv
LyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3Nv
dXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9vZGRfcmVzdWx0X29yZGVyLmh0bWw/cmF3PTEK
Ky8vIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7
CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi9yZXNvdXJjZXMvc2hhcmVkLmpz
Jyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQjogcmVxdWVzdCByZXN1bHQgcGVy
c2lzdHMgaW4gc2V0VGltZW91dCBjYWxsYmFjayIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0
aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sK
KyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0g
bnVsbDsiKTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICBkYiA9IGV2YWxB
bmRMb2coImRiID0gcmVxdWVzdC5yZXN1bHQ7Iik7CisgICAgICAgIGNoZWNrRGF0YWJhc2VUeXBl
KCk7CisgICAgfSwgMCk7Cit9CisKK2Z1bmN0aW9uIGNoZWNrRGF0YWJhc2VUeXBlKCkKK3sKKyAg
ICBkZWJ1ZygiY2hlY2tEYXRhYmFzZVR5cGUoKToiKTsKKyAgICBzaG91bGRCZVRydWUoImRiIGlu
c3RhbmNlb2YgSURCRGF0YWJhc2UiKTsKKyAgICBkYi5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJz
aW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldHVwT2JqZWN0U3RvcmU7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0
aW9uIHNldHVwT2JqZWN0U3RvcmUoKQoreworICAgIGRlYnVnKCJzZXR1cE9iamVjdFN0b3JlKCk6
Iik7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKyAgICBvYmplY3RTdG9yZSA9IGV2
YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycsIHsga2V5
UGF0aDogJ2tleScsIGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7CisgICAgaW5kZXggPSBldmFs
QW5kTG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdmb28nLCAnaW5kZXgnKTsi
KTsKKyAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9
IGFkZFJlY29yZDsiKTsKK30KKworZnVuY3Rpb24gYWRkUmVjb3JkKCkKK3sKKyAgICBkZWJ1Zygi
YWRkUmVjb3JkKCk6Iik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9y
ZSA9IGRiLnRyYW5zYWN0aW9uKCdmb28nLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKS5vYmpl
Y3RTdG9yZSgnZm9vJyk7Iik7CisgICAgZGF0YSA9IGV2YWxBbmRMb2coImRhdGEgPSB7IGtleTog
NSwgaW5kZXg6IDEwIH07Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBv
YmplY3RTdG9yZS5hZGQoZGF0YSk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRTdWNj
ZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBhZGRTdWNjZXNzKCkKK3sKKyAgICBkZWJ1ZygiYWRkU3VjY2VzcygpOiIpOwor
ICAgIGtleSA9IGV2YWxBbmRMb2coImtleSA9IG51bGw7Iik7CisgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsKKyAgICAgIGtleSA9IGV2YWxBbmRMb2coImtleSA9IHJlcXVlc3QucmVzdWx0OyIp
OworICAgICAgY2hlY2tBZGRlZEtleSgpOworICAgIH0sIDApOworfQorCitmdW5jdGlvbiBjaGVj
a0FkZGVkS2V5KCkKK3sKKyAgICBkZWJ1ZygiY2hlY2tBZGRlZEtleSgpOiIpOworICAgIHNob3Vs
ZEJlKCJrZXkiLCAiZGF0YS5rZXkiKTsKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9i
amVjdFN0b3JlID0gZGIudHJhbnNhY3Rpb24oJ2ZvbycpLm9iamVjdFN0b3JlKCdmb28nKTsiKTsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmdldChkYXRh
LmtleSk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRTdWNjZXNzOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBnZXRT
dWNjZXNzKCkKK3sKKyAgICBkZWJ1ZygiZ2V0U3VjY2VzcygpOiIpOworICAgIHJlY29yZCA9IGV2
YWxBbmRMb2coInJlY29yZCA9IG51bGw7Iik7CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsK
KyAgICAgIHJlY29yZCA9IGV2YWxBbmRMb2coInJlY29yZCA9IHJlcXVlc3QucmVzdWx0OyIpOwor
ICAgICAgY2hlY2tSZXRyaWV2ZWRLZXkoKTsKKyAgICB9LCAwKTsKK30KKworZnVuY3Rpb24gY2hl
Y2tSZXRyaWV2ZWRLZXkoKQoreworICAgIGRlYnVnKCJjaGVja1JldHJpZXZlZEtleSgpOiIpOwor
ICAgIHNob3VsZEJlKCJyZWNvcmQua2V5IiwgImRhdGEua2V5Iik7CisgICAgc2hvdWxkQmUoInJl
Y29yZC5pbmRleCIsICJkYXRhLmluZGV4Iik7CisgICAgZGVsZXRlUmVjb3JkKCk7Cit9CisKK2Z1
bmN0aW9uIGRlbGV0ZVJlY29yZCgpCit7CisgICAgZGVidWcoImRlbGV0ZVJlY29yZCgpOiIpOwor
ICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlv
bignZm9vJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3RvcmUoJ2ZvbycpOyIp
OworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZGVsZXRl
KGRhdGEua2V5KTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZVN1Y2Nlc3M7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0
aW9uIGRlbGV0ZVN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJkZWxldGVTdWNjZXNzKCk6Iik7Cisg
ICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jl
c291cmNlcy9vcGVuLWRhdGFiYXNlLW51bGwtbmFtZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL29wZW4tZGF0YWJhc2UtbnVsbC1uYW1lLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQ4ZDBjMzMyYzdmODcxYjk2ZTUyNjAzNTgwZTJkYTM4MzRhMWUwZTIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291
cmNlcy9vcGVuLWRhdGFiYXNlLW51bGwtbmFtZS5qcwpAQCAtMCwwICsxLDMxIEBACisvLyBvcmln
aW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9k
b20vaW5kZXhlZERCL3Rlc3QvdGVzdF9vcGVuX2VtcHR5X2RiLmh0bWw/Zm9yY2U9MQorLy8gbGlj
ZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorLy8gIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKy8vICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVi
bGljZG9tYWluL3plcm8vMS4wLyAiCisKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBp
bXBvcnRTY3JpcHRzKCcuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cycpOworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uL3Jlc291cmNlcy9zaGFyZWQuanMnKTsKK30K
KworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCOiBzaG91bGQgTk9UIHRocm93IHdoZW4gb3Bl
bmluZyBhIGRhdGFiYXNlIHdpdGggYSBudWxsIG5hbWUiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7
CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIGRlc2NyaXB0aW9uID0gIk15IFRl
c3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbihu
dWxsKTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVu
U3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKKyAgICBzaG91bGRCZSgiZGIubmFtZSIsICInbnVsbCciKTsKKyAgICBmaW5pc2hKU1Rl
c3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL3B1dC1n
ZXQtdmFsdWVzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNv
dXJjZXMvcHV0LWdldC12YWx1ZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDg0YzhlNjAxMjc2NzAzMjc3NTM1
MmUwYTNlNjg2M2NkMzVjZGEyMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL3B1dC1nZXQtdmFsdWVzLmpzCkBAIC0wLDAg
KzEsMTA4IEBACisvLyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9t
b3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9wdXRfZ2V0X3ZhbHVlcy5o
dG1sCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisvLyAiIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorLy8gICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKworaWYgKHRoaXMuaW1wb3J0U2NyaXB0
cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vcmVzb3VyY2VzL3NoYXJl
ZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBwdXR0aW5nIGFuZCBn
ZXR0aW5nIHZhbHVlcyBpbiBhbiBvYmplY3Qgc3RvcmUiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7
CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9u
LnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2Vzcygp
Cit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFz
ZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIHRlc3RTdHJpbmcg
PSBldmFsQW5kTG9nKCJ0ZXN0U3RyaW5nID0geyBrZXk6IDAsIHZhbHVlOiAndGVzdFN0cmluZycg
fTsiKTsKKyAgICB0ZXN0SW50ID0gZXZhbEFuZExvZygidGVzdEludCA9IHsga2V5OiAxLCB2YWx1
ZTogMTAwMiB9OyIpOworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUg
PSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnT2JqZWN0cycsIHsgYXV0b0luY3JlbWVudDogZmFsc2Ug
fSk7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5h
ZGQodGVzdFN0cmluZy52YWx1ZSwgdGVzdFN0cmluZy5rZXkpOyIpOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
cG9zdEFkZDsKK30KKworZnVuY3Rpb24gcG9zdEFkZCgpCit7CisgICAgc2hvdWxkQmUoImV2ZW50
LnRhcmdldC5yZXN1bHQiLCAidGVzdFN0cmluZy5rZXkiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmdldCh0ZXN0U3RyaW5nLmtleSk7Iik7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBwb3N0R2V0OworfQorCitmdW5jdGlvbiBwb3N0R2V0KCkKK3sKKyAgICBzaG91
bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ0ZXN0U3RyaW5nLnZhbHVlIik7CisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQodGVzdEludC52YWx1
ZSwgdGVzdEludC5rZXkpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdEFkZEludDsKK30KKworZnVu
Y3Rpb24gcG9zdEFkZEludCgpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQi
LCAidGVzdEludC5rZXkiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9i
amVjdFN0b3JlLmdldCh0ZXN0SW50LmtleSk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0R2V0SW50
OworfQorCitmdW5jdGlvbiBwb3N0R2V0SW50KCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFy
Z2V0LnJlc3VsdCIsICJ0ZXN0SW50LnZhbHVlIik7CisgICAgb2JqZWN0U3RvcmVBdXRvSW5jcmVt
ZW50ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmVBdXRvSW5jcmVtZW50ID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ0F1dG9JbmNyZW1lbnRlZCBPYmplY3RzJywgeyBhdXRvSW5jcmVtZW50OiB0cnVl
IH0pOyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmVB
dXRvSW5jcmVtZW50LmFkZCh0ZXN0U3RyaW5nLnZhbHVlKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBv
c3RBZGRBdXRvSW5jcmVtZW50OworfQorCitmdW5jdGlvbiBwb3N0QWRkQXV0b0luY3JlbWVudCgp
Cit7CisgICAgdGVzdFN0cmluZy5rZXkgPSBldmFsQW5kTG9nKCJ0ZXN0U3RyaW5nLmtleSA9IGV2
ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBvYmplY3RTdG9yZUF1dG9JbmNyZW1lbnQuZ2V0KHRlc3RTdHJpbmcua2V5KTsiKTsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IHBvc3RHZXRBdXRvSW5jcmVtZW50OworfQorCitmdW5jdGlvbiBwb3N0R2V0QXV0
b0luY3JlbWVudCgpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAidGVz
dFN0cmluZy52YWx1ZSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2Jq
ZWN0U3RvcmVBdXRvSW5jcmVtZW50LmFkZCh0ZXN0SW50LnZhbHVlKTsiKTsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IHBvc3RBZGRJbnRBdXRvSW5jcmVtZW50OworfQorCitmdW5jdGlvbiBwb3N0QWRkSW50QXV0
b0luY3JlbWVudCgpCit7CisgICAgdGVzdEludC5rZXkgPSBldmFsQW5kTG9nKCJ0ZXN0SW50Lmtl
eSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBvYmplY3RTdG9yZUF1dG9JbmNyZW1lbnQuZ2V0KHRlc3RJbnQua2V5KTsiKTsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IHBvc3RHZXRJbnRBdXRvSW5jcmVtZW50OworfQorCitmdW5jdGlvbiBwb3N0
R2V0SW50QXV0b0luY3JlbWVudCgpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1
bHQiLCAidGVzdEludC52YWx1ZSIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvcmVhZG9ubHktdHJhbnNhY3Rpb25zLmpz
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvcmVhZG9u
bHktdHJhbnNhY3Rpb25zLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU5MmVkZTc0YmM0NjEyYzE5MjkwNDg0YWJi
NDgwNjUwNTJkNGIzZmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9yZWFkb25seS10cmFuc2FjdGlvbnMuanMKQEAgLTAs
MCArMSw1OCBAQAorLy8gb3JpZ2luYWwgdGVzdDoKKy8vIGh0dHA6Ly9teHIubW96aWxsYS5vcmcv
bW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfcmVhZG9ubHlfdHJhbnNh
Y3Rpb25zLmh0bWwKKy8vIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBv
cnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi9yZXNvdXJj
ZXMvc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIHJlYWRv
bmx5IHRyYW5zYWN0aW9ucyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5k
b3JQcmVmaXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAg
ZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2
YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRl
bGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBvc05hbWUgPSAidGVzdCBzdG9yZSI7Cisg
ICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVj
dFN0b3JlKG9zTmFtZSwgeyBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOyIpOworICAgIGV2ZW50LnRh
cmdldC5yZXN1bHQub25jb21wbGV0ZSA9IHNldFZlcnNpb25Db21wbGV0ZTsKK30KKworZnVuY3Rp
b24gc2V0VmVyc2lvbkNvbXBsZXRlKCkKK3sKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJk
Yi50cmFuc2FjdGlvbihbb3NOYW1lXSkub2JqZWN0U3RvcmUob3NOYW1lKS5hZGQoe30pOyIsICJJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5SRUFEX09OTFlfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24ob3NOYW1lKS5vYmplY3RTdG9yZShvc05hbWUpLmFkZCh7
fSk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlJFQURfT05MWV9FUlIiKTsKKyAgICBrZXkxID0g
ZXZhbEFuZExvZygia2V5MSA9IDE7Iik7CisgICAga2V5MiA9IGV2YWxBbmRMb2coImtleTIgPSAy
OyIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKFtvc05hbWVd
KS5vYmplY3RTdG9yZShvc05hbWUpLnB1dCh7fSwga2V5MSk7IiwgIklEQkRhdGFiYXNlRXhjZXB0
aW9uLlJFQURfT05MWV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFu
c2FjdGlvbihvc05hbWUpLm9iamVjdFN0b3JlKG9zTmFtZSkucHV0KHt9LCBrZXkyKTsiLCAiSURC
RGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oImRiLnRyYW5zYWN0aW9uKFtvc05hbWVdKS5vYmplY3RTdG9yZShvc05hbWUpLnB1dCh7
fSwga2V5MSk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlJFQURfT05MWV9FUlIiKTsKKyAgICBl
dmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbihvc05hbWUpLm9iamVjdFN0b3Jl
KG9zTmFtZSkucHV0KHt9LCBrZXkxKTsiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZ
X0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKFtvc05h
bWVdKS5vYmplY3RTdG9yZShvc05hbWUpLmRlbGV0ZShrZXkxKTsiLCAiSURCRGF0YWJhc2VFeGNl
cHRpb24uUkVBRF9PTkxZX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRy
YW5zYWN0aW9uKG9zTmFtZSkub2JqZWN0U3RvcmUob3NOYW1lKS5kZWxldGUoa2V5Mik7IiwgIklE
QkRhdGFiYXNlRXhjZXB0aW9uLlJFQURfT05MWV9FUlIiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsK
K30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL3JlYWR3cml0ZS10
cmFuc2FjdGlvbnMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jl
c291cmNlcy9yZWFkd3JpdGUtdHJhbnNhY3Rpb25zLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyMDk3NDZhMzlj
ZmI0MGY2NmY2MTcyYTA1ZmExYzhkYjU2YjQ0OTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9yZWFkd3JpdGUtdHJhbnNh
Y3Rpb25zLmpzCkBAIC0wLDAgKzEsMTE0IEBACisvLyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDov
L214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVz
dF9yZWFkb25seV90cmFuc2FjdGlvbnMuaHRtbAorLy8gbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0
OgorLy8gIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4K
Ky8vICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAi
CisKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8u
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlw
dHMoJy4uLy4uL3Jlc291cmNlcy9zaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3Qg
SW5kZXhlZERCJ3MgcmVhZC93cml0ZSB0cmFuc2FjdGlvbnMiKTsKKworZnVuY3Rpb24gdGVzdCgp
Cit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0
aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbiki
KTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2Vz
cygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsK
KworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScp
Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVhbkRh
dGFiYXNlKCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgb3NOYW1l
ID0gInRlc3Qgc3RvcmUiOworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3Rv
cmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShvc05hbWUsIHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9
KTsiKTsKKyAgICBldmVudC50YXJnZXQucmVzdWx0Lm9uY29tcGxldGUgPSBzZXRWZXJzaW9uQ29t
cGxldGU7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb25Db21wbGV0ZSgpCit7CisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi50cmFuc2FjdGlvbihbb3NOYW1lXSwgSURCVHJh
bnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3RvcmUob3NOYW1lKS5hZGQoe30pOyIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdEFkZDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gcG9zdEFkZCgpCit7CisgICAgc2hv
dWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2RlIiwgIklEQlRyYW5zYWN0aW9uLlJF
QURfV1JJVEUiKTsKKyAgICBrZXkxID0gZXZhbEFuZExvZygia2V5MSA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQ7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi50cmFuc2Fj
dGlvbihvc05hbWUsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpLm9iamVjdFN0b3JlKG9zTmFt
ZSkuYWRkKHt9KTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RBZGQyOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBw
b3N0QWRkMigpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2Rl
IiwgIklEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUiKTsKKyAgICBrZXkyID0gZXZhbEFuZExvZygi
a2V5MiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBkYi50cmFuc2FjdGlvbihbb3NOYW1lXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9X
UklURSkub2JqZWN0U3RvcmUob3NOYW1lKS5wdXQoe30sIGtleTEpOyIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gcG9zdFB1dDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gcG9zdFB1dCgpCit7CisgICAgc2hvdWxkQmUoImV2
ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2RlIiwgIklEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUi
KTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnRyYW5zYWN0aW9uKG9z
TmFtZSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3RvcmUob3NOYW1lKS5wdXQo
e30sIGtleTIpOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdFB1dDI7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHBv
c3RQdXQyKCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm1vZGUi
LCAiSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gZGIudHJhbnNhY3Rpb24oW29zTmFtZV0sIElEQlRyYW5zYWN0aW9uLlJFQURf
V1JJVEUpLm9iamVjdFN0b3JlKG9zTmFtZSkucHV0KHt9LCBrZXkxKTsiKTsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IHBvc3RQdXQzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBwb3N0UHV0MygpCit7CisgICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2RlIiwgIklEQlRyYW5zYWN0aW9uLlJFQURfV1JJ
VEUiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnRyYW5zYWN0aW9u
KG9zTmFtZSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3RvcmUob3NOYW1lKS5w
dXQoe30sIGtleTEpOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdFB1dDQ7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IHBvc3RQdXQ0KCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm1v
ZGUiLCAiSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gZGIudHJhbnNhY3Rpb24oW29zTmFtZV0sIElEQlRyYW5zYWN0aW9uLlJF
QURfV1JJVEUpLm9iamVjdFN0b3JlKG9zTmFtZSkuZGVsZXRlKGtleTEpOyIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gcG9zdERlbGV0ZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gcG9zdERlbGV0ZSgpCit7CisgICAgc2hv
dWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2RlIiwgIklEQlRyYW5zYWN0aW9uLlJF
QURfV1JJVEUiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnRyYW5z
YWN0aW9uKG9zTmFtZSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3RvcmUob3NO
YW1lKS5kZWxldGUoa2V5Mik7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0RGVsZXRl
MjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKwor
ZnVuY3Rpb24gcG9zdERlbGV0ZTIoKQoreworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQudHJh
bnNhY3Rpb24ubW9kZSIsICJJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFIik7CisgICAgZmluaXNo
SlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9y
ZWFkeVN0YXRlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNv
dXJjZXMvcmVhZHlTdGF0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNWRmY2UzZTJmYTI2ZWNkZGJlNGJhYmEw
ZmFmMDVkYjZlMTBjZGI3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvcmVhZHlTdGF0ZS5qcwpAQCAtMCwwICsxLDcwIEBA
CisvLyBvcmlnaW5hbCB0ZXN0OgorLy8gaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4w
L3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9yZXF1ZXN0X3JlYWR5U3RhdGUuaHRtbD9m
b3JjZT0xCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisvLyAiIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorLy8gICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKworaWYgKHRoaXMuaW1wb3J0U2Ny
aXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vcmVzb3VyY2VzL3No
YXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgcmVhZHlTdGF0ZSBw
cm9wZXJ0eSBkdXJpbmcgZGlmZmVyZW50IG9wZXJhdGlvbnMiKTsKKworZnVuY3Rpb24gdGVzdCgp
Cit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0
aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbiki
KTsKKyAgICBzaG91bGRCZSgicmVxdWVzdC5yZWFkeVN0YXRlIiwgIklEQlJlcXVlc3QuTE9BRElO
RyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNj
ZXNzKCkKK3sKKyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBzaG91bGRCZSgicmVx
dWVzdC5yZWFkeVN0YXRlIiwgIklEQlJlcXVlc3QuRE9ORSIpOworICAgIGRiID0gZXZhbEFuZExv
ZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICBzaG91bGRCZSgicmVxdWVzdC5y
ZWFkeVN0YXRlIiwgIklEQlJlcXVlc3QuTE9BRElORyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gc2V0dXBPYmplY3RTdG9yZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0dXBPYmplY3RTdG9yZSgpCit7CisgICAgZGVi
dWcoInNldHVwT2JqZWN0U3RvcmUoKToiKTsKKyAgICBzaG91bGRCZSgicmVxdWVzdC5yZWFkeVN0
YXRlIiwgIklEQlJlcXVlc3QuRE9ORSIpOworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7
CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ2ZvbycpOyIpOworICAgIGtleSA9IGV2YWxBbmRMb2coImtleSA9IDEwOyIp
OworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKHt9
LCBrZXkpOyIpOworICAgIHNob3VsZEJlKCJyZXF1ZXN0LnJlYWR5U3RhdGUiLCAiSURCUmVxdWVz
dC5MT0FESU5HIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRSZWNvcmQ7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGdl
dFJlY29yZCgpCit7CisgICAgZGVidWcoImdldFJlY29yZCgpOiIpOworICAgIHNob3VsZEJlKCJy
ZXF1ZXN0LnJlYWR5U3RhdGUiLCAiSURCUmVxdWVzdC5ET05FIik7CisgICAgc2hvdWxkQmUoImV2
ZW50LnRhcmdldC5yZXN1bHQiLCAia2V5Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBvYmplY3RTdG9yZS5nZXQoa2V5KTsiKTsKKyAgICBzaG91bGRCZSgicmVxdWVzdC5y
ZWFkeVN0YXRlIiwgIklEQlJlcXVlc3QuTE9BRElORyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZmluYWxDaGVjazsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKK30KKworZnVuY3Rpb24gZmluYWxDaGVjaygpCit7CisgICAgZGVidWcoImZpbmFsQ2hl
Y2soKToiKTsKKyAgICBzaG91bGRCZSgicmVxdWVzdC5yZWFkeVN0YXRlIiwgIklEQlJlcXVlc3Qu
RE9ORSIpOworICAgIHNob3VsZEJlRmFsc2UoImV2ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCIp
OworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9yZXNvdXJjZXMvcmVtb3ZlLWluZGV4LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW96aWxsYS9yZXNvdXJjZXMvcmVtb3ZlLWluZGV4LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFkY2M4NDg0
YWIyOTZhMWJiOTRmNWE5YjlmNmU0ZjcwNTc1MTI2ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9yZW1vdmUtaW5kZXgu
anMKQEAgLTAsMCArMSw1NSBAQAorLy8gb3JpZ2luYWwgdGVzdDoKKy8vIGh0dHA6Ly9teHIubW96
aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfcmVtb3Zl
X2luZGV4Lmh0bWwKKy8vIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHly
aWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBv
cnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi9yZXNvdXJj
ZXMvc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGNyZWF0
aW5nIGFuZCBkZWxldGluZyBpbmRleGVzIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJl
bW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFt
ZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAg
IGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5kRGVsZXRlSW5kZXg7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUFuZERl
bGV0ZUluZGV4KCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgb2Jq
ZWN0U3RvcmVOYW1lID0gInRlc3Qgc3RvcmUiOworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExv
Zygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUsIHsg
a2V5UGF0aDogJ2ZvbycgfSk7Iik7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMu
bGVuZ3RoIiwgIjEiKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5pdGVtKDAp
IiwgIm9iamVjdFN0b3JlTmFtZSIpOworICAgIHNob3VsZEJlKCJvYmplY3RTdG9yZS5pbmRleE5h
bWVzLmxlbmd0aCIsICIwIik7CisKKyAgICBpbmRleE5hbWUgPSAiTXkgVGVzdCBJbmRleCI7Cisg
ICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KGlu
ZGV4TmFtZSwgJ2ZvbycpOyIpOworICAgIHNob3VsZEJlKCJvYmplY3RTdG9yZS5pbmRleE5hbWVz
Lmxlbmd0aCIsICIxIik7CisgICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLmluZGV4TmFtZXMuaXRl
bSgwKSIsICJpbmRleE5hbWUiKTsKKworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmRlbGV0
ZUluZGV4KGluZGV4TmFtZSk7Iik7CisgICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLmluZGV4TmFt
ZXMubGVuZ3RoIiwgIjAiKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvcmVtb3ZlLW9iamVjdHN0b3JlLmpzIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvcmVtb3ZlLW9iamVj
dHN0b3JlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3NzBlMDhkZGU4ZGRjZmQ4MmYwZTI0MmUyYzFmZWM1MDFk
NWMzYWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL3Jlc291cmNlcy9yZW1vdmUtb2JqZWN0c3RvcmUuanMKQEAgLTAsMCArMSwxMDkgQEAK
Ky8vIG9yaWdpbmFsIHRlc3Q6CisvLyBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAv
c291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X3JlbW92ZV9vYmplY3RTdG9yZS5odG1sP2Zv
cmNlPTEKKy8vIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVhdGl2ZWNv
bW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBvcnRTY3Jp
cHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi9yZXNvdXJjZXMvc2hh
cmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBkZWxldGluZyBhbiBv
YmplY3Qgc3RvcmUiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJl
Zml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2Ny
aXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5k
TG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0
U3RvcmVOYW1lcy5sZW5ndGgiLCAiMCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNy
ZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0
U3RvcmUoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBvYmplY3RT
dG9yZU5hbWUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZU5hbWUgPSAnT2JqZWN0cyc7Iik7Cisg
ICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVj
dFN0b3JlKG9iamVjdFN0b3JlTmFtZSwgeyBrZXlQYXRoOiAnZm9vJyB9KTsiKTsKKworICAgIGFk
ZGVkQ291bnQgPSBldmFsQW5kTG9nKCJhZGRlZENvdW50ID0gMDsiKTsKKyAgICBmb3IgKGkgPSAw
OyBpIDwgMTAwOyBpKyspIHsKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5hZGQoe2ZvbzogaX0pOyIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgaWYgKCsrYWRkZWRDb3VudCA9PSAxMDApIHsK
KyAgICAgICAgICAgICAgICBjaGVja09iamVjdFN0b3JlKCk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNoZWNrT2JqZWN0U3RvcmUoKQoreworICAgIHNo
b3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIxIik7CisgICAgc2hvdWxkQmUo
ImRiLm9iamVjdFN0b3JlTmFtZXMuaXRlbSgwKSIsICJvYmplY3RTdG9yZU5hbWUiKTsKKworICAg
IHJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcyJyk7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0U2V0VmVy
c2lvbjI7Cit9CisKK2Z1bmN0aW9uIHBvc3RTZXRWZXJzaW9uMigpCit7CisgICAgZXZhbEFuZExv
ZygiZGIuZGVsZXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmUubmFtZSk7Iik7CisgICAgc2hvdWxk
QmUoImRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjAiKTsKKworICAgIG9iamVjdFN0b3Jl
ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShvYmplY3RT
dG9yZU5hbWUsIHsga2V5UGF0aDogJ2ZvbycgfSk7Iik7CisgICAgc2hvdWxkQmUoImRiLm9iamVj
dFN0b3JlTmFtZXMubGVuZ3RoIiwgIjEiKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVO
YW1lcy5pdGVtKDApIiwgIm9iamVjdFN0b3JlTmFtZSIpOworCisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJl
c3VsdCIsICJudWxsIik7CisgICAgICAgIGRlbGV0ZVNlY29uZE9iamVjdFN0b3JlKCk7CisgICAg
fQorfQorCitmdW5jdGlvbiBkZWxldGVTZWNvbmRPYmplY3RTdG9yZSgpCit7CisgICAgZXZhbEFu
ZExvZygiZGIuZGVsZXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmUubmFtZSk7Iik7CisgICAgc2hv
dWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjAiKTsKKyAgICBzZXRWZXJzaW9u
MygpOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uMygpCit7CisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCczJyk7Iik7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBw
b3N0U2V0VmVyc2lvbjM7Cit9CisKK2Z1bmN0aW9uIHBvc3RTZXRWZXJzaW9uMygpCit7CisgICAg
b2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0
b3JlKG9iamVjdFN0b3JlTmFtZSwgeyBrZXlQYXRoOiAnZm9vJyB9KTsiKTsKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZCh7Zm9vOidiYXInfSk7Iik7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVUaGlyZE9iamVjdFN0b3JlOworfQorCitmdW5jdGlvbiBk
ZWxldGVUaGlyZE9iamVjdFN0b3JlKCkKK3sKKyAgICBldmFsQW5kTG9nKCJkYi5kZWxldGVPYmpl
Y3RTdG9yZShvYmplY3RTdG9yZU5hbWUpOyIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0
ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvdmVyc2lvbmNoYW5nZS1hYm9y
dC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL3Zl
cnNpb25jaGFuZ2UtYWJvcnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDNlYTJjYzA3MThmZjVjZGUwZjlkMGU4
MjFmYzE5ZmJhZTI2NGZjOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL3ZlcnNpb25jaGFuZ2UtYWJvcnQuanMKQEAgLTAs
MCArMSw1NyBAQAorLy8gb3JpZ2luYWwgdGVzdDoKKy8vIGh0dHA6Ly9teHIubW96aWxsYS5vcmcv
bW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3Rfc2V0VmVyc2lvbl9hYm9y
dC5odG1sCisvLyBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisvLyAiIEFueSBjb3B5cmlnaHQg
aXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorLy8gICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKworaWYgKHRoaXMuaW1wb3J0U2Ny
aXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vcmVzb3VyY2VzL3No
YXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBhYm9ydGluZyBz
ZXRWZXJzaW9uIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZp
eGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlw
dGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5k
ZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExv
ZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgaW5pdGlhbFZlcnNpb24gPSBldmFs
QW5kTG9nKCJpbml0aWFsVmVyc2lvbiA9IGRiLnZlcnNpb247Iik7CisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcyJykiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRl
bGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2co
Im9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycpOyIpOworICAgIHNob3Vs
ZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIxIik7CisKKyAgICBpbmRleCA9IGV2
YWxBbmRMb2coImluZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ2JhcicsICdiYXonKTsi
KTsKKyAgICBzaG91bGRCZSgib2JqZWN0U3RvcmUuaW5kZXhOYW1lcy5sZW5ndGgiLCAiMSIpOwor
CisgICAgZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkU3Vj
Y2Vzc0NhbGxiYWNrOworICAgIGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5vbmFib3J0ID0gcG9z
dEFib3J0OworICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5hYm9ydCgp
OyIpOworfQorCitmdW5jdGlvbiBwb3N0QWJvcnQoKQoreworICAgIHNob3VsZEJlKCJkYi52ZXJz
aW9uIiwgImluaXRpYWxWZXJzaW9uIik7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFt
ZXMubGVuZ3RoIiwgIjAiKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvdmVyc2lvbmNoYW5nZS5qcyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL3ZlcnNpb25jaGFuZ2UuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYzNiNWMyNjExNmQyYmRmNjc1MTUxNDM3OTBjNWRhNzdmMmE2MDgxYQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVz
b3VyY2VzL3ZlcnNpb25jaGFuZ2UuanMKQEAgLTAsMCArMSwxMDEgQEAKKy8vIG9yaWdpbmFsIHRl
c3Q6CisvLyBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRl
eGVkREIvdGVzdC90ZXN0X3NldFZlcnNpb25fZXZlbnRzLmh0bWwKKy8vIGxpY2Vuc2Ugb2Ygb3Jp
Z2luYWwgdGVzdDoKKy8vICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1Ymxp
YyBEb21haW4uCisvLyAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8gIgorCitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0
cygnLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBp
bXBvcnRTY3JpcHRzKCcuLi8uLi9yZXNvdXJjZXMvc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0
aW9uKCJUZXN0IEluZGV4ZWREQidzIHRyaWdnZXJpbmcgdmVyc2lvbmNoYW5nZSBldmVudCIpOwor
CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAg
bmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVz
dCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5h
bWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYjEgPSBldmFsQW5kTG9nKCJkYjEgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7CisgICAgdmVyc2lvbkNoYW5nZUV2ZW50Q291bnQgPSBldmFsQW5k
TG9nKCJ2ZXJzaW9uQ2hhbmdlRXZlbnRDb3VudCA9IDA7Iik7CisgICAgZGVidWcoImRiMSB3aWxs
IGJlIG9wZW4gd2hlbiB3ZSBjYWxsIGRiMi5zZXRWZXJzaW9uLCB3aGljaCB3aWxsIHRyaWdnZXIg
dmVyc2lvbmNoYW5nZSBvbiBkYjEiKTsKKyAgICBkYjEub252ZXJzaW9uY2hhbmdlID0gZnVuY3Rp
b24oZXZlbnQpIHsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldCIsICJkYjEiKTsKKyAg
ICAgICAgc2hvdWxkQmUoImV2ZW50LnZlcnNpb24iLCAiJzEnIik7CisgICAgICAgIHZlcnNpb25D
aGFuZ2VFdmVudENvdW50Kys7CisgICAgICAgIHNob3VsZEJlKCJ2ZXJzaW9uQ2hhbmdlRXZlbnRD
b3VudCIsICIxIik7CisgICAgICAgIGRlYnVnKCJjbG9zZSBkYjEgbm93IHNvIHZlcnNpb25jaGFu
Z2UgZG9lc24ndCB0cmlnZ2VyIG9uIGRiMSBhZ2FpbiB3aGVuIHdlIGNhbGwgZGIzLnNldFZlcnNp
b24iKTsKKyAgICAgICAgZXZhbEFuZExvZygiZGIxLmNsb3NlKCk7Iik7CisgICAgfTsKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczI7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNz
MigpCit7CisgICAgZGIyID0gZXZhbEFuZExvZygiZGIyID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIp
OworICAgIGRlYnVnKCJkYjIgd2lsbCBiZSBvcGVuIHdoZW4gd2UgY2FsbCBkYjMuc2V0VmVyc2lv
biwgd2hpY2ggd2lsbCB0cmlnZ2VyIHZlcnNpb25jaGFuZ2Ugb24gZGIyIik7CisgICAgZGIyLm9u
dmVyc2lvbmNoYW5nZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIHQgPSBldmVudC50YXJn
ZXQ7CisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAiZGIyIik7CisgICAgICAgIHNo
b3VsZEJlKCJldmVudC50YXJnZXQudmVyc2lvbiIsICInMSciKTsKKyAgICAgICAgc2hvdWxkQmUo
ImV2ZW50LnZlcnNpb24iLCAiJzInIik7CisgICAgICAgIHZlcnNpb25DaGFuZ2VFdmVudENvdW50
Kys7CisgICAgICAgIHNob3VsZEJlKCJ2ZXJzaW9uQ2hhbmdlRXZlbnRDb3VudCIsICIyIik7Cisg
ICAgICAgIGRlYnVnKCJkb24ndCBjbG9zZSBkYjIsIHNvIGl0IHdpbGwgYmxvY2sgZGIzLnNldFZl
cnNpb24iKTsKKyAgICB9CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYjIu
c2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0U2V0VmVyc2lvbjsKKyAgICBy
ZXF1ZXN0Lm9uYmxvY2tlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIHRlc3RQYXNzZWQo
ImRiMiByZWNlaXZlZCBibG9ja2VkIGV2ZW50Iik7CisgICAgfQorfQorCitmdW5jdGlvbiBwb3N0
U2V0VmVyc2lvbigpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAiZXZl
bnQudGFyZ2V0LnRyYW5zYWN0aW9uIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50cmFu
c2FjdGlvbi5tb2RlIiwgIklEQlRyYW5zYWN0aW9uLlZFUlNJT05fQ0hBTkdFIik7CisgICAgc2hv
dWxkQmUoImRiMi52ZXJzaW9uIiwgIicxJyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbik7Iik7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBvcGVuU3VjY2VzczM7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzMygpCit7Cisg
ICAgZGIzID0gZXZhbEFuZExvZygiZGIzID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiMy5zZXRWZXJzaW9uKCcyJyk7Iik7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgZGVidWco
InRoaXMgcmVxdWVzdCB3aWxsIGJsb2NrIGJlY2F1c2UgZGIyIGlzIHN0aWxsIG9wZW4iKTsKKyAg
ICByZXF1ZXN0Lm9uYmxvY2tlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIHNob3VsZEJl
KCJldmVudC50YXJnZXQuc291cmNlIiwgImRiMyIpOworICAgICAgICBzaG91bGRCZSgiZXZlbnQu
dGFyZ2V0LnNvdXJjZS52ZXJzaW9uIiwgIicxJyIpOworICAgICAgICBzaG91bGRCZSgiZXZlbnQu
dmVyc2lvbiIsICInMiciKTsKKyAgICAgICAgdmVyc2lvbkNoYW5nZUV2ZW50Q291bnQrKzsKKyAg
ICAgICAgZGVidWcoImNsb3NlIGRiMiBub3cgc28gb25zdWNjZXNzIHdpbGwgYmUgY2FsbGVkIik7
CisgICAgICAgIGV2YWxBbmRMb2coImRiMi5jbG9zZSgpOyIpOworICAgIH0KKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IHBvc3RTZXRWZXJzaW9uMjsKK30KKworZnVuY3Rpb24gcG9zdFNldFZlcnNp
b24yKCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJldmVudC50YXJn
ZXQudHJhbnNhY3Rpb24iKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9u
Lm1vZGUiLCAiSURCVHJhbnNhY3Rpb24uVkVSU0lPTl9DSEFOR0UiKTsKKyAgICBzaG91bGRCZSgi
ZGIzLnZlcnNpb24iLCAiJzInIik7CisgICAgc2hvdWxkQmUoInZlcnNpb25DaGFuZ2VFdmVudENv
dW50IiwgIjMiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvdmVyc2lvbmNoYW5nZS1hYm9ydC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS92ZXJzaW9uY2hhbmdlLWFib3J0Lmh0bWwKaW5kZXggNzJkZWRj
OGU0ZDdmNGIwMWJlMzkwYzhmNDBhNmNmYjVhYTUzZWIzMi4uODFmY2E3M2VjZWVkNzBjY2I2N2I0
NmNmY2E0M2ZjNTI0ZWMwZjFlZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS92ZXJzaW9uY2hhbmdlLWFib3J0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS92ZXJzaW9uY2hhbmdlLWFib3J0Lmh0bWwKQEAgLTEs
NjcgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLQotICBvcmlnaW5hbCB0ZXN0OiBodHRw
Oi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90
ZXN0X3NldFZlcnNpb25fYWJvcnQuaHRtbAotICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Ci0g
ICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KLSAg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgot
LS0+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
c2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3Jp
cHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgYWJvcnRpbmcgc2V0VmVyc2lvbiIpOwotCi1mdW5jdGlv
biB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNl
bGYubG9jYXRpb24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFz
ZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2Ny
aXB0aW9uKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9w
ZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOwotICAgIGluaXRpYWxWZXJzaW9uID0gZXZhbEFuZExvZygiaW5pdGlhbFZlcnNpb24g
PSBkYi52ZXJzaW9uOyIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIu
c2V0VmVyc2lvbignMicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNl
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1m
dW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKLXsKLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIp
OwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdmb28nKTsiKTsKLSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1l
cy5sZW5ndGgiLCAiMSIpOwotCi0gICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IG9iamVj
dFN0b3JlLmNyZWF0ZUluZGV4KCdiYXInLCAnYmF6Jyk7Iik7Ci0gICAgc2hvdWxkQmUoIm9iamVj
dFN0b3JlLmluZGV4TmFtZXMubGVuZ3RoIiwgIjEiKTsKLQotICAgIGV2ZW50LnRhcmdldC50cmFu
c2FjdGlvbi5vbmNvbXBsZXRlID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKLSAgICBldmVu
dC50YXJnZXQudHJhbnNhY3Rpb24ub25hYm9ydCA9IHBvc3RBYm9ydDsKLSAgICBldmFsQW5kTG9n
KCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24uYWJvcnQoKTsiKTsKLX0KLQotZnVuY3Rpb24gcG9z
dEFib3J0KCkKLXsKLSAgICBzaG91bGRCZSgiZGIudmVyc2lvbiIsICJpbml0aWFsVmVyc2lvbiIp
OwotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIwIik7Ci0KLSAg
ICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvdmVyc2lvbmNoYW5nZS1hYm9ydC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
IDwvYm9keT4KIDwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS92ZXJzaW9uY2hhbmdlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL3ZlcnNpb25jaGFuZ2UuaHRtbAppbmRleCBmMDU4ZmQ1ZGIxMzBiZTkx
NWVkOGM4ODE2M2Y1ODc3MTI3MTg5YWE4Li4yZmZmNmIxYTJmMjczMmVmMzUzNDQwODYzZWRlNjg5
MDZkNjNlNjFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL3ZlcnNpb25jaGFuZ2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL3ZlcnNpb25jaGFuZ2UuaHRtbApAQCAtMSwxMTIgKzEsMTAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPCEtLQotICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21v
emlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X3NldFZlcnNpb25fZXZlbnRz
Lmh0bWwKLSAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgotICAgICIgQW55IGNvcHlyaWdodCBp
cyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCi0gICAgICBodHRwOi8vY3JlYXRpdmVj
b21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKLS0tPgogPGh0bWw+CiA8aGVhZD4K
IDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+
CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWRE
QidzIHRyaWdnZXJpbmcgdmVyc2lvbmNoYW5nZSBldmVudCIpOwotCi1mdW5jdGlvbiB0ZXN0KCkK
LXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRp
b24ucGF0aG5hbWU7Ci0gICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIp
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNz
KCkKLXsKLSAgICBkYjEgPSBldmFsQW5kTG9nKCJkYjEgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
Ci0gICAgdmVyc2lvbkNoYW5nZUV2ZW50Q291bnQgPSBldmFsQW5kTG9nKCJ2ZXJzaW9uQ2hhbmdl
RXZlbnRDb3VudCA9IDA7Iik7Ci0gICAgZGVidWcoImRiMSB3aWxsIGJlIG9wZW4gd2hlbiB3ZSBj
YWxsIGRiMi5zZXRWZXJzaW9uLCB3aGljaCB3aWxsIHRyaWdnZXIgdmVyc2lvbmNoYW5nZSBvbiBk
YjEiKTsKLSAgICBkYjEub252ZXJzaW9uY2hhbmdlID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAg
ICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldCIsICJkYjEiKTsKLSAgICAgICAgc2hvdWxkQmUoImV2
ZW50LnZlcnNpb24iLCAiJzEnIik7Ci0gICAgICAgIHZlcnNpb25DaGFuZ2VFdmVudENvdW50Kys7
Ci0gICAgICAgIHNob3VsZEJlKCJ2ZXJzaW9uQ2hhbmdlRXZlbnRDb3VudCIsICIxIik7Ci0gICAg
ICAgIGRlYnVnKCJjbG9zZSBkYjEgbm93IHNvIHZlcnNpb25jaGFuZ2UgZG9lc24ndCB0cmlnZ2Vy
IG9uIGRiMSBhZ2FpbiB3aGVuIHdlIGNhbGwgZGIzLnNldFZlcnNpb24iKTsKLSAgICAgICAgZXZh
bEFuZExvZygiZGIxLmNsb3NlKCk7Iik7Ci0gICAgfTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBv
cGVuU3VjY2VzczI7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzMigpCi17Ci0gICAgZGIyID0g
ZXZhbEFuZExvZygiZGIyID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIGRlYnVnKCJkYjIg
d2lsbCBiZSBvcGVuIHdoZW4gd2UgY2FsbCBkYjMuc2V0VmVyc2lvbiwgd2hpY2ggd2lsbCB0cmln
Z2VyIHZlcnNpb25jaGFuZ2Ugb24gZGIyIik7Ci0gICAgZGIyLm9udmVyc2lvbmNoYW5nZSA9IGZ1
bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIHQgPSBldmVudC50YXJnZXQ7Ci0gICAgICAgIHNob3Vs
ZEJlKCJldmVudC50YXJnZXQiLCAiZGIyIik7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50YXJn
ZXQudmVyc2lvbiIsICInMSciKTsKLSAgICAgICAgc2hvdWxkQmUoImV2ZW50LnZlcnNpb24iLCAi
JzInIik7Ci0gICAgICAgIHZlcnNpb25DaGFuZ2VFdmVudENvdW50Kys7Ci0gICAgICAgIHNob3Vs
ZEJlKCJ2ZXJzaW9uQ2hhbmdlRXZlbnRDb3VudCIsICIyIik7Ci0gICAgICAgIGRlYnVnKCJkb24n
dCBjbG9zZSBkYjIsIHNvIGl0IHdpbGwgYmxvY2sgZGIzLnNldFZlcnNpb24iKTsKLSAgICB9Ci0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYjIuc2V0VmVyc2lvbignMScpIik7
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBwb3N0U2V0VmVyc2lvbjsKLSAgICByZXF1ZXN0Lm9uYmxvY2tlZCA9
IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIHRlc3RQYXNzZWQoImRiMiByZWNlaXZlZCBibG9j
a2VkIGV2ZW50Iik7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBwb3N0U2V0VmVyc2lvbigpCi17Ci0g
ICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAiZXZlbnQudGFyZ2V0LnRyYW5zYWN0
aW9uIik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2RlIiwgIklE
QlRyYW5zYWN0aW9uLlZFUlNJT05fQ0hBTkdFIik7Ci0gICAgc2hvdWxkQmUoImRiMi52ZXJzaW9u
IiwgIicxJyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVk
REIub3BlbihuYW1lLCBkZXNjcmlwdGlvbik7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2Vz
czM7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzMygpCi17Ci0gICAgZGIzID0gZXZhbEFuZExv
ZygiZGIzID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygicmVxdWVzdCA9IGRiMy5zZXRWZXJzaW9uKCcyJyk7Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgZGVidWcoInRoaXMgcmVxdWVzdCB3aWxs
IGJsb2NrIGJlY2F1c2UgZGIyIGlzIHN0aWxsIG9wZW4iKTsKLSAgICByZXF1ZXN0Lm9uYmxvY2tl
ZCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuc291
cmNlIiwgImRiMyIpOwotICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnNvdXJjZS52ZXJz
aW9uIiwgIicxJyIpOwotICAgICAgICBzaG91bGRCZSgiZXZlbnQudmVyc2lvbiIsICInMiciKTsK
LSAgICAgICAgdmVyc2lvbkNoYW5nZUV2ZW50Q291bnQrKzsKLSAgICAgICAgZGVidWcoImNsb3Nl
IGRiMiBub3cgc28gb25zdWNjZXNzIHdpbGwgYmUgY2FsbGVkIik7Ci0gICAgICAgIGV2YWxBbmRM
b2coImRiMi5jbG9zZSgpOyIpOwotICAgIH0KLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RT
ZXRWZXJzaW9uMjsKLX0KLQotZnVuY3Rpb24gcG9zdFNldFZlcnNpb24yKCkKLXsKLSAgICBzaG91
bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJldmVudC50YXJnZXQudHJhbnNhY3Rpb24iKTsK
LSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm1vZGUiLCAiSURCVHJhbnNh
Y3Rpb24uVkVSU0lPTl9DSEFOR0UiKTsKLSAgICBzaG91bGRCZSgiZGIzLnZlcnNpb24iLCAiJzIn
Iik7Ci0gICAgc2hvdWxkQmUoInZlcnNpb25DaGFuZ2VFdmVudENvdW50IiwgIjMiKTsKLSAgICBm
aW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy92ZXJzaW9uY2hhbmdlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5
PgogPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
dXRhdGluZy1jdXJzb3IuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL211dGF0
aW5nLWN1cnNvci5odG1sCmluZGV4IDM0YjE5YjliYmEyYjhiZDM1N2NjY2ZiNTg4ODdlODE5MDM1
ODJmNDcuLjQyZWYwMzBjZTNhNTQxYzUyZDM1YTRmNGRlNDAxMmU2NmI0MGFlNzIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL211dGF0aW5nLWN1cnNvci5odG1sCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL211dGF0aW5nLWN1cnNvci5odG1sCkBA
IC00LDEzOCArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3Jp
cHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IG11dGF0
aW5nIGFuIEluZGV4ZWREQidzIG9iamVjdHN0b3JlIGZyb20gYSBjdXJzb3IuIik7Ci0KLXRlc3Qo
KTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ211dGF0aW5nLWN1cnNvcicp
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nl
c3MoKQotewotICAgIHZhciBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJzEnKSIpOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNp
b25TdWNjZXNzKCkKLXsKLSAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKLSAgICBz
ZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0g
ICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1
bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gb3BlbkZvcndh
cmRDdXJzb3I7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgdmFyIG9i
amVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9y
ZSgnc3RvcmUnKSIpOwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgxLCAxKS5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKLSAgICBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZS5hZGQoMiwgMikub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7Ci0gICAg
ZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKDMsIDMpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCg0LCA0KS5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKLX0KLQotZnVuY3Rpb24gb3BlbkZvcndh
cmRDdXJzb3IoKQotewotICAgIGRlYnVnKCJvcGVuRm9yd2FyZEN1cnNvcigpIik7Ci0gICAgZXZh
bEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9u
LlJFQURfV1JJVEUpIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxi
YWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBmb3J3YXJkQ3Vyc29yQ29tcGxldGU7Ci0KLSAg
ICBzZWxmLm9iamVjdFN0b3JlID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3Jl
JykiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUub3BlbkN1cnNvcigp
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmb3J3YXJkQ3Vyc29yOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHNlbGYuY3Vyc29yU3RlcHMg
PSAwOwotfQotCi1mdW5jdGlvbiBmb3J3YXJkQ3Vyc29yKCkKLXsKLSAgICBkZWJ1ZygiZm9yd2Fy
ZEN1cnNvcigpIik7Ci0gICAgc2VsZi5jdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OwotCi0g
ICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkgewotICAgICAgICBzaG91bGRCZSgi
Y3Vyc29yU3RlcHMiLCAiNSIpOwotCi0gICAgICAgIC8vIExldCB0aGUgdHJhbnNhY3Rpb24gZmlu
aXNoLgotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZGVidWcoKytjdXJzb3JTdGVwcyk7
Ci0gICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAiY3Vyc29yU3RlcHMiKTsKLSAgICBzaG91bGRC
ZSgiY3Vyc29yLnZhbHVlIiwgImN1cnNvclN0ZXBzIik7Ci0KLSAgICBpZiAoY3Vyc29yU3RlcHMg
PT0gMSkgewotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnNvdXJj
ZS5hZGQoNSwgNSkiKTsKLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsg
ZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCkiKTsgfQotICAgICAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB9IGVsc2UgewotICAgICAgICBldmFs
QW5kTG9nKCJjdXJzb3IuY29udGludWUoKSIpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gZm9yd2Fy
ZEN1cnNvckNvbXBsZXRlKCkKLXsKLSAgICBkZWJ1ZygiZm9yd2FyZEN1cnNvckNvbXBsZXRlKCki
KTsKLSAgICBvcGVuUmV2ZXJzZUN1cnNvcigpCi19Ci0KLWZ1bmN0aW9uIG9wZW5SZXZlcnNlQ3Vy
c29yKCkKLXsKLSAgICBkZWJ1Zygib3BlblJldmVyc2VDdXJzb3IoKSIpOwotICAgIGV2YWxBbmRM
b2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZSddLCBJREJUcmFuc2FjdGlvbi5SRUFE
X1dSSVRFKSIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsK
LSAgICB0cmFucy5vbmNvbXBsZXRlID0gcmV2ZXJzZUN1cnNvckNvbXBsZXRlOwotCi0gICAgc2Vs
Zi5vYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpIik7
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLm9wZW5DdXJzb3IobnVsbCwg
SURCQ3Vyc29yLlBSRVYpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSByZXZlcnNlQ3Vyc29y
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHNl
bGYuY3Vyc29yU3RlcHMgPSA2OwotfQotCi1mdW5jdGlvbiByZXZlcnNlQ3Vyc29yKCkKLXsKLSAg
ICBkZWJ1ZygicmV2ZXJzZUN1cnNvcigpIik7Ci0gICAgc2VsZi5jdXJzb3IgPSBldmVudC50YXJn
ZXQucmVzdWx0OwotCi0gICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkgewotICAg
ICAgICBzaG91bGRCZSgiY3Vyc29yU3RlcHMiLCAiMCIpOwotCi0gICAgICAgIC8vIExldCB0aGUg
dHJhbnNhY3Rpb24gZmluaXNoLgotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZGVidWco
LS1jdXJzb3JTdGVwcyk7Ci0gICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAiY3Vyc29yU3RlcHMi
KTsKLSAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgImN1cnNvclN0ZXBzIik7Ci0KLSAgICBp
ZiAoY3Vyc29yU3RlcHMgPT0gMikgewotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZXZl
bnQudGFyZ2V0LnNvdXJjZS5hZGQoMCwgMCkiKTsKLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbigpIHsgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCkiKTsgfQotICAgICAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB9IGVsc2Ug
ewotICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKSIpOwotICAgIH0KLX0KLQot
ZnVuY3Rpb24gcmV2ZXJzZUN1cnNvckNvbXBsZXRlKCkKLXsKLSAgICBkZWJ1ZygicmV2ZXJzZUN1
cnNvckNvbXBsZXRlKCkiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi08L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbXV0YXRpbmctY3Vyc29yLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvb2JqZWN0U3RvcmUtcmVxdWlyZWQtYXJndW1lbnRzLmh0bWwgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RTdG9yZS1yZXF1aXJlZC1hcmd1bWVudHMuaHRtbApp
bmRleCA2YTJmOTgxYWEyZTExYzVmNjJiYzgxYjI3YmI4ODZhNGVmNTBjNzA2Li44MTFjNGUwMzkz
ZGExYTYxOWQ1ZGRmYjUzNDUzNWFjZGQ2NjhmOGUzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9vYmplY3RTdG9yZS1yZXF1aXJlZC1hcmd1bWVudHMuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RTdG9yZS1yZXF1aXJlZC1hcmd1
bWVudHMuaHRtbApAQCAtMSw1NCArMSwxMCBAQAotPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxo
ZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4K
IDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERC
IG9iamVjdCBzdG9yZSByZXF1aXJlZCBhcmd1bWVudHMiKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17
Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9u
LnBhdGhuYW1lOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2Vzcygp
Ci17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlOwot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5j
dGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKLXsKLSAgICBkZWxldGVBbGxPYmpl
Y3RTdG9yZXMoZGIpOwotCi0gICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9y
ZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nKTsiKTsKLSAgICBzaG91bGRUaHJvdygib2Jq
ZWN0U3RvcmUucHV0KCk7Iik7Ci0gICAgc2hvdWxkVGhyb3coIm9iamVjdFN0b3JlLmFkZCgpOyIp
OwotICAgIHNob3VsZFRocm93KCJvYmplY3RTdG9yZS5kZWxldGUoKTsiKTsKLSAgICBzaG91bGRU
aHJvdygib2JqZWN0U3RvcmUuZ2V0KCk7Iik7Ci0gICAgc2hvdWxkVGhyb3coIm9iamVjdFN0b3Jl
LmNyZWF0ZUluZGV4KCk7Iik7Ci0gICAgc2hvdWxkVGhyb3coIm9iamVjdFN0b3JlLmNyZWF0ZUlu
ZGV4KCdmb28nKTsiKTsKLSAgICBzaG91bGRUaHJvdygib2JqZWN0U3RvcmUuaW5kZXgoKTsiKTsK
LSAgICBzaG91bGRUaHJvdygib2JqZWN0U3RvcmUuZGVsZXRlSW5kZXgoKTsiKTsKLSAgICBmaW5p
c2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9vYmplY3RTdG9yZS1yZXF1aXJlZC1hcmd1bWVudHMuanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9vYmplY3RzdG9yZS1hdXRvaW5jcmVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1hdXRvaW5jcmVtZW50Lmh0bWwKaW5kZXggNDA1MWZh
NGEwOTc1NTI3YzM2ZTc0NGY2YWEyNmViYjAwMzM5ODQ2ZS4uZGJmNjg1OWU1ODM2MzU2ZGQxZGFh
YzNiYjdhMmIyYjMwNjFjMzc4MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvb2JqZWN0c3RvcmUtYXV0b2luY3JlbWVudC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWF1dG9pbmNyZW1lbnQuaHRtbApAQCAtNCwyMDAg
KzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9o
ZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBJ
REJPYmplY3RTdG9yZSBhdXRvLWluY3JlbWVudCBmZWF0dXJlLiIpOwotCi1mdW5jdGlvbiB0ZXN0
KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJpbmRleGVkREIub3Blbignb2JqZWN0c3RvcmUtYXV0b2luY3JlbWVudCcpIik7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewot
ICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOwotICAgIHNlbGYuZGIgPSBldmFsQW5kTG9nKCJk
YiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJk
Yi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBz
ZXRWZXJzaW9uU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQotewotICAgIGRlYnVn
KCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOwotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0
cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9
PSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwot
ICAgIHRyYW5zLm9uY29tcGxldGUgPSBzZXRWZXJzaW9uQ29tcGxldGVkOwotCi0gICAgZGVsZXRl
QWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIGRlYnVnKCJjcmVhdGVPYmplY3RTdG9yZSgpOiIp
OwotICAgIHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0
b3JlKCdTdG9yZVdpdGhLZXlQYXRoJywge2tleVBhdGg6ICdpZCcsIGF1dG9JbmNyZW1lbnQ6IHRy
dWV9KSIpOwotICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdTdG9yZVdpdGhB
dXRvSW5jcmVtZW50Jywge2F1dG9JbmNyZW1lbnQ6IHRydWV9KSIpOwotICAgIGV2YWxBbmRMb2co
ImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdQbGFpbk9sZFN0b3JlJywge2F1dG9JbmNyZW1lbnQ6IGZh
bHNlfSkiKTsKLSAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnU3RvcmVXaXRo
TG9uZ0tleVBhdGgnLCB7a2V5UGF0aDogJ2EuYi5jLmlkJywgYXV0b0luY3JlbWVudDogdHJ1ZX0p
Iik7Ci0gICAgdmFyIHN0b3JlTmFtZXMgPSBldmFsQW5kTG9nKCJzdG9yZU5hbWVzID0gZGIub2Jq
ZWN0U3RvcmVOYW1lcyIpOwotCi0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzdG9yZS5uYW1l
IiwgIlN0b3JlV2l0aEtleVBhdGgiKTsKLSAgICBzaG91bGRCZSgic3RvcmUua2V5UGF0aCIsICIn
aWQnIik7Ci0gICAgc2hvdWxkQmUoInN0b3JlTmFtZXMuY29udGFpbnMoJ1N0b3JlV2l0aEtleVBh
dGgnKSIsICJ0cnVlIik7Ci0gICAgc2hvdWxkQmUoInN0b3JlTmFtZXMuY29udGFpbnMoJ1N0b3Jl
V2l0aEF1dG9JbmNyZW1lbnQnKSIsICJ0cnVlIik7Ci0gICAgc2hvdWxkQmUoInN0b3JlTmFtZXMu
Y29udGFpbnMoJ1BsYWluT2xkU3RvcmUnKSIsICJ0cnVlIik7Ci0gICAgc2hvdWxkQmUoInN0b3Jl
TmFtZXMubGVuZ3RoIiwgIjQiKTsKLQotICAgIC8vIExldCB0aGUgc2V0VmVyc2lvbiB0cmFuc2Fj
dGlvbiBjb21wbGV0ZS4KLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvbkNvbXBsZXRlZCgpCi17Ci0g
ICAgZGVidWcoInNldFZlcnNpb25Db21wbGV0ZWQoKToiKTsKLQotICAgIHNlbGYudHJhbnMgPSBl
dmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnU3RvcmVXaXRoS2V5UGF0aCcsICdT
dG9yZVdpdGhBdXRvSW5jcmVtZW50JywgJ1BsYWluT2xkU3RvcmUnXSwgSURCVHJhbnNhY3Rpb24u
UkVBRF9XUklURSkiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJh
Y2s7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IHRlc3RMb25nS2V5UGF0aDsKLQotICAgIHNlbGYu
c3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdTdG9yZVdpdGhL
ZXlQYXRoJykiKTsKLQotICAgIGRlYnVnKCJJbnNlcnQgaW50byBvYmplY3Qgc3RvcmUgd2l0aCBh
dXRvIGluY3JlbWVudCBhbmQga2V5IHBhdGgsIHdpdGgga2V5IGluIHRoZSBvYmplY3QuIik7Ci0g
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7bmFtZTogJ0plZmZlcnNzb24nLCBu
dW1iZXI6ICc3MDEwJywgaWQ6IDN9KSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkSmVm
ZmVyc3NvblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGFkZEplZmZlcnNzb25TdWNjZXNzKCkKLXsKLSAgICBkZWJ1
ZygiYWRkSmVmZmVyc3NvblN1Y2Nlc3MoKToiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0
LnJlc3VsdCIsICIzIik7Ci0KLSAgICBkZWJ1ZygiSW5zZXJ0IGludG8gb2JqZWN0IHN0b3JlIHdp
dGggYXV0byBpbmNyZW1lbnQgYW5kIGtleSBwYXRoLCB3aXRob3V0IGtleSBpbiB0aGUgb2JqZWN0
LiIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe25hbWU6ICdMaW5jb2xu
JywgbnVtYmVyOiAnNzAxMid9KSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkTGluY29s
bldpdGhJbmplY3RLZXlTdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBhZGRMaW5jb2xuV2l0aEluamVjdEtleVN1Y2Nl
c3MoKQotewotICAgIGRlYnVnKCJhZGRMaW5jb2xuV2l0aEluamVjdEtleVN1Y2Nlc3MoKToiKTsK
LSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICI0Iik7Ci0KLSAgICByZXN1bHQg
PSBldmFsQW5kTG9nKCJzdG9yZS5nZXQoNCkiKTsKLSAgICByZXN1bHQub25zdWNjZXNzID0gZ2V0
TGluY29sbkFmdGVySW5qZWN0ZWRLZXlTdWNjZXNzOwotICAgIHJlc3VsdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGdldExpbmNvbG5BZnRlckluamVj
dGVkS2V5U3VjY2VzcygpCi17Ci0gICAgZGVidWcoImdldExpbmNvbG5BZnRlckluamVjdGVkS2V5
U3VjY2VzcygpOiIpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJl
c3VsdC5uYW1lIiwgIkxpbmNvbG4iKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50
LnRhcmdldC5yZXN1bHQubnVtYmVyIiwgIjcwMTIiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFy
Z2V0LnJlc3VsdC5pZCIsICI0Iik7Ci0KLSAgICBzZWxmLnN0b3JlID0gZXZhbEFuZExvZygic3Rv
cmUgPSB0cmFucy5vYmplY3RTdG9yZSgnU3RvcmVXaXRoQXV0b0luY3JlbWVudCcpIik7Ci0gICAg
ZGVidWcoIkluc2VydCBpbnRvIG9iamVjdCBzdG9yZSB3aXRoIGtleSBnZW4gdXNpbmcgZXhwbGlj
aXQga2V5Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7bmFtZTogJ0xp
bmNvbG4nLCBudW1iZXI6ICc3MDEyJ30sIDUpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBh
ZGRMaW5jb2xuV2l0aEV4cGxpY2l0S2V5U3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYWRkTGluY29sbldpdGhFeHBs
aWNpdEtleVN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJhZGRMaW5jb2xuV2l0aEV4cGxpY2l0S2V5
U3VjY2VzcygpOiIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIjUiKTsK
LQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5nZXQoNSkiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGdldExpbmNvbG5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBnZXRMaW5jb2xuU3VjY2Vzcygp
Ci17Ci0gICAgZGVidWcoImdldExpbmNvbG5TdWNjZXNzKCk6Iik7Ci0gICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0Lm5hbWUiLCAiTGluY29sbiIpOwotICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5udW1iZXIiLCAiNzAxMiIp
OwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLnB1dCh7bmFtZTogJ0FicmFoYW0n
LCBudW1iZXI6ICcyMTA3J30pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwdXRBYnJhaGFt
U3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LX0KLQotZnVuY3Rpb24gcHV0QWJyYWhhbVN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJwdXRBYnJh
aGFtU3VjY2VzcygpOiIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIjYi
KTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5nZXQoNikiKTsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGdldEFicmFoYW1TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBnZXRBYnJhaGFtU3VjY2Vz
cygpCi17Ci0gICAgZGVidWcoImdldEFicmFoYW1TdWNjZXNzKCk6Iik7Ci0gICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0Lm5hbWUiLCAiQWJyYWhhbSIpOwotICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5udW1iZXIiLCAiMjEw
NyIpOwotCi0gICAgc2VsZi5zdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0
U3RvcmUoJ1BsYWluT2xkU3RvcmUnKSIpOwotICAgIGRlYnVnKCJUcnkgYWRkaW5nIHdpdGggbm8g
a2V5IHRvIG9iamVjdCBzdG9yZSB3aXRob3V0IGF1dG8gaW5jcmVtZW50LiIpOwotICAgIGV2YWxB
bmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmFkZCh7bmFtZTogJ0FkYW0nfSkiLCAiSURCRGF0YWJh
c2VFeGNlcHRpb24uREFUQV9FUlIiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUu
YWRkKHtuYW1lOiAnQWRhbSd9LCAxKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkQWRh
bVN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci19Ci0KLWZ1bmN0aW9uIGFkZEFkYW1TdWNjZXNzKCkKLXsKLSAgICBkZWJ1ZygiYWRkQWRhbVN1
Y2Nlc3MoKToiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICIxIik7Ci19
Ci0KLWZ1bmN0aW9uIHRlc3RMb25nS2V5UGF0aCgpCi17Ci0gICAgZGVidWcoInRlc3RMb25nS2V5
UGF0aCgpOiIpOwotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlv
bignU3RvcmVXaXRoTG9uZ0tleVBhdGgnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwot
ICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5v
bmNvbXBsZXRlID0gZmluaXNoSlNUZXN0OwotCi0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9y
ZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdTdG9yZVdpdGhMb25nS2V5UGF0aCcpIik7Ci0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7Zm9vOiAnYmFyJ30pIik7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInN0b3JlLmFkZCh7Zm9vOiAnYmFyJywgYToge319KSIpOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJzdG9yZS5hZGQoe2ZvbzogJ2JhcicsIGE6IHtiOiB7fX19KSIpOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJzdG9yZS5hZGQoe2ZvbzogJ2JhcicsIGE6IHtiOiB7Yzoge319fX0pIik7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgY3Vyc29yUmVxdWVzdCA9
IGV2YWxBbmRMb2coInN0b3JlLm9wZW5DdXJzb3IoKSIpOwotICAgIGN1cnNvclJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIGV2YWxBbmRMb2coImV4cGVjdGVk
ID0gbnVsbCIpOwotICAgIGV2YWxBbmRMb2coImNvdW50ID0gMCIpOwotICAgIGN1cnNvclJlcXVl
c3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewotICAgICAgICBjdXJzb3IgPSBjdXJzb3JSZXF1
ZXN0LnJlc3VsdDsKLSAgICAgICAgaWYgKCFjdXJzb3IpIHsKLSAgICAgICAgICAgIHNob3VsZEJl
KCJjb3VudCIsICI0Iik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAg
aWYgKGV4cGVjdGVkID09PSBudWxsKSB7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJleHBlY3Rl
ZCA9IGN1cnNvci52YWx1ZS5hLmIuYy5pZCArIDEiKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUuZm9vIiwgIidiYXInIik7Ci0gICAgICAgICAg
ICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmEuYi5jLmlkIiwgImV4cGVjdGVkIik7Ci0gICAgICAg
ICAgICBldmFsQW5kTG9nKCJleHBlY3RlZCA9IGN1cnNvci52YWx1ZS5hLmIuYy5pZCArIDEiKTsK
LSAgICAgICAgfQotICAgICAgICBjb3VudCsrOwotICAgICAgICBjdXJzb3IuY29udGludWUoKTsK
LSAgICB9OwotfQotCi0KLXRlc3QoKTsKLQotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvb2JqZWN0c3RvcmUtYXV0b2luY3JlbWVudC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwv
Ym9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L29iamVjdHN0b3JlLWNsZWFyLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9v
YmplY3RzdG9yZS1jbGVhci5odG1sCmluZGV4IDY2ZWU1ZGNkMmFlMThhZmIxZDI2YmYyOWZjMWVl
YjAyNjc0MWU1ZTUuLjY4OGEzNThjM2Q5YTUzMWFiZmNhMGM2YWM4NDYwOTRmNjJkNDE0NWQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWNsZWFy
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY2xl
YXIuaHRtbApAQCAtNCwxMDcgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQu
anMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigi
VGVzdCBJbmRleGVkREIncyB3ZWJraXRJREJPYmplY3RTdG9yZS5jbGVhcigpLiIpOwotCi1mdW5j
dGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbignb2JqZWN0c3RvcmUtY2xlYXInKSIpOwotICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gc3RhcnRTZXRWZXJzaW9uOwotICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzdGFydFNldFZlcnNp
b24oKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24n
KSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0
ZUV4aXN0aW5nKCkKLXsKLSAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwot
Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIHN0b3JlID0gZXZhbEFuZExv
Zygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKLQot
ICAgIHNlbGYuaW5kZXggPSBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhOYW1l
JywgJycpIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJzdG9yZS5pbmRleE5hbWVzLmNvbnRhaW5zKCdp
bmRleE5hbWUnKSIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCgndmFs
dWUnLCAna2V5JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZVNlY29uZE9iamVj
dFN0b3JlQW5kQWRkVmFsdWU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZVNlY29uZE9iamVjdFN0b3JlQW5kQWRkVmFs
dWUoKQotewotICAgIG90aGVyU3RvcmUgPSBldmFsQW5kTG9nKCJvdGhlclN0b3JlID0gZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ290aGVyU3RvcmVOYW1lJywgbnVsbCkiKTsKLQotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJvdGhlclN0b3JlLmFkZCgndmFsdWUnLCAna2V5JykiKTsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGNsZWFyT2JqZWN0U3RvcmU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFyT2JqZWN0U3RvcmUo
KQotewotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5jbGVhcigpIik7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBjbGVhclN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFyU3VjY2VzcygpCi17Ci0g
ICAgc2hvdWxkQmVVbmRlZmluZWQoImV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJzdG9yZS5vcGVuQ3Vyc29yKCkiKTsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IG9wZW5DdXJzb3JTdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuQ3Vyc29yU3VjY2VzcygpCi17Ci0g
ICAgc2hvdWxkQmVOdWxsKCJldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICBpbmRleCA9IGV2
YWxBbmRMb2coImluZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4TmFtZScpIik7Ci0gICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4Lm9wZW5LZXlDdXJzb3IoKSIpOwotICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gb3BlbktleUN1cnNvclN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5LZXlDdXJzb3JTdWNjZXNz
KCkKLXsKLSAgICBkZWJ1Zygib3BlbktleUN1cnNvclN1Y2Nlc3MoKToiKTsKLSAgICBzaG91bGRC
ZU51bGwoImV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gc2V0
VmVyc2lvbkNvbXBsZXRlOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uQ29tcGxldGUoKQotewot
ICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygiZGIudHJhbnNhY3Rpb24oWydvdGhlclN0b3Jl
TmFtZSddKSIpOwotICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLSAgICB2YXIgb3RoZXJTdG9yZSA9IGV2YWxBbmRMb2coIm90aGVyU3RvcmUgPSB0cmFu
c2FjdGlvbi5vYmplY3RTdG9yZSgnb3RoZXJTdG9yZU5hbWUnKSIpOwotCi0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coIm90aGVyU3RvcmUuZ2V0KCdrZXknKSIpOwotICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZ2V0U3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZ2V0U3VjY2VzcygpCi17Ci0gICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0IiwgInZhbHVlIik7Ci0KLSAgICBmaW5pc2hK
U1Rlc3QoKTsKLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvb2JqZWN0c3RvcmUtY2xlYXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9y
ZS1jb3VudC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUt
Y291bnQuaHRtbAppbmRleCA1MWUxNDVkZWE3ZmEzY2Y0ZTQ1NGZkM2E3MDcxMDc0YWRjMTFjMzgy
Li5kYTQyM2ZlNGI2N2Q4NWEzMTlkMTllM2Q0Nzg3OTk1YTA4NzY1Yjk0IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jb3VudC5odG1sCisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWNvdW50Lmh0bWwKQEAg
LTQsMTQ5ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Njcmlw
dD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhl
ZERCJ3MgSURCT2JqZWN0U3RvcmUuY291bnQoKS4iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0g
ICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5k
ZXhlZERCLm9wZW4oJ29iamVjdHN0b3JlLWNvdW50JykiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0
aW9uKCkgewotICAgICAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dCIpOwotICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZl
cnNpb24nKSIpOwotICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLSAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwcmVwYXJlRGF0YWJhc2U7Ci0gICAg
fTsKLX0KLQotZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0g
ICAgZGVidWcoInByZXBhcmluZyBkYXRhYmFzZSIpOwotICAgIHNlbGYudHJhbnMgPSBldmFsQW5k
TG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRy
YW5zICE9PSBudWxsIik7Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAg
c3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5h
bWUnLCBudWxsKSIpOwotCi0gICAgZGVidWcoImFkZGluZyAwIC4uLiA5OSIpOwotICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKLSAgICAgICAgcmVxdWVzdCA9IHN0b3JlLmFkZChp
LCBpKTsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci0gICAgfQotICAgIHRyYW5zLm9uY29tcGxldGUgPSB2ZXJpZnlDb3VudDsKLX0KLQotZnVuY3Rp
b24gdmVyaWZ5Q291bnQoKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygidmVyaWZ5aW5n
IGNvdW50IHdpdGhvdXQgcmFuZ2UiKTsKLSAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0g
ZGIudHJhbnNhY3Rpb24oJ3N0b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkiKTsK
LSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0g
dW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IHZlcmlmeUNv
dW50V2l0aFJhbmdlOwotCi0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9i
amVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotICAgIHNob3VsZEJlVHJ1ZSgic3RvcmUgIT0gbnVs
bCIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdG9yZS5jb3VudCgp
Iik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgIHNob3VsZEJlVHJ1ZSgi
dHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXInIik7Ci0gICAgICAgICBzaG91bGRCZSgi
cmVxdWVzdC5yZXN1bHQiLCAiMTAwIik7Ci0gICAgICAgICAvLyBsZXQgdGhlIHRyYW5zYWN0aW9u
IGNvbXBsZXRlCi0gICAgfTsKLX0KLQotZnVuY3Rpb24gdmVyaWZ5Q291bnRXaXRoUmFuZ2UoKQot
ewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygidmVyaWZ5aW5nIGNvdW50IHdpdGggcmFuZ2Ui
KTsKLSAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3Jl
TmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkiKTsKLSAgICBzaG91bGRCZVRydWUoInRy
YW5zICE9IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJh
Y2s7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IHZlcmlmeUNvdW50V2l0aEtleTsKLQotICAgIHN0
b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJyki
KTsKLSAgICBzaG91bGRCZVRydWUoInN0b3JlICE9IG51bGwiKTsKLQotICAgIHZhciB0ZXN0cyA9
IFsKLSAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDk5LCB1cHBl
ck9wZW46IGZhbHNlLCBleHBlY3RlZDogMTAwIH0sCi0gICAgICAgIHsgbG93ZXI6IDAsIGxvd2Vy
T3BlbjogdHJ1ZSwgdXBwZXI6IDk5LCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogOTkgfSwK
LSAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDk5LCB1cHBlck9w
ZW46IHRydWUsIGV4cGVjdGVkOiA5OSB9LAotICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9wZW46
IHRydWUsIHVwcGVyOiA5OSwgdXBwZXJPcGVuOiB0cnVlLCBleHBlY3RlZDogOTggfSwKLSAgICAg
ICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDEwMCwgdXBwZXJPcGVuOiBm
YWxzZSwgZXhwZWN0ZWQ6IDEwMCB9LAotICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IGZh
bHNlLCB1cHBlcjogMTAwLCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogMTAwIH0sCi0gICAg
ICAgIHsgbG93ZXI6IDEwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogMTAwLCB1cHBlck9wZW46
IGZhbHNlLCBleHBlY3RlZDogOTAgfSwKLSAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiBm
YWxzZSwgdXBwZXI6IDAsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiAxIH0sCi0gICAgICAg
IHsgbG93ZXI6IDUwMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDUwMCwgdXBwZXJPcGVuOiBm
YWxzZSwgZXhwZWN0ZWQ6IDAgfQotICAgIF07Ci0KLSAgICBmdW5jdGlvbiBuZXh0VGVzdCgpIHsK
LSAgICAgICAgZGVidWcoIiIpOwotICAgICAgICBldmFsQW5kTG9nKCJ0ZXN0ID0gIiArIEpTT04u
c3RyaW5naWZ5KHRlc3RzLnNoaWZ0KCkpKTsKLSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBzdG9yZS5jb3VudChJREJLZXlSYW5nZS5ib3VuZCh0ZXN0Lmxvd2VyLCB0ZXN0
LnVwcGVyLCB0ZXN0Lmxvd2VyT3BlbiwgdGVzdC51cHBlck9wZW4pKSIpOwotICAgICAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICBzaG91bGRCZVRydWUoInR5cGVv
ZiByZXF1ZXN0LnJlc3VsdCA9PSAnbnVtYmVyJyIpOwotICAgICAgICAgICAgIHNob3VsZEJlKCJy
ZXF1ZXN0LnJlc3VsdCIsIFN0cmluZyh0ZXN0LmV4cGVjdGVkKSk7Ci0KLSAgICAgICAgICAgICBp
ZiAodGVzdHMubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgIG5leHRUZXN0KCk7Ci0gICAgICAg
ICAgICAgfQotICAgICAgICAgICAgIC8vIG90aGVyd2lzZSBsZXQgdGhlIHRyYW5zYWN0aW9uIGNv
bXBsZXRlCi0gICAgICAgIH07Ci0gICAgfQotCi0gICAgbmV4dFRlc3QoKTsKLX0KLQotZnVuY3Rp
b24gdmVyaWZ5Q291bnRXaXRoS2V5KCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInZl
cmlmeWluZyBjb3VudCB3aXRoIGtleSIpOwotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMg
PSBkYi50cmFuc2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKSIp
OwotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQg
PSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gZmluaXNo
SlNUZXN0OwotCi0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0
b3JlKCdzdG9yZU5hbWUnKSIpOwotICAgIHNob3VsZEJlVHJ1ZSgic3RvcmUgIT0gbnVsbCIpOwot
Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuY291bnQoTmFOKSIsICJJREJEYXRh
YmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0
b3JlLmNvdW50KHt9KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwotICAgIGV2
YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmNvdW50KC9yZWdleC8pIiwgIklEQkRhdGFiYXNl
RXhjZXB0aW9uLkRBVEFfRVJSIik7Ci0KLSAgICB2YXIgdGVzdHMgPSBbCi0gICAgICAgIHsga2V5
OiAwLCBleHBlY3RlZDogMSB9LAotICAgICAgICB7IGtleTogMTAwLCBleHBlY3RlZDogMCB9LAot
ICAgICAgICB7IGtleTogbnVsbCwgZXhwZWN0ZWQ6IDEwMCB9Ci0gICAgXTsKLQotICAgIGZ1bmN0
aW9uIG5leHRUZXN0KCkgewotICAgICAgICBkZWJ1ZygiIik7Ci0gICAgICAgIGV2YWxBbmRMb2co
InRlc3QgPSAiICsgSlNPTi5zdHJpbmdpZnkodGVzdHMuc2hpZnQoKSkpOwotICAgICAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHN0b3JlLmNvdW50KHRlc3Qua2V5KSIpOwotICAg
ICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHNob3VsZEJlVHJ1
ZSgidHlwZW9mIHJlcXVlc3QucmVzdWx0ID09ICdudW1iZXInIik7Ci0gICAgICAgICAgICBzaG91
bGRCZSgicmVxdWVzdC5yZXN1bHQiLCBTdHJpbmcodGVzdC5leHBlY3RlZCkpOwotICAgICAgICAg
ICAgIGlmICh0ZXN0cy5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICAgbmV4dFRlc3QoKTsKLSAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIGxldCB0aGUgdHJhbnNhY3Rp
b24gY29tcGxldGUKLSAgICAgICAgfTsKLSAgICB9Ci0KLSAgICBuZXh0VGVzdCgpOwotfQotCi10
ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9vYmplY3RzdG9yZS1j
b3VudC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWN1cnNvci5odG1sIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY3Vyc29yLmh0bWwKaW5k
ZXggY2Q0ZjIyZGNkMDIzZWU5ZmFiMzlkYTBjYjMxYmFkOTkxYjc4MTE1MC4uNTk0MDdjNGExYTVh
ODAzMWZiMWM1OWI3MjYzN2Q2ZTkyNWM2ZjQ0MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY3Vyc29yLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY3Vyc29yLmh0bWwKQEAgLTQsMjMxICs0LDcg
QEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4K
IDxib2R5PgotPHNjcmlwdD4gCi0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIG9iamVj
dFN0b3JlLm9wZW5DdXJzb3IgKyB0aGUgY3Vyc29yIGl0IHByb2R1Y2VzIGluIGRlcHRoLiIpOwot
IAotLy8gSW4gb3JkZXIgb2YgaG93IGl0IHNob3VsZCBiZSBzb3J0ZWQgYnkgSW5kZXhlZERCLgot
c2VsZi50ZXN0RGF0YSA9IFsKLSAgICAyLjcxODI4MTgyODQ1OSwKLSAgICAzLAotICAgIDMuMTQx
NTkyNjUsCi0gICAgMTAsCi0gICAgLy8gRklYTUU6IERhdGVzLgotICAgICJBIGJpZ2dlciBzdHJp
bmciLAotICAgICJUaGUgYmlnZ2VzdCIsCi0gICAgImEgbG93IHN0cmluZyIKLV07Ci0gCi1mdW5j
dGlvbiBvcGVuRGF0YWJhc2UoKQotewotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVk
REIub3Blbignb2JqZWN0c3RvcmUtY3Vyc29yJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IHNldFZlcnNpb247Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0gCi1mdW5jdGlvbiBzZXRWZXJzaW9uKCkKLXsKLSAgICBzZWxmLmRiID0gZXZhbEFu
ZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZGVsZXRlRXhpc3Rpbmc7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKLXsKLSAgICBzZWxm
LnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAg
c2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4
cGVjdGVkQWJvcnRDYWxsYmFjazsKLQotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0K
LSAgICBzZWxmLm9iamVjdFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUo
J3NvbWVPYmplY3RTdG9yZScpIik7Ci0gICAgc2VsZi5uZXh0VG9BZGQgPSAwOwotICAgIGFkZERh
dGEoKTsKLX0KLQotZnVuY3Rpb24gYWRkRGF0YSgpCi17Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coIm9iamVjdFN0b3JlLmFkZCgnJywgdGVzdERhdGFbbmV4dFRvQWRkXSkiKTsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9ICsrc2VsZi5uZXh0VG9BZGQgPCB0ZXN0RGF0YS5sZW5ndGggPyBhZGRE
YXRhIDogc2NoZWR1bGVUZXN0czsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc2NoZWR1bGVUZXN0cygpCi17Ci0gICAgZGVidWco
IlNjaGVkdWxpbmcgdGVzdHMuLi4iKTsKLSAgICBzZWxmLnNjaGVkdWxlZFRlc3RzID0gW107Ci0g
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0RGF0YS5sZW5ndGg7ICsraSkgewotICAgICAgICAv
KiBsZWZ0IGJvdW5kLCBpcyBvcGVuLCByaWdodCBib3VuZCwgaXMgb3BlbiwgYXNjZW5kaW5nICov
Ci0gICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIHRydWUsIG51bGwsIG51bGwsIHRy
dWVdKTsKLSAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgZmFsc2UsIG51bGwsIG51
bGwsIHRydWVdKTsKLSAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbbnVsbCwgbnVsbCwg
aSwgdHJ1ZSwgdHJ1ZV0pOwotICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtudWxsLCBu
dWxsLCBpLCBmYWxzZSwgdHJ1ZV0pOwotICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtp
LCB0cnVlLCBudWxsLCBudWxsLCBmYWxzZV0pOwotICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNo
aWZ0KFtpLCBmYWxzZSwgbnVsbCwgbnVsbCwgZmFsc2VdKTsKLSAgICAgICAgc2NoZWR1bGVkVGVz
dHMudW5zaGlmdChbbnVsbCwgbnVsbCwgaSwgdHJ1ZSwgZmFsc2VdKTsKLSAgICAgICAgc2NoZWR1
bGVkVGVzdHMudW5zaGlmdChbbnVsbCwgbnVsbCwgaSwgZmFsc2UsIGZhbHNlXSk7Ci0gICAgICAg
IGZvciAodmFyIGogPSA2OyBqIDwgdGVzdERhdGEubGVuZ3RoOyArK2opIHsKLSAgICAgICAgICAg
IHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIHRydWUsIGosIHRydWUsIHRydWVdKTsKLSAgICAg
ICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIHRydWUsIGosIGZhbHNlLCB0cnVlXSk7
Ci0gICAgICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCBmYWxzZSwgaiwgdHJ1ZSwg
dHJ1ZV0pOwotICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgZmFsc2UsIGos
IGZhbHNlLCB0cnVlXSk7Ci0gICAgICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCB0
cnVlLCBqLCB0cnVlLCBmYWxzZV0pOwotICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlm
dChbaSwgdHJ1ZSwgaiwgZmFsc2UsIGZhbHNlXSk7Ci0gICAgICAgICAgICBzY2hlZHVsZWRUZXN0
cy51bnNoaWZ0KFtpLCBmYWxzZSwgaiwgdHJ1ZSwgZmFsc2VdKTsKLSAgICAgICAgICAgIHNjaGVk
dWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBqLCBmYWxzZSwgZmFsc2VdKTsKLSAgICAgICAg
fQotICAgIH0KLSAKLSAgICBkZWJ1ZygiUnVubmluZyB0ZXN0cy4uLiIpOwotICAgIHJ1bk5leHRU
ZXN0KCk7Ci19Ci0gCi1mdW5jdGlvbiBydW5OZXh0VGVzdCgpCi17Ci0gICAgaWYgKCFzY2hlZHVs
ZWRUZXN0cy5sZW5ndGgpIHsKLSAgICAgICAgdGVzdE51bGxLZXlSYW5nZSgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotIAotICAgIHZhciB0ZXN0ID0gc2NoZWR1bGVkVGVzdHMucG9wKCk7Ci0g
ICAgc2VsZi5sb3dlciA9IHRlc3RbMF07Ci0gICAgc2VsZi5sb3dlcklzT3BlbiA9IHRlc3RbMV07
Ci0gICAgc2VsZi51cHBlciA9IHRlc3RbMl07Ci0gICAgc2VsZi51cHBlcklzT3BlbiA9IHRlc3Rb
M107Ci0gICAgc2VsZi5hc2NlbmRpbmcgPSB0ZXN0WzRdOwotCi0gICAgc3RyID0gIk5leHQgdGVz
dDogIjsKLSAgICBpZiAobG93ZXIgIT09IG51bGwpIHsKLSAgICAgICAgc3RyICs9ICJsb3dlciAi
OwotICAgICAgICBpZiAobG93ZXJJc09wZW4pCi0gICAgICAgICAgICBzdHIgKz0gIm9wZW4gIjsK
LSAgICAgICAgc3RyICs9ICJib3VuZCBpcyAiICsgbG93ZXIgKyAiOyAiOwotICAgIH0KLSAgICBp
ZiAodXBwZXIgIT09IG51bGwpIHsKLSAgICAgICAgc3RyICs9ICJ1cHBlciAiOwotICAgICAgICBp
ZiAodXBwZXJJc09wZW4pCi0gICAgICAgICAgICBzdHIgKz0gIm9wZW4gIjsKLSAgICAgICAgc3Ry
ICs9ICJib3VuZCBpcyAiICsgdXBwZXIgKyAiOyAiOwotICAgIH0KLSAgICBpZiAoYXNjZW5kaW5n
KQotICAgICAgICBzdHIgKz0gInNvcnRlZCBhc2NlbmRpbmcuIjsKLSAgICBlbHNlCi0gICAgICAg
IHN0ciArPSAic29ydGVkIGRlc2NlbmRpbmcuIjsKLQotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1
ZyhzdHIpOwotIAotICAgIGlmIChhc2NlbmRpbmcpIHsKLSAgICAgICAgaWYgKGxvd2VyICE9PSBu
dWxsKSB7Ci0gICAgICAgICAgICBpZiAoIWxvd2VySXNPcGVuKQotICAgICAgICAgICAgICAgIHNl
bGYuZXhwZWN0ZWRJbmRleCA9IGxvd2VyOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IGxvd2VyKzE7Ci0gICAgICAgIH0gZWxzZQotICAgICAg
ICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gMDsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAo
dXBwZXIgIT09IG51bGwpIHsKLSAgICAgICAgICAgIGlmICghdXBwZXJJc09wZW4pCi0gICAgICAg
ICAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gdXBwZXI7Ci0gICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gdXBwZXItMTsKLSAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSB0ZXN0RGF0YS5sZW5ndGgtMTsK
LSAgICB9Ci0gICAgdGVzdFdpdGhpbkJvdW5kcygpOwotIAotICAgIGlmICh0ZXN0RGF0YVtsb3dl
cl0gPT09IHRlc3REYXRhW3VwcGVyXSAmJiAobG93ZXJJc09wZW4gfHwgdXBwZXJJc09wZW4pKSB7
Ci0gICAgICAgIGRlYnVnKCJTa2lwcGluZyBpbGxlZ2FsIGtleSByYW5nZS4iKTsKLSAgICAgICAg
cnVuTmV4dFRlc3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHZhciBrZXlSYW5n
ZTsKLSAgICBpZiAobG93ZXIgIT09IG51bGwgJiYgdXBwZXIgIT09IG51bGwpCi0gICAgICAgIGtl
eVJhbmdlID0gSURCS2V5UmFuZ2UuYm91bmQodGVzdERhdGFbbG93ZXJdLCB0ZXN0RGF0YVt1cHBl
cl0sIGxvd2VySXNPcGVuLCB1cHBlcklzT3Blbik7Ci0gICAgZWxzZSBpZiAobG93ZXIgIT09IG51
bGwpCi0gICAgICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2UubG93ZXJCb3VuZCh0ZXN0RGF0YVts
b3dlcl0sIGxvd2VySXNPcGVuKTsKLSAgICBlbHNlCi0gICAgICAgIGtleVJhbmdlID0gSURCS2V5
UmFuZ2UudXBwZXJCb3VuZCh0ZXN0RGF0YVt1cHBlcl0sIHVwcGVySXNPcGVuKTsKLSAKLSAgICB2
YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3Ioa2V5UmFuZ2UsIGFzY2VuZGluZyA/
IElEQkN1cnNvci5ORVhUIDogSURCQ3Vyc29yLlBSRVYpOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gY3Vyc29ySXRlcmF0aW9uOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiB0ZXN0V2l0aGluQm91bmRzKCkKLXsKLSAgICBpZiAo
ZXhwZWN0ZWRJbmRleCA8IDAgfHwgdGVzdERhdGEubGVuZ3RoIDw9IGV4cGVjdGVkSW5kZXgpCi0g
ICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IG51bGw7Ci0gICAgaWYgKGxvd2VyICE9PSBudWxs
ICYmIGV4cGVjdGVkSW5kZXggPCBsb3dlcikKLSAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0g
bnVsbDsKLSAgICBpZiAodXBwZXIgIT09IG51bGwgJiYgdXBwZXIgPCBleHBlY3RlZEluZGV4KQot
ICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSBudWxsOwotICAgIGlmIChsb3dlciAhPT0gbnVs
bCAmJiBsb3dlcklzT3BlbiAmJiBleHBlY3RlZEluZGV4IDw9IGxvd2VyKQotICAgICAgICBzZWxm
LmV4cGVjdGVkSW5kZXggPSBudWxsOwotICAgIGlmICh1cHBlciAhPT0gbnVsbCAmJiB1cHBlcklz
T3BlbiAmJiB1cHBlciA8PSBleHBlY3RlZEluZGV4KQotICAgICAgICBzZWxmLmV4cGVjdGVkSW5k
ZXggPSBudWxsOwotfQotIAotZnVuY3Rpb24gY3Vyc29ySXRlcmF0aW9uKCkKLXsKLSAgICBpZiAo
ZXhwZWN0ZWRJbmRleCA9PT0gbnVsbCkgewotICAgICAgICBzaG91bGRCZU51bGwoImV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKLSAgICAgICAgcnVuTmV4dFRlc3QoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBpZiAoZXZlbnQudGFyZ2V0LnJlc3VsdCA9PT0gbnVsbCkgewotICAgICAgICB0
ZXN0RmFpbGVkKCJldmVudC50YXJnZXQucmVzdWx0IHNob3VsZCBub3QgYmUgbnVsbC4iKTsKLSAg
ICAgICAgcnVuTmV4dFRlc3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAKLSAgICBzaG91
bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAidGVzdERhdGFbIiArIGV4cGVjdGVkSW5k
ZXggKyAiXSIpOwotICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IGFzY2VuZGluZyA/IGV4cGVjdGVk
SW5kZXgrMSA6IGV4cGVjdGVkSW5kZXgtMTsKLSAgICB0ZXN0V2l0aGluQm91bmRzKCk7Ci0KLSAg
ICBldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCk7Ci19Ci0gCi1zZWxmLm51bGxLZXlSYW5n
ZVN0ZXAgPSAwOwotZnVuY3Rpb24gdGVzdE51bGxLZXlSYW5nZSgpCi17Ci0gICAgc2VsZi5sb3dl
ciA9IDA7Ci0gICAgc2VsZi5sb3dlcklzT3BlbiA9IGZhbHNlOwotICAgIHNlbGYudXBwZXIgPSB0
ZXN0RGF0YS5sZW5ndGgtMTsKLSAgICBzZWxmLnVwcGVySXNPcGVuID0gZmFsc2U7Ci0KLSAgICBz
dHIgPSAiTmV4dCB0ZXN0OiBudWxsIGtleSBwYXRoICI7Ci0gICAgaWYgKHNlbGYubnVsbEtleVJh
bmdlU3RlcCA9PSAwKSB7Ci0gICAgICAgIHN0ciArPSAic29ydGVkIGFzY2VuZGluZy4iOwotICAg
ICAgICBzZWxmLmFzY2VuZGluZyA9IHRydWU7Ci0gICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9
IGxvd2VyOwotICAgICAgICBzZWxmLm51bGxLZXlSYW5nZVN0ZXAgPSAxOwotICAgIH0gZWxzZSBp
ZiAoc2VsZi5udWxsS2V5UmFuZ2VTdGVwID09IDEpIHsKLSAgICAgICAgc3RyICs9ICJzb3J0ZWQg
ZGVzY2VuZGluZy4iOwotICAgICAgICBzZWxmLmFzY2VuZGluZyA9IGZhbHNlOwotICAgICAgICBz
ZWxmLmV4cGVjdGVkSW5kZXggPSB1cHBlcjsKLSAgICAgICAgc2VsZi5udWxsS2V5UmFuZ2VTdGVw
ID0gMjsKLSAgICB9IGVsc2UgewotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZyhzdHIpOwotIAotICAgIHZh
ciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcihudWxsLCBhc2NlbmRpbmcgPyBJREJD
dXJzb3IuTkVYVCA6IElEQkN1cnNvci5QUkVWKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1
cnNvckl0ZXJhdGlvbjsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKLX0KLSAKLXJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci1vcGVuRGF0YWJhc2UoKTsgLy8g
VGhlIGZpcnN0IHN0ZXAuCi0gCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb2Jq
ZWN0c3RvcmUtY3Vyc29yLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtcmVt
b3Zlb2JqZWN0c3RvcmUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVj
dHN0b3JlLXJlbW92ZW9iamVjdHN0b3JlLmh0bWwKaW5kZXggNTExNDY1MTI2MmQ0ZGY5ZWRjMjI4
NWU3MjU4MTkwZjdmMzE5ZDdjMC4uNDczMTExNDAwYjA4ZjBiZTM5YTVkZDMyZjJiMjgzM2EyOTM0
ZmYwMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3Rv
cmUtcmVtb3Zlb2JqZWN0c3RvcmUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9vYmplY3RzdG9yZS1yZW1vdmVvYmplY3RzdG9yZS5odG1sCkBAIC00LDEwMiArNCw3IEBA
CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8
Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIHdlYmtpdElE
Qk9iamVjdFN0b3JlLmRlbGV0ZU9iamVjdFN0b3JlKCkuIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQot
ewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImluZGV4ZWREQi5vcGVuKCdvYmplY3RzdG9yZS1yZW1vdmVvYmplY3RzdG9yZScpIik7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBzdGFydFNldFZlcnNpb247Ci0gICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHN0YXJ0U2V0VmVyc2lv
bigpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsK
LQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicp
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gZGVsZXRl
RXhpc3RpbmcoKQotewotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0K
LSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgc3RvcmUgPSBldmFsQW5kTG9n
KCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOwotCi0g
ICAgc2VsZi5pbmRleCA9IGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleE5hbWUn
LCAnJykiKTsKLSAgICBzaG91bGRCZVRydWUoInN0b3JlLmluZGV4TmFtZXMuY29udGFpbnMoJ2lu
ZGV4TmFtZScpIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKCd2YWx1
ZScsICdrZXknKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBnZXRWYWx1ZTsKLX0KLQotZnVuY3Rpb24gZ2V0
VmFsdWUoKQotewotICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygiZGIudHJhbnNhY3Rpb24o
WydzdG9yZU5hbWUnXSkiKTsKLSAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci0gICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2Fj
dGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJzdG9yZS5nZXQoJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRJbmRl
eDsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQot
ZnVuY3Rpb24gYWRkSW5kZXgoKQotewotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQu
dGFyZ2V0LnJlc3VsdCIsICJ2YWx1ZSIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRi
LnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRl
bGV0ZU9iamVjdFN0b3JlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotfQotCi1mdW5jdGlvbiBkZWxldGVPYmplY3RTdG9yZSgpCi17Ci0gICAgc2VsZi50
cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIHNo
b3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBl
Y3RlZEFib3J0Q2FsbGJhY2s7Ci0KLSAgICBldmFsQW5kTG9nKCJkYi5kZWxldGVPYmplY3RTdG9y
ZSgnc3RvcmVOYW1lJykiKTsKLSAgICBjcmVhdGVPYmplY3RTdG9yZUFnYWluKCk7Ci19Ci0KLWZ1
bmN0aW9uIGNyZWF0ZU9iamVjdFN0b3JlQWdhaW4oKQotewotICAgIGV2YWxBbmRMb2coImRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOwotICAgIHRyYW5zLm9uY29tcGxl
dGUgPSBnZXRWYWx1ZUFnYWluOwotfQotCi1mdW5jdGlvbiBnZXRWYWx1ZUFnYWluKCkKLXsKLSAg
ICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coImRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10p
Iik7Ci0gICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwot
ICAgIHZhciBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3Rv
cmUoJ3N0b3JlTmFtZScpIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuZ2V0
KCdrZXknKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdmVyaWZ5Tm90Rm91bmQ7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9u
IHZlcmlmeU5vdEZvdW5kKCkKLXsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIs
ICJ1bmRlZmluZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJldmVudC50YXJnZXQuc291cmNlLmlu
ZGV4TmFtZXMuY29udGFpbnMoJ2luZGV4TmFtZScpIik7Ci0KLSAgICBmaW5pc2hKU1Rlc3QoKTsK
LX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb2JqZWN0
c3RvcmUtcmVtb3Zlb2JqZWN0c3RvcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vZGQtc3Ry
aW5ncy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2RkLXN0cmluZ3MuaHRt
bAppbmRleCBhOGEwNzJhMzQ3MzEwNTEwOTllMDdkZmFhMGRlZDA4OGYwM2IwZDY0Li42NWEzNjNi
ZDBkOWYwOTk0NDk0MmIwNTliN2I3NjE1ZTQwZGE3ZmE0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9vZGQtc3RyaW5ncy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL29kZC1zdHJpbmdzLmh0bWwKQEAgLTEsMTExICsxLDEwIEBACi08IURP
Q1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNl
cy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNj
cmlwdGlvbigiVGVzdCBJbmRleGVkREIgb2RkIHZhbHVlIGRhdGF0eXBlcyIpOwotCi1mdW5jdGlv
biB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgdGVzdERhdGEg
PSBbeyBkZXNjcmlwdGlvbjogJ251bGwnLCAgICAgICAgICAgICAgIG5hbWU6ICdcdTAwMDAnIH0s
Ci0gICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ2ZhaWh1JywgICAgICAgICAgICAgIG5h
bWU6ICdcdWQ4MDBcdWRmNDYnIH0sCi0gICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ3Vu
cGFpcmVkIHN1cnJvZ2F0ZScsIG5hbWU6ICdcdWQ4MDAnIH0sCi0gICAgICAgICAgICAgICAgeyBk
ZXNjcmlwdGlvbjogJ2ZmZmUnLCAgICAgICAgICAgICAgIG5hbWU6ICdcdWZmZmUnIH0sCi0gICAg
ICAgICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ2ZmZmYnLCAgICAgICAgICAgICAgIG5hbWU6ICdc
dWZmZmYnIH0sCi0gICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ2xpbmUgc2VwYXJhdG9y
JywgICAgIG5hbWU6ICdcdTIwMjgnIH0KLSAgICBdOwotICAgIG5leHRUb09wZW4gPSAwOwotICAg
IG9wZW5OZXh0RGF0YWJhc2UoKTsKLX0KLQotZnVuY3Rpb24gb3Blbk5leHREYXRhYmFzZSgpCi17
Ci0gICAgZGVidWcoIm9wZW5pbmcgYSBkYXRhYmFzZSBuYW1lZCAiICsgdGVzdERhdGFbbmV4dFRv
T3Blbl0uZGVzY3JpcHRpb24pOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
b3Blbih0ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1lLCB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5kZXNj
cmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotfQotCi1mdW5jdGlvbiBv
cGVuU3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNp
b24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkQUtleTsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYWRkQUtl
eSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9iamVjdFN0b3Jl
ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSh0ZXN0RGF0
YVtuZXh0VG9PcGVuXS5uYW1lKTsiKTsKLSAgICBrZXkgPSBldmFsQW5kTG9nKCJrZXkgPSB0ZXN0
RGF0YVtuZXh0VG9PcGVuXS5uYW1lIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVl
c3QgPSBvYmplY3RTdG9yZS5hZGQoa2V5LCBrZXkpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gY2xvc2VEYXRhYmFzZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY2xvc2VEYXRhYmFzZSgpCi17Ci0gICAgZXZhbEFuZExv
ZygiZGIuY2xvc2UoKSIpOwotICAgIGRlYnVnKCIiKTsKLSAgICBpZiAoKytuZXh0VG9PcGVuIDwg
dGVzdERhdGEubGVuZ3RoKSB7Ci0gICAgICAgIG9wZW5OZXh0RGF0YWJhc2UoKTsKLSAgICB9IGVs
c2UgewotICAgICAgICBuZXh0VG9PcGVuID0gMDsKLSAgICAgICAgdmVyaWZ5TmV4dERhdGFiYXNl
KCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB2ZXJpZnlOZXh0RGF0YWJhc2UoKQotewotICAgIGRl
YnVnKCJyZW9wZW5pbmcgYSBkYXRhYmFzZSBuYW1lZCAiICsgdGVzdERhdGFbbmV4dFRvT3Blbl0u
ZGVzY3JpcHRpb24pOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbih0
ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1lLCB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5kZXNjcmlwdGlv
bikiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzMjsKLX0KLQotZnVuY3Rpb24gb3BlblN1
Y2Nlc3MyKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dCIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbign
MScpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0g
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRBS2V5OwotfQotCi1mdW5jdGlvbiBnZXRBS2V5KCkK
LXsKLSAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIp
OwotICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSB0cmFucy5vYmpl
Y3RTdG9yZSh0ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1lKTsiKTsKLSAgICBrZXkgPSBldmFsQW5k
TG9nKCJrZXkgPSB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1lIik7Ci0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBvcGVuQ3Vyc29yU3VjY2VzczsKLX0KLQotZnVuY3Rpb24gb3BlbkN1cnNvclN1Y2Nl
c3MoKQotewotICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQ7Iik7Ci0gICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAidGVzdERhdGFbbmV4dFRvT3Bl
bl0ubmFtZSIpOwotICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAidGVzdERhdGFbbmV4dFRv
T3Blbl0ubmFtZSIpOwotICAgIGlmICgrK25leHRUb09wZW4gPCB0ZXN0RGF0YS5sZW5ndGgpIHsK
LSAgICAgICAgZGVidWcoIiIpOwotICAgICAgICB2ZXJpZnlOZXh0RGF0YWJhc2UoKTsKLSAgICB9
IGVsc2UgewotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9Ci19Ci0KLQotdGVzdCgpOwot
Ci08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb2RkLXN0cmluZ3MuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9vcGVuLWNsb3NlLXZlcnNpb24uaHRtbCBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL29wZW4tY2xvc2UtdmVyc2lvbi5odG1sCmluZGV4IDZjMTRmZTEzYmZk
NzIwNTYzZTM4YzY5YzAxMjk5NDY1ZTAyMDk2MDkuLjI5ZDNhZjNjZTczYWY5NTdiMzM2NTY2OTg1
MTQ0ODlkZjFiMjllM2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L29wZW4tY2xvc2UtdmVyc2lvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL29wZW4tY2xvc2UtdmVyc2lvbi5odG1sCkBAIC00LDI4OSArNCw3IEBACiA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3Jp
cHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IGludGVybGVhdmVkIG9wZW4vY2xvc2Uvc2V0VmVyc2lv
biBjYWxscyBpbiB2YXJpb3VzIHBlcm11dGF0aW9ucyIpOwotCi1mdW5jdGlvbiBDb25uZWN0aW9u
KGlkKSB7Ci0gICAgaWQgPSBTdHJpbmcoaWQpOwotICAgIHZhciB0aGF0ID0gdGhpczsKLSAgICB0
aGlzLm9wZW4gPSBmdW5jdGlvbihvcHRzKSB7Ci0gICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFs
QW5kTG9nKCInIiArIGlkICsgIi5vcGVuJyIpKTsKLSAgICAgICAgdmFyIHJlcSA9IGluZGV4ZWRE
Qi5vcGVuKHNlbGYuZGJuYW1lKTsKLSAgICAgICAgcmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLSAgICAgICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7Ci0gICAg
ICAgICAgICB0aGF0LmhhbmRsZSA9IGUudGFyZ2V0LnJlc3VsdDsKLSAgICAgICAgICAgIHNlbGYu
c3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5vcGVuLm9uc3VjY2VzcyciKSk7Ci0g
ICAgICAgICAgICB0aGF0LmhhbmRsZS5vbnZlcnNpb25jaGFuZ2UgPSBmdW5jdGlvbihlKSB7Ci0g
ICAgICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLm9u
dmVyc2lvbmNoYW5nZSciKSk7Ci0gICAgICAgICAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5vbnZl
cnNpb24pIHsgb3B0cy5vbnZlcnNpb24uY2FsbCh0aGF0KTsgfQotICAgICAgICAgICAgfTsKLSAg
ICAgICAgICAgIGlmIChvcHRzICYmIG9wdHMub25zdWNjZXNzKSB7IG9wdHMub25zdWNjZXNzLmNh
bGwodGhhdCk7IH0KLSAgICAgICAgfTsKLSAgICB9OwotCi0gICAgdGhpcy5jbG9zZSA9IGZ1bmN0
aW9uKCkgewotICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIu
Y2xvc2UnIikpOwotICAgICAgICB0aGlzLmhhbmRsZS5jbG9zZSgpOwotICAgIH07Ci0KLSAgICB0
aGlzLnNldFZlcnNpb24gPSBmdW5jdGlvbihvcHRzKSB7Ci0gICAgICAgIHNlbGYuc3RlcHMucHVz
aChldmFsQW5kTG9nKCInIiArIGlkICsgIi5zZXRWZXJzaW9uJyIpKTsKLSAgICAgICAgdmFyIHJl
cSA9IHRoaXMuaGFuZGxlLnNldFZlcnNpb24oU3RyaW5nKHNlbGYudmVyKyspKTsKLSAgICAgICAg
cmVxLm9uYWJvcnQgPSBmdW5jdGlvbiAoZSkgewotICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNo
KGV2YWxBbmRMb2coIiciICsgaWQgKyAiLnNldFZlcnNpb24ub25hYm9ydCciKSk7Ci0gICAgICAg
ICAgICBpZiAob3B0cyAmJiBvcHRzLm9uYWJvcnQpIHsgb3B0cy5vbmFib3J0LmNhbGwodGhhdCk7
IH0KLSAgICAgICAgfTsKLSAgICAgICAgcmVxLm9uYmxvY2tlZCA9IGZ1bmN0aW9uIChlKSB7Ci0g
ICAgICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIuc2V0VmVy
c2lvbi5vbmJsb2NrZWQnIikpOwotICAgICAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5vbmJsb2Nr
ZWQpIHsgb3B0cy5vbmJsb2NrZWQuY2FsbCh0aGF0KTsgfQotICAgICAgICB9OwotICAgICAgICBy
ZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAgICAgIHNlbGYuc3RlcHMucHVz
aChldmFsQW5kTG9nKCInIiArIGlkICsgIi5zZXRWZXJzaW9uLm9uc3VjY2VzcyciKSk7Ci0gICAg
ICAgICAgICBpZiAodGhhdC5oYW5kbGUub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucygidGVzdC1z
dG9yZSIgKyBzZWxmLnZlcikpIHsKLSAgICAgICAgICAgICAgICB0aGF0LmhhbmRsZS5kZWxldGVP
YmplY3RTdG9yZSgidGVzdC1zdG9yZSIgKyBzZWxmLnZlcik7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB2YXIgc3RvcmUgPSB0aGF0LmhhbmRsZS5jcmVhdGVPYmplY3RTdG9yZSgidGVzdC1z
dG9yZSIgKyBzZWxmLnZlcik7Ci0gICAgICAgICAgICB2YXIgY291bnQgPSAwOwotICAgICAgICAg
ICAgZG9fYXN5bmNfcHV0cygpOyAvLyBLZWVwIHRoaXMgdHJhbnNhY3Rpb24gcnVubmluZyBmb3Ig
YSB3aGlsZQotICAgICAgICAgICAgZnVuY3Rpb24gZG9fYXN5bmNfcHV0cygpIHsKLSAgICAgICAg
ICAgICAgICB2YXIgcmVxID0gc3RvcmUucHV0KGNvdW50LCBjb3VudCk7Ci0gICAgICAgICAgICAg
ICAgcmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgICAgICAg
ICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KCsrY291bnQgPCAxMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgZG9fYXN5bmNfcHV0cygp
OwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAg
c2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLnNldFZlcnNpb24udHJhbnNh
Y3Rpb24tY29tcGxldGUnIikpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wdHMgJiYg
b3B0cy5vbnN1Y2Nlc3MpIHsgb3B0cy5vbnN1Y2Nlc3MuY2FsbCh0aGF0KTsgfQotICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fTsKLSAgICAgICAgcmVxLm9uZXJyb3IgPSBmdW5jdGlvbiAoZSkgewotICAgICAgICAgICAgc2Vs
Zi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLnNldFZlcnNpb24ub25lcnJvcici
KSk7Ci0gICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9uZXJyb3IpIHsgb3B0cy5vbmVycm9y
LmNhbGwodGhhdCk7IH0KLSAgICAgICAgfTsKLSAgICB9OwotfQotCi0vLyBydW4gYSBzZXJpZXMg
b2Ygc3RlcHMgdGhhdCB0YWtlIGEgY29udGludWF0aW9uIGZ1bmN0aW9uCi1mdW5jdGlvbiBydW5T
dGVwcyhjb21tYW5kcykgewotICAgIGlmIChjb21tYW5kcy5sZW5ndGgpIHsKLSAgICAgICAgdmFy
IGNvbW1hbmQgPSBjb21tYW5kcy5zaGlmdCgpOwotICAgICAgICBjb21tYW5kKGZ1bmN0aW9uKCkg
eyBydW5TdGVwcyhjb21tYW5kcyk7IH0pOwotICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdCgpIHsK
LSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotICAgIHRlc3QxKCk7Ci19Ci0KLWZ1bmN0aW9u
IHRlc3QxKCkgewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiVEVTVDogc2V0VmVyc2lvbiBi
bG9ja2VkIG9uIG9wZW4gaGFuZGxlcyIpOwotICAgIGV2YWxBbmRMb2coInNlbGYuZGJuYW1lID0g
J3Rlc3QxJzsgc2VsZi52ZXIgPSAxOyBzZWxmLnN0ZXBzID0gW10iKTsKLSAgICB2YXIgaDEgPSBu
ZXcgQ29ubmVjdGlvbigiaDEiKTsKLSAgICB2YXIgaDIgPSBuZXcgQ29ubmVjdGlvbigiaDIiKTsK
LSAgICBydW5TdGVwcyhbZnVuY3Rpb24oZG9OZXh0KSB7IGgxLm9wZW4oe29uc3VjY2VzczogZG9O
ZXh0fSk7IH0sCi0gICAgICAgICBmdW5jdGlvbihkb05leHQpIHsgaDIub3Blbih7b25zdWNjZXNz
OiBkb05leHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9udmVyc2lvbjogZnVu
Y3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiICAg
IGgyIGNsb3NpbmcsIGJ1dCBub3QgaW1tZWRpYXRlbHkiKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGgyLmNsb3NlKCk7IH0sIDAp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fSk7IH0sCi0gICAgICAgICBmdW5j
dGlvbihkb05leHQpIHsgaDEuc2V0VmVyc2lvbih7b25zdWNjZXNzOiBmaW5pc2hUZXN0fSk7IH0s
Ci0gICAgICAgICBdKTsKLSAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgewotICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoInNlbGYuc3RlcHMudG9TdHJpbmcoKSIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbImgxLm9wZW4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJoMS5vcGVuLm9uc3VjY2VzcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImgyLm9wZW4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5vcGVuLm9uc3Vj
Y2VzcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24iLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5vbnZlcnNpb25jaGFuZ2UiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLm9uYmxvY2tlZCIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLmNsb3NlIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbi5vbnN1Y2Nlc3MiLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLnRyYW5zYWN0aW9uLWNvbXBsZXRlIgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udG9TdHJpbmcoKSk7Ci0gICAgICAgIHRl
c3QyKCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0MigpIHsKLSAgICBkZWJ1ZygiIik7Ci0g
ICAgZGVidWcoIlRFU1Q6IHNldFZlcnNpb24gbm90IGJsb2NrZWQgaWYgaGFuZGxlIGNsb3NlZCBp
bW1lZGlhdGVseSIpOwotICAgIGV2YWxBbmRMb2coInNlbGYuZGJuYW1lID0gJ3Rlc3QyJzsgc2Vs
Zi52ZXIgPSAxOyBzZWxmLnN0ZXBzID0gW10iKTsKLSAgICB2YXIgaDEgPSBuZXcgQ29ubmVjdGlv
bigiaDEiKTsKLSAgICB2YXIgaDIgPSBuZXcgQ29ubmVjdGlvbigiaDIiKTsKLSAgICBydW5TdGVw
cyhbZnVuY3Rpb24oZG9OZXh0KSB7IGgxLm9wZW4oe29uc3VjY2VzczogZG9OZXh0fSk7IH0sCi0g
ICAgICAgICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBoMi5vcGVuKHtvbnN1Y2Nlc3M6IGRvTmV4
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9udmVyc2lvbjog
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGVidWcoIiAgICBoMiBjbG9zaW5nIGltbWVkaWF0ZWx5Iik7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaDIuY2xvc2UoKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19KTsgfSwKLSAgICAgICAgICAgICAgZnVuY3Rp
b24oZG9OZXh0KSB7IGgxLnNldFZlcnNpb24oe29uc3VjY2VzczogZG9OZXh0fSk7IH0sCi0gICAg
ICAgICAgICAgIGZpbmlzaFRlc3QKLSAgICAgICAgICAgICAgXSk7Ci0KLSAgICBmdW5jdGlvbiBm
aW5pc2hUZXN0KCkgewotICAgICAgICBkZWJ1ZygiTk9URTogV2lsbCBGQUlMIHdpdGggZXh0cmEg
Ym9ndXMgaDEuc2V0VmVyc2lvbi5vbmJsb2NrZWQgc3RlcDsgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTcxMTMwIik7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
Zygic2VsZi5zdGVwcy50b1N0cmluZygpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFsiaDEub3BlbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLm9wZW4ub25z
dWNjZXNzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIub3BlbiIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLm9wZW4ub25zdWNjZXNzIiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbiIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImgyLm9udmVyc2lvbmNoYW5nZSIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImgyLmNsb3NlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
aDEuc2V0VmVyc2lvbi5vbnN1Y2Nlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJoMS5zZXRWZXJzaW9uLnRyYW5zYWN0aW9uLWNvbXBsZXRlIgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF0udG9TdHJpbmcoKSk7Ci0gICAgICAgIHRlc3QzKCk7Ci0gICAgfQotfQot
Ci1mdW5jdGlvbiB0ZXN0MygpIHsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIlRFU1Q6IG9w
ZW4gYW5kIHNldFZlcnNpb24gYmxvY2tlZCBpZiBhIFZFUlNJT05fQ0hBTkdFIHRyYW5zYWN0aW9u
IGlzIHJ1bm5pbmcgLSBjbG9zZSB3aGVuIGJsb2NrZWQiKTsKLSAgICBldmFsQW5kTG9nKCJzZWxm
LmRibmFtZSA9ICd0ZXN0Myc7IHNlbGYudmVyID0gMTsgc2VsZi5zdGVwcyA9IFtdIik7Ci0gICAg
dmFyIGgxID0gbmV3IENvbm5lY3Rpb24oImgxIik7Ci0gICAgdmFyIGgyID0gbmV3IENvbm5lY3Rp
b24oImgyIik7Ci0gICAgdmFyIGgzID0gbmV3IENvbm5lY3Rpb24oImgzIik7Ci0gICAgcnVuU3Rl
cHMoW2Z1bmN0aW9uKGRvTmV4dCkgeyBoMS5vcGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dH0pOyB9LAot
ICAgICAgICAgICAgICBmdW5jdGlvbihkb05leHQpIHsgaDIub3Blbih7b25zdWNjZXNzOiBkb05l
eHR9KTsgfSwKLSAgICAgICAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGgxLnNldFZlcnNpb24o
KTsgZG9OZXh0KCk7IH0sCi0gICAgICAgICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBoMi5zZXRW
ZXJzaW9uKHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9uYmxvY2tlZDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoIiAgICBoMiBibG9ja2VkIHNvIGNsb3Np
bmciKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBoMi5jbG9zZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRvTmV4dCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfX0pOyB9LAotICAgICAgICAgICAgICBmdW5jdGlvbigpIHsg
aDMub3Blbih7b25zdWNjZXNzOiBmaW5pc2hUZXN0fSk7fQotICAgICAgICAgICAgICBdKTsKLQot
ICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
Zygic2VsZi5zdGVwcy50b1N0cmluZygpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFsiaDEub3BlbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLm9wZW4ub25z
dWNjZXNzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIub3BlbiIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLm9wZW4ub25zdWNjZXNzIiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbiIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImgyLnNldFZlcnNpb24iLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJoMi5vbnZlcnNpb25jaGFuZ2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJoMS5zZXRWZXJzaW9uLm9uYmxvY2tlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImgxLm9udmVyc2lvbmNoYW5nZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImgyLnNldFZlcnNpb24ub25ibG9ja2VkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiaDIuY2xvc2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMy5vcGVu
IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIuc2V0VmVyc2lvbi5vbmVycm9y
IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbi5vbnN1Y2Nl
c3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLnRyYW5z
YWN0aW9uLWNvbXBsZXRlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDMub3Bl
bi5vbnN1Y2Nlc3MiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS50b1N0cmluZygp
KTsKLSAgICAgICAgdGVzdDQoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3Q0KCkgewotICAg
IGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiVEVTVDogb3BlbiBhbmQgc2V0VmVyc2lvbiBibG9ja2Vk
IGlmIGEgVkVSU0lPTl9DSEFOR0UgdHJhbnNhY3Rpb24gaXMgcnVubmluZyAtIGp1c3QgY2xvc2Ui
KTsKLSAgICBldmFsQW5kTG9nKCJzZWxmLmRibmFtZSA9ICd0ZXN0NCc7IHNlbGYudmVyID0gMTsg
c2VsZi5zdGVwcyA9IFtdIik7Ci0gICAgdmFyIGgxID0gbmV3IENvbm5lY3Rpb24oImgxIik7Ci0g
ICAgdmFyIGgyID0gbmV3IENvbm5lY3Rpb24oImgyIik7Ci0gICAgdmFyIGgzID0gbmV3IENvbm5l
Y3Rpb24oImgzIik7Ci0gICAgcnVuU3RlcHMoW2Z1bmN0aW9uKGRvTmV4dCkgeyBoMS5vcGVuKHtv
bnN1Y2Nlc3M6IGRvTmV4dH0pOyB9LAotICAgICAgICAgICAgICBmdW5jdGlvbihkb05leHQpIHsg
aDIub3Blbih7b25zdWNjZXNzOiBkb05leHR9KTsgfSwKLSAgICAgICAgICAgICAgZnVuY3Rpb24o
ZG9OZXh0KSB7IGgxLnNldFZlcnNpb24oKTsgZG9OZXh0KCk7IH0sCi0gICAgICAgICAgICAgIGZ1
bmN0aW9uKGRvTmV4dCkgeyBoMy5vcGVuKHtvbnN1Y2Nlc3M6IGZpbmlzaFRlc3R9KTsgZG9OZXh0
KCk7IH0sCi0gICAgICAgICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBoMi5jbG9zZSgpOyB9LAot
ICAgICAgICAgICAgICBdKTsKLQotICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7Ci0gICAgICAg
IGRlYnVnKCJOT1RFOiBXaWxsIEZBSUwgd2l0aCBleHRyYSBib2d1cyBoMS5zZXRWZXJzaW9uLm9u
YmxvY2tlZCBzdGVwOyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEx
MzAiKTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzZWxmLnN0ZXBzLnRvU3RyaW5n
KCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJoMS5vcGVuIiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiaDEub3Blbi5vbnN1Y2Nlc3MiLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJoMi5vcGVuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiaDIub3Blbi5vbnN1Y2Nlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJoMS5zZXRWZXJzaW9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDMub3Bl
biIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLmNsb3NlIiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbi5vbnN1Y2Nlc3MiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLnRyYW5zYWN0aW9uLWNvbXBs
ZXRlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDMub3Blbi5vbnN1Y2Nlc3Mi
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS50b1N0cmluZygpKTsKLSAgICAgICAg
dGVzdDUoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3Q1KCkgewotICAgIGRlYnVnKCIiKTsK
LSAgICBkZWJ1ZygiVEVTVDogb3BlbiBibG9ja2VkIGlmIGEgVkVSU0lPTl9DSEFOR0UgdHJhbnNh
Y3Rpb24gaXMgcnVubmluZyIpOwotICAgIGV2YWxBbmRMb2coInNlbGYuZGJuYW1lID0gJ3Rlc3Q1
Jzsgc2VsZi52ZXIgPSAxOyBzZWxmLnN0ZXBzID0gW10iKTsKLSAgICB2YXIgaDEgPSBuZXcgQ29u
bmVjdGlvbigiaDEiKTsKLSAgICB2YXIgaDIgPSBuZXcgQ29ubmVjdGlvbigiaDIiKTsKLQotICAg
IHJ1blN0ZXBzKFtmdW5jdGlvbihkb05leHQpIHsgaDEub3Blbih7b25zdWNjZXNzOiBkb05leHR9
KTsgfSwKLSAgICAgICAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGgxLnNldFZlcnNpb24oKTsg
ZG9OZXh0KCk7IH0sCi0gICAgICAgICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBoMi5vcGVuKHtv
bnN1Y2Nlc3M6IGZpbmlzaFRlc3R9KTsgfQotICAgICAgICAgICAgICBdKTsKLQotICAgIGZ1bmN0
aW9uIGZpbmlzaFRlc3QoKSB7Ci0gICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic2VsZi5z
dGVwcy50b1N0cmluZygpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiaDEub3Bl
biIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLm9wZW4ub25zdWNjZXNzIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbiIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImgyLm9wZW4iLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJoMS5zZXRWZXJzaW9uLm9uc3VjY2VzcyIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImgxLnNldFZlcnNpb24udHJhbnNhY3Rpb24tY29tcGxldGUiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5vcGVuLm9uc3VjY2VzcyIKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBdLnRvU3RyaW5nKCkpOwotICAgICAgICB0ZXN0NigpOwotICAg
IH0KLX0KLQotCi1mdW5jdGlvbiB0ZXN0NigpIHsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWco
IlRFU1Q6IHR3byBzZXRWZXJzaW9ucyBmcm9tIHRoZSBzYW1lIGNvbm5lY3Rpb24iKTsKLSAgICBl
dmFsQW5kTG9nKCJzZWxmLmRibmFtZSA9ICd0ZXN0Nic7IHNlbGYudmVyID0gMTsgc2VsZi5zdGVw
cyA9IFtdIik7Ci0gICAgdmFyIGgxID0gbmV3IENvbm5lY3Rpb24oImgxIik7Ci0KLSAgICBydW5T
dGVwcyhbZnVuY3Rpb24oZG9OZXh0KSB7IGgxLm9wZW4oe29uc3VjY2VzczogZG9OZXh0fSk7IH0s
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICBmdW5jdGlv
bihkb05leHQpIHsgaDEuc2V0VmVyc2lvbih7b25zdWNjZXNzOiBoYWxmRG9uZX0pOyAKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGgxLnNldFZlcnNpb24oe29uc3VjY2VzczogaGFs
ZkRvbmV9KTsgfQotICAgICAgICAgICAgICBdKTsKLQotICAgIHZhciBjb3VudGVyID0gMDsKLSAg
ICBmdW5jdGlvbiBoYWxmRG9uZSgpIHsKLSAgICAgICAgY291bnRlcisrOwotICAgICAgICBpZiAo
Y291bnRlciA8IDIpIHsKLSAgICAgICAgICAgIGRlYnVnKCdoYWxmIGRvbmUnKTsKLSAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKLSAgICAgICAgfQotICAgIH0gIAot
Ci0gICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJzZWxmLnN0ZXBzLnRvU3RyaW5nKCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgWyJoMS5vcGVuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEub3Blbi5v
bnN1Y2Nlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9u
IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbiIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24ub25zdWNjZXNzIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbi50cmFuc2FjdGlvbi1j
b21wbGV0ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24u
b25zdWNjZXNzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lv
bi50cmFuc2FjdGlvbi1jb21wbGV0ZSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBd
LnRvU3RyaW5nKCkpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9Ci19Ci0KLXRlc3Qo
KTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL29wZW4tY2xvc2UtdmVyc2lv
bi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4tY3Vyc29yLmh0bWwgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVuLWN1cnNvci5odG1sCmluZGV4IDcxOGZlMWJiYmE0NDQx
Mzk3NGY1YmE1OWRjMjI1ZmQ2Mzk5OTNhOWYuLmU0ZWIxODJiODA1ZDkwYmVlOTUwZmZiMzJhOWEz
NjY0YWRjOWRiNjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29w
ZW4tY3Vyc29yLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi1j
dXJzb3IuaHRtbApAQCAtNCw5MCArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJl
ZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9u
KCJUZXN0IEluZGV4ZWREQidzIG9wZW5DdXJzb3IuIik7Ci0KLWZ1bmN0aW9uIGVtcHR5Q3Vyc29y
U3VjY2VzcygpCi17Ci0gICAgZGVidWcoIkVtcHR5IGN1cnNvciBvcGVuZWQgc3VjY2Vzc2Z1bGx5
LiIpCi0gICAgLy8gRklYTUU6IGNoZWNrIHRoYXQgd2UgY2FuIGl0ZXJhdGUgdGhlIGN1cnNvci4K
LSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gb3BlbkVtcHR5Q3Vyc29yKCkKLXsK
LSAgICBkZWJ1ZygiT3BlbmluZyBhbiBlbXB0eSBjdXJzb3IuIik7Ci0gICAga2V5UmFuZ2UgPSBJ
REJLZXlSYW5nZS5sb3dlckJvdW5kKCJJbmV4aXN0ZW50S2V5Iik7Ci0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coIm9iamVjdFN0b3JlLm9wZW5DdXJzb3Ioa2V5UmFuZ2UpIik7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBlbXB0eUN1cnNvclN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGN1cnNvclN1Y2Nlc3MoKQot
ewotICAgIGRlYnVnKCJDdXJzb3Igb3BlbmVkIHN1Y2Nlc3NmdWxseS4iKQotICAgIC8vIEZJWE1F
OiBjaGVjayB0aGF0IHdlIGNhbiBpdGVyYXRlIHRoZSBjdXJzb3IuCi0gICAgc2hvdWxkQmUoImV2
ZW50LnRhcmdldC5yZXN1bHQuZGlyZWN0aW9uIiwgIjAiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQu
dGFyZ2V0LnJlc3VsdC5rZXkiLCAiJ215S2V5JyIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJn
ZXQucmVzdWx0LnZhbHVlIiwgIidteVZhbHVlJyIpOwotICAgIGRlYnVnKCIiKTsKLSAgICB0cnkg
ewotICAgICAgICBkZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIC5jb250aW51ZSh7
fSkuIik7Ci0gICAgICAgIGV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoe30pOwotICAgICAg
ICB0ZXN0RmFpbGVkKCJObyBleGNlcHRpb24gdGhyb3duIik7Ci0gICAgfSBjYXRjaCAoZSkgewot
ICAgICAgICB0ZXN0UGFzc2VkKCJDYXVnaHQgZXhjZXB0aW9uOiAiICsgZS50b1N0cmluZygpKTsK
LSAgICB9Ci0gICAgZGVidWcoIiIpOwotICAgIG9wZW5FbXB0eUN1cnNvcigpOwotfQotCi1mdW5j
dGlvbiBvcGVuQ3Vyc29yKCkKLXsKLSAgICBkZWJ1ZygiT3BlbmluZyBjdXJzb3IiKTsKLSAgICBr
ZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQoIm15S2V5Iik7Ci0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5zb3VyY2Uub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvclN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb25T
dWNjZXNzKCkKLXsKLSAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKLSAgICBzZWxm
LnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAg
c2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4
cGVjdGVkQWJvcnRDYWxsYmFjazsKLQotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Ci0K
LSAgICB2YXIgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKCd0ZXN0JykiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0
U3RvcmUuYWRkKCdteVZhbHVlJywgJ215S2V5JykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IG9wZW5DdXJzb3I7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0gCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgdmFyIGRiID0gZXZhbEFu
ZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gCi0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IHNldFZlcnNpb25TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotIAotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVu
ZG9yUHJlZml4ZXMoKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4o
J29wZW4tY3Vyc29yJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwot
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi10ZXN0
KCk7Ci0KLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL29wZW4tY3Vyc29yLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi1kdXJpbmctdHJhbnNhY3Rpb24uaHRtbCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4tZHVyaW5nLXRyYW5zYWN0aW9uLmh0bWwK
aW5kZXggY2JkZDM1Y2RjNWE2NzQ2MjQwOWQ1ZWJlMmY4MTE0ZjhkNjAxZWFjMC4uY2Q1ZjhmNmRj
MzQ4NjkzN2E5YjRhZjgxN2Y0NDUxMjRhMDhlNTlmNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvb3Blbi1kdXJpbmctdHJhbnNhY3Rpb24uaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVuLWR1cmluZy10cmFuc2FjdGlvbi5odG1sCkBA
IC0xLDg3ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJv
ZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgb3BlbmluZyBkYXRh
YmFzZSBjb25uZWN0aW9ucyBkdXJpbmcgdHJhbnNhY3Rpb25zIik7Ci0KLWZ1bmN0aW9uIHRlc3Qo
KQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgcHJlcGFyZURhdGFiYXNlKCk7
Ci19Ci0KLWZ1bmN0aW9uIHByZXBhcmVEYXRhYmFzZSgpCi17Ci0gICAgZGVidWcoInByZXBhcmUg
ZGF0YWJhc2UiKTsKLSAgICBldmFsQW5kTG9nKCJvcGVucmVxMSA9IGluZGV4ZWREQi5vcGVuKCdk
YjEnKSIpOwotICAgIG9wZW5yZXExLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LSAgICBvcGVucmVxMS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZSkgewotICAgICAgICBldmFsQW5k
TG9nKCJkYmMxID0gb3BlbnJlcTEucmVzdWx0Iik7Ci0gICAgICAgIGV2YWxBbmRMb2coInNldHZl
cnJlcSA9IGRiYzEuc2V0VmVyc2lvbignMS4wJykiKTsKLSAgICAgICAgc2V0dmVycmVxLm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICAgICAgc2V0dmVycmVxLm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uIChlKSB7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJkYmMxLmNyZWF0ZU9i
amVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotICAgICAgICAgICAgc2V0dmVycmVxLnJlc3VsdC5v
bmNvbXBsZXRlID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAgICAgICAgICBkZWJ1ZygiZGF0YWJh
c2UgcHJlcGFyYXRpb24gY29tcGxldGUiKTsKLSAgICAgICAgICAgICAgICBkZWJ1ZygiIik7Ci0g
ICAgICAgICAgICAgICAgc3RhcnRUcmFuc2FjdGlvbigpOwotICAgICAgICAgICAgfTsKLSAgICAg
ICAgfTsKLSAgICB9OwotfQotCi1mdW5jdGlvbiBzdGFydFRyYW5zYWN0aW9uKCkKLXsKLSAgICBk
ZWJ1Zygic3RhcnRpbmcgdHJhbnNhY3Rpb24iKTsKLSAgICBldmFsQW5kTG9nKCJzdGF0ZSA9ICdz
dGFydGluZyciKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiYzEudHJhbnNhY3Rpb24oJ3N0
b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFuZExvZygi
dHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpLnB1dCgndmFsdWUnLCAna2V5JykiKTsKLSAg
ICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBm
dW5jdGlvbiAoZSkgewotICAgICAgICBkZWJ1ZygidHJhbnNhY3Rpb24gY29tcGxldGUiKTsKLSAg
ICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzdGF0ZSIsICJvcGVuM2NvbXBsZXRlIik7Ci0g
ICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH07Ci0KLSAgICBkZWJ1ZygiIik7Ci0gICAgdHJ5
T3BlbnMoKTsKLX0KLQotCi1mdW5jdGlvbiB0cnlPcGVucygpCi17Ci0gICAgZGVidWcoInRyeWlu
ZyB0byBvcGVuIHRoZSBzYW1lIGRhdGFiYXNlIik7Ci0gICAgZXZhbEFuZExvZygib3BlbnJlcTIg
PSBpbmRleGVkREIub3BlbignZGIxJykiKTsKLSAgICBvcGVucmVxMi5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgb3BlbnJlcTIub25zdWNjZXNzID0gZnVuY3Rpb24gKGUp
IHsKLSAgICAgICAgZGVidWcoIm9wZW5yZXEyLm9uc3VjY2VzcyIpOwotICAgICAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoInN0YXRlIiwgInN0YXJ0aW5nIik7Ci0gICAgICAgIGV2YWxBbmRMb2co
InN0YXRlID0gJ29wZW4yY29tcGxldGUnIik7Ci0gICAgICAgIGRlYnVnKCIiKTsKLSAgICB9Ci0g
ICAgZGVidWcoIiIpOwotCi0gICAgZGVidWcoInRyeWluZyB0byBvcGVuIGEgZGlmZmVyZW50IGRh
dGFiYXNlIik7Ci0gICAgZXZhbEFuZExvZygib3BlbnJlcTMgPSBpbmRleGVkREIub3BlbignZGIy
JykiKTsKLSAgICBvcGVucmVxMy5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0g
ICAgb3BlbnJlcTMub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAgZGVidWcoIm9w
ZW5yZXEzLm9uc3VjY2VzcyIpOwotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInN0YXRl
IiwgIm9wZW4yY29tcGxldGUiKTsKLSAgICAgICAgZXZhbEFuZExvZygic3RhdGUgPSAnb3BlbjNj
b21wbGV0ZSciKTsKLSAgICAgICAgZGVidWcoIiIpOwotICAgIH0KLSAgICBkZWJ1ZygiIik7Ci19
Ci0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL29wZW4tZHVy
aW5nLXRyYW5zYWN0aW9uLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcHJlZmV0Y2gtYnVnZml4
LTEwODA3MS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcHJlZmV0Y2gtYnVn
Zml4LTEwODA3MS5odG1sCmluZGV4IGVkYTI5OTc3YzVlNDQ2ZmNkZTZkZjQ1YTlmNmU1YTM1ZDA2
MGFlMDguLjg0YzdhNjU1N2VjYTJlZWE3YzRlZmQ3MjIyNGUwOTJiNzcwOTc5YzkgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ByZWZldGNoLWJ1Z2ZpeC0xMDgwNzEu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9wcmVmZXRjaC1idWdmaXgt
MTA4MDcxLmh0bWwKQEAgLTQsMTIzICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hh
cmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3JpcHRp
b24oIlRlc3QgZm9yIGNyYnVnLmNvbS8xMDgwNzEiKTsKLQotLy8gSGF2ZSB0byBiZSBhdCBsZWFz
dCA1IGhlcmU6IDEgaW5pdGlhbCwgMyBjb250aW51ZXMgdG8gdHJpZ2dlciBwcmVmZXRjaCBhbmQg
MQotLy8gcG9zdC1hYm9ydCBvdXRzdGFuZGluZyBjb250aW51ZS4KLXZhciBuYW1lcyA9IFsnQWxw
aGEnLCAnQnJhdm8nLCAnQ2hhcmxpZScsICdEZWx0YScsICdFY2hvJ107Ci0KLWZ1bmN0aW9uIHRl
c3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgREJOQU1FID0gJ3ByZWZl
dGNoLWJ1Z2ZpeC0xMDgwNzEnOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
ZGVsZXRlRGF0YWJhc2UoREJOQU1FKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2Nr
ZWRDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7Ci0gICAg
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihEQk5BTUUpIik7Ci0gICAg
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIG9w
ZW5TdWNjZXNzKCkKLXsKLSAgICB2YXIgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCdu
ZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2Vz
czsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQot
ZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJzZXRWZXJzaW9uU3Vj
Y2VzcygpOiIpOwotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0gICAg
dHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotICAgIHRyYW5zLm9uY29t
cGxldGUgPSBpdGVyYXRlQW5kRGVsZXRlRmlyc3RFbGVtZW50OwotCi0gICAgdmFyIG9iamVjdFN0
b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3Rv
cmUnLCB7a2V5UGF0aDogJ2lkJ30pIik7Ci0gICAgcmVzZXRPYmplY3RTdG9yZSgpOwotfQotCi1m
dW5jdGlvbiByZXNldE9iamVjdFN0b3JlKCkKLXsKLSAgICBkZWJ1ZygiXG5yZXNldE9iamVjdFN0
b3JlKCk6Iik7Ci0KLSAgICBvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScp
OwotICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmNsZWFyKCkiKTsKLSAgICBmb3IgKGkgPSAw
OyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
Im9iamVjdFN0b3JlLmFkZCh7aWQ6ICIgKyBpICsgIiwgbmFtZTogXCIiICsgbmFtZXNbaV0gKyAi
XCJ9KSIpOwotICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLSAgICB9Ci0KLSAgICBkZWJ1ZygiIik7Ci19Ci0KLWZ1bmN0aW9uIGl0ZXJhdGVBbmREZWxl
dGVGaXJzdEVsZW1lbnQoKQotewotICAgIGRlYnVnKCJpdGVyYXRlQW5kRGVsZXRlRmlyc3RFbGVt
ZW50KCk6Iik7Ci0KLSAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3Rv
cmUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICB0cmFucy5vbmFib3J0ID0g
dHJhbnNhY3Rpb25BYm9ydGVkOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQ29t
cGxldGVDYWxsYmFjazsKLQotICAgIC8vIENyZWF0ZSB0aGUgY3Vyc29yIGFuZCBpdGVyYXRlIG92
ZXIgdGhlIHdob2xlIHRoaW5nLgotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmpl
Y3RTdG9yZSgnc3RvcmUnKS5vcGVuQ3Vyc29yKCkiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
ICgpIHsKLSAgICAgICAgdmFyIGN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Ci0gICAgICAg
IGlmIChjdXJzb3IgPT0gbnVsbCkgewotICAgICAgICAgICAgcmVzZXRPYmplY3RTdG9yZSgpOwot
ICAgICAgICAgICAgcHJlZmV0Y2hBbmRBYm9ydCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0KLSAgICAgICAgZGVidWcoY3Vyc29yLnZhbHVlLmlkICsgIjogIiArIGN1cnNvci52
YWx1ZS5uYW1lKTsKLQotICAgICAgICBpZiAoY3Vyc29yLnZhbHVlLmlkID09IDApIHsKLSAgICAg
ICAgICAgIC8vIERlbGV0ZSB0aGUgZmlyc3QgZWxlbWVudCB3aGVuIHdlIHNlZSBpdC4KLSAgICAg
ICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKS5k
ZWxldGUoMCkiKTsKLSAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwotICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsg
Y3Vyc29yLmNvbnRpbnVlKCk7IH07Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjdXJz
b3IuY29udGludWUoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rpb24gcHJlZmV0Y2hB
bmRBYm9ydCgpCi17Ci0gICAgZGVidWcoInByZWZldGNoQW5kQWJvcnQoKToiKTsKLQotICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKS5vcGVuQ3Vyc29y
KCkiKTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgdmFyIGN1cnNvciA9
IGV2ZW50LnRhcmdldC5yZXN1bHQ7Ci0gICAgICAgIGRlYnVnKGN1cnNvci52YWx1ZS5pZCArICI6
ICIgKyBjdXJzb3IudmFsdWUubmFtZSk7Ci0gICAgICAgIC8vIEhhdmUgdG8gaXRlcmF0ZSB0byAz
IGluIG9yZGVyIHRvIHByZWZldGNoLCBidXQgY2FuJ3QgaXRlcmF0ZSBwYXN0IDMKLSAgICAgICAg
Ly8gc28gdGhhdCB0aGVyZSB3aWxsIGJlIGEgY29udGludWUgcmVtYWluaW5nLgotICAgICAgICBp
ZiAoY3Vyc29yLnZhbHVlLmlkID09IDMpIHsKLSAgICAgICAgICAgIGV2YWxBbmRMb2coInRyYW5z
LmFib3J0KCkiKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGN1cnNvci5jb250aW51
ZSgpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0cmFuc2FjdGlvbkFib3J0ZWQo
KQotewotICAgIHRlc3RQYXNzZWQoIlRyYW5zYWN0aW9uIGFib3J0ZWQgYXMgZXhwZWN0ZWQiKTsK
LSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvcHJlZmV0Y2gtYnVnZml4LTEwODA3MS5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3F1ZXVlZC1jb21tYW5kcy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcXVldWVkLWNvbW1hbmRzLmh0bWwKaW5kZXggMmM0Yjk5ZmViNTg4NWUxYzE0OTE1ZGU0NDYz
ZGQzMWM4ZDhlNDhlNC4uNTc4ZGNkZWEwOGFlNTY5MmEyNzQzZWIwYjQ5YzQ0MjZjYmRmN2JhMSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcXVldWVkLWNvbW1hbmRz
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcXVldWVkLWNvbW1hbmRz
Lmh0bWwKQEAgLTQsNjggKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMi
Pjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigiVmVy
aWZ5IHRoYXQgcXVldWluZyB1cCBzZXZlcmFsIGNvbW1hbmRzIHdvcmtzIChhbmQgdGhleSBhbGwg
ZmlyZSkuIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVz
KCk7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdxdWV1ZWQtY29t
bWFuZHMnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvbjsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc2V0
VmVyc2lvbigpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVy
c2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24g
ZGVsZXRlRXhpc3RpbmcoKQotewotICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOwot
ICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7Ci0gICAgdHJhbnMub25hYm9y
dCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVz
KGRiKTsKLQotICAgIHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9y
ZSgnc3RvcmVOYW1lJykiKTsKLSAgICBzZWxmLmluZGV4T2JqZWN0ID0gZXZhbEFuZExvZygic3Rv
cmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZScsICd4JykiKTsKLQotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7Ci0gICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgdmVyaWZ5QWRkKDApOyB9OwotICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotCi0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlMicsIHk6ICd6enoyJ30sICdrZXkyJyki
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeyB2ZXJpZnlBZGQoMSk7IH07
Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0KLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUucHV0KHt4OiAndmFsdTInLCB5OiAnenoyJ30sICdr
eTInKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7IHZlcmlmeUFkZCgy
KTsgfTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLQot
ICAgIHNlbGYuYWRkQ291bnQgPSAwOwotfQotCi1mdW5jdGlvbiB2ZXJpZnlBZGQoZXhwZWN0ZWQp
Ci17Ci0gICAgc2hvdWxkQmUoIiIgKyBhZGRDb3VudCsrLCAiIiArIGV4cGVjdGVkKTsKLQotICAg
IGlmIChhZGRDb3VudCA9PSAzKQotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICBpZiAoYWRk
Q291bnQgPiAzKQotICAgICAgICB0ZXN0RmFpbGVkKCJVbmV4cGVjdGVkIGNhbGwgdG8gdmVyaWZ5
QWRkISIpOwotfQotCi10ZXN0KCk7Ci0KLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3F1ZXVlZC1jb21tYW5kcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3JlYWRvbmx5LXBy
b3BlcnRpZXMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3JlYWRvbmx5LXBy
b3BlcnRpZXMuaHRtbAppbmRleCBlMmQ3ZGI1NzY4OWE0NDdhY2FlMTYwNGVlNjFiNzMwMDYyNGFl
YjViLi5kNDhiYjAwOGYyZGYxOTU4ZjEyNzY3YzY5ZGM1YWNkNmU2NzM2ZTc4IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZWFkb25seS1wcm9wZXJ0aWVzLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVhZG9ubHktcHJvcGVydGllcy5o
dG1sCkBAIC0xLDU4ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+CiA8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFk
PgogPGJvZHk+Ci08c2NyaXB0PgotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIHJlYWRvbmx5
IHByb3BlcnRpZXMiKTsKLQotZnVuY3Rpb24gc2V0UmVhZG9ubHlQcm9wZXJ0eShwcm9wZXJ0eSwg
dmFsdWUpCi17Ci0gICAgb2xkVmFsdWUgPSBldmFsKHByb3BlcnR5KTsKLSAgICBkZWJ1ZygidHJ5
aW5nIHRvIHNldCByZWFkb25seSBwcm9wZXJ0eSAiICsgcHJvcGVydHkpOwotICAgIGV2YWxBbmRM
b2cocHJvcGVydHkgKyAiID0gIiArIHZhbHVlKTsKLSAgICBuZXdWYWx1ZSA9IGV2YWwocHJvcGVy
dHkpOwotICAgIGlmIChvbGRWYWx1ZSA9PSBuZXdWYWx1ZSkgewotICAgICAgICB0ZXN0UGFzc2Vk
KHByb3BlcnR5ICsgIiBpcyBzdGlsbCAiICsgb2xkVmFsdWUpOwotICAgIH0gZWxzZSB7Ci0gICAg
ICAgIHRlc3RGYWlsZWQocHJvcGVydHkgKyAiIHZhbHVlIHdhcyBjaGFuZ2VkIHRvICIgKyBuZXdW
YWx1ZSk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQ
cmVmaXhlcygpOwotCi0gICAgbmFtZSA9ICJmb28iOwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRl
c3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbihu
YW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNz
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1m
dW5jdGlvbiBvcGVuU3VjY2VzcygpCi17Ci0gICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRi
LnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5kUG9w
dWxhdGVPYmplY3RTdG9yZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSgpCi17
Ci0gICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQ7Iik7Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLSAgICBvYmplY3RT
dG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2Zv
bycpOyIpOwotICAgIHNldFJlYWRvbmx5UHJvcGVydHkoIm9iamVjdFN0b3JlLnRyYW5zYWN0aW9u
IiwgInRoaXMiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWFkb25seS1wcm9wZXJ0aWVzLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVhZG9ubHkuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3JlYWRvbmx5Lmh0bWwKaW5kZXggMTQ4ZTVlMGM3OTM2YjkwNWUzNzE4YWRhNTA3MGM5
NDM5YzY2NWM5OS4uMWUxMTYyMDNiNTZlODk5ZDBiNTFkM2I3M2MwZjk1YjRlZWFlYzhhYyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVhZG9ubHkuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZWFkb25seS5odG1sCkBAIC0xLDExNSAr
MSwxMCBAQAotPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNj
cmlwdD4KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiByZWFkb25seSBwcm9wZXJ0aWVzIik7
Ci0KLWZ1bmN0aW9uIHNldFJlYWRvbmx5UHJvcGVydHkocHJvcGVydHksIHZhbHVlKQotewotICAg
IG9sZFZhbHVlID0gZXZhbChwcm9wZXJ0eSk7Ci0gICAgZGVidWcoInRyeWluZyB0byBzZXQgcmVh
ZG9ubHkgcHJvcGVydHkgIiArIHByb3BlcnR5KTsKLSAgICBldmFsQW5kTG9nKHByb3BlcnR5ICsg
IiA9ICIgKyB2YWx1ZSk7Ci0gICAgbmV3VmFsdWUgPSBldmFsKHByb3BlcnR5KTsKLSAgICBpZiAo
b2xkVmFsdWUgPT0gbmV3VmFsdWUpIHsKLSAgICAgICAgdGVzdFBhc3NlZChwcm9wZXJ0eSArICIg
aXMgc3RpbGwgIiArIG9sZFZhbHVlKTsKLSAgICB9IGVsc2UgewotICAgICAgICB0ZXN0RmFpbGVk
KHByb3BlcnR5ICsgIiB2YWx1ZSB3YXMgY2hhbmdlZCIpOwotICAgIH0KLX0KLQotZnVuY3Rpb24g
dGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIG5hbWUgPSAiZm9v
IjsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAg
IHNldFJlYWRvbmx5UHJvcGVydHkoInJlcXVlc3QucmVzdWx0IiwgIkluZmluaXR5Iik7Ci0gICAg
c2V0UmVhZG9ubHlQcm9wZXJ0eSgicmVxdWVzdC5lcnJvckNvZGUiLCAiNjY2Iik7Ci0gICAgc2V0
UmVhZG9ubHlQcm9wZXJ0eSgicmVxdWVzdC5zb3VyY2UiLCAidGhpcyIpOwotICAgIHNldFJlYWRv
bmx5UHJvcGVydHkoInJlcXVlc3QudHJhbnNhY3Rpb24iLCAidGhpcyIpOwotICAgIHNldFJlYWRv
bmx5UHJvcGVydHkoInJlcXVlc3QucmVhZHlTdGF0ZSIsICI2NjYiKTsKLQotICAgIGRiID0gZXZh
bEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2V0UmVhZG9ubHlQcm9w
ZXJ0eSgiZGIubmFtZSIsICInYmFyJyIpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNy
ZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0
U3RvcmUoKQotewotICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBl
dmVudC50YXJnZXQucmVzdWx0OyIpOwotICAgIHNldFJlYWRvbmx5UHJvcGVydHkoInRyYW5zYWN0
aW9uLm1vZGUiLCAiNjY2Iik7Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgidHJhbnNhY3Rpb24u
ZGIiLCAidGhpcyIpOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9i
amVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9y
ZSgnZm9vJyk7Iik7Ci0KLSAgICBzZXRSZWFkb25seVByb3BlcnR5KCJvYmplY3RTdG9yZS5uYW1l
IiwgIidiYXInIik7Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgib2JqZWN0U3RvcmUua2V5UGF0
aCIsICInYmFyJyIpOwotLyogZmFpbHMsIHNwbGl0IGludG8gc2VwYXJhdGUgdGVzdAotICAgIHNl
dFJlYWRvbmx5UHJvcGVydHkoIm9iamVjdFN0b3JlLmluZGV4TmFtZXMiLCAiWydiYXInXSIpOwot
Ki8KLS8qIGZhaWxzLCBzcGxpdCBpbnRvIHNlcGFyYXRlIHRlc3QKLSAgICBzZXRSZWFkb25seVBy
b3BlcnR5KCJvYmplY3RTdG9yZS50cmFuc2FjdGlvbiIsICJ0aGlzIik7Ci0qLwotCi0gICAgcmVz
dWx0ID0gZXZhbEFuZExvZygicmVzdWx0ID0gb2JqZWN0U3RvcmUuYWRkKHt9LCAnZmlyc3QnKTsi
KTsKLSAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJl
c3VsdC5vbnN1Y2Nlc3MgPSBhZGRTdWNjZXNzOwotfQotCi1mdW5jdGlvbiBhZGRTdWNjZXNzKCkK
LXsKLSAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJyZXN1bHQgPSBvYmplY3RTdG9yZS5vcGVuQ3Vy
c29yKCk7Iik7Ci0gICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LSAgICByZXN1bHQub25zdWNjZXNzID0gY2hlY2tDdXJzb3I7Ci19Ci0KLWZ1bmN0aW9uIGNoZWNr
Q3Vyc29yKCkKLXsKLSAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJn
ZXQucmVzdWx0OyIpOwotICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgc2V0UmVhZG9ubHlQcm9w
ZXJ0eSgiY3Vyc29yLnNvdXJjZSIsICJ0aGlzIik7Ci0gICAgICAgIHNldFJlYWRvbmx5UHJvcGVy
dHkoImN1cnNvci5kaXJlY3Rpb24iLCAiNjY2Iik7Ci0gICAgICAgIHNldFJlYWRvbmx5UHJvcGVy
dHkoImN1cnNvci5rZXkiLCAiSW5maW5pdHkiKTsKLSAgICAgICAgc2V0UmVhZG9ubHlQcm9wZXJ0
eSgiY3Vyc29yLnByaW1hcnlLZXkiLCAiSW5maW5pdHkiKTsKLSAgICB9IGVsc2UgewotICAgICAg
ICB0ZXN0RmFpbGVkKCJjdXJzb3IgaXMgbnVsbCIpOwotICAgIH0KLQotICAgIGluZGV4ID0gZXZh
bEFuZExvZygiaW5kZXggPSBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgnZmlyc3QnLCAnZmlyc3Qn
KTsiKTsKLSAgICBzZXRSZWFkb25seVByb3BlcnR5KCJpbmRleC5uYW1lIiwgIidiYXInIik7Ci0g
ICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgiaW5kZXgub2JqZWN0U3RvcmUiLCAidGhpcyIpOwotICAg
IHNldFJlYWRvbmx5UHJvcGVydHkoImluZGV4LmtleVBhdGgiLCAiJ2JhciciKTsKLSAgICBzZXRS
ZWFkb25seVByb3BlcnR5KCJpbmRleC51bmlxdWUiLCAidHJ1ZSIpOwotCi0gICAga2V5UmFuZ2Ug
PSBJREJLZXlSYW5nZS5vbmx5KCJmaXJzdCIpOwotICAgIHNldFJlYWRvbmx5UHJvcGVydHkoImtl
eVJhbmdlLmxvd2VyIiwgIkluZmluaXR5Iik7Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgia2V5
UmFuZ2UudXBwZXIiLCAiSW5maW5pdHkiKTsKLSAgICBzZXRSZWFkb25seVByb3BlcnR5KCJrZXlS
YW5nZS5sb3dlck9wZW4iLCAidHJ1ZSIpOwotICAgIHNldFJlYWRvbmx5UHJvcGVydHkoImtleVJh
bmdlLnVwcGVyT3BlbiIsICJ0cnVlIik7Ci0KLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10
ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWFkb25seS5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3JlcXVlc3QtZXZlbnQtcHJvcGFnYXRpb24uaHRtbCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3JlcXVlc3QtZXZlbnQtcHJvcGFnYXRpb24uaHRt
bAppbmRleCBmOTFkOGVkNDFjY2Q1NDNmYzQzNGUwZTVmOThjZmJhYWRkMzE0ZWU3Li5iMTExMWJk
MmMzNmM0NmNlNDNiMWE4OWI4ZDk5ODA2YjEwNTg2NzA1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXF1ZXN0LWV2ZW50LXByb3BhZ2F0aW9uLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVxdWVzdC1ldmVudC1wcm9wYWdhdGlvbi5o
dG1sCkBAIC00LDI3MyArNCw3IEBACiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+
PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0
IGV2ZW50IHByb3BvZ2F0aW9uIG9uIElEQlJlcXVlc3QuIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQot
ewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImluZGV4ZWREQi5vcGVuKCdyZXF1ZXN0LWV2ZW50LXByb3BhZ2F0aW9uJykiKTsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb247Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb24oKQotewotICAgIGRi
ID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOwotICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKLXsK
LSAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKLSAgICBzZWxmLnRyYW5zID0gZXZh
bEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVl
KCJ0cmFucyAhPT0gbnVsbCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRD
YWxsYmFjazsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gc3RhcnRUZXN0Iik7
Ci0KLSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgc3RvcmUgPSBldmFsQW5k
TG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOwot
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enon
fSwgJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIHN0YXJ0VGVzdCgpCi17Ci0gICAgZGVidWcoIlZlcmlmeSB0aGF0
IGhhbmRsZXIgZmlyZXMgYW5kIHRoYXQgbm90IHByZXZlbnRpbmcgZGVmYXVsdCB3aWxsIHJlc3Vs
dCBpbiBhbiBhYm9ydCIpOwotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFu
c2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAg
IGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSB0cmFuc2FjdGlvbkFib3J0ZWQiKTsKLSAgICBl
dmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2si
KTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmVycm9yID0gYWxsb3dEZWZhdWx0Iik7Ci0gICAg
c3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUn
KSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6
ICd6enonfSwgJ2tleScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3Vj
Y2Vzc0NhbGxiYWNrOwotICAgIGhhbmRsZXJGaXJlZCA9IGZhbHNlOwotfQotCi1mdW5jdGlvbiBh
bGxvd0RlZmF1bHQoKQotewotICAgIHRlc3RQYXNzZWQoIkV2ZW50IGhhbmRsZXIgZmlyZWQiKTsK
LSAgICBkZWJ1ZygiRG9pbmcgbm90aGluZyB0byBwcmV2ZW50IHRoZSBkZWZhdWx0IGFjdGlvbi4u
LiIpOwotICAgIGhhbmRsZXJGaXJlZCA9IHRydWU7Ci19Ci0KLWZ1bmN0aW9uIHRyYW5zYWN0aW9u
QWJvcnRlZCgpCi17Ci0gICAgc2hvdWxkQmVUcnVlKCJoYW5kbGVyRmlyZWQiKTsKLSAgICBkZWJ1
ZygiIik7Ci0gICAgZGVidWcoIlZlcmlmaW5nIGVycm9yIik7Ci0gICAgdHJhbnMgPSBldmFsQW5k
TG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIElEQlRyYW5zYWN0aW9u
LlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMub25hYm9ydCA9IHRyYW5zYWN0
aW9uQWJvcnRlZDIiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gdW5leHBl
Y3RlZEFib3J0Q2FsbGJhY2siKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5hZGRFdmVudExpc3Rl
bmVyKCdlcnJvcicsIGVycm9yQ2FwdHVyZUNhbGxiYWNrLCB0cnVlKSIpOwotICAgIGV2YWxBbmRM
b2coInRyYW5zLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZXJyb3JCdWJibGVDYWxsYmFjaywg
ZmFsc2UpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignc3VjY2Vz
cycsIHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2ssIHRydWUpIik7Ci0gICAgZXZhbEFuZExvZygi
dHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignc3VjY2VzcycsIHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJh
Y2ssIGZhbHNlKSIpOwotICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9y
JywgZGJFcnJvckNhcHR1cmVDYWxsYmFjaywgdHJ1ZSkiKTsKLSAgICBldmFsQW5kTG9nKCJkYi5h
ZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGRiRXJyb3JCdWJibGVDYWxsYmFjaywgZmFsc2UpIik7
Ci0gICAgZXZhbEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignc3VjY2VzcycsIHVuZXhwZWN0
ZWRTdWNjZXNzQ2FsbGJhY2ssIHRydWUpIik7Ci0gICAgZXZhbEFuZExvZygiZGIuYWRkRXZlbnRM
aXN0ZW5lcignc3VjY2VzcycsIHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2ssIGZhbHNlKSIpOwot
ICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVO
YW1lJykiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWUn
LCB5OiAnenp6J30sICdrZXknKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3Rl
ZFN1Y2Nlc3NDYWxsYmFjazsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSBlcnJvckZpcmVkQ2FsbGJh
Y2s7Ci0gICAgZGJDYXB0dXJlRmlyZWQgPSBmYWxzZTsKLSAgICBjYXB0dXJlRmlyZWQgPSBmYWxz
ZTsKLSAgICByZXF1ZXN0RmlyZWQgPSBmYWxzZTsKLSAgICBidWJibGVGaXJlZCA9IGZhbHNlOwot
ICAgIGRiQnViYmxlRmlyZWQgPSBmYWxzZTsKLX0KLQotZnVuY3Rpb24gZGJFcnJvckNhcHR1cmVD
YWxsYmFjaygpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJJbiBJREJEYXRhYmFzZSBl
cnJvciBjYXB0dXJlIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGJDYXB0dXJlRmlyZWQiKTsKLSAg
ICBzaG91bGRCZUZhbHNlKCJjYXB0dXJlRmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJyZXF1
ZXN0RmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJidWJibGVGaXJlZCIpOwotICAgIHNob3Vs
ZEJlRmFsc2UoImRiQnViYmxlRmlyZWQiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0Iiwg
InJlcXVlc3QiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQuY3VycmVudFRhcmdldCIsICJkYiIpOwot
ICAgIGRiQ2FwdHVyZUZpcmVkID0gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gZXJyb3JDYXB0dXJlQ2Fs
bGJhY2soKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiSW4gSURCVHJhbnNhY3Rpb24g
ZXJyb3IgY2FwdHVyZSIpOwotICAgIHNob3VsZEJlVHJ1ZSgiZGJDYXB0dXJlRmlyZWQiKTsKLSAg
ICBzaG91bGRCZUZhbHNlKCJjYXB0dXJlRmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJyZXF1
ZXN0RmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJidWJibGVGaXJlZCIpOwotICAgIHNob3Vs
ZEJlRmFsc2UoImRiQnViYmxlRmlyZWQiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0Iiwg
InJlcXVlc3QiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQuY3VycmVudFRhcmdldCIsICJ0cmFucyIp
OwotICAgIGNhcHR1cmVGaXJlZCA9IHRydWU7Ci19Ci0KLWZ1bmN0aW9uIGVycm9yRmlyZWRDYWxs
YmFjaygpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJJbiBJREJSZXF1ZXN0IGhhbmRs
ZXIiKTsKLSAgICBzaG91bGRCZVRydWUoImRiQ2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVU
cnVlKCJjYXB0dXJlRmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJyZXF1ZXN0RmlyZWQiKTsK
LSAgICBzaG91bGRCZUZhbHNlKCJidWJibGVGaXJlZCIpOwotICAgIHNob3VsZEJlRmFsc2UoImRi
QnViYmxlRmlyZWQiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0IiwgInJlcXVlc3QiKTsK
LSAgICBzaG91bGRCZSgiZXZlbnQuY3VycmVudFRhcmdldCIsICJyZXF1ZXN0Iik7Ci0gICAgcmVx
dWVzdEZpcmVkID0gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gZXJyb3JCdWJibGVDYWxsYmFjaygpCi17
Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJJbiBJREJUcmFuc2FjdGlvbiBlcnJvciBidWJi
bGUiKTsKLSAgICBzaG91bGRCZVRydWUoImRiQ2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVU
cnVlKCJjYXB0dXJlRmlyZWQiKTsKLSAgICBzaG91bGRCZVRydWUoInJlcXVlc3RGaXJlZCIpOwot
ICAgIHNob3VsZEJlRmFsc2UoImJ1YmJsZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGJC
dWJibGVGaXJlZCIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAicmVxdWVzdCIpOwot
ICAgIHNob3VsZEJlKCJldmVudC5jdXJyZW50VGFyZ2V0IiwgInRyYW5zIik7Ci0gICAgYnViYmxl
RmlyZWQgPSB0cnVlOwotfQotCi1mdW5jdGlvbiBkYkVycm9yQnViYmxlQ2FsbGJhY2soKQotewot
ICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiSW4gSURCRGF0YWJhc2UgZXJyb3IgYnViYmxlIik7
Ci0gICAgc2hvdWxkQmVUcnVlKCJkYkNhcHR1cmVGaXJlZCIpOwotICAgIHNob3VsZEJlVHJ1ZSgi
Y2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJyZXF1ZXN0RmlyZWQiKTsKLSAgICBz
aG91bGRCZVRydWUoImJ1YmJsZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVG
aXJlZCIpOwotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAicmVxdWVzdCIpOwotICAgIHNo
b3VsZEJlKCJldmVudC5jdXJyZW50VGFyZ2V0IiwgImRiIik7Ci0gICAgZGJCdWJibGVGaXJlZCA9
IHRydWU7Ci19Ci0KLWZ1bmN0aW9uIHRyYW5zYWN0aW9uQWJvcnRlZDIoKQotewotICAgIGRlYnVn
KCIiKTsKLSAgICBkZWJ1ZygiVHJhbnNhY3Rpb24gYWJvcnRlZCIpOwotICAgIHNob3VsZEJlVHJ1
ZSgiZGJDYXB0dXJlRmlyZWQiKTsKLSAgICBzaG91bGRCZVRydWUoImNhcHR1cmVGaXJlZCIpOwot
ICAgIHNob3VsZEJlVHJ1ZSgicmVxdWVzdEZpcmVkIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJidWJi
bGVGaXJlZCIpOwotICAgIHNob3VsZEJlVHJ1ZSgiZGJCdWJibGVGaXJlZCIpOwotICAgIGRlYnVn
KCIiKTsKLSAgICBkZWJ1ZygiVmVyaWZpbmcgc3VjY2Vzcy4iKTsKLSAgICB0cmFucyA9IGV2YWxB
bmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rp
b24uUkVBRF9XUklURSkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gdHJh
bnNhY3Rpb25Db21wbGV0ZSIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSB1bmV4
cGVjdGVkQWJvcnRDYWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLmFkZEV2ZW50TGlz
dGVuZXIoJ3N1Y2Nlc3MnLCBzdWNjZXNzQ2FwdHVyZUNhbGxiYWNrLCB0cnVlKSIpOwotICAgIGV2
YWxBbmRMb2coInRyYW5zLmFkZEV2ZW50TGlzdGVuZXIoJ3N1Y2Nlc3MnLCBzdWNjZXNzQnViYmxl
Q2FsbGJhY2ssIGZhbHNlKSIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLmFkZEV2ZW50TGlzdGVu
ZXIoJ2Vycm9yJywgdW5leHBlY3RlZEVycm9yQ2FsbGJhY2ssIHRydWUpIik7Ci0gICAgZXZhbEFu
ZExvZygidHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjaywgZmFsc2UpIik7Ci0gICAgZXZhbEFuZExvZygiZGIucmVtb3ZlRXZlbnRMaXN0ZW5lcign
ZXJyb3InLCBkYkVycm9yQ2FwdHVyZUNhbGxiYWNrLCB0cnVlKSIpOwotICAgIGV2YWxBbmRMb2co
ImRiLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZGJFcnJvckJ1YmJsZUNhbGxiYWNrLCBm
YWxzZSkiKTsKLSAgICBldmFsQW5kTG9nKCJkYi5yZW1vdmVFdmVudExpc3RlbmVyKCdzdWNjZXNz
JywgdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjaywgdHJ1ZSkiKTsKLSAgICBldmFsQW5kTG9nKCJk
Yi5yZW1vdmVFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFj
aywgZmFsc2UpIik7Ci0gICAgZXZhbEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignc3VjY2Vz
cycsIGRiU3VjY2Vzc0NhcHR1cmVDYWxsYmFjaywgdHJ1ZSkiKTsKLSAgICBldmFsQW5kTG9nKCJk
Yi5hZGRFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgZGJTdWNjZXNzQnViYmxlQ2FsbGJhY2ssIGZh
bHNlKSIpOwotICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2ssIHRydWUpIik7Ci0gICAgZXZhbEFuZExvZygiZGIuYWRkRXZl
bnRMaXN0ZW5lcignZXJyb3InLCB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjaywgZmFsc2UpIik7Ci0g
ICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5h
bWUnKSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScs
IHk6ICd6enonfSwgJ2tleTInKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc3VjY2Vzc0ZpcmVkQ2FsbGJh
Y2s7Ci0gICAgZGJDYXB0dXJlRmlyZWQgPSBmYWxzZTsKLSAgICBjYXB0dXJlRmlyZWQgPSBmYWxz
ZTsKLSAgICByZXF1ZXN0RmlyZWQgPSBmYWxzZTsKLSAgICBidWJibGVGaXJlZCA9IGZhbHNlOwot
ICAgIGRiQnViYmxlRmlyZWQgPSBmYWxzZTsKLX0KLQotZnVuY3Rpb24gZGJTdWNjZXNzQ2FwdHVy
ZUNhbGxiYWNrKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoIkluIElEQkRhdGFiYXNl
IHN1Y2Nlc3MgY2FwdHVyZSIpOwotICAgIHNob3VsZEJlRmFsc2UoImRiQ2FwdHVyZUZpcmVkIik7
Ci0gICAgc2hvdWxkQmVGYWxzZSgiY2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgi
cmVxdWVzdEZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiYnViYmxlRmlyZWQiKTsKLSAgICBz
aG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVkIik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdl
dCIsICJyZXF1ZXN0Iik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LmN1cnJlbnRUYXJnZXQiLCAiZGIi
KTsKLSAgICBkYkNhcHR1cmVGaXJlZCA9IHRydWU7Ci19Ci0KLWZ1bmN0aW9uIHN1Y2Nlc3NDYXB0
dXJlQ2FsbGJhY2soKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiSW4gSURCVHJhbnNh
Y3Rpb24gc3VjY2VzcyBjYXB0dXJlIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJkYkNhcHR1cmVGaXJl
ZCIpOwotICAgIHNob3VsZEJlRmFsc2UoImNhcHR1cmVGaXJlZCIpOwotICAgIHNob3VsZEJlRmFs
c2UoInJlcXVlc3RGaXJlZCIpOwotICAgIHNob3VsZEJlRmFsc2UoImJ1YmJsZUZpcmVkIik7Ci0g
ICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVGaXJlZCIpOwotICAgIHNob3VsZEJlKCJldmVudC50
YXJnZXQiLCAicmVxdWVzdCIpOwotICAgIHNob3VsZEJlKCJldmVudC5jdXJyZW50VGFyZ2V0Iiwg
InRyYW5zIik7Ci0gICAgY2FwdHVyZUZpcmVkID0gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gc3VjY2Vz
c0ZpcmVkQ2FsbGJhY2soKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiSW4gSURCUmVx
dWVzdCBoYW5kbGVyIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJkYkNhcHR1cmVGaXJlZCIpOwotICAg
IHNob3VsZEJlVHJ1ZSgiY2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgicmVxdWVz
dEZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiYnViYmxlRmlyZWQiKTsKLSAgICBzaG91bGRC
ZUZhbHNlKCJkYkJ1YmJsZUZpcmVkIik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldCIsICJy
ZXF1ZXN0Iik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LmN1cnJlbnRUYXJnZXQiLCAicmVxdWVzdCIp
OwotICAgIHJlcXVlc3RGaXJlZCA9IHRydWU7Ci19Ci0KLWZ1bmN0aW9uIHN1Y2Nlc3NCdWJibGVD
YWxsYmFjaygpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJJbiBJREJUcmFuc2FjdGlv
biBzdWNjZXNzIGJ1YmJsZSIpOwotICAgIHRlc3RGYWlsZWQoIlN1Y2Nlc3MgYnViYmxlIGNhbGxi
YWNrIHNob3VsZCBOT1QgZmlyZSIpOwotICAgIGJ1YmJsZUZpcmVkID0gdHJ1ZTsKLX0KLQotZnVu
Y3Rpb24gZGJTdWNjZXNzQnViYmxlQ2FsbGJhY2soKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBk
ZWJ1ZygiSW4gSURCRGF0YWJhc2Ugc3VjY2VzcyBidWJibGUiKTsKLSAgICB0ZXN0RmFpbGVkKCJT
dWNjZXNzIGJ1YmJsZSBjYWxsYmFjayBzaG91bGQgTk9UIGZpcmUiKTsKLSAgICBkYkJ1YmJsZUZp
cmVkID0gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gdHJhbnNhY3Rpb25Db21wbGV0ZSgpCi17Ci0gICAg
ZGVidWcoIiIpOwotICAgIGRlYnVnKCJUcmFuc2FjdGlvbiBjb21wbGV0ZWQiKTsKLSAgICBzaG91
bGRCZVRydWUoImRiQ2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJjYXB0dXJlRmly
ZWQiKTsKLSAgICBzaG91bGRCZVRydWUoInJlcXVlc3RGaXJlZCIpOwotICAgIHNob3VsZEJlRmFs
c2UoImJ1YmJsZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVGaXJlZCIpOwot
ICAgIGRlYnVnKCIiKTsKLQotICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIHJldHVybjsKLX0KLQot
dGVzdCgpOwotCi0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZXF1ZXN0LWV2
ZW50LXByb3BhZ2F0aW9uLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2NvbnN0
YW50cy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jb25zdGFu
dHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOGE1MjljMGJmMTIzYjZhNmNkYmFiYmNiYjViYTgxMTdhZDQ3N2Fh
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9jb25zdGFudHMuanMKQEAgLTAsMCArMSwzOSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0
cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2Ny
aXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGNvbnN0YW50cy4iKTsKKworZnVuY3Rpb24gdGVzdCgp
Cit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBzaG91bGRCZSgiSURCRGF0YWJh
c2VFeGNlcHRpb24uVU5LTk9XTl9FUlIiLCAiMSIpOworICAgIHNob3VsZEJlKCJJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5OT05fVFJBTlNJRU5UX0VSUiIsICIyIik7CisgICAgc2hvdWxkQmUoIklEQkRh
dGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiLCAiMyIpOworICAgIHNob3VsZEJlKCJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5DT05TVFJBSU5UX0VSUiIsICI0Iik7CisgICAgc2hvdWxkQmUoIklE
QkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIiwgIjUiKTsKKyAgICBzaG91bGRCZSgiSURCRGF0
YWJhc2VFeGNlcHRpb24uTk9UX0FMTE9XRURfRVJSIiwgIjYiKTsKKyAgICBzaG91bGRCZSgiSURC
RGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIiwgIjciKTsKKyAgICBz
aG91bGRCZSgiSURCRGF0YWJhc2VFeGNlcHRpb24uQUJPUlRfRVJSIiwgIjgiKTsKKyAgICBzaG91
bGRCZSgiSURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUiIsICI5Iik7CisgICAgc2hv
dWxkQmUoIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRJTUVPVVRfRVJSIiwgIjEwIik7CisgICAgc2hv
dWxkQmUoIklEQkRhdGFiYXNlRXhjZXB0aW9uLlFVT1RBX0VSUiIsICIxMSIpOworICAgIHNob3Vs
ZEJlKCJJREJEYXRhYmFzZUV4Y2VwdGlvbi5WRVJfRVJSIiwgIjEyIik7CisKKyAgICBzaG91bGRC
ZSgiSURCUmVxdWVzdC5MT0FESU5HIiwgIjEiKTsKKyAgICBzaG91bGRCZSgiSURCUmVxdWVzdC5E
T05FIiwgIjIiKTsKKworICAgIHNob3VsZEJlKCJJREJDdXJzb3IuTkVYVCIsICIwIik7CisgICAg
c2hvdWxkQmUoIklEQkN1cnNvci5ORVhUX05PX0RVUExJQ0FURSIsICIxIik7CisgICAgc2hvdWxk
QmUoIklEQkN1cnNvci5QUkVWIiwgIjIiKTsKKyAgICBzaG91bGRCZSgiSURCQ3Vyc29yLlBSRVZf
Tk9fRFVQTElDQVRFIiwgIjMiKTsKKworICAgIHNob3VsZEJlKCJJREJUcmFuc2FjdGlvbi5SRUFE
X09OTFkiLCAiMCIpOworICAgIHNob3VsZEJlKCJJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFIiwg
IjEiKTsKKyAgICBzaG91bGRCZSgiSURCVHJhbnNhY3Rpb24uVkVSU0lPTl9DSEFOR0UiLCAiMiIp
OworfQorCit0ZXN0KCk7CisKK2ZpbmlzaEpTVGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9jcmVhdGUtYW5kLXJlbW92ZS1vYmplY3Qtc3RvcmUuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvY3JlYXRlLWFuZC1yZW1vdmUtb2JqZWN0LXN0b3JlLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjY1MDkyOTQ4YzBkYjE5MzY1Nzg5YzhkY2Y5MzJjMGMyZDgyOTNlZDgKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Jl
YXRlLWFuZC1yZW1vdmUtb2JqZWN0LXN0b3JlLmpzCkBAIC0wLDAgKzEsNjYgQEAKK2lmICh0aGlz
LmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycp
OworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBjcmVhdGUgYW5kIHJlbW92ZU9i
amVjdFN0b3JlIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZp
eGVzKCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdjcmVhdGUt
YW5kLXJlbW92ZS1vYmplY3Qtc3RvcmUnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3Bl
blN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygib3BlblN1Y2Nlc3Mo
KToiKTsKKyAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7CisgICAgdGVzdENyZWF0ZUFuZFJlbW92ZSgpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXN1bHQgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKKyAgICB0ZXN0Q3JlYXRlQW5kUmVtb3ZlKCk7Cit9CisKK2Z1bmN0aW9u
IHRlc3RDcmVhdGVBbmRSZW1vdmUoKQoreworICAgIGRlYnVnKCJUcnlpbmcgY3JlYXRlIik7Cisg
ICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbignZGIuY3JlYXRlT2JqZWN0U3RvcmUoInNvbWUgb3Mi
KScsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9FUlIiKTsKKyAgICBkZWJ1Zygi
VHJ5aW5nIHJlbW92ZSIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oJ2RiLmRlbGV0ZU9i
amVjdFN0b3JlKCJzb21lIG9zIiknLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0FMTE9XRURf
RVJSIik7Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRlbGV0ZUFsbE9i
amVjdFN0b3JlcyhkYik7CisKKyAgICBvcyA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0
b3JlKCd0bXAnKSIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLmNyZWF0ZU9iamVj
dFN0b3JlKCd0bXAnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5DT05TVFJBSU5UX0VSUiIpOwor
ICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25jb21wbGV0ZSA9IHNldFZlcnNpb25Db21wbGV0ZTsK
K30KKworZnVuY3Rpb24gc2V0VmVyc2lvbkNvbXBsZXRlKCkKK3sKKyAgICB0cmFucyA9IGV2YWxB
bmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWyd0bXAnXSkiKTsKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ3RtcCcpLmdldCgwKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gdHJ5T25jZU1vcmU7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHRyeU9uY2VNb3JlKCkKK3sKKyAgICBz
aG91bGRCZVVuZGVmaW5lZCgiZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgdGVzdENyZWF0
ZUFuZFJlbW92ZSgpOworCisgICAgZGVidWcoIlRyeWluZyBjcmVhdGUgd2l0aCBzdG9yZSB0aGF0
IGFscmVhZHkgZXhpc3RzIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ3RtcCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9BTExPV0VEX0VS
UiIpOworICAgIGRlYnVnKCJUcnlpbmcgcmVtb3ZlIHdpdGggc3RvcmUgdGhhdCBhbHJlYWR5IGV4
aXN0cyIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLmRlbGV0ZU9iamVjdFN0b3Jl
KCd0bXAnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9FUlIiKTsKKworICAg
IGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2Ny
ZWF0ZS1vYmplY3Qtc3RvcmUtb3B0aW9ucy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9jcmVhdGUtb2JqZWN0LXN0b3JlLW9wdGlvbnMuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MjhjNmE0YzBlM2VmMjBjNDY3Yzg3NWFjYjk3YmYxNTdhZjEyZDE3NAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jcmVhdGUtb2JqZWN0
LXN0b3JlLW9wdGlvbnMuanMKQEAgLTAsMCArMSw4MSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0
cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2Ny
aXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGNyZWF0ZU9iamVjdFN0b3JlJ3MgdmFyaW91cyBvcHRp
b25zIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7
CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2NyZWF0ZS1vYmpl
Y3Qtc3RvcmUtb3B0aW9ucycsICdkZXNjcmlwdGlvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFu
ZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKK3sKKyAg
ICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgZXZhbEFuZExvZygiZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ2EnLCB7a2V5UGF0aDogJ2EnfSkiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5j
cmVhdGVPYmplY3RTdG9yZSgnYicpIik7CisKKyAgICBkZWJ1ZygiZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ2MnLCB7YXV0b0luY3JlbWVudDogdHJ1ZX0pOyIpOworICAgIGRiLmNyZWF0ZU9iamVjdFN0
b3JlKCdjJywge2F1dG9JbmNyZW1lbnQ6IHRydWV9KTsKKyAgICBldmVudC50YXJnZXQucmVzdWx0
Lm9uY29tcGxldGUgPSBzZXRWZXJzaW9uQ29tcGxldGU7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNp
b25Db21wbGV0ZSgpCit7CisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5z
YWN0aW9uKFsnYScsICdiJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgc2hv
dWxkQmUoInRyYW5zLm1vZGUiLCAiSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSIpOworCisgICAg
cmVxID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2EnKS5wdXQoeydhJzogMH0pIik7
CisgICAgcmVxLm9uc3VjY2VzcyA9IHB1dEI7CisgICAgcmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKKworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb25DbGFzcygiZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ2QnLCAnYmFyJyk7IiwgIlR5cGVFcnJvciIpOworICAgIGV2YWxBbmRF
eHBlY3RFeGNlcHRpb25DbGFzcygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2UnLCBmYWxzZSk7Iiwg
IlR5cGVFcnJvciIpOworfQorCitmdW5jdGlvbiBwdXRCKCkKK3sKKyAgICByZXEgPSBldmFsQW5k
TG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYicpLnB1dCh7J2EnOiAwfSwgMCkiKTsgIC8vIE9PUFMK
KyAgICByZXEub25zdWNjZXNzID0gZ2V0QTsKKyAgICByZXEub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBnZXRBKCkKK3sKKyAgICByZXEgPSBldmFsQW5k
TG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYScpLmdldCgwKSIpOworICAgIHJlcS5vbnN1Y2Nlc3Mg
PSBnZXRCOworICAgIHJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIGdldEIoKQoreworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LmEi
LCAie2E6IDB9Iik7CisKKyAgICByZXEgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgn
YicpLmdldCgwKSIpOworICAgIHJlcS5vbnN1Y2Nlc3MgPSBjaGVja0I7CisgICAgcmVxLm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2hlY2tCKCkKK3sK
KyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5hIiwgInthOiAwfSIpOworCisgICAg
ZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Jl
YXRlT2JqZWN0U3RvcmUtbmFtZS1hcmd1bWVudC1yZXF1aXJlZC5qcyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jcmVhdGVPYmplY3RTdG9yZS1uYW1lLWFyZ3VtZW50
LXJlcXVpcmVkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5NTlmYTcyMGUyYzQzYzBiZGE4YTZlNTg5MjY2NjU4
Mjc4ODQzMDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvY3JlYXRlT2JqZWN0U3RvcmUtbmFtZS1hcmd1bWVudC1yZXF1aXJlZC5qcwpA
QCAtMCwwICsxLDM2IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2Ny
aXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBp
bXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhl
ZERCIGNyZWF0ZU9iamVjdFN0b3JlIG5hbWUgYXJndW1lbnQgaXMgcmVxdWlyZWQiKTsKKworZnVu
Y3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUg
PSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0
YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBk
ZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0
VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0
ZU9iamVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworfQorCitmdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKK3sKKyAg
ICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgc2hvdWxkVGhyb3coImRiLmNyZWF0
ZU9iamVjdFN0b3JlKCk7Iik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvY3JlYXRlT2JqZWN0U3RvcmUtbnVsbC1uYW1lLmpzIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2NyZWF0ZU9iamVjdFN0b3JlLW51
bGwtbmFtZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMTU1YTUwMzhkNmUwMGE5NmYyZjg1YmRmY2Q4YjYzN2Fj
MjViOWU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL2NyZWF0ZU9iamVjdFN0b3JlLW51bGwtbmFtZS5qcwpAQCAtMCwwICsxLDM3IEBA
CitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdz
aGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGNyZWF0ZU9iamVj
dFN0b3JlIG51bGwgaGFuZGxpbmciKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3Zl
VmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOwor
ICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIg
PSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjcmVhdGVB
bmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIp
OworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZShu
dWxsKTsiKTsKKyAgICBzaG91bGRCZSgib2JqZWN0U3RvcmUubmFtZSIsICInbnVsbCciKTsKKyAg
ICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9j
dXJzb3ItY29udGludWUuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvY3Vyc29yLWNvbnRpbnVlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0YjBlZjhhNzhmZjQ3ZWM2M2YwNDU4
YzNkZTYwMDJkY2U1NTM5NGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWNvbnRpbnVlLmpzCkBAIC0wLDAgKzEsMjcwIEBA
CitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdz
aGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgSURCQ3Vyc29y
LmNvbnRpbnVlKCkgd2l0aCBhIGtleSBwYXJhbWV0ZXIuIik7CisKK3ZhciBkYXRlID0gbmV3IERh
dGUoKTsKKworLy8gSW4gb3JkZXIgb2YgaG93IGl0IHNob3VsZCBiZSBzb3J0ZWQgYnkgSW5kZXhl
ZERCLgorc2VsZi50ZXN0RGF0YSA9IFsKKyAgICAwLAorICAgIDEsCisgICAgMSwKKyAgICAzLjE0
MTU5LAorICAgIDMuMTQxNTksCisgICAgMTAsCisgICAgMTEsCisgICAgMTIsCisgICAgMTMsCisg
ICAgZGF0ZSwKKyAgICBkYXRlLAorICAgIG5ldyBEYXRlKGRhdGUudmFsdWVPZigpICsgMTAwMCks
CisgICAgIkEgYmlnIHN0cmluZyIsCisgICAgIkEgYmlnIHN0cmluZyIsCisgICAgIkEgYml0MSIs
CisgICAgIkEgYml0MiIsCisgICAgIkEgYml0MyIsCisgICAgInRoZSBCSUdHRVNUIHN0cmluZyIK
K107CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Cisg
ICAgb3BlbkRhdGFiYXNlKCk7Cit9CisKK2Z1bmN0aW9uIG9wZW5EYXRhYmFzZSgpCit7CisgICAg
cmVzdWx0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2N1cnNvci1jb250aW51ZScpIik7
CisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb247CisgICAgcmVzdWx0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbigpCit7
CisgICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwor
CisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIp
OworICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKKyAgICByZXN1bHQub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxldGVFeGlz
dGluZygpCit7CisgICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFy
Z2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKyAgICB0
cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisKKyAgICBkZWxldGVBbGxP
YmplY3RTdG9yZXMoZGIpOworCisgICAgc2VsZi5vYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdzb21lT2JqZWN0U3RvcmUnKSIpOworICAgIHNlbGYuaW5kZXhP
YmplY3QgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgnc29tZUluZGV4Jywg
J3gnKSIpOworICAgIHNlbGYubmV4dFRvQWRkID0gMDsKKyAgICBhZGREYXRhKCk7Cit9CisKK2Z1
bmN0aW9uIGFkZERhdGEoKQoreworICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3Jl
LmFkZCh7J3gnOiB0ZXN0RGF0YVtuZXh0VG9BZGRdfSwgbmV4dFRvQWRkKSIpOworICAgIHJlc3Vs
dC5vbnN1Y2Nlc3MgPSArK3NlbGYubmV4dFRvQWRkIDwgdGVzdERhdGEubGVuZ3RoID8gYWRkRGF0
YSA6IGFzY2VuZGluZ1Rlc3Q7CisgICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gYXNjZW5kaW5nVGVzdCgpCit7CisgICAgZGVidWcoIiIp
OworICAgIHZhciByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhPYmplY3Qub3BlbktleUN1cnNv
cihudWxsLCBJREJDdXJzb3IuTkVYVCkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFzY2Vu
ZGluZ0NhbGxiYWNrOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworICAgIHNlbGYuc3RhZ2UgPSAwOworfQorCitmdW5jdGlvbiBhc2NlbmRpbmdDYWxsYmFj
aygpCisKK3sKKyAgICBpZiAoc2VsZi5zdGFnZSA9PSAwKSB7CisgICAgICAgIHNob3VsZEJlKCJl
dmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMCIpOworICAgICAgICBldmFsQW5kTG9n
KCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKDMuMTQxNTkpIik7CisgICAgfSBlbHNlIGlm
IChzZWxmLnN0YWdlID09IDEpIHsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1
bHQucHJpbWFyeUtleSIsICIzIik7CisgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5y
ZXN1bHQuY29udGludWUoKSIpOworICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSAyKSB7Cisg
ICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiNCIpOwor
ICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKKyAg
ICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gMykgeworICAgICAgICBzaG91bGRCZSgiZXZlbnQu
dGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjUiKTsKKyAgICAgICAgZXZhbEFuZExvZygiZXZl
bnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgxMikiKTsKKyAgICB9IGVsc2UgaWYgKHNlbGYuc3Rh
Z2UgPT0gNCkgeworICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5
S2V5IiwgIjciKTsKKyAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250
aW51ZShkYXRlKSIpOworICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSA1KSB7CisgICAgICAg
IHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiOSIpOworICAgICAg
ICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKKyAgICB9IGVs
c2UgaWYgKHNlbGYuc3RhZ2UgPT0gNikgeworICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0
LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjEwIik7CisgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRh
cmdldC5yZXN1bHQuY29udGludWUoKSIpOworICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSA3
KSB7CisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAi
MTEiKTsKKyAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgn
QSBiaXQxJykiKTsKKyAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gOCkgeworICAgICAgICBz
aG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjE0Iik7CisgICAgICAg
IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoJ0EgYml0MycpIik7Cisg
ICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDkpIHsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50
LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIxNiIpOworICAgICAgICBldmFsQW5kTG9nKCJl
dmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCd0aGUgQklHR0VTVCBzdHJpbmcnKSIpOworICAg
IH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSAxMCkgeworICAgICAgICBzaG91bGRCZSgiZXZlbnQu
dGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjE3Iik7CisgICAgICAgIGV2YWxBbmRMb2coImV2
ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOworICAgIH0gZWxzZSBpZiAoc2VsZi5zdGFn
ZSA9PSAxMSkgeworICAgICAgICBzaG91bGRCZU51bGwoImV2ZW50LnRhcmdldC5yZXN1bHQiKTsK
KyAgICAgICAgZGVzY2VuZGluZ1Rlc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0gZWxzZSB7
CisgICAgICAgIHRlc3RGYWlsZWQoIklsbGVnYWwgc3RhZ2UuIik7CisgICAgfQorICAgIHNlbGYu
c3RhZ2UrKzsKK30KKworZnVuY3Rpb24gZGVzY2VuZGluZ1Rlc3QoKQoreworICAgIGRlYnVnKCIi
KTsKKyAgICB2YXIgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0Lm9wZW5LZXlDdXJz
b3IobnVsbCwgSURCQ3Vyc29yLlBSRVYpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZXNj
ZW5kaW5nQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7CisgICAgc2VsZi5zdGFnZSA9IDA7Cit9CisKK2Z1bmN0aW9uIGRlc2NlbmRpbmdDYWxs
YmFjaygpCit7CisgICAgaWYgKHNlbGYuc3RhZ2UgPT0gMCkgeworICAgICAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjE3Iik7CisgICAgICAgIGV2YWxBbmRM
b2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoJ0EgYml0MicpIik7CisgICAgfSBlbHNl
IGlmIChzZWxmLnN0YWdlID09IDEpIHsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5y
ZXN1bHQucHJpbWFyeUtleSIsICIxNSIpOworICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJn
ZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKKyAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gMikg
eworICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjE0
Iik7CisgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoZGF0
ZSkiKTsKKyAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gMykgeworICAgICAgICBzaG91bGRC
ZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjEwIik7CisgICAgICAgIGV2YWxB
bmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOworICAgIH0gZWxzZSBpZiAo
c2VsZi5zdGFnZSA9PSA0KSB7CisgICAgICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0
LnByaW1hcnlLZXkiLCAiOSIpOworICAgICAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVz
dWx0LmNvbnRpbnVlKDEpIik7CisgICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDUpIHsKKyAg
ICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIyIik7Cisg
ICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOworICAg
IH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSA2KSB7CisgICAgICAgIHNob3VsZEJlKCJldmVudC50
YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMSIpOworICAgICAgICBldmFsQW5kTG9nKCJldmVu
dC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKKyAgICB9IGVsc2UgaWYgKHNlbGYuc3RhZ2Ug
PT0gNykgeworICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5
IiwgIjAiKTsKKyAgICAgICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51
ZSgpIik7CisgICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDgpIHsKKyAgICAgICAgc2hvdWxk
QmVOdWxsKCJldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgICAgIGFzY2VuZGluZ0Vycm9yVGVz
dExlc3NUaGFuKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0
RmFpbGVkKCJJbGxlZ2FsIHN0YWdlLiIpOworICAgIH0KKyAgICBzZWxmLnN0YWdlKys7Cit9CisK
K2Z1bmN0aW9uIGFzY2VuZGluZ0Vycm9yVGVzdExlc3NUaGFuKCkKK3sKKyAgICBkZWJ1ZygiIik7
CisgICAgdmFyIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5vcGVuS2V5Q3Vyc29y
KG51bGwsIElEQkN1cnNvci5ORVhUKSIpOworICAgIHNlbGYuc3RhZ2UgPSAwOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGlmIChzZWxmLnN0YWdlID09PSAwKSB7CisgICAg
ICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjAiKTsK
KyAgICAgICAgICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoMy4x
NDE1OSkiKTsKKyAgICAgICAgfSBlbHNlIGlmIChzZWxmLnN0YWdlID09IDEpIHsKKyAgICAgICAg
ICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMyIpOworICAg
ICAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250
aW51ZSgxKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworICAgICAgICAgICAg
YXNjZW5kaW5nRXJyb3JUZXN0RXF1YWwoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgdGVzdEZhaWxlZCgiSWxsZWdhbCBzdGFnZS4iKTsKKyAgICAg
ICAgfQorICAgICAgICBzZWxmLnN0YWdlKys7CisgICAgfTsKK30KKworZnVuY3Rpb24gYXNjZW5k
aW5nRXJyb3JUZXN0RXF1YWwoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICB2YXIgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImluZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3IobnVsbCwgSURCQ3Vyc29yLk5F
WFQpIik7CisgICAgc2VsZi5zdGFnZSA9IDA7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsK
KyAgICAgICAgaWYgKHNlbGYuc3RhZ2UgPT09IDApIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJl
dmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMCIpOworICAgICAgICAgICAgZXZhbEFu
ZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgzLjE0MTU5KSIpOworICAgICAgICB9
IGVsc2UgaWYgKHNlbGYuc3RhZ2UgPT0gMSkgeworICAgICAgICAgICAgc2hvdWxkQmUoImV2ZW50
LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICIzIik7CisgICAgICAgICAgICBldmFsQW5kRXhw
ZWN0RXhjZXB0aW9uKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKDMuMTQxNTkpIiwgIklE
QkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisgICAgICAgICAgICBkZXNjZW5kaW5nRXJy
b3JUZXN0R3JlYXRlclRoYW4oKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgdGVzdEZhaWxlZCgiSWxsZWdhbCBzdGFnZS4iKTsKKyAgICAgICAgfQor
ICAgICAgICBzZWxmLnN0YWdlKys7CisgICAgfTsKK30KKworZnVuY3Rpb24gZGVzY2VuZGluZ0Vy
cm9yVGVzdEdyZWF0ZXJUaGFuKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgdmFyIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleE9iamVjdC5vcGVuS2V5Q3Vyc29yKG51bGwsIElEQkN1cnNvci5Q
UkVWKSIpOworICAgIHNlbGYuc3RhZ2UgPSAwOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7
CisgICAgICAgIGlmIChzZWxmLnN0YWdlID09IDApIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJl
dmVudC50YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiMTciKTsKKyAgICAgICAgICAgIGV2YWxB
bmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoJ0EgYml0MicpIik7CisgICAgICAg
IH0gZWxzZSBpZiAoc2VsZi5zdGFnZSA9PSAxKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiZXZl
bnQudGFyZ2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjE1Iik7CisgICAgICAgICAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCdBIGJpdDMnKSIs
ICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworICAgICAgICAgICAgZGVzY2VuZGlu
Z0Vycm9yVGVzdEVxdWFsKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgIHRlc3RGYWlsZWQoIklsbGVnYWwgc3RhZ2UuIik7CisgICAgICAgIH0KKyAg
ICAgICAgc2VsZi5zdGFnZSsrOworICAgIH07Cit9CisKK2Z1bmN0aW9uIGRlc2NlbmRpbmdFcnJv
clRlc3RFcXVhbCgpCit7CisgICAgZGVidWcoIiIpOworICAgIHZhciByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhPYmplY3Qub3BlbktleUN1cnNvcihudWxsLCBJREJDdXJzb3IuUFJFVikiKTsK
KyAgICBzZWxmLnN0YWdlID0gMDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICBpZiAoc2VsZi5zdGFnZSA9PSAwKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFy
Z2V0LnJlc3VsdC5wcmltYXJ5S2V5IiwgIjE3Iik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJl
dmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCdBIGJpdDInKSIpOworICAgICAgICB9IGVsc2Ug
aWYgKHNlbGYuc3RhZ2UgPT0gMSkgeworICAgICAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdl
dC5yZXN1bHQucHJpbWFyeUtleSIsICIxNSIpOworICAgICAgICAgICAgZXZhbEFuZExvZygiY3Vy
c29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgICAgICAgICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgnQSBiaXQyJykiLCAiSURCRGF0
YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKyAgICAgICAgICAgIHNlbGYudHJhbnMub25jb21w
bGV0ZSA9IG9uVHJhbnNhY3Rpb25Db21wbGV0ZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgdGVzdEZhaWxlZCgiSWxsZWdhbCBzdGFnZS4iKTsKKyAg
ICAgICAgfQorICAgICAgICBzZWxmLnN0YWdlKys7CisgICAgfTsKK30KKworZnVuY3Rpb24gb25U
cmFuc2FjdGlvbkNvbXBsZXRlKCkKK3sKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJjdXJz
b3IuY29udGludWUoKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElW
RV9FUlIiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1kZWxldGUuanMg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWRlbGV0ZS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kYjZlMmI5MzU0OGEzYTQ5ZGI1NGIwZDcyMDAxNTg4NGMxMmViMzM2Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L2N1cnNvci1kZWxldGUuanMKQEAgLTAsMCArMSwxMDUgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlw
dHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNj
cmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBvcGVuQ3Vyc29yLiIpOworCit0ZXN0KCk7CisKK2Z1
bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdjdXJzb3ItZGVsZXRlJykiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7Cisg
ICAgdmFyIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNp
b25TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKKyAgICBz
ZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Cisg
ICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1
bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gb3BlbkN1cnNv
cjsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICB2YXIgb2JqZWN0U3Rv
cmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCd0ZXN0
JykiKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ215VmFsdWUxJywgJ215S2V5
MScpIik7CisgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlMicsICdteUtl
eTInKSIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnbXlWYWx1ZTMnLCAnbXlL
ZXkzJykiKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ215VmFsdWU0JywgJ215
S2V5NCcpIik7Cit9CisKK2Z1bmN0aW9uIG9wZW5DdXJzb3IoKQoreworICAgIGRlYnVnKCJvcGVu
Q3Vyc29yMSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWyd0ZXN0
J10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAga2V5UmFuZ2UgPSBJREJLZXlS
YW5nZS5sb3dlckJvdW5kKCJteUtleTEiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJh
bnMub2JqZWN0U3RvcmUoJ3Rlc3QnKS5vcGVuQ3Vyc29yKHtyYW5nZToga2V5UmFuZ2V9KSIpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29yU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBjb3VudGVyID0gMTsKK30KKworZnVu
Y3Rpb24gY3Vyc29yU3VjY2VzcygpCit7CisgICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0g
bnVsbCkgeworICAgICAgICBzaG91bGRCZSgiY291bnRlciIsICI1Iik7CisgICAgICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgndGVzdCcpLm9wZW5DdXJzb3Ioa2V5
UmFuZ2UpIik7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29yRW1wdHk7CisgICAg
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuZGVsZXRl
KCkiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQudmFs
dWUiLCAibXlWYWx1ZSIgKyBjb3VudGVyKyspOworICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdl
dC5yZXN1bHQuY29udGludWUoKSIpOworfQorCitmdW5jdGlvbiBjdXJzb3JFbXB0eSgpCit7Cisg
ICAgc2hvdWxkQmVOdWxsKCJldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgdHJhbnMub25jb21w
bGV0ZSA9IGFkZE9iamVjdDsKK30KKworZnVuY3Rpb24gYWRkT2JqZWN0KCkKK3sKKyAgICBldmFs
QW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsndGVzdCddLCBJREJUcmFuc2FjdGlvbi5S
RUFEX1dSSVRFKSIpOworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUg
PSB0cmFucy5vYmplY3RTdG9yZSgndGVzdCcpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
Im9iamVjdFN0b3JlLmFkZCgnbXlWYWx1ZTEnLCAnbXlLZXkxJykiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IG9wZW5DdXJzb3IyOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuQ3Vyc29yMigpCit7CisgICAgZGVidWco
Im9wZW5DdXJzb3IyIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLm9w
ZW5DdXJzb3Ioa2V5UmFuZ2UpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVPYmpl
Y3Q7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIGRlbGV0ZU9iamVjdCgpCit7CisgICAgc2hvdWxkQmVOb25OdWxsKGV2ZW50LnRh
cmdldC5yZXN1bHQpOworICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuZGVsZXRl
KCkiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUuZ2V0KCdteUtleTEn
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdmVyaWZ5T2JqZWN0RGVsZXRlZDsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
dmVyaWZ5T2JqZWN0RGVsZXRlZCgpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1
bHQiLCAidW5kZWZpbmVkIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL2N1cnNvci1pbmNvbnNpc3RlbmN5LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1pbmNvbnNpc3RlbmN5LmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUw
Njc3OWQ3YjVlM2Y5OWRmNmM1ODZlZGMyN2U3NDNiOTgwZWE1YjcKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLWluY29uc2lz
dGVuY3kuanMKQEAgLTAsMCArMSw4NSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAg
IGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Jyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJU
ZXN0IGNvbnNpc3RlbmN5IG9mIEluZGV4ZWREQidzIGN1cnNvciBvYmplY3RzLiIpOworCit0ZXN0
KCk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Cisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdjdXJzb3ItaW5jb25zaXN0
ZW5jeScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3Bl
blN1Y2Nlc3MoKQoreworICAgIHZhciBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25l
dyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb25TdWNjZXNz
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCit7CisgICAgZGVidWcoInNldFZlcnNpb25TdWNj
ZXNzKCk6Iik7CisgICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFy
Z2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKyAgICB0
cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21w
bGV0ZSA9IG9wZW5CYXNpY0N1cnNvcjsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7
CisKKyAgICB2YXIgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCdiYXNpY1N0b3JlJykiKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZS5hZGQoJ3NvbWVWYWx1ZTEnLCAnc29tZUtleTEnKS5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2siKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ3NvbWVWYWx1
ZTInLCAnc29tZUtleTInKS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKKyAg
ICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ3NvbWVWYWx1ZTMnLCAnc29tZUtleTMnKS5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKKyAgICBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZS5hZGQoJ3NvbWVWYWx1ZTQnLCAnc29tZUtleTQnKS5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2siKTsKKworfQorCitmdW5jdGlvbiBvcGVuQmFzaWNDdXJzb3IoKQorewor
ICAgIGRlYnVnKCJvcGVuQmFzaWNDdXJzb3IoKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zID0g
ZGIudHJhbnNhY3Rpb24oWydiYXNpY1N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUp
Iik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRy
YW5zLm9uY29tcGxldGUgPSB0cmFuc2FjdGlvbkNvbXBsZXRlOworCisgICAga2V5UmFuZ2UgPSBJ
REJLZXlSYW5nZS5sb3dlckJvdW5kKCJzb21lS2V5MSIpOworICAgIHNlbGYub2JqZWN0U3RvcmUg
PSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYmFzaWNTdG9yZScpIik7CisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLm9wZW5DdXJzb3Ioa2V5UmFuZ2UpIik7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjaGVja0N1cnNvcjsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBjb3VudGVyID0gMTsKK30KKworc3RvcmVk
Q3Vyc29yID0gbnVsbDsKK2Z1bmN0aW9uIGNoZWNrQ3Vyc29yKCkKK3sKKyAgICBkZWJ1ZygiIikK
KyAgICBkZWJ1ZygiY2hlY2tDdXJzb3IoKSIpOworICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0
ID09IG51bGwpIHsKKyAgICAgICAgc2hvdWxkQmUoImNvdW50ZXIiLCAiNSIpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGlmIChzdG9yZWRDdXJzb3IgPT0gbnVsbCkKKyAgICAgIHN0b3Jl
ZEN1cnNvciA9IGV2YWxBbmRMb2coInN0b3JlZEN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKKworICAgIHNob3VsZEJlVHJ1ZSgic3RvcmVkQ3Vyc29yID09PSBldmVudC50YXJnZXQucmVz
dWx0Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzdG9yZWRDdXJzb3Iua2V5IiwgInNv
bWVLZXkiICsgY291bnRlcik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJn
ZXQucmVzdWx0LmtleSIsICJzb21lS2V5IiArIGNvdW50ZXIpOworICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygic3RvcmVkQ3Vyc29yLnZhbHVlIiwgInNvbWVWYWx1ZSIgKyBjb3VudGVyKTsKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUiLCAic29t
ZVZhbHVlIiArIGNvdW50ZXIpOworICAgIGNvdW50ZXIrKzsKKyAgICBldmFsQW5kTG9nKCJldmVu
dC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKK30KKworZnVuY3Rpb24gdHJhbnNhY3Rpb25D
b21wbGV0ZSgpCit7CisgICAgZGVidWcoInRyYW5zYWN0aW9uQ29tcGxldGUoKSIpOworICAgIGZp
bmlzaEpTVGVzdCgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItaW5kZXgtZGVs
ZXRlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1p
bmRleC1kZWxldGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmJlZWVhMjNhMTBmZjgzMTZhNDA1NTM5OTFkMjli
ZTViYzg2MjcwZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9jdXJzb3ItaW5kZXgtZGVsZXRlLmpzCkBAIC0wLDAgKzEsMTA5IEBACitp
ZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFy
ZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mgb3BlbkN1cnNvci4i
KTsKKwordGVzdCgpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVm
aXhlcygpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignY3Vyc29y
LWluZGV4LWRlbGV0ZScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIHZhciBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZl
cnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNp
b25TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCit7CisgICAgZGVidWcoInNldFZl
cnNpb25TdWNjZXNzKCk6Iik7CisgICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwi
KTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJh
bnMub25jb21wbGV0ZSA9IG9wZW5DdXJzb3I7CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMo
ZGIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCd0ZXN0JykiKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5j
cmVhdGVJbmRleCgndGVzdEluZGV4JywgJ3gnKSIpOworCisgICAgZXZhbEFuZExvZygib2JqZWN0
U3RvcmUuYWRkKHt4OiAxfSwgJ215S2V5MScpIik7CisgICAgZXZhbEFuZExvZygib2JqZWN0U3Rv
cmUuYWRkKHt4OiAyfSwgJ215S2V5MicpIik7CisgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUu
YWRkKHt4OiAzfSwgJ215S2V5MycpIik7CisgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRk
KHt4OiA0fSwgJ215S2V5NCcpIik7Cit9CisKK2Z1bmN0aW9uIG9wZW5DdXJzb3IoKQoreworICAg
IGRlYnVnKCJvcGVuQ3Vyc29yMSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNh
Y3Rpb24oWyd0ZXN0J10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAga2V5UmFu
Z2UgPSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKDEpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJ0cmFucy5vYmplY3RTdG9yZSgndGVzdCcpLmluZGV4KCd0ZXN0SW5kZXgnKS5vcGVuQ3Vyc29y
KGtleVJhbmdlKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29yU3VjY2VzczsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBjb3VudGVy
ID0gMTsKK30KKworZnVuY3Rpb24gY3Vyc29yU3VjY2VzcygpCit7CisgICAgaWYgKGV2ZW50LnRh
cmdldC5yZXN1bHQgPT0gbnVsbCkgeworICAgICAgICBzaG91bGRCZSgiY291bnRlciIsICI1Iik7
CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgndGVzdCcp
LmluZGV4KCd0ZXN0SW5kZXgnKS5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOworICAgICAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvckVtcHR5OworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB2YXIg
ZGVsZXRlUmVxdWVzdCA9IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuZGVsZXRlKCki
KTsKKyAgICBkZWxldGVSZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAiY291bnRlcisrIik7Cisg
ICAgZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7Cit9CisKK2Z1
bmN0aW9uIGN1cnNvckVtcHR5KCkKK3sKKyAgICBzaG91bGRCZU51bGwoImV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gYWRkT2JqZWN0OworfQorCitmdW5jdGlv
biBhZGRPYmplY3QoKQoreworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24o
Wyd0ZXN0J10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgb2JqZWN0U3RvcmUg
PSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCd0ZXN0JykiKTsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKHt4OiAxfSwgJ215S2V5
MScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuQ3Vyc29yMjsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlbkN1
cnNvcjIoKQoreworICAgIGRlYnVnKCJvcGVuQ3Vyc29yMiIpOworICAgIGV2YWxBbmRMb2coImlu
ZGV4ID0gZXZlbnQudGFyZ2V0LnNvdXJjZS5pbmRleCgndGVzdEluZGV4JykiKTsKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXgub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZU9iamVjdDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVsZXRlT2JqZWN0KCkKK3sKKyAg
ICBzaG91bGRCZU5vbk51bGwoZXZlbnQudGFyZ2V0LnJlc3VsdCk7CisgICAgZXZhbEFuZExvZygi
ZXZlbnQudGFyZ2V0LnJlc3VsdC5kZWxldGUoKSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJpbmRleC5nZXQoMSkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHZlcmlmeU9iamVjdERl
bGV0ZWQ7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIHZlcmlmeU9iamVjdERlbGV0ZWQoKQoreworICAgIHNob3VsZEJlKCJldmVu
dC50YXJnZXQucmVzdWx0IiwgInVuZGVmaW5lZCIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3Ita2V5LW9yZGVyLmpzIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1rZXktb3JkZXIuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNzVjMjE5OTNmZDcyMGFhZjc1NTA3Njk0MTFlZWFiYjU2ZjRjNDA2NwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3Ita2V5
LW9yZGVyLmpzCkBAIC0wLDAgKzEsMjI1IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Cisg
ICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24o
IlRlc3QgSW5kZXhlZERCIGtleXMgb3JkZXJpbmcgYW5kIHJlYWRiYWNrIGZyb20gY3Vyc29ycy4i
KTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKwor
ICAgIHByZXBhcmVEYXRhYmFzZSgpOworfQorCitmdW5jdGlvbiBwcmVwYXJlRGF0YWJhc2UoKQor
eworICAgIGRlYnVnKCIiKTsKKyAgICBldmFsQW5kTG9nKCJvcGVucmVxID0gaW5kZXhlZERCLm9w
ZW4oJ2N1cnNvci1rZXktb3JkZXInKSIpOworICAgIG9wZW5yZXEub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworICAgIG9wZW5yZXEub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgIGV2YWxBbmRMb2coImRiID0gb3BlbnJlcS5yZXN1bHQiKTsKKyAgICAgICAgZXZhbEFu
ZExvZygidmVycmVxID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgICAgIHZlcnJlcS5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHZlcnJlcS5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0
b3JlKCdzdG9yZScpIik7CisgICAgICAgICAgICB2ZXJyZXEucmVzdWx0Lm9uY29tcGxldGUgPSBw
b3B1bGF0ZVN0b3JlOworICAgICAgICB9OworICAgIH07Cit9CisKK3NlbGYua2V5cyA9IFsKKyAg
ICAiLUluZmluaXR5IiwKKyAgICAiLU51bWJlci5NQVhfVkFMVUUiLAorICAgICItMSIsCisgICAg
Ii1OdW1iZXIuTUlOX1ZBTFVFIiwKKyAgICAiMCIsCisgICAgIk51bWJlci5NSU5fVkFMVUUiLAor
ICAgICIxIiwKKyAgICAiTnVtYmVyLk1BWF9WQUxVRSIsCisgICAgIkluZmluaXR5IiwKKworICAg
ICJuZXcgRGF0ZSgwKSIsCisgICAgIm5ldyBEYXRlKDEwMDApIiwKKyAgICAibmV3IERhdGUoMTMx
NzM5OTkzMTAyMykiLAorCisgICAgIicnIiwKKyAgICAiJ1x4MDAnIiwKKyAgICAiJ2EnIiwKKyAg
ICAiJ2FhJyIsCisgICAgIidiJyIsCisgICAgIidiYSciLAorCisgICAgIidceEEyJyIsIC8vIFUr
MDBBMiBDRU5UIFNJR04KKyAgICAiJ1x1NkMzNCciLCAvLyBVKzZDMzQgQ0pLIFVOSUZJRUQgSURF
T0dSQVBIICh3YXRlcikKKyAgICAiJ1x1RDgzNFx1REQxRSciLCAvLyBVKzFEMTFFIE1VU0lDQUwg
U1lNQk9MIEctQ0xFRiAoVVRGLTE2IHN1cnJvZ2F0ZSBwYWlyKQorICAgICInXHVGRkZEJyIsIC8v
IFUrRkZGRCBSRVBMQUNFTUVOVCBDSEFSQUNURVIKKworICAgICJbXSIsCisKKyAgICAiWy1JbmZp
bml0eV0iLAorICAgICJbLU51bWJlci5NQVhfVkFMVUVdIiwKKyAgICAiWy0xXSIsCisgICAgIlst
TnVtYmVyLk1JTl9WQUxVRV0iLAorICAgICJbMF0iLAorICAgICJbTnVtYmVyLk1JTl9WQUxVRV0i
LAorICAgICJbMV0iLAorICAgICJbTnVtYmVyLk1BWF9WQUxVRV0iLAorICAgICJbSW5maW5pdHld
IiwKKworICAgICJbbmV3IERhdGUoMCldIiwKKyAgICAiW25ldyBEYXRlKDEwMDApXSIsCisgICAg
IltuZXcgRGF0ZSgxMzE3Mzk5OTMxMDIzKV0iLAorCisgICAgIlsnJ10iLAorICAgICJbJ1x4MDAn
XSIsCisgICAgIlsnYSddIiwKKyAgICAiWydhYSddIiwKKyAgICAiWydiJ10iLAorICAgICJbJ2Jh
J10iLAorCisgICAgIlsnXHhBMiddIiwgLy8gVSswMEEyIENFTlQgU0lHTgorICAgICJbJ1x1NkMz
NCddIiwgLy8gVSs2QzM0IENKSyBVTklGSUVEIElERU9HUkFQSCAod2F0ZXIpCisgICAgIlsnXHVE
ODM0XHVERDFFJ10iLCAvLyBVKzFEMTFFIE1VU0lDQUwgU1lNQk9MIEctQ0xFRiAoVVRGLTE2IHN1
cnJvZ2F0ZSBwYWlyKQorICAgICJbJ1x1RkZGRCddIiwgLy8gVStGRkZEIFJFUExBQ0VNRU5UIENI
QVJBQ1RFUgorCisgICAgIltbXV0iLAorCisgICAgIltbXSwgW11dIiwKKyAgICAiW1tdLCBbXSwg
W11dIiwKKworICAgICJbW1tdXV0iLAorICAgICJbW1tbXV1dXSIKK107CisKK2Z1bmN0aW9uIGNv
bXBhcmUoYSwgYikKK3sKKyAgICBpZiAodHlwZW9mIGEgIT09IHR5cGVvZiBiKSB7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHR5cGVvZiBhKSB7CisgICAgICAg
IGNhc2UgJ3VuZGVmaW5lZCc6IC8vIE5vdCB2YWxpZCBrZXlzLCBidXQgY29tcGFyZSBhbnl3YXku
CisgICAgICAgIGNhc2UgJ2Jvb2xlYW4nOiAvLyBOb3QgdmFsaWQga2V5cywgYnV0IGNvbXBhcmUg
YW55d2F5LgorICAgICAgICBjYXNlICdzdHJpbmcnOgorICAgICAgICAgICAgcmV0dXJuIGEgPT09
IGI7CisgICAgICAgIGNhc2UgJ251bWJlcic6CisgICAgICAgICAgICBpZiAoYSA9PT0gYikgewor
ICAgICAgICAgICAgICAgIHJldHVybiAoYSAhPT0gMCkgfHwgKDEgLyBhID09PSAxIC8gYik7IC8v
IDAgaXNuJ3QgLTAKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGEgIT09IGEgJiYgYiAhPT0gYjsgLy8gTmFOIGlzIE5hTgorICAgICAgICAgICAgfQorICAgICAg
ICBjYXNlICdvYmplY3QnOgorICAgICAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBEYXRlICYmIGIg
aW5zdGFuY2VvZiBEYXRlKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICthID09PSArYjsKKyAg
ICAgICAgICAgIH0gZWxzZSBpZiAoYSBpbnN0YW5jZW9mIEFycmF5ICYmIGIgaW5zdGFuY2VvZiBB
cnJheSkgeworICAgICAgICAgICAgICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKCFjb21wYXJlKGFbaV0sIGJbaV0pKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAvLyBGb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgdGVzdCwgb3RoZXIgb2JqZWN0cyBk
b24ndCBjb3VudAorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworZnVuY3Rpb24gcG9wdWxhdGVT
dG9yZSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJwb3B1bGF0aW5nIHN0b3JlLi4u
Iik7CisgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJU
cmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMu
b2JqZWN0U3RvcmUoJ3N0b3JlJyk7Iik7CisgICAgdHJhbnMub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFj
azsKKyAgICB2YXIgY291bnQgPSAwOworICAgIGtleXMuZm9yRWFjaChmdW5jdGlvbihrZXkpIHsK
KyAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCIgKyAoY291bnQrKykgKyAiLCAiICsga2V5
ICsgIikiKTsKKyAgICB9KTsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gY2hlY2tTdG9yZTsKK30K
KworZnVuY3Rpb24gY2hlY2tTdG9yZSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJp
dGVyYXRpbmcgY3Vyc29yLi4uIik7CisgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2Fj
dGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7CisgICAgZXZhbEFuZExv
Zygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsiKTsKKyAgICB0cmFucy5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhw
ZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIGV2YWxBbmRMb2coImNvdW50ID0gMCIpOworICAgIGN1
cnJlcSA9IGV2YWxBbmRMb2coImN1cnJlcSA9IHN0b3JlLm9wZW5DdXJzb3IoKSIpOworICAgIGN1
cnJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgY3VycmVxLm9uc3Vj
Y2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAoY3VycmVxLnJlc3VsdCkgeworICAgICAg
ICAgICAgZXZhbEFuZExvZygiY3Vyc29yID0gY3VycmVxLnJlc3VsdCIpOworICAgICAgICAgICAg
c2hvdWxkQmVUcnVlKCJjb21wYXJlKGN1cnNvci5rZXksICIgKyBrZXlzW2NvdW50XSArICIpIik7
CisgICAgICAgICAgICBldmFsQW5kTG9nKCJnZXRyZXEgPSBzdG9yZS5nZXQoY3Vyc29yLmtleSki
KTsKKyAgICAgICAgICAgIGdldHJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CisgICAgICAgICAgICBnZXRyZXEub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgc2hvdWxkQmVUcnVlKCJnZXRyZXEucmVzdWx0ID09PSBjb3VudCsrIik7CisgICAgICAg
ICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7CisgICAgICAgICAgICB9OworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJjb3VudCA9PT0ga2V5cy5sZW5ndGgiKTsK
KyAgICAgICAgICAgIGZpbmlzaFVwKCk7CisgICAgICAgIH0KKyAgICB9OworfQorCitmdW5jdGlv
biBmaW5pc2hVcCgpCit7CisgICAgdGVzdEtleUNvbXBhcmUoKTsKKyAgICBmaW5pc2hKU1Rlc3Qo
KTsKK30KKworZnVuY3Rpb24gdGVzdEtleUNvbXBhcmUoKQoreworICAgIGRlYnVnKCIiKTsKKyAg
ICBkZWJ1ZygidmFsaWRhdGUgY29tcGFyZSBmdW5jdGlvbiIpOworICAgIHZhciBjYXNlcyA9IFsK
KyAgICAgICAgInVuZGVmaW5lZCIsCisgICAgICAgICJ0cnVlIiwKKyAgICAgICAgImZhbHNlIiwK
KyAgICAgICAgIjAiLAorICAgICAgICAiLTAiLAorICAgICAgICAiMTIzIiwKKyAgICAgICAgIklu
ZmluaXR5IiwKKyAgICAgICAgIi1JbmZpbml0eSIsCisgICAgICAgICJOYU4iLAorICAgICAgICAi
JyciLAorICAgICAgICAiJ2FiYyciLAorICAgICAgICAiJ3h5eiciLAorICAgICAgICAibmV3IERh
dGUoMCkiLAorICAgICAgICAibmV3IERhdGUoMWUzKSIsCisgICAgICAgICJuZXcgRGF0ZSgxZTkp
IiwKKyAgICAgICAgIltdIiwKKyAgICAgICAgIlsxMjNdIiwKKyAgICAgICAgIlsnYWJjJ10iLAor
ICAgICAgICAiWzEyMywgJ2FiYyddIiwKKyAgICAgICAgIlsnYWJjJywgMTIzXSIsCisgICAgICAg
ICJbW11dIiwKKyAgICAgICAgIltbMTIzXV0iLAorICAgICAgICAiW1snYWJjJ11dIiwKKyAgICAg
ICAgIltbMTIzXSwgJ2FiYyddIiwKKyAgICAgICAgIltbMTIzXSwgMTIzXSIKKyAgICBdOworCisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYXNlcy5sZW5ndGg7ICsraSkgeworICAgICAgICBmb3Ig
KHZhciBqID0gMDsgaiA8IGNhc2VzLmxlbmd0aDsgKytqKSB7CisgICAgICAgICAgICBpZiAoaSA9
PT0gaikgeworICAgICAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiY29tcGFyZSgiICsgY2FzZXNb
aV0gKyAiLCAiICsgY2FzZXNbal0gKyAiKSIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBzaG91bGRCZUZhbHNlKCJjb21wYXJlKCIgKyBjYXNlc1tpXSArICIsICIgKyBj
YXNlc1tqXSArICIpIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3Rl
c3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXByaW1hcnkta2V5LW9yZGVyLmpz
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1wcmltYXJ5
LWtleS1vcmRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTI5MTBjMzZiZDM0YmJkZjg4OWYzNzJjNjY1NmUy
NWZjNDZjZjRhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL2N1cnNvci1wcmltYXJ5LWtleS1vcmRlci5qcwpAQCAtMCwwICsxLDk4IEBA
CitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdz
aGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIHByaW1hcnkga2V5
IG9yZGVyaW5nIGFuZCByZWFkYmFjayBmcm9tIGN1cnNvcnMuIik7CisKK2Z1bmN0aW9uIHRlc3Qo
KQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBwcmVwYXJlRGF0YWJhc2Uo
KTsKK30KKworZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKCkKK3sKKyAgICBkZWJ1ZygiIik7Cisg
ICAgZXZhbEFuZExvZygib3BlblJlcXVlc3QgPSBpbmRleGVkREIub3BlbignY3Vyc29yLXByaW1h
cnkta2V5LW9yZGVyJykiKTsKKyAgICBvcGVuUmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisgICAgb3BlblJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgIGV2YWxBbmRMb2coImRiID0gb3BlblJlcXVlc3QucmVzdWx0Iik7CisgICAgICAgIGV2
YWxBbmRMb2coInZlcnNpb25DaGFuZ2VSZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7Cisg
ICAgICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKKyAgICAgICAgdmVyc2lvbkNoYW5nZVJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdzdG9yZScpIik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmNyZWF0
ZUluZGV4KCdpbmRleCcsICdpbmRleEtleScpIik7CisKKyAgICAgICAgICAgIHZlcnNpb25DaGFu
Z2VSZXF1ZXN0LnJlc3VsdC5vbmNvbXBsZXRlID0gcG9wdWxhdGVTdG9yZTsKKyAgICAgICAgfTsK
KyAgICB9OworfQorCitzZWxmLmtleXMgPSBbCisgICAgIi1JbmZpbml0eSIsCisgICAgIi0yIiwK
KyAgICAiLTEiLAorICAgICIwIiwKKyAgICAiMSIsCisgICAgIjIiLAorICAgICJJbmZpbml0eSIs
CisKKyAgICAiJzAnIiwKKyAgICAiJzEnIiwKKyAgICAiJzInIiwKKyAgICAiJ0EnIiwKKyAgICAi
J0InIiwKKyAgICAiJ0MnIiwKKyAgICAiJ2EnIiwKKyAgICAiJ2InIiwKKyAgICAiJ2MnIgorXTsK
KworZnVuY3Rpb24gcG9wdWxhdGVTdG9yZSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVn
KCJwb3B1bGF0aW5nIHN0b3JlLi4uIik7CisgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFu
c2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIGV2YWxB
bmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7Iik7CisgICAgdHJhbnMu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRyYW5zLm9uYWJvcnQgPSB1
bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB2YXIgY291bnQgPSAwOworICAgIHZhciBpbmRl
eEtleSA9IDA7CisgICAgdmFyIGtleXMgPSBzZWxmLmtleXMuc2xpY2UoKTsKKyAgICBrZXlzLnJl
dmVyc2UoKTsKKyAgICBrZXlzLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7CisgICAgICAgIHZhciB2
YWx1ZSA9IHsgaW5kZXhLZXk6IGluZGV4S2V5LCBjb3VudDogY291bnQrKyB9OworICAgICAgICBl
dmFsQW5kTG9nKCJzdG9yZS5wdXQoIiArIEpTT04uc3RyaW5naWZ5KHZhbHVlKSArICIsICIgKyBr
ZXkgKyAiKSIpOworICAgIH0pOworICAgIHRyYW5zLm9uY29tcGxldGUgPSBjaGVja1N0b3JlOwor
fQorCitmdW5jdGlvbiBjaGVja1N0b3JlKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWco
Iml0ZXJhdGluZyBjdXJzb3IuLi4iKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5z
YWN0aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkiKTsKKyAgICBldmFsQW5k
TG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpOyIpOworICAgIGV2YWxBbmRM
b2coImluZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4Jyk7Iik7CisgICAgdHJhbnMub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVk
QWJvcnRDYWxsYmFjazsKKyAgICBjdXJzb3JSZXF1ZXN0ID0gZXZhbEFuZExvZygiY3Vyc29yUmVx
dWVzdCA9IGluZGV4Lm9wZW5DdXJzb3IoKSIpOworICAgIGV2YWxBbmRMb2coImNvdW50ID0gMCIp
OworICAgIHZhciBpbmRleEtleSA9IDA7CisgICAgY3Vyc29yUmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgY3Vyc29yUmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbigpIHsKKyAgICAgICAgaWYgKGN1cnNvclJlcXVlc3QucmVzdWx0KSB7CisgICAgICAgICAg
ICBldmFsQW5kTG9nKCJjdXJzb3IgPSBjdXJzb3JSZXF1ZXN0LnJlc3VsdCIpOworICAgICAgICAg
ICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCBTdHJpbmcoaW5kZXhLZXkpKTsKKyAgICAgICAgICAg
IHNob3VsZEJlKCJjdXJzb3IucHJpbWFyeUtleSIsIHNlbGYua2V5c1tjb3VudCsrXSk7CisgICAg
ICAgICAgICBjdXJzb3IuY29udGludWUoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IHNob3VsZEJlVHJ1ZSgiY291bnQgPT09IGtleXMubGVuZ3RoIik7CisgICAgICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKKyAgICAgICAgfQorICAgIH07Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvY3Vyc29yLXJldmVyc2UtYnVnLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1yZXZlcnNlLWJ1Zy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDhl
YWRlYThjODNkZTQ4MmYxMGYwOGQ4ZjAyM2JiZjBmOWMyOTQzCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1yZXZlcnNlLWJ1
Zy5qcwpAQCAtMCwwICsxLDEwMSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGlt
cG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7
CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0
IEluZGV4ZWREQiBrZXlzIG9yZGVyaW5nIGFuZCByZWFkYmFjayBmcm9tIGN1cnNvcnMuIik7CisK
K2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBw
cmVwYXJlRGF0YWJhc2UoKTsKK30KKworZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKCkKK3sKKyAg
ICBkZWJ1ZygiIik7CisgICAgZXZhbEFuZExvZygib3BlbnJlcSA9IGluZGV4ZWREQi5vcGVuKCdj
dXJzb3ItcmV2ZXJzZS1idWcnKSIpOworICAgIG9wZW5yZXEub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworICAgIG9wZW5yZXEub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAg
ICAgIGV2YWxBbmRMb2coImRiID0gb3BlbnJlcS5yZXN1bHQiKTsKKyAgICAgICAgZXZhbEFuZExv
ZygidmVycmVxID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgICAgIHZlcnJlcS5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHZlcnJlcS5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisgICAg
ICAgICAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUo
J3N0b3JlJykiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdp
bmRleCcsICcnKSIpOworICAgICAgICAgICAgdmVycmVxLnJlc3VsdC5vbmNvbXBsZXRlID0gcG9w
dWxhdGVTdG9yZTsKKyAgICAgICAgfTsKKyAgICB9OworfQorCitmdW5jdGlvbiBwb3B1bGF0ZVN0
b3JlKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInBvcHVsYXRpbmcgc3RvcmUuLi4i
KTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRy
YW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5v
YmplY3RTdG9yZSgnc3RvcmUnKTsiKTsKKyAgICB0cmFucy5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNr
OworCisgICAgZXZhbEFuZExvZygic3RvcmUucHV0KDEsIDEpIik7CisgICAgZXZhbEFuZExvZygi
c3RvcmUucHV0KDIsIDIpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUucHV0KDMsIDMpIik7Cisg
ICAgdHJhbnMub25jb21wbGV0ZSA9IHRlc3RDdXJzb3I7Cit9CisKK3ZhciB0ZXN0cyA9IFsKKyAg
ICAgICAgICAgICAgICB7dXBwZXJCb3VuZDogNywgb3BlbjogZmFsc2UsIGV4cGVjdGVkOiAzfSwK
KyAgICAgICAgICAgICAgICB7dXBwZXJCb3VuZDogNywgb3BlbjogdHJ1ZSwgIGV4cGVjdGVkOiAz
fSwKKyAgICAgICAgICAgICAgICB7dXBwZXJCb3VuZDogMywgb3BlbjogZmFsc2UsIGV4cGVjdGVk
OiAzfSwKKyAgICAgICAgICAgICAgICB7dXBwZXJCb3VuZDogMywgb3BlbjogdHJ1ZSwgIGV4cGVj
dGVkOiAyfQorICAgICAgICAgICAgXTsKKworZnVuY3Rpb24gdGVzdEN1cnNvcigpCit7CisgICAg
ZGVidWcoInRlc3RDdXJzb3IoKSIpOworCisgICAgaWYgKHRlc3RzLmxlbmd0aCA9PT0gMCkgewor
ICAgICAgICBkZWJ1ZygiTm8gbW9yZSB0ZXN0cy4iKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB0ZXN0ID0gdGVzdHMuc2hpZnQoKTsKKwor
ICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNh
Y3Rpb24uUkVBRF9PTkxZKSIpOworICAgIHRyYW5zLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Cisg
ICAgdHJhbnMub25jb21wbGV0ZSA9IHRlc3RDdXJzb3I7CisgICAgZXZhbEFuZExvZygic3RvcmUg
PSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsiKTsKKyAgICBldmFsQW5kTG9nKCJpbmRleCA9
IHN0b3JlLmluZGV4KCdpbmRleCcpOyIpOworCisgICAgdmFyIHRlc3RGdW5jdGlvbiA9IGZ1bmN0
aW9uKCkgeworICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7CisgICAgICAgIGlmIChjdXJzb3IgPT09IG51bGwpIHsKKyAgICAgICAgICAgIGRlYnVnKCJj
dXJzb3Igc2hvdWxkIG5vdCBiZSBudWxsIik7CisgICAgICAgICAgICBmYWlsKCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIs
ICJ0ZXN0LmV4cGVjdGVkIik7CisgICAgICAgIGlmICgidmFsdWUiIGluIGN1cnNvcikKKyAgICAg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAidGVzdC5leHBlY3RlZCIpOworICAgICAg
ICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAidGVzdC5leHBlY3RlZCIpOworCisgICAg
ICAgIC8vIExldCB0aGUgdHJhbnNhY3Rpb24gZmluaXNoLgorICAgIH0KKworICAgIGRlYnVnKCJ1
cHBlckJvdW5kOiAiICsgdGVzdC51cHBlckJvdW5kICsgIiBvcGVuOiAiICsgdGVzdC5vcGVuICsg
IiBleHBlY3RlZDogIiArIHRlc3QuZXhwZWN0ZWQpOworICAgIHN0b3JlUmVxID0gZXZhbEFuZExv
Zygic3RvcmVSZXEgPSBzdG9yZS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQodGVz
dC51cHBlckJvdW5kLCB0ZXN0Lm9wZW4pLCBJREJDdXJzb3IuUFJFVikiKTsKKyAgICBzdG9yZVJl
cS5vbnN1Y2Nlc3MgPSB0ZXN0RnVuY3Rpb247CisKKyAgICBpbmRleFJlcSA9IGV2YWxBbmRMb2co
ImluZGV4UmVxID0gaW5kZXgub3BlbkN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKHRlc3Qu
dXBwZXJCb3VuZCwgdGVzdC5vcGVuKSwgSURCQ3Vyc29yLlBSRVYpIik7CisgICAgaW5kZXhSZXEu
b25zdWNjZXNzID0gdGVzdEZ1bmN0aW9uOworCisgICAgaW5kZXhLZXlSZXEgPSBldmFsQW5kTG9n
KCJpbmRleEtleVJlcSA9IGluZGV4Lm9wZW5LZXlDdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3Vu
ZCh0ZXN0LnVwcGVyQm91bmQsIHRlc3Qub3BlbiksIElEQkN1cnNvci5QUkVWKSIpOworICAgIGlu
ZGV4S2V5UmVxLm9uc3VjY2VzcyA9IHRlc3RGdW5jdGlvbjsKK30KKwordGVzdCgpOwpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9jdXJzb3Itc2tpcC1kZWxldGVkLmpzIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2N1cnNvci1za2lwLWRlbGV0ZWQuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjBlNGQ0MWJjNTI0NGE1ZDUzNDhjMWMwMzE0OTQ4MDEzYTUyYjdkNwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9jdXJzb3Itc2tp
cC1kZWxldGVkLmpzCkBAIC0wLDAgKzEsMTkzIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7
CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRp
b24oIlRlc3QgSW5kZXhlZERCJ3MgY3Vyc29yIHNraXBzIGRlbGV0ZWQgZW50cmllcy4iKTsKKwor
dmFyIG5hbWVzID0gWydBbHBoYScsICdCcmF2bycsICdDaGFybGllJywgJ0RlbHRhJywgJ0VjaG8n
LCAnRm94dHJvdCcsICdHb2xmJywKKyAgICAgICAgICAgICAnSG90ZWwnLCAnSW5kaWEnLCAnSnVs
aWV0JywgJ0tpbG8nLCAnTGltYScsICdNaWtlJywgJ05vdmVtYmVyJywKKyAgICAgICAgICAgICAn
T3NjYXInLCAnUGFwYScsICdRdWViZWMnLCAnUm9tZW8nLCAnU2llcnJhJywgJ1RhbmdvJywgJ1Vu
aWZvcm0nLAorICAgICAgICAgICAgICdWaWN0b3InLCAnV2hpc2tleScsICdYLXJheScsICdZYW5r
ZWUnLCAnWnVsdSddOworCit0ZXN0KCk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92
ZVZlbmRvclByZWZpeGVzKCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5v
cGVuKCdjdXJzb3Itc2tpcC1kZWxldGVkJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9w
ZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgdmFyIGRiID0gZXZhbEFuZExv
ZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gc2V0VmVyc2lvblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb25TdWNjZXNzKCkKK3sKKyAgICBk
ZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKKyAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExv
ZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFu
cyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFj
azsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gYmFzaWNDdXJzb3JUZXN0OworCisgICAgZGVsZXRl
QWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIHZhciBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2co
Im9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJywge2tleVBhdGg6ICdp
ZCd9KSIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCduYW1lSW5k
ZXgnLCAnbmFtZScpIik7CisgICAgcmVzZXRPYmplY3RTdG9yZShmdW5jdGlvbigpIHt9KTsKK30K
KwordmFyIHNpbGVudEVycm9ySGFuZGxlciA9IGZ1bmN0aW9uKCkgeyBldmVudC5wcmV2ZW50RGVm
YXVsdCgpOyB9CisKK2Z1bmN0aW9uIHJlc2V0T2JqZWN0U3RvcmUoY2FsbGJhY2spCit7CisgICAg
ZGVidWcoIlxucmVzZXRPYmplY3RTdG9yZSgpOiIpOworICAgIGlmIChjYWxsYmFjayA9PT0gdW5k
ZWZpbmVkKQorICAgICAgICBjYWxsYmFjayA9IGZ1bmN0aW9uICgpIHt9OworCisgICAgdmFyIG9i
amVjdFN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykKKyAgICAgICAgb2JqZWN0U3RvcmUuZGVsZXRlKGkp
Lm9uZXJyb3IgPSBzaWxlbnRFcnJvckhhbmRsZXI7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBu
YW1lcy5sZW5ndGg7IGkrKykKKyAgICAgICAgb2JqZWN0U3RvcmUuYWRkKHtpZDogaSwgbmFtZTog
bmFtZXNbaV19KS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisKKyAgICBkZWJ1
ZygiIik7CisgICAgY2FsbGJhY2soKTsKK30KKworZnVuY3Rpb24gY29udGFpbnMoYXJyLCBvYmop
Cit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHsKKyAgICAgICAg
aWYgKGFycltpXSA9PSBvYmopCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAg
cmV0dXJuIGZhbHNlOworfQorCit2YXIgY3Vyc29yOwordmFyIGRlbGV0ZWQ7Cit2YXIgc2VlbjsK
KworZnVuY3Rpb24gdGVzdEN1cnNvcihkZWxldGVMaXN0LCBjcmVhdGVDdXJzb3JDb21tYW5kLCBj
YWxsYmFjaykKK3sKKyAgICBkZWJ1ZygiXG50ZXN0Q3Vyc29yKCk6Iik7CisgICAgZGVsZXRlZCA9
IFtdOworICAgIHNlZW4gPSBbXTsKKworICAgIC8vIENyZWF0ZSB0aGUgY3Vyc29yLgorICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKGNyZWF0ZUN1cnNvckNvbW1hbmQpOworCisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbiAoKSB7CisgICAgICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0ID09IG51bGwp
IHsKKyAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBoYXZlIHNlZW4gZXZlcnkgbm9uLWRlbGV0
ZWQgaXRlbS4KKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyBp
KyspIHsKKyAgICAgICAgICAgICAgICBpZiAoY29udGFpbnMoZGVsZXRlZCwgaSkpCisgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgaWYgKCFjb250YWlucyhz
ZWVuLCBpKSkKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiQ3Vyc29yIGRpZCBub3Qg
c2VlIGl0ZW0gd2l0aCBpZDogIiArIGkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAv
LyBNYWtlIHN1cmUgd2UgdXNlZCBldmVyeSBydWxlIGluIHxkZWxldGVMaXN0fC4KKyAgICAgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVsZXRlTGlzdC5sZW5ndGg7IGkrKykgeworICAgICAg
ICAgICAgICAgIGlmICghY29udGFpbnMoc2VlbiwgZGVsZXRlTGlzdFtpXS5pZCkpCisgICAgICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRlbGV0ZUxpc3QgcnVsZSB3aXRoIGlkOiAiICsgZGVs
ZXRlTGlzdFtpXS5pZCArICIgd2FzIG5ldmVyIHVzZWQuIik7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjdXJzb3IgPSBldmVudC50YXJnZXQucmVz
dWx0OworICAgICAgICBkZWJ1ZyhldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLmlkICsgIjogIiAr
IGV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUubmFtZSk7CisgICAgICAgIHNlZW4ucHVzaChldmVu
dC50YXJnZXQucmVzdWx0LnZhbHVlLmlkKTsKKworICAgICAgICAvLyBNYWtlIHN1cmUgd2UgZG9u
J3Qgc2VlIGFueSBkZWxldGVkIGl0ZW1zLgorICAgICAgICBpZiAoY29udGFpbnMoZGVsZXRlZCwg
ZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS5pZCkpCisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJD
dXJzb3IgaGl0IHByZXZpb3VzbHkgZGVsZXRlZCBlbGVtZW50LiIpOworCisgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgZGVsZXRlTGlzdC5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgaWYg
KGV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUuaWQgPT0gZGVsZXRlTGlzdFtpXS5pZCkgeworICAg
ICAgICAgICAgICAgIC8vIERlbGV0ZSBvYmplY3RzIHRhcmdldGVkIGJ5IHRoaXMgaWQuCisgICAg
ICAgICAgICAgICAgdmFyIHRhcmdldHMgPSBkZWxldGVMaXN0W2ldLnRhcmdldHM7CisgICAgICAg
ICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB0YXJnZXRzLmxlbmd0aDsgaisrKSB7CisgICAg
ICAgICAgICAgICAgICAgIGRlbGV0ZWQucHVzaCh0YXJnZXRzW2pdKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSB0cmFucy5vYmplY3RTdG9yZSgn
c3RvcmUnKS5kZWxldGUoIiArIHRhcmdldHNbal0gKyAiKSIpOworICAgICAgICAgICAgICAgICAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGogPT0gdGFyZ2V0cy5sZW5ndGggLSAxKQorICAgICAgICAgICAgICAgICAg
ICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgY3Vyc29yLmNvbnRpbnVlKCk7
IH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7CisgICAgfQorfQor
CitmdW5jdGlvbiBiYXNpY0N1cnNvclRlc3QoKQoreworICAgIGRlYnVnKCJiYXNpY0N1cnNvclRl
c3QoKSIpOworCisgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0b3Jl
J10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVu
ZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSB0cmFuc2FjdGlv
bkNvbXBsZXRlOworCisgICAgdmFyIGRlbGV0ZXMgPSBbe2lkOiAxLCB0YXJnZXRzOiBbMF19LAor
ICAgICAgICAgICAgICAgICAgIHtpZDogMiwgdGFyZ2V0czogW25hbWVzLmxlbmd0aCAtIDFdfSwK
KyAgICAgICAgICAgICAgICAgICB7aWQ6IDMsIHRhcmdldHM6IFs1LDYsN119LAorICAgICAgICAg
ICAgICAgICAgIHtpZDogMTAsIHRhcmdldHM6IFsxMF19LAorICAgICAgICAgICAgICAgICAgIHtp
ZDogMTIsIHRhcmdldHM6IFsxM119LAorICAgICAgICAgICAgICAgICAgIHtpZDogMTUsIHRhcmdl
dHM6IFsxNF19LAorICAgICAgICAgICAgICAgICAgIHtpZDogMjAsIHRhcmdldHM6IFsxNywxOF19
CisgICAgICAgICAgICAgICAgICAgXTsKKworICAgIHRlc3RDdXJzb3IoZGVsZXRlcywgInRyYW5z
Lm9iamVjdFN0b3JlKCdzdG9yZScpLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgw
KSkiLCBmdW5jdGlvbigpIHsgcmVzZXRPYmplY3RTdG9yZShyZXZlcnNlQ3Vyc29yVGVzdCk7IH0p
OworfQorCitmdW5jdGlvbiByZXZlcnNlQ3Vyc29yVGVzdCgpCit7CisgICAgZGVidWcoInJldmVy
c2VDdXJzb3JUZXN0KCk6Iik7CisKKyAgICB2YXIgZGVsZXRlcyA9IFt7aWQ6IDI0LCB0YXJnZXRz
OiBbbmFtZXMubGVuZ3RoIC0gMV19LAorICAgICAgICAgICAgICAgICAgIHtpZDogMjMsIHRhcmdl
dHM6IFswXX0sCisgICAgICAgICAgICAgICAgICAge2lkOiAyMiwgdGFyZ2V0czogWzIwLCAxOSwg
MThdfSwKKyAgICAgICAgICAgICAgICAgICB7aWQ6IDE1LCB0YXJnZXRzOiBbMTVdfSwKKyAgICAg
ICAgICAgICAgICAgICB7aWQ6IDEzLCB0YXJnZXRzOiBbMTJdfSwKKyAgICAgICAgICAgICAgICAg
ICB7aWQ6IDEwLCB0YXJnZXRzOiBbMTFdfSwKKyAgICAgICAgICAgICAgICAgICB7aWQ6IDUsIHRh
cmdldHM6IFs3LDhdfQorICAgICAgICAgICAgICAgICAgIF07CisKKyAgICB0ZXN0Q3Vyc29yKGRl
bGV0ZXMsICJ0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKS5vcGVuQ3Vyc29yKElEQktleVJhbmdl
Lmxvd2VyQm91bmQoMCksIElEQkN1cnNvci5QUkVWKSIsIGZ1bmN0aW9uKCkgeyByZXNldE9iamVj
dFN0b3JlKGluZGV4Q3Vyc29yVGVzdCk7IH0pOworfQorCitmdW5jdGlvbiBpbmRleEN1cnNvclRl
c3QoKQoreworICAgIGRlYnVnKCJpbmRleEN1cnNvclRlc3QoKToiKTsKKworICAgIHZhciBkZWxl
dGVzID0gW3tpZDogMSwgdGFyZ2V0czogWzBdfSwKKyAgICAgICAgICAgICAgICAgICB7aWQ6IDIs
IHRhcmdldHM6IFtuYW1lcy5sZW5ndGggLSAxXX0sCisgICAgICAgICAgICAgICAgICAge2lkOiAz
LCB0YXJnZXRzOiBbNSw2LDddfSwKKyAgICAgICAgICAgICAgICAgICB7aWQ6IDEwLCB0YXJnZXRz
OiBbMTBdfSwKKyAgICAgICAgICAgICAgICAgICB7aWQ6IDEyLCB0YXJnZXRzOiBbMTNdfSwKKyAg
ICAgICAgICAgICAgICAgICB7aWQ6IDE1LCB0YXJnZXRzOiBbMTRdfSwKKyAgICAgICAgICAgICAg
ICAgICB7aWQ6IDIwLCB0YXJnZXRzOiBbMTcsMThdfQorICAgICAgICAgICAgICAgICAgIF07CisK
KyAgICB0ZXN0Q3Vyc29yKGRlbGV0ZXMsICJ0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKS5pbmRl
eCgnbmFtZUluZGV4Jykub3BlbkN1cnNvcihJREJLZXlSYW5nZS5sb3dlckJvdW5kKCdBbHBoYScp
KSIsIGZ1bmN0aW9uKCkgeyB9KTsKK30KKworZnVuY3Rpb24gdHJhbnNhY3Rpb25Db21wbGV0ZSgp
Cit7CisgICAgZGVidWcoInRyYW5zYWN0aW9uQ29tcGxldGUoKToiKTsKKyAgICBmaW5pc2hKU1Rl
c3QoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXVwZGF0ZS12YWx1ZS1hcmd1
bWVudC1yZXF1aXJlZC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9jdXJzb3ItdXBkYXRlLXZhbHVlLWFyZ3VtZW50LXJlcXVpcmVkLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEx
YzI3M2QyYmU4YmVjYTZlMGNhMGU0OWNkNTQ3NmNhNTAwZDc4M2MKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXVwZGF0ZS12
YWx1ZS1hcmd1bWVudC1yZXF1aXJlZC5qcwpAQCAtMCwwICsxLDczIEBACitpZiAodGhpcy5pbXBv
cnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30K
KworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGN1cnNvci51cGRhdGUgcmVxdWlyZWQgYXJn
dW1lbnRzIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVz
KCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlv
biA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhl
ZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBv
cGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygi
ZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
dGVzdEdyb3VwMTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gdGVzdEdyb3VwMSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3Rv
cmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ2F1dG9JbmNyZW1lbnQnLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7CisKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3Io
KTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgeworICAgICAgdGVzdEdyb3Vw
MigpOworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdEdyb3VwMigpCit7CisgICAga2V5cyA9IGV2
YWxBbmRMb2coImtleXMgPSBbMSwgLTEsIDAsIDEwLCAyMDAwLCAncScsICd6JywgJ3R3bycsICdi
JywgJ2EnXTsiKTsKKworICAgIGtleUluZGV4ID0gZXZhbEFuZExvZygia2V5SW5kZXggPSAwOyIp
OworCisgICAgZm9yIChpIGluIGtleXMpIHsKKyAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKCdmb28nLCBrZXlzW2ldKTsiKTsKKyAgICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBpZiAoKytrZXlJbmRleCA9PSBrZXlz
Lmxlbmd0aCkgeworICAgICAgICAgIHRlc3RHcm91cDMoKTsKKyAgICAgICAgfQorICAgICAgfTsK
KyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDMoKQoreworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1
cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICAgIGlmIChjdXJzb3IpIHsKKyAg
ICAgICAgICAgIHNob3VsZFRocm93KCJjdXJzb3IudXBkYXRlKCk7Iik7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJjdXJzb3Igd2FzIG51bGwiKTsKKyAgICAgICAg
fQorICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9Cit9CisKK3Rlc3QoKTsKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXVwZGF0ZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9jdXJzb3ItdXBkYXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjMGQ1MWIxMjFk
YWJlYzNlYWVkZGIyMzE5YTIwMzBjMmYwZGZhZGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvY3Vyc29yLXVwZGF0ZS5qcwpAQCAtMCww
ICsxLDIxNiBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMo
Jy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0
U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidz
IGN1cnNvciB1cGRhdGUuIik7CisKK3Rlc3QoKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAg
cmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhl
ZERCLm9wZW4oJ2N1cnNvci11cGRhdGUnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3Bl
blN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICB2YXIgZGIgPSBldmFsQW5kTG9n
KCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBzZXRWZXJzaW9uU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvblN1Y2Nlc3MoKQoreworICAgIGRl
YnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOworICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9n
KCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5z
ICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNr
OworICAgIHRyYW5zLm9uY29tcGxldGUgPSBvcGVuQmFzaWNDdXJzb3I7CisKKyAgICBkZWxldGVB
bGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgdmFyIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygi
b2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnYmFzaWNTdG9yZScpIik7CisgICAg
ZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlMScsICdteUtleTEnKS5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9y
ZS5hZGQoJ215VmFsdWUyJywgJ215S2V5MicpLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjayIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnbXlWYWx1ZTMnLCAnbXlL
ZXkzJykub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrIik7CisgICAgZXZhbEFuZExv
Zygib2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlNCcsICdteUtleTQnKS5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2siKTsKKworICAgIHZhciBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2co
Im9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2F1dG9JbmNyZW1lbnRTdG9yZScs
IHthdXRvSW5jcmVtZW50OiB0cnVlfSkiKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5h
ZGQoJ2ZvbzEnKS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKKyAgICBldmFs
QW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ2ZvbzInKS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2siKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ2ZvbzMnKS5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZS5hZGQoJ2ZvbzQnKS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKKwor
ICAgIHZhciBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ2tleVBhdGhTdG9yZScsIHtrZXlQYXRoOiAnaWQnfSkiKTsKKyAgICBldmFs
QW5kTG9nKCJvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgnbnVtYmVySW5kZXgnLCAnbnVtYmVyJyki
KTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoe251bWJlcjogMSwgaWQ6IDF9KS5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKKyAgICBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZS5hZGQoe251bWJlcjogMiwgaWQ6IDJ9KS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2siKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoe251bWJlcjogMywg
aWQ6IDN9KS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKKyAgICBldmFsQW5k
TG9nKCJvYmplY3RTdG9yZS5hZGQoe251bWJlcjogNCwgaWQ6IDR9KS5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2siKTsKK30KKworZnVuY3Rpb24gb3BlbkJhc2ljQ3Vyc29yKCkKK3sK
KyAgICBkZWJ1Zygib3BlbkJhc2ljQ3Vyc29yKCkiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucyA9
IGRiLnRyYW5zYWN0aW9uKFsnYmFzaWNTdG9yZScsICdhdXRvSW5jcmVtZW50U3RvcmUnLCAna2V5
UGF0aFN0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgdHJhbnMub25h
Ym9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSB0
cmFuc2FjdGlvbkNvbXBsZXRlOworCisgICAga2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5sb3dlckJv
dW5kKCJteUtleTEiKTsKKyAgICBzZWxmLm9iamVjdFN0b3JlID0gZXZhbEFuZExvZygidHJhbnMu
b2JqZWN0U3RvcmUoJ2Jhc2ljU3RvcmUnKSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJv
YmplY3RTdG9yZS5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gYmFzaWNVcGRhdGVDdXJzb3I7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisgICAgY291bnRlciA9IDE7Cit9CisKK2Z1bmN0aW9uIGJhc2ljVXBkYXRl
Q3Vyc29yKCkKK3sKKyAgICBkZWJ1ZygiYmFzaWNVcGRhdGVDdXJzb3IoKSIpOworICAgIHNob3Vs
ZEJlKCJldmVudC50YXJnZXQuc291cmNlIiwgIm9iamVjdFN0b3JlIik7CisgICAgaWYgKGV2ZW50
LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkgeworICAgICAgICBzaG91bGRCZSgiY291bnRlciIsICI1
Iik7CisgICAgICAgIGNvdW50ZXIgPSAxOworCisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJ0cmFucy5vYmplY3RTdG9yZSgnYmFzaWNTdG9yZScpLm9wZW5DdXJzb3Ioa2V5UmFuZ2UpIik7
CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYmFzaWNDaGVja0N1cnNvcjsKKyAgICAgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3Vs
dC51cGRhdGUoJ215VXBkYXRlZFZhbHVlJyArIGNvdW50ZXIrKykiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGZ1bmN0aW9uKCkgeyBldmFsQW5kTG9nKCJldmVudC50YXJnZXQuc291cmNlLmNv
bnRpbnVlKCkiKTsgfQorICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworfQorCitmdW5jdGlvbiBiYXNpY0NoZWNrQ3Vyc29yKCkKK3sKKyAgICBkZWJ1ZygiYmFz
aWNDaGVja0N1cnNvcigpIik7CisgICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkg
eworICAgICAgICBzaG91bGRCZSgiY291bnRlciIsICI1Iik7CisgICAgICAgIGNvdW50ZXIgPSAx
OworCisgICAgICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgxKTsKKyAgICAg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdhdXRvSW5jcmVtZW50
U3RvcmUnKS5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGF1dG9JbmNyZW1lbnRVcGRhdGVDdXJzb3I7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIsICJteUtleSIg
KyBjb3VudGVyKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1
bHQudmFsdWUiLCAibXlVcGRhdGVkVmFsdWUiICsgY291bnRlcisrKTsKKyAgICBldmFsQW5kTG9n
KCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKK30KKworZnVuY3Rpb24gYXV0b0lu
Y3JlbWVudFVwZGF0ZUN1cnNvcigpCit7CisgICAgZGVidWcoImF1dG9JbmNyZW1lbnRVcGRhdGVD
dXJzb3IoKSIpOworICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0ID09IG51bGwpIHsKKyAgICAg
ICAgc2hvdWxkQmUoImNvdW50ZXIiLCAiNSIpOworICAgICAgICBjb3VudGVyID0gMTsKKworICAg
ICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2F1dG9JbmNyZW1l
bnRTdG9yZScpLm9wZW5DdXJzb3Ioa2V5UmFuZ2UpIik7CisgICAgICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gYXV0b0luY3JlbWVudENoZWNrQ3Vyc29yOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LnVwZGF0ZSgnbXlVcGRh
dGVkRm9vJyArIGNvdW50ZXIrKykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KCkgeyBldmFsQW5kTG9nKCJldmVudC50YXJnZXQuc291cmNlLmNvbnRpbnVlKCkiKTsgfQorICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biBhdXRvSW5jcmVtZW50Q2hlY2tDdXJzb3IoKQoreworICAgIGRlYnVnKCJhdXRvSW5jcmVtZW50
Q2hlY2tDdXJzb3IoKSIpOworICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0ID09IG51bGwpIHsK
KyAgICAgICAgc2hvdWxkQmUoImNvdW50ZXIiLCAiNSIpOworICAgICAgICBjb3VudGVyID0gMTsK
KworICAgICAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQoMSk7CisgICAgICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgna2V5UGF0aFN0b3JlJyku
b3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBrZXlQ
YXRoVXBkYXRlQ3Vyc29yOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNob3VsZEJlKCJldmVu
dC50YXJnZXQucmVzdWx0LmtleSIsICJjb3VudGVyIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJldmVudC50YXJnZXQucmVzdWx0LnZhbHVlIiwgIm15VXBkYXRlZEZvbyIgKyBjb3VudGVy
KyspOworICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKSIpOwor
fQorCitmdW5jdGlvbiBrZXlQYXRoVXBkYXRlQ3Vyc29yKCkKK3sKKyAgICBkZWJ1Zygia2V5UGF0
aFVwZGF0ZUN1cnNvcigpIik7CisgICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkg
eworICAgICAgICBzaG91bGRCZSgiY291bnRlciIsICI1Iik7CisgICAgICAgIGNvdW50ZXIgPSAx
OworCisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgna2V5
UGF0aFN0b3JlJykub3BlbkN1cnNvcihrZXlSYW5nZSkiKTsKKyAgICAgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBrZXlQYXRoQ2hlY2tDdXJzb3I7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigiZXZlbnQudGFyZ2V0LnJlc3VsdC51cGRhdGUoe2lkOiAxMDAg
KyBjb3VudGVyLCBudW1iZXI6IDEwMCArIGNvdW50ZXJ9KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlv
bi5EQVRBX0VSUiIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5y
ZXN1bHQudXBkYXRlKHtpZDogY291bnRlciwgbnVtYmVyOiAxMDAgKyBjb3VudGVyKyt9KSIpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7IGV2YWxBbmRMb2coImV2ZW50LnRh
cmdldC5zb3VyY2UuY29udGludWUoKSIpIH07CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGtleVBhdGhDaGVja0N1cnNvcigpCit7
CisgICAgZGVidWcoImtleVBhdGhDaGVja0N1cnNvcigpIik7CisgICAgaWYgKGV2ZW50LnRhcmdl
dC5yZXN1bHQgPT0gbnVsbCkgeworICAgICAgICBzaG91bGRCZSgiY291bnRlciIsICI1Iik7Cisg
ICAgICAgIGNvdW50ZXIgPSAxOworCisgICAgICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2UubG93
ZXJCb3VuZCgxMDEpOworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0
U3RvcmUoJ2tleVBhdGhTdG9yZScpLmluZGV4KCdudW1iZXJJbmRleCcpLm9wZW5LZXlDdXJzb3Io
a2V5UmFuZ2UpIik7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0ga2V5Q3Vyc29yOworICAg
ICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LmtleSIs
ICJjb3VudGVyIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUuaWQi
LCAiY291bnRlciIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLm51
bWJlciIsIChjb3VudGVyICsgMTAwKS50b1N0cmluZygpKTsKKyAgICBjb3VudGVyKys7CisgICAg
ZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5jb250aW51ZSgpIik7Cit9CisKK2Z1bmN0
aW9uIGtleUN1cnNvcigpCit7CisgICAgZGVidWcoImtleUN1cnNvcigpIik7CisgICAgaWYgKGV2
ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkgeworICAgICAgICBzaG91bGRCZSgiY291bnRlciIs
ICI1Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaG91bGRCZSgiZXZlbnQudGFy
Z2V0LnJlc3VsdC5rZXkiLCAiY291bnRlciArIDEwMCIpOworICAgIHNob3VsZEJlKCJldmVudC50
YXJnZXQucmVzdWx0LnByaW1hcnlLZXkiLCAiY291bnRlciIpOworCisgICAgdHJ5IHsKKyAgICAg
ICAgZGVidWcoImV2ZW50LnRhcmdldC5yZXN1bHQudXBkYXRlKHtpZDogY291bnRlciwgbnVtYmVy
OiBjb3VudGVyICsgMjAwfSkiKTsKKyAgICAgICAgZXZlbnQudGFyZ2V0LnJlc3VsdC51cGRhdGUo
e2lkOiBjb3VudGVyLCBudW1iZXI6IGNvdW50ZXIgKyAyMDB9KTsKKyAgICAgICAgdGVzdEZhaWxl
ZCgiRXhwZWN0ZWQgZXhjZXB0aW9uLiIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgY29k
ZSA9IGUuY29kZTsKKyAgICAgICAgc2hvdWxkQmUoImNvZGUiLCAiSURCRGF0YWJhc2VFeGNlcHRp
b24uTk9UX0FMTE9XRURfRVJSIik7CisgICAgfQorCisgICAgY291bnRlcisrOworICAgIGV2ZW50
LnRhcmdldC5yZXN1bHQuY29udGludWUoKTsKK30KKworZnVuY3Rpb24gdHJhbnNhY3Rpb25Db21w
bGV0ZSgpCit7CisgICAgZGVidWcoInRyYW5zYWN0aW9uQ29tcGxldGUoKSIpOworICAgIGZpbmlz
aEpTVGVzdCgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kYXRhLWNvcnJ1cHRpb24uanMg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGF0YS1jb3JydXB0aW9u
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQxNTViODM4ZDJhMDdhOWM1Y2U2NGQwM2M1NmRjZjg3ZTI5YzU4NmIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvZGF0YS1jb3JydXB0aW9uLmpzCkBAIC0wLDAgKzEsNjUgQEAKK2lmICh0aGlzLmltcG9ydFNj
cmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitk
ZXNjcmlwdGlvbigiVGVzdCB0aGF0IGRhdGEgaW5zZXJ0ZWQgaW50byBJbmRleGVkREIgZG9lcyBu
b3QgZ2V0IGNvcnJ1cHRlZCBvbiBkaXNrLiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBy
ZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVk
REIub3BlbignZGF0YS1jb3JydXB0aW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9w
ZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGVidWcoIm9wZW5TdWNjZXNz
KCk6Iik7CisgICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJz
aW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb25TdWNjZXNzOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biBzZXRWZXJzaW9uU3VjY2VzcygpCit7CisgICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6
Iik7CisgICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKyAgICB0cmFucy5v
bmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9
IGFkZERhdGE7CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgZXZhbEFu
ZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Cit9CisKK3ZhciB0ZXN0
RGF0ZSA9IG5ldyBEYXRlKCdGZWJydWFyeSAyNCwgMTk1NSAxMjowMDowOCcpOworCitmdW5jdGlv
biBhZGREYXRhKCkKK3sKKyAgICBkZWJ1ZygiYWRkRGF0YSgpOiIpOworICAgIHZhciB0cmFuc2Fj
dGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5h
bWUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICB2YXIgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJyku
YWRkKHt4OiB0ZXN0RGF0ZX0sICdrZXknKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBnZXREYXRh
OworfQorCitmdW5jdGlvbiBnZXREYXRhKCkKK3sKKyAgICBkZWJ1ZygiYWRkRGF0YSgpOiIpOwor
ICAgIHZhciB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNh
Y3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKSIpOworICAgIHZh
ciByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3Jl
KCdzdG9yZU5hbWUnKS5nZXQoJ2tleScpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkb0NoZWNrOworfQor
CitmdW5jdGlvbiBkb0NoZWNrKCkKK3sKKyAgICBzaG91bGRCZVRydWUoImV2ZW50LnRhcmdldC5y
ZXN1bHQueC50b1N0cmluZygpID09IHRlc3REYXRlLnRvU3RyaW5nKCkiKTsKKyAgICBmaW5pc2hK
U1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kYXRhYmFzZS1i
YXNpY3MuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGF0YWJh
c2UtYmFzaWNzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhNWE3YTczZTE0YWU1NjU3YzFhNWFjNGY1NDU2OTcw
ZWQyYWI0OGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvZGF0YWJhc2UtYmFzaWNzLmpzCkBAIC0wLDAgKzEsMTE1IEBACitpZiAodGhp
cy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMn
KTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgdGhlIGJhc2ljcyBvZiBJbmRleGVkREIncyBJREJE
YXRhYmFzZS4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4
ZXMoKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignZGF0YWJh
c2UtYmFzaWNzJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biBvcGVuU3VjY2VzcygpCit7CisgICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNp
b24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb25T
dWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCit7CisgICAgZGVidWcoInNldFZlcnNp
b25TdWNjZXNzKCk6Iik7CisgICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsK
KyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisKKyAgICBkZWxl
dGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgZGVidWcoIlRlc3Rpbmcgc2V0VmVyc2lvbi4i
KTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygnZGIuc2V0VmVyc2lvbigidmVyc2lvbiBhIikn
KTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb25BZ2FpbjsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0VmVy
c2lvbkFnYWluKCkKK3sKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygnZGIuc2V0VmVyc2lvbigi
dmVyc2lvbiBiIiknKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZU9iamVjdFN0b3Jl
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiBjcmVhdGVPYmplY3RTdG9yZSgpCit7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJkYi52ZXJzaW9uIiwgInZlcnNpb24gYiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
ZGIubmFtZSIsICJkYXRhYmFzZS1iYXNpY3MiKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3Rv
cmVOYW1lcyIsICJbXSIpOworICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0
aCIsICIwIik7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJycp
IiwgImZhbHNlIik7CisgICAgc2hvdWxkQmVOdWxsKCJkYi5vYmplY3RTdG9yZU5hbWVzWzBdIik7
CisgICAgc2hvdWxkQmVOdWxsKCJkYi5vYmplY3RTdG9yZU5hbWVzLml0ZW0oMCkiKTsKKworICAg
IG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygnZGIuY3JlYXRlT2JqZWN0U3RvcmUoInRlc3QxMjMi
KScpOworICAgIGNoZWNrT2JqZWN0U3RvcmUoKTsKKyAgICBjb21taXRBbmRDb250aW51ZSgpOwor
fQorCitmdW5jdGlvbiBjaGVja09iamVjdFN0b3JlKCkKK3sKKyAgICBzaG91bGRCZSgiZGIub2Jq
ZWN0U3RvcmVOYW1lcyIsICJbJ3Rlc3QxMjMnXSIpOworICAgIHNob3VsZEJlKCJkYi5vYmplY3RT
dG9yZU5hbWVzLmxlbmd0aCIsICIxIik7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFt
ZXMuY29udGFpbnMoJycpIiwgImZhbHNlIik7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3Jl
TmFtZXMuY29udGFpbnMoJ3Rlc3Q0NTYnKSIsICJmYWxzZSIpOworICAgIHNob3VsZEJlKCJkYi5v
YmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCd0ZXN0MTIzJykiLCAidHJ1ZSIpOworfQorCitmdW5j
dGlvbiBjb21taXRBbmRDb250aW51ZSgpCit7CisgICAgc2VsZi5zZXRUaW1lb3V0KHRlc3RTZXRW
ZXJzaW9uQWJvcnQsIDApOworfQorCitmdW5jdGlvbiB0ZXN0U2V0VmVyc2lvbkFib3J0KCkKK3sK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygnZGIuc2V0VmVyc2lvbigidmVyc2lvbiBjIiknKTsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNyZWF0ZUFub3RoZXJPYmplY3RTdG9yZTsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
Y3JlYXRlQW5vdGhlck9iamVjdFN0b3JlKCkKK3sKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
ImRiLnZlcnNpb24iLCAidmVyc2lvbiBjIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJk
Yi5uYW1lIiwgImRhdGFiYXNlLWJhc2ljcyIpOworICAgIGNoZWNrT2JqZWN0U3RvcmUoKTsKKwor
ICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygnZGIuY3JlYXRlT2JqZWN0U3RvcmUoInRlc3Q0
NTYiKScpOworICAgIHZhciBzZXRWZXJzaW9uVHJhbnMgPSBldmFsQW5kTG9nKCJzZXRWZXJzaW9u
VHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJzZXRWZXJz
aW9uVHJhbnMgIT09IG51bGwiKTsKKyAgICBzZXRWZXJzaW9uVHJhbnMub25jb21wbGV0ZSA9IHVu
ZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOworICAgIHNldFZlcnNpb25UcmFucy5vbmFib3J0ID0g
Y2hlY2tNZXRhZGF0YTsKKyAgICBzZXRWZXJzaW9uVHJhbnMuYWJvcnQoKTsKK30KKworZnVuY3Rp
b24gY2hlY2tNZXRhZGF0YSgpCit7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkYi52ZXJz
aW9uIiwgInZlcnNpb24gYiIpOworICAgIGNoZWNrT2JqZWN0U3RvcmUoKTsKKyAgICB0ZXN0Q2xv
c2UoKTsKK30KKworZnVuY3Rpb24gdGVzdENsb3NlKCkKK3sKKyAgICBldmFsQW5kTG9nKCJkYi5j
bG9zZSgpIik7CisgICAgZGVidWcoIk5vdyB0aGF0IHRoZSBjb25uZWN0aW9uIGlzIGNsb3NlZCwg
dHJhbnNhY3Rpb24gY3JlYXRpb24gc2hvdWxkIGZhaWwiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJkYi50cmFuc2FjdGlvbigndGVzdDEyMycpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9u
Lk5PVF9BTExPV0VEX0VSUiIpOworICAgIGRlYnVnKCJDYWxsIHR3aWNlLCBtYWtlIHN1cmUgaXQn
cyBoYXJtbGVzcyIpOworICAgIGV2YWxBbmRMb2coImRiLmNsb3NlKCkiKTsKKyAgICBmaW5pc2hK
U1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kYXRhYmFzZS1u
YW1lLXVuZGVmaW5lZC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9kYXRhYmFzZS1uYW1lLXVuZGVmaW5lZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjY0OWNjNWNhNTczNWYz
YjQ1Y2U1MmE4MGM3OTZkZThkMmJiYWY3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGFiYXNlLW5hbWUtdW5kZWZpbmVkLmpzCkBA
IC0wLDAgKzEsMTUgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3Jp
cHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGlt
cG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVk
REIgdW5kZWZpbmVkIGFzIHJlY29yZCB2YWx1ZSIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAgIHNob3VsZFRocm93KCJpbmRleGVkREIub3Bl
bigpOyIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL2RhdGFiYXNlLW9kZC1uYW1lcy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9kYXRhYmFzZS1vZGQtbmFtZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzk0ZjFl
NzZlZTI1MGMyODBjZjE1MTIwOWM5MmYwYTY0MjMyYTc2MwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kYXRhYmFzZS1vZGQtbmFtZXMu
anMKQEAgLTAsMCArMSwzMSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9y
dFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Cisg
ICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IElu
ZGV4ZWREQiBvZGQgdmFsdWUgZGF0YXR5cGVzIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAg
IHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICB0ZXN0RGF0YSA9IFt7IGRlc2NyaXB0aW9u
OiAnbnVsbCcsICAgICAgICAgICAgICAgbmFtZTogJ1x1MDAwMCcgfSwKKyAgICAgICAgICAgICAg
ICB7IGRlc2NyaXB0aW9uOiAnZmFpaHUnLCAgICAgICAgICAgICAgbmFtZTogJ1x1ZDgwMFx1ZGY0
NicgfSwKKyAgICAgICAgICAgICAgICB7IGRlc2NyaXB0aW9uOiAndW5wYWlyZWQgc3Vycm9nYXRl
JywgbmFtZTogJ1x1ZDgwMCcgfSwKKyAgICAgICAgICAgICAgICB7IGRlc2NyaXB0aW9uOiAnZmZm
ZScsICAgICAgICAgICAgICAgbmFtZTogJ1x1ZmZmZScgfSwKKyAgICAgICAgICAgICAgICB7IGRl
c2NyaXB0aW9uOiAnZmZmZicsICAgICAgICAgICAgICAgbmFtZTogJ1x1ZmZmZicgfSwKKyAgICAg
ICAgICAgICAgICB7IGRlc2NyaXB0aW9uOiAnbGluZSBzZXBhcmF0b3InLCAgICAgbmFtZTogJ1x1
MjAyOCcgfQorICAgIF07CisgICAgbmV4dFRvT3BlbiA9IDA7CisgICAgb3Blbk5leHREYXRhYmFz
ZSgpOworfQorCitmdW5jdGlvbiBvcGVuTmV4dERhdGFiYXNlKCkKK3sKKyAgICBkZWJ1Zygib3Bl
bmluZyBhIGRhdGFiYXNlIG5hbWVkICIgKyB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5kZXNjcmlwdGlv
bik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKHRlc3REYXRhW25l
eHRUb09wZW5dLm5hbWUsIHRlc3REYXRhW25leHRUb09wZW5dLmRlc2NyaXB0aW9uKSIpOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gKytuZXh0VG9PcGVuIDwgdGVzdERhdGEubGVuZ3RoID8gb3Blbk5leHREYXRh
YmFzZSA6IGZpbmlzaEpTVGVzdDsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9kYXRhYmFzZS1xdW90YS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9kYXRhYmFzZS1xdW90YS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZTA5MTVmZDAyMjhlOTkyOWZmY2M1
NmEzMDhkNjA4NDg5ODYwYWU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGFiYXNlLXF1b3RhLmpzCkBAIC0wLDAgKzEsOTcgQEAK
K2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3No
YXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdHMgSW5kZXhlZERCJ3MgcXVvdGEgZW5m
b3JjaW5nIG1lY2hhbmlzbS4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVu
ZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4o
J2RhdGFiYXNlLXF1b3RhJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNz
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNl
dFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZl
cnNpb25TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCit7CisgICAgZGVidWcoInNl
dFZlcnNpb25TdWNjZXNzKCk6Iik7CisgICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5z
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51
bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAg
dHJhbnMub25jb21wbGV0ZSA9IGNoZWNrUXVvdGFFbmZvcmNpbmc7CisKKyAgICBkZWxldGVBbGxP
YmplY3RTdG9yZXMoZGIpOworCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkYi52ZXJzaW9u
IiwgIm5ldyB2ZXJzaW9uIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkYi5uYW1lIiwg
ImRhdGFiYXNlLXF1b3RhIik7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMiLCAi
W10iKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMCIpOwor
ICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCcnKSIsICJmYWxzZSIp
OworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCdkYi5jcmVhdGVPYmplY3RTdG9yZSgi
dGVzdDEyMyIpJyk7CisgICAgY2hlY2tPYmplY3RTdG9yZSgpOworfQorCitmdW5jdGlvbiBjaGVj
a09iamVjdFN0b3JlKCkKK3sKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcyIsICJb
J3Rlc3QxMjMnXSIpOworICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIs
ICIxIik7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJycpIiwg
ImZhbHNlIik7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJ3Rl
c3Q0NTYnKSIsICJmYWxzZSIpOworICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmNv
bnRhaW5zKCd0ZXN0MTIzJykiLCAidHJ1ZSIpOworfQorCitmdW5jdGlvbiBjaGVja1F1b3RhRW5m
b3JjaW5nKCkKK3sKKyAgICB2YXIgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5z
YWN0aW9uKFsndGVzdDEyMyddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIHRy
YW5zLm9uYWJvcnQgPSB0ZXN0Q29tcGxldGU7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHVuZXhw
ZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOworICAgIGRlYnVnKCJDcmVhdGluZyAnZGF0YScgd2hpY2gg
Y29udGFpbnMgNjRLIG9mIGRhdGEiKTsKKyAgICBzZWxmLmRhdGEgPSAiWCI7CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCAxNjsgaSsrKQorICAgICAgICBkYXRhICs9IGRhdGE7CisgICAgc2hvdWxk
QmUoImRhdGEubGVuZ3RoIiwgIjY1NTM2Iik7CisgICAgc2VsZi5kYXRhQWRkZWQgPSAwOworICAg
IHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCd0ZXN0
MTIzJykiKTsKKyAgICBhZGREYXRhKCk7Cit9CisKK2Z1bmN0aW9uIGFkZERhdGEoKQoreworICAg
IGlmIChkYXRhQWRkZWQgPCA1ICogMTAyNCAqIDEwMjQpIHsKKyAgICAgICAgaWYgKGRhdGFBZGRl
ZCA+IDApCisgICAgICAgICAgICBzdG9yZSA9IGV2ZW50LnRhcmdldC5zb3VyY2U7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiYWRkZWQgbW9yZSB0aGFuIHF1b3RhIik7CisgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGRhdGFBZGRl
ZCArPSA2NTUzNjsKKyAgICByZXF1ZXN0ID0gc3RvcmUuYWRkKHt4OiBkYXRhfSwgZGF0YUFkZGVk
KTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZERhdGE7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gbG9nRXJyb3I7Cit9CisKK2Z1bmN0aW9uIGxvZ0Vycm9yKCkKK3sKKyAgICBkZWJ1ZygiRXJy
b3IgZnVuY3Rpb24gY2FsbGVkOiAoIiArIGV2ZW50LnRhcmdldC5lcnJvckNvZGUgKyAiKSAiICsg
ZXZlbnQudGFyZ2V0LndlYmtpdEVycm9yTWVzc2FnZSk7CisgICAgZXZhbEFuZExvZygiZXZlbnQu
cHJldmVudERlZmF1bHQoKSIpOworfQorCitmdW5jdGlvbiB0ZXN0Q29tcGxldGUoKQoreworICAg
IHRlc3RQYXNzZWQoIkFkZGluZyBkYXRhIGZhaWxlZCBkdWUgdG8gcXVvdGEgZXJyb3IuIERhdGEg
YWRkZWQgd2FzIGFib3V0ICIgKyBNYXRoLnJvdW5kKGRhdGFBZGRlZCAvIDEwMjQgLyAxMDI0KSAr
ICIgTUIiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9kZWxldGUtY2xvc2VkLWRhdGFiYXNlLW9iamVjdC5qcyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kZWxldGUtY2xvc2VkLWRhdGFiYXNlLW9iamVj
dC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41ZDMyOWEyYjdhM2I3MGMwN2UxZmZmOGI2ZDZlYmExOGQyODQwM2I4
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL2RlbGV0ZS1jbG9zZWQtZGF0YWJhc2Utb2JqZWN0LmpzCkBAIC0wLDAgKzEsNDkgQEAKK2lm
ICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJl
ZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiRW5zdXJlIHRoYXQgSURCRGF0YWJhc2Ugb2JqZWN0
cyBhcmUgZGVsZXRlZCB3aGVuIHRoZXJlIGFyZSBubyByZXRhaW5pbmcgcGF0aHMgbGVmdCIpOwor
CitmdW5jdGlvbiB0ZXN0KCkgeworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgb3Bl
bkRCQ29ubmVjdGlvbigpOworfQorCitmdW5jdGlvbiBvcGVuREJDb25uZWN0aW9uKCkKK3sKKyAg
ICBldmFsQW5kTG9nKCJzZWxmLnN0YXRlID0gJ3N0YXJ0aW5nJyIpOworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignZGVsZXRlLWNsb3NlZC1kYXRhYmFzZS1vYmplY3Qn
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNj
ZXNzKCkKK3sKKyAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVz
dWx0Iik7CisKKyAgICAvLyBPcGVuIGEgc2Vjb25kIGNvbm5lY3Rpb24gdG8gdGhlIHNhbWUgZGF0
YWJhc2UuCisgICAgdmFyIHJlcXVlc3QyID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2Rl
bGV0ZS1jbG9zZWQtZGF0YWJhc2Utb2JqZWN0JykiKTsKKyAgICByZXF1ZXN0Mi5vbnN1Y2Nlc3Mg
PSBvcGVuU3VjY2VzczI7CisgICAgcmVxdWVzdDIub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzczIoKQoreworICAgIGRlYnVnKCJTZWNv
bmQgY29ubmVjdGlvbiBzdWNjZXNzZnVsbHkgZXN0YWJsaXNoZWQuIik7CisgICAgLy8gQWZ0ZXIg
bGVhdmluZyB0aGlzIGZ1bmN0aW9uLCB0aGVyZSBhcmUgbm8gcmVtYWluaW5nIHJlZmVyZW5jZXMg
dG8gdGhlCisgICAgLy8gc2Vjb25kIGNvbm5lY3Rpb24sIHNvIGl0IHNob3VsZCBnZXQgZGVsZXRl
ZC4KKyAgICBzZXRUaW1lb3V0KHNldFZlcnNpb24sIDIpOworfQorCitmdW5jdGlvbiBzZXRWZXJz
aW9uKCkKK3sKKyAgICBnYygpOworICAgIGRlYnVnKCJjYWxsaW5nIHNldFZlcnNpb24oKSAtIGNh
bGxiYWNrIHNob3VsZCBydW4gaW1tZWRpYXRlbHkiKTsKKyAgICB2YXIgdmVyc2lvbkNoYW5nZVJl
cXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHZl
cnNpb25DaGFuZ2VSZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICB2ZXJzaW9uQ2hhbmdlUmVxdWVzdC5vbmJsb2NrZWQgPSB1bmV4cGVjdGVkQmxvY2tlZENhbGxi
YWNrOworICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uc3VjY2VzcyA9IGZpbmlzaEpTVGVzdDsK
K30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kZWxldGUtcmFuZ2UuanMgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGVsZXRlLXJhbmdlLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmE1ZGY3N2YyMzQ3MzY4OTg3ODQ5ZGM2ZTFjNTdkNzg2MmMzMWY2ZTkKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGVs
ZXRlLXJhbmdlLmpzCkBAIC0wLDAgKzEsOTAgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsK
KyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlv
bigiVGVzdCBJbmRleGVkREIncyBJREJPYmplY3RTdG9yZS5kZWxldGUoSURCS2V5UmFuZ2UpIG1l
dGhvZC4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMo
KTsKKworICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIuZGVsZXRlRGF0YWJhc2Uo
J2RlbGV0ZS1yYW5nZScpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAg
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIub3BlbignZGVsZXRlLXJhbmdlJykiKTsK
KyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAg
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgZXZhbEFu
ZExvZygiZGIgPSByZXF1ZXN0LnJlc3VsdCIpOworICAgICAgICAgICAgZXZhbEFuZExvZygicmVx
dWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJ0cmFucyA9IHJl
cXVlc3QucmVzdWx0Iik7CisgICAgICAgICAgICAgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0
ZWRBYm9ydENhbGxiYWNrOworCisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygiZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKworICAgICAgICAgICAgICAgIHRyYW5zLm9uY29tcGxl
dGUgPSBydW5UZXN0czsKKyAgICAgICAgICAgIH07CisgICAgICAgIH07CisgICAgfQorfQorCitm
dW5jdGlvbiBjaGVja0tleXMoZXhwZWN0ZWQsIGNhbGxiYWNrKQoreworICAgIGRlYnVnKCJnZXR0
aW5nIGtleXMgZnJvbSBzdG9yZS4uLiIpOworICAgIGRlYnVnKCJleHBlY3Q6ICIgKyBKU09OLnN0
cmluZ2lmeShleHBlY3RlZCkpOworICAgIHZhciBrZXlzID0gW107CisgICAgcmVxdWVzdCA9IHN0
b3JlLm9wZW5DdXJzb3IoKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
Y3Vyc29yID0gcmVxdWVzdC5yZXN1bHQ7CisgICAgICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAg
ICAgIGtleXMucHVzaChjdXJzb3Iua2V5KTsKKyAgICAgICAgICAgIGN1cnNvci5jb250aW51ZSgp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZGVidWcoImFjdHVhbDogIiArIEpTT04u
c3RyaW5naWZ5KGtleXMpKTsKKyAgICAgICAgICAgIGlmIChKU09OLnN0cmluZ2lmeShleHBlY3Rl
ZCkgPT09IEpTT04uc3RyaW5naWZ5KGtleXMpKSB7CisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiTWF0Y2ghIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoIkRvbid0IG1hdGNoISIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsK
K30KKwordmFyIHRlc3RzID0gWworICAgIHsgbG93ZXI6IDMsIHVwcGVyOiA4LCBsb3dlck9wZW46
IGZhbHNlLCB1cHBlck9wZW46IGZhbHNlLCBleHBlY3RlZDogWzEsIDIsIDksIDEwXX0sCisgICAg
eyBsb3dlcjogMywgdXBwZXI6IDgsIGxvd2VyT3BlbjogdHJ1ZSwgdXBwZXJPcGVuOiBmYWxzZSwg
ZXhwZWN0ZWQ6IFsxLCAyLCAzLCA5LCAxMF19LAorICAgIHsgbG93ZXI6IDMsIHVwcGVyOiA4LCBs
b3dlck9wZW46IGZhbHNlLCB1cHBlck9wZW46IHRydWUsIGV4cGVjdGVkOiBbMSwgMiwgOCwgOSwg
MTBdfSwKKyAgICB7IGxvd2VyOiAzLCB1cHBlcjogOCwgbG93ZXJPcGVuOiB0cnVlLCB1cHBlck9w
ZW46IHRydWUsIGV4cGVjdGVkOiBbMSwgMiwgMywgOCwgOSwgMTBdfQorXTsKKworZnVuY3Rpb24g
cnVuVGVzdHMoKQoreworICAgIGZ1bmN0aW9uIG5leHRUZXN0KCkgeworICAgICAgICB2YXIgdGVz
dCA9IHRlc3RzLnNoaWZ0KCk7CisgICAgICAgIGlmICh0ZXN0KSB7CisgICAgICAgICAgICBkZWJ1
ZygiIik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdz
dG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgICAgICAgICBldmFsQW5k
TG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgICAgICAgICBm
b3IgKGkgPSAxOyBpIDw9IDEwOyArK2kpIHsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJz
dG9yZS5wdXQoIiArIGkgKyAiLCIgKyBpICsgIikiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGV2YWxBbmRMb2coInN0b3JlLmRlbGV0ZShJREJLZXlSYW5nZS5ib3VuZCgiICsKKyAgICAg
ICAgICAgICAgICB0ZXN0Lmxvd2VyICsgIiwgIiArCisgICAgICAgICAgICAgICAgdGVzdC51cHBl
ciArICIsICIgKworICAgICAgICAgICAgICAgIHRlc3QubG93ZXJPcGVuICsgIiwgIiArCisgICAg
ICAgICAgICAgICAgdGVzdC51cHBlck9wZW4gKyAiKSkiKTsKKyAgICAgICAgICAgIGNoZWNrS2V5
cyh0ZXN0LmV4cGVjdGVkLCBuZXh0VGVzdCk7CisgICAgICAgICAgICB0cmFucy5vbmFib3J0ID0g
dW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgICAgICAgICB0cmFucy5vbmNvbXBsZXRlID0g
bmV4dFRlc3Q7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICBuZXh0VGVzdCgpOwor
fQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RlbGV0ZUluZGV4LmpzIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RlbGV0ZUluZGV4LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRjYjViZWRjNjAwODIzY2U5YmY5YzNiYWE0ZTg2ZjdhZmQxMTcyZTkKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGVsZXRl
SW5kZXguanMKQEAgLTAsMCArMSw1MCBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAg
IGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Jyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJU
ZXN0IEluZGV4ZWREQiBkZWxldGVJbmRleCBtZXRob2QiKTsKKworZnVuY3Rpb24gdGVzdCgpCit7
CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
aW5kZXhlZERCLm9wZW4oJ2RlbGV0ZUluZGV4JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9n
KCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSB0d2lkZGxlSW5kZXhlczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gdHdpZGRsZUluZGV4ZXMoKQoreworICAgIHRyYW5zYWN0
aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBldmVudC50YXJnZXQucmVzdWx0OyIpOwor
ICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB0
cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnNh
Y3Rpb24ub25jb21wbGV0ZSA9IHBvc3RUd2lkZGxpbmc7CisgICAgZGVsZXRlQWxsT2JqZWN0U3Rv
cmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBk
Yi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJyk7Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlv
bigib2JqZWN0U3RvcmUuZGVsZXRlSW5kZXgoJ2ZpcnN0JykiLCAiSURCRGF0YWJhc2VFeGNlcHRp
b24uTk9UX0ZPVU5EX0VSUiIpOworICAgIHNob3VsZFRocm93KCJvYmplY3RTdG9yZS5kZWxldGVJ
bmRleCgpIik7IC8vIFR5cGVFcnJvcjogbm90IGVub3VnaCBhcmd1bWVudHMuCisgICAgaW5kZXgg
PSBldmFsQW5kTG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdmaXJzdCcsICdm
aXJzdCcpOyIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIm9iamVjdFN0b3JlLmRlbGV0
ZUluZGV4KCdGSVJTVCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsK
KyAgICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgo
J3NlY29uZCcsICdzZWNvbmQnKTsiKTsKKyAgICByZXR1cm5WYWx1ZSA9IGV2YWxBbmRMb2coInJl
dHVyblZhbHVlID0gb2JqZWN0U3RvcmUuZGVsZXRlSW5kZXgoJ2ZpcnN0Jyk7Iik7CisgICAgc2hv
dWxkQmUoInJldHVyblZhbHVlIiwgInVuZGVmaW5lZCIpOworfQorCitmdW5jdGlvbiBwb3N0VHdp
ZGRsaW5nKCkKK3sKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi5jcmVhdGVPYmplY3RT
dG9yZSgnYmFyJyk7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9BTExPV0VEX0VSUiIpOwor
ICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIm9iamVjdFN0b3JlLmRlbGV0ZUluZGV4KCdzZWNv
bmQnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsK
KyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9kZWxldGVPYmplY3RTdG9yZS1uYW1lLWFyZ3VtZW50LXJlcXVpcmVkLmpzIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RlbGV0ZU9iamVjdFN0b3JlLW5hbWUtYXJn
dW1lbnQtcmVxdWlyZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjYwOTJhMTM1ODkyNzY2YzZmMjIxZTI1ZTVk
ZWE5MmVkYzIyM2MyNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9kZWxldGVPYmplY3RTdG9yZS1uYW1lLWFyZ3VtZW50LXJlcXVpcmVk
LmpzCkBAIC0wLDAgKzEsMzYgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBv
cnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwor
ICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJ
bmRleGVkREIgZGVsZXRlT2JqZWN0U3RvcmUgcmVxdWlyZWQgYXJndW1lbnQiKTsKKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBz
ZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJh
c2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNj
cmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBv
cGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVy
c2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9i
amVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworfQorCitmdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKK3sKKyAgICBk
ZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgc2hvdWxkVGhyb3coImRiLmRlbGV0ZU9i
amVjdFN0b3JlKCk7Iik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvZGVsZXRlT2JqZWN0U3RvcmUtbnVsbC1uYW1lLmpzIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RlbGV0ZU9iamVjdFN0b3JlLW51bGwt
bmFtZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jNGE4MzM1YWI3MWQ0NWZkMWUzNDZhOWM3NmE5ZTJjMDI1ZWMx
ZDRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL2RlbGV0ZU9iamVjdFN0b3JlLW51bGwtbmFtZS5qcwpAQCAtMCwwICsxLDM3IEBACitp
ZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFy
ZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGRlbGV0ZU9iamVjdFN0
b3JlIHJlcXVpcmVkIGFyZ3VtZW50Iik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92
ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsK
KyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRi
ID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZTsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY3JlYXRl
QW5kUG9wdWxhdGVPYmplY3RTdG9yZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRi
KTsKKworICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdudWxsJyk7Iik7Cisg
ICAgZXZhbEFuZExvZygiZGIuZGVsZXRlT2JqZWN0U3RvcmUobnVsbCk7Iik7CisgICAgZmluaXNo
SlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZHVwbGljYXRl
cy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kdXBsaWNhdGVz
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmUxMzNhZThkMWM0ZDk1ZTc1YzM3Yzk3NTcxNGFkZmM5YWUyZjc2M2UK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvZHVwbGljYXRlcy5qcwpAQCAtMCwwICsxLDE2NiBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0
cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2Ny
aXB0aW9uKCJWZXJpZnkgdGhhdCB5b3UgY2FuIHB1dCB0aGUgc2FtZSBkYXRhIGluIDIgZGlmZmVy
ZW50IGRhdGFiYXNlcyB3aXRob3V0IHVuaXF1ZW5lc3MgY29uc3RyYWludHMgZmlyaW5nLiIpOwor
Cit0ZXN0Q291bnQgPSAwOworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgaWYgKHRlc3RDb3VudCsr
ID09IDApCisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignZHVw
bGljYXRlcy0xJykiKTsKKyAgICBlbHNlCisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIub3BlbignZHVwbGljYXRlcy0yJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IHNldFZlcnNpb247CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb24oKQoreworICAgIGRiID0gZXZhbEFuZExvZygi
ZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
ZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZGVsZXRlRXhpc3Rpbmc7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKK3sKKyAgICBkZWJ1Zygic2V0
VmVyc2lvblN1Y2Nlc3MoKToiKTsKKyAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVs
bCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKworICAg
IGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBzZWxmLnN0b3JlID0gZXZhbEFuZExv
ZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7CisgICAgc2VsZi5p
bmRleE9iamVjdCA9IGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleE5hbWUnLCAn
eCcpIik7CisgICAgYWRkRGF0YSgpOworfQorCitmdW5jdGlvbiBhZGREYXRhKCkKK3sKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdr
ZXknKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkTW9yZTsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gYWRkTW9yZSgp
Cit7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5zb3VyY2UuYWRkKHt4
OiAndmFsdWUyJywgeTogJ3p6ejInfSwgJ2tleTInKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZ2V0RGF0YTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gZ2V0RGF0YSgpCit7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImluZGV4T2JqZWN0LmdldEtleSgndmFsdWUnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
Z2V0T2JqZWN0RGF0YTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKK30KKworZnVuY3Rpb24gZ2V0T2JqZWN0RGF0YSgpCit7CisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0IiwgImtleSIpOworCisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImluZGV4T2JqZWN0LmdldCgndmFsdWUnKSIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZ2V0RGF0YUZhaWw7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGdldERhdGFGYWlsKCkKK3sKKyAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQueCIsICJ2YWx1ZSIpOworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC55IiwgInp6eiIpOworCisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4T2JqZWN0LmdldEtleSgnZG9lcyBub3QgZXhp
c3QnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0T2JqZWN0RGF0YUZhaWw7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IGdldE9iamVjdERhdGFGYWlsKCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3Vs
dCIsICJ1bmRlZmluZWQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleE9iamVj
dC5nZXQoJ2RvZXMgbm90IGV4aXN0JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5L
ZXlDdXJzb3I7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Cit9CisKK2Z1bmN0aW9uIG9wZW5LZXlDdXJzb3IoKQoreworICAgIHNob3VsZEJlKCJldmVudC50
YXJnZXQucmVzdWx0IiwgInVuZGVmaW5lZCIpOworCisgICAgc2VsZi5yZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhPYmplY3Qub3BlbktleUN1cnNvcigpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBjdXJzb3IxQ29udGludWU7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGN1cnNvcjFDb250aW51ZSgpCit7CisgICAgc2hv
dWxkQmVGYWxzZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCA9PT0gbnVsbCIpOworICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAidmFsdWUiKTsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICJr
ZXkiKTsKKworICAgIC8vIFdlIHJlLXVzZSB0aGUgbGFzdCByZXF1ZXN0IG9iamVjdC4KKyAgICBl
dmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKKyAgICBzZWxmLnJl
cXVlc3Qub25zdWNjZXNzID0gY3Vyc29yMUNvbnRpbnVlMjsKK30KKworZnVuY3Rpb24gY3Vyc29y
MUNvbnRpbnVlMigpCit7CisgICAgc2hvdWxkQmVGYWxzZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCA9
PT0gbnVsbCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3Vs
dC5rZXkiLCAidmFsdWUyIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJn
ZXQucmVzdWx0LnByaW1hcnlLZXkiLCAia2V5MiIpOworCisgICAgLy8gV2UgcmUtdXNlIHRoZSBs
YXN0IHJlcXVlc3Qgb2JqZWN0LgorICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5yZXN1bHQu
Y29udGludWUoKSIpOworICAgIHNlbGYucmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuT2JqZWN0Q3Vy
c29yOworfQorCitmdW5jdGlvbiBvcGVuT2JqZWN0Q3Vyc29yKCkKK3sKKyAgICBzaG91bGRCZVRy
dWUoImV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwiKTsKKworICAgIHNlbGYucmVxdWVzdCA9
IGV2YWxBbmRMb2coImluZGV4T2JqZWN0Lm9wZW5DdXJzb3IoKSIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gY3Vyc29yMkNvbnRpbnVlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjdXJzb3IyQ29udGludWUoKQoreworICAg
IHNob3VsZEJlRmFsc2UoImV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwiKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgInZhbHVlIik7Cisg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLngiLCAi
dmFsdWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQu
dmFsdWUueSIsICJ6enoiKTsKKworICAgIC8vIFdlIHJlLXVzZSB0aGUgbGFzdCByZXF1ZXN0IG9i
amVjdC4KKyAgICBldmFsQW5kTG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsK
KyAgICBzZWxmLnJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29yMkNvbnRpbnVlMjsKK30KKworZnVu
Y3Rpb24gY3Vyc29yMkNvbnRpbnVlMigpCit7CisgICAgc2hvdWxkQmVGYWxzZSgiZXZlbnQudGFy
Z2V0LnJlc3VsdCA9PT0gbnVsbCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQu
dGFyZ2V0LnJlc3VsdC5rZXkiLCAidmFsdWUyIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLngiLCAidmFsdWUyIik7ICAgIAorICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS55IiwgInp6ejIiKTsK
KworICAgIC8vIFdlIHJlLXVzZSB0aGUgbGFzdCByZXF1ZXN0IG9iamVjdC4KKyAgICBldmFsQW5k
TG9nKCJldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCkiKTsKKyAgICBzZWxmLnJlcXVlc3Qu
b25zdWNjZXNzID0gbGFzdDsKK30KKworZnVuY3Rpb24gbGFzdCgpCit7CisgICAgc2hvdWxkQmVU
cnVlKCJldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsIik7CisKKyAgICBpZiAodGVzdENvdW50
ID09IDEpCisgICAgICAgIHRlc3QoKTsKKyAgICBlbHNlCisgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworfQorCityZW1vdmVWZW5kb3JQcmVmaXhlcygpOwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9lcnJvci1jYXVzZXMtYWJvcnQtYnktZGVmYXVsdC5qcyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9lcnJvci1jYXVzZXMtYWJvcnQtYnktZGVmYXVsdC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mZDNhN2NkZjQxNzU1OWIzY2YzODI3YTBhNzg3ZjQzZjI2NWRlM2I1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L2Vycm9yLWNhdXNlcy1hYm9ydC1ieS1kZWZhdWx0LmpzCkBAIC0wLDAgKzEsMTAxIEBACitpZiAo
dGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQu
anMnKTsKK30KKworZGVzY3JpcHRpb24oIlZlcmlmeSB0aGF0IGEgdHJhbnNhY3Rpb24gd2l0aCBh
biBlcnJvciBhYm9ydHMgdW5sZXNzIHByZXZlbnREZWZhdWx0KCkgaXMgY2FsbGVkLiIpOworCitm
dW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignZXJyb3ItY2F1c2VzLWFib3J0LWJ5LWRl
ZmF1bHQnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvbjsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0
VmVyc2lvbigpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVy
c2lvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
ZGVsZXRlRXhpc3RpbmcoKQoreworICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOwor
ICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9y
dCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29t
cGxldGUgPSBhZGREYXRhIik7CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisg
ICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7
Cit9CisKK2Z1bmN0aW9uIGFkZERhdGEoKQoreworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJh
bnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dS
SVRFKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRD
YWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSB0cmFuc2FjdGlv
bkNvbXBsZXRlZCIpOworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmpl
Y3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUu
YWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gYWRkTW9yZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKK30KKworZnVuY3Rpb24gYWRkTW9yZSgpCit7CisgICAgCisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImV2ZW50LnRhcmdldC5zb3VyY2UuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30s
ICdrZXknKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxs
YmFjazsKKyAgICByZXF1ZXN0LmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIiwgcHJldmVudFRoZURl
ZmF1bHQpOworfQorCitmdW5jdGlvbiBwcmV2ZW50VGhlRGVmYXVsdCgpCit7CisgICAgZXZhbEFu
ZExvZygiZXZlbnQucHJldmVudERlZmF1bHQoKSIpOworfQorCitmdW5jdGlvbiB0cmFuc2FjdGlv
bkNvbXBsZXRlZCgpCit7CisgICAgdGVzdFBhc3NlZCgiVHJhbnNhY3Rpb24gY29tcGxldGVkIik7
CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCIiKTsKKyAgICB0cmFucyA9IGV2YWxBbmRMb2co
InRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rpb24uUkVB
RF9XUklURSkiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmFib3J0ID0gdHJhbnNhY3Rpb25B
Ym9ydGVkMSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSB1bmV4cGVjdGVk
Q29tcGxldGVDYWxsYmFjayIpOworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFu
cy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
c3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSBhbGxvd0RlZmF1bHQ7Cit9CisKK2Z1bmN0aW9uIGFsbG93RGVmYXVsdCgpCit7CisgICAg
ZGVidWcoIkRvaW5nIG5vdGhpbmcgdG8gcHJldmVudCB0aGUgZGVmYXVsdCBhY3Rpb24uLi4iKTsK
K30KKworZnVuY3Rpb24gdHJhbnNhY3Rpb25BYm9ydGVkMSgpCit7CisgICAgdGVzdFBhc3NlZCgi
VHJhbnNhY3Rpb24gYWJvcnRlZCIpOworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiIik7Cisg
ICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1l
J10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMu
b25hYm9ydCA9IHRyYW5zYWN0aW9uQWJvcnRlZDIiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5v
bmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2siKTsKKyAgICBzdG9yZSA9IGV2
YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTogJ3p6eid9LCAn
a2V5JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJh
Y2s7CisgICAgZGVidWcoIk9taXR0aW5nIGFuIG9uZXJyb3IgaGFuZGxlciIpOworfQorCitmdW5j
dGlvbiB0cmFuc2FjdGlvbkFib3J0ZWQyKCkKK3sKKyAgICB0ZXN0UGFzc2VkKCJUcmFuc2FjdGlv
biBhYm9ydGVkIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvZXhjZXB0aW9uLWluLWV2ZW50LWFib3J0cy5qcyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9leGNlcHRpb24taW4tZXZlbnQtYWJvcnRzLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjliMDU4NmZiYTBhMjgzZTllZTVlMzQ2YjU5MDc1MGY0ZDAwMTc3ZDkKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
ZXhjZXB0aW9uLWluLWV2ZW50LWFib3J0cy5qcwpAQCAtMCwwICsxLDEyMSBAQAoraWYgKHRoaXMu
aW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7
Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IGV4Y2VwdGlvbnMgaW4gSURCUmVxdWVzdCBoYW5kbGVy
cyBjYXVzZSBhYm9ydHMuIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRv
clByZWZpeGVzKCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdl
eGNlcHRpb24taW4tZXZlbnQtYWJvcnRzJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNl
dFZlcnNpb247CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb24oKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIu
c2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVs
ZXRlRXhpc3Rpbmc7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVy
c2lvblN1Y2Nlc3MoKToiKTsKKyAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBl
dmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIp
OworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICBldmFs
QW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gc3RhcnRUZXN0Iik7CisKKyAgICBkZWxldGVBbGxP
YmplY3RTdG9yZXMoZGIpOworCisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IHN0YXJ0VGVzdCgpCit7CisgICAgZGVidWcoIiIpOworICAgIHRyYW5zID0gZXZhbEFuZExvZygi
dHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFE
X1dSSVRFKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSB0cmFuc2FjdGlvbkFi
b3J0ZWQxIik7CisgICAgZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRD
b21wbGV0ZUNhbGxiYWNrIik7CisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5z
Lm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJz
dG9yZS5hZGQoe3g6ICd2YWx1ZTInLCB5OiAnenp6Mid9LCAna2V5MicpIik7CisgICAgdHJhbnMu
YWRkRXZlbnRMaXN0ZW5lcignc3VjY2VzcycsIGNhdXNlRXhjZXB0aW9uLCB0cnVlKTsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
Y2F1c2VFeGNlcHRpb24oKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBldmFsQW5kTG9nKCJldmVu
dC5wcmV2ZW50RGVmYXVsdCgpIik7CisgICAgZGVidWcoIlRocm93aW5nIik7CisgICAgdGhyb3cg
InRoaXMgZXhjZXB0aW9uIGlzIGV4cGVjdGVkIjsKK30KKworZnVuY3Rpb24gdHJhbnNhY3Rpb25B
Ym9ydGVkMSgpCit7CisgICAgZGVidWcoIiIpOworICAgIHNob3VsZEhhdmVIYWRFcnJvcigidGhp
cyBleGNlcHRpb24gaXMgZXhwZWN0ZWQiKTsKKyAgICB0ZXN0UGFzc2VkKCJUaGUgdHJhbnNhY3Rp
b24gd2FzIGFib3J0ZWQuIik7CisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRy
YW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Cisg
ICAgZXZhbEFuZExvZygidHJhbnMub25hYm9ydCA9IHRyYW5zYWN0aW9uQWJvcnRlZDIiKTsKKyAg
ICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJh
Y2siKTsKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUo
J3N0b3JlTmFtZScpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDog
J3ZhbHVlJywgeTogJ3p6eid9LCAna2V5JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVu
ZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7CisgICAgZGIub25lcnJvciA9IGNhdXNlRXhjZXB0aW9u
OworfQorCitmdW5jdGlvbiB0cmFuc2FjdGlvbkFib3J0ZWQyKCkKK3sKKyAgICBkZWJ1ZygiIik7
CisgICAgc2hvdWxkSGF2ZUhhZEVycm9yKCJ0aGlzIGV4Y2VwdGlvbiBpcyBleHBlY3RlZCIpOwor
ICAgIHRlc3RQYXNzZWQoIlRoZSB0cmFuc2FjdGlvbiB3YXMgYWJvcnRlZC4iKTsKKyAgICB0cmFu
cyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURC
VHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmFib3J0
ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2siKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNv
bXBsZXRlID0gdHJhbnNhY3Rpb25Db21wbGV0ZWQxIik7CisgICAgc3RvcmUgPSBldmFsQW5kTG9n
KCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZTMnLCB5OiAnenp6Myd9LCAna2V5Mycp
Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0aHJvd0FuZENhdGNoOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIGRiLm9uZXJyb3IgPSBudWxs
OworfQorCitmdW5jdGlvbiB0aHJvd0FuZENhdGNoKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAg
ZXZhbEFuZExvZygiZXZlbnQucHJldmVudERlZmF1bHQoKSIpOworICAgIGRlYnVnKCJUaHJvd2lu
ZyB3aXRoaW4gYSB0cnkgYmxvY2siKTsKKyAgICB0cnkgeworICAgICAgICB0aHJvdyAiQUhISCI7
CisgICAgfSBjYXRjaCAoZSkgeworICAgIH0KK30KKworZnVuY3Rpb24gdHJhbnNhY3Rpb25Db21w
bGV0ZWQxKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgdGVzdFBhc3NlZCgiVGhlIHRyYW5zYWN0
aW9uIGNvbXBsZXRlZC4iKTsKKyAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJh
bnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAg
ICBldmFsQW5kTG9nKCJ0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2siKTsK
KyAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gdHJhbnNhY3Rpb25Db21wbGV0ZWQy
Iik7CisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdz
dG9yZU5hbWUnKSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2
YWx1ZTQnLCB5OiAnenp6NCd9LCAna2V5NCcpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbigpIHsgdGVzdFBhc3NlZCgia2V5NCBhZGRlZCIpOyB9CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHRyYW5zYWN0aW9u
Q29tcGxldGVkMigpCit7CisgICAgZGVidWcoIiIpOworICAgIHRlc3RQYXNzZWQoIlRoZSB0cmFu
c2FjdGlvbiBjb21wbGV0ZWQuIik7CisgICAgZGVidWcoIiIpOworICAgIGZpbmlzaEpTVGVzdCgp
OworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ZhY3RvcnktYmFzaWNzLmpz
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ZhY3RvcnktYmFzaWNz
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmMwMDdjZmE3MjNlODliZDVjOWViNDdjYzg4NWRiZDlhZGZmYmY3MDAK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvZmFjdG9yeS1iYXNpY3MuanMKQEAgLTAsMCArMSw4MiBAQAoraWYgKHRoaXMuaW1wb3J0U2Ny
aXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rl
c2NyaXB0aW9uKCJUZXN0IHRoZSBiYXNpY3Mgb2YgSW5kZXhlZERCJ3MgSURCRmFjdG9yeS4iKTsK
KworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAg
IHNob3VsZEJlVHJ1ZSgidHlwZW9mIGluZGV4ZWREQi5vcGVuID09PSAnZnVuY3Rpb24nIik7Cisg
ICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2YgaW5kZXhlZERCLmNtcCA9PT0gJ2Z1bmN0aW9uJyIpOwor
ICAgIHNob3VsZEJlVHJ1ZSgidHlwZW9mIGluZGV4ZWREQi5nZXREYXRhYmFzZU5hbWVzID09PSAn
ZnVuY3Rpb24nIik7CisKKyAgICBzaG91bGRCZVRydWUoInR5cGVvZiBpbmRleGVkREIuZGVsZXRl
RGF0YWJhc2UgPT09ICdmdW5jdGlvbiciKTsKKworICAgIG5hbWUgPSAnc3RvcmFnZS9pbmRleGVk
ZGIvZmFjdG9yeS1iYXNpY3MnOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2Ui
OworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5nZXREYXRhYmFzZU5hbWVz
KCkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldERhdGFiYXNlTmFtZXNTdWNjZXNzMTsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gZ2V0RGF0YWJhc2VOYW1lc1N1Y2Nlc3MxKCkKK3sKKyAgICB2YXIgZGF0YWJhc2VOYW1l
czsKKyAgICBldmFsQW5kTG9nKCJkYXRhYmFzZU5hbWVzID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIp
OworICAgIHNob3VsZEJlRmFsc2UoImRhdGFiYXNlTmFtZXMuY29udGFpbnMoJyIgKyBuYW1lICsg
IicpIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGF0YWJhc2VOYW1lcy5jb250YWlucygnREFUQUJB
U0UgVEhBVCBET0VTIE5PVCBFWElTVCcpIik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
aW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGV2YWxBbmRMb2co
ImV2ZW50LnRhcmdldC5yZXN1bHQuY2xvc2UoKSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJpbmRleGVkREIuZ2V0RGF0YWJhc2VOYW1lcygpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBnZXREYXRhYmFzZU5hbWVzU3VjY2VzczI7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGdldERhdGFiYXNlTmFtZXNTdWNjZXNz
MigpCit7CisgICAgdmFyIGRhdGFiYXNlTmFtZXM7CisgICAgZXZhbEFuZExvZygiZGF0YWJhc2VO
YW1lcyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoImRhdGFiYXNl
TmFtZXMuY29udGFpbnMoJyIgKyBuYW1lICsgIicpIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGF0
YWJhc2VOYW1lcy5jb250YWlucygnREFUQUJBU0UgVEhBVCBET0VTIE5PVCBFWElTVCcpIik7CisK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCciICsg
bmFtZSArICInKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlRGF0YWJhc2VTdWNj
ZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBkZWxldGVEYXRhYmFzZVN1Y2Nlc3MoKQoreworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJpbmRleGVkREIuZ2V0RGF0YWJhc2VOYW1lcygpIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBnZXREYXRhYmFzZU5hbWVzU3VjY2VzczM7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGdldERhdGFiYXNlTmFtZXNT
dWNjZXNzMygpCit7CisgICAgdmFyIGRhdGFiYXNlTmFtZXM7CisgICAgZXZhbEFuZExvZygiZGF0
YWJhc2VOYW1lcyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJk
YXRhYmFzZU5hbWVzLmNvbnRhaW5zKCciICsgbmFtZSArICInKSIpOworICAgIHNob3VsZEJlRmFs
c2UoImRhdGFiYXNlTmFtZXMuY29udGFpbnMoJ0RBVEFCQVNFIFRIQVQgRE9FUyBOT1QgRVhJU1Qn
KSIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFz
ZSgnREFUQUJBU0UgVEhBVCBET0VTIE5PVCBFWElTVCcpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBkZWxldGVEYXRhYmFzZVN1Y2Nlc3MyOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxldGVEYXRhYmFzZVN1Y2Nlc3My
KCkKK3sKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9mYWN0b3J5LWNtcC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9mYWN0b3J5LWNtcC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNDI2NzZhYzI0YjI5YzA4OGMwNmRi
YzIxMmUzMjdjMDJhMTczZTc1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ZhY3RvcnktY21wLmpzCkBAIC0wLDAgKzEsMTQxIEBACitp
ZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFy
ZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGtleSBjb21wYXJpc29u
IHVzaW5nIElEQkZhY3RvcnkuY21wKCkuIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJl
bW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBzaG91bGRCZVRydWUoInR5cGVvZiBpbmRleGVk
REIuY21wID09PSAnZnVuY3Rpb24nIik7CisKKyAgICB0ZXN0VmFsaWRLZXlzKCk7CisgICAgdGVz
dEludmFsaWRLZXlzKCk7CisgICAgdGVzdElkZW50aWNhbEtleXMoKTsKKyAgICBmaW5pc2hKU1Rl
c3QoKTsKK30KKworZnVuY3Rpb24gdGVzdFZhbGlkS2V5cygpCit7CisgICAgZGVidWcoIiIpOwor
ICAgIGRlYnVnKCJjb21wYXJlIHZhbGlkIGtleXMiKTsKKworICAgIHZhciBrZXlzID0gWworICAg
ICAgICAiLUluZmluaXR5IiwKKyAgICAgICAgIi1OdW1iZXIuTUFYX1ZBTFVFIiwKKyAgICAgICAg
Ii0xIiwKKyAgICAgICAgIi1OdW1iZXIuTUlOX1ZBTFVFIiwKKyAgICAgICAgIjAiLAorICAgICAg
ICAiTnVtYmVyLk1JTl9WQUxVRSIsCisgICAgICAgICIxIiwKKyAgICAgICAgIk51bWJlci5NQVhf
VkFMVUUiLAorICAgICAgICAiSW5maW5pdHkiLAorCisgICAgICAgICJuZXcgRGF0ZSgwKSIsCisg
ICAgICAgICJuZXcgRGF0ZSgxMDAwKSIsCisgICAgICAgICJuZXcgRGF0ZSgxMzE3Mzk5OTMxMDIz
KSIsCisgICAgICAgIAorICAgICAgICAiJyciLAorICAgICAgICAiJ1x4MDAnIiwKKyAgICAgICAg
IidhJyIsCisgICAgICAgICInYWEnIiwKKyAgICAgICAgIidiJyIsCisgICAgICAgICInYmEnIiwK
KworICAgICAgICAiJ1x4QTInIiwgLy8gVSswMEEyIENFTlQgU0lHTgorICAgICAgICAiJ1x1NkMz
NCciLCAvLyBVKzZDMzQgQ0pLIFVOSUZJRUQgSURFT0dSQVBIICh3YXRlcikKKyAgICAgICAgIidc
dUQ4MzRcdUREMUUnIiwgLy8gVSsxRDExRSBNVVNJQ0FMIFNZTUJPTCBHLUNMRUYgKFVURi0xNiBz
dXJyb2dhdGUgcGFpcikKKyAgICAgICAgIidcdUZGRkQnIiwgLy8gVStGRkZEIFJFUExBQ0VNRU5U
IENIQVJBQ1RFUgorCisgICAgICAgICJbXSIsCisKKyAgICAgICAgIlstSW5maW5pdHldIiwKKyAg
ICAgICAgIlstTnVtYmVyLk1BWF9WQUxVRV0iLAorICAgICAgICAiWy0xXSIsCisgICAgICAgICJb
LU51bWJlci5NSU5fVkFMVUVdIiwKKyAgICAgICAgIlswXSIsCisgICAgICAgICJbTnVtYmVyLk1J
Tl9WQUxVRV0iLAorICAgICAgICAiWzFdIiwKKyAgICAgICAgIltOdW1iZXIuTUFYX1ZBTFVFXSIs
CisgICAgICAgICJbSW5maW5pdHldIiwKKworICAgICAgICAiW25ldyBEYXRlKDApXSIsCisgICAg
ICAgICJbbmV3IERhdGUoMTAwMCldIiwKKyAgICAgICAgIltuZXcgRGF0ZSgxMzE3Mzk5OTMxMDIz
KV0iLAorICAgICAgICAKKyAgICAgICAgIlsnJ10iLAorICAgICAgICAiWydceDAwJ10iLAorICAg
ICAgICAiWydhJ10iLAorICAgICAgICAiWydhYSddIiwKKyAgICAgICAgIlsnYiddIiwKKyAgICAg
ICAgIlsnYmEnXSIsCisKKyAgICAgICAgIlsnXHhBMiddIiwgLy8gVSswMEEyIENFTlQgU0lHTgor
ICAgICAgICAiWydcdTZDMzQnXSIsIC8vIFUrNkMzNCBDSksgVU5JRklFRCBJREVPR1JBUEggKHdh
dGVyKQorICAgICAgICAiWydcdUQ4MzRcdUREMUUnXSIsIC8vIFUrMUQxMUUgTVVTSUNBTCBTWU1C
T0wgRy1DTEVGIChVVEYtMTYgc3Vycm9nYXRlIHBhaXIpCisgICAgICAgICJbJ1x1RkZGRCddIiwg
Ly8gVStGRkZEIFJFUExBQ0VNRU5UIENIQVJBQ1RFUgorCisgICAgICAgICJbW11dIiwKKyAgICAg
ICAgCisgICAgICAgICJbW10sIFtdXSIsCisgICAgICAgICJbW10sIFtdLCBbXV0iLAorCisgICAg
ICAgICJbW1tdXV0iLAorICAgICAgICAiW1tbW11dXV0iCisgICAgXTsKKworICAgIHZhciBpLCBr
ZXkxLCBrZXkyOworICAgIGZvciAoaSA9IDA7IGkgPCBrZXlzLmxlbmd0aCAtIDE7IGkgKz0gMSkg
eworICAgICAgICBrZXkxID0ga2V5c1tpXTsKKyAgICAgICAga2V5MiA9IGtleXNbaSArIDFdOwor
ICAgICAgICBzaG91bGRCZVRydWUoImluZGV4ZWREQi5jbXAoIiArIGtleTEgKyAiLCIgKyBrZXky
ICsgIikgPT09IC0xIik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXhlZERCLmNtcCgiICsg
a2V5MiArICIsIiArIGtleTEgKyAiKSA9PT0gMSIpOworICAgICAgICBzaG91bGRCZVRydWUoImlu
ZGV4ZWREQi5jbXAoIiArIGtleTEgKyAiLCIgKyBrZXkxICsgIikgPT09IDAiKTsKKyAgICAgICAg
c2hvdWxkQmVUcnVlKCJpbmRleGVkREIuY21wKCIgKyBrZXkyICsgIiwiICsga2V5MiArICIpID09
PSAwIik7CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0SW52YWxpZEtleXMoKQoreworICAgIGRl
YnVnKCIiKTsKKyAgICBkZWJ1ZygiY29tcGFyZSBpbnZhbGlkIGtleXMiKTsKKworICAgIHZhciBp
bnZhbGlkS2V5cyA9IFsKKyAgICAgICAgInZvaWQgMCIsIC8vIHVuZGVmaW5lZAorICAgICAgICAi
dHJ1ZSIsCisgICAgICAgICJmYWxzZSIsCisgICAgICAgICJOYU4iLAorICAgICAgICAibmV3IERh
dGUoTmFOKSIsCisgICAgICAgICJudWxsIiwKKyAgICAgICAgInt9IiwKKyAgICAgICAgImZ1bmN0
aW9uICgpIHt9IiwKKyAgICAgICAgIi9yZWdleC8iLAorICAgICAgICAic2VsZiIsCisgICAgICAg
ICJzZWxmLmRvY3VtZW50IiwKKyAgICAgICAgInNlbGYuZG9jdW1lbnQuYm9keSIKKyAgICBdOwor
CisgICAgdmFyIGksIGtleTEsIGtleTI7CisgICAgZm9yIChpID0gMDsgaSA8IGludmFsaWRLZXlz
Lmxlbmd0aCAtIDE7IGkgKz0gMSkgeworICAgICAgICBrZXkxID0gaW52YWxpZEtleXNbaV07Cisg
ICAgICAgIGtleTIgPSBpbnZhbGlkS2V5c1tpICsgMV07CisgICAgICAgIGV2YWxBbmRFeHBlY3RF
eGNlcHRpb24oImluZGV4ZWREQi5jbXAoIiArIGtleTEgKyAiLCAiICsga2V5MiArICIpIiwgIklE
QkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oImluZGV4ZWREQi5jbXAoIiArIGtleTIgKyAiLCAiICsga2V5MSArICIpIiwgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRp
b24oImluZGV4ZWREQi5jbXAoIiArIGtleTEgKyAiLCAndmFsaWQnKSIsICJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5EQVRBX0VSUiIpOworICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJpbmRl
eGVkREIuY21wKCd2YWxpZCcsICIgKyBrZXkxICsgIikiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24u
REFUQV9FUlIiKTsKKyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXhlZERCLmNt
cCgiICsga2V5MiArICIsICd2YWxpZCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJS
Iik7CisgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4ZWREQi5jbXAoJ3ZhbGlk
JywgIiArIGtleTIgKyAiKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworICAg
IH0KK30KKworZnVuY3Rpb24gdGVzdElkZW50aWNhbEtleXMoKQoreworICAgIGRlYnVnKCIiKTsK
KyAgICBkZWJ1ZygiY29tcGFyZSBpZGVudGljYWwga2V5cyIpOworCisgICAgc2hvdWxkQmVUcnVl
KCJpbmRleGVkREIuY21wKDAsIC0wKSA9PT0gMCIpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL2ZhY3RvcnktZGVsZXRlZGF0YWJhc2UtaW50ZXJhY3Rpb25zLmpzIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ZhY3RvcnktZGVsZXRlZGF0YWJh
c2UtaW50ZXJhY3Rpb25zLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU5ZDliNzk0M2RlYTVmM2U2NjliNTRlODJm
MzU3ZDk2YjI4NGZiMGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvZmFjdG9yeS1kZWxldGVkYXRhYmFzZS1pbnRlcmFjdGlvbnMuanMK
QEAgLTAsMCArMSwxODYgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRT
Y3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAg
IGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCB0aGUg
ZGVsZXRlRGF0YWJhc2UgY2FsbCBhbmQgaXRzIGludGVyYWN0aW9uIHdpdGggb3Blbi9zZXRWZXJz
aW9uIik7CisKK2Z1bmN0aW9uIENvbm5lY3Rpb24oaWQpIHsKKyAgICBpZCA9IFN0cmluZyhpZCk7
CisgICAgdmFyIHRoYXQgPSB0aGlzOworICAgIHRoaXMub3BlbiA9IGZ1bmN0aW9uKG9wdHMpIHsK
KyAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLm9wZW4nIikp
OworICAgICAgICB2YXIgcmVxID0gaW5kZXhlZERCLm9wZW4oc2VsZi5kYm5hbWUpOworICAgICAg
ICByZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXEub25z
dWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgICAgIHRoYXQuaGFuZGxlID0gZS50YXJn
ZXQucmVzdWx0OworICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsg
aWQgKyAiLm9wZW4ub25zdWNjZXNzJyIpKTsKKyAgICAgICAgICAgIHRoYXQuaGFuZGxlLm9udmVy
c2lvbmNoYW5nZSA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgICAgICBzZWxmLnN0ZXBzLnB1
c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIub252ZXJzaW9uY2hhbmdlJyIpKTsKKyAgICAgICAg
ICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9udmVyc2lvbikgeyBvcHRzLm9udmVyc2lvbi5jYWxs
KHRoYXQpOyB9CisgICAgICAgICAgICB9OworICAgICAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5v
bnN1Y2Nlc3MpIHsgb3B0cy5vbnN1Y2Nlc3MuY2FsbCh0aGF0KTsgfQorICAgICAgICB9OworICAg
IH07CisKKyAgICB0aGlzLmNsb3NlID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHNlbGYuc3RlcHMu
cHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5jbG9zZSciKSk7CisgICAgICAgIHRoaXMuaGFu
ZGxlLmNsb3NlKCk7CisgICAgfTsKKworICAgIHRoaXMuc2V0VmVyc2lvbiA9IGZ1bmN0aW9uKG9w
dHMpIHsKKyAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLnNl
dFZlcnNpb24nIikpOworICAgICAgICB2YXIgcmVxID0gdGhpcy5oYW5kbGUuc2V0VmVyc2lvbihT
dHJpbmcoc2VsZi52ZXIrKykpOworICAgICAgICByZXEub25hYm9ydCA9IGZ1bmN0aW9uIChlKSB7
CisgICAgICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIuc2V0
VmVyc2lvbi5vbmFib3J0JyIpKTsKKyAgICAgICAgICAgIGlmIChvcHRzICYmIG9wdHMub25hYm9y
dCkgeyBvcHRzLm9uYWJvcnQuY2FsbCh0aGF0KTsgfQorICAgICAgICB9OworICAgICAgICByZXEu
b25ibG9ja2VkID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgICAgIHNlbGYuc3RlcHMucHVzaChl
dmFsQW5kTG9nKCInIiArIGlkICsgIi5zZXRWZXJzaW9uLm9uYmxvY2tlZCciKSk7CisgICAgICAg
ICAgICBpZiAob3B0cyAmJiBvcHRzLm9uYmxvY2tlZCkgeyBvcHRzLm9uYmxvY2tlZC5jYWxsKHRo
YXQpOyB9CisgICAgICAgIH07CisgICAgICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZSkg
eworICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLnNl
dFZlcnNpb24ub25zdWNjZXNzJyIpKTsKKyAgICAgICAgICAgIGlmICh0aGF0LmhhbmRsZS5vYmpl
Y3RTdG9yZU5hbWVzLmNvbnRhaW5zKCJ0ZXN0LXN0b3JlIiArIHNlbGYudmVyKSkgeworICAgICAg
ICAgICAgICAgIHRoYXQuaGFuZGxlLmRlbGV0ZU9iamVjdFN0b3JlKCJ0ZXN0LXN0b3JlIiArIHNl
bGYudmVyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhciBzdG9yZSA9IHRoYXQuaGFu
ZGxlLmNyZWF0ZU9iamVjdFN0b3JlKCJ0ZXN0LXN0b3JlIiArIHNlbGYudmVyKTsKKyAgICAgICAg
ICAgIHZhciBjb3VudCA9IDA7CisgICAgICAgICAgICBkb19hc3luY19wdXRzKCk7IC8vIEtlZXAg
dGhpcyB0cmFuc2FjdGlvbiBydW5uaW5nIGZvciBhIHdoaWxlCisgICAgICAgICAgICBmdW5jdGlv
biBkb19hc3luY19wdXRzKCkgeworICAgICAgICAgICAgICAgIHZhciByZXEgPSBzdG9yZS5wdXQo
Y291bnQsIGNvdW50KTsKKyAgICAgICAgICAgICAgICByZXEub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworICAgICAgICAgICAgICAgIHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAo
ZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoKytjb3VudCA8IDEwKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBkb19hc3luY19wdXRzKCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygi
JyIgKyBpZCArICIuc2V0VmVyc2lvbi50cmFuc2FjdGlvbi1jb21wbGV0ZSciKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9uc3VjY2VzcykgeyBvcHRzLm9uc3Vj
Y2Vzcy5jYWxsKHRoYXQpOyB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICB9OworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgICAgICByZXEub25lcnJvciA9IGZ1
bmN0aW9uIChlKSB7CisgICAgICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZhbEFuZExvZygiJyIg
KyBpZCArICIuc2V0VmVyc2lvbi5vbmVycm9yJyIpKTsKKyAgICAgICAgICAgIGlmIChvcHRzICYm
IG9wdHMub25lcnJvcikgeyBvcHRzLm9uZXJyb3IuY2FsbCh0aGF0KTsgfQorICAgICAgICB9Owor
ICAgIH07Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZURhdGFiYXNlKGlkLCBuYW1lLCBvcHRzKSB7Cisg
ICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIidkZWxldGVEYXRhYmFzZSgiICsgaWQgKyAi
KSciKSk7CisgICAgdmFyIHJlcSA9IGluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShuYW1lKTsKKyAg
ICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgc2VsZi5zdGVwcy5wdXNo
KGV2YWxBbmRMb2coIidkZWxldGVEYXRhYmFzZSgiICsgaWQgKyAiKS5vbnN1Y2Nlc3MnIikpOwor
ICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9uc3VjY2VzcykgeyBvcHRzLm9uc3VjY2Vzcy5jYWxs
KG51bGwpOyB9CisgICAgfTsKKyAgICByZXEub25lcnJvciA9IGZ1bmN0aW9uIChlKSB7CisgICAg
ICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInZGVsZXRlRGF0YWJhc2UoIiArIGlkICsg
Iikub25lcnJvciciKSk7CisgICAgICAgIGlmIChvcHRzICYmIG9wdHMub25lcnJvcikgeyBvcHRz
Lm9uZXJyb3IuY2FsbChudWxsKTsgfQorICAgIH07CisgICAgcmVxLm9uYmxvY2tlZCA9IGZ1bmN0
aW9uIChlKSB7CisgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInZGVsZXRlRGF0
YWJhc2UoIiArIGlkICsgIikub25ibG9ja2VkJyIpKTsKKyAgICAgICAgaWYgKG9wdHMgJiYgb3B0
cy5vbmJsb2NrZWQpIHsgb3B0cy5vbmJsb2NrZWQuY2FsbChudWxsKTsgfQorICAgIH07Cit9CisK
Ky8vIHJ1biBhIHNlcmllcyBvZiBzdGVwcyB0aGF0IHRha2UgYSBjb250aW51YXRpb24gZnVuY3Rp
b24KK2Z1bmN0aW9uIHJ1blN0ZXBzKGNvbW1hbmRzKSB7CisgICAgaWYgKGNvbW1hbmRzLmxlbmd0
aCkgeworICAgICAgICB2YXIgY29tbWFuZCA9IGNvbW1hbmRzLnNoaWZ0KCk7CisgICAgICAgIGNv
bW1hbmQoZnVuY3Rpb24oKSB7IHJ1blN0ZXBzKGNvbW1hbmRzKTsgfSk7CisgICAgfQorfQorCitm
dW5jdGlvbiB0ZXN0KCkgeworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgdGVzdDEo
KTsKK30KKworZnVuY3Rpb24gdGVzdDEoKSB7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJU
RVNUOiBkZWxldGVEYXRhYmFzZSBibG9ja2VkIG9uIG9wZW4gaGFuZGxlcyIpOworICAgIGV2YWxB
bmRMb2coInNlbGYuZGJuYW1lID0gJ3Rlc3QxJzsgc2VsZi52ZXIgPSAxOyBzZWxmLnN0ZXBzID0g
W10iKTsKKyAgICB2YXIgaCA9IG5ldyBDb25uZWN0aW9uKCJoIik7CisgICAgcnVuU3RlcHMoW2Z1
bmN0aW9uKGRvTmV4dCkgeyBoLm9wZW4oe29uc3VjY2VzczogZG9OZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvbnZlcnNpb246IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoIiAgICBoIGNsb3NpbmcsIGJ1dCBub3QgaW1t
ZWRpYXRlbHkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IGguY2xvc2UoKTsgfSwgMCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH19KTsgfSwKKyAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGRlbGV0ZURhdGFi
YXNlKCIiLCBzZWxmLmRibmFtZSwgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgb25zdWNj
ZXNzOiBmaW5pc2hUZXN0fSk7IH0sCisgICAgICAgIF0pOworICAgIGZ1bmN0aW9uIGZpbmlzaFRl
c3QoKSB7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic2VsZi5zdGVwcy50b1N0cmlu
ZygpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiaC5vcGVuIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiaC5vcGVuLm9uc3VjY2VzcyIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImRlbGV0ZURhdGFiYXNlKCkiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJoLm9udmVyc2lvbmNoYW5nZSIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImRlbGV0ZURhdGFiYXNlKCkub25ibG9ja2VkIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiaC5jbG9zZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImRlbGV0ZURhdGFiYXNlKCkub25zdWNjZXNzIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF0udG9TdHJpbmcoKSk7CisgICAgICAgIHRlc3QyKCk7CisgICAgfQorfQorCitmdW5jdGlv
biB0ZXN0MigpIHsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRFU1Q6IGRlbGV0ZURhdGFi
YXNlIG5vdCBibG9ja2VkIHdoZW4gaGFuZGxlcyBjbG9zZSBpbW1lZGlhdGVseSIpOworICAgIGV2
YWxBbmRMb2coInNlbGYuZGJuYW1lID0gJ3Rlc3QyJzsgc2VsZi52ZXIgPSAxOyBzZWxmLnN0ZXBz
ID0gW10iKTsKKyAgICB2YXIgaCA9IG5ldyBDb25uZWN0aW9uKCJoIik7CisgICAgcnVuU3RlcHMo
W2Z1bmN0aW9uKGRvTmV4dCkgeyBoLm9wZW4oe29uc3VjY2VzczogZG9OZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb252ZXJzaW9uOiBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiICAg
IGggY2xvc2luZyBpbW1lZGlhdGVseSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGguY2xvc2UoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH19KTsgfSwKKyAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGRlbGV0ZURh
dGFiYXNlKCIiLCBzZWxmLmRibmFtZSwgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgb25z
dWNjZXNzOiBmaW5pc2hUZXN0fSk7IH0sCisgICAgICAgIF0pOworICAgIGZ1bmN0aW9uIGZpbmlz
aFRlc3QoKSB7CisgICAgICAgIGRlYnVnKCJOT1RFOiBXaWxsIEZBSUwgd2l0aCBleHRyYSBib2d1
cyBkZWxldGVEYXRhYmFzZSgpLm9uYmxvY2tlZCBzdGVwOyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzExMzAiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJzZWxmLnN0ZXBzLnRvU3RyaW5nKCkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
WyJoLm9wZW4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoLm9wZW4ub25zdWNj
ZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVsZXRlRGF0YWJhc2UoKSIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgub252ZXJzaW9uY2hhbmdlIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaC5jbG9zZSIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImRlbGV0ZURhdGFiYXNlKCkub25zdWNjZXNzIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF0udG9TdHJpbmcoKSk7CisgICAgICAgIHRlc3QzKCk7CisgICAg
fQorfQorCitmdW5jdGlvbiB0ZXN0MygpIHsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRF
U1Q6IGRlbGV0ZURhdGFiYXNlIGlzIGRlbGF5ZWQgaWYgYSBWRVJTSU9OX0NIQU5HRSB0cmFuc2Fj
dGlvbiBpcyBydW5uaW5nIik7CisgICAgZXZhbEFuZExvZygic2VsZi5kYm5hbWUgPSAndGVzdDMn
OyBzZWxmLnZlciA9IDE7IHNlbGYuc3RlcHMgPSBbXSIpOworICAgIHZhciBoID0gbmV3IENvbm5l
Y3Rpb24oImgiKTsKKyAgICBydW5TdGVwcyhbZnVuY3Rpb24oZG9OZXh0KSB7IGgub3Blbih7b25z
dWNjZXNzOiBkb05leHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9udmVyc2lv
bjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1
ZygiICAgIGggY2xvc2luZywgYnV0IG5vdCBpbW1lZGlhdGVseSIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgaC5jbG9zZSgpOyB9
LCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0pOyB9LAorICAgICAgICAg
ICAgICBmdW5jdGlvbihkb05leHQpIHsgaC5zZXRWZXJzaW9uKCk7IGRvTmV4dCgpOyB9LAorICAg
ICAgICAgICAgICBmdW5jdGlvbihkb05leHQpIHsgZGVsZXRlRGF0YWJhc2UoIiIsIHNlbGYuZGJu
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7b25zdWNjZXNzOiBmaW5pc2hU
ZXN0fSk7IH0sCisgICAgICAgICAgICAgIF0pOworCisgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgp
IHsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzZWxmLnN0ZXBzLnRvU3RyaW5nKCki
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJoLm9wZW4iLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJoLm9wZW4ub25zdWNjZXNzIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiaC5zZXRWZXJzaW9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiZGVsZXRlRGF0YWJhc2UoKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Imguc2V0VmVyc2lvbi5vbnN1Y2Nlc3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJoLnNldFZlcnNpb24udHJhbnNhY3Rpb24tY29tcGxldGUiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJoLm9udmVyc2lvbmNoYW5nZSIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImRlbGV0ZURhdGFiYXNlKCkub25ibG9ja2VkIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiaC5jbG9zZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImRlbGV0ZURhdGFiYXNlKCkub25zdWNjZXNzIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF0udG9TdHJpbmcoKSk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0KK30KKwor
dGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9mYWN0b3J5LWRlbGV0ZWRhdGFiYXNlLmpz
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2ZhY3RvcnktZGVsZXRl
ZGF0YWJhc2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDZmYTU2MjI5YTc0MjY2NmVhOWZiMDUxNmE4YWNiNzI0
MTE1MGY5OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9mYWN0b3J5LWRlbGV0ZWRhdGFiYXNlLmpzCkBAIC0wLDAgKzEsOTEgQEAKK2lm
ICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJl
ZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyB3ZWJraXRJbmRleGVk
REIuZGVsZXRlRGF0YWJhc2UoKS4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3Zl
VmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9w
ZW4oJ2RhdGFiYXNlLXRvLWRlbGV0ZScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzdGFy
dFNldFZlcnNpb247CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0U2V0VmVyc2lvbigpCit7CisgICAgZGIgPSBldmFsQW5k
TG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBkZWxldGVFeGlzdGluZzsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVsZXRlRXhpc3RpbmcoKQoreworICAgIHNlbGYu
dHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBz
aG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2co
InN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7CisKKyAg
ICBzZWxmLmluZGV4ID0gZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZScs
ICcnKSIpOworICAgIHNob3VsZEJlVHJ1ZSgic3RvcmUuaW5kZXhOYW1lcy5jb250YWlucygnaW5k
ZXhOYW1lJykiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoJ3ZhbHVl
JywgJ2tleScpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IGdldFZhbHVlOworfQorCitmdW5jdGlvbiBnZXRW
YWx1ZSgpCit7CisgICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJkYi50cmFuc2FjdGlvbign
c3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICB0cmFuc2FjdGlv
bi5vbmFib3J0ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgdmFyIHN0b3JlID0gZXZh
bEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsK
KworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5nZXQoJ2tleScpIik7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBhZGRJbmRleDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gYWRkSW5kZXgoKQoreworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ2YWx1ZSIpOworCisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZURhdGFiYXNlOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxldGVEYXRhYmFz
ZSgpCit7CisgICAgZGIub252ZXJzaW9uY2hhbmdlID0gZnVuY3Rpb24oKSB7IGRiLmNsb3NlKCk7
IH0KKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5kZWxldGVE
YXRhYmFzZSgnZGF0YWJhc2UtdG8tZGVsZXRlJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IHJlb3BlbkRhdGFiYXNlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiByZW9wZW5EYXRhYmFzZSgpCit7CisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdkYXRhYmFzZS10by1kZWxldGUnKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gc3RhcnRTZXRWZXJzaW9uQWdhaW47CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0U2V0
VmVyc2lvbkFnYWluKCkKK3sKKyAgICByZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCdu
ZXcgdmVyc2lvbicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB2ZXJpZnlOb3RGb3VuZDsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gdmVyaWZ5Tm90Rm91bmQoKQoreworICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5h
bWVzLmxlbmd0aCIsICIwIik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbmRleC1jb3VudC5qcyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbmRleC1jb3VudC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYjBlNGVm
MDk4NDUwMTlmN2UxZmRmYWQ3ZDQ2YzZhYmFiYjQ2YTdmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4LWNvdW50LmpzCkBAIC0w
LDAgKzEsMTU0IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0
cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBv
cnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERC
J3MgSURCSW5kZXguY291bnQoKS4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3Zl
VmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9w
ZW4oJ2luZGV4LWNvdW50JykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgICAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAg
ICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBwcmVwYXJlRGF0YWJhc2U7CisgICAgfTsKK30KKworZnVuY3Rp
b24gcHJlcGFyZURhdGFiYXNlKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInByZXBh
cmluZyBkYXRhYmFzZSIpOworICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7
CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgc3RvcmUgPSBldmFsQW5k
TG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOwor
CisgICAgc2VsZi5pbmRleCA9IGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleE5h
bWUnLCAnJykiKTsKKyAgICBzaG91bGRCZVRydWUoInN0b3JlLmluZGV4TmFtZXMuY29udGFpbnMo
J2luZGV4TmFtZScpIik7CisKKyAgICBkZWJ1ZygiYWRkaW5nIDAgLi4uIDk5Iik7CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICByZXF1ZXN0ID0gc3RvcmUuYWRk
KGksIGkpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICB9CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHZlcmlmeUNvdW50OworfQorCitmdW5j
dGlvbiB2ZXJpZnlDb3VudCgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ2ZXJpZnlp
bmcgY291bnQgd2l0aG91dCByYW5nZSIpOworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMg
PSBkYi50cmFuc2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKSIp
OworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQg
PSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gdmVyaWZ5
Q291bnRXaXRoUmFuZ2U7CisKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMu
b2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgc2hvdWxkQmVUcnVlKCJzdG9yZSAhPSBu
dWxsIik7CisgICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmluZGV4KCdpbmRl
eE5hbWUnKSIpOworICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXggIT0gbnVsbCIpOworCisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleC5jb3VudCgpIik7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgIHNob3VsZEJlVHJ1ZSgidHlwZW9mIHJlcXVlc3Qu
cmVzdWx0ID09ICdudW1iZXInIik7CisgICAgICAgICBzaG91bGRCZSgicmVxdWVzdC5yZXN1bHQi
LCAiMTAwIik7CisgICAgICAgICAvLyBsZXQgdGhlIHRyYW5zYWN0aW9uIGNvbXBsZXRlCisgICAg
fTsKK30KKworZnVuY3Rpb24gdmVyaWZ5Q291bnRXaXRoUmFuZ2UoKQoreworICAgIGRlYnVnKCIi
KTsKKyAgICBkZWJ1ZygidmVyaWZ5aW5nIGNvdW50IHdpdGggcmFuZ2UiKTsKKyAgICB0cmFucyA9
IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlTmFtZScsIElEQlRyYW5z
YWN0aW9uLlJFQURfT05MWSkiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9IG51bGwiKTsK
KyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnMu
b25jb21wbGV0ZSA9IHZlcmlmeUNvdW50V2l0aEtleTsKKworICAgIHN0b3JlID0gZXZhbEFuZExv
Zygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICBzaG91bGRC
ZVRydWUoInN0b3JlICE9IG51bGwiKTsKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coImluZGV4ID0g
dHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpLmluZGV4KCdpbmRleE5hbWUnKSIpOworICAg
IHNob3VsZEJlVHJ1ZSgiaW5kZXggIT0gbnVsbCIpOworCisgICAgdmFyIHRlc3RzID0gWworICAg
ICAgICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogOTksIHVwcGVyT3Blbjog
ZmFsc2UsIGV4cGVjdGVkOiAxMDAgfSwKKyAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiB0
cnVlLCB1cHBlcjogOTksIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiA5OSB9LAorICAgICAg
ICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogOTksIHVwcGVyT3BlbjogdHJ1
ZSwgZXhwZWN0ZWQ6IDk5IH0sCisgICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogdHJ1ZSwg
dXBwZXI6IDk5LCB1cHBlck9wZW46IHRydWUsIGV4cGVjdGVkOiA5OCB9LAorICAgICAgICB7IGxv
d2VyOiAwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogMTAwLCB1cHBlck9wZW46IGZhbHNlLCBl
eHBlY3RlZDogMTAwIH0sCisgICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogZmFsc2UsIHVw
cGVyOiAxMDAsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiAxMDAgfSwKKyAgICAgICAgeyBs
b3dlcjogMTAsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiAxMDAsIHVwcGVyT3BlbjogZmFsc2Us
IGV4cGVjdGVkOiA5MCB9LAorICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IGZhbHNlLCB1
cHBlcjogMCwgdXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDEgfSwKKyAgICAgICAgeyBsb3dl
cjogNTAwLCBsb3dlck9wZW46IGZhbHNlLCB1cHBlcjogNTAwLCB1cHBlck9wZW46IGZhbHNlLCBl
eHBlY3RlZDogMCB9CisgICAgXTsKKworICAgIGZ1bmN0aW9uIG5leHRUZXN0KCkgeworICAgICAg
ICBkZWJ1ZygiIik7CisgICAgICAgIGV2YWxBbmRMb2coInRlc3QgPSAiICsgSlNPTi5zdHJpbmdp
ZnkodGVzdHMuc2hpZnQoKSkpOworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IGluZGV4LmNvdW50KElEQktleVJhbmdlLmJvdW5kKHRlc3QubG93ZXIsIHRlc3QudXBwZXIs
IHRlc3QubG93ZXJPcGVuLCB0ZXN0LnVwcGVyT3BlbikpIik7CisgICAgICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgidHlwZW9mIHJlcXVl
c3QucmVzdWx0ID09ICdudW1iZXInIik7CisgICAgICAgICAgICAgc2hvdWxkQmUoInJlcXVlc3Qu
cmVzdWx0IiwgU3RyaW5nKHRlc3QuZXhwZWN0ZWQpKTsKKworICAgICAgICAgICAgIGlmICh0ZXN0
cy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgbmV4dFRlc3QoKTsKKyAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIGxldCB0aGUgdHJhbnNhY3Rpb24gY29tcGxldGUK
KyAgICAgICAgfTsKKyAgICB9CisKKyAgICBuZXh0VGVzdCgpOworfQorCitmdW5jdGlvbiB2ZXJp
ZnlDb3VudFdpdGhLZXkoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidmVyaWZ5aW5n
IGNvdW50IHdpdGgga2V5Iik7CisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRy
YW5zYWN0aW9uKCdzdG9yZU5hbWUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7CisgICAg
c2hvdWxkQmVUcnVlKCJ0cmFucyAhPSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhw
ZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSBmaW5pc2hKU1Rlc3Q7
CisKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0
b3JlTmFtZScpIik7CisgICAgc2hvdWxkQmVUcnVlKCJzdG9yZSAhPSBudWxsIik7CisgICAgc3Rv
cmUgPSBldmFsQW5kTG9nKCJpbmRleCA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKS5p
bmRleCgnaW5kZXhOYW1lJykiKTsKKyAgICBzaG91bGRCZVRydWUoImluZGV4ICE9IG51bGwiKTsK
KworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4LmNvdW50KE5hTikiLCAiSURCRGF0
YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJp
bmRleC5jb3VudCh7fSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKyAgICBl
dmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJpbmRleC5jb3VudCgvcmVnZXgvKSIsICJJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworCisgICAgdmFyIHRlc3RzID0gWworICAgICAgICB7IGtl
eTogMCwgZXhwZWN0ZWQ6IDEgfSwKKyAgICAgICAgeyBrZXk6IDEwMCwgZXhwZWN0ZWQ6IDAgfSwK
KyAgICAgICAgeyBrZXk6IG51bGwsIGV4cGVjdGVkOiAxMDAgfQorICAgIF07CisKKyAgICBmdW5j
dGlvbiBuZXh0VGVzdCgpIHsKKyAgICAgICAgZGVidWcoIiIpOworICAgICAgICBldmFsQW5kTG9n
KCJ0ZXN0ID0gIiArIEpTT04uc3RyaW5naWZ5KHRlc3RzLnNoaWZ0KCkpKTsKKyAgICAgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleC5jb3VudCh0ZXN0LmtleSkiKTsKKyAg
ICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgc2hvdWxkQmVU
cnVlKCJ0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251bWJlciciKTsKKyAgICAgICAgICAgICBz
aG91bGRCZSgicmVxdWVzdC5yZXN1bHQiLCBTdHJpbmcodGVzdC5leHBlY3RlZCkpOworCisgICAg
ICAgICAgICAgaWYgKHRlc3RzLmxlbmd0aCkgeworICAgICAgICAgICAgICAgICBuZXh0VGVzdCgp
OworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAvLyBvdGhlcndpc2UgbGV0IHRoZSB0cmFu
c2FjdGlvbiBjb21wbGV0ZQorICAgICAgICB9OworICAgIH0KKworICAgIG5leHRUZXN0KCk7Cit9
CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW5kZXgtY3Vyc29yLmpzIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4LWN1cnNvci5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jOTg4ZWJjMThjNDZlODg4MWM0ZjE1MDMzOGY3MjdiZjQ4NzUyNGY3Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4
LWN1cnNvci5qcwpAQCAtMCwwICsxLDI0OSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewor
ICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9u
KCJUZXN0IEluZGV4ZWREQidzIHdlYmtpdElEQkluZGV4Lm9wZW5DdXJzb3IgKyB0aGUgY3Vyc29y
IGl0IHByb2R1Y2VzIGluIGRlcHRoLiIpOworCisvLyBJbiBvcmRlciBvZiBob3cgaXQgc2hvdWxk
IGJlIHNvcnRlZCBieSBJbmRleGVkREIuCitzZWxmLnRlc3REYXRhID0gWworICAgIDEsCisgICAg
MSwKKyAgICAzLjE0MTU5LAorICAgIDMuMTQxNTksCisgICAgMTAsCisgICAgLy8gRklYTUU6IERh
dGVzLgorICAgICJBIGJpZyBzdHJpbmciLAorICAgICJ0aGUgQklHRVNUIHN0cmluZyIsCisgICAg
InRoZSBCSUdFU1Qgc3RyaW5nIgorXTsKKworZnVuY3Rpb24gb3BlbkRhdGFiYXNlKCkKK3sKKyAg
ICByZXN1bHQgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignaW5kZXgtY3Vyc29yJykiKTsK
KyAgICByZXN1bHQub25zdWNjZXNzID0gc2V0VmVyc2lvbjsKKyAgICByZXN1bHQub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uKCkKK3sK
KyAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisK
KyAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7
CisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4aXN0aW5nOworICAgIHJlc3VsdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZUV4aXN0
aW5nKCkKK3sKKyAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJn
ZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRy
YW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKworICAgIGRlbGV0ZUFsbE9i
amVjdFN0b3JlcyhkYik7CisKKyAgICBzZWxmLm9iamVjdFN0b3JlID0gZXZhbEFuZExvZygiZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ3NvbWVPYmplY3RTdG9yZScpIik7CisgICAgc2VsZi5pbmRleE9i
amVjdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdzb21lSW5kZXgnLCAn
eCcpIik7CisgICAgc2VsZi5uZXh0VG9BZGQgPSAwOworICAgIGFkZERhdGEoKTsKK30KKworZnVu
Y3Rpb24gYWRkRGF0YSgpCit7CisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUu
YWRkKHsneCc6IHRlc3REYXRhW25leHRUb0FkZF19LCBuZXh0VG9BZGQpIik7CisgICAgcmVzdWx0
Lm9uc3VjY2VzcyA9ICsrc2VsZi5uZXh0VG9BZGQgPCB0ZXN0RGF0YS5sZW5ndGggPyBhZGREYXRh
IDogc2NoZWR1bGVUZXN0czsKKyAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBzY2hlZHVsZVRlc3RzKCkKK3sKKyAgICBkZWJ1ZygiU2No
ZWR1bGluZyB0ZXN0cy4uLiIpOworICAgIHNlbGYuc2NoZWR1bGVkVGVzdHMgPSBbXTsKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHRlc3REYXRhLmxlbmd0aDsgKytpKSB7CisgICAgICAgIC8qIGxl
ZnQgYm91bmQsIGlzIG9wZW4sIHJpZ2h0IGJvdW5kLCBpcyBvcGVuLCBhc2NlbmRpbmcgKi8KKyAg
ICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwgbnVsbCwgbnVsbCwgdHJ1ZV0p
OworICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCBmYWxzZSwgbnVsbCwgbnVsbCwg
dHJ1ZV0pOworICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtudWxsLCBudWxsLCBpLCB0
cnVlLCB0cnVlXSk7CisgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW251bGwsIG51bGws
IGksIGZhbHNlLCB0cnVlXSk7CisgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIHRy
dWUsIG51bGwsIG51bGwsIGZhbHNlXSk7CisgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQo
W2ksIGZhbHNlLCBudWxsLCBudWxsLCBmYWxzZV0pOworICAgICAgICBzY2hlZHVsZWRUZXN0cy51
bnNoaWZ0KFtudWxsLCBudWxsLCBpLCB0cnVlLCBmYWxzZV0pOworICAgICAgICBzY2hlZHVsZWRU
ZXN0cy51bnNoaWZ0KFtudWxsLCBudWxsLCBpLCBmYWxzZSwgZmFsc2VdKTsKKyAgICAgICAgZm9y
ICh2YXIgaiA9IDY7IGogPCB0ZXN0RGF0YS5sZW5ndGg7ICsraikgeworICAgICAgICAgICAgc2No
ZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwgaiwgdHJ1ZSwgdHJ1ZV0pOworICAgICAgICAg
ICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwgaiwgZmFsc2UsIHRydWVdKTsKKyAg
ICAgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBqLCB0cnVlLCB0cnVl
XSk7CisgICAgICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCBmYWxzZSwgaiwgZmFs
c2UsIHRydWVdKTsKKyAgICAgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIHRydWUs
IGosIHRydWUsIGZhbHNlXSk7CisgICAgICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtp
LCB0cnVlLCBqLCBmYWxzZSwgZmFsc2VdKTsKKyAgICAgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVu
c2hpZnQoW2ksIGZhbHNlLCBqLCB0cnVlLCBmYWxzZV0pOworICAgICAgICAgICAgc2NoZWR1bGVk
VGVzdHMudW5zaGlmdChbaSwgZmFsc2UsIGosIGZhbHNlLCBmYWxzZV0pOworICAgICAgICB9Cisg
ICAgfQorCisgICAgZGVidWcoIlJ1bm5pbmcgdGVzdHMuLi4iKTsKKyAgICBydW5OZXh0VGVzdCgp
OworfQorCitmdW5jdGlvbiBydW5OZXh0VGVzdCgpCit7CisgICAgaWYgKCFzY2hlZHVsZWRUZXN0
cy5sZW5ndGgpIHsKKyAgICAgICAgdGVzdE51bGxLZXlSYW5nZSgpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgdmFyIHRlc3QgPSBzY2hlZHVsZWRUZXN0cy5wb3AoKTsKKyAgICBzZWxm
Lmxvd2VyID0gdGVzdFswXTsKKyAgICBzZWxmLmxvd2VySXNPcGVuID0gdGVzdFsxXTsKKyAgICBz
ZWxmLnVwcGVyID0gdGVzdFsyXTsKKyAgICBzZWxmLnVwcGVySXNPcGVuID0gdGVzdFszXTsKKyAg
ICBzZWxmLmFzY2VuZGluZyA9IHRlc3RbNF07CisKKyAgICBzdHIgPSAiTmV4dCB0ZXN0OiAiOwor
ICAgIGlmIChsb3dlciAhPT0gbnVsbCkgeworICAgICAgICBzdHIgKz0gImxvd2VyICI7CisgICAg
ICAgIGlmIChsb3dlcklzT3BlbikKKyAgICAgICAgICAgIHN0ciArPSAib3BlbiAiOworICAgICAg
ICBzdHIgKz0gImJvdW5kIGlzICIgKyBsb3dlciArICI7ICI7CisgICAgfQorICAgIGlmICh1cHBl
ciAhPT0gbnVsbCkgeworICAgICAgICBzdHIgKz0gInVwcGVyICI7CisgICAgICAgIGlmICh1cHBl
cklzT3BlbikKKyAgICAgICAgICAgIHN0ciArPSAib3BlbiAiOworICAgICAgICBzdHIgKz0gImJv
dW5kIGlzICIgKyB1cHBlciArICI7ICI7CisgICAgfQorICAgIGlmIChhc2NlbmRpbmcpCisgICAg
ICAgIHN0ciArPSAic29ydGVkIGFzY2VuZGluZy4iOworICAgIGVsc2UKKyAgICAgICAgc3RyICs9
ICJzb3J0ZWQgZGVzY2VuZGluZy4iOworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKHN0cik7
CisKKyAgICAvLyBXb3JrIGFyb3VuZCBmb3IgZHVwbGljYXRlIHZhbHVlcy4KKyAgICBpZiAodXBw
ZXIgIT09IG51bGwpIHsKKyAgICAgICAgaWYgKHVwcGVySXNPcGVuKSB7CisgICAgICAgICAgICB3
aGlsZSAodXBwZXIgPiAwICYmIHRlc3REYXRhW3VwcGVyXSA9PT0gdGVzdERhdGFbdXBwZXIgLSAx
XSkKKyAgICAgICAgICAgICAgICAtLXNlbGYudXBwZXI7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICB3aGlsZSAodXBwZXIgPCB0ZXN0RGF0YS5sZW5ndGggLSAxICYmIHRlc3REYXRhW3Vw
cGVyXSA9PT0gdGVzdERhdGFbdXBwZXIgKyAxXSkKKyAgICAgICAgICAgICAgICArK3NlbGYudXBw
ZXI7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGxvd2VyICE9PSBudWxsKSB7CisgICAgICAg
IGlmIChsb3dlcklzT3BlbikgeworICAgICAgICAgICAgd2hpbGUgKGxvd2VyIDwgdGVzdERhdGEu
bGVuZ3RoIC0gMSAmJiB0ZXN0RGF0YVtsb3dlcl0gPT09IHRlc3REYXRhW2xvd2VyICsgMV0pCisg
ICAgICAgICAgICAgICAgKytzZWxmLmxvd2VyOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgd2hpbGUgKGxvd2VyID4gMCAmJiB0ZXN0RGF0YVtsb3dlcl0gPT09IHRlc3REYXRhW2xvd2Vy
IC0gMV0pCisgICAgICAgICAgICAgICAgLS1zZWxmLmxvd2VyOworICAgICAgICB9CisgICAgfQor
CisgICAgaWYgKGFzY2VuZGluZykgeworICAgICAgICBpZiAobG93ZXIgIT09IG51bGwpIHsKKyAg
ICAgICAgICAgIGlmICghbG93ZXJJc09wZW4pCisgICAgICAgICAgICAgICAgc2VsZi5leHBlY3Rl
ZEluZGV4ID0gbG93ZXI7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc2VsZi5l
eHBlY3RlZEluZGV4ID0gbG93ZXIgKyAxOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHNl
bGYuZXhwZWN0ZWRJbmRleCA9IDA7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHVwcGVyICE9
PSBudWxsKSB7CisgICAgICAgICAgICBpZiAoIXVwcGVySXNPcGVuKQorICAgICAgICAgICAgICAg
IHNlbGYuZXhwZWN0ZWRJbmRleCA9IHVwcGVyOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IHVwcGVyIC0gMTsKKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSB0ZXN0RGF0YS5sZW5ndGggLSAxOworICAg
IH0KKyAgICB0ZXN0V2l0aGluQm91bmRzKCk7CisKKyAgICBpZiAodGVzdERhdGFbbG93ZXJdID09
PSB0ZXN0RGF0YVt1cHBlcl0gJiYgKGxvd2VySXNPcGVuIHx8IHVwcGVySXNPcGVuKSkgeworICAg
ICAgICBkZWJ1ZygiU2tpcHBpbmcgaWxsZWdhbCBrZXkgcmFuZ2UuIik7CisgICAgICAgIHJ1bk5l
eHRUZXN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2YXIga2V5UmFuZ2U7Cisg
ICAgaWYgKGxvd2VyICE9PSBudWxsICYmIHVwcGVyICE9PSBudWxsKQorICAgICAgICBrZXlSYW5n
ZSA9IElEQktleVJhbmdlLmJvdW5kKHRlc3REYXRhW2xvd2VyXSwgdGVzdERhdGFbdXBwZXJdLCBs
b3dlcklzT3BlbiwgdXBwZXJJc09wZW4pOworICAgIGVsc2UgaWYgKGxvd2VyICE9PSBudWxsKQor
ICAgICAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQodGVzdERhdGFbbG93ZXJd
LCBsb3dlcklzT3Blbik7CisgICAgZWxzZQorICAgICAgICBrZXlSYW5nZSA9IElEQktleVJhbmdl
LnVwcGVyQm91bmQodGVzdERhdGFbdXBwZXJdLCB1cHBlcklzT3Blbik7CisKKyAgICB2YXIgcmVx
dWVzdCA9IGluZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3Ioa2V5UmFuZ2UsIGFzY2VuZGluZyA/IElE
QkN1cnNvci5ORVhUIDogSURCQ3Vyc29yLlBSRVYpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
Y3Vyc29ySXRlcmF0aW9uOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiB0ZXN0V2l0aGluQm91bmRzKCkKK3sKKyAgICBpZiAoZXhw
ZWN0ZWRJbmRleCA8IDAgfHwgdGVzdERhdGEubGVuZ3RoIDw9IGV4cGVjdGVkSW5kZXgpCisgICAg
ICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IG51bGw7CisgICAgaWYgKGxvd2VyICE9PSBudWxsICYm
IGV4cGVjdGVkSW5kZXggPCBsb3dlcikKKyAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gbnVs
bDsKKyAgICBpZiAodXBwZXIgIT09IG51bGwgJiYgdXBwZXIgPCBleHBlY3RlZEluZGV4KQorICAg
ICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSBudWxsOworICAgIGlmIChsb3dlciAhPT0gbnVsbCAm
JiBsb3dlcklzT3BlbiAmJiBleHBlY3RlZEluZGV4IDw9IGxvd2VyKQorICAgICAgICBzZWxmLmV4
cGVjdGVkSW5kZXggPSBudWxsOworICAgIGlmICh1cHBlciAhPT0gbnVsbCAmJiB1cHBlcklzT3Bl
biAmJiB1cHBlciA8PSBleHBlY3RlZEluZGV4KQorICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXgg
PSBudWxsOworfQorCitmdW5jdGlvbiBjdXJzb3JJdGVyYXRpb24oKQoreworICAgIGlmIChleHBl
Y3RlZEluZGV4ID09PSBudWxsKSB7CisgICAgICAgIHNob3VsZEJlTnVsbCgiZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOworICAgICAgICBydW5OZXh0VGVzdCgpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIGlmIChldmVudC50YXJnZXQucmVzdWx0ID09PSBudWxsKSB7CisgICAgICAgIHRlc3RG
YWlsZWQoImV2ZW50LnRhcmdldC5yZXN1bHQgc2hvdWxkIG5vdCBiZSBudWxsLiIpOworICAgICAg
ICBydW5OZXh0VGVzdCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldC5yZXN1bHQucHJpbWFyeUtleSIsICJleHBlY3RlZEluZGV4Iik7CisgICAg
c2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQua2V5IiwgInRlc3REYXRhWyIgKyBleHBlY3Rl
ZEluZGV4ICsgIl0iKTsKKyAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSBhc2NlbmRpbmcgPyBleHBl
Y3RlZEluZGV4ICsgMSA6IGV4cGVjdGVkSW5kZXggLSAxOworICAgIHRlc3RXaXRoaW5Cb3VuZHMo
KTsKKworICAgIGV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUoKTsKK30KKworc2VsZi5udWxs
S2V5UmFuZ2VTdGVwID0gMDsKK2Z1bmN0aW9uIHRlc3ROdWxsS2V5UmFuZ2UoKQoreworICAgIHNl
bGYubG93ZXIgPSAwOworICAgIHNlbGYubG93ZXJJc09wZW4gPSBmYWxzZTsKKyAgICBzZWxmLnVw
cGVyID0gdGVzdERhdGEubGVuZ3RoLTE7CisgICAgc2VsZi51cHBlcklzT3BlbiA9IGZhbHNlOwor
CisgICAgc3RyID0gIk5leHQgdGVzdDogbnVsbCBrZXkgcGF0aCAiOworICAgIGlmIChzZWxmLm51
bGxLZXlSYW5nZVN0ZXAgPT0gMCkgeworICAgICAgICBzdHIgKz0gInNvcnRlZCBhc2NlbmRpbmcu
IjsKKyAgICAgICAgc2VsZi5hc2NlbmRpbmcgPSB0cnVlOworICAgICAgICBzZWxmLmV4cGVjdGVk
SW5kZXggPSBsb3dlcjsKKyAgICAgICAgc2VsZi5udWxsS2V5UmFuZ2VTdGVwID0gMTsKKyAgICB9
IGVsc2UgaWYgKHNlbGYubnVsbEtleVJhbmdlU3RlcCA9PSAxKSB7CisgICAgICAgIHN0ciArPSAi
c29ydGVkIGRlc2NlbmRpbmcuIjsKKyAgICAgICAgc2VsZi5hc2NlbmRpbmcgPSBmYWxzZTsKKyAg
ICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gdXBwZXI7CisgICAgICAgIHNlbGYubnVsbEtleVJh
bmdlU3RlcCA9IDI7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoc3RyKTsKKwor
ICAgIHZhciByZXF1ZXN0ID0gaW5kZXhPYmplY3Qub3BlbktleUN1cnNvcihudWxsLCBhc2NlbmRp
bmcgPyBJREJDdXJzb3IuTkVYVCA6IElEQkN1cnNvci5QUkVWKTsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGN1cnNvckl0ZXJhdGlvbjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKK29wZW5EYXRhYmFz
ZSgpOyAvLyBUaGUgZmlyc3Qgc3RlcC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9pbmRleC1nZXQta2V5LWFyZ3VtZW50LXJlcXVpcmVkLmpzIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4LWdldC1rZXktYXJn
dW1lbnQtcmVxdWlyZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTNkMzg3MGVlZTlmNGViYTkwMTU2OGVmMDk3
YjMwZGZkZWM5Yjk3YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9pbmRleC1nZXQta2V5LWFyZ3VtZW50LXJlcXVpcmVkLmpzCkBAIC0w
LDAgKzEsMzkgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRz
KCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9y
dFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIg
aW5kZXggLmdldCgpIHJlcXVpcmVkIGFyZ3VtZW50Iik7CisKK2Z1bmN0aW9uIHRlc3QoKQorewor
ICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5w
YXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQor
eworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZTsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rp
b24gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0
U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUg
PSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJywgeyBrZXlQYXRoOiAnaWQnLCBhdXRvSW5jcmVt
ZW50OiB0cnVlIH0pOyIpOworICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBvYmplY3RT
dG9yZS5jcmVhdGVJbmRleCgnZmlyc3QnLCAnZmlyc3QnKTsiKTsKKyAgICBzaG91bGRUaHJvdygi
aW5kZXguZ2V0KCk7Iik7CisgICAgc2hvdWxkVGhyb3coImluZGV4LmdldEtleSgpOyIpOworICAg
IGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2lu
ZGV4LW11bHRpZW50cnkuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvaW5kZXgtbXVsdGllbnRyeS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wM2NkZDhhOTE1OWVmMTllMTlhNzY3
MjBhY2Y5NmU2MDdiMTc5M2QxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4LW11bHRpZW50cnkuanMKQEAgLTAsMCArMSwxNDAg
QEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMo
J3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBmZWF0dXJlcyBvZiBJbmRleGVk
REIncyBtdWx0aUVudHJ5IGluZGljZXMuIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJl
bW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhl
ZERCLm9wZW4oJ2luZGV4LW11bHRpRW50cnknKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24o
KSB7CisgICAgICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
CisKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJzEnKSIpOwor
ICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwcmVwYXJlRGF0YWJhc2U7CisgICAgfTsKK30KKworZnVu
Y3Rpb24gcHJlcGFyZURhdGFiYXNlKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIkNy
ZWF0aW5nIGVtcHR5IHN0b3JlcyBhbmQgaW5kZXhlcyIpOworICAgIHZhciB0cmFucyA9IGV2YWxB
bmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgi
dHJhbnMgIT09IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2Fs
bGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IGFkZERhdGE7CisKKyAgICBkZWxldGVBbGxP
YmplY3RTdG9yZXMoZGIpOworCisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUuY3JlYXRl
SW5kZXgoJ2luZGV4JywgJ3gnLCB7bXVsdGlFbnRyeTogdHJ1ZX0pIik7CisKKyAgICBzdG9yZTIg
PSBldmFsQW5kTG9nKCJzdG9yZTIgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUtdW5pcXVl
JykiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZTIuY3JlYXRlSW5kZXgoJ2luZGV4LXVuaXF1ZScs
ICd4Jywge211bHRpRW50cnk6IHRydWUsIHVuaXF1ZTogdHJ1ZX0pIik7Cit9CisKK2Z1bmN0aW9u
IGFkZERhdGEoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiUG9wdWxhdGluZyBzdG9y
ZXMgKGFuZCBpbmRleGVzKSIpOworICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNh
Y3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJ
VEUpIik7CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNr
OworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbigpIHsgdmVyaWZ5SW5kZXhl
cygnaW5kZXgnLCB2ZXJpZnlVbmlxdWVDb25zdHJhaW50KTsgfTsKKworICAgIGRlYnVnKCJGaXJz
dCB0cnkgc29tZSBrZXlzIHRoYXQgYXJlbid0IHdoYXQgd2UncmUgZXhwZWN0aW5nIik7CisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLnB1
dCh7eDogWzcsIDgsIDldLCB5OiAnYSd9LCAnZm9vJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBkZWJ1ZygiTm93IG92ZXJ3cml0ZSB0aGVt
IHdpdGggd2hhdCB3ZSdyZSBleHBlY3RpbmciKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
dHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KHt4OiBbMSwgMiwgM10sIHk6ICdh
J30sICdmb28nKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgn
c3RvcmUnKS5wdXQoe3g6IFs0LCA1LCA2XSwgeTogJ2InfSwgJ2JhcicpIik7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHZlcmlm
eUluZGV4ZXMoaW5kZXhOYW1lLCBjYWxsYmFjaykKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVi
dWcoIlZlcmlmeWluZyBpbmRleDogIiArIGluZGV4TmFtZSk7CisgICAgdHJhbnNhY3Rpb24gPSBl
dmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUnXSwgSURCVHJh
bnNhY3Rpb24uUkVBRF9PTkxZKSIpOworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVj
dGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gY2FsbGJhY2s7
CisKKyAgICBleHBlY3RlZCA9IFsKKyAgICAgICAgeyBrZXk6IDEsIHByaW1hcnlLZXk6ICdmb28n
LCB5OiAnYScgfSwKKyAgICAgICAgeyBrZXk6IDIsIHByaW1hcnlLZXk6ICdmb28nLCB5OiAnYScg
fSwKKyAgICAgICAgeyBrZXk6IDMsIHByaW1hcnlLZXk6ICdmb28nLCB5OiAnYScgfSwKKyAgICAg
ICAgeyBrZXk6IDQsIHByaW1hcnlLZXk6ICdiYXInLCB5OiAnYicgfSwKKyAgICAgICAgeyBrZXk6
IDUsIHByaW1hcnlLZXk6ICdiYXInLCB5OiAnYicgfSwKKyAgICAgICAgeyBrZXk6IDYsIHByaW1h
cnlLZXk6ICdiYXInLCB5OiAnYicgfSwKKyAgICBdOworCisgICAgdmFyIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKS5pbmRleCgnIiArIGluZGV4
TmFtZSArICInKS5vcGVuQ3Vyc29yKCkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50
KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKKyAgICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICAgICAgZXggPSBleHBlY3Rl
ZC5zaGlmdCgpOworICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJleCAhPSBudWxsIik7CisgICAg
ICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsIFN0cmluZyhleC5rZXkpKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY3Vyc29yLnByaW1hcnlLZXkiLCBleC5wcmltYXJ5
S2V5KTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY3Vyc29yLnZhbHVlLnki
LCBleC55KTsKKyAgICAgICAgICAgIGN1cnNvci5jb250aW51ZSgpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJleHBlY3RlZC5sZW5ndGggPT09IDAiKTsKKyAg
ICAgICAgfQorICAgIH07Cit9CisKK2Z1bmN0aW9uIHZlcmlmeVVuaXF1ZUNvbnN0cmFpbnQoKQor
eworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVmVyaWZ5aW5nIHVuaXF1ZSBjb25zdHJhaW50
IG9uIG11bHRpRW50cnkgaW5kZXgiKTsKKyAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRy
YW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZS11bmlxdWUnXSwgSURCVHJhbnNhY3Rp
b24uUkVBRF9XUklURSkiKTsKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24gKCkg
eworICAgICAgICBkZWJ1ZygiVHJhbnNhY3Rpb24gYWJvcnRlZCBhcyBleHBlY3RlZCIpOworICAg
ICAgICBjcmVhdGVJbmRleE9uU3RvcmVXaXRoRGF0YSgpOworICAgIH07CisgICAgdHJhbnNhY3Rp
b24ub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOworCisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZS11bmlxdWUnKS5w
dXQoe3g6IFsxLCAyLCAzXSwgeTogJ2EnfSwgJ2ZvbycpIik7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbigpIHsKKyAgICAgICAgZGVidWcoInN1Y2Nlc3MhIik7CisgICAgICAgIGRlYnVnKCJSZXBs
YWNlIGFuIGV4aXN0aW5nIHJlY29yZCAtIHRoaXMgc2hvdWxkIHdvcmsiKTsKKyAgICAgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZS11bmlxdWUn
KS5wdXQoe3g6IFsxLCAyLCA3XSwgeTogJ2EnfSwgJ2ZvbycpIik7CisgICAgICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZGVidWcoInN1Y2Nlc3MhIik7CisgICAg
ICAgICAgICBkZWJ1ZygiVGhpcyBzaG91bGQgZmFpbCB0aGUgdW5pcXVlbmVzcyBjb25zdHJhaW50
IG9uIHRoZSBpbmRleCwgYW5kIGZhaWw6Iik7CisgICAgICAgICAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlLXVuaXF1ZScpLnB1dCh7eDogWzUs
IDJdLCB5OiAnYyd9LCAnc2hvdWxkIGZhaWwnKSIpOworICAgICAgICAgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOworICAgICAgICAgICAgcmVxdWVzdC5v
bmVycm9yID0gZnVuY3Rpb24oKSB7IGRlYnVnKCJSZXF1ZXN0IGZhaWxlZCwgYXMgZXhwZWN0ZWQi
KTsgfTsKKyAgICAgICAgfTsKKyAgICB9OworfQorCitmdW5jdGlvbiBjcmVhdGVJbmRleE9uU3Rv
cmVXaXRoRGF0YSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJDcmVhdGUgYW4gaW5k
ZXggb24gYSBwb3B1bGF0ZWQgc3RvcmUiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJk
Yi5zZXRWZXJzaW9uKCcyJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworCisgICAg
ICAgIHZhciB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIp
OworICAgICAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgICAgIHRyYW5z
Lm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICAgICAgdHJhbnMub25jb21w
bGV0ZSA9IGZ1bmN0aW9uKCkgeyB2ZXJpZnlJbmRleGVzKCdpbmRleC1uZXcnLCBmaW5pc2hKU1Rl
c3QpOyB9OworCisgICAgICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmpl
Y3RTdG9yZSgnc3RvcmUnKSIpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5jcmVhdGVJbmRl
eCgnaW5kZXgtbmV3JywgJ3gnLCB7bXVsdGlFbnRyeTogdHJ1ZX0pIik7CisgICAgfTsKK30KKwor
dGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbmRleC1wb3B1bGF0aW9uLmpzIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2luZGV4LXBvcHVsYXRpb24uanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYTk5NzI4NjY2ZmQ2ZDQyZGYwOWRiODE2Mzc0ZGU3OTNlMGExYTVjZAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9p
bmRleC1wb3B1bGF0aW9uLmpzCkBAIC0wLDAgKzEsOTEgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlw
dHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNj
cmlwdGlvbigiVGVzdCBJbmRleGVkREIgaW5kZXggcG9wdWxhdGlvbi4iKTsKKworZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoJ2luZGV4LXBvcHVsYXRpb24nKSIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVsZXRlU3Vj
Y2VzcygpCit7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdpbmRl
eC1wb3B1bGF0aW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRvU2V0VmVyc2lvbjE7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIGRvU2V0VmVyc2lvbjEoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiZG9T
ZXRWZXJzaW9uMSgpOiIpOworICAgIHNlbGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNl
dFZlcnNpb24oJ3ZlcnNpb24gMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJz
aW9uMTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30K
KworZnVuY3Rpb24gc2V0VmVyc2lvbjEoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygi
c2V0VmVyc2lvbjEoKToiKTsKKyAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0
aW9uID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRB
Ym9ydENhbGxiYWNrOworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVP
YmplY3RTdG9yZSgnc3RvcmUxJykiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoe2RhdGE6
ICdhJywgaW5kZXhLZXk6IDEwfSwgMSkiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoe2Rh
dGE6ICdiJywgaW5kZXhLZXk6IDIwfSwgMikiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQo
e2RhdGE6ICdjJywgaW5kZXhLZXk6IDEwfSwgMykiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZS5w
dXQoe2RhdGE6ICdkJywgaW5kZXhLZXk6IDIwfSwgNCkiKTsKKyAgICBldmFsQW5kTG9nKCJpbmRl
eCA9IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleDEnLCAnaW5kZXhLZXknKSIpOworICAgIHNob3Vs
ZEJlVHJ1ZSgiaW5kZXggaW5zdGFuY2VvZiBJREJJbmRleCIpOworICAgIHNob3VsZEJlRmFsc2Uo
ImluZGV4LnVuaXF1ZSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5k
ZXguY291bnQoSURCS2V5UmFuZ2UuYm91bmQoLUluZmluaXR5LCBJbmZpbml0eSkpIik7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgIHNob3VsZEJlKCJyZXF1ZXN0LnJlc3Vs
dCIsICI0Iik7CisgICAgfTsKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZG9TZXRWZXJz
aW9uMjsKK30KKworZnVuY3Rpb24gZG9TZXRWZXJzaW9uMigpIHsKKyAgICBkZWJ1ZygiIik7Cisg
ICAgZGVidWcoImRvU2V0VmVyc2lvbjIoKToiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMicpIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBzZXRWZXJzaW9uMjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbjIoKQoreworICAgIGRlYnVnKCIi
KTsKKyAgICBkZWJ1Zygic2V0VmVyc2lvbjIoKToiKTsKKyAgICB0cmFuc2FjdGlvbjIgPSBldmFs
QW5kTG9nKCJ0cmFuc2FjdGlvbiA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAgdHJhbnNhY3Rpb24y
Lm9uYWJvcnQgPSBzZXRWZXJzaW9uMkFib3J0OworICAgIHRyYW5zYWN0aW9uMi5vbmNvbXBsZXRl
ID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7CisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJz
dG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTInKSIpOworICAgIGV2YWxBbmRMb2co
InN0b3JlLnB1dCh7ZGF0YTogJ2EnLCBpbmRleEtleTogMTB9LCAxKSIpOworICAgIGV2YWxBbmRM
b2coInN0b3JlLnB1dCh7ZGF0YTogJ2InLCBpbmRleEtleTogMjB9LCAyKSIpOworICAgIGV2YWxB
bmRMb2coInN0b3JlLnB1dCh7ZGF0YTogJ2MnLCBpbmRleEtleTogMTB9LCAzKSIpOworICAgIGV2
YWxBbmRMb2coInN0b3JlLnB1dCh7ZGF0YTogJ2QnLCBpbmRleEtleTogMjB9LCA0KSIpOworICAg
IGV2YWxBbmRMb2coImluZGV4MiA9IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleDInLCAnaW5kZXhL
ZXknLCB7IHVuaXF1ZTogdHJ1ZSB9KSIpOworICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXgyIGluc3Rh
bmNlb2YgSURCSW5kZXgiKTsKKyAgICBzaG91bGRCZVRydWUoImluZGV4Mi51bmlxdWUiKTsKK30K
KworZnVuY3Rpb24gc2V0VmVyc2lvbjJBYm9ydCgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRl
YnVnKCJzZXRWZXJzaW9uMkFib3J0KCk6Iik7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3Jl
TmFtZXMubGVuZ3RoIiwgIjEiKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lc1sw
XSIsICInc3RvcmUxJyIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL2luZGV4LXVuaXF1ZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9pbmRleC11bmlxdWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWRiODViNjll
NDgwODU0MWMwYjRhOWMyNjZmNzY3MGViNjhmYWU0YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbmRleC11bmlxdWUuanMKQEAgLTAs
MCArMSwxMzYgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRz
KCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9y
dFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBmZWF0dXJlcyBv
ZiBJbmRleGVkREIncyB1bmlxdWUgaW5kaWNlcy4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7Cisg
ICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5k
ZXhlZERCLm9wZW4oJ2luZGV4LXVuaXF1ZScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBz
ZXRWZXJzaW9uOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRi
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRi
LnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRl
bGV0ZUV4aXN0aW5nOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworfQorCitmdW5jdGlvbiBkZWxldGVFeGlzdGluZygpCit7CisgICAgZGVidWcoImRlbGV0
ZUV4aXN0aW5nKCk6Iik7CisgICAgdmFyIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwor
ICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5v
bmNvbXBsZXRlID0gc2V0VmVyc2lvbkNvbXBsZXRlZDsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0
b3JlcyhkYik7CisKKyAgICBzZWxmLnN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ3N0b3JlJykiKTsKKyAgICBzZWxmLmluZGV4T2JqZWN0ID0gZXZhbEFuZExvZygic3Rv
cmUuY3JlYXRlSW5kZXgoJ2luZGV4JywgJ3gnLCB7dW5pcXVlOiB0cnVlfSkiKTsKKworICAgIC8v
IExldCBzZXRWZXJzaW9uIHRyYW5zYWN0aW9uIGNvbXBsZXRlLgorfQorCitmdW5jdGlvbiBzZXRW
ZXJzaW9uQ29tcGxldGVkKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvbkNvbXBsZXRlZCgpOiIp
OworICAgIHNlbGYudHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRy
YW5zYWN0aW9uKFsnc3RvcmUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKS5w
dXQoe3g6IDF9LCAnZm9vJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZE1vcmVEYXRhOworfQorCitm
dW5jdGlvbiBhZGRNb3JlRGF0YSgpCit7CisgICAgZGVidWcoImFkZE1vcmVEYXRhKCk6Iik7CisK
KyAgICAvLyBUaGUgeCB2YWx1ZSB2aW9sYXRlcyB0aGUgdW5pcXVlbmVzcyBjb25zdHJhaW50IG9m
IHRoZSBpbmRleC4KKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0
U3RvcmUoJ3N0b3JlJykucHV0KHt4OiAxfSwgJ2JhcicpIik7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gYWRkTW9yZURhdGFGYWlsZWQ7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVk
U3VjY2Vzc0NhbGxiYWNrOworfQorCitmdW5jdGlvbiBhZGRNb3JlRGF0YUZhaWxlZCgpCit7Cisg
ICAgZGVidWcoImFkZE1vcmVEYXRhRmFpbGVkKCk6Iik7CisKKyAgICAvLyBEb24ndCBhYm9ydCB0
aGUgdHJhbnNhY3Rpb24uCisgICAgZXZhbEFuZExvZygiZXZlbnQucHJldmVudERlZmF1bHQoKSIp
OworCisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5lcnJvckNvZGUiLCAiSURCRGF0YWJhc2VF
eGNlcHRpb24uQ09OU1RSQUlOVF9FUlIiKTsKKworICAgIC8vIFVwZGF0ZSB0aGUgJ2ZvbycgZW50
cnkgaW4gb2JqZWN0IHN0b3JlLCBjaGFuZ2luZyB0aGUgdmFsdWUgb2YgeC4KKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KHt4OiAw
fSwgJ2ZvbycpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjaGFuZ2VEYXRhU3VjY2VzczsKK30KKworZnVu
Y3Rpb24gY2hhbmdlRGF0YVN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJjaGFuZ2VEYXRhU3VjY2Vz
cygpOiIpOworCisgICAgLy8gQW4gaW5kZXggY3Vyc29yIHN0YXJ0aW5nIGF0IDEgc2hvdWxkIG5v
dCBmaW5kIGFueXRoaW5nLgorICAgIHZhciByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnNhY3Rp
b24ub2JqZWN0U3RvcmUoJ3N0b3JlJykuaW5kZXgoJ2luZGV4Jykub3BlbkN1cnNvcihJREJLZXlS
YW5nZS5sb3dlckJvdW5kKDEpKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Vyc29yU3Vj
Y2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30K
KworZnVuY3Rpb24gY3Vyc29yU3VjY2VzcygpCit7CisgICAgZGVidWcoImN1cnNvclN1Y2Nlc3Mo
KToiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJudWxsIik7CisKKyAg
ICAvLyBBIGtleSBjdXJzb3Igc3RhcnRpbmcgYXQgMSBzaG91bGQgbm90IGZpbmQgYW55dGhpbmcu
CisgICAgdmFyIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgn
c3RvcmUnKS5pbmRleCgnaW5kZXgnKS5vcGVuS2V5Q3Vyc29yKElEQktleVJhbmdlLmxvd2VyQm91
bmQoMSkpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBrZXlDdXJzb3JTdWNjZXNzOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biBrZXlDdXJzb3JTdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygia2V5Q3Vyc29yU3VjY2VzcygpOiIp
OworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIm51bGwiKTsKKworICAgIC8v
IE5vdyB3ZSBzaG91bGQgYmUgYWJsZSB0byBhZGQgYSB2YWx1ZSB3aXRoIHg6IDEuCisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLnB1dCh7
eDogMX0sICdiYXInKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkTW9yZURhdGFTdWNjZXM7Cit9CisK
K2Z1bmN0aW9uIGFkZE1vcmVEYXRhU3VjY2VzKCkKK3sKKyAgICBkZWJ1ZygiYWRkTW9yZURhdGFT
dWNjZXMoKToiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmpl
Y3RTdG9yZSgnc3RvcmUnKS5kZWxldGUoJ2JhcicpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBkZWxldGVT
dWNjZXNzOworfQorCitmdW5jdGlvbiBkZWxldGVTdWNjZXNzKCkKK3sKKyAgICBkZWJ1ZygiZGVs
ZXRlU3VjY2VzcygpOiIpOworCisgICAgLy8gTm93IHdlIHNob3VsZCBiZSBhYmxlIHRvIGFkZCBh
IHZhbHVlIHdpdGggeDogMSBhZ2Fpbi4KKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnNh
Y3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KHt4OiAxfSwgJ2JheicpIik7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmaW5hbEFkZFN1Y2Nlc3M7Cit9CisKK2Z1bmN0aW9uIGZpbmFsQWRkU3VjY2Vzcygp
IHsKKyAgICBkZWJ1ZygiZmluYWxBZGRTdWNjZXNzKCk6Iik7CisKKyAgICAvLyBBbiBvdmVyd3Jp
dGUgc2hvdWxkIGJlIG9rLgorICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5v
YmplY3RTdG9yZSgnc3RvcmUnKS5wdXQoe3g6IDF9LCAnYmF6JykiKTsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGZpbmlzaEpTVGVzdDsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9pbnZh
bGlkLWtleXMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvaW52
YWxpZC1rZXlzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2YzE3NTc2NzQwYjNkNTdmOTk2MzBlZTJhNzAzODYw
NTY1NGE2ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvaW52YWxpZC1rZXlzLmpzCkBAIC0wLDAgKzEsNjQgQEAKK2lmICh0aGlzLmlt
cG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOwor
fQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgaW52YWxpZCBrZXlzIik7CisKK2Z1bmN0
aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0g
c2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFi
YXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVz
Y3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
b3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZl
cnNpb24oJzEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdGVzdEdyb3VwMTsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
dGVzdEdyb3VwMSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9i
amVjdFN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycpOyIpOwor
ICAgIHRlc3RJbnZhbGlkS2V5cygpOworfQorCitmdW5jdGlvbiB0ZXN0SW52YWxpZEtleXMoKQor
eworICAgIHZhciBpbnZhbGlkS2V5cyA9IFsKKyAgICAgICAgInZvaWQgMCIsIC8vIFVuZGVmaW5l
ZAorICAgICAgICAibnVsbCIsIC8vIE51bGwKKyAgICAgICAgIihmdW5jdGlvbigpIHsgcmV0dXJu
IGFyZ3VtZW50czsgfSgpKSIsIC8vIEFyZ3VtZW50cworICAgICAgICAidHJ1ZSIsIC8vIEJvb2xl
YW4KKyAgICAgICAgImZhbHNlIiwgLy8gQm9vbGVhbgorICAgICAgICAibmV3IEVycm9yIiwgLy8g
RXJyb3IKKyAgICAgICAgImZ1bmN0aW9uICgpIHt9IiwgLy8gRnVuY3Rpb24KKyAgICAgICAgIkpT
T04iLCAvLyBKU09OCisgICAgICAgICJNYXRoIiwgLy8gTWF0aAorICAgICAgICAiTmFOIiwgLy8g
TnVtYmVyIChzcGVjaWFsIGNhc2UpCisgICAgICAgICJuZXcgRGF0ZShOYU4pIiwgLy8gRGF0ZSAo
c3BlY2lhbCBjYXNlKQorICAgICAgICAie30iLCAvLyBPYmplY3QKKyAgICAgICAgIi9yZWdleC8i
LCAvLyBSZWdFeHAKKyAgICAgICAgInNlbGYiLCAvLyBnbG9iYWwKKyAgICAgICAgInNlbGYuZG9j
dW1lbnQiLCAvLyBIVE1MRG9jdW1lbnQKKyAgICAgICAgInNlbGYuZG9jdW1lbnQuYm9keSIgLy8g
SFRNTEJvZHlFbGVtZW50CisgICAgXTsKKworICAgIGludmFsaWRLZXlzLmZvckVhY2goZnVuY3Rp
b24oa2V5KSB7CisgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInJlcXVlc3QgPSBvYmpl
Y3RTdG9yZS5wdXQoJ3ZhbHVlJywgIiArIGtleSArICIpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9u
LkRBVEFfRVJSIik7CisgICAgfSk7CisgICAgCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rl
c3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5LWdlbmVyYXRvci5qcyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXktZ2VuZXJhdG9yLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjIxYjE3NTE4Y2UxMWIwNjFlMWM1ZmY4ZjkwYzBiY2NiZjExNmJiOWQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5LWdlbmVy
YXRvci5qcwpAQCAtMCwwICsxLDIwNiBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAg
IGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Jyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJU
ZXN0IEluZGV4ZWREQidzIGtleSBnZW5lcmF0b3IgYmVoYXZpb3IuIik7CisKK2Z1bmN0aW9uIHRl
c3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBydW5UZXN0cygpOwor
fQorCit2YXIgdGVzdHMgPSBbXTsKK2Z1bmN0aW9uIGRlZmluZVRlc3QoZGVzY3JpcHRpb24sIHZl
cmNoYW5nZSwgb3B0aW9uYWwpIHsKKyAgdGVzdHMucHVzaCgKKyAgICB7CisgICAgICBkZXNjcmlw
dGlvbjogZGVzY3JpcHRpb24sCisgICAgICB2ZXJjaGFuZ2U6IHZlcmNoYW5nZSwKKyAgICAgIG9w
dGlvbmFsOiBvcHRpb25hbAorICAgIH0KKyAgKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdHMoKSB7
CisKKyAgICBmdW5jdGlvbiBuZXh0VGVzdCgpIHsKKyAgICAgICAgaWYgKCF0ZXN0cy5sZW5ndGgp
IHsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgdmFyIHRlc3QgPSB0ZXN0cy5zaGlmdCgpOworICAgICAgICBkZWJ1
ZygiIik7CisgICAgICAgIGRlYnVnKHRlc3QuZGVzY3JpcHRpb24pOworCisgICAgICAgIGV2YWxB
bmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoJ2tleS1nZW5lcmF0b3In
KSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oJ2tleS1nZW5lcmF0b3InKSIpOwor
ICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cisg
ICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICBldmFsQW5kTG9nKCJkYiA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAgICAgICAgICAgICAg
ZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAgICAgICAgICAg
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICAg
ICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg
ICAgICBldmFsQW5kTG9nKCJ0cmFucyA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAgICAgICAgICAg
ICAgICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICAgICAg
ICAgICAgICAgICAgdGVzdC52ZXJjaGFuZ2UoZGIsIHRyYW5zKTsKKyAgICAgICAgICAgICAgICAg
ICAgdHJhbnMub25jb21wbGV0ZSA9IGZ1bmN0aW9uICgpIHsKKworICAgICAgICAgICAgICAgICAg
ICAgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBldmFsQW5kTG9nKCJkYi5jbG9zZSgpIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bmV4dFRlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKHRlc3Qub3B0aW9uYWwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0ZXN0Lm9wdGlvbmFsKGRiLCBmaW5pc2hUZXN0KTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAg
ICAgICAgIH07CisgICAgICAgICAgICB9OworICAgICAgICB9OworICAgIH0KKworICAgIG5leHRU
ZXN0KCk7Cit9CisKK2Z1bmN0aW9uIGNoZWNrKHN0b3JlLCBrZXksIGV4cGVjdGVkKSB7CisgICAg
c2VsZi5zdG9yZSA9IHN0b3JlOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
c3RvcmUuZ2V0KCIgKyBKU09OLnN0cmluZ2lmeShrZXkpICsgIikiKTsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGZ1bmN0aW9uIChlKSB7CisgICAgICAgIHNlbGYuZXhwZWN0ZWQgPSBleHBlY3RlZDsKKyAgICAg
ICAgaWYgKEpTT04uc3RyaW5naWZ5KGV2ZW50LnRhcmdldC5yZXN1bHQpID09PSBKU09OLnN0cmlu
Z2lmeShleHBlY3RlZCkpIHsKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkdvdCAiICsgSlNPTi5z
dHJpbmdpZnkoZXZlbnQudGFyZ2V0LnJlc3VsdCkgKyAiIGZvciBrZXk6ICIgKyBKU09OLnN0cmlu
Z2lmeShrZXkpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIkdv
dCAiICsgSlNPTi5zdHJpbmdpZnkoZXZlbnQudGFyZ2V0LnJlc3VsdCkgKyAiIGZvciBrZXk6ICIg
KyBKU09OLnN0cmluZ2lmeShrZXkpICsKKyAgICAgICAgICAgICAgICAiIGV4cGVjdGVkOiAiICsg
SlNPTi5zdHJpbmdpZnkoZXhwZWN0ZWQpKTsKKyAgICAgICAgfQorICAgIH07Cit9CisKK2RlZmlu
ZVRlc3QoCisgICAgJ1ZlcmlmeSB0aGF0IGVhY2ggb2JqZWN0IHN0b3JlIGhhcyBhbiBpbmRlcGVu
ZGVudCBrZXkgZ2VuZXJhdG9yLicsCisgICAgZnVuY3Rpb24gKGRiLCB0cmFucykgeworICAgICAg
ICBldmFsQW5kTG9nKCJzdG9yZTEgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUxJywgeyBh
dXRvSW5jcmVtZW50OiB0cnVlIH0pIik7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlMS5wdXQo
J2EnKSIpOworICAgICAgICBjaGVjayhzdG9yZTEsIDEsICdhJyk7CisgICAgICAgIGV2YWxBbmRM
b2coInN0b3JlMiA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTInLCB7IGF1dG9JbmNyZW1l
bnQ6IHRydWUgfSkiKTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUyLnB1dCgnYScpIik7Cisg
ICAgICAgIGNoZWNrKHN0b3JlMiwgMSwgJ2EnKTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUx
LnB1dCgnYicpIik7CisgICAgICAgIGNoZWNrKHN0b3JlMSwgMiwgJ2InKTsKKyAgICAgICAgZXZh
bEFuZExvZygic3RvcmUyLnB1dCgnYicpIik7CisgICAgICAgIGNoZWNrKHN0b3JlMiwgMiwgJ2In
KTsKKyAgICB9CispOworCitkZWZpbmVUZXN0KAorICAgICdWZXJpZnkgdGhhdCB0aGUga2V5IGdl
bmVyYXRvciBpcyBub3QgdXBkYXRlZCBpZiBpbnNlcnRpb24gZmFpbHMnLAorICAgIGZ1bmN0aW9u
IChkYiwgdHJhbnMpIHsKKyAgICAgICAgdHJhbnMub25lcnJvciA9IGZ1bmN0aW9uKGUpIHsgZS5w
cmV2ZW50RGVmYXVsdCgpIH07CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ3N0b3JlMScsIHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9KSIpOworICAgICAg
ICBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleDEnLCAnaXgnLCB7
IHVuaXF1ZTogdHJ1ZSB9KSIpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoeyBpeDog
J2EnfSkiKTsKKyAgICAgICAgY2hlY2soc3RvcmUsIDEsIHtpeDogJ2EnfSk7CisgICAgICAgIGV2
YWxBbmRMb2coInN0b3JlLnB1dCh7IGl4OiAnYSd9KSIpOworICAgICAgICBldmFsQW5kTG9nKCJz
dG9yZS5wdXQoeyBpeDogJ2InfSkiKTsKKyAgICAgICAgY2hlY2soc3RvcmUsIDIsIHtpeDogJ2In
fSk7CisgICAgfQorKTsKKworZGVmaW5lVGVzdCgKKyAgICAnVmVyaWZ5IHRoYXQgdGhlIGtleSBn
ZW5lcmF0b3IgaXMgbm90IGFmZmVjdGVkIGJ5IGl0ZW0gcmVtb3ZhbCAoZGVsZXRlIG9yIGNsZWFy
KS4nLAorICAgIGZ1bmN0aW9uIChkYiwgdHJhbnMpIHsKKyAgICAgICAgZXZhbEFuZExvZygic3Rv
cmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUxJywgeyBhdXRvSW5jcmVtZW50OiB0cnVl
IH0pIik7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgnYScpIik7CisgICAgICAgIGNo
ZWNrKHN0b3JlLCAxLCAnYScpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5kZWxldGUoMSki
KTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdiJykiKTsKKyAgICAgICAgY2hlY2so
c3RvcmUsIDIsICdiJyk7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLmNsZWFyKCkiKTsKKyAg
ICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdjJykiKTsKKyAgICAgICAgY2hlY2soc3RvcmUs
IDMsICdjJyk7CisgICAgICAgIC8vIEZJWE1FOiBJREJPYmplY3RTdG9yZS5kZWxldGUoSURCS2V5
UmFuZ2UpIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQgaW4gQ2hyb21pdW0uCisgICAgICAgIC8vIGh0
dHA6Ly9jcmJ1Zy5jb20vMTAxMzg0CisgICAgICAgIC8vZXZhbEFuZExvZygic3RvcmUuZGVsZXRl
KElEQktleVJhbmdlLmxvd2VyQm91bmQoMCkpIik7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3Jl
LnB1dCgnZCcpIik7CisgICAgICAgIGNoZWNrKHN0b3JlLCA0LCAnZCcpOworICAgIH0KKyk7CisK
K2RlZmluZVRlc3QoCisgICAgJ1ZlcmlmeSB0aGF0IHRoZSBrZXkgZ2VuZXJhdG9yIGlzIG9ubHkg
c2V0IGlmIGFuZCBvbmx5IGlmIGEgbnVtZXJpYyBrZXkgZ3JlYXRlciB0aGFuIHRoZSBsYXN0IGdl
bmVyYXRlZCBrZXkgaXMgdXNlZC4nLAorICAgIGZ1bmN0aW9uIChkYiwgdHJhbnMpIHsKKyAgICAg
ICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUxJywgeyBh
dXRvSW5jcmVtZW50OiB0cnVlIH0pIik7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgn
YScpIik7CisgICAgICAgIGNoZWNrKHN0b3JlLCAxLCAnYScpOworICAgICAgICBldmFsQW5kTG9n
KCJzdG9yZS5wdXQoJ2InLCAzKSIpOworICAgICAgICBjaGVjayhzdG9yZSwgMywgJ2InKTsKKyAg
ICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdjJykiKTsKKyAgICAgICAgY2hlY2soc3RvcmUs
IDQsICdjJyk7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgnZCcsIC0xMCkiKTsKKyAg
ICAgICAgY2hlY2soc3RvcmUsIC0xMCwgJ2QnKTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUu
cHV0KCdlJykiKTsKKyAgICAgICAgY2hlY2soc3RvcmUsIDUsICdlJyk7CisgICAgICAgIGV2YWxB
bmRMb2coInN0b3JlLnB1dCgnZicsIDYuMDAwMDEpIik7CisgICAgICAgIGNoZWNrKHN0b3JlLCA2
LjAwMDAxLCAnZicpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2cnKSIpOworICAg
ICAgICBjaGVjayhzdG9yZSwgNywgJ2cnKTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0
KCdmJywgOC45OTk5KSIpOworICAgICAgICBjaGVjayhzdG9yZSwgOC45OTk5LCAnZicpOworICAg
ICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2cnKSIpOworICAgICAgICBjaGVjayhzdG9yZSwg
OSwgJ2cnKTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCdoJywgJ2ZvbycpIik7Cisg
ICAgICAgIGNoZWNrKHN0b3JlLCAnZm9vJywgJ2gnKTsKKyAgICAgICAgZXZhbEFuZExvZygic3Rv
cmUucHV0KCdpJykiKTsKKyAgICAgICAgY2hlY2soc3RvcmUsIDEwLCAnaScpOworICAgICAgICBl
dmFsQW5kTG9nKCJzdG9yZS5wdXQoJ2onLCBbMTAwMF0pIik7CisgICAgICAgIGNoZWNrKHN0b3Jl
LCBbMTAwMF0sICdqJyk7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgnaycpIik7Cisg
ICAgICAgIGNoZWNrKHN0b3JlLCAxMSwgJ2snKTsKKworICAgICAgICAvLyBGSVhNRTogUmVwZWF0
IHRoaXMgdGVzdCwgYnV0IHdpdGggYSBrZXlQYXRoIGFuZCBpbmxpbmUga2V5LgorICAgIH0KKyk7
CisKK2RlZmluZVRlc3QoCisgICAgJ1ZlcmlmeSB0aGF0IGFib3J0aW5nIGEgdHJhbnNhY3Rpb24g
cmVzZXRzIHRoZSBrZXkgZ2VuZXJhdG9yIHN0YXRlLicsCisgICAgZnVuY3Rpb24gKGRiLCB0cmFu
cykgeworICAgICAgICBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnLCB7IGF1dG9JbmNyZW1l
bnQ6IHRydWUgfSk7CisgICAgfSwKKworICAgIGZ1bmN0aW9uIChkYiwgY2FsbGJhY2spIHsKKyAg
ICAgICAgZXZhbEFuZExvZygidHJhbnMxID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZSddLCBJREJU
cmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9yZV90MSA9
IHRyYW5zMS5vYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgICAgICBldmFsQW5kTG9nKCJzdG9y
ZV90MS5wdXQoJ2EnKSIpOworICAgICAgICBjaGVjayhzdG9yZV90MSwgMSwgJ2EnKTsKKyAgICAg
ICAgZXZhbEFuZExvZygic3RvcmVfdDEucHV0KCdiJykiKTsKKyAgICAgICAgY2hlY2soc3RvcmVf
dDEsIDIsICdiJyk7CisKKyAgICAgICAgLy8gU2NoZWR1bGUgdGhlIGFib3J0IGFzIGEgdGFzayAo
bm90IHJ1biBpdCBzeW5jaHJvbm91c2x5KQorICAgICAgICBzdG9yZV90MS5nZXQoMCkub25zdWNj
ZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgZGVidWcoJ2Fib3J0aW5nLi4uJyk7Cisg
ICAgICAgICAgICBldmFsQW5kTG9nKCJ0cmFuczEuYWJvcnQoKSIpOworICAgICAgICAgICAgdHJh
bnMxLm9uYWJvcnQgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgZGVidWcoJ2Fib3J0
ZWQhJyk7CisKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJ0cmFuczIgPSBkYi50cmFuc2Fj
dGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgICAgICAg
ICAgICAgZXZhbEFuZExvZygic3RvcmVfdDIgPSB0cmFuczIub2JqZWN0U3RvcmUoJ3N0b3JlJyki
KTsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJzdG9yZV90Mi5wdXQoJ2MnKSIpOworICAg
ICAgICAgICAgICAgIGNoZWNrKHN0b3JlX3QyLCAxLCAnYycpOworICAgICAgICAgICAgICAgIGV2
YWxBbmRMb2coInN0b3JlX3QyLnB1dCgnZCcpIik7CisgICAgICAgICAgICAgICAgY2hlY2soc3Rv
cmVfdDIsIDIsICdkJyk7CisKKyAgICAgICAgICAgICAgICB0cmFuczIub25jb21wbGV0ZSA9IGNh
bGxiYWNrOworICAgICAgICAgICAgfTsKKyAgICAgICAgfTsKKyAgICB9CispOworCit0ZXN0KCk7
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleS1zb3J0LW9yZGVyLWFjcm9zcy10eXBlcy5qcyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXktc29ydC1vcmRlci1h
Y3Jvc3MtdHlwZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2M3ZmY4ZTQ3MGZlMWYwMmRlODEyZmY5ZjUxZmY3
YjA2NTI2ZDkxNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9rZXktc29ydC1vcmRlci1hY3Jvc3MtdHlwZXMuanMKQEAgLTAsMCArMSw4
NSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0
cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBrZXkgY29t
cGFyaXNvbiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhl
cygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRp
b24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4
ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
b3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2co
ImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGFkZEtleTE7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Cit9CisKK2Z1bmN0aW9uIGFkZEtleTEoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jlcyhk
Yik7CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdmb28nKTsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0
b3JlLmFkZChbXSwgSW5maW5pdHkpOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkS2V5
MjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKwor
ZnVuY3Rpb24gYWRkS2V5MigpCit7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5hZGQoW10sIC1JbmZpbml0eSk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBhZGRLZXkzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworfQorCitmdW5jdGlvbiBhZGRLZXkzKCkKK3sKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChbXSwgMS4wKTsiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGFkZEtleTQ7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGFkZEtleTQoKQoreworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKFtdLCAnJyk7Iik7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBhZGRLZXk1OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBhZGRLZXk1KCkKK3sKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChbXSwgJzEuMCcpOyIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbkFDdXJzb3I7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5BQ3Vyc29yKCkKK3sK
KyAgICBrZXlJbmRleCA9IDA7CisgICAgc29ydGVkS2V5cyA9IGV2YWxBbmRMb2coInNvcnRlZEtl
eSA9IFstSW5maW5pdHksIDEuMCwgSW5maW5pdHksICcnLCAnMS4wJ107Iik7CisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgY3Vyc29yID0gZXZhbEFu
ZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICAgICAgaWYgKGN1cnNv
cikgeworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAic29ydGVkS2V5c1trZXlJ
bmRleF0iKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIpOwor
ICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKKyAgICAgICAgfQorICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisgICAgfQor
fQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleS1zb3J0LW9yZGVyLWRhdGUu
anMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5LXNvcnQtb3Jk
ZXItZGF0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMWZmZjM3MjlkMThkNTcxZTVmZmJmN2Y3NzI4NGYyN2I5
NmU2ODQ1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL2tleS1zb3J0LW9yZGVyLWRhdGUuanMKQEAgLTAsMCArMSw4MiBAQAoraWYgKHRo
aXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpz
Jyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBrZXkgY29tcGFyaXNvbiIpOwor
CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAg
bmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVz
dCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5h
bWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBk
Yi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEtleTE7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0
aW9uIGFkZEtleTEoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBv
YmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nKTsiKTsK
KyAgICBkYXRlMSA9IGV2YWxBbmRMb2coImRhdGUxID0gbmV3IERhdGUoMTAwMCk7Iik7CisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoW10sIGRhdGUx
KTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEtleTI7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGFkZEtleTIoKQor
eworICAgIGRhdGUwID0gZXZhbEFuZExvZygiZGF0ZTAgPSBuZXcgRGF0ZSgwKTsiKTsKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChbXSwgZGF0ZTAp
OyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkS2V5MzsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gYWRkS2V5MygpCit7
CisgICAgZGF0ZTMgPSBldmFsQW5kTG9nKCJkYXRlMyA9IG5ldyBEYXRlKDMwMDApOyIpOworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKFtdLCBkYXRl
Myk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRLZXk0OworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBhZGRLZXk0KCkK
K3sKKyAgICBkYXRlMiA9IGV2YWxBbmRMb2coImRhdGUyID0gbmV3IERhdGUoMjAwMCk7Iik7Cisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoW10sIGRh
dGUyKTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5BQ3Vyc29yOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVu
QUN1cnNvcigpCit7CisgICAga2V5SW5kZXggPSAwOworICAgIHNvcnRlZEtleXMgPSBldmFsQW5k
TG9nKCJzb3J0ZWRLZXlzID0gW2RhdGUwLnRvU3RyaW5nKCksIGRhdGUxLnRvU3RyaW5nKCksIGRh
dGUyLnRvU3RyaW5nKCksIGRhdGUzLnRvU3RyaW5nKCldOyIpOworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1
cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgICAgIGlmIChjdXJzb3IpIHsKKyAg
ICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5LnRvU3RyaW5nKCkiLCAic29ydGVkS2V5c1tr
ZXlJbmRleF0iKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgpOyIp
OworICAgICAgICAgICAgZXZhbEFuZExvZygia2V5SW5kZXgrKzsiKTsKKyAgICAgICAgfQorICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisgICAg
fQorfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleS10eXBlLWFycmF5Lmpz
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleS10eXBlLWFycmF5
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmViNjAzODEyZGQzNjMyZGMyY2QwNDI0ODI2Y2U1MjBkY2ZiOGI5ZGMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMva2V5LXR5cGUtYXJyYXkuanMKQEAgLTAsMCArMSwxOTcgQEAKK2lmICh0aGlzLmltcG9ydFNj
cmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitk
ZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIga2V5IHR5cGVzIik7CisKK2Z1bmN0aW9uIHRlc3Qo
KQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBldmFsQW5kTG9nKCJJREJU
cmFuc2FjdGlvbiA9IHNlbGYuSURCVHJhbnNhY3Rpb24gfHwgc2VsZi5JREJUcmFuc2FjdGlvbjsi
KTsKKyAgICBzaG91bGRCZUZhbHNlKCJJREJUcmFuc2FjdGlvbiA9PSBudWxsIik7CisKKyAgICBl
dmFsQW5kTG9nKCJJREJEYXRhYmFzZUV4Y2VwdGlvbiA9IHNlbGYuSURCRGF0YWJhc2VFeGNlcHRp
b24gfHwgc2VsZi5JREJEYXRhYmFzZUV4Y2VwdGlvbjsiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJJ
REJEYXRhYmFzZUV4Y2VwdGlvbiA9PSBudWxsIik7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlv
bi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICBv
cGVucmVxID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7
CisgICAgb3BlbnJlcS5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICBvcGVucmVxLm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3Mo
KQoreworICAgIGV2YWxBbmRMb2coImRiID0gb3BlbnJlcS5yZXN1bHQiKTsKKyAgICBzZXR2ZXJy
ZXEgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgc2V0
dmVycmVxLm9uc3VjY2VzcyA9IHNldFZlcnNpb25TdWNjZXNzOworICAgIHNldHZlcnJlcS5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb25T
dWNjZXNzKCkKK3sKKyAgICBkZWJ1ZygicHJlcGFyaW5nIGRhdGFiYXNlIik7CisgICAgdHJhbnMg
PSBzZXR2ZXJyZXEucmVzdWx0OworICAgIHRyYW5zLm9uY29tcGxldGUgPSB0ZXN0VmFsaWRBcnJh
eUtleXM7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKyAgICBvYmplY3RTdG9yZSA9
IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpOyIpOworICAgIGRlYnVn
KCIiKTsKK30KKworZnVuY3Rpb24gdGVzdFZhbGlkQXJyYXlLZXlzKCkKK3sKKyAgICBldmFsQW5k
TG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURf
V1JJVEUpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3Rv
cmUnKSIpOworICAgIGRlYnVnKCIiKTsKKworICAgIGV2YWxBbmRMb2coImxvbmdfYXJyYXkgPSBb
XTsgZm9yIChpID0gMDsgaSA8IDEwMDA7ICsraSkgeyBsb25nX2FycmF5LnB1c2goJ2FiYycsIDEy
MywgbmV3IERhdGUoMCksIFtdKTsgfSIpOworICAgIGRlYnVnKCIiKTsKKworICAgIGRlYnVnKCJh
cnJheSB0aGF0IGNvbnRhaW5zIG5vbi1udW1lcmljIHNlbGYtcmVmZXJlbmNlIik7CisgICAgZXZh
bEFuZExvZygic2VsZl9yZWZlcnJlbnRpYWxfYXJyYXkgPSBbXTsgc2VsZl9yZWZlcnJlbnRpYWxf
YXJyYXkuc2VsZiA9IHNlbGZfcmVmZXJyZW50aWFsX2FycmF5OyIpOworICAgIGRlYnVnKCIiKTsK
KworICAgIHZhciBuID0gMCwgY2FzZXMgPSBbCisgICAgICAgICJbXSIsCisKKyAgICAgICAgIlst
SW5maW5pdHldIiwKKyAgICAgICAgIlstTnVtYmVyLk1BWF9WQUxVRV0iLAorICAgICAgICAiWy0x
XSIsCisgICAgICAgICJbLU51bWJlci5NSU5fVkFMVUVdIiwKKyAgICAgICAgIlswXSIsCisgICAg
ICAgICJbTnVtYmVyLk1JTl9WQUxVRV0iLAorICAgICAgICAiWzFdIiwKKyAgICAgICAgIltOdW1i
ZXIuTUFYX1ZBTFVFXSIsCisgICAgICAgICJbSW5maW5pdHldIiwKKworICAgICAgICAiWzEsMiwz
XSIsCisKKyAgICAgICAgIltuZXcgRGF0ZSgwKV0iLAorICAgICAgICAiW25ldyBEYXRlKCcyNTI1
LTAxLTAxVDAwOjAwOjAwWicpXSIsCisKKyAgICAgICAgIltuZXcgRGF0ZSgwKSwgbmV3IERhdGUo
JzI1MjUtMDEtMDFUMDA6MDA6MDBaJyldIiwKKworICAgICAgICAiWycnXSIsCisgICAgICAgICJb
J1x4MDAnXSIsCisgICAgICAgICJbJ2FiYzEyMyddIiwKKworICAgICAgICAiWydhYmMnLCAxMjNd
IiwKKworICAgICAgICAiW1tdXSIsCisKKyAgICAgICAgIltbXSwgW11dIiwKKyAgICAgICAgIltb
XSwgW10sIFtdXSIsCisKKyAgICAgICAgIltbW11dXSIsCisgICAgICAgICJbW1tbXV1dXSIsCisK
KyAgICAgICAgIlsxMjMsICdhYmMnLCBuZXcgRGF0ZSgwKSwgW11dIiwKKyAgICAgICAgIltbMTIz
LCAnYWJjJywgbmV3IERhdGUoMCksIFtdXSwgWzQ1NiwgJ2RlZicsIG5ldyBEYXRlKDk5OSksIFtb
XV1dXSIsCisKKyAgICAgICAgImxvbmdfYXJyYXkiLAorICAgICAgICAic2VsZl9yZWZlcnJlbnRp
YWxfYXJyYXkiCisgICAgXTsKKworICAgIGZ1bmN0aW9uIHRlc3RBcnJheVB1dEdldCh2YWx1ZSwg
a2V5LCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGRlYnVnKCJ0ZXN0aW5nIGFycmF5IGtleTog
IiArIGtleSk7CisgICAgICAgIHB1dHJlcSA9IGV2YWxBbmRMb2coInN0b3JlLnB1dCgnIiArIHZh
bHVlICsgIicsICIgKyBrZXkgKyAiKTsiKTsKKyAgICAgICAgcHV0cmVxLm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcHV0cmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgZ2V0cmVxID0gZXZhbEFuZExvZygic3RvcmUuZ2V0KCIgKyBrZXkg
KyAiKTsiKTsKKyAgICAgICAgICAgIGdldHJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7CisgICAgICAgICAgICBnZXRyZXEub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJnZXRyZXEucmVzdWx0IiwgdmFsdWUp
OworICAgICAgICAgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgICAgICAgICBjYWxsYmFjaygp
OworICAgICAgICAgICAgfTsKKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBuZXh0
VGVzdCgpCisgICAgeworICAgICAgICB2YXIgdGVzdGNhc2UgPSBjYXNlcy5zaGlmdCgpOworICAg
ICAgICBpZiAodGVzdGNhc2UpIHsKKyAgICAgICAgICAgIHRlc3RBcnJheVB1dEdldCgidmFsdWUi
ICsgKCsrbiksIHRlc3RjYXNlLCBuZXh0VGVzdCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBu
ZXh0VGVzdCgpOworCisgICAgdHJhbnMub25jb21wbGV0ZSA9IHRlc3RJbnZhbGlkQXJyYXlLZXlz
OworfQorCitmdW5jdGlvbiB0ZXN0SW52YWxpZEFycmF5S2V5cygpCit7CisgICAgZXZhbEFuZExv
ZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dS
SVRFKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3Jl
JykiKTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICBkZWJ1ZygiYXJyYXkgdGhhdCBjb250YWlucyBp
dHNlbGY6IGFycmF5ID0gWyBhcnJheSBdIik7CisgICAgZXZhbEFuZExvZygiY3ljbGljX2FycmF5
ID0gW107IGN5Y2xpY19hcnJheS5wdXNoKGN5Y2xpY19hcnJheSkiKTsKKyAgICBzaG91bGRUaHJv
dygiSlNPTi5zdHJpbmdpZnkoY3ljbGljX2FycmF5KSIpOworCisgICAgZGVidWcoImFycmF5IHRo
YXQgY29udGFpbnMgaXRzZWxmLCBvbmUgbGV2ZWwgZG93bjogYXJyYXkgPSBbIFsgYXJyYXkgXSBd
Iik7CisgICAgZXZhbEFuZExvZygiY3ljbGljX2FycmF5MiA9IFtdOyBjeWNsaWNfYXJyYXkyLnB1
c2goW2N5Y2xpY19hcnJheTJdKSIpOworICAgIHNob3VsZFRocm93KCJKU09OLnN0cmluZ2lmeShj
eWNsaWNfYXJyYXkyKSIpOworCisgICAgZGVidWcoImFycmF5IHRoYXQgY29udGFpbnMgaXRzZWxm
LCBub3QgYXMgZmlyc3QgZWxlbWVudDogYXJyYXkgPSBbMSwgJ2InLCBbXSwgYXJyYXldIik7Cisg
ICAgZXZhbEFuZExvZygiY3ljbGljX2FycmF5MyA9IFsxLCAnYicsIFtdXTsgY3ljbGljX2FycmF5
My5wdXNoKGN5Y2xpY19hcnJheTMpIik7CisgICAgc2hvdWxkVGhyb3coIkpTT04uc3RyaW5naWZ5
KGN5Y2xpY19hcnJheTMpIik7CisgICAgZGVidWcoIiIpOworCisgICAgZGVidWcoImFycmF5IHRo
YXQgY29udGFpbnMgYXJyYXkgdGhhdCBjb250YWlucyBpdHNlbGYiKTsKKyAgICBldmFsQW5kTG9n
KCJjeWNsaWNfYXJyYXk0ID0gW2N5Y2xpY19hcnJheV07Iik7CisgICAgc2hvdWxkVGhyb3coIkpT
T04uc3RyaW5naWZ5KGN5Y2xpY19hcnJheTQpIik7CisgICAgZGVidWcoIiIpOworCisgICAgdmFy
IGludmFsaWRLZXlzID0gWworICAgICAgICAiWyB2b2lkIDAgXSIsIC8vIHVuZGVmaW5lZAorICAg
ICAgICAiWyB0cnVlIF0iLAorICAgICAgICAiWyBmYWxzZSBdIiwKKyAgICAgICAgIlsgTmFOIF0i
LAorICAgICAgICAiWyBudWxsIF0iLAorICAgICAgICAiWyB7fSBdIiwKKyAgICAgICAgIlsgZnVu
Y3Rpb24gKCkge30gXSIsCisgICAgICAgICJbIC9yZWdleC8gXSIsCisgICAgICAgICJbIHNlbGYg
XSIsCisgICAgICAgICJbIHNlbGYuZG9jdW1lbnQgXSIsCisgICAgICAgICJbIHNlbGYuZG9jdW1l
bnQuYm9keSBdIiwKKyAgICAgICAgImN5Y2xpY19hcnJheSIsCisgICAgICAgICJjeWNsaWNfYXJy
YXkyIiwKKyAgICAgICAgImN5Y2xpY19hcnJheTMiLAorICAgICAgICAiY3ljbGljX2FycmF5NCIs
CisgICAgICAgICJBcnJheSgxMDAwKSIgLy8gc3BhcnNlCisgICAgXTsKKworICAgIGludmFsaWRL
ZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeworICAgICAgICBkZWJ1ZygidGVzdGluZyBpbnZh
bGlkIGFycmF5IGtleTogIiArIGtleSk7CisgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24o
InN0b3JlLnB1dCgndmFsdWUnLCAiICsga2V5ICsgIik7IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9u
LkRBVEFfRVJSIik7CisgICAgICAgIGRlYnVnKCIiKTsKKyAgICB9KTsKKworICAgIHRlc3REZXB0
aExpbWl0cygpOworfQorCitmdW5jdGlvbiBtYWtlQXJyYXlPZkRlcHRoKG4pCit7CisgICAgdmFy
IGFycmF5ID0gW107CisgICAgd2hpbGUgKC0tbikgeworICAgICAgICBhcnJheSA9IFthcnJheV07
CisgICAgfQorICAgIHJldHVybiBhcnJheTsKK30KKworZnVuY3Rpb24gdGVzdERlcHRoTGltaXRz
KCkKK3sKKyAgICBzaG91bGRCZSgiaW5kZXhlZERCLmNtcChtYWtlQXJyYXlPZkRlcHRoKDI1KSwg
MCkiLCAiMSIpOworICAgIHNob3VsZEJlKCJpbmRleGVkREIuY21wKG1ha2VBcnJheU9mRGVwdGgo
MjUwKSwgMCkiLCAiMSIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4ZWREQi5j
bXAobWFrZUFycmF5T2ZEZXB0aCgyNTAwKSwgMCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFU
QV9FUlIiKTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVz
dCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXktdHlwZS1pbmZpbml0eS5qcyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXktdHlwZS1pbmZpbml0eS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kMzM3NmUxMDY3NzMyMDY0NmQ4OGRjOWRhNWQ1ODRiZWNlMmY3MDMwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tl
eS10eXBlLWluZmluaXR5LmpzCkBAIC0wLDAgKzEsNTIgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlw
dHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNj
cmlwdGlvbigiVGVzdCBJbmRleGVkREIga2V5IHR5cGVzIik7CisKK2Z1bmN0aW9uIHRlc3QoKQor
eworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5sb2NhdGlv
bi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3Mo
KQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdGVzdEdyb3VwMTsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gdGVzdEdyb3VwMSgp
Cit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0g
ZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycpOyIpOworICAgIGRlYnVnKCJ0
ZXN0IGtleSBhcyBpbmZpbml0eSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gb2JqZWN0U3RvcmUuYWRkKFtdLCBJbmZpbml0eSk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSB0ZXN0R3JvdXAyOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiB0ZXN0R3JvdXAyKCkKK3sKKyAgICBkZWJ1ZygidGVzdCBr
ZXkgYXMgbmVnYXRpdmUgaW5maW5pdHkiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVx
dWVzdCA9IG9iamVjdFN0b3JlLmFkZChbXSwgLUluZmluaXR5KTsiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IHRlc3RHcm91cDM7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHRlc3RHcm91cDMoKQoreworICAgIGZpbmlzaEpT
VGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleXBhdGgtYmFz
aWNzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleXBhdGgt
YmFzaWNzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNjNzgxN2JiNmQwNmMwMDQ3NjkwOTBmY2VhNjg4Yzc5NWE4
NTQ4Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMva2V5cGF0aC1iYXNpY3MuanMKQEAgLTAsMCArMSw5MSBAQAoraWYgKHRoaXMuaW1w
b3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9
CisKK2Rlc2NyaXB0aW9uKCJUZXN0IGZvciB2YWxpZCBhbmQgaW52YWxpZCBrZXlwYXRocyIpOwor
CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAgIG5h
bWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3Qg
RGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1l
LCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIu
c2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB0ZXN0VmFsaWRLZXlQ
YXRoczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30K
KworZnVuY3Rpb24gdGVzdFZhbGlkS2V5UGF0aHMoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0
b3JlcyhkYik7CisKKyAgICB0ZXN0S2V5UGF0aHMgPSBbbnVsbCwgdW5kZWZpbmVkLCAnJ107Cisg
ICAgdGVzdEtleVBhdGhzLmZvckVhY2goZnVuY3Rpb24gKGtleVBhdGgpIHsKKyAgICAgICAgZ2xv
YmFsS2V5UGF0aCA9IGtleVBhdGg7CisgICAgICAgIGRlYnVnKCJnbG9iYWxLZXlQYXRoID0gJyIg
KyBnbG9iYWxLZXlQYXRoICsgIiciKTsKKyAgICAgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDogZ2xvYmFsS2V5UGF0aH0pIik7CisgICAgICAgIGRl
bGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisgICAgfSk7CisKKyAgICB0ZXN0S2V5UGF0aHMgPSBb
J2ZvbycsICdmb28uYmFyLmJheiddOworICAgIHRlc3RLZXlQYXRocy5mb3JFYWNoKGZ1bmN0aW9u
IChrZXlQYXRoKSB7CisgICAgICAgIGdsb2JhbEtleVBhdGggPSBrZXlQYXRoOworICAgICAgICBk
ZWJ1ZygiZ2xvYmFsS2V5UGF0aCA9ICciICsgZ2xvYmFsS2V5UGF0aCArICInIik7CisgICAgICAg
IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCduYW1lJywge2tleVBhdGg6IGdsb2Jh
bEtleVBhdGh9KSIpOworICAgICAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworICAgIH0p
OworCisgICAgdGVzdEtleVBhdGhzID0gW251bGwsIHVuZGVmaW5lZCwgJycsICdmb28nLCAnZm9v
LmJhci5iYXonXTsKKyAgICB0ZXN0S2V5UGF0aHMuZm9yRWFjaChmdW5jdGlvbiAoa2V5UGF0aCkg
eworICAgICAgICBnbG9iYWxLZXlQYXRoID0ga2V5UGF0aDsKKyAgICAgICAgZGVidWcoImdsb2Jh
bEtleVBhdGggPSAnIiArIGdsb2JhbEtleVBhdGggKyAiJyIpOworICAgICAgICBzdG9yZSA9IGV2
YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Cisg
ICAgICAgIGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCduYW1lJywgZ2xvYmFsS2V5UGF0
aCkiKTsKKyAgICAgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKyAgICB9KTsKKworICAg
IHRlc3RJbnZhbGlkS2V5UGF0aHMoKTsKK30KKworZnVuY3Rpb24gdGVzdEludmFsaWRLZXlQYXRo
cygpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIHRlc3RLZXlQYXRo
cyA9IFsnW10nLCAnWyJmb28iXScsICdbImZvbyIsICJiYXIiXScsICdbIiIsICIiXScsICdbMS4w
LCAyLjBdJywgJ1tbImZvbyJdXScsICdbImZvbyIsIFsiYmFyIl1dJ107CisgICAgdGVzdEtleVBh
dGhzLmZvckVhY2goZnVuY3Rpb24gKGtleVBhdGgpIHsKKyAgICAgICAgZ2xvYmFsS2V5UGF0aCA9
IGtleVBhdGg7CisgICAgICAgIGRlYnVnKCJnbG9iYWxLZXlQYXRoID0gJyIgKyBnbG9iYWxLZXlQ
YXRoICsgIiciKTsKKyAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ25hbWUnLCB7a2V5UGF0aDogZ2xvYmFsS2V5UGF0aH0pIiwgIklEQkRhdGFiYXNl
RXhjZXB0aW9uLk5PTl9UUkFOU0lFTlRfRVJSIik7CisgICAgICAgIGRlbGV0ZUFsbE9iamVjdFN0
b3JlcyhkYik7CisgICAgfSk7CisKKyAgICB0ZXN0S2V5UGF0aHMgPSBbJyAnLCAnZm9vICcsICdm
b28gYmFyJywgJ2Zvby4gYmFyJywgJ2ZvbyAuYmFyJywgJ2Zvby4uYmFyJywgJytmb28nLCAnZm9v
JSddOworICAgIHRlc3RLZXlQYXRocy5mb3JFYWNoKGZ1bmN0aW9uIChrZXlQYXRoKSB7CisgICAg
ICAgIGdsb2JhbEtleVBhdGggPSBrZXlQYXRoOworICAgICAgICBkZWJ1ZygiZ2xvYmFsS2V5UGF0
aCA9ICciICsgZ2xvYmFsS2V5UGF0aCArICInIik7CisgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oImRiLmNyZWF0ZU9iamVjdFN0b3JlKCduYW1lJywge2tleVBhdGg6IGdsb2JhbEtleVBh
dGh9KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT05fVFJBTlNJRU5UX0VSUiIpOworICAgICAg
ICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworICAgIH0pOworCisgICAgdGVzdEtleVBhdGhz
ID0gWycgJywgJ2ZvbyAnLCAnZm9vIGJhcicsICdmb28uIGJhcicsICdmb28gLmJhcicsICdmb28u
LmJhcicsICcrZm9vJywgJ2ZvbyUnXTsKKyAgICB0ZXN0S2V5UGF0aHMuZm9yRWFjaChmdW5jdGlv
biAoa2V5UGF0aCkgeworICAgICAgICBnbG9iYWxLZXlQYXRoID0ga2V5UGF0aDsKKyAgICAgICAg
ZGVidWcoImdsb2JhbEtleVBhdGggPSAnIiArIGdsb2JhbEtleVBhdGggKyAiJyIpOworICAgICAg
ICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3Jl
TmFtZScpIik7CisgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmNyZWF0ZUlu
ZGV4KCduYW1lJywgZ2xvYmFsS2V5UGF0aCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9OX1RS
QU5TSUVOVF9FUlIiKTsKKyAgICAgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKyAgICB9
KTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL2tleXBhdGgtZWRnZXMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMva2V5cGF0aC1lZGdlcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYmYxMWJiNmRjZTI3NjQ3MTEw
NWI4M2UxY2Q0OTQxMjJmYzhiNTAxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleXBhdGgtZWRnZXMuanMKQEAgLTAsMCArMSwxMTAg
QEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMo
J3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIga2V5UGF0aCBl
ZGdlIGNhc2VzIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZp
eGVzKCk7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFi
YXNlKCdrZXlwYXRoLWVkZ2VzJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdrZXlwYXRoLWVkZ2Vz
JykiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgfTsKK30KKwor
ZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygib3Bl
blN1Y2Nlc3MoKToiKTsKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lv
bignMScpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgIHRyYW5zYWN0
aW9uID0gcmVxdWVzdC5yZXN1bHQ7CisgICAgICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4
cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICAgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ3N0b3JlLXdpdGgtcGF0aCcsIHtrZXlQYXRoOiAnZm9vJ30pIik7CisgICAgICAgIGV2
YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZS13aXRoLXBhdGgtYW5kLWdlbmVy
YXRvcicsIHtrZXlQYXRoOiAnZm9vJywgYXV0b0luY3JlbWVudDogdHJ1ZX0pIik7CisgICAgICAg
IHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB0ZXN0S2V5UGF0aHM7CisgICAgfTsKK30KKworZnVu
Y3Rpb24gdGVzdEtleVBhdGhzKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInRlc3RL
ZXlQYXRocygpOiIpOworCisgICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlv
biA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUtd2l0aC1wYXRoJ10sIElEQlRyYW5zYWN0aW9uLlJF
QURfV1JJVEUpIik7CisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9u
Lm9iamVjdFN0b3JlKCdzdG9yZS13aXRoLXBhdGgnKSIpOworCisgICAgZGVidWcoIiIpOworICAg
IGRlYnVnKCJLZXkgcGF0aCBkb2Vzbid0IHJlc29sdmUgdG8gYSB2YWx1ZTsgc2hvdWxkIHlpZWxk
IG51bGwsIHNob3VsZCB0aHJvdyBEQVRBX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRp
b24oInN0b3JlLnB1dChudWxsKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOwor
CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJLZXkgcGF0aCBkb2Vzbid0IHJlc29sdmUgdG8g
YSB2YWx1ZTsgc2hvdWxkIHlpZWxkIG51bGwsIHNob3VsZCB0aHJvdyBEQVRBX0VSUiIpOworICAg
IGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLnB1dCh7fSkiLCAiSURCRGF0YWJhc2VFeGNl
cHRpb24uREFUQV9FUlIiKTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiS2V5IHBhdGgg
cmVzb2x2ZXMgdG8gYSB2YWx1ZSB0aGF0IGlzIGludmFsaWQga2V5OyBzaG91bGQgeWllbGQgJ2lu
dmFsaWQnIGtleSwgc2hvdWxkIHRocm93IERBVEFfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigic3RvcmUucHV0KHtmb286IG51bGx9KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5E
QVRBX0VSUiIpOworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJLZXkgcGF0aCByZXNvbHZl
cyB0byBhIHZhbHVlIHRoYXQgaXMgdmFsaWQga2V5OyBzaG91bGQgeWllbGQgJ3N0cmluZycga2V5
LCBzaG91bGQgc3VjY2VlZCIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5wdXQo
e2ZvbzogJ3pvbyd9KSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICB0
ZXN0UGFzc2VkKCJzdG9yZS5wdXQgc3VjY2VlZGVkIik7CisgICAgfTsKKworICAgIHRyYW5zYWN0
aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFuc2FjdGlvbi5v
bmNvbXBsZXRlID0gdGVzdEtleVBhdGhzQW5kR2VuZXJhdG9yOworfQorCitmdW5jdGlvbiB0ZXN0
S2V5UGF0aHNBbmRHZW5lcmF0b3IoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidGVz
dEtleVBhdGhzQW5kR2VuZXJhdG9yKCk6Iik7CisKKyAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRM
b2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZS13aXRoLXBhdGgtYW5kLWdl
bmVyYXRvciddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIHN0b3JlID0gZXZh
bEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUtd2l0aC1wYXRo
LWFuZC1nZW5lcmF0b3InKSIpOworCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJLZXkgcGF0
aCBkb2Vzbid0IHJlc29sdmUgdG8gYSB2YWx1ZTsgc2hvdWxkIHlpZWxkIG51bGwgYnV0IGluc2Vy
dGlvbiB3b3VsZCBmYWlsLCBzbyBwdXQgcmVxdWVzdCBzaG91bGQgcmFpc2UgZXhjZXB0aW9uIik7
CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KG51bGwpIiwgIklEQkRhdGFi
YXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIktl
eSBwYXRoIGRvZXNuJ3QgcmVzb2x2ZSB0byBhIHZhbHVlOyBzaG91bGQgeWllbGQgbnVsbCBidXQg
aW5zZXJ0aW9uIHdvdWxkIGZhaWwsIHNvIHB1dCByZXF1ZXN0IHNob3VsZCByYWlzZSBleGNlcHRp
b24iKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5wdXQoJ3N0cmluZycpIiwg
IklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisKKyAgICBkZWJ1ZygiIik7CisgICAg
ZGVidWcoIktleSBwYXRoIGRvZXNuJ3QgcmVzb2x2ZSB0byBhIHZhbHVlOyBzaG91bGQgeWllbGQg
bnVsbCwga2V5IHNob3VsZCBiZSBnZW5lcmF0ZWQsIHB1dCByZXF1ZXN0IHNob3VsZCBzdWNjZWVk
Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLnB1dCh7fSkiKTsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgic3RvcmUucHV0IHN1Y2Nl
ZWRlZCIpOworCisgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgZGVidWcoIktleSBwYXRoIHJl
c29sdmVzIHRvIGEgdmFsdWUgdGhhdCBpcyBpbnZhbGlkIGtleTsgc2hvdWxkIHlpZWxkICdpbnZh
bGlkJyBrZXksIHNob3VsZCB0aHJvdyBEQVRBX0VSUiIpOworICAgICAgICBldmFsQW5kRXhwZWN0
RXhjZXB0aW9uKCJzdG9yZS5wdXQoe2ZvbzogbnVsbH0pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9u
LkRBVEFfRVJSIik7CisKKyAgICAgICAgZGVidWcoIiIpOworICAgICAgICBkZWJ1ZygiS2V5IHBh
dGggcmVzb2x2ZXMgdG8gYSB2YWx1ZSB0aGF0IGlzIHZhbGlkIGtleTsgc2hvdWxkIHlpZWxkICdz
dHJpbmcnIGtleSwgc2hvdWxkIHN1Y2NlZWQiKTsKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInN0b3JlLnB1dCh7Zm9vOiAnem9vJ30pIik7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoInN0b3JlLnB1dCBzdWNjZWVkZWQi
KTsKKworICAgICAgICB9OworICAgIH07CisKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5l
eHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZpbmlz
aEpTVGVzdDsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXlwYXRoLWZl
dGNoLWtleS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXlw
YXRoLWZldGNoLWtleS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDIzMzUzYzMzNjQ0MTQwYmFmYzc2YmM0Nzk3
YWFlYzQxZTVhM2Q3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL2tleXBhdGgtZmV0Y2gta2V5LmpzCkBAIC0wLDAgKzEsODIgQEAKK2lm
ICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJl
ZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIga2V5UGF0aHMiKTsKKwor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5h
bWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3Qg
RGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1l
LCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIu
c2V0VmVyc2lvbignMScpIik7CisKKyAgICB0ZXN0RGF0YSA9IFt7IG5hbWU6ICJzaW1wbGUgaWRl
bnRpZmllciIsCisgICAgICAgICAgICAgICAgICB2YWx1ZToge2lkOjEwfSwKKyAgICAgICAgICAg
ICAgICAgIGtleVBhdGg6ICJpZCIsCisgICAgICAgICAgICAgICAgICBrZXk6IDEwIH0sCisgICAg
ICAgICAgICAgICAgeyBuYW1lOiAic2ltcGxlIGlkZW50aWZpZXJzIiwKKyAgICAgICAgICAgICAg
ICAgIHZhbHVlOiB7aWQxOjEwLCBpZDI6MjB9LAorICAgICAgICAgICAgICAgICAga2V5UGF0aDog
ImlkMSIsCisgICAgICAgICAgICAgICAgICBrZXk6IDEwIH0sCisgICAgICAgICAgICAgICAgeyBu
YW1lOiAibmVzdGVkIGlkZW50aWZpZXJzIiwKKyAgICAgICAgICAgICAgICAgIHZhbHVlOiB7b3V0
ZXI6e2lubmVyOjEwfX0sCisgICAgICAgICAgICAgICAgICBrZXlQYXRoOiAib3V0ZXIuaW5uZXIi
LAorICAgICAgICAgICAgICAgICAga2V5OiAxMCB9LAorICAgICAgICAgICAgICAgIHsgbmFtZTog
Im5lc3RlZCBpZGVudGlmaWVycyB3aXRoIGRpc3RyYWN0aW9ucyIsCisgICAgICAgICAgICAgICAg
ICB2YWx1ZToge291dGVyOntpbm5lcjoxMH0sIGlubmVyOntvdXRlcjoyMH19LAorICAgICAgICAg
ICAgICAgICAga2V5UGF0aDogIm91dGVyLmlubmVyIiwKKyAgICAgICAgICAgICAgICAgIGtleTog
MTAgfSwKKyAgICBdOworICAgIG5leHRUb09wZW4gPSAwOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY3JlYXRlQW5kUG9wdWxhdGVP
YmplY3RTdG9yZSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0aW5nICIgKyB0
ZXN0RGF0YVtuZXh0VG9PcGVuXS5uYW1lKTsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jlcyhk
Yik7CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3Jl
YXRlT2JqZWN0U3RvcmUodGVzdERhdGFbbmV4dFRvT3Blbl0ubmFtZSwge2tleVBhdGg6IHRlc3RE
YXRhW25leHRUb09wZW5dLmtleVBhdGh9KTsiKTsKKyAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJy
ZXN1bHQgPSBvYmplY3RTdG9yZS5hZGQodGVzdERhdGFbbmV4dFRvT3Blbl0udmFsdWUpOyIpOwor
ICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVzdWx0
Lm9uc3VjY2VzcyA9IG9wZW5DdXJzb3I7Cit9CisKK2Z1bmN0aW9uIG9wZW5DdXJzb3IoKQorewor
ICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coInJlc3VsdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3Io
KTsiKTsKKyAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAg
IHJlc3VsdC5vbnN1Y2Nlc3MgPSBjaGVja0N1cnNvcjsKK30KKworZnVuY3Rpb24gY2hlY2tDdXJz
b3IoKQoreworICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQ7Iik7CisgICAgaWYgKGN1cnNvcikgeworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtl
eSIsICJ0ZXN0RGF0YVtuZXh0VG9PcGVuXS5rZXkiKTsKKyAgICB9IGVsc2UgeworICAgICAgICB0
ZXN0RmFpbGVkKCJjdXJzb3IgaXMgbnVsbCIpOworICAgIH0KKyAgICBpZiAoKytuZXh0VG9PcGVu
IDwgdGVzdERhdGEubGVuZ3RoKSB7CisgICAgICAgIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3Rv
cmUoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9Cit9CisK
K3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5cmFuZ2UtcmVxdWlyZWQtYXJndW1l
bnRzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleXJhbmdl
LXJlcXVpcmVkLWFyZ3VtZW50cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MTMyMDk5MDI1YmY1N2Y1N2VmOWVi
ZGNkZDQ4ZDM3MGMwYmVmZjdiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL2tleXJhbmdlLXJlcXVpcmVkLWFyZ3VtZW50cy5qcwpAQCAt
MCwwICsxLDIxIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0
cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBv
cnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERC
IGtleXJhbmdlIHJlcXVpcmVkIGFyZ3VtZW50cyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgc2hvdWxkVGhyb3coIklEQktleVJhbmdl
Lm9ubHkoKTsiKTsKKyAgICBzaG91bGRUaHJvdygiSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgpOyIp
OworICAgIHNob3VsZFRocm93KCJJREJLZXlSYW5nZS51cHBlckJvdW5kKCk7Iik7CisgICAgc2hv
dWxkVGhyb3coIklEQktleVJhbmdlLmJvdW5kKDEpOyIpOworICAgIHNob3VsZFRocm93KCJJREJL
ZXlSYW5nZS5ib3VuZCgpOyIpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5cmFuZ2UuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMva2V5cmFuZ2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzJmNWY2NTY2ZDYx
ODFjOTA4YTM0NzAyMTZiOGYzMDk0NTVjZTdmNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9rZXlyYW5nZS5qcwpAQCAtMCwwICsxLDE4
NyBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0
cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIEtleVJh
bmdlLiIpOworCitmdW5jdGlvbiBjaGVja1NpbmdsZUtleVJhbmdlKHZhbHVlKQoreworICAgIGtl
eVJhbmdlID0gZXZhbEFuZExvZygiSURCS2V5UmFuZ2Uub25seSgiICsgdmFsdWUgKyAiKSIpOwor
ICAgIHNob3VsZEJlKCJrZXlSYW5nZS5sb3dlciIsICIiICsgdmFsdWUpOworICAgIHNob3VsZEJl
KCJrZXlSYW5nZS51cHBlciIsICIiICsgdmFsdWUpOworICAgIHNob3VsZEJlRmFsc2UoImtleVJh
bmdlLmxvd2VyT3BlbiIpOworICAgIHNob3VsZEJlRmFsc2UoImtleVJhbmdlLnVwcGVyT3BlbiIp
OworfQorCitmdW5jdGlvbiBjaGVja0xvd2VyQm91bmRLZXlSYW5nZSh2YWx1ZSwgb3BlbikKK3sK
KyAgICBrZXlSYW5nZSA9IGV2YWxBbmRMb2coIklEQktleVJhbmdlLmxvd2VyQm91bmQoIiArIHZh
bHVlICsgIiwiICsgb3BlbiArICIpIik7CisgICAgc2hvdWxkQmUoImtleVJhbmdlLmxvd2VyIiwg
IiIgKyB2YWx1ZSk7CisgICAgaWYgKG9wZW4gPT09IHVuZGVmaW5lZCkKKyAgICAgICAgb3BlbiA9
IGZhbHNlOworICAgIHNob3VsZEJlKCJrZXlSYW5nZS5sb3dlck9wZW4iLCAiIiArIG9wZW4pOwor
ICAgIHNob3VsZEJlTnVsbCgia2V5UmFuZ2UudXBwZXIiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJr
ZXlSYW5nZS51cHBlck9wZW4iKTsKK30KKworZnVuY3Rpb24gY2hlY2tVcHBlckJvdW5kS2V5UmFu
Z2UodmFsdWUsIG9wZW4pCit7CisgICAga2V5UmFuZ2UgPSBldmFsQW5kTG9nKCJJREJLZXlSYW5n
ZS51cHBlckJvdW5kKCIgKyB2YWx1ZSArICIsIiArIG9wZW4gKyAiKSIpOworICAgIHNob3VsZEJl
KCJrZXlSYW5nZS51cHBlciIsICIiICsgdmFsdWUpOworICAgIGlmIChvcGVuID09PSB1bmRlZmlu
ZWQpCisgICAgICAgIG9wZW4gPSBmYWxzZTsKKyAgICBzaG91bGRCZSgia2V5UmFuZ2UudXBwZXJP
cGVuIiwgIiIgKyBvcGVuKTsKKyAgICBzaG91bGRCZU51bGwoImtleVJhbmdlLmxvd2VyIik7Cisg
ICAgc2hvdWxkQmVGYWxzZSgia2V5UmFuZ2UubG93ZXJPcGVuIik7Cit9CisKK2Z1bmN0aW9uIGNo
ZWNrQm91bmRLZXlSYW5nZShsb3dlciwgdXBwZXIsIGxvd2VyT3BlbiwgdXBwZXJPcGVuKQorewor
ICAgIGtleVJhbmdlID0gZXZhbEFuZExvZygiSURCS2V5UmFuZ2UuYm91bmQoIiArIGxvd2VyICsg
IiwiICsgdXBwZXIgKyAiLCAiICsgbG93ZXJPcGVuICsgIiwgIiArIHVwcGVyT3BlbiArICIpIik7
CisgICAgc2hvdWxkQmUoImtleVJhbmdlLmxvd2VyIiwgIiIgKyBsb3dlcik7CisgICAgc2hvdWxk
QmUoImtleVJhbmdlLnVwcGVyIiwgIiIgKyB1cHBlcik7CisgICAgaWYgKGxvd2VyT3BlbiA9PT0g
dW5kZWZpbmVkKQorICAgICAgICBsb3dlck9wZW4gPSBmYWxzZTsKKyAgICBpZiAodXBwZXJPcGVu
ID09PSB1bmRlZmluZWQpCisgICAgICAgIHVwcGVyT3BlbiA9IGZhbHNlOworICAgIHNob3VsZEJl
KCJrZXlSYW5nZS5sb3dlck9wZW4iLCAiIiArIGxvd2VyT3Blbik7CisgICAgc2hvdWxkQmUoImtl
eVJhbmdlLnVwcGVyT3BlbiIsICIiICsgdXBwZXJPcGVuKTsKK30KKworZnVuY3Rpb24gdGVzdCgp
Cit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBzaG91bGRCZUZhbHNlKCInbG93
ZXInIGluIElEQktleVJhbmdlIik7CisgICAgc2hvdWxkQmVGYWxzZSgiJ3VwcGVyJyBpbiBJREJL
ZXlSYW5nZSIpOworICAgIHNob3VsZEJlRmFsc2UoIidsb3dlck9wZW4nIGluIElEQktleVJhbmdl
Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiJ3VwcGVyT3BlbicgaW4gSURCS2V5UmFuZ2UiKTsKKyAg
ICBzaG91bGRCZVRydWUoIidvbmx5JyBpbiBJREJLZXlSYW5nZSIpOworICAgIHNob3VsZEJlVHJ1
ZSgiJ2xvd2VyQm91bmQnIGluIElEQktleVJhbmdlIik7CisgICAgc2hvdWxkQmVUcnVlKCIndXBw
ZXJCb3VuZCcgaW4gSURCS2V5UmFuZ2UiKTsKKyAgICBzaG91bGRCZVRydWUoIidib3VuZCcgaW4g
SURCS2V5UmFuZ2UiKTsKKworICAgIGRlYnVnKCIiKTsKKworICAgIHZhciBpbnN0YW5jZSA9IGV2
YWxBbmRMb2coImluc3RhbmNlID0gSURCS2V5UmFuZ2Uub25seSgxKSIpOworICAgIHNob3VsZEJl
VHJ1ZSgiJ2xvd2VyJyBpbiBpbnN0YW5jZSIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ3VwcGVyJyBp
biBpbnN0YW5jZSIpOworICAgIHNob3VsZEJlVHJ1ZSgiJ2xvd2VyT3BlbicgaW4gaW5zdGFuY2Ui
KTsKKyAgICBzaG91bGRCZVRydWUoIid1cHBlck9wZW4nIGluIGluc3RhbmNlIik7CisgICAgc2hv
dWxkQmVGYWxzZSgiJ29ubHknIGluIGluc3RhbmNlIik7CisgICAgc2hvdWxkQmVGYWxzZSgiJ2xv
d2VyQm91bmQnIGluIGluc3RhbmNlIik7CisgICAgc2hvdWxkQmVGYWxzZSgiJ3VwcGVyQm91bmQn
IGluIGluc3RhbmNlIik7CisgICAgc2hvdWxkQmVGYWxzZSgiJ2JvdW5kJyBpbiBpbnN0YW5jZSIp
OworCisgICAgZGVidWcoIiIpOworCisgICAgY2hlY2tTaW5nbGVLZXlSYW5nZSgxKTsKKyAgICBj
aGVja1NpbmdsZUtleVJhbmdlKDMuMTQpOworICAgIGNoZWNrU2luZ2xlS2V5UmFuZ2UoIidhJyIp
OworCisgICAgY2hlY2tMb3dlckJvdW5kS2V5UmFuZ2UoMTAsIHRydWUpOworICAgIGNoZWNrTG93
ZXJCb3VuZEtleVJhbmdlKDExLCBmYWxzZSk7CisgICAgY2hlY2tMb3dlckJvdW5kS2V5UmFuZ2Uo
MTIpOworICAgIGNoZWNrTG93ZXJCb3VuZEtleVJhbmdlKDEwLjEsIHRydWUpOworICAgIGNoZWNr
TG93ZXJCb3VuZEtleVJhbmdlKDExLjIsIGZhbHNlKTsKKyAgICBjaGVja0xvd2VyQm91bmRLZXlS
YW5nZSgxMi4zKTsKKyAgICBjaGVja0xvd2VyQm91bmRLZXlSYW5nZSgiJ2FhJyIsIHRydWUpOwor
ICAgIGNoZWNrTG93ZXJCb3VuZEtleVJhbmdlKCInYWInIiwgZmFsc2UpOworICAgIGNoZWNrTG93
ZXJCb3VuZEtleVJhbmdlKCInYWMnIik7CisKKyAgICBjaGVja1VwcGVyQm91bmRLZXlSYW5nZSgy
MCwgdHJ1ZSk7CisgICAgY2hlY2tVcHBlckJvdW5kS2V5UmFuZ2UoMjEsIGZhbHNlKTsKKyAgICBj
aGVja1VwcGVyQm91bmRLZXlSYW5nZSgyMik7CisgICAgY2hlY2tVcHBlckJvdW5kS2V5UmFuZ2Uo
MjAuMiwgdHJ1ZSk7CisgICAgY2hlY2tVcHBlckJvdW5kS2V5UmFuZ2UoMjEuMywgZmFsc2UpOwor
ICAgIGNoZWNrVXBwZXJCb3VuZEtleVJhbmdlKDIyLjQpOworICAgIGNoZWNrVXBwZXJCb3VuZEtl
eVJhbmdlKCInYmEnIiwgdHJ1ZSk7CisgICAgY2hlY2tVcHBlckJvdW5kS2V5UmFuZ2UoIidiYici
LCBmYWxzZSk7CisgICAgY2hlY2tVcHBlckJvdW5kS2V5UmFuZ2UoIidiYyciKTsKKworICAgIGNo
ZWNrQm91bmRLZXlSYW5nZSgzMCwgNDApOworICAgIGNoZWNrQm91bmRLZXlSYW5nZSgzMSwgNDEs
IGZhbHNlLCBmYWxzZSk7CisgICAgY2hlY2tCb3VuZEtleVJhbmdlKDMyLCA0MiwgZmFsc2UsIHRy
dWUpOworICAgIGNoZWNrQm91bmRLZXlSYW5nZSgzMywgNDMsIHRydWUsIGZhbHNlKTsKKyAgICBj
aGVja0JvdW5kS2V5UmFuZ2UoMzQsIDQ0LCB0cnVlLCB0cnVlKTsKKworICAgIGNoZWNrQm91bmRL
ZXlSYW5nZSgzMC4xLCA0MC4yKTsKKyAgICBjaGVja0JvdW5kS2V5UmFuZ2UoMzEuMywgNDEuNCwg
ZmFsc2UsIGZhbHNlKTsKKyAgICBjaGVja0JvdW5kS2V5UmFuZ2UoMzIuNSwgNDIuNiwgZmFsc2Us
IHRydWUpOworICAgIGNoZWNrQm91bmRLZXlSYW5nZSgzMy43LCA0My44LCB0cnVlLCBmYWxzZSk7
CisgICAgY2hlY2tCb3VuZEtleVJhbmdlKDM0LjksIDQ0LjAsIHRydWUsIHRydWUpOworCisgICAg
Y2hlY2tCb3VuZEtleVJhbmdlKCInYWFhJyIsICInYWJhJyIsIGZhbHNlLCBmYWxzZSk7CisgICAg
Y2hlY2tCb3VuZEtleVJhbmdlKCInYWFiJyIsICInYWJiJyIpOworICAgIGNoZWNrQm91bmRLZXlS
YW5nZSgiJ2FhYyciLCAiJ2FiYyciLCBmYWxzZSwgZmFsc2UpOworICAgIGNoZWNrQm91bmRLZXlS
YW5nZSgiJ2FhZCciLCAiJ2FiZCciLCBmYWxzZSwgdHJ1ZSk7CisgICAgY2hlY2tCb3VuZEtleVJh
bmdlKCInYWFlJyIsICInYWJlJyIsIHRydWUsIGZhbHNlKTsKKyAgICBjaGVja0JvdW5kS2V5UmFu
Z2UoIidhYWYnIiwgIidhYmYnIiwgdHJ1ZSwgdHJ1ZSk7CisKKyAgICB0cnkgeworICAgICAgICBk
ZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIG9ubHkoe30pIik7CisgICAgICAgIElE
QktleVJhbmdlLm9ubHkoe30pOworICAgICAgICB0ZXN0RmFpbGVkKCJObyBleGNlcHRpb24gdGhy
b3duIik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICB0ZXN0UGFzc2VkKCJDYXVnaHQgZXhj
ZXB0aW9uOiAiICsgZS50b1N0cmluZygpKTsKKyAgICB9CisKKyAgICB0cnkgeworICAgICAgICBk
ZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIHVwcGVyQm91bmQoe30pIik7CisgICAg
ICAgIElEQktleVJhbmdlLnVwcGVyQm91bmQoe30pOworICAgICAgICB0ZXN0RmFpbGVkKCJObyBl
eGNlcHRpb24gdGhyb3duIik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICB0ZXN0UGFzc2Vk
KCJDYXVnaHQgZXhjZXB0aW9uOiAiICsgZS50b1N0cmluZygpKTsKKyAgICB9CisKKyAgICB0cnkg
eworICAgICAgICBkZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIGxvd2VyQm91bmQo
e30pIik7CisgICAgICAgIElEQktleVJhbmdlLmxvd2VyQm91bmQoe30pOworICAgICAgICB0ZXN0
RmFpbGVkKCJObyBleGNlcHRpb24gdGhyb3duIik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAg
ICB0ZXN0UGFzc2VkKCJDYXVnaHQgZXhjZXB0aW9uOiAiICsgZS50b1N0cmluZygpKTsKKyAgICB9
CisKKyAgICB0cnkgeworICAgICAgICBkZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRv
IGJvdW5kKG51bGwsIHt9KSIpOworICAgICAgICBJREJLZXlSYW5nZS5ib3VuZChudWxsLCB7fSk7
CisgICAgICAgIHRlc3RGYWlsZWQoIk5vIGV4Y2VwdGlvbiB0aHJvd24iKTsKKyAgICB9IGNhdGNo
IChlKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkNhdWdodCBleGNlcHRpb246ICIgKyBlLnRvU3Ry
aW5nKCkpOworICAgIH0KKworICAgIHRyeSB7CisgICAgICAgIGRlYnVnKCJQYXNzaW5nIGFuIGlu
dmFsaWQga2V5IGludG8gYm91bmQoe30sbnVsbCkiKTsKKyAgICAgICAgSURCS2V5UmFuZ2UuYm91
bmQoe30sIG51bGwpOworICAgICAgICB0ZXN0RmFpbGVkKCJObyBleGNlcHRpb24gdGhyb3duIik7
CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICB0ZXN0UGFzc2VkKCJDYXVnaHQgZXhjZXB0aW9u
OiAiICsgZS50b1N0cmluZygpKTsKKyAgICB9CisKKyAgICB0cnkgeworICAgICAgICBkZWJ1Zygi
UGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRvIGJvdW5kKHt9LCB7fSkiKTsKKyAgICAgICAgSURC
S2V5UmFuZ2UuYm91bmQoe30sIHt9KTsKKyAgICAgICAgdGVzdEZhaWxlZCgiTm8gZXhjZXB0aW9u
IHRocm93biIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiQ2F1Z2h0
IGV4Y2VwdGlvbjogIiArIGUudG9TdHJpbmcoKSk7CisgICAgfQorCisgICAgZGVidWcoIkxvd2Vy
IGtleSBncmVhdGVyIHRoYW4gaGlnaGVyIGtleSwgYm91bmQoNCwgMykiKTsKKyAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKCJJREJLZXlSYW5nZS5ib3VuZCg0LCAzKSIsICJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5EQVRBX0VSUiIpOworCisgICAgZGVidWcoIkVxdWFsIGtleXMsIGVpdGhlciBvZiB0
aGUgYm91bmRzIGlzIG9wZW4sIGJvdW5kKDQsIDQsIHRydWUsIGZhbHNlKSIpOworICAgIGV2YWxB
bmRFeHBlY3RFeGNlcHRpb24oIklEQktleVJhbmdlLmJvdW5kKDQsIDQsIHRydWUsIGZhbHNlKSIs
ICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworCisgICAgZGVidWcoIkVxdWFsIGtl
eXMsIGVpdGhlciBvZiB0aGUgYm91bmRzIGlzIG9wZW4sIGJvdW5kKDQsIDQsIGZhbHNlLCB0cnVl
KSIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIklEQktleVJhbmdlLmJvdW5kKDQsIDQs
IGZhbHNlLCB0cnVlKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworCisgICAg
ZGVidWcoIkVxdWFsIGtleXMsIGVpdGhlciBvZiB0aGUgYm91bmRzIGlzIG9wZW4sIGJvdW5kKDQs
IDQsIHRydWUsIHRydWUpIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiSURCS2V5UmFu
Z2UuYm91bmQoNCwgNCwgdHJ1ZSwgdHJ1ZSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9F
UlIiKTsKKworICAgIGRlYnVnKCJFcXVhbCBrZXlzLCBub25lIG9mIHRoZSBib3VuZHMgaXMgb3Bl
biwgYm91bmQoNCwgNCwgZmFsc2UsIGZhbHNlKSIpOworICAgIElEQktleVJhbmdlLmJvdW5kKDQs
IDQsIGZhbHNlLCBmYWxzZSk7Cit9CisKK3Rlc3QoKTsKKworZmluaXNoSlNUZXN0KCk7ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL2xpc3Qtb3JkZXJpbmcuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvbGlzdC1vcmRlcmluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzU5OGZk
NzIzNTg2MGVkYTc4YjJmMTcxZWUxNGRiMGMwYzFhY2NmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2xpc3Qtb3JkZXJpbmcuanMKQEAg
LTAsMCArMSw4NCBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlw
dHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1w
b3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IHN0cmluZyBs
aXN0IG9yZGVyaW5nIGluIEluZGV4ZWREQi4iKTsKKwordmFyIGV4cGVjdGVkX29yZGVyID0gWwor
ICAiIiwKKyAgIlx4MDAiLCAvLyAnTlVMTCcgKFUrMDAwMCkKKyAgIjAiLAorICAiMSIsCisgICJB
IiwKKyAgIkIiLAorICAiYSIsCisgICJiIiwKKyAgIlx4N0YiLCAvLyAnREVMRVRFJyAoVSswMDdG
KQorICAiXHhDMCIsIC8vICdMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggR1JBVkUnIChVKzAw
QzApCisgICJceEMxIiwgLy8gJ0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBBQ1VURScgKFUr
MDBDMSkKKyAgIlx4RTAiLCAvLyAnTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBHUkFWRScgKFUr
MDBFMCkKKyAgIlx4RTEiLCAvLyAnTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBBQ1VURScgKFUr
MDBFMSkKKyAgIlx4RkYiLCAvLyAnTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBESUFFUkVTSVMn
IChVKzAwRkYpCisgICJcdTAxMDAiLCAvLyAnTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIE1B
Q1JPTicgKFUrMDEwMCkKKyAgIlx1MTAwMCIsIC8vICdNWUFOTUFSIExFVFRFUiBLQScgKFUrMTAw
MCkKKyAgIlx1RDgzNFx1REQxRSIsIC8vICdNVVNJQ0FMIFNZTUJPTCBHLUNMRUYnIChVKzFEMTFF
KSwgVVRGLTE2IHN1cnJvZ2F0ZSBwYWlycworICAiXHVGRkZEIiAvLyAnUkVQTEFDRU1FTlQgQ0hB
UkFDVEVSJyAoVStGRkZEKQorXTsKK3ZhciBpLCB0bXAsIHBlcm11dGVkX29yZGVyID0gZXhwZWN0
ZWRfb3JkZXIuc2xpY2UoKTsgcGVybXV0ZWRfb3JkZXIucmV2ZXJzZSgpOworZm9yIChpID0gMDsg
aSA8IHBlcm11dGVkX29yZGVyLmxlbmd0aCAtIDI7IGkgKz0gMikgeworICAgIHRtcCA9IHBlcm11
dGVkX29yZGVyW2ldOworICAgIHBlcm11dGVkX29yZGVyW2ldID0gcGVybXV0ZWRfb3JkZXJbaSAr
IDFdOworICAgIHBlcm11dGVkX29yZGVyW2kgKyAxXSA9IHRtcDsKK30KKworZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBkZWJ1ZygiY2hlY2sgdGhh
dCB0aGUgZXhwZWN0ZWQgb3JkZXIgaXMgdGhlIGNhbm9uaWNhbCBKUyBzb3J0IG9yZGVyOiIpOwor
ICAgIGV2YWxBbmRMb2coInNvcnRlZF9vcmRlciA9IGV4cGVjdGVkX29yZGVyLnNsaWNlKCk7IHNv
cnRlZF9vcmRlci5zb3J0KCkiKTsKKyAgICBzaG91bGRCZVRydWUoImFyZUFycmF5c0VxdWFsKHNv
cnRlZF9vcmRlciwgZXhwZWN0ZWRfb3JkZXIpIik7CisgICAgdGVzdFN0b3Jlc0FuZEluZGV4ZXMo
KTsKK30KKworZnVuY3Rpb24gdGVzdFN0b3Jlc0FuZEluZGV4ZXMoKQoreworICAgIGRlYnVnKCIi
KTsKKyAgICBkZWJ1ZygidGVzdFN0b3Jlc0FuZEluZGV4ZXMoKToiKTsKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCdsaXN0LW9yZGVyaW5nJykiKTsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImluZGV4ZWREQi5vcGVuKCdsaXN0LW9yZGVyaW5nJykiKTsKKyAgICAgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgZXZhbEFuZExvZygiZGIgPSByZXF1ZXN0
LnJlc3VsdCIpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkYi52ZXJzaW9u
IiwgIiIpOworICAgICAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24o
JzEnKSIpOworICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7CisgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpIHsKKyAg
ICAgICAgICAgICAgICB0cmFucyA9IHJlcXVlc3QucmVzdWx0OworCisgICAgICAgICAgICAgICAg
ZGVidWcoIiIpOworICAgICAgICAgICAgICAgIGRlYnVnKCJPYmplY3Qgc3RvcmVzOiIpOworICAg
ICAgICAgICAgICAgIHBlcm11dGVkX29yZGVyLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHsKKyAg
ICAgICAgICAgICAgICAgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoIiArIEpT
T04uc3RyaW5naWZ5KG5hbWUpICsiKSIpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAg
ICAgICAgICAgc2hvdWxkQmVUcnVlKCJhcmVBcnJheXNFcXVhbChkYi5vYmplY3RTdG9yZU5hbWVz
LCBleHBlY3RlZF9vcmRlcikiKTsKKworICAgICAgICAgICAgICAgIGRlYnVnKCIiKTsKKyAgICAg
ICAgICAgICAgICBkZWJ1ZygiSW5kZXhlczoiKTsKKyAgICAgICAgICAgICAgICBzdG9yZSA9IGV2
YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICAg
ICAgICAgICAgICBwZXJtdXRlZF9vcmRlci5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7CisgICAg
ICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCIgKyBKU09OLnN0
cmluZ2lmeShuYW1lKSArIiwgJ2tleVBhdGgnKSIpOworICAgICAgICAgICAgICAgIH0pOworCisg
ICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJhcmVBcnJheXNFcXVhbChzdG9yZS5pbmRleE5h
bWVzLCBleHBlY3RlZF9vcmRlcikiKTsKKworICAgICAgICAgICAgICAgIHRyYW5zLm9uY29tcGxl
dGUgPSBmaW5pc2hKU1Rlc3Q7CisgICAgICAgICAgICB9OworICAgICAgICB9OworICAgIH07Cit9
CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvbXV0YXRpbmctY3Vyc29yLmpzIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL211dGF0aW5nLWN1cnNvci5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yN2Q2MWY2Y2M0MGIwNjYwODBhZjExZGU2NTFmMTgzMTE2N2ZhMGNkCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L211dGF0aW5nLWN1cnNvci5qcwpAQCAtMCwwICsxLDEzMiBAQAoraWYgKHRoaXMuaW1wb3J0U2Ny
aXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rl
c2NyaXB0aW9uKCJUZXN0IG11dGF0aW5nIGFuIEluZGV4ZWREQidzIG9iamVjdHN0b3JlIGZyb20g
YSBjdXJzb3IuIik7CisKK3Rlc3QoKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3Zl
VmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9w
ZW4oJ211dGF0aW5nLWN1cnNvcicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3Vj
Y2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30K
KworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIHZhciBkYiA9IGV2YWxBbmRMb2coImRi
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRi
LnNldFZlcnNpb24oJzEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1
Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIHNldFZlcnNpb25TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lv
blN1Y2Nlc3MoKToiKTsKKyAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwor
ICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5v
bmNvbXBsZXRlID0gb3BlbkZvcndhcmRDdXJzb3I7CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9y
ZXMoZGIpOworCisgICAgdmFyIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUg
PSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgIGV2YWxBbmRMb2coIm9iamVj
dFN0b3JlLmFkZCgxLCAxKS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKKyAg
ICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoMiwgMikub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrIik7CisgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKDMsIDMpLm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coIm9iamVj
dFN0b3JlLmFkZCg0LCA0KS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2siKTsKK30K
KworZnVuY3Rpb24gb3BlbkZvcndhcmRDdXJzb3IoKQoreworICAgIGRlYnVnKCJvcGVuRm9yd2Fy
ZEN1cnNvcigpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0
b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgdHJhbnMub25hYm9ydCA9
IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSBmb3J3YXJk
Q3Vyc29yQ29tcGxldGU7CisKKyAgICBzZWxmLm9iamVjdFN0b3JlID0gZXZhbEFuZExvZygidHJh
bnMub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygib2Jq
ZWN0U3RvcmUub3BlbkN1cnNvcigpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmb3J3YXJk
Q3Vyc29yOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
ICAgIHNlbGYuY3Vyc29yU3RlcHMgPSAwOworfQorCitmdW5jdGlvbiBmb3J3YXJkQ3Vyc29yKCkK
K3sKKyAgICBkZWJ1ZygiZm9yd2FyZEN1cnNvcigpIik7CisgICAgc2VsZi5jdXJzb3IgPSBldmVu
dC50YXJnZXQucmVzdWx0OworCisgICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT0gbnVsbCkg
eworICAgICAgICBzaG91bGRCZSgiY3Vyc29yU3RlcHMiLCAiNSIpOworCisgICAgICAgIC8vIExl
dCB0aGUgdHJhbnNhY3Rpb24gZmluaXNoLgorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
ZGVidWcoKytjdXJzb3JTdGVwcyk7CisgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAiY3Vyc29y
U3RlcHMiKTsKKyAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgImN1cnNvclN0ZXBzIik7CisK
KyAgICBpZiAoY3Vyc29yU3RlcHMgPT0gMSkgeworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiZXZlbnQudGFyZ2V0LnNvdXJjZS5hZGQoNSwgNSkiKTsKKyAgICAgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbigpIHsgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCkiKTsgfQor
ICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB9
IGVsc2UgeworICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGludWUoKSIpOworICAgIH0K
K30KKworZnVuY3Rpb24gZm9yd2FyZEN1cnNvckNvbXBsZXRlKCkKK3sKKyAgICBkZWJ1ZygiZm9y
d2FyZEN1cnNvckNvbXBsZXRlKCkiKTsKKyAgICBvcGVuUmV2ZXJzZUN1cnNvcigpCit9CisKK2Z1
bmN0aW9uIG9wZW5SZXZlcnNlQ3Vyc29yKCkKK3sKKyAgICBkZWJ1Zygib3BlblJldmVyc2VDdXJz
b3IoKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZSdd
LCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4
cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gcmV2ZXJzZUN1cnNv
ckNvbXBsZXRlOworCisgICAgc2VsZi5vYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coInRyYW5zLm9i
amVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0
b3JlLm9wZW5DdXJzb3IobnVsbCwgSURCQ3Vyc29yLlBSRVYpIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSByZXZlcnNlQ3Vyc29yOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworICAgIHNlbGYuY3Vyc29yU3RlcHMgPSA2OworfQorCitmdW5jdGlvbiBy
ZXZlcnNlQ3Vyc29yKCkKK3sKKyAgICBkZWJ1ZygicmV2ZXJzZUN1cnNvcigpIik7CisgICAgc2Vs
Zi5jdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OworCisgICAgaWYgKGV2ZW50LnRhcmdldC5y
ZXN1bHQgPT0gbnVsbCkgeworICAgICAgICBzaG91bGRCZSgiY3Vyc29yU3RlcHMiLCAiMCIpOwor
CisgICAgICAgIC8vIExldCB0aGUgdHJhbnNhY3Rpb24gZmluaXNoLgorICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgZGVidWcoLS1jdXJzb3JTdGVwcyk7CisgICAgc2hvdWxkQmUoImN1cnNv
ci5rZXkiLCAiY3Vyc29yU3RlcHMiKTsKKyAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgImN1
cnNvclN0ZXBzIik7CisKKyAgICBpZiAoY3Vyc29yU3RlcHMgPT0gMikgeworICAgICAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiZXZlbnQudGFyZ2V0LnNvdXJjZS5hZGQoMCwgMCkiKTsKKyAgICAg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgZXZhbEFuZExvZygiY3Vyc29yLmNv
bnRpbnVlKCkiKTsgfQorICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKKyAgICB9IGVsc2UgeworICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IuY29udGlu
dWUoKSIpOworICAgIH0KK30KKworZnVuY3Rpb24gcmV2ZXJzZUN1cnNvckNvbXBsZXRlKCkKK3sK
KyAgICBkZWJ1ZygicmV2ZXJzZUN1cnNvckNvbXBsZXRlKCkiKTsKKyAgICBmaW5pc2hKU1Rlc3Qo
KTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0U3RvcmUtcmVxdWlyZWQtYXJndW1l
bnRzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdFN0
b3JlLXJlcXVpcmVkLWFyZ3VtZW50cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZGY4YjcwNWM4MjlhZWRjNjY5
YWIxYWI1MjU2MTJhODZiNjA5OTYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdFN0b3JlLXJlcXVpcmVkLWFyZ3VtZW50cy5q
cwpAQCAtMCwwICsxLDQ0IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0
U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAg
ICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5k
ZXhlZERCIG9iamVjdCBzdG9yZSByZXF1aXJlZCBhcmd1bWVudHMiKTsKKworZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxv
Y2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlv
bikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3Vj
Y2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbign
MScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0
b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKK3sKKyAgICBkZWxldGVB
bGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nKTsiKTsKKyAgICBzaG91bGRUaHJv
dygib2JqZWN0U3RvcmUucHV0KCk7Iik7CisgICAgc2hvdWxkVGhyb3coIm9iamVjdFN0b3JlLmFk
ZCgpOyIpOworICAgIHNob3VsZFRocm93KCJvYmplY3RTdG9yZS5kZWxldGUoKTsiKTsKKyAgICBz
aG91bGRUaHJvdygib2JqZWN0U3RvcmUuZ2V0KCk7Iik7CisgICAgc2hvdWxkVGhyb3coIm9iamVj
dFN0b3JlLmNyZWF0ZUluZGV4KCk7Iik7CisgICAgc2hvdWxkVGhyb3coIm9iamVjdFN0b3JlLmNy
ZWF0ZUluZGV4KCdmb28nKTsiKTsKKyAgICBzaG91bGRUaHJvdygib2JqZWN0U3RvcmUuaW5kZXgo
KTsiKTsKKyAgICBzaG91bGRUaHJvdygib2JqZWN0U3RvcmUuZGVsZXRlSW5kZXgoKTsiKTsKKyAg
ICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9v
YmplY3RzdG9yZS1hdXRvaW5jcmVtZW50LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL29iamVjdHN0b3JlLWF1dG9pbmNyZW1lbnQuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGIx
YjQ5YTMxM2RjZDEwZTM3ZmY2Y2Q3N2JlZmViOGIwNDZjNWRiOQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9vYmplY3RzdG9yZS1hdXRv
aW5jcmVtZW50LmpzCkBAIC0wLDAgKzEsMTkzIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7
CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRp
b24oIlRlc3QgSW5kZXhlZERCJ3MgSURCT2JqZWN0U3RvcmUgYXV0by1pbmNyZW1lbnQgZmVhdHVy
ZS4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ29iamVjdHN0b3JlLWF1
dG9pbmNyZW1lbnQnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0
aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBz
ZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb25T
dWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKKyAgICBzZWxm
LnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAg
c2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4
cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gc2V0VmVyc2lvbkNv
bXBsZXRlZDsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBkZWJ1Zygi
Y3JlYXRlT2JqZWN0U3RvcmUoKToiKTsKKyAgICBzZWxmLnN0b3JlID0gZXZhbEFuZExvZygic3Rv
cmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnU3RvcmVXaXRoS2V5UGF0aCcsIHtrZXlQYXRoOiAn
aWQnLCBhdXRvSW5jcmVtZW50OiB0cnVlfSkiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVP
YmplY3RTdG9yZSgnU3RvcmVXaXRoQXV0b0luY3JlbWVudCcsIHthdXRvSW5jcmVtZW50OiB0cnVl
fSkiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnUGxhaW5PbGRTdG9y
ZScsIHthdXRvSW5jcmVtZW50OiBmYWxzZX0pIik7CisgICAgZXZhbEFuZExvZygiZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ1N0b3JlV2l0aExvbmdLZXlQYXRoJywge2tleVBhdGg6ICdhLmIuYy5pZCcs
IGF1dG9JbmNyZW1lbnQ6IHRydWV9KSIpOworICAgIHZhciBzdG9yZU5hbWVzID0gZXZhbEFuZExv
Zygic3RvcmVOYW1lcyA9IGRiLm9iamVjdFN0b3JlTmFtZXMiKTsKKworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygic3RvcmUubmFtZSIsICJTdG9yZVdpdGhLZXlQYXRoIik7CisgICAgc2hvdWxk
QmUoInN0b3JlLmtleVBhdGgiLCAiJ2lkJyIpOworICAgIHNob3VsZEJlKCJzdG9yZU5hbWVzLmNv
bnRhaW5zKCdTdG9yZVdpdGhLZXlQYXRoJykiLCAidHJ1ZSIpOworICAgIHNob3VsZEJlKCJzdG9y
ZU5hbWVzLmNvbnRhaW5zKCdTdG9yZVdpdGhBdXRvSW5jcmVtZW50JykiLCAidHJ1ZSIpOworICAg
IHNob3VsZEJlKCJzdG9yZU5hbWVzLmNvbnRhaW5zKCdQbGFpbk9sZFN0b3JlJykiLCAidHJ1ZSIp
OworICAgIHNob3VsZEJlKCJzdG9yZU5hbWVzLmxlbmd0aCIsICI0Iik7CisKKyAgICAvLyBMZXQg
dGhlIHNldFZlcnNpb24gdHJhbnNhY3Rpb24gY29tcGxldGUuCit9CisKK2Z1bmN0aW9uIHNldFZl
cnNpb25Db21wbGV0ZWQoKQoreworICAgIGRlYnVnKCJzZXRWZXJzaW9uQ29tcGxldGVkKCk6Iik7
CisKKyAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihb
J1N0b3JlV2l0aEtleVBhdGgnLCAnU3RvcmVXaXRoQXV0b0luY3JlbWVudCcsICdQbGFpbk9sZFN0
b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgdHJhbnMub25hYm9ydCA9
IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSB0ZXN0TG9u
Z0tleVBhdGg7CisKKyAgICBzZWxmLnN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5v
YmplY3RTdG9yZSgnU3RvcmVXaXRoS2V5UGF0aCcpIik7CisKKyAgICBkZWJ1ZygiSW5zZXJ0IGlu
dG8gb2JqZWN0IHN0b3JlIHdpdGggYXV0byBpbmNyZW1lbnQgYW5kIGtleSBwYXRoLCB3aXRoIGtl
eSBpbiB0aGUgb2JqZWN0LiIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQo
e25hbWU6ICdKZWZmZXJzc29uJywgbnVtYmVyOiAnNzAxMCcsIGlkOiAzfSkiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGFkZEplZmZlcnNzb25TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBhZGRKZWZmZXJzc29u
U3VjY2VzcygpCit7CisgICAgZGVidWcoImFkZEplZmZlcnNzb25TdWNjZXNzKCk6Iik7CisgICAg
c2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAiMyIpOworCisgICAgZGVidWcoIkluc2Vy
dCBpbnRvIG9iamVjdCBzdG9yZSB3aXRoIGF1dG8gaW5jcmVtZW50IGFuZCBrZXkgcGF0aCwgd2l0
aG91dCBrZXkgaW4gdGhlIG9iamVjdC4iKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3Rv
cmUuYWRkKHtuYW1lOiAnTGluY29sbicsIG51bWJlcjogJzcwMTInfSkiKTsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGFkZExpbmNvbG5XaXRoSW5qZWN0S2V5U3VjY2VzczsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gYWRkTGlu
Y29sbldpdGhJbmplY3RLZXlTdWNjZXNzKCkKK3sKKyAgICBkZWJ1ZygiYWRkTGluY29sbldpdGhJ
bmplY3RLZXlTdWNjZXNzKCk6Iik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQi
LCAiNCIpOworCisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygic3RvcmUuZ2V0KDQpIik7CisgICAg
cmVzdWx0Lm9uc3VjY2VzcyA9IGdldExpbmNvbG5BZnRlckluamVjdGVkS2V5U3VjY2VzczsKKyAg
ICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biBnZXRMaW5jb2xuQWZ0ZXJJbmplY3RlZEtleVN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJnZXRM
aW5jb2xuQWZ0ZXJJbmplY3RlZEtleVN1Y2Nlc3MoKToiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQubmFtZSIsICJMaW5jb2xuIik7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0Lm51bWJlciIsICI3MDEyIik7Cisg
ICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQuaWQiLCAiNCIpOworCisgICAgc2VsZi5z
dG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ1N0b3JlV2l0aEF1
dG9JbmNyZW1lbnQnKSIpOworICAgIGRlYnVnKCJJbnNlcnQgaW50byBvYmplY3Qgc3RvcmUgd2l0
aCBrZXkgZ2VuIHVzaW5nIGV4cGxpY2l0IGtleSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJzdG9yZS5hZGQoe25hbWU6ICdMaW5jb2xuJywgbnVtYmVyOiAnNzAxMid9LCA1KSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gYWRkTGluY29sbldpdGhFeHBsaWNpdEtleVN1Y2Nlc3M7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0
aW9uIGFkZExpbmNvbG5XaXRoRXhwbGljaXRLZXlTdWNjZXNzKCkKK3sKKyAgICBkZWJ1ZygiYWRk
TGluY29sbldpdGhFeHBsaWNpdEtleVN1Y2Nlc3MoKToiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQu
dGFyZ2V0LnJlc3VsdCIsICI1Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUu
Z2V0KDUpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRMaW5jb2xuU3VjY2VzczsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rp
b24gZ2V0TGluY29sblN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJnZXRMaW5jb2xuU3VjY2Vzcygp
OiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5uYW1l
IiwgIkxpbmNvbG4iKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5y
ZXN1bHQubnVtYmVyIiwgIjcwMTIiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9y
ZS5wdXQoe25hbWU6ICdBYnJhaGFtJywgbnVtYmVyOiAnMjEwNyd9KSIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gcHV0QWJyYWhhbVN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHB1dEFicmFoYW1TdWNjZXNzKCkK
K3sKKyAgICBkZWJ1ZygicHV0QWJyYWhhbVN1Y2Nlc3MoKToiKTsKKyAgICBzaG91bGRCZSgiZXZl
bnQudGFyZ2V0LnJlc3VsdCIsICI2Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3Rv
cmUuZ2V0KDYpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRBYnJhaGFtU3VjY2VzczsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gZ2V0QWJyYWhhbVN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJnZXRBYnJhaGFtU3VjY2Vz
cygpOiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5u
YW1lIiwgIkFicmFoYW0iKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdl
dC5yZXN1bHQubnVtYmVyIiwgIjIxMDciKTsKKworICAgIHNlbGYuc3RvcmUgPSBldmFsQW5kTG9n
KCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdQbGFpbk9sZFN0b3JlJykiKTsKKyAgICBkZWJ1
ZygiVHJ5IGFkZGluZyB3aXRoIG5vIGtleSB0byBvYmplY3Qgc3RvcmUgd2l0aG91dCBhdXRvIGlu
Y3JlbWVudC4iKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5hZGQoe25hbWU6
ICdBZGFtJ30pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7bmFtZTogJ0FkYW0nfSwgMSkiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGFkZEFkYW1TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBhZGRBZGFtU3VjY2VzcygpCit7
CisgICAgZGVidWcoImFkZEFkYW1TdWNjZXNzKCk6Iik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRh
cmdldC5yZXN1bHQiLCAiMSIpOworfQorCitmdW5jdGlvbiB0ZXN0TG9uZ0tleVBhdGgoKQorewor
ICAgIGRlYnVnKCJ0ZXN0TG9uZ0tleVBhdGgoKToiKTsKKyAgICB0cmFucyA9IGV2YWxBbmRMb2co
InRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ1N0b3JlV2l0aExvbmdLZXlQYXRoJywgSURCVHJhbnNh
Y3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0
Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IGZpbmlzaEpTVGVzdDsKKworICAgIHN0
b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnU3RvcmVXaXRoTG9u
Z0tleVBhdGgnKSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe2Zvbzog
J2Jhcid9KSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe2ZvbzogJ2JhcicsIGE6IHt9
fSkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHtmb286ICdiYXInLCBhOiB7Yjoge319
fSkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHtmb286ICdiYXInLCBhOiB7Yjoge2M6
IHt9fX19KSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworICAgIGN1cnNvclJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5vcGVuQ3Vyc29yKCkiKTsK
KyAgICBjdXJzb3JSZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICBldmFsQW5kTG9nKCJleHBlY3RlZCA9IG51bGwiKTsKKyAgICBldmFsQW5kTG9nKCJjb3VudCA9
IDAiKTsKKyAgICBjdXJzb3JSZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgY3Vyc29yID0gY3Vyc29yUmVxdWVzdC5yZXN1bHQ7CisgICAgICAgIGlmICghY3Vyc29yKSB7
CisgICAgICAgICAgICBzaG91bGRCZSgiY291bnQiLCAiNCIpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIGlmIChleHBlY3RlZCA9PT0gbnVsbCkgeworICAgICAgICAg
ICAgZXZhbEFuZExvZygiZXhwZWN0ZWQgPSBjdXJzb3IudmFsdWUuYS5iLmMuaWQgKyAxIik7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLmZvbyIs
ICInYmFyJyIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZS5hLmIuYy5pZCIs
ICJleHBlY3RlZCIpOworICAgICAgICAgICAgZXZhbEFuZExvZygiZXhwZWN0ZWQgPSBjdXJzb3Iu
dmFsdWUuYS5iLmMuaWQgKyAxIik7CisgICAgICAgIH0KKyAgICAgICAgY291bnQrKzsKKyAgICAg
ICAgY3Vyc29yLmNvbnRpbnVlKCk7CisgICAgfTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9vYmplY3RzdG9yZS1jbGVhci5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9vYmplY3RzdG9yZS1jbGVhci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OTQ3YzZj
NzI0MWU3YTI0NTk2ZGVmZmJlNWJlYmUyNDg2YjNhYjRhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29iamVjdHN0b3JlLWNsZWFyLmpz
CkBAIC0wLDAgKzEsMTAyIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0
U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAg
ICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5k
ZXhlZERCJ3Mgd2Via2l0SURCT2JqZWN0U3RvcmUuY2xlYXIoKS4iKTsKKworZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCLm9wZW4oJ29iamVjdHN0b3JlLWNsZWFyJykiKTsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IHN0YXJ0U2V0VmVyc2lvbjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc3RhcnRTZXRWZXJzaW9uKCkKK3sK
KyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4aXN0aW5nOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxldGVFeGlzdGlu
ZygpCit7CisgICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKworICAgIGRl
bGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3Jl
ID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7CisKKyAgICBzZWxm
LmluZGV4ID0gZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZScsICcnKSIp
OworICAgIHNob3VsZEJlVHJ1ZSgic3RvcmUuaW5kZXhOYW1lcy5jb250YWlucygnaW5kZXhOYW1l
JykiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoJ3ZhbHVlJywgJ2tl
eScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVTZWNvbmRPYmplY3RTdG9yZUFu
ZEFkZFZhbHVlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworfQorCitmdW5jdGlvbiBjcmVhdGVTZWNvbmRPYmplY3RTdG9yZUFuZEFkZFZhbHVlKCkKK3sK
KyAgICBvdGhlclN0b3JlID0gZXZhbEFuZExvZygib3RoZXJTdG9yZSA9IGRiLmNyZWF0ZU9iamVj
dFN0b3JlKCdvdGhlclN0b3JlTmFtZScsIG51bGwpIik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygib3RoZXJTdG9yZS5hZGQoJ3ZhbHVlJywgJ2tleScpIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBjbGVhck9iamVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVhck9iamVjdFN0b3JlKCkKK3sKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuY2xlYXIoKSIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gY2xlYXJTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVhclN1Y2Nlc3MoKQoreworICAgIHNob3Vs
ZEJlVW5kZWZpbmVkKCJldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygic3RvcmUub3BlbkN1cnNvcigpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBv
cGVuQ3Vyc29yU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlbkN1cnNvclN1Y2Nlc3MoKQoreworICAgIHNob3Vs
ZEJlTnVsbCgiZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgaW5kZXggPSBldmFsQW5kTG9n
KCJpbmRleCA9IHN0b3JlLmluZGV4KCdpbmRleE5hbWUnKSIpOworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJpbmRleC5vcGVuS2V5Q3Vyc29yKCkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IG9wZW5LZXlDdXJzb3JTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuS2V5Q3Vyc29yU3VjY2VzcygpCit7Cisg
ICAgZGVidWcoIm9wZW5LZXlDdXJzb3JTdWNjZXNzKCk6Iik7CisgICAgc2hvdWxkQmVOdWxsKCJl
dmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHNldFZlcnNpb25D
b21wbGV0ZTsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbkNvbXBsZXRlKCkKK3sKKyAgICB0cmFu
c2FjdGlvbiA9IGV2YWxBbmRMb2coImRiLnRyYW5zYWN0aW9uKFsnb3RoZXJTdG9yZU5hbWUnXSki
KTsKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cisg
ICAgdmFyIG90aGVyU3RvcmUgPSBldmFsQW5kTG9nKCJvdGhlclN0b3JlID0gdHJhbnNhY3Rpb24u
b2JqZWN0U3RvcmUoJ290aGVyU3RvcmVOYW1lJykiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJvdGhlclN0b3JlLmdldCgna2V5JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdl
dFN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Cit9CisKK2Z1bmN0aW9uIGdldFN1Y2Nlc3MoKQoreworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ2YWx1ZSIpOworCisgICAgZmluaXNoSlNUZXN0KCk7
Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3RvcmUtY291bnQu
anMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3RvcmUt
Y291bnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjlkYWUxNzY1NjQxNjgzYTUwZDk2YmNiMTUxMGMyODVmMjM5
NTJmOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9vYmplY3RzdG9yZS1jb3VudC5qcwpAQCAtMCwwICsxLDE0NCBAQAoraWYgKHRoaXMu
aW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7
Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIElEQk9iamVjdFN0b3JlLmNvdW50
KCkuIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdvYmplY3RzdG9yZS1j
b3VudCcpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZGIgPSBldmFs
QW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICAgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICAgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gcHJlcGFyZURhdGFiYXNlOworICAgIH07Cit9CisKK2Z1bmN0aW9uIHByZXBhcmVE
YXRhYmFzZSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJwcmVwYXJpbmcgZGF0YWJh
c2UiKTsKKyAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworCisgICAgZGVs
ZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUg
PSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKKworICAgIGRlYnVn
KCJhZGRpbmcgMCAuLi4gOTkiKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKSB7
CisgICAgICAgIHJlcXVlc3QgPSBzdG9yZS5hZGQoaSwgaSk7CisgICAgICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIH0KKyAgICB0cmFucy5vbmNvbXBs
ZXRlID0gdmVyaWZ5Q291bnQ7Cit9CisKK2Z1bmN0aW9uIHZlcmlmeUNvdW50KCkKK3sKKyAgICBk
ZWJ1ZygiIik7CisgICAgZGVidWcoInZlcmlmeWluZyBjb3VudCB3aXRob3V0IHJhbmdlIik7Cisg
ICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZU5hbWUn
LCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAh
PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwor
ICAgIHRyYW5zLm9uY29tcGxldGUgPSB2ZXJpZnlDb3VudFdpdGhSYW5nZTsKKworICAgIHN0b3Jl
ID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsK
KyAgICBzaG91bGRCZVRydWUoInN0b3JlICE9IG51bGwiKTsKKworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gc3RvcmUuY291bnQoKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24oKSB7CisgICAgICAgICBzaG91bGRCZVRydWUoInR5cGVvZiByZXF1ZXN0LnJlc3VsdCA9PSAn
bnVtYmVyJyIpOworICAgICAgICAgc2hvdWxkQmUoInJlcXVlc3QucmVzdWx0IiwgIjEwMCIpOwor
ICAgICAgICAgLy8gbGV0IHRoZSB0cmFuc2FjdGlvbiBjb21wbGV0ZQorICAgIH07Cit9CisKK2Z1
bmN0aW9uIHZlcmlmeUNvdW50V2l0aFJhbmdlKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVi
dWcoInZlcmlmeWluZyBjb3VudCB3aXRoIHJhbmdlIik7CisgICAgdHJhbnMgPSBldmFsQW5kTG9n
KCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZU5hbWUnLCBJREJUcmFuc2FjdGlvbi5SRUFE
X09OTFkpIik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPSBudWxsIik7CisgICAgdHJhbnMu
b25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxldGUg
PSB2ZXJpZnlDb3VudFdpdGhLZXk7CisKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0g
dHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgc2hvdWxkQmVUcnVlKCJzdG9y
ZSAhPSBudWxsIik7CisKKyAgICB2YXIgdGVzdHMgPSBbCisgICAgICAgIHsgbG93ZXI6IDAsIGxv
d2VyT3BlbjogZmFsc2UsIHVwcGVyOiA5OSwgdXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDEw
MCB9LAorICAgICAgICB7IGxvd2VyOiAwLCBsb3dlck9wZW46IHRydWUsIHVwcGVyOiA5OSwgdXBw
ZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDk5IH0sCisgICAgICAgIHsgbG93ZXI6IDAsIGxvd2Vy
T3BlbjogZmFsc2UsIHVwcGVyOiA5OSwgdXBwZXJPcGVuOiB0cnVlLCBleHBlY3RlZDogOTkgfSwK
KyAgICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiB0cnVlLCB1cHBlcjogOTksIHVwcGVyT3Bl
bjogdHJ1ZSwgZXhwZWN0ZWQ6IDk4IH0sCisgICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3Blbjog
ZmFsc2UsIHVwcGVyOiAxMDAsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiAxMDAgfSwKKyAg
ICAgICAgeyBsb3dlcjogMCwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IDEwMCwgdXBwZXJPcGVu
OiBmYWxzZSwgZXhwZWN0ZWQ6IDEwMCB9LAorICAgICAgICB7IGxvd2VyOiAxMCwgbG93ZXJPcGVu
OiBmYWxzZSwgdXBwZXI6IDEwMCwgdXBwZXJPcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDkwIH0sCisg
ICAgICAgIHsgbG93ZXI6IDAsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiAwLCB1cHBlck9wZW46
IGZhbHNlLCBleHBlY3RlZDogMSB9LAorICAgICAgICB7IGxvd2VyOiA1MDAsIGxvd2VyT3Blbjog
ZmFsc2UsIHVwcGVyOiA1MDAsIHVwcGVyT3BlbjogZmFsc2UsIGV4cGVjdGVkOiAwIH0KKyAgICBd
OworCisgICAgZnVuY3Rpb24gbmV4dFRlc3QoKSB7CisgICAgICAgIGRlYnVnKCIiKTsKKyAgICAg
ICAgZXZhbEFuZExvZygidGVzdCA9ICIgKyBKU09OLnN0cmluZ2lmeSh0ZXN0cy5zaGlmdCgpKSk7
CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gc3RvcmUuY291bnQoSURC
S2V5UmFuZ2UuYm91bmQodGVzdC5sb3dlciwgdGVzdC51cHBlciwgdGVzdC5sb3dlck9wZW4sIHRl
c3QudXBwZXJPcGVuKSkiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2YgcmVxdWVzdC5yZXN1bHQgPT0gJ251bWJl
ciciKTsKKyAgICAgICAgICAgICBzaG91bGRCZSgicmVxdWVzdC5yZXN1bHQiLCBTdHJpbmcodGVz
dC5leHBlY3RlZCkpOworCisgICAgICAgICAgICAgaWYgKHRlc3RzLmxlbmd0aCkgeworICAgICAg
ICAgICAgICAgICBuZXh0VGVzdCgpOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAvLyBv
dGhlcndpc2UgbGV0IHRoZSB0cmFuc2FjdGlvbiBjb21wbGV0ZQorICAgICAgICB9OworICAgIH0K
KworICAgIG5leHRUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHZlcmlmeUNvdW50V2l0aEtleSgpCit7
CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ2ZXJpZnlpbmcgY291bnQgd2l0aCBrZXkiKTsK
KyAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlTmFt
ZScsIElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5z
ICE9IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7
CisgICAgdHJhbnMub25jb21wbGV0ZSA9IGZpbmlzaEpTVGVzdDsKKworICAgIHN0b3JlID0gZXZh
bEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICBz
aG91bGRCZVRydWUoInN0b3JlICE9IG51bGwiKTsKKworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRp
b24oInN0b3JlLmNvdW50KE5hTikiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsK
KyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5jb3VudCh7fSkiLCAiSURCRGF0YWJh
c2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9y
ZS5jb3VudCgvcmVnZXgvKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworCisg
ICAgdmFyIHRlc3RzID0gWworICAgICAgICB7IGtleTogMCwgZXhwZWN0ZWQ6IDEgfSwKKyAgICAg
ICAgeyBrZXk6IDEwMCwgZXhwZWN0ZWQ6IDAgfSwKKyAgICAgICAgeyBrZXk6IG51bGwsIGV4cGVj
dGVkOiAxMDAgfQorICAgIF07CisKKyAgICBmdW5jdGlvbiBuZXh0VGVzdCgpIHsKKyAgICAgICAg
ZGVidWcoIiIpOworICAgICAgICBldmFsQW5kTG9nKCJ0ZXN0ID0gIiArIEpTT04uc3RyaW5naWZ5
KHRlc3RzLnNoaWZ0KCkpKTsKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBzdG9yZS5jb3VudCh0ZXN0LmtleSkiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICBzaG91bGRCZVRydWUoInR5cGVvZiByZXF1ZXN0LnJlc3VsdCA9
PSAnbnVtYmVyJyIpOworICAgICAgICAgICAgc2hvdWxkQmUoInJlcXVlc3QucmVzdWx0IiwgU3Ry
aW5nKHRlc3QuZXhwZWN0ZWQpKTsKKyAgICAgICAgICAgICBpZiAodGVzdHMubGVuZ3RoKSB7Cisg
ICAgICAgICAgICAgICAgIG5leHRUZXN0KCk7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAg
IC8vIG90aGVyd2lzZSBsZXQgdGhlIHRyYW5zYWN0aW9uIGNvbXBsZXRlCisgICAgICAgIH07Cisg
ICAgfQorCisgICAgbmV4dFRlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9vYmplY3RzdG9yZS1jdXJzb3IuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvb2JqZWN0c3RvcmUtY3Vyc29yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyYzAyYWM2MWE2
MzRmYTNjY2ZlNGFkMjRlMDQxYTk4NzQ2YWIyOGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3RvcmUtY3Vyc29yLmpzCkBA
IC0wLDAgKzEsMjI2IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2Ny
aXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBp
bXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhl
ZERCJ3Mgb2JqZWN0U3RvcmUub3BlbkN1cnNvciArIHRoZSBjdXJzb3IgaXQgcHJvZHVjZXMgaW4g
ZGVwdGguIik7CisKKy8vIEluIG9yZGVyIG9mIGhvdyBpdCBzaG91bGQgYmUgc29ydGVkIGJ5IElu
ZGV4ZWREQi4KK3NlbGYudGVzdERhdGEgPSBbCisgICAgMi43MTgyODE4Mjg0NTksCisgICAgMywK
KyAgICAzLjE0MTU5MjY1LAorICAgIDEwLAorICAgIC8vIEZJWE1FOiBEYXRlcy4KKyAgICAiQSBi
aWdnZXIgc3RyaW5nIiwKKyAgICAiVGhlIGJpZ2dlc3QiLAorICAgICJhIGxvdyBzdHJpbmciCitd
OworCitmdW5jdGlvbiBvcGVuRGF0YWJhc2UoKQoreworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJpbmRleGVkREIub3Blbignb2JqZWN0c3RvcmUtY3Vyc29yJykiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IHNldFZlcnNpb247CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb24oKQoreworICAgIHNlbGYuZGIg
PSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBkZWxldGVFeGlzdGluZzsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVsZXRlRXhpc3RpbmcoKQorewor
ICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9y
dCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVz
KGRiKTsKKworICAgIHNlbGYub2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnc29tZU9iamVjdFN0b3JlJykiKTsKKyAgICBzZWxmLm5leHRUb0FkZCA9IDA7Cisg
ICAgYWRkRGF0YSgpOworfQorCitmdW5jdGlvbiBhZGREYXRhKCkKK3sKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCcnLCB0ZXN0RGF0YVtuZXh0VG9BZGRdKSIpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gKytzZWxmLm5leHRUb0FkZCA8IHRlc3REYXRhLmxlbmd0
aCA/IGFkZERhdGEgOiBzY2hlZHVsZVRlc3RzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzY2hlZHVsZVRlc3RzKCkKK3sKKyAg
ICBkZWJ1ZygiU2NoZWR1bGluZyB0ZXN0cy4uLiIpOworICAgIHNlbGYuc2NoZWR1bGVkVGVzdHMg
PSBbXTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRlc3REYXRhLmxlbmd0aDsgKytpKSB7Cisg
ICAgICAgIC8qIGxlZnQgYm91bmQsIGlzIG9wZW4sIHJpZ2h0IGJvdW5kLCBpcyBvcGVuLCBhc2Nl
bmRpbmcgKi8KKyAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwgbnVsbCwg
bnVsbCwgdHJ1ZV0pOworICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCBmYWxzZSwg
bnVsbCwgbnVsbCwgdHJ1ZV0pOworICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtudWxs
LCBudWxsLCBpLCB0cnVlLCB0cnVlXSk7CisgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQo
W251bGwsIG51bGwsIGksIGZhbHNlLCB0cnVlXSk7CisgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVu
c2hpZnQoW2ksIHRydWUsIG51bGwsIG51bGwsIGZhbHNlXSk7CisgICAgICAgIHNjaGVkdWxlZFRl
c3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBudWxsLCBudWxsLCBmYWxzZV0pOworICAgICAgICBzY2hl
ZHVsZWRUZXN0cy51bnNoaWZ0KFtudWxsLCBudWxsLCBpLCB0cnVlLCBmYWxzZV0pOworICAgICAg
ICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtudWxsLCBudWxsLCBpLCBmYWxzZSwgZmFsc2VdKTsK
KyAgICAgICAgZm9yICh2YXIgaiA9IDY7IGogPCB0ZXN0RGF0YS5sZW5ndGg7ICsraikgeworICAg
ICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwgaiwgdHJ1ZSwgdHJ1ZV0p
OworICAgICAgICAgICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgdHJ1ZSwgaiwgZmFsc2Us
IHRydWVdKTsKKyAgICAgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBq
LCB0cnVlLCB0cnVlXSk7CisgICAgICAgICAgICBzY2hlZHVsZWRUZXN0cy51bnNoaWZ0KFtpLCBm
YWxzZSwgaiwgZmFsc2UsIHRydWVdKTsKKyAgICAgICAgICAgIHNjaGVkdWxlZFRlc3RzLnVuc2hp
ZnQoW2ksIHRydWUsIGosIHRydWUsIGZhbHNlXSk7CisgICAgICAgICAgICBzY2hlZHVsZWRUZXN0
cy51bnNoaWZ0KFtpLCB0cnVlLCBqLCBmYWxzZSwgZmFsc2VdKTsKKyAgICAgICAgICAgIHNjaGVk
dWxlZFRlc3RzLnVuc2hpZnQoW2ksIGZhbHNlLCBqLCB0cnVlLCBmYWxzZV0pOworICAgICAgICAg
ICAgc2NoZWR1bGVkVGVzdHMudW5zaGlmdChbaSwgZmFsc2UsIGosIGZhbHNlLCBmYWxzZV0pOwor
ICAgICAgICB9CisgICAgfQorCisgICAgZGVidWcoIlJ1bm5pbmcgdGVzdHMuLi4iKTsKKyAgICBy
dW5OZXh0VGVzdCgpOworfQorCitmdW5jdGlvbiBydW5OZXh0VGVzdCgpCit7CisgICAgaWYgKCFz
Y2hlZHVsZWRUZXN0cy5sZW5ndGgpIHsKKyAgICAgICAgdGVzdE51bGxLZXlSYW5nZSgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgdmFyIHRlc3QgPSBzY2hlZHVsZWRUZXN0cy5wb3Ao
KTsKKyAgICBzZWxmLmxvd2VyID0gdGVzdFswXTsKKyAgICBzZWxmLmxvd2VySXNPcGVuID0gdGVz
dFsxXTsKKyAgICBzZWxmLnVwcGVyID0gdGVzdFsyXTsKKyAgICBzZWxmLnVwcGVySXNPcGVuID0g
dGVzdFszXTsKKyAgICBzZWxmLmFzY2VuZGluZyA9IHRlc3RbNF07CisKKyAgICBzdHIgPSAiTmV4
dCB0ZXN0OiAiOworICAgIGlmIChsb3dlciAhPT0gbnVsbCkgeworICAgICAgICBzdHIgKz0gImxv
d2VyICI7CisgICAgICAgIGlmIChsb3dlcklzT3BlbikKKyAgICAgICAgICAgIHN0ciArPSAib3Bl
biAiOworICAgICAgICBzdHIgKz0gImJvdW5kIGlzICIgKyBsb3dlciArICI7ICI7CisgICAgfQor
ICAgIGlmICh1cHBlciAhPT0gbnVsbCkgeworICAgICAgICBzdHIgKz0gInVwcGVyICI7CisgICAg
ICAgIGlmICh1cHBlcklzT3BlbikKKyAgICAgICAgICAgIHN0ciArPSAib3BlbiAiOworICAgICAg
ICBzdHIgKz0gImJvdW5kIGlzICIgKyB1cHBlciArICI7ICI7CisgICAgfQorICAgIGlmIChhc2Nl
bmRpbmcpCisgICAgICAgIHN0ciArPSAic29ydGVkIGFzY2VuZGluZy4iOworICAgIGVsc2UKKyAg
ICAgICAgc3RyICs9ICJzb3J0ZWQgZGVzY2VuZGluZy4iOworCisgICAgZGVidWcoIiIpOworICAg
IGRlYnVnKHN0cik7CisKKyAgICBpZiAoYXNjZW5kaW5nKSB7CisgICAgICAgIGlmIChsb3dlciAh
PT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKCFsb3dlcklzT3BlbikKKyAgICAgICAgICAgICAg
ICBzZWxmLmV4cGVjdGVkSW5kZXggPSBsb3dlcjsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXggPSBsb3dlcisxOworICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IDA7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
aWYgKHVwcGVyICE9PSBudWxsKSB7CisgICAgICAgICAgICBpZiAoIXVwcGVySXNPcGVuKQorICAg
ICAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IHVwcGVyOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IHVwcGVyLTE7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gdGVzdERhdGEubGVuZ3Ro
LTE7CisgICAgfQorICAgIHRlc3RXaXRoaW5Cb3VuZHMoKTsKKworICAgIGlmICh0ZXN0RGF0YVts
b3dlcl0gPT09IHRlc3REYXRhW3VwcGVyXSAmJiAobG93ZXJJc09wZW4gfHwgdXBwZXJJc09wZW4p
KSB7CisgICAgICAgIGRlYnVnKCJTa2lwcGluZyBpbGxlZ2FsIGtleSByYW5nZS4iKTsKKyAgICAg
ICAgcnVuTmV4dFRlc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZhciBrZXlS
YW5nZTsKKyAgICBpZiAobG93ZXIgIT09IG51bGwgJiYgdXBwZXIgIT09IG51bGwpCisgICAgICAg
IGtleVJhbmdlID0gSURCS2V5UmFuZ2UuYm91bmQodGVzdERhdGFbbG93ZXJdLCB0ZXN0RGF0YVt1
cHBlcl0sIGxvd2VySXNPcGVuLCB1cHBlcklzT3Blbik7CisgICAgZWxzZSBpZiAobG93ZXIgIT09
IG51bGwpCisgICAgICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2UubG93ZXJCb3VuZCh0ZXN0RGF0
YVtsb3dlcl0sIGxvd2VySXNPcGVuKTsKKyAgICBlbHNlCisgICAgICAgIGtleVJhbmdlID0gSURC
S2V5UmFuZ2UudXBwZXJCb3VuZCh0ZXN0RGF0YVt1cHBlcl0sIHVwcGVySXNPcGVuKTsKKworICAg
IHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcihrZXlSYW5nZSwgYXNjZW5kaW5n
ID8gSURCQ3Vyc29yLk5FWFQgOiBJREJDdXJzb3IuUFJFVik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBjdXJzb3JJdGVyYXRpb247CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHRlc3RXaXRoaW5Cb3VuZHMoKQoreworICAgIGlm
IChleHBlY3RlZEluZGV4IDwgMCB8fCB0ZXN0RGF0YS5sZW5ndGggPD0gZXhwZWN0ZWRJbmRleCkK
KyAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0gbnVsbDsKKyAgICBpZiAobG93ZXIgIT09IG51
bGwgJiYgZXhwZWN0ZWRJbmRleCA8IGxvd2VyKQorICAgICAgICBzZWxmLmV4cGVjdGVkSW5kZXgg
PSBudWxsOworICAgIGlmICh1cHBlciAhPT0gbnVsbCAmJiB1cHBlciA8IGV4cGVjdGVkSW5kZXgp
CisgICAgICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IG51bGw7CisgICAgaWYgKGxvd2VyICE9PSBu
dWxsICYmIGxvd2VySXNPcGVuICYmIGV4cGVjdGVkSW5kZXggPD0gbG93ZXIpCisgICAgICAgIHNl
bGYuZXhwZWN0ZWRJbmRleCA9IG51bGw7CisgICAgaWYgKHVwcGVyICE9PSBudWxsICYmIHVwcGVy
SXNPcGVuICYmIHVwcGVyIDw9IGV4cGVjdGVkSW5kZXgpCisgICAgICAgIHNlbGYuZXhwZWN0ZWRJ
bmRleCA9IG51bGw7Cit9CisKK2Z1bmN0aW9uIGN1cnNvckl0ZXJhdGlvbigpCit7CisgICAgaWYg
KGV4cGVjdGVkSW5kZXggPT09IG51bGwpIHsKKyAgICAgICAgc2hvdWxkQmVOdWxsKCJldmVudC50
YXJnZXQucmVzdWx0Iik7CisgICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgaWYgKGV2ZW50LnRhcmdldC5yZXN1bHQgPT09IG51bGwpIHsKKyAgICAgICAg
dGVzdEZhaWxlZCgiZXZlbnQudGFyZ2V0LnJlc3VsdCBzaG91bGQgbm90IGJlIG51bGwuIik7Cisg
ICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaG91
bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAidGVzdERhdGFbIiArIGV4cGVjdGVkSW5k
ZXggKyAiXSIpOworICAgIHNlbGYuZXhwZWN0ZWRJbmRleCA9IGFzY2VuZGluZyA/IGV4cGVjdGVk
SW5kZXgrMSA6IGV4cGVjdGVkSW5kZXgtMTsKKyAgICB0ZXN0V2l0aGluQm91bmRzKCk7CisKKyAg
ICBldmVudC50YXJnZXQucmVzdWx0LmNvbnRpbnVlKCk7Cit9CisKK3NlbGYubnVsbEtleVJhbmdl
U3RlcCA9IDA7CitmdW5jdGlvbiB0ZXN0TnVsbEtleVJhbmdlKCkKK3sKKyAgICBzZWxmLmxvd2Vy
ID0gMDsKKyAgICBzZWxmLmxvd2VySXNPcGVuID0gZmFsc2U7CisgICAgc2VsZi51cHBlciA9IHRl
c3REYXRhLmxlbmd0aC0xOworICAgIHNlbGYudXBwZXJJc09wZW4gPSBmYWxzZTsKKworICAgIHN0
ciA9ICJOZXh0IHRlc3Q6IG51bGwga2V5IHBhdGggIjsKKyAgICBpZiAoc2VsZi5udWxsS2V5UmFu
Z2VTdGVwID09IDApIHsKKyAgICAgICAgc3RyICs9ICJzb3J0ZWQgYXNjZW5kaW5nLiI7CisgICAg
ICAgIHNlbGYuYXNjZW5kaW5nID0gdHJ1ZTsKKyAgICAgICAgc2VsZi5leHBlY3RlZEluZGV4ID0g
bG93ZXI7CisgICAgICAgIHNlbGYubnVsbEtleVJhbmdlU3RlcCA9IDE7CisgICAgfSBlbHNlIGlm
IChzZWxmLm51bGxLZXlSYW5nZVN0ZXAgPT0gMSkgeworICAgICAgICBzdHIgKz0gInNvcnRlZCBk
ZXNjZW5kaW5nLiI7CisgICAgICAgIHNlbGYuYXNjZW5kaW5nID0gZmFsc2U7CisgICAgICAgIHNl
bGYuZXhwZWN0ZWRJbmRleCA9IHVwcGVyOworICAgICAgICBzZWxmLm51bGxLZXlSYW5nZVN0ZXAg
PSAyOworICAgIH0gZWxzZSB7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKHN0cik7CisKKyAgICB2YXIg
cmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IobnVsbCwgYXNjZW5kaW5nID8gSURCQ3Vy
c29yLk5FWFQgOiBJREJDdXJzb3IuUFJFVik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJz
b3JJdGVyYXRpb247CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Cit9CisKK3JlbW92ZVZlbmRvclByZWZpeGVzKCk7CitvcGVuRGF0YWJhc2UoKTsgLy8gVGhl
IGZpcnN0IHN0ZXAuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvb2JqZWN0c3RvcmUtcmVtb3Zlb2JqZWN0c3RvcmUuanMgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2JqZWN0c3RvcmUtcmVtb3Zlb2JqZWN0c3RvcmUu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uODM5ODQ3NTAxNmJkMTE1YTlmM2VmMjMwYTBjYmI4M2NjMmQyMGMxZAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9vYmplY3RzdG9yZS1yZW1vdmVvYmplY3RzdG9yZS5qcwpAQCAtMCwwICsxLDk3IEBACitpZiAo
dGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQu
anMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mgd2Via2l0SURCT2JqZWN0
U3RvcmUuZGVsZXRlT2JqZWN0U3RvcmUoKS4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAg
cmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhl
ZERCLm9wZW4oJ29iamVjdHN0b3JlLXJlbW92ZW9iamVjdHN0b3JlJykiKTsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IHN0YXJ0U2V0VmVyc2lvbjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gc3RhcnRTZXRWZXJzaW9uKCkKK3sK
KyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4aXN0aW5nOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxldGVFeGlzdGlu
ZygpCit7CisgICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKworICAgIGRl
bGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3Jl
ID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7CisKKyAgICBzZWxm
LmluZGV4ID0gZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZScsICcnKSIp
OworICAgIHNob3VsZEJlVHJ1ZSgic3RvcmUuaW5kZXhOYW1lcy5jb250YWlucygnaW5kZXhOYW1l
JykiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoJ3ZhbHVlJywgJ2tl
eScpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cisg
ICAgdHJhbnMub25jb21wbGV0ZSA9IGdldFZhbHVlOworfQorCitmdW5jdGlvbiBnZXRWYWx1ZSgp
Cit7CisgICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJkYi50cmFuc2FjdGlvbihbJ3N0b3Jl
TmFtZSddKSIpOworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKKyAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9i
amVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0
b3JlLmdldCgna2V5JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEluZGV4OworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biBhZGRJbmRleCgpCit7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQu
cmVzdWx0IiwgInZhbHVlIik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVy
c2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlT2Jq
ZWN0U3RvcmU7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZU9iamVjdFN0b3JlKCkKK3sKKyAgICBzZWxmLnRyYW5zID0g
ZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVU
cnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJv
cnRDYWxsYmFjazsKKworICAgIGV2YWxBbmRMb2coImRiLmRlbGV0ZU9iamVjdFN0b3JlKCdzdG9y
ZU5hbWUnKSIpOworICAgIGNyZWF0ZU9iamVjdFN0b3JlQWdhaW4oKTsKK30KKworZnVuY3Rpb24g
Y3JlYXRlT2JqZWN0U3RvcmVBZ2FpbigpCit7CisgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IGdl
dFZhbHVlQWdhaW47Cit9CisKK2Z1bmN0aW9uIGdldFZhbHVlQWdhaW4oKQoreworICAgIHRyYW5z
YWN0aW9uID0gZXZhbEFuZExvZygiZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSkiKTsKKyAg
ICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgdmFy
IHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3Rv
cmVOYW1lJykiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5nZXQoJ2tleScp
Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB2ZXJpZnlOb3RGb3VuZDsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gdmVyaWZ5
Tm90Rm91bmQoKQoreworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgInVuZGVm
aW5lZCIpOworICAgIHNob3VsZEJlRmFsc2UoImV2ZW50LnRhcmdldC5zb3VyY2UuaW5kZXhOYW1l
cy5jb250YWlucygnaW5kZXhOYW1lJykiKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0
ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29kZC1zdHJpbmdzLmpzIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29kZC1zdHJpbmdzLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQzMWM1MGVmZmJiZmFlMmI2NDdjNmU0MTdlMjM5NWFkZDI0OWUyNDgKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvb2RkLXN0cmluZ3Mu
anMKQEAgLTAsMCArMSwxMDEgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBv
cnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwor
ICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJ
bmRleGVkREIgb2RkIHZhbHVlIGRhdGF0eXBlcyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisgICAgdGVzdERhdGEgPSBbeyBkZXNjcmlwdGlv
bjogJ251bGwnLCAgICAgICAgICAgICAgIG5hbWU6ICdcdTAwMDAnIH0sCisgICAgICAgICAgICAg
ICAgeyBkZXNjcmlwdGlvbjogJ2ZhaWh1JywgICAgICAgICAgICAgIG5hbWU6ICdcdWQ4MDBcdWRm
NDYnIH0sCisgICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ3VucGFpcmVkIHN1cnJvZ2F0
ZScsIG5hbWU6ICdcdWQ4MDAnIH0sCisgICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ2Zm
ZmUnLCAgICAgICAgICAgICAgIG5hbWU6ICdcdWZmZmUnIH0sCisgICAgICAgICAgICAgICAgeyBk
ZXNjcmlwdGlvbjogJ2ZmZmYnLCAgICAgICAgICAgICAgIG5hbWU6ICdcdWZmZmYnIH0sCisgICAg
ICAgICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ2xpbmUgc2VwYXJhdG9yJywgICAgIG5hbWU6ICdc
dTIwMjgnIH0KKyAgICBdOworICAgIG5leHRUb09wZW4gPSAwOworICAgIG9wZW5OZXh0RGF0YWJh
c2UoKTsKK30KKworZnVuY3Rpb24gb3Blbk5leHREYXRhYmFzZSgpCit7CisgICAgZGVidWcoIm9w
ZW5pbmcgYSBkYXRhYmFzZSBuYW1lZCAiICsgdGVzdERhdGFbbmV4dFRvT3Blbl0uZGVzY3JpcHRp
b24pOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbih0ZXN0RGF0YVtu
ZXh0VG9PcGVuXS5uYW1lLCB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5kZXNjcmlwdGlvbikiKTsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7
CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gYWRkQUtleTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gYWRkQUtleSgpCit7CisgICAgZGVs
ZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygi
b2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSh0ZXN0RGF0YVtuZXh0VG9PcGVuXS5u
YW1lKTsiKTsKKyAgICBrZXkgPSBldmFsQW5kTG9nKCJrZXkgPSB0ZXN0RGF0YVtuZXh0VG9PcGVu
XS5uYW1lIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9y
ZS5hZGQoa2V5LCBrZXkpOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xvc2VEYXRhYmFz
ZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKwor
ZnVuY3Rpb24gY2xvc2VEYXRhYmFzZSgpCit7CisgICAgZXZhbEFuZExvZygiZGIuY2xvc2UoKSIp
OworICAgIGRlYnVnKCIiKTsKKyAgICBpZiAoKytuZXh0VG9PcGVuIDwgdGVzdERhdGEubGVuZ3Ro
KSB7CisgICAgICAgIG9wZW5OZXh0RGF0YWJhc2UoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBu
ZXh0VG9PcGVuID0gMDsKKyAgICAgICAgdmVyaWZ5TmV4dERhdGFiYXNlKCk7CisgICAgfQorfQor
CitmdW5jdGlvbiB2ZXJpZnlOZXh0RGF0YWJhc2UoKQoreworICAgIGRlYnVnKCJyZW9wZW5pbmcg
YSBkYXRhYmFzZSBuYW1lZCAiICsgdGVzdERhdGFbbmV4dFRvT3Blbl0uZGVzY3JpcHRpb24pOwor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbih0ZXN0RGF0YVtuZXh0VG9P
cGVuXS5uYW1lLCB0ZXN0RGF0YVtuZXh0VG9PcGVuXS5kZXNjcmlwdGlvbikiKTsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IG9wZW5TdWNjZXNzMjsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MyKCkKK3sKKyAg
ICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBnZXRBS2V5OworfQorCitmdW5jdGlvbiBnZXRBS2V5KCkKK3sKKyAgICB0cmFucyA9
IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIG9iamVjdFN0
b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSh0ZXN0RGF0
YVtuZXh0VG9PcGVuXS5uYW1lKTsiKTsKKyAgICBrZXkgPSBldmFsQW5kTG9nKCJrZXkgPSB0ZXN0
RGF0YVtuZXh0VG9PcGVuXS5uYW1lIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVl
c3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuQ3Vy
c29yU3VjY2VzczsKK30KKworZnVuY3Rpb24gb3BlbkN1cnNvclN1Y2Nlc3MoKQoreworICAgIGN1
cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAg
c2hvdWxkQmUoImN1cnNvci5rZXkiLCAidGVzdERhdGFbbmV4dFRvT3Blbl0ubmFtZSIpOworICAg
IHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAidGVzdERhdGFbbmV4dFRvT3Blbl0ubmFtZSIpOwor
ICAgIGlmICgrK25leHRUb09wZW4gPCB0ZXN0RGF0YS5sZW5ndGgpIHsKKyAgICAgICAgZGVidWco
IiIpOworICAgICAgICB2ZXJpZnlOZXh0RGF0YWJhc2UoKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvb3Blbi1jbG9zZS12ZXJzaW9uLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL29wZW4tY2xvc2UtdmVyc2lvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMjNlMWQ4Yjky
OTUyZjgyZjg1ZDU5ZGEyYTMyNWUwMWExMTEzMzNiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4tY2xvc2UtdmVyc2lvbi5qcwpA
QCAtMCwwICsxLDI4MyBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNj
cmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAg
aW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IGludGVy
bGVhdmVkIG9wZW4vY2xvc2Uvc2V0VmVyc2lvbiBjYWxscyBpbiB2YXJpb3VzIHBlcm11dGF0aW9u
cyIpOworCitmdW5jdGlvbiBDb25uZWN0aW9uKGlkKSB7CisgICAgaWQgPSBTdHJpbmcoaWQpOwor
ICAgIHZhciB0aGF0ID0gdGhpczsKKyAgICB0aGlzLm9wZW4gPSBmdW5jdGlvbihvcHRzKSB7Cisg
ICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5vcGVuJyIpKTsK
KyAgICAgICAgdmFyIHJlcSA9IGluZGV4ZWREQi5vcGVuKHNlbGYuZGJuYW1lKTsKKyAgICAgICAg
cmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxLm9uc3Vj
Y2VzcyA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgICAgICB0aGF0LmhhbmRsZSA9IGUudGFyZ2V0
LnJlc3VsdDsKKyAgICAgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlk
ICsgIi5vcGVuLm9uc3VjY2VzcyciKSk7CisgICAgICAgICAgICB0aGF0LmhhbmRsZS5vbnZlcnNp
b25jaGFuZ2UgPSBmdW5jdGlvbihlKSB7CisgICAgICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNo
KGV2YWxBbmRMb2coIiciICsgaWQgKyAiLm9udmVyc2lvbmNoYW5nZSciKSk7CisgICAgICAgICAg
ICAgICAgaWYgKG9wdHMgJiYgb3B0cy5vbnZlcnNpb24pIHsgb3B0cy5vbnZlcnNpb24uY2FsbCh0
aGF0KTsgfQorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGlmIChvcHRzICYmIG9wdHMub25z
dWNjZXNzKSB7IG9wdHMub25zdWNjZXNzLmNhbGwodGhhdCk7IH0KKyAgICAgICAgfTsKKyAgICB9
OworCisgICAgdGhpcy5jbG9zZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICBzZWxmLnN0ZXBzLnB1
c2goZXZhbEFuZExvZygiJyIgKyBpZCArICIuY2xvc2UnIikpOworICAgICAgICB0aGlzLmhhbmRs
ZS5jbG9zZSgpOworICAgIH07CisKKyAgICB0aGlzLnNldFZlcnNpb24gPSBmdW5jdGlvbihvcHRz
KSB7CisgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5zZXRW
ZXJzaW9uJyIpKTsKKyAgICAgICAgdmFyIHJlcSA9IHRoaXMuaGFuZGxlLnNldFZlcnNpb24oU3Ry
aW5nKHNlbGYudmVyKyspKTsKKyAgICAgICAgcmVxLm9uYWJvcnQgPSBmdW5jdGlvbiAoZSkgewor
ICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsgaWQgKyAiLnNldFZl
cnNpb24ub25hYm9ydCciKSk7CisgICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLm9uYWJvcnQp
IHsgb3B0cy5vbmFib3J0LmNhbGwodGhhdCk7IH0KKyAgICAgICAgfTsKKyAgICAgICAgcmVxLm9u
YmxvY2tlZCA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgICAgICBzZWxmLnN0ZXBzLnB1c2goZXZh
bEFuZExvZygiJyIgKyBpZCArICIuc2V0VmVyc2lvbi5vbmJsb2NrZWQnIikpOworICAgICAgICAg
ICAgaWYgKG9wdHMgJiYgb3B0cy5vbmJsb2NrZWQpIHsgb3B0cy5vbmJsb2NrZWQuY2FsbCh0aGF0
KTsgfQorICAgICAgICB9OworICAgICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsK
KyAgICAgICAgICAgIHNlbGYuc3RlcHMucHVzaChldmFsQW5kTG9nKCInIiArIGlkICsgIi5zZXRW
ZXJzaW9uLm9uc3VjY2VzcyciKSk7CisgICAgICAgICAgICBpZiAodGhhdC5oYW5kbGUub2JqZWN0
U3RvcmVOYW1lcy5jb250YWlucygidGVzdC1zdG9yZSIgKyBzZWxmLnZlcikpIHsKKyAgICAgICAg
ICAgICAgICB0aGF0LmhhbmRsZS5kZWxldGVPYmplY3RTdG9yZSgidGVzdC1zdG9yZSIgKyBzZWxm
LnZlcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2YXIgc3RvcmUgPSB0aGF0LmhhbmRs
ZS5jcmVhdGVPYmplY3RTdG9yZSgidGVzdC1zdG9yZSIgKyBzZWxmLnZlcik7CisgICAgICAgICAg
ICB2YXIgY291bnQgPSAwOworICAgICAgICAgICAgZG9fYXN5bmNfcHV0cygpOyAvLyBLZWVwIHRo
aXMgdHJhbnNhY3Rpb24gcnVubmluZyBmb3IgYSB3aGlsZQorICAgICAgICAgICAgZnVuY3Rpb24g
ZG9fYXN5bmNfcHV0cygpIHsKKyAgICAgICAgICAgICAgICB2YXIgcmVxID0gc3RvcmUucHV0KGNv
dW50LCBjb3VudCk7CisgICAgICAgICAgICAgICAgcmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICAgICAgICAgICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUp
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCsrY291bnQgPCAxMCkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgZG9fYXN5bmNfcHV0cygpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIici
ICsgaWQgKyAiLnNldFZlcnNpb24udHJhbnNhY3Rpb24tY29tcGxldGUnIikpOworICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5vbnN1Y2Nlc3MpIHsgb3B0cy5vbnN1Y2Nl
c3MuY2FsbCh0aGF0KTsgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
fTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgcmVxLm9uZXJyb3IgPSBmdW5j
dGlvbiAoZSkgeworICAgICAgICAgICAgc2VsZi5zdGVwcy5wdXNoKGV2YWxBbmRMb2coIiciICsg
aWQgKyAiLnNldFZlcnNpb24ub25lcnJvciciKSk7CisgICAgICAgICAgICBpZiAob3B0cyAmJiBv
cHRzLm9uZXJyb3IpIHsgb3B0cy5vbmVycm9yLmNhbGwodGhhdCk7IH0KKyAgICAgICAgfTsKKyAg
ICB9OworfQorCisvLyBydW4gYSBzZXJpZXMgb2Ygc3RlcHMgdGhhdCB0YWtlIGEgY29udGludWF0
aW9uIGZ1bmN0aW9uCitmdW5jdGlvbiBydW5TdGVwcyhjb21tYW5kcykgeworICAgIGlmIChjb21t
YW5kcy5sZW5ndGgpIHsKKyAgICAgICAgdmFyIGNvbW1hbmQgPSBjb21tYW5kcy5zaGlmdCgpOwor
ICAgICAgICBjb21tYW5kKGZ1bmN0aW9uKCkgeyBydW5TdGVwcyhjb21tYW5kcyk7IH0pOworICAg
IH0KK30KKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwor
ICAgIHRlc3QxKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QxKCkgeworICAgIGRlYnVnKCIiKTsKKyAg
ICBkZWJ1ZygiVEVTVDogc2V0VmVyc2lvbiBibG9ja2VkIG9uIG9wZW4gaGFuZGxlcyIpOworICAg
IGV2YWxBbmRMb2coInNlbGYuZGJuYW1lID0gJ3Rlc3QxJzsgc2VsZi52ZXIgPSAxOyBzZWxmLnN0
ZXBzID0gW10iKTsKKyAgICB2YXIgaDEgPSBuZXcgQ29ubmVjdGlvbigiaDEiKTsKKyAgICB2YXIg
aDIgPSBuZXcgQ29ubmVjdGlvbigiaDIiKTsKKyAgICBydW5TdGVwcyhbZnVuY3Rpb24oZG9OZXh0
KSB7IGgxLm9wZW4oe29uc3VjY2VzczogZG9OZXh0fSk7IH0sCisgICAgICAgICBmdW5jdGlvbihk
b05leHQpIHsgaDIub3Blbih7b25zdWNjZXNzOiBkb05leHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9udmVyc2lvbjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZWJ1ZygiICAgIGgyIGNsb3NpbmcsIGJ1dCBub3QgaW1tZWRpYXRl
bHkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IGgyLmNsb3NlKCk7IH0sIDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9fSk7IH0sCisgICAgICAgICBmdW5jdGlvbihkb05leHQpIHsgaDEuc2V0VmVyc2lvbih7
b25zdWNjZXNzOiBmaW5pc2hUZXN0fSk7IH0sCisgICAgICAgICBdKTsKKyAgICBmdW5jdGlvbiBm
aW5pc2hUZXN0KCkgeworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNlbGYuc3RlcHMu
dG9TdHJpbmcoKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImgxLm9wZW4iLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5vcGVuLm9uc3VjY2VzcyIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLm9wZW4iLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJoMi5vcGVuLm9uc3VjY2VzcyIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImgxLnNldFZlcnNpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJoMi5vbnZlcnNpb25jaGFuZ2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJo
MS5zZXRWZXJzaW9uLm9uYmxvY2tlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImgyLmNsb3NlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lv
bi5vbnN1Y2Nlc3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJz
aW9uLnRyYW5zYWN0aW9uLWNvbXBsZXRlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF0udG9TdHJpbmcoKSk7CisgICAgICAgIHRlc3QyKCk7CisgICAgfQorfQorCitmdW5jdGlvbiB0
ZXN0MigpIHsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRFU1Q6IHNldFZlcnNpb24gbm90
IGJsb2NrZWQgaWYgaGFuZGxlIGNsb3NlZCBpbW1lZGlhdGVseSIpOworICAgIGV2YWxBbmRMb2co
InNlbGYuZGJuYW1lID0gJ3Rlc3QyJzsgc2VsZi52ZXIgPSAxOyBzZWxmLnN0ZXBzID0gW10iKTsK
KyAgICB2YXIgaDEgPSBuZXcgQ29ubmVjdGlvbigiaDEiKTsKKyAgICB2YXIgaDIgPSBuZXcgQ29u
bmVjdGlvbigiaDIiKTsKKyAgICBydW5TdGVwcyhbZnVuY3Rpb24oZG9OZXh0KSB7IGgxLm9wZW4o
e29uc3VjY2VzczogZG9OZXh0fSk7IH0sCisgICAgICAgICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkg
eyBoMi5vcGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9udmVyc2lvbjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoIiAgICBoMiBjbG9zaW5nIGltbWVk
aWF0ZWx5Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aDIuY2xvc2UoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19
KTsgfSwKKyAgICAgICAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGgxLnNldFZlcnNpb24oe29u
c3VjY2VzczogZG9OZXh0fSk7IH0sCisgICAgICAgICAgICAgIGZpbmlzaFRlc3QKKyAgICAgICAg
ICAgICAgXSk7CisKKyAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgeworICAgICAgICBkZWJ1Zygi
Tk9URTogV2lsbCBGQUlMIHdpdGggZXh0cmEgYm9ndXMgaDEuc2V0VmVyc2lvbi5vbmJsb2NrZWQg
c3RlcDsgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMTMwIik7Cisg
ICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic2VsZi5zdGVwcy50b1N0cmluZygpIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiaDEub3BlbiIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImgxLm9wZW4ub25zdWNjZXNzIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiaDIub3BlbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgy
Lm9wZW4ub25zdWNjZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0
VmVyc2lvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLm9udmVyc2lvbmNo
YW5nZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLmNsb3NlIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0VmVyc2lvbi5vbnN1Y2Nlc3MiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLnRyYW5zYWN0aW9uLWNv
bXBsZXRlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udG9TdHJpbmcoKSk7Cisg
ICAgICAgIHRlc3QzKCk7CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0MygpIHsKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoIlRFU1Q6IG9wZW4gYW5kIHNldFZlcnNpb24gYmxvY2tlZCBpZiBh
IFZFUlNJT05fQ0hBTkdFIHRyYW5zYWN0aW9uIGlzIHJ1bm5pbmcgLSBjbG9zZSB3aGVuIGJsb2Nr
ZWQiKTsKKyAgICBldmFsQW5kTG9nKCJzZWxmLmRibmFtZSA9ICd0ZXN0Myc7IHNlbGYudmVyID0g
MTsgc2VsZi5zdGVwcyA9IFtdIik7CisgICAgdmFyIGgxID0gbmV3IENvbm5lY3Rpb24oImgxIik7
CisgICAgdmFyIGgyID0gbmV3IENvbm5lY3Rpb24oImgyIik7CisgICAgdmFyIGgzID0gbmV3IENv
bm5lY3Rpb24oImgzIik7CisgICAgcnVuU3RlcHMoW2Z1bmN0aW9uKGRvTmV4dCkgeyBoMS5vcGVu
KHtvbnN1Y2Nlc3M6IGRvTmV4dH0pOyB9LAorICAgICAgICAgICAgICBmdW5jdGlvbihkb05leHQp
IHsgaDIub3Blbih7b25zdWNjZXNzOiBkb05leHR9KTsgfSwKKyAgICAgICAgICAgICAgZnVuY3Rp
b24oZG9OZXh0KSB7IGgxLnNldFZlcnNpb24oKTsgZG9OZXh0KCk7IH0sCisgICAgICAgICAgICAg
IGZ1bmN0aW9uKGRvTmV4dCkgeyBoMi5zZXRWZXJzaW9uKHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uYmxvY2tlZDogZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVi
dWcoIiAgICBoMiBibG9ja2VkIHNvIGNsb3NpbmciKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoMi5jbG9zZSgpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvTmV4dCgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0pOyB9LAor
ICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgaDMub3Blbih7b25zdWNjZXNzOiBmaW5pc2hUZXN0
fSk7fQorICAgICAgICAgICAgICBdKTsKKworICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7Cisg
ICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic2VsZi5zdGVwcy50b1N0cmluZygpIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiaDEub3BlbiIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImgxLm9wZW4ub25zdWNjZXNzIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiaDIub3BlbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgy
Lm9wZW4ub25zdWNjZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0
VmVyc2lvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLnNldFZlcnNpb24i
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5vbnZlcnNpb25jaGFuZ2UiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLm9uYmxvY2tlZCIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLm9udmVyc2lvbmNoYW5nZSIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLnNldFZlcnNpb24ub25ibG9ja2VkIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIuY2xvc2UiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJoMy5vcGVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiaDIuc2V0VmVyc2lvbi5vbmVycm9yIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiaDEuc2V0VmVyc2lvbi5vbnN1Y2Nlc3MiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJoMS5zZXRWZXJzaW9uLnRyYW5zYWN0aW9uLWNvbXBsZXRlIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiaDMub3Blbi5vbnN1Y2Nlc3MiCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXS50b1N0cmluZygpKTsKKyAgICAgICAgdGVzdDQoKTsKKyAgICB9Cit9
CisKK2Z1bmN0aW9uIHRlc3Q0KCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVEVTVDog
b3BlbiBhbmQgc2V0VmVyc2lvbiBibG9ja2VkIGlmIGEgVkVSU0lPTl9DSEFOR0UgdHJhbnNhY3Rp
b24gaXMgcnVubmluZyAtIGp1c3QgY2xvc2UiKTsKKyAgICBldmFsQW5kTG9nKCJzZWxmLmRibmFt
ZSA9ICd0ZXN0NCc7IHNlbGYudmVyID0gMTsgc2VsZi5zdGVwcyA9IFtdIik7CisgICAgdmFyIGgx
ID0gbmV3IENvbm5lY3Rpb24oImgxIik7CisgICAgdmFyIGgyID0gbmV3IENvbm5lY3Rpb24oImgy
Iik7CisgICAgdmFyIGgzID0gbmV3IENvbm5lY3Rpb24oImgzIik7CisgICAgcnVuU3RlcHMoW2Z1
bmN0aW9uKGRvTmV4dCkgeyBoMS5vcGVuKHtvbnN1Y2Nlc3M6IGRvTmV4dH0pOyB9LAorICAgICAg
ICAgICAgICBmdW5jdGlvbihkb05leHQpIHsgaDIub3Blbih7b25zdWNjZXNzOiBkb05leHR9KTsg
fSwKKyAgICAgICAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGgxLnNldFZlcnNpb24oKTsgZG9O
ZXh0KCk7IH0sCisgICAgICAgICAgICAgIGZ1bmN0aW9uKGRvTmV4dCkgeyBoMy5vcGVuKHtvbnN1
Y2Nlc3M6IGZpbmlzaFRlc3R9KTsgZG9OZXh0KCk7IH0sCisgICAgICAgICAgICAgIGZ1bmN0aW9u
KGRvTmV4dCkgeyBoMi5jbG9zZSgpOyB9LAorICAgICAgICAgICAgICBdKTsKKworICAgIGZ1bmN0
aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgICAgIGRlYnVnKCJOT1RFOiBXaWxsIEZBSUwgd2l0aCBl
eHRyYSBib2d1cyBoMS5zZXRWZXJzaW9uLm9uYmxvY2tlZCBzdGVwOyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzExMzAiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJzZWxmLnN0ZXBzLnRvU3RyaW5nKCkiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgWyJoMS5vcGVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEub3Bl
bi5vbnN1Y2Nlc3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5vcGVuIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDIub3Blbi5vbnN1Y2Nlc3MiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiaDMub3BlbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImgyLmNsb3NlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaDEuc2V0
VmVyc2lvbi5vbnN1Y2Nlc3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5z
ZXRWZXJzaW9uLnRyYW5zYWN0aW9uLWNvbXBsZXRlIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiaDMub3Blbi5vbnN1Y2Nlc3MiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXS50b1N0cmluZygpKTsKKyAgICAgICAgdGVzdDUoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9u
IHRlc3Q1KCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVEVTVDogb3BlbiBibG9ja2Vk
IGlmIGEgVkVSU0lPTl9DSEFOR0UgdHJhbnNhY3Rpb24gaXMgcnVubmluZyIpOworICAgIGV2YWxB
bmRMb2coInNlbGYuZGJuYW1lID0gJ3Rlc3Q1Jzsgc2VsZi52ZXIgPSAxOyBzZWxmLnN0ZXBzID0g
W10iKTsKKyAgICB2YXIgaDEgPSBuZXcgQ29ubmVjdGlvbigiaDEiKTsKKyAgICB2YXIgaDIgPSBu
ZXcgQ29ubmVjdGlvbigiaDIiKTsKKworICAgIHJ1blN0ZXBzKFtmdW5jdGlvbihkb05leHQpIHsg
aDEub3Blbih7b25zdWNjZXNzOiBkb05leHR9KTsgfSwKKyAgICAgICAgICAgICAgZnVuY3Rpb24o
ZG9OZXh0KSB7IGgxLnNldFZlcnNpb24oKTsgZG9OZXh0KCk7IH0sCisgICAgICAgICAgICAgIGZ1
bmN0aW9uKGRvTmV4dCkgeyBoMi5vcGVuKHtvbnN1Y2Nlc3M6IGZpbmlzaFRlc3R9KTsgfQorICAg
ICAgICAgICAgICBdKTsKKworICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygic2VsZi5zdGVwcy50b1N0cmluZygpIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFsiaDEub3BlbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImgxLm9wZW4ub25zdWNjZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiaDEuc2V0VmVyc2lvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgyLm9w
ZW4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5zZXRWZXJzaW9uLm9uc3Vj
Y2VzcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgxLnNldFZlcnNpb24udHJh
bnNhY3Rpb24tY29tcGxldGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMi5v
cGVuLm9uc3VjY2VzcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnRvU3RyaW5n
KCkpOworICAgICAgICB0ZXN0NigpOworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdDYoKSB7Cisg
ICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJURVNUOiB0d28gc2V0VmVyc2lvbnMgZnJvbSB0aGUg
c2FtZSBjb25uZWN0aW9uIik7CisgICAgZXZhbEFuZExvZygic2VsZi5kYm5hbWUgPSAndGVzdDYn
OyBzZWxmLnZlciA9IDE7IHNlbGYuc3RlcHMgPSBbXSIpOworICAgIHZhciBoMSA9IG5ldyBDb25u
ZWN0aW9uKCJoMSIpOworCisgICAgcnVuU3RlcHMoW2Z1bmN0aW9uKGRvTmV4dCkgeyBoMS5vcGVu
KHtvbnN1Y2Nlc3M6IGRvTmV4dH0pOyB9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgZnVuY3Rpb24oZG9OZXh0KSB7IGgxLnNldFZlcnNpb24oe29uc3Vj
Y2VzczogaGFsZkRvbmV9KTsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoMS5z
ZXRWZXJzaW9uKHtvbnN1Y2Nlc3M6IGhhbGZEb25lfSk7IH0KKyAgICAgICAgICAgICAgXSk7CisK
KyAgICB2YXIgY291bnRlciA9IDA7CisgICAgZnVuY3Rpb24gaGFsZkRvbmUoKSB7CisgICAgICAg
IGNvdW50ZXIrKzsKKyAgICAgICAgaWYgKGNvdW50ZXIgPCAyKSB7CisgICAgICAgICAgICBkZWJ1
ZygnaGFsZiBkb25lJyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmaW5pc2hUZXN0
KCk7CisgICAgICAgIH0KKyAgICB9ICAKKworICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7Cisg
ICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic2VsZi5zdGVwcy50b1N0cmluZygpIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiaDEub3BlbiIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImgxLm9wZW4ub25zdWNjZXNzIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiaDEuc2V0VmVyc2lvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImgxLnNldFZlcnNpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMS5z
ZXRWZXJzaW9uLm9uc3VjY2VzcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgx
LnNldFZlcnNpb24udHJhbnNhY3Rpb24tY29tcGxldGUiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJoMS5zZXRWZXJzaW9uLm9uc3VjY2VzcyIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImgxLnNldFZlcnNpb24udHJhbnNhY3Rpb24tY29tcGxldGUiCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXS50b1N0cmluZygpKTsKKyAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgfQorfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4t
Y3Vyc29yLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4t
Y3Vyc29yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlmOWRjM2I2Yjc5NWJmMGVkOWU5MzY0ZjdhYmY4OGNkMGU2
Y2I4N2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvb3Blbi1jdXJzb3IuanMKQEAgLTAsMCArMSw4NCBAQAoraWYgKHRoaXMuaW1wb3J0
U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisK
K2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIG9wZW5DdXJzb3IuIik7CisKK2Z1bmN0aW9u
IGVtcHR5Q3Vyc29yU3VjY2VzcygpCit7CisgICAgZGVidWcoIkVtcHR5IGN1cnNvciBvcGVuZWQg
c3VjY2Vzc2Z1bGx5LiIpCisgICAgLy8gRklYTUU6IGNoZWNrIHRoYXQgd2UgY2FuIGl0ZXJhdGUg
dGhlIGN1cnNvci4KKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gb3BlbkVtcHR5
Q3Vyc29yKCkKK3sKKyAgICBkZWJ1ZygiT3BlbmluZyBhbiBlbXB0eSBjdXJzb3IuIik7CisgICAg
a2V5UmFuZ2UgPSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKCJJbmV4aXN0ZW50S2V5Iik7CisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLm9wZW5DdXJzb3Ioa2V5UmFuZ2UpIik7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBlbXB0eUN1cnNvclN1Y2Nlc3M7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGN1cnNv
clN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJDdXJzb3Igb3BlbmVkIHN1Y2Nlc3NmdWxseS4iKQor
ICAgIC8vIEZJWE1FOiBjaGVjayB0aGF0IHdlIGNhbiBpdGVyYXRlIHRoZSBjdXJzb3IuCisgICAg
c2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQuZGlyZWN0aW9uIiwgIjAiKTsKKyAgICBzaG91
bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5rZXkiLCAiJ215S2V5JyIpOworICAgIHNob3VsZEJl
KCJldmVudC50YXJnZXQucmVzdWx0LnZhbHVlIiwgIidteVZhbHVlJyIpOworICAgIGRlYnVnKCIi
KTsKKyAgICB0cnkgeworICAgICAgICBkZWJ1ZygiUGFzc2luZyBhbiBpbnZhbGlkIGtleSBpbnRv
IC5jb250aW51ZSh7fSkuIik7CisgICAgICAgIGV2ZW50LnRhcmdldC5yZXN1bHQuY29udGludWUo
e30pOworICAgICAgICB0ZXN0RmFpbGVkKCJObyBleGNlcHRpb24gdGhyb3duIik7CisgICAgfSBj
YXRjaCAoZSkgeworICAgICAgICB0ZXN0UGFzc2VkKCJDYXVnaHQgZXhjZXB0aW9uOiAiICsgZS50
b1N0cmluZygpKTsKKyAgICB9CisgICAgZGVidWcoIiIpOworICAgIG9wZW5FbXB0eUN1cnNvcigp
OworfQorCitmdW5jdGlvbiBvcGVuQ3Vyc29yKCkKK3sKKyAgICBkZWJ1ZygiT3BlbmluZyBjdXJz
b3IiKTsKKyAgICBrZXlSYW5nZSA9IElEQktleVJhbmdlLmxvd2VyQm91bmQoIm15S2V5Iik7Cisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC5zb3VyY2Uub3BlbkN1cnNvcihr
ZXlSYW5nZSkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1cnNvclN1Y2Nlc3M7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IHNldFZlcnNpb25TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToi
KTsKKyAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVz
dWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9u
YWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0
b3JlcyhkYik7CisKKyAgICB2YXIgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9y
ZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCd0ZXN0JykiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygib2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlJywgJ215S2V5JykiKTsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IG9wZW5DdXJzb3I7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICB2YXIg
ZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAg
cmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhl
ZERCLm9wZW4oJ29wZW4tY3Vyc29yJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5T
dWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4tZHVyaW5nLXRyYW5zYWN0
aW9uLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL29wZW4tZHVy
aW5nLXRyYW5zYWN0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUzYzE5ZDdkOWYwNGFiMTM2NDUwYjczMTI2
ZWI3MDBlMjMzYjUwMjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvb3Blbi1kdXJpbmctdHJhbnNhY3Rpb24uanMKQEAgLTAsMCArMSw3
NyBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0
cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBvcGVuaW5n
IGRhdGFiYXNlIGNvbm5lY3Rpb25zIGR1cmluZyB0cmFuc2FjdGlvbnMiKTsKKworZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBwcmVwYXJlRGF0YWJh
c2UoKTsKK30KKworZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKCkKK3sKKyAgICBkZWJ1ZygicHJl
cGFyZSBkYXRhYmFzZSIpOworICAgIGV2YWxBbmRMb2coIm9wZW5yZXExID0gaW5kZXhlZERCLm9w
ZW4oJ2RiMScpIik7CisgICAgb3BlbnJlcTEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworICAgIG9wZW5yZXExLm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgIGV2
YWxBbmRMb2coImRiYzEgPSBvcGVucmVxMS5yZXN1bHQiKTsKKyAgICAgICAgZXZhbEFuZExvZygi
c2V0dmVycmVxID0gZGJjMS5zZXRWZXJzaW9uKCcxLjAnKSIpOworICAgICAgICBzZXR2ZXJyZXEu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICBzZXR2ZXJyZXEub25z
dWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImRiYzEuY3Jl
YXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgICAgICAgICBzZXR2ZXJyZXEucmVz
dWx0Lm9uY29tcGxldGUgPSBmdW5jdGlvbiAoZSkgeworICAgICAgICAgICAgICAgIGRlYnVnKCJk
YXRhYmFzZSBwcmVwYXJhdGlvbiBjb21wbGV0ZSIpOworICAgICAgICAgICAgICAgIGRlYnVnKCIi
KTsKKyAgICAgICAgICAgICAgICBzdGFydFRyYW5zYWN0aW9uKCk7CisgICAgICAgICAgICB9Owor
ICAgICAgICB9OworICAgIH07Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VHJhbnNhY3Rpb24oKQorewor
ICAgIGRlYnVnKCJzdGFydGluZyB0cmFuc2FjdGlvbiIpOworICAgIGV2YWxBbmRMb2coInN0YXRl
ID0gJ3N0YXJ0aW5nJyIpOworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGJjMS50cmFuc2FjdGlv
bignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICBldmFsQW5k
TG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykucHV0KCd2YWx1ZScsICdrZXknKSIp
OworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFu
cy5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0
ZSA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgIGRlYnVnKCJ0cmFuc2FjdGlvbiBjb21wbGV0ZSIp
OworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInN0YXRlIiwgIm9wZW4zY29tcGxldGUi
KTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfTsKKworICAgIGRlYnVnKCIiKTsKKyAg
ICB0cnlPcGVucygpOworfQorCitmdW5jdGlvbiB0cnlPcGVucygpCit7CisgICAgZGVidWcoInRy
eWluZyB0byBvcGVuIHRoZSBzYW1lIGRhdGFiYXNlIik7CisgICAgZXZhbEFuZExvZygib3BlbnJl
cTIgPSBpbmRleGVkREIub3BlbignZGIxJykiKTsKKyAgICBvcGVucmVxMi5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgb3BlbnJlcTIub25zdWNjZXNzID0gZnVuY3Rpb24g
KGUpIHsKKyAgICAgICAgZGVidWcoIm9wZW5yZXEyLm9uc3VjY2VzcyIpOworICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoInN0YXRlIiwgInN0YXJ0aW5nIik7CisgICAgICAgIGV2YWxBbmRM
b2coInN0YXRlID0gJ29wZW4yY29tcGxldGUnIik7CisgICAgICAgIGRlYnVnKCIiKTsKKyAgICB9
CisgICAgZGVidWcoIiIpOworCisgICAgZGVidWcoInRyeWluZyB0byBvcGVuIGEgZGlmZmVyZW50
IGRhdGFiYXNlIik7CisgICAgZXZhbEFuZExvZygib3BlbnJlcTMgPSBpbmRleGVkREIub3Blbign
ZGIyJykiKTsKKyAgICBvcGVucmVxMy5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CisgICAgb3BlbnJlcTMub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgZGVidWco
Im9wZW5yZXEzLm9uc3VjY2VzcyIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInN0
YXRlIiwgIm9wZW4yY29tcGxldGUiKTsKKyAgICAgICAgZXZhbEFuZExvZygic3RhdGUgPSAnb3Bl
bjNjb21wbGV0ZSciKTsKKyAgICAgICAgZGVidWcoIiIpOworICAgIH0KKyAgICBkZWJ1ZygiIik7
Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvcHJlZmV0Y2gtYnVnZml4LTEw
ODA3MS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9wcmVmZXRj
aC1idWdmaXgtMTA4MDcxLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmMTQxNjdhMWRlNGE1NGI1NGJjZDNiM2Vk
MmZiNDY5OWM5ZjFjMDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvcHJlZmV0Y2gtYnVnZml4LTEwODA3MS5qcwpAQCAtMCwwICsxLDEx
OCBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0
cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IGZvciBjcmJ1Zy5jb20vMTA4
MDcxIik7CisKKy8vIEhhdmUgdG8gYmUgYXQgbGVhc3QgNSBoZXJlOiAxIGluaXRpYWwsIDMgY29u
dGludWVzIHRvIHRyaWdnZXIgcHJlZmV0Y2ggYW5kIDEKKy8vIHBvc3QtYWJvcnQgb3V0c3RhbmRp
bmcgY29udGludWUuCit2YXIgbmFtZXMgPSBbJ0FscGhhJywgJ0JyYXZvJywgJ0NoYXJsaWUnLCAn
RGVsdGEnLCAnRWNobyddOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQ
cmVmaXhlcygpOworICAgIERCTkFNRSA9ICdwcmVmZXRjaC1idWdmaXgtMTA4MDcxJzsKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKERCTkFNRSkiKTsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1
ZXN0Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZSkgeworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
aW5kZXhlZERCLm9wZW4oREJOQU1FKSIpOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9w
ZW5TdWNjZXNzOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKKyAgICB9OworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgdmFyIGRi
ID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb25TdWNjZXNz
KCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKKyAgICBzZWxmLnRyYW5z
ID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxk
QmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVk
QWJvcnRDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gaXRlcmF0ZUFuZERlbGV0ZUZp
cnN0RWxlbWVudDsKKworICAgIHZhciBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0
b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJywge2tleVBhdGg6ICdpZCd9KSIpOwor
ICAgIHJlc2V0T2JqZWN0U3RvcmUoKTsKK30KKworZnVuY3Rpb24gcmVzZXRPYmplY3RTdG9yZSgp
Cit7CisgICAgZGVidWcoIlxucmVzZXRPYmplY3RTdG9yZSgpOiIpOworCisgICAgb2JqZWN0U3Rv
cmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZS5jbGVhcigpIik7CisgICAgZm9yIChpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7
CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoe2lkOiAiICsg
aSArICIsIG5hbWU6IFwiIiArIG5hbWVzW2ldICsgIlwifSkiKTsKKyAgICAgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgfQorCisgICAgZGVidWcoIiIp
OworfQorCitmdW5jdGlvbiBpdGVyYXRlQW5kRGVsZXRlRmlyc3RFbGVtZW50KCkKK3sKKyAgICBk
ZWJ1ZygiaXRlcmF0ZUFuZERlbGV0ZUZpcnN0RWxlbWVudCgpOiIpOworCisgICAgZXZhbEFuZExv
ZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURf
V1JJVEUpIik7CisgICAgdHJhbnMub25hYm9ydCA9IHRyYW5zYWN0aW9uQWJvcnRlZDsKKyAgICB0
cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7CisKKyAgICAvLyBD
cmVhdGUgdGhlIGN1cnNvciBhbmQgaXRlcmF0ZSBvdmVyIHRoZSB3aG9sZSB0aGluZy4KKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykub3BlbkN1cnNv
cigpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgIHZhciBjdXJzb3Ig
PSBldmVudC50YXJnZXQucmVzdWx0OworICAgICAgICBpZiAoY3Vyc29yID09IG51bGwpIHsKKyAg
ICAgICAgICAgIHJlc2V0T2JqZWN0U3RvcmUoKTsKKyAgICAgICAgICAgIHByZWZldGNoQW5kQWJv
cnQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGRlYnVnKGN1
cnNvci52YWx1ZS5pZCArICI6ICIgKyBjdXJzb3IudmFsdWUubmFtZSk7CisKKyAgICAgICAgaWYg
KGN1cnNvci52YWx1ZS5pZCA9PSAwKSB7CisgICAgICAgICAgICAvLyBEZWxldGUgdGhlIGZpcnN0
IGVsZW1lbnQgd2hlbiB3ZSBzZWUgaXQuCisgICAgICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykuZGVsZXRlKDApIik7CisgICAgICAgICAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7IGN1cnNvci5jb250aW51ZSgpOyB9OworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7CisgICAgICAgIH0K
KyAgICB9Cit9CisKK2Z1bmN0aW9uIHByZWZldGNoQW5kQWJvcnQoKQoreworICAgIGRlYnVnKCJw
cmVmZXRjaEFuZEFib3J0KCk6Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnMu
b2JqZWN0U3RvcmUoJ3N0b3JlJykub3BlbkN1cnNvcigpIik7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbiAoKSB7CisgICAgICAgIHZhciBjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OworICAg
ICAgICBkZWJ1ZyhjdXJzb3IudmFsdWUuaWQgKyAiOiAiICsgY3Vyc29yLnZhbHVlLm5hbWUpOwor
ICAgICAgICAvLyBIYXZlIHRvIGl0ZXJhdGUgdG8gMyBpbiBvcmRlciB0byBwcmVmZXRjaCwgYnV0
IGNhbid0IGl0ZXJhdGUgcGFzdCAzCisgICAgICAgIC8vIHNvIHRoYXQgdGhlcmUgd2lsbCBiZSBh
IGNvbnRpbnVlIHJlbWFpbmluZy4KKyAgICAgICAgaWYgKGN1cnNvci52YWx1ZS5pZCA9PSAzKSB7
CisgICAgICAgICAgICBldmFsQW5kTG9nKCJ0cmFucy5hYm9ydCgpIik7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBjdXJzb3IuY29udGludWUoKTsKKyAgICAgICAgfQorICAgIH0KK30K
KworZnVuY3Rpb24gdHJhbnNhY3Rpb25BYm9ydGVkKCkKK3sKKyAgICB0ZXN0UGFzc2VkKCJUcmFu
c2FjdGlvbiBhYm9ydGVkIGFzIGV4cGVjdGVkIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisK
K3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvcXVldWVkLWNvbW1hbmRzLmpzIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3F1ZXVlZC1jb21tYW5kcy5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xMDBiZmQ1YTE2Y2VjZTEwNDc1MjEyNjdmNmEyYTk5MzE5YjQ4MmIyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3F1
ZXVlZC1jb21tYW5kcy5qcwpAQCAtMCwwICsxLDYyIEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRz
KSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3Jp
cHRpb24oIlZlcmlmeSB0aGF0IHF1ZXVpbmcgdXAgc2V2ZXJhbCBjb21tYW5kcyB3b3JrcyAoYW5k
IHRoZXkgYWxsIGZpcmUpLiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5k
b3JQcmVmaXhlcygpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbign
cXVldWVkLWNvbW1hbmRzJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb247
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIHNldFZlcnNpb24oKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50
YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lv
bignbmV3IHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlRXhpc3Rp
bmc7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nl
c3MoKToiKTsKKyAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJn
ZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgIHRy
YW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKworICAgIGRlbGV0ZUFsbE9i
amVjdFN0b3JlcyhkYik7CisKKyAgICBzZWxmLnN0b3JlID0gZXZhbEFuZExvZygiZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgc2VsZi5pbmRleE9iamVjdCA9IGV2YWxB
bmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleE5hbWUnLCAneCcpIik7CisKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXkn
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7IHZlcmlmeUFkZCgwKTsg
fTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZTInLCB5OiAnenp6Mid9
LCAna2V5MicpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgdmVyaWZ5
QWRkKDEpOyB9OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLnB1dCh7eDogJ3ZhbHUyJywgeTog
J3p6Mid9LCAna3kyJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeyB2
ZXJpZnlBZGQoMik7IH07CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7CisKKyAgICBzZWxmLmFkZENvdW50ID0gMDsKK30KKworZnVuY3Rpb24gdmVyaWZ5QWRk
KGV4cGVjdGVkKQoreworICAgIHNob3VsZEJlKCIiICsgYWRkQ291bnQrKywgIiIgKyBleHBlY3Rl
ZCk7CisKKyAgICBpZiAoYWRkQ291bnQgPT0gMykKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7Cisg
ICAgaWYgKGFkZENvdW50ID4gMykKKyAgICAgICAgdGVzdEZhaWxlZCgiVW5leHBlY3RlZCBjYWxs
IHRvIHZlcmlmeUFkZCEiKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9y
ZWFkb25seS1wcm9wZXJ0aWVzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL3JlYWRvbmx5LXByb3BlcnRpZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzI1YzA0MWIwMTgxOWMx
NDZlMmI2M2ExNjY5YWQzOThkNzdhYjJjNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9yZWFkb25seS1wcm9wZXJ0aWVzLmpzCkBAIC0w
LDAgKzEsNDkgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRz
KCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9y
dFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIg
cmVhZG9ubHkgcHJvcGVydGllcyIpOworCitmdW5jdGlvbiBzZXRSZWFkb25seVByb3BlcnR5KHBy
b3BlcnR5LCB2YWx1ZSkKK3sKKyAgICBvbGRWYWx1ZSA9IGV2YWwocHJvcGVydHkpOworICAgIGRl
YnVnKCJ0cnlpbmcgdG8gc2V0IHJlYWRvbmx5IHByb3BlcnR5ICIgKyBwcm9wZXJ0eSk7CisgICAg
ZXZhbEFuZExvZyhwcm9wZXJ0eSArICIgPSAiICsgdmFsdWUpOworICAgIG5ld1ZhbHVlID0gZXZh
bChwcm9wZXJ0eSk7CisgICAgaWYgKG9sZFZhbHVlID09IG5ld1ZhbHVlKSB7CisgICAgICAgIHRl
c3RQYXNzZWQocHJvcGVydHkgKyAiIGlzIHN0aWxsICIgKyBvbGRWYWx1ZSk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgdGVzdEZhaWxlZChwcm9wZXJ0eSArICIgdmFsdWUgd2FzIGNoYW5nZWQgdG8g
IiArIG5ld1ZhbHVlKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92
ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gImZvbyI7CisgICAgZGVzY3JpcHRpb24g
PSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWRE
Qi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3Bl
blN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRi
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVh
dGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0
b3JlKCkKK3sKKyAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZXZl
bnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworICAg
IG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RT
dG9yZSgnZm9vJyk7Iik7CisgICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgib2JqZWN0U3RvcmUudHJh
bnNhY3Rpb24iLCAidGhpcyIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL3JlYWRvbmx5LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL3JlYWRvbmx5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2ZDMxY2Y4ODkyZGIx
NGNhMzY5ODBhYWY4Y2QzMWZmYTVmOWNmMmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvcmVhZG9ubHkuanMKQEAgLTAsMCArMSwxMDYg
QEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMo
J3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgcmVhZG9ubHkg
cHJvcGVydGllcyIpOworCitmdW5jdGlvbiBzZXRSZWFkb25seVByb3BlcnR5KHByb3BlcnR5LCB2
YWx1ZSkKK3sKKyAgICBvbGRWYWx1ZSA9IGV2YWwocHJvcGVydHkpOworICAgIGRlYnVnKCJ0cnlp
bmcgdG8gc2V0IHJlYWRvbmx5IHByb3BlcnR5ICIgKyBwcm9wZXJ0eSk7CisgICAgZXZhbEFuZExv
Zyhwcm9wZXJ0eSArICIgPSAiICsgdmFsdWUpOworICAgIG5ld1ZhbHVlID0gZXZhbChwcm9wZXJ0
eSk7CisgICAgaWYgKG9sZFZhbHVlID09IG5ld1ZhbHVlKSB7CisgICAgICAgIHRlc3RQYXNzZWQo
cHJvcGVydHkgKyAiIGlzIHN0aWxsICIgKyBvbGRWYWx1ZSk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgdGVzdEZhaWxlZChwcm9wZXJ0eSArICIgdmFsdWUgd2FzIGNoYW5nZWQiKTsKKyAgICB9Cit9
CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAg
ICBuYW1lID0gImZvbyI7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Cisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9u
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNj
ZXNzKCkKK3sKKyAgICBzZXRSZWFkb25seVByb3BlcnR5KCJyZXF1ZXN0LnJlc3VsdCIsICJJbmZp
bml0eSIpOworICAgIHNldFJlYWRvbmx5UHJvcGVydHkoInJlcXVlc3QuZXJyb3JDb2RlIiwgIjY2
NiIpOworICAgIHNldFJlYWRvbmx5UHJvcGVydHkoInJlcXVlc3Quc291cmNlIiwgInRoaXMiKTsK
KyAgICBzZXRSZWFkb25seVByb3BlcnR5KCJyZXF1ZXN0LnRyYW5zYWN0aW9uIiwgInRoaXMiKTsK
KyAgICBzZXRSZWFkb25seVByb3BlcnR5KCJyZXF1ZXN0LnJlYWR5U3RhdGUiLCAiNjY2Iik7CisK
KyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNl
dFJlYWRvbmx5UHJvcGVydHkoImRiLm5hbWUiLCAiJ2JhciciKTsKKworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjcmVhdGVBbmRQ
b3B1bGF0ZU9iamVjdFN0b3JlKCkKK3sKKyAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRy
YW5zYWN0aW9uID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICBzZXRSZWFkb25seVByb3Bl
cnR5KCJ0cmFuc2FjdGlvbi5tb2RlIiwgIjY2NiIpOworICAgIHNldFJlYWRvbmx5UHJvcGVydHko
InRyYW5zYWN0aW9uLmRiIiwgInRoaXMiKTsKKworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jlcyhk
Yik7CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ2ZvbycpOyIpOworCisgICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgib2Jq
ZWN0U3RvcmUubmFtZSIsICInYmFyJyIpOworICAgIHNldFJlYWRvbmx5UHJvcGVydHkoIm9iamVj
dFN0b3JlLmtleVBhdGgiLCAiJ2JhciciKTsKKy8qIGZhaWxzLCBzcGxpdCBpbnRvIHNlcGFyYXRl
IHRlc3QKKyAgICBzZXRSZWFkb25seVByb3BlcnR5KCJvYmplY3RTdG9yZS5pbmRleE5hbWVzIiwg
IlsnYmFyJ10iKTsKKyovCisvKiBmYWlscywgc3BsaXQgaW50byBzZXBhcmF0ZSB0ZXN0CisgICAg
c2V0UmVhZG9ubHlQcm9wZXJ0eSgib2JqZWN0U3RvcmUudHJhbnNhY3Rpb24iLCAidGhpcyIpOwor
Ki8KKworICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coInJlc3VsdCA9IG9iamVjdFN0b3JlLmFkZCh7
fSwgJ2ZpcnN0Jyk7Iik7CisgICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKKyAgICByZXN1bHQub25zdWNjZXNzID0gYWRkU3VjY2VzczsKK30KKworZnVuY3Rpb24g
YWRkU3VjY2VzcygpCit7CisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygicmVzdWx0ID0gb2JqZWN0
U3RvcmUub3BlbkN1cnNvcigpOyIpOworICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGNoZWNrQ3Vyc29yOworfQorCitm
dW5jdGlvbiBjaGVja0N1cnNvcigpCit7CisgICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29y
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICBpZiAoY3Vyc29yKSB7CisgICAgICAgIHNl
dFJlYWRvbmx5UHJvcGVydHkoImN1cnNvci5zb3VyY2UiLCAidGhpcyIpOworICAgICAgICBzZXRS
ZWFkb25seVByb3BlcnR5KCJjdXJzb3IuZGlyZWN0aW9uIiwgIjY2NiIpOworICAgICAgICBzZXRS
ZWFkb25seVByb3BlcnR5KCJjdXJzb3Iua2V5IiwgIkluZmluaXR5Iik7CisgICAgICAgIHNldFJl
YWRvbmx5UHJvcGVydHkoImN1cnNvci5wcmltYXJ5S2V5IiwgIkluZmluaXR5Iik7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiY3Vyc29yIGlzIG51bGwiKTsKKyAgICB9CisKKyAg
ICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ2Zp
cnN0JywgJ2ZpcnN0Jyk7Iik7CisgICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgiaW5kZXgubmFtZSIs
ICInYmFyJyIpOworICAgIHNldFJlYWRvbmx5UHJvcGVydHkoImluZGV4Lm9iamVjdFN0b3JlIiwg
InRoaXMiKTsKKyAgICBzZXRSZWFkb25seVByb3BlcnR5KCJpbmRleC5rZXlQYXRoIiwgIidiYXIn
Iik7CisgICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgiaW5kZXgudW5pcXVlIiwgInRydWUiKTsKKwor
ICAgIGtleVJhbmdlID0gSURCS2V5UmFuZ2Uub25seSgiZmlyc3QiKTsKKyAgICBzZXRSZWFkb25s
eVByb3BlcnR5KCJrZXlSYW5nZS5sb3dlciIsICJJbmZpbml0eSIpOworICAgIHNldFJlYWRvbmx5
UHJvcGVydHkoImtleVJhbmdlLnVwcGVyIiwgIkluZmluaXR5Iik7CisgICAgc2V0UmVhZG9ubHlQ
cm9wZXJ0eSgia2V5UmFuZ2UubG93ZXJPcGVuIiwgInRydWUiKTsKKyAgICBzZXRSZWFkb25seVBy
b3BlcnR5KCJrZXlSYW5nZS51cHBlck9wZW4iLCAidHJ1ZSIpOworCisgICAgZmluaXNoSlNUZXN0
KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvcmVxdWVzdC1ldmVudC1w
cm9wYWdhdGlvbi5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9y
ZXF1ZXN0LWV2ZW50LXByb3BhZ2F0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5NjcyMzVlMjBiZmRmOGY2
MGYwMDQyYmFhNzgxNjdiYjFjYzUyNzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvcmVxdWVzdC1ldmVudC1wcm9wYWdhdGlvbi5qcwpA
QCAtMCwwICsxLDI2NyBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNj
cmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAg
aW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IGV2ZW50
IHByb3BvZ2F0aW9uIG9uIElEQlJlcXVlc3QuIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAg
IHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4
ZWREQi5vcGVuKCdyZXF1ZXN0LWV2ZW50LXByb3BhZ2F0aW9uJykiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IHNldFZlcnNpb247CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb24oKQoreworICAgIGRiID0gZXZh
bEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZUV4aXN0aW5nKCkKK3sKKyAgICBk
ZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsKKyAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExv
ZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFu
cyAhPT0gbnVsbCIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFj
azsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gc3RhcnRUZXN0Iik7CisKKyAg
ICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJz
dG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOworICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tl
eScpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgpCit7CisgICAgZGVidWcoIlZlcmlmeSB0aGF0IGhhbmRs
ZXIgZmlyZXMgYW5kIHRoYXQgbm90IHByZXZlbnRpbmcgZGVmYXVsdCB3aWxsIHJlc3VsdCBpbiBh
biBhYm9ydCIpOworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlv
bihbJ3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIGV2YWxB
bmRMb2coInRyYW5zLm9uYWJvcnQgPSB0cmFuc2FjdGlvbkFib3J0ZWQiKTsKKyAgICBldmFsQW5k
TG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2siKTsKKyAg
ICBldmFsQW5kTG9nKCJ0cmFucy5vbmVycm9yID0gYWxsb3dEZWZhdWx0Iik7CisgICAgc3RvcmUg
PSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOwor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enon
fSwgJ2tleScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0Nh
bGxiYWNrOworICAgIGhhbmRsZXJGaXJlZCA9IGZhbHNlOworfQorCitmdW5jdGlvbiBhbGxvd0Rl
ZmF1bHQoKQoreworICAgIHRlc3RQYXNzZWQoIkV2ZW50IGhhbmRsZXIgZmlyZWQiKTsKKyAgICBk
ZWJ1ZygiRG9pbmcgbm90aGluZyB0byBwcmV2ZW50IHRoZSBkZWZhdWx0IGFjdGlvbi4uLiIpOwor
ICAgIGhhbmRsZXJGaXJlZCA9IHRydWU7Cit9CisKK2Z1bmN0aW9uIHRyYW5zYWN0aW9uQWJvcnRl
ZCgpCit7CisgICAgc2hvdWxkQmVUcnVlKCJoYW5kbGVyRmlyZWQiKTsKKyAgICBkZWJ1ZygiIik7
CisgICAgZGVidWcoIlZlcmlmaW5nIGVycm9yIik7CisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0
cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIElEQlRyYW5zYWN0aW9uLlJFQURf
V1JJVEUpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMub25hYm9ydCA9IHRyYW5zYWN0aW9uQWJv
cnRlZDIiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZEFi
b3J0Q2FsbGJhY2siKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5hZGRFdmVudExpc3RlbmVyKCdl
cnJvcicsIGVycm9yQ2FwdHVyZUNhbGxiYWNrLCB0cnVlKSIpOworICAgIGV2YWxBbmRMb2coInRy
YW5zLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZXJyb3JCdWJibGVDYWxsYmFjaywgZmFsc2Up
Iik7CisgICAgZXZhbEFuZExvZygidHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignc3VjY2VzcycsIHVu
ZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2ssIHRydWUpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMu
YWRkRXZlbnRMaXN0ZW5lcignc3VjY2VzcycsIHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2ssIGZh
bHNlKSIpOworICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZGJF
cnJvckNhcHR1cmVDYWxsYmFjaywgdHJ1ZSkiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5hZGRFdmVu
dExpc3RlbmVyKCdlcnJvcicsIGRiRXJyb3JCdWJibGVDYWxsYmFjaywgZmFsc2UpIik7CisgICAg
ZXZhbEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignc3VjY2VzcycsIHVuZXhwZWN0ZWRTdWNj
ZXNzQ2FsbGJhY2ssIHRydWUpIik7CisgICAgZXZhbEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5l
cignc3VjY2VzcycsIHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2ssIGZhbHNlKSIpOworICAgIHN0
b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJyki
KTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAn
enp6J30sICdrZXknKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nl
c3NDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBlcnJvckZpcmVkQ2FsbGJhY2s7Cisg
ICAgZGJDYXB0dXJlRmlyZWQgPSBmYWxzZTsKKyAgICBjYXB0dXJlRmlyZWQgPSBmYWxzZTsKKyAg
ICByZXF1ZXN0RmlyZWQgPSBmYWxzZTsKKyAgICBidWJibGVGaXJlZCA9IGZhbHNlOworICAgIGRi
QnViYmxlRmlyZWQgPSBmYWxzZTsKK30KKworZnVuY3Rpb24gZGJFcnJvckNhcHR1cmVDYWxsYmFj
aygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJJbiBJREJEYXRhYmFzZSBlcnJvciBj
YXB0dXJlIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGJDYXB0dXJlRmlyZWQiKTsKKyAgICBzaG91
bGRCZUZhbHNlKCJjYXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJyZXF1ZXN0Rmly
ZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJidWJibGVGaXJlZCIpOworICAgIHNob3VsZEJlRmFs
c2UoImRiQnViYmxlRmlyZWQiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0IiwgInJlcXVl
c3QiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQuY3VycmVudFRhcmdldCIsICJkYiIpOworICAgIGRi
Q2FwdHVyZUZpcmVkID0gdHJ1ZTsKK30KKworZnVuY3Rpb24gZXJyb3JDYXB0dXJlQ2FsbGJhY2so
KQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiSW4gSURCVHJhbnNhY3Rpb24gZXJyb3Ig
Y2FwdHVyZSIpOworICAgIHNob3VsZEJlVHJ1ZSgiZGJDYXB0dXJlRmlyZWQiKTsKKyAgICBzaG91
bGRCZUZhbHNlKCJjYXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJyZXF1ZXN0Rmly
ZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJidWJibGVGaXJlZCIpOworICAgIHNob3VsZEJlRmFs
c2UoImRiQnViYmxlRmlyZWQiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0IiwgInJlcXVl
c3QiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQuY3VycmVudFRhcmdldCIsICJ0cmFucyIpOworICAg
IGNhcHR1cmVGaXJlZCA9IHRydWU7Cit9CisKK2Z1bmN0aW9uIGVycm9yRmlyZWRDYWxsYmFjaygp
Cit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJJbiBJREJSZXF1ZXN0IGhhbmRsZXIiKTsK
KyAgICBzaG91bGRCZVRydWUoImRiQ2FwdHVyZUZpcmVkIik7CisgICAgc2hvdWxkQmVUcnVlKCJj
YXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJyZXF1ZXN0RmlyZWQiKTsKKyAgICBz
aG91bGRCZUZhbHNlKCJidWJibGVGaXJlZCIpOworICAgIHNob3VsZEJlRmFsc2UoImRiQnViYmxl
RmlyZWQiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0IiwgInJlcXVlc3QiKTsKKyAgICBz
aG91bGRCZSgiZXZlbnQuY3VycmVudFRhcmdldCIsICJyZXF1ZXN0Iik7CisgICAgcmVxdWVzdEZp
cmVkID0gdHJ1ZTsKK30KKworZnVuY3Rpb24gZXJyb3JCdWJibGVDYWxsYmFjaygpCit7CisgICAg
ZGVidWcoIiIpOworICAgIGRlYnVnKCJJbiBJREJUcmFuc2FjdGlvbiBlcnJvciBidWJibGUiKTsK
KyAgICBzaG91bGRCZVRydWUoImRiQ2FwdHVyZUZpcmVkIik7CisgICAgc2hvdWxkQmVUcnVlKCJj
YXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRCZVRydWUoInJlcXVlc3RGaXJlZCIpOworICAgIHNo
b3VsZEJlRmFsc2UoImJ1YmJsZUZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVG
aXJlZCIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAicmVxdWVzdCIpOworICAgIHNo
b3VsZEJlKCJldmVudC5jdXJyZW50VGFyZ2V0IiwgInRyYW5zIik7CisgICAgYnViYmxlRmlyZWQg
PSB0cnVlOworfQorCitmdW5jdGlvbiBkYkVycm9yQnViYmxlQ2FsbGJhY2soKQoreworICAgIGRl
YnVnKCIiKTsKKyAgICBkZWJ1ZygiSW4gSURCRGF0YWJhc2UgZXJyb3IgYnViYmxlIik7CisgICAg
c2hvdWxkQmVUcnVlKCJkYkNhcHR1cmVGaXJlZCIpOworICAgIHNob3VsZEJlVHJ1ZSgiY2FwdHVy
ZUZpcmVkIik7CisgICAgc2hvdWxkQmVUcnVlKCJyZXF1ZXN0RmlyZWQiKTsKKyAgICBzaG91bGRC
ZVRydWUoImJ1YmJsZUZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVGaXJlZCIp
OworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQiLCAicmVxdWVzdCIpOworICAgIHNob3VsZEJl
KCJldmVudC5jdXJyZW50VGFyZ2V0IiwgImRiIik7CisgICAgZGJCdWJibGVGaXJlZCA9IHRydWU7
Cit9CisKK2Z1bmN0aW9uIHRyYW5zYWN0aW9uQWJvcnRlZDIoKQoreworICAgIGRlYnVnKCIiKTsK
KyAgICBkZWJ1ZygiVHJhbnNhY3Rpb24gYWJvcnRlZCIpOworICAgIHNob3VsZEJlVHJ1ZSgiZGJD
YXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRCZVRydWUoImNhcHR1cmVGaXJlZCIpOworICAgIHNo
b3VsZEJlVHJ1ZSgicmVxdWVzdEZpcmVkIik7CisgICAgc2hvdWxkQmVUcnVlKCJidWJibGVGaXJl
ZCIpOworICAgIHNob3VsZEJlVHJ1ZSgiZGJCdWJibGVGaXJlZCIpOworICAgIGRlYnVnKCIiKTsK
KyAgICBkZWJ1ZygiVmVyaWZpbmcgc3VjY2Vzcy4iKTsKKyAgICB0cmFucyA9IGV2YWxBbmRMb2co
InRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSwgSURCVHJhbnNhY3Rpb24uUkVB
RF9XUklURSkiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gdHJhbnNhY3Rp
b25Db21wbGV0ZSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVk
QWJvcnRDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLmFkZEV2ZW50TGlzdGVuZXIo
J3N1Y2Nlc3MnLCBzdWNjZXNzQ2FwdHVyZUNhbGxiYWNrLCB0cnVlKSIpOworICAgIGV2YWxBbmRM
b2coInRyYW5zLmFkZEV2ZW50TGlzdGVuZXIoJ3N1Y2Nlc3MnLCBzdWNjZXNzQnViYmxlQ2FsbGJh
Y2ssIGZhbHNlKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLmFkZEV2ZW50TGlzdGVuZXIoJ2Vy
cm9yJywgdW5leHBlY3RlZEVycm9yQ2FsbGJhY2ssIHRydWUpIik7CisgICAgZXZhbEFuZExvZygi
dHJhbnMuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjaywg
ZmFsc2UpIik7CisgICAgZXZhbEFuZExvZygiZGIucmVtb3ZlRXZlbnRMaXN0ZW5lcignZXJyb3In
LCBkYkVycm9yQ2FwdHVyZUNhbGxiYWNrLCB0cnVlKSIpOworICAgIGV2YWxBbmRMb2coImRiLnJl
bW92ZUV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZGJFcnJvckJ1YmJsZUNhbGxiYWNrLCBmYWxzZSki
KTsKKyAgICBldmFsQW5kTG9nKCJkYi5yZW1vdmVFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgdW5l
eHBlY3RlZFN1Y2Nlc3NDYWxsYmFjaywgdHJ1ZSkiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5yZW1v
dmVFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjaywgZmFs
c2UpIik7CisgICAgZXZhbEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignc3VjY2VzcycsIGRi
U3VjY2Vzc0NhcHR1cmVDYWxsYmFjaywgdHJ1ZSkiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5hZGRF
dmVudExpc3RlbmVyKCdzdWNjZXNzJywgZGJTdWNjZXNzQnViYmxlQ2FsbGJhY2ssIGZhbHNlKSIp
OworICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2ssIHRydWUpIik7CisgICAgZXZhbEFuZExvZygiZGIuYWRkRXZlbnRMaXN0
ZW5lcignZXJyb3InLCB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjaywgZmFsc2UpIik7CisgICAgc3Rv
cmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIp
OworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6
enonfSwgJ2tleTInKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc3VjY2Vzc0ZpcmVkQ2FsbGJhY2s7Cisg
ICAgZGJDYXB0dXJlRmlyZWQgPSBmYWxzZTsKKyAgICBjYXB0dXJlRmlyZWQgPSBmYWxzZTsKKyAg
ICByZXF1ZXN0RmlyZWQgPSBmYWxzZTsKKyAgICBidWJibGVGaXJlZCA9IGZhbHNlOworICAgIGRi
QnViYmxlRmlyZWQgPSBmYWxzZTsKK30KKworZnVuY3Rpb24gZGJTdWNjZXNzQ2FwdHVyZUNhbGxi
YWNrKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIkluIElEQkRhdGFiYXNlIHN1Y2Nl
c3MgY2FwdHVyZSIpOworICAgIHNob3VsZEJlRmFsc2UoImRiQ2FwdHVyZUZpcmVkIik7CisgICAg
c2hvdWxkQmVGYWxzZSgiY2FwdHVyZUZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgicmVxdWVz
dEZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiYnViYmxlRmlyZWQiKTsKKyAgICBzaG91bGRC
ZUZhbHNlKCJkYkJ1YmJsZUZpcmVkIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldCIsICJy
ZXF1ZXN0Iik7CisgICAgc2hvdWxkQmUoImV2ZW50LmN1cnJlbnRUYXJnZXQiLCAiZGIiKTsKKyAg
ICBkYkNhcHR1cmVGaXJlZCA9IHRydWU7Cit9CisKK2Z1bmN0aW9uIHN1Y2Nlc3NDYXB0dXJlQ2Fs
bGJhY2soKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiSW4gSURCVHJhbnNhY3Rpb24g
c3VjY2VzcyBjYXB0dXJlIik7CisgICAgc2hvdWxkQmVUcnVlKCJkYkNhcHR1cmVGaXJlZCIpOwor
ICAgIHNob3VsZEJlRmFsc2UoImNhcHR1cmVGaXJlZCIpOworICAgIHNob3VsZEJlRmFsc2UoInJl
cXVlc3RGaXJlZCIpOworICAgIHNob3VsZEJlRmFsc2UoImJ1YmJsZUZpcmVkIik7CisgICAgc2hv
dWxkQmVGYWxzZSgiZGJCdWJibGVGaXJlZCIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQi
LCAicmVxdWVzdCIpOworICAgIHNob3VsZEJlKCJldmVudC5jdXJyZW50VGFyZ2V0IiwgInRyYW5z
Iik7CisgICAgY2FwdHVyZUZpcmVkID0gdHJ1ZTsKK30KKworZnVuY3Rpb24gc3VjY2Vzc0ZpcmVk
Q2FsbGJhY2soKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiSW4gSURCUmVxdWVzdCBo
YW5kbGVyIik7CisgICAgc2hvdWxkQmVUcnVlKCJkYkNhcHR1cmVGaXJlZCIpOworICAgIHNob3Vs
ZEJlVHJ1ZSgiY2FwdHVyZUZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgicmVxdWVzdEZpcmVk
Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiYnViYmxlRmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNl
KCJkYkJ1YmJsZUZpcmVkIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldCIsICJyZXF1ZXN0
Iik7CisgICAgc2hvdWxkQmUoImV2ZW50LmN1cnJlbnRUYXJnZXQiLCAicmVxdWVzdCIpOworICAg
IHJlcXVlc3RGaXJlZCA9IHRydWU7Cit9CisKK2Z1bmN0aW9uIHN1Y2Nlc3NCdWJibGVDYWxsYmFj
aygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJJbiBJREJUcmFuc2FjdGlvbiBzdWNj
ZXNzIGJ1YmJsZSIpOworICAgIHRlc3RGYWlsZWQoIlN1Y2Nlc3MgYnViYmxlIGNhbGxiYWNrIHNo
b3VsZCBOT1QgZmlyZSIpOworICAgIGJ1YmJsZUZpcmVkID0gdHJ1ZTsKK30KKworZnVuY3Rpb24g
ZGJTdWNjZXNzQnViYmxlQ2FsbGJhY2soKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygi
SW4gSURCRGF0YWJhc2Ugc3VjY2VzcyBidWJibGUiKTsKKyAgICB0ZXN0RmFpbGVkKCJTdWNjZXNz
IGJ1YmJsZSBjYWxsYmFjayBzaG91bGQgTk9UIGZpcmUiKTsKKyAgICBkYkJ1YmJsZUZpcmVkID0g
dHJ1ZTsKK30KKworZnVuY3Rpb24gdHJhbnNhY3Rpb25Db21wbGV0ZSgpCit7CisgICAgZGVidWco
IiIpOworICAgIGRlYnVnKCJUcmFuc2FjdGlvbiBjb21wbGV0ZWQiKTsKKyAgICBzaG91bGRCZVRy
dWUoImRiQ2FwdHVyZUZpcmVkIik7CisgICAgc2hvdWxkQmVUcnVlKCJjYXB0dXJlRmlyZWQiKTsK
KyAgICBzaG91bGRCZVRydWUoInJlcXVlc3RGaXJlZCIpOworICAgIHNob3VsZEJlRmFsc2UoImJ1
YmJsZUZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVGaXJlZCIpOworICAgIGRl
YnVnKCIiKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworICAgIHJldHVybjsKK30KKwordGVzdCgp
OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zZXRWZXJzaW9uLW51bGwuanMgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2V0VmVyc2lvbi1udWxsLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmE4OGEzYzc1ZjYyYzQ2ZTRhMmMzNzg4ZTgwMjFjM2UzOWYzY2QzZWQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2V0VmVyc2lv
bi1udWxsLmpzCkBAIC0wLDAgKzEsMzUgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAg
ICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigi
VGVzdCBJbmRleGVkREIgd2l0aCBudWxsIHZlcnNpb24gc3RyaW5nIik7CisKK2Z1bmN0aW9uIHRl
c3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBuYW1lID0gc2VsZi5s
b2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRp
b24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1
Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbihudWxsKTsiKTsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RTZXRWZXJzaW9uOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBwb3N0U2V0VmVy
c2lvbigpCit7CisgICAgc2hvdWxkQmUoImRiLnZlcnNpb24iLCAiJ251bGwnIik7CisgICAgZmlu
aXNoSlNUZXN0KCk7Cit9CisKKwordGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NldFZlcnNpb24tdW5kZWZpbmVkLmpzIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NldFZlcnNpb24tdW5kZWZpbmVkLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjA3ODMzNmUzODg0MzQwZjgzMWE3NTdjNmM2MDkwYmMzNWQzMmE0MTUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
c2V0VmVyc2lvbi11bmRlZmluZWQuanMKQEAgLTAsMCArMSwyOCBAQAoraWYgKHRoaXMuaW1wb3J0
U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisK
K2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiB2ZXJzaW9uIHN0cmluZyBpcyByZXF1aXJlZCIp
OworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworCisg
ICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkg
VGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVu
KG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nl
c3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgc2hvdWxkVGhyb3coImRiLnNldFZlcnNpb24oKTsi
KTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworCit0ZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2V0X3ZlcnNpb25fYmxvY2tlZC5q
cyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zZXRfdmVyc2lvbl9i
bG9ja2VkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzM2ViN2M5OTg4MjQ2MmI0NjZiMTA4ZWZlODRmNGU3NzJl
NGYwNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvc2V0X3ZlcnNpb25fYmxvY2tlZC5qcwpAQCAtMCwwICsxLDU1IEBACitpZiAodGhp
cy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMn
KTsKK30KKworZGVzY3JpcHRpb24oIkFuIG9wZW4gY29ubmVjdGlvbiBibG9ja3MgYSBzZXBhcmF0
ZSBjb25uZWN0aW9uJ3Mgc2V0VmVyc2lvbiBjYWxsIik7CisKK2Nvbm5lY3Rpb25zID0gW10KK2Z1
bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgb3BlbkRC
Q29ubmVjdGlvbigpOworfQorCitmdW5jdGlvbiBvcGVuREJDb25uZWN0aW9uKCkKK3sKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3NldC12ZXJzaW9uLWJsb2NrZWQn
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNj
ZXNzKCkKK3sKKyAgICBjb25uZWN0aW9uID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICBjb25u
ZWN0aW9ucy5wdXNoKGNvbm5lY3Rpb24pOworICAgIG9yaWdpbmFsX3ZlcnNpb24gPSBjb25uZWN0
aW9uLnZlcnNpb247CisgICAgaWYgKGNvbm5lY3Rpb25zLmxlbmd0aCA8IDIpCisgICAgICAgIG9w
ZW5EQkNvbm5lY3Rpb24oKTsKKyAgICBlbHNlIHsKKyAgICAgICAgdmFyIHZlcnNpb25DaGFuZ2VS
ZXF1ZXN0ID0gZXZhbEFuZExvZygiY29ubmVjdGlvbnNbMF0uc2V0VmVyc2lvbigndmVyc2lvbiAx
JykiKTsKKyAgICAgICAgdmVyc2lvbkNoYW5nZVJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworICAgICAgICB2ZXJzaW9uQ2hhbmdlUmVxdWVzdC5vbnN1Y2Nlc3MgPSBp
blNldFZlcnNpb247CisgICAgICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uYmxvY2tlZCA9IGJs
b2NrZWQ7CisgICAgfQorfQorCitzZWVuX2Jsb2NrZWRfZXZlbnQgPSBmYWxzZTsKK2Z1bmN0aW9u
IGJsb2NrZWQoKQoreworICAgIGV2YWxBbmRMb2coInNlZW5fYmxvY2tlZF9ldmVudCA9IHRydWUi
KTsKKyAgICBibG9ja2VkX2V2ZW50ID0gZXZlbnQ7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJibG9ja2VkX2V2ZW50LnZlcnNpb24iLCAidmVyc2lvbiAxIik7CisgICAgc2hvdWxkRXZhbHVh
dGVUbygiYmxvY2tlZF9ldmVudC50YXJnZXQucmVhZHlTdGF0ZSIsIDEpOworICAgIGV2YWxBbmRM
b2coImNvbm5lY3Rpb25zWzFdLmNsb3NlKCkiKTsKK30KKworZnVuY3Rpb24gaW5TZXRWZXJzaW9u
KCkKK3sKKyAgICBkZWJ1ZygiaW4gc2V0VmVyc2lvbi5vbnN1Y2Nlc3MiKTsKKyAgICBzaG91bGRC
ZVRydWUoInNlZW5fYmxvY2tlZF9ldmVudCIpOworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jlcyhj
b25uZWN0aW9uc1swXSk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zZXRfdmVyc2lv
bl9xdWV1ZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zZXRf
dmVyc2lvbl9xdWV1ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYWEzNDVkNDM3YzY4NThiYWRhMzc2MmQ5OTY2
MWZlZDExYjY1YzYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL3NldF92ZXJzaW9uX3F1ZXVlLmpzCkBAIC0wLDAgKzEsMTIyIEBACitp
ZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFy
ZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIjQgb3BlbiBjb25uZWN0aW9ucyB0cnkgdG8gc2V0
VmVyc2lvbiBhdCB0aGUgc2FtZSB0aW1lLiAgMyBjb25uZWN0aW9ucyBldmVudHVhbGx5IGNsb3Nl
LCBhbGxvd2luZyAxIHNldFZlcnNpb24gY2FsbCB0byBwcm9jZWVkLiIpOworCitjb25uZWN0aW9u
cyA9IFtdCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwor
CisgICAgb3BlbkRCQ29ubmVjdGlvbigpOworfQorCitmdW5jdGlvbiBvcGVuREJDb25uZWN0aW9u
KCkKK3sKKyAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbignc2V0LXZlcnNp
b24tcXVldWUnKSIpOworICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICBy
ZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBv
cGVuU3VjY2VzcygpCit7CisgICAgY29ubmVjdGlvbiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Cisg
ICAgY29ubmVjdGlvbi5vbnZlcnNpb25jaGFuZ2UgPSBnZW5lcmF0ZVZlcnNpb25DaGFuZ2VIYW5k
bGVyKCk7CisgICAgY29ubmVjdGlvbnMucHVzaChjb25uZWN0aW9uKTsKKyAgICBpZiAoY29ubmVj
dGlvbnMubGVuZ3RoIDwgNCkKKyAgICAgICAgb3BlbkRCQ29ubmVjdGlvbigpOworICAgIGVsc2Ug
eworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiY29ubmVjdGlvbnNbMF0uc2V0VmVyc2lv
bigndmVyc2lvbiAwJykiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZXZl
bnQpeyBjb25uZWN0aW9uRXJyb3IoZXZlbnQsIDApIH07CisgICAgICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbmJsb2Nr
ZWQgPSBibG9ja2VkMDsKKyAgICAgICAgcmVxdWVzdDEgPSBldmFsQW5kTG9nKCJjb25uZWN0aW9u
c1sxXS5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgICAgICByZXF1ZXN0MS5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3QxLm9uc3VjY2VzcyA9
IGluU2V0VmVyc2lvbjE7CisgICAgICAgIHJlcXVlc3QxLm9uYmxvY2tlZCA9IGJsb2NrZWQxOwor
ICAgICAgICByZXF1ZXN0MiA9IGV2YWxBbmRMb2coImNvbm5lY3Rpb25zWzJdLnNldFZlcnNpb24o
J3ZlcnNpb24gMicpIik7CisgICAgICAgIHJlcXVlc3QyLm9uZXJyb3IgPSBmdW5jdGlvbihldmVu
dCl7IGNvbm5lY3Rpb25FcnJvcihldmVudCwgMikgfTsKKyAgICAgICAgcmVxdWVzdDIub25zdWNj
ZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdDIub25ibG9j
a2VkID0gYmxvY2tlZDI7CisgICAgICAgIHJlcXVlc3QzID0gZXZhbEFuZExvZygiY29ubmVjdGlv
bnNbM10uc2V0VmVyc2lvbigndmVyc2lvbiAzJykiKTsKKyAgICAgICAgcmVxdWVzdDMub25lcnJv
ciA9IGZ1bmN0aW9uKGV2ZW50KXsgY29ubmVjdGlvbkVycm9yKGV2ZW50LCAzKSB9OworICAgICAg
ICByZXF1ZXN0My5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOworICAgICAg
ICByZXF1ZXN0My5vbmJsb2NrZWQgPSBibG9ja2VkMzsKKyAgICAgICAgZGVidWcoIiIpOworICAg
IH0KK30KKworZnVuY3Rpb24gZ2VuZXJhdGVWZXJzaW9uQ2hhbmdlSGFuZGxlcigpCit7CisgICAg
dmFyIGNvbm5lY3Rpb25OdW0gPSBjb25uZWN0aW9ucy5sZW5ndGg7CisgICAgcmV0dXJuIGZ1bmN0
aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJldmVudC52ZXJzaW9uLmxl
bmd0aCA+IDAiKTsKKyAgICAgICAgZGVidWcoImNvbm5lY3Rpb25bIiArIGNvbm5lY3Rpb25OdW0g
KyAiXSByZWNlaXZlZCB2ZXJzaW9uQ2hhbmdlRXZlbnQ6ICIgKyBldmVudC52ZXJzaW9uKTsKKyAg
ICB9Cit9CisKK2Jsb2NrZWQwZmlyZWQgPSBmYWxzZTsKK2Jsb2NrZWQyZmlyZWQgPSBmYWxzZTsK
K2Z1bmN0aW9uIGJsb2NrZWQwKGV2ZW50KQoreworICAgIGRlYnVnKCIiKTsKKyAgICB0ZXN0UGFz
c2VkKCJjb25uZWN0aW9uWzBdIGdvdCBibG9ja2VkIGV2ZW50Iik7CisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJldmVudC52ZXJzaW9uIiwgInZlcnNpb24gMCIpOworICAgIGRlYnVnKCJDbG9z
ZSB0aGUgY29ubmVjdGlvbiB0aGF0IHJlY2VpdmVkIHRoZSBibG9jayBldmVudDoiKTsKKyAgICBl
dmFsQW5kTG9nKCJjb25uZWN0aW9uc1swXS5jbG9zZSgpIik7CisgICAgZGVidWcoIkNsb3NlIGFu
b3RoZXIgY29ubmVjdGlvbiBhcyB3ZWxsLCB0byB0ZXN0IDQuNy40LW5vdGU6Iik7CisgICAgZXZh
bEFuZExvZygiY29ubmVjdGlvbnNbM10uY2xvc2UoKSIpOworICAgIGV2YWxBbmRMb2coImJsb2Nr
ZWQwZmlyZWQgPSB0cnVlIik7CisgICAgZGVidWcoIiIpOworfQorCitmdW5jdGlvbiBibG9ja2Vk
MShldmVudCkKK3sKKyAgICBkZWJ1ZygiIikKKyAgICB0ZXN0UGFzc2VkKCJjb25uZWN0aW9uWzFd
IGdvdCBibG9ja2VkIGV2ZW50Iik7CisgICAgZGVidWcoIkVuc3VyZSB0aGF0IHRoaXMgYmxvY2tl
ZCBldmVudCBpcyBpbiBvcmRlcjoiKTsKKyAgICBzaG91bGRCZVRydWUoImJsb2NrZWQwZmlyZWQi
KTsKKyAgICBzaG91bGRCZUZhbHNlKCJibG9ja2VkMmZpcmVkIik7CisgICAgZGVidWcoIiIpCit9
CisKK2Z1bmN0aW9uIGJsb2NrZWQyKGV2ZW50KQoreworICAgIGRlYnVnKCIiKQorICAgIHRlc3RQ
YXNzZWQoImNvbm5lY3Rpb25bMl0gZ290IGJsb2NrZWQgZXZlbnQiKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImV2ZW50LnZlcnNpb24iLCAidmVyc2lvbiAyIik7CisgICAgZXZhbEFuZExv
ZygiY29ubmVjdGlvbnNbMl0uY2xvc2UoKSIpOworICAgIGV2YWxBbmRMb2coImJsb2NrZWQyZmly
ZWQgPSB0cnVlIik7CisgICAgZGVidWcoIiIpCit9CisKK2Z1bmN0aW9uIGJsb2NrZWQzKGV2ZW50
KQoreworICAgIGRlYnVnKCIiKQorICAgIHRlc3RQYXNzZWQoImNvbm5lY3Rpb25bM10gZ290IGJs
b2NrZWQgZXZlbnQiKTsKKyAgICBkZWJ1ZygiTm90ZTogVGhpcyBtZWFucyB0aGF0IGEgY29ubmVj
dGlvbiBjYW4gcmVjZWl2ZSBhIGJsb2NrZWQgZXZlbnQgYWZ0ZXIgaXRzIGNsb3NlKCkgbWV0aG9k
IGhhcyBiZWVuIGNhbGxlZC4gIFNwZWMgaXMgc2lsZW50IG9uIHRoZSBpc3N1ZSBhbmQgdGhpcyBp
cyBlYXNpZXN0IHRvIGltcGxlbWVudC4iKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2
ZW50LnZlcnNpb24iLCAidmVyc2lvbiAzIik7Cit9CisKK2Z1bmN0aW9uIGNvbm5lY3Rpb25FcnJv
cihldmVudCwgY29ubmVjdGlvbklkKQoreworICAgIGRlYnVnKCIiKQorICAgIHRlc3RQYXNzZWQo
ImNvbm5lY3Rpb25bIiArIGNvbm5lY3Rpb25JZCArICJdIGdvdCBlcnJvciBldmVudCIpOworICAg
IHNob3VsZEJlKCJldmVudC50YXJnZXQuZXJyb3JDb2RlIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9u
LkFCT1JUX0VSUiIpCisgICAgaWYgKCd3ZWJraXRFcnJvck1lc3NhZ2UnIGluIGV2ZW50LnRhcmdl
dCkgeworICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LndlYmtpdEVycm9yTWVzc2FnZS5s
ZW5ndGggPiAwIiwgInRydWUiKTsKKyAgICAgICAgZGVidWcoZXZlbnQudGFyZ2V0LndlYmtpdEVy
cm9yTWVzc2FnZSk7CisgICAgfQorfQorCitmdW5jdGlvbiBpblNldFZlcnNpb24xKGV2ZW50KQor
eworICAgIGRlYnVnKCIiKQorICAgIHRlc3RQYXNzZWQoImNvbm5lY3Rpb25bMV0gZ290IGludG8g
U2V0VmVyc2lvbiIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24t
YWJvcnQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNh
Y3Rpb24tYWJvcnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTg2OGU4NzllM2M0NDk0NmM5ZDkxMWJjZThiZTY5
NjAyMDczMzc2MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1hYm9ydC5qcwpAQCAtMCwwICsxLDkwIEBACitpZiAo
dGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQu
anMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgdHJhbnNhY3Rpb24gYWJvcnRzIHNlbmQgdGhl
IHByb3BlciBvbmFib3J0IG1lc3NhZ2VzLi4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAg
cmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRl
eGVkREIub3BlbignbmFtZScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9u
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiBzZXRWZXJzaW9uKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNp
b24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4aXN0
aW5nOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBkZWxldGVFeGlzdGluZygpCit7CisgICAgZGVidWcoInNldFZlcnNpb25TdWNj
ZXNzKCk6Iik7CisgICAgc2VsZi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFy
Z2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKyAgICB0
cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgZXZhbEFuZExvZygi
dHJhbnMub25jb21wbGV0ZSA9IHN0YXJ0VGVzdCIpOworCisgICAgZGVsZXRlQWxsT2JqZWN0U3Rv
cmVzKGRiKTsKKworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
c3RvcmUuYWRkKHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzdGFydFRl
c3QoKQoreworICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihb
J3N0b3JlTmFtZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIGV2YWxBbmRM
b2coInRyYW5zLm9uYWJvcnQgPSB0cmFuc2FjdGlvbkFib3J0ZWQiKTsKKyAgICBldmFsQW5kTG9n
KCJ0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2siKTsKKyAgICBz
dG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScp
Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlMicsIHk6
ICd6enoyJ30sICdrZXkyJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmaXJzdEFkZDsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7CisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlMycsIHk6ICd6enozJ30sICdr
ZXkzJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBzZWNvbmRBZGQ7CisgICAgdHJhbnMuYWJv
cnQoKTsKKworICAgIGZpcnN0RXJyb3IgPSBmYWxzZTsKKyAgICBzZWNvbmRFcnJvciA9IGZhbHNl
OworICAgIGFib3J0RmlyZWQgPSBmYWxzZTsKK30KKworZnVuY3Rpb24gZmlyc3RBZGQoKQorewor
ICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuZXJyb3JDb2RlIiwgIklEQkRhdGFiYXNlRXhjZXB0
aW9uLkFCT1JUX0VSUiIpOworICAgIHNob3VsZEJlRmFsc2UoImZpcnN0RXJyb3IiKTsKKyAgICBz
aG91bGRCZUZhbHNlKCJzZWNvbmRFcnJvciIpOworICAgIHNob3VsZEJlRmFsc2UoImFib3J0Rmly
ZWQiKTsKKyAgICBmaXJzdEVycm9yID0gdHJ1ZTsKKworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRp
b24oInN0b3JlLmFkZCh7eDogJ3ZhbHVlNCcsIHk6ICd6eno0J30sICdrZXk0JykiLCAiSURCRGF0
YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7Cit9CisKK2Z1bmN0aW9u
IHNlY29uZEFkZCgpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5lcnJvckNvZGUiLCAi
SURCRGF0YWJhc2VFeGNlcHRpb24uQUJPUlRfRVJSIik7CisgICAgc2hvdWxkQmVUcnVlKCJmaXJz
dEVycm9yIik7CisgICAgc2hvdWxkQmVGYWxzZSgic2Vjb25kRXJyb3IiKTsKKyAgICBzaG91bGRC
ZUZhbHNlKCJhYm9ydEZpcmVkIik7CisgICAgc2Vjb25kRXJyb3IgPSB0cnVlOworfQorCitmdW5j
dGlvbiB0cmFuc2FjdGlvbkFib3J0ZWQoKQoreworICAgIHNob3VsZEJlVHJ1ZSgiZmlyc3RFcnJv
ciIpOworICAgIHNob3VsZEJlVHJ1ZSgic2Vjb25kRXJyb3IiKTsKKyAgICBzaG91bGRCZUZhbHNl
KCJhYm9ydEZpcmVkIik7CisgICAgYWJvcnRGaXJlZCA9IHRydWU7CisKKyAgICBldmFsQW5kRXhw
ZWN0RXhjZXB0aW9uKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZTUnLCB5OiAnenp6NSd9LCAna2V5NScp
IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOworICAg
IGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3Ry
YW5zYWN0aW9uLWFmdGVyLWNsb3NlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL3RyYW5zYWN0aW9uLWFmdGVyLWNsb3NlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2MGY2ZGJk
NWI5YzlhZWFiYjRhNTBmMjQ1YjQxYWQ3OTM1YWZlNzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tYWZ0ZXItY2xv
c2UuanMKQEAgLTAsMCArMSw4MSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGlt
cG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7
CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0
IGNsb3NpbmcgYSBkYXRhYmFzZSBjb25uZWN0aW9uIGluIEluZGV4ZWREQi4iKTsKKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndHJhbnNhY3Rpb24tYWZ0ZXItY2xvc2UnKSIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNz
KCkKK3sKKyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBzZWxmLmRiID0gZXZhbEFu
ZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gaW5TZXRWZXJzaW9uOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBpblNldFZlcnNpb24oKQoreworICAgIGRl
bGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBldmVudC50YXJnZXQucmVzdWx0Lm9uY29t
cGxldGUgPSBydW5GaXJzdFJlZ3VsYXJUcmFuc2FjdGlvbjsKKyAgICBldmVudC50YXJnZXQucmVz
dWx0Lm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICBzdG9yZSA9IGV2YWxB
bmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHN0b3JlLnB1dCgneCcsICd5JykiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IG9uUHV0U3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb25QdXRTdWNjZXNzKCkKK3sK
KyAgICB0ZXN0UGFzc2VkKCJQdXQgc3VjY2VzcyIpCit9CisKK2Z1bmN0aW9uIHJ1bkZpcnN0UmVn
dWxhclRyYW5zYWN0aW9uKCkKK3sKKyAgICBkZWJ1ZygicnVubmluZyBmaXJzdCB0cmFuc2FjdGlv
biIpCisgICAgY3VycmVudFRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygiY3VycmVudFRyYW5zYWN0
aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRF
KSIpOworICAgIGN1cnJlbnRUcmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2Fs
bGJhY2s7CisgICAgY3VycmVudFRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmaXJzdFRyYW5zYWN0
aW9uQ29tcGxldGU7CisgICAgb2JqZWN0U3RvcmUgPSBjdXJyZW50VHJhbnNhY3Rpb24ub2JqZWN0
U3RvcmUoJ3N0b3JlJyk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLnB1
dCgnYScsICdiJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKK30KKworZnVuY3Rpb24gZmlyc3RUcmFuc2FjdGlvbkNvbXBsZXRlKCkKK3sKKyAgICBl
dmFsQW5kTG9nKCJkYi5jbG9zZSgpIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIu
dHJhbnNhY3Rpb24oWydzdG9yZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIsICJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9FUlIiKTsKKworICAgIGRlYnVnKCIiKQorICAg
IGRlYnVnKCJ2ZXJpZnkgdGhhdCB3ZSBjYW4gcmVvcGVuIHRoZSBkYiBhZnRlciBjYWxsaW5nIGNs
b3NlIikKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0
aW9uLWFmdGVyLWNsb3NlJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9uU2Vjb25kT3Bl
bgorICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiBvblNlY29uZE9wZW4oKSB7CisgICAgc2Vjb25kX2RiID0gZXZhbEFuZExvZygic2Vj
b25kX2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIGN1cnJlbnRUcmFuc2FjdGlvbiA9
IGV2YWxBbmRMb2coImN1cnJlbnRUcmFuc2FjdGlvbiA9IHNlY29uZF9kYi50cmFuc2FjdGlvbihb
J3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgc3RvcmUgPSBjdXJy
ZW50VHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJyk7CisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBzdG9yZS5wdXQoJzEnLCAnMicpIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBvbkZpbmFsUHV0U3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICBjdXJyZW50VHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZp
bmlzaEpTVGVzdDsKKyAgICBjdXJyZW50VHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRB
Ym9ydENhbGxiYWNrOworfQorCitmdW5jdGlvbiBvbkZpbmFsUHV0U3VjY2VzcygpIHsKKyAgICB0
ZXN0UGFzc2VkKCJmaW5hbCBwdXQgc3VjY2VzcyIpOworfQorCit0ZXN0KCk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tYW5k
LW9iamVjdHN0b3JlLWNhbGxzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL3RyYW5zYWN0aW9uLWFuZC1vYmplY3RzdG9yZS1jYWxscy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
YWM2MWQ4MzJiOTdmMzNjYTZmMDI2MjlkYjQ4YWMxM2UyMzc2MjI2Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWFu
ZC1vYmplY3RzdG9yZS1jYWxscy5qcwpAQCAtMCwwICsxLDEyNCBAQAoraWYgKHRoaXMuaW1wb3J0
U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisK
K2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIHRyYW5zYWN0aW9uIGFuZCBvYmplY3RTdG9y
ZSBjYWxscyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhl
cygpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCd0cmFuc2Fj
dGlvbi1hbmQtb2JqZWN0c3RvcmUtY2FsbHMnLCAnZGVzY3JpcHRpb24nKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBz
ZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInJlc3VsdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVhbkRhdGFi
YXNlKCkKK3sKKyAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBldmFsQW5kTG9n
KCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnYScpIik7CisgICAgZXZhbEFuZExvZygiZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ2InKSIpOworICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdzdG9yZScpLmNyZWF0ZUluZGV4KCdpbmRleCcsICdzb21lX3BhdGgnKSIpOworICAgIGV2YWxB
bmRMb2coInRyYW5zLmFkZEV2ZW50TGlzdGVuZXIoJ2NvbXBsZXRlJywgY3JlYXRlZCwgdHJ1ZSki
KTsKKyAgICBkZWJ1ZygiIik7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZWQoKQoreworICAgIHRyYW5z
ID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ2EnXSkiKTsKKyAgICBldmFs
QW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYScpIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2Vw
dGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ2InKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1Rf
Rk9VTkRfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigidHJhbnMub2JqZWN0U3Rv
cmUoJ3gnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7CisgICAgZGVi
dWcoIiIpOworCisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9u
KFsnYSddKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdhJykiKTsKKyAg
ICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0cmFucy5vYmplY3RTdG9yZSgnYicpIiwgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJ0cmFucy5vYmplY3RTdG9yZSgneCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9G
T1VORF9FUlIiKTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICB0cmFucyA9IGV2YWxBbmRMb2coInRy
YW5zID0gZGIudHJhbnNhY3Rpb24oWydiJ10pIik7CisgICAgZXZhbEFuZExvZygidHJhbnMub2Jq
ZWN0U3RvcmUoJ2InKSIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInRyYW5zLm9iamVj
dFN0b3JlKCdhJykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOworICAg
IGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInRyYW5zLm9iamVjdFN0b3JlKCd4JykiLCAiSURCRGF0
YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOworICAgIGRlYnVnKCIiKTsKKworICAgIHRy
YW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ2EnLCAnYiddKSIpOwor
ICAgIGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdhJykiKTsKKyAgICBldmFsQW5kTG9n
KCJ0cmFucy5vYmplY3RTdG9yZSgnYicpIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigi
dHJhbnMub2JqZWN0U3RvcmUoJ3gnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRf
RVJSIik7CisgICAgZGVidWcoIiIpOworCisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9
IGRiLnRyYW5zYWN0aW9uKFsnYicsICdhJ10pIik7CisgICAgZXZhbEFuZExvZygidHJhbnMub2Jq
ZWN0U3RvcmUoJ2EnKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdiJyki
KTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0cmFucy5vYmplY3RTdG9yZSgneCcpIiwg
IklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKKyAgICBkZWJ1ZygiIik7CisK
KyAgICBkZWJ1ZygiUGFzc2luZyBhIHN0cmluZyBhcyB0aGUgZmlyc3QgYXJndW1lbnQgaXMgYSBz
aG9ydGN1dCBmb3IganVzdCBvbmUgb2JqZWN0IHN0b3JlOiIpOworICAgIHRyYW5zID0gZXZhbEFu
ZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignYScpIik7CisgICAgZXZhbEFuZExvZygidHJh
bnMub2JqZWN0U3RvcmUoJ2EnKSIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInRyYW5z
Lm9iamVjdFN0b3JlKCdiJykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIp
OworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInRyYW5zLm9iamVjdFN0b3JlKCd4JykiLCAi
SURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOworICAgIGRlYnVnKCIiKTsKKwor
ICAgIHNob3VsZFRocm93KCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCkiKTsKKyAgICBkZWJ1Zygi
Iik7CisKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbihbJ3gnXSki
LCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOworICAgIGV2YWxBbmRFeHBl
Y3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKFsneCddKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlv
bi5OT1RfRk9VTkRfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNh
Y3Rpb24oWydhJywgJ3gnXSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIp
OworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKFsneCcsICd4J10p
IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKKyAgICBldmFsQW5kRXhw
ZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbihbJ2EnLCAneCcsICdiJ10pIiwgIklEQkRhdGFi
YXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICBkZWJ1
ZygiRXhjZXB0aW9uIHRocm93biB3aGVuIG5vIHN0b3JlcyBzcGVjaWZpZWQ6Iik7CisgICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oW10pIiwgIkRPTUV4Y2VwdGlvbi5J
TlZBTElEX0FDQ0VTU19FUlIiKTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICBkZWJ1Zygie30gY29l
cmNlcyB0byBhIHN0cmluZyAtIHNvIG5vIG1hdGNoLCBidXQgbm90IGEgdHlwZSBlcnJvcjoiKTsK
KyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbih7fSkiLCAiSURCRGF0
YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRp
b24oImRiLnRyYW5zYWN0aW9uKHttb2RlOjB9KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1Rf
Rk9VTkRfRVJSIik7CisgICAgZGVidWcoIiIpOworCisgICAgZGVidWcoIk92ZXJyaWRpbmcgdGhl
IGRlZmF1bHQgc3RyaW5nIGNvZXJjaW9uIG1ha2VzIHRoZXNlIHdvcms6Iik7CisgICAgZXZhbEFu
ZExvZygiZGIudHJhbnNhY3Rpb24oe3RvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuICdhJzt9fSki
KTsKKyAgICBldmFsQW5kTG9nKCJkYi50cmFuc2FjdGlvbihbe3RvU3RyaW5nOmZ1bmN0aW9uKCl7
cmV0dXJuICdhJzt9fV0pIik7CisgICAgZGVidWcoIi4uLiBidXQgeW91IHN0aWxsIG5lZWQgdG8g
c3BlY2lmeSBhIHJlYWwgc3RvcmU6Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIu
dHJhbnNhY3Rpb24oW3t0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiAneCc7fX1dKSIsICJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2Vw
dGlvbigiZGIudHJhbnNhY3Rpb24oW3t0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiAneCc7fX1d
KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7CisgICAgZGVidWcoIiIp
OworCisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3Rv
cmUnXSkiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9IG51bGwiKTsKKyAgICB0cmFucy5v
bmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSBhZnRlckNvbXBs
ZXRlOworICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyki
KTsKKyAgICBzaG91bGRCZVRydWUoInN0b3JlICE9IG51bGwiKTsKKyAgICBldmFsQW5kTG9nKCJz
dG9yZS5nZXQoJ3NvbWVfa2V5JykiKTsKK30KKworZnVuY3Rpb24gYWZ0ZXJDb21wbGV0ZSgpCit7
CisgICAgZGVidWcoInRyYW5zYWN0aW9uIGNvbXBsZXRlLCBlbnN1cmluZyBtZXRob2RzIGZhaWwi
KTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5zICE9IG51bGwiKTsKKyAgICBzaG91bGRCZVRydWUo
InN0b3JlICE9IG51bGwiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0cmFucy5vYmpl
Y3RTdG9yZSgnc3RvcmUnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9FUlIi
KTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5pbmRleCgnaW5kZXgnKSIsICJJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9FUlIiKTsKKworICAgIGZpbmlzaEpTVGVz
dCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWJh
c2ljcy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2Fj
dGlvbi1iYXNpY3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWI1ZGRjNmRiZGQ4MTkwODcxOTM3MjU0MmZiMzg5
ZWU1MjZjMmVjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1iYXNpY3MuanMKQEAgLTAsMCArMSwyODYgQEAKK2lm
ICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJl
ZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgdHJhbnNhY3Rpb24gYmFz
aWNzLiIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygp
OworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCd0cmFuc2FjdGlv
bi1iYXNpY3MnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBzZWxm
LmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFz
ZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiLCBjaGVja01ldGFkYXRhRW1wdHkp
OworICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25jb21wbGV0ZSA9IHRlc3RTZXRWZXJzaW9uQWJv
cnQxOworfQorCitmdW5jdGlvbiB0ZXN0U2V0VmVyc2lvbkFib3J0MSgpCit7CisgICAgY2hlY2tN
ZXRhZGF0YUVtcHR5KCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdGFy
dFNldFZlcnNpb24oJ3ZlcnNpb24gZmFpbCcpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBh
ZGRSZW1vdmVJREJPYmplY3RzOworfQorCitmdW5jdGlvbiBhZGRSZW1vdmVJREJPYmplY3RzKCkK
K3sKKyAgICBkZWJ1ZygiYWRkUmVtb3ZlSURCT2JqZWN0cygpOiIpOworICAgIHZhciB0cmFucyA9
IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJl
VHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKyAgICB0cmFucy5hZGRFdmVudExpc3RlbmVyKCdhYm9y
dCcsIHRlc3RTZXRWZXJzaW9uQWJvcnQyLCB0cnVlKTsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0g
dW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7CisKKyAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9n
KCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZUZhaWwnLCBudWxsKSIpOworICAg
IHZhciBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4
RmFpbCcsICd4JykiKTsKKworICAgIGV2YWxBbmRMb2coImRiLmRlbGV0ZU9iamVjdFN0b3JlKCdz
dG9yZUZhaWwnKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlLmRlbGV0ZUluZGV4KCdpbmRleEZh
aWwnKSIpOworCisgICAgdHJhbnMuYWJvcnQoKTsKK30KKworZnVuY3Rpb24gdGVzdFNldFZlcnNp
b25BYm9ydDIoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidGVzdFNldFZlcnNpb25B
Ym9ydDIoKToiKTsKKyAgICBjaGVja01ldGFkYXRhRW1wdHkoKTsKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygicmVxdWVzdCA9IHN0YXJ0U2V0VmVyc2lvbigndmVyc2lvbiBmYWlsJykiKTsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZFJlbW92ZUFkZElEQk9iamVjdHM7Cit9CisKK2Z1bmN0
aW9uIGFkZFJlbW92ZUFkZElEQk9iamVjdHMoKQoreworICAgIGRlYnVnKCJhZGRSZW1vdmVBZGRJ
REJPYmplY3RzKCk6Iik7CisgICAgdmFyIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOwor
ICAgIHRyYW5zLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgdGVzdFNldFZlcnNpb25BYm9ydDMs
IGZhbHNlKTsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJh
Y2s7CisKKyAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVj
dFN0b3JlKCdzdG9yZUZhaWwnLCBudWxsKSIpOworICAgIHZhciBpbmRleCA9IGV2YWxBbmRMb2co
ImluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4RmFpbCcsICd4JykiKTsKKworICAgIGV2
YWxBbmRMb2coImRiLmRlbGV0ZU9iamVjdFN0b3JlKCdzdG9yZUZhaWwnKSIpOworICAgIGV2YWxB
bmRMb2coInN0b3JlLmRlbGV0ZUluZGV4KCdpbmRleEZhaWwnKSIpOworCisgICAgdmFyIHN0b3Jl
ID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVGYWlsJywg
bnVsbCkiKTsKKyAgICB2YXIgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmNyZWF0
ZUluZGV4KCdpbmRleEZhaWwnLCAneCcpIik7CisKKyAgICB0cmFucy5hYm9ydCgpOworfQorCitm
dW5jdGlvbiB0ZXN0U2V0VmVyc2lvbkFib3J0MygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRl
YnVnKCJ0ZXN0U2V0VmVyc2lvbkFib3J0MygpOiIpOworICAgIHNob3VsZEJlRmFsc2UoImV2ZW50
LmNhbmNlbGFibGUiKTsKKyAgICBjaGVja01ldGFkYXRhRW1wdHkoKTsKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IHN0YXJ0U2V0VmVyc2lvbigndmVyc2lvbiBmYWlsJykiKTsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZElEQk9iamVjdHM7Cit9CisKK2Z1bmN0aW9uIGFk
ZElEQk9iamVjdHMoKQoreworICAgIGRlYnVnKCJhZGRJREJPYmplY3RzKCk6Iik7CisgICAgc2hv
dWxkQmVGYWxzZSgiZXZlbnQuY2FuY2VsYWJsZSIpOworICAgIHZhciB0cmFucyA9IGV2YWxBbmRM
b2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJh
bnMgIT09IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdGVzdEluYWN0aXZlQWJvcnRlZFRy
YW5zYWN0aW9uOworICAgIHRyYW5zLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQ29tcGxldGVDYWxs
YmFjazsKKworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RT
dG9yZSgnc3RvcmVGYWlsJywgbnVsbCkiKTsKKyAgICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4
ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4RmFpbCcsICd4JykiKTsKKworICAgIHRyYW5zLmFi
b3J0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RJbmFjdGl2ZUFib3J0ZWRUcmFuc2FjdGlvbigpCit7
CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0SW5hY3RpdmVBYm9ydGVkVHJhbnNhY3Rp
b24oKToiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJpbmRleC5vcGVuQ3Vyc29yKCki
LCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7CisgICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXgub3BlbktleUN1cnNvcigpIiwgIklEQkRhdGFi
YXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOworICAgIGV2YWxBbmRFeHBl
Y3RFeGNlcHRpb24oImluZGV4LmdldCgwKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FD
VElPTl9JTkFDVElWRV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJpbmRleC5n
ZXRLZXkoMCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJS
Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXguY291bnQoKSIsICJJREJEYXRh
YmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsKKworICAgIGV2YWxBbmRF
eHBlY3RFeGNlcHRpb24oInN0b3JlLnB1dCgwLCAwKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5U
UkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJz
dG9yZS5hZGQoMCwgMCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJ
VkVfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuZGVsZXRlKDApIiwg
IklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOworICAgIGV2
YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmNsZWFyKCkiLCAiSURCRGF0YWJhc2VFeGNlcHRp
b24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlv
bigic3RvcmUuZ2V0KDApIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNU
SVZFX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLm9wZW5DdXJzb3Io
KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsKKwor
ICAgIHRlc3RTZXRWZXJzaW9uQWJvcnQ0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTZXRWZXJzaW9u
QWJvcnQ0KCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInRlc3RTZXRWZXJzaW9uQWJv
cnQ0KCk6Iik7CisgICAgY2hlY2tNZXRhZGF0YUVtcHR5KCk7CisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBzdGFydFNldFZlcnNpb24oJ3ZlcnNpb24gZmFpbCcpIik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRJREJPYmplY3RzQW5kQ29tbWl0OworfQorCitmdW5jdGlv
biBhZGRJREJPYmplY3RzQW5kQ29tbWl0KCkKK3sKKyAgICBkZWJ1ZygiYWRkSURCT2JqZWN0c0Fu
ZENvbW1pdCgpOiIpOworICAgIHZhciB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKyAg
ICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisKKyAgICBzdG9yZSA9
IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlRmFpbCcsIG51
bGwpIik7CisgICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4
KCdpbmRleEZhaWwnLCAneCcpIik7CisKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gdGVzdEluYWN0
aXZlQ29tcGxldGVkVHJhbnNhY3Rpb247Cit9CisKK2Z1bmN0aW9uIHRlc3RJbmFjdGl2ZUNvbXBs
ZXRlZFRyYW5zYWN0aW9uKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInRlc3RJbmFj
dGl2ZUNvbXBsZXRlZFRyYW5zYWN0aW9uKCk6Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlv
bigiaW5kZXgub3BlbkN1cnNvcigpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9O
X0lOQUNUSVZFX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4Lm9wZW5L
ZXlDdXJzb3IoKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9F
UlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJpbmRleC5nZXQoMCkiLCAiSURCRGF0
YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7CisgICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigiaW5kZXguZ2V0S2V5KDApIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRS
QU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImlu
ZGV4LmNvdW50KCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVf
RVJSIik7CisKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5wdXQoMCwgMCkiLCAi
SURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7CisgICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuYWRkKDAsIDApIiwgIklEQkRhdGFiYXNlRXhjZXB0
aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRp
b24oInN0b3JlLmRlbGV0ZSgwKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9J
TkFDVElWRV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5jbGVhcigp
IiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOworICAg
IGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmdldCgwKSIsICJJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJzdG9yZS5vcGVuQ3Vyc29yKCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJ
T05fSU5BQ1RJVkVfRVJSIik7CisKKyAgICB0ZXN0U2V0VmVyc2lvbkFib3J0NSgpOworfQorCitm
dW5jdGlvbiB0ZXN0U2V0VmVyc2lvbkFib3J0NSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRl
YnVnKCJ0ZXN0U2V0VmVyc2lvbkFib3J0NSgpOiIpOworICAgIGNoZWNrTWV0YWRhdGFFeGlzdGlu
Z09iamVjdFN0b3JlKCk7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdGFy
dFNldFZlcnNpb24oJ3ZlcnNpb24gZmFpbCcpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBy
ZW1vdmVJREJPYmplY3RzOworfQorCitmdW5jdGlvbiByZW1vdmVJREJPYmplY3RzKCkKK3sKKyAg
ICBkZWJ1ZygicmVtb3ZlSURCT2JqZWN0cygpOiIpOworICAgIHZhciB0cmFucyA9IGV2YWxBbmRM
b2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJh
bnMgIT09IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdGVzdFNldFZlcnNpb25BYm9ydDY7
CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOworCisg
ICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3Rv
cmVGYWlsJykiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZS5kZWxldGVJbmRleCgnaW5kZXhGYWls
JykiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5kZWxldGVPYmplY3RTdG9yZSgnc3RvcmVGYWlsJyki
KTsKKworICAgIHRyYW5zLmFib3J0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTZXRWZXJzaW9uQWJv
cnQ2KCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInRlc3RTZXRWZXJzaW9uQWJvcnQ2
KCk6Iik7CisgICAgY2hlY2tNZXRhZGF0YUV4aXN0aW5nT2JqZWN0U3RvcmUoKTsKKyAgICBzZXRO
ZXdWZXJzaW9uKCk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0U2V0VmVyc2lvbih2ZXJzaW9uTmFtZSkK
K3sKKyAgICByZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbih2ZXJzaW9uTmFtZSk7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmV0dXJuIHJlcXVlc3Q7
Cit9CisKK2Z1bmN0aW9uIGNoZWNrTWV0YWRhdGFFbXB0eSgpCit7CisgICAgc2hvdWxkQmUoInNl
bGYuZGIub2JqZWN0U3RvcmVOYW1lcyIsICJbXSIpOworICAgIHNob3VsZEJlKCJzZWxmLmRiLm9i
amVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjAiKTsKKyAgICBzaG91bGRCZSgic2VsZi5kYi5vYmpl
Y3RTdG9yZU5hbWVzLmNvbnRhaW5zKCdzdG9yZUZhaWwnKSIsICJmYWxzZSIpOworfQorCitmdW5j
dGlvbiBjaGVja01ldGFkYXRhRXhpc3RpbmdPYmplY3RTdG9yZSgpCit7CisgICAgc2hvdWxkQmUo
ImRiLm9iamVjdFN0b3JlTmFtZXMiLCAiWydzdG9yZUZhaWwnXSIpOworICAgIHNob3VsZEJlKCJk
Yi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIxIik7CisgICAgc2hvdWxkQmUoImRiLm9iamVj
dFN0b3JlTmFtZXMuY29udGFpbnMoJ3N0b3JlRmFpbCcpIiwgInRydWUiKTsKK30KKworZnVuY3Rp
b24gc2V0TmV3VmVyc2lvbigpCit7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZl
cnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNp
b25TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCit7CisgICAgZGVidWcoIiIpOwor
ICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIpOworICAgIHNlbGYudHJhbnMgPSBldmFs
QW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUo
InRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENh
bGxiYWNrOworICAgIHRyYW5zLmFkZEV2ZW50TGlzdGVuZXIoJ2NvbXBsZXRlJywgY29tcGxldGVD
YWxsYmFjaywgZmFsc2UpOworICAgIHNlbGYuY29tcGxldGVFdmVudEZpcmVkID0gZmFsc2U7CisK
KyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgZXZhbEFuZExvZygiZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7Cit9CisKK2Z1bmN0aW9uIGNvbXBs
ZXRlQ2FsbGJhY2soKQoreworICAgIHNob3VsZEJlRmFsc2UoImV2ZW50LmNhbmNlbGFibGUiKTsK
KyAgICB0ZXN0UGFzc2VkKCJjb21wbGV0ZSBldmVudCBmaXJlZCIpOworICAgIHRyYW5zYWN0aW9u
ID0gZXZhbEFuZExvZygiZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSkiKTsKKyAgICB0cmFu
c2FjdGlvbi5vbmFib3J0ID0gYWJvcnRDYWxsYmFjazsKKyAgICB2YXIgc3RvcmUgPSBldmFsQW5k
TG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKSIpOworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygic3RvcmUubmFtZSIsICJzdG9yZU5hbWUiKTsKK30KKwor
ZnVuY3Rpb24gYWJvcnRDYWxsYmFjaygpCit7CisgICAgdGVzdFBhc3NlZCgiYWJvcnQgZXZlbnQg
ZmlyZWQiKTsKKyAgICB0ZXN0RE9NU3RyaW5nTGlzdCgpOworfQorCitmdW5jdGlvbiB0ZXN0RE9N
U3RyaW5nTGlzdCgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJWZXJpZnlpbmcgRE9N
U3RyaW5nTGlzdCB3b3JrcyBhcyBhcmd1bWVudCBmb3IgSURCRGF0YWJhc2UudHJhbnNhY3Rpb24o
KSIpOworICAgIGRlYnVnKCJkYi5vYmplY3RTdG9yZU5hbWVzIGlzICIgKyBkYi5vYmplY3RTdG9y
ZU5hbWVzKTsKKyAgICBkZWJ1ZygiLi4uIHdoaWNoIGNvbnRhaW5zOiAiICsgSlNPTi5zdHJpbmdp
ZnkoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZGIub2JqZWN0U3RvcmVOYW1lcykpKTsKKyAg
ICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKGRiLm9iamVjdFN0b3Jl
TmFtZXMpIik7CisgICAgdGVzdFBhc3NlZCgibm8gZXhjZXB0aW9uIHRocm93biIpOworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGg7ICsraSkgeworICAg
ICAgc2hvdWxkQmVUcnVlKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgiICsgSlNPTi5zdHJpbmdp
ZnkoZGIub2JqZWN0U3RvcmVOYW1lc1tpXSkgKyAiKSAhPSBudWxsIik7CisgICAgfQorICAgIHRl
c3RQYXNzZWQoImFsbCBzdG9yZXMgcHJlc2VudCBpbiB0cmFuc2FjdGlvbiIpOworICAgIHRlc3RJ
bnZhbGlkTW9kZSgpOworfQorCitmdW5jdGlvbiB0ZXN0SW52YWxpZE1vZGUoKQoreworICAgIGRl
YnVnKCIiKTsKKyAgICBkZWJ1ZygiVmVyaWZ5IHRoYXQgc3BlY2lmeWluZyBhbiBpbnZhbGlkIG1v
ZGUgcmFpc2VzIGFuIGV4Y2VwdGlvbiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRi
LnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIDMpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5P
Tl9UUkFOU0lFTlRfRVJSIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2Fj
dGlvbi1jcmFzaC1vbi1hYm9ydC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy90cmFuc2FjdGlvbi1jcmFzaC1vbi1hYm9ydC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMzNlYjA0
YmVkMTRjNDJkNDgwNjc0OTc0OWE5NjZlNWY4NGVjMzVlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWNyYXNoLW9u
LWFib3J0LmpzCkBAIC0wLDAgKzEsMzkgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAg
ICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigi
VGVzdCBJbmRleGVkREIgdHJhbnNhY3Rpb24gZG9lcyBub3QgY3Jhc2ggb24gYWJvcnQuIik7CisK
K2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0aW9uLWNyYXNoLW9u
LWFib3J0JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBv
cGVuU3VjY2VzcygpCit7CisgICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7CisgICAgZGIgPSBl
dmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiZGIuc2V0VmVyc2lvbignMS4wJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IHNldFZlcnNpb25TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCit7CisgICAgZXZh
bEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycpIik7CisgICAgZXZlbnQudGFyZ2V0
LnJlc3VsdC5vbmNvbXBsZXRlID0gc2V0VmVyc2lvbkNvbXBsZXRlOworfQorCitmdW5jdGlvbiBz
ZXRWZXJzaW9uQ29tcGxldGUoKQoreworICAgIGV2YWxBbmRMb2coImRiLnRyYW5zYWN0aW9uKCdm
b28nKSIpOworICAgIGV2YWxBbmRMb2coInNlbGYuZ2MoKSIpOworICAgIGZpbmlzaEpTVGVzdCgp
OworfQorCit0ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWV2ZW50
LXByb3BhZ2F0aW9uLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L3RyYW5zYWN0aW9uLWV2ZW50LXByb3BhZ2F0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZkNWM2MWFiZTVj
ZDFjZDdmYWQ2OGY5MzNmOTA2YjU5OWVlZmI1ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tZXZlbnQtcHJvcGFn
YXRpb24uanMKQEAgLTAsMCArMSwxNDQgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAg
ICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigi
VGVzdCBldmVudCBwcm9wb2dhdGlvbiBvbiBJREJUcmFuc2FjdGlvbi4iKTsKKworZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0aW9uLWV2ZW50LXByb3BhZ2F0aW9uJyki
KTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb247CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHNldFZlcnNpb24o
KQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZUV4
aXN0aW5nKCkKK3sKKyAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50
YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAg
IHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICBldmFsQW5kTG9n
KCJ0cmFucy5vbmNvbXBsZXRlID0gc3RhcnRUZXN0Iik7CisKKyAgICBkZWxldGVBbGxPYmplY3RT
dG9yZXMoZGIpOworCisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9i
amVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0
VGVzdCgpCit7CisgICAgZGVidWcoIlZlcmlmaW5nIGFib3J0Iik7CisgICAgdHJhbnMgPSBldmFs
QW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIElEQlRyYW5zYWN0
aW9uLlJFQURfV1JJVEUpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMub25hYm9ydCA9IGFib3J0
RmlyZWRDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxldGUgPSB1bmV4
cGVjdGVkQWJvcnRDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50TGlzdGVu
ZXIoJ2Fib3J0JywgZGJBYm9ydENhcHR1cmVDYWxsYmFjaywgdHJ1ZSkiKTsKKyAgICBldmFsQW5k
TG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIGRiQWJvcnRCdWJibGVDYWxsYmFjaywg
ZmFsc2UpIik7CisgICAgZXZhbEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignY29tcGxldGUn
LCB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjaywgdHJ1ZSkiKTsKKyAgICBldmFsQW5kTG9nKCJk
Yi5hZGRFdmVudExpc3RlbmVyKCdjb21wbGV0ZScsIHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNr
LCBmYWxzZSkiKTsKKyAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0
U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAndmFs
dWUnLCB5OiAnenp6J30sICdrZXknKSIpOworICAgIGRiQ2FwdHVyZUZpcmVkID0gZmFsc2U7Cisg
ICAgYWJvcnRGaXJlZCA9IGZhbHNlOworICAgIGRiQnViYmxlRmlyZWQxID0gZmFsc2U7Cit9CisK
K2Z1bmN0aW9uIGRiQWJvcnRDYXB0dXJlQ2FsbGJhY2soKQoreworICAgIGRlYnVnKCIiKTsKKyAg
ICBkZWJ1ZygiSW4gSURCRGF0YWJhc2UgYWJvcnQgY2FwdHVyZSIpOworICAgIHNob3VsZEJlRmFs
c2UoImRiQ2FwdHVyZUZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiYWJvcnRGaXJlZCIpOwor
ICAgIHNob3VsZEJlRmFsc2UoImRiQnViYmxlRmlyZWQxIik7CisgICAgc2hvdWxkQmUoImV2ZW50
LnRhcmdldCIsICJ0cmFucyIpOworICAgIHNob3VsZEJlKCJldmVudC5jdXJyZW50VGFyZ2V0Iiwg
ImRiIik7CisgICAgZGJDYXB0dXJlRmlyZWQgPSB0cnVlOworfQorCitmdW5jdGlvbiBhYm9ydEZp
cmVkQ2FsbGJhY2soKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiSW4gYWJvcnQgaGFu
ZGxlciIpOworICAgIHNob3VsZEJlVHJ1ZSgiZGJDYXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRC
ZUZhbHNlKCJhYm9ydEZpcmVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVGaXJlZDEi
KTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0IiwgInRyYW5zIik7CisgICAgc2hvdWxkQmUo
ImV2ZW50LmN1cnJlbnRUYXJnZXQiLCAidHJhbnMiKTsKKyAgICBhYm9ydEZpcmVkID0gdHJ1ZTsK
K30KKworZnVuY3Rpb24gZGJBYm9ydEJ1YmJsZUNhbGxiYWNrKCkKK3sKKyAgICBkZWJ1ZygiIik7
CisgICAgZGVidWcoIkluIElEQkRhdGFiYXNlIGVycm9yIGJ1YmJsZSIpOworICAgIHNob3VsZEJl
VHJ1ZSgiZGJDYXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRCZVRydWUoImFib3J0RmlyZWQiKTsK
KyAgICBzaG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVkMSIpOworICAgIHNob3VsZEJlKCJldmVu
dC50YXJnZXQiLCAidHJhbnMiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQuY3VycmVudFRhcmdldCIs
ICJkYiIpOworICAgIGRiQnViYmxlRmlyZWQxID0gdHJ1ZTsKKyAgICBkZWJ1ZygiIik7CisgICAg
ZGVidWcoIlZlcmlmaW5nIHN1Y2Nlc3MuIik7CisgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFu
cyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJ
VEUpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IGNvbXBsZXRlRmlyZWRD
YWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJv
cnRDYWxsYmFjayIpOworICAgIGV2YWxBbmRMb2coImRiLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fi
b3J0JywgZGJBYm9ydENhcHR1cmVDYWxsYmFjaywgdHJ1ZSkiKTsKKyAgICBldmFsQW5kTG9nKCJk
Yi5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIGRiQWJvcnRCdWJibGVDYWxsYmFjaywgZmFs
c2UpIik7CisgICAgZXZhbEFuZExvZygiZGIucmVtb3ZlRXZlbnRMaXN0ZW5lcignY29tcGxldGUn
LCB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjaywgdHJ1ZSkiKTsKKyAgICBldmFsQW5kTG9nKCJk
Yi5yZW1vdmVFdmVudExpc3RlbmVyKCdjb21wbGV0ZScsIHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxi
YWNrLCBmYWxzZSkiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdjb21w
bGV0ZScsIGRiQ29tcGxldGVDYXB0dXJlQ2FsbGJhY2ssIHRydWUpIik7CisgICAgZXZhbEFuZExv
ZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignY29tcGxldGUnLCBkYkNvbXBsZXRlQnViYmxlQ2FsbGJh
Y2ssIGZhbHNlKSIpOworICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0
JywgdW5leHBlY3RlZEFib3J0Q2FsbGJhY2ssIHRydWUpIik7CisgICAgZXZhbEFuZExvZygiZGIu
YWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjaywgZmFsc2Up
Iik7CisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdz
dG9yZU5hbWUnKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlJywgeTog
J3p6eid9LCAna2V5MicpIik7CisgICAgZGJDYXB0dXJlRmlyZWQgPSBmYWxzZTsKKyAgICBjb21w
bGV0ZUZpcmVkID0gZmFsc2U7CisgICAgZGJCdWJibGVGaXJlZDIgPSBmYWxzZTsKK30KKworZnVu
Y3Rpb24gZGJDb21wbGV0ZUNhcHR1cmVDYWxsYmFjaygpCit7CisgICAgZGVidWcoIiIpOworICAg
IGRlYnVnKCJJbiBJREJEYXRhYmFzZSBjb21wbGV0ZSBjYXB0dXJlIik7CisgICAgc2hvdWxkQmVG
YWxzZSgiZGJDYXB0dXJlRmlyZWQiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJjb21wbGV0ZUZpcmVk
Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVGaXJlZDIiKTsKKyAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0IiwgInRyYW5zIik7CisgICAgc2hvdWxkQmUoImV2ZW50LmN1cnJlbnRUYXJn
ZXQiLCAiZGIiKTsKKyAgICBkYkNhcHR1cmVGaXJlZCA9IHRydWU7Cit9CisKK2Z1bmN0aW9uIGNv
bXBsZXRlRmlyZWRDYWxsYmFjaygpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJJbiBJ
REJSZXF1ZXN0IGhhbmRsZXIiKTsKKyAgICBzaG91bGRCZVRydWUoImRiQ2FwdHVyZUZpcmVkIik7
CisgICAgc2hvdWxkQmVGYWxzZSgiY29tcGxldGVGaXJlZCIpOworICAgIHNob3VsZEJlRmFsc2Uo
ImRiQnViYmxlRmlyZWQyIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldCIsICJ0cmFucyIp
OworICAgIHNob3VsZEJlKCJldmVudC5jdXJyZW50VGFyZ2V0IiwgInRyYW5zIik7CisgICAgY29t
cGxldGVGaXJlZCA9IHRydWU7CisgICAgZGVidWcoIiIpOworICAgIGZpbmlzaEpTVGVzdCgpOwor
fQorCitmdW5jdGlvbiBkYkNvbXBsZXRlQnViYmxlQ2FsbGJhY2soKQoreworICAgIGRlYnVnKCIi
KTsKKyAgICBkZWJ1ZygiSW4gSURCRGF0YWJhc2UgY29tcGxldGUgYnViYmxlIik7CisgICAgdGVz
dEZhaWxlZCgiQ29tcGxldGUgYnViYmxlIGNhbGxiYWNrIHNob3VsZCBOT1QgZmlyZSIpOworICAg
IGRiQnViYmxlRmlyZWQyID0gdHJ1ZTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy90cmFuc2FjdGlvbi1yZWFkLW9ubHkuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tcmVhZC1vbmx5LmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5NDNh
MzFjZmQ3YjVhYTBjNzE3ZGExM2Q3YWZkMDlmMTBhMzliYWQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tcmVhZC1v
bmx5LmpzCkBAIC0wLDAgKzEsNTggQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBp
bXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycp
OworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVz
dCByZWFkLW9ubHkgdHJhbnNhY3Rpb25zIGluIEluZGV4ZWREQi4iKTsKKworZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJpbmRleGVkREIub3BlbigndHJhbnNhY3Rpb24tcmVhZC1vbmx5JykiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7Cisg
ICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7CisgICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRi
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXN1
bHQgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7CisgICAgZGVsZXRlQWxs
T2JqZWN0U3RvcmVzKGRiKTsKKworICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25jb21wbGV0ZSA9
IHNldFZlcnNpb25Eb25lOworICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25hYm9ydCA9IHVuZXhw
ZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5j
cmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgn
eCcsICd5JykiKTsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbkRvbmUoKQoreworICAgIHRyYW5z
ID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnKSIpOworICAgIGV2
YWxBbmRFeHBlY3RFeGNlcHRpb24oInRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpLnB1dCgnYScs
ICdiJykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUiIpOworCisgICAgdHJh
bnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScpIik7CisgICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykuZGVsZXRl
KCd4JykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUiIpOworCisgICAgdHJh
bnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScpIik7CisgICAg
Y3VyID0gZXZhbEFuZExvZygiY3VyID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykub3BlbkN1
cnNvcigpIik7CisgICAgY3VyLm9uc3VjY2VzcyA9IGdvdEN1cnNvcjsKKyAgICBjdXIub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBnb3RDdXJzb3IoKQor
eworICAgIHNob3VsZEJlRmFsc2UoIiFldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgZXZhbEFu
ZEV4cGVjdEV4Y2VwdGlvbigiZXZlbnQudGFyZ2V0LnJlc3VsdC5kZWxldGUoKSIsICJJREJEYXRh
YmFzZUV4Y2VwdGlvbi5SRUFEX09OTFlfRVJSIik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30K
KwordGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL3RyYW5zYWN0aW9uLXJvbGxiYWNrLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLXJvbGxiYWNrLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkODQ4
MzNhYjYwOWYzMjQ1NTlhNWFlNDU3NjRiYzhhNjZhNDUxMDMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tcm9sbGJh
Y2suanMKQEAgLTAsMCArMSw5MSBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGlt
cG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7
CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0
IEluZGV4ZWREQiB0cmFuc2FjdGlvbiByb2xsYmFjay4iKTsKKworZnVuY3Rpb24gdGVzdCgpCit7
CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJpbmRleGVkREIub3BlbigndHJhbnNhY3Rpb24tcm9sbGJhY2snKSIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkZWJ1
Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBk
Yi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xl
YW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7CisgICAgZGVidWcoImNsZWFuRGF0
YWJhc2UoKToiKTsKKyAgICBzZWxmLnRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rp
b24gPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBzZXRW
ZXJzaW9uQ29tcGxldGU7CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworICAgIGV2
YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdteU9iamVjdFN0b3JlJykiKTsKKyAgICBz
aG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMSIpOworfQorCitmdW5jdGlv
biBzZXRWZXJzaW9uQ29tcGxldGUoKQoreworICAgIGRlYnVnKCJzZXRWZXJzaW9uQ29tcGxldGUo
KToiKTsKKworICAgIHNlbGYudHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9
IGRiLnRyYW5zYWN0aW9uKFsnbXlPYmplY3RTdG9yZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dS
SVRFKSIpOworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSBhYm9ydENhbGxiYWNrOworICAgIHRy
YW5zYWN0aW9uLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjazsKKworICAg
IHNlbGYuc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3Jl
KCdteU9iamVjdFN0b3JlJykiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRk
KCdyb2xsYmFja1ZhbHVlJywgJ3JvbGxiYWNrS2V5MTIzJykiKTsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGFkZFN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGFkZFN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJhZGRT
dWNjZXNzKCk6Iik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAiJ3JvbGxi
YWNrS2V5MTIzJyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLm9wZW5DdXJz
b3IoKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbkN1cnNvclN1Y2Nlc3M7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IG9wZW5DdXJzb3JTdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygib3BlbkN1cnNvclN1Y2Nlc3MoKToi
KTsKKyAgICBzZWxmLmN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQiKTsKKworICAgIHRyYW5zYWN0aW9uLmFib3J0KCk7Cit9CisKK2Z1bmN0aW9uIGFib3J0
Q2FsbGJhY2soKQoreworICAgIGRlYnVnKCJhYm9ydENhbGxiYWNrKCk6Iik7CisgICAgZGVidWco
J1RyYW5zYWN0aW9uIHdhcyBhYm9ydGVkLicpOworCisgICAgc2VsZi50cmFuc2FjdGlvbiA9IGV2
YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydteU9iamVjdFN0b3JlJ10s
IElEQlRyYW5zYWN0aW9uLlJFQUQpIik7CisgICAgc2VsZi5zdG9yZSA9IGV2YWxBbmRMb2coInN0
b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ215T2JqZWN0U3RvcmUnKSIpOworICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJzdG9yZS5nZXQoJ3JvbGxiYWNrS2V5MTIzJykiKTsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGdldFN1Y2Nlc3M7Cit9CisKK2Z1bmN0aW9uIGdldFN1Y2Nlc3MoKQoreworICAg
IGRlYnVnKCJnZXRTdWNjZXNzKCk6Iik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1
bHQiLCAidW5kZWZpbmVkIik7CisKKyAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgIidyb2xs
YmFja1ZhbHVlJyIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLXN0b3JlTmFtZXMtcmVxdWlyZWQuanMgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tc3RvcmVOYW1l
cy1yZXF1aXJlZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNWEzZWQxMmFhYzhhODA0OWI5ODg3NzQwOTVkNWJl
MmU1YTY0MmVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLXN0b3JlTmFtZXMtcmVxdWlyZWQuanMKQEAgLTAsMCAr
MSwzNiBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4u
Ly4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2Ny
aXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQjogdHJh
bnNhY3Rpb24gc3RvcmVOYW1lcyByZXF1aXJlZCBhcmd1bWVudHMiKTsKKworZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxv
Y2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlv
bikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3Vj
Y2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbign
MScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0
b3JlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKK3sKKyAgICBkZWxldGVB
bGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgc2hvdWxkVGhyb3coImRiLnRyYW5zYWN0aW9uKCk7
Iik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvdHdvLXZlcnNpb24tY2hhbmdlcy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy90d28tdmVyc2lvbi1jaGFuZ2VzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2NmU1MTRl
NjUyNWQxZTg2MjBjYzdiOWNkOGNmNzIzMjEzNDA3M2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHdvLXZlcnNpb24tY2hhbmdlcy5q
cwpAQCAtMCwwICsxLDEwNiBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9y
dFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Cisg
ICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IGJl
aGF2aW9yIHdoZW4gdGhlIHNhbWUgY29ubmVjdGlvbiBjYWxscyBzZXRWZXJzaW9uIHR3aWNlIik7
CisKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAg
IHNob3VsZEJlRmFsc2UoImluZGV4ZWREQiA9PSBudWxsIik7CisgICAgc2hvdWxkQmVGYWxzZSgi
SURCVHJhbnNhY3Rpb24gPT0gbnVsbCIpOworICAgIG9wZW5EQkNvbm5lY3Rpb24oKTsKK30KKwor
ZnVuY3Rpb24gb3BlbkRCQ29ubmVjdGlvbigpCit7CisgICAgZXZhbEFuZExvZygic2VsZi5zdGF0
ZSA9ICdzdGFydGluZyciKTsKKyAgICB2YXIgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWRE
Qi5vcGVuKCd0d28tdmVyc2lvbnMtb25lLWNvbm5lY3Rpb24nKSIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBzZWxmLmRi
ID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgZXZhbEFuZExv
Zygic2VsZi5zdGF0ZSA9IDAiKTsKKworICAgIHZhciB2ZXJzaW9uQ2hhbmdlUmVxdWVzdDEgPSBl
dmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHZlcnNpb25DaGFu
Z2VSZXF1ZXN0MS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgdmVyc2lv
bkNoYW5nZVJlcXVlc3QxLm9uc3VjY2VzcyA9IGluU2V0VmVyc2lvbjE7CisKKyAgICAvLyBhbmQg
Y29uY3VycmVudGx5Li4uCisKKyAgICB2YXIgdmVyc2lvbkNoYW5nZVJlcXVlc3QyID0gZXZhbEFu
ZExvZygiZGIuc2V0VmVyc2lvbigndmVyc2lvbiAyJykiKTsKKyAgICB2ZXJzaW9uQ2hhbmdlUmVx
dWVzdDIub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHZlcnNpb25DaGFu
Z2VSZXF1ZXN0Mi5vbnN1Y2Nlc3MgPSBpblNldFZlcnNpb24yOworfQorCitmdW5jdGlvbiBpblNl
dFZlcnNpb24xKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvbigpICMxIGNhbGxiYWNrIik7Cisg
ICAgdHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgIGV2YWxBbmRMb2coInNlbGYuc3Rv
cmUxID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Rlc3Qtc3RvcmUxJykiKTsKKyAgICBzaG91bGRC
ZSgiKytzZWxmLnN0YXRlIiwgIjEiKTsKKyAgICB2YXIgcmVxID0gZXZhbEFuZExvZygic2VsZi5z
dG9yZTEucHV0KCdhYWEnLCAxMTEpIik7CisgICAgcmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAg
c2hvdWxkQmUoIisrc2VsZi5zdGF0ZSIsICIyIik7CisgICAgICAgIGhhbGZ3YXlEb25lKCk7Cisg
ICAgfTsKK30KKworZnVuY3Rpb24gaW5TZXRWZXJzaW9uMigpCit7CisgICAgZGVidWcoInNldFZl
cnNpb24oKSAjMiBjYWxsYmFjayIpOworICAgIHRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsK
KyAgICBzaG91bGRCZSgiKytzZWxmLnN0YXRlIiwgIjQiKTsKKyAgICBldmFsQW5kTG9nKCJzZWxm
LnN0b3JlMiA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCd0ZXN0LXN0b3JlMicpIik7CisKKyAgICB2
YXIgcmVxID0gZXZhbEFuZExvZygic2VsZi5zdG9yZTIucHV0KCdiYmInLCAyMjIpIik7CisgICAg
cmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXEub25zdWNjZXNz
ID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgc2hvdWxkQmUoIisrc2VsZi5zdGF0ZSIsICI1Iik7
CisgICAgICAgIGhhbGZ3YXlEb25lKCk7CisgICAgfTsKK30KKwordmFyIGNvdW50ZXIgPSAwOwor
ZnVuY3Rpb24gaGFsZndheURvbmUoKSAKK3sKKyAgICBjb3VudGVyICs9IDE7CisgICAgaWYgKGNv
dW50ZXIgPCAyKSB7CisgICAgICAgIHNob3VsZEJlKCIrK3NlbGYuc3RhdGUiLCAiMyIpOworICAg
ICAgICBkZWJ1ZygiaGFsZndheSB0aGVyZS4uLiIgKTsKKyAgICB9IGVsc2UgeworICAgICAgICBz
aG91bGRCZSgiKytzZWxmLnN0YXRlIiwgIjYiKTsKKyAgICAgICAgY2hlY2tSZXN1bHRzKCk7Cisg
ICAgfQorfQorCitmdW5jdGlvbiBjaGVja1Jlc3VsdHMoKSB7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJzZWxmLmRiLnZlcnNpb24iLCAidmVyc2lvbiAyIik7CisgICAgdHJhbnMub25jb21w
bGV0ZSA9IHNldFZlcnNpb25Db21wbGV0ZTsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbkNvbXBs
ZXRlKCkKK3sKKyAgICB0cmFucyA9IGV2YWxBbmRMb2coInNlbGYudHJhbnMgPSBkYi50cmFuc2Fj
dGlvbihbJ3Rlc3Qtc3RvcmUxJywgJ3Rlc3Qtc3RvcmUyJ10pIik7CisgICAgc3RvcmUgPSBldmFs
QW5kTG9nKCJzZWxmLnN0b3JlID0gc2VsZi50cmFucy5vYmplY3RTdG9yZSgndGVzdC1zdG9yZTEn
KSIpOworICAgIHJlcSA9IGV2YWxBbmRMb2coInNlbGYucmVxID0gc2VsZi5zdG9yZS5nZXQoMTEx
KSIpOworICAgIHJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVx
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJhYWEiKTsKKworICAgICAgICBzdG9yZSA9IGV2YWxB
bmRMb2coInNlbGYuc3RvcmUgPSBzZWxmLnRyYW5zLm9iamVjdFN0b3JlKCd0ZXN0LXN0b3JlMicp
Iik7CisgICAgICAgIHJlcSA9IGV2YWxBbmRMb2coInNlbGYucmVxID0gc2VsZi5zdG9yZS5nZXQo
MjIyKSIpOworICAgICAgICByZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
ICAgICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJiYmIiKTsKKyAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9OworICAgIH07Cit9CisKK3Rlc3QoKTsKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvdmFsdWUtdW5kZWZpbmVkLmpzIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3ZhbHVlLXVuZGVmaW5lZC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
OTcwMzNjNzg3Y2ZkYWI2NTVkMzdjMTY2MTM1Y2Y4ZDcxZDcwYjRlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3ZhbHVlLXVuZGVmaW5l
ZC5qcwpAQCAtMCwwICsxLDY2IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1w
b3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsK
KyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3Qg
SW5kZXhlZERCIHVuZGVmaW5lZCBhcyByZWNvcmQgdmFsdWUiKTsKKworZnVuY3Rpb24gdGVzdCgp
Cit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIG5hbWUgPSBzZWxmLmxvY2F0
aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbiki
KTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2Vz
cygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsK
KworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScp
Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3Jl
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKK3sKKyAgICBkZWxldGVBbGxP
YmplY3RTdG9yZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nKTsiKTsKKyAgICByZXN1bHQgPSBldmFs
QW5kTG9nKCJyZXN1bHQgPSBvYmplY3RTdG9yZS5hZGQodW5kZWZpbmVkLCBJbmZpbml0eSk7Iik7
CisgICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXN1
bHQub25zdWNjZXNzID0gZ2V0VmFsdWU7Cit9CisKK2Z1bmN0aW9uIGdldFZhbHVlKCkKK3sKKyAg
ICByZXN1bHQgPSBldmFsQW5kTG9nKCJyZXN1bHQgPSBvYmplY3RTdG9yZS5nZXQoSW5maW5pdHkp
OyIpOworICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAg
cmVzdWx0Lm9uc3VjY2VzcyA9IGNoZWNrVmFsdWU7Cit9CisKK2Z1bmN0aW9uIGNoZWNrVmFsdWUo
KQoreworICAgIHZhbHVlID0gZXZhbEFuZExvZygidmFsdWUgPSBldmVudC50YXJnZXQucmVzdWx0
OyIpOworICAgIHNob3VsZEJlKCJ2YWx1ZSIsICJ1bmRlZmluZWQiKTsKKyAgICByZXN1bHQgPSBl
dmFsQW5kTG9nKCJyZXN1bHQgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Iik7CisgICAgcmVz
dWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXN1bHQub25zdWNj
ZXNzID0gY2hlY2tDdXJzb3I7Cit9CisKK2Z1bmN0aW9uIGNoZWNrQ3Vyc29yKCkKK3sKKyAgICBj
dXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAg
IGlmIChjdXJzb3IpIHsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAiSW5maW5pdHki
KTsKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci52YWx1ZSIsICJ1bmRlZmluZWQiKTsKKyAgICB9
IGVsc2UgeworICAgICAgICB0ZXN0RmFpbGVkKCJjdXJzb3IgaXMgbnVsbCIpOworICAgIH0KKyAg
ICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy92
YWx1ZXMtb2RkLXR5cGVzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL3ZhbHVlcy1vZGQtdHlwZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2FlMTE1YmNkZWIwYmY2ZmYyNjVk
OTFhYTk5NDRlNTY4YjU2ZjRkNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy92YWx1ZXMtb2RkLXR5cGVzLmpzCkBAIC0wLDAgKzEsNzgg
QEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMo
J3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgb2RkIHZhbHVl
IGRhdGF0eXBlcyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVm
aXhlcygpOworCisgICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3Jp
cHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImlu
ZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRM
b2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGFkZEtleTE7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Cit9CisKK2Z1bmN0aW9uIGFkZEtleTEoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3Jl
cyhkYik7CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0
b3JlKCdmb28nLCB7YXV0b0luY3JlbWVudDogdHJ1ZX0pOyIpOworCisgICAgY2FudmFzID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7CisgICAgY29udGV4dCA9IGNhbnZhcy5nZXRD
b250ZXh0KCcyZCcpOworICAgIGltYWdlZGF0YSA9IGNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKDEs
IDEpOworICAgIHZhbGlkVHlwZXMgPSBbeyBkZXNjcmlwdGlvbjogJ3JlZ2V4cCcsICAgIHZhbHVl
OiBuZXcgUmVnRXhwKCdcXFxcJykgfSwKKyAgICAgICAgICAgICAgICAgIHsgZGVzY3JpcHRpb246
ICdkYXRlJywgICAgICB2YWx1ZTogbmV3IERhdGUoMCkgfSwKKyAgICAgICAgICAgICAgICAgIHsg
ZGVzY3JpcHRpb246ICdvYmplY3QnLCAgICB2YWx1ZTogbmV3IE9iamVjdCgpIH0sCisgICAgICAg
ICAgICAgICAgICB7IGRlc2NyaXB0aW9uOiAnaW1hZ2VkYXRhJywgdmFsdWU6IGltYWdlZGF0YSB9
LAorICAgIF07CisgICAgbmV4dFRvQWRkID0gMDsKKyAgICBhZGREYXRhKCk7Cit9CisKK2Z1bmN0
aW9uIGFkZERhdGEoKQoreworICAgIGRlYnVnKCJhZGRpbmcgIiArIHZhbGlkVHlwZXNbbmV4dFRv
QWRkXS5kZXNjcmlwdGlvbiArICIgdmFsdWUiKTsKKyAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJv
YmplY3RTdG9yZS5hZGQodmFsaWRUeXBlc1tuZXh0VG9BZGRdLnZhbHVlKSIpOworICAgIHJlc3Vs
dC5vbnN1Y2Nlc3MgPSArK25leHRUb0FkZCA8IHZhbGlkVHlwZXMubGVuZ3RoID8gYWRkRGF0YSA6
IG9wZW5BQ3Vyc29yOworICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5BQ3Vyc29yKCkKK3sKKyAgICB2YWx1ZUluZGV4ID0gMDsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5DdXJz
b3IoKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgeworICAgICAgICBjdXJz
b3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OyIpOworICAgICAg
ICBpZiAoY3Vyc29yKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLnRvU3Ry
aW5nKCkiLCAidmFsaWRUeXBlc1t2YWx1ZUluZGV4XS52YWx1ZS50b1N0cmluZygpIik7CisgICAg
ICAgICAgICBpZiAodmFsdWVJbmRleCA9PSAxKSB7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUo
ImN1cnNvci52YWx1ZS50b1VUQ1N0cmluZygpIiwgIidUaHUsIDAxIEphbiAxOTcwIDAwOjAwOjAw
IEdNVCciKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh2YWx1ZUluZGV4ID09IDMp
IHsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLndpZHRoIiwgIjEiKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvci5jb250aW51ZSgp
OyIpOworICAgICAgICAgICAgZXZhbEFuZExvZygidmFsdWVJbmRleCsrOyIpOworICAgICAgICB9
CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0K
KyAgICB9Cit9CisKK3Rlc3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdmVyc2lvbi1jaGFu
Z2UtYWJvcnQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdmVy
c2lvbi1jaGFuZ2UtYWJvcnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGI0NDcxNzJmYmU4MGYxY2UxZGUyODNh
MzVmZGNkYzE4MDQ1MGQ5MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy92ZXJzaW9uLWNoYW5nZS1hYm9ydC5qcwpAQCAtMCwwICsxLDg5
IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRz
KCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIkVuc3VyZSB0aGF0IGFib3J0ZWQgVkVS
U0lPTl9DSEFOR0UgdHJhbnNhY3Rpb25zIGFyZSBjb21wbGV0ZWx5IHJvbGxlZCBiYWNrIik7CisK
K2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBvcGVu
REJDb25uZWN0aW9uKCk7Cit9CisKK2Z1bmN0aW9uIG9wZW5EQkNvbm5lY3Rpb24oKQoreworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndmVyc2lvbi1jaGFuZ2UtYWJv
cnQnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5T
dWNjZXNzKCkKK3sKKyAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7CisgICAgZGVidWcoIiIpOworCisgICAgZXZhbEFuZExvZygidmNyZXEgPSBkYi5z
ZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHZjcmVxLm9uc3VjY2VzcyA9IGluU2V0VmVy
c2lvbjE7CisgICAgdmNyZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBpblNldFZlcnNpb24xKCkKK3sKKyAgICBkZWJ1Zygic2V0VmVyc2lvbjEoKSBj
YWxsYmFjayIpOworICAgIHNob3VsZEJlVHJ1ZSgidmNyZXEucmVzdWx0IGluc3RhbmNlb2YgSURC
VHJhbnNhY3Rpb24iKTsKKyAgICB0cmFucyA9IHZjcmVxLnJlc3VsdDsKKyAgICB0cmFucy5vbmFi
b3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSBzZXRWZXJzaW9uMUNv
bXBsZXRlOworCisgICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgn
c3RvcmUxJykiKTsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbjFDb21wbGV0ZSgpCit7CisgICAg
ZGVidWcoInNldFZlcnNpb24xIGNvbXBsZXRlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJkYi52ZXJzaW9uIiwgInZlcnNpb24gMSIpOworICAgIGRlYnVnKCIiKTsKKworICAgIGV2YWxB
bmRMb2coInZjcmVxID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAyJykiKTsKKyAgICB2Y3JlcS5v
bnN1Y2Nlc3MgPSBpblNldFZlcnNpb24yOworICAgIHZjcmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gaW5TZXRWZXJzaW9uMigpCit7CisgICAgZGVi
dWcoInNldFZlcnNpb24yKCkgY2FsbGJhY2siKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
ImRiLnZlcnNpb24iLCAidmVyc2lvbiAyIik7CisgICAgc2hvdWxkQmVUcnVlKCJ2Y3JlcS5yZXN1
bHQgaW5zdGFuY2VvZiBJREJUcmFuc2FjdGlvbiIpOworICAgIHRyYW5zID0gdmNyZXEucmVzdWx0
OworICAgIHRyYW5zLm9uYWJvcnQgPSBzZXRWZXJzaW9uMkFib3J0OworICAgIHRyYW5zLm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gdW5l
eHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7CisKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmRl
bGV0ZU9iamVjdFN0b3JlKCdzdG9yZTEnKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlID0gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlMicpIik7CisKKyAgICAvLyBFbnN1cmUgdGhlIHRlc3Qg
aGFybmVzcyBlcnJvciBoYW5kbGVyIGlzIG5vdCBpbnZva2VkLgorICAgIHNlbGYub3JpZ2luYWxX
aW5kb3dPbkVycm9yID0gc2VsZi5vbmVycm9yOworICAgIHNlbGYub25lcnJvciA9IG51bGw7CisK
KyAgICBkZWJ1ZygicmFpc2luZyBleGNlcHRpb24iKTsKKyAgICB0aHJvdyBuZXcgRXJyb3IoIlRo
aXMgc2hvdWxkICpOT1QqIGJlIGNhdWdodCEiKTsKK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbjJB
Ym9ydCgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJzZXRWZXJzaW9uMkFib3J0KCkg
Y2FsbGJhY2siKTsKKworICAgIC8vIFJlc3RvcmUgdGVzdCBoYXJuZXNzIGVycm9yIGhhbmRsZXIu
CisgICAgc2VsZi5vbmVycm9yID0gc2VsZi5vcmlnaW5hbFdpbmRvd09uRXJyb3I7CisKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLnZlcnNpb24iLCAidmVyc2lvbiAxIik7CisgICAgc2hv
dWxkQmVUcnVlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCdzdG9yZTEnKSIpOworICAg
IHNob3VsZEJlRmFsc2UoImRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJ3N0b3JlMicpIik7
CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy92ZXJzaW9uLWNoYW5nZS1leGNsdXNpdmUuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvdmVyc2lvbi1jaGFuZ2UtZXhjbHVzaXZlLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjgxYWE1OGE4ODMyOTVlNDcxMjdkNmE5MzE2NGJiY2VkODM5YjA5MWEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdmVyc2lvbi1jaGFu
Z2UtZXhjbHVzaXZlLmpzCkBAIC0wLDAgKzEsNzAgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMp
IHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlw
dGlvbigiRW5zdXJlIFZFUlNJT05fQ0hBTkdFIHRyYW5zYWN0aW9uIGRvZXNuJ3QgcnVuIGNvbmN1
cnJlbnRseSB3aXRoIG90aGVyIHRyYW5zYWN0aW9ucyIpOworCitmdW5jdGlvbiB0ZXN0KCkgewor
ICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgb3BlbkRCQ29ubmVjdGlvbigpOworfQor
CitmdW5jdGlvbiBvcGVuREJDb25uZWN0aW9uKCkKK3sKKyAgICBldmFsQW5kTG9nKCJzZWxmLnN0
YXRlID0gJ3N0YXJ0aW5nJyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
b3BlbigndmVyc2lvbi1jaGFuZ2UtZXhjbHVzaXZlJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgc2VsZi5kYiA9IGV2
YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgZGVidWcoImNhbGxp
bmcgc2V0VmVyc2lvbigpIC0gY2FsbGJhY2sgc2hvdWxkIHJ1biBpbW1lZGlhdGVseSIpOworICAg
IHZhciB2ZXJzaW9uQ2hhbmdlUmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ3Zl
cnNpb24gMScpIik7CisgICAgdmVyc2lvbkNoYW5nZVJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uc3VjY2VzcyA9IGlu
U2V0VmVyc2lvbjsKKworICAgIC8vIGFuZCBjb25jdXJyZW50bHkuLi4KKworICAgIGRlYnVnKCJj
YWxsaW5nIG9wZW4oKSAtIGNhbGxiYWNrIHNob3VsZCB3YWl0IHVudGlsIFZFUlNJT05fQ0hBTkdF
IHRyYW5zYWN0aW9uIGlzIGNvbXBsZXRlIik7CisgICAgdmFyIG9wZW5SZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCLm9wZW4oJ3ZlcnNpb24tY2hhbmdlLWV4Y2x1c2l2ZScpIik7CisgICAg
b3BlblJlcXVlc3Qub25zdWNjZXNzID0gb3BlbkFnYWluU3VjY2VzczsKKyAgICBvcGVuUmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGluU2V0
VmVyc2lvbigpCit7CisgICAgZGVidWcoInNldFZlcnNpb24oKSBjYWxsYmFjayIpOworICAgIGRl
YnVnKCJzdGFydGluZyB3b3JrIGluIFZFUlNJT05fQ0hBTkdFIHRyYW5zYWN0aW9uIik7CisgICAg
ZXZhbEFuZExvZygic2VsZi5zdGF0ZSA9ICdWRVJTSU9OX0NIQU5HRSBzdGFydGVkJyIpOworCisg
ICAgc2VsZi5zdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUo
J3Rlc3Qtc3RvcmUnKSIpOworICAgIHNlbGYuY291bnQgPSAwOworICAgIGRvX2FzeW5jX3B1dHMo
KTsKKworICAgIGZ1bmN0aW9uIGRvX2FzeW5jX3B1dHMoKSB7CisgICAgICAgIHZhciByZXEgPSBl
dmFsQW5kTG9nKCJzdG9yZS5wdXQoIiArIGNvdW50ICsgIiwgIiArIGNvdW50ICsgIikiKTsKKyAg
ICAgICAgcmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVx
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7CisgICAgICAgICAgICBkZWJ1ZygiaW4gcHV0J3Mg
b25zdWNjZXNzIik7CisgICAgICAgICAgICBpZiAoKytzZWxmLmNvdW50IDwgMTApIHsKKyAgICAg
ICAgICAgICAgICBkb19hc3luY19wdXRzKCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGRlYnVnKCJlbmRpbmcgd29yayBpbiBWRVJTSU9OX0NIQU5HRSB0cmFuc2FjdGlv
biIpOworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coInNlbGYuc3RhdGUgPSAnVkVSU0lPTl9D
SEFOR0UgZmluaXNoZWQnIik7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorfQor
CitmdW5jdGlvbiBvcGVuQWdhaW5TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygib3BlbigpIGNhbGxi
YWNrIC0gdGhpcyBzaG91bGQgYXBwZWFyIGFmdGVyIFZFUlNJT05fQ0hBTkdFIHRyYW5zYWN0aW9u
IGVuZHMiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNlbGYuc3RhdGUiLCAiVkVSU0lP
Tl9DSEFOR0UgZmluaXNoZWQiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy92ZXJzaW9uY2hhbmdlcmVxdWVzdC1hY3RpdmVkb21vYmpl
Y3QuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdmVyc2lvbmNo
YW5nZXJlcXVlc3QtYWN0aXZlZG9tb2JqZWN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1YWFiNDE0YTUwMmE4
MTQzYzMzYzZjYmFkMTE0NTgyNTg2OWNjZTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdmVyc2lvbmNoYW5nZXJlcXVlc3QtYWN0aXZl
ZG9tb2JqZWN0LmpzCkBAIC0wLDAgKzEsNjcgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsK
KyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlv
bigiRW5zdXJlIHRoYXQgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Qgb2JqZWN0cyBhcmUgbm90IEdD
J2QgaWYgdGhleSBoYXZlIHBlbmRpbmcgZXZlbnRzIik7CisKK2Z1bmN0aW9uIHRlc3QoKSB7Cisg
ICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKworICAgIGRlYnVnKCIiKTsKKyAgICBldmFsQW5k
TG9nKCJzZWxmLmRibmFtZSA9ICd2ZXJzaW9uY2hhbmdlcmVxdWVzdC1hY3RpdmVkb21vYmplY3Qn
Iik7CisKKyAgICB0ZXN0RGVsZXRlRGF0YWJhc2UoKTsKK30KKworZnVuY3Rpb24gdGVzdERlbGV0
ZURhdGFiYXNlKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInRlc3REZWxldGVEYXRh
YmFzZSgpOiIpOworICAgIC8vIE5PVEU6IGRlbGV0ZVJlcXVlc3QgaXMgbG9jYWwgdmFyaWFibGUg
c28gaXQgaXMgbm90IGNhcHR1cmVkIGluIGdsb2JhbCBzY29wZS4KKyAgICB2YXIgZGVsZXRlUmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShzZWxmLmRibmFtZSki
KTsKKyAgICBkZWxldGVSZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICBkZWxldGVSZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7
CisgICAgZGVsZXRlUmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgZGVsZXRlU3VjY2Vz
cygpOyB9OworICAgIGRlbGV0ZVJlcXVlc3QgPSBudWxsOworICAgIGlmIChzZWxmLmdjKSB7Cisg
ICAgICAgIGV2YWxBbmRMb2coInNlbGYuZ2MoKSIpOworICAgIH0KK30KKworZnVuY3Rpb24gZGVs
ZXRlU3VjY2VzcygpCit7CisgICAgdGVzdFBhc3NlZCgiZGVsZXRlRGF0YWJhc2UncyBJREJWZXJz
aW9uQ2hhbmdlUmVxdWVzdC5vbnN1Y2Nlc3MgZXZlbnQgZmlyZWQiKTsKKyAgICB0ZXN0U2V0VmVy
c2lvbigpOworfQorCitmdW5jdGlvbiB0ZXN0U2V0VmVyc2lvbigpCit7CisgICAgZGVidWcoIiIp
OworICAgIGRlYnVnKCJ0ZXN0U2V0VmVyc2lvbigpOiIpOworCisgICAgLy8gTk9URTogVGhpcyBp
cyBqdXN0IGFuIElEQlJlcXVlc3QsIGl0IGNhbiBiZSBnbG9iYWwuCisgICAgZXZhbEFuZExvZygi
b3BlblJlcXVlc3QgPSBpbmRleGVkREIub3BlbihzZWxmLmRibmFtZSkiKTsKKyAgICBvcGVuUmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgb3BlblJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICBldmFsQW5kTG9nKCJkYiA9IG9wZW5S
ZXF1ZXN0LnJlc3VsdCIpOworCisgICAgICAgIC8vIE5PVEU6IHZlcnNpb25SZXF1ZXN0IGlzIGxv
Y2FsIHZhcmlhYmxlIHNvIGl0IGlzIG5vdCBjYXB0dXJlZCBpbiBnbG9iYWwgc2NvcGUuCisgICAg
ICAgIHZhciB2ZXJzaW9uUmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJzEnKSIp
OworICAgICAgICB2ZXJzaW9uUmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgICAgIHZlcnNpb25SZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9ja2Vk
Q2FsbGJhY2s7CisgICAgICAgIHZlcnNpb25SZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkg
eyB2ZXJzaW9uU3VjY2VzcygpOyB9OworICAgICAgICB2ZXJzaW9uUmVxdWVzdCA9IG51bGw7Cisg
ICAgICAgIGlmIChzZWxmLmdjKSB7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJzZWxmLmdjKCki
KTsKKyAgICAgICAgfQorICAgIH07Cit9CisKK2Z1bmN0aW9uIHZlcnNpb25TdWNjZXNzKCkKK3sK
KyAgICB0ZXN0UGFzc2VkKCJzZXRWZXJzaW9uJ3MgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Qub25z
dWNjZXNzIGV2ZW50IGZpcmVkIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9zZXRWZXJzaW9uLW51bGwuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3NldFZlcnNpb24tbnVsbC5odG1sCmluZGV4IGNiMmJjNmVlMWFlZDQ2OGM3ZDk3
MjRhYmE5N2E4ZDkyYmZjMDI0MmMuLmRmM2YzZDA4NzAyZGM1OTU1YjA5YjJlMTJhYjY5ZGFjYzRi
MGM2MTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldFZlcnNp
b24tbnVsbC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldFZlcnNp
b24tbnVsbC5odG1sCkBAIC0xLDQ0ICsxLDEwIEBACi08IURPQ1RZUEUgaHRtbD4gCi08aHRtbD4g
Cis8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4gCi08c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5q
cyI+PC9zY3JpcHQ+IAotPC9oZWFkPiAKLTxib2R5PiAKLTxzY3JpcHQ+IAotIAotZGVzY3JpcHRp
b24oIlRlc3QgSW5kZXhlZERCIHdpdGggbnVsbCB2ZXJzaW9uIHN0cmluZyIpOwotIAotZnVuY3Rp
b24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAKLSAgICBuYW1lID0g
c2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFi
YXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVz
Y3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLSAKLWZ1bmN0aW9u
IG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOwotIAotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKG51
bGwpOyIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdFNldFZlcnNpb247Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHBv
c3RTZXRWZXJzaW9uKCkKLXsKLSAgICBzaG91bGRCZSgiZGIudmVyc2lvbiIsICInbnVsbCciKTsK
LSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLSAKLSAKLXRlc3QoKTsKLSAKLTwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zZXRWZXJzaW9uLW51bGwuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Ci08L2JvZHk+IAorPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0VmVyc2lvbi11bmRlZmluZWQuaHRtbCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldFZlcnNpb24tdW5kZWZpbmVkLmh0bWwKaW5k
ZXggYmVkYzFlMDViNTQxMDFkYmEzZjgxODc2Yzc0Zjg0Nzc3Yjg5ODc3YS4uYWU2MGYxYzVlOTM4
NDdhMDRhMjM3Y2QzZmIzMjkyOWNmZGY1NWM4ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvc2V0VmVyc2lvbi11bmRlZmluZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRWZXJzaW9uLXVuZGVmaW5lZC5odG1sCkBAIC0xLDM3ICsx
LDEwIEBACi08IURPQ1RZUEUgaHRtbD4gCi08aHRtbD4gCis8aHRtbD4KIDxoZWFkPgotPHNjcmlw
dCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4g
Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+IAotPC9oZWFkPiAK
LTxib2R5PiAKLTxzY3JpcHQ+IAotIAotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIHZlcnNp
b24gc3RyaW5nIGlzIHJlcXVpcmVkIik7Ci0gCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1v
dmVWZW5kb3JQcmVmaXhlcygpOwotIAotICAgIG5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1l
OwotICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotIAotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAg
IGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gCi0gICAgc2hv
dWxkVGhyb3coImRiLnNldFZlcnNpb24oKTsiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLSAK
LSAKLXRlc3QoKTsKLSAKLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
c2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy9zZXRWZXJzaW9uLXVuZGVmaW5lZC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4g
Cis8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9zZXRfdmVyc2lvbl9ibG9ja2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9zZXRfdmVyc2lvbl9ibG9ja2VkLmh0bWwKaW5kZXggYzI0NGQ0MzJjZmJkNDkxNDZkYWMx
MWEwYzMzMWViMDU5YTczNGU1Mi4uNDA4ZTZmYTI5N2JiN2NkMjg3ODViYjA2NTJiYjk2MmFkOWVj
MDkwNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNp
b25fYmxvY2tlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldF92
ZXJzaW9uX2Jsb2NrZWQuaHRtbApAQCAtMSw2NCArMSwxMCBAQAotPGh0bWw+DQotPGhlYWQ+DQot
PHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4NCi08c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+DQotPC9o
ZWFkPg0KLTxib2R5Pg0KLTxzY3JpcHQ+DQotDQotZGVzY3JpcHRpb24oIkFuIG9wZW4gY29ubmVj
dGlvbiBibG9ja3MgYSBzZXBhcmF0ZSBjb25uZWN0aW9uJ3Mgc2V0VmVyc2lvbiBjYWxsIik7DQot
DQotY29ubmVjdGlvbnMgPSBbXQ0KLWZ1bmN0aW9uIHRlc3QoKQ0KLXsNCi0gICAgcmVtb3ZlVmVu
ZG9yUHJlZml4ZXMoKTsNCi0gICAgb3BlbkRCQ29ubmVjdGlvbigpOw0KLX0NCi0NCi1mdW5jdGlv
biBvcGVuREJDb25uZWN0aW9uKCkNCi17DQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRl
eGVkREIub3Blbignc2V0LXZlcnNpb24tYmxvY2tlZCcpIik7DQotICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gb3BlblN1Y2Nlc3M7DQotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOw0KLX0NCi0NCi1mdW5jdGlvbiBvcGVuU3VjY2VzcygpDQotew0KLSAgICBjb25u
ZWN0aW9uID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsNCi0gICAgY29ubmVjdGlvbnMucHVzaChjb25u
ZWN0aW9uKTsNCi0gICAgb3JpZ2luYWxfdmVyc2lvbiA9IGNvbm5lY3Rpb24udmVyc2lvbjsNCi0g
ICAgaWYgKGNvbm5lY3Rpb25zLmxlbmd0aCA8IDIpDQotICAgICAgICBvcGVuREJDb25uZWN0aW9u
KCk7DQotICAgIGVsc2Ugew0KLSAgICAgICAgdmFyIHZlcnNpb25DaGFuZ2VSZXF1ZXN0ID0gZXZh
bEFuZExvZygiY29ubmVjdGlvbnNbMF0uc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsNCi0gICAg
ICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsNCi0gICAgICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uc3VjY2VzcyA9IGluU2V0VmVyc2lv
bjsNCi0gICAgICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uYmxvY2tlZCA9IGJsb2NrZWQ7DQot
ICAgIH0NCi19DQotDQotc2Vlbl9ibG9ja2VkX2V2ZW50ID0gZmFsc2U7DQotZnVuY3Rpb24gYmxv
Y2tlZCgpDQotew0KLSAgICBldmFsQW5kTG9nKCJzZWVuX2Jsb2NrZWRfZXZlbnQgPSB0cnVlIik7
DQotICAgIGJsb2NrZWRfZXZlbnQgPSBldmVudDsNCi0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJibG9ja2VkX2V2ZW50LnZlcnNpb24iLCAidmVyc2lvbiAxIik7DQotICAgIHNob3VsZEV2YWx1
YXRlVG8oImJsb2NrZWRfZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUiLCAxKTsNCi0gICAgZXZhbEFu
ZExvZygiY29ubmVjdGlvbnNbMV0uY2xvc2UoKSIpOw0KLX0NCi0NCi1mdW5jdGlvbiBpblNldFZl
cnNpb24oKQ0KLXsNCi0gICAgZGVidWcoImluIHNldFZlcnNpb24ub25zdWNjZXNzIik7DQotICAg
IHNob3VsZEJlVHJ1ZSgic2Vlbl9ibG9ja2VkX2V2ZW50Iik7DQotICAgIGRlbGV0ZUFsbE9iamVj
dFN0b3Jlcyhjb25uZWN0aW9uc1swXSk7DQotICAgIGZpbmlzaEpTVGVzdCgpOw0KLX0NCi0NCi0N
Ci10ZXN0KCk7DQotDQotPC9zY3JpcHQ+DQotPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+DQotPC9ib2R5Pg0KLTwvaHRtbD4NCis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zZXRfdmVy
c2lvbl9ibG9ja2VkLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNpb25fcXVldWUu
aHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJzaW9uX3F1ZXVlLmh0
bWwKaW5kZXggNGVhYmVjNmE5NWU4MGQ2OWQyODBhN2NkOTVkYmMyMTIyZjg4MTc0Ni4uYzE2Y2Rk
NzFjMDdiYzUyMDYwNzhhMzEzNGU5MDgxMWJkNzJkY2VmMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNpb25fcXVldWUuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zZXRfdmVyc2lvbl9xdWV1ZS5odG1sCkBAIC0xLDEzMSAr
MSwxMCBAQAotPGh0bWw+DQotPGhlYWQ+DQotPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4NCi08c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3NoYXJlZC5qcyI+PC9zY3JpcHQ+DQotPC9oZWFkPg0KLTxib2R5Pg0KLTxzY3JpcHQ+DQotDQot
ZGVzY3JpcHRpb24oIjQgb3BlbiBjb25uZWN0aW9ucyB0cnkgdG8gc2V0VmVyc2lvbiBhdCB0aGUg
c2FtZSB0aW1lLiAgMyBjb25uZWN0aW9ucyBldmVudHVhbGx5IGNsb3NlLCBhbGxvd2luZyAxIHNl
dFZlcnNpb24gY2FsbCB0byBwcm9jZWVkLiIpOw0KLQ0KLWNvbm5lY3Rpb25zID0gW10NCi1mdW5j
dGlvbiB0ZXN0KCkNCi17DQotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7DQotDQotICAgIG9w
ZW5EQkNvbm5lY3Rpb24oKTsNCi19DQotDQotZnVuY3Rpb24gb3BlbkRCQ29ubmVjdGlvbigpDQot
ew0KLSAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbignc2V0LXZlcnNpb24t
cXVldWUnKSIpOw0KLSAgICByZXN1bHQub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7DQotICAgIHJl
c3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQotfQ0KLQ0KLWZ1bmN0aW9u
IG9wZW5TdWNjZXNzKCkNCi17DQotICAgIGNvbm5lY3Rpb24gPSBldmVudC50YXJnZXQucmVzdWx0
Ow0KLSAgICBjb25uZWN0aW9uLm9udmVyc2lvbmNoYW5nZSA9IGdlbmVyYXRlVmVyc2lvbkNoYW5n
ZUhhbmRsZXIoKTsNCi0gICAgY29ubmVjdGlvbnMucHVzaChjb25uZWN0aW9uKTsNCi0gICAgaWYg
KGNvbm5lY3Rpb25zLmxlbmd0aCA8IDQpDQotICAgICAgICBvcGVuREJDb25uZWN0aW9uKCk7DQot
ICAgIGVsc2Ugew0KLSAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImNvbm5lY3Rpb25zWzBd
LnNldFZlcnNpb24oJ3ZlcnNpb24gMCcpIik7DQotICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBm
dW5jdGlvbihldmVudCl7IGNvbm5lY3Rpb25FcnJvcihldmVudCwgMCkgfTsNCi0gICAgICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsNCi0gICAgICAgIHJl
cXVlc3Qub25ibG9ja2VkID0gYmxvY2tlZDA7DQotICAgICAgICByZXF1ZXN0MSA9IGV2YWxBbmRM
b2coImNvbm5lY3Rpb25zWzFdLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7DQotICAgICAgICBy
ZXF1ZXN0MS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQotICAgICAgICByZXF1
ZXN0MS5vbnN1Y2Nlc3MgPSBpblNldFZlcnNpb24xOw0KLSAgICAgICAgcmVxdWVzdDEub25ibG9j
a2VkID0gYmxvY2tlZDE7DQotICAgICAgICByZXF1ZXN0MiA9IGV2YWxBbmRMb2coImNvbm5lY3Rp
b25zWzJdLnNldFZlcnNpb24oJ3ZlcnNpb24gMicpIik7DQotICAgICAgICByZXF1ZXN0Mi5vbmVy
cm9yID0gZnVuY3Rpb24oZXZlbnQpeyBjb25uZWN0aW9uRXJyb3IoZXZlbnQsIDIpIH07DQotICAg
ICAgICByZXF1ZXN0Mi5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOw0KLSAg
ICAgICAgcmVxdWVzdDIub25ibG9ja2VkID0gYmxvY2tlZDI7DQotICAgICAgICByZXF1ZXN0MyA9
IGV2YWxBbmRMb2coImNvbm5lY3Rpb25zWzNdLnNldFZlcnNpb24oJ3ZlcnNpb24gMycpIik7DQot
ICAgICAgICByZXF1ZXN0My5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpeyBjb25uZWN0aW9uRXJy
b3IoZXZlbnQsIDMpIH07DQotICAgICAgICByZXF1ZXN0My5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVk
U3VjY2Vzc0NhbGxiYWNrOw0KLSAgICAgICAgcmVxdWVzdDMub25ibG9ja2VkID0gYmxvY2tlZDM7
DQotICAgICAgICBkZWJ1ZygiIik7DQotICAgIH0NCi19DQotDQotZnVuY3Rpb24gZ2VuZXJhdGVW
ZXJzaW9uQ2hhbmdlSGFuZGxlcigpDQotew0KLSAgICB2YXIgY29ubmVjdGlvbk51bSA9IGNvbm5l
Y3Rpb25zLmxlbmd0aDsNCi0gICAgcmV0dXJuIGZ1bmN0aW9uKGV2ZW50KQ0KLSAgICB7DQotICAg
ICAgICBzaG91bGRCZVRydWUoImV2ZW50LnZlcnNpb24ubGVuZ3RoID4gMCIpOw0KLSAgICAgICAg
ZGVidWcoImNvbm5lY3Rpb25bIiArIGNvbm5lY3Rpb25OdW0gKyAiXSByZWNlaXZlZCB2ZXJzaW9u
Q2hhbmdlRXZlbnQ6ICIgKyBldmVudC52ZXJzaW9uKTsNCi0gICAgfQ0KLX0NCi0NCi1ibG9ja2Vk
MGZpcmVkID0gZmFsc2U7DQotYmxvY2tlZDJmaXJlZCA9IGZhbHNlOw0KLWZ1bmN0aW9uIGJsb2Nr
ZWQwKGV2ZW50KQ0KLXsNCi0gICAgZGVidWcoIiIpOw0KLSAgICB0ZXN0UGFzc2VkKCJjb25uZWN0
aW9uWzBdIGdvdCBibG9ja2VkIGV2ZW50Iik7DQotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
ZXZlbnQudmVyc2lvbiIsICJ2ZXJzaW9uIDAiKTsNCi0gICAgZGVidWcoIkNsb3NlIHRoZSBjb25u
ZWN0aW9uIHRoYXQgcmVjZWl2ZWQgdGhlIGJsb2NrIGV2ZW50OiIpOw0KLSAgICBldmFsQW5kTG9n
KCJjb25uZWN0aW9uc1swXS5jbG9zZSgpIik7DQotICAgIGRlYnVnKCJDbG9zZSBhbm90aGVyIGNv
bm5lY3Rpb24gYXMgd2VsbCwgdG8gdGVzdCA0LjcuNC1ub3RlOiIpOw0KLSAgICBldmFsQW5kTG9n
KCJjb25uZWN0aW9uc1szXS5jbG9zZSgpIik7DQotICAgIGV2YWxBbmRMb2coImJsb2NrZWQwZmly
ZWQgPSB0cnVlIik7DQotICAgIGRlYnVnKCIiKTsNCi19DQotDQotZnVuY3Rpb24gYmxvY2tlZDEo
ZXZlbnQpDQotew0KLSAgICBkZWJ1ZygiIikNCi0gICAgdGVzdFBhc3NlZCgiY29ubmVjdGlvblsx
XSBnb3QgYmxvY2tlZCBldmVudCIpOw0KLSAgICBkZWJ1ZygiRW5zdXJlIHRoYXQgdGhpcyBibG9j
a2VkIGV2ZW50IGlzIGluIG9yZGVyOiIpOw0KLSAgICBzaG91bGRCZVRydWUoImJsb2NrZWQwZmly
ZWQiKTsNCi0gICAgc2hvdWxkQmVGYWxzZSgiYmxvY2tlZDJmaXJlZCIpOw0KLSAgICBkZWJ1Zygi
IikNCi19DQotDQotZnVuY3Rpb24gYmxvY2tlZDIoZXZlbnQpDQotew0KLSAgICBkZWJ1ZygiIikN
Ci0gICAgdGVzdFBhc3NlZCgiY29ubmVjdGlvblsyXSBnb3QgYmxvY2tlZCBldmVudCIpOw0KLSAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnZlcnNpb24iLCAidmVyc2lvbiAyIik7DQot
ICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb25zWzJdLmNsb3NlKCkiKTsNCi0gICAgZXZhbEFuZExv
ZygiYmxvY2tlZDJmaXJlZCA9IHRydWUiKTsNCi0gICAgZGVidWcoIiIpDQotfQ0KLQ0KLWZ1bmN0
aW9uIGJsb2NrZWQzKGV2ZW50KQ0KLXsNCi0gICAgZGVidWcoIiIpDQotICAgIHRlc3RQYXNzZWQo
ImNvbm5lY3Rpb25bM10gZ290IGJsb2NrZWQgZXZlbnQiKTsNCi0gICAgZGVidWcoIk5vdGU6IFRo
aXMgbWVhbnMgdGhhdCBhIGNvbm5lY3Rpb24gY2FuIHJlY2VpdmUgYSBibG9ja2VkIGV2ZW50IGFm
dGVyIGl0cyBjbG9zZSgpIG1ldGhvZCBoYXMgYmVlbiBjYWxsZWQuICBTcGVjIGlzIHNpbGVudCBv
biB0aGUgaXNzdWUgYW5kIHRoaXMgaXMgZWFzaWVzdCB0byBpbXBsZW1lbnQuIik7DQotICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudmVyc2lvbiIsICJ2ZXJzaW9uIDMiKTsNCi19DQot
DQotZnVuY3Rpb24gY29ubmVjdGlvbkVycm9yKGV2ZW50LCBjb25uZWN0aW9uSWQpDQotew0KLSAg
ICBkZWJ1ZygiIikNCi0gICAgdGVzdFBhc3NlZCgiY29ubmVjdGlvblsiICsgY29ubmVjdGlvbklk
ICsgIl0gZ290IGVycm9yIGV2ZW50Iik7DQotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuZXJy
b3JDb2RlIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkFCT1JUX0VSUiIpDQotICAgIGlmICgnd2Vi
a2l0RXJyb3JNZXNzYWdlJyBpbiBldmVudC50YXJnZXQpIHsNCi0gICAgICAgIHNob3VsZEJlKCJl
dmVudC50YXJnZXQud2Via2l0RXJyb3JNZXNzYWdlLmxlbmd0aCA+IDAiLCAidHJ1ZSIpOw0KLSAg
ICAgICAgZGVidWcoZXZlbnQudGFyZ2V0LndlYmtpdEVycm9yTWVzc2FnZSk7DQotICAgIH0NCi19
DQotDQotZnVuY3Rpb24gaW5TZXRWZXJzaW9uMShldmVudCkNCi17DQotICAgIGRlYnVnKCIiKQ0K
LSAgICB0ZXN0UGFzc2VkKCJjb25uZWN0aW9uWzFdIGdvdCBpbnRvIFNldFZlcnNpb24iKTsNCi0g
ICAgZmluaXNoSlNUZXN0KCk7DQotfQ0KLQ0KLQ0KLXRlc3QoKTsNCi0NCi08L3NjcmlwdD4NCi08
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4NCi08L2JvZHk+DQotPC9odG1sPg0KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NldF92ZXJzaW9uX3F1ZXVlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3RyYW5zYWN0aW9uLWFib3J0Lmh0bWwKaW5kZXggMzQxMGY0NjNhMjAzMTg5NjUzM2I0
YTQ2OTljNjdhZDM1ODE1N2VkZC4uMWJhY2I1ZmI3OGNhNTIzMjM0ZGZlZGZkY2IzY2IyYTM3MGU5
YmMzZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rp
b24tYWJvcnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2Fj
dGlvbi1hYm9ydC5odG1sCkBAIC00LDk2ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
c2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVzY3Jp
cHRpb24oIlRlc3QgdHJhbnNhY3Rpb24gYWJvcnRzIHNlbmQgdGhlIHByb3BlciBvbmFib3J0IG1l
c3NhZ2VzLi4iKTsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4
ZXMoKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbignbmFtZScp
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9u
KCkKLXsKLSAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwot
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJyki
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGRlbGV0ZUV4aXN0aW5nOwotICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBkZWxldGVF
eGlzdGluZygpCi17Ci0gICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7Ci0gICAgc2Vs
Zi50cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAg
IHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5l
eHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9
IHN0YXJ0VGVzdCIpOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIHN0
b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1l
JywgbnVsbCkiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHt4OiAndmFs
dWUnLCB5OiAnenp6J30sICdrZXknKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzdGFydFRlc3QoKQotewotICAgIHRyYW5z
ID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCBJREJU
cmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQg
PSB0cmFuc2FjdGlvbkFib3J0ZWQiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRl
ID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2siKTsKLSAgICBzdG9yZSA9IGV2YWxBbmRMb2co
InN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3ZhbHVlMicsIHk6ICd6enoyJ30sICdrZXkyJyki
KTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmaXJzdEFkZDsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InN0b3JlLmFkZCh7eDogJ3ZhbHVlMycsIHk6ICd6enozJ30sICdrZXkzJykiKTsKLSAgICByZXF1
ZXN0Lm9uZXJyb3IgPSBzZWNvbmRBZGQ7Ci0gICAgdHJhbnMuYWJvcnQoKTsKLQotICAgIGZpcnN0
RXJyb3IgPSBmYWxzZTsKLSAgICBzZWNvbmRFcnJvciA9IGZhbHNlOwotICAgIGFib3J0RmlyZWQg
PSBmYWxzZTsKLX0KLQotZnVuY3Rpb24gZmlyc3RBZGQoKQotewotICAgIHNob3VsZEJlKCJldmVu
dC50YXJnZXQuZXJyb3JDb2RlIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLkFCT1JUX0VSUiIpOwot
ICAgIHNob3VsZEJlRmFsc2UoImZpcnN0RXJyb3IiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJzZWNv
bmRFcnJvciIpOwotICAgIHNob3VsZEJlRmFsc2UoImFib3J0RmlyZWQiKTsKLSAgICBmaXJzdEVy
cm9yID0gdHJ1ZTsKLQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmFkZCh7eDog
J3ZhbHVlNCcsIHk6ICd6eno0J30sICdrZXk0JykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJB
TlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7Ci19Ci0KLWZ1bmN0aW9uIHNlY29uZEFkZCgpCi17Ci0g
ICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5lcnJvckNvZGUiLCAiSURCRGF0YWJhc2VFeGNlcHRp
b24uQUJPUlRfRVJSIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJmaXJzdEVycm9yIik7Ci0gICAgc2hv
dWxkQmVGYWxzZSgic2Vjb25kRXJyb3IiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJhYm9ydEZpcmVk
Iik7Ci0gICAgc2Vjb25kRXJyb3IgPSB0cnVlOwotfQotCi1mdW5jdGlvbiB0cmFuc2FjdGlvbkFi
b3J0ZWQoKQotewotICAgIHNob3VsZEJlVHJ1ZSgiZmlyc3RFcnJvciIpOwotICAgIHNob3VsZEJl
VHJ1ZSgic2Vjb25kRXJyb3IiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJhYm9ydEZpcmVkIik7Ci0g
ICAgYWJvcnRGaXJlZCA9IHRydWU7Ci0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9y
ZS5hZGQoe3g6ICd2YWx1ZTUnLCB5OiAnenp6NSd9LCAna2V5NScpIiwgIklEQkRhdGFiYXNlRXhj
ZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwot
fQotCi10ZXN0KCk7Ci0KLQotPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3RyYW5z
YWN0aW9uLWFib3J0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWZ0ZXIt
Y2xvc2UuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFm
dGVyLWNsb3NlLmh0bWwKaW5kZXggZjgyN2VhNzI2NWZjYTcyNzE3YzFhZWUzMzFhMTk0NTUxYmUx
ZTBkZS4uM2E0MTYxNGNjMGZjN2VhMTA2OWQ0OTg1YjdhMzEyOTNmZTkyNTI1MCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWZ0ZXItY2xvc2Uu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hZnRl
ci1jbG9zZS5odG1sCkBAIC0xLDkwICsxLDEwIEBACi08aHRtbD4NCi08aGVhZD4NCi08c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pg0K
LTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4NCi08L2hlYWQ+DQot
PGJvZHk+DQotPHNjcmlwdD4NCi0NCi1kZXNjcmlwdGlvbigiVGVzdCBjbG9zaW5nIGEgZGF0YWJh
c2UgY29ubmVjdGlvbiBpbiBJbmRleGVkREIuIik7DQotDQotZnVuY3Rpb24gdGVzdCgpDQotew0K
LSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOw0KLQ0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygiaW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0aW9uLWFmdGVyLWNsb3NlJykiKTsNCi0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsNCi0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7DQotfQ0KLQ0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkNCi17
DQotICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOw0KLSAgICBzZWxmLmRiID0gZXZhbEFuZExv
ZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7DQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsNCi0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBpblNldFZlcnNpb247DQotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOw0KLX0NCi0NCi1mdW5jdGlvbiBpblNldFZlcnNpb24oKQ0KLXsNCi0g
ICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsNCi0NCi0gICAgZXZlbnQudGFyZ2V0LnJlc3Vs
dC5vbmNvbXBsZXRlID0gcnVuRmlyc3RSZWd1bGFyVHJhbnNhY3Rpb247DQotICAgIGV2ZW50LnRh
cmdldC5yZXN1bHQub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOw0KLSAgICBzdG9y
ZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsN
Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdG9yZS5wdXQoJ3gnLCAneScp
Iik7DQotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb25QdXRTdWNjZXNzOw0KLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsNCi19DQotDQotZnVuY3Rpb24gb25Q
dXRTdWNjZXNzKCkNCi17DQotICAgIHRlc3RQYXNzZWQoIlB1dCBzdWNjZXNzIikNCi19DQotDQot
ZnVuY3Rpb24gcnVuRmlyc3RSZWd1bGFyVHJhbnNhY3Rpb24oKQ0KLXsNCi0gICAgZGVidWcoInJ1
bm5pbmcgZmlyc3QgdHJhbnNhY3Rpb24iKQ0KLSAgICBjdXJyZW50VHJhbnNhY3Rpb24gPSBldmFs
QW5kTG9nKCJjdXJyZW50VHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlJ10sIElE
QlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7DQotICAgIGN1cnJlbnRUcmFuc2FjdGlvbi5vbmFi
b3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7DQotICAgIGN1cnJlbnRUcmFuc2FjdGlvbi5v
bmNvbXBsZXRlID0gZmlyc3RUcmFuc2FjdGlvbkNvbXBsZXRlOw0KLSAgICBvYmplY3RTdG9yZSA9
IGN1cnJlbnRUcmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKTsNCi0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLnB1dCgnYScsICdiJykiKTsNCi0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQotfQ0KLQ0KLWZ1bmN0aW9uIGZpcnN0
VHJhbnNhY3Rpb25Db21wbGV0ZSgpDQotew0KLSAgICBldmFsQW5kTG9nKCJkYi5jbG9zZSgpIik7
DQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKFsnc3RvcmUnXSwg
SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0FM
TE9XRURfRVJSIik7DQotDQotICAgIGRlYnVnKCIiKQ0KLSAgICBkZWJ1ZygidmVyaWZ5IHRoYXQg
d2UgY2FuIHJlb3BlbiB0aGUgZGIgYWZ0ZXIgY2FsbGluZyBjbG9zZSIpDQotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndHJhbnNhY3Rpb24tYWZ0ZXItY2xvc2UnKSIp
Ow0KLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9uU2Vjb25kT3Blbg0KLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsNCi19DQotDQotZnVuY3Rpb24gb25TZWNv
bmRPcGVuKCkgew0KLSAgICBzZWNvbmRfZGIgPSBldmFsQW5kTG9nKCJzZWNvbmRfZGIgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7DQotICAgIGN1cnJlbnRUcmFuc2FjdGlvbiA9IGV2YWxBbmRMb2co
ImN1cnJlbnRUcmFuc2FjdGlvbiA9IHNlY29uZF9kYi50cmFuc2FjdGlvbihbJ3N0b3JlJ10sIElE
QlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7DQotICAgIHN0b3JlID0gY3VycmVudFRyYW5zYWN0
aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpOw0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVx
dWVzdCA9IHN0b3JlLnB1dCgnMScsICcyJykiKTsNCi0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBv
bkZpbmFsUHV0U3VjY2VzczsNCi0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7DQotICAgIGN1cnJlbnRUcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZmluaXNoSlNU
ZXN0Ow0KLSAgICBjdXJyZW50VHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENh
bGxiYWNrOw0KLX0NCi0NCi1mdW5jdGlvbiBvbkZpbmFsUHV0U3VjY2VzcygpIHsNCi0gICAgdGVz
dFBhc3NlZCgiZmluYWwgcHV0IHN1Y2Nlc3MiKTsNCi19DQotDQotDQotdGVzdCgpOw0KLQ0KLTwv
c2NyaXB0Pg0KLTxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0Pg0KLTwvYm9keT4NCi08L2h0bWw+DQorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdHJhbnNhY3Rpb24tYWZ0ZXItY2xvc2Uu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hbmQtb2JqZWN0c3RvcmUtY2Fs
bHMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFuZC1v
YmplY3RzdG9yZS1jYWxscy5odG1sCmluZGV4IDZhZmJjMzU5ZjYyNWQ5ZmM4ZTQ1OTEyYmZkNjBh
NWViNDRkYzIwNjUuLjFhMGI1ZWY5OGJkZTI2ZjQwZGJiODgwMTQ1NzM4YjEyNDZmNWJjZWYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFuZC1v
YmplY3RzdG9yZS1jYWxscy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3RyYW5zYWN0aW9uLWFuZC1vYmplY3RzdG9yZS1jYWxscy5odG1sCkBAIC00LDEyOSArNCw3IEBA
CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8
Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIHRyYW5zYWN0
aW9uIGFuZCBvYmplY3RTdG9yZSBjYWxscyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICBy
ZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4
ZWREQi5vcGVuKCd0cmFuc2FjdGlvbi1hbmQtb2JqZWN0c3RvcmUtY2FsbHMnLCAnZGVzY3JpcHRp
b24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5T
dWNjZXNzKCkKLXsKLSAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlc3VsdCA9IGRiLnNldFZlcnNp
b24oJ3ZlcnNpb24gMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNl
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1m
dW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKLXsKLSAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5z
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7
Ci0KLSAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnYScpIik7Ci0gICAgZXZh
bEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2InKSIpOwotICAgIGV2YWxBbmRMb2coImRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpLmNyZWF0ZUluZGV4KCdpbmRleCcsICdzb21lX3Bh
dGgnKSIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLmFkZEV2ZW50TGlzdGVuZXIoJ2NvbXBsZXRl
JywgY3JlYXRlZCwgdHJ1ZSkiKTsKLSAgICBkZWJ1ZygiIik7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0
ZWQoKQotewotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihb
J2EnXSkiKTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYScpIik7Ci0gICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ2InKSIsICJJREJEYXRh
YmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlv
bigidHJhbnMub2JqZWN0U3RvcmUoJ3gnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9V
TkRfRVJSIik7Ci0gICAgZGVidWcoIiIpOwotCi0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFu
cyA9IGRiLnRyYW5zYWN0aW9uKFsnYSddKSIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9iamVj
dFN0b3JlKCdhJykiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0cmFucy5vYmplY3RT
dG9yZSgnYicpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKLSAgICBl
dmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0cmFucy5vYmplY3RTdG9yZSgneCcpIiwgIklEQkRhdGFi
YXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKLSAgICBkZWJ1ZygiIik7Ci0KLSAgICB0cmFu
cyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oWydiJ10pIik7Ci0gICAgZXZh
bEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2InKSIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oInRyYW5zLm9iamVjdFN0b3JlKCdhJykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9U
X0ZPVU5EX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInRyYW5zLm9iamVjdFN0
b3JlKCd4JykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOwotICAgIGRl
YnVnKCIiKTsKLQotICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlv
bihbJ2EnLCAnYiddKSIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCdhJyki
KTsKLSAgICBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnYicpIik7Ci0gICAgZXZhbEFu
ZEV4cGVjdEV4Y2VwdGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ3gnKSIsICJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7Ci0gICAgZGVidWcoIiIpOwotCi0gICAgdHJhbnMgPSBl
dmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnYicsICdhJ10pIik7Ci0gICAgZXZh
bEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2EnKSIpOwotICAgIGV2YWxBbmRMb2coInRyYW5z
Lm9iamVjdFN0b3JlKCdiJykiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0cmFucy5v
YmplY3RTdG9yZSgneCcpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsK
LSAgICBkZWJ1ZygiIik7Ci0KLSAgICBkZWJ1ZygiUGFzc2luZyBhIHN0cmluZyBhcyB0aGUgZmly
c3QgYXJndW1lbnQgaXMgYSBzaG9ydGN1dCBmb3IganVzdCBvbmUgb2JqZWN0IHN0b3JlOiIpOwot
ICAgIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignYScpIik7Ci0g
ICAgZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ2EnKSIpOwotICAgIGV2YWxBbmRFeHBl
Y3RFeGNlcHRpb24oInRyYW5zLm9iamVjdFN0b3JlKCdiJykiLCAiSURCRGF0YWJhc2VFeGNlcHRp
b24uTk9UX0ZPVU5EX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInRyYW5zLm9i
amVjdFN0b3JlKCd4JykiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOwot
ICAgIGRlYnVnKCIiKTsKLQotICAgIHNob3VsZFRocm93KCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9u
KCkiKTsKLSAgICBkZWJ1ZygiIik7Ci0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50
cmFuc2FjdGlvbihbJ3gnXSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIp
OwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKFsneCddKSIsICJJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oWydhJywgJ3gnXSkiLCAiSURCRGF0YWJhc2VFeGNlcHRp
b24uTk9UX0ZPVU5EX0VSUiIpOwotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5z
YWN0aW9uKFsneCcsICd4J10pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIi
KTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbihbJ2EnLCAneCcs
ICdiJ10pIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9GT1VORF9FUlIiKTsKLSAgICBkZWJ1
ZygiIik7Ci0KLSAgICBkZWJ1ZygiRXhjZXB0aW9uIHRocm93biB3aGVuIG5vIHN0b3JlcyBzcGVj
aWZpZWQ6Iik7Ci0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oW10p
IiwgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19FUlIiKTsKLSAgICBkZWJ1ZygiIik7Ci0K
LSAgICBkZWJ1Zygie30gY29lcmNlcyB0byBhIHN0cmluZyAtIHNvIG5vIG1hdGNoLCBidXQgbm90
IGEgdHlwZSBlcnJvcjoiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2Fj
dGlvbih7fSkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0ZPVU5EX0VSUiIpOwotICAgIGV2
YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKHttb2RlOjB9KSIsICJJREJEYXRh
YmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7Ci0gICAgZGVidWcoIiIpOwotCi0gICAgZGVi
dWcoIk92ZXJyaWRpbmcgdGhlIGRlZmF1bHQgc3RyaW5nIGNvZXJjaW9uIG1ha2VzIHRoZXNlIHdv
cms6Iik7Ci0gICAgZXZhbEFuZExvZygiZGIudHJhbnNhY3Rpb24oe3RvU3RyaW5nOmZ1bmN0aW9u
KCl7cmV0dXJuICdhJzt9fSkiKTsKLSAgICBldmFsQW5kTG9nKCJkYi50cmFuc2FjdGlvbihbe3Rv
U3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuICdhJzt9fV0pIik7Ci0gICAgZGVidWcoIi4uLiBidXQg
eW91IHN0aWxsIG5lZWQgdG8gc3BlY2lmeSBhIHJlYWwgc3RvcmU6Iik7Ci0gICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oW3t0b1N0cmluZzpmdW5jdGlvbigpe3JldHVy
biAneCc7fX1dKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJSIik7Ci0gICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oW3t0b1N0cmluZzpmdW5jdGlv
bigpe3JldHVybiAneCc7fX1dKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfRk9VTkRfRVJS
Iik7Ci0gICAgZGVidWcoIiIpOwotCi0gICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRi
LnRyYW5zYWN0aW9uKFsnc3RvcmUnXSkiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9IG51
bGwiKTsKLSAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAg
dHJhbnMub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHRyYW5zLm9uY29t
cGxldGUgPSBhZnRlckNvbXBsZXRlOwotICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2Jq
ZWN0U3RvcmUoJ3N0b3JlJykiKTsKLSAgICBzaG91bGRCZVRydWUoInN0b3JlICE9IG51bGwiKTsK
LSAgICBldmFsQW5kTG9nKCJzdG9yZS5nZXQoJ3NvbWVfa2V5JykiKTsKLX0KLQotZnVuY3Rpb24g
YWZ0ZXJDb21wbGV0ZSgpCi17Ci0gICAgZGVidWcoInRyYW5zYWN0aW9uIGNvbXBsZXRlLCBlbnN1
cmluZyBtZXRob2RzIGZhaWwiKTsKLSAgICBzaG91bGRCZVRydWUoInRyYW5zICE9IG51bGwiKTsK
LSAgICBzaG91bGRCZVRydWUoInN0b3JlICE9IG51bGwiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJ0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlv
bi5OT1RfQUxMT1dFRF9FUlIiKTsKLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5p
bmRleCgnaW5kZXgnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9FUlIiKTsK
LQotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy90cmFuc2FjdGlvbi1hbmQtb2JqZWN0c3RvcmUtY2FsbHMuanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1iYXNpY3MuaHRtbCBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy5odG1sCmluZGV4IGYxYjNiMTZh
OWE3YTRjNmM2MTNiNDU0ZmZlMzgzMDI1ZTI0MjBmOWIuLmQ1YTdkMjNiY2UxMTUzZDM3N2VkMDIz
ZTkxN2ZkMTFhMGI2YWJlYjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy5odG1sCkBAIC0xLDI5NCArMSwxMCBAQAotPGh0bWw+
DQotPGhlYWQ+DQotPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4NCi08c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9z
Y3JpcHQ+DQotPC9oZWFkPg0KLTxib2R5Pg0KLTxzY3JpcHQ+DQotDQotZGVzY3JpcHRpb24oIlRl
c3QgSW5kZXhlZERCIHRyYW5zYWN0aW9uIGJhc2ljcy4iKTsNCi0NCi1mdW5jdGlvbiB0ZXN0KCkN
Ci17DQotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7DQotDQotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJpbmRleGVkREIub3BlbigndHJhbnNhY3Rpb24tYmFzaWNzJykiKTsNCi0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsNCi0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7DQotfQ0KLQ0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkNCi17
DQotICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOw0KLSAgICBzZWxmLmRiID0gZXZhbEFuZExv
ZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7DQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsNCi0gICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOw0KLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsNCi19DQotDQotZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpDQotew0K
LSAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIsIGNoZWNrTWV0YWRhdGFFbXB0eSk7DQotICAg
IGV2ZW50LnRhcmdldC5yZXN1bHQub25jb21wbGV0ZSA9IHRlc3RTZXRWZXJzaW9uQWJvcnQxOw0K
LX0NCi0NCi1mdW5jdGlvbiB0ZXN0U2V0VmVyc2lvbkFib3J0MSgpDQotew0KLSAgICBjaGVja01l
dGFkYXRhRW1wdHkoKTsNCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdGFy
dFNldFZlcnNpb24oJ3ZlcnNpb24gZmFpbCcpIik7DQotICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
YWRkUmVtb3ZlSURCT2JqZWN0czsNCi19DQotDQotZnVuY3Rpb24gYWRkUmVtb3ZlSURCT2JqZWN0
cygpDQotew0KLSAgICBkZWJ1ZygiYWRkUmVtb3ZlSURCT2JqZWN0cygpOiIpOw0KLSAgICB2YXIg
dHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsNCi0gICAg
c2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOw0KLSAgICB0cmFucy5hZGRFdmVudExpc3Rl
bmVyKCdhYm9ydCcsIHRlc3RTZXRWZXJzaW9uQWJvcnQyLCB0cnVlKTsNCi0gICAgdHJhbnMub25j
b21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOw0KLQ0KLSAgICB2YXIgc3RvcmUg
PSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZUZhaWwnLCBu
dWxsKSIpOw0KLSAgICB2YXIgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmNyZWF0
ZUluZGV4KCdpbmRleEZhaWwnLCAneCcpIik7DQotDQotICAgIGV2YWxBbmRMb2coImRiLmRlbGV0
ZU9iamVjdFN0b3JlKCdzdG9yZUZhaWwnKSIpOw0KLSAgICBldmFsQW5kTG9nKCJzdG9yZS5kZWxl
dGVJbmRleCgnaW5kZXhGYWlsJykiKTsNCi0NCi0gICAgdHJhbnMuYWJvcnQoKTsNCi19DQotDQot
ZnVuY3Rpb24gdGVzdFNldFZlcnNpb25BYm9ydDIoKQ0KLXsNCi0gICAgZGVidWcoIiIpOw0KLSAg
ICBkZWJ1ZygidGVzdFNldFZlcnNpb25BYm9ydDIoKToiKTsNCi0gICAgY2hlY2tNZXRhZGF0YUVt
cHR5KCk7DQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gc3RhcnRTZXRWZXJz
aW9uKCd2ZXJzaW9uIGZhaWwnKSIpOw0KLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZFJlbW92
ZUFkZElEQk9iamVjdHM7DQotfQ0KLQ0KLWZ1bmN0aW9uIGFkZFJlbW92ZUFkZElEQk9iamVjdHMo
KQ0KLXsNCi0gICAgZGVidWcoImFkZFJlbW92ZUFkZElEQk9iamVjdHMoKToiKTsNCi0gICAgdmFy
IHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7DQotICAg
IHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsNCi0gICAgdHJhbnMuYWRkRXZlbnRMaXN0
ZW5lcignYWJvcnQnLCB0ZXN0U2V0VmVyc2lvbkFib3J0MywgZmFsc2UpOw0KLSAgICB0cmFucy5v
bmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7DQotDQotICAgIHZhciBzdG9y
ZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlRmFpbCcs
IG51bGwpIik7DQotICAgIHZhciBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuY3Jl
YXRlSW5kZXgoJ2luZGV4RmFpbCcsICd4JykiKTsNCi0NCi0gICAgZXZhbEFuZExvZygiZGIuZGVs
ZXRlT2JqZWN0U3RvcmUoJ3N0b3JlRmFpbCcpIik7DQotICAgIGV2YWxBbmRMb2coInN0b3JlLmRl
bGV0ZUluZGV4KCdpbmRleEZhaWwnKSIpOw0KLQ0KLSAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9n
KCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZUZhaWwnLCBudWxsKSIpOw0KLSAg
ICB2YXIgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRl
eEZhaWwnLCAneCcpIik7DQotDQotICAgIHRyYW5zLmFib3J0KCk7DQotfQ0KLQ0KLWZ1bmN0aW9u
IHRlc3RTZXRWZXJzaW9uQWJvcnQzKCkNCi17DQotICAgIGRlYnVnKCIiKTsNCi0gICAgZGVidWco
InRlc3RTZXRWZXJzaW9uQWJvcnQzKCk6Iik7DQotICAgIHNob3VsZEJlRmFsc2UoImV2ZW50LmNh
bmNlbGFibGUiKTsNCi0gICAgY2hlY2tNZXRhZGF0YUVtcHR5KCk7DQotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gc3RhcnRTZXRWZXJzaW9uKCd2ZXJzaW9uIGZhaWwnKSIpOw0K
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZElEQk9iamVjdHM7DQotfQ0KLQ0KLWZ1bmN0aW9u
IGFkZElEQk9iamVjdHMoKQ0KLXsNCi0gICAgZGVidWcoImFkZElEQk9iamVjdHMoKToiKTsNCi0g
ICAgc2hvdWxkQmVGYWxzZSgiZXZlbnQuY2FuY2VsYWJsZSIpOw0KLSAgICB2YXIgdHJhbnMgPSBl
dmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsNCi0gICAgc2hvdWxkQmVU
cnVlKCJ0cmFucyAhPT0gbnVsbCIpOw0KLSAgICB0cmFucy5vbmFib3J0ID0gdGVzdEluYWN0aXZl
QWJvcnRlZFRyYW5zYWN0aW9uOw0KLSAgICB0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENv
bXBsZXRlQ2FsbGJhY2s7DQotDQotICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSBkYi5j
cmVhdGVPYmplY3RTdG9yZSgnc3RvcmVGYWlsJywgbnVsbCkiKTsNCi0gICAgaW5kZXggPSBldmFs
QW5kTG9nKCJpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleEZhaWwnLCAneCcpIik7DQot
DQotICAgIHRyYW5zLmFib3J0KCk7DQotfQ0KLQ0KLWZ1bmN0aW9uIHRlc3RJbmFjdGl2ZUFib3J0
ZWRUcmFuc2FjdGlvbigpDQotew0KLSAgICBkZWJ1ZygiIik7DQotICAgIGRlYnVnKCJ0ZXN0SW5h
Y3RpdmVBYm9ydGVkVHJhbnNhY3Rpb24oKToiKTsNCi0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlv
bigiaW5kZXgub3BlbkN1cnNvcigpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9O
X0lOQUNUSVZFX0VSUiIpOw0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJpbmRleC5vcGVu
S2V5Q3Vyc29yKCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVf
RVJSIik7DQotICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4LmdldCgwKSIsICJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsNCi0gICAgZXZhbEFu
ZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXguZ2V0S2V5KDApIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9u
LlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOw0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJpbmRleC5jb3VudCgpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNU
SVZFX0VSUiIpOw0KLQ0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5wdXQoMCwg
MCkiLCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7DQot
ICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmFkZCgwLCAwKSIsICJJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsNCi0gICAgZXZhbEFuZEV4cGVj
dEV4Y2VwdGlvbigic3RvcmUuZGVsZXRlKDApIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5T
QUNUSU9OX0lOQUNUSVZFX0VSUiIpOw0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9y
ZS5jbGVhcigpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VS
UiIpOw0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5nZXQoMCkiLCAiSURCRGF0
YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7DQotICAgIGV2YWxBbmRF
eHBlY3RFeGNlcHRpb24oInN0b3JlLm9wZW5DdXJzb3IoKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlv
bi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsNCi0NCi0gICAgdGVzdFNldFZlcnNpb25BYm9y
dDQoKTsNCi19DQotDQotZnVuY3Rpb24gdGVzdFNldFZlcnNpb25BYm9ydDQoKQ0KLXsNCi0gICAg
ZGVidWcoIiIpOw0KLSAgICBkZWJ1ZygidGVzdFNldFZlcnNpb25BYm9ydDQoKToiKTsNCi0gICAg
Y2hlY2tNZXRhZGF0YUVtcHR5KCk7DQotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gc3RhcnRTZXRWZXJzaW9uKCd2ZXJzaW9uIGZhaWwnKSIpOw0KLSAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGFkZElEQk9iamVjdHNBbmRDb21taXQ7DQotfQ0KLQ0KLWZ1bmN0aW9uIGFkZElEQk9i
amVjdHNBbmRDb21taXQoKQ0KLXsNCi0gICAgZGVidWcoImFkZElEQk9iamVjdHNBbmRDb21taXQo
KToiKTsNCi0gICAgdmFyIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJnZXQu
cmVzdWx0Iik7DQotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsNCi0gICAgdHJh
bnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOw0KLQ0KLSAgICBzdG9yZSA9IGV2
YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlRmFpbCcsIG51bGwp
Iik7DQotICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleCgn
aW5kZXhGYWlsJywgJ3gnKSIpOw0KLQ0KLSAgICB0cmFucy5vbmNvbXBsZXRlID0gdGVzdEluYWN0
aXZlQ29tcGxldGVkVHJhbnNhY3Rpb247DQotfQ0KLQ0KLWZ1bmN0aW9uIHRlc3RJbmFjdGl2ZUNv
bXBsZXRlZFRyYW5zYWN0aW9uKCkNCi17DQotICAgIGRlYnVnKCIiKTsNCi0gICAgZGVidWcoInRl
c3RJbmFjdGl2ZUNvbXBsZXRlZFRyYW5zYWN0aW9uKCk6Iik7DQotICAgIGV2YWxBbmRFeHBlY3RF
eGNlcHRpb24oImluZGV4Lm9wZW5DdXJzb3IoKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFO
U0FDVElPTl9JTkFDVElWRV9FUlIiKTsNCi0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5k
ZXgub3BlbktleUN1cnNvcigpIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lO
QUNUSVZFX0VSUiIpOw0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJpbmRleC5nZXQoMCki
LCAiSURCRGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7DQotICAg
IGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4LmdldEtleSgwKSIsICJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsNCi0gICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigiaW5kZXguY291bnQoKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElP
Tl9JTkFDVElWRV9FUlIiKTsNCi0NCi0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUu
cHV0KDAsIDApIiwgIklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VS
UiIpOw0KLSAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5hZGQoMCwgMCkiLCAiSURC
RGF0YWJhc2VFeGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7DQotICAgIGV2YWxB
bmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmRlbGV0ZSgwKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlv
bi5UUkFOU0FDVElPTl9JTkFDVElWRV9FUlIiKTsNCi0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlv
bigic3RvcmUuY2xlYXIoKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5UUkFOU0FDVElPTl9JTkFD
VElWRV9FUlIiKTsNCi0gICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuZ2V0KDApIiwg
IklEQkRhdGFiYXNlRXhjZXB0aW9uLlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUiIpOw0KLSAgICBl
dmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5vcGVuQ3Vyc29yKCkiLCAiSURCRGF0YWJhc2VF
eGNlcHRpb24uVFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSIik7DQotDQotICAgIHRlc3RTZXRWZXJz
aW9uQWJvcnQ1KCk7DQotfQ0KLQ0KLWZ1bmN0aW9uIHRlc3RTZXRWZXJzaW9uQWJvcnQ1KCkNCi17
DQotICAgIGRlYnVnKCIiKTsNCi0gICAgZGVidWcoInRlc3RTZXRWZXJzaW9uQWJvcnQ1KCk6Iik7
DQotICAgIGNoZWNrTWV0YWRhdGFFeGlzdGluZ09iamVjdFN0b3JlKCk7DQotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gc3RhcnRTZXRWZXJzaW9uKCd2ZXJzaW9uIGZhaWwnKSIp
Ow0KLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHJlbW92ZUlEQk9iamVjdHM7DQotfQ0KLQ0KLWZ1
bmN0aW9uIHJlbW92ZUlEQk9iamVjdHMoKQ0KLXsNCi0gICAgZGVidWcoInJlbW92ZUlEQk9iamVj
dHMoKToiKTsNCi0gICAgdmFyIHRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC50YXJn
ZXQucmVzdWx0Iik7DQotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsNCi0gICAg
dHJhbnMub25hYm9ydCA9IHRlc3RTZXRWZXJzaW9uQWJvcnQ2Ow0KLSAgICB0cmFucy5vbmNvbXBs
ZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7DQotDQotICAgIHZhciBzdG9yZSA9IGV2
YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlRmFpbCcpIik7DQotICAg
IGV2YWxBbmRMb2coInN0b3JlLmRlbGV0ZUluZGV4KCdpbmRleEZhaWwnKSIpOw0KLSAgICBldmFs
QW5kTG9nKCJkYi5kZWxldGVPYmplY3RTdG9yZSgnc3RvcmVGYWlsJykiKTsNCi0NCi0gICAgdHJh
bnMuYWJvcnQoKTsNCi19DQotDQotZnVuY3Rpb24gdGVzdFNldFZlcnNpb25BYm9ydDYoKQ0KLXsN
Ci0gICAgZGVidWcoIiIpOw0KLSAgICBkZWJ1ZygidGVzdFNldFZlcnNpb25BYm9ydDYoKToiKTsN
Ci0gICAgY2hlY2tNZXRhZGF0YUV4aXN0aW5nT2JqZWN0U3RvcmUoKTsNCi0gICAgc2V0TmV3VmVy
c2lvbigpOw0KLX0NCi0NCi1mdW5jdGlvbiBzdGFydFNldFZlcnNpb24odmVyc2lvbk5hbWUpDQot
ew0KLSAgICByZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbih2ZXJzaW9uTmFtZSk7DQotICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOw0KLSAgICByZXR1cm4gcmVxdWVz
dDsNCi19DQotDQotZnVuY3Rpb24gY2hlY2tNZXRhZGF0YUVtcHR5KCkNCi17DQotICAgIHNob3Vs
ZEJlKCJzZWxmLmRiLm9iamVjdFN0b3JlTmFtZXMiLCAiW10iKTsNCi0gICAgc2hvdWxkQmUoInNl
bGYuZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMCIpOw0KLSAgICBzaG91bGRCZSgic2Vs
Zi5kYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCdzdG9yZUZhaWwnKSIsICJmYWxzZSIpOw0K
LX0NCi0NCi1mdW5jdGlvbiBjaGVja01ldGFkYXRhRXhpc3RpbmdPYmplY3RTdG9yZSgpDQotew0K
LSAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcyIsICJbJ3N0b3JlRmFpbCddIik7DQot
ICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIxIik7DQotICAgIHNo
b3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCdzdG9yZUZhaWwnKSIsICJ0cnVl
Iik7DQotfQ0KLQ0KLWZ1bmN0aW9uIHNldE5ld1ZlcnNpb24oKQ0KLXsNCi0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsNCi0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsNCi0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQotfQ0KLQ0KLWZ1bmN0aW9uIHNldFZlcnNpb25TdWNj
ZXNzKCkNCi17DQotICAgIGRlYnVnKCIiKTsNCi0gICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNz
KCk6Iik7DQotICAgIHNlbGYudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsNCi0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOw0KLSAgICB0
cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7DQotICAgIHRyYW5zLmFkZEV2
ZW50TGlzdGVuZXIoJ2NvbXBsZXRlJywgY29tcGxldGVDYWxsYmFjaywgZmFsc2UpOw0KLSAgICBz
ZWxmLmNvbXBsZXRlRXZlbnRGaXJlZCA9IGZhbHNlOw0KLQ0KLSAgICBkZWxldGVBbGxPYmplY3RT
dG9yZXMoZGIpOw0KLQ0KLSAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3Rv
cmVOYW1lJywgbnVsbCkiKTsNCi19DQotDQotZnVuY3Rpb24gY29tcGxldGVDYWxsYmFjaygpDQot
ew0KLSAgICBzaG91bGRCZUZhbHNlKCJldmVudC5jYW5jZWxhYmxlIik7DQotICAgIHRlc3RQYXNz
ZWQoImNvbXBsZXRlIGV2ZW50IGZpcmVkIik7DQotICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExv
ZygiZGIudHJhbnNhY3Rpb24oWydzdG9yZU5hbWUnXSkiKTsNCi0gICAgdHJhbnNhY3Rpb24ub25h
Ym9ydCA9IGFib3J0Q2FsbGJhY2s7DQotICAgIHZhciBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3Jl
ID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7DQotICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygic3RvcmUubmFtZSIsICJzdG9yZU5hbWUiKTsNCi19DQotDQotZnVuY3Rp
b24gYWJvcnRDYWxsYmFjaygpDQotew0KLSAgICB0ZXN0UGFzc2VkKCJhYm9ydCBldmVudCBmaXJl
ZCIpOw0KLSAgICB0ZXN0RE9NU3RyaW5nTGlzdCgpOw0KLX0NCi0NCi1mdW5jdGlvbiB0ZXN0RE9N
U3RyaW5nTGlzdCgpDQotew0KLSAgICBkZWJ1ZygiIik7DQotICAgIGRlYnVnKCJWZXJpZnlpbmcg
RE9NU3RyaW5nTGlzdCB3b3JrcyBhcyBhcmd1bWVudCBmb3IgSURCRGF0YWJhc2UudHJhbnNhY3Rp
b24oKSIpOw0KLSAgICBkZWJ1ZygiZGIub2JqZWN0U3RvcmVOYW1lcyBpcyAiICsgZGIub2JqZWN0
U3RvcmVOYW1lcyk7DQotICAgIGRlYnVnKCIuLi4gd2hpY2ggY29udGFpbnM6ICIgKyBKU09OLnN0
cmluZ2lmeShBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChkYi5vYmplY3RTdG9yZU5hbWVzKSkp
Ow0KLSAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKGRiLm9iamVj
dFN0b3JlTmFtZXMpIik7DQotICAgIHRlc3RQYXNzZWQoIm5vIGV4Y2VwdGlvbiB0aHJvd24iKTsN
Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aDsgKytp
KSB7DQotICAgICAgc2hvdWxkQmVUcnVlKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgiICsgSlNP
Ti5zdHJpbmdpZnkoZGIub2JqZWN0U3RvcmVOYW1lc1tpXSkgKyAiKSAhPSBudWxsIik7DQotICAg
IH0NCi0gICAgdGVzdFBhc3NlZCgiYWxsIHN0b3JlcyBwcmVzZW50IGluIHRyYW5zYWN0aW9uIik7
DQotICAgIHRlc3RJbnZhbGlkTW9kZSgpOw0KLX0NCi0NCi1mdW5jdGlvbiB0ZXN0SW52YWxpZE1v
ZGUoKQ0KLXsNCi0gICAgZGVidWcoIiIpOw0KLSAgICBkZWJ1ZygiVmVyaWZ5IHRoYXQgc3BlY2lm
eWluZyBhbiBpbnZhbGlkIG1vZGUgcmFpc2VzIGFuIGV4Y2VwdGlvbiIpOw0KLSAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbihbJ3N0b3JlTmFtZSddLCAzKSIsICJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5OT05fVFJBTlNJRU5UX0VSUiIpOw0KLSAgICBmaW5pc2hKU1Rlc3Qo
KTsNCi19DQotDQotdGVzdCgpOw0KLQ0KLTwvc2NyaXB0Pg0KLTxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pg0KLTwvYm9keT4NCi08
L2h0bWw+DQorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3No
YXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvdHJhbnNhY3Rpb24tYmFzaWNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rp
b24tY3Jhc2gtb24tYWJvcnQuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Ry
YW5zYWN0aW9uLWNyYXNoLW9uLWFib3J0Lmh0bWwKaW5kZXggZDc5MzcyMWQ3MzYyYmZkNzlhMjU1
MzZhMzEyYTYzNWJjZWIxZTI5Mi4uMTE1OWQyOTQyMDdjZWI0ZTk2ZTM1MGMwMjdkYmQxY2E5YWQ1
NTI2YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rp
b24tY3Jhc2gtb24tYWJvcnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi90cmFuc2FjdGlvbi1jcmFzaC1vbi1hYm9ydC5odG1sCkBAIC00LDQ1ICs0LDcgQEAKIDxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5Pgot
PHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIHRyYW5zYWN0aW9uIGRvZXMg
bm90IGNyYXNoIG9uIGFib3J0LiIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVW
ZW5kb3JQcmVmaXhlcygpOwotCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5v
cGVuKCd0cmFuc2FjdGlvbi1jcmFzaC1vbi1hYm9ydCcpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJvcGVu
U3VjY2VzcygpOiIpOwotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVz
dWx0Iik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJzEuMCcpIik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsKLSAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc2V0VmVy
c2lvblN1Y2Nlc3MoKQotewotICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdm
b28nKSIpOwotICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25jb21wbGV0ZSA9IHNldFZlcnNpb25D
b21wbGV0ZTsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvbkNvbXBsZXRlKCkKLXsKLSAgICBldmFs
QW5kTG9nKCJkYi50cmFuc2FjdGlvbignZm9vJykiKTsKLSAgICBldmFsQW5kTG9nKCJzZWxmLmdj
KCkiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy90cmFuc2FjdGlvbi1jcmFzaC1vbi1hYm9ydC5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWV2ZW50LXByb3BhZ2F0aW9uLmh0bWwgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1ldmVudC1wcm9wYWdhdGlv
bi5odG1sCmluZGV4IDg5NTI4YThjMTY5ZTQ0MzkyZTk0MWEyYjk4NDVhN2Q3YjViZTQ1OTcuLmYw
M2VhMzE3MmFkMmY3Yjc4MjMwM2JjMzZmNThhZDUxZmZiZWNjMzQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWV2ZW50LXByb3BhZ2F0aW9uLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tZXZlbnQt
cHJvcGFnYXRpb24uaHRtbApAQCAtNCwxNTAgKzQsNyBAQAogPHNjcmlwdCBzcmM9InJlc291cmNl
cy9zaGFyZWQuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNj
cmlwdGlvbigiVGVzdCBldmVudCBwcm9wb2dhdGlvbiBvbiBJREJUcmFuc2FjdGlvbi4iKTsKLQot
ZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0aW9uLWV2ZW50LXByb3Bh
Z2F0aW9uJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHNldFZlcnNpb247Ci0gICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNl
dFZlcnNpb24oKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVz
dWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZl
cnNpb24nKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZGVsZXRlRXhpc3Rpbmc7Ci0gICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9u
IGRlbGV0ZUV4aXN0aW5nKCkKLXsKLSAgICBzZWxmLnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVs
bCIpOwotICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKLSAgICBl
dmFsQW5kTG9nKCJ0cmFucy5vbmNvbXBsZXRlID0gc3RhcnRUZXN0Iik7Ci0KLSAgICBkZWxldGVB
bGxPYmplY3RTdG9yZXMoZGIpOwotCi0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOwotICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJzdG9yZS5hZGQoe3g6ICd2YWx1ZScsIHk6ICd6enonfSwgJ2tleScpIik7Ci0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0
aW9uIHN0YXJ0VGVzdCgpCi17Ci0gICAgZGVidWcoIlZlcmlmaW5nIGFib3J0Iik7Ci0gICAgdHJh
bnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIElE
QlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMub25hYm9y
dCA9IGFib3J0RmlyZWRDYWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9uY29tcGxl
dGUgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2coImRiLmFkZEV2
ZW50TGlzdGVuZXIoJ2Fib3J0JywgZGJBYm9ydENhcHR1cmVDYWxsYmFjaywgdHJ1ZSkiKTsKLSAg
ICBldmFsQW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIGRiQWJvcnRCdWJibGVD
YWxsYmFjaywgZmFsc2UpIik7Ci0gICAgZXZhbEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcign
Y29tcGxldGUnLCB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjaywgdHJ1ZSkiKTsKLSAgICBldmFs
QW5kTG9nKCJkYi5hZGRFdmVudExpc3RlbmVyKCdjb21wbGV0ZScsIHVuZXhwZWN0ZWRDb21wbGV0
ZUNhbGxiYWNrLCBmYWxzZSkiKTsKLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJh
bnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUuYWRk
KHt4OiAndmFsdWUnLCB5OiAnenp6J30sICdrZXknKSIpOwotICAgIGRiQ2FwdHVyZUZpcmVkID0g
ZmFsc2U7Ci0gICAgYWJvcnRGaXJlZCA9IGZhbHNlOwotICAgIGRiQnViYmxlRmlyZWQxID0gZmFs
c2U7Ci19Ci0KLWZ1bmN0aW9uIGRiQWJvcnRDYXB0dXJlQ2FsbGJhY2soKQotewotICAgIGRlYnVn
KCIiKTsKLSAgICBkZWJ1ZygiSW4gSURCRGF0YWJhc2UgYWJvcnQgY2FwdHVyZSIpOwotICAgIHNo
b3VsZEJlRmFsc2UoImRiQ2FwdHVyZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiYWJvcnRG
aXJlZCIpOwotICAgIHNob3VsZEJlRmFsc2UoImRiQnViYmxlRmlyZWQxIik7Ci0gICAgc2hvdWxk
QmUoImV2ZW50LnRhcmdldCIsICJ0cmFucyIpOwotICAgIHNob3VsZEJlKCJldmVudC5jdXJyZW50
VGFyZ2V0IiwgImRiIik7Ci0gICAgZGJDYXB0dXJlRmlyZWQgPSB0cnVlOwotfQotCi1mdW5jdGlv
biBhYm9ydEZpcmVkQ2FsbGJhY2soKQotewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiSW4g
YWJvcnQgaGFuZGxlciIpOwotICAgIHNob3VsZEJlVHJ1ZSgiZGJDYXB0dXJlRmlyZWQiKTsKLSAg
ICBzaG91bGRCZUZhbHNlKCJhYm9ydEZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJi
bGVGaXJlZDEiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0IiwgInRyYW5zIik7Ci0gICAg
c2hvdWxkQmUoImV2ZW50LmN1cnJlbnRUYXJnZXQiLCAidHJhbnMiKTsKLSAgICBhYm9ydEZpcmVk
ID0gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gZGJBYm9ydEJ1YmJsZUNhbGxiYWNrKCkKLXsKLSAgICBk
ZWJ1ZygiIik7Ci0gICAgZGVidWcoIkluIElEQkRhdGFiYXNlIGVycm9yIGJ1YmJsZSIpOwotICAg
IHNob3VsZEJlVHJ1ZSgiZGJDYXB0dXJlRmlyZWQiKTsKLSAgICBzaG91bGRCZVRydWUoImFib3J0
RmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJkYkJ1YmJsZUZpcmVkMSIpOwotICAgIHNob3Vs
ZEJlKCJldmVudC50YXJnZXQiLCAidHJhbnMiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQuY3VycmVu
dFRhcmdldCIsICJkYiIpOwotICAgIGRiQnViYmxlRmlyZWQxID0gdHJ1ZTsKLSAgICBkZWJ1Zygi
Iik7Ci0gICAgZGVidWcoIlZlcmlmaW5nIHN1Y2Nlc3MuIik7Ci0gICAgdHJhbnMgPSBldmFsQW5k
TG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmVOYW1lJ10sIElEQlRyYW5zYWN0aW9u
LlJFQURfV1JJVEUpIik7Ci0gICAgZXZhbEFuZExvZygidHJhbnMub25jb21wbGV0ZSA9IGNvbXBs
ZXRlRmlyZWRDYWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zLm9uYWJvcnQgPSB1bmV4
cGVjdGVkQWJvcnRDYWxsYmFjayIpOwotICAgIGV2YWxBbmRMb2coImRiLnJlbW92ZUV2ZW50TGlz
dGVuZXIoJ2Fib3J0JywgZGJBYm9ydENhcHR1cmVDYWxsYmFjaywgdHJ1ZSkiKTsKLSAgICBldmFs
QW5kTG9nKCJkYi5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIGRiQWJvcnRCdWJibGVDYWxs
YmFjaywgZmFsc2UpIik7Ci0gICAgZXZhbEFuZExvZygiZGIucmVtb3ZlRXZlbnRMaXN0ZW5lcign
Y29tcGxldGUnLCB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjaywgdHJ1ZSkiKTsKLSAgICBldmFs
QW5kTG9nKCJkYi5yZW1vdmVFdmVudExpc3RlbmVyKCdjb21wbGV0ZScsIHVuZXhwZWN0ZWRDb21w
bGV0ZUNhbGxiYWNrLCBmYWxzZSkiKTsKLSAgICBldmFsQW5kTG9nKCJkYi5hZGRFdmVudExpc3Rl
bmVyKCdjb21wbGV0ZScsIGRiQ29tcGxldGVDYXB0dXJlQ2FsbGJhY2ssIHRydWUpIik7Ci0gICAg
ZXZhbEFuZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignY29tcGxldGUnLCBkYkNvbXBsZXRlQnVi
YmxlQ2FsbGJhY2ssIGZhbHNlKSIpOwotICAgIGV2YWxBbmRMb2coImRiLmFkZEV2ZW50TGlzdGVu
ZXIoJ2Fib3J0JywgdW5leHBlY3RlZEFib3J0Q2FsbGJhY2ssIHRydWUpIik7Ci0gICAgZXZhbEFu
ZExvZygiZGIuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCB1bmV4cGVjdGVkQWJvcnRDYWxsYmFj
aywgZmFsc2UpIik7Ci0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVj
dFN0b3JlKCdzdG9yZU5hbWUnKSIpOwotICAgIGV2YWxBbmRMb2coInN0b3JlLmFkZCh7eDogJ3Zh
bHVlJywgeTogJ3p6eid9LCAna2V5MicpIik7Ci0gICAgZGJDYXB0dXJlRmlyZWQgPSBmYWxzZTsK
LSAgICBjb21wbGV0ZUZpcmVkID0gZmFsc2U7Ci0gICAgZGJCdWJibGVGaXJlZDIgPSBmYWxzZTsK
LX0KLQotZnVuY3Rpb24gZGJDb21wbGV0ZUNhcHR1cmVDYWxsYmFjaygpCi17Ci0gICAgZGVidWco
IiIpOwotICAgIGRlYnVnKCJJbiBJREJEYXRhYmFzZSBjb21wbGV0ZSBjYXB0dXJlIik7Ci0gICAg
c2hvdWxkQmVGYWxzZSgiZGJDYXB0dXJlRmlyZWQiKTsKLSAgICBzaG91bGRCZUZhbHNlKCJjb21w
bGV0ZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiZGJCdWJibGVGaXJlZDIiKTsKLSAgICBz
aG91bGRCZSgiZXZlbnQudGFyZ2V0IiwgInRyYW5zIik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LmN1
cnJlbnRUYXJnZXQiLCAiZGIiKTsKLSAgICBkYkNhcHR1cmVGaXJlZCA9IHRydWU7Ci19Ci0KLWZ1
bmN0aW9uIGNvbXBsZXRlRmlyZWRDYWxsYmFjaygpCi17Ci0gICAgZGVidWcoIiIpOwotICAgIGRl
YnVnKCJJbiBJREJSZXF1ZXN0IGhhbmRsZXIiKTsKLSAgICBzaG91bGRCZVRydWUoImRiQ2FwdHVy
ZUZpcmVkIik7Ci0gICAgc2hvdWxkQmVGYWxzZSgiY29tcGxldGVGaXJlZCIpOwotICAgIHNob3Vs
ZEJlRmFsc2UoImRiQnViYmxlRmlyZWQyIik7Ci0gICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldCIs
ICJ0cmFucyIpOwotICAgIHNob3VsZEJlKCJldmVudC5jdXJyZW50VGFyZ2V0IiwgInRyYW5zIik7
Ci0gICAgY29tcGxldGVGaXJlZCA9IHRydWU7Ci0gICAgZGVidWcoIiIpOwotICAgIGZpbmlzaEpT
VGVzdCgpOwotfQotCi1mdW5jdGlvbiBkYkNvbXBsZXRlQnViYmxlQ2FsbGJhY2soKQotewotICAg
IGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiSW4gSURCRGF0YWJhc2UgY29tcGxldGUgYnViYmxlIik7
Ci0gICAgdGVzdEZhaWxlZCgiQ29tcGxldGUgYnViYmxlIGNhbGxiYWNrIHNob3VsZCBOT1QgZmly
ZSIpOwotICAgIGRiQnViYmxlRmlyZWQyID0gdHJ1ZTsKLX0KLQotdGVzdCgpOwotCi0KLTwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90cmFuc2FjdGlvbi1ldmVudC1wcm9wYWdhdGlv
bi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXJlYWQtb25seS5odG1sIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tcmVhZC1vbmx5Lmh0bWwK
aW5kZXggNDk1Y2JjMWMyYjRiNzRjOWMzNTI1OWFkM2FhMzczYmU4MzIxMDNlOS4uYTkwY2M3YTE2
NmNjYWE3NDQ4ZmQ1M2QwZGI0ZjYxNDRlMmY4ZDYwMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tcmVhZC1vbmx5Lmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tcmVhZC1vbmx5Lmh0bWwKQEAgLTEs
NjcgKzEsMTAgQEAKLTxodG1sPg0KLTxoZWFkPg0KLTxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+DQotPHNjcmlwdCBzcmM9InJlc291
cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0Pg0KLTwvaGVhZD4NCi08Ym9keT4NCi08c2NyaXB0Pg0K
LQ0KLWRlc2NyaXB0aW9uKCJUZXN0IHJlYWQtb25seSB0cmFuc2FjdGlvbnMgaW4gSW5kZXhlZERC
LiIpOw0KLQ0KLWZ1bmN0aW9uIHRlc3QoKQ0KLXsNCi0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMo
KTsNCi0NCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCd0cmFuc2Fj
dGlvbi1yZWFkLW9ubHknKSIpOw0KLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNz
Ow0KLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsNCi19DQot
DQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQ0KLXsNCi0gICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6
Iik7DQotICAgIHNlbGYuZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsNCi0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlc3VsdCA9IGRiLnNldFZlcnNpb24oJ3Zl
cnNpb24gMScpIik7DQotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsNCi0g
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQotfQ0KLQ0KLWZ1
bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQ0KLXsNCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRi
KTsNCi0NCi0gICAgZXZlbnQudGFyZ2V0LnJlc3VsdC5vbmNvbXBsZXRlID0gc2V0VmVyc2lvbkRv
bmU7DQotICAgIGV2ZW50LnRhcmdldC5yZXN1bHQub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENh
bGxiYWNrOw0KLSAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ3N0b3JlJykiKTsNCi0gICAgZXZhbEFuZExvZygic3RvcmUucHV0KCd4JywgJ3knKSIp
Ow0KLX0NCi0NCi1mdW5jdGlvbiBzZXRWZXJzaW9uRG9uZSgpDQotew0KLSAgICB0cmFucyA9IGV2
YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJykiKTsNCi0gICAgZXZhbEFu
ZEV4cGVjdEV4Y2VwdGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KCdhJywgJ2In
KSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5SRUFEX09OTFlfRVJSIik7DQotDQotICAgIHRyYW5z
ID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnKSIpOw0KLSAgICBl
dmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJ0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKS5kZWxldGUo
J3gnKSIsICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5SRUFEX09OTFlfRVJSIik7DQotDQotICAgIHRy
YW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnKSIpOw0KLSAg
ICBjdXIgPSBldmFsQW5kTG9nKCJjdXIgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKS5vcGVu
Q3Vyc29yKCkiKTsNCi0gICAgY3VyLm9uc3VjY2VzcyA9IGdvdEN1cnNvcjsNCi0gICAgY3VyLm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsNCi19DQotDQotZnVuY3Rpb24gZ290Q3Vy
c29yKCkNCi17DQotICAgIHNob3VsZEJlRmFsc2UoIiFldmVudC50YXJnZXQucmVzdWx0Iik7DQot
ICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImV2ZW50LnRhcmdldC5yZXN1bHQuZGVsZXRlKCki
LCAiSURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUiIpOw0KLQ0KLSAgICBmaW5pc2hK
U1Rlc3QoKTsNCi19DQotDQotDQotdGVzdCgpOw0KLQ0KLTwvc2NyaXB0Pg0KLTxzY3JpcHQgc3Jj
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pg0KLTwv
Ym9keT4NCi08L2h0bWw+DQorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvdHJhbnNhY3Rpb24tcmVhZC1vbmx5LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvdHJhbnNhY3Rpb24tcm9sbGJhY2suaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3RyYW5zYWN0aW9uLXJvbGxiYWNrLmh0bWwKaW5kZXggOGEyNzM4OTA0NzM5Y2E1ZTEyNjQ2
ZDY1MGIxNWMxZTk2YTNkMGM3NS4uN2RiZDgwNGFjNjU5NGUyNmRlNDNmMzU3MmIzOTFiMmYzOTBi
MWI3NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rp
b24tcm9sbGJhY2suaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFu
c2FjdGlvbi1yb2xsYmFjay5odG1sCkBAIC00LDk3ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQot
ZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIHRyYW5zYWN0aW9uIHJvbGxiYWNrLiIpOwotCi1m
dW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOwotCi0gICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCd0cmFuc2FjdGlvbi1yb2xsYmFjaycp
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nl
c3MoKQotewotICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOwotICAgIHNlbGYuZGIgPSBldmFs
QW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7Ci0gICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKLXsKLSAg
ICBkZWJ1ZygiY2xlYW5EYXRhYmFzZSgpOiIpOwotICAgIHNlbGYudHJhbnNhY3Rpb24gPSBldmFs
QW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLSAgICB0cmFuc2Fj
dGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgdHJhbnNhY3Rpb24u
b25jb21wbGV0ZSA9IHNldFZlcnNpb25Db21wbGV0ZTsKLQotICAgIGRlbGV0ZUFsbE9iamVjdFN0
b3JlcyhkYik7Ci0gICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ215T2JqZWN0
U3RvcmUnKSIpOwotICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIx
Iik7Ci19Ci0KLWZ1bmN0aW9uIHNldFZlcnNpb25Db21wbGV0ZSgpCi17Ci0gICAgZGVidWcoInNl
dFZlcnNpb25Db21wbGV0ZSgpOiIpOwotCi0gICAgc2VsZi50cmFuc2FjdGlvbiA9IGV2YWxBbmRM
b2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydteU9iamVjdFN0b3JlJ10sIElEQlRy
YW5zYWN0aW9uLlJFQURfV1JJVEUpIik7Ci0gICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IGFib3J0
Q2FsbGJhY2s7Ci0gICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0
ZUNhbGxiYWNrOwotCi0gICAgc2VsZi5zdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNh
Y3Rpb24ub2JqZWN0U3RvcmUoJ215T2JqZWN0U3RvcmUnKSIpOwotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJzdG9yZS5hZGQoJ3JvbGxiYWNrVmFsdWUnLCAncm9sbGJhY2tLZXkxMjMnKSIpOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYWRkU3VjY2VzcygpCi17
Ci0gICAgZGVidWcoImFkZFN1Y2Nlc3MoKToiKTsKLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0
LnJlc3VsdCIsICIncm9sbGJhY2tLZXkxMjMnIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExv
Zygic3RvcmUub3BlbkN1cnNvcigpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuQ3Vy
c29yU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLX0KLQotZnVuY3Rpb24gb3BlbkN1cnNvclN1Y2Nlc3MoKQotewotICAgIGRlYnVnKCJvcGVu
Q3Vyc29yU3VjY2VzcygpOiIpOwotICAgIHNlbGYuY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29y
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgdHJhbnNhY3Rpb24uYWJvcnQoKTsKLX0K
LQotZnVuY3Rpb24gYWJvcnRDYWxsYmFjaygpCi17Ci0gICAgZGVidWcoImFib3J0Q2FsbGJhY2so
KToiKTsKLSAgICBkZWJ1ZygnVHJhbnNhY3Rpb24gd2FzIGFib3J0ZWQuJyk7Ci0KLSAgICBzZWxm
LnRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihb
J215T2JqZWN0U3RvcmUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRCkiKTsKLSAgICBzZWxmLnN0b3Jl
ID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnbXlPYmplY3RT
dG9yZScpIik7Ci0gICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmdldCgncm9sbGJhY2tL
ZXkxMjMnKSIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0U3VjY2VzczsKLX0KLQotZnVuY3Rpb24gZ2V0
U3VjY2VzcygpCi17Ci0gICAgZGVidWcoImdldFN1Y2Nlc3MoKToiKTsKLSAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ1bmRlZmluZWQiKTsKLQotICAgIHNob3VsZEJlKCJjdXJz
b3IudmFsdWUiLCAiJ3JvbGxiYWNrVmFsdWUnIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0K
LQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdHJhbnNhY3Rp
b24tcm9sbGJhY2suanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1zdG9yZU5h
bWVzLXJlcXVpcmVkLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2Fj
dGlvbi1zdG9yZU5hbWVzLXJlcXVpcmVkLmh0bWwKaW5kZXggZTczZTg2OTI4ZWYxOGMyYzQ5NjA2
ZGViNmY5OTU4NTBiZGRiZDhmNC4uYjJhY2NjMzc2NmZhZGZjM2QzYjIxODcyMDIyZjQ5ODE4ZWU4
NzhiZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rp
b24tc3RvcmVOYW1lcy1yZXF1aXJlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3RyYW5zYWN0aW9uLXN0b3JlTmFtZXMtcmVxdWlyZWQuaHRtbApAQCAtMSw0NiArMSwx
MCBAQAotPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlw
dD4KLQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCOiB0cmFuc2FjdGlvbiBzdG9yZU5hbWVz
IHJlcXVpcmVkIGFyZ3VtZW50cyIpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICByZW1vdmVW
ZW5kb3JQcmVmaXhlcygpOwotCi0gICAgbmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWU7Ci0g
ICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Ci0gICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKLXsKLSAgICBkYiA9
IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwotCi0gICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKLSAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmU7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUFu
ZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQotewotICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7
Ci0KLSAgICBzaG91bGRUaHJvdygiZGIudHJhbnNhY3Rpb24oKTsiKTsKLSAgICBmaW5pc2hKU1Rl
c3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy90cmFuc2FjdGlvbi1zdG9yZU5hbWVzLXJlcXVpcmVkLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgog
PC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvdHdvLXZlcnNpb24tY2hhbmdlcy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvdHdvLXZlcnNpb24tY2hhbmdlcy5odG1sCmluZGV4IDlhMWZmYWYxYWVhODQ0MjRlZTFhNGE5
OGUzMDMzNzM2MzA5YmE2MzAuLmM1NjkwOWE0ZjRiMzkxOWJhYjc0ZDE2NDA1ZTg4ZWM3Y2QyNmM3
MzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3R3by12ZXJzaW9u
LWNoYW5nZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90d28tdmVy
c2lvbi1jaGFuZ2VzLmh0bWwKQEAgLTQsMTE0ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdD4KLQotZGVz
Y3JpcHRpb24oIlRlc3QgYmVoYXZpb3Igd2hlbiB0aGUgc2FtZSBjb25uZWN0aW9uIGNhbGxzIHNl
dFZlcnNpb24gdHdpY2UiKTsKLQotCi1mdW5jdGlvbiB0ZXN0KCkgewotICAgIHJlbW92ZVZlbmRv
clByZWZpeGVzKCk7Ci0KLSAgICBzaG91bGRCZUZhbHNlKCJpbmRleGVkREIgPT0gbnVsbCIpOwot
ICAgIHNob3VsZEJlRmFsc2UoIklEQlRyYW5zYWN0aW9uID09IG51bGwiKTsKLSAgICBvcGVuREJD
b25uZWN0aW9uKCk7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5EQkNvbm5lY3Rpb24oKQotewotICAgIGV2
YWxBbmRMb2coInNlbGYuc3RhdGUgPSAnc3RhcnRpbmcnIik7Ci0gICAgdmFyIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndHdvLXZlcnNpb25zLW9uZS1jb25uZWN0aW9uJyki
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2Vz
cygpCi17Ci0gICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dCIpOwotICAgIGV2YWxBbmRMb2coInNlbGYuc3RhdGUgPSAwIik7Ci0KLSAgICB2YXIgdmVyc2lv
bkNoYW5nZVJlcXVlc3QxID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJyki
KTsKLSAgICB2ZXJzaW9uQ2hhbmdlUmVxdWVzdDEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOwotICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0MS5vbnN1Y2Nlc3MgPSBpblNldFZlcnNp
b24xOwotCi0gICAgLy8gYW5kIGNvbmN1cnJlbnRseS4uLgotCi0gICAgdmFyIHZlcnNpb25DaGFu
Z2VSZXF1ZXN0MiA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMicpIik7Ci0g
ICAgdmVyc2lvbkNoYW5nZVJlcXVlc3QyLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLSAgICB2ZXJzaW9uQ2hhbmdlUmVxdWVzdDIub25zdWNjZXNzID0gaW5TZXRWZXJzaW9uMjsK
LX0KLQotZnVuY3Rpb24gaW5TZXRWZXJzaW9uMSgpCi17Ci0gICAgZGVidWcoInNldFZlcnNpb24o
KSAjMSBjYWxsYmFjayIpOwotICAgIHRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKLSAgICBl
dmFsQW5kTG9nKCJzZWxmLnN0b3JlMSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCd0ZXN0LXN0b3Jl
MScpIik7Ci0gICAgc2hvdWxkQmUoIisrc2VsZi5zdGF0ZSIsICIxIik7Ci0gICAgdmFyIHJlcSA9
IGV2YWxBbmRMb2coInNlbGYuc3RvcmUxLnB1dCgnYWFhJywgMTExKSIpOwotICAgIHJlcS5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0
aW9uIChlKSB7Ci0gICAgICAgIHNob3VsZEJlKCIrK3NlbGYuc3RhdGUiLCAiMiIpOwotICAgICAg
ICBoYWxmd2F5RG9uZSgpOwotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIGluU2V0VmVyc2lvbjIoKQot
ewotICAgIGRlYnVnKCJzZXRWZXJzaW9uKCkgIzIgY2FsbGJhY2siKTsKLSAgICB0cmFucyA9IGV2
ZW50LnRhcmdldC5yZXN1bHQ7Ci0gICAgc2hvdWxkQmUoIisrc2VsZi5zdGF0ZSIsICI0Iik7Ci0g
ICAgZXZhbEFuZExvZygic2VsZi5zdG9yZTIgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgndGVzdC1z
dG9yZTInKSIpOwotCi0KLSAgICB2YXIgcmVxID0gZXZhbEFuZExvZygic2VsZi5zdG9yZTIucHV0
KCdiYmInLCAyMjIpIik7Ci0gICAgcmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKLSAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgICAgc2hvdWxkQmUo
Iisrc2VsZi5zdGF0ZSIsICI1Iik7Ci0gICAgICAgIGhhbGZ3YXlEb25lKCk7Ci0gICAgfTsKLX0K
LQotdmFyIGNvdW50ZXIgPSAwOwotZnVuY3Rpb24gaGFsZndheURvbmUoKSAKLXsKLSAgICBjb3Vu
dGVyICs9IDE7Ci0gICAgaWYgKGNvdW50ZXIgPCAyKSB7Ci0gICAgICAgIHNob3VsZEJlKCIrK3Nl
bGYuc3RhdGUiLCAiMyIpOwotICAgICAgICBkZWJ1ZygiaGFsZndheSB0aGVyZS4uLiIgKTsKLSAg
ICB9IGVsc2UgewotICAgICAgICBzaG91bGRCZSgiKytzZWxmLnN0YXRlIiwgIjYiKTsKLSAgICAg
ICAgY2hlY2tSZXN1bHRzKCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBjaGVja1Jlc3VsdHMoKSB7
Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzZWxmLmRiLnZlcnNpb24iLCAidmVyc2lvbiAy
Iik7Ci0gICAgdHJhbnMub25jb21wbGV0ZSA9IHNldFZlcnNpb25Db21wbGV0ZTsKLX0KLQotZnVu
Y3Rpb24gc2V0VmVyc2lvbkNvbXBsZXRlKCkKLXsKLSAgICB0cmFucyA9IGV2YWxBbmRMb2coInNl
bGYudHJhbnMgPSBkYi50cmFuc2FjdGlvbihbJ3Rlc3Qtc3RvcmUxJywgJ3Rlc3Qtc3RvcmUyJ10p
Iik7Ci0gICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzZWxmLnN0b3JlID0gc2VsZi50cmFucy5vYmpl
Y3RTdG9yZSgndGVzdC1zdG9yZTEnKSIpOwotICAgIHJlcSA9IGV2YWxBbmRMb2coInNlbGYucmVx
ID0gc2VsZi5zdG9yZS5nZXQoMTExKSIpOwotICAgIHJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Ci0gICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7Ci0gICAgICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJhYWEiKTsKLQot
ICAgICAgICBzdG9yZSA9IGV2YWxBbmRMb2coInNlbGYuc3RvcmUgPSBzZWxmLnRyYW5zLm9iamVj
dFN0b3JlKCd0ZXN0LXN0b3JlMicpIik7Ci0gICAgICAgIHJlcSA9IGV2YWxBbmRMb2coInNlbGYu
cmVxID0gc2VsZi5zdG9yZS5nZXQoMjIyKSIpOwotICAgICAgICByZXEub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGUp
IHsKLSAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3Vs
dCIsICJiYmIiKTsKLSAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgICAgICB9OwotICAg
IH07Ci19Ci0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
dHdvLXZlcnNpb24tY2hhbmdlcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ZhbHVlLXVuZGVm
aW5lZC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmFsdWUtdW5kZWZpbmVk
Lmh0bWwKaW5kZXggNjcwMWYwNmE5NTFiYTkwOTFhOTdhMmQ3ZDUyNTc4ZTI2NjJhMGQ4MS4uMzkz
YWI0NDU4MGY4NWE0MWJkMDcxYzliZWYzZDYwY2YwMGQ3YjNkZiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmFsdWUtdW5kZWZpbmVkLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmFsdWUtdW5kZWZpbmVkLmh0bWwKQEAgLTEsNzYgKzEs
MTAgQEAKLTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3Jp
cHQ+Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiB1bmRlZmluZWQgYXMgcmVjb3JkIHZh
bHVlIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7
Ci0KLSAgICBuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9
ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERC
Lm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVu
U3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
LX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVx
dWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY3Jl
YXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RT
dG9yZSgpCi17Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9iamVjdFN0
b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9v
Jyk7Iik7Ci0gICAgcmVzdWx0ID0gZXZhbEFuZExvZygicmVzdWx0ID0gb2JqZWN0U3RvcmUuYWRk
KHVuZGVmaW5lZCwgSW5maW5pdHkpOyIpOwotICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Ci0gICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGdldFZhbHVlOwotfQotCi1m
dW5jdGlvbiBnZXRWYWx1ZSgpCi17Ci0gICAgcmVzdWx0ID0gZXZhbEFuZExvZygicmVzdWx0ID0g
b2JqZWN0U3RvcmUuZ2V0KEluZmluaXR5KTsiKTsKLSAgICByZXN1bHQub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBjaGVja1ZhbHVlOwot
fQotCi1mdW5jdGlvbiBjaGVja1ZhbHVlKCkKLXsKLSAgICB2YWx1ZSA9IGV2YWxBbmRMb2coInZh
bHVlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICBzaG91bGRCZSgidmFsdWUiLCAidW5k
ZWZpbmVkIik7Ci0gICAgcmVzdWx0ID0gZXZhbEFuZExvZygicmVzdWx0ID0gb2JqZWN0U3RvcmUu
b3BlbkN1cnNvcigpOyIpOwotICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Ci0gICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGNoZWNrQ3Vyc29yOwotfQotCi1mdW5jdGlv
biBjaGVja0N1cnNvcigpCi17Ci0gICAgY3Vyc29yID0gZXZhbEFuZExvZygiY3Vyc29yID0gZXZl
bnQudGFyZ2V0LnJlc3VsdDsiKTsKLSAgICBpZiAoY3Vyc29yKSB7Ci0gICAgICAgIHNob3VsZEJl
KCJjdXJzb3Iua2V5IiwgIkluZmluaXR5Iik7Ci0gICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFs
dWUiLCAidW5kZWZpbmVkIik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiY3Vy
c29yIGlzIG51bGwiKTsKLSAgICB9Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLQotdGVzdCgp
OwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdmFsdWUtdW5kZWZpbmVkLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmFsdWVzLW9kZC10eXBlcy5odG1sIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvdmFsdWVzLW9kZC10eXBlcy5odG1sCmluZGV4IDJjODYzZjM4
YWZjMjEzOTM0ZTk5ODQ5NzE3MGEwYzA3NTNmMDJjYzIuLjg0OGFjN2M5ZTg5ZDRmYTJlY2ZmYzJi
OGMyNmNhMWExNDYyNzdiZGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3ZhbHVlcy1vZGQtdHlwZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi92YWx1ZXMtb2RkLXR5cGVzLmh0bWwKQEAgLTEsODggKzEsMTAgQEAKLTwhRE9DVFlQRSBo
dG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJl
ZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9u
KCJUZXN0IEluZGV4ZWREQiBvZGQgdmFsdWUgZGF0YXR5cGVzIik7Ci0KLWZ1bmN0aW9uIHRlc3Qo
KQotewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0KLSAgICBuYW1lID0gc2VsZi5sb2Nh
dGlvbi5wYXRobmFtZTsKLSAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKLSAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24p
Iik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlblN1Y2Nl
c3MoKQotewotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEn
KSIpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkS2V5MTsKLSAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gYWRkS2V5MSgpCi17
Ci0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKLQotICAgIG9iamVjdFN0b3JlID0gZXZh
bEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycsIHthdXRvSW5jcmVtZW50OiB0cnVl
fSk7Iik7Ci0KLSAgICBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsK
LSAgICBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7Ci0gICAgaW1hZ2VkYXRhID0g
Y29udGV4dC5jcmVhdGVJbWFnZURhdGEoMSwgMSk7Ci0gICAgdmFsaWRUeXBlcyA9IFt7IGRlc2Ny
aXB0aW9uOiAncmVnZXhwJywgICAgdmFsdWU6IG5ldyBSZWdFeHAoJ1xcXFwnKSB9LAotICAgICAg
ICAgICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ2RhdGUnLCAgICAgIHZhbHVlOiBuZXcgRGF0ZSgw
KSB9LAotICAgICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbjogJ29iamVjdCcsICAgIHZhbHVl
OiBuZXcgT2JqZWN0KCkgfSwKLSAgICAgICAgICAgICAgICAgIHsgZGVzY3JpcHRpb246ICdpbWFn
ZWRhdGEnLCB2YWx1ZTogaW1hZ2VkYXRhIH0sCi0gICAgXTsKLSAgICBuZXh0VG9BZGQgPSAwOwot
ICAgIGFkZERhdGEoKTsKLX0KLQotZnVuY3Rpb24gYWRkRGF0YSgpCi17Ci0gICAgZGVidWcoImFk
ZGluZyAiICsgdmFsaWRUeXBlc1tuZXh0VG9BZGRdLmRlc2NyaXB0aW9uICsgIiB2YWx1ZSIpOwot
ICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCh2YWxpZFR5cGVzW25leHRU
b0FkZF0udmFsdWUpIik7Ci0gICAgcmVzdWx0Lm9uc3VjY2VzcyA9ICsrbmV4dFRvQWRkIDwgdmFs
aWRUeXBlcy5sZW5ndGggPyBhZGREYXRhIDogb3BlbkFDdXJzb3I7Ci0gICAgcmVzdWx0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gb3BlbkFDdXJzb3Io
KQotewotICAgIHZhbHVlSW5kZXggPSAwOwotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOyIpOwotICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24gKGV2ZW50KSB7Ci0gICAgICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IGV2ZW50
LnRhcmdldC5yZXN1bHQ7Iik7Ci0gICAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgICAgIHNo
b3VsZEJlKCJjdXJzb3IudmFsdWUudG9TdHJpbmcoKSIsICJ2YWxpZFR5cGVzW3ZhbHVlSW5kZXhd
LnZhbHVlLnRvU3RyaW5nKCkiKTsKLSAgICAgICAgICAgIGlmICh2YWx1ZUluZGV4ID09IDEpIHsK
LSAgICAgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlLnRvVVRDU3RyaW5nKCkiLCAi
J1RodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDAgR01UJyIpOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgaWYgKHZhbHVlSW5kZXggPT0gMykgewotICAgICAgICAgICAgICAgIHNob3VsZEJlKCJj
dXJzb3IudmFsdWUud2lkdGgiLCAiMSIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZXZh
bEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCk7Iik7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJ2
YWx1ZUluZGV4Kys7Iik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy92YWx1ZXMtb2RkLXR5cGVzLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvdmVyc2lvbi1jaGFuZ2UtYWJvcnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1jaGFuZ2UtYWJvcnQtZXhwZWN0ZWQudHh0
CmluZGV4IDMxNWQ0ZDU3Y2U4NWIxYzlmZTU4OWJiOGU3YzExMGQ5NTU3MmMwMDUuLjMxZWJkNjEz
YWJlNjdmNDRhZjA3YjM4NTJlMmY5NDIxMjA3NmIwMmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWFib3J0LWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9uLWNoYW5nZS1hYm9ydC1leHBl
Y3RlZC50eHQKQEAgLTEsNCArMSw0IEBACi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNzY6IFVuY2F1
Z2h0IEVycm9yOiBUaGlzIHNob3VsZCAqTk9UKiBiZSBjYXVnaHQhCitDT05TT0xFIE1FU1NBR0U6
IGxpbmUgNzE6IFVuY2F1Z2h0IEVycm9yOiBUaGlzIHNob3VsZCAqTk9UKiBiZSBjYXVnaHQhCiBF
bnN1cmUgdGhhdCBhYm9ydGVkIFZFUlNJT05fQ0hBTkdFIHRyYW5zYWN0aW9ucyBhcmUgY29tcGxl
dGVseSByb2xsZWQgYmFjawogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9uLWNoYW5nZS1hYm9ydC5odG1s
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1jaGFuZ2UtYWJvcnQuaHRt
bAppbmRleCBjZGM5YWNhMGUzMTgxNzExMTM4MDg0MWIyMzU1NDQwZmE1YjJlMjE0Li41N2RlMDA5
MGE1NmQ1OTU1NmFiNDliOTlkNTJmODQ1MWY5YzNjMmVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9uLWNoYW5nZS1hYm9ydC5odG1sCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWFib3J0Lmh0bWwKQEAgLTEs
OTkgKzEsMTAgQEAKLTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3Jj
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4K
LTxzY3JpcHQ+Ci0KLWRlc2NyaXB0aW9uKCJFbnN1cmUgdGhhdCBhYm9ydGVkIFZFUlNJT05fQ0hB
TkdFIHRyYW5zYWN0aW9ucyBhcmUgY29tcGxldGVseSByb2xsZWQgYmFjayIpOwotCi0KLWZ1bmN0
aW9uIHRlc3QoKSB7Ci0gICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLSAgICBvcGVuREJDb25u
ZWN0aW9uKCk7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5EQkNvbm5lY3Rpb24oKQotewotICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndmVyc2lvbi1jaGFuZ2UtYWJvcnQnKSIp
OwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Ci0gICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5TdWNjZXNz
KCkKLXsKLSAgICBzZWxmLmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7Ci0gICAgZGVidWcoIiIpOwotCi0gICAgZXZhbEFuZExvZygidmNyZXEgPSBkYi5zZXRWZXJz
aW9uKCd2ZXJzaW9uIDEnKSIpOwotICAgIHZjcmVxLm9uc3VjY2VzcyA9IGluU2V0VmVyc2lvbjE7
Ci0gICAgdmNyZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5j
dGlvbiBpblNldFZlcnNpb24xKCkKLXsKLSAgICBkZWJ1Zygic2V0VmVyc2lvbjEoKSBjYWxsYmFj
ayIpOwotICAgIHNob3VsZEJlVHJ1ZSgidmNyZXEucmVzdWx0IGluc3RhbmNlb2YgSURCVHJhbnNh
Y3Rpb24iKTsKLSAgICB0cmFucyA9IHZjcmVxLnJlc3VsdDsKLSAgICB0cmFucy5vbmFib3J0ID0g
dW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotICAgIHRyYW5zLm9uY29tcGxldGUgPSBzZXRWZXJzaW9uMUNvbXBsZXRl
OwotCi0gICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUx
JykiKTsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvbjFDb21wbGV0ZSgpCi17Ci0gICAgZGVidWco
InNldFZlcnNpb24xIGNvbXBsZXRlIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkYi52
ZXJzaW9uIiwgInZlcnNpb24gMSIpOwotICAgIGRlYnVnKCIiKTsKLQotICAgIGV2YWxBbmRMb2co
InZjcmVxID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAyJykiKTsKLSAgICB2Y3JlcS5vbnN1Y2Nl
c3MgPSBpblNldFZlcnNpb24yOwotICAgIHZjcmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLX0KLQotZnVuY3Rpb24gaW5TZXRWZXJzaW9uMigpCi17Ci0gICAgZGVidWcoInNl
dFZlcnNpb24yKCkgY2FsbGJhY2siKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLnZl
cnNpb24iLCAidmVyc2lvbiAyIik7Ci0gICAgc2hvdWxkQmVUcnVlKCJ2Y3JlcS5yZXN1bHQgaW5z
dGFuY2VvZiBJREJUcmFuc2FjdGlvbiIpOwotICAgIHRyYW5zID0gdmNyZXEucmVzdWx0OwotICAg
IHRyYW5zLm9uYWJvcnQgPSBzZXRWZXJzaW9uMkFib3J0OwotICAgIHRyYW5zLm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAgICB0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3Rl
ZENvbXBsZXRlQ2FsbGJhY2s7Ci0KLSAgICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmRlbGV0ZU9i
amVjdFN0b3JlKCdzdG9yZTEnKSIpOwotICAgIGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ3N0b3JlMicpIik7Ci0KLSAgICAvLyBFbnN1cmUgdGhlIHRlc3QgaGFybmVz
cyBlcnJvciBoYW5kbGVyIGlzIG5vdCBpbnZva2VkLgotICAgIHNlbGYub3JpZ2luYWxXaW5kb3dP
bkVycm9yID0gc2VsZi5vbmVycm9yOwotICAgIHNlbGYub25lcnJvciA9IG51bGw7Ci0KLSAgICBk
ZWJ1ZygicmFpc2luZyBleGNlcHRpb24iKTsKLSAgICB0aHJvdyBuZXcgRXJyb3IoIlRoaXMgc2hv
dWxkICpOT1QqIGJlIGNhdWdodCEiKTsKLX0KLQotZnVuY3Rpb24gc2V0VmVyc2lvbjJBYm9ydCgp
Ci17Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJzZXRWZXJzaW9uMkFib3J0KCkgY2FsbGJh
Y2siKTsKLQotICAgIC8vIFJlc3RvcmUgdGVzdCBoYXJuZXNzIGVycm9yIGhhbmRsZXIuCi0gICAg
c2VsZi5vbmVycm9yID0gc2VsZi5vcmlnaW5hbFdpbmRvd09uRXJyb3I7Ci0KLSAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoImRiLnZlcnNpb24iLCAidmVyc2lvbiAxIik7Ci0gICAgc2hvdWxkQmVU
cnVlKCJkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCdzdG9yZTEnKSIpOwotICAgIHNob3Vs
ZEJlRmFsc2UoImRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJ3N0b3JlMicpIik7Ci0KLSAg
ICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotdGVzdCgpOwotCi08L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvdmVyc2lvbi1jaGFuZ2UtYWJvcnQuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBz
cmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8
L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi92ZXJzaW9uLWNoYW5nZS1leGNsdXNpdmUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWV4Y2x1c2l2ZS5odG1sCmluZGV4IDQ5NDk2ZGViMjRhYjk4
N2QxM2E2ODE0MTRiNmVlNThjM2Y5ZWU1MzIuLjRhMGU0NjJhNjdhYjlhMTI4MzEwMWM3NmY4NjQ2
Nzg5ODU1NGQ5ZmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Zl
cnNpb24tY2hhbmdlLWV4Y2x1c2l2ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWV4Y2x1c2l2ZS5odG1sCkBAIC00LDc3ICs0LDcgQEAKIDxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5
PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIkVuc3VyZSBWRVJTSU9OX0NIQU5HRSB0cmFuc2Fj
dGlvbiBkb2Vzbid0IHJ1biBjb25jdXJyZW50bHkgd2l0aCBvdGhlciB0cmFuc2FjdGlvbnMiKTsK
LQotCi1mdW5jdGlvbiB0ZXN0KCkgewotICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7Ci0gICAg
b3BlbkRCQ29ubmVjdGlvbigpOwotfQotCi1mdW5jdGlvbiBvcGVuREJDb25uZWN0aW9uKCkKLXsK
LSAgICBldmFsQW5kTG9nKCJzZWxmLnN0YXRlID0gJ3N0YXJ0aW5nJyIpOwotICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbigndmVyc2lvbi1jaGFuZ2UtZXhjbHVzaXZlJyki
KTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBvcGVuU3VjY2Vz
cygpCi17Ci0gICAgc2VsZi5kYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dCIpOwotCi0gICAgZGVidWcoImNhbGxpbmcgc2V0VmVyc2lvbigpIC0gY2FsbGJhY2sgc2hvdWxk
IHJ1biBpbW1lZGlhdGVseSIpOwotICAgIHZhciB2ZXJzaW9uQ2hhbmdlUmVxdWVzdCA9IGV2YWxB
bmRMb2coImRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7Ci0gICAgdmVyc2lvbkNoYW5nZVJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotICAgIHZlcnNpb25DaGFu
Z2VSZXF1ZXN0Lm9uc3VjY2VzcyA9IGluU2V0VmVyc2lvbjsKLQotICAgIC8vIGFuZCBjb25jdXJy
ZW50bHkuLi4KLQotICAgIGRlYnVnKCJjYWxsaW5nIG9wZW4oKSAtIGNhbGxiYWNrIHNob3VsZCB3
YWl0IHVudGlsIFZFUlNJT05fQ0hBTkdFIHRyYW5zYWN0aW9uIGlzIGNvbXBsZXRlIik7Ci0gICAg
dmFyIG9wZW5SZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ3ZlcnNpb24tY2hh
bmdlLWV4Y2x1c2l2ZScpIik7Ci0gICAgb3BlblJlcXVlc3Qub25zdWNjZXNzID0gb3BlbkFnYWlu
U3VjY2VzczsKLSAgICBvcGVuUmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIGluU2V0VmVyc2lvbigpCi17Ci0gICAgZGVidWcoInNldFZlcnNp
b24oKSBjYWxsYmFjayIpOwotICAgIGRlYnVnKCJzdGFydGluZyB3b3JrIGluIFZFUlNJT05fQ0hB
TkdFIHRyYW5zYWN0aW9uIik7Ci0gICAgZXZhbEFuZExvZygic2VsZi5zdGF0ZSA9ICdWRVJTSU9O
X0NIQU5HRSBzdGFydGVkJyIpOwotCi0gICAgc2VsZi5zdG9yZSA9IGV2YWxBbmRMb2coInN0b3Jl
ID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Rlc3Qtc3RvcmUnKSIpOwotICAgIHNlbGYuY291bnQg
PSAwOwotICAgIGRvX2FzeW5jX3B1dHMoKTsKLQotICAgIGZ1bmN0aW9uIGRvX2FzeW5jX3B1dHMo
KSB7Ci0gICAgICAgIHZhciByZXEgPSBldmFsQW5kTG9nKCJzdG9yZS5wdXQoIiArIGNvdW50ICsg
IiwgIiArIGNvdW50ICsgIikiKTsKLSAgICAgICAgcmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKLSAgICAgICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7Ci0gICAg
ICAgICAgICBkZWJ1ZygiaW4gcHV0J3Mgb25zdWNjZXNzIik7Ci0gICAgICAgICAgICBpZiAoKytz
ZWxmLmNvdW50IDwgMTApIHsKLSAgICAgICAgICAgICAgICBkb19hc3luY19wdXRzKCk7Ci0gICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGRlYnVnKCJlbmRpbmcgd29yayBpbiBW
RVJTSU9OX0NIQU5HRSB0cmFuc2FjdGlvbiIpOwotICAgICAgICAgICAgICAgIGV2YWxBbmRMb2co
InNlbGYuc3RhdGUgPSAnVkVSU0lPTl9DSEFOR0UgZmluaXNoZWQnIik7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH07Ci0gICAgfQotfQotCi1mdW5jdGlvbiBvcGVuQWdhaW5TdWNjZXNzKCkKLXsK
LSAgICBkZWJ1Zygib3BlbigpIGNhbGxiYWNrIC0gdGhpcyBzaG91bGQgYXBwZWFyIGFmdGVyIFZF
UlNJT05fQ0hBTkdFIHRyYW5zYWN0aW9uIGVuZHMiKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoInNlbGYuc3RhdGUiLCAiVkVSU0lPTl9DSEFOR0UgZmluaXNoZWQiKTsKLSAgICBmaW5pc2hK
U1Rlc3QoKTsKLX0KLQotCi10ZXN0KCk7Ci0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy92ZXJzaW9uLWNoYW5nZS1leGNsdXNpdmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2Jv
ZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi92
ZXJzaW9uY2hhbmdlcmVxdWVzdC1hY3RpdmVkb21vYmplY3QuaHRtbCBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb25jaGFuZ2VyZXF1ZXN0LWFjdGl2ZWRvbW9iamVjdC5odG1s
CmluZGV4IDlhN2MzNTBkYjUyYmNkYjBlM2NhNDA4ZDM4YmM4NmNmOGZhNzUxNGQuLjU0NzQ1ZDcw
MTZiMDU2OTc0ODdmZmEwODgwMjNmNTVmZGE2YjM1NjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb25jaGFuZ2VyZXF1ZXN0LWFjdGl2ZWRvbW9iamVjdC5o
dG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb25jaGFuZ2VyZXF1
ZXN0LWFjdGl2ZWRvbW9iamVjdC5odG1sCkBAIC0xLDc2ICsxLDEwIEBACi08IURPQ1RZUEUgaHRt
bD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQu
anMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08c2NyaXB0PgotCi1kZXNjcmlwdGlvbigi
RW5zdXJlIHRoYXQgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Qgb2JqZWN0cyBhcmUgbm90IEdDJ2Qg
aWYgdGhleSBoYXZlIHBlbmRpbmcgZXZlbnRzIik7Ci0KLWZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAg
cmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKLQotICAgIGRlYnVnKCIiKTsKLSAgICBldmFsQW5kTG9n
KCJzZWxmLmRibmFtZSA9ICd2ZXJzaW9uY2hhbmdlcmVxdWVzdC1hY3RpdmVkb21vYmplY3QnIik7
Ci0KLSAgICB0ZXN0RGVsZXRlRGF0YWJhc2UoKTsKLX0KLQotZnVuY3Rpb24gdGVzdERlbGV0ZURh
dGFiYXNlKCkKLXsKLSAgICBkZWJ1ZygiIik7Ci0gICAgZGVidWcoInRlc3REZWxldGVEYXRhYmFz
ZSgpOiIpOwotICAgIC8vIE5PVEU6IGRlbGV0ZVJlcXVlc3QgaXMgbG9jYWwgdmFyaWFibGUgc28g
aXQgaXMgbm90IGNhcHR1cmVkIGluIGdsb2JhbCBzY29wZS4KLSAgICB2YXIgZGVsZXRlUmVxdWVz
dCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShzZWxmLmRibmFtZSkiKTsK
LSAgICBkZWxldGVSZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLSAg
ICBkZWxldGVSZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7Ci0g
ICAgZGVsZXRlUmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgZGVsZXRlU3VjY2Vzcygp
OyB9OwotICAgIGRlbGV0ZVJlcXVlc3QgPSBudWxsOwotICAgIGlmIChzZWxmLmdjKSB7Ci0gICAg
ICAgIGV2YWxBbmRMb2coInNlbGYuZ2MoKSIpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gZGVsZXRl
U3VjY2VzcygpCi17Ci0gICAgdGVzdFBhc3NlZCgiZGVsZXRlRGF0YWJhc2UncyBJREJWZXJzaW9u
Q2hhbmdlUmVxdWVzdC5vbnN1Y2Nlc3MgZXZlbnQgZmlyZWQiKTsKLSAgICB0ZXN0U2V0VmVyc2lv
bigpOwotfQotCi1mdW5jdGlvbiB0ZXN0U2V0VmVyc2lvbigpCi17Ci0gICAgZGVidWcoIiIpOwot
ICAgIGRlYnVnKCJ0ZXN0U2V0VmVyc2lvbigpOiIpOwotCi0gICAgLy8gTk9URTogVGhpcyBpcyBq
dXN0IGFuIElEQlJlcXVlc3QsIGl0IGNhbiBiZSBnbG9iYWwuCi0gICAgZXZhbEFuZExvZygib3Bl
blJlcXVlc3QgPSBpbmRleGVkREIub3BlbihzZWxmLmRibmFtZSkiKTsKLSAgICBvcGVuUmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci0gICAgb3BlblJlcXVlc3Qub25z
dWNjZXNzID0gZnVuY3Rpb24gKCkgewotICAgICAgICBldmFsQW5kTG9nKCJkYiA9IG9wZW5SZXF1
ZXN0LnJlc3VsdCIpOwotCi0gICAgICAgIC8vIE5PVEU6IHZlcnNpb25SZXF1ZXN0IGlzIGxvY2Fs
IHZhcmlhYmxlIHNvIGl0IGlzIG5vdCBjYXB0dXJlZCBpbiBnbG9iYWwgc2NvcGUuCi0gICAgICAg
IHZhciB2ZXJzaW9uUmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZlcnNpb24oJzEnKSIpOwot
ICAgICAgICB2ZXJzaW9uUmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Ci0gICAgICAgIHZlcnNpb25SZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRCbG9ja2VkQ2Fs
bGJhY2s7Ci0gICAgICAgIHZlcnNpb25SZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeyB2
ZXJzaW9uU3VjY2VzcygpOyB9OwotICAgICAgICB2ZXJzaW9uUmVxdWVzdCA9IG51bGw7Ci0gICAg
ICAgIGlmIChzZWxmLmdjKSB7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJzZWxmLmdjKCkiKTsK
LSAgICAgICAgfQotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIHZlcnNpb25TdWNjZXNzKCkKLXsKLSAg
ICB0ZXN0UGFzc2VkKCJzZXRWZXJzaW9uJ3MgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Qub25zdWNj
ZXNzIGV2ZW50IGZpcmVkIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXRlc3QoKTsKLQot
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3ZlcnNpb25jaGFuZ2VyZXF1ZXN0LWFj
dGl2ZWRvbW9iamVjdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>